ai-spector 0.9.21 → 0.9.24

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 (579) hide show
  1. package/contracts/bootstrap/config/prototype-screen-map.json +25 -0
  2. package/contracts/bootstrap/config/prototype.config.json +17 -0
  3. package/contracts/bootstrap/config/review-queue-pending.json +4 -0
  4. package/contracts/bootstrap/config/review-queue-registry.json +4 -0
  5. package/contracts/bootstrap/config/review.config.json +5 -0
  6. package/contracts/bootstrap/docs/ENTITY_REGISTRY_MIGRATION.md +192 -0
  7. package/contracts/bootstrap/docs/MIGRATION.md +463 -0
  8. package/contracts/bootstrap/docs/README.md +48 -0
  9. package/contracts/bootstrap/docs/adapters/README.md +32 -0
  10. package/contracts/bootstrap/docs/guides/COMMENTS_ENTITY_MIGRATION.md +195 -0
  11. package/contracts/bootstrap/docs/guides/DOCOPS_MANUAL_FALLBACK.md +177 -0
  12. package/contracts/bootstrap/docs/guides/PROJECT_LAYOUT.md +84 -0
  13. package/contracts/bootstrap/docs/modules/comments.md +77 -0
  14. package/contracts/bootstrap/docs/modules/generate.md +25 -0
  15. package/contracts/bootstrap/docs/modules/graph.md +31 -0
  16. package/contracts/bootstrap/docs/modules/prototype.md +26 -0
  17. package/contracts/bootstrap/docs/modules/review.md +25 -0
  18. package/contracts/bootstrap/docs/modules/translate.md +26 -0
  19. package/contracts/bootstrap/scripts/migrate-entity-registry.sh +55 -0
  20. package/contracts/bootstrap/templates/basic-design/db-design-template.md +177 -0
  21. package/contracts/bootstrap/templates/basic-design/detail-api-template.md +278 -0
  22. package/contracts/bootstrap/templates/basic-design/detail-screen-template.md +281 -0
  23. package/contracts/bootstrap/templates/basic-design/list-api-template.md +130 -0
  24. package/contracts/bootstrap/templates/basic-design/list-screen-template.md +242 -0
  25. package/contracts/bootstrap/templates/detail-design/common/architecture-overview-template.md +302 -0
  26. package/contracts/bootstrap/templates/detail-design/common/deployment-infrastructure-template.md +461 -0
  27. package/contracts/bootstrap/templates/detail-design/common/error-handling-patterns-template.md +460 -0
  28. package/contracts/bootstrap/templates/detail-design/common/integration-patterns-template.md +410 -0
  29. package/contracts/bootstrap/templates/detail-design/common/performance-standards-template.md +406 -0
  30. package/contracts/bootstrap/templates/detail-design/common/security-patterns-template.md +395 -0
  31. package/contracts/bootstrap/templates/detail-design/feature-detail-design-template.md +773 -0
  32. package/contracts/bootstrap/templates/detail-design/feature-list-template.md +39 -0
  33. package/contracts/bootstrap/templates/srs/1-introduction.md +58 -0
  34. package/contracts/bootstrap/templates/srs/2-overall-description.md +91 -0
  35. package/contracts/bootstrap/templates/srs/3-use-case-detail-template.md +142 -0
  36. package/contracts/bootstrap/templates/srs/3-use-cases.md +53 -0
  37. package/contracts/bootstrap/templates/srs/4-system-feature-detail-template.md +131 -0
  38. package/contracts/bootstrap/templates/srs/4-system-features-list-template.md +39 -0
  39. package/contracts/bootstrap/templates/srs/5-data-requirements.md +59 -0
  40. package/contracts/bootstrap/templates/srs/6-external-interfaces.md +56 -0
  41. package/contracts/bootstrap/templates/srs/7-quality-attributes.md +74 -0
  42. package/contracts/bootstrap/templates/srs/8-internationalization.md +36 -0
  43. package/contracts/bootstrap/templates/srs/9-other-requirements.md +46 -0
  44. package/contracts/examples/full-docops.config.json +54 -0
  45. package/contracts/examples/migrate-lifecycle.json +18 -0
  46. package/contracts/examples/minimal-comment-thread/comment-root.json +10 -0
  47. package/contracts/examples/minimal-comment-thread/meta_data.json +22 -0
  48. package/contracts/examples/minimal-docops.config.json +33 -0
  49. package/contracts/examples/minimal-lifecycle.json +17 -0
  50. package/contracts/examples/minimal-prototype.config.json +18 -0
  51. package/contracts/examples/minimal-screen-map.json +25 -0
  52. package/contracts/examples/registry/minimal-document.entity.json +15 -0
  53. package/contracts/examples/registry/minimal-manifest.json +7 -0
  54. package/contracts/examples/registry/minimal-screen.entity.json +11 -0
  55. package/contracts/examples/review/minimal-pending.json +14 -0
  56. package/contracts/examples/review/minimal-registry.json +31 -0
  57. package/contracts/examples/review/minimal-review.config.json +7 -0
  58. package/contracts/schemas/comments/comment_body.schema.json +19 -0
  59. package/contracts/schemas/comments/meta_data.schema.json +59 -0
  60. package/contracts/schemas/docops.config.schema.json +97 -0
  61. package/contracts/schemas/lifecycle.schema.json +43 -0
  62. package/contracts/schemas/prototype/config.schema.json +56 -0
  63. package/contracts/schemas/prototype/screen-map.schema.json +51 -0
  64. package/contracts/schemas/registry/document.entity.schema.json +38 -0
  65. package/contracts/schemas/registry/manifest.schema.json +18 -0
  66. package/contracts/schemas/registry/screen.entity.schema.json +28 -0
  67. package/contracts/schemas/review/registry.schema.json +72 -0
  68. package/contracts/schemas/review/review.config.schema.json +42 -0
  69. package/dist/cli.js +26 -1
  70. package/dist/cli.js.map +1 -1
  71. package/dist/core/docops/bootstrap.d.ts +4 -1
  72. package/dist/core/docops/bootstrap.d.ts.map +1 -1
  73. package/dist/core/docops/bootstrap.js +16 -9
  74. package/dist/core/docops/bootstrap.js.map +1 -1
  75. package/dist/core/docops/guide.d.ts +78 -0
  76. package/dist/core/docops/guide.d.ts.map +1 -0
  77. package/dist/core/docops/guide.js +554 -0
  78. package/dist/core/docops/guide.js.map +1 -0
  79. package/dist/core/docops/migrate.d.ts.map +1 -1
  80. package/dist/core/docops/migrate.js +40 -6
  81. package/dist/core/docops/migrate.js.map +1 -1
  82. package/dist/core/graph/doc-extract.d.ts.map +1 -1
  83. package/dist/core/graph/doc-extract.js +12 -0
  84. package/dist/core/graph/doc-extract.js.map +1 -1
  85. package/dist/core/graph/impact.d.ts.map +1 -1
  86. package/dist/core/graph/impact.js +2 -1
  87. package/dist/core/graph/impact.js.map +1 -1
  88. package/dist/core/graph/link-testcases.d.ts +14 -0
  89. package/dist/core/graph/link-testcases.d.ts.map +1 -0
  90. package/dist/core/graph/link-testcases.js +46 -0
  91. package/dist/core/graph/link-testcases.js.map +1 -0
  92. package/dist/core/operations/docops.d.ts +8 -0
  93. package/dist/core/operations/docops.d.ts.map +1 -1
  94. package/dist/core/operations/docops.js +40 -0
  95. package/dist/core/operations/docops.js.map +1 -1
  96. package/dist/core/operations/index.d.ts.map +1 -1
  97. package/dist/core/operations/index.js +25 -0
  98. package/dist/core/operations/index.js.map +1 -1
  99. package/dist/core/operations/task-gates.d.ts +8 -1
  100. package/dist/core/operations/task-gates.d.ts.map +1 -1
  101. package/dist/core/operations/task-gates.js +14 -0
  102. package/dist/core/operations/task-gates.js.map +1 -1
  103. package/dist/core/operations/task.d.ts +2 -0
  104. package/dist/core/operations/task.d.ts.map +1 -1
  105. package/dist/core/operations/task.js +40 -2
  106. package/dist/core/operations/task.js.map +1 -1
  107. package/dist/core/sync/audit.d.ts.map +1 -1
  108. package/dist/core/sync/audit.js +14 -6
  109. package/dist/core/sync/audit.js.map +1 -1
  110. package/dist/core/sync/baseline.d.ts.map +1 -1
  111. package/dist/core/sync/baseline.js +5 -2
  112. package/dist/core/sync/baseline.js.map +1 -1
  113. package/dist/core/sync/constants.d.ts.map +1 -1
  114. package/dist/core/sync/constants.js +2 -1
  115. package/dist/core/sync/constants.js.map +1 -1
  116. package/dist/core/sync/gaps.d.ts.map +1 -1
  117. package/dist/core/sync/gaps.js +23 -2
  118. package/dist/core/sync/gaps.js.map +1 -1
  119. package/dist/core/sync/git-diff.d.ts +1 -0
  120. package/dist/core/sync/git-diff.d.ts.map +1 -1
  121. package/dist/core/sync/git-diff.js +14 -0
  122. package/dist/core/sync/git-diff.js.map +1 -1
  123. package/dist/core/sync/repo-context.d.ts +23 -0
  124. package/dist/core/sync/repo-context.d.ts.map +1 -0
  125. package/dist/core/sync/repo-context.js +28 -0
  126. package/dist/core/sync/repo-context.js.map +1 -0
  127. package/dist/core/sync/snapshot.d.ts.map +1 -1
  128. package/dist/core/sync/snapshot.js +24 -18
  129. package/dist/core/sync/snapshot.js.map +1 -1
  130. package/dist/core/sync/types.d.ts +7 -2
  131. package/dist/core/sync/types.d.ts.map +1 -1
  132. package/dist/core/upgrade/checklist.json +2 -2
  133. package/dist/interfaces/mcp/schemas.d.ts +2 -0
  134. package/dist/interfaces/mcp/schemas.d.ts.map +1 -1
  135. package/dist/interfaces/mcp/schemas.js +4 -0
  136. package/dist/interfaces/mcp/schemas.js.map +1 -1
  137. package/dist/interfaces/mcp/server.js +0 -0
  138. package/dist/types.d.ts +2 -2
  139. package/dist/types.d.ts.map +1 -1
  140. package/package.json +2 -1
  141. package/scaffold/claude/.claude/skills/_skill-router.md +11 -8
  142. package/scaffold/claude/.claude/skills/ai-spector/references/cli-failures.md +3 -3
  143. package/scaffold/claude/.claude/skills/ai-spector/references/docops-migrate.md +112 -0
  144. package/scaffold/claude/.claude/skills/ai-spector/references/help.md +1 -1
  145. package/scaffold/claude/.claude/skills/ai-spector/references/runbook.md +49 -26
  146. package/scaffold/claude/.claude/skills/ai-spector/skill.md +3 -2
  147. package/scaffold/cursor/skills/_skill-router.md +11 -8
  148. package/scaffold/cursor/skills/ai-spector/SKILL.md +3 -2
  149. package/scaffold/cursor/skills/ai-spector/references/cli-failures.md +3 -3
  150. package/scaffold/cursor/skills/ai-spector/references/docops-migrate.md +112 -0
  151. package/scaffold/cursor/skills/ai-spector/references/help.md +1 -1
  152. package/scaffold/cursor/skills/ai-spector/references/runbook.md +49 -26
  153. package/schemas/rules.impact.json +3 -2
  154. package/schemas/schema.graph.json +4 -2
  155. package/dist/commands/analyze.d.ts +0 -12
  156. package/dist/commands/analyze.d.ts.map +0 -1
  157. package/dist/commands/analyze.js +0 -53
  158. package/dist/commands/analyze.js.map +0 -1
  159. package/dist/commands/bootstrap.d.ts +0 -4
  160. package/dist/commands/bootstrap.d.ts.map +0 -1
  161. package/dist/commands/bootstrap.js +0 -58
  162. package/dist/commands/bootstrap.js.map +0 -1
  163. package/dist/commands/comments.d.ts +0 -44
  164. package/dist/commands/comments.d.ts.map +0 -1
  165. package/dist/commands/comments.js +0 -79
  166. package/dist/commands/comments.js.map +0 -1
  167. package/dist/commands/graph-impact.d.ts +0 -28
  168. package/dist/commands/graph-impact.d.ts.map +0 -1
  169. package/dist/commands/graph-impact.js +0 -174
  170. package/dist/commands/graph-impact.js.map +0 -1
  171. package/dist/commands/graph-merge.d.ts +0 -32
  172. package/dist/commands/graph-merge.d.ts.map +0 -1
  173. package/dist/commands/graph-merge.js +0 -101
  174. package/dist/commands/graph-merge.js.map +0 -1
  175. package/dist/commands/graph-query.d.ts +0 -10
  176. package/dist/commands/graph-query.d.ts.map +0 -1
  177. package/dist/commands/graph-query.js +0 -24
  178. package/dist/commands/graph-query.js.map +0 -1
  179. package/dist/commands/graph-report.d.ts +0 -9
  180. package/dist/commands/graph-report.d.ts.map +0 -1
  181. package/dist/commands/graph-report.js +0 -10
  182. package/dist/commands/graph-report.js.map +0 -1
  183. package/dist/commands/graph-visualize.d.ts +0 -17
  184. package/dist/commands/graph-visualize.d.ts.map +0 -1
  185. package/dist/commands/graph-visualize.js +0 -44
  186. package/dist/commands/graph-visualize.js.map +0 -1
  187. package/dist/commands/hooks-constants.d.ts +0 -2
  188. package/dist/commands/hooks-constants.d.ts.map +0 -1
  189. package/dist/commands/hooks-constants.js +0 -2
  190. package/dist/commands/hooks-constants.js.map +0 -1
  191. package/dist/commands/hooks.d.ts +0 -28
  192. package/dist/commands/hooks.d.ts.map +0 -1
  193. package/dist/commands/hooks.js +0 -187
  194. package/dist/commands/hooks.js.map +0 -1
  195. package/dist/commands/index.d.ts +0 -22
  196. package/dist/commands/index.d.ts.map +0 -1
  197. package/dist/commands/index.js +0 -472
  198. package/dist/commands/index.js.map +0 -1
  199. package/dist/commands/init.d.ts +0 -19
  200. package/dist/commands/init.d.ts.map +0 -1
  201. package/dist/commands/init.js +0 -210
  202. package/dist/commands/init.js.map +0 -1
  203. package/dist/commands/lang-queue.d.ts +0 -28
  204. package/dist/commands/lang-queue.d.ts.map +0 -1
  205. package/dist/commands/lang-queue.js +0 -49
  206. package/dist/commands/lang-queue.js.map +0 -1
  207. package/dist/commands/lang.d.ts +0 -16
  208. package/dist/commands/lang.d.ts.map +0 -1
  209. package/dist/commands/lang.js +0 -69
  210. package/dist/commands/lang.js.map +0 -1
  211. package/dist/commands/prototype.d.ts +0 -66
  212. package/dist/commands/prototype.d.ts.map +0 -1
  213. package/dist/commands/prototype.js +0 -370
  214. package/dist/commands/prototype.js.map +0 -1
  215. package/dist/commands/setup.d.ts +0 -26
  216. package/dist/commands/setup.d.ts.map +0 -1
  217. package/dist/commands/setup.js +0 -259
  218. package/dist/commands/setup.js.map +0 -1
  219. package/dist/commands/sync-cursor.d.ts +0 -10
  220. package/dist/commands/sync-cursor.d.ts.map +0 -1
  221. package/dist/commands/sync-cursor.js +0 -18
  222. package/dist/commands/sync-cursor.js.map +0 -1
  223. package/dist/commands/template-regen.d.ts +0 -24
  224. package/dist/commands/template-regen.d.ts.map +0 -1
  225. package/dist/commands/template-regen.js +0 -240
  226. package/dist/commands/template-regen.js.map +0 -1
  227. package/dist/commands/template.d.ts +0 -3
  228. package/dist/commands/template.d.ts.map +0 -1
  229. package/dist/commands/template.js +0 -1285
  230. package/dist/commands/template.js.map +0 -1
  231. package/dist/commands/validate.d.ts +0 -10
  232. package/dist/commands/validate.d.ts.map +0 -1
  233. package/dist/commands/validate.js +0 -89
  234. package/dist/commands/validate.js.map +0 -1
  235. package/dist/comments/anchor.d.ts +0 -16
  236. package/dist/comments/anchor.d.ts.map +0 -1
  237. package/dist/comments/anchor.js +0 -59
  238. package/dist/comments/anchor.js.map +0 -1
  239. package/dist/comments/inbox.d.ts +0 -82
  240. package/dist/comments/inbox.d.ts.map +0 -1
  241. package/dist/comments/inbox.js +0 -179
  242. package/dist/comments/inbox.js.map +0 -1
  243. package/dist/comments/paths.d.ts +0 -12
  244. package/dist/comments/paths.d.ts.map +0 -1
  245. package/dist/comments/paths.js +0 -54
  246. package/dist/comments/paths.js.map +0 -1
  247. package/dist/comments/plan.d.ts +0 -20
  248. package/dist/comments/plan.d.ts.map +0 -1
  249. package/dist/comments/plan.js +0 -62
  250. package/dist/comments/plan.js.map +0 -1
  251. package/dist/comments/storage.d.ts +0 -30
  252. package/dist/comments/storage.d.ts.map +0 -1
  253. package/dist/comments/storage.js +0 -272
  254. package/dist/comments/storage.js.map +0 -1
  255. package/dist/comments/types.d.ts +0 -54
  256. package/dist/comments/types.d.ts.map +0 -1
  257. package/dist/comments/types.js +0 -2
  258. package/dist/comments/types.js.map +0 -1
  259. package/dist/config/load.d.ts +0 -47
  260. package/dist/config/load.d.ts.map +0 -1
  261. package/dist/config/load.js +0 -148
  262. package/dist/config/load.js.map +0 -1
  263. package/dist/config/types.d.ts +0 -56
  264. package/dist/config/types.d.ts.map +0 -1
  265. package/dist/config/types.js +0 -2
  266. package/dist/config/types.js.map +0 -1
  267. package/dist/core/adopt/apply.d.ts +0 -15
  268. package/dist/core/adopt/apply.d.ts.map +0 -1
  269. package/dist/core/adopt/apply.js +0 -127
  270. package/dist/core/adopt/apply.js.map +0 -1
  271. package/dist/core/adopt/bootstrap.d.ts +0 -16
  272. package/dist/core/adopt/bootstrap.d.ts.map +0 -1
  273. package/dist/core/adopt/bootstrap.js +0 -195
  274. package/dist/core/adopt/bootstrap.js.map +0 -1
  275. package/dist/core/adopt/classify.d.ts +0 -22
  276. package/dist/core/adopt/classify.d.ts.map +0 -1
  277. package/dist/core/adopt/classify.js +0 -295
  278. package/dist/core/adopt/classify.js.map +0 -1
  279. package/dist/core/adopt/paths.d.ts +0 -10
  280. package/dist/core/adopt/paths.d.ts.map +0 -1
  281. package/dist/core/adopt/paths.js +0 -16
  282. package/dist/core/adopt/paths.js.map +0 -1
  283. package/dist/core/adopt/plan.d.ts +0 -10
  284. package/dist/core/adopt/plan.d.ts.map +0 -1
  285. package/dist/core/adopt/plan.js +0 -269
  286. package/dist/core/adopt/plan.js.map +0 -1
  287. package/dist/core/adopt/scan.d.ts +0 -5
  288. package/dist/core/adopt/scan.d.ts.map +0 -1
  289. package/dist/core/adopt/scan.js +0 -169
  290. package/dist/core/adopt/scan.js.map +0 -1
  291. package/dist/core/adopt/setup.d.ts +0 -7
  292. package/dist/core/adopt/setup.d.ts.map +0 -1
  293. package/dist/core/adopt/setup.js +0 -64
  294. package/dist/core/adopt/setup.js.map +0 -1
  295. package/dist/core/adopt/tasks.d.ts +0 -9
  296. package/dist/core/adopt/tasks.d.ts.map +0 -1
  297. package/dist/core/adopt/tasks.js +0 -153
  298. package/dist/core/adopt/tasks.js.map +0 -1
  299. package/dist/core/adopt/types.d.ts +0 -75
  300. package/dist/core/adopt/types.d.ts.map +0 -1
  301. package/dist/core/adopt/types.js +0 -2
  302. package/dist/core/adopt/types.js.map +0 -1
  303. package/dist/core/adopt/validate.d.ts +0 -20
  304. package/dist/core/adopt/validate.d.ts.map +0 -1
  305. package/dist/core/adopt/validate.js +0 -129
  306. package/dist/core/adopt/validate.js.map +0 -1
  307. package/dist/core/docops/dual-write.d.ts +0 -12
  308. package/dist/core/docops/dual-write.d.ts.map +0 -1
  309. package/dist/core/docops/dual-write.js +0 -44
  310. package/dist/core/docops/dual-write.js.map +0 -1
  311. package/dist/core/engine/local-adapter.d.ts +0 -3
  312. package/dist/core/engine/local-adapter.d.ts.map +0 -1
  313. package/dist/core/engine/local-adapter.js +0 -18
  314. package/dist/core/engine/local-adapter.js.map +0 -1
  315. package/dist/core/graph/rules/default-impact.json +0 -24
  316. package/dist/core/operations/adopt-gates.d.ts +0 -19
  317. package/dist/core/operations/adopt-gates.d.ts.map +0 -1
  318. package/dist/core/operations/adopt-gates.js +0 -71
  319. package/dist/core/operations/adopt-gates.js.map +0 -1
  320. package/dist/core/operations/adopt-plan.d.ts +0 -15
  321. package/dist/core/operations/adopt-plan.d.ts.map +0 -1
  322. package/dist/core/operations/adopt-plan.js +0 -24
  323. package/dist/core/operations/adopt-plan.js.map +0 -1
  324. package/dist/core/operations/adopt.d.ts +0 -11
  325. package/dist/core/operations/adopt.d.ts.map +0 -1
  326. package/dist/core/operations/adopt.js +0 -150
  327. package/dist/core/operations/adopt.js.map +0 -1
  328. package/dist/core/operations/analyze.d.ts +0 -12
  329. package/dist/core/operations/analyze.d.ts.map +0 -1
  330. package/dist/core/operations/analyze.js +0 -53
  331. package/dist/core/operations/analyze.js.map +0 -1
  332. package/dist/core/prototype/spa-route-fallbacks.d.ts +0 -21
  333. package/dist/core/prototype/spa-route-fallbacks.d.ts.map +0 -1
  334. package/dist/core/prototype/spa-route-fallbacks.js +0 -93
  335. package/dist/core/prototype/spa-route-fallbacks.js.map +0 -1
  336. package/dist/graph/InMemoryGraph.d.ts +0 -2
  337. package/dist/graph/InMemoryGraph.d.ts.map +0 -1
  338. package/dist/graph/InMemoryGraph.js +0 -2
  339. package/dist/graph/InMemoryGraph.js.map +0 -1
  340. package/dist/graph/bundles.d.ts +0 -32
  341. package/dist/graph/bundles.d.ts.map +0 -1
  342. package/dist/graph/bundles.js +0 -109
  343. package/dist/graph/bundles.js.map +0 -1
  344. package/dist/graph/defaults.d.ts +0 -23
  345. package/dist/graph/defaults.d.ts.map +0 -1
  346. package/dist/graph/defaults.js +0 -25
  347. package/dist/graph/defaults.js.map +0 -1
  348. package/dist/graph/detail-sections.d.ts +0 -28
  349. package/dist/graph/detail-sections.d.ts.map +0 -1
  350. package/dist/graph/detail-sections.js +0 -220
  351. package/dist/graph/detail-sections.js.map +0 -1
  352. package/dist/graph/doc-extract.d.ts +0 -84
  353. package/dist/graph/doc-extract.d.ts.map +0 -1
  354. package/dist/graph/doc-extract.js +0 -821
  355. package/dist/graph/doc-extract.js.map +0 -1
  356. package/dist/graph/impact.d.ts +0 -5
  357. package/dist/graph/impact.d.ts.map +0 -1
  358. package/dist/graph/impact.js +0 -7
  359. package/dist/graph/impact.js.map +0 -1
  360. package/dist/graph/knowledge.d.ts +0 -11
  361. package/dist/graph/knowledge.d.ts.map +0 -1
  362. package/dist/graph/knowledge.js +0 -62
  363. package/dist/graph/knowledge.js.map +0 -1
  364. package/dist/graph/layer-audit.d.ts +0 -5
  365. package/dist/graph/layer-audit.d.ts.map +0 -1
  366. package/dist/graph/layer-audit.js +0 -29
  367. package/dist/graph/layer-audit.js.map +0 -1
  368. package/dist/graph/load.d.ts +0 -4
  369. package/dist/graph/load.d.ts.map +0 -1
  370. package/dist/graph/load.js +0 -12
  371. package/dist/graph/load.js.map +0 -1
  372. package/dist/graph/loadGraph.d.ts +0 -3
  373. package/dist/graph/loadGraph.d.ts.map +0 -1
  374. package/dist/graph/loadGraph.js +0 -7
  375. package/dist/graph/loadGraph.js.map +0 -1
  376. package/dist/graph/merge.d.ts +0 -27
  377. package/dist/graph/merge.d.ts.map +0 -1
  378. package/dist/graph/merge.js +0 -239
  379. package/dist/graph/merge.js.map +0 -1
  380. package/dist/graph/path-target-edges.d.ts +0 -2
  381. package/dist/graph/path-target-edges.d.ts.map +0 -1
  382. package/dist/graph/path-target-edges.js +0 -2
  383. package/dist/graph/path-target-edges.js.map +0 -1
  384. package/dist/graph/provenance.d.ts +0 -19
  385. package/dist/graph/provenance.d.ts.map +0 -1
  386. package/dist/graph/provenance.js +0 -199
  387. package/dist/graph/provenance.js.map +0 -1
  388. package/dist/graph/query.d.ts +0 -3
  389. package/dist/graph/query.d.ts.map +0 -1
  390. package/dist/graph/query.js +0 -2
  391. package/dist/graph/query.js.map +0 -1
  392. package/dist/graph/resolve.d.ts +0 -15
  393. package/dist/graph/resolve.d.ts.map +0 -1
  394. package/dist/graph/resolve.js +0 -117
  395. package/dist/graph/resolve.js.map +0 -1
  396. package/dist/graph/source-refs.d.ts +0 -2
  397. package/dist/graph/source-refs.d.ts.map +0 -1
  398. package/dist/graph/source-refs.js +0 -30
  399. package/dist/graph/source-refs.js.map +0 -1
  400. package/dist/graph/translation.d.ts +0 -14
  401. package/dist/graph/translation.d.ts.map +0 -1
  402. package/dist/graph/translation.js +0 -65
  403. package/dist/graph/translation.js.map +0 -1
  404. package/dist/index/doc-semantics.d.ts +0 -14
  405. package/dist/index/doc-semantics.d.ts.map +0 -1
  406. package/dist/index/doc-semantics.js +0 -101
  407. package/dist/index/doc-semantics.js.map +0 -1
  408. package/dist/index/docs-build.d.ts +0 -40
  409. package/dist/index/docs-build.d.ts.map +0 -1
  410. package/dist/index/docs-build.js +0 -136
  411. package/dist/index/docs-build.js.map +0 -1
  412. package/dist/index/docs-config.d.ts +0 -19
  413. package/dist/index/docs-config.d.ts.map +0 -1
  414. package/dist/index/docs-config.js +0 -5
  415. package/dist/index/docs-config.js.map +0 -1
  416. package/dist/interfaces/cli/format/adopt.d.ts +0 -23
  417. package/dist/interfaces/cli/format/adopt.d.ts.map +0 -1
  418. package/dist/interfaces/cli/format/adopt.js +0 -89
  419. package/dist/interfaces/cli/format/adopt.js.map +0 -1
  420. package/dist/interfaces/mcp/tools/adopt.d.ts +0 -22
  421. package/dist/interfaces/mcp/tools/adopt.d.ts.map +0 -1
  422. package/dist/interfaces/mcp/tools/adopt.js +0 -55
  423. package/dist/interfaces/mcp/tools/adopt.js.map +0 -1
  424. package/dist/lang/diff.d.ts +0 -12
  425. package/dist/lang/diff.d.ts.map +0 -1
  426. package/dist/lang/diff.js +0 -71
  427. package/dist/lang/diff.js.map +0 -1
  428. package/dist/lang/paths.d.ts +0 -16
  429. package/dist/lang/paths.d.ts.map +0 -1
  430. package/dist/lang/paths.js +0 -32
  431. package/dist/lang/paths.js.map +0 -1
  432. package/dist/lang/queue-layout.d.ts +0 -11
  433. package/dist/lang/queue-layout.d.ts.map +0 -1
  434. package/dist/lang/queue-layout.js +0 -56
  435. package/dist/lang/queue-layout.js.map +0 -1
  436. package/dist/lang/queue-store.d.ts +0 -23
  437. package/dist/lang/queue-store.d.ts.map +0 -1
  438. package/dist/lang/queue-store.js +0 -285
  439. package/dist/lang/queue-store.js.map +0 -1
  440. package/dist/lang/queue-types.d.ts +0 -122
  441. package/dist/lang/queue-types.d.ts.map +0 -1
  442. package/dist/lang/queue-types.js +0 -2
  443. package/dist/lang/queue-types.js.map +0 -1
  444. package/dist/lang/queue.d.ts +0 -17
  445. package/dist/lang/queue.d.ts.map +0 -1
  446. package/dist/lang/queue.js +0 -362
  447. package/dist/lang/queue.js.map +0 -1
  448. package/dist/lang/sections.d.ts +0 -26
  449. package/dist/lang/sections.d.ts.map +0 -1
  450. package/dist/lang/sections.js +0 -85
  451. package/dist/lang/sections.js.map +0 -1
  452. package/dist/markdown/parse.d.ts +0 -25
  453. package/dist/markdown/parse.d.ts.map +0 -1
  454. package/dist/markdown/parse.js +0 -100
  455. package/dist/markdown/parse.js.map +0 -1
  456. package/dist/prototype/build-base-path.d.ts +0 -11
  457. package/dist/prototype/build-base-path.d.ts.map +0 -1
  458. package/dist/prototype/build-base-path.js +0 -84
  459. package/dist/prototype/build-base-path.js.map +0 -1
  460. package/dist/prototype/build-manifest.d.ts +0 -21
  461. package/dist/prototype/build-manifest.d.ts.map +0 -1
  462. package/dist/prototype/build-manifest.js +0 -171
  463. package/dist/prototype/build-manifest.js.map +0 -1
  464. package/dist/prototype/config.d.ts +0 -21
  465. package/dist/prototype/config.d.ts.map +0 -1
  466. package/dist/prototype/config.js +0 -131
  467. package/dist/prototype/config.js.map +0 -1
  468. package/dist/prototype/deploy-path.d.ts +0 -9
  469. package/dist/prototype/deploy-path.d.ts.map +0 -1
  470. package/dist/prototype/deploy-path.js +0 -21
  471. package/dist/prototype/deploy-path.js.map +0 -1
  472. package/dist/prototype/htpasswd.d.ts +0 -8
  473. package/dist/prototype/htpasswd.d.ts.map +0 -1
  474. package/dist/prototype/htpasswd.js +0 -36
  475. package/dist/prototype/htpasswd.js.map +0 -1
  476. package/dist/prototype/nginx-config.d.ts +0 -16
  477. package/dist/prototype/nginx-config.d.ts.map +0 -1
  478. package/dist/prototype/nginx-config.js +0 -39
  479. package/dist/prototype/nginx-config.js.map +0 -1
  480. package/dist/prototype/parse-screen-index.d.ts +0 -10
  481. package/dist/prototype/parse-screen-index.d.ts.map +0 -1
  482. package/dist/prototype/parse-screen-index.js +0 -109
  483. package/dist/prototype/parse-screen-index.js.map +0 -1
  484. package/dist/prototype/preview-uri.d.ts +0 -8
  485. package/dist/prototype/preview-uri.d.ts.map +0 -1
  486. package/dist/prototype/preview-uri.js +0 -35
  487. package/dist/prototype/preview-uri.js.map +0 -1
  488. package/dist/prototype/relative-assets.d.ts +0 -9
  489. package/dist/prototype/relative-assets.d.ts.map +0 -1
  490. package/dist/prototype/relative-assets.js +0 -23
  491. package/dist/prototype/relative-assets.js.map +0 -1
  492. package/dist/prototype/resolve-default-screen.d.ts +0 -17
  493. package/dist/prototype/resolve-default-screen.d.ts.map +0 -1
  494. package/dist/prototype/resolve-default-screen.js +0 -31
  495. package/dist/prototype/resolve-default-screen.js.map +0 -1
  496. package/dist/prototype/rewrite-build-assets.d.ts +0 -8
  497. package/dist/prototype/rewrite-build-assets.d.ts.map +0 -1
  498. package/dist/prototype/rewrite-build-assets.js +0 -40
  499. package/dist/prototype/rewrite-build-assets.js.map +0 -1
  500. package/dist/prototype/route-defaults.d.ts +0 -43
  501. package/dist/prototype/route-defaults.d.ts.map +0 -1
  502. package/dist/prototype/route-defaults.js +0 -50
  503. package/dist/prototype/route-defaults.js.map +0 -1
  504. package/dist/prototype/screen-doc-paths.d.ts +0 -15
  505. package/dist/prototype/screen-doc-paths.d.ts.map +0 -1
  506. package/dist/prototype/screen-doc-paths.js +0 -38
  507. package/dist/prototype/screen-doc-paths.js.map +0 -1
  508. package/dist/prototype/spa-route-fallbacks.d.ts +0 -21
  509. package/dist/prototype/spa-route-fallbacks.d.ts.map +0 -1
  510. package/dist/prototype/spa-route-fallbacks.js +0 -93
  511. package/dist/prototype/spa-route-fallbacks.js.map +0 -1
  512. package/dist/prototype/theme-preview.d.ts +0 -17
  513. package/dist/prototype/theme-preview.d.ts.map +0 -1
  514. package/dist/prototype/theme-preview.js +0 -73
  515. package/dist/prototype/theme-preview.js.map +0 -1
  516. package/dist/prototype/themes.d.ts +0 -6
  517. package/dist/prototype/themes.d.ts.map +0 -1
  518. package/dist/prototype/themes.js +0 -55
  519. package/dist/prototype/themes.js.map +0 -1
  520. package/dist/prototype/types.d.ts +0 -160
  521. package/dist/prototype/types.d.ts.map +0 -1
  522. package/dist/prototype/types.js +0 -2
  523. package/dist/prototype/types.js.map +0 -1
  524. package/dist/prototype/validate.d.ts +0 -16
  525. package/dist/prototype/validate.d.ts.map +0 -1
  526. package/dist/prototype/validate.js +0 -149
  527. package/dist/prototype/validate.js.map +0 -1
  528. package/dist/registry/build.d.ts +0 -5
  529. package/dist/registry/build.d.ts.map +0 -1
  530. package/dist/registry/build.js +0 -71
  531. package/dist/registry/build.js.map +0 -1
  532. package/dist/registry/slug.d.ts +0 -4
  533. package/dist/registry/slug.d.ts.map +0 -1
  534. package/dist/registry/slug.js +0 -16
  535. package/dist/registry/slug.js.map +0 -1
  536. package/dist/registry/structure-patch.d.ts +0 -6
  537. package/dist/registry/structure-patch.d.ts.map +0 -1
  538. package/dist/registry/structure-patch.js +0 -49
  539. package/dist/registry/structure-patch.js.map +0 -1
  540. package/dist/template/scan.d.ts +0 -21
  541. package/dist/template/scan.d.ts.map +0 -1
  542. package/dist/template/scan.js +0 -84
  543. package/dist/template/scan.js.map +0 -1
  544. package/dist/template/validate.d.ts +0 -10
  545. package/dist/template/validate.d.ts.map +0 -1
  546. package/dist/template/validate.js +0 -64
  547. package/dist/template/validate.js.map +0 -1
  548. package/dist/util/fs.d.ts +0 -6
  549. package/dist/util/fs.d.ts.map +0 -1
  550. package/dist/util/fs.js +0 -24
  551. package/dist/util/fs.js.map +0 -1
  552. package/dist/util/git-diff.d.ts +0 -16
  553. package/dist/util/git-diff.d.ts.map +0 -1
  554. package/dist/util/git-diff.js +0 -93
  555. package/dist/util/git-diff.js.map +0 -1
  556. package/dist/util/gitignore.d.ts +0 -9
  557. package/dist/util/gitignore.d.ts.map +0 -1
  558. package/dist/util/gitignore.js +0 -44
  559. package/dist/util/gitignore.js.map +0 -1
  560. package/dist/util/open-browser.d.ts +0 -3
  561. package/dist/util/open-browser.d.ts.map +0 -1
  562. package/dist/util/open-browser.js +0 -24
  563. package/dist/util/open-browser.js.map +0 -1
  564. package/dist/util/paths.d.ts +0 -16
  565. package/dist/util/paths.d.ts.map +0 -1
  566. package/dist/util/paths.js +0 -19
  567. package/dist/util/paths.js.map +0 -1
  568. package/dist/util/prompt.d.ts +0 -14
  569. package/dist/util/prompt.d.ts.map +0 -1
  570. package/dist/util/prompt.js +0 -65
  571. package/dist/util/prompt.js.map +0 -1
  572. package/dist/visualize/html.d.ts +0 -13
  573. package/dist/visualize/html.d.ts.map +0 -1
  574. package/dist/visualize/html.js +0 -766
  575. package/dist/visualize/html.js.map +0 -1
  576. package/dist/visualize/stats.d.ts +0 -8
  577. package/dist/visualize/stats.d.ts.map +0 -1
  578. package/dist/visualize/stats.js +0 -9
  579. package/dist/visualize/stats.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"build-base-path.d.ts","sourceRoot":"","sources":["../../src/prototype/build-base-path.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAkBrD,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,YAAY,EAAE,OAAO,CAAC;IACtB,8FAA8F;IAC9F,iBAAiB,EAAE,OAAO,CAAC;CAC5B;AAmCD,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CASpE;AAED,wBAAsB,qBAAqB,CACzC,WAAW,EAAE,MAAM,EACnB,SAAS,CAAC,EAAE,kBAAkB,GAC7B,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAmBnC;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,iBAAiB,GAAG,MAAM,CAKvE"}
@@ -1,84 +0,0 @@
1
- import { readdir, readFile } from "node:fs/promises";
2
- import { join } from "node:path";
3
- import { pathExists } from "../util/fs.js";
4
- const VITE_STACKS = new Set(["vue", "react", "svelte"]);
5
- const VITE_CONFIG_NAMES = [
6
- "vite.config.ts",
7
- "vite.config.js",
8
- "vite.config.mts",
9
- "vite.config.mjs",
10
- ];
11
- /** Vite `base` set to a root-absolute path (default when omitted). */
12
- const VITE_ABSOLUTE_BASE_RE = /\bbase\s*:\s*(['"])\/(?!\.)\1/;
13
- /** Vite `base` explicitly set to relative (./ or empty-relative). */
14
- const VITE_RELATIVE_BASE_RE = /\bbase\s*:\s*(['"])\.\/?\1/;
15
- async function findViteConfig(projectRoot) {
16
- const searchRoots = [projectRoot, join(projectRoot, "frontend"), join(projectRoot, "prototype")];
17
- for (const root of searchRoots) {
18
- if (!(await pathExists(root))) {
19
- continue;
20
- }
21
- for (const name of VITE_CONFIG_NAMES) {
22
- const candidate = join(root, name);
23
- if (await pathExists(candidate)) {
24
- return candidate;
25
- }
26
- }
27
- // One level of subdirs (e.g. frontend/app/vite.config.ts)
28
- try {
29
- const entries = await readdir(root, { withFileTypes: true });
30
- for (const entry of entries) {
31
- if (!entry.isDirectory()) {
32
- continue;
33
- }
34
- for (const name of VITE_CONFIG_NAMES) {
35
- const candidate = join(root, entry.name, name);
36
- if (await pathExists(candidate)) {
37
- return candidate;
38
- }
39
- }
40
- }
41
- }
42
- catch {
43
- // ignore unreadable dirs
44
- }
45
- }
46
- return null;
47
- }
48
- export function viteConfigNeedsRelativeBase(content) {
49
- if (VITE_RELATIVE_BASE_RE.test(content)) {
50
- return false;
51
- }
52
- // Explicit absolute base, or no base key (Vite default is `/`)
53
- if (VITE_ABSOLUTE_BASE_RE.test(content)) {
54
- return true;
55
- }
56
- return !/\bbase\s*:/.test(content);
57
- }
58
- export async function checkViteRelativeBase(projectRoot, techStack) {
59
- if (!techStack || !VITE_STACKS.has(techStack)) {
60
- return null;
61
- }
62
- const configPath = await findViteConfig(projectRoot);
63
- if (!configPath) {
64
- return {
65
- configPath: null,
66
- relativeBase: false,
67
- needsRelativeBase: true,
68
- };
69
- }
70
- const content = await readFile(configPath, "utf8");
71
- const needsRelativeBase = viteConfigNeedsRelativeBase(content);
72
- return {
73
- configPath,
74
- relativeBase: !needsRelativeBase,
75
- needsRelativeBase,
76
- };
77
- }
78
- export function formatViteBasePathHint(check) {
79
- if (check.configPath) {
80
- return `Set base: './' in ${check.configPath} before npm run build`;
81
- }
82
- return "Add vite.config.ts with base: './' before npm run build";
83
- }
84
- //# sourceMappingURL=build-base-path.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"build-base-path.js","sourceRoot":"","sources":["../../src/prototype/build-base-path.ts"],"names":[],"mappings":"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"}
@@ -1,21 +0,0 @@
1
- import type { PrototypeConfig, PrototypeManifest, PrototypeScreenMap } from "./types.js";
2
- export interface BuildPrototypeManifestOptions {
3
- projectRoot: string;
4
- config: PrototypeConfig;
5
- themeName: string;
6
- /** Override default entry screen (Screen Index id). */
7
- defaultScreenId?: string;
8
- }
9
- export interface BuildPrototypeManifestResult {
10
- manifest: PrototypeManifest;
11
- screenMap: PrototypeScreenMap;
12
- screenCount: number;
13
- htmlCount: number;
14
- warnings: string[];
15
- }
16
- export declare function buildPrototypeManifest(opts: BuildPrototypeManifestOptions): Promise<BuildPrototypeManifestResult>;
17
- export declare function writePrototypeManifestFiles(projectRoot: string, config: PrototypeConfig, result: BuildPrototypeManifestResult): Promise<{
18
- manifestPath: string;
19
- screenMapPath: string;
20
- }>;
21
- //# sourceMappingURL=build-manifest.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"build-manifest.d.ts","sourceRoot":"","sources":["../../src/prototype/build-manifest.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAEnB,MAAM,YAAY,CAAC;AAqBpB,MAAM,WAAW,6BAA6B;IAC5C,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,eAAe,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,uDAAuD;IACvD,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,SAAS,EAAE,kBAAkB,CAAC;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,wBAAsB,sBAAsB,CAC1C,IAAI,EAAE,6BAA6B,GAClC,OAAO,CAAC,4BAA4B,CAAC,CAoLvC;AAED,wBAAsB,2BAA2B,CAC/C,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,eAAe,EACvB,MAAM,EAAE,4BAA4B,GACnC,OAAO,CAAC;IAAE,YAAY,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,CAAC,CAM1D"}
@@ -1,171 +0,0 @@
1
- import { join } from "node:path";
2
- import { readFile } from "node:fs/promises";
3
- import { access } from "node:fs/promises";
4
- import { parseScreenIndexFromList } from "./parse-screen-index.js";
5
- import { assertDefaultScreenInPool, resolveDefaultScreenId, } from "./resolve-default-screen.js";
6
- import { applyRouteDefaults, loadRouteDefaults } from "./route-defaults.js";
7
- import { pathExists, readJson, writeJson } from "../util/fs.js";
8
- import { loadDocflowConfig } from "../config/load.js";
9
- import { buildScreenDocPaths } from "./screen-doc-paths.js";
10
- import { toDeployBasePath, toSpaScreenPrototypePath } from "./deploy-path.js";
11
- async function htmlExists(projectRoot, relativePath) {
12
- try {
13
- await access(join(projectRoot, relativePath));
14
- return true;
15
- }
16
- catch {
17
- return false;
18
- }
19
- }
20
- export async function buildPrototypeManifest(opts) {
21
- const listPath = join(opts.projectRoot, opts.config.listScreenDoc);
22
- if (!(await pathExists(listPath))) {
23
- throw new Error(`Missing ${opts.config.listScreenDoc}. Run /generate-basic-design (list + screen details) first.`);
24
- }
25
- const listMarkdown = await readFile(listPath, "utf8");
26
- const rows = parseScreenIndexFromList({
27
- projectRoot: opts.projectRoot,
28
- config: opts.config,
29
- listMarkdown,
30
- });
31
- if (rows.length === 0) {
32
- throw new Error(`No screens found in ${opts.config.listScreenDoc} (${opts.config.screenIndexSection}). Add rows to the Screen Index table.`);
33
- }
34
- const generatedAt = new Date().toISOString();
35
- let htmlCount = 0;
36
- const warnings = [];
37
- const manifestScreens = rows.map((r) => ({
38
- screenId: r.screenId,
39
- displayName: r.displayName,
40
- prototypeStem: r.prototypeStem,
41
- screenDoc: r.screenDoc,
42
- ...(r.purpose ? { purpose: r.purpose } : {}),
43
- ...(r.userRole ? { userRole: r.userRole } : {}),
44
- }));
45
- const buildMode = opts.config.buildMode ?? "static";
46
- const repoBuildDest = buildMode === "spa"
47
- ? opts.config.buildDest?.trim() || `${opts.config.prototypeDir}/dist`
48
- : undefined;
49
- const deployBuildDest = repoBuildDest
50
- ? toDeployBasePath(repoBuildDest, opts.config.prototypeDir)
51
- : undefined;
52
- const spaEntryPath = repoBuildDest ? `${repoBuildDest}/index.html` : undefined;
53
- // Load docflow languages for multi-lang screenDocs (best-effort; ignore if config missing).
54
- let docLanguages = [];
55
- try {
56
- const { config: docflow } = await loadDocflowConfig(opts.projectRoot);
57
- docLanguages = docflow.languages.map((l) => l.code);
58
- }
59
- catch {
60
- // No docflow config — single-lang fallback
61
- }
62
- const routeDefaults = await loadRouteDefaults(opts.projectRoot, opts.config.prototypeDir);
63
- const screenMapPath = join(opts.projectRoot, opts.config.prototypeDir, "screen-map.json");
64
- let previousDefault;
65
- let previousBypassAuth;
66
- const previousScreensById = new Map();
67
- if (await pathExists(screenMapPath)) {
68
- const prior = await readJson(screenMapPath);
69
- previousDefault = prior.defaultScreenId;
70
- previousBypassAuth = prior.prototypeBypassAuth;
71
- for (const s of prior.screens ?? []) {
72
- previousScreensById.set(s.screenId, s);
73
- }
74
- }
75
- // For SPA mode, htmlExists is shared across all screens — check once.
76
- const spaIndexExists = spaEntryPath
77
- ? await htmlExists(opts.projectRoot, spaEntryPath)
78
- : false;
79
- // SPA: count 1 if the build entrypoint exists (not N×screens), or 0.
80
- if (buildMode === "spa") {
81
- htmlCount = spaIndexExists ? 1 : 0;
82
- }
83
- const mapScreens = await Promise.all(rows.map(async (r) => {
84
- let exists;
85
- if (buildMode === "spa" && spaEntryPath) {
86
- exists = spaIndexExists;
87
- }
88
- else {
89
- exists = await htmlExists(opts.projectRoot, r.prototypePath);
90
- if (exists)
91
- htmlCount++;
92
- }
93
- const baseUri = buildMode === "spa" ? `/${r.slug}` : `/src/${r.prototypeStem}.html`;
94
- const prior = previousScreensById.get(r.screenId);
95
- const routeApplied = applyRouteDefaults({
96
- screenId: r.screenId,
97
- slug: r.slug,
98
- buildMode,
99
- baseUri,
100
- fromFile: routeDefaults?.screens[r.screenId],
101
- fromPriorEntry: prior,
102
- });
103
- const effectivePath = buildMode === "spa" && deployBuildDest
104
- ? toSpaScreenPrototypePath(deployBuildDest, routeApplied.previewUri ?? routeApplied.uri)
105
- : r.prototypePath;
106
- const docFilename = r.specFile ?? `${r.slug}.md`;
107
- const { screenDocPath, screenDocs } = buildScreenDocPaths({
108
- screenDetailDir: opts.config.screenDetailDir,
109
- docFilename,
110
- docLanguages,
111
- });
112
- if (!(await pathExists(join(opts.projectRoot, r.screenDoc)))) {
113
- warnings.push(`Screen design doc missing for "${r.displayName}" (${r.screenId}): ${r.screenDoc}. ` +
114
- `If the filename differs from the slug, add a "Spec file" column in ${opts.config.listScreenDoc}.`);
115
- }
116
- return {
117
- screenId: r.screenId,
118
- displayName: r.displayName,
119
- screenDoc: r.screenDoc,
120
- screenDocPath,
121
- ...(screenDocs ? { screenDocs } : {}),
122
- prototypeStem: r.prototypeStem,
123
- prototypePath: effectivePath,
124
- htmlExists: exists,
125
- ...routeApplied,
126
- };
127
- }));
128
- const manifest = {
129
- schemaVersion: 1,
130
- themeName: opts.themeName,
131
- generatedAt,
132
- screens: manifestScreens,
133
- };
134
- if (opts.defaultScreenId?.trim()) {
135
- assertDefaultScreenInPool(opts.defaultScreenId, mapScreens);
136
- }
137
- const defaultScreenId = resolveDefaultScreenId(mapScreens, {
138
- explicit: opts.defaultScreenId,
139
- previous: previousDefault,
140
- configDefault: opts.config.defaultScreenId,
141
- });
142
- const prototypeBypassAuth = routeDefaults?.prototypeBypassAuth ??
143
- previousBypassAuth ??
144
- (buildMode === "spa" ? opts.config.prototypeBypassAuth ?? true : undefined);
145
- const screenMap = {
146
- schemaVersion: 1,
147
- themeName: opts.themeName,
148
- buildMode,
149
- generatedAt,
150
- ...(defaultScreenId ? { defaultScreenId } : {}),
151
- ...(prototypeBypassAuth !== undefined ? { prototypeBypassAuth } : {}),
152
- ...(deployBuildDest ? { buildDest: deployBuildDest } : {}),
153
- ...(buildMode === "spa" && opts.config.buildSrc ? { buildSrc: opts.config.buildSrc } : {}),
154
- screens: mapScreens,
155
- };
156
- return {
157
- manifest,
158
- screenMap,
159
- screenCount: rows.length,
160
- htmlCount,
161
- warnings,
162
- };
163
- }
164
- export async function writePrototypeManifestFiles(projectRoot, config, result) {
165
- const manifestPath = join(projectRoot, config.prototypeDir, "manifest.json");
166
- const screenMapPath = join(projectRoot, config.prototypeDir, "screen-map.json");
167
- await writeJson(manifestPath, result.manifest);
168
- await writeJson(screenMapPath, result.screenMap);
169
- return { manifestPath, screenMapPath };
170
- }
171
- //# sourceMappingURL=build-manifest.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"build-manifest.js","sourceRoot":"","sources":["../../src/prototype/build-manifest.ts"],"names":[],"mappings":"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"}
@@ -1,21 +0,0 @@
1
- import type { PrototypeBasicAuth, PrototypeConfig, PrototypeTechStack } from "./types.js";
2
- export declare function isPrototypeBasicAuthConfigured(config: PrototypeConfig): config is PrototypeConfig & {
3
- basicAuth: PrototypeBasicAuth;
4
- };
5
- export declare function loadPrototypeConfig(root?: string): Promise<{
6
- projectRoot: string;
7
- config: PrototypeConfig;
8
- }>;
9
- export declare function readPrototypeThemeName(projectRoot: string, config: PrototypeConfig): Promise<string | undefined>;
10
- /** Persist default entry screen for prototype hosting / screen-map. */
11
- export declare function persistPrototypeDefaultScreen(projectRoot: string, screenId: string): Promise<void>;
12
- /** Persist explicit theme choice for future prototype runs (no re-prompt). */
13
- export declare function persistPrototypeDefaultTheme(projectRoot: string, theme: string): Promise<void>;
14
- /** Persist the chosen tech stack and derive buildMode when not explicitly set. */
15
- export declare function persistPrototypeTechStack(projectRoot: string, techStack: PrototypeTechStack): Promise<PrototypeConfig>;
16
- /** Persist HTTP basic auth credentials for prototype hosting. */
17
- export declare function persistPrototypeBasicAuth(projectRoot: string, creds: {
18
- username: string;
19
- password: string;
20
- }): Promise<PrototypeConfig>;
21
- //# sourceMappingURL=config.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/prototype/config.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,kBAAkB,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAc1F,wBAAgB,8BAA8B,CAC5C,MAAM,EAAE,eAAe,GACtB,MAAM,IAAI,eAAe,GAAG;IAAE,SAAS,EAAE,kBAAkB,CAAA;CAAE,CAG/D;AAED,wBAAsB,mBAAmB,CACvC,IAAI,CAAC,EAAE,MAAM,GACZ,OAAO,CAAC;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,eAAe,CAAA;CAAE,CAAC,CAc3D;AAED,wBAAsB,sBAAsB,CAC1C,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,eAAe,GACtB,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAsB7B;AAED,uEAAuE;AACvE,wBAAsB,6BAA6B,CACjD,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC,CAiBf;AAED,8EAA8E;AAC9E,wBAAsB,4BAA4B,CAChD,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,IAAI,CAAC,CAiBf;AAED,kFAAkF;AAClF,wBAAsB,yBAAyB,CAC7C,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,kBAAkB,GAC5B,OAAO,CAAC,eAAe,CAAC,CAqB1B;AAED,iEAAiE;AACjE,wBAAsB,yBAAyB,CAC7C,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAC5C,OAAO,CAAC,eAAe,CAAC,CAwB1B"}
@@ -1,131 +0,0 @@
1
- import { join } from "node:path";
2
- import { bundledPrototypeConfigPath, findProjectRoot } from "../config/load.js";
3
- import { pathExists, readJson, writeJson } from "../util/fs.js";
4
- const DEFAULT_CONFIG = {
5
- version: 1,
6
- listScreenDoc: "docs/basic-design/list-screens.md",
7
- screenIndexSection: "## 4. Screen Index",
8
- screenDetailDir: "docs/basic-design/screens/",
9
- prototypeDir: "prototype",
10
- srcDir: "prototype/src",
11
- slugFrom: "screenName",
12
- defaultTheme: "vercel",
13
- htpasswdFile: "prototype/.htpasswd",
14
- };
15
- export function isPrototypeBasicAuthConfigured(config) {
16
- const auth = config.basicAuth;
17
- return Boolean(auth?.username?.trim() && auth.password);
18
- }
19
- export async function loadPrototypeConfig(root) {
20
- const projectRoot = root ?? findProjectRoot();
21
- const projectConfig = join(projectRoot, ".ai-spector/.docflow/config/prototype.config.json");
22
- let raw = {};
23
- if (await pathExists(projectConfig)) {
24
- raw = await readJson(projectConfig);
25
- }
26
- else if (await pathExists(bundledPrototypeConfigPath())) {
27
- raw = await readJson(bundledPrototypeConfigPath());
28
- }
29
- const config = { ...DEFAULT_CONFIG, ...raw };
30
- return { projectRoot, config };
31
- }
32
- export async function readPrototypeThemeName(projectRoot, config) {
33
- const prototypeRoot = join(projectRoot, config.prototypeDir);
34
- const themeJsonPath = join(prototypeRoot, "theme.json");
35
- if (await pathExists(themeJsonPath)) {
36
- const themeJson = await readJson(themeJsonPath);
37
- const fromThemeJson = themeJson.themeName?.trim();
38
- if (fromThemeJson) {
39
- return fromThemeJson;
40
- }
41
- }
42
- const manifestPath = join(prototypeRoot, "manifest.json");
43
- if (await pathExists(manifestPath)) {
44
- const manifest = await readJson(manifestPath);
45
- const fromManifest = manifest.themeName?.trim();
46
- if (fromManifest) {
47
- return fromManifest;
48
- }
49
- }
50
- return undefined;
51
- }
52
- /** Persist default entry screen for prototype hosting / screen-map. */
53
- export async function persistPrototypeDefaultScreen(projectRoot, screenId) {
54
- const id = screenId.trim();
55
- if (!id) {
56
- return;
57
- }
58
- const projectConfig = join(projectRoot, ".ai-spector/.docflow/config/prototype.config.json");
59
- let raw = {};
60
- if (await pathExists(projectConfig)) {
61
- raw = await readJson(projectConfig);
62
- }
63
- else if (await pathExists(bundledPrototypeConfigPath())) {
64
- raw = await readJson(bundledPrototypeConfigPath());
65
- }
66
- const next = { ...DEFAULT_CONFIG, ...raw, defaultScreenId: id };
67
- await writeJson(projectConfig, next);
68
- }
69
- /** Persist explicit theme choice for future prototype runs (no re-prompt). */
70
- export async function persistPrototypeDefaultTheme(projectRoot, theme) {
71
- const name = theme.trim();
72
- if (!name) {
73
- return;
74
- }
75
- const projectConfig = join(projectRoot, ".ai-spector/.docflow/config/prototype.config.json");
76
- let raw = {};
77
- if (await pathExists(projectConfig)) {
78
- raw = await readJson(projectConfig);
79
- }
80
- else if (await pathExists(bundledPrototypeConfigPath())) {
81
- raw = await readJson(bundledPrototypeConfigPath());
82
- }
83
- const next = { ...DEFAULT_CONFIG, ...raw, defaultTheme: name };
84
- await writeJson(projectConfig, next);
85
- }
86
- /** Persist the chosen tech stack and derive buildMode when not explicitly set. */
87
- export async function persistPrototypeTechStack(projectRoot, techStack) {
88
- const projectConfig = join(projectRoot, ".ai-spector/.docflow/config/prototype.config.json");
89
- let raw = {};
90
- if (await pathExists(projectConfig)) {
91
- raw = await readJson(projectConfig);
92
- }
93
- else if (await pathExists(bundledPrototypeConfigPath())) {
94
- raw = await readJson(bundledPrototypeConfigPath());
95
- }
96
- // html is static; all framework stacks are spa — only override if not explicitly set
97
- const derivedBuildMode = techStack === "html" ? "static" : "spa";
98
- const next = {
99
- ...DEFAULT_CONFIG,
100
- ...raw,
101
- techStack,
102
- buildMode: raw.buildMode ?? derivedBuildMode,
103
- };
104
- await writeJson(projectConfig, next);
105
- return next;
106
- }
107
- /** Persist HTTP basic auth credentials for prototype hosting. */
108
- export async function persistPrototypeBasicAuth(projectRoot, creds) {
109
- const username = creds.username.trim();
110
- const password = creds.password;
111
- if (!username || !password) {
112
- throw new Error("username and password are required");
113
- }
114
- const projectConfig = join(projectRoot, ".ai-spector/.docflow/config/prototype.config.json");
115
- let raw = {};
116
- if (await pathExists(projectConfig)) {
117
- raw = await readJson(projectConfig);
118
- }
119
- else if (await pathExists(bundledPrototypeConfigPath())) {
120
- raw = await readJson(bundledPrototypeConfigPath());
121
- }
122
- const basicAuth = {
123
- username,
124
- password,
125
- setAt: new Date().toISOString(),
126
- };
127
- const next = { ...DEFAULT_CONFIG, ...raw, basicAuth };
128
- await writeJson(projectConfig, next);
129
- return next;
130
- }
131
- //# sourceMappingURL=config.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/prototype/config.ts"],"names":[],"mappings":"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"}
@@ -1,9 +0,0 @@
1
- /**
2
- * Deploy-facing paths written to screen-map.json (SPA).
3
- * Repo sync still uses config.buildDest e.g. prototype/dist; consumers serve at domain/prefix/dist/.
4
- */
5
- /** Repo buildDest → deploy base (strip prototypeDir prefix, no index.html). */
6
- export declare function toDeployBasePath(repoBuildDest: string, prototypeDir?: string): string;
7
- /** Per-screen deploy path: `<deployBase>/<route>/` from previewUri or uri (trailing slash for static directory index). */
8
- export declare function toSpaScreenPrototypePath(deployBase: string, previewOrRoute: string): string;
9
- //# sourceMappingURL=deploy-path.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"deploy-path.d.ts","sourceRoot":"","sources":["../../src/prototype/deploy-path.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,+EAA+E;AAC/E,wBAAgB,gBAAgB,CAC9B,aAAa,EAAE,MAAM,EACrB,YAAY,SAAc,GACzB,MAAM,CAOR;AAED,0HAA0H;AAC1H,wBAAgB,wBAAwB,CACtC,UAAU,EAAE,MAAM,EAClB,cAAc,EAAE,MAAM,GACrB,MAAM,CAKR"}
@@ -1,21 +0,0 @@
1
- /**
2
- * Deploy-facing paths written to screen-map.json (SPA).
3
- * Repo sync still uses config.buildDest e.g. prototype/dist; consumers serve at domain/prefix/dist/.
4
- */
5
- /** Repo buildDest → deploy base (strip prototypeDir prefix, no index.html). */
6
- export function toDeployBasePath(repoBuildDest, prototypeDir = "prototype") {
7
- let normalized = repoBuildDest.replace(/\\/g, "/").replace(/\/$/, "");
8
- const prefix = `${prototypeDir.replace(/\\/g, "/").replace(/\/$/, "")}/`;
9
- if (normalized.startsWith(prefix)) {
10
- normalized = normalized.slice(prefix.length);
11
- }
12
- return normalized || "dist";
13
- }
14
- /** Per-screen deploy path: `<deployBase>/<route>/` from previewUri or uri (trailing slash for static directory index). */
15
- export function toSpaScreenPrototypePath(deployBase, previewOrRoute) {
16
- const pathname = previewOrRoute.split("?")[0].split("#")[0];
17
- const route = pathname.startsWith("/") ? pathname.slice(1) : pathname;
18
- const base = deployBase.replace(/\/$/, "");
19
- return route ? `${base}/${route.replace(/\/+$/, "")}/` : base;
20
- }
21
- //# sourceMappingURL=deploy-path.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"deploy-path.js","sourceRoot":"","sources":["../../src/prototype/deploy-path.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,+EAA+E;AAC/E,MAAM,UAAU,gBAAgB,CAC9B,aAAqB,EACrB,YAAY,GAAG,WAAW;IAE1B,IAAI,UAAU,GAAG,aAAa,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACtE,MAAM,MAAM,GAAG,GAAG,YAAY,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,CAAC;IACzE,IAAI,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QAClC,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC/C,CAAC;IACD,OAAO,UAAU,IAAI,MAAM,CAAC;AAC9B,CAAC;AAED,0HAA0H;AAC1H,MAAM,UAAU,wBAAwB,CACtC,UAAkB,EAClB,cAAsB;IAEtB,MAAM,QAAQ,GAAG,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAE,CAAC;IAC9D,MAAM,KAAK,GAAG,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;IACtE,MAAM,IAAI,GAAG,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAC3C,OAAO,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;AAChE,CAAC"}
@@ -1,8 +0,0 @@
1
- /**
2
- * Apache apr1 MD5 via `openssl passwd -apr1`.
3
- * Nginx `auth_basic_user_file` expects `username:$apr1$...` lines (same as htpasswd -m).
4
- */
5
- export declare function apr1Hash(password: string, salt?: string): string;
6
- export declare function formatHtpasswdLine(username: string, password: string): string;
7
- export declare function writeHtpasswdFile(filePath: string, username: string, password: string): Promise<void>;
8
- //# sourceMappingURL=htpasswd.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"htpasswd.d.ts","sourceRoot":"","sources":["../../src/prototype/htpasswd.ts"],"names":[],"mappings":"AAIA;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAchE;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAU7E;AAED,wBAAsB,iBAAiB,CACrC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC,CAGf"}
@@ -1,36 +0,0 @@
1
- import { execFileSync } from "node:child_process";
2
- import { mkdir, writeFile } from "node:fs/promises";
3
- import { dirname } from "node:path";
4
- /**
5
- * Apache apr1 MD5 via `openssl passwd -apr1`.
6
- * Nginx `auth_basic_user_file` expects `username:$apr1$...` lines (same as htpasswd -m).
7
- */
8
- export function apr1Hash(password, salt) {
9
- const args = ["passwd", "-apr1"];
10
- if (salt) {
11
- args.push("-salt", salt);
12
- }
13
- args.push(password);
14
- try {
15
- return execFileSync("openssl", args, { encoding: "utf8" }).trim();
16
- }
17
- catch (err) {
18
- throw new Error("Could not run `openssl passwd -apr1`. Install OpenSSL and ensure it is on PATH.", { cause: err });
19
- }
20
- }
21
- export function formatHtpasswdLine(username, password) {
22
- const user = username.trim();
23
- if (!user) {
24
- throw new Error("username is required");
25
- }
26
- if (!password) {
27
- throw new Error("password is required");
28
- }
29
- const hash = apr1Hash(password);
30
- return `${user}:${hash}`;
31
- }
32
- export async function writeHtpasswdFile(filePath, username, password) {
33
- await mkdir(dirname(filePath), { recursive: true });
34
- await writeFile(filePath, `${formatHtpasswdLine(username, password)}\n`, "utf8");
35
- }
36
- //# sourceMappingURL=htpasswd.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"htpasswd.js","sourceRoot":"","sources":["../../src/prototype/htpasswd.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC;;;GAGG;AACH,MAAM,UAAU,QAAQ,CAAC,QAAgB,EAAE,IAAa;IACtD,MAAM,IAAI,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACjC,IAAI,IAAI,EAAE,CAAC;QACT,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAC3B,CAAC;IACD,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACpB,IAAI,CAAC;QACH,OAAO,YAAY,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACpE,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CACb,iFAAiF,EACjF,EAAE,KAAK,EAAE,GAAG,EAAE,CACf,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,QAAgB,EAAE,QAAgB;IACnE,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;IAC7B,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;IAC1C,CAAC;IACD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;IAC1C,CAAC;IACD,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAChC,OAAO,GAAG,IAAI,IAAI,IAAI,EAAE,CAAC;AAC3B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,QAAgB,EAChB,QAAgB,EAChB,QAAgB;IAEhB,MAAM,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACpD,MAAM,SAAS,CAAC,QAAQ,EAAE,GAAG,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AACnF,CAAC"}
@@ -1,16 +0,0 @@
1
- import type { PrototypeConfig } from "./types.js";
2
- export interface SpaNginxConfigOptions {
3
- /** Deploy URL prefix without trailing slash, e.g. "dist" → location /dist/ */
4
- deployBase: string;
5
- config: PrototypeConfig;
6
- /** Repo-relative path to the SPA build on disk (for comments). */
7
- repoBuildDest: string;
8
- }
9
- /**
10
- * Nginx location block for SPA deep links.
11
- * Without try_files fallback, paths like /dist/trip/.../print 404 because no file exists on disk.
12
- */
13
- export declare function generateSpaNginxConfig(opts: SpaNginxConfigOptions): string;
14
- export declare function spaNginxConfigFilename(): string;
15
- export declare function spaNginxConfigPath(prototypeDir: string): string;
16
- //# sourceMappingURL=nginx-config.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"nginx-config.d.ts","sourceRoot":"","sources":["../../src/prototype/nginx-config.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD,MAAM,WAAW,qBAAqB;IACpC,8EAA8E;IAC9E,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,eAAe,CAAC;IACxB,kEAAkE;IAClE,aAAa,EAAE,MAAM,CAAC;CACvB;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,qBAAqB,GAAG,MAAM,CA2B1E;AAED,wBAAgB,sBAAsB,IAAI,MAAM,CAE/C;AAED,wBAAgB,kBAAkB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAE/D"}
@@ -1,39 +0,0 @@
1
- import { join } from "node:path";
2
- /**
3
- * Nginx location block for SPA deep links.
4
- * Without try_files fallback, paths like /dist/trip/.../print 404 because no file exists on disk.
5
- */
6
- export function generateSpaNginxConfig(opts) {
7
- const locationPrefix = `/${opts.deployBase.replace(/^\/+|\/+$/g, "")}/`;
8
- const fallbackUri = `${locationPrefix.replace(/\/$/, "")}/index.html`;
9
- const htpasswd = opts.config.htpasswdFile.replace(/\\/g, "/");
10
- const authBlock = opts.config.basicAuth?.username
11
- ? `
12
- auth_basic "Prototype";
13
- auth_basic_user_file /ABSOLUTE/PATH/TO/${htpasswd};`
14
- : "";
15
- return `# SPA prototype — generated by ai-spector prototype manifest
16
- #
17
- # Problem: deep links (e.g. ${locationPrefix}trip/acme-march-2026/print) are client routes.
18
- # Nginx must serve index.html for missing files so the app router can run.
19
- #
20
- # Set root to the directory that CONTAINS ${opts.deployBase}/ on disk
21
- # (repo build output: ${opts.repoBuildDest.replace(/\\/g, "/")}).
22
-
23
- location ${locationPrefix} {
24
- root /var/www/YOUR_PROJECT;${authBlock}
25
- index index.html;
26
- try_files $uri $uri/ ${fallbackUri};
27
- }
28
-
29
- # Example: root /var/www/btrip and URL /dist/login.html → /var/www/btrip/dist/login.html
30
- # Deep link /dist/trip/x/print → no file → ${fallbackUri} → dist/index.html → React/Vue router
31
- `;
32
- }
33
- export function spaNginxConfigFilename() {
34
- return "nginx.conf.example";
35
- }
36
- export function spaNginxConfigPath(prototypeDir) {
37
- return join(prototypeDir, spaNginxConfigFilename());
38
- }
39
- //# sourceMappingURL=nginx-config.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"nginx-config.js","sourceRoot":"","sources":["../../src/prototype/nginx-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAWjC;;;GAGG;AACH,MAAM,UAAU,sBAAsB,CAAC,IAA2B;IAChE,MAAM,cAAc,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,GAAG,CAAC;IACxE,MAAM,WAAW,GAAG,GAAG,cAAc,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,aAAa,CAAC;IACtE,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAC9D,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,QAAQ;QAC/C,CAAC,CAAC;;6CAEuC,QAAQ,GAAG;QACpD,CAAC,CAAC,EAAE,CAAC;IAEP,OAAO;;8BAEqB,cAAc;;;4CAGA,IAAI,CAAC,UAAU;wBACnC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;;WAEnD,cAAc;iCACQ,SAAS;;2BAEf,WAAW;;;;6CAIO,WAAW;CACvD,CAAC;AACF,CAAC;AAED,MAAM,UAAU,sBAAsB;IACpC,OAAO,oBAAoB,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,YAAoB;IACrD,OAAO,IAAI,CAAC,YAAY,EAAE,sBAAsB,EAAE,CAAC,CAAC;AACtD,CAAC"}