hex-audit 0.6.2 → 0.7.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 (333) hide show
  1. package/DEMO.md +13 -0
  2. package/README.md +60 -6
  3. package/dashboard/.next/BUILD_ID +1 -1
  4. package/dashboard/.next/app-build-manifest.json +100 -89
  5. package/dashboard/.next/app-path-routes-manifest.json +1 -1
  6. package/dashboard/.next/build-manifest.json +14 -14
  7. package/dashboard/.next/next-server.js.nft.json +1 -1
  8. package/dashboard/.next/prerender-manifest.js +1 -1
  9. package/dashboard/.next/prerender-manifest.json +1 -1
  10. package/dashboard/.next/react-loadable-manifest.json +118 -118
  11. package/dashboard/.next/routes-manifest.json +1 -1
  12. package/dashboard/.next/server/app/_not-found/page.js +1 -1
  13. package/dashboard/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  14. package/dashboard/.next/server/app/access/page.js +1 -1
  15. package/dashboard/.next/server/app/access/page.js.nft.json +1 -1
  16. package/dashboard/.next/server/app/access/page_client-reference-manifest.js +1 -1
  17. package/dashboard/.next/server/app/calls/page.js +1 -1
  18. package/dashboard/.next/server/app/calls/page.js.nft.json +1 -1
  19. package/dashboard/.next/server/app/calls/page_client-reference-manifest.js +1 -1
  20. package/dashboard/.next/server/app/changes/page.js +20 -0
  21. package/dashboard/.next/server/app/changes/page.js.nft.json +1 -0
  22. package/dashboard/.next/server/app/changes/page_client-reference-manifest.js +1 -0
  23. package/dashboard/.next/server/app/conformance/page.js +1 -1
  24. package/dashboard/.next/server/app/conformance/page_client-reference-manifest.js +1 -1
  25. package/dashboard/.next/server/app/diagram/page.js +1 -1
  26. package/dashboard/.next/server/app/diagram/page_client-reference-manifest.js +1 -1
  27. package/dashboard/.next/server/app/flows/page.js +1 -1
  28. package/dashboard/.next/server/app/flows/page_client-reference-manifest.js +1 -1
  29. package/dashboard/.next/server/app/functions/page.js +1 -1
  30. package/dashboard/.next/server/app/functions/page.js.nft.json +1 -1
  31. package/dashboard/.next/server/app/functions/page_client-reference-manifest.js +1 -1
  32. package/dashboard/.next/server/app/issues/page.js +6 -6
  33. package/dashboard/.next/server/app/issues/page_client-reference-manifest.js +1 -1
  34. package/dashboard/.next/server/app/notes/page.js +3 -3
  35. package/dashboard/.next/server/app/notes/page_client-reference-manifest.js +1 -1
  36. package/dashboard/.next/server/app/page.js +2 -2
  37. package/dashboard/.next/server/app/page_client-reference-manifest.js +1 -1
  38. package/dashboard/.next/server/app/progress/page.js +1 -1
  39. package/dashboard/.next/server/app/progress/page_client-reference-manifest.js +1 -1
  40. package/dashboard/.next/server/app/report/page.js +1 -1
  41. package/dashboard/.next/server/app/report/page_client-reference-manifest.js +1 -1
  42. package/dashboard/.next/server/app/stats/page.js +1 -1
  43. package/dashboard/.next/server/app/stats/page.js.nft.json +1 -1
  44. package/dashboard/.next/server/app/stats/page_client-reference-manifest.js +1 -1
  45. package/dashboard/.next/server/app-paths-manifest.json +9 -8
  46. package/dashboard/.next/server/chunks/42.js +1 -1
  47. package/dashboard/.next/server/chunks/530.js +1 -1
  48. package/dashboard/.next/server/chunks/649.js +1 -1
  49. package/dashboard/.next/server/chunks/939.js +1 -0
  50. package/dashboard/.next/server/functions-config-manifest.json +1 -1
  51. package/dashboard/.next/server/middleware-build-manifest.js +1 -1
  52. package/dashboard/.next/server/middleware-react-loadable-manifest.js +1 -1
  53. package/dashboard/.next/server/next-font-manifest.js +1 -1
  54. package/dashboard/.next/server/next-font-manifest.json +1 -1
  55. package/dashboard/.next/server/pages/500.html +1 -1
  56. package/dashboard/.next/server/pages-manifest.json +1 -1
  57. package/dashboard/.next/server/server-reference-manifest.js +1 -1
  58. package/dashboard/.next/server/server-reference-manifest.json +1 -1
  59. package/dashboard/.next/static/chunks/{1.8868c4d131111be7.js → 1.a666047ea18866fb.js} +2 -2
  60. package/dashboard/.next/static/chunks/1015.39008440ab15e196.js +226 -0
  61. package/dashboard/.next/static/chunks/1151.497fa63c5b9eba52.js +1 -0
  62. package/dashboard/.next/static/chunks/1199.f30cbfa151e56076.js +148 -0
  63. package/dashboard/.next/static/chunks/1375.64c20f1064a38a10.js +43 -0
  64. package/dashboard/.next/static/chunks/1799.8dc56017eede704e.js +9 -0
  65. package/dashboard/.next/static/chunks/20154aaa.e87f69fe10483f8b.js +1 -0
  66. package/dashboard/.next/static/chunks/2077.5603adeb156c7d10.js +1 -0
  67. package/dashboard/.next/static/chunks/2166.9f6592b9399eadd8.js +215 -0
  68. package/dashboard/.next/static/chunks/{2291.85a70cb0c228157b.js → 2291.584b42ccad079b99.js} +1 -1
  69. package/dashboard/.next/static/chunks/2325.7decd077edfb81d9.js +24 -0
  70. package/dashboard/.next/static/chunks/{2383.62c035a052272594.js → 2383.ca81f980ce6528a4.js} +1 -1
  71. package/dashboard/.next/static/chunks/2694.7dfa5fef28851903.js +1 -0
  72. package/dashboard/.next/static/chunks/275.38af87389c1d33d7.js +34 -0
  73. package/dashboard/.next/static/chunks/2781.fba46046dbf2693b.js +93 -0
  74. package/dashboard/.next/static/chunks/2805.35b4cd8a94978aaf.js +1 -0
  75. package/dashboard/.next/static/chunks/{2879.51436986f93981d9.js → 2879.74d65e33e60505ee.js} +1 -1
  76. package/dashboard/.next/static/chunks/3017.4a5312e3c20a173f.js +1 -0
  77. package/dashboard/.next/static/chunks/3205-47d09be47325709f.js +2 -0
  78. package/dashboard/.next/static/chunks/3236.eac9855778a54518.js +1 -0
  79. package/dashboard/.next/static/chunks/3480.853a445a3784642a.js +1 -0
  80. package/dashboard/.next/static/chunks/3626.c5dacee11c8fbc4d.js +64 -0
  81. package/dashboard/.next/static/chunks/3865.5e6d2d501380e03b.js +90 -0
  82. package/dashboard/.next/static/chunks/3887.073cece834a4eae2.js +1 -0
  83. package/dashboard/.next/static/chunks/3924-88d849290406ee6f.js +1 -0
  84. package/dashboard/.next/static/chunks/3948.74201b9f0672234d.js +287 -0
  85. package/dashboard/.next/static/chunks/4728.e69372b5e5b61b8d.js +24 -0
  86. package/dashboard/.next/static/chunks/4787.821a6ad2816cdc60.js +23 -0
  87. package/dashboard/.next/static/chunks/5060.47402abc10273699.js +1 -0
  88. package/dashboard/.next/static/chunks/5284.334c7c0587d5d47a.js +1 -0
  89. package/dashboard/.next/static/chunks/5715.e16b1230cc4b4652.js +115 -0
  90. package/dashboard/.next/static/chunks/6014.641a2c53ba506241.js +104 -0
  91. package/dashboard/.next/static/chunks/6024.f099c15f75aa6722.js +79 -0
  92. package/dashboard/.next/static/chunks/{6052.033a6f1013c666eb.js → 6052.3001318955e5b36c.js} +2 -2
  93. package/dashboard/.next/static/chunks/6177.a01cf0a03734cf09.js +1 -0
  94. package/dashboard/.next/static/chunks/618f8807-69fc7bb97c2b87c1.js +1 -0
  95. package/dashboard/.next/static/chunks/6434.f560693253fea8de.js +1 -0
  96. package/dashboard/.next/static/chunks/6468.976d89ba133185f1.js +77 -0
  97. package/dashboard/.next/static/chunks/6540.6f3c4f2c6877ed89.js +1 -0
  98. package/dashboard/.next/static/chunks/6549.e3c4c1766cff1449.js +1 -0
  99. package/dashboard/.next/static/chunks/690f35d0.ab57e02a04c7e9e0.js +119 -0
  100. package/dashboard/.next/static/chunks/{7020.831e16e26d91abc1.js → 7020.b718b1b9cea36e60.js} +2 -2
  101. package/dashboard/.next/static/chunks/7397-37adf76cad543297.js +1 -0
  102. package/dashboard/.next/static/chunks/7498-d1814d68ba346d13.js +1 -0
  103. package/dashboard/.next/static/chunks/7802.f0134c792fccd382.js +80 -0
  104. package/dashboard/.next/static/chunks/7973.e34032723285a616.js +79 -0
  105. package/dashboard/.next/static/chunks/{7a04ac15.1c6cea694301806c.js → 7a04ac15.e49de94ece135900.js} +1 -1
  106. package/dashboard/.next/static/chunks/8216.1138ec313908a708.js +5 -0
  107. package/dashboard/.next/static/chunks/{8233babc.780b8e272eda298f.js → 8233babc.09872dcb3ff44064.js} +1 -1
  108. package/dashboard/.next/static/chunks/{8452-e616b5f43bceb95f.js → 8452-6d77fa353402422c.js} +2 -2
  109. package/dashboard/.next/static/chunks/8645.98a43217d406500e.js +1 -0
  110. package/dashboard/.next/static/chunks/8928-fc049decdfbdaa6d.js +1 -0
  111. package/dashboard/.next/static/chunks/9173.a7160f7d0b685fa7.js +1 -0
  112. package/dashboard/.next/static/chunks/9178.998a8c49996de8e4.js +1 -0
  113. package/dashboard/.next/static/chunks/9466.a914ce0de7d3bb84.js +1 -0
  114. package/dashboard/.next/static/chunks/9660.b1c8deae2c449d14.js +1 -0
  115. package/dashboard/.next/static/chunks/{9717.6cf5c8c89403b651.js → 9717.bba51b78ebd8fd29.js} +1 -1
  116. package/dashboard/.next/static/chunks/9720.d63a0696776bcc60.js +1 -0
  117. package/dashboard/.next/static/chunks/9811.2993c4cbd28e8d1b.js +1 -0
  118. package/dashboard/.next/static/chunks/app/_not-found/page-c299b935209993df.js +1 -0
  119. package/dashboard/.next/static/chunks/app/access/page-f8403cbdfc1c176b.js +1 -0
  120. package/dashboard/.next/static/chunks/app/calls/page-41f20d01e12382ef.js +1 -0
  121. package/dashboard/.next/static/chunks/app/changes/page-82bf8b6f48cdc506.js +1 -0
  122. package/dashboard/.next/static/chunks/app/conformance/page-6bb8e3b372e38098.js +1 -0
  123. package/dashboard/.next/static/chunks/app/diagram/page-469cd7a6f183efba.js +1 -0
  124. package/dashboard/.next/static/chunks/app/flows/page-7872dd9141ba0b07.js +1 -0
  125. package/dashboard/.next/static/chunks/app/functions/page-5847bcb77a8e7edf.js +1 -0
  126. package/dashboard/.next/static/chunks/app/issues/page-1ffc64fe40439002.js +1 -0
  127. package/dashboard/.next/static/chunks/app/layout-6c6d2a0fd7c989d3.js +1 -0
  128. package/dashboard/.next/static/chunks/app/notes/page-8bcaa52304500098.js +1 -0
  129. package/dashboard/.next/static/chunks/app/page-d63800ddb072b77b.js +1 -0
  130. package/dashboard/.next/static/chunks/app/progress/page-e26554f655a62eef.js +1 -0
  131. package/dashboard/.next/static/chunks/app/report/page-18c04fb2f193b020.js +1 -0
  132. package/dashboard/.next/static/chunks/app/stats/page-67ff59fd69bed651.js +1 -0
  133. package/dashboard/.next/static/chunks/{b7167ec1.7afbab6f609e3326.js → b7167ec1.708a3d61698ca2e6.js} +1 -1
  134. package/dashboard/.next/static/chunks/c7ea4e13.3073a2f551aa5ac8.js +1 -0
  135. package/dashboard/.next/static/chunks/framework-a117d81bf1b91f9a.js +33 -0
  136. package/dashboard/.next/static/chunks/main-app-5662c64b50ba40d1.js +1 -0
  137. package/dashboard/.next/static/chunks/main-cc3a889b25e9aa68.js +1 -0
  138. package/dashboard/.next/static/chunks/pages/_app-308fef0bf9b328f2.js +1 -0
  139. package/dashboard/.next/static/chunks/pages/_error-c91b5eabd7ac9382.js +1 -0
  140. package/dashboard/.next/static/chunks/webpack-4de0e79bdd6a0418.js +1 -0
  141. package/dashboard/.next/static/css/1112cea2260b3926.css +3 -0
  142. package/dashboard/.next/static/media/39f449c8730c2295-s.woff2 +0 -0
  143. package/dashboard/.next/static/media/86f65e8637cc94e3-s.woff2 +0 -0
  144. package/dashboard/.next/static/media/8760c4774489e4ba-s.p.woff2 +0 -0
  145. package/dashboard/.next/static/media/9fabb9c65b63d798-s.woff2 +0 -0
  146. package/dashboard/.next/static/media/a1f87af3f44fadbb-s.woff2 +0 -0
  147. package/dashboard/.next/static/media/f9e1dbe9676d9bb6-s.woff2 +0 -0
  148. package/dashboard/.next/static/z5XBev05xDAkDrxWxAjNu/_buildManifest.js +1 -0
  149. package/dashboard/app/changes/ChangesClient.tsx +464 -0
  150. package/dashboard/app/changes/page.tsx +36 -0
  151. package/dashboard/app/issues/IssuesBoardClient.tsx +11 -1
  152. package/dashboard/app/layout.tsx +13 -1
  153. package/dashboard/app/notes/NotesClient.tsx +5 -0
  154. package/dashboard/app/page.tsx +42 -0
  155. package/dashboard/components/DashboardLayout.tsx +43 -18
  156. package/dist/analysis/code-model.d.ts +113 -0
  157. package/dist/analysis/code-model.d.ts.map +1 -0
  158. package/dist/analysis/code-model.js +529 -0
  159. package/dist/analysis/code-model.js.map +1 -0
  160. package/dist/analysis/diff.d.ts +64 -0
  161. package/dist/analysis/diff.d.ts.map +1 -0
  162. package/dist/analysis/diff.js +644 -0
  163. package/dist/analysis/diff.js.map +1 -0
  164. package/dist/commands/analyze.d.ts.map +1 -1
  165. package/dist/commands/analyze.js +18 -2
  166. package/dist/commands/analyze.js.map +1 -1
  167. package/dist/commands/diff.d.ts +26 -0
  168. package/dist/commands/diff.d.ts.map +1 -0
  169. package/dist/commands/diff.js +218 -0
  170. package/dist/commands/diff.js.map +1 -0
  171. package/dist/commands/init.d.ts.map +1 -1
  172. package/dist/commands/init.js +72 -9
  173. package/dist/commands/init.js.map +1 -1
  174. package/dist/commands/issue.d.ts.map +1 -1
  175. package/dist/commands/issue.js +4 -4
  176. package/dist/commands/issue.js.map +1 -1
  177. package/dist/commands/note.d.ts.map +1 -1
  178. package/dist/commands/note.js +30 -2
  179. package/dist/commands/note.js.map +1 -1
  180. package/dist/core/config.d.ts +9 -0
  181. package/dist/core/config.d.ts.map +1 -1
  182. package/dist/core/config.js +18 -0
  183. package/dist/core/config.js.map +1 -1
  184. package/dist/core/errors.d.ts +1 -1
  185. package/dist/core/errors.d.ts.map +1 -1
  186. package/dist/core/errors.js +16 -0
  187. package/dist/core/errors.js.map +1 -1
  188. package/dist/core/git.d.ts +24 -0
  189. package/dist/core/git.d.ts.map +1 -0
  190. package/dist/core/git.js +115 -0
  191. package/dist/core/git.js.map +1 -0
  192. package/dist/core/issues.d.ts +4 -2
  193. package/dist/core/issues.d.ts.map +1 -1
  194. package/dist/core/issues.js +67 -28
  195. package/dist/core/issues.js.map +1 -1
  196. package/dist/core/notes.d.ts +25 -1
  197. package/dist/core/notes.d.ts.map +1 -1
  198. package/dist/core/notes.js +34 -2
  199. package/dist/core/notes.js.map +1 -1
  200. package/dist/core/schema.d.ts +750 -53
  201. package/dist/core/schema.d.ts.map +1 -1
  202. package/dist/core/schema.js +153 -1
  203. package/dist/core/schema.js.map +1 -1
  204. package/dist/core/skills.d.ts +10 -4
  205. package/dist/core/skills.d.ts.map +1 -1
  206. package/dist/core/skills.js +100 -37
  207. package/dist/core/skills.js.map +1 -1
  208. package/dist/index.js +2 -0
  209. package/dist/index.js.map +1 -1
  210. package/dist/skills/ai-audit/LICENSE +21 -0
  211. package/dist/skills/ai-audit/SKILL.md +476 -0
  212. package/dist/skills/ai-audit/UPSTREAM.md +46 -0
  213. package/dist/skills/ai-audit/references/agent-prompts.md +133 -0
  214. package/dist/skills/ai-audit/references/assemble.sh +357 -0
  215. package/dist/skills/ai-audit/references/dedup-and-assembly.md +420 -0
  216. package/dist/skills/ai-audit/references/hacking-agents/access-control-agent.md +27 -0
  217. package/dist/skills/ai-audit/references/hacking-agents/asymmetry-agent.md +77 -0
  218. package/dist/skills/ai-audit/references/hacking-agents/boundary-agent.md +79 -0
  219. package/dist/skills/ai-audit/references/hacking-agents/economic-security-agent.md +35 -0
  220. package/dist/skills/ai-audit/references/hacking-agents/execution-trace-agent.md +33 -0
  221. package/dist/skills/ai-audit/references/hacking-agents/first-principles-agent.md +36 -0
  222. package/dist/skills/ai-audit/references/hacking-agents/flow-gap-agent.md +49 -0
  223. package/dist/skills/ai-audit/references/hacking-agents/invariant-agent.md +44 -0
  224. package/dist/skills/ai-audit/references/hacking-agents/math-precision-agent.md +48 -0
  225. package/dist/skills/ai-audit/references/hacking-agents/numerical-gap-agent.md +46 -0
  226. package/dist/skills/ai-audit/references/hacking-agents/periphery-agent.md +27 -0
  227. package/dist/skills/ai-audit/references/hacking-agents/shared-rules.md +61 -0
  228. package/dist/skills/ai-audit/references/hacking-agents/trust-gap-agent.md +40 -0
  229. package/dist/skills/ai-audit/references/hex-board.md +223 -0
  230. package/dist/skills/ai-audit/references/hex-export.sh +71 -0
  231. package/dist/skills/ai-audit/references/judging.md +75 -0
  232. package/dist/skills/ai-audit/references/report-formatting.md +385 -0
  233. package/dist/skills/ai-audit/references/report-language.md +151 -0
  234. package/dist/skills/ai-audit/references/senior-auditor-sop.md +63 -0
  235. package/dist/skills/generate-report.md +9 -3
  236. package/dist/skills/ingest-aa-report.md +11 -2
  237. package/dist/skills/init-audit.md +104 -2
  238. package/dist/skills/validate-all-findings.md +1 -1
  239. package/dist/skills/validate-finding.md +12 -7
  240. package/dist/skills/write-finding.md +8 -6
  241. package/dist/types/index.d.ts +7 -1
  242. package/dist/types/index.d.ts.map +1 -1
  243. package/package.json +2 -1
  244. package/dashboard/.next/server/app/_not-found.html +0 -1
  245. package/dashboard/.next/server/app/_not-found.meta +0 -6
  246. package/dashboard/.next/server/app/_not-found.rsc +0 -12
  247. package/dashboard/.next/server/app/diagram.html +0 -1
  248. package/dashboard/.next/server/app/diagram.meta +0 -5
  249. package/dashboard/.next/server/app/diagram.rsc +0 -10
  250. package/dashboard/.next/server/app/flows.html +0 -1
  251. package/dashboard/.next/server/app/flows.meta +0 -5
  252. package/dashboard/.next/server/app/flows.rsc +0 -10
  253. package/dashboard/.next/server/chunks/44.js +0 -1
  254. package/dashboard/.next/server/pages/404.html +0 -1
  255. package/dashboard/.next/static/ZYqkgvjnS38aMxfanyctA/_buildManifest.js +0 -1
  256. package/dashboard/.next/static/chunks/1015.3ab89142e5f44120.js +0 -226
  257. package/dashboard/.next/static/chunks/1151.b6ef5c786e587ed7.js +0 -1
  258. package/dashboard/.next/static/chunks/1199.a072929dbec89965.js +0 -148
  259. package/dashboard/.next/static/chunks/1375.d4d2f7fc9c9c2ff1.js +0 -43
  260. package/dashboard/.next/static/chunks/1799.83206776abbbf1fc.js +0 -9
  261. package/dashboard/.next/static/chunks/20154aaa.ccc347c04ab5ad4a.js +0 -1
  262. package/dashboard/.next/static/chunks/2077.7011a570c87aa7b1.js +0 -1
  263. package/dashboard/.next/static/chunks/2166.cc0fabeb2e89b840.js +0 -215
  264. package/dashboard/.next/static/chunks/2325.2c55cb9a6282ae3f.js +0 -24
  265. package/dashboard/.next/static/chunks/2694.92bbe252063e4786.js +0 -1
  266. package/dashboard/.next/static/chunks/275.0d761aa0e5b030b8.js +0 -34
  267. package/dashboard/.next/static/chunks/2781.8536b644a480aede.js +0 -93
  268. package/dashboard/.next/static/chunks/2805.a8d71d2f92bb6ba9.js +0 -1
  269. package/dashboard/.next/static/chunks/3017.e55781da9dd32d37.js +0 -1
  270. package/dashboard/.next/static/chunks/3205-728c260fbb4f89c6.js +0 -2
  271. package/dashboard/.next/static/chunks/3236.dff44fa7961d9d5e.js +0 -1
  272. package/dashboard/.next/static/chunks/3480.9451396ad7ee7613.js +0 -1
  273. package/dashboard/.next/static/chunks/3626.ba1cf848a9f2e93d.js +0 -64
  274. package/dashboard/.next/static/chunks/3865.a432a7910a2f5281.js +0 -90
  275. package/dashboard/.next/static/chunks/3887.c22cbfa3f095826c.js +0 -1
  276. package/dashboard/.next/static/chunks/3924-4a05057b5450abe1.js +0 -1
  277. package/dashboard/.next/static/chunks/3948.fe3c7d758568d98b.js +0 -287
  278. package/dashboard/.next/static/chunks/4728.07d87640a3e7dd0d.js +0 -24
  279. package/dashboard/.next/static/chunks/4787.4e5f6a0e0e40a583.js +0 -23
  280. package/dashboard/.next/static/chunks/5060.baca226af35ed016.js +0 -1
  281. package/dashboard/.next/static/chunks/5284.f949ac90c95ff143.js +0 -1
  282. package/dashboard/.next/static/chunks/5715.1524bcc9591e180b.js +0 -115
  283. package/dashboard/.next/static/chunks/6014.700ae4969b64d728.js +0 -104
  284. package/dashboard/.next/static/chunks/6024.4d23707c65514679.js +0 -79
  285. package/dashboard/.next/static/chunks/6177.e5c84cfc4c0dea51.js +0 -1
  286. package/dashboard/.next/static/chunks/618f8807-547c5614e1318888.js +0 -1
  287. package/dashboard/.next/static/chunks/6434.9481771c33195d29.js +0 -1
  288. package/dashboard/.next/static/chunks/6468.f4a3e8fa6accc6da.js +0 -77
  289. package/dashboard/.next/static/chunks/6540.86f367d7390738d4.js +0 -1
  290. package/dashboard/.next/static/chunks/6549.4d0d472df96429a5.js +0 -1
  291. package/dashboard/.next/static/chunks/690f35d0.3e40ca0930e4bbdb.js +0 -119
  292. package/dashboard/.next/static/chunks/7397-f6f4dddc7a20bfc1.js +0 -1
  293. package/dashboard/.next/static/chunks/7498-ea83cb9e30ec5491.js +0 -1
  294. package/dashboard/.next/static/chunks/7802.89aec9ee11680850.js +0 -80
  295. package/dashboard/.next/static/chunks/7973.8b526f589aca5d84.js +0 -79
  296. package/dashboard/.next/static/chunks/8216.1bead812eb126c35.js +0 -5
  297. package/dashboard/.next/static/chunks/8645.a5ca76f11edc9633.js +0 -1
  298. package/dashboard/.next/static/chunks/8928-60c623ee89d2e6ad.js +0 -1
  299. package/dashboard/.next/static/chunks/9173.2486ffca31131ec5.js +0 -1
  300. package/dashboard/.next/static/chunks/9178.469341860bf8caec.js +0 -1
  301. package/dashboard/.next/static/chunks/9466.e904660d38c03eea.js +0 -1
  302. package/dashboard/.next/static/chunks/9660.84a85811380c5f33.js +0 -1
  303. package/dashboard/.next/static/chunks/9720.67d4d0d15a96d691.js +0 -1
  304. package/dashboard/.next/static/chunks/9811.65e1d080c2d256af.js +0 -1
  305. package/dashboard/.next/static/chunks/app/_not-found/page-548ab392d0e890d1.js +0 -1
  306. package/dashboard/.next/static/chunks/app/access/page-3668562e7464eb5d.js +0 -1
  307. package/dashboard/.next/static/chunks/app/calls/page-d07f5b8664cc8303.js +0 -1
  308. package/dashboard/.next/static/chunks/app/conformance/page-2fede1d7b5f9265d.js +0 -1
  309. package/dashboard/.next/static/chunks/app/diagram/page-b228444265546495.js +0 -1
  310. package/dashboard/.next/static/chunks/app/flows/page-fa67783d8cd79cab.js +0 -1
  311. package/dashboard/.next/static/chunks/app/functions/page-686f0296639133a3.js +0 -1
  312. package/dashboard/.next/static/chunks/app/issues/page-98a298e1c1045c91.js +0 -1
  313. package/dashboard/.next/static/chunks/app/layout-49f2496c7637d931.js +0 -1
  314. package/dashboard/.next/static/chunks/app/notes/page-17af94c67ba79c00.js +0 -1
  315. package/dashboard/.next/static/chunks/app/page-24bac51dfe007c66.js +0 -1
  316. package/dashboard/.next/static/chunks/app/progress/page-427fb18da3afb061.js +0 -1
  317. package/dashboard/.next/static/chunks/app/report/page-796f2f4a8a5ac8f7.js +0 -1
  318. package/dashboard/.next/static/chunks/app/stats/page-db81f600a086f252.js +0 -1
  319. package/dashboard/.next/static/chunks/c7ea4e13.5effeeba6618bdb7.js +0 -1
  320. package/dashboard/.next/static/chunks/framework-cf6f5bdca6ba0184.js +0 -33
  321. package/dashboard/.next/static/chunks/main-63ff429eab01f5bf.js +0 -1
  322. package/dashboard/.next/static/chunks/main-app-9d2f6b8a47133e9b.js +0 -1
  323. package/dashboard/.next/static/chunks/pages/_app-6ad2b50514c24ab4.js +0 -1
  324. package/dashboard/.next/static/chunks/pages/_error-d5eb11c5c4626811.js +0 -1
  325. package/dashboard/.next/static/chunks/webpack-08869f2b18792e51.js +0 -1
  326. package/dashboard/.next/static/css/4a38d8f6f6b7a68f.css +0 -3
  327. package/dashboard/.next/static/media/438aa629764e75f3-s.woff2 +0 -0
  328. package/dashboard/.next/static/media/4c9affa5bc8f420e-s.p.woff2 +0 -0
  329. package/dashboard/.next/static/media/51251f8b9793cdb3-s.woff2 +0 -0
  330. package/dashboard/.next/static/media/875ae681bfde4580-s.woff2 +0 -0
  331. package/dashboard/.next/static/media/cc978ac5ee68c2b6-s.woff2 +0 -0
  332. package/dashboard/.next/static/media/e857b654a2caa584-s.woff2 +0 -0
  333. /package/dashboard/.next/static/{ZYqkgvjnS38aMxfanyctA → z5XBev05xDAkDrxWxAjNu}/_ssgManifest.js +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diff.js","sourceRoot":"","sources":["../../src/analysis/diff.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,GAKZ,MAAM,iBAAiB,CAAC;AAQzB;;;;;GAKG;AAEH,uEAAuE;AAEvE,SAAS,WAAW,CAAC,CAAgB;IACnC,OAAO,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACzD,CAAC;AAED,SAAS,OAAO,CAAC,CAAW;IAC1B,OAAO,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,SAAS,EAAE,CAAC;AACpC,CAAC;AAED,SAAS,eAAe,CAAC,CAAgB;IACvC,OAAO,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC/C,CAAC;AAED,SAAS,UAAU,CAAC,CAAgB;IAClC,OAAO,CAAC,CAAC,IAAI,KAAK,UAAU,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC;AACxD,CAAC;AAED,SAAS,UAAU,CAAC,CAAgB,EAAE,CAAW,EAAE,MAA4B;IAC7E,OAAO;QACL,QAAQ,EAAE,eAAe,CAAC,CAAC,CAAC;QAC5B,MAAM,EAAE,CAAC,CAAC,SAAS;QACnB,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,MAAM;QACN,UAAU,EAAE,CAAC,CAAC,SAAS;QACvB,QAAQ,EAAE,CAAC,CAAC,OAAO;QACnB,UAAU,EAAE,CAAC,CAAC,UAAU;KACzB,CAAC;AACJ,CAAC;AAED,mEAAmE;AACnE,MAAM,UAAU,YAAY,CAC1B,IAA0B,EAC1B,IAA0B;IAE1B,MAAM,OAAO,GAAiB,EAAE,CAAC;IACjC,MAAM,MAAM,GAA0B,EAAE,CAAC;IAEzC,IAAI,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC;QAClB,OAAO,CAAC,IAAI,CAAC;YACX,QAAQ,EAAE,eAAe,CAAC,IAAI,CAAC;YAC/B,MAAM,EAAE,eAAe,CAAC,IAAI,CAAC;YAC7B,IAAI,EAAE,UAAU;YAChB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,MAAM,EAAE,OAAO;YACf,UAAU,EAAE,IAAI,CAAC,SAAS;YAC1B,QAAQ,EAAE,IAAI,CAAC,OAAO;SACvB,CAAC,CAAC;QACH,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,KAAK;YAAE,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;QACvE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;IAC7B,CAAC;IACD,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,OAAO,CAAC,IAAI,CAAC;YACX,QAAQ,EAAE,eAAe,CAAC,IAAI,CAAC;YAC/B,MAAM,EAAE,eAAe,CAAC,IAAI,CAAC;YAC7B,IAAI,EAAE,UAAU;YAChB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,MAAM,EAAE,SAAS;YACjB,UAAU,EAAE,IAAI,CAAC,SAAS;YAC1B,QAAQ,EAAE,IAAI,CAAC,OAAO;SACvB,CAAC,CAAC;QACH,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,KAAK;YAAE,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC;QACzE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;IAC7B,CAAC;IACD,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;IAE/C,MAAM,IAAI,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;IAEnC,kEAAkE;IAClE,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QAClD,OAAO,CAAC,IAAI,CAAC;YACX,QAAQ,EAAE,IAAI;YACd,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY;YACxE,IAAI,EAAE,aAAa;YACnB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,MAAM,EAAE,UAAU;YAClB,UAAU,EAAE,IAAI,CAAC,SAAS;SAC3B,CAAC,CAAC;QACH,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACrB,MAAM,CAAC,IAAI,CAAC;gBACV,QAAQ,EAAE,IAAI;gBACd,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,IAAI,EAAE,qBAAqB;gBAC3B,MAAM,EAAE,uBAAuB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;aACvF,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,2BAA2B;IAC3B,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAClE,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAClE,KAAK,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,SAAS,EAAE,CAAC;QAChC,MAAM,EAAE,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC5B,IAAI,CAAC,EAAE;YAAE,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;aAChD,IAAI,EAAE,CAAC,UAAU,KAAK,EAAE,CAAC,UAAU;YAAE,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,EAAE,UAAU,CAAC,CAAC,CAAC;aACpF,IAAI,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG;YAAE,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,EAAE,eAAe,CAAC,CAAC,CAAC;IAClF,CAAC;IACD,KAAK,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,SAAS,EAAE,CAAC;QAChC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;YAAE,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC;IACvE,CAAC;IAED,sEAAsE;IACtE,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACjE,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACjE,KAAK,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,QAAQ,EAAE,CAAC;QAC/B,MAAM,EAAE,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC3B,MAAM,MAAM,GAAgC,CAAC,EAAE;YAC7C,CAAC,CAAC,OAAO;YACT,CAAC,CAAC,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,UAAU,KAAK,EAAE,CAAC,UAAU,IAAI,EAAE,CAAC,OAAO,KAAK,EAAE,CAAC,OAAO;gBACnF,CAAC,CAAC,UAAU;gBACZ,CAAC,CAAC,IAAI,CAAC;QACX,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,CAAC,IAAI,CAAC;gBACX,QAAQ,EAAE,IAAI;gBACd,MAAM,EAAE,CAAC;gBACT,IAAI,EAAE,gBAAgB;gBACtB,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,MAAM;gBACN,UAAU,EAAE,EAAE,CAAC,SAAS;aACzB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IACD,KAAK,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,QAAQ,EAAE,CAAC;QAC/B,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YACrB,OAAO,CAAC,IAAI,CAAC;gBACX,QAAQ,EAAE,IAAI;gBACd,MAAM,EAAE,CAAC;gBACT,IAAI,EAAE,gBAAgB;gBACtB,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,MAAM,EAAE,SAAS;gBACjB,UAAU,EAAE,EAAE,CAAC,SAAS;aACzB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,2BAA2B;IAC3B,MAAM,SAAS,GAAG,CAChB,IAAuB,EACvB,CAA0B,EAC1B,CAA0B,EAC1B,EAAE;QACF,MAAM,EAAE,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9C,MAAM,EAAE,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9C,KAAK,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC;YACzB,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACrB,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,SAAS,KAAK,EAAE,CAAC,SAAS,EAAE,CAAC;gBACzC,OAAO,CAAC,IAAI,CAAC;oBACX,QAAQ,EAAE,IAAI;oBACd,MAAM,EAAE,EAAE,CAAC,SAAS;oBACpB,IAAI;oBACJ,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO;oBACjC,UAAU,EAAE,EAAE,CAAC,SAAS;iBACzB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QACD,KAAK,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC;YACzB,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;gBACf,OAAO,CAAC,IAAI,CAAC;oBACX,QAAQ,EAAE,IAAI;oBACd,MAAM,EAAE,EAAE,CAAC,SAAS;oBACpB,IAAI;oBACJ,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,MAAM,EAAE,SAAS;oBACjB,UAAU,EAAE,EAAE,CAAC,SAAS;iBACzB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC,CAAC;IACF,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAC7C,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAE7C,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAClE,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAClE,KAAK,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,WAAW,EAAE,CAAC;QAClC,MAAM,EAAE,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC9B,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YACzD,OAAO,CAAC,IAAI,CAAC;gBACX,QAAQ,EAAE,IAAI;gBACd,MAAM,EAAE,CAAC;gBACT,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO;gBACjC,UAAU,EAAE,EAAE,CAAC,SAAS;aACzB,CAAC,CAAC;YACH,yEAAyE;YACzE,MAAM,OAAO,GAAG,IAAI,MAAM,CAAC,oBAAoB,CAAC,mBAAmB,CAAC,CAAC;YACrE,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAClC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAC1D,CAAC;YACF,IAAI,EAAE,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;gBAChD,MAAM,CAAC,IAAI,CAAC;oBACV,QAAQ,EAAE,IAAI;oBACd,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,IAAI,EAAE,gBAAgB;oBACtB,MAAM,EAAE,YAAY,CAAC,+BAA+B,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;iBACrG,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IACD,KAAK,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,WAAW,EAAE,CAAC;QAClC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YACxB,OAAO,CAAC,IAAI,CAAC;gBACX,QAAQ,EAAE,IAAI;gBACd,MAAM,EAAE,CAAC;gBACT,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,MAAM,EAAE,SAAS;gBACjB,UAAU,EAAE,EAAE,CAAC,SAAS;aACzB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,6DAA6D;IAC7D,IAAI,UAAU,CAAC,IAAI,CAAC;QAAE,MAAM,CAAC,IAAI,CAAC,GAAG,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;IAErF,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;AAC7B,CAAC;AAED,SAAS,iBAAiB,CACxB,QAAgB,EAChB,IAAY,EACZ,IAAmB,EACnB,IAAmB;IAEnB,MAAM,GAAG,GAA0B,EAAE,CAAC;IACtC,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC;IACxE,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC;IACxE,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACzC,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACzC,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC3D,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAE3D,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACvB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YAClB,GAAG,CAAC,IAAI,CAAC;gBACP,QAAQ;gBACR,IAAI;gBACJ,IAAI,EAAE,kBAAkB;gBACxB,MAAM,EAAE,KAAK,CAAC,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,6CAA6C;aAC/E,CAAC,CAAC;QACL,CAAC;aAAM,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YACzC,GAAG,CAAC,IAAI,CAAC;gBACP,QAAQ;gBACR,IAAI;gBACJ,IAAI,EAAE,uBAAuB;gBAC7B,MAAM,EAAE,KAAK,CAAC,wBAAwB,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG;aACzE,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAClD,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7D,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACrD,GAAG,CAAC,IAAI,CAAC;YACP,QAAQ;YACR,IAAI;YACJ,IAAI,EAAE,oBAAoB;YAC1B,MAAM,EAAE,+BAA+B,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;SACjG,CAAC,CAAC;IACL,CAAC;IAED,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACrF,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACvB,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;YAAE,SAAS;QAC3B,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC9B,MAAM,QAAQ,GAAG,GAAG,GAAG,aAAa,CAAC;QACrC,GAAG,CAAC,IAAI,CAAC;YACP,QAAQ;YACR,IAAI;YACJ,IAAI,EAAE,gBAAgB;YACtB,MAAM,EAAE,QAAQ;gBACd,CAAC,CAAC,KAAK,CAAC,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,sCAAsC;gBACjE,CAAC,CAAC,KAAK,CAAC,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,oEAAoE;SAClG,CAAC,CAAC;IACL,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,UAAU,CACxB,UAAuB,EACvB,UAAuB;IAEvB,MAAM,MAAM,GAAG,IAAI,GAAG,EAAyB,CAAC;IAChD,MAAM,MAAM,GAAG,IAAI,GAAG,EAAyB,CAAC;IAChD,KAAK,MAAM,EAAE,IAAI,UAAU;QAAE,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC,SAAS;YAAE,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACzF,KAAK,MAAM,EAAE,IAAI,UAAU;QAAE,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC,SAAS;YAAE,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAEzF,MAAM,OAAO,GAAiB,EAAE,CAAC;IACjC,MAAM,MAAM,GAA0B,EAAE,CAAC;IACzC,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,EAAE,EAAE,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAC3D,KAAK,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;QACjC,MAAM,CAAC,GAAG,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC;QACrE,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC;QAC3B,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC;IAC3B,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;AAC7B,CAAC;AAED,uEAAuE;AAEvE,MAAM,SAAS,GAA+B,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;AAC7E,SAAS,OAAO,CAAC,CAAa,EAAE,CAAa;IAC3C,OAAO,SAAS,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9C,CAAC;AAoBD,MAAM,UAAU,MAAM,CAAC,CAAW,EAAE,IAAa;IAC/C,OAAO,CAAC,CAAC,QAAQ,KAAK,QAAQ;QAC5B,CAAC,CAAC,UAAU,IAAI,IAAI,EAAE,IAAI,CAAC,CAAC,SAAS,EAAE;QACvC,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,SAAS,EAAE,CAAC;AACrC,CAAC;AAED,SAAS,aAAa,CAAC,IAAY,EAAE,SAAqC;IACxE,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,KAAK,MAAM,CAAC,IAAI,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC;QACnC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,IAAI,WAAW,CAAC,CAAC,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;YAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACzF,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,gBAAgB,CAAC,UAAuB;IACtD,MAAM,KAAK,GAAG,IAAI,GAAG,EAAoB,CAAC;IAC1C,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC3C,MAAM,SAAS,GAAG,IAAI,GAAG,EAAyB,CAAC;IACnD,MAAM,SAAS,GAAuC,EAAE,CAAC;IAEzD,KAAK,MAAM,EAAE,IAAI,UAAU,EAAE,CAAC;QAC5B,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC,SAAS,EAAE,CAAC;YAC7B,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM;gBAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;YAChD,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;gBACxB,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;gBAC7B,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;gBACjB,QAAQ,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;gBACzB,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM;oBAAE,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;YACnD,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,cAAc,GAAG,IAAI,GAAG,EAAoB,CAAC;IACnD,MAAM,SAAS,GAAG,CAAC,CAAS,EAAE,EAAE;QAC9B,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC;YAAE,cAAc,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC;QAC7E,OAAO,cAAc,CAAC,GAAG,CAAC,CAAC,CAAE,CAAC;IAChC,CAAC,CAAC;IACF,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAoB,CAAC;IACrD,MAAM,WAAW,GAAG,CAAC,CAAS,EAAE,EAAE;QAChC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC;YAAE,gBAAgB,CAAC,GAAG,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC;QACnF,OAAO,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAE,CAAC;IAClC,CAAC,CAAC;IAEF,wFAAwF;IACxF,MAAM,OAAO,GAAG,CAAC,KAAe,EAAE,IAAY,EAAE,IAAsB,EAAE,QAAiB,EAAE,EAAE;QAC3F,KAAK,MAAM,EAAE,IAAI,KAAK,EAAE,CAAC;YACvB,MAAM,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC5B,IAAI,CAAC,CAAC;gBAAE,SAAS;YACjB,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;YACvE,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;gBAAE,SAAS;YAChC,MAAM,KAAK,GAAG,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC;YAC5F,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QACrE,CAAC;QACD,OAAO,EAAE,CAAC;IACZ,CAAC,CAAC;IAEF,gFAAgF;IAChF,MAAM,SAAS,GAAG,CAAC,IAAY,EAAE,IAAY,EAAE,IAAsB,EAAE,QAAiB,EAAE,EAAE;QAC1F,MAAM,GAAG,GAAa,EAAE,CAAC;QACzB,KAAK,MAAM,CAAC,IAAI,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;YAClC,MAAM,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAE,CAAC;YAC5B,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,MAAM,CACzB,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,IAAI,KAAK,IAAI;gBACf,CAAC,CAAC,IAAI,KAAK,IAAI;gBACf,CAAC,QAAQ,KAAK,SAAS,IAAI,CAAC,CAAC,UAAU,KAAK,QAAQ,CAAC,CACxD,CAAC;YACF,KAAK,MAAM,CAAC,IAAI,IAAI;gBAAE,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QACpD,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC,CAAC;IAEF,MAAM,SAAS,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC5C,MAAM,OAAO,GAAG,CAAC,CAAO,EAAE,EAAE;QAC1B,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC;YAAE,OAAO;QAC1D,MAAM,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QAC3C,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC;YAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAChF,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAChC,CAAC,CAAC;IAEF,MAAM,OAAO,GAAG,CACd,MAAgB,EAChB,GAAY,EAC6C,EAAE;QAC3D,MAAM,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC;QAC3B,MAAM,KAAK,GAAG,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;QAC5D,MAAM,GAAG,GAA4D,EAAE,CAAC;QACxE,MAAM,IAAI,GAAG,CAAC,GAAa,EAAE,IAAc,EAAE,IAAgB,EAAE,EAAE;YAC/D,KAAK,MAAM,EAAE,IAAI,GAAG;gBAAE,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QACrD,CAAC,CAAC;QACF,QAAQ,GAAG,CAAC,IAAI,EAAE,CAAC;YACjB,KAAK,UAAU,CAAC;YAChB,KAAK,MAAM,CAAC,CAAC,CAAC;gBACZ,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;gBAClE,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;oBAClB,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;oBAC9B,IAAI,EAAE,KAAK,QAAQ;wBACjB,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;gBAClF,CAAC;qBAAM,IAAI,GAAG,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;oBACnC,IAAI,CACF,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAC/D,OAAO,EACP,MAAM,CACP,CAAC;gBACJ,CAAC;gBACD,MAAM;YACR,CAAC;YACD,KAAK,OAAO;gBACV,IAAI,CACF,OAAO,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,CAAC,QAAQ,CAAC,EACjF,OAAO,EACP,MAAM,CACP,CAAC;gBACF,MAAM;YACR,KAAK,WAAW;gBACd,IAAI,GAAG,CAAC,MAAM;oBACZ,IAAI,CACF,OAAO,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,CAAC,QAAQ,CAAC,EACnF,OAAO,EACP,MAAM,CACP,CAAC;gBACJ,MAAM;YACR,KAAK,WAAW;gBACd,IAAI,GAAG,CAAC,MAAM;oBAAE,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,aAAa,EAAE,UAAU,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;gBACxF,MAAM;YACR,KAAK,OAAO,CAAC,CAAC,CAAC;gBACb,IAAI,CAAC,GAAG,CAAC,MAAM;oBAAE,MAAM;gBACvB,MAAM,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gBACpC,IAAI,CAAC,CAAC;oBAAE,MAAM;gBACd,IAAI,CAAC,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;oBAC3B,yDAAyD;oBACzD,KAAK,MAAM,IAAI,IAAI,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;wBACvC,MAAM,EAAE,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,CAAE,CAAC;wBAChC,IAAI,EAAE,CAAC,IAAI,KAAK,WAAW;4BAAE,SAAS;wBACtC,IAAI,CACF,OAAO,CAAC,CAAC,IAAI,EAAE,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,CAAC,QAAQ,CAAC,EACvE,OAAO,EACP,QAAQ,CACT,CAAC;oBACJ,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,IAAI,CACF,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,CAAC,QAAQ,CAAC,EAC3E,OAAO,EACP,QAAQ,CACT,CAAC;oBACF,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;gBACpF,CAAC;gBACD,MAAM;YACR,CAAC;YACD,KAAK,QAAQ,CAAC,CAAC,CAAC;gBACd,uEAAuE;gBACvE,oDAAoD;gBACpD,KAAK,MAAM,CAAC,IAAI,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC;oBACnC,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;wBACxB,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU,IAAI,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI;4BAAE,SAAS;wBAC3D,MAAM,WAAW,GAAG,CAAC,CAAC,UAAU,KAAK,UAAU,IAAI,CAAC,CAAC,UAAU,KAAK,QAAQ,CAAC;wBAC7E,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,WAAW,IAAI,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,EAAE,CAAC;4BACpE,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;wBAClE,CAAC;oBACH,CAAC;gBACH,CAAC;gBACD,MAAM;YACR,CAAC;QACH,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC,CAAC;IAEF,KAAK,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC;QAC5B,KAAK,MAAM,GAAG,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;YAC1B,KAAK,MAAM,CAAC,IAAI,OAAO,CAAC,CAAC,EAAE,GAAG,CAAC;gBAC7B,OAAO,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QAC5E,CAAC;QACD,8BAA8B;QAC9B,IAAI,CAAC,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAC5B,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;YACrD,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,CAAC;gBAC5B,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC,EAAE,UAAU,CAAC,EAAE,CAAC;oBAChD,OAAO,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC;gBAC7E,CAAC;gBACD,KAAK,MAAM,GAAG,IAAI,SAAS,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,EAAE,UAAU,CAAC,EAAE,CAAC;oBACvD,OAAO,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC,CAAC;gBAC/E,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC;AACnD,CAAC;AAED,SAAS,YAAY,CAAC,CAAW,EAAE,CAA4B;IAC7D,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU;QAAE,OAAO,KAAK,CAAC;IAC9C,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU;QAAE,OAAO,KAAK,CAAC;IACjE,OAAO,CAAC,CAAC,UAAU,KAAK,UAAU,IAAI,CAAC,CAAC,UAAU,KAAK,QAAQ,IAAI,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,SAAS,CAAC;AACjG,CAAC;AAQD,MAAM,WAAW,GAAG,CAAC,CAAC;AAEtB;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAAC,KAAkB,EAAE,OAAqB;IACrE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;IACxD,MAAM,KAAK,GAAG,IAAI,GAAG,EAAqB,CAAC;IAE3C,MAAM,MAAM,GAAG,CAAC,IAA2B,EAAE,KAAa,EAAE,IAAgB,EAAE,EAAE,CAC9E,CAAC,IAAI;QACL,SAAS,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC;QAC5C,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;IAEzE,MAAM,IAAI,GAAG,CACX,EAAU,EACV,KAAa,EACb,IAAgB,EAChB,MAA2C,EAC3C,EAAE;QACF,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC3B,IAAI,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC;YAC9B,MAAM,OAAO,GAAG,IAAI;gBAClB,CAAC,CAAC,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,MAAM,CAAC,GAAG,CAAC,CAAC;gBAC/D,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;YACb,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC;YACnF,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IACE,IAAI;YACJ,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,WAAW;YACjC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,CAAC,EACzE,CAAC;YACD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC5B,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;IAEF,qEAAqE;IACrE,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,EAAE,IAAI,OAAO,EAAE,CAAC;QACzB,IACE,CAAC,EAAE,CAAC,IAAI,KAAK,UAAU,IAAI,EAAE,CAAC,IAAI,KAAK,UAAU,CAAC;YAClD,CAAC,EAAE,CAAC,MAAM,KAAK,OAAO,IAAI,EAAE,CAAC,MAAM,KAAK,UAAU,CAAC;YAEnD,SAAS;QACX,MAAM,EAAE,GACN,EAAE,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,QAAQ,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC;QAC9F,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;YAAE,SAAS;QAC7B,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC;QACzD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,2BAA2B;IAC3B,MAAM,QAAQ,GAAG,CAAC,EAAU,EAAE,EAAE;QAC9B,MAAM,GAAG,GAAG,WAAW,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;QACvC,MAAM,IAAI,GAAG,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC;aACjC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;aAC1D,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACtB,OAAO,IAAI,GAAG,CAAC,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;IACxC,CAAC,CAAC;IACF,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,QAAQ,GAAG,CAAC,EAAU,EAAE,IAAiB,EAAE,GAA0B,EAAE,MAAe,EAAE,EAAE;QAC9F,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC;YAAE,OAAO;QAC5B,MAAM,GAAG,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC;YAC5B,IAAI,EAAE,KAAK,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC;gBAAE,SAAS;YACpD,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAC/D,IAAI,CAAC,GAAG;gBAAE,SAAS;YACnB,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBAAE,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACtF,CAAC;IACH,CAAC,CAAC;IACF,KAAK,MAAM,EAAE,IAAI,KAAK,EAAE,CAAC;QACvB,MAAM,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,CAAE,CAAC;QACzB,IAAI,CAAC,CAAC,QAAQ,KAAK,QAAQ;YAAE,SAAS;QACtC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,gBAAgB,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;IAChF,CAAC;IACD,MAAM,UAAU,GAAG,IAAI,GAAG,EAAuB,CAAC;IAClD,KAAK,MAAM,EAAE,IAAI,OAAO,EAAE,CAAC;QACzB,IAAI,EAAE,CAAC,IAAI,KAAK,gBAAgB,IAAI,EAAE,CAAC,MAAM,KAAK,SAAS;YAAE,SAAS;QACtE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC;YAAE,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;QACzE,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAE,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;IAC9C,CAAC;IACD,KAAK,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,UAAU;QACjC,QAAQ,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,wBAAwB,CAAC,CAAC;IAEhE,yEAAyE;IACzE,MAAM,KAAK,GAAG,CAAC,GAAG,KAAK,EAAE,GAAG,OAAO,CAAC,CAAC;IACrC,OAAO,KAAK,CAAC,MAAM,EAAE,CAAC;QACpB,MAAM,EAAE,GAAG,KAAK,CAAC,KAAK,EAAG,CAAC;QAC1B,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,CAAE,CAAC;QAC3B,KAAK,MAAM,CAAC,IAAI,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC;YACxC,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC;YACnD,MAAM,IAAI,GACR,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC;YACpF,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,GAAG,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC;gBAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QACnF,CAAC;IACH,CAAC;IAED,MAAM,IAAI,GAAuB,EAAE,CAAC;IACpC,KAAK,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC;QAC7B,MAAM,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,CAAE,CAAC;QACzB,MAAM,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QACpC,IAAI,CAAC,IAAI,CAAC;YACR,QAAQ,EAAE,CAAC,CAAC,QAAQ;YACpB,QAAQ,EAAE,CAAC,CAAC,SAAS;YACrB,IAAI,EAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,IAAI,EAAE;YACvC,UAAU,EAAE,CAAC,CAAC,UAAU;YACxB,cAAc,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC;YAClC,KAAK,EAAE,EAAE,CAAC,KAAK;YACf,OAAO,EAAE,EAAE,CAAC,OAAO;YACnB,UAAU,EAAE,EAAE,CAAC,UAAU;YACzB,YAAY,EAAE,EAAE,CAAC,UAAU,KAAK,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU;YAChE,UAAU,EAAE,CAAC,CAAC,SAAS;SACxB,CAAC,CAAC;IACL,CAAC;IAED,6EAA6E;IAC7E,2EAA2E;IAC3E,MAAM,SAAS,GAAuB,EAAE,CAAC;IACzC,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;QACrB,IAAI,CAAC,CAAC,CAAC,cAAc;YAAE,SAAS;QAChC,KAAK,MAAM,CAAC,IAAI,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC;YACnC,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU;gBAAE,SAAS;YAC7D,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;YAC1D,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;gBAAE,SAAS;YAC1C,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAChC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,IAAI,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,QAAQ,CAAC,CAC1F,CAAC;YACF,IAAI,OAAO,KAAK,CAAC,CAAC,QAAQ;gBAAE,SAAS;YACrC,SAAS,CAAC,IAAI,CAAC;gBACb,GAAG,CAAC;gBACJ,QAAQ,EAAE,CAAC,CAAC,IAAI;gBAChB,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC;aACpE,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,IAAI,EAAE,GAAG,SAAS,CAAC,CAAC,IAAI,CACjC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACP,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK;QACjB,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC;QACpC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CACvC,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,sBAAsB,CACpC,MAA6B,EAC7B,SAAqC;IAErC,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC5D,MAAM,KAAK,GAA0B,EAAE,CAAC;IACxC,KAAK,MAAM,CAAC,IAAI,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC;QACnC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;YAAE,SAAS;QACzD,MAAM,GAAG,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9E,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;YAAE,SAAS;QAC/B,KAAK,CAAC,IAAI,CAAC;YACT,QAAQ,EAAE,CAAC,CAAC,IAAI;YAChB,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,IAAI,EAAE,qBAAqB;YAC3B,MAAM,EAAE,YAAY,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,iCAAiC;SAC3F,CAAC,CAAC;IACL,CAAC;IACD,OAAO,CAAC,GAAG,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC;AAC/B,CAAC;AAED,MAAM,UAAU,SAAS,CACvB,KAAsD,EACtD,OAAqB,EACrB,MAA6B,EAC7B,QAA4B;IAE5B,MAAM,EAAE,GAAG,CAAC,CAAuB,EAAE,EAAE,CACrC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;IACxE,OAAO;QACL,aAAa,EAAE,KAAK,CAAC,MAAM;QAC3B,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC;QACrD,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC;QACrD,eAAe,EAAE,EAAE,CAAC,OAAO,CAAC;QAC5B,kBAAkB,EAAE,EAAE,CAAC,UAAU,CAAC;QAClC,iBAAiB,EAAE,EAAE,CAAC,SAAS,CAAC;QAChC,kBAAkB,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,MAAM;QAC9D,qBAAqB,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,MAAM;QACtE,sBAAsB,EAAE,MAAM,CAAC,MAAM;KACtC,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"analyze.d.ts","sourceRoot":"","sources":["../../src/commands/analyze.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAwDpC,eAAO,MAAM,cAAc,SAoEvB,CAAC"}
1
+ {"version":3,"file":"analyze.d.ts","sourceRoot":"","sources":["../../src/commands/analyze.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA0DpC,eAAO,MAAM,cAAc,SAqFvB,CAAC"}
@@ -9,6 +9,8 @@ import { callsCommand } from './calls.js';
9
9
  import { patternsCommand } from './patterns.js';
10
10
  import { constraintsCommand } from './constraints.js';
11
11
  import { surfaceCommand } from './surface.js';
12
+ import { diffCommand } from './diff.js';
13
+ import { loadProjectContext } from '../core/config.js';
12
14
  async function runStep(name, command, args, tracker) {
13
15
  tracker.update(name, 'running');
14
16
  // Each step gets its own process.exit trap to avoid shared-state issues in parallel
@@ -41,7 +43,7 @@ function truncate(message, max) {
41
43
  return single.length > max ? single.slice(0, max - 1) + '…' : single;
42
44
  }
43
45
  export const analyzeCommand = new Command('analyze')
44
- .description('Run all deterministic analysis commands (stats, deps, access, state, calls, patterns, constraints, surface)')
46
+ .description('Run all deterministic analysis commands (stats, deps, access, state, calls, patterns, constraints, surface; plus diff in differential mode)')
45
47
  .option('--project <dir>', 'Project directory')
46
48
  .option('--no-coverage', 'Skip test coverage (passed to stats)')
47
49
  .action(async (opts) => {
@@ -66,7 +68,18 @@ export const analyzeCommand = new Command('analyze')
66
68
  { name: 'constraints', command: constraintsCommand, args: baseArgs },
67
69
  { name: 'surface', command: surfaceCommand, args: baseArgs },
68
70
  ];
69
- const tracker = new ProgressTracker(phase1Steps.map((s) => s.name));
71
+ // Differential mode adds `diff` after surface.
72
+ let diffMode = false;
73
+ try {
74
+ diffMode = loadProjectContext(opts.project ?? process.cwd()).config.project.mode === 'diff';
75
+ }
76
+ catch {
77
+ /* no config — every step reports it individually */
78
+ }
79
+ const tracker = new ProgressTracker([
80
+ ...phase1Steps.map((s) => s.name),
81
+ ...(diffMode ? ['diff'] : []),
82
+ ]);
70
83
  tracker.start();
71
84
  const parallelSteps = phase1Steps.slice(0, -1);
72
85
  const parallelPromises = parallelSteps.map((step) => runStep(step.name, step.command, step.args, tracker));
@@ -81,6 +94,9 @@ export const analyzeCommand = new Command('analyze')
81
94
  const surfaceStep = phase1Steps[phase1Steps.length - 1];
82
95
  const surfaceResult = await runStep(surfaceStep.name, surfaceStep.command, surfaceStep.args, tracker);
83
96
  results.push(surfaceResult);
97
+ if (diffMode) {
98
+ results.push(await runStep('diff', diffCommand, baseArgs, tracker));
99
+ }
84
100
  tracker.finish();
85
101
  // Summary
86
102
  const succeeded = results.filter((r) => r.success).length;
@@ -1 +1 @@
1
- {"version":3,"file":"analyze.js","sourceRoot":"","sources":["../../src/commands/analyze.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"analyze.js","sourceRoot":"","sources":["../../src/commands/analyze.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import { Command } from 'commander';
2
+ import { type Config } from '../core/config.js';
3
+ import type { Diff } from '../types/index.js';
4
+ /**
5
+ * Scope membership for any path (including paths that only exist at the base
6
+ * commit): the raw --scope globs when recorded, else the resolved file list.
7
+ */
8
+ export declare function makeScopeTest(config: Config): (p: string) => boolean;
9
+ export interface DiffOptions {
10
+ base?: string;
11
+ head?: string;
12
+ }
13
+ /** Compute `diff.json` for a project (pure aside from git reads). */
14
+ export declare function computeProjectDiff(config: Config, opts?: DiffOptions): {
15
+ diff: Diff;
16
+ patch: string;
17
+ };
18
+ /**
19
+ * Files a differential /ai-audit scan should read: every changed (non-deleted)
20
+ * in-scope file plus every file holding an impacted function, in scope order.
21
+ */
22
+ export declare function scanFiles(config: Config, diff: Diff): string[];
23
+ /** The agents' focus brief for a differential /ai-audit scan (markdown). */
24
+ export declare function focusBrief(diff: Diff, patch: string): string;
25
+ export declare const diffCommand: Command;
26
+ //# sourceMappingURL=diff.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diff.d.ts","sourceRoot":"","sources":["../../src/commands/diff.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,OAAO,EAAsB,KAAK,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAsBpE,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAE9C;;;GAGG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,CAAC,CAAC,EAAE,MAAM,KAAK,OAAO,CAUpE;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,qEAAqE;AACrE,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,EACd,IAAI,GAAE,WAAgB,GACrB;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAuG/B;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,GAAG,MAAM,EAAE,CAQ9D;AAID,4EAA4E;AAC5E,wBAAgB,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAoD5D;AAED,eAAO,MAAM,WAAW,SA0DrB,CAAC"}
@@ -0,0 +1,218 @@
1
+ import { Command } from 'commander';
2
+ import path from 'node:path';
3
+ import { minimatch } from 'minimatch';
4
+ import { logger } from '../core/logger.js';
5
+ import { loadProjectContext } from '../core/config.js';
6
+ import { writeJsonOutput, writeMarkdownOutput } from '../core/output.js';
7
+ import { HexError, reportError } from '../core/errors.js';
8
+ import { changedFiles, headCommit, isGitRepo, listFiles, numstat, resolveCommit, showFile, unifiedDiff, } from '../core/git.js';
9
+ import { buildScopeModel } from '../analysis/code-model.js';
10
+ import { buildImpactIndex, computeImpact, diffModels, propagateLayoutChanges, summarize, } from '../analysis/diff.js';
11
+ import { DiffSchema } from '../core/schema.js';
12
+ /**
13
+ * Scope membership for any path (including paths that only exist at the base
14
+ * commit): the raw --scope globs when recorded, else the resolved file list.
15
+ */
16
+ export function makeScopeTest(config) {
17
+ const globs = config.project.scope_globs;
18
+ const exclude = config.project.exclude ?? [];
19
+ const listed = new Set(config.project.scope);
20
+ const excluded = (p) => exclude.some((g) => minimatch(p, g, { dot: true }));
21
+ if (!globs || globs.length === 0)
22
+ return (p) => listed.has(p) && !excluded(p);
23
+ return (p) => p.endsWith('.sol') &&
24
+ (listed.has(p) || globs.some((g) => minimatch(p, g, { dot: true }))) &&
25
+ !excluded(p);
26
+ }
27
+ /** Compute `diff.json` for a project (pure aside from git reads). */
28
+ export function computeProjectDiff(config, opts = {}) {
29
+ const projectDir = config.project.project_dir;
30
+ const baseRef = opts.base ?? config.project.diff?.base_commit;
31
+ if (!baseRef)
32
+ throw new HexError('diff.not-diff-mode');
33
+ if (!isGitRepo(projectDir))
34
+ throw new HexError('diff.not-git', `path: ${projectDir}`);
35
+ const headRef = opts.head ??
36
+ (config.project.commit && config.project.commit !== 'unknown' ? config.project.commit : 'HEAD');
37
+ const base = resolveCommit(projectDir, baseRef);
38
+ const head = resolveCommit(projectDir, headRef);
39
+ const warnings = [];
40
+ const wt = headCommit(projectDir);
41
+ if (wt && wt !== head) {
42
+ warnings.push(`The working tree is at ${wt.slice(0, 8)}, not the head commit ${head.slice(0, 8)}. ` +
43
+ 'Other Hex analyses read the working tree; check out the head commit for consistent results.');
44
+ }
45
+ const inScope = makeScopeTest(config);
46
+ const changed = changedFiles(projectDir, base, head).filter((f) => inScope(f.path) || (f.old_path !== undefined && inScope(f.old_path)));
47
+ const counts = numstat(projectDir, base, head);
48
+ // Base / head sources of the changed files.
49
+ const baseSources = new Map();
50
+ const headChangedSources = new Map();
51
+ for (const f of changed) {
52
+ if (f.status !== 'added') {
53
+ const src = showFile(projectDir, base, f.old_path ?? f.path);
54
+ // Key the base side by the head path so renamed files line up.
55
+ if (src !== null)
56
+ baseSources.set(f.path, src);
57
+ }
58
+ if (f.status !== 'deleted') {
59
+ const src = showFile(projectDir, head, f.path);
60
+ if (src !== null)
61
+ headChangedSources.set(f.path, src);
62
+ }
63
+ }
64
+ // Head sources of the whole scope (for the call graph and state coupling).
65
+ const headScopeSources = new Map();
66
+ for (const p of listFiles(projectDir, head)) {
67
+ if (!inScope(p))
68
+ continue;
69
+ const src = showFile(projectDir, head, p);
70
+ if (src !== null)
71
+ headScopeSources.set(p, src);
72
+ }
73
+ const baseModels = buildScopeModel(baseSources);
74
+ const headScopeModels = buildScopeModel(headScopeSources);
75
+ const headChangedModels = headScopeModels.filter((m) => headChangedSources.has(m.file));
76
+ // A changed file that is somehow outside the head scope listing still gets diffed.
77
+ for (const [p, src] of headChangedSources) {
78
+ if (!headScopeSources.has(p))
79
+ headChangedModels.push(...buildScopeModel(new Map([[p, src]])));
80
+ }
81
+ for (const m of [...baseModels, ...headScopeModels]) {
82
+ if (m.parseError)
83
+ warnings.push(`Could not parse ${m.file}: ${m.parseError}`);
84
+ }
85
+ const { changes, layout } = diffModels(baseModels, headChangedModels);
86
+ const index = buildImpactIndex(headScopeModels);
87
+ const impacted = computeImpact(index, changes);
88
+ const storage = propagateLayoutChanges(layout, index.contracts);
89
+ const files = changed
90
+ .map((f) => ({
91
+ path: f.path,
92
+ status: f.status,
93
+ ...(f.old_path ? { old_path: f.old_path } : {}),
94
+ additions: counts.get(f.path)?.additions ?? 0,
95
+ deletions: counts.get(f.path)?.deletions ?? 0,
96
+ }))
97
+ .sort((a, b) => a.path.localeCompare(b.path));
98
+ const diff = {
99
+ generated_at: new Date().toISOString(),
100
+ base_commit: base,
101
+ head_commit: head,
102
+ warnings,
103
+ files,
104
+ changes,
105
+ storage_layout_changes: storage,
106
+ impacted,
107
+ summary: summarize(files, changes, storage, impacted),
108
+ };
109
+ const parsed = DiffSchema.safeParse(diff);
110
+ if (!parsed.success) {
111
+ throw new Error(`diff.json failed validation:\n${parsed.error.issues.map((i) => ` - ${i.path.join('.')}: ${i.message}`).join('\n')}`);
112
+ }
113
+ const patchPaths = [
114
+ ...new Set(changed.flatMap((f) => (f.old_path ? [f.old_path, f.path] : [f.path]))),
115
+ ];
116
+ const patch = unifiedDiff(projectDir, base, head, patchPaths);
117
+ return { diff: parsed.data, patch };
118
+ }
119
+ /**
120
+ * Files a differential /ai-audit scan should read: every changed (non-deleted)
121
+ * in-scope file plus every file holding an impacted function, in scope order.
122
+ */
123
+ export function scanFiles(config, diff) {
124
+ const set = new Set();
125
+ for (const f of diff.files)
126
+ if (f.status !== 'deleted')
127
+ set.add(f.path);
128
+ for (const i of diff.impacted)
129
+ if (i.file)
130
+ set.add(i.file);
131
+ const order = config.project.scope;
132
+ const inOrder = order.filter((p) => set.has(p));
133
+ const rest = [...set].filter((p) => !order.includes(p)).sort();
134
+ return [...inOrder, ...rest];
135
+ }
136
+ const PATCH_LINE_CAP = 4000;
137
+ /** The agents' focus brief for a differential /ai-audit scan (markdown). */
138
+ export function focusBrief(diff, patch) {
139
+ const b = diff.base_commit.slice(0, 8);
140
+ const h = diff.head_commit.slice(0, 8);
141
+ const out = [];
142
+ out.push('# Differential audit — focus', '');
143
+ out.push(`This scan is a differential audit of \`${b}\` → \`${h}\`. The source in this bundle is the head version of the files that hold changed or impacted code. The code at \`${b}\` was audited before.`, '', '**Where your effort goes.** Spend your reading time on the code this change touched and the flows that pass through it: the changed entities first, then the impacted functions. Unchanged code is context.', '', '**What you report.** A bug in changed code, or a bug that the change makes reachable, exploitable or worse, is in scope. A bug that sits entirely in unchanged code and is reached only through unchanged paths was in scope of the previous audit: report it only when the change affects it, and say how.', '');
144
+ const changed = diff.changes.filter((c) => c.change !== 'comments_only');
145
+ out.push('## Changed', '');
146
+ if (changed.length === 0)
147
+ out.push('_No code changes (comments or formatting only)._');
148
+ for (const c of changed) {
149
+ const where = c.kind === 'contract' ? `\`${c.entity}\`` : `\`${c.contract}.${c.entity}\``;
150
+ out.push(`- ${where} — ${c.kind.replace('_', ' ')} ${c.change} · ${c.file}`);
151
+ }
152
+ out.push('');
153
+ if (diff.storage_layout_changes.length > 0) {
154
+ out.push('## Storage layout changes', '');
155
+ for (const l of diff.storage_layout_changes)
156
+ out.push(`- \`${l.contract}\` (${l.kind.replace(/_/g, ' ')}): ${l.detail}`);
157
+ out.push('');
158
+ }
159
+ const impacted = diff.impacted.filter((i) => i.depth > 0);
160
+ out.push('## Impacted (not changed)', '');
161
+ if (impacted.length === 0)
162
+ out.push('_None beyond the changed code._');
163
+ for (const i of impacted) {
164
+ const reasons = i.reasons.map((r) => `${r.kind.replace('_', ' ')} \`${r.via}\``).join('; ');
165
+ const tag = i.is_entry_point ? 'entry point · ' : '';
166
+ out.push(`- \`${i.contract}.${i.function}\` — ${tag}depth ${i.depth} · ${reasons} (${i.confidence})`);
167
+ }
168
+ out.push('');
169
+ const lines = patch.split('\n');
170
+ out.push('## Patch', '');
171
+ if (lines.length > PATCH_LINE_CAP) {
172
+ out.push(`_The patch has ${lines.length} lines; the first ${PATCH_LINE_CAP} are below. Read \`.hex/diff/changes.patch\` for the rest._`, '');
173
+ }
174
+ out.push('```diff', lines.slice(0, PATCH_LINE_CAP).join('\n').trimEnd(), '```', '');
175
+ return out.join('\n');
176
+ }
177
+ export const diffCommand = new Command('diff')
178
+ .description('Differential audit: changed entities between base and head, and the flows they impact')
179
+ .option('--base <commit>', 'Base commit (default: config project.diff.base_commit)')
180
+ .option('--head <commit>', 'Head commit (default: config project.commit)')
181
+ .option('--project <dir>', 'Project directory')
182
+ .option('--focus <file>', "Also write the /ai-audit agents' focus brief (markdown) to <file>")
183
+ .option('--scan-files', 'Print only the files a differential /ai-audit scan reads, space separated')
184
+ .action((opts) => {
185
+ try {
186
+ const { config, outputDir } = loadProjectContext(opts.project ?? process.cwd());
187
+ const { diff, patch } = computeProjectDiff(config, opts);
188
+ const out = writeJsonOutput(outputDir, 'diff.json', diff);
189
+ writeMarkdownOutput(path.join(outputDir, 'diff'), 'changes.patch', patch);
190
+ if (opts.focus) {
191
+ const target = path.resolve(opts.focus);
192
+ writeMarkdownOutput(path.dirname(target), path.basename(target), focusBrief(diff, patch));
193
+ }
194
+ if (opts.scanFiles) {
195
+ for (const w of diff.warnings)
196
+ process.stderr.write(`warning: ${w}\n`);
197
+ console.log(scanFiles(config, diff).join(' '));
198
+ return;
199
+ }
200
+ for (const w of diff.warnings)
201
+ logger.warn(w);
202
+ const s = diff.summary;
203
+ logger.success(`${diff.base_commit.slice(0, 8)} → ${diff.head_commit.slice(0, 8)}: ${s.files_changed} file(s), +${s.additions}/-${s.deletions}`);
204
+ logger.dim(` functions: ${s.functions_added} added, ${s.functions_modified} modified, ${s.functions_removed} removed`);
205
+ logger.dim(` impact: ${s.impacted_functions} impacted function(s), ${s.impacted_entry_points} entry point(s)`);
206
+ if (s.storage_layout_changes > 0) {
207
+ logger.warn(` ${s.storage_layout_changes} storage layout change(s) — see storage_layout_changes`);
208
+ }
209
+ logger.dim(` ${out}`);
210
+ if (opts.focus)
211
+ logger.dim(` focus brief: ${opts.focus}`);
212
+ }
213
+ catch (err) {
214
+ reportError(err);
215
+ process.exit(1);
216
+ }
217
+ });
218
+ //# sourceMappingURL=diff.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diff.js","sourceRoot":"","sources":["../../src/commands/diff.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAapC,eAAO,MAAM,WAAW,SA+VpB,CAAC"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAcpC,eAAO,MAAM,WAAW,SAwapB,CAAC"}
@@ -10,6 +10,7 @@ import { parseSolidity, extractSolidityVersion } from '../parsers/solidity-parse
10
10
  import { copySkillsToClaudeFormat, getClaudeSkillsDir } from '../core/skills.js';
11
11
  import { ProgressTracker } from '../core/progress.js';
12
12
  import { HexError, reportError } from '../core/errors.js';
13
+ import { headCommit, isGitRepo, resolveCommit } from '../core/git.js';
13
14
  export const initCommand = new Command('init')
14
15
  .description('Initialize a new audit project')
15
16
  .option('--project <dir>', 'Project directory (default: cwd)')
@@ -21,6 +22,9 @@ export const initCommand = new Command('init')
21
22
  .option('--output-dir <dir>', 'Output directory', '.hex')
22
23
  .option('--exclude <globs>', 'Comma-separated exclude globs')
23
24
  .option('--github-repo <owner/repo>', 'GitHub repo for issue syncing (sets settings.github.repo)')
25
+ .option('--mode <mode>', 'Audit mode: full | diff (differential audit against --base)', 'full')
26
+ .option('--base <commit>', 'Differential mode: the previously audited commit')
27
+ .option('--previous-audit <path>', "Differential mode: the previous engagement's .hex/ folder or its report (PDF/MD)")
24
28
  .option('--no-verify', 'Skip build verification')
25
29
  .action(async (opts) => {
26
30
  const STEPS = [
@@ -69,6 +73,15 @@ export const initCommand = new Command('init')
69
73
  if (!tools.find((t) => t.name === 'solc')?.available) {
70
74
  logger.warn('solc not found — storage layout extraction will be unavailable');
71
75
  }
76
+ // Audit mode
77
+ const mode = opts.mode === 'diff' ? 'diff' : 'full';
78
+ if (opts.mode !== 'full' && opts.mode !== 'diff') {
79
+ throw new Error(`Invalid --mode: ${opts.mode}. Use full or diff.`);
80
+ }
81
+ if (mode === 'diff' && !opts.base) {
82
+ tracker.update('resolve scope', 'failed', '--base missing');
83
+ throw new HexError('diff.base-required');
84
+ }
72
85
  // Resolve scope globs
73
86
  if (!opts.scope) {
74
87
  tracker.update('resolve scope', 'failed', '--scope missing');
@@ -139,6 +152,32 @@ export const initCommand = new Command('init')
139
152
  logger.warn('Could not detect git commit hash. Use --commit to specify.');
140
153
  }
141
154
  }
155
+ // Differential mode: pin the base commit and record the previous audit.
156
+ let baseCommit;
157
+ let previousAudit;
158
+ if (mode === 'diff') {
159
+ if (!isGitRepo(projectDir))
160
+ throw new HexError('diff.not-git', `path: ${projectDir}`);
161
+ baseCommit = resolveCommit(projectDir, opts.base);
162
+ if (commit && commit !== 'unknown') {
163
+ const resolvedHead = resolveCommit(projectDir, commit);
164
+ const wt = headCommit(projectDir);
165
+ if (wt && wt !== resolvedHead) {
166
+ logger.warn(`Working tree is at ${wt.slice(0, 8)} but --commit is ${resolvedHead.slice(0, 8)}. ` +
167
+ 'Analyses read the working tree: check out the head commit before `hex analyze`.');
168
+ }
169
+ }
170
+ if (opts.previousAudit) {
171
+ const prev = path.resolve(opts.previousAudit);
172
+ if (!fs.existsSync(prev)) {
173
+ throw new Error(`--previous-audit path not found: ${prev}`);
174
+ }
175
+ const isHexDir = fs.statSync(prev).isDirectory() &&
176
+ (fs.existsSync(path.join(prev, 'config.json')) ||
177
+ fs.existsSync(path.join(prev, '.hex', 'config.json')));
178
+ previousAudit = { kind: isHexDir ? 'hex' : 'report', path: prev };
179
+ }
180
+ }
142
181
  // Determine project name
143
182
  const name = opts.name ?? path.basename(projectDir);
144
183
  // Create config
@@ -154,6 +193,10 @@ export const initCommand = new Command('init')
154
193
  exclude: excludeGlobs,
155
194
  outputDir: opts.outputDir,
156
195
  githubRepo: opts.githubRepo,
196
+ scopeGlobs: scopeGlobs,
197
+ mode,
198
+ baseCommit,
199
+ previousAudit,
157
200
  });
158
201
  const outputDir = getOutputDir(projectDir, config.settings.output_dir);
159
202
  tracker.update('create config', 'ok', normalizePath(outputDir));
@@ -199,7 +242,20 @@ This project is being audited with Hex.
199
242
  - **Chain:** ${config.project.chain}
200
243
  - **Solidity:** ${config.project.solidity_version}
201
244
  - **Commit:** \`${config.project.commit}\`${config.project.docs_url ? `\n- **Docs:** ${config.project.docs_url}` : ''}
202
- - **Config:** \`${config.settings.output_dir}/config.json\` — source of truth for all project metadata
245
+ - **Config:** \`${config.settings.output_dir}/config.json\` — source of truth for all project metadata${mode === 'diff' && baseCommit
246
+ ? `
247
+
248
+ ## Differential audit
249
+
250
+ This is a **differential audit** of \`${baseCommit.slice(0, 8)}\` → \`${String(config.project.commit).slice(0, 8)}\`. Review effort goes to the changed code and the flows it reaches, not the whole scope.
251
+
252
+ - \`${config.settings.output_dir}/diff.json\` — changed files and entities, storage-layout changes, and every impacted function with the reason chain (from \`hex diff\`)
253
+ - \`${config.settings.output_dir}/diff/changes.patch\` — the in-scope unified diff
254
+ - \`${config.settings.output_dir}/diff-overview.md\` — what changed and why (written by /init-audit)${previousAudit
255
+ ? `
256
+ - \`${config.settings.output_dir}/previous-audit/\` — prior findings (\`findings.json\`) and their regression check (\`review.json\`)`
257
+ : ''}`
258
+ : ''}
203
259
 
204
260
  ## Scope
205
261
 
@@ -222,7 +278,9 @@ All analysis outputs live here. Key files and what they answer:
222
278
  | \`spec-conformance.json\` | Spec vs code deviations | spec compliance, ERC conformance |
223
279
  | \`findings.json\` | Audit findings (canonical), wrapped as \`{ "findings": [...] }\` | reported issues, vulnerabilities |
224
280
  | \`tracking.json\` | Board state per issue (status, source, duplicate_of), wrapped as \`{ "findings": [...] }\` | finding triage, board columns |
225
- | \`comparison.json\` | Dedup match_signals (auditagent / github) | duplicate detection |
281
+ | \`comparison.json\` | Dedup match_signals (auditagent / ai-audit / github) | duplicate detection |
282
+ | \`ai-results/ai-audit/\` | /ai-audit findings (raw records behind the board cards) | AI audit results |
283
+ | \`ai-audit/runs/\` | /ai-audit scan runs and assembled markdown reports | AI audit reports |
226
284
  | \`progress.json\` | Audit progress tracking | what has been reviewed |
227
285
  | \`diagrams/\` | Mermaid architecture and flow diagrams | system diagrams, flows |
228
286
  | \`report/\` | LaTeX report sections (executive summary, audited files, summary of issues, system overview, issues, documentation eval, test suite) as \`.txt\` + \`.tex\` | final report export |
@@ -237,11 +295,12 @@ Skills are in \`.claude/skills/\` and auto-discovered by Claude Code. Type \`/\`
237
295
 
238
296
  1. \`/init-audit\` — Initialize, dependency safety, full analysis pipeline, overview, diagrams, flows, spec conformance, board materialization (all in one)
239
297
  2. \`/write-finding\` — Record a manual issue as a Potential card on the board
240
- 3. \`/validate-finding\` — Validate any Potential card (manual / auditagent / conformance / github); per-issue PoC or memo-only
298
+ 3. \`/validate-finding\` — Validate any Potential card (manual / ai-audit / auditagent / conformance / github / prior-audit); per-issue PoC or memo-only
241
299
  4. \`/generate-poc\` — Generate and run a proof-of-concept test (invoked by /validate-finding)
242
- 5. \`/ingest-aa-report\` — Ingest a completed Nethermind AuditAgent scan by ID, with inline dedup
243
- 6. \`/sync-issues\` — Two-way GitHub Issues sync (GitHub canonical)
244
- 7. \`/generate-report\` — Emit the LaTeX report sections into \`${config.settings.output_dir}/report/\`
300
+ 5. \`/ai-audit\` — Parallel 12-agent AI audit (fork of pashov's solidity-auditor); findings land on the board, leads in notes
301
+ 6. \`/ingest-aa-report\` — Ingest a completed Nethermind AuditAgent scan by ID, with inline dedup
302
+ 7. \`/sync-issues\` — Two-way GitHub Issues sync (GitHub canonical)
303
+ 8. \`/generate-report\` — Emit the LaTeX report sections into \`${config.settings.output_dir}/report/\`
245
304
 
246
305
  Each skill builds on previous outputs.
247
306
 
@@ -250,6 +309,7 @@ Each skill builds on previous outputs.
250
309
  - \`npx hex analyze\` — Run all deterministic analysis (stats, deps, access, state, calls, patterns, constraints, surface)
251
310
  - \`npx hex context\` — Assemble full codebase context for AI prompts
252
311
  - \`npx hex context --target <Contract>\` — Focused context for a single contract
312
+ - \`npx hex diff\` — Differential mode: recompute \`diff.json\` (changed entities + impacted flows)
253
313
  - \`npx hex dashboard\` — Open browser dashboard at http://localhost:3000
254
314
  - \`npx hex issue move <id> --to <column>\` — Move an issue between board columns
255
315
  - \`npx hex issue patch <id> [--severity ...] [--resolution ...]\` — Edit issue fields
@@ -305,10 +365,13 @@ Recommendations are suggestions, not orders. The protocol team owns the fix; you
305
365
 
306
366
  ### Findings (report-facing content)
307
367
 
308
- A finding's title, description, and recommendation are published verbatim in the client's report. Keep them free of anything that only means something inside Hex or that rots when the code moves:
368
+ A finding's title, description, and recommendation are published verbatim in the client's report. Write them to a single standard, whatever the source:
309
369
 
310
- - **Stand alone, no cross-references to other findings.** Never cite another issue by its Hex id (\`H-NNN\`) or by number/title ("see H-005", "as in the previous finding"). Report readers have no Hex ids and sections get reordered. Describe any shared mechanism inline.
311
- - **No line numbers, show the code.** Don't cite specific source lines ("line 56", "on lines 43, 55"); they drift when code or comments change. Embed a minimal fenced \`\`\`solidity block showing the relevant code and refer to it by function or variable name.
370
+ - **Structure for readability.** Split the description into short paragraphs that separate how the code is supposed to work (expected behavior), what is wrong (the flaw), and the impact. Not one dense block. No markdown headings and no bold section labels (\`**Summary**:\`, \`**Impact**:\`) — the separation is paragraph breaks.
371
+ - **Backtick every Solidity identifier.** Functions as \`\` \`functionName(...)\` \`\` with literal \`(...)\`; contracts, variables, constants, and hex/number literals in plain backticks. Standard names (ERC-4626, UUPS) stay plain. Never leave a bare identifier in the prose.
372
+ - **Show the offending code.** Include a minimal fenced \`\`\`solidity block of the relevant code rather than describing it only in words.
373
+ - **No line numbers.** Don't cite specific source lines ("line 56"); they drift when code or comments change. The code snippet replaces them.
374
+ - **Stand alone, no cross-references to other findings.** Never cite another issue by its Hex id (\`H-NNN\`) or by number/title. Report readers have no Hex ids and sections get reordered. Describe any shared mechanism inline.
312
375
  - **No PoC references.** Don't name or link the proof-of-concept test or its path. The PoC lives in the validation memo, not the report.
313
376
 
314
377
  These apply to findings from every source (manual, spec-conformance, AuditAgent, GitHub) identically.