@prodara/compiler 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (494) hide show
  1. package/README.md +204 -0
  2. package/dist/agent/agent.d.ts +10 -0
  3. package/dist/agent/agent.d.ts.map +1 -0
  4. package/dist/agent/agent.js +122 -0
  5. package/dist/agent/agent.js.map +1 -0
  6. package/dist/agent/api-client.d.ts +29 -0
  7. package/dist/agent/api-client.d.ts.map +1 -0
  8. package/dist/agent/api-client.js +167 -0
  9. package/dist/agent/api-client.js.map +1 -0
  10. package/dist/agent/index.d.ts +5 -0
  11. package/dist/agent/index.d.ts.map +1 -0
  12. package/dist/agent/index.js +3 -0
  13. package/dist/agent/index.js.map +1 -0
  14. package/dist/agent/party.d.ts +48 -0
  15. package/dist/agent/party.d.ts.map +1 -0
  16. package/dist/agent/party.js +79 -0
  17. package/dist/agent/party.js.map +1 -0
  18. package/dist/agent/types.d.ts +35 -0
  19. package/dist/agent/types.d.ts.map +1 -0
  20. package/dist/agent/types.js +5 -0
  21. package/dist/agent/types.js.map +1 -0
  22. package/dist/audit/audit.d.ts +32 -0
  23. package/dist/audit/audit.d.ts.map +1 -0
  24. package/dist/audit/audit.js +120 -0
  25. package/dist/audit/audit.js.map +1 -0
  26. package/dist/audit/index.d.ts +3 -0
  27. package/dist/audit/index.d.ts.map +1 -0
  28. package/dist/audit/index.js +2 -0
  29. package/dist/audit/index.js.map +1 -0
  30. package/dist/audit/types.d.ts +25 -0
  31. package/dist/audit/types.d.ts.map +1 -0
  32. package/dist/audit/types.js +5 -0
  33. package/dist/audit/types.js.map +1 -0
  34. package/dist/binder/binder.d.ts +34 -0
  35. package/dist/binder/binder.d.ts.map +1 -0
  36. package/dist/binder/binder.js +202 -0
  37. package/dist/binder/binder.js.map +1 -0
  38. package/dist/binder/index.d.ts +3 -0
  39. package/dist/binder/index.d.ts.map +1 -0
  40. package/dist/binder/index.js +2 -0
  41. package/dist/binder/index.js.map +1 -0
  42. package/dist/build-state/build-state.d.ts +40 -0
  43. package/dist/build-state/build-state.d.ts.map +1 -0
  44. package/dist/build-state/build-state.js +180 -0
  45. package/dist/build-state/build-state.js.map +1 -0
  46. package/dist/build-state/index.d.ts +3 -0
  47. package/dist/build-state/index.d.ts.map +1 -0
  48. package/dist/build-state/index.js +2 -0
  49. package/dist/build-state/index.js.map +1 -0
  50. package/dist/checker/index.d.ts +5 -0
  51. package/dist/checker/index.d.ts.map +1 -0
  52. package/dist/checker/index.js +3 -0
  53. package/dist/checker/index.js.map +1 -0
  54. package/dist/checker/type-checker.d.ts +8 -0
  55. package/dist/checker/type-checker.d.ts.map +1 -0
  56. package/dist/checker/type-checker.js +136 -0
  57. package/dist/checker/type-checker.js.map +1 -0
  58. package/dist/checker/validator.d.ts +8 -0
  59. package/dist/checker/validator.d.ts.map +1 -0
  60. package/dist/checker/validator.js +251 -0
  61. package/dist/checker/validator.js.map +1 -0
  62. package/dist/cli/agent-setup.d.ts +27 -0
  63. package/dist/cli/agent-setup.d.ts.map +1 -0
  64. package/dist/cli/agent-setup.js +829 -0
  65. package/dist/cli/agent-setup.js.map +1 -0
  66. package/dist/cli/analyze.d.ts +28 -0
  67. package/dist/cli/analyze.d.ts.map +1 -0
  68. package/dist/cli/analyze.js +188 -0
  69. package/dist/cli/analyze.js.map +1 -0
  70. package/dist/cli/checklist.d.ts +27 -0
  71. package/dist/cli/checklist.d.ts.map +1 -0
  72. package/dist/cli/checklist.js +153 -0
  73. package/dist/cli/checklist.js.map +1 -0
  74. package/dist/cli/compile.d.ts +26 -0
  75. package/dist/cli/compile.d.ts.map +1 -0
  76. package/dist/cli/compile.js +112 -0
  77. package/dist/cli/compile.js.map +1 -0
  78. package/dist/cli/dashboard.d.ts +19 -0
  79. package/dist/cli/dashboard.d.ts.map +1 -0
  80. package/dist/cli/dashboard.js +73 -0
  81. package/dist/cli/dashboard.js.map +1 -0
  82. package/dist/cli/explain.d.ts +23 -0
  83. package/dist/cli/explain.d.ts.map +1 -0
  84. package/dist/cli/explain.js +144 -0
  85. package/dist/cli/explain.js.map +1 -0
  86. package/dist/cli/git.d.ts +14 -0
  87. package/dist/cli/git.d.ts.map +1 -0
  88. package/dist/cli/git.js +44 -0
  89. package/dist/cli/git.js.map +1 -0
  90. package/dist/cli/lifecycle.d.ts +28 -0
  91. package/dist/cli/lifecycle.d.ts.map +1 -0
  92. package/dist/cli/lifecycle.js +82 -0
  93. package/dist/cli/lifecycle.js.map +1 -0
  94. package/dist/cli/main.d.ts +10 -0
  95. package/dist/cli/main.d.ts.map +1 -0
  96. package/dist/cli/main.js +1072 -0
  97. package/dist/cli/main.js.map +1 -0
  98. package/dist/cli/notify.d.ts +13 -0
  99. package/dist/cli/notify.d.ts.map +1 -0
  100. package/dist/cli/notify.js +36 -0
  101. package/dist/cli/notify.js.map +1 -0
  102. package/dist/cli/starters.d.ts +12 -0
  103. package/dist/cli/starters.d.ts.map +1 -0
  104. package/dist/cli/starters.js +439 -0
  105. package/dist/cli/starters.js.map +1 -0
  106. package/dist/config/config.d.ts +194 -0
  107. package/dist/config/config.d.ts.map +1 -0
  108. package/dist/config/config.js +434 -0
  109. package/dist/config/config.js.map +1 -0
  110. package/dist/config/index.d.ts +3 -0
  111. package/dist/config/index.d.ts.map +1 -0
  112. package/dist/config/index.js +5 -0
  113. package/dist/config/index.js.map +1 -0
  114. package/dist/diagnostics/diagnostic.d.ts +44 -0
  115. package/dist/diagnostics/diagnostic.d.ts.map +1 -0
  116. package/dist/diagnostics/diagnostic.js +44 -0
  117. package/dist/diagnostics/diagnostic.js.map +1 -0
  118. package/dist/diagnostics/index.d.ts +4 -0
  119. package/dist/diagnostics/index.d.ts.map +1 -0
  120. package/dist/diagnostics/index.js +3 -0
  121. package/dist/diagnostics/index.js.map +1 -0
  122. package/dist/diagnostics/reporter.d.ts +43 -0
  123. package/dist/diagnostics/reporter.d.ts.map +1 -0
  124. package/dist/diagnostics/reporter.js +74 -0
  125. package/dist/diagnostics/reporter.js.map +1 -0
  126. package/dist/discovery/discovery.d.ts +6 -0
  127. package/dist/discovery/discovery.d.ts.map +1 -0
  128. package/dist/discovery/discovery.js +66 -0
  129. package/dist/discovery/discovery.js.map +1 -0
  130. package/dist/discovery/index.d.ts +2 -0
  131. package/dist/discovery/index.d.ts.map +1 -0
  132. package/dist/discovery/index.js +2 -0
  133. package/dist/discovery/index.js.map +1 -0
  134. package/dist/doc-gen/doc-gen-types.d.ts +174 -0
  135. package/dist/doc-gen/doc-gen-types.d.ts.map +1 -0
  136. package/dist/doc-gen/doc-gen-types.js +7 -0
  137. package/dist/doc-gen/doc-gen-types.js.map +1 -0
  138. package/dist/doc-gen/doc-renderer.d.ts +17 -0
  139. package/dist/doc-gen/doc-renderer.d.ts.map +1 -0
  140. package/dist/doc-gen/doc-renderer.js +65 -0
  141. package/dist/doc-gen/doc-renderer.js.map +1 -0
  142. package/dist/doc-gen/format-helpers.d.ts +18 -0
  143. package/dist/doc-gen/format-helpers.d.ts.map +1 -0
  144. package/dist/doc-gen/format-helpers.js +92 -0
  145. package/dist/doc-gen/format-helpers.js.map +1 -0
  146. package/dist/doc-gen/index.d.ts +5 -0
  147. package/dist/doc-gen/index.d.ts.map +1 -0
  148. package/dist/doc-gen/index.js +5 -0
  149. package/dist/doc-gen/index.js.map +1 -0
  150. package/dist/doc-gen/link-resolver.d.ts +10 -0
  151. package/dist/doc-gen/link-resolver.d.ts.map +1 -0
  152. package/dist/doc-gen/link-resolver.js +87 -0
  153. package/dist/doc-gen/link-resolver.js.map +1 -0
  154. package/dist/doc-gen/mermaid-renderers.d.ts +12 -0
  155. package/dist/doc-gen/mermaid-renderers.d.ts.map +1 -0
  156. package/dist/doc-gen/mermaid-renderers.js +197 -0
  157. package/dist/doc-gen/mermaid-renderers.js.map +1 -0
  158. package/dist/doc-gen/module-renderer.d.ts +6 -0
  159. package/dist/doc-gen/module-renderer.d.ts.map +1 -0
  160. package/dist/doc-gen/module-renderer.js +54 -0
  161. package/dist/doc-gen/module-renderer.js.map +1 -0
  162. package/dist/doc-gen/product-renderer.d.ts +6 -0
  163. package/dist/doc-gen/product-renderer.d.ts.map +1 -0
  164. package/dist/doc-gen/product-renderer.js +101 -0
  165. package/dist/doc-gen/product-renderer.js.map +1 -0
  166. package/dist/doc-gen/section-renderers.d.ts +20 -0
  167. package/dist/doc-gen/section-renderers.d.ts.map +1 -0
  168. package/dist/doc-gen/section-renderers.js +357 -0
  169. package/dist/doc-gen/section-renderers.js.map +1 -0
  170. package/dist/doc-gen/string-resolver.d.ts +8 -0
  171. package/dist/doc-gen/string-resolver.d.ts.map +1 -0
  172. package/dist/doc-gen/string-resolver.js +47 -0
  173. package/dist/doc-gen/string-resolver.js.map +1 -0
  174. package/dist/doc-gen/surface-ascii.d.ts +7 -0
  175. package/dist/doc-gen/surface-ascii.d.ts.map +1 -0
  176. package/dist/doc-gen/surface-ascii.js +87 -0
  177. package/dist/doc-gen/surface-ascii.js.map +1 -0
  178. package/dist/drift/drift.d.ts +16 -0
  179. package/dist/drift/drift.d.ts.map +1 -0
  180. package/dist/drift/drift.js +149 -0
  181. package/dist/drift/drift.js.map +1 -0
  182. package/dist/drift/index.d.ts +3 -0
  183. package/dist/drift/index.d.ts.map +1 -0
  184. package/dist/drift/index.js +2 -0
  185. package/dist/drift/index.js.map +1 -0
  186. package/dist/extensions/index.d.ts +6 -0
  187. package/dist/extensions/index.d.ts.map +1 -0
  188. package/dist/extensions/index.js +7 -0
  189. package/dist/extensions/index.js.map +1 -0
  190. package/dist/extensions/loader.d.ts +21 -0
  191. package/dist/extensions/loader.d.ts.map +1 -0
  192. package/dist/extensions/loader.js +101 -0
  193. package/dist/extensions/loader.js.map +1 -0
  194. package/dist/extensions/marketplace.d.ts +22 -0
  195. package/dist/extensions/marketplace.d.ts.map +1 -0
  196. package/dist/extensions/marketplace.js +40 -0
  197. package/dist/extensions/marketplace.js.map +1 -0
  198. package/dist/extensions/registry.d.ts +45 -0
  199. package/dist/extensions/registry.d.ts.map +1 -0
  200. package/dist/extensions/registry.js +82 -0
  201. package/dist/extensions/registry.js.map +1 -0
  202. package/dist/extensions/types.d.ts +41 -0
  203. package/dist/extensions/types.d.ts.map +1 -0
  204. package/dist/extensions/types.js +5 -0
  205. package/dist/extensions/types.js.map +1 -0
  206. package/dist/generator/contracts.d.ts +67 -0
  207. package/dist/generator/contracts.d.ts.map +1 -0
  208. package/dist/generator/contracts.js +94 -0
  209. package/dist/generator/contracts.js.map +1 -0
  210. package/dist/generator/index.d.ts +3 -0
  211. package/dist/generator/index.d.ts.map +1 -0
  212. package/dist/generator/index.js +2 -0
  213. package/dist/generator/index.js.map +1 -0
  214. package/dist/governance/governance.d.ts +24 -0
  215. package/dist/governance/governance.d.ts.map +1 -0
  216. package/dist/governance/governance.js +238 -0
  217. package/dist/governance/governance.js.map +1 -0
  218. package/dist/governance/index.d.ts +3 -0
  219. package/dist/governance/index.d.ts.map +1 -0
  220. package/dist/governance/index.js +2 -0
  221. package/dist/governance/index.js.map +1 -0
  222. package/dist/governance/types.d.ts +14 -0
  223. package/dist/governance/types.d.ts.map +1 -0
  224. package/dist/governance/types.js +5 -0
  225. package/dist/governance/types.js.map +1 -0
  226. package/dist/graph/builder.d.ts +10 -0
  227. package/dist/graph/builder.d.ts.map +1 -0
  228. package/dist/graph/builder.js +573 -0
  229. package/dist/graph/builder.js.map +1 -0
  230. package/dist/graph/graph-types.d.ts +64 -0
  231. package/dist/graph/graph-types.d.ts.map +1 -0
  232. package/dist/graph/graph-types.js +29 -0
  233. package/dist/graph/graph-types.js.map +1 -0
  234. package/dist/graph/index.d.ts +8 -0
  235. package/dist/graph/index.d.ts.map +1 -0
  236. package/dist/graph/index.js +5 -0
  237. package/dist/graph/index.js.map +1 -0
  238. package/dist/graph/serializer.d.ts +9 -0
  239. package/dist/graph/serializer.d.ts.map +1 -0
  240. package/dist/graph/serializer.js +31 -0
  241. package/dist/graph/serializer.js.map +1 -0
  242. package/dist/graph/validator.d.ts +14 -0
  243. package/dist/graph/validator.d.ts.map +1 -0
  244. package/dist/graph/validator.js +96 -0
  245. package/dist/graph/validator.js.map +1 -0
  246. package/dist/implement/implement.d.ts +30 -0
  247. package/dist/implement/implement.d.ts.map +1 -0
  248. package/dist/implement/implement.js +299 -0
  249. package/dist/implement/implement.js.map +1 -0
  250. package/dist/implement/index.d.ts +3 -0
  251. package/dist/implement/index.d.ts.map +1 -0
  252. package/dist/implement/index.js +2 -0
  253. package/dist/implement/index.js.map +1 -0
  254. package/dist/implement/types.d.ts +41 -0
  255. package/dist/implement/types.d.ts.map +1 -0
  256. package/dist/implement/types.js +5 -0
  257. package/dist/implement/types.js.map +1 -0
  258. package/dist/incremental/incremental-spec.d.ts +12 -0
  259. package/dist/incremental/incremental-spec.d.ts.map +1 -0
  260. package/dist/incremental/incremental-spec.js +100 -0
  261. package/dist/incremental/incremental-spec.js.map +1 -0
  262. package/dist/incremental/index.d.ts +3 -0
  263. package/dist/incremental/index.d.ts.map +1 -0
  264. package/dist/incremental/index.js +5 -0
  265. package/dist/incremental/index.js.map +1 -0
  266. package/dist/incremental/types.d.ts +28 -0
  267. package/dist/incremental/types.d.ts.map +1 -0
  268. package/dist/incremental/types.js +7 -0
  269. package/dist/incremental/types.js.map +1 -0
  270. package/dist/index.d.ts +106 -0
  271. package/dist/index.d.ts.map +1 -0
  272. package/dist/index.js +106 -0
  273. package/dist/index.js.map +1 -0
  274. package/dist/lexer/index.d.ts +6 -0
  275. package/dist/lexer/index.d.ts.map +1 -0
  276. package/dist/lexer/index.js +5 -0
  277. package/dist/lexer/index.js.map +1 -0
  278. package/dist/lexer/keywords.d.ts +3 -0
  279. package/dist/lexer/keywords.d.ts.map +1 -0
  280. package/dist/lexer/keywords.js +142 -0
  281. package/dist/lexer/keywords.js.map +1 -0
  282. package/dist/lexer/lexer.d.ts +19 -0
  283. package/dist/lexer/lexer.d.ts.map +1 -0
  284. package/dist/lexer/lexer.js +286 -0
  285. package/dist/lexer/lexer.js.map +1 -0
  286. package/dist/lexer/source.d.ts +13 -0
  287. package/dist/lexer/source.d.ts.map +1 -0
  288. package/dist/lexer/source.js +59 -0
  289. package/dist/lexer/source.js.map +1 -0
  290. package/dist/lexer/tokens.d.ts +157 -0
  291. package/dist/lexer/tokens.d.ts.map +1 -0
  292. package/dist/lexer/tokens.js +173 -0
  293. package/dist/lexer/tokens.js.map +1 -0
  294. package/dist/orchestrator/index.d.ts +5 -0
  295. package/dist/orchestrator/index.d.ts.map +1 -0
  296. package/dist/orchestrator/index.js +3 -0
  297. package/dist/orchestrator/index.js.map +1 -0
  298. package/dist/orchestrator/orchestrator.d.ts +14 -0
  299. package/dist/orchestrator/orchestrator.d.ts.map +1 -0
  300. package/dist/orchestrator/orchestrator.js +129 -0
  301. package/dist/orchestrator/orchestrator.js.map +1 -0
  302. package/dist/orchestrator/pipeline.d.ts +31 -0
  303. package/dist/orchestrator/pipeline.d.ts.map +1 -0
  304. package/dist/orchestrator/pipeline.js +290 -0
  305. package/dist/orchestrator/pipeline.js.map +1 -0
  306. package/dist/orchestrator/types.d.ts +60 -0
  307. package/dist/orchestrator/types.d.ts.map +1 -0
  308. package/dist/orchestrator/types.js +8 -0
  309. package/dist/orchestrator/types.js.map +1 -0
  310. package/dist/parser/ast.d.ts +502 -0
  311. package/dist/parser/ast.d.ts.map +1 -0
  312. package/dist/parser/ast.js +7 -0
  313. package/dist/parser/ast.js.map +1 -0
  314. package/dist/parser/expressions.d.ts +18 -0
  315. package/dist/parser/expressions.d.ts.map +1 -0
  316. package/dist/parser/expressions.js +230 -0
  317. package/dist/parser/expressions.js.map +1 -0
  318. package/dist/parser/index.d.ts +4 -0
  319. package/dist/parser/index.d.ts.map +1 -0
  320. package/dist/parser/index.js +2 -0
  321. package/dist/parser/index.js.map +1 -0
  322. package/dist/parser/parser.d.ts +83 -0
  323. package/dist/parser/parser.d.ts.map +1 -0
  324. package/dist/parser/parser.js +2149 -0
  325. package/dist/parser/parser.js.map +1 -0
  326. package/dist/planner/differ.d.ts +4 -0
  327. package/dist/planner/differ.d.ts.map +1 -0
  328. package/dist/planner/differ.js +96 -0
  329. package/dist/planner/differ.js.map +1 -0
  330. package/dist/planner/index.d.ts +7 -0
  331. package/dist/planner/index.d.ts.map +1 -0
  332. package/dist/planner/index.js +5 -0
  333. package/dist/planner/index.js.map +1 -0
  334. package/dist/planner/plan-types.d.ts +26 -0
  335. package/dist/planner/plan-types.d.ts.map +1 -0
  336. package/dist/planner/plan-types.js +5 -0
  337. package/dist/planner/plan-types.js.map +1 -0
  338. package/dist/planner/planner.d.ts +8 -0
  339. package/dist/planner/planner.d.ts.map +1 -0
  340. package/dist/planner/planner.js +83 -0
  341. package/dist/planner/planner.js.map +1 -0
  342. package/dist/planner/propagator.d.ts +4 -0
  343. package/dist/planner/propagator.d.ts.map +1 -0
  344. package/dist/planner/propagator.js +45 -0
  345. package/dist/planner/propagator.js.map +1 -0
  346. package/dist/planner/semantic-diff.d.ts +27 -0
  347. package/dist/planner/semantic-diff.d.ts.map +1 -0
  348. package/dist/planner/semantic-diff.js +253 -0
  349. package/dist/planner/semantic-diff.js.map +1 -0
  350. package/dist/presets/index.d.ts +3 -0
  351. package/dist/presets/index.d.ts.map +1 -0
  352. package/dist/presets/index.js +5 -0
  353. package/dist/presets/index.js.map +1 -0
  354. package/dist/presets/loader.d.ts +28 -0
  355. package/dist/presets/loader.d.ts.map +1 -0
  356. package/dist/presets/loader.js +99 -0
  357. package/dist/presets/loader.js.map +1 -0
  358. package/dist/presets/types.d.ts +21 -0
  359. package/dist/presets/types.d.ts.map +1 -0
  360. package/dist/presets/types.js +5 -0
  361. package/dist/presets/types.js.map +1 -0
  362. package/dist/proposal/index.d.ts +3 -0
  363. package/dist/proposal/index.d.ts.map +1 -0
  364. package/dist/proposal/index.js +7 -0
  365. package/dist/proposal/index.js.map +1 -0
  366. package/dist/proposal/proposal.d.ts +9 -0
  367. package/dist/proposal/proposal.d.ts.map +1 -0
  368. package/dist/proposal/proposal.js +169 -0
  369. package/dist/proposal/proposal.js.map +1 -0
  370. package/dist/proposal/types.d.ts +15 -0
  371. package/dist/proposal/types.d.ts.map +1 -0
  372. package/dist/proposal/types.js +5 -0
  373. package/dist/proposal/types.js.map +1 -0
  374. package/dist/registry/index.d.ts +3 -0
  375. package/dist/registry/index.d.ts.map +1 -0
  376. package/dist/registry/index.js +2 -0
  377. package/dist/registry/index.js.map +1 -0
  378. package/dist/registry/resolution.d.ts +39 -0
  379. package/dist/registry/resolution.d.ts.map +1 -0
  380. package/dist/registry/resolution.js +70 -0
  381. package/dist/registry/resolution.js.map +1 -0
  382. package/dist/reviewers/adversarial.d.ts +3 -0
  383. package/dist/reviewers/adversarial.d.ts.map +1 -0
  384. package/dist/reviewers/adversarial.js +111 -0
  385. package/dist/reviewers/adversarial.js.map +1 -0
  386. package/dist/reviewers/architecture.d.ts +3 -0
  387. package/dist/reviewers/architecture.d.ts.map +1 -0
  388. package/dist/reviewers/architecture.js +71 -0
  389. package/dist/reviewers/architecture.js.map +1 -0
  390. package/dist/reviewers/code-quality.d.ts +3 -0
  391. package/dist/reviewers/code-quality.d.ts.map +1 -0
  392. package/dist/reviewers/code-quality.js +72 -0
  393. package/dist/reviewers/code-quality.js.map +1 -0
  394. package/dist/reviewers/edge-case.d.ts +3 -0
  395. package/dist/reviewers/edge-case.d.ts.map +1 -0
  396. package/dist/reviewers/edge-case.js +107 -0
  397. package/dist/reviewers/edge-case.js.map +1 -0
  398. package/dist/reviewers/index.d.ts +21 -0
  399. package/dist/reviewers/index.d.ts.map +1 -0
  400. package/dist/reviewers/index.js +39 -0
  401. package/dist/reviewers/index.js.map +1 -0
  402. package/dist/reviewers/prompt-loader.d.ts +24 -0
  403. package/dist/reviewers/prompt-loader.d.ts.map +1 -0
  404. package/dist/reviewers/prompt-loader.js +67 -0
  405. package/dist/reviewers/prompt-loader.js.map +1 -0
  406. package/dist/reviewers/quality.d.ts +3 -0
  407. package/dist/reviewers/quality.d.ts.map +1 -0
  408. package/dist/reviewers/quality.js +76 -0
  409. package/dist/reviewers/quality.js.map +1 -0
  410. package/dist/reviewers/reviewer.d.ts +39 -0
  411. package/dist/reviewers/reviewer.d.ts.map +1 -0
  412. package/dist/reviewers/reviewer.js +149 -0
  413. package/dist/reviewers/reviewer.js.map +1 -0
  414. package/dist/reviewers/security.d.ts +3 -0
  415. package/dist/reviewers/security.d.ts.map +1 -0
  416. package/dist/reviewers/security.js +87 -0
  417. package/dist/reviewers/security.js.map +1 -0
  418. package/dist/reviewers/specification.d.ts +3 -0
  419. package/dist/reviewers/specification.d.ts.map +1 -0
  420. package/dist/reviewers/specification.js +79 -0
  421. package/dist/reviewers/specification.js.map +1 -0
  422. package/dist/reviewers/test-quality.d.ts +3 -0
  423. package/dist/reviewers/test-quality.d.ts.map +1 -0
  424. package/dist/reviewers/test-quality.js +88 -0
  425. package/dist/reviewers/test-quality.js.map +1 -0
  426. package/dist/reviewers/types.d.ts +32 -0
  427. package/dist/reviewers/types.d.ts.map +1 -0
  428. package/dist/reviewers/types.js +5 -0
  429. package/dist/reviewers/types.js.map +1 -0
  430. package/dist/reviewers/ux.d.ts +3 -0
  431. package/dist/reviewers/ux.d.ts.map +1 -0
  432. package/dist/reviewers/ux.js +94 -0
  433. package/dist/reviewers/ux.js.map +1 -0
  434. package/dist/runtime/index.d.ts +3 -0
  435. package/dist/runtime/index.d.ts.map +1 -0
  436. package/dist/runtime/index.js +2 -0
  437. package/dist/runtime/index.js.map +1 -0
  438. package/dist/runtime/resolution.d.ts +30 -0
  439. package/dist/runtime/resolution.d.ts.map +1 -0
  440. package/dist/runtime/resolution.js +59 -0
  441. package/dist/runtime/resolution.js.map +1 -0
  442. package/dist/testing/index.d.ts +3 -0
  443. package/dist/testing/index.d.ts.map +1 -0
  444. package/dist/testing/index.js +2 -0
  445. package/dist/testing/index.js.map +1 -0
  446. package/dist/testing/test-runner.d.ts +18 -0
  447. package/dist/testing/test-runner.d.ts.map +1 -0
  448. package/dist/testing/test-runner.js +131 -0
  449. package/dist/testing/test-runner.js.map +1 -0
  450. package/dist/types.d.ts +36 -0
  451. package/dist/types.d.ts.map +1 -0
  452. package/dist/types.js +127 -0
  453. package/dist/types.js.map +1 -0
  454. package/dist/validation/index.d.ts +3 -0
  455. package/dist/validation/index.d.ts.map +1 -0
  456. package/dist/validation/index.js +2 -0
  457. package/dist/validation/index.js.map +1 -0
  458. package/dist/validation/types.d.ts +16 -0
  459. package/dist/validation/types.d.ts.map +1 -0
  460. package/dist/validation/types.js +5 -0
  461. package/dist/validation/types.js.map +1 -0
  462. package/dist/validation/validation.d.ts +8 -0
  463. package/dist/validation/validation.d.ts.map +1 -0
  464. package/dist/validation/validation.js +101 -0
  465. package/dist/validation/validation.js.map +1 -0
  466. package/dist/verification/index.d.ts +3 -0
  467. package/dist/verification/index.d.ts.map +1 -0
  468. package/dist/verification/index.js +5 -0
  469. package/dist/verification/index.js.map +1 -0
  470. package/dist/verification/types.d.ts +14 -0
  471. package/dist/verification/types.d.ts.map +1 -0
  472. package/dist/verification/types.js +5 -0
  473. package/dist/verification/types.js.map +1 -0
  474. package/dist/verification/verify.d.ts +7 -0
  475. package/dist/verification/verify.d.ts.map +1 -0
  476. package/dist/verification/verify.js +127 -0
  477. package/dist/verification/verify.js.map +1 -0
  478. package/dist/workflow/clarify.d.ts +7 -0
  479. package/dist/workflow/clarify.d.ts.map +1 -0
  480. package/dist/workflow/clarify.js +165 -0
  481. package/dist/workflow/clarify.js.map +1 -0
  482. package/dist/workflow/engine.d.ts +19 -0
  483. package/dist/workflow/engine.d.ts.map +1 -0
  484. package/dist/workflow/engine.js +265 -0
  485. package/dist/workflow/engine.js.map +1 -0
  486. package/dist/workflow/index.d.ts +6 -0
  487. package/dist/workflow/index.d.ts.map +1 -0
  488. package/dist/workflow/index.js +7 -0
  489. package/dist/workflow/index.js.map +1 -0
  490. package/dist/workflow/types.d.ts +95 -0
  491. package/dist/workflow/types.d.ts.map +1 -0
  492. package/dist/workflow/types.js +18 -0
  493. package/dist/workflow/types.js.map +1 -0
  494. package/package.json +63 -0
@@ -0,0 +1,87 @@
1
+ // ---------------------------------------------------------------------------
2
+ // Prodara Compiler — Security Reviewer
3
+ // ---------------------------------------------------------------------------
4
+ // Validates security posture: authorization coverage, credential handling,
5
+ // input validation, and injection risk across the product graph.
6
+ export const securityReviewer = {
7
+ name: 'security',
8
+ description: 'Validates authorization, credential handling, and input validation',
9
+ review(graph, _spec) {
10
+ const findings = [];
11
+ for (const mod of graph.modules) {
12
+ // Check: workflows that modify entities should have authorization
13
+ for (const wf of getNodeArray(mod, 'workflows')) {
14
+ const modifiesEntity = graph.edges.some((e) => e.from === wf.id && e.kind === 'writes');
15
+ const hasAuth = graph.edges.some((e) => e.from === wf.id && e.kind === 'authorized_as');
16
+ if (modifiesEntity && !hasAuth) {
17
+ findings.push({
18
+ reviewer: 'security',
19
+ severity: 'error',
20
+ category: 'missing_authorization',
21
+ nodeId: wf.id,
22
+ message: `Workflow "${wf.name}" modifies entities but has no authorization`,
23
+ suggestion: 'Add authorization to restrict who can modify data',
24
+ });
25
+ }
26
+ }
27
+ // Check: entities with sensitive-sounding fields should have access controls
28
+ for (const ent of getNodeArray(mod, 'entities')) {
29
+ const fields = getFieldNames(mod, ent.id);
30
+ const sensitiveFields = fields.filter((f) => /password|secret|token|api_key|credit_card|ssn/i.test(f));
31
+ if (sensitiveFields.length > 0) {
32
+ const hasAccess = graph.edges.some((e) => e.to === ent.id && e.kind === 'authorized_as');
33
+ if (!hasAccess) {
34
+ findings.push({
35
+ reviewer: 'security',
36
+ severity: 'warning',
37
+ category: 'sensitive_data',
38
+ nodeId: ent.id,
39
+ message: `Entity "${ent.name}" has sensitive field(s) [${sensitiveFields.join(', ')}] without access control`,
40
+ suggestion: 'Add authorization rules to protect sensitive data',
41
+ });
42
+ }
43
+ }
44
+ }
45
+ }
46
+ // Check: exposed APIs (publishes) should have authorization
47
+ if (graph.product.publishes) {
48
+ for (const [_channel, events] of Object.entries(graph.product.publishes)) {
49
+ for (const event of events) {
50
+ const hasAuth = graph.edges.some((e) => e.from === event && e.kind === 'authorized_as');
51
+ if (!hasAuth) {
52
+ findings.push({
53
+ reviewer: 'security',
54
+ severity: 'warning',
55
+ category: 'exposed_without_auth',
56
+ nodeId: event,
57
+ message: `Published event "${event}" has no authorization`,
58
+ suggestion: 'Add authorization to published interfaces',
59
+ });
60
+ }
61
+ }
62
+ }
63
+ }
64
+ return findings;
65
+ },
66
+ };
67
+ function getNodeArray(mod, category) {
68
+ const val = mod[category];
69
+ if (!Array.isArray(val))
70
+ return [];
71
+ return val;
72
+ }
73
+ function getFieldNames(mod, entityId) {
74
+ const entities = getNodeArray(mod, 'entities');
75
+ const entity = entities.find((e) => e.id === entityId);
76
+ /* v8 ignore next */
77
+ if (!entity)
78
+ return [];
79
+ const raw = entity;
80
+ const fields = raw['fields'];
81
+ if (!Array.isArray(fields))
82
+ return [];
83
+ return fields
84
+ .filter((f) => typeof f === 'object' && f !== null && 'name' in f)
85
+ .map((f) => f.name);
86
+ }
87
+ //# sourceMappingURL=security.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"security.js","sourceRoot":"","sources":["../../src/reviewers/security.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { ReviewerAgent } from './reviewer.js';
2
+ export declare const specificationReviewer: ReviewerAgent;
3
+ //# sourceMappingURL=specification.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"specification.d.ts","sourceRoot":"","sources":["../../src/reviewers/specification.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAEnD,eAAO,MAAM,qBAAqB,EAAE,aA0EnC,CAAC"}
@@ -0,0 +1,79 @@
1
+ // ---------------------------------------------------------------------------
2
+ // Prodara Compiler — Specification Reviewer
3
+ // ---------------------------------------------------------------------------
4
+ // Validates specification completeness: all modules referenced in product,
5
+ // imports resolved, surfaces have actions, and required constructs present.
6
+ export const specificationReviewer = {
7
+ name: 'specification',
8
+ description: 'Validates specification completeness and reference integrity',
9
+ review(graph, _spec) {
10
+ const findings = [];
11
+ // Check: product lists all modules
12
+ const declaredModuleIds = new Set(graph.product.modules);
13
+ for (const mod of graph.modules) {
14
+ if (!declaredModuleIds.has(mod.id)) {
15
+ findings.push({
16
+ reviewer: 'specification',
17
+ severity: 'error',
18
+ category: 'unlisted_module',
19
+ nodeId: mod.id,
20
+ message: `Module "${mod.name}" exists in graph but is not listed in the product declaration`,
21
+ suggestion: 'Add the module to the product block',
22
+ });
23
+ }
24
+ }
25
+ for (const modId of declaredModuleIds) {
26
+ if (!graph.modules.some((m) => m.id === modId)) {
27
+ findings.push({
28
+ reviewer: 'specification',
29
+ severity: 'error',
30
+ category: 'missing_module',
31
+ nodeId: modId,
32
+ message: `Product references module "${modId}" which does not exist`,
33
+ suggestion: 'Create the module or remove the reference',
34
+ });
35
+ }
36
+ }
37
+ // Check: all imports are resolved
38
+ for (const mod of graph.modules) {
39
+ for (const imp of mod.imports) {
40
+ const targetModName = imp.from;
41
+ const targetMod = graph.modules.find((m) => m.name === targetModName);
42
+ if (!targetMod) {
43
+ findings.push({
44
+ reviewer: 'specification',
45
+ severity: 'error',
46
+ category: 'unresolved_import',
47
+ nodeId: mod.id,
48
+ message: `Module "${mod.name}" imports "${imp.symbol}" from "${targetModName}" which cannot be found`,
49
+ });
50
+ }
51
+ }
52
+ }
53
+ // Check: surfaces should have at least one action edge
54
+ for (const mod of graph.modules) {
55
+ const surfaces = getNodeArray(mod, 'surfaces');
56
+ for (const surface of surfaces) {
57
+ const hasAction = graph.edges.some((e) => e.from === surface.id && e.kind === 'exposes_action');
58
+ if (!hasAction) {
59
+ findings.push({
60
+ reviewer: 'specification',
61
+ severity: 'warning',
62
+ category: 'actionless_surface',
63
+ nodeId: surface.id,
64
+ message: `Surface "${surface.name}" in module "${mod.name}" exposes no actions`,
65
+ suggestion: 'Add action bindings to the surface',
66
+ });
67
+ }
68
+ }
69
+ }
70
+ return findings;
71
+ },
72
+ };
73
+ function getNodeArray(mod, category) {
74
+ const val = mod[category];
75
+ if (!Array.isArray(val))
76
+ return [];
77
+ return val;
78
+ }
79
+ //# sourceMappingURL=specification.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"specification.js","sourceRoot":"","sources":["../../src/reviewers/specification.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { ReviewerAgent } from './reviewer.js';
2
+ export declare const testQualityReviewer: ReviewerAgent;
3
+ //# sourceMappingURL=test-quality.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-quality.d.ts","sourceRoot":"","sources":["../../src/reviewers/test-quality.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAEnD,eAAO,MAAM,mBAAmB,EAAE,aAuFjC,CAAC"}
@@ -0,0 +1,88 @@
1
+ // ---------------------------------------------------------------------------
2
+ // Prodara Compiler — Test Quality Reviewer
3
+ // ---------------------------------------------------------------------------
4
+ // Validates test coverage and quality: spec test presence, test-to-entity
5
+ // ratio, workflow test coverage, and missing edge case detection.
6
+ export const testQualityReviewer = {
7
+ name: 'testQuality',
8
+ description: 'Validates test coverage, test-to-entity ratio, and spec test quality',
9
+ review(graph, spec) {
10
+ const findings = [];
11
+ let totalEntities = 0;
12
+ let totalTests = 0;
13
+ for (const mod of graph.modules) {
14
+ const entities = getNodeArray(mod, 'entities');
15
+ const tests = getNodeArray(mod, 'tests');
16
+ totalEntities += entities.length;
17
+ totalTests += tests.length;
18
+ // Check: modules with entities should have spec tests
19
+ if (entities.length > 0 && tests.length === 0) {
20
+ findings.push({
21
+ reviewer: 'testQuality',
22
+ severity: 'warning',
23
+ category: 'missing_tests',
24
+ nodeId: mod.id,
25
+ message: `Module "${mod.name}" has ${entities.length} entities but no spec tests`,
26
+ suggestion: 'Add test blocks to validate entity behavior and rules',
27
+ });
28
+ }
29
+ // Check: test-to-entity ratio (at least 1 test per entity)
30
+ if (entities.length > 0 && tests.length > 0 && tests.length < entities.length) {
31
+ findings.push({
32
+ reviewer: 'testQuality',
33
+ severity: 'info',
34
+ category: 'low_test_ratio',
35
+ nodeId: mod.id,
36
+ message: `Module "${mod.name}" has ${tests.length} test(s) for ${entities.length} entities`,
37
+ suggestion: 'Consider adding tests for each entity to improve coverage',
38
+ });
39
+ }
40
+ // Check: workflows should have associated tests
41
+ const workflows = getNodeArray(mod, 'workflows');
42
+ for (const wf of workflows) {
43
+ const hasTest = graph.edges.some((e) => e.to === wf.id && e.kind === 'tests');
44
+ if (!hasTest && tests.length > 0) {
45
+ findings.push({
46
+ reviewer: 'testQuality',
47
+ severity: 'info',
48
+ category: 'untested_workflow',
49
+ nodeId: wf.id,
50
+ message: `Workflow "${wf.name}" in module "${mod.name}" has no associated test`,
51
+ suggestion: 'Add a test block to validate this workflow',
52
+ });
53
+ }
54
+ }
55
+ }
56
+ // Check: global test ratio
57
+ if (totalEntities > 3 && totalTests === 0) {
58
+ findings.push({
59
+ reviewer: 'testQuality',
60
+ severity: 'error',
61
+ category: 'no_tests',
62
+ message: `Product has ${totalEntities} entities but no spec tests at all`,
63
+ suggestion: 'Add test blocks to validate product behavior',
64
+ });
65
+ }
66
+ // Check: new/modified nodes in spec should have tests
67
+ const modifiedNodes = spec.tasks
68
+ .filter((t) => t.action === 'generate' || t.action === 'regenerate')
69
+ .map((t) => t.nodeId);
70
+ if (modifiedNodes.length > 0 && totalTests === 0) {
71
+ findings.push({
72
+ reviewer: 'testQuality',
73
+ severity: 'warning',
74
+ category: 'changes_without_tests',
75
+ message: `${modifiedNodes.length} node(s) changed but no spec tests exist to catch regressions`,
76
+ suggestion: 'Add tests for changed nodes to prevent regressions',
77
+ });
78
+ }
79
+ return findings;
80
+ },
81
+ };
82
+ function getNodeArray(mod, category) {
83
+ const val = mod[category];
84
+ if (!Array.isArray(val))
85
+ return [];
86
+ return val;
87
+ }
88
+ //# sourceMappingURL=test-quality.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-quality.js","sourceRoot":"","sources":["../../src/reviewers/test-quality.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ import type { AgentStatus } from '../agent/types.js';
2
+ export type FindingSeverity = 'info' | 'warning' | 'error' | 'critical';
3
+ export interface ReviewFinding {
4
+ readonly reviewer: string;
5
+ readonly severity: FindingSeverity;
6
+ readonly category: string;
7
+ readonly nodeId?: string;
8
+ readonly message: string;
9
+ readonly suggestion?: string;
10
+ }
11
+ export interface ReviewResult {
12
+ readonly reviewer: string;
13
+ readonly passed: boolean;
14
+ readonly findings: readonly ReviewFinding[];
15
+ }
16
+ export interface FixAttemptResult {
17
+ readonly iteration: number;
18
+ readonly status: AgentStatus;
19
+ readonly findingsAddressed: number;
20
+ readonly duration_ms: number;
21
+ }
22
+ export interface ReviewCycleResult {
23
+ readonly iteration: number;
24
+ readonly results: readonly ReviewResult[];
25
+ readonly accepted: boolean;
26
+ readonly totalFindings: number;
27
+ readonly criticalCount: number;
28
+ readonly errorCount: number;
29
+ readonly warningCount: number;
30
+ readonly fixAttempt: FixAttemptResult | null;
31
+ }
32
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/reviewers/types.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,GAAG,UAAU,CAAC;AAExE,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC;IACnC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,SAAS,aAAa,EAAE,CAAC;CAC7C;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,SAAS,YAAY,EAAE,CAAC;IAC1C,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,UAAU,EAAE,gBAAgB,GAAG,IAAI,CAAC;CAC9C"}
@@ -0,0 +1,5 @@
1
+ // ---------------------------------------------------------------------------
2
+ // Prodara Compiler — Reviewer Types
3
+ // ---------------------------------------------------------------------------
4
+ export {};
5
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/reviewers/types.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,oCAAoC;AACpC,8EAA8E"}
@@ -0,0 +1,3 @@
1
+ import type { ReviewerAgent } from './reviewer.js';
2
+ export declare const uxReviewer: ReviewerAgent;
3
+ //# sourceMappingURL=ux.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ux.d.ts","sourceRoot":"","sources":["../../src/reviewers/ux.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAEnD,eAAO,MAAM,UAAU,EAAE,aAoExB,CAAC"}
@@ -0,0 +1,94 @@
1
+ // ---------------------------------------------------------------------------
2
+ // Prodara Compiler — UX Reviewer
3
+ // ---------------------------------------------------------------------------
4
+ // Validates UX quality: surfaces have actions, forms have validation rules,
5
+ // renderings are referenced, and design tokens are present when surfaces exist.
6
+ export const uxReviewer = {
7
+ name: 'ux',
8
+ description: 'Validates UX completeness: surfaces, renderings, tokens, and forms',
9
+ review(graph, _spec) {
10
+ const findings = [];
11
+ for (const mod of graph.modules) {
12
+ const surfaces = getNodeArray(mod, 'surfaces');
13
+ const renderings = getNodeArray(mod, 'renderings');
14
+ const tokens = getNodeArray(mod, 'tokens');
15
+ // Check: surfaces should have renderings
16
+ const renderingTargets = new Set(graph.edges
17
+ .filter((e) => e.kind === 'targets_surface')
18
+ .map((e) => e.to));
19
+ for (const surface of surfaces) {
20
+ if (!renderingTargets.has(surface.id)) {
21
+ findings.push({
22
+ reviewer: 'ux',
23
+ severity: 'info',
24
+ category: 'missing_rendering',
25
+ nodeId: surface.id,
26
+ message: `Surface "${surface.name}" in module "${mod.name}" has no rendering targeting it`,
27
+ suggestion: 'Add a rendering block for visual specification',
28
+ });
29
+ }
30
+ }
31
+ // Check: if module has surfaces, it should have design tokens
32
+ if (surfaces.length > 0 && tokens.length === 0) {
33
+ findings.push({
34
+ reviewer: 'ux',
35
+ severity: 'info',
36
+ category: 'missing_tokens',
37
+ nodeId: mod.id,
38
+ message: `Module "${mod.name}" has surfaces but no design tokens`,
39
+ suggestion: 'Add tokens for consistent visual styling',
40
+ });
41
+ }
42
+ // Check: renderings should reference a surface
43
+ const rendSurfaceEdges = new Set(graph.edges
44
+ .filter((e) => e.kind === 'targets_surface')
45
+ .map((e) => e.from));
46
+ for (const rendering of renderings) {
47
+ if (!rendSurfaceEdges.has(rendering.id)) {
48
+ findings.push({
49
+ reviewer: 'ux',
50
+ severity: 'warning',
51
+ category: 'unbound_rendering',
52
+ nodeId: rendering.id,
53
+ message: `Rendering "${rendering.name}" in module "${mod.name}" does not target any surface`,
54
+ suggestion: 'Bind the rendering to a surface with targets_surface',
55
+ });
56
+ }
57
+ }
58
+ // Check: surfaces with form-like actions should use rules for validation
59
+ checkFormValidation(graph, mod, surfaces, findings);
60
+ }
61
+ return findings;
62
+ },
63
+ };
64
+ function getNodeArray(mod, category) {
65
+ const val = mod[category];
66
+ if (!Array.isArray(val))
67
+ return [];
68
+ return val;
69
+ }
70
+ function checkFormValidation(graph, mod, surfaces, findings) {
71
+ // Look for surfaces associated with actions that write data (create/update patterns)
72
+ for (const surface of surfaces) {
73
+ const actionEdges = graph.edges.filter((e) => e.from === surface.id && e.kind === 'exposes_action');
74
+ if (actionEdges.length === 0)
75
+ continue;
76
+ // Check if any exposed action writes data
77
+ const writingActions = actionEdges.filter((ae) => graph.edges.some((e) => e.from === ae.to && e.kind === 'writes'));
78
+ if (writingActions.length > 0) {
79
+ // Surface exposes write-actions → should use rules
80
+ const hasRuleEdge = graph.edges.some((e) => e.from === surface.id && e.kind === 'uses_rule');
81
+ if (!hasRuleEdge) {
82
+ findings.push({
83
+ reviewer: 'ux',
84
+ severity: 'info',
85
+ category: 'form_missing_rules',
86
+ nodeId: surface.id,
87
+ message: `Surface "${surface.name}" in module "${mod.name}" exposes write actions but has no validation rules`,
88
+ suggestion: 'Add uses_rule edges for form validation',
89
+ });
90
+ }
91
+ }
92
+ }
93
+ }
94
+ //# sourceMappingURL=ux.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ux.js","sourceRoot":"","sources":["../../src/reviewers/ux.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export { resolveRuntime } from './resolution.js';
2
+ export type { ResolvedSecret, ResolvedEnvironment, ResolvedDeployment, RuntimeResolutionResult } from './resolution.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/runtime/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,YAAY,EAAE,cAAc,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { resolveRuntime } from './resolution.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/runtime/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,30 @@
1
+ import type { AstFile } from '../parser/ast.js';
2
+ import { DiagnosticBag } from '../diagnostics/diagnostic.js';
3
+ export interface ResolvedSecret {
4
+ readonly id: string;
5
+ readonly name: string;
6
+ readonly source: string;
7
+ readonly description: string | null;
8
+ }
9
+ export interface ResolvedEnvironment {
10
+ readonly id: string;
11
+ readonly name: string;
12
+ readonly url: string | null;
13
+ readonly secrets: readonly {
14
+ name: string;
15
+ resolvedSource: string;
16
+ }[];
17
+ }
18
+ export interface ResolvedDeployment {
19
+ readonly id: string;
20
+ readonly name: string;
21
+ readonly environments: readonly string[];
22
+ }
23
+ export interface RuntimeResolutionResult {
24
+ readonly secrets: readonly ResolvedSecret[];
25
+ readonly environments: readonly ResolvedEnvironment[];
26
+ readonly deployments: readonly ResolvedDeployment[];
27
+ readonly bag: DiagnosticBag;
28
+ }
29
+ export declare function resolveRuntime(files: readonly AstFile[]): RuntimeResolutionResult;
30
+ //# sourceMappingURL=resolution.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolution.d.ts","sourceRoot":"","sources":["../../src/runtime/resolution.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,OAAO,EAA+C,MAAM,kBAAkB,CAAC;AAC7F,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAK7D,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CACrC;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,SAAS;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CACvE;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;CAC1C;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,OAAO,EAAE,SAAS,cAAc,EAAE,CAAC;IAC5C,QAAQ,CAAC,YAAY,EAAE,SAAS,mBAAmB,EAAE,CAAC;IACtD,QAAQ,CAAC,WAAW,EAAE,SAAS,kBAAkB,EAAE,CAAC;IACpD,QAAQ,CAAC,GAAG,EAAE,aAAa,CAAC;CAC7B;AAKD,wBAAgB,cAAc,CAAC,KAAK,EAAE,SAAS,OAAO,EAAE,GAAG,uBAAuB,CA0CjF"}
@@ -0,0 +1,59 @@
1
+ // ---------------------------------------------------------------------------
2
+ // Prodara Compiler — Runtime Resolution
3
+ // ---------------------------------------------------------------------------
4
+ // Resolves secrets, environments, and deployments from the Product Graph.
5
+ import { DiagnosticBag } from '../diagnostics/diagnostic.js';
6
+ // ---------------------------------------------------------------------------
7
+ // Resolve
8
+ // ---------------------------------------------------------------------------
9
+ export function resolveRuntime(files) {
10
+ const bag = new DiagnosticBag();
11
+ const secrets = [];
12
+ const environments = [];
13
+ const deployments = [];
14
+ for (const file of files) {
15
+ for (const decl of file.declarations) {
16
+ if (decl.kind !== 'module')
17
+ continue;
18
+ for (const item of decl.items) {
19
+ if (item.kind === 'secret') {
20
+ secrets.push({
21
+ id: `${decl.name}.secret.${item.name}`,
22
+ name: item.name,
23
+ source: item.source ?? 'environment',
24
+ description: item.description ?? null,
25
+ });
26
+ }
27
+ if (item.kind === 'environment') {
28
+ const envSecrets = (item.secrets ?? []).map((s) => ({
29
+ name: s.name,
30
+ resolvedSource: extractValue(s.value),
31
+ }));
32
+ environments.push({
33
+ id: `${decl.name}.environment.${item.name}`,
34
+ name: item.name,
35
+ url: item.url ?? null,
36
+ secrets: envSecrets,
37
+ });
38
+ }
39
+ if (item.kind === 'deployment') {
40
+ deployments.push({
41
+ id: `${decl.name}.deployment.${item.name}`,
42
+ name: item.name,
43
+ environments: (item.environments ?? []).map((e) => e.join('.')),
44
+ });
45
+ }
46
+ }
47
+ }
48
+ }
49
+ return { secrets, environments, deployments, bag };
50
+ }
51
+ function extractValue(v) {
52
+ if (v.kind === 'string')
53
+ return v['value'];
54
+ /* v8 ignore next */
55
+ if (v.kind === 'identifier')
56
+ return v['value'];
57
+ return String(v['value'] /* v8 ignore next */ ?? '');
58
+ }
59
+ //# sourceMappingURL=resolution.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolution.js","sourceRoot":"","sources":["../../src/runtime/resolution.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,wCAAwC;AACxC,8EAA8E;AAC9E,0EAA0E;AAI1E,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAgC7D,8EAA8E;AAC9E,UAAU;AACV,8EAA8E;AAC9E,MAAM,UAAU,cAAc,CAAC,KAAyB;IACtD,MAAM,GAAG,GAAG,IAAI,aAAa,EAAE,CAAC;IAChC,MAAM,OAAO,GAAqB,EAAE,CAAC;IACrC,MAAM,YAAY,GAA0B,EAAE,CAAC;IAC/C,MAAM,WAAW,GAAyB,EAAE,CAAC;IAE7C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACrC,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ;gBAAE,SAAS;YACrC,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;gBAC9B,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;oBAC3B,OAAO,CAAC,IAAI,CAAC;wBACX,EAAE,EAAE,GAAG,IAAI,CAAC,IAAI,WAAW,IAAI,CAAC,IAAI,EAAE;wBACtC,IAAI,EAAE,IAAI,CAAC,IAAI;wBACf,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,aAAa;wBACpC,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,IAAI;qBACtC,CAAC,CAAC;gBACL,CAAC;gBACD,IAAI,IAAI,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;oBAChC,MAAM,UAAU,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;wBAClD,IAAI,EAAE,CAAC,CAAC,IAAI;wBACZ,cAAc,EAAE,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC;qBACtC,CAAC,CAAC,CAAC;oBACJ,YAAY,CAAC,IAAI,CAAC;wBAChB,EAAE,EAAE,GAAG,IAAI,CAAC,IAAI,gBAAgB,IAAI,CAAC,IAAI,EAAE;wBAC3C,IAAI,EAAE,IAAI,CAAC,IAAI;wBACf,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,IAAI;wBACrB,OAAO,EAAE,UAAU;qBACpB,CAAC,CAAC;gBACL,CAAC;gBACD,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;oBAC/B,WAAW,CAAC,IAAI,CAAC;wBACf,EAAE,EAAE,GAAG,IAAI,CAAC,IAAI,eAAe,IAAI,CAAC,IAAI,EAAE;wBAC1C,IAAI,EAAE,IAAI,CAAC,IAAI;wBACf,YAAY,EAAE,CAAC,IAAI,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;qBAChE,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC;AACrD,CAAC;AAED,SAAS,YAAY,CAAC,CAA2C;IAC/D,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ;QAAE,OAAO,CAAC,CAAC,OAAO,CAAW,CAAC;IACrD,oBAAoB;IACpB,IAAI,CAAC,CAAC,IAAI,KAAK,YAAY;QAAE,OAAO,CAAC,CAAC,OAAO,CAAW,CAAC;IACzD,OAAO,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,oBAAoB,IAAI,EAAE,CAAC,CAAC;AACvD,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { runSpecTests } from './test-runner.js';
2
+ export type { SpecTestResult, SpecTestSuiteResult } from './test-runner.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/testing/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,YAAY,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { runSpecTests } from './test-runner.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/testing/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,18 @@
1
+ import type { AstFile } from '../parser/ast.js';
2
+ import type { BindResult } from '../binder/binder.js';
3
+ import type { ProductGraph } from '../graph/graph-types.js';
4
+ import { DiagnosticBag } from '../diagnostics/diagnostic.js';
5
+ export interface SpecTestResult {
6
+ readonly name: string;
7
+ readonly target: string;
8
+ readonly passed: boolean;
9
+ readonly failures: readonly string[];
10
+ }
11
+ export interface SpecTestSuiteResult {
12
+ readonly results: readonly SpecTestResult[];
13
+ readonly totalPassed: number;
14
+ readonly totalFailed: number;
15
+ readonly bag: DiagnosticBag;
16
+ }
17
+ export declare function runSpecTests(files: readonly AstFile[], bindResult: BindResult, graph: ProductGraph): SpecTestSuiteResult;
18
+ //# sourceMappingURL=test-runner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-runner.d.ts","sourceRoot":"","sources":["../../src/testing/test-runner.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,OAAO,EAAqC,MAAM,kBAAkB,CAAC;AACnF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAE5D,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAE7D,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;CACtC;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,OAAO,EAAE,SAAS,cAAc,EAAE,CAAC;IAC5C,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,GAAG,EAAE,aAAa,CAAC;CAC7B;AAED,wBAAgB,YAAY,CAC1B,KAAK,EAAE,SAAS,OAAO,EAAE,EACzB,UAAU,EAAE,UAAU,EACtB,KAAK,EAAE,YAAY,GAClB,mBAAmB,CAmBrB"}