agentic-dev 0.2.10 → 0.2.12

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 (603) hide show
  1. package/README.md +50 -29
  2. package/bin/agentic-dev.mjs +656 -124
  3. package/lib/scaffold.mjs +109 -6
  4. package/package.json +8 -22
  5. package/.agent/prd.json +0 -29
  6. package/.agent/progress.txt +0 -1
  7. package/.agent/prompt.md +0 -21
  8. package/.agent/ralph-loop-state.json +0 -13
  9. package/.agent/ralph-supervisor-state.json +0 -12
  10. package/.agent/ralph-supervisor.sh +0 -238
  11. package/.agent/ralph.sh +0 -305
  12. package/.agent/runs/README.md +0 -7
  13. package/.agent/sdd-build-ast-audit.json +0 -13
  14. package/.claude/CLAUDE.md +0 -44
  15. package/.claude/agentic-dev.json +0 -3
  16. package/.claude/agents/ai-dev.md +0 -27
  17. package/.claude/agents/backend-dev.md +0 -26
  18. package/.claude/agents/db-dev.md +0 -26
  19. package/.claude/agents/devops.md +0 -27
  20. package/.claude/agents/frontend-dev.md +0 -25
  21. package/.claude/agents/github-ops.md +0 -25
  22. package/.claude/agents/test-dev.md +0 -26
  23. package/.claude/agents/uiux-designer.md +0 -25
  24. package/.claude/settings.json +0 -49
  25. package/.claude/settings.local.json +0 -8
  26. package/.claude/skills/sdd/SKILL.md +0 -189
  27. package/.claude/skills/sdd/agents/openai.yaml +0 -4
  28. package/.claude/skills/sdd/references/section-map.md +0 -67
  29. package/.claude/workspace-config.json +0 -3
  30. package/.codex/agentic-dev.json +0 -3
  31. package/.codex/agents/README.md +0 -22
  32. package/.codex/agents/api.toml +0 -11
  33. package/.codex/agents/architecture.toml +0 -11
  34. package/.codex/agents/ci.toml +0 -11
  35. package/.codex/agents/gitops.toml +0 -11
  36. package/.codex/agents/orchestrator.toml +0 -11
  37. package/.codex/agents/quality.toml +0 -11
  38. package/.codex/agents/runtime.toml +0 -11
  39. package/.codex/agents/security.toml +0 -11
  40. package/.codex/agents/specs.toml +0 -11
  41. package/.codex/agents/ui.toml +0 -11
  42. package/.codex/config.toml +0 -46
  43. package/.codex/skills/SKILL.md +0 -13
  44. package/.codex/skills/sdd/SKILL.md +0 -189
  45. package/.codex/skills/sdd/agents/openai.yaml +0 -4
  46. package/.codex/skills/sdd/references/section-map.md +0 -67
  47. package/.dockerignore +0 -8
  48. package/.env.example +0 -50
  49. package/.gitignore +0 -16
  50. package/AGENTS.md +0 -86
  51. package/SDD_SKILL.md +0 -589
  52. package/client/admin/.dockerignore +0 -3
  53. package/client/admin/.env.example +0 -1
  54. package/client/admin/Dockerfile +0 -16
  55. package/client/admin/Dockerfile.dev +0 -18
  56. package/client/admin/README.md +0 -20
  57. package/client/admin/index.html +0 -12
  58. package/client/admin/package.json +0 -41
  59. package/client/admin/postcss.config.js +0 -6
  60. package/client/admin/scripts/ui-parity-admin-adapter.mjs +0 -65
  61. package/client/admin/src/api/alerts.ts +0 -33
  62. package/client/admin/src/api/client.ts +0 -71
  63. package/client/admin/src/api/orders.ts +0 -33
  64. package/client/admin/src/api/support.ts +0 -11
  65. package/client/admin/src/app/App.tsx +0 -23
  66. package/client/admin/src/auth/AuthProvider.tsx +0 -122
  67. package/client/admin/src/auth/ProtectedRoute.tsx +0 -22
  68. package/client/admin/src/auth/auth-client.ts +0 -38
  69. package/client/admin/src/auth/types.ts +0 -18
  70. package/client/admin/src/components/AdminNotificationsDrawer.tsx +0 -162
  71. package/client/admin/src/components/AdminShell.tsx +0 -76
  72. package/client/admin/src/components/ui/button.tsx +0 -34
  73. package/client/admin/src/components/ui/input.tsx +0 -21
  74. package/client/admin/src/lib/cn.ts +0 -6
  75. package/client/admin/src/lib/specRouteCatalog.json +0 -30
  76. package/client/admin/src/lib/specScreens.json +0 -22
  77. package/client/admin/src/main.tsx +0 -17
  78. package/client/admin/src/pages/AdminDashboardPage.tsx +0 -171
  79. package/client/admin/src/pages/AdminLoginPage.tsx +0 -75
  80. package/client/admin/src/pages/AdminQueuePage.tsx +0 -107
  81. package/client/admin/src/pages/AdminSupportPage.tsx +0 -61
  82. package/client/admin/src/styles/globals.css +0 -17
  83. package/client/admin/src/theme-vars.ts +0 -18
  84. package/client/admin/src/theme.ts +0 -25
  85. package/client/admin/src/vite-env.d.ts +0 -1
  86. package/client/admin/tailwind.config.js +0 -8
  87. package/client/admin/tsconfig.json +0 -25
  88. package/client/admin/vite.config.ts +0 -12
  89. package/client/landing/.dockerignore +0 -3
  90. package/client/landing/.env.example +0 -1
  91. package/client/landing/Dockerfile +0 -16
  92. package/client/landing/Dockerfile.dev +0 -18
  93. package/client/landing/README.md +0 -18
  94. package/client/landing/index.html +0 -12
  95. package/client/landing/package.json +0 -41
  96. package/client/landing/postcss.config.js +0 -6
  97. package/client/landing/scripts/ui-parity-landing-adapter.mjs +0 -65
  98. package/client/landing/src/App.tsx +0 -21
  99. package/client/landing/src/api/catalog.ts +0 -30
  100. package/client/landing/src/api/client.ts +0 -30
  101. package/client/landing/src/auth/AuthProvider.tsx +0 -122
  102. package/client/landing/src/auth/ProtectedRoute.tsx +0 -22
  103. package/client/landing/src/auth/auth-client.ts +0 -38
  104. package/client/landing/src/auth/types.ts +0 -18
  105. package/client/landing/src/components/LandingShell.tsx +0 -34
  106. package/client/landing/src/lib/specRouteCatalog.json +0 -23
  107. package/client/landing/src/lib/specScreens.json +0 -17
  108. package/client/landing/src/main.tsx +0 -17
  109. package/client/landing/src/pages/LandingHomePage.tsx +0 -215
  110. package/client/landing/src/pages/LandingLoginPage.tsx +0 -90
  111. package/client/landing/src/pages/LandingWorkspacePage.tsx +0 -126
  112. package/client/landing/src/styles/globals.css +0 -17
  113. package/client/landing/src/theme-vars.ts +0 -16
  114. package/client/landing/src/theme.ts +0 -21
  115. package/client/landing/src/vite-env.d.ts +0 -1
  116. package/client/landing/tailwind.config.js +0 -8
  117. package/client/landing/tsconfig.json +0 -25
  118. package/client/landing/vite.config.ts +0 -12
  119. package/client/mobile/.dockerignore +0 -2
  120. package/client/mobile/.env.example +0 -1
  121. package/client/mobile/Dockerfile +0 -16
  122. package/client/mobile/Dockerfile.dev +0 -18
  123. package/client/mobile/README.md +0 -19
  124. package/client/mobile/index.html +0 -12
  125. package/client/mobile/package.json +0 -42
  126. package/client/mobile/postcss.config.js +0 -6
  127. package/client/mobile/scripts/ui-parity-mobile-adapter.mjs +0 -67
  128. package/client/mobile/src/App.tsx +0 -1
  129. package/client/mobile/src/api/client.ts +0 -62
  130. package/client/mobile/src/api/fulfillment.ts +0 -55
  131. package/client/mobile/src/api/shipping.ts +0 -56
  132. package/client/mobile/src/app/App.tsx +0 -23
  133. package/client/mobile/src/auth/AuthProvider.tsx +0 -122
  134. package/client/mobile/src/auth/ProtectedRoute.tsx +0 -27
  135. package/client/mobile/src/auth/auth-client.ts +0 -38
  136. package/client/mobile/src/auth/types.ts +0 -18
  137. package/client/mobile/src/components/InShell.tsx +0 -74
  138. package/client/mobile/src/components/ui/button.tsx +0 -35
  139. package/client/mobile/src/components/ui/card.tsx +0 -15
  140. package/client/mobile/src/components/ui/input.tsx +0 -21
  141. package/client/mobile/src/lib/cn.ts +0 -6
  142. package/client/mobile/src/lib/specRouteCatalog.json +0 -26
  143. package/client/mobile/src/lib/specScreens.json +0 -22
  144. package/client/mobile/src/lib/useSpeechRecognitionInput.ts +0 -271
  145. package/client/mobile/src/main.tsx +0 -17
  146. package/client/mobile/src/pages/DashboardPage.tsx +0 -172
  147. package/client/mobile/src/pages/FulfillmentPage.tsx +0 -138
  148. package/client/mobile/src/pages/LoginPage.tsx +0 -74
  149. package/client/mobile/src/pages/ShippingPage.tsx +0 -338
  150. package/client/mobile/src/styles/globals.css +0 -23
  151. package/client/mobile/src/theme-vars.ts +0 -16
  152. package/client/mobile/src/theme.ts +0 -21
  153. package/client/mobile/src/vite-env.d.ts +0 -1
  154. package/client/mobile/tailwind.config.js +0 -8
  155. package/client/mobile/tsconfig.json +0 -25
  156. package/client/mobile/vite.config.ts +0 -12
  157. package/client/web/.dockerignore +0 -3
  158. package/client/web/.env.example +0 -1
  159. package/client/web/Dockerfile +0 -16
  160. package/client/web/Dockerfile.dev +0 -18
  161. package/client/web/README.md +0 -47
  162. package/client/web/index.html +0 -12
  163. package/client/web/package.json +0 -42
  164. package/client/web/postcss.config.js +0 -6
  165. package/client/web/scripts/ui-parity-web-adapter.mjs +0 -66
  166. package/client/web/src/api/client.ts +0 -30
  167. package/client/web/src/api/orders.ts +0 -42
  168. package/client/web/src/app/App.tsx +0 -21
  169. package/client/web/src/auth/AuthProvider.tsx +0 -122
  170. package/client/web/src/auth/ProtectedRoute.tsx +0 -22
  171. package/client/web/src/auth/auth-client.ts +0 -38
  172. package/client/web/src/auth/types.ts +0 -18
  173. package/client/web/src/components/AppShell.tsx +0 -59
  174. package/client/web/src/components/ui/button.tsx +0 -35
  175. package/client/web/src/components/ui/card.tsx +0 -7
  176. package/client/web/src/components/ui/input.tsx +0 -21
  177. package/client/web/src/lib/cn.ts +0 -6
  178. package/client/web/src/lib/specRouteCatalog.json +0 -23
  179. package/client/web/src/lib/specScreens.json +0 -17
  180. package/client/web/src/main.tsx +0 -17
  181. package/client/web/src/pages/DashboardPage.tsx +0 -158
  182. package/client/web/src/pages/LoginPage.tsx +0 -72
  183. package/client/web/src/pages/OrdersPage.tsx +0 -123
  184. package/client/web/src/styles/globals.css +0 -17
  185. package/client/web/src/theme-vars.ts +0 -18
  186. package/client/web/src/theme.ts +0 -25
  187. package/client/web/src/vite-env.d.ts +0 -1
  188. package/client/web/tailwind.config.js +0 -8
  189. package/client/web/tsconfig.json +0 -25
  190. package/client/web/vite.config.ts +0 -12
  191. package/compose.yml +0 -206
  192. package/infra/compose/.env.dev.example +0 -28
  193. package/infra/compose/.env.prod.example +0 -29
  194. package/infra/compose/README.md +0 -35
  195. package/infra/compose/dev.yml +0 -125
  196. package/infra/compose/prod.yml +0 -126
  197. package/infra/terraform/README.md +0 -34
  198. package/infra/terraform/aws/data/.terraform.lock.hcl +0 -25
  199. package/infra/terraform/aws/data/README.md +0 -18
  200. package/infra/terraform/aws/data/main.tf +0 -147
  201. package/infra/terraform/aws/data/outputs.tf +0 -14
  202. package/infra/terraform/aws/data/variables.tf +0 -57
  203. package/infra/terraform/aws/data/versions.tf +0 -10
  204. package/infra/terraform/aws/domain/.terraform.lock.hcl +0 -25
  205. package/infra/terraform/aws/domain/README.md +0 -20
  206. package/infra/terraform/aws/domain/env/dev.tfvars.example +0 -6
  207. package/infra/terraform/aws/domain/env/prod.tfvars.example +0 -7
  208. package/infra/terraform/aws/domain/main.tf +0 -149
  209. package/infra/terraform/aws/domain/outputs.tf +0 -29
  210. package/infra/terraform/aws/domain/variables.tf +0 -58
  211. package/infra/terraform/aws/domain/versions.tf +0 -10
  212. package/infra/terraform/openstack/README.md +0 -38
  213. package/infra/terraform/openstack/dev/.terraform.lock.hcl +0 -24
  214. package/infra/terraform/openstack/dev/README.md +0 -18
  215. package/infra/terraform/openstack/dev/main.tf +0 -49
  216. package/infra/terraform/openstack/dev/providers.tf +0 -15
  217. package/infra/terraform/openstack/dev/terraform.tfvars.example +0 -54
  218. package/infra/terraform/openstack/dev/variables.tf +0 -210
  219. package/infra/terraform/openstack/dev/versions.tf +0 -10
  220. package/infra/terraform/openstack/modules/environment_host/main.tf +0 -143
  221. package/infra/terraform/openstack/modules/environment_host/outputs.tf +0 -25
  222. package/infra/terraform/openstack/modules/environment_host/templates/docker-host-user-data.sh.tftpl +0 -40
  223. package/infra/terraform/openstack/modules/environment_host/variables.tf +0 -145
  224. package/infra/terraform/openstack/modules/environment_host/versions.tf +0 -7
  225. package/infra/terraform/openstack/prod/.terraform.lock.hcl +0 -24
  226. package/infra/terraform/openstack/prod/README.md +0 -18
  227. package/infra/terraform/openstack/prod/main.tf +0 -49
  228. package/infra/terraform/openstack/prod/providers.tf +0 -15
  229. package/infra/terraform/openstack/prod/terraform.tfvars.example +0 -55
  230. package/infra/terraform/openstack/prod/variables.tf +0 -210
  231. package/infra/terraform/openstack/prod/versions.tf +0 -10
  232. package/infra/terraform/openstack/server/.terraform.lock.hcl +0 -45
  233. package/infra/terraform/openstack/server/README.md +0 -47
  234. package/infra/terraform/openstack/server/main.tf +0 -161
  235. package/infra/terraform/openstack/server/outputs.tf +0 -30
  236. package/infra/terraform/openstack/server/providers.tf +0 -30
  237. package/infra/terraform/openstack/server/templates/server-user-data.sh.tftpl +0 -50
  238. package/infra/terraform/openstack/server/variables.tf +0 -233
  239. package/infra/terraform/openstack/server/zz_aspace.auto.tfvars.example.json +0 -29
  240. package/pnpm-workspace.yaml +0 -2
  241. package/scripts/dev/audit_sdd_build_ast.py +0 -277
  242. package/sdd/01_planning/01_feature/INDEX.md +0 -16
  243. package/sdd/01_planning/01_feature/README.md +0 -76
  244. package/sdd/01_planning/01_feature/alerts_feature_spec.md +0 -55
  245. package/sdd/01_planning/01_feature/auth_feature_spec.md +0 -57
  246. package/sdd/01_planning/01_feature/catalog_feature_spec.md +0 -61
  247. package/sdd/01_planning/01_feature/fulfillment_feature_spec.md +0 -58
  248. package/sdd/01_planning/01_feature/health_feature_spec.md +0 -52
  249. package/sdd/01_planning/01_feature/inventory_feature_spec.md +0 -60
  250. package/sdd/01_planning/01_feature/order_feature_spec.md +0 -63
  251. package/sdd/01_planning/01_feature/shipping_feature_spec.md +0 -55
  252. package/sdd/01_planning/01_feature/support_feature_spec.md +0 -53
  253. package/sdd/01_planning/01_feature/user_feature_spec.md +0 -54
  254. package/sdd/01_planning/02_screen/INDEX.md +0 -13
  255. package/sdd/01_planning/02_screen/README.md +0 -41
  256. package/sdd/01_planning/02_screen/admin_screen_spec.pdf +0 -0
  257. package/sdd/01_planning/02_screen/assets/README.md +0 -16
  258. package/sdd/01_planning/02_screen/assets/example/README.md +0 -13
  259. package/sdd/01_planning/02_screen/landing_screen_spec.pdf +0 -0
  260. package/sdd/01_planning/02_screen/mobile_screen_spec.pdf +0 -0
  261. package/sdd/01_planning/02_screen/web_screen_spec.pdf +0 -0
  262. package/sdd/01_planning/03_architecture/INDEX.md +0 -9
  263. package/sdd/01_planning/03_architecture/README.md +0 -25
  264. package/sdd/01_planning/03_architecture/architecture_document_structure.md +0 -77
  265. package/sdd/01_planning/03_architecture/backend/README.md +0 -10
  266. package/sdd/01_planning/03_architecture/frontend/README.md +0 -12
  267. package/sdd/01_planning/03_architecture/infra/README.md +0 -10
  268. package/sdd/01_planning/03_architecture/tech-research/README.md +0 -4
  269. package/sdd/01_planning/03_architecture/templates_system_architecture.md +0 -84
  270. package/sdd/01_planning/04_data/INDEX.md +0 -4
  271. package/sdd/01_planning/04_data/README.md +0 -10
  272. package/sdd/01_planning/04_data/templates_data_modeling.md +0 -119
  273. package/sdd/01_planning/05_api/README.md +0 -12
  274. package/sdd/01_planning/05_api/templates_api_contract.md +0 -90
  275. package/sdd/01_planning/06_iac/README.md +0 -11
  276. package/sdd/01_planning/06_iac/templates_runtime_and_cicd_baseline.md +0 -46
  277. package/sdd/01_planning/07_integration/README.md +0 -11
  278. package/sdd/01_planning/07_integration/templates_frontend_api_integration.md +0 -46
  279. package/sdd/01_planning/08_nonfunctional/README.md +0 -7
  280. package/sdd/01_planning/09_security/README.md +0 -7
  281. package/sdd/01_planning/10_test/README.md +0 -12
  282. package/sdd/01_planning/10_test/templates_test_strategy.md +0 -60
  283. package/sdd/01_planning/INDEX.md +0 -19
  284. package/sdd/01_planning/README.md +0 -17
  285. package/sdd/02_plan/01_feature/README.md +0 -34
  286. package/sdd/02_plan/01_feature/_feature_todo_template.md +0 -29
  287. package/sdd/02_plan/02_screen/INDEX.md +0 -19
  288. package/sdd/02_plan/02_screen/README.md +0 -39
  289. package/sdd/02_plan/02_screen/_screen_todo_template.md +0 -60
  290. package/sdd/02_plan/03_architecture/README.md +0 -23
  291. package/sdd/02_plan/03_architecture/architecture_document_governance.md +0 -40
  292. package/sdd/02_plan/03_architecture/build_ast_runtime_tree_governance.md +0 -53
  293. package/sdd/02_plan/03_architecture/repository_governance.md +0 -39
  294. package/sdd/02_plan/03_architecture/runtime_and_structure_governance.md +0 -38
  295. package/sdd/02_plan/03_architecture/templates-hexagonal-template-architecture.md +0 -9
  296. package/sdd/02_plan/03_architecture/toolchain_governance.md +0 -98
  297. package/sdd/02_plan/04_data/README.md +0 -5
  298. package/sdd/02_plan/05_api/README.md +0 -5
  299. package/sdd/02_plan/06_iac/README.md +0 -11
  300. package/sdd/02_plan/06_iac/dev_runtime_delivery.md +0 -36
  301. package/sdd/02_plan/06_iac/template_runtime_delivery.md +0 -50
  302. package/sdd/02_plan/07_integration/README.md +0 -5
  303. package/sdd/02_plan/07_integration/frontend_live_integration.md +0 -31
  304. package/sdd/02_plan/08_nonfunctional/README.md +0 -5
  305. package/sdd/02_plan/08_nonfunctional/repository_hygiene.md +0 -26
  306. package/sdd/02_plan/09_security/README.md +0 -5
  307. package/sdd/02_plan/10_test/README.md +0 -11
  308. package/sdd/02_plan/10_test/regression_verification.md +0 -39
  309. package/sdd/02_plan/10_test/templates/README.md +0 -8
  310. package/sdd/02_plan/10_test/templates/ui_parity_web_contract.template.yaml +0 -23
  311. package/sdd/02_plan/10_test/verification_strategy.md +0 -43
  312. package/sdd/02_plan/99_generated/from_planning/ui_parity/.gitkeep +0 -1
  313. package/sdd/02_plan/README.md +0 -40
  314. package/sdd/03_build/01_feature/README.md +0 -20
  315. package/sdd/03_build/01_feature/domain/README.md +0 -3
  316. package/sdd/03_build/01_feature/domain/account_and_access.md +0 -20
  317. package/sdd/03_build/01_feature/domain/catalog_and_inventory.md +0 -20
  318. package/sdd/03_build/01_feature/domain/ordering_and_fulfillment.md +0 -21
  319. package/sdd/03_build/01_feature/domain/support_and_observability.md +0 -21
  320. package/sdd/03_build/01_feature/domain_surfaces.md +0 -28
  321. package/sdd/03_build/01_feature/service/README.md +0 -3
  322. package/sdd/03_build/01_feature/service/admin_surface.md +0 -15
  323. package/sdd/03_build/01_feature/service/landing_surface.md +0 -13
  324. package/sdd/03_build/01_feature/service/mobile_surface.md +0 -14
  325. package/sdd/03_build/01_feature/service/web_surface.md +0 -14
  326. package/sdd/03_build/02_screen/README.md +0 -25
  327. package/sdd/03_build/02_screen/_screen_build_template.md +0 -26
  328. package/sdd/03_build/02_screen/admin/README.md +0 -5
  329. package/sdd/03_build/02_screen/landing/README.md +0 -5
  330. package/sdd/03_build/02_screen/mobile/README.md +0 -5
  331. package/sdd/03_build/02_screen/web/README.md +0 -5
  332. package/sdd/03_build/03_architecture/README.md +0 -10
  333. package/sdd/03_build/03_architecture/architecture_document_governance.md +0 -30
  334. package/sdd/03_build/03_architecture/build_ast_runtime_tree_governance.md +0 -24
  335. package/sdd/03_build/03_architecture/repository_governance.md +0 -18
  336. package/sdd/03_build/03_architecture/toolchain_governance.md +0 -36
  337. package/sdd/03_build/06_iac/README.md +0 -3
  338. package/sdd/03_build/06_iac/dev_runtime_delivery.md +0 -10
  339. package/sdd/03_build/06_iac/template_runtime_delivery.md +0 -49
  340. package/sdd/03_build/07_integration/README.md +0 -3
  341. package/sdd/03_build/07_integration/frontend_live_integration.md +0 -11
  342. package/sdd/03_build/08_nonfunctional/README.md +0 -3
  343. package/sdd/03_build/08_nonfunctional/repository_hygiene.md +0 -10
  344. package/sdd/03_build/10_test/README.md +0 -9
  345. package/sdd/03_build/10_test/regression_verification.md +0 -16
  346. package/sdd/03_build/10_test/verification_harness.md +0 -11
  347. package/sdd/03_build/README.md +0 -35
  348. package/sdd/03_verify/01_feature/README.md +0 -5
  349. package/sdd/03_verify/01_feature/domain_verification.md +0 -14
  350. package/sdd/03_verify/01_feature/service_verification.md +0 -22
  351. package/sdd/03_verify/02_screen/README.md +0 -6
  352. package/sdd/03_verify/02_screen/_screen_verify_template.md +0 -20
  353. package/sdd/03_verify/02_screen/admin/README.md +0 -4
  354. package/sdd/03_verify/02_screen/landing/README.md +0 -4
  355. package/sdd/03_verify/02_screen/mobile/README.md +0 -4
  356. package/sdd/03_verify/02_screen/web/README.md +0 -4
  357. package/sdd/03_verify/03_architecture/README.md +0 -10
  358. package/sdd/03_verify/03_architecture/architecture_document_governance.md +0 -15
  359. package/sdd/03_verify/03_architecture/build_ast_runtime_tree_governance.md +0 -28
  360. package/sdd/03_verify/03_architecture/repository_governance.md +0 -16
  361. package/sdd/03_verify/03_architecture/toolchain_governance.md +0 -58
  362. package/sdd/03_verify/06_iac/README.md +0 -3
  363. package/sdd/03_verify/06_iac/dev_runtime_delivery.md +0 -10
  364. package/sdd/03_verify/06_iac/template_runtime_delivery.md +0 -42
  365. package/sdd/03_verify/07_integration/README.md +0 -3
  366. package/sdd/03_verify/07_integration/frontend_live_integration.md +0 -16
  367. package/sdd/03_verify/08_nonfunctional/README.md +0 -3
  368. package/sdd/03_verify/08_nonfunctional/repository_hygiene.md +0 -14
  369. package/sdd/03_verify/10_test/README.md +0 -9
  370. package/sdd/03_verify/10_test/regression_verification.md +0 -16
  371. package/sdd/03_verify/10_test/ui_parity/README.md +0 -4
  372. package/sdd/03_verify/10_test/ui_parity/loop_runs/.gitkeep +0 -0
  373. package/sdd/03_verify/10_test/ui_parity/reference/.gitkeep +0 -0
  374. package/sdd/03_verify/10_test/ui_parity/staged_runs/.gitkeep +0 -0
  375. package/sdd/03_verify/10_test/verification_harness.md +0 -17
  376. package/sdd/03_verify/README.md +0 -22
  377. package/sdd/05_operate/01_runbooks/.gitkeep +0 -1
  378. package/sdd/05_operate/01_runbooks/README.md +0 -4
  379. package/sdd/05_operate/02_delivery_status/README.md +0 -4
  380. package/sdd/05_operate/02_delivery_status/service_status.md +0 -16
  381. package/sdd/05_operate/README.md +0 -12
  382. package/sdd/99_toolchain/01_automation/.gitkeep +0 -1
  383. package/sdd/99_toolchain/01_automation/README.md +0 -76
  384. package/sdd/99_toolchain/01_automation/agentic-dev/analyze_proof_results.py +0 -132
  385. package/sdd/99_toolchain/01_automation/agentic-dev/analyze_route_gap.py +0 -85
  386. package/sdd/99_toolchain/01_automation/agentic-dev/assets/repo-contract.template.json +0 -75
  387. package/sdd/99_toolchain/01_automation/agentic-dev/bootstrap_frontend_parity.sh +0 -84
  388. package/sdd/99_toolchain/01_automation/agentic-dev/init_frontend_parity.sh +0 -33
  389. package/sdd/99_toolchain/01_automation/agentic-dev/init_repo_contract.sh +0 -51
  390. package/sdd/99_toolchain/01_automation/agentic-dev/repo-contract.json +0 -76
  391. package/sdd/99_toolchain/01_automation/agentic-dev/resolve_frontend_target.py +0 -52
  392. package/sdd/99_toolchain/01_automation/agentic-dev/resolve_repo_contract.py +0 -56
  393. package/sdd/99_toolchain/01_automation/agentic-dev/run_frontend_target.sh +0 -100
  394. package/sdd/99_toolchain/01_automation/agentic-dev/run_repo_phase.sh +0 -140
  395. package/sdd/99_toolchain/01_automation/agentic-dev/validate_json_schema.py +0 -39
  396. package/sdd/99_toolchain/01_automation/agentic-parity-harness-design.md +0 -291
  397. package/sdd/99_toolchain/01_automation/assets/admin_screen_capture/dashboard.png +0 -0
  398. package/sdd/99_toolchain/01_automation/assets/admin_screen_capture/login.png +0 -0
  399. package/sdd/99_toolchain/01_automation/assets/admin_screen_capture/queue.png +0 -0
  400. package/sdd/99_toolchain/01_automation/assets/admin_screen_capture/support.png +0 -0
  401. package/sdd/99_toolchain/01_automation/assets/landing_screen_capture/home.png +0 -0
  402. package/sdd/99_toolchain/01_automation/assets/landing_screen_capture/login.png +0 -0
  403. package/sdd/99_toolchain/01_automation/assets/landing_screen_capture/workspace.png +0 -0
  404. package/sdd/99_toolchain/01_automation/assets/mobile_screen_capture/dashboard.png +0 -0
  405. package/sdd/99_toolchain/01_automation/assets/mobile_screen_capture/fulfillment.png +0 -0
  406. package/sdd/99_toolchain/01_automation/assets/mobile_screen_capture/login.png +0 -0
  407. package/sdd/99_toolchain/01_automation/assets/web_screen_capture/dashboard.png +0 -0
  408. package/sdd/99_toolchain/01_automation/assets/web_screen_capture/login.png +0 -0
  409. package/sdd/99_toolchain/01_automation/assets/web_screen_capture/orders.png +0 -0
  410. package/sdd/99_toolchain/01_automation/build_asset_recipes.py +0 -10
  411. package/sdd/99_toolchain/01_automation/build_screen_spec_pdf.py +0 -427
  412. package/sdd/99_toolchain/01_automation/capture_screen_assets.mjs +0 -148
  413. package/sdd/99_toolchain/01_automation/harness-layout.md +0 -34
  414. package/sdd/99_toolchain/01_automation/parity-execution-tooling-design.md +0 -319
  415. package/sdd/99_toolchain/01_automation/playwright_exactness_manifest.py +0 -21
  416. package/sdd/99_toolchain/01_automation/run_playwright_exactness.py +0 -87
  417. package/sdd/99_toolchain/01_automation/screen_spec_manifest.py +0 -321
  418. package/sdd/99_toolchain/01_automation/spec_asset_builder.py +0 -274
  419. package/sdd/99_toolchain/01_automation/ui-contract-projection.md +0 -79
  420. package/sdd/99_toolchain/01_automation/ui-parity/README.md +0 -60
  421. package/sdd/99_toolchain/01_automation/ui-parity/cli/extract-reference-pages.mjs +0 -2
  422. package/sdd/99_toolchain/01_automation/ui-parity/cli/materialize-reference-assets.mjs +0 -58
  423. package/sdd/99_toolchain/01_automation/ui-parity/cli/normalize-reference-assets.mjs +0 -2
  424. package/sdd/99_toolchain/01_automation/ui-parity/cli/route-gap-report.mjs +0 -187
  425. package/sdd/99_toolchain/01_automation/ui-parity/cli/run-proof.mjs +0 -50
  426. package/sdd/99_toolchain/01_automation/ui-parity/cli/scaffold-contract.mjs +0 -62
  427. package/sdd/99_toolchain/01_automation/ui-parity/cli/upload-parity1.mjs +0 -2
  428. package/sdd/99_toolchain/01_automation/ui-parity/contracts/collector-metadata.schema.json +0 -33
  429. package/sdd/99_toolchain/01_automation/ui-parity/contracts/proof-result.schema.json +0 -76
  430. package/sdd/99_toolchain/01_automation/ui-parity/contracts/route-gap-report.schema.json +0 -95
  431. package/sdd/99_toolchain/01_automation/ui-parity/core/capture-runner.mjs +0 -55
  432. package/sdd/99_toolchain/01_automation/ui-parity/core/load-adapter.mjs +0 -25
  433. package/sdd/99_toolchain/01_automation/ui-parity/core/load-contract.mjs +0 -81
  434. package/sdd/99_toolchain/01_automation/ui-parity/core/paths.mjs +0 -23
  435. package/sdd/99_toolchain/01_automation/ui-parity/core/proof-runner.mjs +0 -255
  436. package/sdd/99_toolchain/01_automation/ui-parity/interfaces/ui-parity-artifact-layout.md +0 -23
  437. package/sdd/99_toolchain/01_automation/ui-parity/interfaces/ui-parity-proof-interface.md +0 -60
  438. package/sdd/99_toolchain/01_automation/ui-parity/interfaces/ui-parity-route-gap-interface.md +0 -82
  439. package/sdd/99_toolchain/01_automation/ui-parity/runtime/playwright-runtime.mjs +0 -16
  440. package/sdd/99_toolchain/01_automation/ui-parity/runtime/static-runtime.mjs +0 -6
  441. package/sdd/99_toolchain/02_policies/.gitkeep +0 -1
  442. package/sdd/99_toolchain/02_policies/build-ast-governance-policy.md +0 -22
  443. package/sdd/99_toolchain/02_policies/compose-runtime-baseline-policy.md +0 -24
  444. package/sdd/99_toolchain/02_policies/convention-storage-policy.md +0 -26
  445. package/sdd/99_toolchain/02_policies/main-push-before-dev-deploy-policy.md +0 -27
  446. package/sdd/99_toolchain/02_policies/regression-verification-policy.md +0 -22
  447. package/sdd/99_toolchain/03_templates/.gitkeep +0 -1
  448. package/sdd/99_toolchain/03_templates/asset_recipe_manifest.example.py +0 -38
  449. package/sdd/99_toolchain/03_templates/generated_assets/README.md +0 -11
  450. package/sdd/99_toolchain/03_templates/generated_assets/example-brand-lockup.svg +0 -3
  451. package/sdd/99_toolchain/03_templates/generated_assets/example-brand-mark.svg +0 -3
  452. package/sdd/99_toolchain/03_templates/generated_assets/example-brand-wordmark.svg +0 -3
  453. package/sdd/99_toolchain/03_templates/playwright_exactness_manifest.example.py +0 -21
  454. package/sdd/99_toolchain/README.md +0 -23
  455. package/sdd/README.md +0 -21
  456. package/server/.dockerignore +0 -4
  457. package/server/.env.example +0 -19
  458. package/server/Dockerfile +0 -22
  459. package/server/Dockerfile.dev +0 -19
  460. package/server/README.md +0 -33
  461. package/server/__init__.py +0 -0
  462. package/server/api/__init__.py +0 -1
  463. package/server/api/http/__init__.py +0 -4
  464. package/server/api/http/app.py +0 -53
  465. package/server/api/http/router.py +0 -24
  466. package/server/config.py +0 -52
  467. package/server/contexts/__init__.py +0 -12
  468. package/server/contexts/alerts/__init__.py +0 -1
  469. package/server/contexts/alerts/application/__init__.py +0 -13
  470. package/server/contexts/alerts/application/services.py +0 -41
  471. package/server/contexts/alerts/contracts/__init__.py +0 -3
  472. package/server/contexts/alerts/contracts/http/__init__.py +0 -3
  473. package/server/contexts/alerts/contracts/http/router.py +0 -37
  474. package/server/contexts/alerts/domain/__init__.py +0 -15
  475. package/server/contexts/alerts/domain/models.py +0 -29
  476. package/server/contexts/alerts/infrastructure/__init__.py +0 -11
  477. package/server/contexts/alerts/infrastructure/repository.py +0 -41
  478. package/server/contexts/auth/__init__.py +0 -1
  479. package/server/contexts/auth/application/__init__.py +0 -3
  480. package/server/contexts/auth/application/ports.py +0 -10
  481. package/server/contexts/auth/application/services.py +0 -64
  482. package/server/contexts/auth/contracts/__init__.py +0 -4
  483. package/server/contexts/auth/contracts/http/__init__.py +0 -4
  484. package/server/contexts/auth/contracts/http/dependencies.py +0 -37
  485. package/server/contexts/auth/contracts/http/router.py +0 -19
  486. package/server/contexts/auth/domain/__init__.py +0 -3
  487. package/server/contexts/auth/domain/models.py +0 -24
  488. package/server/contexts/auth/infrastructure/__init__.py +0 -4
  489. package/server/contexts/auth/infrastructure/adapters/memory.py +0 -19
  490. package/server/contexts/auth/infrastructure/adapters/mongodb.py +0 -24
  491. package/server/contexts/auth/infrastructure/adapters/sqlalchemy.py +0 -74
  492. package/server/contexts/auth/infrastructure/repository.py +0 -28
  493. package/server/contexts/catalog/__init__.py +0 -1
  494. package/server/contexts/catalog/application/__init__.py +0 -28
  495. package/server/contexts/catalog/application/ports.py +0 -15
  496. package/server/contexts/catalog/application/services.py +0 -154
  497. package/server/contexts/catalog/contracts/__init__.py +0 -3
  498. package/server/contexts/catalog/contracts/http/__init__.py +0 -3
  499. package/server/contexts/catalog/contracts/http/router.py +0 -60
  500. package/server/contexts/catalog/domain/__init__.py +0 -45
  501. package/server/contexts/catalog/domain/models.py +0 -113
  502. package/server/contexts/catalog/infrastructure/__init__.py +0 -4
  503. package/server/contexts/catalog/infrastructure/adapters/memory.py +0 -62
  504. package/server/contexts/catalog/infrastructure/repository.py +0 -8
  505. package/server/contexts/fulfillment/__init__.py +0 -1
  506. package/server/contexts/fulfillment/application/__init__.py +0 -13
  507. package/server/contexts/fulfillment/application/ports.py +0 -20
  508. package/server/contexts/fulfillment/application/services.py +0 -85
  509. package/server/contexts/fulfillment/contracts/__init__.py +0 -3
  510. package/server/contexts/fulfillment/contracts/http/__init__.py +0 -3
  511. package/server/contexts/fulfillment/contracts/http/router.py +0 -40
  512. package/server/contexts/fulfillment/domain/__init__.py +0 -25
  513. package/server/contexts/fulfillment/domain/models.py +0 -73
  514. package/server/contexts/fulfillment/infrastructure/__init__.py +0 -13
  515. package/server/contexts/fulfillment/infrastructure/adapters/memory.py +0 -43
  516. package/server/contexts/fulfillment/infrastructure/repository.py +0 -97
  517. package/server/contexts/health/__init__.py +0 -1
  518. package/server/contexts/health/application/__init__.py +0 -3
  519. package/server/contexts/health/application/services.py +0 -2
  520. package/server/contexts/health/contracts/__init__.py +0 -3
  521. package/server/contexts/health/contracts/http/__init__.py +0 -3
  522. package/server/contexts/health/contracts/http/router.py +0 -10
  523. package/server/contexts/inventory/__init__.py +0 -1
  524. package/server/contexts/inventory/application/__init__.py +0 -28
  525. package/server/contexts/inventory/application/ports.py +0 -11
  526. package/server/contexts/inventory/application/services.py +0 -214
  527. package/server/contexts/inventory/contracts/__init__.py +0 -3
  528. package/server/contexts/inventory/contracts/http/__init__.py +0 -3
  529. package/server/contexts/inventory/contracts/http/router.py +0 -82
  530. package/server/contexts/inventory/domain/__init__.py +0 -33
  531. package/server/contexts/inventory/domain/models.py +0 -93
  532. package/server/contexts/inventory/infrastructure/__init__.py +0 -4
  533. package/server/contexts/inventory/infrastructure/adapters/memory.py +0 -24
  534. package/server/contexts/inventory/infrastructure/repository.py +0 -8
  535. package/server/contexts/orders/__init__.py +0 -1
  536. package/server/contexts/orders/application/__init__.py +0 -19
  537. package/server/contexts/orders/application/services.py +0 -127
  538. package/server/contexts/orders/contracts/__init__.py +0 -3
  539. package/server/contexts/orders/contracts/http/__init__.py +0 -3
  540. package/server/contexts/orders/contracts/http/router.py +0 -82
  541. package/server/contexts/orders/domain/__init__.py +0 -29
  542. package/server/contexts/orders/domain/models.py +0 -95
  543. package/server/contexts/orders/infrastructure/__init__.py +0 -7
  544. package/server/contexts/orders/infrastructure/repository.py +0 -104
  545. package/server/contexts/shipping/__init__.py +0 -1
  546. package/server/contexts/shipping/application/__init__.py +0 -13
  547. package/server/contexts/shipping/application/services.py +0 -92
  548. package/server/contexts/shipping/contracts/__init__.py +0 -3
  549. package/server/contexts/shipping/contracts/http/__init__.py +0 -3
  550. package/server/contexts/shipping/contracts/http/router.py +0 -40
  551. package/server/contexts/shipping/domain/__init__.py +0 -19
  552. package/server/contexts/shipping/domain/models.py +0 -48
  553. package/server/contexts/shipping/infrastructure/__init__.py +0 -9
  554. package/server/contexts/shipping/infrastructure/repository.py +0 -50
  555. package/server/contexts/support/__init__.py +0 -1
  556. package/server/contexts/support/application/__init__.py +0 -13
  557. package/server/contexts/support/application/services.py +0 -29
  558. package/server/contexts/support/contracts/__init__.py +0 -3
  559. package/server/contexts/support/contracts/http/__init__.py +0 -3
  560. package/server/contexts/support/contracts/http/router.py +0 -40
  561. package/server/contexts/support/domain/__init__.py +0 -13
  562. package/server/contexts/support/domain/models.py +0 -27
  563. package/server/contexts/support/infrastructure/__init__.py +0 -11
  564. package/server/contexts/support/infrastructure/repository.py +0 -70
  565. package/server/contexts/user/__init__.py +0 -1
  566. package/server/contexts/user/application/__init__.py +0 -3
  567. package/server/contexts/user/application/ports.py +0 -11
  568. package/server/contexts/user/application/services.py +0 -44
  569. package/server/contexts/user/contracts/__init__.py +0 -3
  570. package/server/contexts/user/contracts/http/__init__.py +0 -3
  571. package/server/contexts/user/contracts/http/router.py +0 -26
  572. package/server/contexts/user/domain/__init__.py +0 -3
  573. package/server/contexts/user/domain/models.py +0 -22
  574. package/server/contexts/user/infrastructure/__init__.py +0 -3
  575. package/server/contexts/user/infrastructure/adapters/memory.py +0 -27
  576. package/server/contexts/user/infrastructure/adapters/mongodb.py +0 -41
  577. package/server/contexts/user/infrastructure/adapters/sqlalchemy.py +0 -94
  578. package/server/contexts/user/infrastructure/factory.py +0 -28
  579. package/server/data/README.md +0 -24
  580. package/server/data/bootstrap/alerts.json +0 -38
  581. package/server/data/bootstrap/auth_accounts.json +0 -18
  582. package/server/data/bootstrap/catalog_products.json +0 -179
  583. package/server/data/bootstrap/fulfillment_events.json +0 -5
  584. package/server/data/bootstrap/fulfillment_notes.json +0 -5
  585. package/server/data/bootstrap/fulfillment_tasks.json +0 -50
  586. package/server/data/bootstrap/inventory_levels.json +0 -80
  587. package/server/data/bootstrap/orders.json +0 -62
  588. package/server/data/bootstrap/shipping_shipments.json +0 -50
  589. package/server/data/bootstrap/support_faqs.json +0 -26
  590. package/server/data/bootstrap/users.json +0 -20
  591. package/server/data/bootstrap_loader.py +0 -15
  592. package/server/docker-entrypoint.sh +0 -56
  593. package/server/main.py +0 -3
  594. package/server/pyproject.toml +0 -36
  595. package/server/shared/__init__.py +0 -1
  596. package/server/shared/application/__init__.py +0 -3
  597. package/server/shared/application/health.py +0 -2
  598. package/server/shared/infrastructure/__init__.py +0 -10
  599. package/server/shared/infrastructure/runtime.py +0 -6
  600. package/server/shared/infrastructure/security.py +0 -33
  601. package/server/tests/e2e/test_domain_feature_flows.py +0 -483
  602. package/server/tests/test_health.py +0 -49
  603. package/server/uv.lock +0 -1169
package/lib/scaffold.mjs CHANGED
@@ -43,7 +43,8 @@ function copyDirectoryContents(sourceRoot, destinationRoot) {
43
43
  }
44
44
 
45
45
  function fetchPage(url) {
46
- const token = process.env.GH_TOKEN || process.env.GITHUB_TOKEN || process.env.AGENTIC_GITHUB_TOKEN;
46
+ const token =
47
+ process.env.GH_TOKEN || process.env.GITHUB_TOKEN || process.env.AGENTIC_GITHUB_TOKEN;
47
48
  return fetch(url, {
48
49
  headers: {
49
50
  Accept: "application/vnd.github+json",
@@ -58,8 +59,13 @@ export function parseArgs(argv) {
58
59
  const options = {
59
60
  command: "init",
60
61
  targetDir: "",
62
+ projectName: "",
61
63
  template: "",
62
64
  owner: DEFAULT_TEMPLATE_OWNER,
65
+ appMode: "",
66
+ aiProviders: [],
67
+ githubAuthMode: "",
68
+ githubPat: "",
63
69
  force: false,
64
70
  yes: false,
65
71
  skipBootstrap: false,
@@ -76,9 +82,30 @@ export function parseArgs(argv) {
76
82
  case "-t":
77
83
  options.template = args.shift() ?? "";
78
84
  break;
85
+ case "--project-name":
86
+ options.projectName = args.shift() ?? "";
87
+ break;
79
88
  case "--owner":
80
89
  options.owner = args.shift() ?? DEFAULT_TEMPLATE_OWNER;
81
90
  break;
91
+ case "--app-mode":
92
+ options.appMode = args.shift() ?? "";
93
+ break;
94
+ case "--providers":
95
+ case "--provider": {
96
+ const value = args.shift() ?? "";
97
+ options.aiProviders = value
98
+ .split(",")
99
+ .map((entry) => entry.trim())
100
+ .filter(Boolean);
101
+ break;
102
+ }
103
+ case "--github-auth":
104
+ options.githubAuthMode = args.shift() ?? "";
105
+ break;
106
+ case "--github-pat":
107
+ options.githubPat = args.shift() ?? "";
108
+ break;
82
109
  case "--force":
83
110
  options.force = true;
84
111
  break;
@@ -115,10 +142,16 @@ export function usage() {
115
142
  " npx agentic-dev",
116
143
  " npx agentic-dev init my-app",
117
144
  " npx agentic-dev init my-app --template template-web --yes",
145
+ " npx agentic-dev init my-app --template template-web --project-name my-app --providers codex,claude",
118
146
  "",
119
147
  "Options:",
120
148
  " --template, -t Template repo name or suffix to use",
149
+ " --project-name Project name written into scaffold metadata",
121
150
  " --owner GitHub owner for template-* repos (default: say828)",
151
+ " --app-mode App mode: fullstack, frontend, backend",
152
+ " --providers Comma-separated AI providers: codex, claude, ollama",
153
+ " --github-auth GitHub auth mode: public, env, pat",
154
+ " --github-pat GitHub PAT for this run only",
122
155
  " --force Allow scaffolding into a non-empty directory",
123
156
  " --yes, -y Skip interactive prompts",
124
157
  " --skip-bootstrap Copy the template but skip install/bootstrap",
@@ -177,6 +210,22 @@ export async function fetchTemplateRepos({ owner = DEFAULT_TEMPLATE_OWNER } = {}
177
210
  return repos;
178
211
  }
179
212
 
213
+ function updateJsonFile(filePath, updater) {
214
+ if (!fs.existsSync(filePath)) {
215
+ return;
216
+ }
217
+
218
+ let current = {};
219
+ try {
220
+ current = JSON.parse(fs.readFileSync(filePath, "utf-8"));
221
+ } catch (error) {
222
+ return;
223
+ }
224
+
225
+ const next = updater(current);
226
+ fs.writeFileSync(filePath, `${JSON.stringify(next, null, 2)}\n`);
227
+ }
228
+
180
229
  export function resolveTemplateRepo(input, repos) {
181
230
  const normalized = (input || "").trim();
182
231
  if (!normalized) {
@@ -323,7 +372,51 @@ function validateTemplateRepoContents(destinationRoot, templateRepo) {
323
372
  }
324
373
  }
325
374
 
326
- function runInstallSteps(destinationRoot, bootstrapTarget) {
375
+ function writeSetupConfig(destinationRoot, setupSelections = {}) {
376
+ const outputDir = path.join(destinationRoot, ".agentic-dev");
377
+ fs.mkdirSync(outputDir, { recursive: true });
378
+ const outputPath = path.join(outputDir, "setup.json");
379
+
380
+ const setupConfig = {
381
+ project_name: setupSelections.projectName || path.basename(destinationRoot),
382
+ template_repo: setupSelections.templateRepo || "",
383
+ template_owner: setupSelections.owner || DEFAULT_TEMPLATE_OWNER,
384
+ app_mode: setupSelections.appMode || "fullstack",
385
+ ai_providers: Array.isArray(setupSelections.aiProviders) ? setupSelections.aiProviders : [],
386
+ github_auth_mode: setupSelections.githubAuthMode || "public",
387
+ github_pat_supplied: Boolean(setupSelections.githubPat),
388
+ skip_bootstrap: Boolean(setupSelections.skipBootstrap),
389
+ };
390
+
391
+ fs.writeFileSync(outputPath, `${JSON.stringify(setupConfig, null, 2)}\n`);
392
+ }
393
+
394
+ function applyProviderSelections(destinationRoot, providers = []) {
395
+ if (providers.length === 0) {
396
+ return;
397
+ }
398
+
399
+ if (!providers.includes("claude")) {
400
+ fs.rmSync(path.join(destinationRoot, ".claude"), { recursive: true, force: true });
401
+ }
402
+
403
+ if (!providers.includes("codex")) {
404
+ fs.rmSync(path.join(destinationRoot, ".codex"), { recursive: true, force: true });
405
+ }
406
+ }
407
+
408
+ function applyProjectMetadata(destinationRoot, setupSelections = {}) {
409
+ if (!setupSelections.projectName) {
410
+ return;
411
+ }
412
+
413
+ updateJsonFile(path.join(destinationRoot, ".claude", "workspace-config.json"), (current) => ({
414
+ ...current,
415
+ nickname: setupSelections.projectName,
416
+ }));
417
+ }
418
+
419
+ function runInstallSteps(destinationRoot, bootstrapTarget, { installBrowser = true } = {}) {
327
420
  maybeCreateEnvFile(destinationRoot);
328
421
 
329
422
  const pnpmCommand = ensurePnpm();
@@ -334,7 +427,7 @@ function runInstallSteps(destinationRoot, bootstrapTarget) {
334
427
 
335
428
  const executedSteps = ["pnpm install"];
336
429
 
337
- if (bootstrapTarget) {
430
+ if (bootstrapTarget && installBrowser) {
338
431
  runCommand(
339
432
  pnpmCommand[0],
340
433
  [
@@ -395,14 +488,24 @@ export function scaffoldFromTemplateRepo({ destinationRoot, templateRepo }) {
395
488
  export function installTemplateRepo({
396
489
  destinationRoot,
397
490
  templateRepo,
491
+ setupSelections = {},
398
492
  skipBootstrap = false,
399
493
  }) {
400
494
  scaffoldFromTemplateRepo({ destinationRoot, templateRepo });
495
+ applyProviderSelections(destinationRoot, setupSelections.aiProviders);
496
+ applyProjectMetadata(destinationRoot, setupSelections);
497
+ writeSetupConfig(destinationRoot, {
498
+ ...setupSelections,
499
+ templateRepo: templateRepo.name,
500
+ skipBootstrap,
501
+ });
401
502
  validateTemplateRepoContents(destinationRoot, templateRepo);
402
503
  const bootstrapTarget = resolveBootstrapTarget(destinationRoot);
504
+ const effectiveSkipBootstrap = skipBootstrap || setupSelections.appMode === "backend";
505
+ const installBrowser = setupSelections.appMode !== "backend";
403
506
 
404
- const executedSteps = runInstallSteps(destinationRoot, bootstrapTarget);
405
- if (!skipBootstrap) {
507
+ const executedSteps = runInstallSteps(destinationRoot, bootstrapTarget, { installBrowser });
508
+ if (!effectiveSkipBootstrap) {
406
509
  executedSteps.push(...runBootstrapStep(destinationRoot, bootstrapTarget));
407
510
  }
408
511
  const bootstrapHint = bootstrapTarget
@@ -412,6 +515,6 @@ export function installTemplateRepo({
412
515
  destinationRoot,
413
516
  templateRepo: templateRepo.name,
414
517
  executedSteps,
415
- nextSteps: skipBootstrap ? [bootstrapHint] : [],
518
+ nextSteps: effectiveSkipBootstrap ? [bootstrapHint] : [],
416
519
  };
417
520
  }
package/package.json CHANGED
@@ -1,41 +1,27 @@
1
1
  {
2
2
  "name": "agentic-dev",
3
- "version": "0.2.10",
4
- "description": "Scaffold a public say828/template-* repo and run install/bootstrap automatically.",
3
+ "version": "0.2.12",
4
+ "description": "GitHub-based installer CLI for public say828/template-* repos.",
5
5
  "type": "module",
6
6
  "packageManager": "pnpm@10.32.0",
7
7
  "bin": {
8
8
  "agentic-dev": "./bin/agentic-dev.mjs"
9
9
  },
10
10
  "files": [
11
- ".agent",
12
- ".claude",
13
- ".codex",
14
11
  "bin",
15
- "client",
16
- "infra",
17
12
  "lib",
18
- "scripts",
19
- "sdd",
20
- "server",
21
- ".dockerignore",
22
- ".env.example",
23
- ".gitignore",
24
- "AGENTS.md",
25
- "README.md",
26
- "SDD_SKILL.md",
27
- "compose.yml",
28
- "pnpm-workspace.yaml"
13
+ "README.md"
29
14
  ],
30
15
  "scripts": {
31
- "smoke:init": "node ./bin/agentic-dev.mjs init ./.tmp-agentic-smoke --template template-fullstack-mono --yes --force"
16
+ "smoke:init": "node ./bin/agentic-dev.mjs init ./.tmp-agentic-smoke --template template-web --app-mode backend --providers codex --yes --force"
32
17
  },
33
18
  "keywords": [
34
19
  "agentic",
35
- "template",
36
20
  "scaffold",
37
- "vite",
38
- "react"
21
+ "cli",
22
+ "github",
23
+ "template",
24
+ "orchestration"
39
25
  ],
40
26
  "license": "UNLICENSED"
41
27
  }
package/.agent/prd.json DELETED
@@ -1,29 +0,0 @@
1
- {
2
- "project": "template-agentic-program",
3
- "goal": "이 파일은 Ralph loop starter scaffold다. downstream 저장소는 현재 작업 scope에 맞는 story set으로 즉시 교체한다.",
4
- "updated_at": "2026-03-19T00:00:00+09:00",
5
- "stories": [
6
- {
7
- "id": "TEMPLATE-ALIGN-001",
8
- "title": "Replace template PRD scaffold with repository-specific delivery stories",
9
- "priority": 1,
10
- "status": "pending",
11
- "scope": [
12
- ".agent/prd.json",
13
- ".agent/prompt.md",
14
- "sdd/02_plan",
15
- "sdd/03_build",
16
- "sdd/03_verify"
17
- ],
18
- "validation": [
19
- "jq . .agent/prd.json"
20
- ],
21
- "done_when": [
22
- "Template placeholder stories are replaced with repository-specific work items.",
23
- "Validation commands point at the active repository program.",
24
- "progress.txt contains the current operator note."
25
- ],
26
- "blockers": []
27
- }
28
- ]
29
- }
@@ -1 +0,0 @@
1
- 2026-03-19 scaffold initialized for canonical template Ralph loop.
package/.agent/prompt.md DELETED
@@ -1,21 +0,0 @@
1
- You are running one Ralph iteration in this repository.
2
-
3
- Rules:
4
- 1. Read `.agent/prd.json` and `.agent/progress.txt`.
5
- 2. Work only on the requested story id.
6
- 3. Lock one reproduction or validation command before editing.
7
- 4. Make one focused change set toward the requested story.
8
- 5. Re-run the requested validation commands immediately.
9
- 6. Update the matching `sdd/02_plan`, `sdd/03_build`, and `sdd/03_verify` current-state artifacts when scope changes.
10
- 7. Update `.agent/prd.json` story status and append one short line to `.agent/progress.txt`.
11
- 8. Stop after this iteration and report:
12
- - story id
13
- - validation status
14
- - files changed
15
- - next story or blocker
16
- 9. If the caller provided a completion promise token and the story is truly complete in this iteration, print that token exactly once.
17
-
18
- Guardrails:
19
- - Do not create a parallel `docs/` tree when `sdd/` exists.
20
- - Do not leave execution-history narrative inside `sdd/03_build`.
21
- - Do not claim completion without validation evidence.
@@ -1,13 +0,0 @@
1
- {
2
- "updated_at": "2026-03-19T00:00:00Z",
3
- "story_id": "",
4
- "max_iterations": 12,
5
- "current_iteration": 0,
6
- "status": "idle",
7
- "completion_promise": "STORY_COMPLETE",
8
- "promise_seen": false,
9
- "last_exit_code": 0,
10
- "prompt_snapshot": "",
11
- "output_file": "",
12
- "changed_files": []
13
- }
@@ -1,12 +0,0 @@
1
- {
2
- "updated_at": "2026-03-19T00:00:00Z",
3
- "max_iterations": 1000,
4
- "story_iterations": 1,
5
- "current_iteration": 0,
6
- "active_story": "",
7
- "child_exit_code": 0,
8
- "child_status": "idle",
9
- "repeat_count": 0,
10
- "status": "idle",
11
- "run_dir": ""
12
- }
@@ -1,238 +0,0 @@
1
- #!/usr/bin/env bash
2
-
3
- set -euo pipefail
4
-
5
- ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
6
- AGENT_DIR="$ROOT_DIR/.agent"
7
- PRD_FILE="$AGENT_DIR/prd.json"
8
- PROGRESS_FILE="$AGENT_DIR/progress.txt"
9
- RUNS_DIR="$AGENT_DIR/runs"
10
- STATE_FILE="$AGENT_DIR/ralph-supervisor-state.json"
11
- RALPH_RUNNER="$AGENT_DIR/ralph.sh"
12
-
13
- max_iterations=1000
14
- story_iterations=1
15
- completion_promise="STORY_COMPLETE"
16
- run_label=""
17
- sleep_seconds=0
18
- dry_run=0
19
-
20
- usage() {
21
- cat <<'EOF'
22
- Usage:
23
- .agent/ralph-supervisor.sh [options]
24
-
25
- Options:
26
- --max-iterations N Maximum global iterations across all stories. Default: 1000
27
- --story-iterations N Iterations per selected story invocation. Default: 1
28
- --completion-promise TXT Promise token passed to child Ralph runner
29
- --run-label LABEL Optional label suffix for this supervisor run
30
- --sleep-seconds N Sleep between global iterations
31
- --dry-run Use child runner in dry-run mode
32
- -h, --help Show help
33
-
34
- Behavior:
35
- - Picks the next pending/in_progress story from .agent/prd.json each global iteration
36
- - Invokes .agent/ralph.sh for one focused child loop
37
- - Stops when all stories complete, when max iterations are exhausted,
38
- or when the same story/status pair repeats 3 times with no new signal
39
- - Writes state to .agent/ralph-supervisor-state.json and appends monitor lines to .agent/progress.txt
40
- EOF
41
- }
42
-
43
- require_file() {
44
- local file_path="$1"
45
- if [[ ! -f "$file_path" ]]; then
46
- echo "Missing required file: $file_path" >&2
47
- exit 1
48
- fi
49
- }
50
-
51
- select_story() {
52
- jq -r '
53
- .stories
54
- | map(select(.status == "in_progress" or .status == "pending"))
55
- | sort_by(.priority)
56
- | .[0].id // empty
57
- ' "$PRD_FILE"
58
- }
59
-
60
- read_story_status() {
61
- local story_id="$1"
62
- jq -r --arg id "$story_id" '.stories[] | select(.id == $id) | .status // "missing"' "$PRD_FILE"
63
- }
64
-
65
- write_state() {
66
- local iteration="$1"
67
- local active_story="$2"
68
- local child_exit="$3"
69
- local child_status="$4"
70
- local repeat_count="$5"
71
- local status="$6"
72
- local run_dir="$7"
73
-
74
- cat >"$STATE_FILE" <<EOF
75
- {
76
- "updated_at": "$(date -u +"%Y-%m-%dT%H:%M:%SZ")",
77
- "max_iterations": $max_iterations,
78
- "story_iterations": $story_iterations,
79
- "current_iteration": $iteration,
80
- "active_story": "$active_story",
81
- "child_exit_code": $child_exit,
82
- "child_status": "$child_status",
83
- "repeat_count": $repeat_count,
84
- "status": "$status",
85
- "run_dir": "${run_dir#$ROOT_DIR/}"
86
- }
87
- EOF
88
- }
89
-
90
- main() {
91
- require_file "$PRD_FILE"
92
- require_file "$PROGRESS_FILE"
93
- require_file "$RALPH_RUNNER"
94
-
95
- while [[ $# -gt 0 ]]; do
96
- case "$1" in
97
- --max-iterations)
98
- max_iterations="${2:-}"
99
- shift 2
100
- ;;
101
- --story-iterations)
102
- story_iterations="${2:-}"
103
- shift 2
104
- ;;
105
- --completion-promise)
106
- completion_promise="${2:-}"
107
- shift 2
108
- ;;
109
- --run-label)
110
- run_label="${2:-}"
111
- shift 2
112
- ;;
113
- --sleep-seconds)
114
- sleep_seconds="${2:-}"
115
- shift 2
116
- ;;
117
- --dry-run)
118
- dry_run=1
119
- shift
120
- ;;
121
- -h|--help)
122
- usage
123
- exit 0
124
- ;;
125
- *)
126
- echo "Unknown argument: $1" >&2
127
- usage >&2
128
- exit 2
129
- ;;
130
- esac
131
- done
132
-
133
- if ! [[ "$max_iterations" =~ ^[0-9]+$ ]] || [[ "$max_iterations" -lt 1 ]]; then
134
- echo "--max-iterations must be a positive integer" >&2
135
- exit 2
136
- fi
137
- if ! [[ "$story_iterations" =~ ^[0-9]+$ ]] || [[ "$story_iterations" -lt 1 ]]; then
138
- echo "--story-iterations must be a positive integer" >&2
139
- exit 2
140
- fi
141
- if ! [[ "$sleep_seconds" =~ ^[0-9]+$ ]] || [[ "$sleep_seconds" -lt 0 ]]; then
142
- echo "--sleep-seconds must be a non-negative integer" >&2
143
- exit 2
144
- fi
145
-
146
- mkdir -p "$RUNS_DIR"
147
- local run_id
148
- run_id="$(date +%Y%m%d-%H%M%S)"
149
- if [[ -n "$run_label" ]]; then
150
- run_id="$run_id-$run_label"
151
- fi
152
- local supervisor_run_dir="$RUNS_DIR/supervisor-$run_id"
153
- mkdir -p "$supervisor_run_dir"
154
-
155
- local previous_signature=""
156
- local repeat_count=0
157
- local final_status="max_iterations_reached"
158
-
159
- local iteration=1
160
- while [[ "$iteration" -le "$max_iterations" ]]; do
161
- local story_id
162
- story_id="$(select_story)"
163
- if [[ -z "$story_id" ]]; then
164
- final_status="all_stories_completed"
165
- write_state "$iteration" "" 0 "none" 0 "$final_status" "$supervisor_run_dir"
166
- echo "$(date +%F) supervisor all-stories-complete iteration=$iteration" >>"$PROGRESS_FILE"
167
- break
168
- fi
169
-
170
- echo "[supervisor] iteration $iteration/$max_iterations story=$story_id"
171
-
172
- local child_args=(
173
- --story-id "$story_id"
174
- --max-iterations "$story_iterations"
175
- --completion-promise "$completion_promise"
176
- --run-label "supervisor-$iteration-$story_id"
177
- )
178
- if [[ $dry_run -eq 1 ]]; then
179
- child_args+=(--dry-run)
180
- fi
181
-
182
- set +e
183
- "$RALPH_RUNNER" "${child_args[@]}"
184
- local child_exit=$?
185
- set -e
186
-
187
- local child_status="unknown"
188
- if [[ -f "$AGENT_DIR/ralph-loop-state.json" ]]; then
189
- child_status="$(jq -r '.status // "unknown"' "$AGENT_DIR/ralph-loop-state.json")"
190
- fi
191
-
192
- local story_status
193
- story_status="$(read_story_status "$story_id")"
194
- local signature="$story_id:$child_status:$story_status"
195
- if [[ "$signature" == "$previous_signature" ]]; then
196
- repeat_count=$((repeat_count + 1))
197
- else
198
- repeat_count=1
199
- previous_signature="$signature"
200
- fi
201
-
202
- if [[ "$story_status" == "completed" || "$child_status" == "completed" ]]; then
203
- final_status="story_completed"
204
- elif [[ "$repeat_count" -ge 3 ]]; then
205
- final_status="stopped_same_signal_3x"
206
- elif [[ "$child_status" == "iteration_pass_no_promise" || "$child_status" == "dry_run" || "$child_exit" -eq 0 ]]; then
207
- final_status="iteration_ok"
208
- else
209
- final_status="iteration_failed"
210
- fi
211
-
212
- write_state "$iteration" "$story_id" "$child_exit" "$child_status" "$repeat_count" "$final_status" "$supervisor_run_dir"
213
- echo "$(date +%F) supervisor iteration-$iteration story=$story_id child_status=$child_status story_status=$story_status repeat=$repeat_count exit=$child_exit" >>"$PROGRESS_FILE"
214
-
215
- if [[ "$final_status" == "stopped_same_signal_3x" ]]; then
216
- break
217
- fi
218
-
219
- iteration=$((iteration + 1))
220
- if [[ "$iteration" -le "$max_iterations" && "$sleep_seconds" -gt 0 ]]; then
221
- sleep "$sleep_seconds"
222
- fi
223
- done
224
-
225
- echo "[supervisor] final_status=$final_status run_dir=${supervisor_run_dir#$ROOT_DIR/}"
226
- if [[ "$final_status" == "all_stories_completed" ]]; then
227
- exit 0
228
- fi
229
- if [[ "$final_status" == "stopped_same_signal_3x" ]]; then
230
- exit 1
231
- fi
232
- if [[ "$final_status" == "max_iterations_reached" ]]; then
233
- exit 1
234
- fi
235
- exit 0
236
- }
237
-
238
- main "$@"