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,93 +0,0 @@
1
- import { mkdir, readFile, writeFile } from "node:fs/promises";
2
- import { dirname, join } from "node:path";
3
- import { pathExists } from "../util/fs.js";
4
- import { toDeployBasePath, toSpaScreenPrototypePath } from "./deploy-path.js";
5
- /** All deploy-prefix paths that need an index.html copy (every URL segment). */
6
- export function spaFallbackDeployPaths(deployBase, previewOrRoute) {
7
- const pathname = previewOrRoute.split("?")[0].split("#")[0];
8
- const route = pathname.startsWith("/") ? pathname.slice(1) : pathname;
9
- if (!route) {
10
- return [];
11
- }
12
- const parts = route.split("/").filter(Boolean);
13
- const base = deployBase.replace(/\/$/, "");
14
- const paths = [];
15
- for (let i = 1; i <= parts.length; i++) {
16
- paths.push(`${base}/${parts.slice(0, i).join("/")}`);
17
- }
18
- return paths;
19
- }
20
- function routePartFromDeployPath(deployPath, deployBase) {
21
- const normalizedDeploy = deployPath.replace(/\\/g, "/").replace(/\/+$/, "");
22
- const base = deployBase.replace(/\/$/, "");
23
- if (normalizedDeploy === base) {
24
- return "";
25
- }
26
- if (normalizedDeploy.startsWith(`${base}/`)) {
27
- return normalizedDeploy.slice(base.length + 1);
28
- }
29
- return normalizedDeploy;
30
- }
31
- function deployPathToRepoIndexPath(deployPath, repoBuildDest, deployBase) {
32
- const routePart = routePartFromDeployPath(deployPath, deployBase);
33
- return join(repoBuildDest, routePart, "index.html").replace(/\\/g, "/");
34
- }
35
- /** Relative base href so `./assets/…` resolves to the SPA build root, not the nested folder. */
36
- export function baseHrefForRouteDepth(routeSegmentCount) {
37
- if (routeSegmentCount <= 0) {
38
- return "./";
39
- }
40
- return "../".repeat(routeSegmentCount);
41
- }
42
- export function injectSpaFallbackBaseHref(html, baseHref) {
43
- const baseTag = `<base href="${baseHref.replace(/"/g, "&quot;")}">`;
44
- if (/<base\s[\s\S]*?\/?>/i.test(html)) {
45
- return html.replace(/<base\s[\s\S]*?\/?>/i, baseTag);
46
- }
47
- if (/<head(\s[^>]*)?>/i.test(html)) {
48
- return html.replace(/<head(\s[^>]*)?>/i, (match) => `${match}\n ${baseTag}`);
49
- }
50
- return `${baseTag}\n${html}`;
51
- }
52
- function fallbackIndexHtml(rootIndexHtml, deployPath, deployBase) {
53
- const depth = routePartFromDeployPath(deployPath, deployBase)
54
- .split("/")
55
- .filter(Boolean).length;
56
- return injectSpaFallbackBaseHref(rootIndexHtml, baseHrefForRouteDepth(depth));
57
- }
58
- /**
59
- * Copy the SPA entry index.html into each screen route directory so zip/static hosts
60
- * can serve deep links without nginx try_files (e.g. dist/trip/x/print/index.html).
61
- */
62
- export async function writeSpaRouteFallbacks(opts) {
63
- const rootIndex = join(opts.projectRoot, opts.repoBuildDest, "index.html");
64
- if (!(await pathExists(rootIndex))) {
65
- return { filesWritten: 0, paths: [] };
66
- }
67
- const indexHtml = await readFile(rootIndex, "utf8");
68
- const deployBase = opts.deployBase || toDeployBasePath(opts.repoBuildDest, opts.prototypeDir);
69
- const deployPaths = new Set();
70
- for (const screen of opts.screens) {
71
- const preview = screen.previewUri ?? screen.uri;
72
- for (const path of spaFallbackDeployPaths(deployBase, preview)) {
73
- deployPaths.add(path);
74
- }
75
- deployPaths.add(toSpaScreenPrototypePath(deployBase, preview));
76
- }
77
- const written = [];
78
- for (const deployPath of deployPaths) {
79
- const relIndex = deployPathToRepoIndexPath(deployPath, opts.repoBuildDest, deployBase);
80
- if (relIndex.replace(/\\/g, "/").endsWith("/index.html") && deployPath === deployBase) {
81
- continue;
82
- }
83
- const absIndex = join(opts.projectRoot, relIndex);
84
- if (absIndex.replace(/\\/g, "/") === rootIndex.replace(/\\/g, "/")) {
85
- continue;
86
- }
87
- await mkdir(dirname(absIndex), { recursive: true });
88
- await writeFile(absIndex, fallbackIndexHtml(indexHtml, deployPath, deployBase), "utf8");
89
- written.push(relIndex.replace(/\\/g, "/"));
90
- }
91
- return { filesWritten: written.length, paths: written };
92
- }
93
- //# sourceMappingURL=spa-route-fallbacks.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"spa-route-fallbacks.js","sourceRoot":"","sources":["../../src/prototype/spa-route-fallbacks.ts"],"names":[],"mappings":"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"}
@@ -1,17 +0,0 @@
1
- export declare function resolveThemePreviewPath(themeName: string): string;
2
- export declare function themeHasPreview(themeName: string): Promise<boolean>;
3
- /** Legacy staging dirs (`assets/preview/themes` or accidental `assets/preview /themes`). */
4
- export declare function resolveThemePreviewsStagingRoot(explicitFrom?: string): Promise<string | undefined>;
5
- export interface InstallThemePreviewsResult {
6
- stagingRoot: string;
7
- moved: string[];
8
- skipped: string[];
9
- missingTheme: string[];
10
- }
11
- export interface InstallThemePreviewsOptions {
12
- from?: string;
13
- themesRoot?: string;
14
- dryRun?: boolean;
15
- }
16
- export declare function installThemePreviews(opts?: InstallThemePreviewsOptions): Promise<InstallThemePreviewsResult>;
17
- //# sourceMappingURL=theme-preview.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"theme-preview.d.ts","sourceRoot":"","sources":["../../src/prototype/theme-preview.ts"],"names":[],"mappings":"AAeA,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAEjE;AAED,wBAAsB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAEzE;AAED,4FAA4F;AAC5F,wBAAsB,+BAA+B,CACnD,YAAY,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAgB7B;AAED,MAAM,WAAW,0BAA0B;IACzC,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,2BAA2B;IAC1C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,wBAAsB,oBAAoB,CACxC,IAAI,GAAE,2BAAgC,GACrC,OAAO,CAAC,0BAA0B,CAAC,CAyCrC"}
@@ -1,73 +0,0 @@
1
- import { readdir, rename } from "node:fs/promises";
2
- import { basename, join } from "node:path";
3
- import { packageBundleRoot, themesBundleRoot } from "../config/load.js";
4
- import { pathExists } from "../util/fs.js";
5
- const PREVIEW_FILENAME = "preview.html";
6
- function sanitizeThemeName(themeName) {
7
- const safe = themeName.replace(/[^a-zA-Z0-9._-]/g, "");
8
- if (!safe || safe !== themeName) {
9
- throw new Error(`Invalid theme name: ${themeName}`);
10
- }
11
- return safe;
12
- }
13
- export function resolveThemePreviewPath(themeName) {
14
- return join(themesBundleRoot(), sanitizeThemeName(themeName), PREVIEW_FILENAME);
15
- }
16
- export async function themeHasPreview(themeName) {
17
- return pathExists(resolveThemePreviewPath(themeName));
18
- }
19
- /** Legacy staging dirs (`assets/preview/themes` or accidental `assets/preview /themes`). */
20
- export async function resolveThemePreviewsStagingRoot(explicitFrom) {
21
- if (explicitFrom?.trim()) {
22
- const from = explicitFrom.trim();
23
- return (await pathExists(from)) ? from : undefined;
24
- }
25
- const root = packageBundleRoot();
26
- const candidates = [
27
- join(root, "assets", "preview", "themes"),
28
- join(root, "assets", "preview ", "themes"),
29
- ];
30
- for (const candidate of candidates) {
31
- if (await pathExists(candidate)) {
32
- return candidate;
33
- }
34
- }
35
- return undefined;
36
- }
37
- export async function installThemePreviews(opts = {}) {
38
- const stagingRoot = await resolveThemePreviewsStagingRoot(opts.from);
39
- if (!stagingRoot) {
40
- const hint = opts.from?.trim()
41
- ? `Path not found: ${opts.from.trim()}`
42
- : "No staging folder (expected assets/preview/themes/)";
43
- throw new Error(hint);
44
- }
45
- const themesRoot = opts.themesRoot ?? themesBundleRoot();
46
- const entries = await readdir(stagingRoot, { withFileTypes: true });
47
- const moved = [];
48
- const skipped = [];
49
- const missingTheme = [];
50
- for (const ent of entries) {
51
- if (!ent.isFile() || !ent.name.endsWith(".html")) {
52
- continue;
53
- }
54
- const themeName = basename(ent.name, ".html");
55
- const themeDir = join(themesRoot, themeName);
56
- const dest = join(themeDir, PREVIEW_FILENAME);
57
- const src = join(stagingRoot, ent.name);
58
- if (!(await pathExists(themeDir))) {
59
- missingTheme.push(themeName);
60
- continue;
61
- }
62
- if (await pathExists(dest)) {
63
- skipped.push(themeName);
64
- continue;
65
- }
66
- if (!opts.dryRun) {
67
- await rename(src, dest);
68
- }
69
- moved.push(themeName);
70
- }
71
- return { stagingRoot, moved, skipped, missingTheme };
72
- }
73
- //# sourceMappingURL=theme-preview.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"theme-preview.js","sourceRoot":"","sources":["../../src/prototype/theme-preview.ts"],"names":[],"mappings":"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"}
@@ -1,6 +0,0 @@
1
- export declare function listBundledThemes(): Promise<string[]>;
2
- export declare function resolveThemeDesignPath(themeName: string): string;
3
- export declare function assertThemeExists(themeName: string): Promise<string>;
4
- export declare function installThemeDesign(themeName: string, prototypeDesignPath: string): Promise<void>;
5
- export declare function readThemeSummary(themeName: string): Promise<string | undefined>;
6
- //# sourceMappingURL=themes.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"themes.d.ts","sourceRoot":"","sources":["../../src/prototype/themes.ts"],"names":[],"mappings":"AAMA,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAiB3D;AAED,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAMhE;AAED,wBAAsB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAW1E;AAED,wBAAsB,kBAAkB,CACtC,SAAS,EAAE,MAAM,EACjB,mBAAmB,EAAE,MAAM,GAC1B,OAAO,CAAC,IAAI,CAAC,CAGf;AAED,wBAAsB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAQrF"}
@@ -1,55 +0,0 @@
1
- import { readdir } from "node:fs/promises";
2
- import { join } from "node:path";
3
- import { copyFile, readFile } from "node:fs/promises";
4
- import { themesBundleRoot } from "../config/load.js";
5
- import { pathExists } from "../util/fs.js";
6
- export async function listBundledThemes() {
7
- const root = themesBundleRoot();
8
- if (!(await pathExists(root))) {
9
- return [];
10
- }
11
- const entries = await readdir(root, { withFileTypes: true });
12
- const themes = [];
13
- for (const ent of entries) {
14
- if (!ent.isDirectory()) {
15
- continue;
16
- }
17
- const designPath = join(root, ent.name, "DESIGN.md");
18
- if (await pathExists(designPath)) {
19
- themes.push(ent.name);
20
- }
21
- }
22
- return themes.sort((a, b) => a.localeCompare(b));
23
- }
24
- export function resolveThemeDesignPath(themeName) {
25
- const safe = themeName.replace(/[^a-zA-Z0-9._-]/g, "");
26
- if (!safe || safe !== themeName) {
27
- throw new Error(`Invalid theme name: ${themeName}`);
28
- }
29
- return join(themesBundleRoot(), safe, "DESIGN.md");
30
- }
31
- export async function assertThemeExists(themeName) {
32
- const designPath = resolveThemeDesignPath(themeName);
33
- if (!(await pathExists(designPath))) {
34
- const available = await listBundledThemes();
35
- const hint = available.length > 0
36
- ? ` Available: ${available.slice(0, 12).join(", ")}${available.length > 12 ? ", …" : ""}`
37
- : "";
38
- throw new Error(`Theme not found: ${themeName}.${hint}`);
39
- }
40
- return designPath;
41
- }
42
- export async function installThemeDesign(themeName, prototypeDesignPath) {
43
- const src = await assertThemeExists(themeName);
44
- await copyFile(src, prototypeDesignPath);
45
- }
46
- export async function readThemeSummary(themeName) {
47
- const summaryPath = join(themesBundleRoot(), themeName.replace(/[^a-zA-Z0-9._-]/g, ""), "SUMMARY.md");
48
- if (!(await pathExists(summaryPath))) {
49
- return undefined;
50
- }
51
- const raw = await readFile(summaryPath, "utf8");
52
- const first = raw.split(/\r?\n/).find((l) => l.trim().length > 0);
53
- return first?.trim();
54
- }
55
- //# sourceMappingURL=themes.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"themes.js","sourceRoot":"","sources":["../../src/prototype/themes.ts"],"names":[],"mappings":"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"}
@@ -1,160 +0,0 @@
1
- export interface PrototypeBasicAuth {
2
- username: string;
3
- password: string;
4
- setAt: string;
5
- }
6
- /** "static" = one HTML file per screen; "spa" = single entrypoint, route per screen. */
7
- export type PrototypeBuildMode = "static" | "spa";
8
- /**
9
- * Tech stack used to author the prototype.
10
- * - "html" plain HTML/CSS/JS, no framework
11
- * - "vue" Vue 3 SPA (Vite + Vue Router)
12
- * - "react" React SPA (Vite + React Router)
13
- * - "nuxt" Nuxt 3 (file-system routing)
14
- * - "next" Next.js (file-system routing)
15
- * - "svelte" SvelteKit
16
- * - "angular" Angular
17
- */
18
- export type PrototypeTechStack = "html" | "vue" | "react" | "nuxt" | "next" | "svelte" | "angular";
19
- export interface PrototypeConfig {
20
- version: number;
21
- listScreenDoc: string;
22
- screenIndexSection: string;
23
- screenDetailDir: string;
24
- prototypeDir: string;
25
- srcDir: string;
26
- slugFrom: "screenName";
27
- defaultTheme: string;
28
- /**
29
- * Tech stack chosen for authoring the prototype.
30
- * Stored after the stack-picker runs; absent means "not yet chosen".
31
- */
32
- techStack?: PrototypeTechStack;
33
- /**
34
- * Build mode for the prototype.
35
- * - "static" (default): one HTML file per screen, URI maps to /src/<stem>.html
36
- * - "spa": single entrypoint app (React, Vue, etc.), URI maps to /<slug> route
37
- * Derived from techStack when not explicitly set.
38
- */
39
- buildMode?: PrototypeBuildMode;
40
- /**
41
- * Repo-relative path to the SPA/framework build output directory (e.g. "frontend/dist").
42
- * Used by `prototype sync` to know where to copy built files from.
43
- * Only relevant when buildMode is "spa" or when the user builds files outside prototype/.
44
- */
45
- buildSrc?: string;
46
- /**
47
- * Repo-relative destination path for synced build output (e.g. "prototype/dist").
48
- * Defaults to prototypeDir + "/dist".
49
- */
50
- buildDest?: string;
51
- /** Screen Index id used as prototype entry / nginx default route. */
52
- defaultScreenId?: string;
53
- /** Repo-relative path to Apache htpasswd file (nginx basic auth). */
54
- htpasswdFile: string;
55
- basicAuth?: PrototypeBasicAuth;
56
- /**
57
- * When true (default for SPA prototypes), router auth guards must allow direct navigation
58
- * to any screen without forcing login first. Set false to test real auth flows.
59
- */
60
- prototypeBypassAuth?: boolean;
61
- }
62
- export interface ScreenIndexRow {
63
- screenId: string;
64
- displayName: string;
65
- purpose?: string;
66
- userRole?: string;
67
- slug: string;
68
- /** Resolved path from slug OR explicit Spec file column. */
69
- screenDoc: string;
70
- /** Explicit spec filename from the Screen Index "Spec file" column (overrides slug-derived path). */
71
- specFile?: string;
72
- prototypeStem: string;
73
- prototypePath: string;
74
- }
75
- export interface PrototypeManifestScreen {
76
- screenId: string;
77
- displayName: string;
78
- prototypeStem: string;
79
- screenDoc: string;
80
- purpose?: string;
81
- userRole?: string;
82
- }
83
- export interface PrototypeManifest {
84
- schemaVersion: 1;
85
- themeName: string;
86
- generatedAt: string;
87
- screens: PrototypeManifestScreen[];
88
- }
89
- export interface PrototypeScreenMapEntry {
90
- screenId: string;
91
- displayName: string;
92
- /** Primary screen design doc — full repo-relative path (primary language). */
93
- screenDoc: string;
94
- /**
95
- * Language-neutral screen design doc path (no `docs/` prefix, no language segment).
96
- * e.g. "basic-design/screens/login.md"
97
- */
98
- screenDocPath: string;
99
- /**
100
- * Per-language repo-relative screen design doc paths.
101
- * Present when the project has multiple docflow languages.
102
- * e.g. { en: "docs/basic-design/en/screens/login.md", vi: "docs/basic-design/vi/screens/login.md" }
103
- */
104
- screenDocs?: Record<string, string>;
105
- prototypeStem: string;
106
- /**
107
- * Path to open this screen in the deployed prototype.
108
- * - static mode: repo-relative HTML file, e.g. "prototype/src/<stem>.html"
109
- * - spa mode: deploy-relative route directory, e.g. "dist/schedules/new/" (trailing slash)
110
- */
111
- prototypePath: string;
112
- /**
113
- * Route path for this screen.
114
- * - static mode: "/src/<stem>.html"
115
- * - spa mode: "/<slug>" or a pattern with params (e.g. "/orders/:id")
116
- */
117
- uri: string;
118
- htmlExists: boolean;
119
- /**
120
- * SPA only: explicit router pattern when it differs from the slug-only path.
121
- * Usually the same as `uri`; set when the app uses param segments.
122
- */
123
- routePattern?: string;
124
- /** SPA only: default path-param values for prototype deep links (e.g. `{ "id": "demo-001" }`). */
125
- routeParams?: Record<string, string>;
126
- /** SPA only: default query params appended to `previewUri`. */
127
- queryParams?: Record<string, string>;
128
- /**
129
- * SPA only: concrete URL to open this screen in a browser (params substituted, query appended).
130
- * Hosting and reviewers use this instead of typing IDs manually.
131
- */
132
- previewUri?: string;
133
- /** SPA only: production would require login; prototype still allows direct `previewUri` access. */
134
- requiresAuth?: boolean;
135
- }
136
- export interface PrototypeScreenMap {
137
- schemaVersion: 1;
138
- themeName: string;
139
- buildMode: PrototypeBuildMode;
140
- generatedAt: string;
141
- /** Entry screen at generation time (from screens with HTML when any exist). */
142
- defaultScreenId?: string;
143
- /**
144
- * SPA only: when true, generated router must not redirect unauthenticated users to login
145
- * when opening a deep-linked route (prototype review mode).
146
- */
147
- prototypeBypassAuth?: boolean;
148
- /**
149
- * SPA only: deploy-relative build output directory (e.g. "dist").
150
- * Served at domain/prefix/<buildDest>/; repo sync path may include a prototype/ prefix.
151
- */
152
- buildDest?: string;
153
- /**
154
- * SPA only: repo-relative path to the framework build source (e.g. "frontend/dist").
155
- * Informational — documents where buildDest was synced from.
156
- */
157
- buildSrc?: string;
158
- screens: PrototypeScreenMapEntry[];
159
- }
160
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/prototype/types.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/prototype/types.ts"],"names":[],"mappings":""}
@@ -1,16 +0,0 @@
1
- import type { PrototypeConfig } from "./types.js";
2
- export interface PrototypeValidationIssue {
3
- severity: "error" | "warn";
4
- code: string;
5
- message: string;
6
- path?: string;
7
- }
8
- export interface ValidatePrototypeOptions {
9
- projectRoot: string;
10
- config: PrototypeConfig;
11
- strict?: boolean;
12
- checkExternalAssets?: boolean;
13
- }
14
- export declare function validatePrototype(opts: ValidatePrototypeOptions): Promise<PrototypeValidationIssue[]>;
15
- export declare function formatPrototypeIssues(issues: PrototypeValidationIssue[]): string;
16
- //# sourceMappingURL=validate.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/prototype/validate.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAqB,MAAM,YAAY,CAAC;AASrE,MAAM,WAAW,wBAAwB;IACvC,QAAQ,EAAE,OAAO,GAAG,MAAM,CAAC;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,wBAAwB;IACvC,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,eAAe,CAAC;IACxB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B;AAED,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,wBAAwB,GAC7B,OAAO,CAAC,wBAAwB,EAAE,CAAC,CA+IrC;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,wBAAwB,EAAE,GAAG,MAAM,CAOhF"}
@@ -1,149 +0,0 @@
1
- import { readFile } from "node:fs/promises";
2
- import { join } from "node:path";
3
- import { isPrototypeBasicAuthConfigured } from "./config.js";
4
- import { findAbsoluteLocalRefs } from "./relative-assets.js";
5
- import { checkViteRelativeBase, formatViteBasePathHint } from "./build-base-path.js";
6
- import { pathExists, readJson } from "../util/fs.js";
7
- const EXTERNAL_ASSET_RE = /(?:https?:)?\/\/(?:fonts\.googleapis|fonts\.gstatic|cdn\.|unpkg\.|jsdelivr\.)/i;
8
- export async function validatePrototype(opts) {
9
- const issues = [];
10
- if (!isPrototypeBasicAuthConfigured(opts.config)) {
11
- issues.push({
12
- severity: "error",
13
- code: "BASIC_AUTH_MISSING",
14
- message: "Prototype basic auth not configured — ask the user for username/password, then: npx ai-spector prototype auth --username <u> --password <p>",
15
- });
16
- }
17
- else {
18
- const htpasswdPath = join(opts.projectRoot, opts.config.htpasswdFile);
19
- if (!(await pathExists(htpasswdPath))) {
20
- issues.push({
21
- severity: "error",
22
- code: "HTPASSWD_MISSING",
23
- message: `Missing ${opts.config.htpasswdFile} — run: npx ai-spector prototype auth --from-config`,
24
- path: htpasswdPath,
25
- });
26
- }
27
- }
28
- const manifestPath = join(opts.projectRoot, opts.config.prototypeDir, "manifest.json");
29
- if (!(await pathExists(manifestPath))) {
30
- issues.push({
31
- severity: "error",
32
- code: "MANIFEST_MISSING",
33
- message: `Missing ${opts.config.prototypeDir}/manifest.json — run: npx ai-spector prototype setup`,
34
- path: manifestPath,
35
- });
36
- return issues;
37
- }
38
- const manifest = await readJson(manifestPath);
39
- if (manifest.schemaVersion !== 1) {
40
- issues.push({
41
- severity: "error",
42
- code: "MANIFEST_SCHEMA",
43
- message: `Unsupported manifest schemaVersion: ${manifest.schemaVersion}`,
44
- });
45
- }
46
- if (!manifest.themeName?.trim()) {
47
- issues.push({
48
- severity: "error",
49
- code: "THEME_MISSING",
50
- message: "manifest.json themeName is empty — run: npx ai-spector prototype setup --theme <name>",
51
- });
52
- }
53
- const buildMode = opts.config.buildMode ?? "static";
54
- const stems = new Set();
55
- for (const screen of manifest.screens ?? []) {
56
- if (stems.has(screen.prototypeStem)) {
57
- issues.push({
58
- severity: "error",
59
- code: "DUPLICATE_STEM",
60
- message: `Duplicate prototypeStem: ${screen.prototypeStem}`,
61
- });
62
- }
63
- stems.add(screen.prototypeStem);
64
- if (buildMode !== "spa") {
65
- const htmlPath = join(opts.projectRoot, opts.config.srcDir, `${screen.prototypeStem}.html`);
66
- if (!(await pathExists(htmlPath))) {
67
- issues.push({
68
- severity: opts.strict ? "error" : "warn",
69
- code: "HTML_MISSING",
70
- message: `Missing HTML for ${screen.displayName}: ${opts.config.srcDir}/${screen.prototypeStem}.html`,
71
- path: htmlPath,
72
- });
73
- }
74
- else if (opts.checkExternalAssets !== false) {
75
- const html = await readFile(htmlPath, "utf8");
76
- if (EXTERNAL_ASSET_RE.test(html)) {
77
- issues.push({
78
- severity: "warn",
79
- code: "EXTERNAL_ASSET",
80
- message: `External CDN/font URL in ${screen.prototypeStem}.html — use tokens from prototype/DESIGN.md only`,
81
- path: htmlPath,
82
- });
83
- }
84
- const absoluteRefs = findAbsoluteLocalRefs(html);
85
- if (absoluteRefs.length > 0) {
86
- issues.push({
87
- severity: opts.strict ? "error" : "warn",
88
- code: "ABSOLUTE_ASSET_PATH",
89
- message: `Root-absolute asset refs in ${screen.prototypeStem}.html (${absoluteRefs.slice(0, 3).join(", ")}${absoluteRefs.length > 3 ? ", …" : ""}) — use relative paths from the current file (e.g. ./assets/app.js)`,
90
- path: htmlPath,
91
- });
92
- }
93
- }
94
- }
95
- const docPath = join(opts.projectRoot, screen.screenDoc);
96
- if (!(await pathExists(docPath))) {
97
- issues.push({
98
- severity: "warn",
99
- code: "SCREEN_DOC_MISSING",
100
- message: `Screen design doc missing: ${screen.screenDoc}`,
101
- path: docPath,
102
- });
103
- }
104
- }
105
- // SPA mode: validate the single build entrypoint (replaces per-screen HTML checks above).
106
- if (buildMode === "spa") {
107
- const buildDest = opts.config.buildDest?.trim() || `${opts.config.prototypeDir}/dist`;
108
- const indexPath = join(opts.projectRoot, buildDest, "index.html");
109
- if (!(await pathExists(indexPath))) {
110
- issues.push({
111
- severity: opts.strict ? "error" : "warn",
112
- code: "SPA_BUILD_MISSING",
113
- message: `SPA build not found: ${buildDest}/index.html — run your framework build then: npx ai-spector prototype sync`,
114
- path: indexPath,
115
- });
116
- }
117
- else if (opts.checkExternalAssets !== false) {
118
- const html = await readFile(indexPath, "utf8");
119
- const absoluteRefs = findAbsoluteLocalRefs(html);
120
- if (absoluteRefs.length > 0) {
121
- issues.push({
122
- severity: opts.strict ? "error" : "warn",
123
- code: "ABSOLUTE_ASSET_PATH",
124
- message: `Root-absolute asset refs in ${buildDest}/index.html (${absoluteRefs.slice(0, 3).join(", ")}${absoluteRefs.length > 3 ? ", …" : ""}) — set Vite base: './' and rebuild, or run prototype sync to rewrite paths`,
125
- path: indexPath,
126
- });
127
- }
128
- }
129
- const viteCheck = await checkViteRelativeBase(opts.projectRoot, opts.config.techStack);
130
- if (viteCheck?.needsRelativeBase) {
131
- issues.push({
132
- severity: opts.strict ? "error" : "warn",
133
- code: "VITE_BASE_PATH",
134
- message: `Vite build will emit root-absolute asset URLs — ${formatViteBasePathHint(viteCheck)}`,
135
- path: viteCheck.configPath ?? undefined,
136
- });
137
- }
138
- }
139
- return issues;
140
- }
141
- export function formatPrototypeIssues(issues) {
142
- if (issues.length === 0) {
143
- return "Prototype validation: OK";
144
- }
145
- return issues
146
- .map((i) => `[${i.severity.toUpperCase()}] ${i.code}: ${i.message}`)
147
- .join("\n");
148
- }
149
- //# sourceMappingURL=validate.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/prototype/validate.ts"],"names":[],"mappings":"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"}
@@ -1,5 +0,0 @@
1
- import type { RegistryDocument, SectionRegistry } from "../types.js";
2
- /** Scan basic-design list-chapter templates (api-list, screen map, db-design). */
3
- export declare function scanBasicDesignListDocuments(projectRoot: string): Promise<RegistryDocument[]>;
4
- export declare function buildSectionRegistry(root?: string): Promise<SectionRegistry>;
5
- //# sourceMappingURL=build.d.ts.map