hex-audit 0.4.3 → 0.4.5
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/DEMO.md +3 -2
- package/README.md +45 -41
- package/dashboard/.next/BUILD_ID +1 -1
- package/dashboard/.next/app-build-manifest.json +24 -17
- package/dashboard/.next/app-path-routes-manifest.json +1 -1
- package/dashboard/.next/build-manifest.json +4 -4
- 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/required-server-files.json +1 -1
- package/dashboard/.next/routes-manifest.json +1 -1
- package/dashboard/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/dashboard/.next/server/app/_not-found.html +1 -1
- package/dashboard/.next/server/app/_not-found.rsc +4 -4
- package/dashboard/.next/server/app/access/page.js +1 -1
- package/dashboard/.next/server/app/access/page_client-reference-manifest.js +1 -1
- package/dashboard/.next/server/app/api/flows/route.js +1 -1
- package/dashboard/.next/server/app/api/github-status/route.js +1 -1
- package/dashboard/.next/server/app/api/issues/[id]/move/route.js +1 -1
- package/dashboard/.next/server/app/api/issues/[id]/route.js +1 -1
- package/dashboard/.next/server/app/api/mermaid/route.js +1 -1
- package/dashboard/.next/server/app/api/progress/route.js +1 -1
- package/dashboard/.next/server/app/api/watch/route.js +2 -2
- package/dashboard/.next/server/app/calls/page.js +1 -1
- package/dashboard/.next/server/app/calls/page_client-reference-manifest.js +1 -1
- package/dashboard/.next/server/app/conformance/page.js +1 -1
- package/dashboard/.next/server/app/conformance/page_client-reference-manifest.js +1 -1
- package/dashboard/.next/server/app/diagram/page_client-reference-manifest.js +1 -1
- package/dashboard/.next/server/app/diagram.html +1 -1
- package/dashboard/.next/server/app/diagram.rsc +4 -4
- package/dashboard/.next/server/app/flows/page_client-reference-manifest.js +1 -1
- package/dashboard/.next/server/app/flows.html +1 -1
- package/dashboard/.next/server/app/flows.rsc +4 -4
- package/dashboard/.next/server/app/functions/page.js +1 -1
- package/dashboard/.next/server/app/functions/page_client-reference-manifest.js +1 -1
- package/dashboard/.next/server/app/issues/page.js +12 -1
- package/dashboard/.next/server/app/issues/page_client-reference-manifest.js +1 -1
- package/dashboard/.next/server/app/overleaf/page.js +1 -0
- package/dashboard/.next/server/app/overleaf/page.js.nft.json +1 -0
- package/dashboard/.next/server/app/overleaf/page_client-reference-manifest.js +1 -0
- package/dashboard/.next/server/app/page.js +2 -2
- package/dashboard/.next/server/app/page_client-reference-manifest.js +1 -1
- package/dashboard/.next/server/app/progress/page.js +1 -1
- package/dashboard/.next/server/app/progress/page_client-reference-manifest.js +1 -1
- package/dashboard/.next/server/app/stats/page.js +1 -1
- package/dashboard/.next/server/app/stats/page_client-reference-manifest.js +1 -1
- package/dashboard/.next/server/app-paths-manifest.json +12 -11
- package/dashboard/.next/server/chunks/431.js +1 -1
- package/dashboard/.next/server/chunks/557.js +1 -1
- package/dashboard/.next/server/functions-config-manifest.json +1 -1
- package/dashboard/.next/server/middleware-build-manifest.js +1 -1
- package/dashboard/.next/server/pages/404.html +1 -1
- package/dashboard/.next/server/pages/500.html +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/chunks/app/issues/page-30f7bcde0f4f6ddb.js +1 -0
- package/dashboard/.next/static/chunks/app/{layout-e0f50820b06a7621.js → layout-cde7d75ea6df4f81.js} +1 -1
- package/dashboard/.next/static/chunks/app/overleaf/page-bcea12a80c97b92f.js +1 -0
- package/dashboard/.next/static/chunks/{main-70c6d841ad572657.js → main-8f1e837090aef5cf.js} +1 -1
- package/dashboard/.next/static/css/36c6bb859d4545fd.css +3 -0
- package/dashboard/app/access/page.tsx +7 -0
- package/dashboard/app/api/flows/route.ts +4 -0
- package/dashboard/app/api/issues/[id]/move/route.ts +29 -58
- package/dashboard/app/api/issues/[id]/route.ts +11 -102
- package/dashboard/app/calls/page.tsx +7 -0
- package/dashboard/app/conformance/page.tsx +7 -0
- package/dashboard/app/functions/page.tsx +7 -0
- package/dashboard/app/issues/IssuesBoardClient.tsx +109 -35
- package/dashboard/app/issues/page.tsx +43 -2
- package/dashboard/app/overleaf/OverleafClient.tsx +97 -0
- package/dashboard/app/overleaf/page.tsx +32 -0
- package/dashboard/app/page.tsx +7 -0
- package/dashboard/app/progress/page.tsx +7 -0
- package/dashboard/app/stats/page.tsx +7 -0
- package/dashboard/components/DashboardLayout.tsx +8 -2
- package/dashboard/lib/data.ts +4 -1
- package/dashboard/lib/finding-markdown.ts +59 -0
- package/dashboard/next.config.mjs +4 -0
- package/dist/analysis/external-calls.d.ts +8 -1
- package/dist/analysis/external-calls.d.ts.map +1 -1
- package/dist/analysis/external-calls.js +57 -13
- package/dist/analysis/external-calls.js.map +1 -1
- package/dist/commands/calls.d.ts.map +1 -1
- package/dist/commands/calls.js +15 -6
- package/dist/commands/calls.js.map +1 -1
- package/dist/commands/dashboard.js +6 -6
- package/dist/commands/dashboard.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +17 -19
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/issue.d.ts +3 -0
- package/dist/commands/issue.d.ts.map +1 -0
- package/dist/commands/issue.js +115 -0
- package/dist/commands/issue.js.map +1 -0
- package/dist/core/issues.d.ts +79 -0
- package/dist/core/issues.d.ts.map +1 -0
- package/dist/core/issues.js +253 -0
- package/dist/core/issues.js.map +1 -0
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/skills/init-audit.md +3 -1
- package/dist/skills/sync-issues.md +17 -34
- package/dist/skills/validate-issue.md +20 -10
- package/dist/skills/write-finding.md +1 -1
- package/package.json +1 -1
- package/dashboard/.next/server/app/access.html +0 -1
- package/dashboard/.next/server/app/access.meta +0 -5
- package/dashboard/.next/server/app/access.rsc +0 -8
- package/dashboard/.next/server/app/api/flows.body +0 -1
- package/dashboard/.next/server/app/api/flows.meta +0 -1
- package/dashboard/.next/server/app/calls.html +0 -1
- package/dashboard/.next/server/app/calls.meta +0 -5
- package/dashboard/.next/server/app/calls.rsc +0 -8
- package/dashboard/.next/server/app/conformance.html +0 -1
- package/dashboard/.next/server/app/conformance.meta +0 -5
- package/dashboard/.next/server/app/conformance.rsc +0 -8
- package/dashboard/.next/server/app/functions.html +0 -1
- package/dashboard/.next/server/app/functions.meta +0 -5
- package/dashboard/.next/server/app/functions.rsc +0 -8
- package/dashboard/.next/server/app/index.html +0 -1
- package/dashboard/.next/server/app/index.meta +0 -5
- package/dashboard/.next/server/app/index.rsc +0 -9
- package/dashboard/.next/server/app/issues.html +0 -1
- package/dashboard/.next/server/app/issues.meta +0 -5
- package/dashboard/.next/server/app/issues.rsc +0 -8
- package/dashboard/.next/server/app/progress.html +0 -1
- package/dashboard/.next/server/app/progress.meta +0 -5
- package/dashboard/.next/server/app/progress.rsc +0 -8
- package/dashboard/.next/server/app/stats.html +0 -1
- package/dashboard/.next/server/app/stats.meta +0 -5
- package/dashboard/.next/server/app/stats.rsc +0 -8
- package/dashboard/.next/static/chunks/app/issues/page-dc110d4cc0a5c398.js +0 -1
- package/dashboard/.next/static/css/265d7e2538aaffc0.css +0 -3
- /package/dashboard/.next/static/{f3-iD1w0WCbTDKsUc5-Id → 4HWoeGmBSZi6iGcKL3VWA}/_buildManifest.js +0 -0
- /package/dashboard/.next/static/{f3-iD1w0WCbTDKsUc5-Id → 4HWoeGmBSZi6iGcKL3VWA}/_ssgManifest.js +0 -0
package/dist/index.js
CHANGED
|
@@ -17,11 +17,12 @@ import { analyzeCommand } from './commands/analyze.js';
|
|
|
17
17
|
import { doctorCommand } from './commands/doctor.js';
|
|
18
18
|
import { aiStatusCommand } from './commands/ai-status.js';
|
|
19
19
|
import { updateCommand } from './commands/update.js';
|
|
20
|
+
import { issueCommand } from './commands/issue.js';
|
|
20
21
|
const program = new Command();
|
|
21
22
|
program
|
|
22
23
|
.name('hex')
|
|
23
24
|
.description('CLI toolkit for Solidity smart contract auditors')
|
|
24
|
-
.version('0.4.
|
|
25
|
+
.version('0.4.5');
|
|
25
26
|
program.addCommand(initCommand);
|
|
26
27
|
program.addCommand(statsCommand);
|
|
27
28
|
program.addCommand(depsCommand);
|
|
@@ -39,5 +40,6 @@ program.addCommand(analyzeCommand);
|
|
|
39
40
|
program.addCommand(doctorCommand);
|
|
40
41
|
program.addCommand(aiStatusCommand);
|
|
41
42
|
program.addCommand(updateCommand);
|
|
43
|
+
program.addCommand(issueCommand);
|
|
42
44
|
program.parse();
|
|
43
45
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,KAAK,CAAC;KACX,WAAW,CAAC,kDAAkD,CAAC;KAC/D,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAChC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;AACjC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAChC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;AACjC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;AACjC,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;AACpC,OAAO,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC;AACvC,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;AACnC,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;AACnC,OAAO,CAAC,UAAU,CAAC,mBAAmB,CAAC,CAAC;AACxC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;AACrC,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;AACnC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;AACpC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;AAEjC,OAAO,CAAC,KAAK,EAAE,CAAC"}
|
|
@@ -236,7 +236,9 @@ Also write a human-readable `.hex/spec-conformance.md` rendering the same data g
|
|
|
236
236
|
|
|
237
237
|
## Phase 6 — Materialize conformance items onto the board
|
|
238
238
|
|
|
239
|
-
For every item in `spec-conformance.json.items` with `status` of `DEVIATES` or `PARTIAL`, append a tracking entry to `.hex/tracking.json
|
|
239
|
+
For every item in `spec-conformance.json.items` with `status` of `DEVIATES` or `PARTIAL`, append a tracking entry to `.hex/tracking.json`.
|
|
240
|
+
|
|
241
|
+
**Wrapper (required):** `.hex/tracking.json` MUST be `{ "findings": [<TrackingEntry>, ...] }`. The wrapper key is `findings` (NOT `issues`) — the dashboard's `TrackingFile` type and the `/api/issues` routes reject any other shape. If the file does not exist, create it as `{ "findings": [] }` and then append. If it exists, parse it, append to the `findings` array, and write it back. Match the per-entry schema below exactly.
|
|
240
242
|
|
|
241
243
|
```json
|
|
242
244
|
{
|
|
@@ -156,61 +156,44 @@ Within candidates:
|
|
|
156
156
|
- Has `github.issue_number` → update via `gh issue edit`.
|
|
157
157
|
- No `github.issue_number` → create via `gh issue create`.
|
|
158
158
|
|
|
159
|
-
**3b. Render the body** (write to a temp file, then `--body-file`):
|
|
159
|
+
**3b. Render the body** (write to a temp file, then `--body-file`). Use this exact template — nothing more, nothing less in the visible body. It mirrors `dashboard/lib/finding-markdown.ts::findingToGithubBody`, so the board's "Copy as HackMD" output and the pushed issue stay identical:
|
|
160
160
|
|
|
161
161
|
```markdown
|
|
162
|
-
**
|
|
162
|
+
**File(s)**: [`<file>`](<github-blob-url-or-empty>)
|
|
163
163
|
|
|
164
|
-
<finding.description>
|
|
164
|
+
**Description**: <finding.description>
|
|
165
165
|
|
|
166
|
-
|
|
166
|
+
**Recommendation(s)**: <finding.recommendation>
|
|
167
167
|
|
|
168
|
-
<
|
|
169
|
-
**`<location.file>`**
|
|
168
|
+
**Status**: <finding.resolution or "Unresolved">
|
|
170
169
|
|
|
171
|
-
|
|
172
|
-
<location.snippet>
|
|
173
|
-
```
|
|
174
|
-
</for>
|
|
175
|
-
|
|
176
|
-
### Recommendation
|
|
177
|
-
|
|
178
|
-
<finding.recommendation>
|
|
179
|
-
|
|
180
|
-
---
|
|
181
|
-
|
|
182
|
-
*Synced from Hex audit `<config.project.name>` at commit `<config.project.commit>`.*
|
|
170
|
+
**Update from the client**: <finding.update_from_client or empty>
|
|
183
171
|
|
|
184
172
|
<!-- hex-finding-id: <finding.id> -->
|
|
185
173
|
```
|
|
186
174
|
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
**
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
```
|
|
194
|
-
|
|
195
|
-
Apply via repeated `--label` flags.
|
|
175
|
+
Rules:
|
|
176
|
+
- **File(s)** — one markdown link per affected file in `root_cause.locations[]`, comma-separated when there is more than one: `` [`src/Vault.sol`](url1), [`src/MockToken.sol`](url2) ``. Build each URL as `<settings.report.repository_url>/blob/<settings.report.initial_commit>/<file>`. If either `repository_url` or `initial_commit` is missing from `config.json`, use an empty link target: `` [`<file>`]() ``.
|
|
177
|
+
- **Status** — the finding's `resolution` field if set, otherwise the literal `Unresolved`.
|
|
178
|
+
- **Update from the client** — the finding's `update_from_client` field if set, otherwise leave it blank after the colon.
|
|
179
|
+
- Do NOT add a `**Severity:**` line (severity is already in the title), an `### Affected code` section, code blocks, or a "Synced from Hex" attribution line.
|
|
180
|
+
- The `<!-- hex-finding-id: <finding.id> -->` HTML comment at the very bottom is **mandatory and load-bearing** — it is the round-trip dedup key, invisible in GitHub's rendered view. Never omit it.
|
|
196
181
|
|
|
197
|
-
**
|
|
182
|
+
**3c. Create or update — no labels.** Hex does not apply, add, or remove labels. The target repo's label set is the repo owner's concern; assuming labels exist (e.g. `severity:critical`) makes `gh issue create` fail when they don't.
|
|
198
183
|
|
|
199
184
|
Create:
|
|
200
185
|
```bash
|
|
201
|
-
gh issue create --repo <repo> --title "[<Severity>] <title>" --body-file <tmp>
|
|
202
|
-
--label "hex" --label "audit" --label "severity:..." --label "source:..." --label "status:..."
|
|
186
|
+
gh issue create --repo <repo> --title "[<Severity>] <title>" --body-file <tmp>
|
|
203
187
|
```
|
|
204
188
|
|
|
205
189
|
Parse the returned URL to extract the issue number; update the local finding's `github` block.
|
|
206
190
|
|
|
207
191
|
Update existing:
|
|
208
192
|
```bash
|
|
209
|
-
gh issue edit <num> --repo <repo> --title "[<Severity>] <title>" --body-file <tmp>
|
|
210
|
-
--add-label "severity:..." --add-label "status:..."
|
|
193
|
+
gh issue edit <num> --repo <repo> --title "[<Severity>] <title>" --body-file <tmp>
|
|
211
194
|
```
|
|
212
195
|
|
|
213
|
-
|
|
196
|
+
(`settings.github.default_labels` in config is retained for backwards compatibility but is no longer applied.)
|
|
214
197
|
|
|
215
198
|
If push fails for any single finding: capture stderr, set its `github.sync_status` to `conflict`, append a one-line error, continue with the next finding. Never abort the whole sync on one failure.
|
|
216
199
|
|
|
@@ -261,6 +244,6 @@ GitHub sync complete (<repo>)
|
|
|
261
244
|
|
|
262
245
|
- Does not authenticate (use `gh auth login` once).
|
|
263
246
|
- Does not post comments (auditors discuss inside GitHub).
|
|
264
|
-
- Does not create labels (
|
|
247
|
+
- Does not apply, create, or remove labels (the repo owner manages its own labels).
|
|
265
248
|
- Does not delete remote issues.
|
|
266
249
|
- Does not push `rejected`, `unverified`, or `duplicate` findings.
|
|
@@ -77,22 +77,32 @@ For conformance items, the "claim" is `spec_text` + the finding paragraph — i.
|
|
|
77
77
|
>
|
|
78
78
|
> Reply **1** or **2**.
|
|
79
79
|
|
|
80
|
-
2. **If PoC chosen:** invoke the `generate-poc` skill flow (read the project test setup, write the PoC, run and iterate until it passes).
|
|
80
|
+
2. **If PoC chosen:** invoke the `generate-poc` skill flow (read the project test setup, write the PoC, run and iterate until it passes). Note the test path, e.g. `test/hex-pocs/<id>_<name>.t.sol`.
|
|
81
81
|
|
|
82
|
-
3. **If memo-only chosen:**
|
|
82
|
+
3. **If memo-only chosen:** no PoC file.
|
|
83
83
|
|
|
84
|
-
4.
|
|
84
|
+
4. **Persist via the CLI — do not hand-edit `findings.json` or `tracking.json`.** The `hex issue` command is the single source of truth for board mutations; it materializes a `findings.json` entry from the source record (conformance / auditagent / github) when one does not exist yet, and routes fields correctly. Write the validation memo and the recommendation to temp files, then:
|
|
85
85
|
|
|
86
|
-
|
|
86
|
+
```bash
|
|
87
|
+
# Land the editable fields (materializes a finding for conformance/auditagent/github ids):
|
|
88
|
+
npx hex issue patch <id> \
|
|
89
|
+
--severity <Severity> \
|
|
90
|
+
--description-file <output_dir>/validations/<id>_memo.md \
|
|
91
|
+
--recommendation-file /tmp/<id>_reco.md
|
|
92
|
+
# Promote to Verified:
|
|
93
|
+
npx hex issue move <id> --to verified
|
|
94
|
+
```
|
|
87
95
|
|
|
88
|
-
|
|
96
|
+
For a memo-only verdict, the same two commands apply (the PoC fields just stay unset). For `--description-file`, you may pass either the memo or a dedicated description file; prefer a clean description file if the memo is long.
|
|
89
97
|
|
|
90
|
-
|
|
98
|
+
5. **Annotate source files** (this is the one mutation `hex issue` deliberately does NOT do, so it stays explicit). For each location in the finding's `root_cause.locations[]`, replace any `// @audit-issue <id> ...` comment with `// @audit-issue-verified <id> <short title>` (matching indentation), or insert it if absent.
|
|
99
|
+
|
|
100
|
+
6. Use **AskUserQuestion** to ask:
|
|
91
101
|
> Issue verified as **\<id\>** with severity **\<current severity\>**.
|
|
92
102
|
>
|
|
93
103
|
> Would you like to change the severity? Reply with the new severity (Critical / High / Medium / Low / Info), or **no** to keep it.
|
|
94
104
|
|
|
95
|
-
|
|
105
|
+
7. If the user provides a new severity, run `npx hex issue patch <id> --severity <NewSeverity>`.
|
|
96
106
|
|
|
97
107
|
**Invalid:**
|
|
98
108
|
|
|
@@ -100,14 +110,14 @@ For conformance items, the "claim" is `spec_text` + the finding paragraph — i.
|
|
|
100
110
|
- Is the attack path blocked? By what specifically (modifier, require, state check)?
|
|
101
111
|
- Are the preconditions impossible? Why?
|
|
102
112
|
- Is the impact assessment wrong? What actually happens?
|
|
103
|
-
2.
|
|
104
|
-
3. Do NOT write a finding
|
|
113
|
+
2. Move it to the Invalid column: `npx hex issue move <id> --to invalid`.
|
|
114
|
+
3. Do NOT write a finding body. The memo alone records the reasoning.
|
|
105
115
|
|
|
106
116
|
**Uncertain:**
|
|
107
117
|
|
|
108
118
|
1. List specific questions that need manual investigation.
|
|
109
119
|
2. State what would confirm or deny the issue.
|
|
110
|
-
3. Leave
|
|
120
|
+
3. Leave the column as-is (no `hex issue move`). Record the open questions on the card: `npx hex issue patch <id> --notes "<open questions>"`.
|
|
111
121
|
|
|
112
122
|
## Output: validation memo
|
|
113
123
|
|
|
@@ -109,7 +109,7 @@ All inserted audit comments must be full sentences starting with a capital lette
|
|
|
109
109
|
## Actions
|
|
110
110
|
|
|
111
111
|
1. **Append the finding** to the `findings` array inside `<output_dir>/findings.json`. File structure is `{ "findings": [...] }` — create with this wrapper if missing.
|
|
112
|
-
2. **Add a tracking entry** to `<output_dir>/tracking.json`
|
|
112
|
+
2. **Add a tracking entry** to `<output_dir>/tracking.json`. The file MUST be wrapped as `{ "findings": [...] }` (the wrapper key is `findings`, not `issues`); see `init-audit.md` Phase 6 for the canonical schema. Append this entry:
|
|
113
113
|
```json
|
|
114
114
|
{
|
|
115
115
|
"id": "F<NNN>",
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" href="/_next/static/media/4c9affa5bc8f420e-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="/_next/static/media/bb3ef058b751a6ad-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="stylesheet" href="/_next/static/css/265d7e2538aaffc0.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-08869f2b18792e51.js"/><script src="/_next/static/chunks/618f8807-547c5614e1318888.js" async=""></script><script src="/_next/static/chunks/3205-728c260fbb4f89c6.js" async=""></script><script src="/_next/static/chunks/main-app-9d2f6b8a47133e9b.js" async=""></script><script src="/_next/static/chunks/7498-ea83cb9e30ec5491.js" async=""></script><script src="/_next/static/chunks/app/layout-e0f50820b06a7621.js" async=""></script><title>Hex</title><meta name="description" content="Local dashboard for Solidity smart contract audits"/><link rel="icon" href="/icon.svg?83fa4bf1ef0d214d" type="image/svg+xml" sizes="any"/><meta name="next-size-adjust"/><script src="/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js" noModule=""></script></head><body class="__variable_73ee6c __variable_3c557b min-h-screen bg-surface-0 text-text-primary font-sans"><script>((e,t,r,n,o,l,a,u)=>{let i=document.documentElement,s=["light","dark"];function c(t){(Array.isArray(e)?e:[e]).forEach(e=>{let r="class"===e,n=r&&l?o.map(e=>l[e]||e):o;r?(i.classList.remove(...n),i.classList.add(l&&l[t]?l[t]:t)):i.setAttribute(e,t)}),u&&s.includes(t)&&(i.style.colorScheme=t)}if(n)c(n);else try{let e=localStorage.getItem(t)||r,n=a&&"system"===e?window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":e;c(n)}catch(e){}})("data-theme","theme","dark",null,["light","dark"],null,false,true)</script><div class="min-h-screen"><button type="button" aria-label="Toggle navigation" class="fixed left-3 top-3 z-[60] flex h-10 w-10 items-center justify-center rounded-md bg-surface-1 border border-border-default text-text-secondary hover:text-text-primary md:hidden"><svg class="h-5 w-5" aria-hidden="true" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><path stroke-linecap="round" stroke-linejoin="round" d="M3.75 6.75h16.5M3.75 12h16.5m-16.5 5.25h16.5"></path></svg></button><nav aria-label="Main navigation" class="fixed left-0 top-0 z-50 flex h-screen w-[220px] flex-col border-r border-border-subtle bg-surface-1 transition-transform duration-200 -translate-x-full md:translate-x-0"><div class="px-5 pb-4 pt-6"><div class="flex items-baseline gap-2"><span class="text-title font-semibold text-text-primary">Hex</span><span class="text-caption text-text-tertiary">v0.4.3</span></div></div><div class="flex-1 overflow-y-auto px-3 pb-4"><div class="mt-6 first:mt-0"><div class="mb-1.5 px-3 text-caption font-medium text-text-tertiary">Recon</div><a class="group flex items-center gap-2.5 rounded-md px-3 py-2 text-body text-text-secondary hover:bg-surface-2 hover:text-text-primary" href="/"><svg class="h-4 w-4 shrink-0" aria-hidden="true" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><path stroke-linecap="round" stroke-linejoin="round" d="m2.25 12 8.954-8.955a1.126 1.126 0 0 1 1.591 0L21.75 12M4.5 9.75v10.125c0 .621.504 1.125 1.125 1.125H9.75v-4.875c0-.621.504-1.125 1.125-1.125h2.25c.621 0 1.125.504 1.125 1.125V21h4.125c.621 0 1.125-.504 1.125-1.125V9.75M8.25 21h8.25"></path></svg><span>Home</span></a><a class="group flex items-center gap-2.5 rounded-md px-3 py-2 text-body text-text-secondary hover:bg-surface-2 hover:text-text-primary" href="/progress"><svg class="h-4 w-4 shrink-0" aria-hidden="true" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><path stroke-linecap="round" stroke-linejoin="round" d="M11.35 3.836c-.065.21-.1.433-.1.664 0 .414.336.75.75.75h4.5a.75.75 0 0 0 .75-.75 2.25 2.25 0 0 0-.1-.664m-5.8 0A2.251 2.251 0 0 1 13.5 2.25H15a2.25 2.25 0 0 1 2.15 1.586m-5.8 0c-.376.023-.75.05-1.124.08C9.095 4.01 8.25 4.973 8.25 6.108V8.25m8.9-4.414c.376.023.75.05 1.124.08 1.131.094 1.976 1.057 1.976 2.192V16.5A2.25 2.25 0 0 1 18 18.75h-2.25m-7.5-10.5H4.875c-.621 0-1.125.504-1.125 1.125v11.25c0 .621.504 1.125 1.125 1.125h9.75c.621 0 1.125-.504 1.125-1.125V18.75m-7.5-10.5h6.375c.621 0 1.125.504 1.125 1.125v9.375m-8.25-3 1.5 1.5 3-3.75"></path></svg><span>Progress</span></a><a class="group flex items-center gap-2.5 rounded-md px-3 py-2 text-body text-text-secondary hover:bg-surface-2 hover:text-text-primary" href="/stats"><svg class="h-4 w-4 shrink-0" aria-hidden="true" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><path stroke-linecap="round" stroke-linejoin="round" d="M3 13.125C3 12.504 3.504 12 4.125 12h2.25c.621 0 1.125.504 1.125 1.125v6.75C7.5 20.496 6.996 21 6.375 21h-2.25A1.125 1.125 0 0 1 3 19.875v-6.75ZM9.75 8.625c0-.621.504-1.125 1.125-1.125h2.25c.621 0 1.125.504 1.125 1.125v11.25c0 .621-.504 1.125-1.125 1.125h-2.25a1.125 1.125 0 0 1-1.125-1.125V8.625ZM16.5 4.125c0-.621.504-1.125 1.125-1.125h2.25C20.496 3 21 3.504 21 4.125v15.75c0 .621-.504 1.125-1.125 1.125h-2.25a1.125 1.125 0 0 1-1.125-1.125V4.125Z"></path></svg><span>Stats</span></a></div><div class="mt-6 first:mt-0"><div class="mb-1.5 px-3 text-caption font-medium text-text-tertiary">Analysis</div><a aria-current="page" class="group flex items-center gap-2.5 rounded-md px-3 py-2 text-body bg-accent-subtle text-accent font-medium" href="/access"><svg class="h-4 w-4 shrink-0" aria-hidden="true" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><path stroke-linecap="round" stroke-linejoin="round" d="M16.5 10.5V6.75a4.5 4.5 0 1 0-9 0v3.75m-.75 11.25h10.5a2.25 2.25 0 0 0 2.25-2.25v-6.75a2.25 2.25 0 0 0-2.25-2.25H6.75a2.25 2.25 0 0 0-2.25 2.25v6.75a2.25 2.25 0 0 0 2.25 2.25Z"></path></svg><span>Access Control</span></a><a class="group flex items-center gap-2.5 rounded-md px-3 py-2 text-body text-text-secondary hover:bg-surface-2 hover:text-text-primary" href="/functions"><svg class="h-4 w-4 shrink-0" aria-hidden="true" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><path stroke-linecap="round" stroke-linejoin="round" d="M17.25 6.75 22.5 12l-5.25 5.25m-10.5 0L1.5 12l5.25-5.25m7.5-3-4.5 16.5"></path></svg><span>Functions</span></a><a class="group flex items-center gap-2.5 rounded-md px-3 py-2 text-body text-text-secondary hover:bg-surface-2 hover:text-text-primary" href="/calls"><svg class="h-4 w-4 shrink-0" aria-hidden="true" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><path stroke-linecap="round" stroke-linejoin="round" d="M7.5 21 3 16.5m0 0L7.5 12M3 16.5h13.5m0-13.5L21 7.5m0 0L16.5 12M21 7.5H7.5"></path></svg><span>Ext Calls</span></a></div><div class="mt-6 first:mt-0"><div class="mb-1.5 px-3 text-caption font-medium text-text-tertiary">Reasoning</div><a class="group flex items-center gap-2.5 rounded-md px-3 py-2 text-body text-text-secondary hover:bg-surface-2 hover:text-text-primary" href="/conformance"><svg class="h-4 w-4 shrink-0" aria-hidden="true" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><path stroke-linecap="round" stroke-linejoin="round" d="M10.125 2.25h-4.5c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125v-9M10.125 2.25h.375a9 9 0 0 1 9 9v.375M10.125 2.25A3.375 3.375 0 0 1 13.5 5.625v1.5c0 .621.504 1.125 1.125 1.125h1.5a3.375 3.375 0 0 1 3.375 3.375"></path></svg><span>Spec Conformance</span></a></div><div class="mt-6 first:mt-0"><div class="mb-1.5 px-3 text-caption font-medium text-text-tertiary">Visual</div><a class="group flex items-center gap-2.5 rounded-md px-3 py-2 text-body text-text-secondary hover:bg-surface-2 hover:text-text-primary" href="/diagram"><svg class="h-4 w-4 shrink-0" aria-hidden="true" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><path stroke-linecap="round" stroke-linejoin="round" d="M7.5 3.75H6A2.25 2.25 0 0 0 3.75 6v1.5M16.5 3.75H18A2.25 2.25 0 0 1 20.25 6v1.5m0 9V18A2.25 2.25 0 0 1 18 20.25h-1.5m-9 0H6A2.25 2.25 0 0 1 3.75 18v-1.5M15 12a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z"></path></svg><span>Diagram</span></a><a class="group flex items-center gap-2.5 rounded-md px-3 py-2 text-body text-text-secondary hover:bg-surface-2 hover:text-text-primary" href="/flows"><svg class="h-4 w-4 shrink-0" aria-hidden="true" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><path stroke-linecap="round" stroke-linejoin="round" d="M3.75 3v11.25A2.25 2.25 0 0 0 6 16.5h2.25M3.75 3h-1.5m1.5 0h16.5m0 0h1.5m-1.5 0v11.25A2.25 2.25 0 0 1 18 16.5h-2.25m-7.5 0h7.5m-7.5 0-1 3m8.5-3 1 3m0 0 .5 1.5m-.5-1.5h-9.5m0 0-.5 1.5"></path></svg><span>Flows</span></a></div><div class="mt-6 first:mt-0"><div class="mb-1.5 px-3 text-caption font-medium text-text-tertiary">Issues</div><a class="group flex items-center gap-2.5 rounded-md px-3 py-2 text-body text-text-secondary hover:bg-surface-2 hover:text-text-primary" href="/issues"><svg class="h-4 w-4 shrink-0" aria-hidden="true" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><path stroke-linecap="round" stroke-linejoin="round" d="M8.25 6.75h12M8.25 12h12m-12 5.25h12M3.75 6.75h.007v.008H3.75V6.75Zm.375 0a.375.375 0 1 1-.75 0 .375.375 0 0 1 .75 0ZM3.75 12h.007v.008H3.75V12Zm.375 0a.375.375 0 1 1-.75 0 .375.375 0 0 1 .75 0Zm-.375 5.25h.007v.008H3.75v-.008Zm.375 0a.375.375 0 1 1-.75 0 .375.375 0 0 1 .75 0Z"></path></svg><span>Board</span></a></div></div><div class="border-t border-border-subtle px-3 py-3 space-y-1"><div class="px-3 py-1 text-caption text-text-tertiary" aria-live="polite"><div class="flex items-center gap-2" title="Last refresh 1:51:24 PM — watcher disconnected"><span class="inline-block h-1.5 w-1.5 rounded-full bg-[var(--medium)]" aria-hidden="true"></span><span>Reconnecting…</span></div></div><div class="h-9"></div><div class="flex items-center gap-1.5 px-3 py-1 text-caption text-text-tertiary"><kbd class="rounded border border-border-default bg-surface-2 px-1.5 py-0.5 text-[11px]">⌘K</kbd><span>Quick nav</span></div></div></nav><main class="min-h-screen bg-surface-0 p-6 pt-16 md:ml-[220px] md:pt-6"><div class="mx-auto max-w-6xl"><div><h2 class="mb-sp-5 text-title font-semibold text-text-primary">Access Control</h2><div class="flex flex-col items-center justify-center border border-dashed border-border-default bg-surface-1 px-sp-5 py-sp-8 text-center" style="border-radius:var(--radius-sm)"><svg class="mb-4 h-12 w-12 text-text-tertiary" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="1.5"><path stroke-linecap="round" stroke-linejoin="round" d="M19.5 14.25v-2.625a3.375 3.375 0 0 0-3.375-3.375h-1.5A1.125 1.125 0 0 1 13.5 7.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H8.25m6.75 12H9.75m3 0H9.75m0 0v3m-3-6h1.5m-1.5 0v3m6-6h.008v.008H15V9.75Z"></path></svg><h3 class="mb-2 text-heading font-medium text-text-primary">Data not yet generated</h3><p class="mb-4 text-body text-text-secondary">Run the following command to generate this data:</p><code class="border border-border-default bg-surface-0 px-sp-4 py-sp-2 font-mono text-body text-accent" style="border-radius:var(--radius-sm)">hex access</code></div></div></div></main></div><script src="/_next/static/chunks/webpack-08869f2b18792e51.js" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0]);self.__next_f.push([2,null])</script><script>self.__next_f.push([1,"1:HL[\"/_next/static/media/4c9affa5bc8f420e-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n2:HL[\"/_next/static/media/bb3ef058b751a6ad-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n3:HL[\"/_next/static/css/265d7e2538aaffc0.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"4:I[5268,[],\"\"]\n6:I[5276,[],\"\"]\n7:I[3297,[],\"\"]\n8:I[4595,[\"7498\",\"static/chunks/7498-ea83cb9e30ec5491.js\",\"3185\",\"static/chunks/app/layout-e0f50820b06a7621.js\"],\"ThemeProvider\"]\n9:I[2198,[\"7498\",\"static/chunks/7498-ea83cb9e30ec5491.js\",\"3185\",\"static/chunks/app/layout-e0f50820b06a7621.js\"],\"CommandPalette\"]\na:I[1187,[\"7498\",\"static/chunks/7498-ea83cb9e30ec5491.js\",\"3185\",\"static/chunks/app/layout-e0f50820b06a7621.js\"],\"DashboardLayout\"]\nc:I[9690,[],\"\"]\nd:[]\n"])</script><script>self.__next_f.push([1,"0:[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/265d7e2538aaffc0.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\"}]],[\"$\",\"$L4\",null,{\"buildId\":\"f3-iD1w0WCbTDKsUc5-Id\",\"assetPrefix\":\"\",\"initialCanonicalUrl\":\"/access\",\"initialTree\":[\"\",{\"children\":[\"access\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",true],\"initialSeedData\":[\"\",{\"children\":[\"access\",{\"children\":[\"__PAGE__\",{},[[\"$L5\",[\"$\",\"div\",null,{\"children\":[[\"$\",\"h2\",null,{\"className\":\"mb-sp-5 text-title font-semibold text-text-primary\",\"children\":\"Access Control\"}],[\"$\",\"div\",null,{\"className\":\"flex flex-col items-center justify-center border border-dashed border-border-default bg-surface-1 px-sp-5 py-sp-8 text-center\",\"style\":{\"borderRadius\":\"var(--radius-sm)\"},\"children\":[[\"$\",\"svg\",null,{\"className\":\"mb-4 h-12 w-12 text-text-tertiary\",\"fill\":\"none\",\"viewBox\":\"0 0 24 24\",\"stroke\":\"currentColor\",\"strokeWidth\":1.5,\"children\":[\"$\",\"path\",null,{\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"d\":\"M19.5 14.25v-2.625a3.375 3.375 0 0 0-3.375-3.375h-1.5A1.125 1.125 0 0 1 13.5 7.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H8.25m6.75 12H9.75m3 0H9.75m0 0v3m-3-6h1.5m-1.5 0v3m6-6h.008v.008H15V9.75Z\"}]}],[\"$\",\"h3\",null,{\"className\":\"mb-2 text-heading font-medium text-text-primary\",\"children\":\"Data not yet generated\"}],[\"$\",\"p\",null,{\"className\":\"mb-4 text-body text-text-secondary\",\"children\":\"Run the following command to generate this data:\"}],[\"$\",\"code\",null,{\"className\":\"border border-border-default bg-surface-0 px-sp-4 py-sp-2 font-mono text-body text-accent\",\"style\":{\"borderRadius\":\"var(--radius-sm)\"},\"children\":\"hex access\"}]]}]]}]],null],null]},[\"$\",\"$L6\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\",\"access\",\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L7\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"notFoundStyles\":\"$undefined\",\"styles\":null}],null]},[[\"$\",\"html\",null,{\"lang\":\"en\",\"suppressHydrationWarning\":true,\"children\":[\"$\",\"body\",null,{\"className\":\"__variable_73ee6c __variable_3c557b min-h-screen bg-surface-0 text-text-primary font-sans\",\"children\":[\"$\",\"$L8\",null,{\"attribute\":\"data-theme\",\"defaultTheme\":\"dark\",\"enableSystem\":false,\"children\":[[\"$\",\"$L9\",null,{}],[\"$\",\"$La\",null,{\"children\":[\"$\",\"$L6\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L7\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"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\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"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)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":\"404\"}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],\"notFoundStyles\":[],\"styles\":null}]}]]}]}]}],null],null],\"couldBeIntercepted\":false,\"initialHead\":[null,\"$Lb\"],\"globalErrorComponent\":\"$c\",\"missingSlots\":\"$Wd\"}]]\n"])</script><script>self.__next_f.push([1,"b:[[\"$\",\"meta\",\"0\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}],[\"$\",\"meta\",\"1\",{\"charSet\":\"utf-8\"}],[\"$\",\"title\",\"2\",{\"children\":\"Hex\"}],[\"$\",\"meta\",\"3\",{\"name\":\"description\",\"content\":\"Local dashboard for Solidity smart contract audits\"}],[\"$\",\"link\",\"4\",{\"rel\":\"icon\",\"href\":\"/icon.svg?83fa4bf1ef0d214d\",\"type\":\"image/svg+xml\",\"sizes\":\"any\"}],[\"$\",\"meta\",\"5\",{\"name\":\"next-size-adjust\"}]]\n5:null\n"])</script></body></html>
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
2:I[5276,[],""]
|
|
2
|
-
3:I[3297,[],""]
|
|
3
|
-
4:I[4595,["7498","static/chunks/7498-ea83cb9e30ec5491.js","3185","static/chunks/app/layout-e0f50820b06a7621.js"],"ThemeProvider"]
|
|
4
|
-
5:I[2198,["7498","static/chunks/7498-ea83cb9e30ec5491.js","3185","static/chunks/app/layout-e0f50820b06a7621.js"],"CommandPalette"]
|
|
5
|
-
6:I[1187,["7498","static/chunks/7498-ea83cb9e30ec5491.js","3185","static/chunks/app/layout-e0f50820b06a7621.js"],"DashboardLayout"]
|
|
6
|
-
0:["f3-iD1w0WCbTDKsUc5-Id",[[["",{"children":["access",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",{"children":["access",{"children":["__PAGE__",{},[["$L1",["$","div",null,{"children":[["$","h2",null,{"className":"mb-sp-5 text-title font-semibold text-text-primary","children":"Access Control"}],["$","div",null,{"className":"flex flex-col items-center justify-center border border-dashed border-border-default bg-surface-1 px-sp-5 py-sp-8 text-center","style":{"borderRadius":"var(--radius-sm)"},"children":[["$","svg",null,{"className":"mb-4 h-12 w-12 text-text-tertiary","fill":"none","viewBox":"0 0 24 24","stroke":"currentColor","strokeWidth":1.5,"children":["$","path",null,{"strokeLinecap":"round","strokeLinejoin":"round","d":"M19.5 14.25v-2.625a3.375 3.375 0 0 0-3.375-3.375h-1.5A1.125 1.125 0 0 1 13.5 7.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H8.25m6.75 12H9.75m3 0H9.75m0 0v3m-3-6h1.5m-1.5 0v3m6-6h.008v.008H15V9.75Z"}]}],["$","h3",null,{"className":"mb-2 text-heading font-medium text-text-primary","children":"Data not yet generated"}],["$","p",null,{"className":"mb-4 text-body text-text-secondary","children":"Run the following command to generate this data:"}],["$","code",null,{"className":"border border-border-default bg-surface-0 px-sp-4 py-sp-2 font-mono text-body text-accent","style":{"borderRadius":"var(--radius-sm)"},"children":"hex access"}]]}]]}]],null],null]},["$","$L2",null,{"parallelRouterKey":"children","segmentPath":["children","access","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","styles":null}],null]},[["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":["$","body",null,{"className":"__variable_73ee6c __variable_3c557b min-h-screen bg-surface-0 text-text-primary font-sans","children":["$","$L4",null,{"attribute":"data-theme","defaultTheme":"dark","enableSystem":false,"children":[["$","$L5",null,{}],["$","$L6",null,{"children":["$","$L2",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"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"},"children":["$","div",null,{"children":[["$","style",null,{"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)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"styles":null}]}]]}]}]}],null],null],[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/265d7e2538aaffc0.css","precedence":"next","crossOrigin":"$undefined"}]],[null,"$L7"]]]]]
|
|
7
|
-
7:[["$","meta","0",{"name":"viewport","content":"width=device-width, initial-scale=1"}],["$","meta","1",{"charSet":"utf-8"}],["$","title","2",{"children":"Hex"}],["$","meta","3",{"name":"description","content":"Local dashboard for Solidity smart contract audits"}],["$","link","4",{"rel":"icon","href":"/icon.svg?83fa4bf1ef0d214d","type":"image/svg+xml","sizes":"any"}],["$","meta","5",{"name":"next-size-adjust"}]]
|
|
8
|
-
1:null
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"flows":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"status":200,"headers":{"content-type":"application/json","x-next-cache-tags":"_N_T_/layout,_N_T_/api/layout,_N_T_/api/flows/layout,_N_T_/api/flows/route,_N_T_/api/flows"}}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" href="/_next/static/media/4c9affa5bc8f420e-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="/_next/static/media/bb3ef058b751a6ad-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="stylesheet" href="/_next/static/css/265d7e2538aaffc0.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-08869f2b18792e51.js"/><script src="/_next/static/chunks/618f8807-547c5614e1318888.js" async=""></script><script src="/_next/static/chunks/3205-728c260fbb4f89c6.js" async=""></script><script src="/_next/static/chunks/main-app-9d2f6b8a47133e9b.js" async=""></script><script src="/_next/static/chunks/7498-ea83cb9e30ec5491.js" async=""></script><script src="/_next/static/chunks/app/layout-e0f50820b06a7621.js" async=""></script><title>Hex</title><meta name="description" content="Local dashboard for Solidity smart contract audits"/><link rel="icon" href="/icon.svg?83fa4bf1ef0d214d" type="image/svg+xml" sizes="any"/><meta name="next-size-adjust"/><script src="/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js" noModule=""></script></head><body class="__variable_73ee6c __variable_3c557b min-h-screen bg-surface-0 text-text-primary font-sans"><script>((e,t,r,n,o,l,a,u)=>{let i=document.documentElement,s=["light","dark"];function c(t){(Array.isArray(e)?e:[e]).forEach(e=>{let r="class"===e,n=r&&l?o.map(e=>l[e]||e):o;r?(i.classList.remove(...n),i.classList.add(l&&l[t]?l[t]:t)):i.setAttribute(e,t)}),u&&s.includes(t)&&(i.style.colorScheme=t)}if(n)c(n);else try{let e=localStorage.getItem(t)||r,n=a&&"system"===e?window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":e;c(n)}catch(e){}})("data-theme","theme","dark",null,["light","dark"],null,false,true)</script><div class="min-h-screen"><button type="button" aria-label="Toggle navigation" class="fixed left-3 top-3 z-[60] flex h-10 w-10 items-center justify-center rounded-md bg-surface-1 border border-border-default text-text-secondary hover:text-text-primary md:hidden"><svg class="h-5 w-5" aria-hidden="true" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><path stroke-linecap="round" stroke-linejoin="round" d="M3.75 6.75h16.5M3.75 12h16.5m-16.5 5.25h16.5"></path></svg></button><nav aria-label="Main navigation" class="fixed left-0 top-0 z-50 flex h-screen w-[220px] flex-col border-r border-border-subtle bg-surface-1 transition-transform duration-200 -translate-x-full md:translate-x-0"><div class="px-5 pb-4 pt-6"><div class="flex items-baseline gap-2"><span class="text-title font-semibold text-text-primary">Hex</span><span class="text-caption text-text-tertiary">v0.4.3</span></div></div><div class="flex-1 overflow-y-auto px-3 pb-4"><div class="mt-6 first:mt-0"><div class="mb-1.5 px-3 text-caption font-medium text-text-tertiary">Recon</div><a class="group flex items-center gap-2.5 rounded-md px-3 py-2 text-body text-text-secondary hover:bg-surface-2 hover:text-text-primary" href="/"><svg class="h-4 w-4 shrink-0" aria-hidden="true" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><path stroke-linecap="round" stroke-linejoin="round" d="m2.25 12 8.954-8.955a1.126 1.126 0 0 1 1.591 0L21.75 12M4.5 9.75v10.125c0 .621.504 1.125 1.125 1.125H9.75v-4.875c0-.621.504-1.125 1.125-1.125h2.25c.621 0 1.125.504 1.125 1.125V21h4.125c.621 0 1.125-.504 1.125-1.125V9.75M8.25 21h8.25"></path></svg><span>Home</span></a><a class="group flex items-center gap-2.5 rounded-md px-3 py-2 text-body text-text-secondary hover:bg-surface-2 hover:text-text-primary" href="/progress"><svg class="h-4 w-4 shrink-0" aria-hidden="true" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><path stroke-linecap="round" stroke-linejoin="round" d="M11.35 3.836c-.065.21-.1.433-.1.664 0 .414.336.75.75.75h4.5a.75.75 0 0 0 .75-.75 2.25 2.25 0 0 0-.1-.664m-5.8 0A2.251 2.251 0 0 1 13.5 2.25H15a2.25 2.25 0 0 1 2.15 1.586m-5.8 0c-.376.023-.75.05-1.124.08C9.095 4.01 8.25 4.973 8.25 6.108V8.25m8.9-4.414c.376.023.75.05 1.124.08 1.131.094 1.976 1.057 1.976 2.192V16.5A2.25 2.25 0 0 1 18 18.75h-2.25m-7.5-10.5H4.875c-.621 0-1.125.504-1.125 1.125v11.25c0 .621.504 1.125 1.125 1.125h9.75c.621 0 1.125-.504 1.125-1.125V18.75m-7.5-10.5h6.375c.621 0 1.125.504 1.125 1.125v9.375m-8.25-3 1.5 1.5 3-3.75"></path></svg><span>Progress</span></a><a class="group flex items-center gap-2.5 rounded-md px-3 py-2 text-body text-text-secondary hover:bg-surface-2 hover:text-text-primary" href="/stats"><svg class="h-4 w-4 shrink-0" aria-hidden="true" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><path stroke-linecap="round" stroke-linejoin="round" d="M3 13.125C3 12.504 3.504 12 4.125 12h2.25c.621 0 1.125.504 1.125 1.125v6.75C7.5 20.496 6.996 21 6.375 21h-2.25A1.125 1.125 0 0 1 3 19.875v-6.75ZM9.75 8.625c0-.621.504-1.125 1.125-1.125h2.25c.621 0 1.125.504 1.125 1.125v11.25c0 .621-.504 1.125-1.125 1.125h-2.25a1.125 1.125 0 0 1-1.125-1.125V8.625ZM16.5 4.125c0-.621.504-1.125 1.125-1.125h2.25C20.496 3 21 3.504 21 4.125v15.75c0 .621-.504 1.125-1.125 1.125h-2.25a1.125 1.125 0 0 1-1.125-1.125V4.125Z"></path></svg><span>Stats</span></a></div><div class="mt-6 first:mt-0"><div class="mb-1.5 px-3 text-caption font-medium text-text-tertiary">Analysis</div><a class="group flex items-center gap-2.5 rounded-md px-3 py-2 text-body text-text-secondary hover:bg-surface-2 hover:text-text-primary" href="/access"><svg class="h-4 w-4 shrink-0" aria-hidden="true" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><path stroke-linecap="round" stroke-linejoin="round" d="M16.5 10.5V6.75a4.5 4.5 0 1 0-9 0v3.75m-.75 11.25h10.5a2.25 2.25 0 0 0 2.25-2.25v-6.75a2.25 2.25 0 0 0-2.25-2.25H6.75a2.25 2.25 0 0 0-2.25 2.25v6.75a2.25 2.25 0 0 0 2.25 2.25Z"></path></svg><span>Access Control</span></a><a class="group flex items-center gap-2.5 rounded-md px-3 py-2 text-body text-text-secondary hover:bg-surface-2 hover:text-text-primary" href="/functions"><svg class="h-4 w-4 shrink-0" aria-hidden="true" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><path stroke-linecap="round" stroke-linejoin="round" d="M17.25 6.75 22.5 12l-5.25 5.25m-10.5 0L1.5 12l5.25-5.25m7.5-3-4.5 16.5"></path></svg><span>Functions</span></a><a aria-current="page" class="group flex items-center gap-2.5 rounded-md px-3 py-2 text-body bg-accent-subtle text-accent font-medium" href="/calls"><svg class="h-4 w-4 shrink-0" aria-hidden="true" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><path stroke-linecap="round" stroke-linejoin="round" d="M7.5 21 3 16.5m0 0L7.5 12M3 16.5h13.5m0-13.5L21 7.5m0 0L16.5 12M21 7.5H7.5"></path></svg><span>Ext Calls</span></a></div><div class="mt-6 first:mt-0"><div class="mb-1.5 px-3 text-caption font-medium text-text-tertiary">Reasoning</div><a class="group flex items-center gap-2.5 rounded-md px-3 py-2 text-body text-text-secondary hover:bg-surface-2 hover:text-text-primary" href="/conformance"><svg class="h-4 w-4 shrink-0" aria-hidden="true" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><path stroke-linecap="round" stroke-linejoin="round" d="M10.125 2.25h-4.5c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125v-9M10.125 2.25h.375a9 9 0 0 1 9 9v.375M10.125 2.25A3.375 3.375 0 0 1 13.5 5.625v1.5c0 .621.504 1.125 1.125 1.125h1.5a3.375 3.375 0 0 1 3.375 3.375"></path></svg><span>Spec Conformance</span></a></div><div class="mt-6 first:mt-0"><div class="mb-1.5 px-3 text-caption font-medium text-text-tertiary">Visual</div><a class="group flex items-center gap-2.5 rounded-md px-3 py-2 text-body text-text-secondary hover:bg-surface-2 hover:text-text-primary" href="/diagram"><svg class="h-4 w-4 shrink-0" aria-hidden="true" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><path stroke-linecap="round" stroke-linejoin="round" d="M7.5 3.75H6A2.25 2.25 0 0 0 3.75 6v1.5M16.5 3.75H18A2.25 2.25 0 0 1 20.25 6v1.5m0 9V18A2.25 2.25 0 0 1 18 20.25h-1.5m-9 0H6A2.25 2.25 0 0 1 3.75 18v-1.5M15 12a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z"></path></svg><span>Diagram</span></a><a class="group flex items-center gap-2.5 rounded-md px-3 py-2 text-body text-text-secondary hover:bg-surface-2 hover:text-text-primary" href="/flows"><svg class="h-4 w-4 shrink-0" aria-hidden="true" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><path stroke-linecap="round" stroke-linejoin="round" d="M3.75 3v11.25A2.25 2.25 0 0 0 6 16.5h2.25M3.75 3h-1.5m1.5 0h16.5m0 0h1.5m-1.5 0v11.25A2.25 2.25 0 0 1 18 16.5h-2.25m-7.5 0h7.5m-7.5 0-1 3m8.5-3 1 3m0 0 .5 1.5m-.5-1.5h-9.5m0 0-.5 1.5"></path></svg><span>Flows</span></a></div><div class="mt-6 first:mt-0"><div class="mb-1.5 px-3 text-caption font-medium text-text-tertiary">Issues</div><a class="group flex items-center gap-2.5 rounded-md px-3 py-2 text-body text-text-secondary hover:bg-surface-2 hover:text-text-primary" href="/issues"><svg class="h-4 w-4 shrink-0" aria-hidden="true" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><path stroke-linecap="round" stroke-linejoin="round" d="M8.25 6.75h12M8.25 12h12m-12 5.25h12M3.75 6.75h.007v.008H3.75V6.75Zm.375 0a.375.375 0 1 1-.75 0 .375.375 0 0 1 .75 0ZM3.75 12h.007v.008H3.75V12Zm.375 0a.375.375 0 1 1-.75 0 .375.375 0 0 1 .75 0Zm-.375 5.25h.007v.008H3.75v-.008Zm.375 0a.375.375 0 1 1-.75 0 .375.375 0 0 1 .75 0Z"></path></svg><span>Board</span></a></div></div><div class="border-t border-border-subtle px-3 py-3 space-y-1"><div class="px-3 py-1 text-caption text-text-tertiary" aria-live="polite"><div class="flex items-center gap-2" title="Last refresh 1:51:24 PM — watcher disconnected"><span class="inline-block h-1.5 w-1.5 rounded-full bg-[var(--medium)]" aria-hidden="true"></span><span>Reconnecting…</span></div></div><div class="h-9"></div><div class="flex items-center gap-1.5 px-3 py-1 text-caption text-text-tertiary"><kbd class="rounded border border-border-default bg-surface-2 px-1.5 py-0.5 text-[11px]">⌘K</kbd><span>Quick nav</span></div></div></nav><main class="min-h-screen bg-surface-0 p-6 pt-16 md:ml-[220px] md:pt-6"><div class="mx-auto max-w-6xl"><div><h2 class="mb-sp-5 text-title font-semibold text-text-primary">External Calls</h2><div class="flex flex-col items-center justify-center border border-dashed border-border-default bg-surface-1 px-sp-5 py-sp-8 text-center" style="border-radius:var(--radius-sm)"><svg class="mb-4 h-12 w-12 text-text-tertiary" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="1.5"><path stroke-linecap="round" stroke-linejoin="round" d="M19.5 14.25v-2.625a3.375 3.375 0 0 0-3.375-3.375h-1.5A1.125 1.125 0 0 1 13.5 7.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H8.25m6.75 12H9.75m3 0H9.75m0 0v3m-3-6h1.5m-1.5 0v3m6-6h.008v.008H15V9.75Z"></path></svg><h3 class="mb-2 text-heading font-medium text-text-primary">Data not yet generated</h3><p class="mb-4 text-body text-text-secondary">Run the following command to generate this data:</p><code class="border border-border-default bg-surface-0 px-sp-4 py-sp-2 font-mono text-body text-accent" style="border-radius:var(--radius-sm)">hex calls</code></div></div></div></main></div><script src="/_next/static/chunks/webpack-08869f2b18792e51.js" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0]);self.__next_f.push([2,null])</script><script>self.__next_f.push([1,"1:HL[\"/_next/static/media/4c9affa5bc8f420e-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n2:HL[\"/_next/static/media/bb3ef058b751a6ad-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n3:HL[\"/_next/static/css/265d7e2538aaffc0.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"4:I[5268,[],\"\"]\n6:I[5276,[],\"\"]\n7:I[3297,[],\"\"]\n8:I[4595,[\"7498\",\"static/chunks/7498-ea83cb9e30ec5491.js\",\"3185\",\"static/chunks/app/layout-e0f50820b06a7621.js\"],\"ThemeProvider\"]\n9:I[2198,[\"7498\",\"static/chunks/7498-ea83cb9e30ec5491.js\",\"3185\",\"static/chunks/app/layout-e0f50820b06a7621.js\"],\"CommandPalette\"]\na:I[1187,[\"7498\",\"static/chunks/7498-ea83cb9e30ec5491.js\",\"3185\",\"static/chunks/app/layout-e0f50820b06a7621.js\"],\"DashboardLayout\"]\nc:I[9690,[],\"\"]\nd:[]\n"])</script><script>self.__next_f.push([1,"0:[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/265d7e2538aaffc0.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\"}]],[\"$\",\"$L4\",null,{\"buildId\":\"f3-iD1w0WCbTDKsUc5-Id\",\"assetPrefix\":\"\",\"initialCanonicalUrl\":\"/calls\",\"initialTree\":[\"\",{\"children\":[\"calls\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",true],\"initialSeedData\":[\"\",{\"children\":[\"calls\",{\"children\":[\"__PAGE__\",{},[[\"$L5\",[\"$\",\"div\",null,{\"children\":[[\"$\",\"h2\",null,{\"className\":\"mb-sp-5 text-title font-semibold text-text-primary\",\"children\":\"External Calls\"}],[\"$\",\"div\",null,{\"className\":\"flex flex-col items-center justify-center border border-dashed border-border-default bg-surface-1 px-sp-5 py-sp-8 text-center\",\"style\":{\"borderRadius\":\"var(--radius-sm)\"},\"children\":[[\"$\",\"svg\",null,{\"className\":\"mb-4 h-12 w-12 text-text-tertiary\",\"fill\":\"none\",\"viewBox\":\"0 0 24 24\",\"stroke\":\"currentColor\",\"strokeWidth\":1.5,\"children\":[\"$\",\"path\",null,{\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"d\":\"M19.5 14.25v-2.625a3.375 3.375 0 0 0-3.375-3.375h-1.5A1.125 1.125 0 0 1 13.5 7.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H8.25m6.75 12H9.75m3 0H9.75m0 0v3m-3-6h1.5m-1.5 0v3m6-6h.008v.008H15V9.75Z\"}]}],[\"$\",\"h3\",null,{\"className\":\"mb-2 text-heading font-medium text-text-primary\",\"children\":\"Data not yet generated\"}],[\"$\",\"p\",null,{\"className\":\"mb-4 text-body text-text-secondary\",\"children\":\"Run the following command to generate this data:\"}],[\"$\",\"code\",null,{\"className\":\"border border-border-default bg-surface-0 px-sp-4 py-sp-2 font-mono text-body text-accent\",\"style\":{\"borderRadius\":\"var(--radius-sm)\"},\"children\":\"hex calls\"}]]}]]}]],null],null]},[\"$\",\"$L6\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\",\"calls\",\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L7\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"notFoundStyles\":\"$undefined\",\"styles\":null}],null]},[[\"$\",\"html\",null,{\"lang\":\"en\",\"suppressHydrationWarning\":true,\"children\":[\"$\",\"body\",null,{\"className\":\"__variable_73ee6c __variable_3c557b min-h-screen bg-surface-0 text-text-primary font-sans\",\"children\":[\"$\",\"$L8\",null,{\"attribute\":\"data-theme\",\"defaultTheme\":\"dark\",\"enableSystem\":false,\"children\":[[\"$\",\"$L9\",null,{}],[\"$\",\"$La\",null,{\"children\":[\"$\",\"$L6\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L7\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"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\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"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)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":\"404\"}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],\"notFoundStyles\":[],\"styles\":null}]}]]}]}]}],null],null],\"couldBeIntercepted\":false,\"initialHead\":[null,\"$Lb\"],\"globalErrorComponent\":\"$c\",\"missingSlots\":\"$Wd\"}]]\n"])</script><script>self.__next_f.push([1,"b:[[\"$\",\"meta\",\"0\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}],[\"$\",\"meta\",\"1\",{\"charSet\":\"utf-8\"}],[\"$\",\"title\",\"2\",{\"children\":\"Hex\"}],[\"$\",\"meta\",\"3\",{\"name\":\"description\",\"content\":\"Local dashboard for Solidity smart contract audits\"}],[\"$\",\"link\",\"4\",{\"rel\":\"icon\",\"href\":\"/icon.svg?83fa4bf1ef0d214d\",\"type\":\"image/svg+xml\",\"sizes\":\"any\"}],[\"$\",\"meta\",\"5\",{\"name\":\"next-size-adjust\"}]]\n5:null\n"])</script></body></html>
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
2:I[5276,[],""]
|
|
2
|
-
3:I[3297,[],""]
|
|
3
|
-
4:I[4595,["7498","static/chunks/7498-ea83cb9e30ec5491.js","3185","static/chunks/app/layout-e0f50820b06a7621.js"],"ThemeProvider"]
|
|
4
|
-
5:I[2198,["7498","static/chunks/7498-ea83cb9e30ec5491.js","3185","static/chunks/app/layout-e0f50820b06a7621.js"],"CommandPalette"]
|
|
5
|
-
6:I[1187,["7498","static/chunks/7498-ea83cb9e30ec5491.js","3185","static/chunks/app/layout-e0f50820b06a7621.js"],"DashboardLayout"]
|
|
6
|
-
0:["f3-iD1w0WCbTDKsUc5-Id",[[["",{"children":["calls",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",{"children":["calls",{"children":["__PAGE__",{},[["$L1",["$","div",null,{"children":[["$","h2",null,{"className":"mb-sp-5 text-title font-semibold text-text-primary","children":"External Calls"}],["$","div",null,{"className":"flex flex-col items-center justify-center border border-dashed border-border-default bg-surface-1 px-sp-5 py-sp-8 text-center","style":{"borderRadius":"var(--radius-sm)"},"children":[["$","svg",null,{"className":"mb-4 h-12 w-12 text-text-tertiary","fill":"none","viewBox":"0 0 24 24","stroke":"currentColor","strokeWidth":1.5,"children":["$","path",null,{"strokeLinecap":"round","strokeLinejoin":"round","d":"M19.5 14.25v-2.625a3.375 3.375 0 0 0-3.375-3.375h-1.5A1.125 1.125 0 0 1 13.5 7.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H8.25m6.75 12H9.75m3 0H9.75m0 0v3m-3-6h1.5m-1.5 0v3m6-6h.008v.008H15V9.75Z"}]}],["$","h3",null,{"className":"mb-2 text-heading font-medium text-text-primary","children":"Data not yet generated"}],["$","p",null,{"className":"mb-4 text-body text-text-secondary","children":"Run the following command to generate this data:"}],["$","code",null,{"className":"border border-border-default bg-surface-0 px-sp-4 py-sp-2 font-mono text-body text-accent","style":{"borderRadius":"var(--radius-sm)"},"children":"hex calls"}]]}]]}]],null],null]},["$","$L2",null,{"parallelRouterKey":"children","segmentPath":["children","calls","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","styles":null}],null]},[["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":["$","body",null,{"className":"__variable_73ee6c __variable_3c557b min-h-screen bg-surface-0 text-text-primary font-sans","children":["$","$L4",null,{"attribute":"data-theme","defaultTheme":"dark","enableSystem":false,"children":[["$","$L5",null,{}],["$","$L6",null,{"children":["$","$L2",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"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"},"children":["$","div",null,{"children":[["$","style",null,{"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)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"styles":null}]}]]}]}]}],null],null],[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/265d7e2538aaffc0.css","precedence":"next","crossOrigin":"$undefined"}]],[null,"$L7"]]]]]
|
|
7
|
-
7:[["$","meta","0",{"name":"viewport","content":"width=device-width, initial-scale=1"}],["$","meta","1",{"charSet":"utf-8"}],["$","title","2",{"children":"Hex"}],["$","meta","3",{"name":"description","content":"Local dashboard for Solidity smart contract audits"}],["$","link","4",{"rel":"icon","href":"/icon.svg?83fa4bf1ef0d214d","type":"image/svg+xml","sizes":"any"}],["$","meta","5",{"name":"next-size-adjust"}]]
|
|
8
|
-
1:null
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" href="/_next/static/media/4c9affa5bc8f420e-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="/_next/static/media/bb3ef058b751a6ad-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="stylesheet" href="/_next/static/css/265d7e2538aaffc0.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-08869f2b18792e51.js"/><script src="/_next/static/chunks/618f8807-547c5614e1318888.js" async=""></script><script src="/_next/static/chunks/3205-728c260fbb4f89c6.js" async=""></script><script src="/_next/static/chunks/main-app-9d2f6b8a47133e9b.js" async=""></script><script src="/_next/static/chunks/7498-ea83cb9e30ec5491.js" async=""></script><script src="/_next/static/chunks/app/layout-e0f50820b06a7621.js" async=""></script><title>Hex</title><meta name="description" content="Local dashboard for Solidity smart contract audits"/><link rel="icon" href="/icon.svg?83fa4bf1ef0d214d" type="image/svg+xml" sizes="any"/><meta name="next-size-adjust"/><script src="/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js" noModule=""></script></head><body class="__variable_73ee6c __variable_3c557b min-h-screen bg-surface-0 text-text-primary font-sans"><script>((e,t,r,n,o,l,a,u)=>{let i=document.documentElement,s=["light","dark"];function c(t){(Array.isArray(e)?e:[e]).forEach(e=>{let r="class"===e,n=r&&l?o.map(e=>l[e]||e):o;r?(i.classList.remove(...n),i.classList.add(l&&l[t]?l[t]:t)):i.setAttribute(e,t)}),u&&s.includes(t)&&(i.style.colorScheme=t)}if(n)c(n);else try{let e=localStorage.getItem(t)||r,n=a&&"system"===e?window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":e;c(n)}catch(e){}})("data-theme","theme","dark",null,["light","dark"],null,false,true)</script><div class="min-h-screen"><button type="button" aria-label="Toggle navigation" class="fixed left-3 top-3 z-[60] flex h-10 w-10 items-center justify-center rounded-md bg-surface-1 border border-border-default text-text-secondary hover:text-text-primary md:hidden"><svg class="h-5 w-5" aria-hidden="true" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><path stroke-linecap="round" stroke-linejoin="round" d="M3.75 6.75h16.5M3.75 12h16.5m-16.5 5.25h16.5"></path></svg></button><nav aria-label="Main navigation" class="fixed left-0 top-0 z-50 flex h-screen w-[220px] flex-col border-r border-border-subtle bg-surface-1 transition-transform duration-200 -translate-x-full md:translate-x-0"><div class="px-5 pb-4 pt-6"><div class="flex items-baseline gap-2"><span class="text-title font-semibold text-text-primary">Hex</span><span class="text-caption text-text-tertiary">v0.4.3</span></div></div><div class="flex-1 overflow-y-auto px-3 pb-4"><div class="mt-6 first:mt-0"><div class="mb-1.5 px-3 text-caption font-medium text-text-tertiary">Recon</div><a class="group flex items-center gap-2.5 rounded-md px-3 py-2 text-body text-text-secondary hover:bg-surface-2 hover:text-text-primary" href="/"><svg class="h-4 w-4 shrink-0" aria-hidden="true" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><path stroke-linecap="round" stroke-linejoin="round" d="m2.25 12 8.954-8.955a1.126 1.126 0 0 1 1.591 0L21.75 12M4.5 9.75v10.125c0 .621.504 1.125 1.125 1.125H9.75v-4.875c0-.621.504-1.125 1.125-1.125h2.25c.621 0 1.125.504 1.125 1.125V21h4.125c.621 0 1.125-.504 1.125-1.125V9.75M8.25 21h8.25"></path></svg><span>Home</span></a><a class="group flex items-center gap-2.5 rounded-md px-3 py-2 text-body text-text-secondary hover:bg-surface-2 hover:text-text-primary" href="/progress"><svg class="h-4 w-4 shrink-0" aria-hidden="true" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><path stroke-linecap="round" stroke-linejoin="round" d="M11.35 3.836c-.065.21-.1.433-.1.664 0 .414.336.75.75.75h4.5a.75.75 0 0 0 .75-.75 2.25 2.25 0 0 0-.1-.664m-5.8 0A2.251 2.251 0 0 1 13.5 2.25H15a2.25 2.25 0 0 1 2.15 1.586m-5.8 0c-.376.023-.75.05-1.124.08C9.095 4.01 8.25 4.973 8.25 6.108V8.25m8.9-4.414c.376.023.75.05 1.124.08 1.131.094 1.976 1.057 1.976 2.192V16.5A2.25 2.25 0 0 1 18 18.75h-2.25m-7.5-10.5H4.875c-.621 0-1.125.504-1.125 1.125v11.25c0 .621.504 1.125 1.125 1.125h9.75c.621 0 1.125-.504 1.125-1.125V18.75m-7.5-10.5h6.375c.621 0 1.125.504 1.125 1.125v9.375m-8.25-3 1.5 1.5 3-3.75"></path></svg><span>Progress</span></a><a class="group flex items-center gap-2.5 rounded-md px-3 py-2 text-body text-text-secondary hover:bg-surface-2 hover:text-text-primary" href="/stats"><svg class="h-4 w-4 shrink-0" aria-hidden="true" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><path stroke-linecap="round" stroke-linejoin="round" d="M3 13.125C3 12.504 3.504 12 4.125 12h2.25c.621 0 1.125.504 1.125 1.125v6.75C7.5 20.496 6.996 21 6.375 21h-2.25A1.125 1.125 0 0 1 3 19.875v-6.75ZM9.75 8.625c0-.621.504-1.125 1.125-1.125h2.25c.621 0 1.125.504 1.125 1.125v11.25c0 .621-.504 1.125-1.125 1.125h-2.25a1.125 1.125 0 0 1-1.125-1.125V8.625ZM16.5 4.125c0-.621.504-1.125 1.125-1.125h2.25C20.496 3 21 3.504 21 4.125v15.75c0 .621-.504 1.125-1.125 1.125h-2.25a1.125 1.125 0 0 1-1.125-1.125V4.125Z"></path></svg><span>Stats</span></a></div><div class="mt-6 first:mt-0"><div class="mb-1.5 px-3 text-caption font-medium text-text-tertiary">Analysis</div><a class="group flex items-center gap-2.5 rounded-md px-3 py-2 text-body text-text-secondary hover:bg-surface-2 hover:text-text-primary" href="/access"><svg class="h-4 w-4 shrink-0" aria-hidden="true" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><path stroke-linecap="round" stroke-linejoin="round" d="M16.5 10.5V6.75a4.5 4.5 0 1 0-9 0v3.75m-.75 11.25h10.5a2.25 2.25 0 0 0 2.25-2.25v-6.75a2.25 2.25 0 0 0-2.25-2.25H6.75a2.25 2.25 0 0 0-2.25 2.25v6.75a2.25 2.25 0 0 0 2.25 2.25Z"></path></svg><span>Access Control</span></a><a class="group flex items-center gap-2.5 rounded-md px-3 py-2 text-body text-text-secondary hover:bg-surface-2 hover:text-text-primary" href="/functions"><svg class="h-4 w-4 shrink-0" aria-hidden="true" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><path stroke-linecap="round" stroke-linejoin="round" d="M17.25 6.75 22.5 12l-5.25 5.25m-10.5 0L1.5 12l5.25-5.25m7.5-3-4.5 16.5"></path></svg><span>Functions</span></a><a class="group flex items-center gap-2.5 rounded-md px-3 py-2 text-body text-text-secondary hover:bg-surface-2 hover:text-text-primary" href="/calls"><svg class="h-4 w-4 shrink-0" aria-hidden="true" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><path stroke-linecap="round" stroke-linejoin="round" d="M7.5 21 3 16.5m0 0L7.5 12M3 16.5h13.5m0-13.5L21 7.5m0 0L16.5 12M21 7.5H7.5"></path></svg><span>Ext Calls</span></a></div><div class="mt-6 first:mt-0"><div class="mb-1.5 px-3 text-caption font-medium text-text-tertiary">Reasoning</div><a aria-current="page" class="group flex items-center gap-2.5 rounded-md px-3 py-2 text-body bg-accent-subtle text-accent font-medium" href="/conformance"><svg class="h-4 w-4 shrink-0" aria-hidden="true" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><path stroke-linecap="round" stroke-linejoin="round" d="M10.125 2.25h-4.5c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125v-9M10.125 2.25h.375a9 9 0 0 1 9 9v.375M10.125 2.25A3.375 3.375 0 0 1 13.5 5.625v1.5c0 .621.504 1.125 1.125 1.125h1.5a3.375 3.375 0 0 1 3.375 3.375"></path></svg><span>Spec Conformance</span></a></div><div class="mt-6 first:mt-0"><div class="mb-1.5 px-3 text-caption font-medium text-text-tertiary">Visual</div><a class="group flex items-center gap-2.5 rounded-md px-3 py-2 text-body text-text-secondary hover:bg-surface-2 hover:text-text-primary" href="/diagram"><svg class="h-4 w-4 shrink-0" aria-hidden="true" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><path stroke-linecap="round" stroke-linejoin="round" d="M7.5 3.75H6A2.25 2.25 0 0 0 3.75 6v1.5M16.5 3.75H18A2.25 2.25 0 0 1 20.25 6v1.5m0 9V18A2.25 2.25 0 0 1 18 20.25h-1.5m-9 0H6A2.25 2.25 0 0 1 3.75 18v-1.5M15 12a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z"></path></svg><span>Diagram</span></a><a class="group flex items-center gap-2.5 rounded-md px-3 py-2 text-body text-text-secondary hover:bg-surface-2 hover:text-text-primary" href="/flows"><svg class="h-4 w-4 shrink-0" aria-hidden="true" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><path stroke-linecap="round" stroke-linejoin="round" d="M3.75 3v11.25A2.25 2.25 0 0 0 6 16.5h2.25M3.75 3h-1.5m1.5 0h16.5m0 0h1.5m-1.5 0v11.25A2.25 2.25 0 0 1 18 16.5h-2.25m-7.5 0h7.5m-7.5 0-1 3m8.5-3 1 3m0 0 .5 1.5m-.5-1.5h-9.5m0 0-.5 1.5"></path></svg><span>Flows</span></a></div><div class="mt-6 first:mt-0"><div class="mb-1.5 px-3 text-caption font-medium text-text-tertiary">Issues</div><a class="group flex items-center gap-2.5 rounded-md px-3 py-2 text-body text-text-secondary hover:bg-surface-2 hover:text-text-primary" href="/issues"><svg class="h-4 w-4 shrink-0" aria-hidden="true" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><path stroke-linecap="round" stroke-linejoin="round" d="M8.25 6.75h12M8.25 12h12m-12 5.25h12M3.75 6.75h.007v.008H3.75V6.75Zm.375 0a.375.375 0 1 1-.75 0 .375.375 0 0 1 .75 0ZM3.75 12h.007v.008H3.75V12Zm.375 0a.375.375 0 1 1-.75 0 .375.375 0 0 1 .75 0Zm-.375 5.25h.007v.008H3.75v-.008Zm.375 0a.375.375 0 1 1-.75 0 .375.375 0 0 1 .75 0Z"></path></svg><span>Board</span></a></div></div><div class="border-t border-border-subtle px-3 py-3 space-y-1"><div class="px-3 py-1 text-caption text-text-tertiary" aria-live="polite"><div class="flex items-center gap-2" title="Last refresh 1:51:24 PM — watcher disconnected"><span class="inline-block h-1.5 w-1.5 rounded-full bg-[var(--medium)]" aria-hidden="true"></span><span>Reconnecting…</span></div></div><div class="h-9"></div><div class="flex items-center gap-1.5 px-3 py-1 text-caption text-text-tertiary"><kbd class="rounded border border-border-default bg-surface-2 px-1.5 py-0.5 text-[11px]">⌘K</kbd><span>Quick nav</span></div></div></nav><main class="min-h-screen bg-surface-0 p-6 pt-16 md:ml-[220px] md:pt-6"><div class="mx-auto max-w-6xl"><div><h2 class="mb-sp-5 text-title font-semibold text-text-primary">Spec Conformance</h2><div class="flex flex-col items-center justify-center border border-dashed border-border-default bg-surface-1 px-sp-5 py-sp-8 text-center" style="border-radius:var(--radius-sm)"><svg class="mb-4 h-12 w-12 text-text-tertiary" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="1.5"><path stroke-linecap="round" stroke-linejoin="round" d="M19.5 14.25v-2.625a3.375 3.375 0 0 0-3.375-3.375h-1.5A1.125 1.125 0 0 1 13.5 7.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H8.25m6.75 12H9.75m3 0H9.75m0 0v3m-3-6h1.5m-1.5 0v3m6-6h.008v.008H15V9.75Z"></path></svg><h3 class="mb-2 text-heading font-medium text-text-primary">Data not yet generated</h3><p class="mb-4 text-body text-text-secondary">Run the following command to generate this data:</p><code class="border border-border-default bg-surface-0 px-sp-4 py-sp-2 font-mono text-body text-accent" style="border-radius:var(--radius-sm)">Use the check-spec-conformance skill</code></div></div></div></main></div><script src="/_next/static/chunks/webpack-08869f2b18792e51.js" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0]);self.__next_f.push([2,null])</script><script>self.__next_f.push([1,"1:HL[\"/_next/static/media/4c9affa5bc8f420e-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n2:HL[\"/_next/static/media/bb3ef058b751a6ad-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n3:HL[\"/_next/static/css/265d7e2538aaffc0.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"4:I[5268,[],\"\"]\n6:I[5276,[],\"\"]\n7:I[3297,[],\"\"]\n8:I[4595,[\"7498\",\"static/chunks/7498-ea83cb9e30ec5491.js\",\"3185\",\"static/chunks/app/layout-e0f50820b06a7621.js\"],\"ThemeProvider\"]\n9:I[2198,[\"7498\",\"static/chunks/7498-ea83cb9e30ec5491.js\",\"3185\",\"static/chunks/app/layout-e0f50820b06a7621.js\"],\"CommandPalette\"]\na:I[1187,[\"7498\",\"static/chunks/7498-ea83cb9e30ec5491.js\",\"3185\",\"static/chunks/app/layout-e0f50820b06a7621.js\"],\"DashboardLayout\"]\nc:I[9690,[],\"\"]\nd:[]\n"])</script><script>self.__next_f.push([1,"0:[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/265d7e2538aaffc0.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\"}]],[\"$\",\"$L4\",null,{\"buildId\":\"f3-iD1w0WCbTDKsUc5-Id\",\"assetPrefix\":\"\",\"initialCanonicalUrl\":\"/conformance\",\"initialTree\":[\"\",{\"children\":[\"conformance\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",true],\"initialSeedData\":[\"\",{\"children\":[\"conformance\",{\"children\":[\"__PAGE__\",{},[[\"$L5\",[\"$\",\"div\",null,{\"children\":[[\"$\",\"h2\",null,{\"className\":\"mb-sp-5 text-title font-semibold text-text-primary\",\"children\":\"Spec Conformance\"}],[\"$\",\"div\",null,{\"className\":\"flex flex-col items-center justify-center border border-dashed border-border-default bg-surface-1 px-sp-5 py-sp-8 text-center\",\"style\":{\"borderRadius\":\"var(--radius-sm)\"},\"children\":[[\"$\",\"svg\",null,{\"className\":\"mb-4 h-12 w-12 text-text-tertiary\",\"fill\":\"none\",\"viewBox\":\"0 0 24 24\",\"stroke\":\"currentColor\",\"strokeWidth\":1.5,\"children\":[\"$\",\"path\",null,{\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"d\":\"M19.5 14.25v-2.625a3.375 3.375 0 0 0-3.375-3.375h-1.5A1.125 1.125 0 0 1 13.5 7.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H8.25m6.75 12H9.75m3 0H9.75m0 0v3m-3-6h1.5m-1.5 0v3m6-6h.008v.008H15V9.75Z\"}]}],[\"$\",\"h3\",null,{\"className\":\"mb-2 text-heading font-medium text-text-primary\",\"children\":\"Data not yet generated\"}],[\"$\",\"p\",null,{\"className\":\"mb-4 text-body text-text-secondary\",\"children\":\"Run the following command to generate this data:\"}],[\"$\",\"code\",null,{\"className\":\"border border-border-default bg-surface-0 px-sp-4 py-sp-2 font-mono text-body text-accent\",\"style\":{\"borderRadius\":\"var(--radius-sm)\"},\"children\":\"Use the check-spec-conformance skill\"}]]}]]}]],null],null]},[\"$\",\"$L6\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\",\"conformance\",\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L7\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"notFoundStyles\":\"$undefined\",\"styles\":null}],null]},[[\"$\",\"html\",null,{\"lang\":\"en\",\"suppressHydrationWarning\":true,\"children\":[\"$\",\"body\",null,{\"className\":\"__variable_73ee6c __variable_3c557b min-h-screen bg-surface-0 text-text-primary font-sans\",\"children\":[\"$\",\"$L8\",null,{\"attribute\":\"data-theme\",\"defaultTheme\":\"dark\",\"enableSystem\":false,\"children\":[[\"$\",\"$L9\",null,{}],[\"$\",\"$La\",null,{\"children\":[\"$\",\"$L6\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L7\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"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\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"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)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":\"404\"}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],\"notFoundStyles\":[],\"styles\":null}]}]]}]}]}],null],null],\"couldBeIntercepted\":false,\"initialHead\":[null,\"$Lb\"],\"globalErrorComponent\":\"$c\",\"missingSlots\":\"$Wd\"}]]\n"])</script><script>self.__next_f.push([1,"b:[[\"$\",\"meta\",\"0\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}],[\"$\",\"meta\",\"1\",{\"charSet\":\"utf-8\"}],[\"$\",\"title\",\"2\",{\"children\":\"Hex\"}],[\"$\",\"meta\",\"3\",{\"name\":\"description\",\"content\":\"Local dashboard for Solidity smart contract audits\"}],[\"$\",\"link\",\"4\",{\"rel\":\"icon\",\"href\":\"/icon.svg?83fa4bf1ef0d214d\",\"type\":\"image/svg+xml\",\"sizes\":\"any\"}],[\"$\",\"meta\",\"5\",{\"name\":\"next-size-adjust\"}]]\n5:null\n"])</script></body></html>
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
2:I[5276,[],""]
|
|
2
|
-
3:I[3297,[],""]
|
|
3
|
-
4:I[4595,["7498","static/chunks/7498-ea83cb9e30ec5491.js","3185","static/chunks/app/layout-e0f50820b06a7621.js"],"ThemeProvider"]
|
|
4
|
-
5:I[2198,["7498","static/chunks/7498-ea83cb9e30ec5491.js","3185","static/chunks/app/layout-e0f50820b06a7621.js"],"CommandPalette"]
|
|
5
|
-
6:I[1187,["7498","static/chunks/7498-ea83cb9e30ec5491.js","3185","static/chunks/app/layout-e0f50820b06a7621.js"],"DashboardLayout"]
|
|
6
|
-
0:["f3-iD1w0WCbTDKsUc5-Id",[[["",{"children":["conformance",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",{"children":["conformance",{"children":["__PAGE__",{},[["$L1",["$","div",null,{"children":[["$","h2",null,{"className":"mb-sp-5 text-title font-semibold text-text-primary","children":"Spec Conformance"}],["$","div",null,{"className":"flex flex-col items-center justify-center border border-dashed border-border-default bg-surface-1 px-sp-5 py-sp-8 text-center","style":{"borderRadius":"var(--radius-sm)"},"children":[["$","svg",null,{"className":"mb-4 h-12 w-12 text-text-tertiary","fill":"none","viewBox":"0 0 24 24","stroke":"currentColor","strokeWidth":1.5,"children":["$","path",null,{"strokeLinecap":"round","strokeLinejoin":"round","d":"M19.5 14.25v-2.625a3.375 3.375 0 0 0-3.375-3.375h-1.5A1.125 1.125 0 0 1 13.5 7.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H8.25m6.75 12H9.75m3 0H9.75m0 0v3m-3-6h1.5m-1.5 0v3m6-6h.008v.008H15V9.75Z"}]}],["$","h3",null,{"className":"mb-2 text-heading font-medium text-text-primary","children":"Data not yet generated"}],["$","p",null,{"className":"mb-4 text-body text-text-secondary","children":"Run the following command to generate this data:"}],["$","code",null,{"className":"border border-border-default bg-surface-0 px-sp-4 py-sp-2 font-mono text-body text-accent","style":{"borderRadius":"var(--radius-sm)"},"children":"Use the check-spec-conformance skill"}]]}]]}]],null],null]},["$","$L2",null,{"parallelRouterKey":"children","segmentPath":["children","conformance","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","styles":null}],null]},[["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":["$","body",null,{"className":"__variable_73ee6c __variable_3c557b min-h-screen bg-surface-0 text-text-primary font-sans","children":["$","$L4",null,{"attribute":"data-theme","defaultTheme":"dark","enableSystem":false,"children":[["$","$L5",null,{}],["$","$L6",null,{"children":["$","$L2",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"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"},"children":["$","div",null,{"children":[["$","style",null,{"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)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"styles":null}]}]]}]}]}],null],null],[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/265d7e2538aaffc0.css","precedence":"next","crossOrigin":"$undefined"}]],[null,"$L7"]]]]]
|
|
7
|
-
7:[["$","meta","0",{"name":"viewport","content":"width=device-width, initial-scale=1"}],["$","meta","1",{"charSet":"utf-8"}],["$","title","2",{"children":"Hex"}],["$","meta","3",{"name":"description","content":"Local dashboard for Solidity smart contract audits"}],["$","link","4",{"rel":"icon","href":"/icon.svg?83fa4bf1ef0d214d","type":"image/svg+xml","sizes":"any"}],["$","meta","5",{"name":"next-size-adjust"}]]
|
|
8
|
-
1:null
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" href="/_next/static/media/4c9affa5bc8f420e-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="/_next/static/media/bb3ef058b751a6ad-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="stylesheet" href="/_next/static/css/265d7e2538aaffc0.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-08869f2b18792e51.js"/><script src="/_next/static/chunks/618f8807-547c5614e1318888.js" async=""></script><script src="/_next/static/chunks/3205-728c260fbb4f89c6.js" async=""></script><script src="/_next/static/chunks/main-app-9d2f6b8a47133e9b.js" async=""></script><script src="/_next/static/chunks/7498-ea83cb9e30ec5491.js" async=""></script><script src="/_next/static/chunks/app/layout-e0f50820b06a7621.js" async=""></script><title>Hex</title><meta name="description" content="Local dashboard for Solidity smart contract audits"/><link rel="icon" href="/icon.svg?83fa4bf1ef0d214d" type="image/svg+xml" sizes="any"/><meta name="next-size-adjust"/><script src="/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js" noModule=""></script></head><body class="__variable_73ee6c __variable_3c557b min-h-screen bg-surface-0 text-text-primary font-sans"><script>((e,t,r,n,o,l,a,u)=>{let i=document.documentElement,s=["light","dark"];function c(t){(Array.isArray(e)?e:[e]).forEach(e=>{let r="class"===e,n=r&&l?o.map(e=>l[e]||e):o;r?(i.classList.remove(...n),i.classList.add(l&&l[t]?l[t]:t)):i.setAttribute(e,t)}),u&&s.includes(t)&&(i.style.colorScheme=t)}if(n)c(n);else try{let e=localStorage.getItem(t)||r,n=a&&"system"===e?window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":e;c(n)}catch(e){}})("data-theme","theme","dark",null,["light","dark"],null,false,true)</script><div class="min-h-screen"><button type="button" aria-label="Toggle navigation" class="fixed left-3 top-3 z-[60] flex h-10 w-10 items-center justify-center rounded-md bg-surface-1 border border-border-default text-text-secondary hover:text-text-primary md:hidden"><svg class="h-5 w-5" aria-hidden="true" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><path stroke-linecap="round" stroke-linejoin="round" d="M3.75 6.75h16.5M3.75 12h16.5m-16.5 5.25h16.5"></path></svg></button><nav aria-label="Main navigation" class="fixed left-0 top-0 z-50 flex h-screen w-[220px] flex-col border-r border-border-subtle bg-surface-1 transition-transform duration-200 -translate-x-full md:translate-x-0"><div class="px-5 pb-4 pt-6"><div class="flex items-baseline gap-2"><span class="text-title font-semibold text-text-primary">Hex</span><span class="text-caption text-text-tertiary">v0.4.3</span></div></div><div class="flex-1 overflow-y-auto px-3 pb-4"><div class="mt-6 first:mt-0"><div class="mb-1.5 px-3 text-caption font-medium text-text-tertiary">Recon</div><a class="group flex items-center gap-2.5 rounded-md px-3 py-2 text-body text-text-secondary hover:bg-surface-2 hover:text-text-primary" href="/"><svg class="h-4 w-4 shrink-0" aria-hidden="true" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><path stroke-linecap="round" stroke-linejoin="round" d="m2.25 12 8.954-8.955a1.126 1.126 0 0 1 1.591 0L21.75 12M4.5 9.75v10.125c0 .621.504 1.125 1.125 1.125H9.75v-4.875c0-.621.504-1.125 1.125-1.125h2.25c.621 0 1.125.504 1.125 1.125V21h4.125c.621 0 1.125-.504 1.125-1.125V9.75M8.25 21h8.25"></path></svg><span>Home</span></a><a class="group flex items-center gap-2.5 rounded-md px-3 py-2 text-body text-text-secondary hover:bg-surface-2 hover:text-text-primary" href="/progress"><svg class="h-4 w-4 shrink-0" aria-hidden="true" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><path stroke-linecap="round" stroke-linejoin="round" d="M11.35 3.836c-.065.21-.1.433-.1.664 0 .414.336.75.75.75h4.5a.75.75 0 0 0 .75-.75 2.25 2.25 0 0 0-.1-.664m-5.8 0A2.251 2.251 0 0 1 13.5 2.25H15a2.25 2.25 0 0 1 2.15 1.586m-5.8 0c-.376.023-.75.05-1.124.08C9.095 4.01 8.25 4.973 8.25 6.108V8.25m8.9-4.414c.376.023.75.05 1.124.08 1.131.094 1.976 1.057 1.976 2.192V16.5A2.25 2.25 0 0 1 18 18.75h-2.25m-7.5-10.5H4.875c-.621 0-1.125.504-1.125 1.125v11.25c0 .621.504 1.125 1.125 1.125h9.75c.621 0 1.125-.504 1.125-1.125V18.75m-7.5-10.5h6.375c.621 0 1.125.504 1.125 1.125v9.375m-8.25-3 1.5 1.5 3-3.75"></path></svg><span>Progress</span></a><a class="group flex items-center gap-2.5 rounded-md px-3 py-2 text-body text-text-secondary hover:bg-surface-2 hover:text-text-primary" href="/stats"><svg class="h-4 w-4 shrink-0" aria-hidden="true" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><path stroke-linecap="round" stroke-linejoin="round" d="M3 13.125C3 12.504 3.504 12 4.125 12h2.25c.621 0 1.125.504 1.125 1.125v6.75C7.5 20.496 6.996 21 6.375 21h-2.25A1.125 1.125 0 0 1 3 19.875v-6.75ZM9.75 8.625c0-.621.504-1.125 1.125-1.125h2.25c.621 0 1.125.504 1.125 1.125v11.25c0 .621-.504 1.125-1.125 1.125h-2.25a1.125 1.125 0 0 1-1.125-1.125V8.625ZM16.5 4.125c0-.621.504-1.125 1.125-1.125h2.25C20.496 3 21 3.504 21 4.125v15.75c0 .621-.504 1.125-1.125 1.125h-2.25a1.125 1.125 0 0 1-1.125-1.125V4.125Z"></path></svg><span>Stats</span></a></div><div class="mt-6 first:mt-0"><div class="mb-1.5 px-3 text-caption font-medium text-text-tertiary">Analysis</div><a class="group flex items-center gap-2.5 rounded-md px-3 py-2 text-body text-text-secondary hover:bg-surface-2 hover:text-text-primary" href="/access"><svg class="h-4 w-4 shrink-0" aria-hidden="true" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><path stroke-linecap="round" stroke-linejoin="round" d="M16.5 10.5V6.75a4.5 4.5 0 1 0-9 0v3.75m-.75 11.25h10.5a2.25 2.25 0 0 0 2.25-2.25v-6.75a2.25 2.25 0 0 0-2.25-2.25H6.75a2.25 2.25 0 0 0-2.25 2.25v6.75a2.25 2.25 0 0 0 2.25 2.25Z"></path></svg><span>Access Control</span></a><a aria-current="page" class="group flex items-center gap-2.5 rounded-md px-3 py-2 text-body bg-accent-subtle text-accent font-medium" href="/functions"><svg class="h-4 w-4 shrink-0" aria-hidden="true" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><path stroke-linecap="round" stroke-linejoin="round" d="M17.25 6.75 22.5 12l-5.25 5.25m-10.5 0L1.5 12l5.25-5.25m7.5-3-4.5 16.5"></path></svg><span>Functions</span></a><a class="group flex items-center gap-2.5 rounded-md px-3 py-2 text-body text-text-secondary hover:bg-surface-2 hover:text-text-primary" href="/calls"><svg class="h-4 w-4 shrink-0" aria-hidden="true" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><path stroke-linecap="round" stroke-linejoin="round" d="M7.5 21 3 16.5m0 0L7.5 12M3 16.5h13.5m0-13.5L21 7.5m0 0L16.5 12M21 7.5H7.5"></path></svg><span>Ext Calls</span></a></div><div class="mt-6 first:mt-0"><div class="mb-1.5 px-3 text-caption font-medium text-text-tertiary">Reasoning</div><a class="group flex items-center gap-2.5 rounded-md px-3 py-2 text-body text-text-secondary hover:bg-surface-2 hover:text-text-primary" href="/conformance"><svg class="h-4 w-4 shrink-0" aria-hidden="true" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><path stroke-linecap="round" stroke-linejoin="round" d="M10.125 2.25h-4.5c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125v-9M10.125 2.25h.375a9 9 0 0 1 9 9v.375M10.125 2.25A3.375 3.375 0 0 1 13.5 5.625v1.5c0 .621.504 1.125 1.125 1.125h1.5a3.375 3.375 0 0 1 3.375 3.375"></path></svg><span>Spec Conformance</span></a></div><div class="mt-6 first:mt-0"><div class="mb-1.5 px-3 text-caption font-medium text-text-tertiary">Visual</div><a class="group flex items-center gap-2.5 rounded-md px-3 py-2 text-body text-text-secondary hover:bg-surface-2 hover:text-text-primary" href="/diagram"><svg class="h-4 w-4 shrink-0" aria-hidden="true" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><path stroke-linecap="round" stroke-linejoin="round" d="M7.5 3.75H6A2.25 2.25 0 0 0 3.75 6v1.5M16.5 3.75H18A2.25 2.25 0 0 1 20.25 6v1.5m0 9V18A2.25 2.25 0 0 1 18 20.25h-1.5m-9 0H6A2.25 2.25 0 0 1 3.75 18v-1.5M15 12a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z"></path></svg><span>Diagram</span></a><a class="group flex items-center gap-2.5 rounded-md px-3 py-2 text-body text-text-secondary hover:bg-surface-2 hover:text-text-primary" href="/flows"><svg class="h-4 w-4 shrink-0" aria-hidden="true" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><path stroke-linecap="round" stroke-linejoin="round" d="M3.75 3v11.25A2.25 2.25 0 0 0 6 16.5h2.25M3.75 3h-1.5m1.5 0h16.5m0 0h1.5m-1.5 0v11.25A2.25 2.25 0 0 1 18 16.5h-2.25m-7.5 0h7.5m-7.5 0-1 3m8.5-3 1 3m0 0 .5 1.5m-.5-1.5h-9.5m0 0-.5 1.5"></path></svg><span>Flows</span></a></div><div class="mt-6 first:mt-0"><div class="mb-1.5 px-3 text-caption font-medium text-text-tertiary">Issues</div><a class="group flex items-center gap-2.5 rounded-md px-3 py-2 text-body text-text-secondary hover:bg-surface-2 hover:text-text-primary" href="/issues"><svg class="h-4 w-4 shrink-0" aria-hidden="true" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><path stroke-linecap="round" stroke-linejoin="round" d="M8.25 6.75h12M8.25 12h12m-12 5.25h12M3.75 6.75h.007v.008H3.75V6.75Zm.375 0a.375.375 0 1 1-.75 0 .375.375 0 0 1 .75 0ZM3.75 12h.007v.008H3.75V12Zm.375 0a.375.375 0 1 1-.75 0 .375.375 0 0 1 .75 0Zm-.375 5.25h.007v.008H3.75v-.008Zm.375 0a.375.375 0 1 1-.75 0 .375.375 0 0 1 .75 0Z"></path></svg><span>Board</span></a></div></div><div class="border-t border-border-subtle px-3 py-3 space-y-1"><div class="px-3 py-1 text-caption text-text-tertiary" aria-live="polite"><div class="flex items-center gap-2" title="Last refresh 1:51:24 PM — watcher disconnected"><span class="inline-block h-1.5 w-1.5 rounded-full bg-[var(--medium)]" aria-hidden="true"></span><span>Reconnecting…</span></div></div><div class="h-9"></div><div class="flex items-center gap-1.5 px-3 py-1 text-caption text-text-tertiary"><kbd class="rounded border border-border-default bg-surface-2 px-1.5 py-0.5 text-[11px]">⌘K</kbd><span>Quick nav</span></div></div></nav><main class="min-h-screen bg-surface-0 p-6 pt-16 md:ml-[220px] md:pt-6"><div class="mx-auto max-w-6xl"><div><h2 class="mb-sp-5 text-title font-semibold text-text-primary">Functions</h2><div class="flex flex-col items-center justify-center border border-dashed border-border-default bg-surface-1 px-sp-5 py-sp-8 text-center" style="border-radius:var(--radius-sm)"><svg class="mb-4 h-12 w-12 text-text-tertiary" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="1.5"><path stroke-linecap="round" stroke-linejoin="round" d="M19.5 14.25v-2.625a3.375 3.375 0 0 0-3.375-3.375h-1.5A1.125 1.125 0 0 1 13.5 7.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H8.25m6.75 12H9.75m3 0H9.75m0 0v3m-3-6h1.5m-1.5 0v3m6-6h.008v.008H15V9.75Z"></path></svg><h3 class="mb-2 text-heading font-medium text-text-primary">Data not yet generated</h3><p class="mb-4 text-body text-text-secondary">Run the following command to generate this data:</p><code class="border border-border-default bg-surface-0 px-sp-4 py-sp-2 font-mono text-body text-accent" style="border-radius:var(--radius-sm)">hex access</code></div></div></div></main></div><script src="/_next/static/chunks/webpack-08869f2b18792e51.js" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0]);self.__next_f.push([2,null])</script><script>self.__next_f.push([1,"1:HL[\"/_next/static/media/4c9affa5bc8f420e-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n2:HL[\"/_next/static/media/bb3ef058b751a6ad-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n3:HL[\"/_next/static/css/265d7e2538aaffc0.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"4:I[5268,[],\"\"]\n6:I[5276,[],\"\"]\n7:I[3297,[],\"\"]\n8:I[4595,[\"7498\",\"static/chunks/7498-ea83cb9e30ec5491.js\",\"3185\",\"static/chunks/app/layout-e0f50820b06a7621.js\"],\"ThemeProvider\"]\n9:I[2198,[\"7498\",\"static/chunks/7498-ea83cb9e30ec5491.js\",\"3185\",\"static/chunks/app/layout-e0f50820b06a7621.js\"],\"CommandPalette\"]\na:I[1187,[\"7498\",\"static/chunks/7498-ea83cb9e30ec5491.js\",\"3185\",\"static/chunks/app/layout-e0f50820b06a7621.js\"],\"DashboardLayout\"]\nc:I[9690,[],\"\"]\nd:[]\n"])</script><script>self.__next_f.push([1,"0:[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/265d7e2538aaffc0.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\"}]],[\"$\",\"$L4\",null,{\"buildId\":\"f3-iD1w0WCbTDKsUc5-Id\",\"assetPrefix\":\"\",\"initialCanonicalUrl\":\"/functions\",\"initialTree\":[\"\",{\"children\":[\"functions\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",true],\"initialSeedData\":[\"\",{\"children\":[\"functions\",{\"children\":[\"__PAGE__\",{},[[\"$L5\",[\"$\",\"div\",null,{\"children\":[[\"$\",\"h2\",null,{\"className\":\"mb-sp-5 text-title font-semibold text-text-primary\",\"children\":\"Functions\"}],[\"$\",\"div\",null,{\"className\":\"flex flex-col items-center justify-center border border-dashed border-border-default bg-surface-1 px-sp-5 py-sp-8 text-center\",\"style\":{\"borderRadius\":\"var(--radius-sm)\"},\"children\":[[\"$\",\"svg\",null,{\"className\":\"mb-4 h-12 w-12 text-text-tertiary\",\"fill\":\"none\",\"viewBox\":\"0 0 24 24\",\"stroke\":\"currentColor\",\"strokeWidth\":1.5,\"children\":[\"$\",\"path\",null,{\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"d\":\"M19.5 14.25v-2.625a3.375 3.375 0 0 0-3.375-3.375h-1.5A1.125 1.125 0 0 1 13.5 7.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H8.25m6.75 12H9.75m3 0H9.75m0 0v3m-3-6h1.5m-1.5 0v3m6-6h.008v.008H15V9.75Z\"}]}],[\"$\",\"h3\",null,{\"className\":\"mb-2 text-heading font-medium text-text-primary\",\"children\":\"Data not yet generated\"}],[\"$\",\"p\",null,{\"className\":\"mb-4 text-body text-text-secondary\",\"children\":\"Run the following command to generate this data:\"}],[\"$\",\"code\",null,{\"className\":\"border border-border-default bg-surface-0 px-sp-4 py-sp-2 font-mono text-body text-accent\",\"style\":{\"borderRadius\":\"var(--radius-sm)\"},\"children\":\"hex access\"}]]}]]}]],null],null]},[\"$\",\"$L6\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\",\"functions\",\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L7\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"notFoundStyles\":\"$undefined\",\"styles\":null}],null]},[[\"$\",\"html\",null,{\"lang\":\"en\",\"suppressHydrationWarning\":true,\"children\":[\"$\",\"body\",null,{\"className\":\"__variable_73ee6c __variable_3c557b min-h-screen bg-surface-0 text-text-primary font-sans\",\"children\":[\"$\",\"$L8\",null,{\"attribute\":\"data-theme\",\"defaultTheme\":\"dark\",\"enableSystem\":false,\"children\":[[\"$\",\"$L9\",null,{}],[\"$\",\"$La\",null,{\"children\":[\"$\",\"$L6\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L7\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"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\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"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)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":\"404\"}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],\"notFoundStyles\":[],\"styles\":null}]}]]}]}]}],null],null],\"couldBeIntercepted\":false,\"initialHead\":[null,\"$Lb\"],\"globalErrorComponent\":\"$c\",\"missingSlots\":\"$Wd\"}]]\n"])</script><script>self.__next_f.push([1,"b:[[\"$\",\"meta\",\"0\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}],[\"$\",\"meta\",\"1\",{\"charSet\":\"utf-8\"}],[\"$\",\"title\",\"2\",{\"children\":\"Hex\"}],[\"$\",\"meta\",\"3\",{\"name\":\"description\",\"content\":\"Local dashboard for Solidity smart contract audits\"}],[\"$\",\"link\",\"4\",{\"rel\":\"icon\",\"href\":\"/icon.svg?83fa4bf1ef0d214d\",\"type\":\"image/svg+xml\",\"sizes\":\"any\"}],[\"$\",\"meta\",\"5\",{\"name\":\"next-size-adjust\"}]]\n5:null\n"])</script></body></html>
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
2:I[5276,[],""]
|
|
2
|
-
3:I[3297,[],""]
|
|
3
|
-
4:I[4595,["7498","static/chunks/7498-ea83cb9e30ec5491.js","3185","static/chunks/app/layout-e0f50820b06a7621.js"],"ThemeProvider"]
|
|
4
|
-
5:I[2198,["7498","static/chunks/7498-ea83cb9e30ec5491.js","3185","static/chunks/app/layout-e0f50820b06a7621.js"],"CommandPalette"]
|
|
5
|
-
6:I[1187,["7498","static/chunks/7498-ea83cb9e30ec5491.js","3185","static/chunks/app/layout-e0f50820b06a7621.js"],"DashboardLayout"]
|
|
6
|
-
0:["f3-iD1w0WCbTDKsUc5-Id",[[["",{"children":["functions",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",{"children":["functions",{"children":["__PAGE__",{},[["$L1",["$","div",null,{"children":[["$","h2",null,{"className":"mb-sp-5 text-title font-semibold text-text-primary","children":"Functions"}],["$","div",null,{"className":"flex flex-col items-center justify-center border border-dashed border-border-default bg-surface-1 px-sp-5 py-sp-8 text-center","style":{"borderRadius":"var(--radius-sm)"},"children":[["$","svg",null,{"className":"mb-4 h-12 w-12 text-text-tertiary","fill":"none","viewBox":"0 0 24 24","stroke":"currentColor","strokeWidth":1.5,"children":["$","path",null,{"strokeLinecap":"round","strokeLinejoin":"round","d":"M19.5 14.25v-2.625a3.375 3.375 0 0 0-3.375-3.375h-1.5A1.125 1.125 0 0 1 13.5 7.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H8.25m6.75 12H9.75m3 0H9.75m0 0v3m-3-6h1.5m-1.5 0v3m6-6h.008v.008H15V9.75Z"}]}],["$","h3",null,{"className":"mb-2 text-heading font-medium text-text-primary","children":"Data not yet generated"}],["$","p",null,{"className":"mb-4 text-body text-text-secondary","children":"Run the following command to generate this data:"}],["$","code",null,{"className":"border border-border-default bg-surface-0 px-sp-4 py-sp-2 font-mono text-body text-accent","style":{"borderRadius":"var(--radius-sm)"},"children":"hex access"}]]}]]}]],null],null]},["$","$L2",null,{"parallelRouterKey":"children","segmentPath":["children","functions","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","styles":null}],null]},[["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":["$","body",null,{"className":"__variable_73ee6c __variable_3c557b min-h-screen bg-surface-0 text-text-primary font-sans","children":["$","$L4",null,{"attribute":"data-theme","defaultTheme":"dark","enableSystem":false,"children":[["$","$L5",null,{}],["$","$L6",null,{"children":["$","$L2",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"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"},"children":["$","div",null,{"children":[["$","style",null,{"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)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"styles":null}]}]]}]}]}],null],null],[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/265d7e2538aaffc0.css","precedence":"next","crossOrigin":"$undefined"}]],[null,"$L7"]]]]]
|
|
7
|
-
7:[["$","meta","0",{"name":"viewport","content":"width=device-width, initial-scale=1"}],["$","meta","1",{"charSet":"utf-8"}],["$","title","2",{"children":"Hex"}],["$","meta","3",{"name":"description","content":"Local dashboard for Solidity smart contract audits"}],["$","link","4",{"rel":"icon","href":"/icon.svg?83fa4bf1ef0d214d","type":"image/svg+xml","sizes":"any"}],["$","meta","5",{"name":"next-size-adjust"}]]
|
|
8
|
-
1:null
|