audit-tools 0.30.60 → 0.30.61
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/README.md +99 -234
- package/dist/audit/extractors/analyzers/binaryAcquisition.d.ts +8 -0
- package/dist/audit/extractors/analyzers/binaryAcquisition.d.ts.map +1 -1
- package/dist/audit/extractors/analyzers/binaryAcquisition.js +25 -0
- package/dist/audit/extractors/analyzers/binaryAcquisition.js.map +1 -1
- package/dist/audit/extractors/analyzers/candidates.d.ts +13 -1
- package/dist/audit/extractors/analyzers/candidates.d.ts.map +1 -1
- package/dist/audit/extractors/analyzers/candidates.js +124 -1
- package/dist/audit/extractors/analyzers/candidates.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,270 +1,135 @@
|
|
|
1
1
|
# audit-tools
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
One npm package shipping **two independent code tools** over a shared library. Each has its
|
|
4
|
+
own CLI and host slash-command, and each is useful on its own:
|
|
5
5
|
|
|
6
|
-
- **`audit-code`** (`/audit-code`) — audits a
|
|
7
|
-
|
|
8
|
-
- **`remediate-code`** (`/remediate-code`) — consumes that report (or free-form feedback) and applies
|
|
9
|
-
fixes step by step, emitting `remediation-outcomes.json` + `remediation-report.md`.
|
|
6
|
+
- **`audit-code`** (`/audit-code`) — audits a repository and produces a findings report.
|
|
7
|
+
- **`remediate-code`** (`/remediate-code`) — implements changes from findings, free-form intent, or both together.
|
|
10
8
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
9
|
+
They **compose but don't depend on each other**: audit-code's findings are valid input to
|
|
10
|
+
remediate-code, but you can run either alone. Audit a repo and stop. Or point remediate-code
|
|
11
|
+
at a plain-English request with no audit in sight — or hand it audit findings *and* extra
|
|
12
|
+
instructions at the same time.
|
|
14
13
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
```bash
|
|
18
|
-
npm install -g audit-tools
|
|
19
|
-
```
|
|
20
|
-
|
|
21
|
-
This installs both the `audit-code` and `remediate-code` bins and deploys the host slash-command assets
|
|
22
|
-
(Claude Code, Codex, OpenCode, Antigravity) via the package postinstall.
|
|
23
|
-
|
|
24
|
-
## Usage
|
|
25
|
-
|
|
26
|
-
```bash
|
|
27
|
-
audit-code next-step # advance the audit one step
|
|
28
|
-
remediate-code next-step # advance a remediation one step
|
|
29
|
-
```
|
|
30
|
-
|
|
31
|
-
In a host agent, drive the workflow with `/audit-code` then `/remediate-code`.
|
|
32
|
-
|
|
33
|
-
## Concepts
|
|
34
|
-
|
|
35
|
-
One pipeline, two halves: audit → findings contract; remediate → consumes + fixes. The JSON contract is
|
|
36
|
-
the source of truth; the markdown is its human render. Neither tool runs to completion in a single call —
|
|
37
|
-
each derives state, does one bounded unit of work, persists, and returns. See `CLAUDE.md` for the full
|
|
38
|
-
design concepts and standing decisions.
|
|
39
|
-
|
|
40
|
-
---
|
|
41
|
-
|
|
42
|
-
## audit-code
|
|
43
|
-
|
|
44
|
-
### Canonical Product Route
|
|
45
|
-
|
|
46
|
-
The primary product is `/audit-code` in conversation.
|
|
47
|
-
|
|
48
|
-
Normal product usage should:
|
|
49
|
-
|
|
50
|
-
- use the active conversation model by default
|
|
51
|
-
- use project files and attached repository context by default
|
|
52
|
-
- avoid manual paths, provider flags, and model-selection arguments
|
|
53
|
-
- keep semantic review with the active conversation agent by default
|
|
54
|
-
- advance the audit automatically until it completes or no further automatic progress is possible
|
|
55
|
-
|
|
56
|
-
### Conversation Setup
|
|
57
|
-
|
|
58
|
-
The canonical asset for editor and conversation integrations is:
|
|
59
|
-
|
|
60
|
-
`skills/audit-code/audit-code.prompt.md`
|
|
14
|
+
Each tool writes its results to `.audit-tools/` as a machine contract (JSON) plus a
|
|
15
|
+
human-readable render (markdown):
|
|
61
16
|
|
|
62
|
-
|
|
17
|
+
| Tool | Machine contract | Human render |
|
|
18
|
+
|---|---|---|
|
|
19
|
+
| audit-code | `audit-findings.json` | `audit-report.md` |
|
|
20
|
+
| remediate-code | `remediation-outcomes.json` | `remediation-report.md` |
|
|
63
21
|
|
|
64
|
-
|
|
22
|
+
## Install
|
|
65
23
|
|
|
66
24
|
```bash
|
|
67
25
|
npm install -g audit-tools
|
|
68
26
|
```
|
|
69
27
|
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
metadata, and the global OpenCode slash command entry in
|
|
74
|
-
`~/.config/opencode/opencode.json`.
|
|
75
|
-
|
|
76
|
-
After that, invoke `/audit-code` in a supported host. The prompt self-bootstraps
|
|
77
|
-
the current repository by running:
|
|
78
|
-
|
|
79
|
-
```bash
|
|
80
|
-
audit-code ensure --quiet
|
|
81
|
-
```
|
|
82
|
-
|
|
83
|
-
That command writes or refreshes the repo-local assets only when they are missing
|
|
84
|
-
or stale, then normal audit execution continues without manual paths, provider
|
|
85
|
-
flags, or model-selection arguments.
|
|
86
|
-
|
|
87
|
-
The explicit repair and compatibility setup path remains:
|
|
88
|
-
|
|
89
|
-
```bash
|
|
90
|
-
audit-code install
|
|
91
|
-
```
|
|
92
|
-
|
|
93
|
-
That bootstraps repo-local supporting surfaces for the hosts we can automate today, including:
|
|
94
|
-
|
|
95
|
-
- Codex `AGENTS.md` fallback guidance for the global skill surface
|
|
96
|
-
- Claude Desktop local MCP bundle artifacts and project template guidance
|
|
97
|
-
- OpenCode `opencode.json` with auditor agent and permission wiring; the `/audit-code` command stays in the global npm-installed OpenCode config
|
|
98
|
-
- VS Code prompt, custom agent, Copilot instructions, and `.vscode/mcp.json`
|
|
99
|
-
- Antigravity planning-mode guidance plus the shared repo-local MCP launcher
|
|
28
|
+
This puts both `audit-code` and `remediate-code` on your `PATH` and, via the package
|
|
29
|
+
postinstall, deploys slash-command assets for supported hosts (Claude Code, Codex,
|
|
30
|
+
OpenCode, VS Code, Antigravity).
|
|
100
31
|
|
|
101
|
-
|
|
102
|
-
or skill changes. Use `audit-code install` or `audit-code ensure --force` when
|
|
103
|
-
you intentionally want to rewrite every generated host surface on demand.
|
|
104
|
-
|
|
105
|
-
After bootstrap, you can smoke-test the generated host assets and launcher from the repository root:
|
|
106
|
-
|
|
107
|
-
```bash
|
|
108
|
-
audit-code verify-install
|
|
109
|
-
```
|
|
32
|
+
## Usage
|
|
110
33
|
|
|
111
|
-
|
|
34
|
+
The tools are meant to be run as slash-commands inside a host agent. Just invoke the command —
|
|
35
|
+
no manual path, provider, or model flags. The agent works its way through the whole workflow
|
|
36
|
+
on its own, running against your active conversation model, and only stops to ask you when it
|
|
37
|
+
needs a real decision (scope, ambiguous intent, whether to open a PR, and the like).
|
|
112
38
|
|
|
113
|
-
|
|
39
|
+
**Audit a repository:**
|
|
114
40
|
|
|
115
41
|
```text
|
|
116
|
-
|
|
117
|
-
```
|
|
118
|
-
|
|
119
|
-
That repo-local guide now includes dedicated quick-start sections for Codex, Claude Desktop, OpenCode, VS Code, and Antigravity, plus the installed canonical prompt asset path for prompt-import fallback flows.
|
|
120
|
-
|
|
121
|
-
For narrower compatibility, `audit-code install-host --host copilot` still exists.
|
|
122
|
-
|
|
123
|
-
For hosts that still need manual import after bootstrap, or for environments with no repo-local install surface, after installing the package or checking out the repository, use:
|
|
124
|
-
|
|
125
|
-
```bash
|
|
126
|
-
audit-code prompt-path
|
|
42
|
+
/audit-code
|
|
127
43
|
```
|
|
128
44
|
|
|
129
|
-
|
|
45
|
+
You'll confirm scope and which lenses to review (security, correctness, reliability, and
|
|
46
|
+
data-integrity are always on), then it runs to completion and leaves `audit-findings.json` +
|
|
47
|
+
`audit-report.md` in `.audit-tools/`.
|
|
130
48
|
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
The CLI in this repository is backend infrastructure and a repo-local fallback surface.
|
|
134
|
-
|
|
135
|
-
The conversation step engine used by `/audit-code` — the single execution loop —
|
|
136
|
-
runs from the target repository root:
|
|
137
|
-
|
|
138
|
-
```bash
|
|
139
|
-
audit-code next-step
|
|
140
|
-
```
|
|
141
|
-
|
|
142
|
-
Repository-local equivalent:
|
|
143
|
-
|
|
144
|
-
```bash
|
|
145
|
-
node /path/to/audit-tools/audit-code.mjs next-step
|
|
146
|
-
```
|
|
147
|
-
|
|
148
|
-
This advances deterministic audit state one bounded step, writes
|
|
149
|
-
`.audit-tools/audit/steps/current-step.json` and
|
|
150
|
-
`.audit-tools/audit/steps/current-prompt.md`, auto-builds `dist/` if it is
|
|
151
|
-
missing, and creates the artifacts directory automatically. Hosts follow only
|
|
152
|
-
the returned step prompt, then call `next-step` again. A bare `audit-code`
|
|
153
|
-
invocation prints usage; there is no implicit batch loop.
|
|
154
|
-
|
|
155
|
-
Explicit root override still exists for callers running from outside the target repository:
|
|
156
|
-
|
|
157
|
-
```bash
|
|
158
|
-
audit-code next-step --root /path/to/repo
|
|
159
|
-
```
|
|
160
|
-
|
|
161
|
-
### Backend Provider Modes
|
|
162
|
-
|
|
163
|
-
If `provider` is omitted, the backend defaults to the safest mode:
|
|
164
|
-
|
|
165
|
-
```json
|
|
166
|
-
{
|
|
167
|
-
"provider": "local-subprocess"
|
|
168
|
-
}
|
|
169
|
-
```
|
|
170
|
-
|
|
171
|
-
If you want best-effort cross-editor or provider routing, opt into:
|
|
172
|
-
|
|
173
|
-
```json
|
|
174
|
-
{
|
|
175
|
-
"provider": "auto",
|
|
176
|
-
"ui_mode": "visible"
|
|
177
|
-
}
|
|
178
|
-
```
|
|
179
|
-
|
|
180
|
-
Optional backend config: `.audit-tools/audit/session-config.json`
|
|
181
|
-
|
|
182
|
-
### Key Docs
|
|
183
|
-
|
|
184
|
-
- `docs/audit-pkg/product.md`
|
|
185
|
-
- `docs/audit-pkg/operator-guide.md`
|
|
186
|
-
- `docs/audit-pkg/contracts.md`
|
|
187
|
-
- `docs/audit-pkg/release.md`
|
|
188
|
-
- `docs/audit-pkg/development.md`
|
|
189
|
-
- `skills/audit-code/SKILL.md`
|
|
190
|
-
|
|
191
|
-
---
|
|
192
|
-
|
|
193
|
-
## remediate-code
|
|
194
|
-
|
|
195
|
-
Conversation-first remediation orchestrator. Accepts `audit-findings.json` (the deterministic machine
|
|
196
|
-
contract from audit-code), an `audit-report.md` or other feedback document, or conversational feedback —
|
|
197
|
-
then advances through one backend-rendered step prompt at a time.
|
|
198
|
-
|
|
199
|
-
### Primary Usage
|
|
200
|
-
|
|
201
|
-
```bash
|
|
202
|
-
npm install -g audit-tools
|
|
203
|
-
```
|
|
204
|
-
|
|
205
|
-
Then start from a conversation:
|
|
49
|
+
**Remediate — from findings, a request, or both:**
|
|
206
50
|
|
|
207
51
|
```text
|
|
208
52
|
/remediate-code path/to/audit-findings.json
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
53
|
+
/remediate-code split the auth module and make session refresh easier to test
|
|
54
|
+
/remediate-code path/to/audit-findings.json — and prioritize the error-handling issues
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
It plans the changes, implements and verifies them, and lands the result — a commit by
|
|
58
|
+
default, or a PR / publish if you ask. You confirm scope and the closing action up front and
|
|
59
|
+
review a summary before anything is committed.
|
|
60
|
+
|
|
61
|
+
### What to expect
|
|
62
|
+
|
|
63
|
+
- **It drives itself.** A single slash-command runs the full workflow; it pauses only for
|
|
64
|
+
clarifications, not to hand each step back to you.
|
|
65
|
+
- **Runs are resumable.** State persists to `.audit-tools/` in the target repo, so an
|
|
66
|
+
interrupted run picks up where it left off — just invoke the command again.
|
|
67
|
+
- **Work runs in parallel** where it safely can, and remediation always re-validates its
|
|
68
|
+
changes rather than trusting any input blindly.
|
|
69
|
+
- **Effort scales to the work.** Trivial changes get light review; risky or complex ones get
|
|
70
|
+
deeper scrutiny before anything lands.
|
|
71
|
+
|
|
72
|
+
### The pipelines, step by step
|
|
73
|
+
|
|
74
|
+
**audit-code:**
|
|
75
|
+
|
|
76
|
+
1. **Confirm providers** — discovers the LLMs available in your session and confirms which to use.
|
|
77
|
+
2. **Understand the repo** — deterministically maps files, public surfaces, the dependency
|
|
78
|
+
graph, critical flows, and a risk register; runs available static analyzers and auto-fixes.
|
|
79
|
+
3. **Confirm intent** — you review the scope and pick the review lenses.
|
|
80
|
+
4. **Review the design** — two parallel passes: a contract pass (invariants, boundaries,
|
|
81
|
+
obligations) and a conceptual pass (philosophy, alternatives, better directions).
|
|
82
|
+
5. **Plan** — turns the risk register into bounded, prioritized review tasks.
|
|
83
|
+
6. **Review in parallel** — dispatches the review tasks to your LLMs, routing riskier work to
|
|
84
|
+
more capable models, and deep-dives selectively.
|
|
85
|
+
7. **Synthesize** — consolidates everything into `audit-findings.json` + `audit-report.md`,
|
|
86
|
+
then layers on a narrative (themes, executive summary, top risks).
|
|
87
|
+
|
|
88
|
+
**remediate-code:**
|
|
89
|
+
|
|
90
|
+
1. **Confirm providers** — same session-level provider check as audit-code.
|
|
91
|
+
2. **Intake** — reads the findings and/or free-form intent, validates the input, and drafts a
|
|
92
|
+
summary with any open questions.
|
|
93
|
+
3. **Confirm intent** — you confirm scope, answer open questions, and set the closing action
|
|
94
|
+
(commit, push, open PR, publish, or halt).
|
|
95
|
+
4. **Design the change** — decomposes the work into modules, drafts a contract per module in
|
|
96
|
+
parallel, detects and reconciles seams (where one module's output must match another's
|
|
97
|
+
input), then derives obligations and a test plan. Riskier changes get an independent
|
|
98
|
+
critic-and-judge pass.
|
|
99
|
+
5. **Preview the risk** — shows the classified risk, file list, and commit message before
|
|
100
|
+
anything runs.
|
|
101
|
+
6. **Implement in parallel** — executes the changes in isolated worktrees, running tests and
|
|
102
|
+
verifying each unit; failures are triaged and retried or blocked.
|
|
103
|
+
7. **Close** — runs the closing action and writes `remediation-outcomes.json` +
|
|
104
|
+
`remediation-report.md`.
|
|
105
|
+
|
|
106
|
+
### CLI (backend / fallback)
|
|
107
|
+
|
|
108
|
+
The slash-commands are the product; the same engines are also directly runnable:
|
|
212
109
|
|
|
213
|
-
```
|
|
214
|
-
|
|
110
|
+
```bash
|
|
111
|
+
audit-code next-step # advance an audit one step
|
|
112
|
+
remediate-code next-step # advance a remediation one step
|
|
215
113
|
```
|
|
216
114
|
|
|
217
|
-
|
|
218
|
-
`remediate-code next-step`, reads only the returned `prompt_path`, and follows
|
|
219
|
-
that one prompt. Each prompt carries its own allowed commands and stop condition.
|
|
220
|
-
|
|
221
|
-
### Runtime Artifacts
|
|
222
|
-
|
|
223
|
-
Active runs use `.audit-tools/remediation/` in the target repository:
|
|
224
|
-
|
|
225
|
-
- `.audit-tools/remediation/state.json`
|
|
226
|
-
- `.audit-tools/remediation/steps/current-step.json`
|
|
227
|
-
- `.audit-tools/remediation/steps/current-prompt.md`
|
|
228
|
-
|
|
229
|
-
After close, durable outputs land at `.audit-tools/`:
|
|
230
|
-
|
|
231
|
-
- `remediation-report.md`
|
|
232
|
-
- `remediation-outcomes.json`
|
|
233
|
-
- `remediation-closing-result.json`
|
|
234
|
-
|
|
235
|
-
### CLI
|
|
236
|
-
|
|
237
|
-
| Command | Description |
|
|
238
|
-
| --- | --- |
|
|
239
|
-
| `remediate-code next-step [--input <path>] [--host-can-dispatch-subagents]` | Decide and render exactly one next action |
|
|
240
|
-
| `remediate-code prepare-implement-dispatch --run-id <id>` | Write bounded implementation prompts |
|
|
241
|
-
| `remediate-code merge-implement-results --run-id <id>` | Validate implementation results and update item state |
|
|
242
|
-
| `remediate-code validate-artifacts` | Validate runtime artifacts |
|
|
243
|
-
| `remediate-code ensure [--quiet]` | Repair/check global Claude, Codex, and OpenCode assets |
|
|
244
|
-
|
|
245
|
-
### Auditor Compatibility
|
|
246
|
-
|
|
247
|
-
The auditor's canonical `audit-findings.json` is parsed **deterministically** —
|
|
248
|
-
findings, work-block assignments, and synthesis themes are adopted verbatim, with
|
|
249
|
-
no LLM involved. A Markdown `audit-report.md` (or any other free-form or partial
|
|
250
|
-
document) is instead routed through intake synthesis and bounded LLM finding
|
|
251
|
-
extraction, so it cannot silently produce a zero-finding plan.
|
|
115
|
+
Add `--root <repo>` when running from outside the target repository.
|
|
252
116
|
|
|
253
|
-
|
|
117
|
+
## Develop
|
|
254
118
|
|
|
255
|
-
|
|
119
|
+
TypeScript, Node 20+. From the repo root:
|
|
256
120
|
|
|
257
121
|
```bash
|
|
258
|
-
npm install
|
|
259
|
-
npm run build
|
|
260
|
-
npm
|
|
261
|
-
npm
|
|
122
|
+
npm install # always run first in a fresh clone/worktree
|
|
123
|
+
npm run build # tsc → dist/
|
|
124
|
+
npm run check # typecheck only
|
|
125
|
+
npm test # build + test
|
|
262
126
|
```
|
|
263
127
|
|
|
264
|
-
|
|
265
|
-
|
|
128
|
+
Missing `node_modules` makes `audit-tools/shared` resolve a stale `dist/`, producing
|
|
129
|
+
misleading "no exported member" type errors — so install before build/check/test.
|
|
266
130
|
|
|
267
|
-
|
|
131
|
+
See [`CLAUDE.md`](CLAUDE.md) for architecture and design decisions, the specs in
|
|
132
|
+
[`spec/`](spec/), and the product/operator/contract guides in `docs/audit-pkg/`.
|
|
268
133
|
|
|
269
134
|
## License
|
|
270
135
|
|
|
@@ -39,6 +39,14 @@ export interface BinarySpec {
|
|
|
39
39
|
checksumsAsset: string;
|
|
40
40
|
/** `${releaseUrlBase}/${assetName}` is the download URL (asset + checksums). */
|
|
41
41
|
releaseUrlForAsset(assetName: string): string;
|
|
42
|
+
/**
|
|
43
|
+
* Whether the release asset is an archive (.tar.gz/.zip) needing extraction
|
|
44
|
+
* (the default, e.g. gitleaks), or the raw executable bytes themselves (e.g.
|
|
45
|
+
* osv-scanner, whose release assets ARE the binary — `osv-scanner_linux_amd64`,
|
|
46
|
+
* `osv-scanner_windows_amd64.exe`). When `false`, the verified bytes are
|
|
47
|
+
* written directly to the cache as the executable — no `tar` invocation.
|
|
48
|
+
*/
|
|
49
|
+
archived?: boolean;
|
|
42
50
|
}
|
|
43
51
|
export interface BinaryResolveOptions {
|
|
44
52
|
fetch?: BinaryFetcher;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"binaryAcquisition.d.ts","sourceRoot":"","sources":["../../../../src/audit/extractors/analyzers/binaryAcquisition.ts"],"names":[],"mappings":"AAYA,OAAO,EAAc,KAAK,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEvE;;;;;;;;;;;;;;;;;GAiBG;AAEH,mFAAmF;AACnF,MAAM,WAAW,aAAa;IAC5B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC;CAC3C;AAED,0FAA0F;AAC1F,MAAM,WAAW,mBAAmB;IAClC,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,gBAAgB,CAAC;CACjD;AAED,0EAA0E;AAC1E,MAAM,WAAW,UAAU;IACzB,sEAAsE;IACtE,UAAU,EAAE,MAAM,CAAC;IACnB,8DAA8D;IAC9D,OAAO,EAAE,MAAM,CAAC;IAChB,2EAA2E;IAC3E,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,oEAAoE;IACpE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IACjE,mEAAmE;IACnE,cAAc,EAAE,MAAM,CAAC;IACvB,gFAAgF;IAChF,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"binaryAcquisition.d.ts","sourceRoot":"","sources":["../../../../src/audit/extractors/analyzers/binaryAcquisition.ts"],"names":[],"mappings":"AAYA,OAAO,EAAc,KAAK,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEvE;;;;;;;;;;;;;;;;;GAiBG;AAEH,mFAAmF;AACnF,MAAM,WAAW,aAAa;IAC5B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC;CAC3C;AAED,0FAA0F;AAC1F,MAAM,WAAW,mBAAmB;IAClC,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,gBAAgB,CAAC;CACjD;AAED,0EAA0E;AAC1E,MAAM,WAAW,UAAU;IACzB,sEAAsE;IACtE,UAAU,EAAE,MAAM,CAAC;IACnB,8DAA8D;IAC9D,OAAO,EAAE,MAAM,CAAC;IAChB,2EAA2E;IAC3E,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,oEAAoE;IACpE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IACjE,mEAAmE;IACnE,cAAc,EAAE,MAAM,CAAC;IACvB,gFAAgF;IAChF,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC;IAC9C;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,GAAG,CAAC,EAAE,mBAAmB,CAAC;IAC1B,uFAAuF;IACvF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,GAAG,QAAQ,GAAG,YAAY,GAAG,aAAa,CAAC;IACzD,sFAAsF;IACtF,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAUD,kFAAkF;AAClF,wBAAgB,iBAAiB,CAC/B,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,MAAM,GAChB,MAAM,GAAG,IAAI,CAMf;AAMD;;;;GAIG;AACH,wBAAsB,aAAa,CACjC,IAAI,EAAE,UAAU,EAChB,OAAO,GAAE,oBAAyB,GACjC,OAAO,CAAC,gBAAgB,CAAC,CA6H3B"}
|
|
@@ -83,6 +83,31 @@ export async function resolveBinary(spec, options = {}) {
|
|
|
83
83
|
note: `checksum mismatch for ${assetName} (expected ${expected}, got ${actual})`,
|
|
84
84
|
};
|
|
85
85
|
}
|
|
86
|
+
// Non-archived asset (e.g. osv-scanner): the verified bytes ARE the
|
|
87
|
+
// executable — write directly to the cached path, no `tar` involved.
|
|
88
|
+
if (spec.archived === false) {
|
|
89
|
+
try {
|
|
90
|
+
mkdirSync(versionDir, { recursive: true });
|
|
91
|
+
const resolved = join(versionDir, exeName(spec.binaryName, platform));
|
|
92
|
+
writeFileSync(resolved, assetBytes);
|
|
93
|
+
if (platform !== "win32") {
|
|
94
|
+
try {
|
|
95
|
+
chmodSync(resolved, 0o755);
|
|
96
|
+
}
|
|
97
|
+
catch {
|
|
98
|
+
/* best-effort */
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
return { status: "downloaded", command: resolved };
|
|
102
|
+
}
|
|
103
|
+
catch (error) {
|
|
104
|
+
return {
|
|
105
|
+
status: "unavailable",
|
|
106
|
+
command: null,
|
|
107
|
+
note: `write error: ${error instanceof Error ? error.message : String(error)}`,
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
}
|
|
86
111
|
// Verified — write the archive and extract it with the system `tar` (bsdtar
|
|
87
112
|
// ships on win32 / darwin / linux and reads both .tar.gz and .zip).
|
|
88
113
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"binaryAcquisition.js","sourceRoot":"","sources":["../../../../src/audit/extractors/analyzers/binaryAcquisition.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EACL,SAAS,EACT,UAAU,EACV,SAAS,EACT,WAAW,EACX,MAAM,EACN,QAAQ,EACR,aAAa,GACd,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,UAAU,EAAyB,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"binaryAcquisition.js","sourceRoot":"","sources":["../../../../src/audit/extractors/analyzers/binaryAcquisition.ts"],"names":[],"mappings":"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"}
|
|
@@ -29,7 +29,19 @@ declare const knipCandidate: ExternalAnalyzerCandidate;
|
|
|
29
29
|
*/
|
|
30
30
|
declare function parseJscpd(report: string): ReturnType<ExternalAnalyzerCandidate["parse"]>;
|
|
31
31
|
declare const jscpdCandidate: ExternalAnalyzerCandidate;
|
|
32
|
+
declare const OSV_SCANNER_VERSION = "2.4.0";
|
|
33
|
+
/**
|
|
34
|
+
* Parse osv-scanner's `--format json` stdout — grounded against
|
|
35
|
+
* `pkg/models/results.go` (`VulnerabilityResults`) in google/osv-scanner, not
|
|
36
|
+
* guessed: `{ results: [{ source: {path}, packages: [{ package: {name,
|
|
37
|
+
* version}, vulnerabilities: [...], groups: [{ids, max_severity}] }] }] }`.
|
|
38
|
+
* One item per GROUP (osv-scanner's own alias-collapsed dedup unit), not per
|
|
39
|
+
* raw vulnerability id, so CVE/GHSA aliases for the same underlying issue
|
|
40
|
+
* don't fan out into duplicate items.
|
|
41
|
+
*/
|
|
42
|
+
declare function parseOsvScanner(stdout: string): ReturnType<ExternalAnalyzerCandidate["parse"]>;
|
|
43
|
+
declare const osvScannerCandidate: ExternalAnalyzerCandidate;
|
|
32
44
|
/** The curated external analyzer candidate set. gitleaks is the default member. */
|
|
33
45
|
export declare const EXTERNAL_ANALYZER_CANDIDATES: ExternalAnalyzerCandidate[];
|
|
34
|
-
export { gitleaksCandidate, semgrepCandidate, knipCandidate, parseKnip, eslintCandidate, parseGitleaks, GITLEAKS_VERSION, jscpdCandidate, parseJscpd, };
|
|
46
|
+
export { gitleaksCandidate, semgrepCandidate, knipCandidate, parseKnip, eslintCandidate, parseGitleaks, GITLEAKS_VERSION, jscpdCandidate, parseJscpd, osvScannerCandidate, parseOsvScanner, OSV_SCANNER_VERSION, };
|
|
35
47
|
//# sourceMappingURL=candidates.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"candidates.d.ts","sourceRoot":"","sources":["../../../../src/audit/extractors/analyzers/candidates.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AAOxE;;;;;;;GAOG;AAKH,QAAA,MAAM,gBAAgB,WAAW,CAAC;AA2ClC;;;;GAIG;AACH,iBAAS,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,CAAC,yBAAyB,CAAC,OAAO,CAAC,CAAC,CAqCrF;AAED,QAAA,MAAM,iBAAiB,EAAE,yBAsBxB,CAAC;AAiCF,QAAA,MAAM,gBAAgB,EAAE,yBASvB,CAAC;AAqCF,QAAA,MAAM,eAAe,EAAE,yBAStB,CAAC;AAgBF,iBAAS,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,CAAC,yBAAyB,CAAC,OAAO,CAAC,CAAC,CAuCjF;AAED,QAAA,MAAM,aAAa,EAAE,yBAqBpB,CAAC;AAgBF;;;;;;;GAOG;AACH,iBAAS,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,CAAC,yBAAyB,CAAC,OAAO,CAAC,CAAC,CAkClF;AAED,QAAA,MAAM,cAAc,EAAE,yBAmBrB,CAAC;AAEF,mFAAmF;AACnF,eAAO,MAAM,4BAA4B,EAAE,yBAAyB,
|
|
1
|
+
{"version":3,"file":"candidates.d.ts","sourceRoot":"","sources":["../../../../src/audit/extractors/analyzers/candidates.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AAOxE;;;;;;;GAOG;AAKH,QAAA,MAAM,gBAAgB,WAAW,CAAC;AA2ClC;;;;GAIG;AACH,iBAAS,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,CAAC,yBAAyB,CAAC,OAAO,CAAC,CAAC,CAqCrF;AAED,QAAA,MAAM,iBAAiB,EAAE,yBAsBxB,CAAC;AAiCF,QAAA,MAAM,gBAAgB,EAAE,yBASvB,CAAC;AAqCF,QAAA,MAAM,eAAe,EAAE,yBAStB,CAAC;AAgBF,iBAAS,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,CAAC,yBAAyB,CAAC,OAAO,CAAC,CAAC,CAuCjF;AAED,QAAA,MAAM,aAAa,EAAE,yBAqBpB,CAAC;AAgBF;;;;;;;GAOG;AACH,iBAAS,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,CAAC,yBAAyB,CAAC,OAAO,CAAC,CAAC,CAkClF;AAED,QAAA,MAAM,cAAc,EAAE,yBAmBrB,CAAC;AAOF,QAAA,MAAM,mBAAmB,UAAU,CAAC;AA+BpC;;;;;;;;GAQG;AACH,iBAAS,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,CAAC,yBAAyB,CAAC,OAAO,CAAC,CAAC,CA+DvF;AAED,QAAA,MAAM,mBAAmB,EAAE,yBAc1B,CAAC;AAEF,mFAAmF;AACnF,eAAO,MAAM,4BAA4B,EAAE,yBAAyB,EAOnE,CAAC;AAEF,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,aAAa,EACb,SAAS,EACT,eAAe,EACf,aAAa,EACb,gBAAgB,EAChB,cAAc,EACd,UAAU,EACV,mBAAmB,EACnB,eAAe,EACf,mBAAmB,GACpB,CAAC"}
|
|
@@ -357,6 +357,128 @@ const jscpdCandidate = {
|
|
|
357
357
|
reportFile: () => jscpdReportPath(),
|
|
358
358
|
parse: parseJscpd,
|
|
359
359
|
};
|
|
360
|
+
// Pinned osv-scanner release (own-vs-acquire: acquire the mature Go binary,
|
|
361
|
+
// pinned for reproducibility). Distinct from gitleaks in one respect worth
|
|
362
|
+
// noting: osv-scanner's release assets ARE the raw executable
|
|
363
|
+
// (`osv-scanner_linux_amd64`, `osv-scanner_windows_amd64.exe`) — not an
|
|
364
|
+
// archive — so its BinarySpec sets `archived: false` (binaryAcquisition.ts).
|
|
365
|
+
const OSV_SCANNER_VERSION = "2.4.0";
|
|
366
|
+
const OSV_SCANNER_RELEASE_BASE = `https://github.com/google/osv-scanner/releases/download/v${OSV_SCANNER_VERSION}`;
|
|
367
|
+
/** Map Node's platform/arch onto the osv-scanner release asset naming. */
|
|
368
|
+
function osvScannerAsset(platform, arch) {
|
|
369
|
+
const os = platform === "win32"
|
|
370
|
+
? "windows"
|
|
371
|
+
: platform === "darwin"
|
|
372
|
+
? "darwin"
|
|
373
|
+
: platform === "linux"
|
|
374
|
+
? "linux"
|
|
375
|
+
: null;
|
|
376
|
+
if (!os)
|
|
377
|
+
return null;
|
|
378
|
+
// osv-scanner only publishes amd64/arm64 assets (no 32-bit/arm variants).
|
|
379
|
+
const cpu = arch === "x64" ? "amd64" : arch === "arm64" ? "arm64" : null;
|
|
380
|
+
if (!cpu)
|
|
381
|
+
return null;
|
|
382
|
+
const ext = os === "windows" ? ".exe" : "";
|
|
383
|
+
return `osv-scanner_${os}_${cpu}${ext}`;
|
|
384
|
+
}
|
|
385
|
+
const OSV_SCANNER_BINARY = {
|
|
386
|
+
binaryName: "osv-scanner",
|
|
387
|
+
version: OSV_SCANNER_VERSION,
|
|
388
|
+
versionProbeArgs: ["osv-scanner", "--version"],
|
|
389
|
+
assetFor: osvScannerAsset,
|
|
390
|
+
checksumsAsset: "osv-scanner_SHA256SUMS",
|
|
391
|
+
releaseUrlForAsset: (asset) => `${OSV_SCANNER_RELEASE_BASE}/${asset}`,
|
|
392
|
+
archived: false,
|
|
393
|
+
};
|
|
394
|
+
/**
|
|
395
|
+
* Parse osv-scanner's `--format json` stdout — grounded against
|
|
396
|
+
* `pkg/models/results.go` (`VulnerabilityResults`) in google/osv-scanner, not
|
|
397
|
+
* guessed: `{ results: [{ source: {path}, packages: [{ package: {name,
|
|
398
|
+
* version}, vulnerabilities: [...], groups: [{ids, max_severity}] }] }] }`.
|
|
399
|
+
* One item per GROUP (osv-scanner's own alias-collapsed dedup unit), not per
|
|
400
|
+
* raw vulnerability id, so CVE/GHSA aliases for the same underlying issue
|
|
401
|
+
* don't fan out into duplicate items.
|
|
402
|
+
*/
|
|
403
|
+
function parseOsvScanner(stdout) {
|
|
404
|
+
let payload;
|
|
405
|
+
try {
|
|
406
|
+
payload = JSON.parse(stdout || "{}");
|
|
407
|
+
}
|
|
408
|
+
catch {
|
|
409
|
+
return [];
|
|
410
|
+
}
|
|
411
|
+
const results = payload && typeof payload === "object" && Array.isArray(payload.results)
|
|
412
|
+
? (payload.results)
|
|
413
|
+
: [];
|
|
414
|
+
const items = [];
|
|
415
|
+
for (const result of results) {
|
|
416
|
+
if (!result || typeof result !== "object")
|
|
417
|
+
continue;
|
|
418
|
+
const source = (result.source ?? {});
|
|
419
|
+
const sourcePath = typeof source.path === "string" ? source.path : "";
|
|
420
|
+
const packages = Array.isArray(result.packages) ? result.packages : [];
|
|
421
|
+
for (const pkg of packages) {
|
|
422
|
+
if (!pkg || typeof pkg !== "object")
|
|
423
|
+
continue;
|
|
424
|
+
const pkgRecord = pkg;
|
|
425
|
+
const pkgInfo = (pkgRecord.package ?? {});
|
|
426
|
+
const pkgName = typeof pkgInfo.name === "string" ? pkgInfo.name : "unknown";
|
|
427
|
+
const pkgVersion = typeof pkgInfo.version === "string" ? pkgInfo.version : "";
|
|
428
|
+
const vulns = Array.isArray(pkgRecord.vulnerabilities)
|
|
429
|
+
? pkgRecord.vulnerabilities
|
|
430
|
+
: [];
|
|
431
|
+
const groups = Array.isArray(pkgRecord.groups)
|
|
432
|
+
? pkgRecord.groups
|
|
433
|
+
: [];
|
|
434
|
+
for (const group of groups) {
|
|
435
|
+
if (!group || typeof group !== "object")
|
|
436
|
+
continue;
|
|
437
|
+
const ids = Array.isArray(group.ids)
|
|
438
|
+
? group.ids.filter((id) => typeof id === "string")
|
|
439
|
+
: [];
|
|
440
|
+
if (ids.length === 0)
|
|
441
|
+
continue;
|
|
442
|
+
const maxSeverity = typeof group.max_severity === "string" ? group.max_severity.toUpperCase() : "";
|
|
443
|
+
const severity = maxSeverity.includes("CRITICAL") || maxSeverity.includes("HIGH")
|
|
444
|
+
? "high"
|
|
445
|
+
: maxSeverity.includes("LOW")
|
|
446
|
+
? "low"
|
|
447
|
+
: "medium";
|
|
448
|
+
const primary = vulns.find((v) => v && typeof v === "object" && ids.includes(v.id));
|
|
449
|
+
const summaryText = primary && typeof primary.summary === "string" && primary.summary.trim().length > 0
|
|
450
|
+
? primary.summary
|
|
451
|
+
: primary && typeof primary.details === "string"
|
|
452
|
+
? primary.details.slice(0, 200)
|
|
453
|
+
: `known vulnerability in ${pkgName}`;
|
|
454
|
+
items.push({
|
|
455
|
+
id: `osv:${ids.join(",")}:${pkgName}@${pkgVersion}`,
|
|
456
|
+
category: "security",
|
|
457
|
+
severity,
|
|
458
|
+
path: sourcePath,
|
|
459
|
+
summary: `osv-scanner: ${pkgName}@${pkgVersion} — ${ids.join(", ")} — ${summaryText}`,
|
|
460
|
+
rule: ids[0],
|
|
461
|
+
});
|
|
462
|
+
}
|
|
463
|
+
}
|
|
464
|
+
}
|
|
465
|
+
return items;
|
|
466
|
+
}
|
|
467
|
+
const osvScannerCandidate = {
|
|
468
|
+
id: "osv-scanner",
|
|
469
|
+
runner: "binary",
|
|
470
|
+
spec: OSV_SCANNER_VERSION,
|
|
471
|
+
binary: OSV_SCANNER_BINARY,
|
|
472
|
+
// CONSENT-GATED: network-dependent (queries the OSV vulnerability database)
|
|
473
|
+
// and heavier than gitleaks — same tier as semgrep/eslint/knip/jscpd.
|
|
474
|
+
defaultRun: false,
|
|
475
|
+
// Ecosystem-agnostic by design: osv-scanner recursively discovers whatever
|
|
476
|
+
// lockfiles exist (npm/pip/cargo/go/…) itself, so no per-ecosystem marker
|
|
477
|
+
// gate is needed here (mirrors gitleaks' `() => true`).
|
|
478
|
+
detect: () => true,
|
|
479
|
+
buildArgv: (prefix, root) => [...prefix, "scan", "--format", "json", "--recursive", root],
|
|
480
|
+
parse: parseOsvScanner,
|
|
481
|
+
};
|
|
360
482
|
/** The curated external analyzer candidate set. gitleaks is the default member. */
|
|
361
483
|
export const EXTERNAL_ANALYZER_CANDIDATES = [
|
|
362
484
|
gitleaksCandidate,
|
|
@@ -364,6 +486,7 @@ export const EXTERNAL_ANALYZER_CANDIDATES = [
|
|
|
364
486
|
eslintCandidate,
|
|
365
487
|
knipCandidate,
|
|
366
488
|
jscpdCandidate,
|
|
489
|
+
osvScannerCandidate,
|
|
367
490
|
];
|
|
368
|
-
export { gitleaksCandidate, semgrepCandidate, knipCandidate, parseKnip, eslintCandidate, parseGitleaks, GITLEAKS_VERSION, jscpdCandidate, parseJscpd, };
|
|
491
|
+
export { gitleaksCandidate, semgrepCandidate, knipCandidate, parseKnip, eslintCandidate, parseGitleaks, GITLEAKS_VERSION, jscpdCandidate, parseJscpd, osvScannerCandidate, parseOsvScanner, OSV_SCANNER_VERSION, };
|
|
369
492
|
//# sourceMappingURL=candidates.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"candidates.js","sourceRoot":"","sources":["../../../../src/audit/extractors/analyzers/candidates.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAEjC,OAAO,EACL,mBAAmB,EACnB,qBAAqB,GACtB,MAAM,wBAAwB,CAAC;AAGhC;;;;;;;GAOG;AAEH,+EAA+E;AAC/E,8EAA8E;AAC9E,gDAAgD;AAChD,MAAM,gBAAgB,GAAG,QAAQ,CAAC;AAClC,MAAM,qBAAqB,GAAG,2DAA2D,gBAAgB,EAAE,CAAC;AAE5G,uEAAuE;AACvE,SAAS,aAAa,CAAC,QAAyB,EAAE,IAAY;IAC5D,MAAM,EAAE,GACN,QAAQ,KAAK,OAAO;QAClB,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,QAAQ,KAAK,QAAQ;YACrB,CAAC,CAAC,QAAQ;YACV,CAAC,CAAC,QAAQ,KAAK,OAAO;gBACpB,CAAC,CAAC,OAAO;gBACT,CAAC,CAAC,IAAI,CAAC;IACf,IAAI,CAAC,EAAE;QAAE,OAAO,IAAI,CAAC;IACrB,MAAM,GAAG,GACP,IAAI,KAAK,KAAK;QACZ,CAAC,CAAC,KAAK;QACP,CAAC,CAAC,IAAI,KAAK,OAAO;YAChB,CAAC,CAAC,OAAO;YACT,CAAC,CAAC,IAAI,KAAK,MAAM;gBACf,CAAC,CAAC,KAAK;gBACP,CAAC,CAAC,IAAI,KAAK,KAAK;oBACd,CAAC,CAAC,OAAO;oBACT,CAAC,CAAC,IAAI,CAAC;IACjB,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC;IACtB,MAAM,GAAG,GAAG,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC;IAChD,OAAO,YAAY,gBAAgB,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC;AAC5D,CAAC;AAED,MAAM,eAAe,GAAe;IAClC,UAAU,EAAE,UAAU;IACtB,OAAO,EAAE,gBAAgB;IACzB,gBAAgB,EAAE,CAAC,UAAU,EAAE,SAAS,CAAC;IACzC,QAAQ,EAAE,aAAa;IACvB,cAAc,EAAE,YAAY,gBAAgB,gBAAgB;IAC5D,kBAAkB,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,qBAAqB,IAAI,KAAK,EAAE;CACnE,CAAC;AAEF,uEAAuE;AACvE,SAAS,kBAAkB;IACzB,OAAO,IAAI,CAAC,MAAM,EAAE,EAAE,wBAAwB,OAAO,CAAC,GAAG,OAAO,CAAC,CAAC;AACpE,CAAC;AAED;;;;GAIG;AACH,SAAS,aAAa,CAAC,MAAc;IACnC,IAAI,QAAiB,CAAC;IACtB,IAAI,CAAC;QACH,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,CAAC;IACxC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;QAAE,OAAO,EAAE,CAAC;IACxC,OAAO,QAAQ;SACZ,MAAM,CAAC,CAAC,CAAC,EAAgC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,CAAC;SAChF,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACT,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC;QAClE,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QACtD,MAAM,SAAS,GAAG,OAAO,CAAC,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;QAC5E,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;QACtE,MAAM,WAAW,GACf,OAAO,CAAC,CAAC,WAAW,KAAK,QAAQ,IAAI,CAAC,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC;YAClE,CAAC,CAAC,CAAC,CAAC,WAAW;YACf,CAAC,CAAC,qBAAqB,MAAM,GAAG,CAAC;QACrC,MAAM,WAAW,GACf,OAAO,CAAC,CAAC,WAAW,KAAK,QAAQ,IAAI,CAAC,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC;YAC3D,CAAC,CAAC,CAAC,CAAC,WAAW;YACf,CAAC,CAAC,GAAG,MAAM,IAAI,IAAI,IAAI,SAAS,IAAI,CAAC,EAAE,CAAC;QAC5C,OAAO;YACL,EAAE,EAAE,WAAW;YACf,QAAQ,EAAE,UAAU;YACpB,QAAQ,EAAE,MAAM;YAChB,IAAI,EAAE,IAAI;YACV,UAAU,EAAE,SAAS;YACrB,QAAQ,EAAE,OAAO;YACjB,OAAO,EAAE,WAAW;YACpB,IAAI,EAAE,MAAM;YACZ,0EAA0E;YAC1E,sBAAsB;YACtB,GAAG,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE;SACvD,CAAC;IACJ,CAAC,CAAC,CAAC;AACP,CAAC;AAED,MAAM,iBAAiB,GAA8B;IACnD,EAAE,EAAE,UAAU;IACd,MAAM,EAAE,QAAQ;IAChB,IAAI,EAAE,gBAAgB;IACtB,MAAM,EAAE,eAAe;IACvB,UAAU,EAAE,IAAI;IAChB,4EAA4E;IAC5E,MAAM,EAAE,GAAG,EAAE,CAAC,IAAI;IAClB,UAAU,EAAE,GAAG,EAAE,CAAC,kBAAkB,EAAE;IACtC,SAAS,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC;QAC3B,GAAG,MAAM;QACT,KAAK;QACL,IAAI;QACJ,iBAAiB;QACjB,MAAM;QACN,eAAe;QACf,kBAAkB,EAAE;QACpB,aAAa;QACb,aAAa;QACb,GAAG;KACJ;IACD,KAAK,EAAE,aAAa;CACrB,CAAC;AAEF,wDAAwD;AACxD,SAAS,YAAY,CAAC,MAAc;IAClC,IAAI,OAAgB,CAAC;IACrB,IAAI,CAAC;QACH,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,CAAC;IACvC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,MAAM,OAAO,GACX,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAE,OAAiC,CAAC,OAAO,CAAC;QACjG,CAAC,CAAC,CAAE,OAAkD,CAAC,OAAO,CAAC;QAC/D,CAAC,CAAC,EAAE,CAAC;IACT,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACvB,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAA4B,CAAC;QACzD,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAA4B,CAAC;QACzD,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,CAA4B,CAAC;QACrD,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC;QAC7E,MAAM,GAAG,GAAG,OAAO,KAAK,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;QAC1F,OAAO;YACL,EAAE,EAAE,GAAG,OAAO,IAAI,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;YAC/G,QAAQ,EAAE,GAAG,KAAK,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,iBAAiB;YAC7D,QAAQ,EAAE,GAAG,KAAK,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK;YACzE,IAAI,EAAE,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;YAC9C,UAAU,EAAE,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;YACnE,QAAQ,EAAE,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;YAC7D,OAAO,EAAE,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO;YACpE,IAAI,EAAE,OAAO;SACd,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,gBAAgB,GAA8B;IAClD,EAAE,EAAE,SAAS;IACb,MAAM,EAAE,MAAM;IACd,IAAI,EAAE,SAAS;IACf,iFAAiF;IACjF,UAAU,EAAE,KAAK;IACjB,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,mBAAmB,CAAC,IAAI,CAAC;IAC1E,SAAS,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,GAAG,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC;IACvF,KAAK,EAAE,YAAY;CACpB,CAAC;AAEF,gFAAgF;AAChF,SAAS,WAAW,CAAC,MAAc;IACjC,IAAI,KAAc,CAAC;IACnB,IAAI,CAAC;QACH,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,CAAC;IACrC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACrC,MAAM,KAAK,GAAmD,EAAE,CAAC;IACjE,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;YAAE,SAAS;QAChD,MAAM,QAAQ,GAAG,OAAQ,IAA+B,CAAC,QAAQ,KAAK,QAAQ;YAC5E,CAAC,CAAE,IAA6B,CAAC,QAAQ;YACzC,CAAC,CAAC,EAAE,CAAC;QACP,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAE,IAA+B,CAAC,QAAQ,CAAC;YACvE,CAAC,CAAC,CAAE,IAAgD,CAAC,QAAQ,CAAC;YAC9D,CAAC,CAAC,EAAE,CAAC;QACP,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;YACzB,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC;YAClE,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;YAC7D,KAAK,CAAC,IAAI,CAAC;gBACT,EAAE,EAAE,GAAG,MAAM,IAAI,QAAQ,IAAI,IAAI,IAAI,CAAC,EAAE;gBACxC,QAAQ,EAAE,iBAAiB;gBAC3B,QAAQ,EAAE,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK;gBAC7C,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE,IAAI;gBAChB,OAAO,EAAE,OAAO,CAAC,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM;gBAC3D,IAAI,EAAE,MAAM;aACb,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,eAAe,GAA8B;IACjD,EAAE,EAAE,QAAQ;IACZ,MAAM,EAAE,KAAK;IACb,IAAI,EAAE,UAAU;IAChB,8DAA8D;IAC9D,UAAU,EAAE,KAAK;IACjB,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC;IAC3C,SAAS,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,GAAG,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC;IAClE,KAAK,EAAE,WAAW;CACnB,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,MAAM,uBAAuB,GAAG,CAAC,SAAS,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,CAAU,CAAC;AAEtF,SAAS,SAAS,CAAC,MAAc;IAC/B,IAAI,OAAgB,CAAC;IACrB,IAAI,CAAC;QACH,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,CAAC;IACvC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,MAAM,MAAM,GACV,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAE,OAAgC,CAAC,MAAM,CAAC;QAC/F,CAAC,CAAC,CAAE,OAAiD,CAAC,MAAM,CAAC;QAC7D,CAAC,CAAC,EAAE,CAAC;IACT,MAAM,KAAK,GAAmD,EAAE,CAAC;IACjE,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;QACzB,MAAM,IAAI,GAAG,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1D,IAAI,CAAC,IAAI;YAAE,SAAS;QACpB,KAAK,MAAM,SAAS,IAAI,uBAAuB,EAAE,CAAC;YAChD,MAAM,OAAO,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC;YAC/B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;gBAAE,SAAS;YACtC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;gBAC7B,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ;oBAAE,SAAS;gBACpD,MAAM,IAAI,GAAG,OAAQ,MAA6B,CAAC,IAAI,KAAK,QAAQ;oBAClE,CAAC,CAAE,MAA2B,CAAC,IAAI;oBACnC,CAAC,CAAC,SAAS,CAAC;gBACd,MAAM,IAAI,GAAG,OAAQ,MAA6B,CAAC,IAAI,KAAK,QAAQ;oBAClE,CAAC,CAAE,MAA2B,CAAC,IAAI;oBACnC,CAAC,CAAC,SAAS,CAAC;gBACd,KAAK,CAAC,IAAI,CAAC;oBACT,EAAE,EAAE,QAAQ,SAAS,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC,EAAE;oBACpD,QAAQ,EAAE,iBAAiB;oBAC3B,QAAQ,EAAE,KAAK;oBACf,IAAI,EAAE,IAAI;oBACV,UAAU,EAAE,IAAI;oBAChB,OAAO,EAAE,gBAAgB,SAAS,KAAK,OAAO,IAAI,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,KAAK,IAAI,oHAAoH;oBAC1N,IAAI,EAAE,QAAQ,SAAS,EAAE;iBAC1B,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,aAAa,GAA8B;IAC/C,EAAE,EAAE,MAAM;IACV,MAAM,EAAE,KAAK;IACb,IAAI,EAAE,QAAQ;IACd,6EAA6E;IAC7E,0EAA0E;IAC1E,kDAAkD;IAClD,UAAU,EAAE,KAAK;IACjB,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC;IAC3C,4EAA4E;IAC5E,2EAA2E;IAC3E,8DAA8D;IAC9D,SAAS,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC;QACrB,GAAG,MAAM;QACT,YAAY;QACZ,MAAM;QACN,WAAW;QACX,iCAAiC;QACjC,gBAAgB;KACjB;IACD,KAAK,EAAE,SAAS;CACjB,CAAC;AAEF,4EAA4E;AAC5E,SAAS,cAAc;IACrB,OAAO,IAAI,CAAC,MAAM,EAAE,EAAE,qBAAqB,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;AAC5D,CAAC;AAED;;;;GAIG;AACH,SAAS,eAAe;IACtB,OAAO,IAAI,CAAC,cAAc,EAAE,EAAE,mBAAmB,CAAC,CAAC;AACrD,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,UAAU,CAAC,MAAc;IAChC,IAAI,OAAgB,CAAC;IACrB,IAAI,CAAC;QACH,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,CAAC;IACvC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,MAAM,UAAU,GACd,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAE,OAAoC,CAAC,UAAU,CAAC;QACvG,CAAC,CAAC,CAAE,OAAqD,CAAC,UAAU,CAAC;QACrE,CAAC,CAAC,EAAE,CAAC;IACT,OAAO,UAAU;SACd,MAAM,CAAC,CAAC,CAAC,EAAgC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,CAAC;SAChF,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACT,MAAM,SAAS,GAAG,CAAC,CAAC,CAAC,SAAS,IAAI,EAAE,CAA4B,CAAC;QACjE,MAAM,UAAU,GAAG,CAAC,CAAC,CAAC,UAAU,IAAI,EAAE,CAA4B,CAAC;QACnE,MAAM,IAAI,GAAG,OAAO,SAAS,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QACtE,MAAM,QAAQ,GAAG,CAAC,SAAS,CAAC,QAAQ,IAAI,EAAE,CAA4B,CAAC;QACvE,MAAM,MAAM,GAAG,CAAC,SAAS,CAAC,MAAM,IAAI,EAAE,CAA4B,CAAC;QACnE,MAAM,SAAS,GAAG,OAAO,QAAQ,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;QAChF,MAAM,OAAO,GAAG,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;QAC1E,MAAM,SAAS,GAAG,OAAO,UAAU,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7E,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;QAChE,OAAO;YACL,EAAE,EAAE,SAAS,IAAI,IAAI,SAAS,IAAI,CAAC,IAAI,SAAS,EAAE;YAClD,QAAQ,EAAE,iBAAiB;YAC3B,QAAQ,EAAE,KAAK;YACf,IAAI;YACJ,UAAU,EAAE,SAAS;YACrB,QAAQ,EAAE,OAAO;YACjB,OAAO,EAAE,gCAAgC,KAAK,IAAI,GAAG,uBAAuB,SAAS,IAAI,cAAc,EAAE;YACzG,IAAI,EAAE,iBAAiB;SACxB,CAAC;IACJ,CAAC,CAAC,CAAC;AACP,CAAC;AAED,MAAM,cAAc,GAA8B;IAChD,EAAE,EAAE,OAAO;IACX,MAAM,EAAE,KAAK;IACb,IAAI,EAAE,SAAS;IACf,2EAA2E;IAC3E,+BAA+B;IAC/B,UAAU,EAAE,KAAK;IACjB,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC;IAC3C,SAAS,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC;QAC3B,GAAG,MAAM;QACT,aAAa;QACb,MAAM;QACN,UAAU;QACV,cAAc,EAAE;QAChB,UAAU;QACV,IAAI;KACL;IACD,UAAU,EAAE,GAAG,EAAE,CAAC,eAAe,EAAE;IACnC,KAAK,EAAE,UAAU;CAClB,CAAC;AAEF,mFAAmF;AACnF,MAAM,CAAC,MAAM,4BAA4B,GAAgC;IACvE,iBAAiB;IACjB,gBAAgB;IAChB,eAAe;IACf,aAAa;IACb,cAAc;CACf,CAAC;AAEF,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,aAAa,EACb,SAAS,EACT,eAAe,EACf,aAAa,EACb,gBAAgB,EAChB,cAAc,EACd,UAAU,GACX,CAAC"}
|
|
1
|
+
{"version":3,"file":"candidates.js","sourceRoot":"","sources":["../../../../src/audit/extractors/analyzers/candidates.ts"],"names":[],"mappings":"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"}
|