pentesting 0.100.3 → 0.100.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/ARCHITECTURE.md CHANGED
@@ -27,6 +27,9 @@ stays intentionally short and usage-focused.
27
27
  access (policy-based today; OS sandboxing is roadmap).
28
28
  - **Intelligent Queuing** — Queued inputs are deduplicated and prioritized live;
29
29
  obsolete tasks are preempted, not FIFO-replayed.
30
+ - **Prompt Ownership** — Prompt mode owns Enter submission. Buffered replay may
31
+ preserve typed-ahead input, but live terminal control responses, redraws, and
32
+ resize noise are not allowed to turn a normal Enter into a pasted newline.
30
33
  - **Lab Session Multiplexing** — `shell-listener` runs multiple authorized TCP
31
34
  sessions with per-session routing, identity tags, verified PTY upgrade state,
32
35
  transcripts, command ledgers, replay, and orphaned evidence recovery.
@@ -66,6 +69,7 @@ Plain view:
66
69
  ```text
67
70
  user input
68
71
  -> CLI / interactive prompt loop
72
+ -> terminal-session prompt ownership + buffered replay boundary
69
73
  -> BuilderAPI facade
70
74
  -> BuilderApp classification and strategy
71
75
  -> active agent or delegated subagent
@@ -85,6 +89,27 @@ There is no fixed persona. The runtime derives a profile per request, optionally
85
89
  overlays a named autonomy profile, then reuses tool scope, phase, and memory
86
90
  weighting.
87
91
 
92
+ CTF frontier exploration keeps the global `[exploration]` default off, then
93
+ enables the effective CTF profile when `engagement.kind = "ctf"` or a
94
+ `flag_format` is configured. That profile selects `ctf-competition` autonomy,
95
+ turns on exploration, requires verified `flag_check` evidence before completion,
96
+ and auto-continues the TUI loop after `/goal`. See `docs/config/ctf.toml`,
97
+ `docs/plans/2026/07/08/PLAN_CtfFrontierExploration_2026-07-08.md`, and the
98
+ decision record beside it.
99
+
100
+ The shipped design is advisor-guided, not scheduler-owned: `decide_next` is a
101
+ pure traversal recommendation over `EvidenceKind::Lead` events, while dispatch
102
+ uses the existing delegated-task fan-out. There is no detached task registry or
103
+ second runtime scheduler in the default implementation. Phase 10 is pinned by
104
+ `orch_spec::exploration_e2e`, which exercises the flag-off path and the
105
+ breadth/depth/pivot/reseed/merge flow without launching real subagents.
106
+
107
+ Reliability guards sit below the profile layer. Provider protocol capabilities
108
+ default native tool support for OpenAI/Anthropic-compatible responses on
109
+ registry misses, unparsed tool-shaped markup becomes retryable instead of a
110
+ false completion, raw control markup is scrubbed from the stream, and the
111
+ markdown renderer bounds very large no-newline buffers.
112
+
88
113
  ```mermaid
89
114
  flowchart LR
90
115
  R[Request] --> GEN["Derive<br/>dynamic profile"]
@@ -145,8 +170,9 @@ definition under `crates/builder_repo/src/agents/`.
145
170
  ## Named Autonomy Profiles
146
171
 
147
172
  Optionally pin the top-level profile (`autonomy_profile = "ctf-competition"`);
148
- leave unset for classifier-driven defaults. Delegated subagent contracts stay
149
- intact. Defined in `crates/builder_domain/src/autonomy_profile.rs`.
173
+ leave unset for classifier-driven defaults. CTF engagement config auto-selects
174
+ the CTF profile when no explicit profile is set. Delegated subagent contracts
175
+ stay intact. Defined in `crates/builder_domain/src/autonomy_profile.rs`.
150
176
 
151
177
  | Profile | Purpose |
152
178
  | --- | --- |
@@ -157,9 +183,10 @@ intact. Defined in `crates/builder_domain/src/autonomy_profile.rs`.
157
183
 
158
184
  ## Engagement Metadata
159
185
 
160
- Runs can attach typed engagement context — scope, phase, tags, and standard refs
161
- (PTES, MITRE ATT&CK, OWASP, CWE/CAPEC, NIST CSF, CIS Controls) — to workflow
162
- metadata. `/workflow report` exports it as a Markdown handoff.
186
+ Runs can attach typed engagement context — scope, phase, tags, flag format,
187
+ flag-evidence requirement, and standard refs (PTES, MITRE ATT&CK, OWASP,
188
+ CWE/CAPEC, NIST CSF, CIS Controls) to workflow metadata. `/workflow report`
189
+ exports it as a Markdown handoff.
163
190
 
164
191
  ## Memory & Knowledge
165
192
 
@@ -316,14 +343,14 @@ npm install -g pentesting
316
343
 
317
344
  ## Supported Runtime Targets
318
345
 
319
- The npm launcher currently resolves managed native release assets for the
320
- targets below. Other operating systems can run the Docker image or use
346
+ The npm launcher currently resolves a managed native release asset for Linux
347
+ x64. Other operating systems, including Apple Silicon Macs, Linux arm64,
348
+ Windows, and Android, can run the multi-architecture Docker image or use
321
349
  `PENTESTING_BIN` to point at a locally built compatible binary.
322
350
 
323
351
  | OS | CPU | Release asset |
324
352
  | --- | --- | --- |
325
353
  | Linux | x64 | `pentesting-x86_64-unknown-linux-musl` |
326
- | Android | arm64 | `pentesting-aarch64-linux-android` |
327
354
 
328
355
  `/update` (and the npm postinstall) resolves the matching asset for the current
329
356
  supported OS/CPU target from `agnusdei1207/pentesting-public`.
@@ -332,22 +359,19 @@ supported OS/CPU target from `agnusdei1207/pentesting-public`.
332
359
 
333
360
  Pentesting reads a user-global config from `~/.pentesting/.pentesting.toml`,
334
361
  overridden by project-local `.pentesting.toml` files discovered by walking up
335
- from the working directory. The storage config is intentionally small:
336
-
337
- ```toml
338
- [storage]
339
- backend = "local" # Local md/fs runtime state
340
- ```
362
+ from the working directory. Local storage is the default; normal setup only
363
+ needs the public model endpoint environment.
341
364
 
342
365
  The same shape is represented in `builder.schema.json`, `.pentesting.toml`, and
343
- the interactive `/config` UI.
344
-
345
- Environment variables use the `PENTESTING_` prefix, with `__` for nested keys —
346
- e.g. `PENTESTING_SESSION__MODEL_ID=...`. Set `PENTESTING_CONFIG` to override the
347
- global config directory.
366
+ the interactive `/config` UI. Set `PENTESTING_CONFIG` to override the global
367
+ config directory.
348
368
 
349
369
  | Variable | Description |
350
370
  | --- | --- |
371
+ | `OPENAI_API_KEY` | API key or gateway token for OpenAI-compatible providers. |
372
+ | `OPENAI_BASE_URL` | OpenAI-compatible base URL, for example `https://api.openai.com/v1` or a self-hosted gateway. |
373
+ | `OPENAI_MODEL` | Default model id. |
374
+ | `OPENAI_MAX_TOKENS` | Optional output-token override; accepts values like `4096`, `32k`, or `1M`. |
351
375
  | `PENTESTING_BIN` | Use an already-installed Builder binary instead of the managed download. |
352
376
  | `PENTESTING_PRODUCT_NAME` | Runtime banner label. The `pentesting` launcher sets this to `pentesting` automatically. |
353
377
  | `PENTESTING_REPO` | Override the public release repo used for binary downloads. Defaults to `agnusdei1207/pentesting-public`. |
package/README.md CHANGED
@@ -17,7 +17,7 @@ The runtime—not the model—owns routing, tool sandboxing, verification, compl
17
17
 
18
18
  ## ✅ Capabilities
19
19
 
20
- Agent-loop essentials at parity with leading coding agents, plus a security-focused layer on top.
20
+ Agent-loop essentials plus a security-focused runtime layer.
21
21
 
22
22
  | Area | What it does |
23
23
  | --- | --- |
@@ -25,62 +25,63 @@ Agent-loop essentials at parity with leading coding agents, plus a security-focu
25
25
  | Tool guardrails | Read-before-edit enforcement, repeat-call guard, policy-gated file/shell/network |
26
26
  | Permissions | Allow / Deny / Confirm, with once/always decisions persisted |
27
27
  | Context compaction | Automatic micro-pruning + model-triggered summarization, pre/post hooks |
28
- | Interrupt & steering | ESC to interrupt mid-turn, queue follow-ups while it works |
28
+ | Interrupt & steering | ESC to interrupt mid-turn, queue follow-ups while it works, and keep Enter submissions deterministic across PTY redraw/control-response noise |
29
29
  | Reverse-shell control plane | Accept and track multiple authorized callbacks, tag/probe sessions, send/observe/run commands, verify PTY upgrades, and keep transcript/ledger/evidence records |
30
30
  | PTY session control | Treat upgraded shells as managed PTY sessions with resize gating, transcript capture, FD accounting, and deterministic close/revoke/gc reclamation |
31
- | Subagents | Parallel delegated tasks, budget-capped, role-specific personas |
31
+ | Frontier-guided exploration | Persistent, deduplicated lead frontier: the runtime enforces pivots and caps, and recommends breadth-first enumeration vs depth-first exploitation while the model drives |
32
+ | Subagents | Broad-clone delegates with category focus overlays; independent deep-specialist leads (crypto/rev/pwn) run in the same parallel batch so the main line keeps moving |
32
33
  | MCP & skills | Dynamic MCP tool discovery, layered markdown skills |
33
34
  | Memory | Ebbinghaus-style decaying notes + hybrid lexical/semantic/graph retrieval |
34
35
 
35
- **Beyond the baseline:** evidence-gated completion adjudication (Complete / Replan / Blocked), a CTF-oriented reverse-shell/PTY control plane (multi-session tracking, helper-only `pty_upgrade` plus verified `upgrade`, transcript/history/replay, lifecycle/FD management), and CTF-grade verification tools (flag check, best-of-N verify, findings ledger).
36
-
37
36
  ---
38
37
 
39
38
  ## 🚀 Quick Start
40
39
 
41
- Install globally, or run without installing via your package manager of choice:
40
+ Install globally, or run once with a Node package runner:
42
41
 
43
42
  ```bash
44
43
  npm install -g pentesting && pentesting # install
45
44
  npx pentesting # or run once, no install
46
45
  pnpm dlx pentesting
47
46
  yarn dlx pentesting
48
- bunx pentesting
49
- deno run npm:pentesting
50
47
  ```
51
48
 
49
+ Requires Node.js 18.18+. Use npm/npx/pnpm/yarn; Bun and Deno runners are not supported.
50
+
52
51
  ### 🐳 Run with Docker
53
52
 
54
- No local Rust toolchain or native binary needed — the image ships the full
55
- runtime plus the offensive testing toolchain:
53
+ No local Rust toolchain needed:
56
54
 
57
55
  ```bash
58
- export ANTHROPIC_AUTH_TOKEN="sk-..." # provider token
59
- export ANTHROPIC_API_KEY="$ANTHROPIC_AUTH_TOKEN" # keep both for Anthropic-compatible gateways
60
- export ANTHROPIC_BASE_URL="https://api.minimax.io/anthropic"
61
- export ANTHROPIC_MODEL="MiniMax-M2.7"
62
- export PENTESTING_SESSION__MODEL_ID="$ANTHROPIC_MODEL"
56
+ export OPENAI_API_KEY="sk-..." # provider API key or gateway token
57
+ export OPENAI_BASE_URL="https://api.openai.com/v1"
58
+ export OPENAI_MODEL="gpt-4o"
59
+ export OPENAI_MAX_TOKENS="4096"
63
60
 
64
61
  docker run -it --rm \
65
- -v "$(pwd):/workspace" -w /workspace \
66
- -e ANTHROPIC_AUTH_TOKEN \
67
- -e ANTHROPIC_API_KEY \
68
- -e ANTHROPIC_BASE_URL \
69
- -e ANTHROPIC_MODEL \
70
- -e PENTESTING_SESSION__MODEL_ID \
62
+ -v "$(pwd):/workspace" \
63
+ -v pentesting-config:/root/.pentesting \
64
+ -w /workspace \
65
+ -e OPENAI_API_KEY \
66
+ -e OPENAI_BASE_URL \
67
+ -e OPENAI_MODEL \
68
+ -e OPENAI_MAX_TOKENS \
71
69
  agnusdei1207/pentesting:latest
72
70
  ```
73
71
 
72
+ Provider environment variables are optional for startup. If they are omitted,
73
+ the interactive TUI still launches and lets you configure/login inside the
74
+ persistent `pentesting-config` volume.
75
+
74
76
  Or via Docker Compose:
75
77
 
76
78
  ```bash
77
79
  PENTESTING_PROJECT_DIR=/path/to/project \
78
- ANTHROPIC_AUTH_TOKEN=sk-... \
79
- ANTHROPIC_API_KEY=sk-... \
80
- ANTHROPIC_BASE_URL=https://api.minimax.io/anthropic \
81
- ANTHROPIC_MODEL=MiniMax-M2.7 \
82
- PENTESTING_SESSION__MODEL_ID=MiniMax-M2.7 \
83
- docker compose run pentesting
80
+ OPENAI_API_KEY=sk-... \
81
+ OPENAI_BASE_URL=https://api.openai.com/v1 \
82
+ OPENAI_MODEL=gpt-4o \
83
+ OPENAI_MAX_TOKENS=4096 \
84
+ docker compose run --rm pentesting
84
85
  ```
85
86
 
86
87
  ### Common commands
@@ -92,7 +93,7 @@ pentesting shell-listener --bind 127.0.0.1 --port 4444 # Authorized reverse-sh
92
93
  pentesting --version
93
94
  ```
94
95
 
95
- Use `shell-listener` in authorized CTF/lab work to accept multiple callbacks, label/tag sessions, probe remote identity, run sentinel-tracked commands, verify dumb-shell PTY upgrades, attach/detach without closing, and retain raw logs, transcripts, command history, replay data, and evidence manifests.
96
+ Use `shell-listener` in authorized CTF/lab work to accept callbacks, tag sessions, run sentinel-tracked commands, verify PTY upgrades, and retain transcripts/evidence.
96
97
 
97
98
  Short version: the agent can catch a dumb reverse shell, upgrade it to a verified PTY, pivot to a second callback, and reclaim both sessions cleanly with `close` / `revoke` / `gc`.
98
99
 
@@ -100,7 +101,7 @@ Inside a session, `/help` lists every command and `/update` pulls the latest rel
100
101
 
101
102
  ### 🔌 Reverse-shell & PTY sessions
102
103
 
103
- Catch and manage authorized shell callbacks like a session manager — **one listener, many targets, full audit trail, no leaked file descriptors.**
104
+ Catch and manage authorized shell callbacks: one listener, many targets, audited cleanup.
104
105
 
105
106
  ```bash
106
107
  pentesting shell-listener --port 4444 # 1. Catch callbacks (tracks many at once)
@@ -120,45 +121,82 @@ pentesting shell-session revoke --session 1 # 5. Hard-close: reclaim FDs +
120
121
 
121
122
  ## ⚙️ Configuration
122
123
 
123
- Pentesting reads `~/.pentesting/.pentesting.toml`, overridden by a project-local `.pentesting.toml`:
124
-
125
- ```toml
126
- [storage]
127
- backend = "local" # Local md/fs runtime state
128
- ```
129
-
130
- Environment variables use the `PENTESTING_` prefix (`__` for nested keys, e.g. `PENTESTING_SESSION__MODEL_ID=...`). Full variable list and the legacy `BUILDER_*` aliases are documented in [`ARCHITECTURE.md`](ARCHITECTURE.md#configuration).
124
+ Pentesting uses local storage by default. For normal use, configure only the model endpoint:
131
125
 
132
126
  ### Example `.env` / shell setup
133
127
 
134
128
  ```bash
135
- # Model provider credentials — set whichever provider(s) you use
136
- export ANTHROPIC_API_KEY="sk-ant-..."
137
- export ANTHROPIC_AUTH_TOKEN="$ANTHROPIC_API_KEY" # token used by Anthropic-compatible providers
138
- export ANTHROPIC_BASE_URL="https://api.minimax.io/anthropic"
139
- export ANTHROPIC_MODEL="MiniMax-M2.7"
129
+ # OpenAI-compatible provider or gateway
140
130
  export OPENAI_API_KEY="sk-..."
141
- export OPENROUTER_API_KEY="sk-or-..."
131
+ export OPENAI_BASE_URL="https://api.openai.com/v1"
132
+ export OPENAI_MODEL="gpt-4o"
133
+ export OPENAI_MAX_TOKENS="4096"
142
134
 
143
135
  # Runtime overrides (optional)
144
- export PENTESTING_SESSION__MODEL_ID="$ANTHROPIC_MODEL" # default model for new sessions
145
136
  export PENTESTING_CONFIG="$HOME/.config/pentesting" # move the global config dir
146
137
  export PENTESTING_SKIP_DOWNLOAD=1 # skip postinstall binary download (CI)
147
138
  ```
148
139
 
149
- With Docker, pass the same variables through with `-e`:
140
+ The TUI pre-fills output max tokens from known model names/provider metadata. `OPENAI_MAX_TOKENS` and the TUI field are explicit overrides for custom/self-hosted models.
141
+
142
+ ### Frontier-guided CTF exploration
143
+
144
+ The global frontier engine default stays off, but CTF-shaped engagement config
145
+ auto-applies the CTF runtime profile: `ctf-competition` autonomy, runtime
146
+ exploration, autonomous continuation, and a completion gate that requires
147
+ verified `flag_check` evidence. A ready-to-copy profile lives at
148
+ `docs/config/ctf.toml`:
149
+
150
+ ```toml
151
+ [engagement]
152
+ kind = "ctf"
153
+ flag_format = "flag\\{[^}]+\\}"
154
+ require_flag_evidence = true
155
+
156
+ [exploration]
157
+ enabled = true
158
+ max_frontier_nodes = 256
159
+ max_breadth = 4
160
+ ```
161
+
162
+ With the profile active, the runtime stores `explore` leads as
163
+ `EvidenceKind::Lead` events, carries prior-run frontier/findings/verified flags
164
+ forward, deduplicates leads, auto-pivots dead probes, enforces graph/cap limits,
165
+ and injects a breadth/depth recommendation into mission control. The model still
166
+ drives the work through `explore` and `task`; heavy independent leads such as
167
+ crypto/rev/pwn ride the same parallel delegation batch rather than a detached
168
+ background scheduler. Operators can inspect the current graph with `/frontier`,
169
+ and the status row shows compact frontier progress during dispatch.
170
+
171
+ Malformed tool-call output is fail-loud: unparsed tool-shaped markup is retried
172
+ instead of accepted as a final answer, the TUI suppresses raw control markup, and
173
+ large no-newline streams are bounded so rendering cannot hang behind usage-only
174
+ progress ticks.
175
+
176
+ The shipped contract is covered by
177
+ `cargo test -p builder_app orch_spec::exploration_e2e`: it verifies the
178
+ flag-off regression path plus breadth enumeration, depth descent, sibling
179
+ breadth, dead-probe pivot, global reseed, seed digest, broad-clone overlay, and
180
+ child result promotion.
181
+
182
+ With Docker, mount both your project and the persistent runtime config volume, then pass the same variables through with `-e`:
150
183
 
151
184
  ```bash
152
185
  docker run -it --rm \
153
- -v "$(pwd):/workspace" -w /workspace \
154
- -e ANTHROPIC_AUTH_TOKEN \
155
- -e ANTHROPIC_API_KEY \
156
- -e ANTHROPIC_BASE_URL \
157
- -e ANTHROPIC_MODEL \
158
- -e PENTESTING_SESSION__MODEL_ID \
186
+ -v "$(pwd):/workspace" \
187
+ -v pentesting-config:/root/.pentesting \
188
+ -w /workspace \
189
+ -e OPENAI_API_KEY \
190
+ -e OPENAI_BASE_URL \
191
+ -e OPENAI_MODEL \
192
+ -e OPENAI_MAX_TOKENS \
159
193
  agnusdei1207/pentesting:latest
160
194
  ```
161
195
 
196
+ Those variables only pre-fill provider settings. Leaving them unset must not
197
+ block the container from launching the TUI; configure the provider interactively
198
+ inside the container instead.
199
+
162
200
  > **Note:** The command you run is always **`pentesting`**. The internal engine is **`builder`** — `pentesting` downloads and runs it under the hood; the engine name never surfaces in normal use.
163
201
 
164
202
  ---
@@ -166,6 +204,7 @@ docker run -it --rm \
166
204
  ## 📖 Documentation
167
205
 
168
206
  * [`ARCHITECTURE.md`](ARCHITECTURE.md) — Runtime flow, agent team, memory model, crate map, tool surface, and supported targets.
207
+ * Internal layout: service traits are split under `builder_app/src/services/*`; OpenAI request conversion is isolated under `dto/openai/request/*`.
169
208
  * [Public site](https://agnusdei1207.github.io/pentesting-public/) — Landing page and public runtime entry surface.
170
209
  * [`compose.yaml`](https://github.com/agnusdei1207/pentesting-public) — Docker Compose facade for pentesting sessions.
171
210
 
package/lib/runtime.mjs CHANGED
@@ -14,15 +14,9 @@ const MANAGED_BINARY_DIR = path.join(PACKAGE_ROOT, "vendor");
14
14
  const MANAGED_BINARY_MANIFEST = path.join(MANAGED_BINARY_DIR, "pentesting-manifest.json");
15
15
 
16
16
  const RELEASE_TARGETS = {
17
- // Native binaries published as release assets. Linux uses musl (static, covers
18
- // x64/arm64); android is the cross-built target. macOS/Windows are not
19
- // cross-buildable from the Linux release host, so they are served by the
20
- // Docker image (see the Unsupported-platform error below).
21
- "android:arm64": {
22
- assetName: "pentesting-aarch64-linux-android",
23
- binaryFileName: "builder",
24
- label: "android-arm64",
25
- },
17
+ // Native binaries published as release assets. Linux x64 uses musl (static).
18
+ // macOS, Windows, Linux arm64, and Android are served by the multi-arch Docker
19
+ // image (see the unsupported-platform error below).
26
20
  "linux:x64": {
27
21
  assetName: "pentesting-x86_64-unknown-linux-musl",
28
22
  binaryFileName: "builder",
@@ -58,10 +52,10 @@ export function resolveReleaseAsset(platform = process.platform, arch = process.
58
52
  if (!target) {
59
53
  const supported = Object.keys(RELEASE_TARGETS).join(", ");
60
54
  throw new Error(
61
- `No native pentesting binary for '${platform}/${arch}'. ` +
55
+ `No native pentesting binary for '${platform}/${arch}'. ` +
62
56
  `Native targets: ${supported}. ` +
63
- `On macOS/Windows run it via Docker instead: ` +
64
- `docker run -it --rm -v "$(pwd):/workspace" agnusdei1207/pentesting`,
57
+ `On macOS/Windows/Linux arm64/Android run it via Docker instead: ` +
58
+ `docker run -it --rm -v "$(pwd):/workspace" -v pentesting-config:/root/.pentesting -w /workspace -e OPENAI_API_KEY -e OPENAI_BASE_URL -e OPENAI_MODEL -e OPENAI_MAX_TOKENS agnusdei1207/pentesting`,
65
59
  );
66
60
  }
67
61
  return target;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "pentesting",
3
- "version": "0.100.3",
4
- "builderReleaseTag": "v0.100.0",
3
+ "version": "0.100.5",
4
+ "builderReleaseTag": "v0.100.5",
5
5
  "description": "pentesting — coding agent runtime with audited reverse-shell capture, verified PTY session upgrades, pivot control, evidence transcripts, and safe session reclamation.",
6
6
  "license": "MIT",
7
7
  "author": "agnusdei1207",
@@ -52,8 +52,9 @@
52
52
  "audit": "bash scripts/audit-project.sh",
53
53
  "test": "node --test tests/*.test.mjs",
54
54
  "preflight:local": "bash scripts/preflight-local.sh",
55
+ "refactor:stability": "bash scripts/refactor-stability.sh",
55
56
  "verify": "npm run consistency && npm run test",
56
- "check": "npm run verify",
57
+ "check": "npm run check:docker",
57
58
  "pentesting:help": "bash scripts/pentesting-release-help.sh",
58
59
  "pentesting:status": "bash scripts/pentesting-release-status.sh",
59
60
  "pentesting:test": "npm run test",
@@ -71,7 +72,7 @@
71
72
  "public:sync": "bash scripts/sync-public-repo.sh",
72
73
  "public:mirror-release": "bash scripts/mirror-public-release.sh",
73
74
  "release:backfill": "bash scripts/backfill-release-local.sh",
74
- "check:docker": "sh -c 'npm run docker:build && docker run -it --rm -v builder-workspace:/workspace -e ANTHROPIC_BASE_URL -e ANTHROPIC_AUTH_TOKEN -e ANTHROPIC_MODEL -e ANTHROPIC_API_KEY -e MINIMAX_API_KEY -e OPENAI_API_KEY -e OPENAI_BASE_URL -e GEMINI_API_KEY -e DEEPSEEK_API_KEY agnusdei1207/pentesting:latest'",
75
+ "check:docker": "npm run docker:build && docker run -it --rm -v builder-workspace:/workspace -v pentesting-config:/root/.pentesting -e OPENAI_API_KEY -e OPENAI_BASE_URL -e OPENAI_MODEL -e OPENAI_MAX_TOKENS agnusdei1207/pentesting:latest",
75
76
  "docker:build": "(docker image inspect agnusdei1207/pentesting-build-base:1.96 >/dev/null 2>&1 && docker image inspect agnusdei1207/pentesting-runtime-base:26.04 >/dev/null 2>&1 || npm run docker:base:build) && docker build --build-arg APP_VERSION=$(git describe --tags --abbrev=0 2>/dev/null || echo dev) -t agnusdei1207/pentesting:latest .",
76
77
  "docker:base:build": "docker build -t agnusdei1207/pentesting-build-base:1.96 -f docker/build-base.Dockerfile . && docker build -t agnusdei1207/pentesting-runtime-base:26.04 -f docker/runtime-base.Dockerfile .",
77
78
  "release:patch": "./scripts/release-all.sh patch",