@zigrivers/scaffold 3.25.1 → 3.27.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 (570) hide show
  1. package/README.md +139 -7
  2. package/content/knowledge/web3/web3-access-control.md +189 -0
  3. package/content/knowledge/web3/web3-architecture.md +162 -0
  4. package/content/knowledge/web3/web3-audit-workflow.md +151 -0
  5. package/content/knowledge/web3/web3-common-vulnerabilities.md +171 -0
  6. package/content/knowledge/web3/web3-conventions.md +162 -0
  7. package/content/knowledge/web3/web3-deployment-and-verification.md +216 -0
  8. package/content/knowledge/web3/web3-dev-environment.md +150 -0
  9. package/content/knowledge/web3/web3-gas-optimization.md +165 -0
  10. package/content/knowledge/web3/web3-oracles-and-external-data.md +155 -0
  11. package/content/knowledge/web3/web3-project-structure.md +212 -0
  12. package/content/knowledge/web3/web3-requirements.md +152 -0
  13. package/content/knowledge/web3/web3-security.md +163 -0
  14. package/content/knowledge/web3/web3-testing.md +180 -0
  15. package/content/knowledge/web3/web3-upgradeability.md +189 -0
  16. package/content/methodology/web3-overlay.yml +40 -0
  17. package/dist/cli/commands/complete.d.ts.map +1 -1
  18. package/dist/cli/commands/complete.js +6 -13
  19. package/dist/cli/commands/complete.js.map +1 -1
  20. package/dist/cli/commands/complete.test.js +18 -0
  21. package/dist/cli/commands/complete.test.js.map +1 -1
  22. package/dist/cli/commands/knowledge.test.js +4 -4
  23. package/dist/cli/commands/knowledge.test.js.map +1 -1
  24. package/dist/cli/commands/observe.d.ts +58 -0
  25. package/dist/cli/commands/observe.d.ts.map +1 -0
  26. package/dist/cli/commands/observe.js +430 -0
  27. package/dist/cli/commands/observe.js.map +1 -0
  28. package/dist/cli/commands/observe.test.d.ts +2 -0
  29. package/dist/cli/commands/observe.test.d.ts.map +1 -0
  30. package/dist/cli/commands/observe.test.js +452 -0
  31. package/dist/cli/commands/observe.test.js.map +1 -0
  32. package/dist/cli/commands/run.js +3 -3
  33. package/dist/cli/commands/run.js.map +1 -1
  34. package/dist/cli/commands/run.test.js +1 -1
  35. package/dist/cli/commands/run.test.js.map +1 -1
  36. package/dist/cli/index.d.ts.map +1 -1
  37. package/dist/cli/index.js +2 -0
  38. package/dist/cli/index.js.map +1 -1
  39. package/dist/config/schema.d.ts +672 -126
  40. package/dist/config/schema.d.ts.map +1 -1
  41. package/dist/config/schema.js +8 -1
  42. package/dist/config/schema.js.map +1 -1
  43. package/dist/config/schema.test.js +2 -2
  44. package/dist/config/schema.test.js.map +1 -1
  45. package/dist/config/validators/index.d.ts.map +1 -1
  46. package/dist/config/validators/index.js +2 -0
  47. package/dist/config/validators/index.js.map +1 -1
  48. package/dist/config/validators/web3.d.ts +4 -0
  49. package/dist/config/validators/web3.d.ts.map +1 -0
  50. package/dist/config/validators/web3.js +15 -0
  51. package/dist/config/validators/web3.js.map +1 -0
  52. package/dist/e2e/project-type-overlays.test.js +76 -0
  53. package/dist/e2e/project-type-overlays.test.js.map +1 -1
  54. package/dist/observability/adapters/audit-history.d.ts +17 -0
  55. package/dist/observability/adapters/audit-history.d.ts.map +1 -0
  56. package/dist/observability/adapters/audit-history.js +113 -0
  57. package/dist/observability/adapters/audit-history.js.map +1 -0
  58. package/dist/observability/adapters/audit-history.test.d.ts +2 -0
  59. package/dist/observability/adapters/audit-history.test.d.ts.map +1 -0
  60. package/dist/observability/adapters/audit-history.test.js +137 -0
  61. package/dist/observability/adapters/audit-history.test.js.map +1 -0
  62. package/dist/observability/adapters/beads.d.ts +9 -0
  63. package/dist/observability/adapters/beads.d.ts.map +1 -0
  64. package/dist/observability/adapters/beads.js +40 -0
  65. package/dist/observability/adapters/beads.js.map +1 -0
  66. package/dist/observability/adapters/beads.test.d.ts +2 -0
  67. package/dist/observability/adapters/beads.test.d.ts.map +1 -0
  68. package/dist/observability/adapters/beads.test.js +25 -0
  69. package/dist/observability/adapters/beads.test.js.map +1 -0
  70. package/dist/observability/adapters/gh.d.ts +27 -0
  71. package/dist/observability/adapters/gh.d.ts.map +1 -0
  72. package/dist/observability/adapters/gh.js +118 -0
  73. package/dist/observability/adapters/gh.js.map +1 -0
  74. package/dist/observability/adapters/gh.test.d.ts +2 -0
  75. package/dist/observability/adapters/gh.test.d.ts.map +1 -0
  76. package/dist/observability/adapters/gh.test.js +79 -0
  77. package/dist/observability/adapters/gh.test.js.map +1 -0
  78. package/dist/observability/adapters/git.d.ts +24 -0
  79. package/dist/observability/adapters/git.d.ts.map +1 -0
  80. package/dist/observability/adapters/git.js +110 -0
  81. package/dist/observability/adapters/git.js.map +1 -0
  82. package/dist/observability/adapters/git.test.d.ts +2 -0
  83. package/dist/observability/adapters/git.test.d.ts.map +1 -0
  84. package/dist/observability/adapters/git.test.js +66 -0
  85. package/dist/observability/adapters/git.test.js.map +1 -0
  86. package/dist/observability/adapters/mmr.d.ts +15 -0
  87. package/dist/observability/adapters/mmr.d.ts.map +1 -0
  88. package/dist/observability/adapters/mmr.js +85 -0
  89. package/dist/observability/adapters/mmr.js.map +1 -0
  90. package/dist/observability/adapters/mmr.test.d.ts +2 -0
  91. package/dist/observability/adapters/mmr.test.d.ts.map +1 -0
  92. package/dist/observability/adapters/mmr.test.js +55 -0
  93. package/dist/observability/adapters/mmr.test.js.map +1 -0
  94. package/dist/observability/adapters/pipeline-docs.d.ts +8 -0
  95. package/dist/observability/adapters/pipeline-docs.d.ts.map +1 -0
  96. package/dist/observability/adapters/pipeline-docs.js +68 -0
  97. package/dist/observability/adapters/pipeline-docs.js.map +1 -0
  98. package/dist/observability/adapters/pipeline-docs.test.d.ts +2 -0
  99. package/dist/observability/adapters/pipeline-docs.test.d.ts.map +1 -0
  100. package/dist/observability/adapters/pipeline-docs.test.js +58 -0
  101. package/dist/observability/adapters/pipeline-docs.test.js.map +1 -0
  102. package/dist/observability/adapters/state.d.ts +21 -0
  103. package/dist/observability/adapters/state.d.ts.map +1 -0
  104. package/dist/observability/adapters/state.js +87 -0
  105. package/dist/observability/adapters/state.js.map +1 -0
  106. package/dist/observability/adapters/state.test.d.ts +2 -0
  107. package/dist/observability/adapters/state.test.d.ts.map +1 -0
  108. package/dist/observability/adapters/state.test.js +92 -0
  109. package/dist/observability/adapters/state.test.js.map +1 -0
  110. package/dist/observability/adapters/tests.d.ts +20 -0
  111. package/dist/observability/adapters/tests.d.ts.map +1 -0
  112. package/dist/observability/adapters/tests.js +52 -0
  113. package/dist/observability/adapters/tests.js.map +1 -0
  114. package/dist/observability/adapters/tests.test.d.ts +2 -0
  115. package/dist/observability/adapters/tests.test.d.ts.map +1 -0
  116. package/dist/observability/adapters/tests.test.js +66 -0
  117. package/dist/observability/adapters/tests.test.js.map +1 -0
  118. package/dist/observability/adapters/types.d.ts +7 -0
  119. package/dist/observability/adapters/types.d.ts.map +1 -0
  120. package/dist/observability/adapters/types.js +2 -0
  121. package/dist/observability/adapters/types.js.map +1 -0
  122. package/dist/observability/checks/lens-a-tdd.d.ts +3 -0
  123. package/dist/observability/checks/lens-a-tdd.d.ts.map +1 -0
  124. package/dist/observability/checks/lens-a-tdd.js +34 -0
  125. package/dist/observability/checks/lens-a-tdd.js.map +1 -0
  126. package/dist/observability/checks/lens-a-tdd.test.d.ts +2 -0
  127. package/dist/observability/checks/lens-a-tdd.test.d.ts.map +1 -0
  128. package/dist/observability/checks/lens-a-tdd.test.js +62 -0
  129. package/dist/observability/checks/lens-a-tdd.test.js.map +1 -0
  130. package/dist/observability/checks/lens-b-ac-coverage.d.ts +3 -0
  131. package/dist/observability/checks/lens-b-ac-coverage.d.ts.map +1 -0
  132. package/dist/observability/checks/lens-b-ac-coverage.js +63 -0
  133. package/dist/observability/checks/lens-b-ac-coverage.js.map +1 -0
  134. package/dist/observability/checks/lens-b-ac-coverage.test.d.ts +2 -0
  135. package/dist/observability/checks/lens-b-ac-coverage.test.d.ts.map +1 -0
  136. package/dist/observability/checks/lens-b-ac-coverage.test.js +59 -0
  137. package/dist/observability/checks/lens-b-ac-coverage.test.js.map +1 -0
  138. package/dist/observability/checks/lens-c-standards.d.ts +3 -0
  139. package/dist/observability/checks/lens-c-standards.d.ts.map +1 -0
  140. package/dist/observability/checks/lens-c-standards.js +104 -0
  141. package/dist/observability/checks/lens-c-standards.js.map +1 -0
  142. package/dist/observability/checks/lens-c-standards.test.d.ts +2 -0
  143. package/dist/observability/checks/lens-c-standards.test.d.ts.map +1 -0
  144. package/dist/observability/checks/lens-c-standards.test.js +79 -0
  145. package/dist/observability/checks/lens-c-standards.test.js.map +1 -0
  146. package/dist/observability/checks/lens-d-stack.d.ts +3 -0
  147. package/dist/observability/checks/lens-d-stack.d.ts.map +1 -0
  148. package/dist/observability/checks/lens-d-stack.js +108 -0
  149. package/dist/observability/checks/lens-d-stack.js.map +1 -0
  150. package/dist/observability/checks/lens-d-stack.test.d.ts +2 -0
  151. package/dist/observability/checks/lens-d-stack.test.d.ts.map +1 -0
  152. package/dist/observability/checks/lens-d-stack.test.js +60 -0
  153. package/dist/observability/checks/lens-d-stack.test.js.map +1 -0
  154. package/dist/observability/checks/lens-e-design.d.ts +3 -0
  155. package/dist/observability/checks/lens-e-design.d.ts.map +1 -0
  156. package/dist/observability/checks/lens-e-design.js +76 -0
  157. package/dist/observability/checks/lens-e-design.js.map +1 -0
  158. package/dist/observability/checks/lens-e-design.test.d.ts +2 -0
  159. package/dist/observability/checks/lens-e-design.test.d.ts.map +1 -0
  160. package/dist/observability/checks/lens-e-design.test.js +85 -0
  161. package/dist/observability/checks/lens-e-design.test.js.map +1 -0
  162. package/dist/observability/checks/lens-f-scope.d.ts +3 -0
  163. package/dist/observability/checks/lens-f-scope.d.ts.map +1 -0
  164. package/dist/observability/checks/lens-f-scope.js +92 -0
  165. package/dist/observability/checks/lens-f-scope.js.map +1 -0
  166. package/dist/observability/checks/lens-f-scope.test.d.ts +2 -0
  167. package/dist/observability/checks/lens-f-scope.test.d.ts.map +1 -0
  168. package/dist/observability/checks/lens-f-scope.test.js +63 -0
  169. package/dist/observability/checks/lens-f-scope.test.js.map +1 -0
  170. package/dist/observability/checks/lens-g-decisions.d.ts +3 -0
  171. package/dist/observability/checks/lens-g-decisions.d.ts.map +1 -0
  172. package/dist/observability/checks/lens-g-decisions.js +139 -0
  173. package/dist/observability/checks/lens-g-decisions.js.map +1 -0
  174. package/dist/observability/checks/lens-g-decisions.test.d.ts +2 -0
  175. package/dist/observability/checks/lens-g-decisions.test.d.ts.map +1 -0
  176. package/dist/observability/checks/lens-g-decisions.test.js +118 -0
  177. package/dist/observability/checks/lens-g-decisions.test.js.map +1 -0
  178. package/dist/observability/checks/lens-h-cross-doc.d.ts +3 -0
  179. package/dist/observability/checks/lens-h-cross-doc.d.ts.map +1 -0
  180. package/dist/observability/checks/lens-h-cross-doc.js +322 -0
  181. package/dist/observability/checks/lens-h-cross-doc.js.map +1 -0
  182. package/dist/observability/checks/lens-h-cross-doc.test.d.ts +2 -0
  183. package/dist/observability/checks/lens-h-cross-doc.test.d.ts.map +1 -0
  184. package/dist/observability/checks/lens-h-cross-doc.test.js +174 -0
  185. package/dist/observability/checks/lens-h-cross-doc.test.js.map +1 -0
  186. package/dist/observability/engine/abort-snapshot.d.ts +10 -0
  187. package/dist/observability/engine/abort-snapshot.d.ts.map +1 -0
  188. package/dist/observability/engine/abort-snapshot.js +36 -0
  189. package/dist/observability/engine/abort-snapshot.js.map +1 -0
  190. package/dist/observability/engine/abort-snapshot.test.d.ts +2 -0
  191. package/dist/observability/engine/abort-snapshot.test.d.ts.map +1 -0
  192. package/dist/observability/engine/abort-snapshot.test.js +66 -0
  193. package/dist/observability/engine/abort-snapshot.test.js.map +1 -0
  194. package/dist/observability/engine/api.d.ts +24 -0
  195. package/dist/observability/engine/api.d.ts.map +1 -0
  196. package/dist/observability/engine/api.js +203 -0
  197. package/dist/observability/engine/api.js.map +1 -0
  198. package/dist/observability/engine/api.test.d.ts +2 -0
  199. package/dist/observability/engine/api.test.d.ts.map +1 -0
  200. package/dist/observability/engine/api.test.js +174 -0
  201. package/dist/observability/engine/api.test.js.map +1 -0
  202. package/dist/observability/engine/checks/findings-aggregator.d.ts +6 -0
  203. package/dist/observability/engine/checks/findings-aggregator.d.ts.map +1 -0
  204. package/dist/observability/engine/checks/findings-aggregator.js +56 -0
  205. package/dist/observability/engine/checks/findings-aggregator.js.map +1 -0
  206. package/dist/observability/engine/checks/findings-aggregator.test.d.ts +2 -0
  207. package/dist/observability/engine/checks/findings-aggregator.test.d.ts.map +1 -0
  208. package/dist/observability/engine/checks/findings-aggregator.test.js +63 -0
  209. package/dist/observability/engine/checks/findings-aggregator.test.js.map +1 -0
  210. package/dist/observability/engine/checks/fix-threshold.d.ts +3 -0
  211. package/dist/observability/engine/checks/fix-threshold.d.ts.map +1 -0
  212. package/dist/observability/engine/checks/fix-threshold.js +24 -0
  213. package/dist/observability/engine/checks/fix-threshold.js.map +1 -0
  214. package/dist/observability/engine/checks/fix-threshold.test.d.ts +2 -0
  215. package/dist/observability/engine/checks/fix-threshold.test.d.ts.map +1 -0
  216. package/dist/observability/engine/checks/fix-threshold.test.js +29 -0
  217. package/dist/observability/engine/checks/fix-threshold.test.js.map +1 -0
  218. package/dist/observability/engine/checks/observability-config.d.ts +64 -0
  219. package/dist/observability/engine/checks/observability-config.d.ts.map +1 -0
  220. package/dist/observability/engine/checks/observability-config.js +56 -0
  221. package/dist/observability/engine/checks/observability-config.js.map +1 -0
  222. package/dist/observability/engine/checks/observability-config.test.d.ts +2 -0
  223. package/dist/observability/engine/checks/observability-config.test.d.ts.map +1 -0
  224. package/dist/observability/engine/checks/observability-config.test.js +39 -0
  225. package/dist/observability/engine/checks/observability-config.test.js.map +1 -0
  226. package/dist/observability/engine/checks/registry.d.ts +19 -0
  227. package/dist/observability/engine/checks/registry.d.ts.map +1 -0
  228. package/dist/observability/engine/checks/registry.js +44 -0
  229. package/dist/observability/engine/checks/registry.js.map +1 -0
  230. package/dist/observability/engine/checks/registry.test.d.ts +2 -0
  231. package/dist/observability/engine/checks/registry.test.d.ts.map +1 -0
  232. package/dist/observability/engine/checks/registry.test.js +23 -0
  233. package/dist/observability/engine/checks/registry.test.js.map +1 -0
  234. package/dist/observability/engine/checks/runner.d.ts +23 -0
  235. package/dist/observability/engine/checks/runner.d.ts.map +1 -0
  236. package/dist/observability/engine/checks/runner.js +66 -0
  237. package/dist/observability/engine/checks/runner.js.map +1 -0
  238. package/dist/observability/engine/checks/runner.test.d.ts +2 -0
  239. package/dist/observability/engine/checks/runner.test.d.ts.map +1 -0
  240. package/dist/observability/engine/checks/runner.test.js +95 -0
  241. package/dist/observability/engine/checks/runner.test.js.map +1 -0
  242. package/dist/observability/engine/doc-graph/component-parser.d.ts +3 -0
  243. package/dist/observability/engine/doc-graph/component-parser.d.ts.map +1 -0
  244. package/dist/observability/engine/doc-graph/component-parser.js +42 -0
  245. package/dist/observability/engine/doc-graph/component-parser.js.map +1 -0
  246. package/dist/observability/engine/doc-graph/component-parser.test.d.ts +2 -0
  247. package/dist/observability/engine/doc-graph/component-parser.test.d.ts.map +1 -0
  248. package/dist/observability/engine/doc-graph/component-parser.test.js +40 -0
  249. package/dist/observability/engine/doc-graph/component-parser.test.js.map +1 -0
  250. package/dist/observability/engine/doc-graph/component-use-detector.d.ts +8 -0
  251. package/dist/observability/engine/doc-graph/component-use-detector.d.ts.map +1 -0
  252. package/dist/observability/engine/doc-graph/component-use-detector.js +62 -0
  253. package/dist/observability/engine/doc-graph/component-use-detector.js.map +1 -0
  254. package/dist/observability/engine/doc-graph/component-use-detector.test.d.ts +2 -0
  255. package/dist/observability/engine/doc-graph/component-use-detector.test.d.ts.map +1 -0
  256. package/dist/observability/engine/doc-graph/component-use-detector.test.js +38 -0
  257. package/dist/observability/engine/doc-graph/component-use-detector.test.js.map +1 -0
  258. package/dist/observability/engine/doc-graph/decision-parser.d.ts +3 -0
  259. package/dist/observability/engine/doc-graph/decision-parser.d.ts.map +1 -0
  260. package/dist/observability/engine/doc-graph/decision-parser.js +60 -0
  261. package/dist/observability/engine/doc-graph/decision-parser.js.map +1 -0
  262. package/dist/observability/engine/doc-graph/decision-parser.test.d.ts +2 -0
  263. package/dist/observability/engine/doc-graph/decision-parser.test.d.ts.map +1 -0
  264. package/dist/observability/engine/doc-graph/decision-parser.test.js +65 -0
  265. package/dist/observability/engine/doc-graph/decision-parser.test.js.map +1 -0
  266. package/dist/observability/engine/doc-graph/design-props.d.ts +9 -0
  267. package/dist/observability/engine/doc-graph/design-props.d.ts.map +1 -0
  268. package/dist/observability/engine/doc-graph/design-props.js +50 -0
  269. package/dist/observability/engine/doc-graph/design-props.js.map +1 -0
  270. package/dist/observability/engine/doc-graph/edge-builder.d.ts +28 -0
  271. package/dist/observability/engine/doc-graph/edge-builder.d.ts.map +1 -0
  272. package/dist/observability/engine/doc-graph/edge-builder.js +75 -0
  273. package/dist/observability/engine/doc-graph/edge-builder.js.map +1 -0
  274. package/dist/observability/engine/doc-graph/edge-builder.test.d.ts +2 -0
  275. package/dist/observability/engine/doc-graph/edge-builder.test.d.ts.map +1 -0
  276. package/dist/observability/engine/doc-graph/edge-builder.test.js +124 -0
  277. package/dist/observability/engine/doc-graph/edge-builder.test.js.map +1 -0
  278. package/dist/observability/engine/doc-graph/feature-parser.d.ts +3 -0
  279. package/dist/observability/engine/doc-graph/feature-parser.d.ts.map +1 -0
  280. package/dist/observability/engine/doc-graph/feature-parser.js +78 -0
  281. package/dist/observability/engine/doc-graph/feature-parser.js.map +1 -0
  282. package/dist/observability/engine/doc-graph/feature-parser.test.d.ts +2 -0
  283. package/dist/observability/engine/doc-graph/feature-parser.test.d.ts.map +1 -0
  284. package/dist/observability/engine/doc-graph/feature-parser.test.js +51 -0
  285. package/dist/observability/engine/doc-graph/feature-parser.test.js.map +1 -0
  286. package/dist/observability/engine/doc-graph/index.d.ts +3 -0
  287. package/dist/observability/engine/doc-graph/index.d.ts.map +1 -0
  288. package/dist/observability/engine/doc-graph/index.js +138 -0
  289. package/dist/observability/engine/doc-graph/index.js.map +1 -0
  290. package/dist/observability/engine/doc-graph/index.test.d.ts +2 -0
  291. package/dist/observability/engine/doc-graph/index.test.d.ts.map +1 -0
  292. package/dist/observability/engine/doc-graph/index.test.js +82 -0
  293. package/dist/observability/engine/doc-graph/index.test.js.map +1 -0
  294. package/dist/observability/engine/doc-graph/parse-markdown.d.ts +15 -0
  295. package/dist/observability/engine/doc-graph/parse-markdown.d.ts.map +1 -0
  296. package/dist/observability/engine/doc-graph/parse-markdown.js +79 -0
  297. package/dist/observability/engine/doc-graph/parse-markdown.js.map +1 -0
  298. package/dist/observability/engine/doc-graph/parse-markdown.test.d.ts +2 -0
  299. package/dist/observability/engine/doc-graph/parse-markdown.test.d.ts.map +1 -0
  300. package/dist/observability/engine/doc-graph/parse-markdown.test.js +50 -0
  301. package/dist/observability/engine/doc-graph/parse-markdown.test.js.map +1 -0
  302. package/dist/observability/engine/doc-graph/plan-task-parser.d.ts +3 -0
  303. package/dist/observability/engine/doc-graph/plan-task-parser.d.ts.map +1 -0
  304. package/dist/observability/engine/doc-graph/plan-task-parser.js +38 -0
  305. package/dist/observability/engine/doc-graph/plan-task-parser.js.map +1 -0
  306. package/dist/observability/engine/doc-graph/plan-task-parser.test.d.ts +2 -0
  307. package/dist/observability/engine/doc-graph/plan-task-parser.test.d.ts.map +1 -0
  308. package/dist/observability/engine/doc-graph/plan-task-parser.test.js +38 -0
  309. package/dist/observability/engine/doc-graph/plan-task-parser.test.js.map +1 -0
  310. package/dist/observability/engine/doc-graph/playbook-task-parser.d.ts +3 -0
  311. package/dist/observability/engine/doc-graph/playbook-task-parser.d.ts.map +1 -0
  312. package/dist/observability/engine/doc-graph/playbook-task-parser.js +40 -0
  313. package/dist/observability/engine/doc-graph/playbook-task-parser.js.map +1 -0
  314. package/dist/observability/engine/doc-graph/playbook-task-parser.test.d.ts +2 -0
  315. package/dist/observability/engine/doc-graph/playbook-task-parser.test.d.ts.map +1 -0
  316. package/dist/observability/engine/doc-graph/playbook-task-parser.test.js +31 -0
  317. package/dist/observability/engine/doc-graph/playbook-task-parser.test.js.map +1 -0
  318. package/dist/observability/engine/doc-graph/rule-parser.d.ts +3 -0
  319. package/dist/observability/engine/doc-graph/rule-parser.d.ts.map +1 -0
  320. package/dist/observability/engine/doc-graph/rule-parser.js +65 -0
  321. package/dist/observability/engine/doc-graph/rule-parser.js.map +1 -0
  322. package/dist/observability/engine/doc-graph/rule-parser.test.d.ts +2 -0
  323. package/dist/observability/engine/doc-graph/rule-parser.test.d.ts.map +1 -0
  324. package/dist/observability/engine/doc-graph/rule-parser.test.js +44 -0
  325. package/dist/observability/engine/doc-graph/rule-parser.test.js.map +1 -0
  326. package/dist/observability/engine/doc-graph/story-parser.d.ts +8 -0
  327. package/dist/observability/engine/doc-graph/story-parser.d.ts.map +1 -0
  328. package/dist/observability/engine/doc-graph/story-parser.js +109 -0
  329. package/dist/observability/engine/doc-graph/story-parser.js.map +1 -0
  330. package/dist/observability/engine/doc-graph/story-parser.test.d.ts +2 -0
  331. package/dist/observability/engine/doc-graph/story-parser.test.d.ts.map +1 -0
  332. package/dist/observability/engine/doc-graph/story-parser.test.js +66 -0
  333. package/dist/observability/engine/doc-graph/story-parser.test.js.map +1 -0
  334. package/dist/observability/engine/doc-graph/test-discovery.d.ts +3 -0
  335. package/dist/observability/engine/doc-graph/test-discovery.d.ts.map +1 -0
  336. package/dist/observability/engine/doc-graph/test-discovery.js +122 -0
  337. package/dist/observability/engine/doc-graph/test-discovery.js.map +1 -0
  338. package/dist/observability/engine/doc-graph/test-discovery.test.d.ts +2 -0
  339. package/dist/observability/engine/doc-graph/test-discovery.test.d.ts.map +1 -0
  340. package/dist/observability/engine/doc-graph/test-discovery.test.js +39 -0
  341. package/dist/observability/engine/doc-graph/test-discovery.test.js.map +1 -0
  342. package/dist/observability/engine/doc-graph/token-parser.d.ts +3 -0
  343. package/dist/observability/engine/doc-graph/token-parser.d.ts.map +1 -0
  344. package/dist/observability/engine/doc-graph/token-parser.js +67 -0
  345. package/dist/observability/engine/doc-graph/token-parser.js.map +1 -0
  346. package/dist/observability/engine/doc-graph/token-parser.test.d.ts +2 -0
  347. package/dist/observability/engine/doc-graph/token-parser.test.d.ts.map +1 -0
  348. package/dist/observability/engine/doc-graph/token-parser.test.js +39 -0
  349. package/dist/observability/engine/doc-graph/token-parser.test.js.map +1 -0
  350. package/dist/observability/engine/doc-graph/token-use-detector.d.ts +10 -0
  351. package/dist/observability/engine/doc-graph/token-use-detector.d.ts.map +1 -0
  352. package/dist/observability/engine/doc-graph/token-use-detector.js +105 -0
  353. package/dist/observability/engine/doc-graph/token-use-detector.js.map +1 -0
  354. package/dist/observability/engine/doc-graph/token-use-detector.test.d.ts +2 -0
  355. package/dist/observability/engine/doc-graph/token-use-detector.test.d.ts.map +1 -0
  356. package/dist/observability/engine/doc-graph/token-use-detector.test.js +60 -0
  357. package/dist/observability/engine/doc-graph/token-use-detector.test.js.map +1 -0
  358. package/dist/observability/engine/event-schemas.d.ts +12 -0
  359. package/dist/observability/engine/event-schemas.d.ts.map +1 -0
  360. package/dist/observability/engine/event-schemas.js +182 -0
  361. package/dist/observability/engine/event-schemas.js.map +1 -0
  362. package/dist/observability/engine/event-schemas.test.d.ts +2 -0
  363. package/dist/observability/engine/event-schemas.test.d.ts.map +1 -0
  364. package/dist/observability/engine/event-schemas.test.js +200 -0
  365. package/dist/observability/engine/event-schemas.test.js.map +1 -0
  366. package/dist/observability/engine/fix-agent-dispatcher.d.ts +19 -0
  367. package/dist/observability/engine/fix-agent-dispatcher.d.ts.map +1 -0
  368. package/dist/observability/engine/fix-agent-dispatcher.js +88 -0
  369. package/dist/observability/engine/fix-agent-dispatcher.js.map +1 -0
  370. package/dist/observability/engine/fix-agent-dispatcher.test.d.ts +2 -0
  371. package/dist/observability/engine/fix-agent-dispatcher.test.d.ts.map +1 -0
  372. package/dist/observability/engine/fix-agent-dispatcher.test.js +54 -0
  373. package/dist/observability/engine/fix-agent-dispatcher.test.js.map +1 -0
  374. package/dist/observability/engine/fix-flow.d.ts +30 -0
  375. package/dist/observability/engine/fix-flow.d.ts.map +1 -0
  376. package/dist/observability/engine/fix-flow.js +105 -0
  377. package/dist/observability/engine/fix-flow.js.map +1 -0
  378. package/dist/observability/engine/fix-flow.test.d.ts +2 -0
  379. package/dist/observability/engine/fix-flow.test.d.ts.map +1 -0
  380. package/dist/observability/engine/fix-flow.test.js +127 -0
  381. package/dist/observability/engine/fix-flow.test.js.map +1 -0
  382. package/dist/observability/engine/fix-plan.d.ts +3 -0
  383. package/dist/observability/engine/fix-plan.d.ts.map +1 -0
  384. package/dist/observability/engine/fix-plan.js +13 -0
  385. package/dist/observability/engine/fix-plan.js.map +1 -0
  386. package/dist/observability/engine/fix-plan.test.d.ts +2 -0
  387. package/dist/observability/engine/fix-plan.test.d.ts.map +1 -0
  388. package/dist/observability/engine/fix-plan.test.js +44 -0
  389. package/dist/observability/engine/fix-plan.test.js.map +1 -0
  390. package/dist/observability/engine/harvester.d.ts +16 -0
  391. package/dist/observability/engine/harvester.d.ts.map +1 -0
  392. package/dist/observability/engine/harvester.js +106 -0
  393. package/dist/observability/engine/harvester.js.map +1 -0
  394. package/dist/observability/engine/harvester.test.d.ts +2 -0
  395. package/dist/observability/engine/harvester.test.d.ts.map +1 -0
  396. package/dist/observability/engine/harvester.test.js +99 -0
  397. package/dist/observability/engine/harvester.test.js.map +1 -0
  398. package/dist/observability/engine/identity.d.ts +6 -0
  399. package/dist/observability/engine/identity.d.ts.map +1 -0
  400. package/dist/observability/engine/identity.js +50 -0
  401. package/dist/observability/engine/identity.js.map +1 -0
  402. package/dist/observability/engine/identity.test.d.ts +2 -0
  403. package/dist/observability/engine/identity.test.d.ts.map +1 -0
  404. package/dist/observability/engine/identity.test.js +29 -0
  405. package/dist/observability/engine/identity.test.js.map +1 -0
  406. package/dist/observability/engine/ledger-writer.d.ts +10 -0
  407. package/dist/observability/engine/ledger-writer.d.ts.map +1 -0
  408. package/dist/observability/engine/ledger-writer.js +50 -0
  409. package/dist/observability/engine/ledger-writer.js.map +1 -0
  410. package/dist/observability/engine/ledger-writer.test.d.ts +2 -0
  411. package/dist/observability/engine/ledger-writer.test.d.ts.map +1 -0
  412. package/dist/observability/engine/ledger-writer.test.js +72 -0
  413. package/dist/observability/engine/ledger-writer.test.js.map +1 -0
  414. package/dist/observability/engine/llm-dispatcher.d.ts +16 -0
  415. package/dist/observability/engine/llm-dispatcher.d.ts.map +1 -0
  416. package/dist/observability/engine/llm-dispatcher.js +183 -0
  417. package/dist/observability/engine/llm-dispatcher.js.map +1 -0
  418. package/dist/observability/engine/llm-dispatcher.test.d.ts +2 -0
  419. package/dist/observability/engine/llm-dispatcher.test.d.ts.map +1 -0
  420. package/dist/observability/engine/llm-dispatcher.test.js +109 -0
  421. package/dist/observability/engine/llm-dispatcher.test.js.map +1 -0
  422. package/dist/observability/engine/phase-audit.d.ts +22 -0
  423. package/dist/observability/engine/phase-audit.d.ts.map +1 -0
  424. package/dist/observability/engine/phase-audit.js +98 -0
  425. package/dist/observability/engine/phase-audit.js.map +1 -0
  426. package/dist/observability/engine/phase-audit.test.d.ts +2 -0
  427. package/dist/observability/engine/phase-audit.test.d.ts.map +1 -0
  428. package/dist/observability/engine/phase-audit.test.js +82 -0
  429. package/dist/observability/engine/phase-audit.test.js.map +1 -0
  430. package/dist/observability/engine/phase-subsets.d.ts +5 -0
  431. package/dist/observability/engine/phase-subsets.d.ts.map +1 -0
  432. package/dist/observability/engine/phase-subsets.js +23 -0
  433. package/dist/observability/engine/phase-subsets.js.map +1 -0
  434. package/dist/observability/engine/phase-subsets.test.d.ts +2 -0
  435. package/dist/observability/engine/phase-subsets.test.d.ts.map +1 -0
  436. package/dist/observability/engine/phase-subsets.test.js +24 -0
  437. package/dist/observability/engine/phase-subsets.test.js.map +1 -0
  438. package/dist/observability/engine/redact.d.ts +9 -0
  439. package/dist/observability/engine/redact.d.ts.map +1 -0
  440. package/dist/observability/engine/redact.js +134 -0
  441. package/dist/observability/engine/redact.js.map +1 -0
  442. package/dist/observability/engine/redact.test.d.ts +2 -0
  443. package/dist/observability/engine/redact.test.d.ts.map +1 -0
  444. package/dist/observability/engine/redact.test.js +244 -0
  445. package/dist/observability/engine/redact.test.js.map +1 -0
  446. package/dist/observability/engine/stall.d.ts +13 -0
  447. package/dist/observability/engine/stall.d.ts.map +1 -0
  448. package/dist/observability/engine/stall.js +167 -0
  449. package/dist/observability/engine/stall.js.map +1 -0
  450. package/dist/observability/engine/stall.test.d.ts +2 -0
  451. package/dist/observability/engine/stall.test.d.ts.map +1 -0
  452. package/dist/observability/engine/stall.test.js +148 -0
  453. package/dist/observability/engine/stall.test.js.map +1 -0
  454. package/dist/observability/engine/synthesizer.d.ts +35 -0
  455. package/dist/observability/engine/synthesizer.d.ts.map +1 -0
  456. package/dist/observability/engine/synthesizer.js +298 -0
  457. package/dist/observability/engine/synthesizer.js.map +1 -0
  458. package/dist/observability/engine/synthesizer.test.d.ts +2 -0
  459. package/dist/observability/engine/synthesizer.test.d.ts.map +1 -0
  460. package/dist/observability/engine/synthesizer.test.js +183 -0
  461. package/dist/observability/engine/synthesizer.test.js.map +1 -0
  462. package/dist/observability/engine/types.d.ts +422 -0
  463. package/dist/observability/engine/types.d.ts.map +1 -0
  464. package/dist/observability/engine/types.js +3 -0
  465. package/dist/observability/engine/types.js.map +1 -0
  466. package/dist/observability/engine/types.test.d.ts +2 -0
  467. package/dist/observability/engine/types.test.d.ts.map +1 -0
  468. package/dist/observability/engine/types.test.js +16 -0
  469. package/dist/observability/engine/types.test.js.map +1 -0
  470. package/dist/observability/renderers/_lib.d.ts +7 -0
  471. package/dist/observability/renderers/_lib.d.ts.map +1 -0
  472. package/dist/observability/renderers/_lib.js +28 -0
  473. package/dist/observability/renderers/_lib.js.map +1 -0
  474. package/dist/observability/renderers/dashboard.d.ts +5 -0
  475. package/dist/observability/renderers/dashboard.d.ts.map +1 -0
  476. package/dist/observability/renderers/dashboard.js +100 -0
  477. package/dist/observability/renderers/dashboard.js.map +1 -0
  478. package/dist/observability/renderers/dashboard.test.d.ts +2 -0
  479. package/dist/observability/renderers/dashboard.test.d.ts.map +1 -0
  480. package/dist/observability/renderers/dashboard.test.js +142 -0
  481. package/dist/observability/renderers/dashboard.test.js.map +1 -0
  482. package/dist/observability/renderers/markdown.d.ts +4 -0
  483. package/dist/observability/renderers/markdown.d.ts.map +1 -0
  484. package/dist/observability/renderers/markdown.js +225 -0
  485. package/dist/observability/renderers/markdown.js.map +1 -0
  486. package/dist/observability/renderers/markdown.test.d.ts +2 -0
  487. package/dist/observability/renderers/markdown.test.d.ts.map +1 -0
  488. package/dist/observability/renderers/markdown.test.js +169 -0
  489. package/dist/observability/renderers/markdown.test.js.map +1 -0
  490. package/dist/observability/renderers/mmr-findings.d.ts +10 -0
  491. package/dist/observability/renderers/mmr-findings.d.ts.map +1 -0
  492. package/dist/observability/renderers/mmr-findings.js +21 -0
  493. package/dist/observability/renderers/mmr-findings.js.map +1 -0
  494. package/dist/observability/renderers/mmr-findings.test.d.ts +2 -0
  495. package/dist/observability/renderers/mmr-findings.test.d.ts.map +1 -0
  496. package/dist/observability/renderers/mmr-findings.test.js +86 -0
  497. package/dist/observability/renderers/mmr-findings.test.js.map +1 -0
  498. package/dist/observability/renderers/sidecar.d.ts +5 -0
  499. package/dist/observability/renderers/sidecar.d.ts.map +1 -0
  500. package/dist/observability/renderers/sidecar.js +51 -0
  501. package/dist/observability/renderers/sidecar.js.map +1 -0
  502. package/dist/observability/renderers/sidecar.test.d.ts +2 -0
  503. package/dist/observability/renderers/sidecar.test.d.ts.map +1 -0
  504. package/dist/observability/renderers/sidecar.test.js +77 -0
  505. package/dist/observability/renderers/sidecar.test.js.map +1 -0
  506. package/dist/observability/renderers/terminal.d.ts +7 -0
  507. package/dist/observability/renderers/terminal.d.ts.map +1 -0
  508. package/dist/observability/renderers/terminal.js +96 -0
  509. package/dist/observability/renderers/terminal.js.map +1 -0
  510. package/dist/observability/renderers/terminal.test.d.ts +2 -0
  511. package/dist/observability/renderers/terminal.test.d.ts.map +1 -0
  512. package/dist/observability/renderers/terminal.test.js +163 -0
  513. package/dist/observability/renderers/terminal.test.js.map +1 -0
  514. package/dist/project/adopt.d.ts.map +1 -1
  515. package/dist/project/adopt.js +3 -1
  516. package/dist/project/adopt.js.map +1 -1
  517. package/dist/project/detectors/coverage.test.js +3 -2
  518. package/dist/project/detectors/coverage.test.js.map +1 -1
  519. package/dist/project/detectors/disambiguate.js +1 -1
  520. package/dist/project/detectors/disambiguate.js.map +1 -1
  521. package/dist/project/detectors/index.d.ts.map +1 -1
  522. package/dist/project/detectors/index.js +2 -0
  523. package/dist/project/detectors/index.js.map +1 -1
  524. package/dist/project/detectors/resolve-detection.test.js +57 -0
  525. package/dist/project/detectors/resolve-detection.test.js.map +1 -1
  526. package/dist/project/detectors/types.d.ts +6 -2
  527. package/dist/project/detectors/types.d.ts.map +1 -1
  528. package/dist/project/detectors/types.js.map +1 -1
  529. package/dist/project/detectors/web3.d.ts +4 -0
  530. package/dist/project/detectors/web3.d.ts.map +1 -0
  531. package/dist/project/detectors/web3.js +37 -0
  532. package/dist/project/detectors/web3.js.map +1 -0
  533. package/dist/project/detectors/web3.test.d.ts +2 -0
  534. package/dist/project/detectors/web3.test.d.ts.map +1 -0
  535. package/dist/project/detectors/web3.test.js +75 -0
  536. package/dist/project/detectors/web3.test.js.map +1 -0
  537. package/dist/state/state-manager.d.ts +7 -2
  538. package/dist/state/state-manager.d.ts.map +1 -1
  539. package/dist/state/state-manager.js +31 -2
  540. package/dist/state/state-manager.js.map +1 -1
  541. package/dist/state/state-manager.test.js +88 -3
  542. package/dist/state/state-manager.test.js.map +1 -1
  543. package/dist/types/config.d.ts +8 -1
  544. package/dist/types/config.d.ts.map +1 -1
  545. package/dist/types/state.d.ts +2 -0
  546. package/dist/types/state.d.ts.map +1 -1
  547. package/dist/wizard/copy/core.d.ts.map +1 -1
  548. package/dist/wizard/copy/core.js +4 -0
  549. package/dist/wizard/copy/core.js.map +1 -1
  550. package/dist/wizard/copy/index.d.ts.map +1 -1
  551. package/dist/wizard/copy/index.js +2 -0
  552. package/dist/wizard/copy/index.js.map +1 -1
  553. package/dist/wizard/copy/types.d.ts +5 -1
  554. package/dist/wizard/copy/types.d.ts.map +1 -1
  555. package/dist/wizard/copy/types.test-d.js +7 -0
  556. package/dist/wizard/copy/types.test-d.js.map +1 -1
  557. package/dist/wizard/copy/web3.d.ts +3 -0
  558. package/dist/wizard/copy/web3.d.ts.map +1 -0
  559. package/dist/wizard/copy/web3.js +15 -0
  560. package/dist/wizard/copy/web3.js.map +1 -0
  561. package/dist/wizard/questions.d.ts +2 -1
  562. package/dist/wizard/questions.d.ts.map +1 -1
  563. package/dist/wizard/questions.js +8 -1
  564. package/dist/wizard/questions.js.map +1 -1
  565. package/dist/wizard/questions.test.js +14 -0
  566. package/dist/wizard/questions.test.js.map +1 -1
  567. package/dist/wizard/wizard.d.ts.map +1 -1
  568. package/dist/wizard/wizard.js +1 -0
  569. package/dist/wizard/wizard.js.map +1 -1
  570. package/package.json +16 -1
@@ -0,0 +1,16 @@
1
+ import { describe, it, expectTypeOf } from 'vitest';
2
+ describe('engine types', () => {
3
+ it('Verdict enum has exactly three values', () => {
4
+ expectTypeOf().toEqualTypeOf();
5
+ });
6
+ it('EventType enum has exactly eight values', () => {
7
+ expectTypeOf().toEqualTypeOf();
8
+ });
9
+ it('FindingsSummary.by_severity_status has all four severities', () => {
10
+ expectTypeOf().toMatchTypeOf();
11
+ });
12
+ it('EngineOutput has schema_version "1.0"', () => {
13
+ expectTypeOf().toEqualTypeOf();
14
+ });
15
+ });
16
+ //# sourceMappingURL=types.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.test.js","sourceRoot":"","sources":["../../../src/observability/engine/types.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAA;AAQnD,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC5B,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;QAC/C,YAAY,EAAW,CAAC,aAAa,EAAwC,CAAA;IAC/E,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;QACjD,YAAY,EAAa,CAAC,aAAa,EASpC,CAAA;IACL,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,4DAA4D,EAAE,GAAG,EAAE;QACpE,YAAY,EAAyC,CAAC,aAAa,EAK/D,CAAA;IACN,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;QAC/C,YAAY,EAAkC,CAAC,aAAa,EAAS,CAAA;IACvE,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -0,0 +1,7 @@
1
+ import type { AdapterStatus, AvailabilityMap, Severity, Verdict, NeedsAttentionItem } from '../engine/types.js';
2
+ export declare function severityBadge(s: Severity): string;
3
+ export declare function verdictToken(v: Verdict): string;
4
+ export declare function adapterGlyph(s: AdapterStatus): string;
5
+ export declare function availabilityLine(a: AvailabilityMap): string;
6
+ export declare function needsAttentionLines(items: NeedsAttentionItem[]): string[];
7
+ //# sourceMappingURL=_lib.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_lib.d.ts","sourceRoot":"","sources":["../../../src/observability/renderers/_lib.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,QAAQ,EAAE,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AAE/G,wBAAgB,aAAa,CAAC,CAAC,EAAE,QAAQ,GAAG,MAAM,CAEjD;AAED,wBAAgB,YAAY,CAAC,CAAC,EAAE,OAAO,GAAG,MAAM,CAE/C;AAED,wBAAgB,YAAY,CAAC,CAAC,EAAE,aAAa,GAAG,MAAM,CAErD;AAED,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,eAAe,GAAG,MAAM,CAK3D;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,kBAAkB,EAAE,GAAG,MAAM,EAAE,CAUzE"}
@@ -0,0 +1,28 @@
1
+ export function severityBadge(s) {
2
+ return { P0: 'P0', P1: 'P1', P2: 'P2', P3: 'P3' }[s];
3
+ }
4
+ export function verdictToken(v) {
5
+ return { pass: 'pass', 'degraded-pass': 'degraded-pass', blocked: 'blocked' }[v] ?? v;
6
+ }
7
+ export function adapterGlyph(s) {
8
+ return s.status === 'available' ? '✓' : s.status === 'degraded' ? '~' : '—';
9
+ }
10
+ export function availabilityLine(a) {
11
+ const ord = [
12
+ 'git', 'gh', 'pipeline_docs', 'tests', 'state', 'beads', 'mmr', 'audit_history',
13
+ ];
14
+ return ord.map((k) => `${k} ${adapterGlyph(a[k])}`).join(' · ');
15
+ }
16
+ export function needsAttentionLines(items) {
17
+ if (items.length === 0)
18
+ return [];
19
+ const lines = [`⚠ needs attention (${items.length})`];
20
+ for (const i of items) {
21
+ const ageStr = i.signal === 'lens_skipped_repeatedly'
22
+ ? `${i.threshold_count ?? i.threshold_hours}× streak`
23
+ : `${i.age_hours}h`;
24
+ lines.push(` • ${i.summary} [${ageStr}]`);
25
+ }
26
+ return lines;
27
+ }
28
+ //# sourceMappingURL=_lib.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_lib.js","sourceRoot":"","sources":["../../../src/observability/renderers/_lib.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,aAAa,CAAC,CAAW;IACvC,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;AACtD,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,CAAU;IACrC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,eAAe,EAAE,eAAe,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;AACvF,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,CAAgB;IAC3C,OAAO,CAAC,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAA;AAC7E,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,CAAkB;IACjD,MAAM,GAAG,GAA8B;QACrC,KAAK,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,eAAe;KAChF,CAAA;IACD,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC,CAAkB,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;AAClF,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,KAA2B;IAC7D,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAA;IACjC,MAAM,KAAK,GAAa,CAAC,sBAAsB,KAAK,CAAC,MAAM,GAAG,CAAC,CAAA;IAC/D,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,KAAK,yBAAyB;YACnD,CAAC,CAAC,GAAG,CAAC,CAAC,eAAe,IAAI,CAAC,CAAC,eAAe,UAAU;YACrD,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,GAAG,CAAA;QACrB,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,KAAK,MAAM,GAAG,CAAC,CAAA;IAC5C,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { EngineOutput, Verdict } from '../engine/types.js';
2
+ export declare function verdictToSeverityToken(v: Verdict): string;
3
+ export declare function renderProgressFragment(out: EngineOutput): string;
4
+ export declare function renderAuditFragment(out: EngineOutput): string;
5
+ //# sourceMappingURL=dashboard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dashboard.d.ts","sourceRoot":"","sources":["../../../src/observability/renderers/dashboard.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,OAAO,EAAY,MAAM,oBAAoB,CAAA;AAGzE,wBAAgB,sBAAsB,CAAC,CAAC,EAAE,OAAO,GAAG,MAAM,CAGzD;AAmCD,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,YAAY,GAAG,MAAM,CA2BhE;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,YAAY,GAAG,MAAM,CA2C7D"}
@@ -0,0 +1,100 @@
1
+ import { redactRendered } from '../engine/redact.js';
2
+ export function verdictToSeverityToken(v) {
3
+ const map = { blocked: '--sev-p0', 'degraded-pass': '--sev-p2', pass: '--sev-pass' };
4
+ return map[v];
5
+ }
6
+ function escape(s) {
7
+ return s
8
+ .replace(/&/g, '&')
9
+ .replace(/</g, '&lt;')
10
+ .replace(/>/g, '&gt;')
11
+ .replace(/"/g, '&quot;')
12
+ .replace(/'/g, '&#39;');
13
+ }
14
+ const SEVERITIES = ['P0', 'P1', 'P2', 'P3'];
15
+ function needsAttentionAside(out) {
16
+ if (out.needs_attention.length === 0)
17
+ return '';
18
+ const items = out.needs_attention.map((i) => {
19
+ const ageStr = i.signal === 'lens_skipped_repeatedly'
20
+ ? `${i.threshold_count ?? i.threshold_hours}× streak`
21
+ : `${i.age_hours}h`;
22
+ return `<li><code>${escape(i.signal)}</code> ${escape(i.summary)} <span class="age">[${ageStr}]</span></li>`;
23
+ }).join('');
24
+ return `<aside class="needs-attention"><h3>Needs Attention</h3><ul>${items}</ul></aside>`;
25
+ }
26
+ function timelineDetails(out) {
27
+ if (!out.replay || out.replay.events.length === 0)
28
+ return '';
29
+ const rows = out.replay.events.slice(0, 100).map((e) => `<tr><td>${escape(e.ts)}</td><td>${escape(e.source)}</td><td>${escape(e.kind)}</td>` +
30
+ `<td>${escape(e.summary)}</td></tr>`).join('');
31
+ return `<details class="timeline"><summary>Timeline (${out.replay.events.length} events)</summary>` +
32
+ '<table><thead><tr><th>Time</th><th>Source</th><th>Kind</th><th>Summary</th></tr></thead>' +
33
+ `<tbody>${rows}</tbody></table></details>`;
34
+ }
35
+ export function renderProgressFragment(out) {
36
+ const snap = out.snapshot;
37
+ const agents = (snap?.active_agents ?? []).map((a) => {
38
+ const task = a.current_task
39
+ ? `${escape(a.current_task.id ?? '(unplanned)')} — ${escape(a.current_task.title)}`
40
+ : '<em>idle</em>';
41
+ return `<li><code>${escape(a.actor_label)}</code> · ${escape(a.branch)} · ${task}</li>`;
42
+ }).join('') || '<li><em>none</em></li>';
43
+ const decisions = (snap?.recent_decisions ?? []).slice(0, 5).map((d) => `<li><code>${escape(d.key)}</code>: ${escape(d.summary)}</li>`).join('') || '<li><em>none</em></li>';
44
+ const sinceHours = Number(out.invocation.args.sinceHours ?? 24);
45
+ const fragment = `<section id="build-progress" class="panel">
46
+ <header>
47
+ <h2>Build Progress</h2>
48
+ <span class="meta">last ${sinceHours}h · phase: ${escape(snap?.current_phase ?? '(unknown)')}</span>
49
+ </header>
50
+ ${needsAttentionAside(out)}
51
+ <div class="grid grid-2">
52
+ <div class="card"><h3>Active Agents</h3><ul>${agents}</ul></div>
53
+ <div class="card"><h3>Recent Decisions</h3><ul>${decisions}</ul></div>
54
+ </div>
55
+ ${timelineDetails(out)}
56
+ </section>`;
57
+ return redactRendered(fragment);
58
+ }
59
+ export function renderAuditFragment(out) {
60
+ const args = out.invocation.args;
61
+ const findings = out.findings.filter((f) => f.status !== 'skipped' && f.status !== 'acknowledged');
62
+ const threshIdx = SEVERITIES.indexOf(out.fix_threshold);
63
+ const filterButtons = ['all', 'blocking', ...SEVERITIES].map((f) => {
64
+ const count = f === 'all' ? findings.length
65
+ : f === 'blocking' ? findings.filter((fi) => SEVERITIES.indexOf(fi.severity) <= threshIdx).length
66
+ : findings.filter((fi) => fi.severity === f).length;
67
+ return `<button data-filter="${escape(String(f))}">${escape(String(f))} (${count})</button>`;
68
+ }).join(' ');
69
+ const findingItems = findings.length === 0
70
+ ? '<p class="empty">No findings.</p>'
71
+ : `<ol class="findings">${findings.map((f) => {
72
+ const idShort = escape(f.id.slice(0, 8));
73
+ const sevCls = `severity-${escape(f.severity)}`;
74
+ return `<li class="finding ${sevCls}" data-status="${escape(f.status)}" data-severity="${escape(f.severity)}">
75
+ <header>
76
+ <span class="badge" style="color: var(--sev-${f.severity.toLowerCase()})">${escape(f.severity)}</span>
77
+ <code class="finding-id" title="run scaffold observe ack ${idShort} to acknowledge">${idShort}</code>
78
+ <span class="lens">[${escape(f.lens_id)}]</span>
79
+ <span class="title">${escape(f.title)}</span>
80
+ </header>
81
+ <p>${escape(f.description)}</p>
82
+ </li>`;
83
+ }).join('')}</ol>`;
84
+ const verdictToken = verdictToSeverityToken(out.verdict);
85
+ const metaText = `${out.summary.blocking} blocking · threshold ${escape(out.fix_threshold)}` +
86
+ ` · profile=${escape(args.profile ?? '?')} scope=${escape(args.scope ?? '?')}`;
87
+ const fragment = '<section id="build-audit" class="panel"' +
88
+ ` data-verdict="${escape(out.verdict)}" data-threshold="${escape(out.fix_threshold)}"` +
89
+ ` style="--verdict-color: var(${verdictToken})">
90
+ <header>
91
+ <h2>Audit</h2>
92
+ <span class="badge" style="color: var(${verdictToken})">${escape(out.verdict)}</span>
93
+ <span class="meta">${metaText}</span>
94
+ </header>
95
+ <div class="finding-filters">${filterButtons}</div>
96
+ ${findingItems}
97
+ </section>`;
98
+ return redactRendered(fragment);
99
+ }
100
+ //# sourceMappingURL=dashboard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dashboard.js","sourceRoot":"","sources":["../../../src/observability/renderers/dashboard.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=dashboard.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dashboard.test.d.ts","sourceRoot":"","sources":["../../../src/observability/renderers/dashboard.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,142 @@
1
+ import { describe, it, expect } from 'vitest';
2
+ import { renderProgressFragment, renderAuditFragment, verdictToSeverityToken } from './dashboard.js';
3
+ const baseOut = {
4
+ schema_version: '1.0',
5
+ invocation: {
6
+ command: 'progress', args: { sinceHours: 24 },
7
+ started_at: '2026-05-04T14:00:00Z', completed_at: '2026-05-04T14:00:01Z', scaffold_version: '3.25.1',
8
+ },
9
+ availability: {
10
+ git: { status: 'available' }, gh: { status: 'unavailable' },
11
+ pipeline_docs: { status: 'available' }, tests: { status: 'available' },
12
+ state: { status: 'available' }, beads: { status: 'unavailable' },
13
+ mmr: { status: 'available' }, audit_history: { status: 'unavailable' },
14
+ ledger: { events_read: 4, malformed_lines: 0, sources: [{ worktree_id: 'wid-a', events: 4 }] },
15
+ },
16
+ snapshot: {
17
+ current_phase: 'build',
18
+ active_agents: [{
19
+ worktree_id: 'wid-a', actor_label: 'agent-alice', branch: 'feat-auth',
20
+ current_task: { id: 'T-031', title: 'refresh token rotation', claimed_at: '2026-05-04T13:55:00Z' },
21
+ open_pr: null,
22
+ }],
23
+ completed_in_window: [], in_flight: [], blocked: [], upcoming: [],
24
+ recent_decisions: [{
25
+ decision_id: 'decision:foo', key: 'foo', summary: 'bar',
26
+ recorded_at: '2026-05-04T13:00:00Z', affects: [],
27
+ }],
28
+ story_coverage: [],
29
+ },
30
+ replay: null, findings: [], needs_attention: [],
31
+ graph_stats: {
32
+ nodes_by_kind: {}, edges_by_kind: {}, orphans_by_kind: {}, unsanctioned_uses: 0, ad_hoc_token_uses: 0,
33
+ },
34
+ fix_threshold: 'P2', verdict: 'pass',
35
+ summary: {
36
+ total: 0, by_severity: { P0: 0, P1: 0, P2: 0, P3: 0 },
37
+ by_severity_status: {
38
+ P0: { open: 0, acknowledged: 0, skipped: 0 }, P1: { open: 0, acknowledged: 0, skipped: 0 },
39
+ P2: { open: 0, acknowledged: 0, skipped: 0 }, P3: { open: 0, acknowledged: 0, skipped: 0 },
40
+ },
41
+ blocking: 0, acknowledged: 0, skipped_lenses: 0,
42
+ },
43
+ };
44
+ describe('verdictToSeverityToken', () => {
45
+ it('maps blocked to --sev-p0', () => { expect(verdictToSeverityToken('blocked')).toBe('--sev-p0'); });
46
+ it('maps degraded-pass to --sev-p2', () => { expect(verdictToSeverityToken('degraded-pass')).toBe('--sev-p2'); });
47
+ it('maps pass to --sev-pass', () => { expect(verdictToSeverityToken('pass')).toBe('--sev-pass'); });
48
+ });
49
+ describe('renderProgressFragment', () => {
50
+ it('emits a self-contained <section id="build-progress"> with active-agents data', () => {
51
+ const html = renderProgressFragment(baseOut);
52
+ expect(html).toMatch(/<section id="build-progress"/);
53
+ expect(html).toContain('agent-alice');
54
+ expect(html).toContain('T-031');
55
+ expect(html).toContain('refresh token rotation');
56
+ });
57
+ it('reflects sinceHours from invocation args in the meta span', () => {
58
+ const out = JSON.parse(JSON.stringify(baseOut));
59
+ out.invocation.args = { sinceHours: 48 };
60
+ const html = renderProgressFragment(out);
61
+ expect(html).toContain('last 48h');
62
+ });
63
+ it('escapes HTML special characters in user-controlled fields', () => {
64
+ const tainted = JSON.parse(JSON.stringify(baseOut));
65
+ tainted.snapshot.active_agents[0].current_task.title = 'evil <script>alert(1)</script>';
66
+ const html = renderProgressFragment(tainted);
67
+ expect(html).not.toContain('<script>alert(1)</script>');
68
+ expect(html).toContain('&lt;script&gt;');
69
+ });
70
+ });
71
+ describe('renderAuditFragment', () => {
72
+ const auditOut = { ...baseOut,
73
+ invocation: { ...baseOut.invocation, command: 'audit', args: { profile: 'fast', scope: 'all' } },
74
+ snapshot: null, verdict: 'blocked', fix_threshold: 'P1',
75
+ findings: [
76
+ { id: '3a8c1f02aabbccdd', lens_id: 'B-ac-coverage', severity: 'P0',
77
+ title: 'AC failing', description: 'd', source_doc: 'docs/user-stories.md#s-1',
78
+ evidence: { kind: 'rule_violation', rule_id: 'r', file: 'f' },
79
+ confidence: 'high', first_seen: '', last_seen: '', status: 'open' },
80
+ ],
81
+ summary: {
82
+ total: 1, by_severity: { P0: 1, P1: 0, P2: 0, P3: 0 },
83
+ by_severity_status: {
84
+ P0: { open: 1, acknowledged: 0, skipped: 0 }, P1: { open: 0, acknowledged: 0, skipped: 0 },
85
+ P2: { open: 0, acknowledged: 0, skipped: 0 }, P3: { open: 0, acknowledged: 0, skipped: 0 },
86
+ },
87
+ blocking: 1, acknowledged: 0, skipped_lenses: 0,
88
+ },
89
+ };
90
+ it('emits a self-contained <section id="build-audit"> with verdict + finding data', () => {
91
+ const html = renderAuditFragment(auditOut);
92
+ expect(html).toMatch(/<section id="build-audit"/);
93
+ expect(html).toContain('blocked');
94
+ expect(html).toContain('B-ac-coverage');
95
+ expect(html).toContain('3a8c1f02');
96
+ expect(html).toContain('data-verdict="blocked"');
97
+ });
98
+ it('excludes acknowledged findings from visible list and filter counts', () => {
99
+ const out = { ...auditOut,
100
+ findings: [
101
+ ...auditOut.findings,
102
+ { id: 'aaaaaaaaaaaaaaaa', lens_id: 'B-ac-coverage', severity: 'P1',
103
+ title: 'acked', description: 'd', source_doc: 'docs/user-stories.md#s-1',
104
+ evidence: { kind: 'rule_violation', rule_id: 'r', file: 'f' },
105
+ confidence: 'high', first_seen: '', last_seen: '', status: 'acknowledged' },
106
+ ],
107
+ summary: { ...auditOut.summary, total: 2, acknowledged: 1, by_severity: { P0: 1, P1: 1, P2: 0, P3: 0 } },
108
+ };
109
+ const html = renderAuditFragment(out);
110
+ expect(html).not.toContain('aaaaaaaaaa');
111
+ expect(html).toContain('all (1)');
112
+ });
113
+ it('renders empty-state when no findings', () => {
114
+ const out = { ...auditOut, findings: [], verdict: 'pass',
115
+ summary: { ...auditOut.summary, total: 0, blocking: 0, by_severity: { P0: 0, P1: 0, P2: 0, P3: 0 } } };
116
+ const html = renderAuditFragment(out);
117
+ expect(html).toMatch(/no findings/i);
118
+ });
119
+ });
120
+ describe('renderProgressFragment — needs_attention + replay', () => {
121
+ it('renders a needs-attention aside when needs_attention is non-empty', () => {
122
+ const out = JSON.parse(JSON.stringify(baseOut));
123
+ out.needs_attention = [{ signal: 'pr_stale', ref: { kind: 'pr', id: '42' },
124
+ age_hours: 67, threshold_hours: 48, summary: 'PR #42 opened 67h ago, not merged or closed' }];
125
+ const html = renderProgressFragment(out);
126
+ expect(html).toMatch(/needs-attention/);
127
+ expect(html).toContain('pr_stale');
128
+ expect(html).toContain('PR #42');
129
+ });
130
+ it('renders a timeline details element when replay is populated', () => {
131
+ const out = JSON.parse(JSON.stringify(baseOut));
132
+ out.replay = { window: { from: '2026-05-04T13:00:00Z', to: '2026-05-04T14:00:00Z' },
133
+ events: [{ sort_id: 'ledger:ulid-A', correlation_id: null, ts: '2026-05-04T13:55:00Z',
134
+ source: 'ledger', kind: 'task_claimed', actor_label: 'agent-alice',
135
+ task_id: 'T-031', summary: 'T-031 claimed' }] };
136
+ const html = renderProgressFragment(out);
137
+ expect(html).toMatch(/timeline/);
138
+ expect(html).toContain('task_claimed');
139
+ expect(html).toContain('T-031 claimed');
140
+ });
141
+ });
142
+ //# sourceMappingURL=dashboard.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dashboard.test.js","sourceRoot":"","sources":["../../../src/observability/renderers/dashboard.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { EngineOutput } from '../engine/types.js';
2
+ export declare function renderProgressMarkdown(out: EngineOutput): string;
3
+ export declare function renderAuditMarkdown(out: EngineOutput): string;
4
+ //# sourceMappingURL=markdown.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markdown.d.ts","sourceRoot":"","sources":["../../../src/observability/renderers/markdown.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAA+D,MAAM,oBAAoB,CAAA;AAmHnH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,YAAY,GAAG,MAAM,CAoBhE;AAsFD,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,YAAY,GAAG,MAAM,CAiB7D"}
@@ -0,0 +1,225 @@
1
+ import { redactRendered, sanitizePath } from '../engine/redact.js';
2
+ function mdEscape(s) {
3
+ return s.replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/\|/g, '\\|')
4
+ .replace(/\*/g, '\\*').replace(/_/g, '\\_').replace(/`/g, '\\`');
5
+ }
6
+ function fmtDate(iso) {
7
+ const d = new Date(iso);
8
+ if (isNaN(d.valueOf()))
9
+ return iso;
10
+ return d.toISOString().replace('T', ' ').replace(/\.\d+Z$/, ' UTC');
11
+ }
12
+ function header(out, kind) {
13
+ const lines = [
14
+ `# Build Observability — ${kind}`,
15
+ '',
16
+ `**Generated:** ${fmtDate(out.invocation.started_at)}`,
17
+ `**Scaffold version:** ${out.invocation.scaffold_version}`,
18
+ ];
19
+ return lines.join('\n');
20
+ }
21
+ function availabilityTable(a) {
22
+ const ord = [
23
+ 'git', 'gh', 'pipeline_docs', 'tests', 'state', 'beads', 'mmr', 'audit_history',
24
+ ];
25
+ const rows = ord.map((k) => {
26
+ const s = a[k];
27
+ const reason = s.reason ? sanitizePath(s.reason) : '';
28
+ return `| ${k} | ${s.status} | ${reason} |`;
29
+ });
30
+ return ['## Availability', '', '| Adapter | Status | Reason / Notes |', '|---|---|---|', ...rows].join('\n');
31
+ }
32
+ function ledgerSummary(a) {
33
+ const lines = [
34
+ '## Ledger',
35
+ '',
36
+ `- Events read: ${a.ledger.events_read}`,
37
+ `- Malformed lines: ${a.ledger.malformed_lines}`,
38
+ '- Sources:',
39
+ ...a.ledger.sources.map((s) => {
40
+ const harvested = s.harvested_at ? ` (harvested ${fmtDate(s.harvested_at)})` : '';
41
+ return ` - \`${s.worktree_id}\` — ${s.events} events${harvested}`;
42
+ }),
43
+ ];
44
+ return lines.join('\n');
45
+ }
46
+ function activeAgentsSection(out) {
47
+ const ag = out.snapshot?.active_agents ?? [];
48
+ if (ag.length === 0)
49
+ return '';
50
+ const rows = ag.map((a) => {
51
+ const taskStr = a.current_task
52
+ ? `${mdEscape(a.current_task.id ?? '(unplanned)')} — ${mdEscape(a.current_task.title)}`
53
+ : 'idle';
54
+ const pr = a.open_pr ? ` (PR #${a.open_pr.number})` : '';
55
+ return `| ${mdEscape(a.actor_label)} | ${mdEscape(a.branch)} | ${taskStr}${pr} |`;
56
+ });
57
+ return ['## Active Agents', '', '| Actor | Branch | Current Task |', '|---|---|---|', ...rows].join('\n');
58
+ }
59
+ function completedSection(out) {
60
+ const cs = out.snapshot?.completed_in_window ?? [];
61
+ if (cs.length === 0)
62
+ return '';
63
+ const rows = cs.map((c) => {
64
+ const pr = c.pr_number ? `PR #${c.pr_number}` : '—';
65
+ const tid = mdEscape(c.task_id ?? '(unplanned)');
66
+ return `| ${tid} | ${mdEscape(c.task_title)} | ${mdEscape(c.outcome)} | ${pr} | ${mdEscape(c.by)} |`;
67
+ });
68
+ return [
69
+ '## Completed in Window', '', '| Task | Title | Outcome | PR | By |', '|---|---|---|---|---|', ...rows,
70
+ ].join('\n');
71
+ }
72
+ function inFlightSection(out) {
73
+ const ts = out.snapshot?.in_flight ?? [];
74
+ if (ts.length === 0)
75
+ return '';
76
+ const rows = ts.map((t) => `| ${mdEscape(t.task_id ?? '(unplanned)')} | ${mdEscape(t.task_title)}` +
77
+ ` | ${mdEscape(t.by)} | ${t.age_hours}h | ${mdEscape(t.branch)} |`);
78
+ return ['## In Flight', '', '| Task | Title | By | Age | Branch |', '|---|---|---|---|---|', ...rows].join('\n');
79
+ }
80
+ function decisionsSection(out) {
81
+ const ds = out.snapshot?.recent_decisions ?? [];
82
+ if (ds.length === 0)
83
+ return '';
84
+ const rows = ds.slice(0, 10).map((d) => {
85
+ const affects = d.affects.length > 0 ? mdEscape(d.affects.join(', ')) : '—';
86
+ return `| \`${mdEscape(d.key)}\` | ${mdEscape(d.summary)} | ${fmtDate(d.recorded_at)} | ${affects} |`;
87
+ });
88
+ return ['## Recent Decisions', '', '| Key | Summary | Recorded | Affects |', '|---|---|---|---|', ...rows].join('\n');
89
+ }
90
+ function needsAttentionSection(out) {
91
+ if (out.needs_attention.length === 0)
92
+ return '';
93
+ const rows = out.needs_attention.map((i) => {
94
+ const ageStr = i.signal === 'lens_skipped_repeatedly'
95
+ ? `${i.threshold_count ?? i.threshold_hours}× streak`
96
+ : `${i.age_hours}h`;
97
+ return `| ${i.signal} | ${mdEscape(i.summary)} | ${ageStr} |`;
98
+ });
99
+ return ['## Needs Attention', '', '| Signal | Item | Age |', '|---|---|---|', ...rows].join('\n');
100
+ }
101
+ function timelineSection(out) {
102
+ if (!out.replay || out.replay.events.length === 0)
103
+ return '';
104
+ const rows = out.replay.events.slice(0, 100).map((e) => `| ${e.ts} | ${e.source} | ${e.kind} | ${mdEscape(e.summary)} |`);
105
+ return ['## Timeline', '', `Window: ${out.replay.window.from} – ${out.replay.window.to}`, '',
106
+ '| Time | Source | Kind | Summary |', '|---|---|---|---|', ...rows].join('\n');
107
+ }
108
+ export function renderProgressMarkdown(out) {
109
+ const sinceHours = Number(out.invocation.args.sinceHours ?? 24);
110
+ const windowEnd = fmtDate(out.invocation.started_at);
111
+ const sections = [
112
+ header(out, 'Progress'),
113
+ '',
114
+ `**Window:** last ${sinceHours} hours (ending ${windowEnd})`,
115
+ `**Phase:** ${out.snapshot?.current_phase ?? '(unknown)'}`,
116
+ '',
117
+ needsAttentionSection(out),
118
+ activeAgentsSection(out),
119
+ inFlightSection(out),
120
+ completedSection(out),
121
+ decisionsSection(out),
122
+ timelineSection(out),
123
+ availabilityTable(out.availability),
124
+ '',
125
+ ledgerSummary(out.availability),
126
+ ].filter(Boolean);
127
+ return redactRendered(sections.join('\n\n')) + '\n';
128
+ }
129
+ const SEVERITIES = ['P0', 'P1', 'P2', 'P3'];
130
+ function summaryTable(out) {
131
+ const rows = SEVERITIES.map((s) => {
132
+ const total = out.summary.by_severity[s];
133
+ const stat = out.summary.by_severity_status[s];
134
+ const visible = stat.open;
135
+ return `| ${s} | ${total} | ${visible} | ${stat.acknowledged} |`;
136
+ });
137
+ const hdr = [
138
+ '## Summary',
139
+ '',
140
+ `${out.summary.total} findings · ${out.summary.blocking} blocking` +
141
+ ` (severity at or above ${out.fix_threshold}) · ${out.summary.acknowledged} acknowledged` +
142
+ ` · ${out.summary.skipped_lenses} skipped lenses.`,
143
+ '',
144
+ '| Severity | Total | Visible | Acknowledged |',
145
+ '|---|---|---|---|',
146
+ ...rows,
147
+ ];
148
+ return hdr.join('\n');
149
+ }
150
+ function renderEvidence(ev) {
151
+ if (ev.kind === 'doc_disagreement') {
152
+ const docs = `\`${mdEscape(ev.left_doc)}\` ↔ \`${mdEscape(ev.right_doc)}\``;
153
+ return `*Documents:* ${docs}\n\n*Conflict:* ${mdEscape(ev.conflict)}`;
154
+ }
155
+ return `\`\`\`\`json\n${JSON.stringify(ev, null, 2)}\n\`\`\`\``;
156
+ }
157
+ function findingSection(f) {
158
+ const idShort = f.id.slice(0, 8);
159
+ const lines = [
160
+ `### [${f.severity}] ${mdEscape(f.lens_id)} — ${mdEscape(f.title)}`,
161
+ '',
162
+ `\`${idShort}\` · *source:* \`${mdEscape(f.source_doc || '—')}\` · *confidence:* ${f.confidence}`,
163
+ '',
164
+ mdEscape(f.description),
165
+ '',
166
+ '**Evidence:**',
167
+ '',
168
+ renderEvidence(f.evidence),
169
+ ];
170
+ if (f.fix_hint) {
171
+ lines.push('', '**Fix hint:**', '', '````json', JSON.stringify(f.fix_hint, null, 2), '````');
172
+ }
173
+ return lines.join('\n');
174
+ }
175
+ function findingsSection(out) {
176
+ const visible = out.findings.filter((f) => f.status !== 'acknowledged' && f.status !== 'skipped');
177
+ if (visible.length === 0)
178
+ return '## Findings\n\nNo open findings.';
179
+ const grouped = ['## Findings'];
180
+ for (const sev of SEVERITIES) {
181
+ const inSev = visible.filter((f) => f.severity === sev);
182
+ if (inSev.length === 0)
183
+ continue;
184
+ grouped.push('', `### Severity ${sev} (${inSev.length})`, '');
185
+ for (const f of inSev)
186
+ grouped.push(findingSection(f), '');
187
+ }
188
+ return grouped.join('\n');
189
+ }
190
+ function acknowledgedSection(out) {
191
+ const acks = out.findings.filter((f) => f.status === 'acknowledged');
192
+ if (acks.length === 0)
193
+ return '';
194
+ const rows = acks.map((f) => `| \`${f.id.slice(0, 8)}\` | ${f.severity} | ${mdEscape(f.lens_id)}` +
195
+ ` | ${mdEscape(f.title)} | ${mdEscape(f.ack_note ?? '')} |`);
196
+ return [
197
+ '## Acknowledged', '', '| ID | Severity | Lens | Title | Note |', '|---|---|---|---|---|', ...rows,
198
+ ].join('\n');
199
+ }
200
+ function skippedSection(out) {
201
+ const skipped = out.findings.filter((f) => f.status === 'skipped');
202
+ if (skipped.length === 0)
203
+ return '';
204
+ const rows = skipped.map((f) => `| ${mdEscape(f.lens_id)} | ${mdEscape(f.evidence.reason ?? '—')} |`);
205
+ return ['## Skipped Lenses', '', '| Lens | Reason |', '|---|---|', ...rows].join('\n');
206
+ }
207
+ export function renderAuditMarkdown(out) {
208
+ const args = out.invocation.args;
209
+ const sections = [
210
+ header(out, 'Audit'),
211
+ '',
212
+ `**Verdict:** ${out.verdict}`,
213
+ `**Profile:** ${args.profile ?? '?'}`,
214
+ `**Scope:** ${args.scope ?? '?'}`,
215
+ `**Fix threshold:** ${out.fix_threshold}`,
216
+ '',
217
+ summaryTable(out),
218
+ findingsSection(out),
219
+ acknowledgedSection(out),
220
+ skippedSection(out),
221
+ availabilityTable(out.availability),
222
+ ].filter(Boolean);
223
+ return redactRendered(sections.join('\n\n')) + '\n';
224
+ }
225
+ //# sourceMappingURL=markdown.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markdown.js","sourceRoot":"","sources":["../../../src/observability/renderers/markdown.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=markdown.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markdown.test.d.ts","sourceRoot":"","sources":["../../../src/observability/renderers/markdown.test.ts"],"names":[],"mappings":""}