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 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
- Completed type-ahead inputs carry an explicit active-turn behavior. Safe
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
- ### Capability record
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.6",
4
- "builderReleaseTag": "v0.101.6",
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",