pwn 0.5.684 → 0.5.685
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.
- checksums.yaml +4 -4
- data/README.md +6 -0
- data/documentation/Agent-Tool-Registry.md +1 -3
- data/documentation/Configuration.md +0 -2
- data/documentation/Home.md +2 -2
- data/documentation/How-PWN-Works.md +2 -2
- data/documentation/Installation.md +18 -2
- data/documentation/Persistence.md +1 -1
- data/documentation/Session-Workflow.md +8 -28
- data/documentation/Skills-Memory-Learning.md +20 -0
- data/documentation/Troubleshooting.md +1 -1
- data/documentation/Why-PWN.md +1 -1
- data/documentation/diagrams/dot/memory-skills-detailed.dot +1 -1
- data/documentation/diagrams/dot/overall-pwn-architecture.dot +1 -1
- data/documentation/diagrams/dot/persistence-filesystem.dot +1 -1
- data/documentation/diagrams/dot/sessions-cron-automation.dot +1 -1
- data/documentation/diagrams/memory-skills-detailed.svg +85 -84
- data/documentation/diagrams/overall-pwn-architecture.svg +15 -15
- data/documentation/diagrams/persistence-filesystem.svg +1 -1
- data/documentation/diagrams/sessions-cron-automation.svg +7 -6
- data/documentation/pwn-ai-Agent.md +4 -7
- data/etc/default_skills/bug-bounty-hunting/SKILL.md +70 -0
- data/etc/default_skills/deep-exploitation/SKILL.md +74 -0
- data/etc/default_skills/hardware-and-firmware-testing/SKILL.md +83 -0
- data/etc/default_skills/osint/SKILL.md +147 -0
- data/etc/default_skills/penetration-testing/SKILL.md +81 -0
- data/etc/default_skills/red-teaming/SKILL.md +70 -0
- data/etc/default_skills/reverse-engineering-binaries/SKILL.md +70 -0
- data/etc/default_skills/sast-code-scans/SKILL.md +66 -0
- data/etc/default_skills/social-engineering/SKILL.md +67 -0
- data/etc/default_skills/vulnerability-research-fundamentals/SKILL.md +74 -0
- data/etc/default_skills/web-application-penetration-testing/SKILL.md +68 -0
- data/lib/pwn/ai/agent/loop.rb +3 -28
- data/lib/pwn/ai/agent/mistakes.rb +6 -6
- data/lib/pwn/ai/agent/prompt_builder.rb +0 -4
- data/lib/pwn/ai/agent/tool_guard.rb +1 -46
- data/lib/pwn/ai/agent/tools/ruby_eval.rb +0 -10
- data/lib/pwn/ai/agent/tools/shell.rb +0 -6
- data/lib/pwn/config.rb +62 -1
- data/lib/pwn/migrate.rb +2 -0
- data/lib/pwn/version.rb +1 -1
- data/spec/integration/config_spec.rb +37 -0
- data/spec/lib/pwn/ai/agent/loop_spec.rb +9 -7
- data/spec/lib/pwn/ai/agent/mistakes_spec.rb +7 -0
- data/spec/lib/pwn/ai/agent/signal_hygiene_spec.rb +5 -8
- data/spec/lib/pwn/ai/agent/tools/shell_spec.rb +10 -18
- data/third_party/pwn_rdoc.jsonl +3 -4
- metadata +12 -2
- data/documentation/PWN_Contributors_and_Users.png +0 -0
|
@@ -18,13 +18,13 @@
|
|
|
18
18
|
</g>
|
|
19
19
|
<g id="clust3" class="cluster">
|
|
20
20
|
<title>cluster_files</title>
|
|
21
|
-
<path fill="#422006" stroke="#a16207" d="
|
|
22
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
21
|
+
<path fill="#422006" stroke="#a16207" d="M135,-306.5C135,-306.5 1705,-306.5 1705,-306.5 1711,-306.5 1717,-312.5 1717,-318.5 1717,-318.5 1717,-433.5 1717,-433.5 1717,-439.5 1711,-445.5 1705,-445.5 1705,-445.5 135,-445.5 135,-445.5 129,-445.5 123,-439.5 123,-433.5 123,-433.5 123,-318.5 123,-318.5 123,-312.5 129,-306.5 135,-306.5"/>
|
|
22
|
+
<text xml:space="preserve" text-anchor="middle" x="920" y="-422.5" font-family="sans-Serif" font-size="20.00" fill="#fde68a">~/.pwn/</text>
|
|
23
23
|
</g>
|
|
24
24
|
<g id="clust5" class="cluster">
|
|
25
25
|
<title>cluster_read</title>
|
|
26
|
-
<path fill="#2e1065" stroke="#6d28d9" d="
|
|
27
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
26
|
+
<path fill="#2e1065" stroke="#6d28d9" d="M386,-149C386,-149 1402,-149 1402,-149 1408,-149 1414,-155 1414,-161 1414,-161 1414,-259.5 1414,-259.5 1414,-265.5 1408,-271.5 1402,-271.5 1402,-271.5 386,-271.5 386,-271.5 380,-271.5 374,-265.5 374,-259.5 374,-259.5 374,-161 374,-161 374,-155 380,-149 386,-149"/>
|
|
27
|
+
<text xml:space="preserve" text-anchor="middle" x="894" y="-248.5" font-family="sans-Serif" font-size="20.00" fill="#ddd6fe">Read-Side / Injection</text>
|
|
28
28
|
</g>
|
|
29
29
|
<!-- Rem -->
|
|
30
30
|
<g id="node1" class="node">
|
|
@@ -74,16 +74,17 @@
|
|
|
74
74
|
<!-- Fskl -->
|
|
75
75
|
<g id="node11" class="node">
|
|
76
76
|
<title>Fskl</title>
|
|
77
|
-
<path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="
|
|
78
|
-
<path fill="none" stroke="#334155" stroke-width="1.3" d="
|
|
79
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
80
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
77
|
+
<path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M259.25,-369.5C259.25,-372.53 230.45,-375 195,-375 159.55,-375 130.75,-372.53 130.75,-369.5 130.75,-369.5 130.75,-320 130.75,-320 130.75,-316.97 159.55,-314.5 195,-314.5 230.45,-314.5 259.25,-316.97 259.25,-320 259.25,-320 259.25,-369.5 259.25,-369.5"/>
|
|
78
|
+
<path fill="none" stroke="#334155" stroke-width="1.3" d="M259.25,-369.5C259.25,-366.47 230.45,-364 195,-364 159.55,-364 130.75,-366.47 130.75,-369.5"/>
|
|
79
|
+
<text xml:space="preserve" text-anchor="middle" x="195" y="-353.25" font-family="sans-Serif" font-size="10.00" fill="#0f172a">skills/<n>/SKILL.md</text>
|
|
80
|
+
<text xml:space="preserve" text-anchor="middle" x="195" y="-341.25" font-family="sans-Serif" font-size="10.00" fill="#0f172a">YAML front-matter + refs</text>
|
|
81
|
+
<text xml:space="preserve" text-anchor="middle" x="195" y="-329.25" font-family="sans-Serif" font-size="10.00" fill="#0f172a">(+ etc/default_skills seed)</text>
|
|
81
82
|
</g>
|
|
82
83
|
<!-- Skc->Fskl -->
|
|
83
84
|
<g id="edge2" class="edge">
|
|
84
85
|
<title>Skc->Fskl</title>
|
|
85
|
-
<path fill="none" stroke="#f59e0b" stroke-width="1.3" d="
|
|
86
|
-
<polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="
|
|
86
|
+
<path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M78.37,-511.88C99.03,-482.45 141.02,-422.64 168.57,-383.39"/>
|
|
87
|
+
<polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="170.79,-385.11 173.09,-376.96 166.2,-381.9 170.79,-385.11"/>
|
|
87
88
|
</g>
|
|
88
89
|
<!-- Note -->
|
|
89
90
|
<g id="node3" class="node">
|
|
@@ -116,8 +117,8 @@
|
|
|
116
117
|
<!-- Dist->Fskl -->
|
|
117
118
|
<g id="edge4" class="edge">
|
|
118
119
|
<title>Dist->Fskl</title>
|
|
119
|
-
<path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M188.25,-511.89C179.41,-501.86 169.65,-488.52 165,-474.5
|
|
120
|
-
<polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="
|
|
120
|
+
<path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M188.25,-511.89C179.41,-501.86 169.65,-488.52 165,-474.5 155.19,-444.91 164.23,-410.48 174.88,-384.67"/>
|
|
121
|
+
<polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="177.43,-385.83 178.06,-377.38 172.3,-383.59 177.43,-385.83"/>
|
|
121
122
|
</g>
|
|
122
123
|
<!-- Fses -->
|
|
123
124
|
<g id="node13" class="node">
|
|
@@ -249,28 +250,28 @@
|
|
|
249
250
|
<!-- Rec -->
|
|
250
251
|
<g id="node19" class="node">
|
|
251
252
|
<title>Rec</title>
|
|
252
|
-
<path fill="#c4b5fd" stroke="#334155" stroke-width="1.3" d="
|
|
253
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
253
|
+
<path fill="#c4b5fd" stroke="#334155" stroke-width="1.3" d="M1239.88,-197C1239.88,-197 1184.12,-197 1184.12,-197 1178.12,-197 1172.12,-191 1172.12,-185 1172.12,-185 1172.12,-173 1172.12,-173 1172.12,-167 1178.12,-161 1184.12,-161 1184.12,-161 1239.88,-161 1239.88,-161 1245.88,-161 1251.88,-167 1251.88,-173 1251.88,-173 1251.88,-185 1251.88,-185 1251.88,-191 1245.88,-197 1239.88,-197"/>
|
|
254
|
+
<text xml:space="preserve" text-anchor="middle" x="1212" y="-175.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">memory_recall</text>
|
|
254
255
|
</g>
|
|
255
256
|
<!-- Fmem->Rec -->
|
|
256
257
|
<g id="edge8" class="edge">
|
|
257
258
|
<title>Fmem->Rec</title>
|
|
258
|
-
<path fill="none" stroke="#a78bfa" stroke-width="1.3" d="M1273.
|
|
259
|
-
<polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="1.3" points="
|
|
259
|
+
<path fill="none" stroke="#a78bfa" stroke-width="1.3" d="M1273.72,-322.34C1260.79,-292.52 1237.37,-238.5 1223.39,-206.28"/>
|
|
260
|
+
<polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="1.3" points="1226.08,-205.44 1220.33,-199.22 1220.95,-207.67 1226.08,-205.44"/>
|
|
260
261
|
</g>
|
|
261
262
|
<!-- Midx -->
|
|
262
263
|
<g id="node20" class="node">
|
|
263
264
|
<title>Midx</title>
|
|
264
|
-
<path fill="#c4b5fd" stroke="#334155" stroke-width="2" d="
|
|
265
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
266
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
267
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
265
|
+
<path fill="#c4b5fd" stroke="#334155" stroke-width="2" d="M1120.12,-201C1120.12,-201 1059.88,-201 1059.88,-201 1053.88,-201 1047.88,-195 1047.88,-189 1047.88,-189 1047.88,-169 1047.88,-169 1047.88,-163 1053.88,-157 1059.88,-157 1059.88,-157 1120.12,-157 1120.12,-157 1126.12,-157 1132.12,-163 1132.12,-169 1132.12,-169 1132.12,-189 1132.12,-189 1132.12,-195 1126.12,-201 1120.12,-201"/>
|
|
266
|
+
<text xml:space="preserve" text-anchor="middle" x="1090" y="-187.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">MemoryIndex</text>
|
|
267
|
+
<text xml:space="preserve" text-anchor="middle" x="1090" y="-175.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">recall_semantic</text>
|
|
268
|
+
<text xml:space="preserve" text-anchor="middle" x="1090" y="-163.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">(cosine top-K)</text>
|
|
268
269
|
</g>
|
|
269
270
|
<!-- Fmem->Midx -->
|
|
270
271
|
<g id="edge23" class="edge">
|
|
271
272
|
<title>Fmem->Midx</title>
|
|
272
|
-
<path fill="none" stroke="#a78bfa" stroke-width="1.3" stroke-dasharray="5,2" d="M1239.
|
|
273
|
-
<polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="1.3" points="
|
|
273
|
+
<path fill="none" stroke="#a78bfa" stroke-width="1.3" stroke-dasharray="5,2" d="M1239.98,-322.77C1207.48,-306.43 1166.15,-284.41 1152,-271.5 1132.91,-254.08 1116.75,-229.67 1105.71,-210.44"/>
|
|
274
|
+
<polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="1.3" points="1108.17,-209.09 1101.83,-203.46 1103.27,-211.81 1108.17,-209.09"/>
|
|
274
275
|
</g>
|
|
275
276
|
<!-- ReVal -->
|
|
276
277
|
<g id="node28" class="node">
|
|
@@ -290,65 +291,65 @@
|
|
|
290
291
|
<!-- Fidx->Midx -->
|
|
291
292
|
<g id="edge22" class="edge">
|
|
292
293
|
<title>Fidx->Midx</title>
|
|
293
|
-
<path fill="none" stroke="#a78bfa" stroke-width="1.3" d="
|
|
294
|
-
<polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="1.3" points="
|
|
294
|
+
<path fill="none" stroke="#a78bfa" stroke-width="1.3" d="M1129.31,-314.1C1120.76,-284.95 1107.78,-240.65 1099.1,-211.03"/>
|
|
295
|
+
<polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="1.3" points="1101.82,-210.37 1096.88,-203.49 1096.45,-211.95 1101.82,-210.37"/>
|
|
295
296
|
</g>
|
|
296
297
|
<!-- Skv -->
|
|
297
298
|
<g id="node21" class="node">
|
|
298
299
|
<title>Skv</title>
|
|
299
|
-
<path fill="#c4b5fd" stroke="#334155" stroke-width="1.3" d="
|
|
300
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
300
|
+
<path fill="#c4b5fd" stroke="#334155" stroke-width="1.3" d="M450.25,-197C450.25,-197 393.75,-197 393.75,-197 387.75,-197 381.75,-191 381.75,-185 381.75,-185 381.75,-173 381.75,-173 381.75,-167 387.75,-161 393.75,-161 393.75,-161 450.25,-161 450.25,-161 456.25,-161 462.25,-167 462.25,-173 462.25,-173 462.25,-185 462.25,-185 462.25,-191 456.25,-197 450.25,-197"/>
|
|
301
|
+
<text xml:space="preserve" text-anchor="middle" x="422" y="-175.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">skill_list · view</text>
|
|
301
302
|
</g>
|
|
302
303
|
<!-- Fskl->Skv -->
|
|
303
304
|
<g id="edge9" class="edge">
|
|
304
305
|
<title>Fskl->Skv</title>
|
|
305
|
-
<path fill="none" stroke="#a78bfa" stroke-width="1.3" d="
|
|
306
|
-
<polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="1.3" points="
|
|
306
|
+
<path fill="none" stroke="#a78bfa" stroke-width="1.3" d="M235.58,-314.47C279.73,-282.63 349.39,-232.38 389.89,-203.16"/>
|
|
307
|
+
<polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="1.3" points="391.38,-205.54 396.23,-198.59 388.1,-201 391.38,-205.54"/>
|
|
307
308
|
</g>
|
|
308
309
|
<!-- Out -->
|
|
309
310
|
<g id="node22" class="node">
|
|
310
311
|
<title>Out</title>
|
|
311
|
-
<path fill="#c4b5fd" stroke="#334155" stroke-width="1.3" d="
|
|
312
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
313
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
312
|
+
<path fill="#c4b5fd" stroke="#334155" stroke-width="1.3" d="M875.88,-197C875.88,-197 802.12,-197 802.12,-197 796.12,-197 790.12,-191 790.12,-185 790.12,-185 790.12,-173 790.12,-173 790.12,-167 796.12,-161 802.12,-161 802.12,-161 875.88,-161 875.88,-161 881.88,-161 887.88,-167 887.88,-173 887.88,-173 887.88,-185 887.88,-185 887.88,-191 881.88,-197 875.88,-197"/>
|
|
313
|
+
<text xml:space="preserve" text-anchor="middle" x="839" y="-181.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">learning_outcomes</text>
|
|
314
|
+
<text xml:space="preserve" text-anchor="middle" x="839" y="-169.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">learning_stats</text>
|
|
314
315
|
</g>
|
|
315
316
|
<!-- Flrn->Out -->
|
|
316
317
|
<g id="edge10" class="edge">
|
|
317
318
|
<title>Flrn->Out</title>
|
|
318
|
-
<path fill="none" stroke="#a78bfa" stroke-width="1.3" d="M678.
|
|
319
|
-
<polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="1.3" points="
|
|
319
|
+
<path fill="none" stroke="#a78bfa" stroke-width="1.3" d="M678.17,-323.35C686.74,-317.74 696.16,-311.76 705,-306.5 733.2,-289.73 745.1,-292.87 770,-271.5 791.96,-252.65 811.25,-225.68 823.8,-205.9"/>
|
|
320
|
+
<polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="1.3" points="826.05,-207.59 827.88,-199.31 821.29,-204.64 826.05,-207.59"/>
|
|
320
321
|
</g>
|
|
321
322
|
<!-- Exem -->
|
|
322
323
|
<g id="node25" class="node">
|
|
323
324
|
<title>Exem</title>
|
|
324
|
-
<path fill="#c4b5fd" stroke="#334155" stroke-width="1.3" d="
|
|
325
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
326
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
325
|
+
<path fill="#c4b5fd" stroke="#334155" stroke-width="1.3" d="M737.62,-197C737.62,-197 644.38,-197 644.38,-197 638.38,-197 632.38,-191 632.38,-185 632.38,-185 632.38,-173 632.38,-173 632.38,-167 638.38,-161 644.38,-161 644.38,-161 737.62,-161 737.62,-161 743.62,-161 749.62,-167 749.62,-173 749.62,-173 749.62,-185 749.62,-185 749.62,-191 743.62,-197 737.62,-197"/>
|
|
326
|
+
<text xml:space="preserve" text-anchor="middle" x="691" y="-181.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">Learning.exemplars_for</text>
|
|
327
|
+
<text xml:space="preserve" text-anchor="middle" x="691" y="-169.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">(few-shot trace)</text>
|
|
327
328
|
</g>
|
|
328
329
|
<!-- Flrn->Exem -->
|
|
329
330
|
<g id="edge24" class="edge">
|
|
330
331
|
<title>Flrn->Exem</title>
|
|
331
|
-
<path fill="none" stroke="#a78bfa" stroke-width="1.3" d="M653.
|
|
332
|
-
<polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="1.3" points="
|
|
332
|
+
<path fill="none" stroke="#a78bfa" stroke-width="1.3" d="M653.62,-322.34C661.42,-292.65 675.52,-238.97 683.99,-206.69"/>
|
|
333
|
+
<polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="1.3" points="686.6,-207.76 685.93,-199.32 681.19,-206.34 686.6,-207.76"/>
|
|
333
334
|
</g>
|
|
334
335
|
<!-- Sesv -->
|
|
335
336
|
<g id="node23" class="node">
|
|
336
337
|
<title>Sesv</title>
|
|
337
|
-
<path fill="#c4b5fd" stroke="#334155" stroke-width="1.3" d="
|
|
338
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
339
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
338
|
+
<path fill="#c4b5fd" stroke="#334155" stroke-width="1.3" d="M580.12,-197C580.12,-197 513.88,-197 513.88,-197 507.88,-197 501.88,-191 501.88,-185 501.88,-185 501.88,-173 501.88,-173 501.88,-167 507.88,-161 513.88,-161 513.88,-161 580.12,-161 580.12,-161 586.12,-161 592.12,-167 592.12,-173 592.12,-173 592.12,-185 592.12,-185 592.12,-191 586.12,-197 580.12,-197"/>
|
|
339
|
+
<text xml:space="preserve" text-anchor="middle" x="547" y="-181.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">sessions_view</text>
|
|
340
|
+
<text xml:space="preserve" text-anchor="middle" x="547" y="-169.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">sessions_current</text>
|
|
340
341
|
</g>
|
|
341
342
|
<!-- Fses->Sesv -->
|
|
342
343
|
<g id="edge11" class="edge">
|
|
343
344
|
<title>Fses->Sesv</title>
|
|
344
|
-
<path fill="none" stroke="#a78bfa" stroke-width="1.3" d="M386.
|
|
345
|
-
<polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="1.3" points="
|
|
345
|
+
<path fill="none" stroke="#a78bfa" stroke-width="1.3" d="M386.32,-323.05C396.3,-317.66 407.05,-311.86 417,-306.5 445.88,-290.93 457.41,-293.22 482,-271.5 503.28,-252.71 521.39,-225.67 533.05,-205.86"/>
|
|
346
|
+
<polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="1.3" points="535.41,-207.36 536.96,-199.03 530.55,-204.58 535.41,-207.36"/>
|
|
346
347
|
</g>
|
|
347
348
|
<!-- Fses->Exem -->
|
|
348
349
|
<g id="edge25" class="edge">
|
|
349
350
|
<title>Fses->Exem</title>
|
|
350
|
-
<path fill="none" stroke="#a78bfa" stroke-width="1.3" stroke-dasharray="5,2" d="M381.
|
|
351
|
-
<polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="1.3" points="
|
|
351
|
+
<path fill="none" stroke="#a78bfa" stroke-width="1.3" stroke-dasharray="5,2" d="M381.76,-322.76C392.67,-316.74 405.05,-310.68 417,-306.5 500.12,-277.44 535.5,-315.1 612,-271.5 639.56,-255.79 662.12,-226.73 675.97,-205.56"/>
|
|
352
|
+
<polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="1.3" points="678.23,-207.23 680.14,-198.98 673.5,-204.24 678.23,-207.23"/>
|
|
352
353
|
</g>
|
|
353
354
|
<!-- Teach -->
|
|
354
355
|
<g id="node29" class="node">
|
|
@@ -368,15 +369,15 @@
|
|
|
368
369
|
<!-- Mlst -->
|
|
369
370
|
<g id="node24" class="node">
|
|
370
371
|
<title>Mlst</title>
|
|
371
|
-
<path fill="#c4b5fd" stroke="#334155" stroke-width="1.3" d="
|
|
372
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
373
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
372
|
+
<path fill="#c4b5fd" stroke="#334155" stroke-width="1.3" d="M995.88,-197C995.88,-197 940.12,-197 940.12,-197 934.12,-197 928.12,-191 928.12,-185 928.12,-185 928.12,-173 928.12,-173 928.12,-167 934.12,-161 940.12,-161 940.12,-161 995.88,-161 995.88,-161 1001.88,-161 1007.88,-167 1007.88,-173 1007.88,-173 1007.88,-185 1007.88,-185 1007.88,-191 1001.88,-197 995.88,-197"/>
|
|
373
|
+
<text xml:space="preserve" text-anchor="middle" x="968" y="-181.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">mistakes_list</text>
|
|
374
|
+
<text xml:space="preserve" text-anchor="middle" x="968" y="-169.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">correction_hint</text>
|
|
374
375
|
</g>
|
|
375
376
|
<!-- Fmis->Mlst -->
|
|
376
377
|
<g id="edge12" class="edge">
|
|
377
378
|
<title>Fmis->Mlst</title>
|
|
378
|
-
<path fill="none" stroke="#a78bfa" stroke-width="1.3" d="
|
|
379
|
-
<polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="1.3" points="
|
|
379
|
+
<path fill="none" stroke="#a78bfa" stroke-width="1.3" d="M981.04,-322.34C978.33,-292.77 973.44,-239.43 970.48,-207.11"/>
|
|
380
|
+
<polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="1.3" points="973.29,-207.08 969.77,-199.37 967.72,-207.59 973.29,-207.08"/>
|
|
380
381
|
</g>
|
|
381
382
|
<!-- Fext -->
|
|
382
383
|
<g id="node15" class="node">
|
|
@@ -396,80 +397,80 @@
|
|
|
396
397
|
<!-- PolR -->
|
|
397
398
|
<g id="node26" class="node">
|
|
398
399
|
<title>PolR</title>
|
|
399
|
-
<path fill="#c4b5fd" stroke="#334155" stroke-width="1.3" d="
|
|
400
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
401
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
400
|
+
<path fill="#c4b5fd" stroke="#334155" stroke-width="1.3" d="M1394.12,-197C1394.12,-197 1303.88,-197 1303.88,-197 1297.88,-197 1291.88,-191 1291.88,-185 1291.88,-185 1291.88,-173 1291.88,-173 1291.88,-167 1297.88,-161 1303.88,-161 1303.88,-161 1394.12,-161 1394.12,-161 1400.12,-161 1406.12,-167 1406.12,-173 1406.12,-173 1406.12,-185 1406.12,-185 1406.12,-191 1400.12,-197 1394.12,-197"/>
|
|
401
|
+
<text xml:space="preserve" text-anchor="middle" x="1349" y="-181.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">policy_stats · evaluate</text>
|
|
402
|
+
<text xml:space="preserve" text-anchor="middle" x="1349" y="-169.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">policy_recommend</text>
|
|
402
403
|
</g>
|
|
403
404
|
<!-- Fpol->PolR -->
|
|
404
405
|
<g id="edge34" class="edge">
|
|
405
406
|
<title>Fpol->PolR</title>
|
|
406
|
-
<path fill="none" stroke="#a78bfa" stroke-width="1.3" d="M1449.
|
|
407
|
-
<polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="1.3" points="
|
|
407
|
+
<path fill="none" stroke="#a78bfa" stroke-width="1.3" d="M1449.84,-322.34C1428.53,-292.26 1389.79,-237.57 1367.03,-205.45"/>
|
|
408
|
+
<polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="1.3" points="1369.38,-203.93 1362.47,-199.02 1364.81,-207.16 1369.38,-203.93"/>
|
|
408
409
|
</g>
|
|
409
410
|
<!-- Prompt -->
|
|
410
411
|
<g id="node27" class="node">
|
|
411
412
|
<title>Prompt</title>
|
|
412
|
-
<path fill="#7dd3fc" stroke="#334155" stroke-width="2" d="
|
|
413
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
414
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
415
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
416
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
417
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
413
|
+
<path fill="#7dd3fc" stroke="#334155" stroke-width="2" d="M997,-68C997,-68 801,-68 801,-68 795,-68 789,-62 789,-56 789,-56 789,-12 789,-12 789,-6 795,0 801,0 801,0 997,0 997,0 1003,0 1009,-6 1009,-12 1009,-12 1009,-56 1009,-56 1009,-62 1003,-68 997,-68"/>
|
|
414
|
+
<text xml:space="preserve" text-anchor="middle" x="899" y="-54.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">PromptBuilder.build(request:)</text>
|
|
415
|
+
<text xml:space="preserve" text-anchor="middle" x="899" y="-42.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">engine-aware .budget</text>
|
|
416
|
+
<text xml:space="preserve" text-anchor="middle" x="899" y="-30.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">MEMORY (relevance-ranked) + SKILLS</text>
|
|
417
|
+
<text xml:space="preserve" text-anchor="middle" x="899" y="-18.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">+ LEARNING + KNOWN MISTAKES/FIXES</text>
|
|
418
|
+
<text xml:space="preserve" text-anchor="middle" x="899" y="-6.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">+ METRICS (per-engine) + POLICY + EXTRO</text>
|
|
418
419
|
</g>
|
|
419
420
|
<!-- Rec->Prompt -->
|
|
420
421
|
<g id="edge13" class="edge">
|
|
421
422
|
<title>Rec->Prompt</title>
|
|
422
|
-
<path fill="none" stroke="#38bdf8" stroke-width="1.3" d="
|
|
423
|
-
<polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="1.3" points="
|
|
423
|
+
<path fill="none" stroke="#38bdf8" stroke-width="1.3" d="M1193.07,-160.4C1173.91,-143.39 1142.8,-117.93 1112,-102 1083.09,-87.05 1050.23,-74.7 1019.12,-64.85"/>
|
|
424
|
+
<polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="1.3" points="1020.32,-62.29 1011.85,-62.59 1018.66,-67.64 1020.32,-62.29"/>
|
|
424
425
|
</g>
|
|
425
426
|
<!-- Midx->Prompt -->
|
|
426
427
|
<g id="edge26" class="edge">
|
|
427
428
|
<title>Midx->Prompt</title>
|
|
428
|
-
<path fill="none" stroke="#38bdf8" stroke-width="2" d="
|
|
429
|
-
<polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="2" points="
|
|
430
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
431
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
429
|
+
<path fill="none" stroke="#38bdf8" stroke-width="2" d="M1069.41,-156.02C1053.88,-140.07 1031.63,-118.49 1010,-102 997.49,-92.46 983.54,-83.14 969.87,-74.63"/>
|
|
430
|
+
<polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="2" points="971.34,-72.24 963.05,-70.45 968.41,-77.02 971.34,-72.24"/>
|
|
431
|
+
<text xml:space="preserve" text-anchor="middle" x="1067.8" y="-114.45" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">MEMORY block</text>
|
|
432
|
+
<text xml:space="preserve" text-anchor="middle" x="1067.8" y="-103.95" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">(top-K by cosine)</text>
|
|
432
433
|
</g>
|
|
433
434
|
<!-- Skv->Prompt -->
|
|
434
435
|
<g id="edge14" class="edge">
|
|
435
436
|
<title>Skv->Prompt</title>
|
|
436
|
-
<path fill="none" stroke="#38bdf8" stroke-width="1.3" d="
|
|
437
|
-
<polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="1.3" points="
|
|
437
|
+
<path fill="none" stroke="#38bdf8" stroke-width="1.3" d="M455.48,-160.48C464,-156.4 473.22,-152.29 482,-149 579.79,-112.36 694.46,-81.87 778.78,-61.67"/>
|
|
438
|
+
<polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="1.3" points="779.34,-64.41 786.47,-59.84 778.04,-58.97 779.34,-64.41"/>
|
|
438
439
|
</g>
|
|
439
440
|
<!-- Out->Prompt -->
|
|
440
441
|
<g id="edge15" class="edge">
|
|
441
442
|
<title>Out->Prompt</title>
|
|
442
|
-
<path fill="none" stroke="#38bdf8" stroke-width="1.3" d="
|
|
443
|
-
<polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="1.3" points="
|
|
443
|
+
<path fill="none" stroke="#38bdf8" stroke-width="1.3" d="M846.36,-160.47C854.93,-140.03 869.41,-105.53 881.01,-77.87"/>
|
|
444
|
+
<polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="1.3" points="883.55,-79.06 884.06,-70.6 878.39,-76.9 883.55,-79.06"/>
|
|
444
445
|
</g>
|
|
445
446
|
<!-- Sesv->Prompt -->
|
|
446
447
|
<g id="edge16" class="edge">
|
|
447
448
|
<title>Sesv->Prompt</title>
|
|
448
|
-
<path fill="none" stroke="#38bdf8" stroke-width="1.3" d="
|
|
449
|
-
<polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="1.3" points="
|
|
449
|
+
<path fill="none" stroke="#38bdf8" stroke-width="1.3" d="M585.72,-160.41C594.34,-156.58 603.46,-152.6 612,-149 674.71,-122.57 745.79,-94.32 801.53,-72.56"/>
|
|
450
|
+
<polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="1.3" points="802.42,-75.22 808.86,-69.7 800.38,-70 802.42,-75.22"/>
|
|
450
451
|
</g>
|
|
451
452
|
<!-- Mlst->Prompt -->
|
|
452
453
|
<g id="edge17" class="edge">
|
|
453
454
|
<title>Mlst->Prompt</title>
|
|
454
|
-
<path fill="none" stroke="#fb7185" stroke-width="2" d="
|
|
455
|
-
<polygon fill="#fb7185" stroke="#fb7185" stroke-width="2" points="
|
|
456
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
455
|
+
<path fill="none" stroke="#fb7185" stroke-width="2" d="M959.54,-160.47C949.76,-140.21 933.32,-106.13 920.04,-78.6"/>
|
|
456
|
+
<polygon fill="#fb7185" stroke="#fb7185" stroke-width="2" points="922.62,-77.5 916.62,-71.51 917.57,-79.94 922.62,-77.5"/>
|
|
457
|
+
<text xml:space="preserve" text-anchor="middle" x="969.68" y="-109.2" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">do NOT repeat</text>
|
|
457
458
|
</g>
|
|
458
459
|
<!-- Exem->Prompt -->
|
|
459
460
|
<g id="edge27" class="edge">
|
|
460
461
|
<title>Exem->Prompt</title>
|
|
461
|
-
<path fill="none" stroke="#38bdf8" stroke-width="1.3" d="
|
|
462
|
-
<polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="1.3" points="
|
|
463
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
464
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
462
|
+
<path fill="none" stroke="#38bdf8" stroke-width="1.3" d="M714.4,-160.43C735.4,-144.78 767.2,-121.43 795.5,-102 808.92,-92.78 823.51,-83.13 837.38,-74.11"/>
|
|
463
|
+
<polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="1.3" points="838.61,-76.65 843.8,-69.95 835.56,-71.95 838.61,-76.65"/>
|
|
464
|
+
<text xml:space="preserve" text-anchor="middle" x="824.75" y="-114.45" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">few-shot msgs</text>
|
|
465
|
+
<text xml:space="preserve" text-anchor="middle" x="824.75" y="-103.95" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">(local only)</text>
|
|
465
466
|
</g>
|
|
466
467
|
<!-- PolR->Prompt -->
|
|
467
468
|
<g id="edge35" class="edge">
|
|
468
469
|
<title>PolR->Prompt</title>
|
|
469
|
-
<path fill="none" stroke="#38bdf8" stroke-width="1.3" d="
|
|
470
|
-
<polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="1.3" points="
|
|
471
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
472
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
470
|
+
<path fill="none" stroke="#38bdf8" stroke-width="1.3" d="M1309.52,-160.48C1271.46,-144.01 1212.01,-119.35 1159,-102 1114.01,-87.27 1063.81,-73.69 1019.6,-62.66"/>
|
|
471
|
+
<polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="1.3" points="1020.32,-59.95 1011.88,-60.74 1018.97,-65.38 1020.32,-59.95"/>
|
|
472
|
+
<text xml:space="preserve" text-anchor="middle" x="1245.75" y="-114.45" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">POLICY block</text>
|
|
473
|
+
<text xml:space="preserve" text-anchor="middle" x="1245.75" y="-103.95" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">advisory only</text>
|
|
473
474
|
</g>
|
|
474
475
|
<!-- ReVal->Fmem -->
|
|
475
476
|
<g id="edge28" class="edge">
|
|
@@ -18,8 +18,8 @@
|
|
|
18
18
|
</g>
|
|
19
19
|
<g id="clust3" class="cluster">
|
|
20
20
|
<title>cluster_entry</title>
|
|
21
|
-
<path fill="#0c4a6e" stroke="#0369a1" stroke-width="2" d="M359,-476.62C359,-476.62
|
|
22
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
21
|
+
<path fill="#0c4a6e" stroke="#0369a1" stroke-width="2" d="M359,-476.62C359,-476.62 933,-476.62 933,-476.62 939,-476.62 945,-482.62 945,-488.62 945,-488.62 945,-550.12 945,-550.12 945,-556.12 939,-562.12 933,-562.12 933,-562.12 359,-562.12 359,-562.12 353,-562.12 347,-556.12 347,-550.12 347,-550.12 347,-488.62 347,-488.62 347,-482.62 353,-476.62 359,-476.62"/>
|
|
22
|
+
<text xml:space="preserve" text-anchor="middle" x="646" y="-537.23" font-family="sans-Serif" font-size="22.00" fill="#7dd3fc">Entry Points  (bin/)</text>
|
|
23
23
|
</g>
|
|
24
24
|
<g id="clust5" class="cluster">
|
|
25
25
|
<title>cluster_agent</title>
|
|
@@ -92,16 +92,16 @@
|
|
|
92
92
|
<!-- Cronb -->
|
|
93
93
|
<g id="node8" class="node">
|
|
94
94
|
<title>Cronb</title>
|
|
95
|
-
<path fill="#7dd3fc" stroke="#334155" stroke-width="1.4" d="
|
|
96
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
97
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
95
|
+
<path fill="#7dd3fc" stroke="#334155" stroke-width="1.4" d="M924.75,-520.62C924.75,-520.62 805.25,-520.62 805.25,-520.62 799.25,-520.62 793.25,-514.62 793.25,-508.62 793.25,-508.62 793.25,-496.62 793.25,-496.62 793.25,-490.62 799.25,-484.62 805.25,-484.62 805.25,-484.62 924.75,-484.62 924.75,-484.62 930.75,-484.62 936.75,-490.62 936.75,-496.62 936.75,-496.62 936.75,-508.62 936.75,-508.62 936.75,-514.62 930.75,-520.62 924.75,-520.62"/>
|
|
96
|
+
<text xml:space="preserve" text-anchor="middle" x="865" y="-505.68" font-family="sans-Serif" font-size="11.00" fill="#0f172a">⏱  PWN::Cron</text>
|
|
97
|
+
<text xml:space="preserve" text-anchor="middle" x="865" y="-492.18" font-family="sans-Serif" font-size="11.00" fill="#0f172a">Jobs + background worker</text>
|
|
98
98
|
</g>
|
|
99
99
|
<!-- CI->Cronb -->
|
|
100
100
|
<g id="edge4" class="edge">
|
|
101
101
|
<title>CI->Cronb</title>
|
|
102
|
-
<path fill="none" stroke="#38bdf8" stroke-width="1.3" d="
|
|
103
|
-
<polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="1.3" points="
|
|
104
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
102
|
+
<path fill="none" stroke="#38bdf8" stroke-width="1.3" d="M732.52,-628.43C759.35,-603.16 809.13,-556.26 839.44,-527.7"/>
|
|
103
|
+
<polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="1.3" points="841,-530.08 844.9,-522.56 837.16,-526.01 841,-530.08"/>
|
|
104
|
+
<text xml:space="preserve" text-anchor="middle" x="809.4" y="-572.08" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">crontab</text>
|
|
105
105
|
</g>
|
|
106
106
|
<!-- LLM -->
|
|
107
107
|
<g id="node3" class="node">
|
|
@@ -174,7 +174,7 @@
|
|
|
174
174
|
<!-- CLI->Plugins -->
|
|
175
175
|
<g id="edge18" class="edge">
|
|
176
176
|
<title>CLI->Plugins</title>
|
|
177
|
-
<path fill="none" stroke="#34d399" stroke-width="1.3" d="M750.
|
|
177
|
+
<path fill="none" stroke="#34d399" stroke-width="1.3" d="M750.97,-483.98C758.24,-481.28 765.78,-478.71 773,-476.62 891.7,-442.34 967.31,-519.39 1046,-424.12 1081.38,-381.29 1083.86,-339.78 1046,-299.12 1018.06,-269.13 346.65,-264.99 310,-246.62 292.78,-238 278.65,-221.52 268.89,-207.34"/>
|
|
178
178
|
<polygon fill="#34d399" stroke="#34d399" stroke-width="1.3" points="271.45,-206.15 264.73,-200.99 266.77,-209.21 271.45,-206.15"/>
|
|
179
179
|
</g>
|
|
180
180
|
<!-- Prompt -->
|
|
@@ -190,9 +190,9 @@
|
|
|
190
190
|
<!-- Loop->LLM -->
|
|
191
191
|
<g id="edge29" class="edge">
|
|
192
192
|
<title>Loop->LLM</title>
|
|
193
|
-
<path fill="none" stroke="#c4b5fd" stroke-width="2" d="M408.22,-383.26C428.04,-398.63 452.81,-414.95 478,-424.12 515.73,-437.87 528.
|
|
194
|
-
<polygon fill="#c4b5fd" stroke="#c4b5fd" stroke-width="2" points="
|
|
195
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
193
|
+
<path fill="none" stroke="#c4b5fd" stroke-width="2" d="M408.22,-383.26C428.04,-398.63 452.81,-414.95 478,-424.12 515.73,-437.87 528.05,-428.05 568,-432.12 654.12,-440.9 897.39,-412.01 955,-476.62 990.42,-516.35 950.47,-577.24 919.12,-614.13"/>
|
|
194
|
+
<polygon fill="#c4b5fd" stroke="#c4b5fd" stroke-width="2" points="917.33,-611.92 914.18,-619.79 921.55,-615.6 917.33,-611.92"/>
|
|
195
|
+
<text xml:space="preserve" text-anchor="middle" x="993.61" y="-499.32" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">tool-use API</text>
|
|
196
196
|
</g>
|
|
197
197
|
<!-- Loop->Plugins -->
|
|
198
198
|
<g id="edge10" class="edge">
|
|
@@ -400,9 +400,9 @@
|
|
|
400
400
|
<!-- Reports->User -->
|
|
401
401
|
<g id="edge32" class="edge">
|
|
402
402
|
<title>Reports->User</title>
|
|
403
|
-
<path fill="none" stroke="#38bdf8" stroke-width="2" d="M1134.52,-199.46C1143.96,-213.15 1158.13,-232.17 1173,-246.62 1177.34,-250.84 1180.28,-249.86 1184,-254.62 1230.64,-314.32
|
|
404
|
-
<polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="2" points="
|
|
405
|
-
<text xml:space="preserve" text-anchor="middle" x="1212.
|
|
403
|
+
<path fill="none" stroke="#38bdf8" stroke-width="2" d="M1134.52,-199.46C1143.96,-213.15 1158.13,-232.17 1173,-246.62 1177.34,-250.84 1180.28,-249.86 1184,-254.62 1230.64,-314.32 1234.96,-355.91 1202,-424.12 1087.43,-661.21 896.54,-551.12 641,-614.62 630.25,-617.3 618.97,-620.87 608.28,-624.64"/>
|
|
404
|
+
<polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="2" points="607.64,-621.89 601.08,-627.25 609.56,-627.15 607.64,-621.89"/>
|
|
405
|
+
<text xml:space="preserve" text-anchor="middle" x="1212.78" y="-434.07" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">findings</text>
|
|
406
406
|
</g>
|
|
407
407
|
<!-- CronF -->
|
|
408
408
|
<g id="node30" class="node">
|
|
@@ -82,7 +82,7 @@
|
|
|
82
82
|
<path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M418.38,-1210.75C418.38,-1213.78 379.83,-1216.25 332.38,-1216.25 284.92,-1216.25 246.38,-1213.78 246.38,-1210.75 246.38,-1210.75 246.38,-1161.25 246.38,-1161.25 246.38,-1158.22 284.92,-1155.75 332.38,-1155.75 379.83,-1155.75 418.38,-1158.22 418.38,-1161.25 418.38,-1161.25 418.38,-1210.75 418.38,-1210.75"/>
|
|
83
83
|
<path fill="none" stroke="#334155" stroke-width="1.3" d="M418.38,-1210.75C418.38,-1207.72 379.83,-1205.25 332.38,-1205.25 284.92,-1205.25 246.38,-1207.72 246.38,-1210.75"/>
|
|
84
84
|
<text xml:space="preserve" text-anchor="middle" x="332.38" y="-1194.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">skills/<name>/SKILL.md</text>
|
|
85
|
-
<text xml:space="preserve" text-anchor="middle" x="332.38" y="-1182.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">agentskills.io
|
|
85
|
+
<text xml:space="preserve" text-anchor="middle" x="332.38" y="-1182.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">agentskills.io + default_skills seed</text>
|
|
86
86
|
<text xml:space="preserve" text-anchor="middle" x="332.38" y="-1170.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">name+description frontmatter + refs</text>
|
|
87
87
|
</g>
|
|
88
88
|
<!-- Root->skl -->
|
|
@@ -85,14 +85,15 @@
|
|
|
85
85
|
<!-- Fire -->
|
|
86
86
|
<g id="node6" class="node">
|
|
87
87
|
<title>Fire</title>
|
|
88
|
-
<path fill="#c4b5fd" stroke="#334155" stroke-width="1.3" d="
|
|
89
|
-
<text xml:space="preserve" text-anchor="middle" x="511.12" y="-
|
|
88
|
+
<path fill="#c4b5fd" stroke="#334155" stroke-width="1.3" d="M547.25,-124C547.25,-124 475,-124 475,-124 469,-124 463,-118 463,-112 463,-112 463,-100 463,-100 463,-94 469,-88 475,-88 475,-88 547.25,-88 547.25,-88 553.25,-88 559.25,-94 559.25,-100 559.25,-100 559.25,-112 559.25,-112 559.25,-118 553.25,-124 547.25,-124"/>
|
|
89
|
+
<text xml:space="preserve" text-anchor="middle" x="511.12" y="-108.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">worker / crontab</text>
|
|
90
|
+
<text xml:space="preserve" text-anchor="middle" x="511.12" y="-96.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">→ PWN::Cron.run</text>
|
|
90
91
|
</g>
|
|
91
92
|
<!-- Cron->Fire -->
|
|
92
93
|
<g id="edge5" class="edge">
|
|
93
94
|
<title>Cron->Fire</title>
|
|
94
|
-
<path fill="none" stroke="#a78bfa" stroke-width="1.3" d="M321.78,-
|
|
95
|
-
<polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="1.3" points="
|
|
95
|
+
<path fill="none" stroke="#a78bfa" stroke-width="1.3" d="M321.78,-106C357.21,-106 411.43,-106 452.61,-106"/>
|
|
96
|
+
<polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="1.3" points="452.55,-108.8 460.55,-106 452.55,-103.2 452.55,-108.8"/>
|
|
96
97
|
</g>
|
|
97
98
|
<!-- Resume -->
|
|
98
99
|
<g id="node7" class="node">
|
|
@@ -123,8 +124,8 @@
|
|
|
123
124
|
<!-- Fire->Next -->
|
|
124
125
|
<g id="edge8" class="edge">
|
|
125
126
|
<title>Fire->Next</title>
|
|
126
|
-
<path fill="none" stroke="#38bdf8" stroke-width="1.3" d="
|
|
127
|
-
<polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="1.3" points="673.
|
|
127
|
+
<path fill="none" stroke="#38bdf8" stroke-width="1.3" d="M559.85,-106C593.17,-106 637.95,-106 674.01,-106"/>
|
|
128
|
+
<polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="1.3" points="673.96,-108.8 681.96,-106 673.96,-103.2 673.96,-108.8"/>
|
|
128
129
|
</g>
|
|
129
130
|
<!-- Resume->Next -->
|
|
130
131
|
<g id="edge9" class="edge">
|
|
@@ -61,8 +61,7 @@ $ pwn --ai "run bin/pwn_sast against ./src and push findings to DefectDojo"
|
|
|
61
61
|
[Registry](Agent-Tool-Registry.md). **ToolGuard** runs first on `shell` and
|
|
62
62
|
`pwn_eval`: it maps common wrong keys (`value`/`cmd`) onto the schema, drops
|
|
63
63
|
placeholder payloads (`...`, `{...}`), refuses bash-only syntax unless
|
|
64
|
-
`ai.agent.shell_bash` is on
|
|
65
|
-
in-scope or `ai.agent.recon_authorized` is true. **Metrics** records
|
|
64
|
+
`ai.agent.shell_bash` is on. **Metrics** records
|
|
66
65
|
`duration/success/engine` (via `Reward.semantic_ok` - `grep` exit 1 ≠
|
|
67
66
|
failure); **Policy.observe_step** records the hygiene reward for that tool. Dispatch is *tolerant* - Levenshtein-repairs near-miss tool names
|
|
68
67
|
and cleans up almost-JSON args, fingerprinting every repair into
|
|
@@ -110,7 +109,7 @@ The two that matter most:
|
|
|
110
109
|
| Tool | Reach |
|
|
111
110
|
|---|---|
|
|
112
111
|
| `pwn_eval` | **Any** Ruby in-process - the whole `PWN::` namespace, `require`, monkey-patch, everything |
|
|
113
|
-
| `shell` | **Any** OS command on the host. Runs through `PWN::AI::Agent::ToolGuard` first (placeholder, schema, bash-only syntax
|
|
112
|
+
| `shell` | **Any** OS command on the host. Runs through `PWN::AI::Agent::ToolGuard` first (placeholder, schema, bash-only syntax). |
|
|
114
113
|
|
|
115
114
|
Everything else (memory, skills, learning, **mistakes**, **reward**,
|
|
116
115
|
**curriculum**, **policy**, extrospection, cron, swarm, sessions, metrics) is a
|
|
@@ -220,11 +219,9 @@ for cheap short-circuits. Everything else is a goal: TaskSummarizer compass + CO
|
|
|
220
219
|
| How-to | "how to do a ping sweep of a subnet using hping3?" | Short explanation with example commands only. No tools. |
|
|
221
220
|
| Greeting | "Howdy, it's cloudy." / "hi" | Fixed short ack. No tools, no LLM, no weather echo. |
|
|
222
221
|
| Recall | "what did I just say?" / "how did you respond?" | Cheap prior-turn answer from the session transcript. |
|
|
223
|
-
|
|
|
224
|
-
| Goal | "refactor Loop.run and run rubocop" / "what color is a cherry" | Task compass + CORE_TOOLS. There is no statement/question type. |
|
|
222
|
+
| Goal | "refactor Loop.run" / "find live hosts on this subnet" / "what color is a cherry" | Task compass + CORE_TOOLS. There is no statement/question type. |
|
|
225
223
|
|
|
226
|
-
|
|
227
|
-
not authorized. On how-to asks, memory SOPs about repo rubocop/rake hygiene are
|
|
224
|
+
On how-to asks, memory SOPs about repo rubocop/rake hygiene are
|
|
228
225
|
kept out of the prompt so the model does not pivot into unrelated verification.
|
|
229
226
|
|
|
230
227
|
Keyword routing, unfinished-goal resume (`continue` / `resume`), and
|