hex-audit 0.6.3 → 0.8.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.
- package/CLAUDE.md +137 -77
- package/DEMO.md +41 -105
- package/README.md +205 -353
- package/dashboard/.next/BUILD_ID +1 -1
- package/dashboard/.next/app-build-manifest.json +65 -99
- package/dashboard/.next/app-path-routes-manifest.json +1 -1
- package/dashboard/.next/build-manifest.json +14 -14
- package/dashboard/.next/next-minimal-server.js.nft.json +1 -1
- package/dashboard/.next/next-server.js.nft.json +1 -1
- package/dashboard/.next/prerender-manifest.js +1 -1
- package/dashboard/.next/prerender-manifest.json +1 -1
- package/dashboard/.next/react-loadable-manifest.json +540 -119
- package/dashboard/.next/routes-manifest.json +1 -1
- package/dashboard/.next/server/app/_not-found/page.js +1 -1
- package/dashboard/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/dashboard/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/dashboard/.next/server/app/api/code/route.js +1 -1
- package/dashboard/.next/server/app/api/code/route.js.nft.json +1 -1
- package/dashboard/.next/server/app/api/comments/route.js +1 -0
- package/dashboard/.next/server/app/api/comments/route.js.nft.json +1 -0
- package/dashboard/.next/server/app/api/diagrams/[name]/export/route.js +1 -0
- package/dashboard/.next/server/app/api/diagrams/[name]/export/route.js.nft.json +1 -0
- package/dashboard/.next/server/app/api/diagrams/[name]/resolve/route.js +1 -0
- package/dashboard/.next/server/app/api/diagrams/[name]/resolve/route.js.nft.json +1 -0
- package/dashboard/.next/server/app/api/diagrams/[name]/route.js +1 -0
- package/dashboard/.next/server/app/api/diagrams/[name]/route.js.nft.json +1 -0
- package/dashboard/.next/server/app/api/figures/[name]/route.js +1 -0
- package/dashboard/.next/server/app/api/figures/[name]/route.js.nft.json +1 -0
- package/dashboard/.next/server/app/api/focus/route.js +1 -0
- package/dashboard/.next/server/app/api/focus/route.js.nft.json +1 -0
- package/dashboard/.next/server/app/api/github-status/route.js +1 -1
- package/dashboard/.next/server/app/api/invariants/[id]/route.js +1 -0
- package/dashboard/.next/server/app/api/invariants/[id]/route.js.nft.json +1 -0
- package/dashboard/.next/server/app/api/issues/[id]/revert-auto/route.js +1 -0
- package/dashboard/.next/server/app/api/issues/[id]/revert-auto/route.js.nft.json +1 -0
- package/dashboard/.next/server/app/api/nav/route.js +1 -0
- package/dashboard/.next/server/app/api/nav/route.js.nft.json +1 -0
- package/dashboard/.next/server/app/api/notes/done/route.js +1 -1
- package/dashboard/.next/server/app/api/notes/done/route.js.nft.json +1 -1
- package/dashboard/.next/server/app/api/notes/lead/route.js +1 -1
- package/dashboard/.next/server/app/api/notes/lead/route.js.nft.json +1 -1
- package/dashboard/.next/server/app/api/notes/question/route.js +1 -1
- package/dashboard/.next/server/app/api/notes/question/route.js.nft.json +1 -1
- package/dashboard/.next/server/app/api/notes/record/route.js +3 -3
- package/dashboard/.next/server/app/api/notes/route.js +2 -2
- package/dashboard/.next/server/app/api/palette/route.js +1 -0
- package/dashboard/.next/server/app/api/palette/route.js.nft.json +1 -0
- package/dashboard/.next/server/app/api/progress/route.js +1 -1
- package/dashboard/.next/server/app/api/progress/route.js.nft.json +1 -1
- package/dashboard/.next/server/app/api/watch/route.js +2 -2
- package/dashboard/.next/server/app/api/watch/route.js.nft.json +1 -1
- package/dashboard/.next/server/app/api/xref/route.js +1 -0
- package/dashboard/.next/server/app/changes/page.js +1 -0
- package/dashboard/.next/server/app/{access → changes}/page.js.nft.json +1 -1
- package/dashboard/.next/server/app/changes/page_client-reference-manifest.js +1 -0
- package/dashboard/.next/server/app/excalidraw-assets/[...path]/route.js +1 -0
- package/dashboard/.next/server/app/issues/page.js +5 -28
- package/dashboard/.next/server/app/issues/page.js.nft.json +1 -1
- package/dashboard/.next/server/app/issues/page_client-reference-manifest.js +1 -1
- package/dashboard/.next/server/app/model/page.js +1 -0
- package/dashboard/.next/server/app/{calls → model}/page.js.nft.json +1 -1
- package/dashboard/.next/server/app/model/page_client-reference-manifest.js +1 -0
- package/dashboard/.next/server/app/page.js +1 -20
- package/dashboard/.next/server/app/page.js.nft.json +1 -1
- package/dashboard/.next/server/app/page_client-reference-manifest.js +1 -1
- package/dashboard/.next/server/app/report/page.js +1 -1
- package/dashboard/.next/server/app/report/page.js.nft.json +1 -1
- package/dashboard/.next/server/app/report/page_client-reference-manifest.js +1 -1
- package/dashboard/.next/server/app/review/page.js +1 -0
- package/dashboard/.next/server/app/{conformance → review}/page.js.nft.json +1 -1
- package/dashboard/.next/server/app/review/page_client-reference-manifest.js +1 -0
- package/dashboard/.next/server/app-paths-manifest.json +20 -16
- package/dashboard/.next/server/chunks/310.js +4 -0
- package/dashboard/.next/server/chunks/370.js +1 -0
- package/dashboard/.next/server/chunks/42.js +1 -1
- package/dashboard/.next/server/chunks/624.js +14 -0
- package/dashboard/.next/server/chunks/645.js +1 -1
- package/dashboard/.next/server/chunks/649.js +1 -1
- package/dashboard/.next/server/chunks/653.js +1 -0
- package/dashboard/.next/server/functions-config-manifest.json +1 -1
- package/dashboard/.next/server/middleware-build-manifest.js +1 -1
- package/dashboard/.next/server/middleware-react-loadable-manifest.js +1 -1
- package/dashboard/.next/server/next-font-manifest.js +1 -1
- package/dashboard/.next/server/next-font-manifest.json +1 -1
- package/dashboard/.next/server/pages/500.html +1 -1
- package/dashboard/.next/server/pages/_error.js +1 -1
- package/dashboard/.next/server/pages-manifest.json +1 -1
- package/dashboard/.next/server/server-reference-manifest.js +1 -1
- package/dashboard/.next/server/server-reference-manifest.json +1 -1
- package/dashboard/.next/static/bGV1ry1vvIbM5b506eVBR/_buildManifest.js +1 -0
- package/dashboard/.next/static/chunks/0bbe10ee.8e7ffa06d2170dfe.js +84 -0
- package/dashboard/.next/static/chunks/{1.8868c4d131111be7.js → 1.a666047ea18866fb.js} +2 -2
- package/dashboard/.next/static/chunks/1015.39008440ab15e196.js +226 -0
- package/dashboard/.next/static/chunks/1026.0ef689a305302427.js +1 -0
- package/dashboard/.next/static/chunks/1151.497fa63c5b9eba52.js +1 -0
- package/dashboard/.next/static/chunks/1164.34eb76767ebea46f.js +8 -0
- package/dashboard/.next/static/chunks/119.a9a79633900a235f.js +5 -0
- package/dashboard/.next/static/chunks/1199.f30cbfa151e56076.js +148 -0
- package/dashboard/.next/static/chunks/1291.6c486c9b1d4b1b3a.js +1 -0
- package/dashboard/.next/static/chunks/1375.64c20f1064a38a10.js +43 -0
- package/dashboard/.next/static/chunks/139.4691848fc5a46253.js +10 -0
- package/dashboard/.next/static/chunks/145.1bf74fecdb4022e3.js +11 -0
- package/dashboard/.next/static/chunks/1517.8e7075f78e22b3a0.js +8 -0
- package/dashboard/.next/static/chunks/165.6f174060a0ce2db4.js +6 -0
- package/dashboard/.next/static/chunks/1741.5c370b7702d2eb40.js +8 -0
- package/dashboard/.next/static/chunks/1799.8dc56017eede704e.js +9 -0
- package/dashboard/.next/static/chunks/1e36816c.5748c83adc8a6bd6.js +108 -0
- package/dashboard/.next/static/chunks/20154aaa.e87f69fe10483f8b.js +1 -0
- package/dashboard/.next/static/chunks/2061.eab75b3c1dfa068a.js +1 -0
- package/dashboard/.next/static/chunks/2077.5603adeb156c7d10.js +1 -0
- package/dashboard/.next/static/chunks/2148.3ce718f62d1b2f7c.js +10 -0
- package/dashboard/.next/static/chunks/2166.9f6592b9399eadd8.js +215 -0
- package/dashboard/.next/static/chunks/217-1d5b680ffd10e3f9.js +1 -0
- package/dashboard/.next/static/chunks/2208.fb884379aa3ae968.js +1 -0
- package/dashboard/.next/static/chunks/2276.112c7855333fca5f.js +6 -0
- package/dashboard/.next/static/chunks/{2291.85a70cb0c228157b.js → 2291.584b42ccad079b99.js} +1 -1
- package/dashboard/.next/static/chunks/2325.7decd077edfb81d9.js +24 -0
- package/dashboard/.next/static/chunks/2374-8c6f137938f8518a.js +1 -0
- package/dashboard/.next/static/chunks/{2383.62c035a052272594.js → 2383.ca81f980ce6528a4.js} +1 -1
- package/dashboard/.next/static/chunks/2445.18a86507d2996b95.js +1 -0
- package/dashboard/.next/static/chunks/2694.7dfa5fef28851903.js +1 -0
- package/dashboard/.next/static/chunks/2712.15dd8577973baf22.js +10 -0
- package/dashboard/.next/static/chunks/275.38af87389c1d33d7.js +34 -0
- package/dashboard/.next/static/chunks/2759.533dec5317e0a1d1.js +1 -0
- package/dashboard/.next/static/chunks/2781.fba46046dbf2693b.js +93 -0
- package/dashboard/.next/static/chunks/2805.35b4cd8a94978aaf.js +1 -0
- package/dashboard/.next/static/chunks/2812.62b213bef580b69a.js +1 -0
- package/dashboard/.next/static/chunks/{2879.51436986f93981d9.js → 2879.74d65e33e60505ee.js} +1 -1
- package/dashboard/.next/static/chunks/2895.bb57cacb7aaf42a1.js +9 -0
- package/dashboard/.next/static/chunks/2972.e5a9251b538dcf19.js +9 -0
- package/dashboard/.next/static/chunks/3205-fd963acf2fdfd080.js +2 -0
- package/dashboard/.next/static/chunks/3206.8d9a10db2b04b93f.js +1 -0
- package/dashboard/.next/static/chunks/3236.eac9855778a54518.js +1 -0
- package/dashboard/.next/static/chunks/3480.853a445a3784642a.js +1 -0
- package/dashboard/.next/static/chunks/3485.36766504793b7237.js +9 -0
- package/dashboard/.next/static/chunks/3626.c5dacee11c8fbc4d.js +64 -0
- package/dashboard/.next/static/chunks/3725.de9376dc994735d4.js +9 -0
- package/dashboard/.next/static/chunks/3774.1df377928e8387f7.js +9 -0
- package/dashboard/.next/static/chunks/3865.5e6d2d501380e03b.js +90 -0
- package/dashboard/.next/static/chunks/3887.073cece834a4eae2.js +1 -0
- package/dashboard/.next/static/chunks/3924-f1f85ccc7d59d7ab.js +1 -0
- package/dashboard/.next/static/chunks/3948.74201b9f0672234d.js +287 -0
- package/dashboard/.next/static/chunks/3963.39d72b3875dfe2e9.js +13 -0
- package/dashboard/.next/static/chunks/4013.73884b23bfaebdde.js +11 -0
- package/dashboard/.next/static/chunks/4117.278aff1fa23fd36e.js +6 -0
- package/dashboard/.next/static/chunks/4210.cc8594110017c579.js +11 -0
- package/dashboard/.next/static/chunks/4282.28485875540886cc.js +7 -0
- package/dashboard/.next/static/chunks/4318.a2f469a88d88f6d0.js +8 -0
- package/dashboard/.next/static/chunks/4363.8999a6e727c48003.js +1 -0
- package/dashboard/.next/static/chunks/4641.e03d118fffebd580.js +5 -0
- package/dashboard/.next/static/chunks/4728.e69372b5e5b61b8d.js +24 -0
- package/dashboard/.next/static/chunks/4787.821a6ad2816cdc60.js +23 -0
- package/dashboard/.next/static/chunks/483.a910dab7734a1074.js +8 -0
- package/dashboard/.next/static/chunks/4926.76693f542e9cc062.js +6 -0
- package/dashboard/.next/static/chunks/4938.03f6d04dabf38745.js +10 -0
- package/dashboard/.next/static/chunks/5060.47402abc10273699.js +1 -0
- package/dashboard/.next/static/chunks/5112.0757c2b0c285e62e.js +1 -0
- package/dashboard/.next/static/chunks/5199.c83ea7efb0eec705.js +11 -0
- package/dashboard/.next/static/chunks/5284.334c7c0587d5d47a.js +1 -0
- package/dashboard/.next/static/chunks/530.849957a8907eb288.js +1 -0
- package/dashboard/.next/static/chunks/5424.4e8ca0711a32bccf.js +7 -0
- package/dashboard/.next/static/chunks/55.a593a78be9714679.js +1 -0
- package/dashboard/.next/static/chunks/5535.6cd0bd8d368d8902.js +4 -0
- package/dashboard/.next/static/chunks/5626.7d4e93d7acbeffc9.js +10 -0
- package/dashboard/.next/static/chunks/5715.e16b1230cc4b4652.js +115 -0
- package/dashboard/.next/static/chunks/5775.a0d7c1b1e89b9a93.js +9 -0
- package/dashboard/.next/static/chunks/6014.641a2c53ba506241.js +104 -0
- package/dashboard/.next/static/chunks/6024.f099c15f75aa6722.js +79 -0
- package/dashboard/.next/static/chunks/{6052.033a6f1013c666eb.js → 6052.3001318955e5b36c.js} +2 -2
- package/dashboard/.next/static/chunks/6118.266956b3333b1d7a.js +9 -0
- package/dashboard/.next/static/chunks/6121.a2e6d93720b1205e.js +77 -0
- package/dashboard/.next/static/chunks/6177.a01cf0a03734cf09.js +1 -0
- package/dashboard/.next/static/chunks/618f8807-fbb1466bc29c17c6.js +1 -0
- package/dashboard/.next/static/chunks/6434.f560693253fea8de.js +1 -0
- package/dashboard/.next/static/chunks/6468.976d89ba133185f1.js +77 -0
- package/dashboard/.next/static/chunks/6540.6f3c4f2c6877ed89.js +1 -0
- package/dashboard/.next/static/chunks/6549.e3c4c1766cff1449.js +1 -0
- package/dashboard/.next/static/chunks/6853.d3ad43614e8ca0ab.js +1 -0
- package/dashboard/.next/static/chunks/690f35d0.ab57e02a04c7e9e0.js +119 -0
- package/dashboard/.next/static/chunks/6951.02a3a158d02158c9.js +5 -0
- package/dashboard/.next/static/chunks/6970.013f24568c87d918.js +11 -0
- package/dashboard/.next/static/chunks/7013.39d41e82b37be63b.js +9 -0
- package/dashboard/.next/static/chunks/{7020.831e16e26d91abc1.js → 7020.b718b1b9cea36e60.js} +2 -2
- package/dashboard/.next/static/chunks/7107.1c5412197912b8ed.js +8 -0
- package/dashboard/.next/static/chunks/7498-7cf464d8af69cd0a.js +1 -0
- package/dashboard/.next/static/chunks/7508.dd60e2d06d149f5f.js +9 -0
- package/dashboard/.next/static/chunks/7524.0fde4c61553d1491.js +3 -0
- package/dashboard/.next/static/chunks/7802.f0134c792fccd382.js +80 -0
- package/dashboard/.next/static/chunks/7834-47f318a04a05688f.js +1 -0
- package/dashboard/.next/static/chunks/{7a04ac15.1c6cea694301806c.js → 7a04ac15.e49de94ece135900.js} +1 -1
- package/dashboard/.next/static/chunks/8216.1138ec313908a708.js +5 -0
- package/dashboard/.next/static/chunks/{8233babc.780b8e272eda298f.js → 8233babc.09872dcb3ff44064.js} +1 -1
- package/dashboard/.next/static/chunks/8317.d0b3eddef4cae0d5.js +1 -0
- package/dashboard/.next/static/chunks/838.2b2aa006519ba44c.js +10 -0
- package/dashboard/.next/static/chunks/8398.924fd8f4c83417c0.js +7 -0
- package/dashboard/.next/static/chunks/8428b36f.8ac4e67061c01307.js +34 -0
- package/dashboard/.next/static/chunks/8514.85ccbbea8ab21d04.js +5 -0
- package/dashboard/.next/static/chunks/8538.5f7ebe76c4b63162.js +1 -0
- package/dashboard/.next/static/chunks/8645.98a43217d406500e.js +1 -0
- package/dashboard/.next/static/chunks/8687.9406baa8b5601fd0.js +1 -0
- package/dashboard/.next/static/chunks/8721.47346e2cb6412376.js +10 -0
- package/dashboard/.next/static/chunks/8770.4f544bd1a6f03a62.js +8 -0
- package/dashboard/.next/static/chunks/8812.3d96fd54dba566f8.js +9 -0
- package/dashboard/.next/static/chunks/8962.d22aa67a97970dd8.js +1 -0
- package/dashboard/.next/static/chunks/8986.b327224b83f4399a.js +5 -0
- package/dashboard/.next/static/chunks/9173.a7160f7d0b685fa7.js +1 -0
- package/dashboard/.next/static/chunks/9178.998a8c49996de8e4.js +1 -0
- package/dashboard/.next/static/chunks/9271.5f66c19a8ee1ff36.js +10 -0
- package/dashboard/.next/static/chunks/9282.f8d01442bab4c0da.js +2 -0
- package/dashboard/.next/static/chunks/9366.0ec24a0791b9b00f.js +1 -0
- package/dashboard/.next/static/chunks/9466.a914ce0de7d3bb84.js +1 -0
- package/dashboard/.next/static/chunks/9660.b1c8deae2c449d14.js +1 -0
- package/dashboard/.next/static/chunks/9707.5cd7d2ee933a4af5.js +6 -0
- package/dashboard/.next/static/chunks/9716.15fffc0b0038601d.js +4 -0
- package/dashboard/.next/static/chunks/{9717.6cf5c8c89403b651.js → 9717.bba51b78ebd8fd29.js} +1 -1
- package/dashboard/.next/static/chunks/9720.d63a0696776bcc60.js +1 -0
- package/dashboard/.next/static/chunks/9791.e3b3f5a367f63c8a.js +1 -0
- package/dashboard/.next/static/chunks/9811.2993c4cbd28e8d1b.js +1 -0
- package/dashboard/.next/static/chunks/9820.8c1efad5260e8137.js +1 -0
- package/dashboard/.next/static/chunks/985.50150e9eaa4bde33.js +39 -0
- package/dashboard/.next/static/chunks/997.56901b86e1b8a87b.js +8 -0
- package/dashboard/.next/static/chunks/app/_not-found/page-5ff5d54b6fd6f17e.js +1 -0
- package/dashboard/.next/static/chunks/app/changes/page-f8a860034221cad4.js +1 -0
- package/dashboard/.next/static/chunks/app/issues/page-da4da93188c414a6.js +1 -0
- package/dashboard/.next/static/chunks/app/layout-27a9da4610423c1e.js +1 -0
- package/dashboard/.next/static/chunks/app/model/page-9680e22fdd6ddb81.js +1 -0
- package/dashboard/.next/static/chunks/app/page-0e67750d99fb2836.js +1 -0
- package/dashboard/.next/static/chunks/app/report/page-b56b1db9b9dcf2b6.js +1 -0
- package/dashboard/.next/static/chunks/app/review/page-3ef69f0e0badd333.js +1 -0
- package/dashboard/.next/static/chunks/{b7167ec1.7afbab6f609e3326.js → b7167ec1.708a3d61698ca2e6.js} +1 -1
- package/dashboard/.next/static/chunks/c75e29e3.d91220f782934d80.js +1 -0
- package/dashboard/.next/static/chunks/c7ea4e13.3073a2f551aa5ac8.js +1 -0
- package/dashboard/.next/static/chunks/framework-a117d81bf1b91f9a.js +33 -0
- package/dashboard/.next/static/chunks/main-9c95a7ffedc7afb4.js +1 -0
- package/dashboard/.next/static/chunks/main-app-5662c64b50ba40d1.js +1 -0
- package/dashboard/.next/static/chunks/pages/_app-308fef0bf9b328f2.js +1 -0
- package/dashboard/.next/static/chunks/pages/_error-c91b5eabd7ac9382.js +1 -0
- package/dashboard/.next/static/chunks/webpack-6da70e4f9fcf1799.js +1 -0
- package/dashboard/.next/static/css/ceafd91ca8dd753d.css +3 -0
- package/dashboard/.next/static/css/e4aad1f9c715b79a.css +1 -0
- package/dashboard/.next/static/media/39f449c8730c2295-s.woff2 +0 -0
- package/dashboard/.next/static/media/86f65e8637cc94e3-s.woff2 +0 -0
- package/dashboard/.next/static/media/8760c4774489e4ba-s.p.woff2 +0 -0
- package/dashboard/.next/static/media/9fabb9c65b63d798-s.woff2 +0 -0
- package/dashboard/.next/static/media/Assistant-Bold.c8f39f24.woff2 +0 -0
- package/dashboard/.next/static/media/Assistant-Medium.1e75d8e6.woff2 +0 -0
- package/dashboard/.next/static/media/Assistant-Regular.7acbabb8.woff2 +0 -0
- package/dashboard/.next/static/media/Assistant-SemiBold.167acbf8.woff2 +0 -0
- package/dashboard/.next/static/media/a1f87af3f44fadbb-s.woff2 +0 -0
- package/dashboard/.next/static/media/f9e1dbe9676d9bb6-s.woff2 +0 -0
- package/dashboard/app/api/code/route.ts +26 -20
- package/dashboard/app/api/comments/route.ts +158 -0
- package/dashboard/app/api/diagrams/[name]/export/route.ts +26 -0
- package/dashboard/app/api/diagrams/[name]/resolve/route.ts +25 -0
- package/dashboard/app/api/diagrams/[name]/route.ts +37 -0
- package/dashboard/app/api/figures/[name]/route.ts +15 -0
- package/dashboard/app/api/focus/route.ts +35 -0
- package/dashboard/app/api/invariants/[id]/route.ts +35 -0
- package/dashboard/app/api/issues/[id]/revert-auto/route.ts +18 -0
- package/dashboard/app/api/nav/route.ts +120 -0
- package/dashboard/app/api/palette/route.ts +68 -0
- package/dashboard/app/api/progress/route.ts +54 -23
- package/dashboard/app/api/xref/route.ts +30 -0
- package/dashboard/app/changes/ChangesClient.tsx +838 -0
- package/dashboard/app/changes/page.tsx +44 -0
- package/dashboard/app/excalidraw-assets/[...path]/route.ts +56 -0
- package/dashboard/app/globals.css +231 -77
- package/dashboard/app/issues/BoardClient.tsx +817 -0
- package/dashboard/app/issues/page.tsx +27 -272
- package/dashboard/app/layout.tsx +37 -10
- package/dashboard/app/model/ModelClient.tsx +1303 -0
- package/dashboard/app/model/page.tsx +98 -0
- package/dashboard/app/page.tsx +195 -239
- package/dashboard/app/report/ReportClient.tsx +147 -74
- package/dashboard/app/report/page.tsx +25 -14
- package/dashboard/app/review/ReviewClient.tsx +1180 -0
- package/dashboard/app/review/page.tsx +93 -0
- package/dashboard/components/AutoRefresh.tsx +22 -19
- package/dashboard/components/CodeComments.tsx +303 -0
- package/dashboard/components/CodeNav.tsx +523 -0
- package/dashboard/components/CodeReference.tsx +92 -99
- package/dashboard/components/CodeViewer.tsx +526 -0
- package/dashboard/components/CommandPalette.tsx +141 -66
- package/dashboard/components/DiagramCanvas.tsx +275 -0
- package/dashboard/components/DianeNote.tsx +244 -0
- package/dashboard/components/LiveStatus.tsx +30 -68
- package/dashboard/components/MarkdownRenderer.tsx +34 -32
- package/dashboard/components/RecordButton.tsx +132 -0
- package/dashboard/components/ui/Button.tsx +39 -0
- package/dashboard/components/ui/Chip.tsx +37 -0
- package/dashboard/components/ui/EmptyState.tsx +31 -0
- package/dashboard/components/ui/Icons.tsx +126 -0
- package/dashboard/components/ui/Inspector.tsx +122 -0
- package/dashboard/components/ui/Kbd.tsx +15 -0
- package/dashboard/components/ui/ListRow.tsx +92 -0
- package/dashboard/components/ui/LocalTime.tsx +14 -0
- package/dashboard/components/ui/ProgressRing.tsx +54 -0
- package/dashboard/components/ui/ResizeHandle.tsx +93 -0
- package/dashboard/components/ui/RiskMeter.tsx +27 -0
- package/dashboard/components/ui/SearchField.tsx +55 -0
- package/dashboard/components/ui/SegmentedControl.tsx +71 -0
- package/dashboard/components/ui/SeverityDot.tsx +57 -0
- package/dashboard/components/ui/Sidebar.tsx +236 -0
- package/dashboard/components/ui/SplitView.tsx +122 -0
- package/dashboard/components/ui/StateGlyph.tsx +66 -0
- package/dashboard/components/ui/Toast.tsx +91 -0
- package/dashboard/lib/api.ts +17 -0
- package/dashboard/lib/cn.ts +4 -0
- package/dashboard/lib/data.ts +2 -21
- package/dashboard/lib/finding-markdown.ts +1 -1
- package/dashboard/lib/focus.ts +42 -0
- package/dashboard/lib/hotkeys.ts +41 -0
- package/dashboard/lib/inline-markdown.test.ts +11 -0
- package/dashboard/lib/live.ts +32 -0
- package/dashboard/lib/pane-width.ts +36 -0
- package/dashboard/lib/server/board.ts +229 -0
- package/dashboard/lib/server/diagrams.ts +191 -0
- package/dashboard/lib/server/safe-path.ts +28 -0
- package/dashboard/lib/server/workspace.ts +113 -0
- package/dashboard/lib/server/xref.ts +42 -0
- package/dashboard/lib/solidity.test.ts +37 -0
- package/dashboard/lib/solidity.ts +191 -0
- package/dashboard/lib/source.ts +28 -0
- package/dashboard/lib/types.ts +164 -0
- package/dashboard/lib/url.ts +18 -0
- package/dashboard/lib/watcher.ts +31 -22
- package/dashboard/tailwind.config.ts +6 -3
- package/dist/analysis/code-model.d.ts +113 -0
- package/dist/analysis/code-model.d.ts.map +1 -0
- package/dist/analysis/code-model.js +532 -0
- package/dist/analysis/code-model.js.map +1 -0
- package/dist/analysis/diff.d.ts +75 -0
- package/dist/analysis/diff.d.ts.map +1 -0
- package/dist/analysis/diff.js +787 -0
- package/dist/analysis/diff.js.map +1 -0
- package/dist/commands/analyze.d.ts.map +1 -1
- package/dist/commands/analyze.js +25 -40
- package/dist/commands/analyze.js.map +1 -1
- package/dist/commands/claude.d.ts.map +1 -1
- package/dist/commands/claude.js +5 -0
- package/dist/commands/claude.js.map +1 -1
- package/dist/commands/dashboard.d.ts.map +1 -1
- package/dist/commands/dashboard.js +10 -2
- package/dist/commands/dashboard.js.map +1 -1
- package/dist/commands/diagram.d.ts +3 -0
- package/dist/commands/diagram.d.ts.map +1 -0
- package/dist/commands/diagram.js +71 -0
- package/dist/commands/diagram.js.map +1 -0
- package/dist/commands/diff.d.ts +25 -0
- package/dist/commands/diff.d.ts.map +1 -0
- package/dist/commands/diff.js +257 -0
- package/dist/commands/diff.js.map +1 -0
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +5 -18
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/facts.d.ts +23 -0
- package/dist/commands/facts.d.ts.map +1 -0
- package/dist/commands/facts.js +121 -0
- package/dist/commands/facts.js.map +1 -0
- package/dist/commands/fix-review.d.ts +9 -0
- package/dist/commands/fix-review.d.ts.map +1 -0
- package/dist/commands/fix-review.js +367 -0
- package/dist/commands/fix-review.js.map +1 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +106 -42
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/issue.d.ts.map +1 -1
- package/dist/commands/issue.js +154 -5
- package/dist/commands/issue.js.map +1 -1
- package/dist/commands/mcp.d.ts +3 -0
- package/dist/commands/mcp.d.ts.map +1 -0
- package/dist/commands/mcp.js +11 -0
- package/dist/commands/mcp.js.map +1 -0
- package/dist/commands/model.d.ts +4 -0
- package/dist/commands/model.d.ts.map +1 -0
- package/dist/commands/model.js +275 -0
- package/dist/commands/model.js.map +1 -0
- package/dist/commands/note.d.ts.map +1 -1
- package/dist/commands/note.js +61 -3
- package/dist/commands/note.js.map +1 -1
- package/dist/commands/review.d.ts +4 -0
- package/dist/commands/review.d.ts.map +1 -0
- package/dist/commands/review.js +164 -0
- package/dist/commands/review.js.map +1 -0
- package/dist/core/comments.d.ts +59 -0
- package/dist/core/comments.d.ts.map +1 -0
- package/dist/core/comments.js +263 -0
- package/dist/core/comments.js.map +1 -0
- package/dist/core/config.d.ts +9 -0
- package/dist/core/config.d.ts.map +1 -1
- package/dist/core/config.js +18 -1
- package/dist/core/config.js.map +1 -1
- package/dist/core/dedup.d.ts +56 -0
- package/dist/core/dedup.d.ts.map +1 -0
- package/dist/core/dedup.js +208 -0
- package/dist/core/dedup.js.map +1 -0
- package/dist/core/errors.d.ts +1 -1
- package/dist/core/errors.d.ts.map +1 -1
- package/dist/core/errors.js +16 -15
- package/dist/core/errors.js.map +1 -1
- package/dist/core/external-tools.d.ts +0 -14
- package/dist/core/external-tools.d.ts.map +1 -1
- package/dist/core/external-tools.js +2 -52
- package/dist/core/external-tools.js.map +1 -1
- package/dist/core/fix-review.d.ts +54 -0
- package/dist/core/fix-review.d.ts.map +1 -0
- package/dist/core/fix-review.js +98 -0
- package/dist/core/fix-review.js.map +1 -0
- package/dist/core/fuzz-sync.d.ts +93 -0
- package/dist/core/fuzz-sync.d.ts.map +1 -0
- package/dist/core/fuzz-sync.js +516 -0
- package/dist/core/fuzz-sync.js.map +1 -0
- package/dist/core/git.d.ts +31 -0
- package/dist/core/git.d.ts.map +1 -0
- package/dist/core/git.js +157 -0
- package/dist/core/git.js.map +1 -0
- package/dist/core/issues.d.ts +35 -2
- package/dist/core/issues.d.ts.map +1 -1
- package/dist/core/issues.js +201 -30
- package/dist/core/issues.js.map +1 -1
- package/dist/core/mcp-config.d.ts +12 -0
- package/dist/core/mcp-config.d.ts.map +1 -0
- package/dist/core/mcp-config.js +29 -0
- package/dist/core/mcp-config.js.map +1 -0
- package/dist/core/model.d.ts +38 -0
- package/dist/core/model.d.ts.map +1 -0
- package/dist/core/model.js +160 -0
- package/dist/core/model.js.map +1 -0
- package/dist/core/notes.d.ts +27 -1
- package/dist/core/notes.d.ts.map +1 -1
- package/dist/core/notes.js +47 -5
- package/dist/core/notes.js.map +1 -1
- package/dist/core/review.d.ts +47 -0
- package/dist/core/review.d.ts.map +1 -1
- package/dist/core/review.js +177 -1
- package/dist/core/review.js.map +1 -1
- package/dist/core/rules.d.ts +12 -0
- package/dist/core/rules.d.ts.map +1 -0
- package/dist/core/rules.js +66 -0
- package/dist/core/rules.js.map +1 -0
- package/dist/core/schema.d.ts +5458 -2189
- package/dist/core/schema.d.ts.map +1 -1
- package/dist/core/schema.js +605 -114
- package/dist/core/schema.js.map +1 -1
- package/dist/core/scope.d.ts +8 -0
- package/dist/core/scope.d.ts.map +1 -0
- package/dist/core/scope.js +18 -0
- package/dist/core/scope.js.map +1 -0
- package/dist/core/skills.d.ts +10 -4
- package/dist/core/skills.d.ts.map +1 -1
- package/dist/core/skills.js +100 -37
- package/dist/core/skills.js.map +1 -1
- package/dist/diagrams/build.d.ts +18 -0
- package/dist/diagrams/build.d.ts.map +1 -0
- package/dist/diagrams/build.js +135 -0
- package/dist/diagrams/build.js.map +1 -0
- package/dist/diagrams/excalidraw.d.ts +27 -0
- package/dist/diagrams/excalidraw.d.ts.map +1 -0
- package/dist/diagrams/excalidraw.js +219 -0
- package/dist/diagrams/excalidraw.js.map +1 -0
- package/dist/diagrams/layout.d.ts +48 -0
- package/dist/diagrams/layout.d.ts.map +1 -0
- package/dist/diagrams/layout.js +686 -0
- package/dist/diagrams/layout.js.map +1 -0
- package/dist/facts/build.d.ts +23 -0
- package/dist/facts/build.d.ts.map +1 -0
- package/dist/facts/build.js +112 -0
- package/dist/facts/build.js.map +1 -0
- package/dist/facts/extract.d.ts +53 -0
- package/dist/facts/extract.d.ts.map +1 -0
- package/dist/facts/extract.js +635 -0
- package/dist/facts/extract.js.map +1 -0
- package/dist/facts/fallback.d.ts +7 -0
- package/dist/facts/fallback.d.ts.map +1 -0
- package/dist/facts/fallback.js +156 -0
- package/dist/facts/fallback.js.map +1 -0
- package/dist/facts/implementations.d.ts +29 -0
- package/dist/facts/implementations.d.ts.map +1 -0
- package/dist/facts/implementations.js +43 -0
- package/dist/facts/implementations.js.map +1 -0
- package/dist/facts/query.d.ts +35 -0
- package/dist/facts/query.d.ts.map +1 -0
- package/dist/facts/query.js +157 -0
- package/dist/facts/query.js.map +1 -0
- package/dist/facts/xref.d.ts +53 -0
- package/dist/facts/xref.d.ts.map +1 -0
- package/dist/facts/xref.js +282 -0
- package/dist/facts/xref.js.map +1 -0
- package/dist/index.js +16 -16
- package/dist/index.js.map +1 -1
- package/dist/mcp/server.d.ts +3 -0
- package/dist/mcp/server.d.ts.map +1 -0
- package/dist/mcp/server.js +400 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/skills/ai-audit/LICENSE +21 -0
- package/dist/skills/ai-audit/SKILL.md +486 -0
- package/dist/skills/ai-audit/UPSTREAM.md +51 -0
- package/dist/skills/ai-audit/references/agent-prompts.md +133 -0
- package/dist/skills/ai-audit/references/assemble.sh +357 -0
- package/dist/skills/ai-audit/references/dedup-and-assembly.md +420 -0
- package/dist/skills/ai-audit/references/hacking-agents/access-control-agent.md +27 -0
- package/dist/skills/ai-audit/references/hacking-agents/asymmetry-agent.md +77 -0
- package/dist/skills/ai-audit/references/hacking-agents/boundary-agent.md +79 -0
- package/dist/skills/ai-audit/references/hacking-agents/economic-security-agent.md +35 -0
- package/dist/skills/ai-audit/references/hacking-agents/execution-trace-agent.md +33 -0
- package/dist/skills/ai-audit/references/hacking-agents/first-principles-agent.md +36 -0
- package/dist/skills/ai-audit/references/hacking-agents/flow-gap-agent.md +49 -0
- package/dist/skills/ai-audit/references/hacking-agents/invariant-agent.md +44 -0
- package/dist/skills/ai-audit/references/hacking-agents/math-precision-agent.md +48 -0
- package/dist/skills/ai-audit/references/hacking-agents/numerical-gap-agent.md +46 -0
- package/dist/skills/ai-audit/references/hacking-agents/periphery-agent.md +27 -0
- package/dist/skills/ai-audit/references/hacking-agents/shared-rules.md +61 -0
- package/dist/skills/ai-audit/references/hacking-agents/trust-gap-agent.md +40 -0
- package/dist/skills/ai-audit/references/hex-board.md +211 -0
- package/dist/skills/ai-audit/references/hex-export.sh +71 -0
- package/dist/skills/ai-audit/references/judging.md +75 -0
- package/dist/skills/ai-audit/references/report-formatting.md +385 -0
- package/dist/skills/ai-audit/references/report-language.md +151 -0
- package/dist/skills/ai-audit/references/senior-auditor-sop.md +63 -0
- package/dist/skills/diane.md +26 -12
- package/dist/skills/fix-review.md +58 -0
- package/dist/skills/fuzz/LICENSE +21 -0
- package/dist/skills/fuzz/SKILL.md +655 -0
- package/dist/skills/fuzz/UPSTREAM.md +119 -0
- package/dist/skills/fuzz/agents/implementers/global-property-implementer.md +81 -0
- package/dist/skills/fuzz/agents/implementers/specific-property-implementer.md +121 -0
- package/dist/skills/fuzz/agents/invariant-discovery/adversarial-profit-maximizer.md +123 -0
- package/dist/skills/fuzz/agents/invariant-discovery/conservation-auditor.md +92 -0
- package/dist/skills/fuzz/agents/invariant-discovery/protocol-type-specialist.md +173 -0
- package/dist/skills/fuzz/agents/invariant-discovery/roundtrip-rounding-analyst.md +164 -0
- package/dist/skills/fuzz/agents/invariant-discovery/state-transition-mapper.md +92 -0
- package/dist/skills/fuzz/agents/invariant-discovery/synthesizer.md +261 -0
- package/dist/skills/fuzz/agents/protocol-analyzer.md +80 -0
- package/dist/skills/fuzz/agents/report-writer.md +135 -0
- package/dist/skills/fuzz/references/handler-patterns.md +222 -0
- package/dist/skills/fuzz/references/hex-invariants.md +102 -0
- package/dist/skills/fuzz/references/property-generation.md +149 -0
- package/dist/skills/fuzz/references/selection-policy.md +49 -0
- package/dist/skills/fuzz/references/setup-playbook.md +92 -0
- package/dist/skills/fuzz/references/template-map.md +121 -0
- package/dist/skills/fuzz/scripts/ensure_foundry.sh +125 -0
- package/dist/skills/fuzz/scripts/estimate_cost.js +157 -0
- package/dist/skills/fuzz/scripts/extract_abis.js +303 -0
- package/dist/skills/fuzz/scripts/fizz_sync.js +692 -0
- package/dist/skills/fuzz/scripts/generate_handlers.js +370 -0
- package/dist/skills/fuzz/scripts/generate_suite.js +254 -0
- package/dist/skills/fuzz/scripts/lib/log-viewer.js +332 -0
- package/dist/skills/fuzz/scripts/run_echidna.js +192 -0
- package/dist/skills/fuzz/scripts/run_medusa.js +329 -0
- package/dist/skills/fuzz/scripts/select_functions.js +637 -0
- package/dist/skills/fuzz/scripts/setup_fuzz_profile.sh +142 -0
- package/dist/skills/fuzz/templates/Actor.sol +63 -0
- package/dist/skills/fuzz/templates/Base.sol +121 -0
- package/dist/skills/fuzz/templates/FoundryTester.sol +29 -0
- package/dist/skills/fuzz/templates/FuzzTester.sol +11 -0
- package/dist/skills/fuzz/templates/Properties.sol +17 -0
- package/dist/skills/fuzz/templates/README.md +56 -0
- package/dist/skills/fuzz/templates/Snapshots.sol +26 -0
- package/dist/skills/fuzz/templates/echidna.yaml +18 -0
- package/dist/skills/fuzz/templates/handlers/Handlers.sol +13 -0
- package/dist/skills/fuzz/templates/medusa.json +93 -0
- package/dist/skills/fuzz/templates/utils/Clamp.sol +223 -0
- package/dist/skills/fuzz/templates/utils/DecimalPrinter.sol +63 -0
- package/dist/skills/fuzz/templates/utils/Deployer.sol +17 -0
- package/dist/skills/fuzz/templates/utils/EnumerableSet.sol +206 -0
- package/dist/skills/fuzz/templates/utils/Hevm.sol +62 -0
- package/dist/skills/fuzz/templates/utils/Logger.sol +619 -0
- package/dist/skills/fuzz/templates/utils/Math.sol +52 -0
- package/dist/skills/fuzz/templates/utils/MockERC20.sol +279 -0
- package/dist/skills/fuzz/templates/utils/PropertiesAsserts.sol +238 -0
- package/dist/skills/fuzz/templates/utils/StringUtils.sol +85 -0
- package/dist/skills/fuzz-convert/SKILL.md +249 -0
- package/dist/skills/fuzz-sync/SKILL.md +342 -0
- package/dist/skills/generate-poc.md +8 -26
- package/dist/skills/generate-report.md +24 -8
- package/dist/skills/ingest-aa-report.md +11 -30
- package/dist/skills/init-audit/SKILL.md +155 -0
- package/dist/skills/init-audit/references/agents/conformance-checker.md +36 -0
- package/dist/skills/init-audit/references/agents/contract-reader.md +59 -0
- package/dist/skills/init-audit/references/agents/diagram-composer.md +48 -0
- package/dist/skills/init-audit/references/agents/docs-extractor.md +26 -0
- package/dist/skills/init-audit/references/agents/prior-audit.md +32 -0
- package/dist/skills/init-audit/references/agents/regression-checker.md +28 -0
- package/dist/skills/init-audit/references/agents/skeptic.md +31 -0
- package/dist/skills/init-audit/references/agents/standards-checker.md +39 -0
- package/dist/skills/init-audit/references/agents/synthesizer.md +50 -0
- package/dist/skills/prevalidate.md +62 -0
- package/dist/skills/sync-issues.md +11 -25
- package/dist/skills/validate-all-findings.md +3 -3
- package/dist/skills/validate-finding.md +33 -28
- package/dist/skills/write-finding.md +6 -5
- package/dist/types/index.d.ts +22 -12
- package/dist/types/index.d.ts.map +1 -1
- package/package.json +6 -4
- package/dashboard/.next/server/app/_not-found.html +0 -1
- package/dashboard/.next/server/app/_not-found.meta +0 -6
- package/dashboard/.next/server/app/_not-found.rsc +0 -12
- package/dashboard/.next/server/app/access/page.js +0 -1
- package/dashboard/.next/server/app/access/page_client-reference-manifest.js +0 -1
- package/dashboard/.next/server/app/api/flows/route.js +0 -1
- package/dashboard/.next/server/app/api/mermaid/route.js +0 -1
- package/dashboard/.next/server/app/calls/page.js +0 -1
- package/dashboard/.next/server/app/calls/page_client-reference-manifest.js +0 -1
- package/dashboard/.next/server/app/conformance/page.js +0 -1
- package/dashboard/.next/server/app/conformance/page_client-reference-manifest.js +0 -1
- package/dashboard/.next/server/app/diagram/page.js +0 -1
- package/dashboard/.next/server/app/diagram/page.js.nft.json +0 -1
- package/dashboard/.next/server/app/diagram/page_client-reference-manifest.js +0 -1
- package/dashboard/.next/server/app/diagram.html +0 -1
- package/dashboard/.next/server/app/diagram.meta +0 -5
- package/dashboard/.next/server/app/diagram.rsc +0 -10
- package/dashboard/.next/server/app/flows/page.js +0 -1
- package/dashboard/.next/server/app/flows/page.js.nft.json +0 -1
- package/dashboard/.next/server/app/flows/page_client-reference-manifest.js +0 -1
- package/dashboard/.next/server/app/flows.html +0 -1
- package/dashboard/.next/server/app/flows.meta +0 -5
- package/dashboard/.next/server/app/flows.rsc +0 -10
- package/dashboard/.next/server/app/functions/page.js +0 -1
- package/dashboard/.next/server/app/functions/page.js.nft.json +0 -1
- package/dashboard/.next/server/app/functions/page_client-reference-manifest.js +0 -1
- package/dashboard/.next/server/app/notes/page.js +0 -22
- package/dashboard/.next/server/app/notes/page.js.nft.json +0 -1
- package/dashboard/.next/server/app/notes/page_client-reference-manifest.js +0 -1
- package/dashboard/.next/server/app/progress/page.js +0 -1
- package/dashboard/.next/server/app/progress/page.js.nft.json +0 -1
- package/dashboard/.next/server/app/progress/page_client-reference-manifest.js +0 -1
- package/dashboard/.next/server/app/stats/page.js +0 -1
- package/dashboard/.next/server/app/stats/page.js.nft.json +0 -1
- package/dashboard/.next/server/app/stats/page_client-reference-manifest.js +0 -1
- package/dashboard/.next/server/chunks/44.js +0 -1
- package/dashboard/.next/server/chunks/530.js +0 -1
- package/dashboard/.next/server/chunks/622.js +0 -3
- package/dashboard/.next/server/chunks/665.js +0 -13
- package/dashboard/.next/server/pages/404.html +0 -1
- package/dashboard/.next/static/AyrRAwu4mazjp8iX4Yjbb/_buildManifest.js +0 -1
- package/dashboard/.next/static/chunks/1015.3ab89142e5f44120.js +0 -226
- package/dashboard/.next/static/chunks/1151.b6ef5c786e587ed7.js +0 -1
- package/dashboard/.next/static/chunks/1199.a072929dbec89965.js +0 -148
- package/dashboard/.next/static/chunks/1375.d4d2f7fc9c9c2ff1.js +0 -43
- package/dashboard/.next/static/chunks/1799.83206776abbbf1fc.js +0 -9
- package/dashboard/.next/static/chunks/20154aaa.ccc347c04ab5ad4a.js +0 -1
- package/dashboard/.next/static/chunks/2077.7011a570c87aa7b1.js +0 -1
- package/dashboard/.next/static/chunks/2166.cc0fabeb2e89b840.js +0 -215
- package/dashboard/.next/static/chunks/2325.2c55cb9a6282ae3f.js +0 -24
- package/dashboard/.next/static/chunks/2694.92bbe252063e4786.js +0 -1
- package/dashboard/.next/static/chunks/275.0d761aa0e5b030b8.js +0 -34
- package/dashboard/.next/static/chunks/2781.8536b644a480aede.js +0 -93
- package/dashboard/.next/static/chunks/2805.a8d71d2f92bb6ba9.js +0 -1
- package/dashboard/.next/static/chunks/3017.e55781da9dd32d37.js +0 -1
- package/dashboard/.next/static/chunks/3205-728c260fbb4f89c6.js +0 -2
- package/dashboard/.next/static/chunks/3236.dff44fa7961d9d5e.js +0 -1
- package/dashboard/.next/static/chunks/3480.9451396ad7ee7613.js +0 -1
- package/dashboard/.next/static/chunks/3626.ba1cf848a9f2e93d.js +0 -64
- package/dashboard/.next/static/chunks/3865.a432a7910a2f5281.js +0 -90
- package/dashboard/.next/static/chunks/3887.c22cbfa3f095826c.js +0 -1
- package/dashboard/.next/static/chunks/3924-4a05057b5450abe1.js +0 -1
- package/dashboard/.next/static/chunks/3948.fe3c7d758568d98b.js +0 -287
- package/dashboard/.next/static/chunks/4728.07d87640a3e7dd0d.js +0 -24
- package/dashboard/.next/static/chunks/4787.4e5f6a0e0e40a583.js +0 -23
- package/dashboard/.next/static/chunks/5060.baca226af35ed016.js +0 -1
- package/dashboard/.next/static/chunks/5284.f949ac90c95ff143.js +0 -1
- package/dashboard/.next/static/chunks/5715.1524bcc9591e180b.js +0 -115
- package/dashboard/.next/static/chunks/6014.700ae4969b64d728.js +0 -104
- package/dashboard/.next/static/chunks/6024.4d23707c65514679.js +0 -79
- package/dashboard/.next/static/chunks/6177.e5c84cfc4c0dea51.js +0 -1
- package/dashboard/.next/static/chunks/618f8807-547c5614e1318888.js +0 -1
- package/dashboard/.next/static/chunks/6434.9481771c33195d29.js +0 -1
- package/dashboard/.next/static/chunks/6468.f4a3e8fa6accc6da.js +0 -77
- package/dashboard/.next/static/chunks/6540.86f367d7390738d4.js +0 -1
- package/dashboard/.next/static/chunks/6549.4d0d472df96429a5.js +0 -1
- package/dashboard/.next/static/chunks/690f35d0.3e40ca0930e4bbdb.js +0 -119
- package/dashboard/.next/static/chunks/7397-f6f4dddc7a20bfc1.js +0 -1
- package/dashboard/.next/static/chunks/7498-ea83cb9e30ec5491.js +0 -1
- package/dashboard/.next/static/chunks/7802.89aec9ee11680850.js +0 -80
- package/dashboard/.next/static/chunks/7973.8b526f589aca5d84.js +0 -79
- package/dashboard/.next/static/chunks/8216.1bead812eb126c35.js +0 -5
- package/dashboard/.next/static/chunks/8452-e616b5f43bceb95f.js +0 -13
- package/dashboard/.next/static/chunks/8645.a5ca76f11edc9633.js +0 -1
- package/dashboard/.next/static/chunks/8928-60c623ee89d2e6ad.js +0 -1
- package/dashboard/.next/static/chunks/9173.2486ffca31131ec5.js +0 -1
- package/dashboard/.next/static/chunks/9178.469341860bf8caec.js +0 -1
- package/dashboard/.next/static/chunks/9466.e904660d38c03eea.js +0 -1
- package/dashboard/.next/static/chunks/9660.84a85811380c5f33.js +0 -1
- package/dashboard/.next/static/chunks/9720.67d4d0d15a96d691.js +0 -1
- package/dashboard/.next/static/chunks/9811.65e1d080c2d256af.js +0 -1
- package/dashboard/.next/static/chunks/app/_not-found/page-548ab392d0e890d1.js +0 -1
- package/dashboard/.next/static/chunks/app/access/page-3668562e7464eb5d.js +0 -1
- package/dashboard/.next/static/chunks/app/calls/page-d07f5b8664cc8303.js +0 -1
- package/dashboard/.next/static/chunks/app/conformance/page-2fede1d7b5f9265d.js +0 -1
- package/dashboard/.next/static/chunks/app/diagram/page-b228444265546495.js +0 -1
- package/dashboard/.next/static/chunks/app/flows/page-fa67783d8cd79cab.js +0 -1
- package/dashboard/.next/static/chunks/app/functions/page-686f0296639133a3.js +0 -1
- package/dashboard/.next/static/chunks/app/issues/page-98a298e1c1045c91.js +0 -1
- package/dashboard/.next/static/chunks/app/layout-49f2496c7637d931.js +0 -1
- package/dashboard/.next/static/chunks/app/notes/page-17af94c67ba79c00.js +0 -1
- package/dashboard/.next/static/chunks/app/page-24bac51dfe007c66.js +0 -1
- package/dashboard/.next/static/chunks/app/progress/page-427fb18da3afb061.js +0 -1
- package/dashboard/.next/static/chunks/app/report/page-796f2f4a8a5ac8f7.js +0 -1
- package/dashboard/.next/static/chunks/app/stats/page-db81f600a086f252.js +0 -1
- package/dashboard/.next/static/chunks/c7ea4e13.5effeeba6618bdb7.js +0 -1
- package/dashboard/.next/static/chunks/framework-cf6f5bdca6ba0184.js +0 -33
- package/dashboard/.next/static/chunks/main-63ff429eab01f5bf.js +0 -1
- package/dashboard/.next/static/chunks/main-app-9d2f6b8a47133e9b.js +0 -1
- package/dashboard/.next/static/chunks/pages/_app-6ad2b50514c24ab4.js +0 -1
- package/dashboard/.next/static/chunks/pages/_error-d5eb11c5c4626811.js +0 -1
- package/dashboard/.next/static/chunks/webpack-08869f2b18792e51.js +0 -1
- package/dashboard/.next/static/css/4a38d8f6f6b7a68f.css +0 -3
- package/dashboard/.next/static/media/438aa629764e75f3-s.woff2 +0 -0
- package/dashboard/.next/static/media/4c9affa5bc8f420e-s.p.woff2 +0 -0
- package/dashboard/.next/static/media/51251f8b9793cdb3-s.woff2 +0 -0
- package/dashboard/.next/static/media/875ae681bfde4580-s.woff2 +0 -0
- package/dashboard/.next/static/media/cc978ac5ee68c2b6-s.woff2 +0 -0
- package/dashboard/.next/static/media/e857b654a2caa584-s.woff2 +0 -0
- package/dashboard/app/access/AccessClient.tsx +0 -402
- package/dashboard/app/access/ReadOnlyFunctions.tsx +0 -114
- package/dashboard/app/access/page.tsx +0 -125
- package/dashboard/app/api/flows/route.ts +0 -32
- package/dashboard/app/api/mermaid/route.ts +0 -25
- package/dashboard/app/calls/CallsClient.tsx +0 -170
- package/dashboard/app/calls/page.tsx +0 -57
- package/dashboard/app/conformance/ConformanceTable.tsx +0 -214
- package/dashboard/app/conformance/page.tsx +0 -186
- package/dashboard/app/diagram/page.tsx +0 -65
- package/dashboard/app/flows/page.tsx +0 -102
- package/dashboard/app/functions/FunctionsClient.tsx +0 -167
- package/dashboard/app/functions/page.tsx +0 -178
- package/dashboard/app/issues/IssuesBoardClient.tsx +0 -803
- package/dashboard/app/notes/NotesClient.tsx +0 -701
- package/dashboard/app/notes/page.tsx +0 -47
- package/dashboard/app/progress/ProgressClient.tsx +0 -354
- package/dashboard/app/progress/page.tsx +0 -127
- package/dashboard/app/stats/StatsClient.tsx +0 -452
- package/dashboard/app/stats/page.tsx +0 -50
- package/dashboard/components/ConfidenceBadge.tsx +0 -53
- package/dashboard/components/DashboardLayout.tsx +0 -485
- package/dashboard/components/FilterableTable.tsx +0 -293
- package/dashboard/components/MermaidViewer.tsx +0 -267
- package/dashboard/components/NotYetGenerated.tsx +0 -32
- package/dashboard/components/SeverityBadge.tsx +0 -28
- package/dashboard/components/SignalBars.tsx +0 -27
- package/dashboard/components/SortableTable.tsx +0 -122
- package/dashboard/lib/conformance-tokens.ts +0 -49
- package/dist/skills/init-audit.md +0 -284
- /package/dashboard/.next/server/app/api/{flows → xref}/route.js.nft.json +0 -0
- /package/dashboard/.next/server/app/{api/mermaid → excalidraw-assets/[...path]}/route.js.nft.json +0 -0
- /package/dashboard/.next/static/{AyrRAwu4mazjp8iX4Yjbb → bGV1ry1vvIbM5b506eVBR}/_ssgManifest.js +0 -0
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[997],{70997:function(e,t,r){r.r(t),r.d(t,{alerts:function(){return l},buttons:function(){return a},canvasError:function(){return g},clearCanvasDialog:function(){return v},colorPicker:function(){return E},colors:function(){return L},confirmDialog:function(){return h},default:function(){return D},encrypted:function(){return T},errorDialog:function(){return p},errorSplash:function(){return u},errors:function(){return o},exportDialog:function(){return c},headings:function(){return d},helpDialog:function(){return b},hints:function(){return k},imageExportDialog:function(){return S},labels:function(){return i},library:function(){return n},mermaid:function(){return _},overwriteConfirm:function(){return F},publishDialog:function(){return f},publishSuccessDialog:function(){return y},roomDialog:function(){return m},stats:function(){return x},toast:function(){return j},toolBar:function(){return s},welcomeScreen:function(){return w}}),r(51937);var i={paste:"Lim inn",pasteAsPlaintext:"",pasteCharts:"Lim inn diagram",selectAll:"Vel alt",multiSelect:"Legg til element i utval",moveCanvas:"Flytt lerretet",cut:"Klipp ut",copy:"Kopier",copyAsPng:"Kopier til utklippstavla som PNG",copyAsSvg:"Kopier til utklippstavla som SVG",copyText:"",copySource:"",convertToCode:"",bringForward:"Flytt framover",sendToBack:"Send heilt bak",bringToFront:"Flytt heilt fram",sendBackward:"Send bakover",delete:"Slett",copyStyles:"Kopier stilar",pasteStyles:"Lim inn stilar",stroke:"Strek",background:"Bakgrunn",fill:"Fyll",strokeWidth:"Strekbreidd",strokeStyle:"Strekstil",strokeStyle_solid:"Solid",strokeStyle_dashed:"Stipla",strokeStyle_dotted:"Prikka",sloppiness:"Ujamnheit",opacity:"Synlegheit",textAlign:"Tekstjustering",edges:"Kanter",sharp:"Skarp",round:"Rund",arrowheads:"Pilhovud",arrowhead_none:"Ingen",arrowhead_arrow:"Pil",arrowhead_bar:"Stolpe",arrowhead_circle:"",arrowhead_circle_outline:"",arrowhead_triangle:"Trekant",arrowhead_triangle_outline:"",arrowhead_diamond:"",arrowhead_diamond_outline:"",fontSize:"Skriftstorleik",fontFamily:"Skrifttype",addWatermark:"Legg til \xabLaga med Excalidraw\xbb",handDrawn:"Handteikna",normal:"Normal",code:"Kode",small:"Liten",medium:"Medium",large:"Stor",veryLarge:"Sv\xe6rt stor",solid:"Solid",hachure:"Skravert",zigzag:"",crossHatch:"Krysskravert",thin:"Tynn",bold:"Tjukk",left:"Venstre",center:"Midstill",right:"H\xf8gre",extraBold:"Ekstra tjukk",architect:"Arkitekt",artist:"Kunstnar",cartoonist:"Teiknar",fileTitle:"Filnamn",colorPicker:"Fargeveljar",canvasColors:"Brukt p\xe5 lerretet",canvasBackground:"Lerretsbakgrunn",drawingCanvas:"Lerret",layers:"Lag",actions:"Handlingar",language:"Spr\xe5k",liveCollaboration:"",duplicateSelection:"Dupliser",untitled:"Utan namn",name:"Namn",yourName:"Namnet ditt",madeWithExcalidraw:"Laga med Excalidraw",group:"Grupper utval",ungroup:"Avgrupper utval",collaborators:"Samarbeidarar",showGrid:"Vis rutenett",addToLibrary:"Legg til i bibliotek",removeFromLibrary:"Fjern fr\xe5 bibliotek",libraryLoadingMessage:"Laster bibliotek…",libraries:"Blad gjennom bibliotek",loadingScene:"Laster scene…",align:"Juster",alignTop:"Juster til topp",alignBottom:"Juster til botn",alignLeft:"Juster til venstre",alignRight:"Juster til h\xf8gre",centerVertically:"Midtstill vertikalt",centerHorizontally:"Midtstill horisontalt",distributeHorizontally:"Sprei horisontalt",distributeVertically:"Sprei vertikalt",flipHorizontal:"Vipp vassrett",flipVertical:"Vipp loddrett",viewMode:"Visningsmodus",share:"Del",showStroke:"Vis fargeveljar for linjer",showBackground:"Vis fargeveljar for bakgrunn",toggleTheme:"Veksle tema",personalLib:"Personleg bibliotek",excalidrawLib:"Excalidraw-bibliotek",decreaseFontSize:"Gjer skriftstorleik mindre",increaseFontSize:"Gjer skriftstorleik st\xf8rre",unbindText:"Avbind tekst",bindText:"",createContainerFromText:"",link:{edit:"Rediger lenke",editEmbed:"",create:"Lag lenke",createEmbed:"",label:"Lenke",labelEmbed:"",empty:""},lineEditor:{edit:"",exit:""},elementLock:{lock:"",unlock:"",lockAll:"",unlockAll:""},statusPublished:"",sidebarLock:"",selectAllElementsInFrame:"",removeAllElementsFromFrame:"",eyeDropper:"",textToDiagram:"",prompt:""},n={noItems:"",hint_emptyLibrary:"",hint_emptyPrivateLibrary:""},a={clearReset:"Tilbakestill lerretet",exportJSON:"Eksporter til fil",exportImage:"",export:"",copyToClipboard:"Kopier til utklippstavla",save:"Lagre til noverande fil",saveAs:"Lagre som",load:"",getShareableLink:"Hent delingslenke",close:"Lukk",selectLanguage:"Vel spr\xe5k",scrollBackToContent:"Skroll tilbake til innhald",zoomIn:"Zoom inn",zoomOut:"Zoom ut",resetZoom:"Nullstill zoom",menu:"Meny",done:"Ferdig",edit:"Rediger",undo:"Angre",redo:"Gjer om",resetLibrary:"Nullstill bibliotek",createNewRoom:"Lag nytt rom",fullScreen:"Fullskjerm",darkMode:"M\xf8rk modus",lightMode:"Lys modus",zenMode:"Zen-modus",objectsSnapMode:"",exitZenMode:"Avslutt zen-modus",cancel:"Avbryt",clear:"T\xf8m",remove:"Fjern",embed:"",publishLibrary:"Publiser",submit:"Send inn",confirm:"Stadfest",embeddableInteractionButton:""},l={clearReset:"Dette vil t\xf8mme lerretet. Er du sikker?",couldNotCreateShareableLink:"Kunne ikkje lage delingslenke.",couldNotCreateShareableLinkTooBig:"Kunne ikkje opprette deleleg lenke: scena er for stor",couldNotLoadInvalidFile:"Kunne ikkje laste inn ugyldig fil",importBackendFailed:"Importering av backend feila.",cannotExportEmptyCanvas:"Kan ikkje eksportere eit tomt lerret.",couldNotCopyToClipboard:"",decryptFailed:"Kunne ikkje dekryptere data.",uploadedSecurly:"Opplastinga er kryptert og er ikkje mogleg \xe5 lese av Excalidraw-serveren eller tredjepartar.",loadSceneOverridePrompt:"Innlasting av ekstern teikning erstattar ditt eksisterande innhald. Ynskjer du \xe5 fortsette?",collabStopOverridePrompt:`Viss du avsluttar \xf8kta overskriv du den f\xf8rre, lokalt lagra teikninga di. Er du sikker?
|
|
2
|
+
|
|
3
|
+
(\xd8nsker du \xe5 halde fram med denne? D\xe5 er det berre \xe5 lukke denne fana.)`,errorAddingToLibrary:"Kunne ikkje legge elementet i biblioteket",errorRemovingFromLibrary:"Kunne ikkje fjerne elementet fr\xe5 biblioteket",confirmAddLibrary:"Dette vil legge til {{numShapes}} form(er) i biblioteket ditt. Er du sikker?",imageDoesNotContainScene:"Dette biletet ser ikkje ut til \xe5 ha noko scenedata. Har du skrutt p\xe5 innbygging av scene medan eksporteringa heldt p\xe5?",cannotRestoreFromImage:"Scena kunne ikkje gjenopprettast fr\xe5 denne biletfila",invalidSceneUrl:"Kunne ikkje hente noko scene fr\xe5 den URL-en. Ho er anten \xf8ydelagd eller inneheld ikkje gyldig Excalidraw JSON-data.",resetLibrary:"Dette vil fjerne alt innhald fr\xe5 biblioteket. Er du sikker?",removeItemsFromsLibrary:"Slette {{count}}\xa0element fr\xe5 biblioteket?",invalidEncryptionKey:"Krypteringsn\xf8kkelen m\xe5 ha 22 teikn. Sanntidssamarbeid er deaktivert.",collabOfflineWarning:""},o={unsupportedFileType:"Filtypen er ikkje st\xf8tta.",imageInsertError:"Kunne ikkje sette inn biletet. Pr\xf8v igjen seinare...",fileTooBig:"Fila er for stor. Maksimal tillate storleik er {{maxSize}}.",svgImageInsertError:"Kunne ikkje sette inn SVG-biletet. SVG-koden ser ugyldig ut.",failedToFetchImage:"",invalidSVGString:"Ugyldig SVG.",cannotResolveCollabServer:"Kunne ikkje kople til samarbeidsserveren. Ver vennleg \xe5 oppdatere inn sida og pr\xf8v p\xe5 nytt.",importLibraryError:"",collabSaveFailed:"",collabSaveFailed_sizeExceeded:"",imageToolNotSupported:"",brave_measure_text_error:{line1:"",line2:"",line3:"",line4:""},libraryElementTypeError:{embeddable:"",iframe:"",image:""},asyncPasteFailedOnRead:"",asyncPasteFailedOnParse:"",copyToSystemClipboardFailed:""},s={selection:"Vel",image:"Sett in bilete",rectangle:"Rektangel",diamond:"Diamant",ellipse:"Ellipse",arrow:"Pil",line:"Linje",freedraw:"Teikn",text:"Tekst",library:"Bibliotek",lock:"Hald fram med valt verkt\xf8y",penMode:"",link:"Legg til/ oppdater lenke til valt figur",eraser:"Viskel\xear",frame:"",magicframe:"",embeddable:"",laser:"",hand:"",extraTools:"",mermaidToExcalidraw:"",magicSettings:""},d={canvasActions:"Handlingar: lerret",selectedShapeActions:"Handlingar: valt objekt",shapes:"Formar"},k={canvasPanning:"",linearElement:"Klikk for \xe5 starte linje med fleire punkt, eller drag for ei enkel linje",freeDraw:"Klikk og drag, slepp n\xe5r du er ferdig",text:"Tips: du kan \xf2g leggje til tekst ved \xe5 dobbeltklikke kor som helst med utvalgsverktyet",embeddable:"",text_selected:"Dobbelklikk eller trykk ENTER for \xe5 redigere teksta",text_editing:"Trykk Escape eller CtrlOrCmd+ENTER for \xe5 fullf\xf8re redigeringa",linearElementMulti:"Klikk p\xe5 siste punkt eller trykk Escape eller Enter for \xe5 fullf\xf8re",lockAngle:"Du kan begrense vinkelen ved \xe5 holde nede SKIFT",resize:`Du kan halde fram med forholdet ved \xe5 trykke SHIFT medan du endrar storleik,
|
|
4
|
+
trykk ALT for \xe5 endre storleiken fr\xe5 midten`,resizeImage:`Du kan endre storleiken fritt ved \xe5 halde inne SHIFT,
|
|
5
|
+
hald ALT for \xe5 endre storleik fr\xe5 sentrum`,rotate:"Du kan l\xe5se vinklane ved \xe5 halde SHIFT medan du roterer",lineEditor_info:"",lineEditor_pointSelected:`Trykk p\xe5 Slett for \xe5 fjerne punkt(a),
|
|
6
|
+
Ctrl / Cmd+D for \xe5 duplisere, eller drag for \xe5 flytte`,lineEditor_nothingSelected:`Vel eit punkt \xe5 redigere (hald inne SHIFT for \xe5 velje fleire),
|
|
7
|
+
eller hald inne Alt og klikk for \xe5 legge til nye punkt`,placeImage:"Klikk for \xe5 plassere biletet, eller klikk og drag for \xe5 velje storleik manuelt",publishLibrary:"Publiser ditt eige bibliotek",bindTextToElement:"Trykk p\xe5 enter for \xe5 legge til tekst",deepBoxSelect:"Hald inne Ctrl / Cmd for \xe5 velje djupt, og forhindre flytting",eraserRevert:"Hald inne Alt for \xe5 reversere markering av element for sletting",firefox_clipboard_write:"",disableSnapping:""},g={cannotShowPreview:"Kan ikkje vise f\xf8rehandsvising",canvasTooBig:"Lerretet er mogleg for stort.",canvasTooBigTip:"Tips: pr\xf8v \xe5 flytte elementa som er lengst fr\xe5 kvarandre, litt n\xe6rare kvarandre."},u={headingMain:"Ein feil oppstod. Pr\xf8v <button>\xe5 laste sida p\xe5 nytt.</button>",clearCanvasMessage:"Om ny sidelasting ikkje fungerer, pr\xf8v <button>\xe5 t\xf8mme lerretet.</button>",clearCanvasCaveat:" Dette vil f\xf8re til tap av arbeid ",trackedToSentry:"Feilen med identifikator {{eventId}} vart logga i systemet v\xe5rt.",openIssueMessage:"Vi er veldig n\xf8ye med \xe5 ikkje inkludere scene-opplysingane dine i feilmeldinga. Viss scena di ikkje er privat kan du vurdere \xe5 f\xf8lge opp i <button>feilrapporteringssystemet v\xe5rt.</button> Ta med opplysingane nedanfor ved \xe5 kopiere og lime inn i GitHub-saka.",sceneContent:"Scene-innhald:"},m={desc_intro:"Du kan invitere personar til scena di for \xe5 samarbeide med deg.",desc_privacy:"Ta det med ro; \xf8kta brukar ende-til-ende-kryptering, s\xe5 alt du teiknar held fram med \xe5 vere privat. Ikkje ein gong serveren v\xe5r kan sj\xe5 kva du lagar.",button_startSession:"Start \xf8kt",button_stopSession:"Stopp \xf8kt",desc_inProgressIntro:"Sanntids-samarbeids\xf8kt er no i gang.",desc_shareLink:"Del denne lenka med dei du vil samarbeide med:",desc_exitSession:"Dersom du avsluttar \xf8kta blir du kopla fr\xe5 rommet, men du kan halde fram med \xe5 arbeide med scena lokalt. Ver merksam p\xe5 at dette ikkje vil p\xe5verke andre personar, og desse vil framleis ha moglegheit til \xe5 samarbeide p\xe5 deira eigen versjon.",shareTitle:"Bli med p\xe5 eit sanntidssamarbeid p\xe5 Excalidraw"},p={title:"Feil"},c={disk_title:"Lagre til disk",disk_details:"Eksporter scenedataa til ei fil du kan importere seinare.",disk_button:"Lagre til fil",link_title:"Deleleg lenke",link_details:"Eksporter som skrivebeskytta lenke.",link_button:"Eksporter til lenke",excalidrawplus_description:"Lagre scena til Excalidraw+-arbeidsomr\xe5det ditt.",excalidrawplus_button:"Eksporter",excalidrawplus_exportError:"Kunne ikkje eksportere til Excalidraw+ akkurat no..."},b={blog:"Les bloggen v\xe5r",click:"klikk",deepSelect:"Marker djupt",deepBoxSelect:"Marker djupt inni boksen og forhindr flytting",curvedArrow:"Boga pil",curvedLine:"Boga linje",documentation:"Dokumentasjon",doubleClick:"dobbelklikk",drag:"drag",editor:"Redigering",editLineArrowPoints:"",editText:"",github:"Funne eit problem? Send inn",howto:"F\xf8lg vegleiinga v\xe5r",or:"eller",preventBinding:"Hindre pilkopling",tools:"",shortcuts:"Tastatursnarvegar",textFinish:"Fullf\xf8r redigering (teksthandsamar)",textNewLine:"Legg til ny linje (teksthandsamar)",title:"Hjelp",view:"Vising",zoomToFit:"Zoom for \xe5 sj\xe5 alle elementa",zoomToSelection:"Zoom til utval",toggleElementLock:"",movePageUpDown:"",movePageLeftRight:""},v={title:"T\xf8m lerretet"},f={title:"Publiser bibliotek",itemName:"Elementnamn",authorName:"Eigaren sitt namn",githubUsername:"GitHub-brukarnamn",twitterUsername:"Twitter-brukarnamn",libraryName:"Biblioteknamn",libraryDesc:"Bibliotekskildring",website:"Nettstad",placeholder:{authorName:"Namnet eller brukarnamnet ditt",libraryName:"Namnet p\xe5 biblioteket ditt",libraryDesc:"Skildring av biblioteket ditt s\xe5nn at andre forst\xe5r bruken av det",githubHandle:"GitHub-brukarnamn (valfritt), slik at du kan redigere bibiloteket n\xe5r det er sendt inn til vurdering",twitterHandle:"Twitter-brukarnamn (valfritt), s\xe5 vi veit kven vi skal kreditere p\xe5 Twitter",website:"Lenke til den personlege nettstaden din eller ein anna stad (valfritt)"},errors:{required:"Kravt",website:"Fyll inn ein gyldig URL"},noteDescription:"Send inn biblioteket ditt til inkludering i <link>den offentlege bibliotek-kjeldekoda</link>slik at andre kan bruke det i teikningane deira.",noteGuidelines:"Biblioteket m\xe5 godkjennast manuelt fyrst. Ver vennleg \xe5 lese <link>retningslinjene</link> f\xf8r du sender inn. Du kjem til \xe5 trenge ein GitHub-konto for \xe5 kommunisere og gjere endringar dersom kravt, men det er ikkje strengt naudsynt.",noteLicense:"Ved \xe5 sende inn godkjenner du at biblioteket vert publisert under <link>MIT-lisensen, </link>som kort sagt betyr at kven som helst kan bruke det utan avgrensingar.",noteItems:"Kvart bibliotekselement m\xe5 ha eit eige namn, slik at det er mogleg \xe5 filtrere. Dei f\xf8lgande bibliotekselementa blir inkludert:",atleastOneLibItem:"Ver vennleg \xe5 markere minst eitt bibliotekselement for \xe5 starte",republishWarning:""},y={title:"Bibliotek innsendt",content:"Tusen takk {{authorName}}! Biblioteket ditt har blitt sendt inn til gjennomgang. Du kan halde styr p\xe5 status<link>her</link>"},h={resetLibrary:"Tilbakestill bibliotek",removeItemsFromLib:"Fjern valde element fr\xe5 biblioteket"},S={header:"",label:{withBackground:"",onlySelected:"",darkMode:"",embedScene:"",scale:"",padding:""},tooltip:{embedScene:""},title:{exportToPng:"",exportToSvg:"",copyPngToClipboard:""},button:{exportToPng:"",exportToSvg:"",copyPngToClipboard:""}},T={tooltip:"Teikningane dine er ende-til-ende-krypterte slik at Excalidraw sine serverar aldri f\xe5r sj\xe5 dei.",link:"Blogginnlegg om ende-til-ende-kryptering i Excalidraw"},x={angle:"Vinkel",element:"Element",elements:"Element",height:"H\xf8gde",scene:"Scene",selected:"Valde",storage:"Lagring",title:"Statistikk for nerdar",total:"Totalt",version:"Versjon",versionCopy:"Klikk for \xe5 kopiere",versionNotAvailable:"Versjonen er ikkje tilgjengeleg",width:"Breidde"},j={addedToLibrary:"Lagt til i bibliotek",copyStyles:"Kopierte stilane.",copyToClipboard:"Kopiert til utklippstavla.",copyToClipboardAsPng:`Kopierte {{exportSelection}} til utklippstavla som PNG
|
|
8
|
+
({{exportColorScheme}})`,fileSaved:"Fila er lagra.",fileSavedToFilename:"Lagra som {filename}",canvas:"lerret",selection:"val",pasteAsSingleElement:"",unableToEmbed:"",unrecognizedLinkFormat:""},L={transparent:"Gjennomsiktig",black:"",white:"",red:"",pink:"",grape:"",violet:"",gray:"",blue:"",cyan:"",teal:"",green:"",yellow:"",orange:"",bronze:""},w={app:{center_heading:"",center_heading_plus:"",menuHint:""},defaults:{menuHint:"",center_heading:"",toolbarHint:"",helpHint:""}},E={mostUsedCustomColors:"",colors:"",shades:"",hexCode:"",noShades:""},F={action:{exportToImage:{title:"",button:"",description:""},saveToDisk:{title:"",button:"",description:""},excalidrawPlus:{title:"",button:"",description:""}},modal:{loadFromFile:{title:"",button:"",description:""},shareableLink:{title:"",button:"",description:""}}},_={title:"",button:"",description:"",syntax:"",preview:""},D={labels:i,library:n,buttons:a,alerts:l,errors:o,toolBar:s,headings:d,hints:k,canvasError:g,errorSplash:u,roomDialog:m,errorDialog:p,exportDialog:c,helpDialog:b,clearCanvasDialog:v,publishDialog:f,publishSuccessDialog:y,confirmDialog:h,imageExportDialog:S,encrypted:T,stats:x,toast:j,colors:L,welcomeScreen:w,colorPicker:E,overwriteConfirm:F,mermaid:_}}}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[7409],{8968:function(e,t,n){(window.__NEXT_P=window.__NEXT_P||[]).push(["/_not-found/page",function(){return n(54682)}])},54682:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return s}}),n(74849);let i=n(37821);n(58078);let o={fontFamily:'system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji"',height:"100vh",textAlign:"center",display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center"},l={display:"inline-block"},r={display:"inline-block",margin:"0 20px 0 0",padding:"0 23px 0 0",fontSize:24,fontWeight:500,verticalAlign:"top",lineHeight:"49px"},d={fontSize:14,fontWeight:400,lineHeight:"49px",margin:0};function s(){return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)("title",{children:"404: This page could not be found."}),(0,i.jsx)("div",{style:o,children:(0,i.jsxs)("div",{children:[(0,i.jsx)("style",{dangerouslySetInnerHTML:{__html:"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}),(0,i.jsx)("h1",{className:"next-error-h1",style:r,children:"404"}),(0,i.jsx)("div",{style:l,children:(0,i.jsx)("h2",{style:d,children:"This page could not be found."})})]})})]})}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)}},function(e){e.O(0,[7115,3205,1744],function(){return e(e.s=8968)}),_N_E=e.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[5381],{17916:function(e,t,n){Promise.resolve().then(n.bind(n,71520)),Promise.resolve().then(n.bind(n,81751))},71520:function(e,t,n){"use strict";n.d(t,{ChangesClient:function(){return R}});var i=n(37821),a=n(97333),s=n(14233),l=n(58078),o=n(90168),c=n(81751),r=n(32011),d=n(52171),u=n(75833),x=n(90026),m=n(61434),p=n(55631),h=n(93775),f=n(29487),v=n(85268),b=n(4848),g=n(83206),j=n(17968);let y={added:"Added",modified:"Modified",removed:"Removed",comments_only:"Comments only"},_={added:"var(--success)",modified:"var(--high)",removed:"var(--critical)",comments_only:"var(--neutral)"},N={changed:"Changed",calls:"Calls",modifier:"Uses modifier",reads_state:"Reads state",override:"Dispatches to",inherits:"Inherits"},k={regressed:{label:"Regressed",color:"var(--critical)"},acknowledged_still_present:{label:"Still present",color:"var(--medium)"},fix_touched_ok:{label:"Fix touched, holds",color:"var(--success)"},fixed_unchanged:{label:"Fixed, untouched",color:"var(--neutral)"},code_removed:{label:"Code removed",color:"var(--neutral)"}},w={fixed:{label:"Fixed",color:"var(--success)"},partially_fixed:{label:"Partially fixed",color:"var(--medium)"},not_fixed:{label:"Not fixed",color:"var(--critical)"},unaddressed:{label:"Unaddressed",color:"var(--high)"},unknown:{label:"Unknown",color:"var(--neutral)"}},C={passing:"passes",failing:"fails",error:"errors",missing:"missing"},z=(e,t)=>"".concat(e," ").concat(t).concat(1===e?"":"s");function R(e){var t;let{diff:n,overview:a,prior:s,fixReview:r,reviewStates:p}=e,h=(0,o.useSearchParams)(),j=(0,l.useMemo)(()=>{let e=n?[{id:"overview",label:"Overview"}]:[];return r&&e.push({id:"fixes",label:"Fix review",count:r.cards.length+r.unmapped_changes.length}),(null==n?void 0:n.storage_layout_changes.length)&&e.push({id:"storage",label:"Storage layout",count:n.storage_layout_changes.length}),n&&(e.push({id:"code",label:"Changed code",count:n.changes.length}),e.push({id:"impact",label:"Impact",count:n.impacted.length})),(null==s?void 0:s.items.length)&&e.push({id:"prior",label:"Prior findings",count:s.items.length}),e},[n,s,r]),[C,R]=(0,l.useState)(()=>{var e,t;let n=h.get("s");return n&&j.some(e=>e.id===n)?n:null!==(t=null===(e=j[0])||void 0===e?void 0:e.id)&&void 0!==t?t:"overview"}),[F,P]=(0,l.useState)(null),[U,H]=(0,l.useState)("entry");(0,l.useEffect)(()=>{var e;(0,g.q)({s:C===(null===(e=j[0])||void 0===e?void 0:e.id)?null:C}),P(null)},[C]);let M=(0,l.useMemo)(()=>{var e;return(null!==(e=null==n?void 0:n.impacted)&&void 0!==e?e:[]).map((e,t)=>({it:e,i:t})).filter(e=>{let{it:t}=e;return"all"===U||t.is_entry_point||0===t.depth}).sort((e,t)=>e.it.depth-t.it.depth||Number(t.it.is_entry_point)-Number(e.it.is_entry_point))},[n,U]);(0,l.useEffect)(()=>{if(F){if("impact"===F.kind&&n){let e=n.impacted[F.i];(0,b.k)({ref:"".concat(e.contract,".").concat(e.function),kind:"function",label:"".concat(e.contract,".").concat(e.function),file:e.file,...e.line_start?{line_start:e.line_start}:{}})}else if("change"===F.kind&&n){let t=n.changes[F.i];if("function"===t.kind||"modifier"===t.kind){var e;(0,b.k)({ref:"".concat(t.contract,".").concat(t.entity),kind:"function",label:"".concat(t.contract,".").concat(t.entity),file:t.file,...t.line_start?{line_start:t.line_start,line_end:null!==(e=t.line_end)&&void 0!==e?e:t.line_start}:{}})}}else if("fix"===F.kind&&r){let e=r.cards[F.i];(0,b.k)({ref:e.id,kind:"card",label:e.title})}}},[F]),(0,v.y)({Escape:()=>P(null),j:()=>O(1),k:()=>O(-1)});let O=e=>{let t=j.findIndex(e=>e.id===C),n=j[Math.max(0,Math.min(j.length-1,t+e))];n&&R(n.id)},W=(0,i.jsx)("div",{className:"min-h-0 flex-1 overflow-y-auto p-2",children:j.map(e=>(0,i.jsx)(d.w,{dense:!0,selected:e.id===C,onClick:()=>R(e.id),title:e.label,trailing:void 0!==e.count?(0,i.jsx)("span",{className:"tabular-nums",children:e.count}):void 0},e.id))});return(0,i.jsx)(c.z,{toolbar:(0,i.jsx)(c.Toolbar,{title:"Changes",meta:n?(0,i.jsxs)("span",{children:[(0,i.jsx)("span",{className:"font-mono text-caption",children:n.base_commit.slice(0,8)})," →"," ",(0,i.jsx)("span",{className:"font-mono text-caption",children:n.head_commit.slice(0,8)}),(0,i.jsxs)("span",{className:"ml-2",children:["+",n.summary.additions," −",n.summary.deletions]})]}):r?(0,i.jsxs)("span",{children:["Fix review \xb7"," ",(0,i.jsx)("span",{className:"font-mono text-caption",children:r.from_commit.slice(0,8)})," ","→ ",(0,i.jsx)("span",{className:"font-mono text-caption",children:r.to_commit.slice(0,8)})]}):void 0}),list:W,listWidth:220,inspector:F?(0,i.jsx)(I,{sel:F,diff:n,prior:s,fixReview:r,reviewStates:p,onClose:()=>P(null)}):void 0,children:(0,i.jsx)(c.x,{children:(0,i.jsxs)("div",{className:"mx-auto max-w-[760px] px-8 pb-16 pt-8",children:["overview"===C&&n&&(0,i.jsxs)("div",{className:"rise-in",children:[(0,i.jsxs)("p",{className:"text-heading font-medium text-text-primary",children:[z(n.summary.files_changed,"file")," changed \xb7"," ",n.summary.functions_added," added, ",n.summary.functions_modified," modified,"," ",n.summary.functions_removed," removed"]}),(0,i.jsxs)("p",{className:"mt-1 text-body text-text-secondary",children:["The change reaches ",z(n.summary.impacted_entry_points,"entry point"),n.summary.storage_layout_changes?" and moves ".concat(z(n.summary.storage_layout_changes,"storage slot")):"","."]}),(null!==(t=n.warnings)&&void 0!==t?t:[]).map((e,t)=>(0,i.jsxs)("p",{className:"mt-3 flex gap-2 text-caption text-text-secondary",children:[(0,i.jsx)(x.oT,{color:"var(--medium)",className:"mt-1"}),e]},t)),a&&(0,i.jsx)("div",{className:"mt-8 border-t border-border-subtle pt-6",children:(0,i.jsx)(f.$8,{content:a.replace(/^# .*\n+/,"")})}),r&&(0,i.jsx)("button",{type:"button",onClick:()=>R("fixes"),className:"mt-8 flex w-full items-center gap-3 border-y border-border-subtle py-3 text-left hover:border-border-default",children:(0,i.jsxs)("span",{className:"flex-1 text-body text-text-primary",children:["Fix review of ",r.to_commit.slice(0,8),":"," ",(0,i.jsx)("span",{className:"text-text-secondary",children:S(r)})]})})]}),"storage"===C&&n&&(0,i.jsx)(T,{title:"Storage layout",hint:"Slots that moved. Behind a proxy, an upgrade would read these from the wrong place.",children:n.storage_layout_changes.map((e,t)=>(0,i.jsx)(E,{selected:(null==F?void 0:F.kind)==="storage"&&F.i===t,onClick:()=>P({kind:"storage",i:t}),leading:(0,i.jsx)(x.oT,{color:"var(--high)"}),title:(0,i.jsx)(f.T9,{children:e.detail}),subtitle:"".concat(e.contract," \xb7 ").concat(e.kind.replace(/_/g," "))},t))}),"code"===C&&n&&(0,i.jsx)(T,{title:"Changed code",hint:n.files.map(e=>"".concat(e.path," (+").concat(e.additions," −").concat(e.deletions,")")).join(" \xb7 "),children:(function(e,t){var n;let i=new Map;for(let a of e)i.set(t(a),[...null!==(n=i.get(t(a)))&&void 0!==n?n:[],a]);return Array.from(i.entries())})(n.changes.map((e,t)=>({c:e,i:t})),e=>e.c.contract).map(e=>{let[t,n]=e;return(0,i.jsxs)("div",{children:[(0,i.jsx)(d.i,{children:t}),n.map(e=>{var t;let{c:n,i:a}=e;return(0,i.jsx)(E,{selected:(null==F?void 0:F.kind)==="change"&&F.i===a,onClick:()=>P({kind:"change",i:a}),leading:(0,i.jsx)(x.oT,{color:_[n.change],title:y[n.change]}),title:(0,i.jsx)("span",{className:"font-mono text-caption text-text-primary",children:n.entity}),subtitle:"".concat(n.kind.replace("_"," ")," \xb7 ").concat(null!==(t=y[n.change])&&void 0!==t?t:n.change)},a)})]},t)})}),"impact"===C&&n&&(0,i.jsx)(T,{title:"Impact",hint:"Every function the change reaches: changed code first, then callers, modifier users, readers of changed state and inherited entry points.",control:(0,i.jsx)(u.s,{segments:[{value:"entry",label:"Entry points"},{value:"all",label:"All",count:n.impacted.length}],value:U,onChange:H}),children:M.map(e=>{var t,n,a,s,l,o;let{it:c,i:r}=e,d=p["".concat(c.contract,".").concat(c.function)];return(0,i.jsx)(E,{selected:(null==F?void 0:F.kind)==="impact"&&F.i===r,onClick:()=>P({kind:"impact",i:r}),leading:d?(0,i.jsx)(m.e,{state:d}):(0,i.jsx)("span",{className:"h-3.5 w-3.5"}),title:(0,i.jsxs)("span",{children:[c.contract,".",(0,i.jsx)("span",{className:"font-medium",children:c.function.split("(")[0]})]}),subtitle:0===c.depth?"Changed \xb7 ".concat(null!==(s=null===(t=c.reasons[0])||void 0===t?void 0:t.via)&&void 0!==s?s:""):"".concat(z(c.depth,"hop")," \xb7 ").concat(null!==(l=N[null===(n=c.reasons[0])||void 0===n?void 0:n.kind])&&void 0!==l?l:""," ").concat(null!==(o=null===(a=c.reasons[0])||void 0===a?void 0:a.via)&&void 0!==o?o:""),trailing:c.is_entry_point?"Entry point":c.visibility},r)})}),"prior"===C&&s&&(0,i.jsx)(T,{title:"Prior findings",hint:"Findings from the previous audit, checked against this change.",children:s.items.map((e,t)=>{var n,a,s,l,o;return(0,i.jsx)(E,{selected:(null==F?void 0:F.kind)==="prior"&&F.i===t,onClick:()=>P({kind:"prior",i:t}),leading:(0,i.jsx)(x.oH,{severity:e.severity,label:!1}),title:e.title,subtitle:"".concat(e.id," \xb7 ").concat(null!==(l=null===(n=k[e.status])||void 0===n?void 0:n.label)&&void 0!==l?l:e.status),trailing:(0,i.jsx)(x.oT,{color:null!==(o=null===(a=k[e.status])||void 0===a?void 0:a.color)&&void 0!==o?o:"var(--neutral)",title:null===(s=k[e.status])||void 0===s?void 0:s.label})},e.id)})}),"fixes"===C&&r&&(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(T,{title:"Fix review",hint:"".concat(r.from_commit.slice(0,8)," → ").concat(r.to_commit.slice(0,8)," \xb7 ").concat(S(r),". Read-only here; the CLI skill applies the proposals."),children:r.cards.map((e,t)=>{var n,a,s,l,o;return(0,i.jsx)(E,{selected:(null==F?void 0:F.kind)==="fix"&&F.i===t,onClick:()=>P({kind:"fix",i:t}),leading:(0,i.jsx)(x.oT,{color:null!==(l=null===(n=w[e.status])||void 0===n?void 0:n.color)&&void 0!==l?l:"var(--neutral)",title:null===(a=w[e.status])||void 0===a?void 0:a.label}),title:e.title,subtitle:"".concat(e.id).concat(e.github_issue?" \xb7 #".concat(e.github_issue):""," \xb7 ").concat(null!==(o=null===(s=w[e.status])||void 0===s?void 0:s.label)&&void 0!==o?o:e.status).concat(e.applied_at?" \xb7 applied":""),trailing:(0,i.jsx)(x.oH,{severity:e.severity})},e.id)})}),r.unmapped_changes.length>0&&(0,i.jsx)(T,{title:"Changes no card explains",hint:"Fix-commit code that needs a review of its own.",children:r.unmapped_changes.map((e,t)=>(0,i.jsx)(E,{selected:(null==F?void 0:F.kind)==="unmapped"&&F.i===t,onClick:()=>P({kind:"unmapped",i:t}),leading:(0,i.jsx)(x.oT,{color:e.reviewed?"var(--success)":"var(--medium)",title:e.reviewed?"Reviewed":"Needs review"}),title:(0,i.jsx)("span",{className:"font-mono text-caption text-text-primary",children:e.entity}),subtitle:"".concat(e.contract," \xb7 ").concat(e.kind," ").concat(e.change).concat(e.reviewed?" \xb7 reviewed":"")},t))})]})]})})})}function S(e){let t=e.summary;return[t.fixed?"".concat(t.fixed," fixed"):null,t.partially_fixed?"".concat(t.partially_fixed," partially fixed"):null,t.not_fixed?"".concat(t.not_fixed," not fixed"):null,t.unaddressed?"".concat(t.unaddressed," unaddressed"):null,t.unknown?"".concat(t.unknown," unknown"):null,t.unmapped?z(t.unmapped,"unmapped change"):null].filter(Boolean).join(" \xb7 ")}function T(e){let{title:t,hint:n,control:a,children:s}=e;return(0,i.jsxs)("section",{className:"rise-in mb-10",children:[(0,i.jsxs)("div",{className:"mb-3 flex flex-wrap items-end justify-between gap-3",children:[(0,i.jsxs)("div",{className:"min-w-0",children:[(0,i.jsx)("h2",{className:"text-heading font-medium text-text-primary",children:t}),n&&(0,i.jsx)("p",{className:"mt-0.5 text-caption text-text-tertiary",children:n})]}),a]}),(0,i.jsx)("div",{className:"-mx-2",children:s})]})}function E(e){let{selected:t,onClick:n,leading:a,title:s,subtitle:l,trailing:o}=e;return(0,i.jsxs)("button",{type:"button",onClick:n,className:(0,j.cn)("flex w-full items-center gap-3 rounded-md px-2 py-2 text-left",t?"bg-accent-subtle":"hover:bg-surface-1"),children:[a&&(0,i.jsx)("span",{className:"flex w-4 shrink-0 justify-center",children:a}),(0,i.jsxs)("span",{className:"min-w-0 flex-1",children:[(0,i.jsx)("span",{className:(0,j.cn)("block truncate text-body",t?"text-accent":"text-text-primary"),children:s}),l&&(0,i.jsx)("span",{className:"block truncate text-caption text-text-tertiary",children:l})]}),o&&(0,i.jsx)("span",{className:"shrink-0 text-caption text-text-tertiary",children:o})]})}function F(e){let{id:t,states:n}=e,a=n[t];return a?(0,i.jsxs)(s.default,{href:"/review?fn=".concat(encodeURIComponent(t)),className:"inline-flex h-8 items-center gap-2 rounded-md border border-border-default bg-surface-0 px-3 text-body font-medium text-text-primary shadow-sm hover:bg-surface-2",children:[(0,i.jsx)(m.e,{state:a})," Open in Review"]}):null}function I(e){var t,n,l,o,c,d,u,m;let{sel:v,diff:b,prior:g,fixReview:j,reviewStates:_,onClose:R}=e;if("change"===v.kind&&b){let e=b.changes[v.i],t="".concat(e.contract,".").concat(e.entity);return(0,i.jsx)(r.lj,{eyebrow:"".concat(e.contract," \xb7 ").concat(e.kind.replace("_"," ")),title:(0,i.jsx)("span",{className:"font-mono text-body",children:e.entity}),subtitle:y[e.change],onClose:R,actions:(0,i.jsx)(F,{id:t,states:_}),children:(0,i.jsx)(r.oz,{label:"Where",children:"removed"!==e.change&&e.line_start?(0,i.jsx)(h.i,{file:e.file,lineStart:e.line_start,lineEnd:e.line_end}):(0,i.jsx)("span",{className:"font-mono text-caption text-text-secondary",children:e.file})})})}if("impact"===v.kind&&b){let e=b.impacted[v.i],t="".concat(e.contract,".").concat(e.function);return(0,i.jsxs)(r.lj,{eyebrow:"".concat(e.contract," \xb7 ").concat(e.is_entry_point?"Entry point":e.visibility),title:e.function.split("(")[0],subtitle:(0,i.jsx)("span",{className:"font-mono",children:e.function}),onClose:R,actions:(0,i.jsx)(F,{id:t,states:_}),children:[(0,i.jsxs)(r.oz,{label:"Why it is impacted",children:[(0,i.jsx)("ul",{className:"space-y-1.5",children:e.reasons.map((e,t)=>{var n;return(0,i.jsxs)("li",{className:"text-body text-text-secondary",children:[null!==(n=N[e.kind])&&void 0!==n?n:e.kind," ",(0,i.jsx)("span",{className:"font-mono text-caption text-text-primary",children:e.via})]},t)})}),(0,i.jsxs)("p",{className:"mt-2 text-caption text-text-tertiary",children:[0===e.depth?"Changed itself":"".concat(z(e.depth,"hop")," from the nearest change")," ","\xb7 ",e.confidence," confidence"]})]}),(0,i.jsx)(r.oz,{label:"Where",children:(0,i.jsx)(h.i,{file:e.file,lineStart:e.line_start})})]})}if("storage"===v.kind&&b){let e=b.storage_layout_changes[v.i];return(0,i.jsx)(r.lj,{eyebrow:e.contract,title:e.kind.replace(/_/g," ").replace(/^./,e=>e.toUpperCase()),onClose:R,children:(0,i.jsxs)(r.oz,{label:"Detail",children:[(0,i.jsx)("p",{className:"text-body text-text-secondary",children:(0,i.jsx)(f.T9,{children:e.detail})}),(0,i.jsx)("p",{className:"mt-2 font-mono text-caption text-text-tertiary",children:e.file})]})})}if("prior"===v.kind&&g){let e=g.items[v.i];return(0,i.jsx)(r.lj,{eyebrow:"".concat(e.id," \xb7 prior audit"),title:e.title,subtitle:(0,i.jsx)(x.oH,{severity:e.severity}),onClose:R,actions:e.issue_id?(0,i.jsxs)(s.default,{href:"/issues?card=".concat(encodeURIComponent(e.issue_id)),className:"inline-flex h-8 items-center rounded-md border border-border-default bg-surface-0 px-3 text-body font-medium text-text-primary shadow-sm hover:bg-surface-2",children:["Open card ",e.issue_id]}):void 0,children:(0,i.jsx)(r.oz,{label:null!==(n=null===(t=k[e.status])||void 0===t?void 0:t.label)&&void 0!==n?n:e.status,children:(0,i.jsx)("p",{className:"text-body text-text-secondary",children:e.reasoning})})})}if("fix"===v.kind&&j){let e=j.cards[v.i];return(0,i.jsxs)(r.lj,{eyebrow:"".concat(e.id).concat(e.github_issue?" \xb7 #".concat(e.github_issue):""),title:e.title,subtitle:(0,i.jsx)(x.oH,{severity:e.severity}),onClose:R,actions:(0,i.jsx)(s.default,{href:"/issues?card=".concat(encodeURIComponent(e.id)),className:"inline-flex h-8 items-center rounded-md border border-border-default bg-surface-0 px-3 text-body font-medium text-text-primary shadow-sm hover:bg-surface-2",children:"Open card"}),children:[(0,i.jsxs)(r.oz,{label:"Status",children:[(0,i.jsxs)("p",{className:"flex items-center gap-2 text-body text-text-primary",children:[(0,i.jsx)(x.oT,{color:null!==(c=null===(l=w[e.status])||void 0===l?void 0:l.color)&&void 0!==c?c:"var(--neutral)"}),null!==(d=null===(o=w[e.status])||void 0===o?void 0:o.label)&&void 0!==d?d:e.status]}),e.evidence&&(0,i.jsx)("p",{className:"mt-1.5 text-body text-text-secondary",children:e.evidence})]}),(e.poc.file||e.poc.before||e.poc.after)&&(0,i.jsxs)(r.oz,{label:"Proof of concept",children:[e.poc.file&&(0,i.jsx)("p",{className:"truncate font-mono text-caption text-text-secondary",children:e.poc.file}),e.poc.before&&(0,i.jsx)(r.vz,{label:"Audited",children:null!==(u=C[e.poc.before])&&void 0!==u?u:e.poc.before}),e.poc.after&&(0,i.jsx)(r.vz,{label:"Fixed",children:null!==(m=C[e.poc.after])&&void 0!==m?m:e.poc.after})]}),(e.changed_functions.length>0||e.commits.length>0)&&(0,i.jsxs)(r.oz,{label:"Changed by",children:[e.changed_functions.map(e=>(0,i.jsx)(s.default,{href:"/review?fn=".concat(encodeURIComponent(e)),className:"-mx-1.5 block truncate rounded-md px-1.5 py-1 text-body text-text-primary hover:bg-surface-2",children:e.split("(")[0]},e)),e.commits.length>0&&(0,i.jsx)("p",{className:"mt-1 font-mono text-caption text-text-tertiary",children:e.commits.join(", ")})]}),(e.proposed.resolution||e.proposed.update_from_client)&&(0,i.jsxs)(r.oz,{label:e.applied_at?"Applied to GitHub":"Proposed",children:[e.proposed.resolution&&(0,i.jsx)(r.vz,{label:"Resolution",children:e.proposed.resolution}),e.proposed.update_from_client&&(0,i.jsx)("p",{className:"mt-1 text-body text-text-secondary",children:e.proposed.update_from_client}),e.applied_at&&(0,i.jsx)("p",{className:"mt-1 text-caption text-text-tertiary",children:(0,i.jsx)(a.P,{iso:e.applied_at})})]})]})}if("unmapped"===v.kind&&j){let e=j.unmapped_changes[v.i];return(0,i.jsxs)(r.lj,{eyebrow:"".concat(e.contract," \xb7 ").concat(e.kind," ").concat(e.change),title:(0,i.jsx)("span",{className:"font-mono text-body",children:e.entity}),onClose:R,children:[(0,i.jsx)(r.oz,{label:"Where",children:(0,i.jsx)("p",{className:"font-mono text-caption text-text-secondary",children:e.file})}),e.impacted_entry_points.length>0&&(0,i.jsx)(r.oz,{label:"Reaches",children:e.impacted_entry_points.map(e=>(0,i.jsx)(s.default,{href:"/review?fn=".concat(encodeURIComponent(e)),className:"-mx-1.5 block truncate rounded-md px-1.5 py-1 text-body text-text-primary hover:bg-surface-2",children:e.split("(")[0]},e))}),(0,i.jsxs)(r.oz,{label:"Review",children:[(0,i.jsx)("p",{className:"text-body text-text-secondary",children:e.reviewed?"Reviewed.":"Not reviewed yet."}),e.note&&(0,i.jsx)("p",{className:"mt-1 text-body text-text-secondary",children:e.note})]})]})}return(0,i.jsx)(p.u,{sentence:"Nothing selected."})}},97333:function(e,t,n){"use strict";n.d(t,{P:function(){return a}});var i=n(37821);function a(e){let{iso:t,className:n}=e;return(0,i.jsx)("time",{dateTime:t,className:n,suppressHydrationWarning:!0,children:new Date(t).toLocaleString()})}},75833:function(e,t,n){"use strict";n.d(t,{s:function(){return s}});var i=n(37821),a=n(17968);function s(e){let{segments:t,value:n,onChange:s,className:l,ariaLabel:o,size:c="md",fill:r=!1}=e;return(0,i.jsx)("div",{role:"tablist","aria-label":o,className:(0,a.cn)("max-w-full items-center gap-0.5 overflow-x-auto rounded-lg bg-surface-2 p-0.5",r?"flex w-full":"inline-flex",l),children:t.map(e=>{let t=e.value===n;return(0,i.jsxs)("button",{role:"tab",type:"button","aria-selected":t,onClick:()=>s(e.value),className:(0,a.cn)("inline-flex h-6 shrink-0 items-center justify-center gap-1 whitespace-nowrap rounded-md font-medium","sm"===c?"px-1.5 text-[11.5px]":"px-2.5 text-caption",r&&"flex-1",t?"bg-surface-0 text-text-primary shadow-sm":"text-text-secondary hover:text-text-primary"),children:[e.label,void 0!==e.count&&(0,i.jsx)("span",{className:"tabular-nums text-text-tertiary",children:e.count})]},e.value)})})}}},function(e){e.O(0,[7498,217,2374,7834,7115,3205,1744],function(){return e(e.s=17916)}),_N_E=e.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[4521],{86965:function(e,t,n){Promise.resolve().then(n.bind(n,68916)),Promise.resolve().then(n.bind(n,81751))},68916:function(e,t,n){"use strict";n.d(t,{BoardClient:function(){return A}});var r=n(37821),a=n(97333),s=n(14233),i=n(58078),o=n(90168),l=n(63924),c=n(81751),d=n(32011),u=n(59167),x=n(75833),m=n(90026),p=n(17968);let h={neutral:"bg-surface-2 text-text-secondary",accent:"bg-accent-subtle text-accent",warn:"bg-[color-mix(in_oklch,var(--high)_14%,transparent)] text-[var(--high)]",danger:"bg-[color-mix(in_oklch,var(--critical)_14%,transparent)] text-[var(--critical)]",ok:"bg-[color-mix(in_oklch,var(--success)_14%,transparent)] text-[var(--success)]"};function f(e){let{tone:t="neutral",children:n,className:a,title:s}=e;return(0,r.jsx)("span",{title:s,className:(0,p.cn)("inline-flex items-center gap-1 whitespace-nowrap rounded-md px-1.5 py-px text-caption font-medium",h[t],a),children:n})}var v=n(55592),b=n(53963),y=n(88554),g=n(69059),j=n(29487),N=n(85268),_=n(4848),w=n(83206),k=n(79513);let C={Critical:0,High:1,Medium:2,Low:3,Info:4},S={manual:"Manual",auditagent:"AuditAgent","ai-audit":"AI audit",conformance:"Conformance",github:"GitHub","prior-audit":"Prior audit",invariant:"Invariant"},T=[{id:"potential",label:"Potential",hint:"Awaiting validation"},{id:"verified",label:"Verified",hint:"Confirmed, ready to sync"},{id:"synced",label:"Synced",hint:"On GitHub; edit there"},{id:"invalid",label:"Rejected",hint:"Not in the report"},{id:"duplicate",label:"Duplicate",hint:"Covered by another card"}],z=Object.fromEntries(T.map(e=>[e.id,e.label])),R={potential:"pending_validation",verified:"verified",synced:"synced",invalid:"rejected",duplicate:"duplicate"},E={out_of_scope:"Out of scope",trusted_role:"Trusted role",by_design:"By design",known_issue:"Known issue"},P={reproduced:"Reproduced",refuted:"Refuted",uncertain:"Uncertain",valid_no_poc:"Valid, no PoC"},D=["Critical","High","Medium","Low","Info"],U=["Fixed","Mitigated","Acknowledged","Not Fixed","Unresolved"];function A(e){var t;let{issues:n,rules:a,formatCtx:s}=e,d=(0,o.useRouter)(),m=(0,o.useSearchParams)(),p=(0,y.p)(),[h,f]=(0,i.useState)({});(0,i.useEffect)(()=>f({}),[n]);let v=(0,i.useMemo)(()=>n.map(e=>h[e.id]?{...e,column:h[e.id],status:R[h[e.id]]}:e),[n,h]),[g,j]=(0,i.useState)(""),[P,D]=(0,i.useState)("all"),[U,A]=(0,i.useState)({potential:!1,verified:!1,synced:!1,invalid:!0,duplicate:!0}),[H,O]=(0,i.useState)(()=>m.get("card")),[$,G]=(0,i.useState)(!1),[L,V]=(0,i.useState)(!1);(0,i.useEffect)(()=>{let e=m.get("card");e&&O(e)},[m]);let F=null!==(t=v.find(e=>e.id===H))&&void 0!==t?t:null;(0,i.useEffect)(()=>{var e;(0,w.q)({card:null!==(e=null==F?void 0:F.id)&&void 0!==e?e:null}),F&&(0,_.k)({ref:F.id,kind:"card",label:F.title}),G(!1)},[null==F?void 0:F.id]),(0,i.useEffect)(()=>{F&&U[F.column]&&A(e=>({...e,[F.column]:!1}))},[null==F?void 0:F.id]);let q=(0,i.useMemo)(()=>Array.from(new Set(n.map(e=>e.source))).sort((e,t)=>{var n,r;return(null!==(n=S[e])&&void 0!==n?n:e).localeCompare(null!==(r=S[t])&&void 0!==r?r:t)}),[n]),B=(0,i.useMemo)(()=>{let e=g.trim().toLowerCase();return v.filter(t=>("all"===P||t.source===P)&&(!e||"".concat(t.id," ").concat(t.title," ").concat(t.description).toLowerCase().includes(e)))},[v,g,P]),K=(0,i.useMemo)(()=>{let e={potential:[],verified:[],synced:[],invalid:[],duplicate:[]};for(let t of B)e[t.column].push(t);for(let t of Object.values(e))t.sort((e,t)=>{var n,r;return(null!==(n=C[e.severity])&&void 0!==n?n:5)-(null!==(r=C[t.severity])&&void 0!==r?r:5)||e.id.localeCompare(t.id)});return e},[B]),Z=(0,i.useMemo)(()=>T.filter(e=>!U[e.id]).flatMap(e=>K[e.id].map(e=>e.id)),[K,U]),J=(0,i.useCallback)(async function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{undoable:!0},r=v.find(t=>t.id===e);if(!r||r.column===t)return;let a=r.column;f(n=>({...n,[e]:t}));try{await (0,k.C)("/api/issues/".concat(encodeURIComponent(e),"/move"),{column:t}),n.undoable&&p({message:"".concat(e," moved to ").concat(z[t]),action:{label:"Undo",onClick:()=>{f(t=>({...t,[e]:a})),(0,k.C)("/api/issues/".concat(encodeURIComponent(e),"/move"),{column:a}).then(()=>d.refresh())}}}),d.refresh()}catch(t){f(t=>{let n={...t};return delete n[e],n}),p({message:t.message,tone:"error"})}},[v,d,p]),W=(0,l.Dy)((0,l.VT)(l.we,{activationConstraint:{distance:5}})),Q=(0,i.useRef)(null),X=e=>{O(e),e&&requestAnimationFrame(()=>{var t,n;return null===(n=Q.current)||void 0===n?void 0:null===(t=n.querySelector('[data-card="'.concat(CSS.escape(e),'"]')))||void 0===t?void 0:t.scrollIntoView({block:"nearest"})})};(0,N.y)({j:()=>{let e=H?Z.indexOf(H):-1;Z.length&&X(Z[Math.min(Z.length-1,e+1)])},k:()=>{let e=H?Z.indexOf(H):0;Z.length&&X(Z[Math.max(0,e-1)])},e:e=>{F&&"synced"!==F.column&&(e.preventDefault(),G(!0))},Escape:()=>{$?G(!1):L?V(!1):X(null)}});let Y=[{value:"all",label:"All"},...q.map(e=>{var t;return{value:e,label:null!==(t=S[e])&&void 0!==t?t:e}})];return(0,r.jsx)(c.z,{toolbar:(0,r.jsxs)(c.Toolbar,{title:"Board",meta:"".concat(n.length," card").concat(1===n.length?"":"s"),children:[(0,r.jsx)(u.U,{value:g,onChange:j,placeholder:"Search cards",className:"w-56"}),q.length>1&&(0,r.jsx)(x.s,{segments:Y,value:P,onChange:D,ariaLabel:"Source"})]}),inspector:F?(0,r.jsx)(I,{card:F,editing:$,setEditing:G,formatCtx:s,onClose:()=>X(null),onReverted:()=>f(e=>({...e,[F.id]:"potential"}))},F.id):void 0,children:(0,r.jsxs)("div",{className:"flex min-h-0 flex-1 flex-col",children:[(0,r.jsx)(l.LB,{sensors:W,onDragEnd:e=>{if(!e.over)return;let t=e.over.id,n=v.find(t=>t.id===e.active.id);n&&n.column!==t&&"synced"!==t&&"synced"!==n.column&&J(n.id,t)},children:(0,r.jsx)("div",{ref:Q,className:"flex min-h-0 flex-1 gap-5 overflow-x-auto px-5 pt-4",children:T.map(e=>(0,r.jsx)(M,{column:e,cards:K[e.id],collapsed:U[e.id],onToggle:()=>A(t=>({...t,[e.id]:!t[e.id]})),selectedId:H,onSelect:X},e.id))})}),(0,r.jsxs)("footer",{className:"relative flex shrink-0 items-center gap-3 border-t border-border-subtle px-5 py-2 text-caption text-text-tertiary",children:[(0,r.jsx)("button",{type:"button",onClick:()=>V(e=>!e),className:"rounded-md px-1.5 py-0.5 hover:bg-surface-2 hover:text-text-primary","aria-expanded":L,children:a.length?"".concat(a.length," triage rule").concat(1===a.length?"":"s"):"No triage rules"}),(0,r.jsxs)("span",{className:"hidden truncate sm:inline",children:["Drag a card to move it \xb7 ",(0,r.jsx)(b.T,{children:"j"})," ",(0,r.jsx)(b.T,{children:"k"})," to step \xb7 ",(0,r.jsx)(b.T,{children:"e"})," to edit"]}),L&&(0,r.jsxs)("div",{className:"rise-in absolute bottom-10 left-4 z-20 w-[min(420px,calc(100vw-2rem))] rounded-lg border border-border-default bg-surface-1 p-4 shadow-lg",children:[(0,r.jsx)("div",{className:"mb-2 text-body font-medium text-text-primary",children:"Triage rules"}),0===a.length?(0,r.jsxs)("p",{className:"text-body text-text-secondary",children:["Standing decisions that keep AI runs from resurfacing the same false positives. Add one with ",(0,r.jsx)("code",{className:"font-mono text-caption",children:"hex rule add"}),"."]}):(0,r.jsx)("ul",{className:"space-y-2",children:a.map(e=>{var t;return(0,r.jsxs)("li",{className:"text-body",children:[(0,r.jsx)("span",{className:"text-text-primary",children:e.text}),(0,r.jsxs)("span",{className:"block text-caption text-text-tertiary",children:[e.id," \xb7 ",null!==(t=E[e.kind])&&void 0!==t?t:e.kind,e.scope.length?" \xb7 ".concat(e.scope.join(", ")):" \xb7 whole audit"]})]},e.id)})})]})]})]})})}function M(e){let{column:t,cards:n,collapsed:a,onToggle:s,selectedId:i,onSelect:o}=e,{isOver:c,setNodeRef:d}=(0,l.Zj)({id:t.id,disabled:"synced"===t.id});return a?(0,r.jsx)("section",{ref:d,"aria-label":t.label,className:(0,p.cn)("flex w-10 shrink-0 flex-col items-center rounded-lg pb-4 pt-1",c?"bg-accent-subtle":"hover:bg-surface-1"),children:(0,r.jsxs)("button",{type:"button",onClick:s,title:"Show ".concat(t.label),className:"flex h-full w-full flex-col items-center gap-2 pt-1 text-text-tertiary hover:text-text-primary",children:[(0,r.jsx)(g.g6,{className:"h-3.5 w-3.5"}),(0,r.jsx)("span",{className:"text-caption tabular-nums",children:n.length}),(0,r.jsx)("span",{className:"text-caption font-medium [writing-mode:vertical-rl]",children:t.label})]})}):(0,r.jsxs)("section",{ref:d,"aria-label":t.label,className:(0,p.cn)("flex min-w-[200px] max-w-[360px] flex-1 flex-col rounded-lg",c&&"bg-accent-subtle"),children:[(0,r.jsxs)("header",{className:"flex shrink-0 items-baseline gap-2 px-1 pb-3 pt-1",title:t.hint,children:[(0,r.jsx)("h2",{className:"text-heading font-medium text-text-primary",children:t.label}),(0,r.jsx)("span",{className:"text-caption tabular-nums text-text-tertiary",children:n.length}),("invalid"===t.id||"duplicate"===t.id)&&(0,r.jsx)("button",{type:"button",onClick:s,className:"ml-auto rounded px-1 text-caption text-text-tertiary hover:text-text-primary",children:"Hide"})]}),(0,r.jsxs)("div",{className:"min-h-0 flex-1 space-y-2 overflow-y-auto pb-6",children:[n.map(e=>(0,r.jsx)(H,{card:e,selected:e.id===i,onSelect:o},e.id)),0===n.length&&(0,r.jsx)("div",{className:"rounded-lg border border-dashed border-border-subtle px-3 py-6 text-center text-caption text-text-tertiary",children:t.hint})]})]})}function H(e){var t,n;let{card:a,selected:s,onSelect:i}=e,o="synced"===a.column,{attributes:c,listeners:d,setNodeRef:u,transform:x,isDragging:h}=(0,l.O1)({id:a.id,disabled:o}),v=x?{transform:"translate3d(".concat(x.x,"px, ").concat(x.y,"px, 0)"),zIndex:40}:{};return(0,r.jsxs)("article",{ref:u,"data-card":a.id,style:v,...o?{}:c,...o?{}:d,onClick:()=>!x&&i(a.id),className:(0,p.cn)("cursor-pointer select-none rounded-lg border bg-surface-1 px-3 py-2.5",s?"border-accent":"border-border-subtle hover:border-border-default",h&&"shadow-lg"),children:[(0,r.jsx)("h3",{className:"line-clamp-3 text-body text-text-primary",children:a.title}),(0,r.jsxs)("div",{className:"mt-2 flex items-center gap-2 text-caption text-text-tertiary",children:[(0,r.jsx)(m.oH,{severity:a.severity,className:"text-text-secondary"}),(0,r.jsxs)("span",{className:"min-w-0 truncate",children:[a.id," \xb7 ",null!==(t=S[a.source])&&void 0!==t?t:a.source]}),(0,r.jsx)("span",{className:"ml-auto",children:(null===(n=a.validation)||void 0===n?void 0:n.auto_moved_to)?(0,r.jsx)(f,{children:"Auto-moved"}):"passing"===a.poc_status?(0,r.jsx)(f,{tone:"ok",children:"PoC ✓"}):"failing"===a.poc_status?(0,r.jsx)(f,{tone:"danger",children:"PoC ✕"}):a.duplicate_of?(0,r.jsxs)(f,{children:["Dup of ",a.duplicate_of]}):null})]})]})}function I(e){var t,n,i,l,c,u;let{card:x,editing:p,setEditing:h,formatCtx:f,onClose:N,onReverted:_}=e,w=(0,o.useRouter)(),C=(0,y.p)(),T="synced"===x.column,R=x.validation,E=async()=>{try{await (0,k.C)("/api/issues/".concat(encodeURIComponent(x.id),"/revert-auto"),{}),_(),C({message:"".concat(x.id," is back in Potential")}),w.refresh()}catch(e){C({message:e.message,tone:"error"})}},D=async()=>{try{await navigator.clipboard.writeText(function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return"## [".concat(e.severity,"] ").concat(e.title,"\n\n").concat(function(e,t){var n;let r=new Set,a=e.code_locations.map(e=>e.file).filter(e=>e&&!r.has(e)&&r.add(e)).map(e=>(function(e,t){if(t.repositoryUrl&&t.commit){let n=t.repositoryUrl.replace(/\/+$/,"");return"[`".concat(e,"`](").concat(n,"/blob/").concat(t.commit,"/").concat(e,")")}return"[`".concat(e,"`]()")})(e,t)).join(", "),s=e.resolution||"Unresolved",i=null!==(n=e.update_from_client)&&void 0!==n?n:"";return["**File(s)**: ".concat(a),"","**Description**: ".concat(function(e){if(!e)return e;let t=!1,n="";return e.split("\n").map(e=>{let r=e.match(/^\s*(```+|~~~+)/);if(r)return t?r[1][0]===n&&(t=!1,n=""):(t=!0,n=r[1][0]),e;if(t)return e;let a=e.match(/^\s*#{1,6}\s+(.*\S)\s*$/);return a?"**".concat(a[1],"**"):/^\s*(-{3,}|\*{3,}|_{3,})\s*$/.test(e)?"":e}).join("\n")}(e.description)),"","**Recommendation(s)**: ".concat(e.recommendation),"","**Status**: ".concat(s),"","**Update from the client**: ".concat(i)].join("\n")}(e,t),"\n\n---\n")}(x,f)),C({message:"Copied as HackMD"})}catch(e){C({message:"Clipboard is not available here",tone:"error"})}};return p?(0,r.jsx)(O,{card:x,onDone:()=>h(!1),onClose:N}):(0,r.jsxs)(d.lj,{eyebrow:"".concat(x.id," \xb7 ").concat(null!==(n=S[x.source])&&void 0!==n?n:x.source," \xb7 ").concat(z[x.column]),title:x.title,subtitle:(0,r.jsx)(m.oH,{severity:x.severity,className:"text-text-secondary"}),onClose:N,actions:(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(v.z,{onClick:()=>h(!0),disabled:T,title:T?"Synced to GitHub: edit it there":void 0,children:["Edit ",(0,r.jsx)(b.T,{children:"e"})]}),(0,r.jsx)(v.z,{variant:"ghost",onClick:D,children:"Copy as HackMD"}),x.github_issue_url&&(0,r.jsxs)("a",{href:x.github_issue_url,target:"_blank",rel:"noreferrer",className:"inline-flex h-8 items-center gap-1.5 rounded-md px-2.5 text-body text-text-secondary hover:bg-surface-2 hover:text-text-primary",children:["#",x.github_issue_number," ",(0,r.jsx)(g.Ak,{className:"h-3.5 w-3.5"})]})]}),children:[(null==R?void 0:R.auto_moved_to)&&(0,r.jsxs)("div",{className:"mb-4 rounded-lg bg-surface-2 px-3 py-2.5",children:[(0,r.jsxs)("p",{className:"text-body text-text-primary",children:["An agent moved this card to ","verified"===R.auto_moved_to?"Verified":"Rejected","verified"===R.auto_moved_to&&"passing"===R.poc_status?" after its PoC passed":"","rejected"===R.auto_moved_to&&R.refuters?" after ".concat(R.refuters," refuters agreed"):"","."]}),(0,r.jsx)(v.z,{size:"sm",variant:"secondary",onClick:E,className:"mt-2",children:"Revert to Potential"})]}),R&&(0,r.jsxs)(d.oz,{label:"Validation",children:[R.verdict&&(0,r.jsx)(d.vz,{label:"Verdict",children:null!==(i=P[R.verdict])&&void 0!==i?i:R.verdict}),R.validated_by&&(0,r.jsx)(d.vz,{label:"By",children:"agent"===R.validated_by?"An agent":"The auditor"}),(R.poc_file||x.poc_file)&&(0,r.jsxs)(d.vz,{label:"PoC",children:[(0,r.jsx)("span",{className:"font-mono text-caption",children:null!==(l=R.poc_file)&&void 0!==l?l:x.poc_file}),(null!==(c=R.poc_status)&&void 0!==c?c:x.poc_status)&&(0,r.jsx)("span",{className:"ml-2 text-caption text-text-tertiary",children:null===(t=null!==(u=R.poc_status)&&void 0!==u?u:x.poc_status)||void 0===t?void 0:t.replace("_"," ")})]}),R.memo&&(0,r.jsx)(d.vz,{label:"Memo",children:(0,r.jsx)("span",{className:"font-mono text-caption",children:R.memo})}),R.reverted_at&&(0,r.jsx)(d.vz,{label:"Reverted",children:(0,r.jsx)(a.P,{iso:R.reverted_at})})]}),x.description&&(0,r.jsx)(d.oz,{label:"Description",children:(0,r.jsx)(j.$8,{content:x.description})}),x.recommendation&&(0,r.jsx)(d.oz,{label:"Recommendation",children:(0,r.jsx)(j.$8,{content:x.recommendation})}),(x.resolution||x.update_from_client)&&(0,r.jsxs)(d.oz,{label:"Client response",children:[x.resolution&&(0,r.jsx)(d.vz,{label:"Status",children:x.resolution}),x.update_from_client&&(0,r.jsx)("p",{className:"mt-1 text-body text-text-secondary",children:x.update_from_client})]}),(x.functions.length>0||x.code_locations.length>0)&&(0,r.jsxs)(d.oz,{label:"Code",children:[x.functions.map(e=>(0,r.jsxs)(s.default,{href:"/review?fn=".concat(encodeURIComponent(e)),className:"-mx-1.5 flex items-center justify-between gap-2 rounded-md px-1.5 py-1 text-body text-text-primary hover:bg-surface-2",children:[(0,r.jsx)("span",{className:"truncate",children:e.split("(")[0]}),(0,r.jsx)("span",{className:"shrink-0 text-caption text-text-tertiary",children:"Review"})]},e)),0===x.functions.length&&Array.from(new Set(x.code_locations.map(e=>e.file))).map(e=>(0,r.jsx)("p",{className:"truncate font-mono text-caption text-text-secondary",children:e},e))]}),(x.duplicate_of||x.match_signals)&&(0,r.jsxs)(d.oz,{label:"Duplicate",children:[x.duplicate_of&&(0,r.jsx)(d.vz,{label:"Of",children:x.duplicate_of}),x.match_signals&&(0,r.jsxs)("p",{className:"mt-1 text-caption text-text-secondary",children:["Contract ",x.match_signals.contract?"matches":"differs"," \xb7 function"," ",x.match_signals.function?"matches":"differs"," \xb7 root cause"," ",x.match_signals.root_cause," \xb7 attack vector ",x.match_signals.attack_vector]}),x.reasoning&&(0,r.jsx)("p",{className:"mt-1 text-body text-text-secondary",children:x.reasoning})]}),T&&(0,r.jsxs)("p",{className:"mt-2 text-caption text-text-tertiary",children:["Synced to GitHub and read-only here. Edit it on GitHub, then run"," ",(0,r.jsx)("code",{className:"font-mono",children:"/sync-issues"}),"."]})]})}function O(e){var t,n;let{card:a,onDone:s,onClose:l}=e,c=(0,o.useRouter)(),u=(0,y.p)(),[x,m]=(0,i.useState)({title:a.title,severity:a.severity,resolution:null!==(t=a.resolution)&&void 0!==t?t:"",description:a.description,recommendation:a.recommendation,update_from_client:null!==(n=a.update_from_client)&&void 0!==n?n:""}),[h,f]=(0,i.useState)(!1),g=(0,i.useRef)(null);(0,i.useEffect)(()=>{var e;return null===(e=g.current)||void 0===e?void 0:e.focus()},[]);let j=async()=>{f(!0);try{await (0,k.C)("/api/issues/".concat(encodeURIComponent(a.id)),{...x,resolution:x.resolution||void 0,update_from_client:x.update_from_client||void 0},"PATCH"),u({message:"".concat(a.id," saved")}),c.refresh(),s()}catch(e){u({message:e.message,tone:"error"})}finally{f(!1)}},N="w-full rounded-md border border-border-subtle bg-surface-0 px-2.5 py-1.5 text-body text-text-primary focus:border-border-emphasis focus:outline-none";return(0,r.jsx)(d.lj,{eyebrow:"Editing ".concat(a.id),title:x.title||a.id,onClose:l,actions:(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(v.z,{variant:"primary",onClick:j,disabled:h,children:h?"Saving…":"Save"}),(0,r.jsx)(v.z,{variant:"ghost",onClick:s,children:"Cancel"})]}),children:(0,r.jsxs)("form",{className:"space-y-4 border-t border-border-subtle pt-4",onSubmit:e=>{e.preventDefault(),j()},onKeyDown:e=>{"Enter"===e.key&&(e.metaKey||e.ctrlKey)&&j(),"Escape"===e.key&&s()},children:[(0,r.jsx)($,{text:"Title",children:(0,r.jsx)("input",{ref:g,className:N,value:x.title,onChange:e=>m({...x,title:e.target.value})})}),(0,r.jsxs)("div",{className:"grid grid-cols-2 gap-3",children:[(0,r.jsx)($,{text:"Severity",children:(0,r.jsx)("select",{className:N,value:x.severity,onChange:e=>m({...x,severity:e.target.value}),children:D.map(e=>(0,r.jsx)("option",{children:e},e))})}),(0,r.jsx)($,{text:"Resolution",children:(0,r.jsxs)("select",{className:N,value:x.resolution,onChange:e=>m({...x,resolution:e.target.value}),children:[(0,r.jsx)("option",{value:"",children:"None"}),U.map(e=>(0,r.jsx)("option",{children:e},e))]})})]}),(0,r.jsx)($,{text:"Description",children:(0,r.jsx)("textarea",{className:(0,p.cn)(N,"leading-6"),rows:10,value:x.description,onChange:e=>m({...x,description:e.target.value})})}),(0,r.jsx)($,{text:"Recommendation",children:(0,r.jsx)("textarea",{className:(0,p.cn)(N,"leading-6"),rows:4,value:x.recommendation,onChange:e=>m({...x,recommendation:e.target.value})})}),(0,r.jsx)($,{text:"Update from the client",children:(0,r.jsx)("textarea",{className:N,rows:3,value:x.update_from_client,placeholder:"Used by /generate-report",onChange:e=>m({...x,update_from_client:e.target.value})})}),(0,r.jsxs)("p",{className:"text-caption text-text-tertiary",children:[(0,r.jsx)(b.T,{children:"⌘"})," ",(0,r.jsx)(b.T,{children:"↵"})," to save \xb7 ",(0,r.jsx)(b.T,{children:"esc"})," to cancel"]})]})})}function $(e){let{text:t,children:n}=e;return(0,r.jsxs)("label",{className:"block",children:[(0,r.jsx)("span",{className:"mb-1 block text-caption text-text-tertiary",children:t}),n]})}},29487:function(e,t,n){"use strict";n.d(t,{$8:function(){return i},T9:function(){return o}});var r=n(37821),a=n(48525),s=n(45592);function i(e){let{content:t,className:n}=e;return(0,r.jsx)("div",{className:"prose max-w-none text-body\n prose-headings:font-semibold prose-headings:text-text-primary\n prose-h1:text-title prose-h2:text-heading prose-h3:text-body\n prose-p:text-text-secondary prose-p:leading-relaxed\n prose-strong:text-text-primary\n prose-code:rounded prose-code:bg-surface-2 prose-code:px-1 prose-code:py-px prose-code:font-normal prose-code:text-[0.88em] prose-code:text-text-primary\n prose-code:before:content-none prose-code:after:content-none\n prose-pre:rounded-md prose-pre:border prose-pre:border-border-subtle prose-pre:bg-surface-1 prose-pre:text-text-primary\n prose-a:text-accent prose-a:no-underline hover:prose-a:underline\n prose-th:text-text-primary prose-td:text-text-secondary\n prose-hr:border-border-subtle\n prose-blockquote:border-border-default prose-blockquote:text-text-secondary\n prose-li:text-text-secondary prose-li:marker:text-text-tertiary\n ".concat(null!=n?n:""),children:(0,r.jsx)(a.UG,{remarkPlugins:[s.Z],children:t})})}function o(e){let{children:t}=e;return(0,r.jsx)(a.UG,{remarkPlugins:[s.Z],components:{p:e=>{let{children:t}=e;return(0,r.jsx)(r.Fragment,{children:t})},code:e=>{let{children:t}=e;return(0,r.jsx)("code",{className:"rounded bg-surface-2 px-1 py-px font-mono text-[0.86em] text-text-primary",children:t})},strong:e=>{let{children:t}=e;return(0,r.jsx)("strong",{className:"font-semibold text-text-primary",children:t})},a:e=>{let{href:t,children:n}=e;return(0,r.jsx)("a",{href:t,target:"_blank",rel:"noreferrer",className:"text-accent hover:underline",children:n})}},children:t.split("\n").map(e=>e.replace(/^(\s*)(\d+)([.)])(\s)/,"$1$2\\$3$4").replace(/^(\s*)([-*+#>])(\s)/,"$1\\$2$3")).join("\n")})}},32011:function(e,t,n){"use strict";n.d(t,{lj:function(){return o},oz:function(){return l},vz:function(){return c}});var r=n(37821),a=n(58078),s=n(17968),i=n(69059);function o(e){let{eyebrow:t,title:n,subtitle:a,onClose:s,actions:o,children:l}=e;return(0,r.jsxs)("div",{className:"flex min-h-0 flex-1 flex-col",children:[(0,r.jsxs)("div",{className:"shrink-0 px-5 pb-4 pt-4",children:[(0,r.jsxs)("div",{className:"flex items-start gap-2",children:[(0,r.jsxs)("div",{className:"min-w-0 flex-1",children:[t&&(0,r.jsx)("div",{className:"mb-1 text-caption text-text-tertiary",children:t}),(0,r.jsx)("h2",{className:"break-words text-heading font-semibold text-text-primary",children:n}),a&&(0,r.jsx)("div",{className:"mt-1 break-words text-caption text-text-secondary",children:a})]}),s&&(0,r.jsx)("button",{type:"button",onClick:s,"aria-label":"Close inspector",className:"-mr-1.5 -mt-0.5 rounded-md p-1.5 text-text-tertiary hover:bg-surface-2 hover:text-text-primary",children:(0,r.jsx)(i.bM,{className:"h-4 w-4"})})]}),o&&(0,r.jsx)("div",{className:"mt-4 flex flex-wrap items-center gap-2",children:o})]}),(0,r.jsx)("div",{className:"min-h-0 flex-1 overflow-y-auto px-5 pb-6",children:l}),(0,r.jsx)(u,{})]})}function l(e){let{label:t,children:n,className:a,trailing:i}=e;return(0,r.jsxs)("section",{className:(0,s.cn)("border-t border-border-subtle pt-3 pb-4",a),children:[(0,r.jsxs)("div",{className:"mb-2 flex items-baseline justify-between gap-2",children:[(0,r.jsx)("h3",{className:"text-caption font-medium text-text-tertiary",children:t}),i]}),n]})}function c(e){let{label:t,children:n}=e;return(0,r.jsxs)("div",{className:"flex items-baseline gap-3 py-0.5 text-body",children:[(0,r.jsx)("span",{className:"w-24 shrink-0 text-text-tertiary",children:t}),(0,r.jsx)("span",{className:"min-w-0 flex-1 break-words text-text-primary",children:n})]})}let d="hex.focus-hint-dismissed";function u(){let[e,t]=(0,a.useState)(!1);return((0,a.useEffect)(()=>{try{t("1"!==localStorage.getItem(d))}catch(e){t(!1)}},[]),e)?(0,r.jsxs)("div",{className:"flex shrink-0 items-center gap-2 border-t border-border-subtle px-5 py-2.5 text-caption text-text-tertiary",children:[(0,r.jsx)("span",{className:"h-1.5 w-1.5 shrink-0 rounded-full bg-accent","aria-hidden":"true"}),(0,r.jsx)("span",{className:"flex-1",children:"Claude can see your selection."}),(0,r.jsx)("button",{type:"button",onClick:()=>{try{localStorage.setItem(d,"1")}catch(e){}t(!1)},className:"rounded px-1.5 py-0.5 text-text-secondary hover:bg-surface-2 hover:text-text-primary",children:"Got it"})]}):null}},53963:function(e,t,n){"use strict";n.d(t,{T:function(){return s}});var r=n(37821),a=n(17968);function s(e){let{children:t,className:n}=e;return(0,r.jsx)("kbd",{className:(0,a.cn)("inline-flex h-[18px] min-w-[18px] items-center justify-center rounded-[5px] border border-border-default bg-surface-2 px-1 font-sans text-[11px] leading-none text-text-tertiary",n),children:t})}},97333:function(e,t,n){"use strict";n.d(t,{P:function(){return a}});var r=n(37821);function a(e){let{iso:t,className:n}=e;return(0,r.jsx)("time",{dateTime:t,className:n,suppressHydrationWarning:!0,children:new Date(t).toLocaleString()})}},59167:function(e,t,n){"use strict";n.d(t,{U:function(){return c}});var r=n(37821),a=n(58078),s=n(17968),i=n(85268),o=n(69059),l=n(53963);function c(e){let{value:t,onChange:n,placeholder:c="Search",className:d,hotkey:u=!0}=e,x=(0,a.useRef)(null);return(0,i.y)({"/":e=>{var t,n;e.preventDefault(),null===(t=x.current)||void 0===t||t.focus(),null===(n=x.current)||void 0===n||n.select()}},u),(0,r.jsxs)("label",{className:(0,s.cn)("relative flex h-8 items-center",d),children:[(0,r.jsx)(o.jV,{className:"pointer-events-none absolute left-2.5 h-3.5 w-3.5 text-text-tertiary"}),(0,r.jsx)("input",{ref:x,type:"search",value:t,placeholder:c,"aria-label":c,onChange:e=>n(e.target.value),onKeyDown:e=>{if("Escape"===e.key){var t;n(""),null===(t=x.current)||void 0===t||t.blur()}},className:"h-8 w-full rounded-md border border-transparent bg-surface-2 pl-8 pr-8 text-body text-text-primary placeholder:text-text-tertiary focus:border-border-emphasis focus:bg-surface-0 focus:outline-none [&::-webkit-search-cancel-button]:hidden"}),u&&!t&&(0,r.jsx)(l.T,{className:"pointer-events-none absolute right-2",children:"/"})]})}},75833:function(e,t,n){"use strict";n.d(t,{s:function(){return s}});var r=n(37821),a=n(17968);function s(e){let{segments:t,value:n,onChange:s,className:i,ariaLabel:o,size:l="md",fill:c=!1}=e;return(0,r.jsx)("div",{role:"tablist","aria-label":o,className:(0,a.cn)("max-w-full items-center gap-0.5 overflow-x-auto rounded-lg bg-surface-2 p-0.5",c?"flex w-full":"inline-flex",i),children:t.map(e=>{let t=e.value===n;return(0,r.jsxs)("button",{role:"tab",type:"button","aria-selected":t,onClick:()=>s(e.value),className:(0,a.cn)("inline-flex h-6 shrink-0 items-center justify-center gap-1 whitespace-nowrap rounded-md font-medium","sm"===l?"px-1.5 text-[11.5px]":"px-2.5 text-caption",c&&"flex-1",t?"bg-surface-0 text-text-primary shadow-sm":"text-text-secondary hover:text-text-primary"),children:[e.label,void 0!==e.count&&(0,r.jsx)("span",{className:"tabular-nums text-text-tertiary",children:e.count})]},e.value)})})}},90026:function(e,t,n){"use strict";n.d(t,{oH:function(){return i},oT:function(){return o}});var r=n(37821),a=n(17968);let s={critical:"var(--critical)",high:"var(--high)",medium:"var(--medium)",low:"var(--low)",info:"var(--info)"};function i(e){var t;let{severity:n,label:i=!0,className:o}=e;return(0,r.jsxs)("span",{className:(0,a.cn)("inline-flex items-center gap-1.5 whitespace-nowrap",o),children:[(0,r.jsx)("span",{"aria-hidden":"true",className:"inline-block h-2 w-2 shrink-0 rounded-full",style:{background:null!==(t=s[n.toLowerCase()])&&void 0!==t?t:"var(--info)"}}),i?(0,r.jsx)("span",{children:n}):(0,r.jsx)("span",{className:"sr-only",children:n})]})}function o(e){let{color:t,className:n,title:s}=e;return(0,r.jsx)("span",{"aria-hidden":!s||void 0,title:s,className:(0,a.cn)("inline-block h-2 w-2 shrink-0 rounded-full",n),style:{background:t}})}},79513:function(e,t,n){"use strict";async function r(e,t){var n;let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"POST",a=await fetch(e,{method:r,headers:{"Content-Type":"application/json"},body:JSON.stringify(t)}),s=await a.json().catch(()=>({}));if(!a.ok)throw Error(null!==(n=s.error)&&void 0!==n?n:"Request failed (".concat(a.status,")"));return s}n.d(t,{C:function(){return r}})},4848:function(e,t,n){"use strict";n.d(t,{k:function(){return s}});let r=null,a="";function s(e){let t=JSON.stringify(e);t!==a&&(r&&clearTimeout(r),r=setTimeout(()=>{a=t,fetch("/api/focus",{method:"POST",headers:{"Content-Type":"application/json"},body:t}).catch(()=>{a=""})},350))}}},function(e){e.O(0,[7498,217,3924,2374,7115,3205,1744],function(){return e(e.s=86965)}),_N_E=e.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[3185],{69766:function(e,t,n){Promise.resolve().then(n.t.bind(n,13812,23)),Promise.resolve().then(n.bind(n,84300)),Promise.resolve().then(n.bind(n,92198)),Promise.resolve().then(n.bind(n,63237)),Promise.resolve().then(n.bind(n,88554)),Promise.resolve().then(n.bind(n,4595)),Promise.resolve().then(n.t.bind(n,41600,23)),Promise.resolve().then(n.t.bind(n,55256,23))},84300:function(e,t,n){"use strict";n.d(t,{AutoRefresh:function(){return i}});var r=n(58078),a=n(90168),s=n(96945);function i(){let e=(0,a.useRouter)(),t=(0,r.useRef)(null);return(0,r.useEffect)(()=>{let n=new EventSource("/api/watch");return n.onopen=()=>(0,s.x)({connected:!0}),n.onerror=()=>(0,s.x)({connected:!1}),n.onmessage=n=>{let r=null;try{var a;r=null!==(a=JSON.parse(n.data).file)&&void 0!==a?a:null}catch(e){}t.current&&clearTimeout(t.current),t.current=setTimeout(()=>{(0,s.x)({lastUpdate:Date.now(),lastFile:r,connected:!0}),e.refresh()},400)},()=>{n.close(),t.current&&clearTimeout(t.current)}},[e]),null}},92198:function(e,t,n){"use strict";n.d(t,{CommandPalette:function(){return d}});var r=n(37821),a=n(58078),s=n(90168),i=n(63237),o=n(69059),l=n(53963),c=n(17968);let u={page:"Page",function:"Function",contract:"Contract",card:"Card",invariant:"Invariant",diagram:"Diagram"};function d(e){let{showChanges:t}=e,[n,d]=(0,a.useState)(!1),[h,x]=(0,a.useState)(""),[m,f]=(0,a.useState)(0),[p,v]=(0,a.useState)([]),b=(0,a.useRef)(null),y=(0,a.useRef)(null),g=(0,s.useRouter)(),j=(0,a.useMemo)(()=>i.w.filter(e=>t||!e.changesOnly).map(e=>({kind:"page",label:e.label,href:e.href})),[t]),w=(0,a.useCallback)(()=>{d(!0),x(""),f(0),fetch("/api/palette",{cache:"no-store"}).then(e=>e.ok?e.json():{entries:[]}).then(e=>{var t;return v(null!==(t=e.entries)&&void 0!==t?t:[])}).catch(()=>v([]))},[]);(0,a.useEffect)(()=>{let e=e=>{(e.metaKey||e.ctrlKey)&&"k"===e.key.toLowerCase()&&(e.preventDefault(),n?d(!1):w())},t=()=>w();return window.addEventListener("keydown",e),window.addEventListener("hex:palette",t),()=>{window.removeEventListener("keydown",e),window.removeEventListener("hex:palette",t)}},[n,w]),(0,a.useEffect)(()=>{n&&requestAnimationFrame(()=>{var e;return null===(e=b.current)||void 0===e?void 0:e.focus()})},[n]);let k=(0,a.useMemo)(()=>{let e=h.trim().toLowerCase().split(/\s+/).filter(Boolean);return e.length?[...j,...p].map(t=>({e:t,s:function(e,t){var n;let r=e.label.toLowerCase(),a="".concat(r," ").concat((null!==(n=e.detail)&&void 0!==n?n:"").toLowerCase());if(!t.every(e=>a.includes(e)))return -1;let s=t[0],i=0;return r.startsWith(s)?i+=30:new RegExp("(^|[^a-z0-9])".concat(s.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"))).test(r)?i+=20:r.includes(s)&&(i+=10),"page"===e.kind&&(i+=8),i-r.length/100}(t,e)})).filter(e=>e.s>=0).sort((e,t)=>t.s-e.s).slice(0,40).map(e=>e.e):[...j,...p.filter(e=>"diagram"===e.kind||"contract"===e.kind)].slice(0,30)},[h,j,p]);(0,a.useEffect)(()=>f(0),[h]),(0,a.useEffect)(()=>{var e,t;null===(t=y.current)||void 0===t||null===(e=t.querySelector('[data-index="'.concat(m,'"]')))||void 0===e||e.scrollIntoView({block:"nearest"})},[m]);let N=e=>{d(!1),g.push(e.href)};return n?(0,r.jsx)("div",{"data-hex-palette":!0,className:"fade-in fixed inset-0 z-[9000] flex items-start justify-center px-4 pt-[14vh]",style:{background:"var(--overlay-bg)"},onClick:()=>d(!1),children:(0,r.jsxs)("div",{role:"dialog","aria-modal":"true","aria-label":"Go to anything",className:"rise-in w-full max-w-xl overflow-hidden rounded-lg border border-border-default bg-surface-1 shadow-lg",onClick:e=>e.stopPropagation(),children:[(0,r.jsxs)("div",{className:"flex items-center gap-3 border-b border-border-subtle px-4",children:[(0,r.jsx)(o.jV,{className:"h-4 w-4 shrink-0 text-text-tertiary"}),(0,r.jsx)("input",{ref:b,type:"text",value:h,onChange:e=>x(e.target.value),placeholder:"Go to a page, function, card, invariant…","aria-label":"Search",className:"h-12 flex-1 bg-transparent text-body text-text-primary placeholder:text-text-tertiary focus:outline-none",onKeyDown:e=>{"ArrowDown"===e.key||"n"===e.key&&e.ctrlKey?(e.preventDefault(),f(e=>Math.min(e+1,k.length-1))):"ArrowUp"===e.key||"p"===e.key&&e.ctrlKey?(e.preventDefault(),f(e=>Math.max(e-1,0))):"Enter"===e.key&&k[m]?(e.preventDefault(),N(k[m])):"Escape"===e.key?(e.preventDefault(),d(!1)):"Tab"===e.key&&e.preventDefault()}}),(0,r.jsx)(l.T,{children:"esc"})]}),(0,r.jsx)("div",{ref:y,className:"max-h-[52vh] overflow-y-auto p-1.5",role:"listbox",children:0===k.length?(0,r.jsx)("div",{className:"px-3 py-6 text-center text-body text-text-tertiary",children:"No matches"}):k.map((e,t)=>(0,r.jsxs)("button",{type:"button",role:"option","aria-selected":t===m,"data-index":t,onMouseMove:()=>f(t),onClick:()=>N(e),className:(0,c.cn)("flex w-full items-center gap-3 rounded-md px-3 py-2 text-left",t===m?"bg-accent-subtle":""),children:[(0,r.jsxs)("span",{className:"min-w-0 flex-1",children:[(0,r.jsx)("span",{className:(0,c.cn)("block truncate text-body",t===m?"text-accent":"text-text-primary"),children:e.label}),e.detail&&(0,r.jsx)("span",{className:"block truncate text-caption text-text-tertiary",children:e.detail})]}),(0,r.jsx)("span",{className:"shrink-0 text-caption text-text-tertiary",children:u[e.kind]})]},"".concat(e.kind,":").concat(e.href,":").concat(t)))})]})}):null}},69059:function(e,t,n){"use strict";n.d(t,{Ak:function(){return b},C9:function(){return p},NO:function(){return v},O3:function(){return f},UH:function(){return s},VU:function(){return u},bM:function(){return h},dc:function(){return y},g6:function(){return x},jV:function(){return d},lE:function(){return m},oG:function(){return g},ui:function(){return o},ve:function(){return c},vv:function(){return i},yK:function(){return l}});var r=n(37821);function a(e){let{children:t,...n}=e;return(0,r.jsx)("svg",{"aria-hidden":"true",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:1.5,strokeLinecap:"round",strokeLinejoin:"round",...n,children:t})}let s=e=>(0,r.jsxs)(a,{...e,children:[(0,r.jsx)("circle",{cx:"12",cy:"12",r:"8.25"}),(0,r.jsx)("path",{d:"M12 7.5V12l3 2"})]}),i=e=>(0,r.jsxs)(a,{...e,children:[(0,r.jsx)("rect",{x:"3.75",y:"3.75",width:"6.5",height:"6.5",rx:"1.5"}),(0,r.jsx)("rect",{x:"13.75",y:"13.75",width:"6.5",height:"6.5",rx:"1.5"}),(0,r.jsx)("path",{d:"M10.25 7h3.5a3 3 0 0 1 3 3v3.75"})]}),o=e=>(0,r.jsxs)(a,{...e,children:[(0,r.jsx)("path",{d:"M6.75 3.75h7.5l4.5 4.5v11.25a.75.75 0 0 1-.75.75H6.75a.75.75 0 0 1-.75-.75V4.5a.75.75 0 0 1 .75-.75Z"}),(0,r.jsx)("path",{d:"M9 13.5l2 2 4-4.5"})]}),l=e=>(0,r.jsx)(a,{...e,children:(0,r.jsx)("path",{d:"M7.5 20.25 3.75 16.5 7.5 12.75M3.75 16.5h12M16.5 3.75l3.75 3.75-3.75 3.75M20.25 7.5h-12"})}),c=e=>(0,r.jsxs)(a,{...e,children:[(0,r.jsx)("rect",{x:"3.75",y:"4.5",width:"4.5",height:"15",rx:"1.25"}),(0,r.jsx)("rect",{x:"9.75",y:"4.5",width:"4.5",height:"10",rx:"1.25"}),(0,r.jsx)("rect",{x:"15.75",y:"4.5",width:"4.5",height:"12.5",rx:"1.25"})]}),u=e=>(0,r.jsxs)(a,{...e,children:[(0,r.jsx)("path",{d:"M6.75 3.75h10.5a.75.75 0 0 1 .75.75v15a.75.75 0 0 1-.75.75H6.75a.75.75 0 0 1-.75-.75v-15a.75.75 0 0 1 .75-.75Z"}),(0,r.jsx)("path",{d:"M9 8.25h6M9 11.25h6M9 14.25h3.75"})]}),d=e=>(0,r.jsxs)(a,{...e,children:[(0,r.jsx)("circle",{cx:"10.5",cy:"10.5",r:"6"}),(0,r.jsx)("path",{d:"m15 15 5.25 5.25"})]}),h=e=>(0,r.jsx)(a,{...e,children:(0,r.jsx)("path",{d:"M6 6l12 12M18 6 6 18"})}),x=e=>(0,r.jsx)(a,{...e,children:(0,r.jsx)("path",{d:"m9 5.25 6.75 6.75L9 18.75"})}),m=e=>(0,r.jsxs)(a,{...e,children:[(0,r.jsx)("rect",{x:"9",y:"3",width:"6",height:"11.25",rx:"3"}),(0,r.jsx)("path",{d:"M5.25 11.25a6.75 6.75 0 0 0 13.5 0M12 18v3"})]}),f=e=>(0,r.jsxs)(a,{...e,children:[(0,r.jsx)("circle",{cx:"12",cy:"12",r:"3.75"}),(0,r.jsx)("path",{d:"M12 3v1.5M12 19.5V21M3 12h1.5M19.5 12H21M5.6 5.6l1.06 1.06M17.34 17.34l1.06 1.06M5.6 18.4l1.06-1.06M17.34 6.66l1.06-1.06"})]}),p=e=>(0,r.jsx)(a,{...e,children:(0,r.jsx)("path",{d:"M20.25 14.6A8.25 8.25 0 0 1 9.4 3.75a8.25 8.25 0 1 0 10.85 10.85Z"})}),v=e=>(0,r.jsx)(a,{...e,children:(0,r.jsx)("path",{d:"m5.25 12.75 4.5 4.5 9-10.5"})}),b=e=>(0,r.jsx)(a,{...e,children:(0,r.jsx)("path",{d:"M13.5 4.5h6v6M19.5 4.5 11.25 12.75M17.25 13.5v5.25a.75.75 0 0 1-.75.75H5.25a.75.75 0 0 1-.75-.75V7.5a.75.75 0 0 1 .75-.75h5.25"})}),y=e=>(0,r.jsx)(a,{...e,children:(0,r.jsx)("path",{d:"M3.75 7.5h16.5M3.75 12h16.5M3.75 16.5h16.5"})}),g=e=>(0,r.jsxs)(a,{...e,children:[(0,r.jsx)("rect",{x:"3.75",y:"4.5",width:"16.5",height:"15",rx:"2.25"}),(0,r.jsx)("path",{d:"M9.75 4.5v15"})]})},53963:function(e,t,n){"use strict";n.d(t,{T:function(){return s}});var r=n(37821),a=n(17968);function s(e){let{children:t,className:n}=e;return(0,r.jsx)("kbd",{className:(0,a.cn)("inline-flex h-[18px] min-w-[18px] items-center justify-center rounded-[5px] border border-border-default bg-surface-2 px-1 font-sans text-[11px] leading-none text-text-tertiary",n),children:t})}},23576:function(e,t,n){"use strict";n.d(t,{O:function(){return i}});var r=n(37821),a=n(13442),s=n(17968);function i(e){let{name:t,edge:n,min:i,max:o,className:l}=e,c=e=>Math.min(o,Math.max(i,e)),u=()=>window.dispatchEvent(new Event("resize"));return(0,r.jsx)("div",{role:"separator","aria-orientation":"vertical","aria-label":"Resize pane",tabIndex:0,title:"Drag to resize \xb7 double-click to reset",onPointerDown:e=>{let r=e.currentTarget.parentElement;if(!r||0!==e.button)return;e.preventDefault();let s=e.currentTarget,i=e.clientX,o=r.getBoundingClientRect().width,l=o;s.setPointerCapture(e.pointerId),document.body.classList.add("is-resizing");let d=e=>{let r=e.clientX-i;l=c("right"===n?o+r:o-r),(0,a.vv)(t,l)},h=()=>{s.removeEventListener("pointermove",d),s.removeEventListener("pointerup",h),s.removeEventListener("pointercancel",h),document.body.classList.remove("is-resizing"),Math.round(l)!==Math.round(o)&&(0,a.j5)(t,l),u()};s.addEventListener("pointermove",d),s.addEventListener("pointerup",h),s.addEventListener("pointercancel",h)},onDoubleClick:()=>{(0,a.vv)(t,null),(0,a.j5)(t,null),u()},onKeyDown:e=>{if("ArrowLeft"!==e.key&&"ArrowRight"!==e.key)return;let r=e.currentTarget.parentElement;if(!r)return;e.preventDefault();let s="ArrowRight"===e.key==("right"===n),i=c(r.getBoundingClientRect().width+(s?16:-16));(0,a.vv)(t,i),(0,a.j5)(t,i),u()},className:(0,s.cn)("group/resize absolute inset-y-0 z-20 w-2 cursor-col-resize touch-none focus-visible:outline-none","right"===n?"-right-1":"-left-1",l),children:(0,r.jsx)("span",{className:"mx-auto block h-full w-px transition-colors duration-200 group-hover/resize:bg-border-emphasis group-focus-visible/resize:bg-border-emphasis"})})}},63237:function(e,t,n){"use strict";n.d(t,{w:function(){return p},Sidebar:function(){return y}});var r=n(37821),a=n(14233),s=n(90168),i=n(4595),o=n(58078),l=n(17968),c=n(96945);function u(e,t){let n=Math.round((t-e)/1e3);return n<10?"just now":n<60?"".concat(n,"s ago"):n<3600?"".concat(Math.round(n/60),"m ago"):"".concat(Math.round(n/3600),"h ago")}function d(){let e=(0,c.g)(),[t,n]=(0,o.useState)(()=>Date.now()),[a,s]=(0,o.useState)(null);return(0,o.useEffect)(()=>{let e=setInterval(()=>n(Date.now()),3e4);return()=>clearInterval(e)},[]),(0,o.useEffect)(()=>{n(Date.now()),fetch("/api/github-status",{cache:"no-store"}).then(e=>e.ok?e.json():null).then(e=>s(e&&"string"==typeof e.last_synced_at?e:null)).catch(()=>s(null))},[e.lastUpdate]),(0,r.jsxs)("div",{className:"space-y-1 px-2.5 text-caption text-text-tertiary","aria-live":"polite",children:[(0,r.jsxs)("div",{className:"flex items-center gap-2",title:e.lastFile?"Last change: ".concat(e.lastFile):void 0,children:[(0,r.jsx)("span",{"aria-hidden":"true",className:"h-1.5 w-1.5 shrink-0 rounded-full",style:{background:e.connected?"var(--success)":"var(--medium)"}}),(0,r.jsx)("span",{children:e.connected?"Live \xb7 updated ".concat(u(e.lastUpdate,t)):"Reconnecting…"})]}),a&&(0,r.jsxs)("div",{className:"flex items-center gap-2",title:"GitHub sync with ".concat(a.repo),children:[(0,r.jsx)("span",{"aria-hidden":"true",className:"h-1.5 w-1.5 shrink-0 rounded-full bg-text-tertiary"}),(0,r.jsxs)("span",{children:["GitHub synced ",u(Date.parse(a.last_synced_at),t)]})]})]})}var h=n(69059),x=n(53963),m=n(23576),f=n(13442);let p=[{href:"/",label:"Today",icon:h.UH},{href:"/model",label:"Model",icon:h.vv},{href:"/review",label:"Review",icon:h.ui},{href:"/changes",label:"Changes",icon:h.yK,changesOnly:!0},{href:"/issues",label:"Board",icon:h.ve},{href:"/report",label:"Report",icon:h.VU}],v=f.oA;function b(){let{resolvedTheme:e,setTheme:t}=(0,i.F)(),[n,a]=(0,o.useState)(!1);(0,o.useEffect)(()=>a(!0),[]);let s=!n||"light"!==e;return(0,r.jsx)("button",{type:"button",onClick:()=>t(s?"light":"dark"),"aria-label":"Switch to ".concat(s?"light":"dark"," appearance"),title:"Switch to ".concat(s?"light":"dark"," appearance"),className:"rounded-md p-1.5 text-text-tertiary hover:bg-surface-2 hover:text-text-primary",children:s?(0,r.jsx)(h.C9,{className:"h-4 w-4"}):(0,r.jsx)(h.O3,{className:"h-4 w-4"})})}function y(e){let{projectName:t,version:n,showChanges:i}=e,c=(0,s.usePathname)(),[u,y]=(0,o.useState)(!1),[g,j]=(0,o.useState)(!1);(0,o.useEffect)(()=>y(!1),[c]),(0,o.useEffect)(()=>{try{j("collapsed"===localStorage.getItem(f.pA))}catch(e){}},[]),(0,o.useEffect)(()=>{document.documentElement.style.setProperty("--sidebar-w",g?"60px":v)},[g]);let w=()=>j(e=>{try{localStorage.setItem(f.pA,e?"expanded":"collapsed")}catch(e){}return!e});(0,o.useEffect)(()=>{let e=e=>{(e.metaKey||e.ctrlKey)&&"\\"===e.key&&(e.preventDefault(),w())};return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[]);let k=g&&!u;return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("button",{type:"button","aria-label":"Toggle navigation",onClick:()=>y(e=>!e),className:"fixed left-3 top-3 z-[60] flex h-9 w-9 items-center justify-center rounded-md border border-border-subtle bg-surface-1 text-text-secondary md:hidden",children:(0,r.jsx)(h.dc,{className:"h-5 w-5"})}),u&&(0,r.jsx)("div",{className:"fade-in fixed inset-0 z-40 md:hidden",style:{background:"var(--overlay-bg)"},onClick:()=>y(!1)}),(0,r.jsxs)("nav",{"aria-label":"Main navigation",className:(0,l.cn)("fixed left-0 top-0 z-50 flex h-screen w-[220px] flex-col border-r border-border-subtle bg-surface-1 transition-[transform,width] duration-200 ease-out md:w-[var(--sidebar-w,220px)] md:translate-x-0",u?"translate-x-0":"-translate-x-full"),children:[(0,r.jsxs)("div",{className:(0,l.cn)("flex items-start gap-2 pb-5 pt-5",k?"justify-center px-2":"px-5"),children:[!k&&(0,r.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,r.jsxs)("div",{className:"flex items-baseline gap-2",children:[(0,r.jsx)("span",{className:"text-heading font-semibold tracking-tight text-text-primary",children:"Hex"}),(0,r.jsx)("span",{className:"text-caption text-text-tertiary",children:n})]}),t&&(0,r.jsx)("div",{className:"mt-0.5 truncate text-caption text-text-secondary",children:t})]}),(0,r.jsx)("button",{type:"button",onClick:w,"aria-label":g?"Show sidebar":"Hide sidebar",title:"".concat(g?"Show":"Hide"," sidebar (⌘\\)"),className:"-mr-1 hidden rounded-md p-1.5 text-text-tertiary hover:bg-surface-2 hover:text-text-primary md:block",children:(0,r.jsx)(h.oG,{className:"h-4 w-4"})})]}),(0,r.jsx)("div",{className:(0,l.cn)("flex-1 space-y-0.5 overflow-y-auto",k?"px-2":"px-3"),children:p.filter(e=>i||!e.changesOnly).map(e=>{var t;let n="/"===(t=e.href)?"/"===c:c===t||c.startsWith(t+"/");return(0,r.jsxs)(a.default,{href:e.href,title:k?e.label:void 0,"aria-current":n?"page":void 0,className:(0,l.cn)("flex h-8 items-center gap-2.5 rounded-md text-body",k?"justify-center px-0":"px-2.5",n?"bg-accent-subtle font-medium text-accent":"text-text-secondary hover:bg-surface-2 hover:text-text-primary"),children:[(0,r.jsx)(e.icon,{className:"h-4 w-4 shrink-0"}),!k&&(0,r.jsx)("span",{children:e.label}),k&&(0,r.jsx)("span",{className:"sr-only",children:e.label})]},e.href)})}),k?(0,r.jsxs)("div",{className:"flex flex-col items-center gap-2 border-t border-border-subtle py-3",children:[(0,r.jsx)("button",{type:"button",onClick:()=>window.dispatchEvent(new CustomEvent("hex:palette")),title:"Go to anything (⌘K)",className:"rounded-md p-1.5 text-text-tertiary hover:bg-surface-2 hover:text-text-primary",children:(0,r.jsx)(x.T,{children:"⌘K"})}),(0,r.jsx)(b,{})]}):(0,r.jsxs)("div",{className:"space-y-3 border-t border-border-subtle px-3 py-3",children:[(0,r.jsx)(d,{}),(0,r.jsxs)("div",{className:"flex items-center justify-between px-1",children:[(0,r.jsxs)("button",{type:"button",onClick:()=>window.dispatchEvent(new CustomEvent("hex:palette")),className:"flex items-center gap-2 rounded-md px-1.5 py-1 text-caption text-text-tertiary hover:bg-surface-2 hover:text-text-primary",children:[(0,r.jsx)(x.T,{children:"⌘K"}),(0,r.jsx)("span",{children:"Go to anything"})]}),(0,r.jsx)(b,{})]})]}),!k&&(0,r.jsx)(m.O,{name:"sidebar",edge:"right",min:180,max:360,className:"hidden md:block"})]})]})}},88554:function(e,t,n){"use strict";n.d(t,{ToastProvider:function(){return l},p:function(){return o}});var r=n(37821),a=n(58078),s=n(69059);let i=(0,a.createContext)(()=>{});function o(){return(0,a.useContext)(i)}function l(e){let{children:t}=e,[n,o]=(0,a.useState)(null),l=(0,a.useRef)(null),c=(0,a.useRef)(0),u=(0,a.useCallback)(()=>{l.current&&clearTimeout(l.current),o(null)},[]),d=(0,a.useCallback)(e=>{l.current&&clearTimeout(l.current),c.current+=1,o({...e,id:c.current}),l.current=setTimeout(()=>o(null),e.action?6e3:3500)},[]);return(0,a.useEffect)(()=>()=>{l.current&&clearTimeout(l.current)},[]),(0,r.jsxs)(i.Provider,{value:d,children:[t,(0,r.jsx)("div",{"aria-live":"polite",className:"pointer-events-none fixed inset-x-0 bottom-6 z-[9500] flex justify-center px-4",children:n&&(0,r.jsxs)("div",{role:"status",className:"rise-in pointer-events-auto flex items-center gap-3 rounded-lg border border-border-default bg-surface-1 py-2 pl-4 pr-2 text-body shadow-lg",children:[(0,r.jsx)("span",{className:"error"===n.tone?"text-[var(--critical)]":"text-text-primary",children:n.message}),n.action&&(0,r.jsx)("button",{type:"button",onClick:()=>{var e;null===(e=n.action)||void 0===e||e.onClick(),u()},className:"rounded-md px-2 py-0.5 text-body font-medium text-accent hover:bg-accent-subtle",children:n.action.label}),(0,r.jsx)("button",{type:"button","aria-label":"Dismiss",onClick:u,className:"rounded-md p-1 text-text-tertiary hover:bg-surface-2 hover:text-text-primary",children:(0,r.jsx)(s.bM,{className:"h-3.5 w-3.5"})})]},n.id)})]})}},17968:function(e,t,n){"use strict";function r(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];return t.filter(Boolean).join(" ")}n.d(t,{cn:function(){return r}})},96945:function(e,t,n){"use strict";n.d(t,{g:function(){return o},x:function(){return i}});var r=n(58078);let a={connected:!1,lastUpdate:Date.now(),lastFile:null},s=new Set;function i(e){for(let t of(a={...a,...e},s))t()}function o(){return(0,r.useSyncExternalStore)(e=>(s.add(e),()=>s.delete(e)),()=>a,()=>a)}},13442:function(e,t,n){"use strict";n.d(t,{j5:function(){return i},oA:function(){return r},pA:function(){return a},vv:function(){return s}});let r="var(--w-sidebar, 220px)",a="hex.sidebar";function s(e,t){let n=document.documentElement.style;null===t?n.removeProperty("--w-".concat(e)):n.setProperty("--w-".concat(e),"".concat(Math.round(t),"px"))}function i(e,t){try{null===t?localStorage.removeItem("hex.w.".concat(e)):localStorage.setItem("hex.w.".concat(e),String(Math.round(t)))}catch(e){}}},14233:function(e,t,n){"use strict";n.d(t,{default:function(){return a.a}});var r=n(67498),a=n.n(r)},90168:function(e,t,n){"use strict";var r=n(87462);n.o(r,"usePathname")&&n.d(t,{usePathname:function(){return r.usePathname}}),n.o(r,"useRouter")&&n.d(t,{useRouter:function(){return r.useRouter}}),n.o(r,"useSearchParams")&&n.d(t,{useSearchParams:function(){return r.useSearchParams}})},13812:function(){},55256:function(e){e.exports={style:{fontFamily:"'__JetBrains_Mono_4dc837', '__JetBrains_Mono_Fallback_4dc837'",fontStyle:"normal"},className:"__className_4dc837",variable:"__variable_4dc837"}},41600:function(e){e.exports={style:{fontFamily:"'__Manrope_855f89', '__Manrope_Fallback_855f89'",fontStyle:"normal"},className:"__className_855f89",variable:"__variable_855f89"}},4595:function(e,t,n){"use strict";n.d(t,{F:function(){return u},ThemeProvider:function(){return d}});var r=n(58078),a=(e,t,n,r,a,s,i,o)=>{let l=document.documentElement,c=["light","dark"];function u(t){(Array.isArray(e)?e:[e]).forEach(e=>{let n="class"===e,r=n&&s?a.map(e=>s[e]||e):a;n?(l.classList.remove(...r),l.classList.add(s&&s[t]?s[t]:t)):l.setAttribute(e,t)}),o&&c.includes(t)&&(l.style.colorScheme=t)}if(r)u(r);else try{let e=localStorage.getItem(t)||n,r=i&&"system"===e?window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":e;u(r)}catch(e){}},s=["light","dark"],i="(prefers-color-scheme: dark)",o="undefined"==typeof window,l=r.createContext(void 0),c={setTheme:e=>{},themes:[]},u=()=>{var e;return null!=(e=r.useContext(l))?e:c},d=e=>r.useContext(l)?r.createElement(r.Fragment,null,e.children):r.createElement(x,{...e}),h=["light","dark"],x=e=>{let{forcedTheme:t,disableTransitionOnChange:n=!1,enableSystem:a=!0,enableColorScheme:o=!0,storageKey:c="theme",themes:u=h,defaultTheme:d=a?"system":"light",attribute:x="data-theme",value:b,children:y,nonce:g,scriptProps:j}=e,[w,k]=r.useState(()=>f(c,d)),[N,M]=r.useState(()=>"system"===w?v():w),E=b?Object.values(b):u,C=r.useCallback(e=>{let t=e;if(!t)return;"system"===e&&a&&(t=v());let r=b?b[t]:t,i=n?p(g):null,l=document.documentElement,c=e=>{"class"===e?(l.classList.remove(...E),r&&l.classList.add(r)):e.startsWith("data-")&&(r?l.setAttribute(e,r):l.removeAttribute(e))};if(Array.isArray(x)?x.forEach(c):c(x),o){let e=s.includes(d)?d:null,n=s.includes(t)?t:e;l.style.colorScheme=n}null==i||i()},[g]),S=r.useCallback(e=>{let t="function"==typeof e?e(w):e;k(t);try{localStorage.setItem(c,t)}catch(e){}},[w]),_=r.useCallback(e=>{M(v(e)),"system"===w&&a&&!t&&C("system")},[w,t]);r.useEffect(()=>{let e=window.matchMedia(i);return e.addListener(_),_(e),()=>e.removeListener(_)},[_]),r.useEffect(()=>{let e=e=>{e.key===c&&(e.newValue?k(e.newValue):S(d))};return window.addEventListener("storage",e),()=>window.removeEventListener("storage",e)},[S]),r.useEffect(()=>{C(null!=t?t:w)},[t,w]);let T=r.useMemo(()=>({theme:w,setTheme:S,forcedTheme:t,resolvedTheme:"system"===w?N:w,themes:a?[...u,"system"]:u,systemTheme:a?N:void 0}),[w,S,t,N,a,u]);return r.createElement(l.Provider,{value:T},r.createElement(m,{forcedTheme:t,storageKey:c,attribute:x,enableSystem:a,enableColorScheme:o,defaultTheme:d,value:b,themes:u,nonce:g,scriptProps:j}),y)},m=r.memo(e=>{let{forcedTheme:t,storageKey:n,attribute:s,enableSystem:i,enableColorScheme:o,defaultTheme:l,value:c,themes:u,nonce:d,scriptProps:h}=e,x=JSON.stringify([s,n,l,t,u,c,i,o]).slice(1,-1);return r.createElement("script",{...h,suppressHydrationWarning:!0,nonce:"undefined"==typeof window?d:"",dangerouslySetInnerHTML:{__html:"(".concat(a.toString(),")(").concat(x,")")}})}),f=(e,t)=>{let n;if(!o){try{n=localStorage.getItem(e)||void 0}catch(e){}return n||t}},p=e=>{let t=document.createElement("style");return e&&t.setAttribute("nonce",e),t.appendChild(document.createTextNode("*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}")),document.head.appendChild(t),()=>{window.getComputedStyle(document.body),setTimeout(()=>{document.head.removeChild(t)},1)}},v=e=>(e||(e=window.matchMedia(i)),e.matches?"dark":"light")}},function(e){e.O(0,[5116,7498,7115,3205,1744],function(){return e(e.s=69766)}),_N_E=e.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[6303],{71232:function(e,t,n){Promise.resolve().then(n.bind(n,85581)),Promise.resolve().then(n.bind(n,81751))},85581:function(e,t,n){"use strict";n.d(t,{ModelClient:function(){return A}});var s=n(37821),i=n(14233),l=n(22475),a=n.n(l),r=n(58078),o=n(90168),c=n(4595),d=n(81751),u=n(32011),m=n(52171),x=n(90026),p=n(61434),h=n(55592),f=n(55631),v=n(88554),y=n(69059),b=n(93775),j=n(29487),g=n(85268),k=n(4848),w=n(83206),N=n(79513),_=n(17968);let C=a()(()=>Promise.all([n.e(4867),n.e(3163),n.e(8544),n.e(7628),n.e(985),n.e(2445)]).then(n.bind(n,12445)),{loadableGenerated:{webpack:()=>[12445]},ssr:!1,loading:()=>(0,s.jsx)("div",{className:"flex h-full items-center justify-center text-caption text-text-tertiary",children:"Loading canvas…"})}),S={actors:"Actors",assets:"Assets",privileges:"Privileges",trust:"Trust",dependencies:"Dependencies",accounting:"Accounting",invariants:"Invariants",spec:"Spec"},T={actors:"Who interacts with the protocol, and how far each is trusted.",assets:"What holds value, where it sits, and which functions move it.",privileges:"What each privileged role can do, at worst.",trust:"What has to be true outside the code for the protocol to be safe.",dependencies:"External systems the protocol relies on, and how they fail.",accounting:"The equations that must balance, and who moves each term.",invariants:"Properties that must always hold. Accept the ones you agree with; they feed /ai-audit and the fuzzer.",spec:"How the code measures up against its documentation and standards."},E={verified:{label:"Verified",color:"var(--success)"},contested:{label:"Contested",color:"var(--high)"},unverified:{label:"Unverified",color:"var(--neutral)"}},z={CONFORMS:{label:"Conforms",color:"var(--success)"},DEVIATES:{label:"Deviates",color:"var(--critical)"},PARTIAL:{label:"Partial",color:"var(--medium)"},UNVERIFIABLE:{label:"Unverifiable",color:"var(--neutral)"},UNDOCUMENTED:{label:"Undocumented",color:"var(--neutral)"}},I={passing:{label:"passing",color:"var(--success)"},failing:{label:"failing",color:"var(--critical)"},broken:{label:"broken",color:"var(--high)"},not_written:{label:"not written",color:"var(--neutral)"}},P={proposed:"Proposed",accepted:"Accepted",rejected:"Rejected"},R=e=>e.split("(")[0];function O(e){var t;let{status:n}=e,i=null!==(t=E[null!=n?n:"unverified"])&&void 0!==t?t:E.unverified;return(0,s.jsxs)("span",{className:"inline-flex items-center gap-1.5 text-caption text-text-tertiary",children:[(0,s.jsx)(x.oT,{color:i.color}),i.label]})}function A(e){var t;let n,{model:i,invariants:l,spec:a,diagrams:u,fns:p,contracts:h,states:b,cards:j,cardsByFn:_}=e,C=(0,o.useSearchParams)(),T=(0,o.useRouter)(),E=(0,v.p)(),{resolvedTheme:z}=(0,c.F)(),I=(0,r.useMemo)(()=>{let e=[];return i&&(e.push({id:"actors",count:i.actors.length}),e.push({id:"assets",count:i.assets.length}),e.push({id:"privileges",count:i.privileges.length}),e.push({id:"trust",count:i.trust_assumptions.length}),e.push({id:"dependencies",count:i.external_dependencies.length}),e.push({id:"accounting",count:i.accounting.length})),e.push({id:"invariants",count:l.length}),(null==a?void 0:a.length)&&e.push({id:"spec",count:a.length}),e},[i,l,a]),R=(0,r.useCallback)(()=>{var e,t;let n=C.get("d");if(n&&u.some(e=>e.name===n))return{kind:"diagram",name:n};let s=C.get("s");return s&&I.some(e=>e.id===s)?{kind:"section",id:s}:u[0]?{kind:"diagram",name:u[0].name}:{kind:"section",id:null!==(t=null===(e=I[0])||void 0===e?void 0:e.id)&&void 0!==t?t:"invariants"}},[C,u,I]),[O,A]=(0,r.useState)(R),[L,D]=(0,r.useState)(()=>C.get("id")),[W,q]=(0,r.useState)(null);(0,r.useEffect)(()=>{(C.get("d")||C.get("s"))&&(A(R()),D(C.get("id")))},[C]);let V="diagram"===O.kind?"d:".concat(O.name):"s:".concat(O.id);(0,r.useEffect)(()=>{"diagram"===O.kind?(0,w.q)({d:O.name,s:null,id:null}):(0,w.q)({s:O.id,d:null,id:L})},[V,L]);let B=e=>{A(e),D(null),q(null)},G=(0,r.useMemo)(()=>[...u.map(e=>({kind:"diagram",name:e.name})),...I.map(e=>({kind:"section",id:e.id}))],[u,I]);(0,g.y)({j:()=>{let e=G.findIndex(e=>("diagram"===e.kind?"d:".concat(e.name):"s:".concat(e.id))===V),t=G[Math.min(G.length-1,e+1)];t&&B(t)},k:()=>{let e=G.findIndex(e=>("diagram"===e.kind?"d:".concat(e.name):"s:".concat(e.id))===V),t=G[Math.max(0,e-1)];t&&B(t)},Escape:()=>{D(null),q(null)}});let[J,Q]=(0,r.useState)({});(0,r.useEffect)(()=>Q({}),[l]);let X=(0,r.useMemo)(()=>l.map(e=>J[e.id]?{...e,status:J[e.id]}:e),[l,J]),Y=(0,r.useCallback)(async(e,t)=>{let n=e.status;Q(n=>({...n,[e.id]:t}));try{await (0,N.C)("/api/invariants/".concat(encodeURIComponent(e.id)),{status:t}),E({message:"".concat(e.id," ").concat(P[t].toLowerCase()),action:{label:"Undo",onClick:()=>{Q(t=>({...t,[e.id]:n})),(0,N.C)("/api/invariants/".concat(encodeURIComponent(e.id)),{status:n}).then(()=>T.refresh())}}}),T.refresh()}catch(t){Q(t=>({...t,[e.id]:n})),E({message:t.message,tone:"error"})}},[T,E]);(0,r.useEffect)(()=>{var e,t,n;if("diagram"!==O.kind||!W)return;let s=null!==(t=null!==(e=W.ref)&&void 0!==e?e:W.node)&&void 0!==t?t:"";if(!s)return;let i=F(s,p);(0,k.k)({ref:null!==(n=null==i?void 0:i.id)&&void 0!==n?n:s,kind:"diagram_node",label:W.label||s,...i?{file:i.file,line_start:i.line_start,line_end:i.line_end}:{}})},[W]),(0,r.useEffect)(()=>{if("section"===O.kind&&L){if("invariants"===O.id){let e=l.find(e=>e.id===L);e&&(0,k.k)({ref:e.id,kind:"invariant",label:e.statement})}else if("privileges"===O.id&&i){let e=i.privileges[Number(L)],t=e?p[e.function]:void 0;e&&(0,k.k)({ref:e.function,kind:"function",label:e.function,...t?{file:t.file,line_start:t.line_start,line_end:t.line_end}:{}})}}},[V,L]);let Z="diagram"===O.kind&&null!==(t=u.find(e=>e.name===O.name))&&void 0!==t?t:null,$={model:i,invariants:X,fns:p,contracts:h,states:b,cards:j,cardsByFn:_,spec:a};"diagram"===O.kind&&W?n=(0,s.jsx)(H,{sel:W,ctx:$,onClose:()=>q(null),onOpenSection:(e,t)=>{A({kind:"section",id:e}),D(t)}}):"section"===O.kind&&null!==L&&(n=(0,s.jsx)(K,{section:O.id,item:L,ctx:$,onClose:()=>D(null),onInvariant:Y}));let ee=(0,s.jsxs)("div",{className:"min-h-0 flex-1 overflow-y-auto px-2 pb-6 pt-1",children:[u.length>0&&(0,s.jsx)(m.i,{children:"Diagrams"}),u.map(e=>(0,s.jsx)(m.w,{dense:!0,selected:"diagram"===O.kind&&O.name===e.name,onClick:()=>B({kind:"diagram",name:e.name}),title:e.title,trailing:e.stale?(0,s.jsx)(x.oT,{color:"var(--medium)",title:"The model changed since you edited this diagram"}):e.in_report?(0,s.jsx)("span",{title:"In the report",children:(0,s.jsx)(y.NO,{className:"h-3.5 w-3.5"})}):e.edited?"Edited":void 0},e.name)),(0,s.jsx)(m.i,{children:"Protocol"}),I.map(e=>(0,s.jsx)(m.w,{dense:!0,selected:"section"===O.kind&&O.id===e.id,onClick:()=>B({kind:"section",id:e.id}),title:S[e.id],titleClassName:0===e.count?"text-text-tertiary":void 0,trailing:(0,s.jsx)("span",{className:"tabular-nums",children:e.count})},e.id))]});return(0,s.jsx)(d.z,{toolbar:(0,s.jsx)(d.Toolbar,{title:"Model",meta:(null==i?void 0:i.summary)?(0,s.jsx)("span",{className:"hidden lg:inline",children:i.summary}):void 0}),list:ee,listWidth:248,inspector:n,inspectorFloating:"diagram"===O.kind,children:"diagram"===O.kind?Z?(0,s.jsx)(M,{entry:Z,theme:"light"===z?"light":"dark",onSelect:q},Z.name):(0,s.jsx)(f.u,{sentence:"This diagram is gone. Rebuild diagrams to bring it back.",command:"hex diagram build"}):(0,s.jsx)(U,{id:O.id,ctx:$,selected:L,onSelect:D,onInvariant:Y})})}function M(e){let{entry:t,theme:n,onSelect:i}=e,l=(0,o.useRouter)(),a=(0,v.p)(),c=(0,r.useRef)(null),[d,u]=(0,r.useState)(null),[m,p]=(0,r.useState)(t.in_report),[f,b]=(0,r.useState)(!1),[j,g]=(0,r.useState)(!1);(0,r.useEffect)(()=>p(t.in_report),[t.in_report]),(0,r.useEffect)(()=>{if("saved"!==d)return;let e=setTimeout(()=>u(null),1600);return()=>clearTimeout(e)},[d]);let k=(0,r.useCallback)(e=>{c.current=e},[]),w=(0,r.useCallback)(e=>{u(e),"saved"===e&&l.refresh()},[l]),S=async()=>{if(c.current){b(!0);try{let e=await c.current.exportPng();if(!(await fetch("/api/diagrams/".concat(encodeURIComponent(t.name),"/export"),{method:"POST",headers:{"Content-Type":"image/png"},body:e})).ok)throw Error("Could not write the figure");p(!0),a({message:"Added to the report as figures/".concat(t.name,".png")}),l.refresh()}catch(e){a({message:e.message,tone:"error"})}finally{b(!1)}}},T=async()=>{b(!0);try{await fetch("/api/diagrams/".concat(encodeURIComponent(t.name),"/export"),{method:"DELETE"}),p(!1),a({message:"Removed from the report",action:{label:"Undo",onClick:()=>void S()}}),l.refresh()}finally{b(!1)}},E=async e=>{try{await (0,N.C)("/api/diagrams/".concat(encodeURIComponent(t.name),"/resolve"),{action:e}),a({message:"use-new"===e?"Switched to the new layout":"Kept your edits"}),l.refresh()}catch(e){a({message:e.message,tone:"error"})}};return(0,s.jsxs)("div",{className:"flex min-h-0 flex-1 flex-col",children:[(0,s.jsxs)("div",{className:"flex shrink-0 flex-wrap items-start gap-x-6 gap-y-3 border-b border-border-subtle px-6 py-4",children:[(0,s.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,s.jsxs)("div",{className:"flex items-baseline gap-3",children:[(0,s.jsx)("h2",{className:"text-heading font-semibold text-text-primary",children:t.title}),(0,s.jsx)("span",{className:"text-caption text-text-tertiary",children:"saving"===d?"Saving…":"saved"===d?"Saved":"error"===d?"Couldn't save":t.edited?"Edited":""})]}),(0,s.jsx)("p",{className:"mt-1 max-w-3xl text-body text-text-secondary",children:t.takeaway})]}),(0,s.jsxs)("div",{className:"flex items-center gap-2",children:[(0,s.jsx)(h.z,{variant:"ghost",onClick:()=>g(e=>!e),"aria-pressed":j,title:"Show colors, strokes and fonts for the selected shapes",className:j?"bg-surface-2 text-text-primary":void 0,children:"Style"}),m?(0,s.jsxs)(h.z,{onClick:T,disabled:f,"aria-pressed":!0,title:"Take this diagram out of the report",children:[(0,s.jsx)(y.NO,{className:"h-4 w-4"})," In report"]}):(0,s.jsx)(h.z,{variant:"primary",onClick:S,disabled:f,children:f?"Exporting…":"Use in report"})]})]}),t.stale&&(0,s.jsxs)("div",{className:"fade-in flex shrink-0 flex-wrap items-center gap-3 border-b border-border-subtle bg-surface-1 px-6 py-2.5",children:[(0,s.jsx)(x.oT,{color:"var(--medium)"}),(0,s.jsx)("span",{className:"flex-1 text-body text-text-secondary",children:"The model changed since you edited this diagram."}),(0,s.jsx)(h.z,{size:"sm",variant:"secondary",onClick:()=>E("use-new"),children:"Use new layout"}),(0,s.jsx)(h.z,{size:"sm",variant:"ghost",onClick:()=>E("keep-mine"),children:"Keep mine"})]}),(0,s.jsx)("div",{className:(0,_.cn)("hex-canvas relative min-h-0 flex-1",j&&"hex-canvas--style"),children:(0,s.jsx)(C,{name:t.name,mtime:t.mtime,theme:n,onSelect:i,onSaved:w,onReady:k})})]})}function U(e){var t,n,i,l,a,r,o;let{id:c,ctx:u,selected:m,onSelect:p,onInvariant:f}=e,v=u.model,y=[],b="";switch(c){case"actors":y=(null!==(t=null==v?void 0:v.actors)&&void 0!==t?t:[]).map(e=>({key:e.id,title:e.name,subtitle:"".concat(e.kind.replace("_"," ")," \xb7 ").concat(e.trust.replace("_"," ")).concat(e.powers.length?" \xb7 ".concat(e.powers.map(R).map(e=>e.split(".").pop()).join(", ")):""),trailing:(0,s.jsx)(O,{status:e.status})})),b="No actors in the model yet.";break;case"assets":y=(null!==(n=null==v?void 0:v.assets)&&void 0!==n?n:[]).map(e=>({key:e.id,title:e.name,subtitle:"".concat(e.kind).concat(e.held_by.length?" \xb7 held by ".concat(e.held_by.join(", ")):"").concat(e.moved_by.length?" \xb7 moved by ".concat(e.moved_by.map(e=>R(e).split(".").pop()).join(", ")):""),trailing:(0,s.jsx)(O,{status:e.status})})),b="No assets in the model yet.";break;case"privileges":y=(null!==(i=null==v?void 0:v.privileges)&&void 0!==i?i:[]).map((e,t)=>({key:String(t),title:(0,s.jsxs)("span",{children:[L(v,e.actor)," can"," ",(0,s.jsx)("span",{className:"font-medium",children:R(e.function).split(".").pop()}),": ",e.effect]}),subtitle:"At worst: ".concat(e.worst_case).concat(e.timelock?" \xb7 timelock ".concat(e.timelock):""),trailing:(0,s.jsx)(O,{status:e.status})})),b="No privileged functions in the model.";break;case"trust":y=(null!==(l=null==v?void 0:v.trust_assumptions)&&void 0!==l?l:[]).map(e=>({key:e.claim_id,title:e.text,trailing:(0,s.jsx)(O,{status:e.status})})),b="No trust assumptions recorded.";break;case"dependencies":y=(null!==(a=null==v?void 0:v.external_dependencies)&&void 0!==a?a:[]).map(e=>({key:e.id,title:e.name,subtitle:"".concat(e.kind).concat(e.failure_modes.length?" \xb7 ".concat(e.failure_modes.join("; ")):""),trailing:(0,s.jsx)(O,{status:e.status})})),b="No external dependencies recorded.";break;case"accounting":y=(null!==(r=null==v?void 0:v.accounting)&&void 0!==r?r:[]).map(e=>({key:e.id,title:e.name,subtitle:e.equation,trailing:(0,s.jsx)(O,{status:e.status})})),b="No accounting equations recorded.";break;case"invariants":y=u.invariants.map(e=>{var t;let n=e.test?I[e.test.status]:null;return{key:e.id,title:e.statement,subtitle:(0,s.jsxs)("span",{className:"inline-flex flex-wrap items-center gap-x-2",children:[(0,s.jsxs)("span",{children:[e.id," \xb7 ",e.kind," \xb7 ",P[e.status]]}),(null===(t=e.verification)||void 0===t?void 0:t.status)==="contested"&&(0,s.jsxs)("span",{className:"inline-flex items-center gap-1.5",children:["\xb7 ",(0,s.jsx)(x.oT,{color:E.contested.color})," Contested"]}),e.test&&n&&(0,s.jsxs)("span",{className:"inline-flex items-center gap-1.5",children:["\xb7 ",(0,s.jsx)(x.oT,{color:n.color})," ",e.test.tool," ",n.label]}),e.issue_id&&(0,s.jsxs)("span",{children:["\xb7 ",e.issue_id]})]}),actions:"proposed"===e.status?(0,s.jsxs)("span",{className:"flex shrink-0 gap-1",children:[(0,s.jsx)(h.z,{size:"sm",variant:"secondary",onClick:t=>{t.stopPropagation(),f(e,"accepted")},children:"Accept"}),(0,s.jsx)(h.z,{size:"sm",variant:"ghost",onClick:t=>{t.stopPropagation(),f(e,"rejected")},children:"Reject"})]}):void 0}}),b="No invariants yet. /init-audit proposes them from the model.";break;case"spec":y=(null!==(o=u.spec)&&void 0!==o?o:[]).map(e=>{var t,n,i,l;return{key:e.id,title:e.spec_text,subtitle:"".concat(e.id," \xb7 ").concat(e.source.replace("_"," ")),trailing:(0,s.jsxs)("span",{className:"inline-flex items-center gap-1.5 text-caption text-text-tertiary",children:[(0,s.jsx)(x.oT,{color:null!==(i=null===(t=z[e.status])||void 0===t?void 0:t.color)&&void 0!==i?i:"var(--neutral)"}),null!==(l=null===(n=z[e.status])||void 0===n?void 0:n.label)&&void 0!==l?l:e.status]})}}),b="No spec conformance checks yet."}return(0,s.jsx)(d.x,{children:(0,s.jsxs)("div",{className:"mx-auto max-w-[780px] px-8 pb-16 pt-8",children:[(0,s.jsx)("h2",{className:"text-title font-semibold text-text-primary",children:S[c]}),(0,s.jsx)("p",{className:"mt-1 text-body text-text-tertiary",children:T[c]}),0===y.length?(0,s.jsx)("p",{className:"mt-8 text-body text-text-tertiary",children:b}):(0,s.jsx)("div",{className:"stagger -mx-2 mt-6",children:y.map(e=>(0,s.jsxs)("div",{role:"button",tabIndex:0,onClick:()=>p(e.key),onKeyDown:t=>"Enter"===t.key&&p(e.key),className:(0,_.cn)("flex cursor-pointer items-start gap-4 rounded-md px-2 py-2.5",m===e.key?"bg-accent-subtle":"hover:bg-surface-1"),children:[(0,s.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,s.jsx)("div",{className:(0,_.cn)("text-body",m===e.key?"text-accent":"text-text-primary"),children:e.title}),e.subtitle&&(0,s.jsx)("div",{className:"mt-0.5 text-caption text-text-tertiary",children:e.subtitle})]}),m!==e.key&&e.actions,e.trailing&&(0,s.jsx)("div",{className:"shrink-0 pt-0.5",children:e.trailing})]},e.key))})]})})}function L(e,t){var n,s;return null!==(s=null==e?void 0:null===(n=e.actors.find(e=>e.id===t))||void 0===n?void 0:n.name)&&void 0!==s?s:t}function F(e,t){if(t[e])return t[e];if(e.includes(".")&&!e.includes("(")){var n;let[s,i]=e.split(".");return null!==(n=Object.values(t).find(e=>e.contract===s&&e.name===i))&&void 0!==n?n:null}return null}function D(e){let{evidence:t}=e;return(null==t?void 0:t.length)?(0,s.jsx)(u.oz,{label:"Evidence",children:(0,s.jsx)("div",{className:"flex flex-col items-start gap-1",children:t.map((e,t)=>(0,s.jsx)(b.i,{file:e.file,lineStart:e.line_start,lineEnd:e.line_end},t))})}):null}function W(e){let{ids:t,ctx:n,label:l}=e;return t.length?(0,s.jsx)(u.oz,{label:l,children:t.map(e=>{let t=n.states[e];return(0,s.jsxs)(i.default,{href:"/review?fn=".concat(encodeURIComponent(e)),className:"-mx-1.5 flex items-center gap-2 rounded-md px-1.5 py-1 text-body text-text-primary hover:bg-surface-2",children:[t?(0,s.jsx)(p.e,{state:t,className:"h-3 w-3"}):(0,s.jsx)("span",{className:"h-3 w-3"}),(0,s.jsx)("span",{className:"truncate",children:R(e)})]},e)})}):null}function q(e){let{ids:t,ctx:n}=e;return t.length?(0,s.jsx)(u.oz,{label:"Cards",children:t.map(e=>{var t;let l=n.cards[e];return(0,s.jsxs)(i.default,{href:"/issues?card=".concat(encodeURIComponent(e)),className:"-mx-1.5 flex items-center gap-2 rounded-md px-1.5 py-1 text-body text-text-primary hover:bg-surface-2",children:[l&&(0,s.jsx)(x.oH,{severity:l.severity,label:!1}),(0,s.jsx)("span",{className:"min-w-0 flex-1 truncate",children:null!==(t=null==l?void 0:l.title)&&void 0!==t?t:e}),(0,s.jsx)("span",{className:"shrink-0 text-caption text-text-tertiary",children:e})]},e)})}):null}function V(e){var t,n,i,l,a;let{fn:r,ctx:o}=e,c=null!==(t=o.states[r.id])&&void 0!==t?t:null,d=o.model,m=(null!==(n=null==d?void 0:d.privileges)&&void 0!==n?n:[]).filter(e=>e.function===r.id),x=(null!==(i=null==d?void 0:d.actors)&&void 0!==i?i:[]).filter(e=>e.powers.includes(r.id)),h=(null!==(l=null==d?void 0:d.assets)&&void 0!==l?l:[]).filter(e=>e.moved_by.includes(r.id)),f=o.invariants.filter(e=>e.scope.functions.includes(r.id));return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(u.oz,{label:"Code",children:[(0,s.jsx)(b.i,{file:r.file,lineStart:r.line_start,lineEnd:r.line_end}),(0,s.jsxs)("p",{className:"mt-1.5 text-caption text-text-tertiary",children:[r.callers," caller",1===r.callers?"":"s"," \xb7 ",r.callees," callee",1===r.callees?"":"s",r.is_entry_point?" \xb7 entry point":""]})]}),c&&(0,s.jsx)(u.oz,{label:"Review",children:(0,s.jsxs)("p",{className:"flex items-center gap-2 text-body text-text-primary",children:[(0,s.jsx)(p.e,{state:c})," ",p.U[c]]})}),(m.length>0||x.length>0||h.length>0)&&(0,s.jsx)(u.oz,{label:"In the model",children:(0,s.jsxs)("ul",{className:"space-y-1 text-body text-text-secondary",children:[x.map(e=>(0,s.jsxs)("li",{children:["Only ",e.name," can call it."]},e.id)),m.map((e,t)=>(0,s.jsxs)("li",{children:[e.effect,". At worst: ",e.worst_case,"."]},t)),h.map(e=>(0,s.jsxs)("li",{children:["Moves ",e.name,"."]},e.id))]})}),f.length>0&&(0,s.jsx)(u.oz,{label:"Invariants",children:f.map(e=>(0,s.jsxs)("p",{className:"text-body text-text-secondary",children:[e.statement," ",(0,s.jsx)("span",{className:"text-caption text-text-tertiary",children:e.id})]},e.id))}),(0,s.jsx)(q,{ids:null!==(a=o.cardsByFn[r.id])&&void 0!==a?a:[],ctx:o})]})}function B(e){let{fnId:t}=e;return(0,s.jsx)(i.default,{href:"/review?fn=".concat(encodeURIComponent(t)),className:"inline-flex h-8 items-center rounded-md border border-border-default bg-surface-0 px-3 text-body font-medium text-text-primary shadow-sm hover:bg-surface-2",children:"Open in Review"})}function H(e){var t,n;let{sel:l,ctx:a,onClose:r,onOpenSection:o}=e,c=null!==(n=null!==(t=l.ref)&&void 0!==t?t:l.node)&&void 0!==n?n:"",d=F(c,a.fns);if(d)return(0,s.jsx)(u.lj,{eyebrow:"Function \xb7 ".concat(d.contract).concat(l.changed?" \xb7 changed":""),title:d.name,subtitle:(0,s.jsx)("span",{className:"font-mono",children:d.signature}),onClose:r,actions:(0,s.jsx)(B,{fnId:d.id}),children:(0,s.jsx)(V,{fn:d,ctx:a})});let m=a.contracts[c];if(m)return(0,s.jsx)(u.lj,{eyebrow:"Contract \xb7 ".concat(m.kind),title:m.name,onClose:r,actions:(0,s.jsx)(i.default,{href:"/review?contract=".concat(encodeURIComponent(m.name)),className:"inline-flex h-8 items-center rounded-md border border-border-default bg-surface-0 px-3 text-body font-medium text-text-primary shadow-sm hover:bg-surface-2",children:"Open in Review"}),children:(0,s.jsxs)(u.oz,{label:"Code",children:[(0,s.jsx)(b.i,{file:m.file,lineStart:m.line_start,lineEnd:m.line_end}),(0,s.jsxs)("p",{className:"mt-1.5 text-caption text-text-tertiary",children:[m.functions," functions \xb7 ",m.entry_points," entry points"]})]})});let x=a.model,p=null==x?void 0:x.actors.find(e=>e.id===c);if(p)return(0,s.jsx)(K,{section:"actors",item:p.id,ctx:a,onClose:r});let f=null==x?void 0:x.assets.find(e=>e.id===c);if(f)return(0,s.jsx)(K,{section:"assets",item:f.id,ctx:a,onClose:r});let v=null==x?void 0:x.external_dependencies.find(e=>e.id===c);if(v)return(0,s.jsx)(K,{section:"dependencies",item:v.id,ctx:a,onClose:r});let y=null==x?void 0:x.accounting.find(e=>e.id===c);if(y)return(0,s.jsx)(K,{section:"accounting",item:y.id,ctx:a,onClose:r});let j=a.invariants.find(e=>e.id===c);return j?(0,s.jsx)(u.lj,{eyebrow:"Invariant",title:j.statement,onClose:r,children:(0,s.jsx)(h.z,{variant:"secondary",onClick:()=>o("invariants",j.id),children:"Open in Invariants"})}):(0,s.jsx)(u.lj,{eyebrow:l.changed?"Diagram node \xb7 changed":"Diagram node",title:l.label||c,onClose:r,children:(0,s.jsx)("p",{className:"border-t border-border-subtle pt-3 text-body text-text-tertiary",children:"This node isn’t linked to code or the model."})})}function K(e){var t,n,i,l,a,r,o,c,d,m;let{section:p,item:f,ctx:v,onClose:y,onInvariant:g}=e,k=v.model;switch(p){case"actors":{let e=null==k?void 0:k.actors.find(e=>e.id===f);if(!e)return null;return(0,s.jsxs)(u.lj,{eyebrow:"Actor \xb7 ".concat(e.kind.replace("_"," ")),title:e.name,subtitle:"".concat(e.trust.replace("_"," ")),onClose:y,children:[e.description&&(0,s.jsx)("p",{className:"pb-4 text-body text-text-secondary",children:e.description}),(0,s.jsx)(G,{status:e.status,note:e.note,by:e.verified_by}),(0,s.jsx)(W,{ids:e.powers,ctx:v,label:"Can call"}),(0,s.jsx)(D,{evidence:e.evidence})]})}case"assets":{let e=null==k?void 0:k.assets.find(e=>e.id===f);if(!e)return null;return(0,s.jsxs)(u.lj,{eyebrow:"Asset \xb7 ".concat(e.kind),title:e.name,subtitle:e.held_by.length?"Held by ".concat(e.held_by.join(", ")):void 0,onClose:y,children:[e.description&&(0,s.jsx)("p",{className:"pb-4 text-body text-text-secondary",children:e.description}),(0,s.jsx)(G,{status:e.status,note:e.note,by:e.verified_by}),(0,s.jsx)(W,{ids:e.moved_by,ctx:v,label:"Moved by"}),(0,s.jsx)(D,{evidence:e.evidence})]})}case"privileges":{let e=null==k?void 0:k.privileges[Number(f)];if(!e)return null;let i=v.fns[e.function];return(0,s.jsxs)(u.lj,{eyebrow:"Privilege \xb7 ".concat(L(k,e.actor)),title:null!==(t=R(e.function).split(".").pop())&&void 0!==t?t:e.function,subtitle:i?(0,s.jsx)("span",{className:"font-mono",children:i.signature}):e.function,onClose:y,actions:i?(0,s.jsx)(B,{fnId:i.id}):void 0,children:[(0,s.jsx)(u.oz,{label:"Effect",children:(0,s.jsx)("p",{className:"text-body text-text-secondary",children:e.effect})}),(0,s.jsxs)(u.oz,{label:"Worst case",children:[(0,s.jsx)("p",{className:"text-body text-text-primary",children:e.worst_case}),e.timelock&&(0,s.jsxs)("p",{className:"mt-1 text-caption text-text-tertiary",children:["Timelock ",e.timelock]})]}),(0,s.jsx)(G,{status:e.status,note:e.note,by:e.verified_by}),(0,s.jsx)(D,{evidence:e.evidence}),i&&(0,s.jsx)(q,{ids:null!==(n=v.cardsByFn[i.id])&&void 0!==n?n:[],ctx:v})]})}case"trust":{let e=null==k?void 0:k.trust_assumptions.find(e=>e.claim_id===f);if(!e)return null;return(0,s.jsxs)(u.lj,{eyebrow:"Trust assumption",title:e.text,onClose:y,children:[(0,s.jsx)(G,{status:e.status,note:e.note,by:e.verified_by}),(0,s.jsx)(D,{evidence:e.evidence})]})}case"dependencies":{let e=null==k?void 0:k.external_dependencies.find(e=>e.id===f);if(!e)return null;return(0,s.jsxs)(u.lj,{eyebrow:"Dependency \xb7 ".concat(e.kind),title:e.name,onClose:y,children:[e.failure_modes.length>0&&(0,s.jsx)(u.oz,{label:"How it can fail",children:(0,s.jsx)("ul",{className:"space-y-1 text-body text-text-secondary",children:e.failure_modes.map((e,t)=>(0,s.jsx)("li",{children:e},t))})}),(0,s.jsx)(G,{status:e.status,note:e.note,by:e.verified_by}),(0,s.jsx)(W,{ids:e.used_by,ctx:v,label:"Used by"}),(0,s.jsx)(D,{evidence:e.evidence})]})}case"accounting":{let e=null==k?void 0:k.accounting.find(e=>e.id===f);if(!e)return null;return(0,s.jsxs)(u.lj,{eyebrow:"Accounting",title:e.name,subtitle:e.equation,onClose:y,children:[(0,s.jsx)(u.oz,{label:"Terms",children:(0,s.jsx)("ul",{className:"space-y-2",children:e.terms.map((e,t)=>(0,s.jsxs)("li",{className:"text-body",children:[(0,s.jsx)("div",{className:"text-text-primary",children:e.term}),(0,s.jsx)("div",{className:"text-caption text-text-tertiary",children:e.updated_by.map(e=>"".concat(R(e.function).split(".").pop()," ").concat("increase"===e.direction?"↑":"decrease"===e.direction?"↓":"=")).join(" \xb7 ")})]},t))})}),(0,s.jsx)(G,{status:e.status,note:e.note,by:e.verified_by}),(0,s.jsx)(D,{evidence:e.evidence})]})}case"invariants":{let e=v.invariants.find(e=>e.id===f);if(!e)return null;let t=e.test?I[e.test.status]:null;return(0,s.jsxs)(u.lj,{eyebrow:"".concat(e.id," \xb7 ").concat(e.kind," \xb7 ").concat(P[e.status]),title:e.statement,subtitle:e.on_chain_enforced?"Enforced on-chain":"Not enforced on-chain: it holds only if the code is right",onClose:y,actions:g?"accepted"===e.status?(0,s.jsx)(h.z,{onClick:()=>g(e,"rejected"),children:"Reject"}):"rejected"===e.status?(0,s.jsx)(h.z,{onClick:()=>g(e,"accepted"),children:"Accept"}):(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(h.z,{variant:"primary",onClick:()=>g(e,"accepted"),children:"Accept"}),(0,s.jsx)(h.z,{variant:"ghost",onClick:()=>g(e,"rejected"),children:"Reject"})]}):void 0,children:[e.verification&&(0,s.jsx)(u.oz,{label:"contested"===e.verification.status?"Contested by the skeptic":"Verified by the skeptic",children:(0,s.jsxs)("p",{className:"flex items-start gap-2 text-body text-text-secondary",children:[(0,s.jsx)(x.oT,{color:E[e.verification.status].color,className:"mt-1.5"}),(0,s.jsx)("span",{children:null!==(i=e.verification.note)&&void 0!==i?i:"The code maintains this on every path the skeptic checked."})]})}),e.rationale&&(0,s.jsx)(u.oz,{label:"Rationale",children:(0,s.jsx)("p",{className:"text-body text-text-secondary",children:e.rationale})}),e.test&&t&&(0,s.jsxs)(u.oz,{label:"Test",children:[(0,s.jsxs)("p",{className:"flex items-center gap-2 text-body text-text-primary",children:[(0,s.jsx)(x.oT,{color:t.color})," ",e.test.tool," ",t.label,e.test.property_id&&(0,s.jsx)("span",{className:"text-caption text-text-tertiary",children:e.test.property_id})]}),void 0!==e.test.runs&&(0,s.jsxs)("p",{className:"mt-1 text-caption text-text-tertiary",children:[e.test.runs.toLocaleString()," runs"]}),(e.test.repro_file||e.test.file)&&(0,s.jsx)("p",{className:"mt-1 truncate font-mono text-caption text-text-secondary",children:null!==(l=e.test.repro_file)&&void 0!==l?l:e.test.file})]}),e.issue_id&&(0,s.jsx)(q,{ids:[e.issue_id],ctx:v}),(0,s.jsx)(W,{ids:e.scope.functions,ctx:v,label:"Scope"}),0===e.scope.functions.length&&e.scope.contracts.length>0&&(0,s.jsx)(u.oz,{label:"Scope",children:(0,s.jsx)("p",{className:"text-body text-text-secondary",children:e.scope.contracts.join(", ")})}),(0,s.jsx)(D,{evidence:e.evidence})]})}case"spec":{let e=null===(a=v.spec)||void 0===a?void 0:a.find(e=>e.id===f);if(!e)return null;return(0,s.jsxs)(u.lj,{eyebrow:"".concat(e.id," \xb7 ").concat(e.source.replace("_"," ")),title:e.spec_text,onClose:y,children:[(0,s.jsxs)(u.oz,{label:"Verdict",children:[(0,s.jsxs)("p",{className:"flex items-center gap-2 text-body text-text-primary",children:[(0,s.jsx)(x.oT,{color:null!==(d=null===(r=z[e.status])||void 0===r?void 0:r.color)&&void 0!==d?d:"var(--neutral)"})," ",null!==(m=null===(o=z[e.status])||void 0===o?void 0:o.label)&&void 0!==m?m:e.status,e.confidence&&(0,s.jsxs)("span",{className:"text-caption text-text-tertiary",children:[e.confidence," confidence"]})]}),e.finding&&(0,s.jsx)("p",{className:"mt-1.5 text-body text-text-secondary",children:(0,s.jsx)(j.T9,{children:e.finding})})]}),(null===(c=e.code_location)||void 0===c?void 0:c.file)&&(0,s.jsx)(u.oz,{label:"Code",children:(0,s.jsx)(b.i,{file:e.code_location.file,lineStart:e.code_location.line_start,lineEnd:e.code_location.line_end})})]})}}return null}function G(e){var t;let{status:n,note:i,by:l}=e,a=null!==(t=E[null!=n?n:"unverified"])&&void 0!==t?t:E.unverified;return(0,s.jsxs)(u.oz,{label:"Claim",children:[(0,s.jsxs)("p",{className:"flex items-center gap-2 text-body text-text-primary",children:[(0,s.jsx)(x.oT,{color:a.color})," ",a.label,l&&(0,s.jsxs)("span",{className:"text-caption text-text-tertiary",children:["by ",l]})]}),i&&(0,s.jsx)("p",{className:"mt-1 text-body text-text-secondary",children:i})]})}},22475:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return l}});let s=n(74849);n(37821),n(58078);let i=s._(n(52078));function l(e,t){var n;let s={loading:e=>{let{error:t,isLoading:n,pastDelay:s}=e;return null}};"function"==typeof e&&(s.loader=e);let l={...s,...t};return(0,i.default)({...l,modules:null==(n=l.loadableGenerated)?void 0:n.modules})}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},62209:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"BailoutToCSR",{enumerable:!0,get:function(){return i}});let s=n(51905);function i(e){let{reason:t,children:n}=e;if("undefined"==typeof window)throw new s.BailoutToCSRError(t);return n}},52078:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return c}});let s=n(37821),i=n(58078),l=n(62209),a=n(33178);function r(e){return{default:e&&"default"in e?e.default:e}}let o={loader:()=>Promise.resolve(r(()=>null)),loading:null,ssr:!0},c=function(e){let t={...o,...e},n=(0,i.lazy)(()=>t.loader().then(r)),c=t.loading;function d(e){let r=c?(0,s.jsx)(c,{isLoading:!0,pastDelay:!0,error:null}):null,o=t.ssr?(0,s.jsxs)(s.Fragment,{children:["undefined"==typeof window?(0,s.jsx)(a.PreloadCss,{moduleIds:t.modules}):null,(0,s.jsx)(n,{...e})]}):(0,s.jsx)(l.BailoutToCSR,{reason:"next/dynamic",children:(0,s.jsx)(n,{...e})});return(0,s.jsx)(i.Suspense,{fallback:r,children:o})}return d.displayName="LoadableComponent",d}},33178:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"PreloadCss",{enumerable:!0,get:function(){return l}});let s=n(37821),i=n(44116);function l(e){let{moduleIds:t}=e;if("undefined"!=typeof window)return null;let n=(0,i.getExpectedRequestStore)("next/dynamic css"),l=[];if(n.reactLoadableManifest&&t){let e=n.reactLoadableManifest;for(let n of t){if(!e[n])continue;let t=e[n].files.filter(e=>e.endsWith(".css"));l.push(...t)}}return 0===l.length?null:(0,s.jsx)(s.Fragment,{children:l.map(e=>(0,s.jsx)("link",{precedence:"dynamic",rel:"stylesheet",href:n.assetPrefix+"/_next/"+encodeURI(e),as:"style"},e))})}},4595:function(e,t,n){"use strict";n.d(t,{F:function(){return d},ThemeProvider:function(){return u}});var s=n(58078),i=(e,t,n,s,i,l,a,r)=>{let o=document.documentElement,c=["light","dark"];function d(t){(Array.isArray(e)?e:[e]).forEach(e=>{let n="class"===e,s=n&&l?i.map(e=>l[e]||e):i;n?(o.classList.remove(...s),o.classList.add(l&&l[t]?l[t]:t)):o.setAttribute(e,t)}),r&&c.includes(t)&&(o.style.colorScheme=t)}if(s)d(s);else try{let e=localStorage.getItem(t)||n,s=a&&"system"===e?window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":e;d(s)}catch(e){}},l=["light","dark"],a="(prefers-color-scheme: dark)",r="undefined"==typeof window,o=s.createContext(void 0),c={setTheme:e=>{},themes:[]},d=()=>{var e;return null!=(e=s.useContext(o))?e:c},u=e=>s.useContext(o)?s.createElement(s.Fragment,null,e.children):s.createElement(x,{...e}),m=["light","dark"],x=e=>{let{forcedTheme:t,disableTransitionOnChange:n=!1,enableSystem:i=!0,enableColorScheme:r=!0,storageKey:c="theme",themes:d=m,defaultTheme:u=i?"system":"light",attribute:x="data-theme",value:y,children:b,nonce:j,scriptProps:g}=e,[k,w]=s.useState(()=>h(c,u)),[N,_]=s.useState(()=>"system"===k?v():k),C=y?Object.values(y):d,S=s.useCallback(e=>{let t=e;if(!t)return;"system"===e&&i&&(t=v());let s=y?y[t]:t,a=n?f(j):null,o=document.documentElement,c=e=>{"class"===e?(o.classList.remove(...C),s&&o.classList.add(s)):e.startsWith("data-")&&(s?o.setAttribute(e,s):o.removeAttribute(e))};if(Array.isArray(x)?x.forEach(c):c(x),r){let e=l.includes(u)?u:null,n=l.includes(t)?t:e;o.style.colorScheme=n}null==a||a()},[j]),T=s.useCallback(e=>{let t="function"==typeof e?e(k):e;w(t);try{localStorage.setItem(c,t)}catch(e){}},[k]),E=s.useCallback(e=>{_(v(e)),"system"===k&&i&&!t&&S("system")},[k,t]);s.useEffect(()=>{let e=window.matchMedia(a);return e.addListener(E),E(e),()=>e.removeListener(E)},[E]),s.useEffect(()=>{let e=e=>{e.key===c&&(e.newValue?w(e.newValue):T(u))};return window.addEventListener("storage",e),()=>window.removeEventListener("storage",e)},[T]),s.useEffect(()=>{S(null!=t?t:k)},[t,k]);let z=s.useMemo(()=>({theme:k,setTheme:T,forcedTheme:t,resolvedTheme:"system"===k?N:k,themes:i?[...d,"system"]:d,systemTheme:i?N:void 0}),[k,T,t,N,i,d]);return s.createElement(o.Provider,{value:z},s.createElement(p,{forcedTheme:t,storageKey:c,attribute:x,enableSystem:i,enableColorScheme:r,defaultTheme:u,value:y,themes:d,nonce:j,scriptProps:g}),b)},p=s.memo(e=>{let{forcedTheme:t,storageKey:n,attribute:l,enableSystem:a,enableColorScheme:r,defaultTheme:o,value:c,themes:d,nonce:u,scriptProps:m}=e,x=JSON.stringify([l,n,o,t,d,c,a,r]).slice(1,-1);return s.createElement("script",{...m,suppressHydrationWarning:!0,nonce:"undefined"==typeof window?u:"",dangerouslySetInnerHTML:{__html:"(".concat(i.toString(),")(").concat(x,")")}})}),h=(e,t)=>{let n;if(!r){try{n=localStorage.getItem(e)||void 0}catch(e){}return n||t}},f=e=>{let t=document.createElement("style");return e&&t.setAttribute("nonce",e),t.appendChild(document.createTextNode("*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}")),document.head.appendChild(t),()=>{window.getComputedStyle(document.body),setTimeout(()=>{document.head.removeChild(t)},1)}},v=e=>(e||(e=window.matchMedia(a)),e.matches?"dark":"light")}},function(e){e.O(0,[7498,217,2374,7834,7115,3205,1744],function(){return e(e.s=71232)}),_N_E=e.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[1931],{10589:function(n,e,u){Promise.resolve().then(u.t.bind(u,67498,23))}},function(n){n.O(0,[7498,7115,3205,1744],function(){return n(n.s=10589)}),_N_E=n.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[9420],{74985:function(e,t,n){Promise.resolve().then(n.bind(n,56902)),Promise.resolve().then(n.bind(n,81751))},56902:function(e,t,n){"use strict";n.d(t,{ReportClient:function(){return h}});var s=n(37821),a=n(14233),i=n(58078),r=n(90168),l=n(81751),c=n(52171),o=n(55592),d=n(55631),u=n(88554),x=n(85268),m=n(83206);let f=[{key:"executive_summary",label:"Executive summary",file:"executive_summary.txt"},{key:"audited_files",label:"Audited files",file:"audited_files.txt"},{key:"summary_of_findings",label:"Summary of issues",file:"summary_of_findings.txt"},{key:"system_overview",label:"System overview",file:"system_overview.txt"},{key:"findings",label:"Issues",file:"findings.txt"},{key:"documentation_eval",label:"Documentation",file:"documentation_eval.txt"},{key:"test_suite",label:"Test suite",file:"test_suite.txt"}];function h(e){var t;let{sections:n,figures:h}=e,p=(0,r.useSearchParams)(),y=(0,u.p)(),g=f.filter(e=>n[e.key]).length,v=[...f.map(e=>e.key),...h.length?["figures"]:[]],[b,j]=(0,i.useState)(()=>{var e,t;let s=p.get("s");return s&&v.includes(s)?s:null!==(t=null===(e=f.find(e=>n[e.key]))||void 0===e?void 0:e.key)&&void 0!==t?t:h.length?"figures":"executive_summary"});(0,i.useEffect)(()=>(0,m.q)({s:b}),[b]),(0,x.y)({j:()=>j(v[Math.min(v.length-1,v.indexOf(b)+1)]),k:()=>j(v[Math.max(0,v.indexOf(b)-1)])});let k=f.find(e=>e.key===b),N="figures"===b?null:n[b],w=async()=>{if(N)try{var e;await navigator.clipboard.writeText(N),y({message:"".concat(null!==(e=null==k?void 0:k.label)&&void 0!==e?e:"Section"," copied")})}catch(e){y({message:"Clipboard is not available here",tone:"error"})}};return(0,s.jsx)(l.z,{toolbar:(0,s.jsx)(l.Toolbar,{title:"Report",meta:"".concat(g," of ").concat(f.length," sections ready")}),listWidth:240,list:(0,s.jsxs)("div",{className:"min-h-0 flex-1 overflow-y-auto p-2",children:[(0,s.jsx)(c.i,{children:"Sections"}),f.map(e=>(0,s.jsx)(c.w,{dense:!0,selected:b===e.key,onClick:()=>j(e.key),title:e.label,titleClassName:n[e.key]?void 0:"text-text-tertiary",trailing:n[e.key]?void 0:"Not yet"},e.key)),h.length>0&&(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(c.i,{children:"Figures"}),(0,s.jsx)(c.w,{dense:!0,selected:"figures"===b,onClick:()=>j("figures"),title:"Diagrams in the report",trailing:(0,s.jsx)("span",{className:"tabular-nums",children:h.length})})]})]}),children:"figures"===b?(0,s.jsx)(l.x,{children:(0,s.jsxs)("div",{className:"mx-auto max-w-[900px] px-8 pb-16 pt-8",children:[(0,s.jsx)("h2",{className:"text-heading font-medium text-text-primary",children:"Diagrams in the report"}),(0,s.jsxs)("p",{className:"mt-0.5 text-caption text-text-tertiary",children:["PNGs in ",(0,s.jsx)("span",{className:"font-mono",children:".hex/report/figures/"}),". Choose which diagrams go in from Model."]}),(0,s.jsx)("div",{className:"stagger mt-6 grid gap-6 sm:grid-cols-2",children:h.map(e=>(0,s.jsxs)(a.default,{href:"/model?d=".concat(encodeURIComponent(e.name)),className:"group block",children:[(0,s.jsx)("div",{className:"overflow-hidden rounded-lg border border-border-subtle bg-white group-hover:border-border-default",children:(0,s.jsx)("img",{src:"/api/figures/".concat(encodeURIComponent(e.name),"?v=").concat(e.v),alt:e.title,className:"aspect-[4/3] w-full object-contain p-3"})}),(0,s.jsx)("div",{className:"mt-2 text-body font-medium text-text-primary",children:e.title}),e.takeaway&&(0,s.jsx)("div",{className:"text-caption text-text-tertiary",children:e.takeaway}),(0,s.jsxs)("div",{className:"font-mono text-caption text-text-tertiary",children:["figures/",e.name,".png"]})]},e.name))})]})}):N?(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)("div",{className:"flex h-12 shrink-0 items-center gap-3 border-b border-border-subtle px-5",children:[(0,s.jsxs)("span",{className:"flex-1 truncate font-mono text-caption text-text-tertiary",children:["report/",null==k?void 0:k.file]}),(0,s.jsx)(o.z,{variant:"primary",size:"sm",onClick:w,children:"Copy LaTeX"})]}),(0,s.jsx)(l.x,{className:"bg-[var(--code-bg)]",children:(0,s.jsx)("pre",{className:"mx-auto max-w-[900px] whitespace-pre-wrap break-words px-8 py-6 font-mono text-[12.5px] leading-6 text-text-secondary",children:N})})]}):(0,s.jsx)(d.u,{sentence:"".concat(null!==(t=null==k?void 0:k.label)&&void 0!==t?t:"This section"," has not been generated yet."),command:"/generate-report"})})}},55631:function(e,t,n){"use strict";n.d(t,{u:function(){return i}});var s=n(37821),a=n(17968);function i(e){let{sentence:t,command:n,className:i}=e;return(0,s.jsxs)("div",{className:(0,a.cn)("flex h-full min-h-[200px] flex-col items-center justify-center px-6 text-center fade-in",i),children:[(0,s.jsx)("p",{className:"max-w-sm text-body text-text-secondary",children:t}),n&&(0,s.jsx)("code",{className:"mt-3 rounded-md bg-surface-2 px-2.5 py-1 font-mono text-caption text-text-primary",children:n})]})}},52171:function(e,t,n){"use strict";n.d(t,{i:function(){return l},w:function(){return r}});var s=n(37821),a=n(58078),i=n(17968);let r=(0,a.forwardRef)(function(e,t){let{selected:n,leading:a,title:r,subtitle:l,trailing:c,onClick:o,className:d,dense:u,titleClassName:x,...m}=e;return(0,s.jsxs)("button",{ref:t,type:"button",onClick:o,"aria-current":n?"true":void 0,"data-id":m["data-id"],className:(0,i.cn)("group flex w-full items-center gap-2.5 rounded-md px-2.5 text-left",u?"min-h-[30px] py-1":"min-h-[36px] py-1.5",n?"bg-accent-subtle":"hover:bg-surface-2",d),children:[void 0!==a&&(0,s.jsx)("span",{className:"flex shrink-0 items-center",children:a}),(0,s.jsxs)("span",{className:"min-w-0 flex-1",children:[(0,s.jsx)("span",{className:(0,i.cn)("block truncate text-body",n?"text-accent font-medium":"text-text-primary",x),children:r}),l&&(0,s.jsx)("span",{className:"block truncate text-caption text-text-tertiary",children:l})]}),void 0!==c&&(0,s.jsx)("span",{className:"flex shrink-0 items-center gap-2 text-caption text-text-tertiary",children:c})]})});function l(e){let{children:t,trailing:n}=e;return(0,s.jsxs)("div",{className:"flex items-baseline justify-between px-2.5 pb-1 pt-4 text-caption font-medium text-text-tertiary first:pt-1",children:[(0,s.jsx)("span",{className:"truncate",children:t}),n&&(0,s.jsx)("span",{className:"shrink-0 tabular-nums",children:n})]})}},14233:function(e,t,n){"use strict";n.d(t,{default:function(){return a.a}});var s=n(67498),a=n.n(s)},90168:function(e,t,n){"use strict";var s=n(87462);n.o(s,"usePathname")&&n.d(t,{usePathname:function(){return s.usePathname}}),n.o(s,"useRouter")&&n.d(t,{useRouter:function(){return s.useRouter}}),n.o(s,"useSearchParams")&&n.d(t,{useSearchParams:function(){return s.useSearchParams}})}},function(e){e.O(0,[7498,2374,7115,3205,1744],function(){return e(e.s=74985)}),_N_E=e.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[8672],{61838:function(e,t,n){Promise.resolve().then(n.bind(n,52331)),Promise.resolve().then(n.bind(n,81751))},52331:function(e,t,n){"use strict";n.d(t,{ReviewClient:function(){return U}});var a=n(37821),r=n(97333),l=n(14233),s=n(58078),i=n(90168),c=n(81751),o=n(32011),d=n(52171),u=n(59167),x=n(75833),m=n(61434),h=n(90026);function p(e){let{risk:t,className:n}=e,r=t>=55?3:t>=30?2:1;return(0,a.jsx)("span",{className:"inline-flex items-end gap-[2px] ".concat(null!=n?n:""),title:"Risk ".concat(t),"aria-label":"Risk ".concat(t),children:[1,2,3].map(e=>(0,a.jsx)("span",{className:"w-[3px] rounded-[1px]",style:{height:4+2*e,background:e<=r?3===r?"var(--text-secondary)":"var(--text-tertiary)":"var(--surface-3)"}},e))})}var f=n(55592),v=n(53963),b=n(55631),y=n(88554),g=n(69059),j=n(24629),w=n(26543),N=n(93775),k=n(29487),C=n(79513),_=n(17968);function S(e){var t;let{note:n,fnId:r,fnName:l}=e,s=(0,i.useRouter)(),c=(0,y.p)(),d=null!==(t=n.functions.find(e=>e.fn_ref&&(e.fn_ref===r||e.fn_ref==="".concat(n.contract,".").concat(l))))&&void 0!==t?t:n.functions.find(e=>{var t;return(null!==(t=e.sig.split("(")[0])&&void 0!==t?t:"").trim()===l}),u=n.questions.filter(e=>{var t;return!(null===(t=e.answer)||void 0===t?void 0:t.trim())}),x=n.leads.filter(e=>"open"===e.status).sort((e,t)=>Number(t.text.includes(l))-Number(e.text.includes(l))),m=async e=>{try{await (0,C.C)("/api/notes/lead",{contract:n.target,id:e,action:"close",status:"dismissed"}),s.refresh(),c({message:"Lead dismissed",action:{label:"Undo",onClick:()=>void(0,C.C)("/api/notes/lead",{contract:n.target,id:e,action:"reopen"}).then(()=>s.refresh())}})}catch(e){c({message:e.message,tone:"error"})}},h=!d&&0===u.length&&0===x.length;return(0,a.jsxs)(o.oz,{label:"Diane's notes on ".concat(n.contract),children:[h&&(0,a.jsxs)("p",{className:"text-body text-text-tertiary",children:["Nothing yet. Record a narration, then run"," ",(0,a.jsx)("code",{className:"font-mono text-caption",children:"/diane"}),"."]}),d&&(0,a.jsxs)("div",{className:"space-y-1.5 text-body text-text-secondary",children:[d.purpose&&(0,a.jsx)("p",{children:(0,a.jsx)(k.T9,{children:d.purpose})}),d.access&&(0,a.jsxs)("p",{children:[(0,a.jsx)("span",{className:"text-text-tertiary",children:"Access "}),(0,a.jsx)(k.T9,{children:d.access})]}),d.effects&&(0,a.jsxs)("p",{children:[(0,a.jsx)("span",{className:"text-text-tertiary",children:"Effects "}),(0,a.jsx)(k.T9,{children:d.effects})]}),d.notes.map((e,t)=>(0,a.jsx)("p",{children:(0,a.jsx)(k.T9,{children:e})},t)),d.warnings.map((e,t)=>(0,a.jsxs)("p",{className:"flex gap-2 text-text-primary",children:[(0,a.jsx)("span",{className:"mt-[7px] h-1.5 w-1.5 shrink-0 rounded-full",style:{background:"var(--high)"}}),(0,a.jsx)("span",{children:(0,a.jsx)(k.T9,{children:e})})]},"w".concat(t)))]}),u.length>0&&(0,a.jsxs)("div",{className:"mt-5",children:[(0,a.jsxs)("div",{className:"flex items-baseline justify-between text-caption text-text-tertiary",children:[(0,a.jsx)("span",{children:"Open questions"}),(0,a.jsx)("span",{className:"tabular-nums",children:u.length})]}),(0,a.jsx)("ul",{className:"mt-1.5 divide-y divide-border-subtle border-y border-border-subtle",children:u.map(e=>(0,a.jsx)("li",{className:"py-2.5",children:(0,a.jsx)(q,{contract:n.target,id:e.id,text:e.q})},e.id))})]}),x.length>0&&(0,a.jsxs)("div",{className:"mt-5",children:[(0,a.jsxs)("div",{className:"flex items-baseline justify-between text-caption text-text-tertiary",children:[(0,a.jsx)("span",{children:"Open leads"}),(0,a.jsx)("span",{className:"tabular-nums",children:x.length})]}),(0,a.jsx)("ul",{className:"mt-1.5 divide-y divide-border-subtle border-y border-border-subtle",children:x.map(e=>(0,a.jsx)(E,{lead:e,onDismiss:()=>m(e.id)},e.id))})]})]})}let R={"ai-audit":"AI audit","init-audit":"Pre-review",diane:"Diane",auditagent:"AuditAgent"};function E(e){var t,n;let{lead:r,onDismiss:l}=e,[i,c]=(0,s.useState)(!1),o=r.text.length>220,d=null!==(n=R[null!==(t=r.source)&&void 0!==t?t:"diane"])&&void 0!==n?n:r.source;return(0,a.jsxs)("li",{className:"group flex gap-2.5 py-2.5",children:[(0,a.jsx)("span",{className:"mt-[7px] h-1.5 w-1.5 shrink-0 rounded-full",style:{background:"var(--medium)"}}),(0,a.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,a.jsx)("p",{className:(0,_.cn)("text-body text-text-primary",o&&!i&&"line-clamp-3"),onClick:()=>o&&c(e=>!e),children:(0,a.jsx)(k.T9,{children:r.text})}),(0,a.jsxs)("div",{className:"mt-1 flex items-center gap-2 text-caption text-text-tertiary",children:[d&&(0,a.jsx)("span",{children:d}),o&&(0,a.jsx)("button",{type:"button",onClick:()=>c(e=>!e),className:"hover:text-text-primary",children:i?"Show less":"Show more"}),(0,a.jsx)("button",{type:"button",onClick:l,className:"ml-auto rounded-md px-1.5 py-0.5 opacity-0 hover:bg-surface-2 hover:text-text-primary focus-visible:opacity-100 group-hover:opacity-100",children:"Dismiss"})]})]})]})}function q(e){let{contract:t,id:n,text:r}=e,l=(0,i.useRouter)(),c=(0,y.p)(),[o,d]=(0,s.useState)(""),[u,x]=(0,s.useState)(!1);(0,s.useEffect)(()=>d(""),[n]);let m=async()=>{if(o.trim()){x(!0);try{await (0,C.C)("/api/notes/question",{contract:t,id:n,answer:o.trim()}),c({message:"Answer saved"}),l.refresh()}catch(e){c({message:e.message,tone:"error"})}finally{x(!1)}}};return(0,a.jsxs)("div",{children:[(0,a.jsx)("p",{className:"text-body text-text-primary",children:(0,a.jsx)(k.T9,{children:r})}),(0,a.jsxs)("div",{className:"mt-1.5 flex items-start gap-2",children:[(0,a.jsx)("textarea",{value:o,onChange:e=>d(e.target.value),onKeyDown:e=>{"Enter"===e.key&&(e.metaKey||e.ctrlKey)&&m()},rows:1,placeholder:"Answer…",className:"min-h-[32px] flex-1 resize-y rounded-md border border-border-subtle bg-surface-0 px-2.5 py-1.5 text-body text-text-primary placeholder:text-text-tertiary focus:border-border-emphasis focus:outline-none"}),o.trim()&&(0,a.jsx)(f.z,{size:"sm",variant:"secondary",onClick:m,disabled:u,className:"mt-0.5",children:"Save"})]})]})}function T(e){let{contract:t,pending:n}=e,r=(0,i.useRouter)(),l=(0,y.p)(),[c,o]=(0,s.useState)("idle"),[d,u]=(0,s.useState)(0),x=(0,s.useRef)(null),m=(0,s.useRef)([]),h=(0,s.useRef)(null),p=(0,s.useRef)(null),v=(0,s.useRef)(t);v.current=t,(0,s.useEffect)(()=>()=>{var e;p.current&&clearInterval(p.current),null===(e=h.current)||void 0===e||e.getTracks().forEach(e=>e.stop())},[]);let b=(0,s.useCallback)(async e=>{o("transcribing");try{var t,n;let a=new FormData;a.append("audio",new Blob(m.current,{type:"audio/webm"}),"narration.webm"),a.append("contract",e||"general");let s=await fetch("/api/notes/record",{method:"POST",body:a}),i=await s.json().catch(()=>({}));422===s.status&&i.whisperMissing?l({message:"Audio saved, but no local Whisper engine is installed. ".concat(null!==(t=i.error)&&void 0!==t?t:""),tone:"error"}):s.ok?(l({message:"Narration saved for ".concat(i.contract,". Run /diane in Claude Code to process it.")}),r.refresh()):l({message:null!==(n=i.error)&&void 0!==n?n:"Recording failed",tone:"error"})}catch(e){l({message:e instanceof Error?e.message:"Recording failed",tone:"error"})}finally{o("idle")}},[r,l]),j=(0,s.useCallback)(async()=>{try{let e=await navigator.mediaDevices.getUserMedia({audio:!0});h.current=e,m.current=[];let t=new MediaRecorder(e),n=v.current;t.ondataavailable=e=>{e.data.size>0&&m.current.push(e.data)},t.onstop=()=>{e.getTracks().forEach(e=>e.stop()),p.current&&clearInterval(p.current),b(n)},x.current=t,t.start(),u(0),p.current=setInterval(()=>u(e=>e+1),1e3),o("recording")}catch(e){l({message:"Could not access the microphone. Allow it and try again.",tone:"error"})}},[l,b]);return"recording"===c?(0,a.jsxs)(f.z,{variant:"secondary",onClick:()=>{var e;return null===(e=x.current)||void 0===e?void 0:e.stop()},title:"Stop and transcribe",children:[(0,a.jsx)("span",{className:"h-2 w-2 rounded-full",style:{background:"var(--critical)"}}),"Stop \xb7 ",(0,a.jsx)("span",{className:"tabular-nums",children:"".concat(Math.floor(d/60),":").concat(String(d%60).padStart(2,"0"))})]}):(0,a.jsxs)(f.z,{variant:"secondary",onClick:j,disabled:"transcribing"===c,title:"Narrate your reading of ".concat(t||"the protocol"," for Diane"),children:[(0,a.jsx)(g.lE,{className:"h-4 w-4 text-text-secondary"}),"transcribing"===c?"Transcribing…":"Record narration",n>0&&"idle"===c&&(0,a.jsxs)("span",{className:"text-caption text-text-tertiary",title:"".concat(n," narration session(s) waiting for /diane"),children:[n," waiting"]})]})}var M=n(85268),z=n(4848),A=n(83206);let P=e=>{var t,n;return null!==(n=(null!==(t=e.key)&&void 0!==t?t:e.name).replace(/\(.*$/,"").split(".").pop())&&void 0!==n?n:e.name};function U(e){var t,n,r,l,o;let{rows:h,blindSpots:v,details:j,labels:w,cards:N,notes:S,diffMode:R,generalNote:E,pendingSessions:q}=e,U=(0,i.useRouter)(),L=(0,i.useSearchParams)(),K=(0,y.p)(),[W,B]=(0,s.useState)({});(0,s.useEffect)(()=>B({}),[h]);let G=(0,s.useMemo)(()=>h.map(e=>{var t;return W[e.id]?{...e,state:W[e.id].state,note:null!==(t=W[e.id].note)&&void 0!==t?t:e.note}:e}),[h,W]),$=(0,s.useMemo)(()=>new Map(G.map(e=>[e.id,e])),[G]),[H,Q]=(0,s.useState)("all"),[V,X]=(0,s.useState)(""),[J,Y]=(0,s.useState)(!1),Z=(0,s.useCallback)(()=>{var e,t,n;let a=L.get("fn");if(a&&h.some(e=>e.id===a))return a;let r=L.get("contract");if(r){let e=h.find(e=>e.contract===r);if(e)return e.id}return null!==(n=null!==(t=v[0])&&void 0!==t?t:null===(e=h[0])||void 0===e?void 0:e.id)&&void 0!==n?n:null},[L,h,v]),ee=()=>{var e,t;let n=/^(.*):(\d+)-(\d+)$/.exec(null!==(e=L.get("at"))&&void 0!==e?e:"");return n?{file:n[1],start:Number(n[2]),end:Number(n[3]),...L.get("key")?{key:L.get("key")}:{},name:null!==(t=L.get("name"))&&void 0!==t?t:n[1]}:null},[et,en]=(0,s.useState)(ee),[ea,er]=(0,s.useState)(()=>ee()?null:Z()),[el,es]=(0,s.useState)(()=>Number(L.get("line"))||null);(0,s.useEffect)(()=>{es(Number(L.get("line"))||null);let e=ee();if(e){en(e),er(null);return}en(null),(L.get("fn")||L.get("contract"))&&er(Z())},[L]);let ei=ea&&null!==(r=$.get(ea))&&void 0!==r?r:null,[ec,eo]=(0,s.useState)([]),[ed,eu]=(0,s.useState)(0),ex=(0,s.useRef)(null);(0,s.useEffect)(()=>{var e,t;let n=window.history.state;(null==n?void 0:null===(e=n.hexTrail)||void 0===e?void 0:e.length)&&(eo(n.hexTrail),eu(null!==(t=n.hexPos)&&void 0!==t?t:0));let a=e=>{let t=e.state;if(null==t?void 0:t.hexTrail){var n;eo(t.hexTrail),eu(null!==(n=t.hexPos)&&void 0!==n?n:0)}};return window.addEventListener("popstate",a),()=>window.removeEventListener("popstate",a)},[]);let em=e=>{eo([e]),eu(0),window.history.replaceState({hexTrail:[e],hexPos:0},"",e.url)};(0,s.useEffect)(()=>{if(ec.length)return;let e=ei?ei.name:et?P(et):null;e&&em({label:e,url:window.location.pathname+window.location.search})},[null==ei?void 0:ei.id,null==et?void 0:et.file]);let eh=(0,s.useCallback)(e=>{var t;let n=e.key?$.get(e.key):void 0,a=new URL(window.location.href);for(let e of["fn","at","key","name","line","contract"])a.searchParams.delete(e);n?a.searchParams.set("fn",n.id):(a.searchParams.set("at","".concat(e.file,":").concat(e.line_start,"-").concat(e.line_end)),e.key&&a.searchParams.set("key",e.key),a.searchParams.set("name",e.name)),e.line&&a.searchParams.set("line",String(e.line));let r={label:n?n.name:P(e),...e.via?{via:e.via.replace(/\(.*$/,"").split(".")[0]}:{},url:a.pathname+a.search},l=[...ec.slice(0,ed+1),r];window.history.pushState({hexTrail:l,hexPos:l.length-1},"",r.url),eo(l),eu(l.length-1),es(null!==(t=e.line)&&void 0!==t?t:null),n?(en(null),er(n.id)):(en({file:e.file,start:e.line_start,end:e.line_end,...e.key?{key:e.key}:{},name:e.name}),er(null))},[$,ec,ed]),ep=(0,s.useMemo)(()=>({open:eh,stateOf:e=>{var t;return null===(t=$.get(e))||void 0===t?void 0:t.state}}),[eh,$]);(0,s.useEffect)(()=>{var e,t;ei&&((0,A.q)({fn:ei.id,contract:null,at:null,key:null,name:null}),(0,z.k)({ref:ei.id,kind:"function",label:"".concat(ei.contract,".").concat(null!==(t=null===(e=j[ei.id])||void 0===e?void 0:e.signature)&&void 0!==t?t:ei.name),file:ei.file,line_start:ei.line_start,line_end:ei.line_end}))},[null==ei?void 0:ei.id]);let ef=(0,s.useMemo)(()=>{let e;let t=V.trim().toLowerCase();return e="blind"===H?v.map(e=>$.get(e)).filter(e=>!!e):G.filter(e=>"unread"===H?"unread"===e.state:"questioned"===H?"questioned"===e.state:"changed"!==H||void 0!==e.diff_depth),t&&(e=e.filter(e=>{var n,a;return"".concat(e.contract,".").concat(e.name," ").concat(null!==(a=null===(n=j[e.id])||void 0===n?void 0:n.signature)&&void 0!==a?a:"").toLowerCase().includes(t)})),e},[G,$,H,V,v,j]),ev=(0,s.useMemo)(()=>{var e;if("blind"===H)return[{contract:null,rows:ef}];let t=new Map;for(let n of ef)t.set(n.contract,[...null!==(e=t.get(n.contract))&&void 0!==e?e:[],n]);return Array.from(t.entries()).map(e=>{let[t,n]=e;return{contract:t,rows:n}})},[ef,H]),eb=(0,s.useMemo)(()=>ev.flatMap(e=>e.rows.map(e=>e.id)),[ev]),ey=(0,s.useRef)(null),eg=(0,s.useCallback)(e=>{er(e),en(null),es(null);let t=h.find(t=>t.id===e);t&&em({label:t.name,url:"/review?fn=".concat(encodeURIComponent(e))}),requestAnimationFrame(()=>{var t,n;return null===(n=ey.current)||void 0===n?void 0:null===(t=n.querySelector('[data-id="'.concat(CSS.escape(e),'"]')))||void 0===t?void 0:t.scrollIntoView({block:"nearest"})})},[h]),ej=e=>{if(!eb.length)return;let t=ea?eb.indexOf(ea):-1,n=eb[Math.max(0,Math.min(eb.length-1,-1===t?0:t+e))];n&&eg(n)},ew=(0,s.useRef)(null),eN=(0,s.useCallback)(async function(e,t,n){let a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},r={state:e.state,note:e.note};B(a=>({...a,[e.id]:{state:t,note:n}}));try{await (0,C.C)("/api/progress",{ids:[e.id],state:t,...n?{note:n}:{}}),a.silent||K({message:"unread"===t?"".concat(e.name," marked unread"):"".concat(e.name," marked ").concat(m.U[t].toLowerCase()),action:{label:"Undo",onClick:()=>{B(t=>({...t,[e.id]:r})),(0,C.C)("/api/progress",{ids:[e.id],state:r.state,...r.note?{note:r.note}:{}}).then(()=>U.refresh())}}}),U.refresh()}catch(t){B(t=>({...t,[e.id]:r})),K({message:t.message,tone:"error"})}},[U,K]),ek=e=>{if(ei){if("questioned"===e&&"questioned"!==ei.state){eN(ei,"questioned",ei.note),requestAnimationFrame(()=>{var e;return null===(e=ew.current)||void 0===e?void 0:e.focus()});return}eN(ei,ei.state===e?"unread":e,"questioned"===e?ei.note:void 0)}};(0,M.y)({j:()=>ej(1),k:()=>ej(-1),ArrowDown:e=>{e.preventDefault(),ej(1)},ArrowUp:e=>{e.preventDefault(),ej(-1)},r:()=>ek("read"),c:()=>ek("cleared"),q:()=>ek("questioned"),e:e=>{if((null==ei?void 0:ei.state)==="questioned"){var t;e.preventDefault(),null===(t=ew.current)||void 0===t||t.focus()}}});let eC=(0,s.useMemo)(()=>{let e=G.reduce((e,t)=>e+t.nsloc,0),t=G.filter(e=>"cleared"===e.state).reduce((e,t)=>e+t.nsloc,0);return{total:e,cleared:t,pct:e?Math.round(100*t/e):0}},[G]),e_=[{value:"all",label:"All"},{value:"unread",label:"Unread"},{value:"questioned",label:"Questioned"},...R?[{value:"changed",label:"Changed"}]:[],{value:"blind",label:"Blind spots"}],eS=(0,s.useMemo)(()=>{let e=new Map;for(let n of G){var t;let a=null!==(t=e.get(n.contract))&&void 0!==t?t:{cleared:0,total:0};a.total++,"cleared"===n.state&&a.cleared++,e.set(n.contract,a)}return e},[G]),eR=(0,a.jsxs)(c.Toolbar,{title:"Review",meta:(0,a.jsxs)("span",{className:"inline-flex items-center gap-2.5",children:[(0,a.jsx)("span",{className:"relative inline-block h-1 w-20 overflow-hidden rounded-full bg-surface-3 align-middle",children:(0,a.jsx)("span",{className:"absolute inset-y-0 left-0 rounded-full",style:{width:"".concat(eC.pct,"%"),background:"var(--success)",transition:"width 400ms var(--ease-out)"}})}),(0,a.jsxs)("span",{className:"tabular-nums",children:[eC.pct,"% cleared"]})]}),children:[(0,a.jsxs)(f.z,{variant:"ghost",onClick:()=>Y(e=>!e),"aria-expanded":J,children:["General note",(0,a.jsx)(g.g6,{className:(0,_.cn)("h-3.5 w-3.5 transition-transform duration-200",J&&"rotate-90")})]}),(0,a.jsx)(T,{contract:null!==(l=null==ei?void 0:ei.contract)&&void 0!==l?l:"general",pending:q})]}),eE=ei?{file:ei.file,start:ei.line_start,end:ei.line_end,key:ei.id}:et?{file:et.file,start:et.start,end:et.end,key:et.key}:null,eq=ei?null===(t=j[ei.id])||void 0===t?void 0:t.called_by.length:void 0,eT=(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("div",{className:"space-y-2 border-b border-border-subtle p-3",children:[(0,a.jsx)(u.U,{value:V,onChange:X,placeholder:"Search functions"}),(0,a.jsx)(x.s,{segments:e_,value:H,onChange:Q,ariaLabel:"Filter functions",size:"sm",fill:!0})]}),(0,a.jsx)("div",{ref:ey,className:"min-h-0 flex-1 overflow-y-auto px-2 pb-6 pt-1",children:0===ef.length?(0,a.jsx)("p",{className:"px-3 py-8 text-center text-body text-text-tertiary",children:V?"No functions match.":"questioned"===H?"Nothing is questioned.":"Nothing here."}):ev.map(e=>{var t,n,r,l,s;return(0,a.jsxs)("div",{children:[e.contract&&(0,a.jsx)(d.i,{trailing:"".concat(null!==(r=null===(t=eS.get(e.contract))||void 0===t?void 0:t.cleared)&&void 0!==r?r:0,"/").concat(null!==(l=null===(n=eS.get(e.contract))||void 0===n?void 0:n.total)&&void 0!==l?l:0),children:e.contract}),e.rows.map(e=>(0,a.jsx)(d.w,{"data-id":e.id,dense:!0,selected:e.id===ea,onClick:()=>eg(e.id),leading:(0,a.jsx)(m.e,{state:e.state}),title:"blind"===H?"".concat(e.contract,".").concat(e.name):e.name,trailing:(0,a.jsx)(p,{risk:e.risk})},e.id))]},null!==(s=e.contract)&&void 0!==s?s:"blind")})})]});return(0,a.jsx)(c.z,{toolbar:(0,a.jsxs)(a.Fragment,{children:[eR,J&&(0,a.jsx)("div",{className:"fade-in max-h-[38vh] shrink-0 overflow-y-auto border-b border-border-subtle bg-surface-1 px-6 py-4",children:E.trim()?(0,a.jsx)("div",{className:"max-w-3xl",children:(0,a.jsx)(k.$8,{content:E})}):(0,a.jsxs)("p",{className:"text-body text-text-tertiary",children:["No protocol-wide notes yet. Record a narration with nothing selected, then run"," ",(0,a.jsx)("code",{className:"font-mono text-caption",children:"/diane"}),"."]})})]}),list:eT,listWidth:312,inspector:ei?(0,a.jsx)(I,{row:ei,detail:j[ei.id],labels:w,reviewable:$,cards:N,note:S[ei.contract],onOpen:eh,onToggle:ek,onSaveNote:e=>void eN(ei,"questioned",e,{silent:!0}),noteRef:ew}):et?(0,a.jsx)(O,{loc:et,reviewable:$,onOpen:eh}):void 0,children:eE?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("div",{className:"flex h-10 shrink-0 items-center gap-1 border-b border-border-subtle pl-2 pr-4",children:[(0,a.jsx)(D,{trail:ec,pos:ed}),(0,a.jsxs)("span",{className:"ml-auto shrink-0 truncate pl-3 font-mono text-caption text-text-tertiary",children:[eE.file,":",eE.start]}),eE.key&&(null!=eq?eq:0)>0&&(0,a.jsxs)(f.z,{size:"sm",variant:"ghost",className:"ml-1",title:"Callers and call sites (⇧F12)",onClick:()=>{var e;return null===(e=ex.current)||void 0===e?void 0:e.showUsages(eE.key)},children:[(null===(n=j[null!==(o=null==ei?void 0:ei.id)&&void 0!==o?o:""])||void 0===n?void 0:n.kind)==="modifier"?"Guards":"Called by"," ",eq]})]}),(0,a.jsx)("div",{className:"min-h-0 flex-1",children:(0,a.jsx)(F,{file:eE.file,range:{start:eE.start,end:eE.end},focusLine:el,nav:ep,currentKey:eE.key,handle:ex,onSelectRange:(e,t)=>{(0,z.k)({ref:"".concat(eE.file,":").concat(e,"-").concat(t),kind:"code_range",label:"".concat(eE.file,":").concat(e,"-").concat(t),file:eE.file,line_start:e,line_end:t})}})})]}):(0,a.jsx)(b.u,{sentence:"Pick a function on the left to read it here."})})}function D(e){let{trail:t,pos:n}=e,r="flex h-7 w-7 shrink-0 items-center justify-center rounded-md text-text-tertiary hover:bg-surface-2 hover:text-text-primary disabled:pointer-events-none disabled:opacity-30",l=t.slice(Math.max(0,n-4),Math.min(t.length,n+3)),s=Math.max(0,n-4);return(0,a.jsxs)("div",{className:"flex min-w-0 items-center gap-0.5",children:[(0,a.jsx)("button",{type:"button",className:r,disabled:0===n,onClick:()=>window.history.back(),"aria-label":"Back",title:"Back (Alt+←)",children:(0,a.jsx)(g.g6,{className:"h-3.5 w-3.5 rotate-180"})}),(0,a.jsx)("button",{type:"button",className:r,disabled:n>=t.length-1,onClick:()=>window.history.forward(),"aria-label":"Forward",title:"Forward (Alt+→)",children:(0,a.jsx)(g.g6,{className:"h-3.5 w-3.5"})}),(0,a.jsxs)("nav",{"aria-label":"Flow",className:"ml-1 flex min-w-0 items-center gap-1 overflow-hidden",children:[s>0&&(0,a.jsx)("span",{className:"text-caption text-text-tertiary",children:"…"}),l.map((e,t)=>{let r=s+t;return(0,a.jsxs)("span",{className:"flex min-w-0 items-center gap-1",children:[t>0&&(0,a.jsx)(g.g6,{className:"h-3 w-3 shrink-0 text-text-tertiary"}),(0,a.jsx)("button",{type:"button",disabled:r===n,onClick:()=>window.history.go(r-n),className:(0,_.cn)("truncate rounded px-1 font-mono text-caption",r===n?"text-text-primary":r<n?"text-text-secondary hover:text-text-primary":"text-text-tertiary hover:text-text-secondary"),children:e.label}),e.via&&(0,a.jsxs)("span",{className:"shrink-0 text-caption text-text-tertiary",children:["via ",e.via]})]},r)})]})]})}function F(e){let{file:t,range:n,onSelectRange:r,focusLine:l,nav:s,currentKey:i,handle:c}=e,o=(0,w.dU)(t);return(0,a.jsx)(j.uX,{file:t,range:n,onSelectRange:r,comments:o,nav:s,focusLine:l,currentKey:i,handle:c})}let L={contract:"Contract",interface:"Interface",library:"Library",function:"Function",modifier:"Modifier",state_var:"State variable",event:"Event",error:"Error",struct:"Struct",enum:"Enum",type:"Type",constant:"Constant"};function O(e){var t,n,r;let{loc:l,reviewable:i,onOpen:c}=e,[d,u]=(0,s.useState)(null);(0,s.useEffect)(()=>{if(u(null),!l.key)return;let e=!0;return fetch("/api/nav?key=".concat(encodeURIComponent(l.key))).then(e=>e.json()).then(t=>e&&u(t)).catch(()=>e&&u(null)),()=>{e=!1}},[l.key]),(0,s.useEffect)(()=>{var e;(0,z.k)({ref:"".concat(l.file,":").concat(l.start,"-").concat(l.end),kind:"code_range",label:null!==(e=l.key)&&void 0!==e?e:"".concat(l.file,":").concat(l.start,"-").concat(l.end),file:l.file,line_start:l.start,line_end:l.end})},[l.file,l.start,l.end,l.key]);let x=null==d?void 0:d.decl,h=e=>{var t,n,a;return c({...e.from?{key:e.from}:{},name:null!==(t=e.fromName)&&void 0!==t?t:e.file,file:e.file,line_start:null!==(n=e.fromStart)&&void 0!==n?n:e.line,line_end:null!==(a=e.fromEnd)&&void 0!==a?a:e.line,line:e.line})},p=[];for(let[e,n]of[["Written by",["write"]],["Read by",["read"]],[(null==x?void 0:x.kind)==="modifier"?"Guards":(null==x?void 0:x.kind)==="function"?"Called by":"Used in",null]]){let a=(null!==(t=null==d?void 0:d.sites)&&void 0!==t?t:[]).filter(e=>n?n.includes(e.kind):!["write","read"].includes(e.kind));a.length&&p.push([e,a])}return(0,a.jsxs)(o.lj,{eyebrow:"".concat(x?L[x.kind]:"Code").concat((null==x?void 0:x.contract)?" \xb7 ".concat(x.contract):"").concat(x&&!x.in_scope?" \xb7 out of scope":""),title:null!==(n=null==x?void 0:x.name)&&void 0!==n?n:l.name,subtitle:(null==x?void 0:x.signature)?(0,a.jsx)("span",{className:"font-mono",children:x.signature}):void 0,children:[(0,a.jsxs)(o.oz,{label:"Where",children:[(0,a.jsx)(N.i,{file:l.file,lineStart:l.start,lineEnd:l.end}),(null==x?void 0:x.doc)&&(0,a.jsx)("p",{className:"mt-2 text-body text-text-secondary",children:x.doc})]}),(null!==(r=null==d?void 0:d.impls.length)&&void 0!==r?r:0)>0&&(0,a.jsx)(o.oz,{label:"Runs in",children:(0,a.jsx)("ul",{children:d.impls.map(e=>(0,a.jsx)("li",{children:(0,a.jsxs)("button",{type:"button",onClick:()=>{var t;return e.decl&&c({key:e.id,name:"".concat(null!==(t=e.decl.contract)&&void 0!==t?t:"",".").concat(e.decl.name),file:e.decl.file,line_start:e.decl.line_start,line_end:e.decl.line_end,line:e.decl.line,via:l.key})},className:"-mx-1.5 flex w-[calc(100%+12px)] items-center gap-2 rounded-md px-1.5 py-1 text-left hover:bg-surface-2",children:[i.get(e.id)?(0,a.jsx)(m.e,{state:i.get(e.id).state,className:"h-3 w-3"}):(0,a.jsx)("span",{className:"h-3 w-3 shrink-0"}),(0,a.jsx)("span",{className:"min-w-0 flex-1 truncate text-body text-text-primary",children:e.decl?"".concat(e.decl.contract,".").concat(e.decl.name):e.id}),(0,a.jsx)("span",{className:"shrink-0 text-caption text-text-tertiary",children:"signature"===e.by?"same signature":"override"})]})},e.id))})}),p.map(e=>{let[t,n]=e;return(0,a.jsx)(o.oz,{label:t,trailing:(0,a.jsx)("span",{className:"text-caption text-text-tertiary",children:n.length}),children:(0,a.jsx)("ul",{children:n.map((e,t)=>{var n;return(0,a.jsx)("li",{children:(0,a.jsxs)("button",{type:"button",onClick:()=>h(e),className:"-mx-1.5 flex w-[calc(100%+12px)] items-center gap-2 rounded-md px-1.5 py-1 text-left hover:bg-surface-2",children:[e.from&&i.get(e.from)?(0,a.jsx)(m.e,{state:i.get(e.from).state,className:"h-3 w-3"}):(0,a.jsx)("span",{className:"h-3 w-3 shrink-0"}),(0,a.jsx)("span",{className:"min-w-0 flex-1 truncate text-body text-text-primary",children:null!==(n=e.fromName)&&void 0!==n?n:e.file}),(0,a.jsxs)("span",{className:"shrink-0 text-caption text-text-tertiary",children:["line ",e.line]})]})},t)})})},t)}),!l.key&&(0,a.jsxs)("p",{className:"text-body text-text-tertiary",children:["A position in ",l.file,"."]})]})}function I(e){var t,n,i;let{row:c,detail:d,labels:u,reviewable:x,cards:p,note:b,onOpen:y,onToggle:g,onSaveNote:j,noteRef:w}=e,[N,k]=(0,s.useState)(null!==(t=c.note)&&void 0!==t?t:"");(0,s.useEffect)(()=>{var e;return k(null!==(e=c.note)&&void 0!==e?e:"")},[c.id,c.note]);let C=d?[c.is_entry_point?"Entry point":d.visibility,"nonpayable"!==d.mutability?d.mutability:null]:[];return(0,a.jsxs)(o.lj,{eyebrow:(0,a.jsxs)("span",{children:[c.contract," \xb7 ",C.filter(Boolean).join(" \xb7 ")]}),title:c.name,subtitle:(0,a.jsx)("span",{className:"font-mono",children:null!==(n=null==d?void 0:d.signature)&&void 0!==n?n:c.name}),actions:(0,a.jsxs)("div",{className:"w-full space-y-3",children:[(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)(K,{active:"read"===c.state,onClick:()=>g("read"),k:"r",children:"Read"}),(0,a.jsx)(K,{active:"questioned"===c.state,onClick:()=>g("questioned"),k:"q",children:"Question"}),"cleared"===c.state?(0,a.jsx)(K,{active:!0,onClick:()=>g("cleared"),k:"c",children:"Cleared"}):(0,a.jsx)(f.z,{variant:"primary",onClick:()=>g("cleared"),className:"flex-1",title:"Clear (c)",children:"Clear"})]}),(0,a.jsxs)("p",{className:"flex flex-wrap items-center gap-x-3 gap-y-1 text-caption text-text-tertiary",children:[(0,a.jsxs)("span",{className:"inline-flex items-center gap-1",children:[(0,a.jsx)(v.T,{children:"r"})," read"]}),(0,a.jsxs)("span",{className:"inline-flex items-center gap-1",children:[(0,a.jsx)(v.T,{children:"q"})," question"]}),(0,a.jsxs)("span",{className:"inline-flex items-center gap-1",children:[(0,a.jsx)(v.T,{children:"c"})," clear"]}),(0,a.jsxs)("span",{className:"inline-flex items-center gap-1",children:[(0,a.jsx)(v.T,{children:"j"}),(0,a.jsx)(v.T,{children:"k"})," move"]})]}),"questioned"===c.state&&(0,a.jsx)("textarea",{ref:w,value:N,onChange:e=>k(e.target.value),onBlur:()=>{var e;return N.trim()!==(null!==(e=c.note)&&void 0!==e?e:"")&&j(N.trim())},onKeyDown:e=>{"Enter"===e.key&&(e.metaKey||e.ctrlKey)&&e.target.blur(),"Escape"===e.key&&e.target.blur()},rows:2,placeholder:"What's the question?",className:"fade-in w-full resize-y rounded-md border border-border-subtle bg-surface-0 px-2.5 py-2 text-body text-text-primary placeholder:text-text-tertiary focus:border-border-emphasis focus:outline-none"}),c.by&&"unread"!==c.state&&(0,a.jsxs)("p",{className:"text-caption text-text-tertiary",children:[m.U[c.state]," by ",c.by,c.updated_at?" \xb7 ":"",c.updated_at&&(0,a.jsx)(r.P,{iso:c.updated_at})]})]}),children:[c.risk_reasons.length>0&&(0,a.jsxs)(o.oz,{label:"Why it matters",children:[(0,a.jsxs)("p",{className:"text-body text-text-secondary",children:[(i=c.risk_reasons.join(", ")).charAt(0).toUpperCase()+i.slice(1),"."]}),(0,a.jsxs)("p",{className:"mt-1 text-caption text-text-tertiary",children:[c.nsloc," nSLOC \xb7"," ",c.ai_seen?"an /ai-audit scan raised something here":"no /ai-audit coverage yet"]})]}),c.cards.length>0&&(0,a.jsx)(o.oz,{label:"Cards",children:(0,a.jsx)("ul",{className:"space-y-1",children:c.cards.map(e=>{var t;let n=p[e];return(0,a.jsx)("li",{children:(0,a.jsxs)(l.default,{href:"/issues?card=".concat(encodeURIComponent(e)),className:"-mx-1.5 flex items-center gap-2 rounded-md px-1.5 py-1 text-body text-text-primary hover:bg-surface-2",children:[n&&(0,a.jsx)(h.oH,{severity:n.severity,label:!1}),(0,a.jsx)("span",{className:"min-w-0 flex-1 truncate",children:null!==(t=null==n?void 0:n.title)&&void 0!==t?t:e}),(0,a.jsx)("span",{className:"shrink-0 text-caption text-text-tertiary",children:e})]})},e)})})}),d&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(B,{label:"modifier"===d.kind?"Guards":"Called by",ids:d.called_by,at:d.called_at,labels:u,reviewable:x,onOpen:y}),(0,a.jsx)(B,{label:"Calls",ids:d.calls,labels:u,reviewable:x,onOpen:y}),(d.modifiers.length>0||d.external_calls.length>0)&&(0,a.jsxs)(o.oz,{label:"Guards and external calls",children:[d.modifiers.length>0&&(0,a.jsxs)("p",{className:"text-body text-text-secondary",children:["Modifiers"," ",(0,a.jsx)("span",{className:"font-mono text-caption text-text-primary",children:d.modifiers.join(", ")})]}),d.external_calls.map((e,t)=>(0,a.jsxs)("p",{className:"flex items-baseline justify-between gap-2 text-body",children:[(0,a.jsxs)("span",{className:"truncate font-mono text-caption text-text-primary",children:[e.target,".",e.member]}),(0,a.jsxs)("span",{className:"shrink-0 text-caption text-text-tertiary",children:["low_level"===e.kind?"low-level \xb7 ":"","line ",e.line]})]},t))]}),(d.reads.length>0||d.writes.length>0)&&(0,a.jsxs)(o.oz,{label:"State",children:[d.writes.length>0&&(0,a.jsx)(W,{label:"Writes",vars:d.writes}),d.reads.length>0&&(0,a.jsx)(W,{label:"Reads",vars:d.reads})]})]}),b&&(0,a.jsx)(S,{note:b,fnId:c.id,fnName:c.name})]})}function K(e){let{active:t,onClick:n,k:r,children:l}=e;return(0,a.jsx)(f.z,{variant:"secondary",onClick:n,"aria-pressed":t,title:"".concat(t?"Undo":""," (").concat(r,")").trim(),className:(0,_.cn)("flex-1",t&&"border-border-emphasis bg-surface-3"),children:l})}function W(e){let{label:t,vars:n}=e;return(0,a.jsxs)("p",{className:"flex gap-3 py-0.5 text-body",children:[(0,a.jsx)("span",{className:"w-14 shrink-0 text-text-tertiary",children:t}),(0,a.jsx)("span",{className:"min-w-0 flex-1 break-words font-mono text-caption leading-6 text-text-primary",children:n.map(e=>e.split(".").slice(1).join(".")||e).join(", ")})]})}function B(e){let{label:t,ids:n,at:r,labels:l,reviewable:i,onOpen:c}=e,[d,u]=(0,s.useState)(!1);if(0===n.length)return null;let x=d?n:n.slice(0,6);return(0,a.jsxs)(o.oz,{label:t,trailing:(0,a.jsx)("span",{className:"text-caption text-text-tertiary",children:n.length}),children:[(0,a.jsx)("ul",{children:x.map(e=>{var t;let n=l[e],s=i.get(e),o=null!==(t=null==r?void 0:r[e])&&void 0!==t?t:[];return(0,a.jsx)("li",{children:(0,a.jsxs)("button",{type:"button",onClick:()=>n&&c({key:e,name:"".concat(n.contract,".").concat(n.name),file:n.file,line_start:n.line_start,line_end:n.line_end,...o[0]?{line:o[0]}:{}}),className:"-mx-1.5 flex w-[calc(100%+12px)] items-center gap-2 rounded-md px-1.5 py-1 text-left hover:bg-surface-2",children:[s?(0,a.jsx)(m.e,{state:s.state,className:"h-3 w-3"}):(0,a.jsx)("span",{className:"h-3 w-3 shrink-0"}),(0,a.jsx)("span",{className:"min-w-0 flex-1 truncate text-body text-text-primary",children:n?"".concat(n.contract,".").concat(n.name):e}),o.length>0&&(0,a.jsxs)("span",{className:"shrink-0 text-caption tabular-nums text-text-tertiary",children:["line ",o.join(", ")]})]})},e)})}),n.length>6&&!d&&(0,a.jsxs)("button",{type:"button",onClick:()=>u(!0),className:"mt-1 text-caption text-text-secondary hover:text-text-primary",children:["Show ",n.length-6," more"]})]})}},53963:function(e,t,n){"use strict";n.d(t,{T:function(){return l}});var a=n(37821),r=n(17968);function l(e){let{children:t,className:n}=e;return(0,a.jsx)("kbd",{className:(0,r.cn)("inline-flex h-[18px] min-w-[18px] items-center justify-center rounded-[5px] border border-border-default bg-surface-2 px-1 font-sans text-[11px] leading-none text-text-tertiary",n),children:t})}},97333:function(e,t,n){"use strict";n.d(t,{P:function(){return r}});var a=n(37821);function r(e){let{iso:t,className:n}=e;return(0,a.jsx)("time",{dateTime:t,className:n,suppressHydrationWarning:!0,children:new Date(t).toLocaleString()})}},59167:function(e,t,n){"use strict";n.d(t,{U:function(){return o}});var a=n(37821),r=n(58078),l=n(17968),s=n(85268),i=n(69059),c=n(53963);function o(e){let{value:t,onChange:n,placeholder:o="Search",className:d,hotkey:u=!0}=e,x=(0,r.useRef)(null);return(0,s.y)({"/":e=>{var t,n;e.preventDefault(),null===(t=x.current)||void 0===t||t.focus(),null===(n=x.current)||void 0===n||n.select()}},u),(0,a.jsxs)("label",{className:(0,l.cn)("relative flex h-8 items-center",d),children:[(0,a.jsx)(i.jV,{className:"pointer-events-none absolute left-2.5 h-3.5 w-3.5 text-text-tertiary"}),(0,a.jsx)("input",{ref:x,type:"search",value:t,placeholder:o,"aria-label":o,onChange:e=>n(e.target.value),onKeyDown:e=>{if("Escape"===e.key){var t;n(""),null===(t=x.current)||void 0===t||t.blur()}},className:"h-8 w-full rounded-md border border-transparent bg-surface-2 pl-8 pr-8 text-body text-text-primary placeholder:text-text-tertiary focus:border-border-emphasis focus:bg-surface-0 focus:outline-none [&::-webkit-search-cancel-button]:hidden"}),u&&!t&&(0,a.jsx)(c.T,{className:"pointer-events-none absolute right-2",children:"/"})]})}},75833:function(e,t,n){"use strict";n.d(t,{s:function(){return l}});var a=n(37821),r=n(17968);function l(e){let{segments:t,value:n,onChange:l,className:s,ariaLabel:i,size:c="md",fill:o=!1}=e;return(0,a.jsx)("div",{role:"tablist","aria-label":i,className:(0,r.cn)("max-w-full items-center gap-0.5 overflow-x-auto rounded-lg bg-surface-2 p-0.5",o?"flex w-full":"inline-flex",s),children:t.map(e=>{let t=e.value===n;return(0,a.jsxs)("button",{role:"tab",type:"button","aria-selected":t,onClick:()=>l(e.value),className:(0,r.cn)("inline-flex h-6 shrink-0 items-center justify-center gap-1 whitespace-nowrap rounded-md font-medium","sm"===c?"px-1.5 text-[11.5px]":"px-2.5 text-caption",o&&"flex-1",t?"bg-surface-0 text-text-primary shadow-sm":"text-text-secondary hover:text-text-primary"),children:[e.label,void 0!==e.count&&(0,a.jsx)("span",{className:"tabular-nums text-text-tertiary",children:e.count})]},e.value)})})}}},function(e){e.O(0,[7498,217,2374,7834,7115,3205,1744],function(){return e(e.s=61838)}),_N_E=e.O()}]);
|