pentesting 0.101.6 → 0.101.8
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 +58 -34
- package/README.md +14 -8
- package/package.json +2 -2
package/ARCHITECTURE.md
CHANGED
|
@@ -2,7 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
This document reflects the current `main` branch architecture. It is the single,
|
|
4
4
|
detailed reference for how the runtime is structured; the [README](README.md)
|
|
5
|
-
stays intentionally short and usage-focused.
|
|
5
|
+
stays intentionally short and usage-focused. For a diagram-level tour of the
|
|
6
|
+
main runtime flows, see [Main Flows](docs/architecture/MAIN_FLOWS.md). Both are
|
|
7
|
+
internal-only and are never mirrored to the public repo.
|
|
6
8
|
|
|
7
9
|
> **Engine vs product.** The orchestration engine is **`builder`** — a
|
|
8
10
|
> general-purpose, local-first Rust agent runtime. **`pentesting`** is the
|
|
@@ -394,11 +396,33 @@ battlefield rows. Core status read failures retain their existing error path.
|
|
|
394
396
|
With no recorded run, `/status` still shows goal, manual/auto mode, queue, and
|
|
395
397
|
usage without an evidence read. Recorded `TurnExit` and typed `MissionState` are
|
|
396
398
|
shown separately so model Stop or run completion cannot appear as verified
|
|
397
|
-
mission completion. The live status row deliberately remains limited to
|
|
398
|
-
actionable progress/wait state: there is no frontier parsing, background refresh,
|
|
399
|
-
write, dispatch shortcut, or hidden chrome state.
|
|
400
|
-
|
|
401
|
-
|
|
399
|
+
mission completion. The live status row deliberately remains limited to
|
|
400
|
+
actionable progress/wait state: there is no frontier parsing, background refresh,
|
|
401
|
+
write, dispatch shortcut, or hidden chrome state.
|
|
402
|
+
|
|
403
|
+
Interactive `/auto` progress is producer-owned rather than inferred from the
|
|
404
|
+
latest conversation after the fact. Dispatch marks a self-prompt turn in flight;
|
|
405
|
+
successful cleanup captures that turn's final assistant markdown in memory,
|
|
406
|
+
records a deterministic completed-turn line in the transcript, and synchronizes
|
|
407
|
+
optional `current/target` progress to the footer before queued user input is
|
|
408
|
+
replayed. A regular `AUTO_GOAL_PROGRESS` line is observability-only.
|
|
409
|
+
`AUTO_GOAL_COMPLETE` retains completion authority and
|
|
410
|
+
`AUTO_GOAL_BLOCKED` remains non-terminal. Cancellation, goal/auto reset, and a
|
|
411
|
+
manual user turn invalidate pending completion provenance so a later reply
|
|
412
|
+
cannot be misattributed to the autonomous turn. Unexpected stream termination
|
|
413
|
+
also revokes ownership before queue replay, and explicit stop interrupts disable
|
|
414
|
+
auto mode before preserved input is replayed. Interrupt-listener shutdown
|
|
415
|
+
linearizes the terminal boundary as stop, reader join, then pending-source
|
|
416
|
+
recovery, so an Esc accepted concurrently with `TurnCompleted` wins before
|
|
417
|
+
progress or completion can be committed. Tool/delegated-agent markdown and
|
|
418
|
+
terminal events have no root completion authority while a nested producer owns
|
|
419
|
+
the stream. The auto footer is process-level chrome: turn-local backend resets
|
|
420
|
+
preserve it until an explicit UI state transition clears it. The footer receives
|
|
421
|
+
a bounded single-line goal projection, while the deterministic progress title
|
|
422
|
+
does not repeat the goal every turn, so multiline/control-bearing goals cannot
|
|
423
|
+
corrupt fixed chrome or inflate transcript history.
|
|
424
|
+
|
|
425
|
+
Completed type-ahead inputs carry an explicit active-turn behavior. Safe
|
|
402
426
|
inspection commands (`/info`, `/usage`, `/context`, `/memory`, `/status`,
|
|
403
427
|
`/help`, `/skill`, and `/tools`) are atomically extracted and
|
|
404
428
|
rendered without cancelling the response stream. State-changing and modal
|
|
@@ -418,32 +442,32 @@ the reader resumes after modal ownership ends. Type-ahead is therefore buffered
|
|
|
418
442
|
FIFO instead of racing or leaking into a later model, agent, or configuration
|
|
419
443
|
field. Service-layer approval, secret, selection, and follow-up prompts acquire
|
|
420
444
|
the same lifetime-bound modal handoff through the prompt-entry hook, and
|
|
421
|
-
concurrent service prompts are serialized so two widgets never read stdin at
|
|
422
|
-
once.
|
|
423
|
-
|
|
424
|
-
`/resume` is the canonical saved-session selector; `/conversation` and
|
|
425
|
-
`/conversations` remain compatibility aliases. The selector includes every
|
|
426
|
-
conversation with persisted context, even when it has no title. Resuming a
|
|
427
|
-
different conversation clears the process-local goal and forces auto mode off,
|
|
428
|
-
so state from the previous session cannot drive the resumed one accidentally.
|
|
429
|
-
`/new` applies the same process-local goal/auto reset at the fresh-session
|
|
430
|
-
boundary while preserving the queued FIFO tail. Persisted titles are reduced to
|
|
431
|
-
one bounded control-free selector row before that row is bound to its typed
|
|
432
|
-
conversation ID. Local upserts stamp the activity time used by `/resume`,
|
|
433
|
-
`--continue`, and `conversation resume <id>` ordering. The command remains
|
|
434
|
-
FIFO-queued while a turn is active because its selector is a modal terminal
|
|
435
|
-
owner.
|
|
436
|
-
|
|
437
|
-
Normal `/exit` and empty-prompt Ctrl+D termination are serialized through the
|
|
438
|
-
output actor. It rejects new writes, completes its current render batch, resets
|
|
439
|
-
styles and terminal modes, restores the full scroll region, clears the tracked
|
|
440
|
-
multiline footer, shows the cursor, disables raw mode, and drops the terminal
|
|
441
|
-
surface before printing one plain saved-session message. The shutdown
|
|
442
|
-
acknowledgement and actor join occur after that message, so no detached redraw
|
|
443
|
-
can overwrite terminal cleanup. The generic `restore_terminal` function is a
|
|
444
|
-
best-effort fallback for failures outside this coordinated path. An empty
|
|
445
|
-
session reports that no resumable messages were created instead of promising a
|
|
446
|
-
session that the repository intentionally excludes from the resume list.
|
|
445
|
+
concurrent service prompts are serialized so two widgets never read stdin at
|
|
446
|
+
once.
|
|
447
|
+
|
|
448
|
+
`/resume` is the canonical saved-session selector; `/conversation` and
|
|
449
|
+
`/conversations` remain compatibility aliases. The selector includes every
|
|
450
|
+
conversation with persisted context, even when it has no title. Resuming a
|
|
451
|
+
different conversation clears the process-local goal and forces auto mode off,
|
|
452
|
+
so state from the previous session cannot drive the resumed one accidentally.
|
|
453
|
+
`/new` applies the same process-local goal/auto reset at the fresh-session
|
|
454
|
+
boundary while preserving the queued FIFO tail. Persisted titles are reduced to
|
|
455
|
+
one bounded control-free selector row before that row is bound to its typed
|
|
456
|
+
conversation ID. Local upserts stamp the activity time used by `/resume`,
|
|
457
|
+
`--continue`, and `conversation resume <id>` ordering. The command remains
|
|
458
|
+
FIFO-queued while a turn is active because its selector is a modal terminal
|
|
459
|
+
owner.
|
|
460
|
+
|
|
461
|
+
Normal `/exit` and empty-prompt Ctrl+D termination are serialized through the
|
|
462
|
+
output actor. It rejects new writes, completes its current render batch, resets
|
|
463
|
+
styles and terminal modes, restores the full scroll region, clears the tracked
|
|
464
|
+
multiline footer, shows the cursor, disables raw mode, and drops the terminal
|
|
465
|
+
surface before printing one plain saved-session message. The shutdown
|
|
466
|
+
acknowledgement and actor join occur after that message, so no detached redraw
|
|
467
|
+
can overwrite terminal cleanup. The generic `restore_terminal` function is a
|
|
468
|
+
best-effort fallback for failures outside this coordinated path. An empty
|
|
469
|
+
session reports that no resumable messages were created instead of promising a
|
|
470
|
+
session that the repository intentionally excludes from the resume list.
|
|
447
471
|
|
|
448
472
|
Typing `/` opens the complete registered command catalog. Search includes
|
|
449
473
|
canonical names and aliases; Up/Down changes the selection, and Enter inserts
|
|
@@ -560,12 +584,12 @@ Inside an interactive session, these commands inspect and drive runtime state
|
|
|
560
584
|
/memory Show stored conversation memories for the current conversation
|
|
561
585
|
/tools List the currently available tools and schemas
|
|
562
586
|
/agent Switch the active agent
|
|
563
|
-
/resume Resume a saved session for the active workspace
|
|
587
|
+
/resume Resume a saved session for the active workspace
|
|
564
588
|
/goal <task> Set the active goal without enabling autonomous mode
|
|
565
589
|
/auto Toggle autonomous mode for the current goal (default: off; Esc stops it)
|
|
566
590
|
/update Download and apply the latest public release asset for supported native targets
|
|
567
591
|
/help Show all commands
|
|
568
|
-
/exit Save the session, restore the terminal, and quit
|
|
592
|
+
/exit Save the session, restore the terminal, and quit
|
|
569
593
|
```
|
|
570
594
|
|
|
571
595
|
## Security Domain Skills
|
package/README.md
CHANGED
|
@@ -73,7 +73,9 @@ Provider variables are optional — the TUI launches without them and lets you l
|
|
|
73
73
|
| The best design blueprint is the human being | Better systems begin with better self-observation: understand how we perceive, decide, learn, and recover, then make those loops observable |
|
|
74
74
|
| The agent is the bottleneck | As AI models advance, the agent framework and the surrounding system must evolve with them |
|
|
75
75
|
|
|
76
|
-
|
|
76
|
+
---
|
|
77
|
+
|
|
78
|
+
## Capability record
|
|
77
79
|
|
|
78
80
|
| Date | Result | Test setup | Note |
|
|
79
81
|
| --- | --- | --- | --- |
|
|
@@ -90,13 +92,11 @@ Provider variables are optional — the TUI launches without them and lets you l
|
|
|
90
92
|
| `/model [query]` | Switch provider, model, or custom endpoint |
|
|
91
93
|
| `/goal <objective>` | Set or clear the active goal |
|
|
92
94
|
| `/auto` | Run the active goal automatically; Esc stops it |
|
|
93
|
-
| `/status` | Show the current run and verified mission status |
|
|
94
|
-
| `/new` · `/retry` | Start a new conversation or retry the last turn |
|
|
95
|
-
| `/resume` | Resume a saved session from the current workspace |
|
|
96
|
-
| `/config` | Edit runtime configuration |
|
|
97
|
-
| `/exit` | Save the session, restore the terminal, and quit |
|
|
98
|
-
|
|
99
|
-
> The command you run is always **`pentesting`**. The internal engine is **`builder`** — `pentesting` runs it under the hood; the engine name never surfaces in normal use.
|
|
95
|
+
| `/status` | Show the current run and verified mission status |
|
|
96
|
+
| `/new` · `/retry` | Start a new conversation or retry the last turn |
|
|
97
|
+
| `/resume` | Resume a saved session from the current workspace |
|
|
98
|
+
| `/config` | Edit runtime configuration |
|
|
99
|
+
| `/exit` | Save the session, restore the terminal, and quit |
|
|
100
100
|
|
|
101
101
|
---
|
|
102
102
|
|
|
@@ -115,3 +115,9 @@ Provider variables are optional — the TUI launches without them and lets you l
|
|
|
115
115
|
> Each voice sings its most beautiful song from its own place, yet when combined, they create one grand, beautiful melody. I believe this structure is no different from AI agents.
|
|
116
116
|
>
|
|
117
117
|
> — *agnusdei1207*
|
|
118
|
+
|
|
119
|
+
---
|
|
120
|
+
|
|
121
|
+
## 💡 Insight
|
|
122
|
+
|
|
123
|
+
> Analyzing countless starred agent repos and papers gave me insights, but adopting them didn't actually solve the core problem. What did, I think: primitive CS theory — backtracking, Monte Carlo, Prim, Kruskal — and ideas from observing myself, the best design blueprint and best practice there is. The AI era keeps pushing sensational marketing, and I've lost trust in analyzing it. I think refining the fundamentals, internalizing them, and finding my own way matters more, especially now.
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pentesting",
|
|
3
|
-
"version": "0.101.
|
|
4
|
-
"builderReleaseTag": "v0.101.
|
|
3
|
+
"version": "0.101.8",
|
|
4
|
+
"builderReleaseTag": "v0.101.8",
|
|
5
5
|
"description": "Penetration testing AI agent powered by Rust, with audited reverse-shell capture, verified PTY upgrades, and evidence-first orchestration.",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"author": "agnusdei1207",
|