pwn 0.5.682 → 0.5.684
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 +11 -10
- data/documentation/Agent-Tool-Registry.md +13 -9
- data/documentation/CLI-Drivers.md +27 -28
- data/documentation/Configuration.md +7 -5
- data/documentation/Contributing.md +2 -2
- data/documentation/Cron.md +11 -7
- data/documentation/Diagrams.md +2 -2
- data/documentation/General-PWN-Usage.md +1 -1
- data/documentation/Home.md +7 -6
- data/documentation/How-PWN-Works.md +9 -9
- data/documentation/Installation.md +1 -1
- data/documentation/Persistence.md +2 -1
- data/documentation/Plugins.md +3 -3
- data/documentation/Reinforcement-Learning.md +103 -101
- data/documentation/SAST.md +1 -1
- data/documentation/Session-Workflow.md +152 -0
- data/documentation/Sessions.md +2 -1
- data/documentation/Troubleshooting.md +2 -2
- data/documentation/What-is-PWN.md +3 -3
- data/documentation/diagrams/agent-tool-registry.svg +152 -152
- data/documentation/diagrams/cron-scheduling.svg +141 -121
- data/documentation/diagrams/dot/agent-tool-registry.dot +4 -4
- data/documentation/diagrams/dot/cron-scheduling.dot +10 -7
- data/documentation/diagrams/dot/driver-framework.dot +1 -1
- data/documentation/diagrams/dot/overall-pwn-architecture.dot +4 -4
- data/documentation/diagrams/dot/persistence-filesystem.dot +1 -1
- data/documentation/diagrams/dot/plugin-ecosystem.dot +2 -2
- data/documentation/diagrams/dot/task-summarizer.dot +18 -16
- data/documentation/diagrams/driver-framework.svg +1 -1
- data/documentation/diagrams/overall-pwn-architecture.svg +93 -93
- data/documentation/diagrams/persistence-filesystem.svg +4 -4
- data/documentation/diagrams/plugin-ecosystem.svg +101 -100
- data/documentation/diagrams/task-summarizer.svg +166 -156
- data/documentation/pwn-ai-Agent.md +9 -4
- data/lib/pwn/ai/agent/dispatch.rb +52 -1
- data/lib/pwn/ai/agent/loop.rb +198 -159
- data/lib/pwn/ai/agent/open_goal.rb +83 -0
- data/lib/pwn/ai/agent/policy.rb +2 -3
- data/lib/pwn/ai/agent/prompt_builder.rb +16 -13
- data/lib/pwn/ai/agent/registry.rb +6 -9
- data/lib/pwn/ai/agent/tools/sessions.rb +32 -0
- data/lib/pwn/ai/agent/tools/skills.rb +56 -0
- data/lib/pwn/ai/agent.rb +1 -0
- data/lib/pwn/ai/anthropic.rb +0 -1
- data/lib/pwn/ai/gemini.rb +0 -1
- data/lib/pwn/ai/grok.rb +0 -1
- data/lib/pwn/ai/ollama.rb +0 -1
- data/lib/pwn/ai/open_ai.rb +0 -1
- data/lib/pwn/ai/open_web_ui.rb +0 -1
- data/lib/pwn/config.rb +2 -2
- data/lib/pwn/cron.rb +18 -5
- data/lib/pwn/plugins/repl.rb +43 -1
- data/lib/pwn/plugins/tty_spinner.rb +109 -13
- data/lib/pwn/sessions.rb +82 -0
- data/lib/pwn/version.rb +1 -1
- data/spec/integration/persistence_roundtrip_spec.rb +2 -1
- data/spec/integration/prompt_builder_spec.rb +3 -3
- data/spec/integration/reinforced_feedback_loop_spec.rb +6 -11
- data/spec/lib/pwn/ai/agent/dispatch_spec.rb +38 -82
- data/spec/lib/pwn/ai/agent/loop_spec.rb +284 -11
- data/spec/lib/pwn/ai/agent/open_goal_spec.rb +37 -0
- data/spec/lib/pwn/ai/agent/prompt_builder_spec.rb +7 -3
- data/spec/lib/pwn/ai/agent/registry_spec.rb +16 -9
- data/spec/lib/pwn/ai/agent/tools/sessions_spec.rb +5 -0
- data/spec/lib/pwn/ai/agent/tools/skills_spec.rb +16 -0
- data/spec/lib/pwn/ai/red_team/test_case_engine_spec.rb +20 -0
- data/spec/lib/pwn/cron_spec.rb +13 -3
- data/spec/lib/pwn/plugins/repl_spec.rb +26 -0
- data/spec/lib/pwn/plugins/tty_spinner_spec.rb +44 -0
- data/spec/lib/pwn/sessions_spec.rb +29 -0
- data/spec/spec_helper.rb +6 -0
- data/third_party/pwn_rdoc.jsonl +28 -1
- metadata +4 -1
|
@@ -4,279 +4,289 @@
|
|
|
4
4
|
<!-- Generated by graphviz version 14.1.2 (0)
|
|
5
5
|
-->
|
|
6
6
|
<!-- Title: PWN_TaskSummarizer Pages: 1 -->
|
|
7
|
-
<svg width="
|
|
8
|
-
viewBox="0.00 0.00
|
|
9
|
-
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(43.2
|
|
7
|
+
<svg width="1807pt" height="754pt"
|
|
8
|
+
viewBox="0.00 0.00 1807.00 754.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
|
9
|
+
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(43.2 710.7)">
|
|
10
10
|
<title>PWN_TaskSummarizer</title>
|
|
11
|
-
<polygon fill="#0f172a" stroke="none" points="-43.2,43.2 -43.2,-
|
|
12
|
-
<text xml:space="preserve" text-anchor="start" x="
|
|
13
|
-
<text xml:space="preserve" text-anchor="start" x="
|
|
11
|
+
<polygon fill="#0f172a" stroke="none" points="-43.2,43.2 -43.2,-710.7 1764.2,-710.7 1764.2,43.2 -43.2,43.2"/>
|
|
12
|
+
<text xml:space="preserve" text-anchor="start" x="616" y="-645.5" font-family="sans-Serif" font-weight="bold" font-size="20.00" fill="#e2e8f0">PWN::AI::Agent::TaskSummarizer - executive briefs</text>
|
|
13
|
+
<text xml:space="preserve" text-anchor="start" x="677.12" y="-634.05" font-family="sans-Serif" font-size="11.00" fill="#94a3b8">every request is a goal: emit_plan! then about_to then tools (no request type)</text>
|
|
14
14
|
<g id="clust2" class="cluster">
|
|
15
|
-
<title>
|
|
16
|
-
<path fill="#4c0519" stroke="#be123c" stroke-width="2" d="
|
|
17
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
15
|
+
<title>cluster_short</title>
|
|
16
|
+
<path fill="#4c0519" stroke="#be123c" stroke-width="2" d="M932,-397.25C932,-397.25 1323,-397.25 1323,-397.25 1329,-397.25 1335,-403.25 1335,-409.25 1335,-409.25 1335,-499.75 1335,-499.75 1335,-505.75 1329,-511.75 1323,-511.75 1323,-511.75 932,-511.75 932,-511.75 926,-511.75 920,-505.75 920,-499.75 920,-499.75 920,-409.25 920,-409.25 920,-403.25 926,-397.25 932,-397.25"/>
|
|
17
|
+
<text xml:space="preserve" text-anchor="middle" x="1127.5" y="-488.75" font-family="sans-Serif" font-size="20.00" fill="#fda4af">Cheap short-circuits (no tools, no plan)</text>
|
|
18
18
|
</g>
|
|
19
19
|
<g id="clust4" class="cluster">
|
|
20
20
|
<title>cluster_plan</title>
|
|
21
|
-
<path fill="#2e1065" stroke="#6d28d9" stroke-width="2" d="
|
|
22
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
21
|
+
<path fill="#2e1065" stroke="#6d28d9" stroke-width="2" d="M1351,-242.5C1351,-242.5 1701,-242.5 1701,-242.5 1707,-242.5 1713,-248.5 1713,-254.5 1713,-254.5 1713,-371 1713,-371 1713,-377 1707,-383 1701,-383 1701,-383 1351,-383 1351,-383 1345,-383 1339,-377 1339,-371 1339,-371 1339,-254.5 1339,-254.5 1339,-248.5 1345,-242.5 1351,-242.5"/>
|
|
22
|
+
<text xml:space="preserve" text-anchor="middle" x="1526" y="-360" font-family="sans-Serif" font-size="20.00" fill="#ddd6fe">Goal plan (once per turn)</text>
|
|
23
23
|
</g>
|
|
24
24
|
<g id="clust6" class="cluster">
|
|
25
25
|
<title>cluster_batch</title>
|
|
26
|
-
<path fill="#022c22" stroke="#047857" stroke-width="2" d="M20,-
|
|
27
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
26
|
+
<path fill="#022c22" stroke="#047857" stroke-width="2" d="M20,-391C20,-391 884,-391 884,-391 890,-391 896,-397 896,-403 896,-403 896,-506 896,-506 896,-512 890,-518 884,-518 884,-518 20,-518 20,-518 14,-518 8,-512 8,-506 8,-506 8,-403 8,-403 8,-397 14,-391 20,-391"/>
|
|
27
|
+
<text xml:space="preserve" text-anchor="middle" x="452" y="-495" font-family="sans-Serif" font-size="20.00" fill="#a7f3d0">Batch layer (each tool collection)</text>
|
|
28
28
|
</g>
|
|
29
29
|
<g id="clust8" class="cluster">
|
|
30
30
|
<title>cluster_exec</title>
|
|
31
|
-
<path fill="#422006" stroke="#a16207" stroke-width="2" d="
|
|
32
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
31
|
+
<path fill="#422006" stroke="#a16207" stroke-width="2" d="M590,-107.5C590,-107.5 1158,-107.5 1158,-107.5 1164,-107.5 1170,-113.5 1170,-119.5 1170,-119.5 1170,-222.5 1170,-222.5 1170,-228.5 1164,-234.5 1158,-234.5 1158,-234.5 590,-234.5 590,-234.5 584,-234.5 578,-228.5 578,-222.5 578,-222.5 578,-119.5 578,-119.5 578,-113.5 584,-107.5 590,-107.5"/>
|
|
32
|
+
<text xml:space="preserve" text-anchor="middle" x="874" y="-211.5" font-family="sans-Serif" font-size="20.00" fill="#fde68a">Execution (not on task row)</text>
|
|
33
33
|
</g>
|
|
34
34
|
<!-- User -->
|
|
35
35
|
<g id="node1" class="node">
|
|
36
36
|
<title>User</title>
|
|
37
|
-
<path fill="#7dd3fc" stroke="#334155" stroke-width="1.4" d="
|
|
38
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
37
|
+
<path fill="#7dd3fc" stroke="#334155" stroke-width="1.4" d="M454.12,-622.25C454.12,-622.25 399.88,-622.25 399.88,-622.25 393.88,-622.25 387.88,-616.25 387.88,-610.25 387.88,-610.25 387.88,-598.25 387.88,-598.25 387.88,-592.25 393.88,-586.25 399.88,-586.25 399.88,-586.25 454.12,-586.25 454.12,-586.25 460.12,-586.25 466.12,-592.25 466.12,-598.25 466.12,-598.25 466.12,-610.25 466.12,-610.25 466.12,-616.25 460.12,-622.25 454.12,-622.25"/>
|
|
38
|
+
<text xml:space="preserve" text-anchor="middle" x="427" y="-600.55" font-family="sans-Serif" font-size="11.00" fill="#0f172a">User request</text>
|
|
39
39
|
</g>
|
|
40
40
|
<!-- Loop -->
|
|
41
41
|
<g id="node2" class="node">
|
|
42
42
|
<title>Loop</title>
|
|
43
|
-
<path fill="#c4b5fd" stroke="#334155" stroke-width="1.4" d="
|
|
44
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
45
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
46
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
43
|
+
<path fill="#c4b5fd" stroke="#334155" stroke-width="1.4" d="M706.38,-628.5C706.38,-628.5 557.62,-628.5 557.62,-628.5 551.62,-628.5 545.62,-622.5 545.62,-616.5 545.62,-616.5 545.62,-592 545.62,-592 545.62,-586 551.62,-580 557.62,-580 557.62,-580 706.38,-580 706.38,-580 712.38,-580 718.38,-586 718.38,-592 718.38,-592 718.38,-616.5 718.38,-616.5 718.38,-622.5 712.38,-628.5 706.38,-628.5"/>
|
|
44
|
+
<text xml:space="preserve" text-anchor="middle" x="632" y="-614.05" font-family="sans-Serif" font-size="11.00" fill="#0f172a">Loop.run</text>
|
|
45
|
+
<text xml:space="preserve" text-anchor="middle" x="632" y="-600.55" font-family="sans-Serif" font-size="11.00" fill="#0f172a">ts_state = TaskSummarizer.fresh</text>
|
|
46
|
+
<text xml:space="preserve" text-anchor="middle" x="632" y="-587.05" font-family="sans-Serif" font-size="11.00" fill="#0f172a">request_intent short-circuit only</text>
|
|
47
47
|
</g>
|
|
48
48
|
<!-- User->Loop -->
|
|
49
49
|
<g id="edge1" class="edge">
|
|
50
50
|
<title>User->Loop</title>
|
|
51
|
-
<path fill="none" stroke="#38bdf8" stroke-width="2" d="
|
|
52
|
-
<polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="2" points="
|
|
51
|
+
<path fill="none" stroke="#38bdf8" stroke-width="2" d="M466.64,-604.25C489.22,-604.25 511.81,-604.25 534.39,-604.25"/>
|
|
52
|
+
<polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="2" points="534.09,-607.05 542.09,-604.25 534.09,-601.45 534.09,-607.05"/>
|
|
53
53
|
</g>
|
|
54
54
|
<!-- Kind -->
|
|
55
55
|
<g id="node3" class="node">
|
|
56
56
|
<title>Kind</title>
|
|
57
|
-
<path fill="#fcd34d" stroke="#334155" stroke-width="2" d="
|
|
58
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
59
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
60
|
-
<text xml:space="preserve" text-anchor="middle" x="945" y="-611.05" font-family="sans-Serif" font-size="11.00" fill="#0f172a">host-evidence Qs → goal</text>
|
|
57
|
+
<path fill="#fcd34d" stroke="#334155" stroke-width="2" d="M1207.25,-622.25C1207.25,-622.25 1096.75,-622.25 1096.75,-622.25 1090.75,-622.25 1084.75,-616.25 1084.75,-610.25 1084.75,-610.25 1084.75,-598.25 1084.75,-598.25 1084.75,-592.25 1090.75,-586.25 1096.75,-586.25 1096.75,-586.25 1207.25,-586.25 1207.25,-586.25 1213.25,-586.25 1219.25,-592.25 1219.25,-598.25 1219.25,-598.25 1219.25,-610.25 1219.25,-610.25 1219.25,-616.25 1213.25,-622.25 1207.25,-622.25"/>
|
|
58
|
+
<text xml:space="preserve" text-anchor="middle" x="1152" y="-607.3" font-family="sans-Serif" font-size="11.00" fill="#0f172a">no request type</text>
|
|
59
|
+
<text xml:space="preserve" text-anchor="middle" x="1152" y="-593.8" font-family="sans-Serif" font-size="11.00" fill="#0f172a">every other turn is a goal</text>
|
|
61
60
|
</g>
|
|
62
61
|
<!-- Loop->Kind -->
|
|
63
62
|
<g id="edge2" class="edge">
|
|
64
63
|
<title>Loop->Kind</title>
|
|
65
|
-
<path fill="none" stroke="#fbbf24" stroke-width="2" d="
|
|
66
|
-
<polygon fill="#fbbf24" stroke="#fbbf24" stroke-width="2" points="
|
|
64
|
+
<path fill="none" stroke="#fbbf24" stroke-width="2" d="M718.84,-604.25C836.96,-604.25 955.08,-604.25 1073.2,-604.25"/>
|
|
65
|
+
<polygon fill="#fbbf24" stroke="#fbbf24" stroke-width="2" points="1072.87,-607.05 1080.87,-604.25 1072.87,-601.45 1072.87,-607.05"/>
|
|
67
66
|
</g>
|
|
68
67
|
<!-- About -->
|
|
69
|
-
<g id="
|
|
68
|
+
<g id="node9" class="node">
|
|
70
69
|
<title>About</title>
|
|
71
|
-
<path fill="#6ee7b7" stroke="#334155" stroke-width="1.4" d="M134,-
|
|
72
|
-
<text xml:space="preserve" text-anchor="middle" x="81" y="-
|
|
73
|
-
<text xml:space="preserve" text-anchor="middle" x="81" y="-
|
|
74
|
-
<text xml:space="preserve" text-anchor="middle" x="81" y="-
|
|
70
|
+
<path fill="#6ee7b7" stroke="#334155" stroke-width="1.4" d="M134,-447.5C134,-447.5 28,-447.5 28,-447.5 22,-447.5 16,-441.5 16,-435.5 16,-435.5 16,-411 16,-411 16,-405 22,-399 28,-399 28,-399 134,-399 134,-399 140,-399 146,-405 146,-411 146,-411 146,-435.5 146,-435.5 146,-441.5 140,-447.5 134,-447.5"/>
|
|
71
|
+
<text xml:space="preserve" text-anchor="middle" x="81" y="-433.05" font-family="sans-Serif" font-size="11.00" fill="#0f172a">about_to(tools:)</text>
|
|
72
|
+
<text xml:space="preserve" text-anchor="middle" x="81" y="-419.55" font-family="sans-Serif" font-size="11.00" fill="#0f172a">task k/n English primary</text>
|
|
73
|
+
<text xml:space="preserve" text-anchor="middle" x="81" y="-406.05" font-family="sans-Serif" font-size="11.00" fill="#0f172a">via tools (intent)</text>
|
|
75
74
|
</g>
|
|
76
75
|
<!-- Loop->About -->
|
|
77
|
-
<g id="
|
|
76
|
+
<g id="edge9" class="edge">
|
|
78
77
|
<title>Loop->About</title>
|
|
79
|
-
<path fill="none" stroke="#a78bfa" stroke-width="1.3" d="
|
|
80
|
-
<polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="1.3" points="
|
|
81
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
82
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
83
|
-
<text xml:space="preserve" text-anchor="middle" x="307.99" y="-541.45" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">(goals only)</text>
|
|
78
|
+
<path fill="none" stroke="#a78bfa" stroke-width="1.3" d="M545.29,-588.08C429.59,-567.51 235.64,-531.77 205,-518 170.35,-502.43 136.31,-475.64 112.69,-454.67"/>
|
|
79
|
+
<polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="1.3" points="114.68,-452.69 106.86,-449.41 110.92,-456.85 114.68,-452.69"/>
|
|
80
|
+
<text xml:space="preserve" text-anchor="middle" x="341.07" y="-538.45" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">before each</text>
|
|
81
|
+
<text xml:space="preserve" text-anchor="middle" x="341.07" y="-527.95" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">tool batch</text>
|
|
84
82
|
</g>
|
|
85
|
-
<!--
|
|
83
|
+
<!-- Greet -->
|
|
86
84
|
<g id="node4" class="node">
|
|
87
|
-
<title>
|
|
88
|
-
<path fill="#fda4af" stroke="#334155" stroke-width="1.4" d="
|
|
89
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
90
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
85
|
+
<title>Greet</title>
|
|
86
|
+
<path fill="#fda4af" stroke="#334155" stroke-width="1.4" d="M1314.5,-441.25C1314.5,-441.25 1253.5,-441.25 1253.5,-441.25 1247.5,-441.25 1241.5,-435.25 1241.5,-429.25 1241.5,-429.25 1241.5,-417.25 1241.5,-417.25 1241.5,-411.25 1247.5,-405.25 1253.5,-405.25 1253.5,-405.25 1314.5,-405.25 1314.5,-405.25 1320.5,-405.25 1326.5,-411.25 1326.5,-417.25 1326.5,-417.25 1326.5,-429.25 1326.5,-429.25 1326.5,-435.25 1320.5,-441.25 1314.5,-441.25"/>
|
|
87
|
+
<text xml:space="preserve" text-anchor="middle" x="1284" y="-426.3" font-family="sans-Serif" font-size="11.00" fill="#0f172a">greeting</text>
|
|
88
|
+
<text xml:space="preserve" text-anchor="middle" x="1284" y="-412.8" font-family="sans-Serif" font-size="11.00" fill="#0f172a">fixed short ack</text>
|
|
91
89
|
</g>
|
|
92
|
-
<!-- Kind->
|
|
90
|
+
<!-- Kind->Greet -->
|
|
93
91
|
<g id="edge3" class="edge">
|
|
94
|
-
<title>Kind->
|
|
95
|
-
<path fill="none" stroke="#fb7185" stroke-width="1.3" d="
|
|
96
|
-
<polygon fill="#fb7185" stroke="#fb7185" stroke-width="1.3" points="
|
|
97
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
92
|
+
<title>Kind->Greet</title>
|
|
93
|
+
<path fill="none" stroke="#fb7185" stroke-width="1.3" d="M1167.28,-585.33C1181.59,-568.32 1203.36,-541.89 1221,-518 1237.57,-495.57 1255.17,-469.12 1267.55,-450.05"/>
|
|
94
|
+
<polygon fill="#fb7185" stroke="#fb7185" stroke-width="1.3" points="1269.79,-451.74 1271.77,-443.5 1265.08,-448.7 1269.79,-451.74"/>
|
|
95
|
+
<text xml:space="preserve" text-anchor="middle" x="1230.74" y="-533.2" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">greeting</text>
|
|
98
96
|
</g>
|
|
99
|
-
<!--
|
|
97
|
+
<!-- HowTo -->
|
|
100
98
|
<g id="node5" class="node">
|
|
101
|
-
<title>
|
|
102
|
-
<path fill="#fda4af" stroke="#334155" stroke-width="1.4" d="
|
|
103
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
104
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
105
|
-
<text xml:space="preserve" text-anchor="middle" x="1030" y="-419.55" font-family="sans-Serif" font-size="11.00" fill="#0f172a">no tools / no plan</text>
|
|
99
|
+
<title>HowTo</title>
|
|
100
|
+
<path fill="#fda4af" stroke="#334155" stroke-width="1.4" d="M1050.25,-441.25C1050.25,-441.25 939.75,-441.25 939.75,-441.25 933.75,-441.25 927.75,-435.25 927.75,-429.25 927.75,-429.25 927.75,-417.25 927.75,-417.25 927.75,-411.25 933.75,-405.25 939.75,-405.25 939.75,-405.25 1050.25,-405.25 1050.25,-405.25 1056.25,-405.25 1062.25,-411.25 1062.25,-417.25 1062.25,-417.25 1062.25,-429.25 1062.25,-429.25 1062.25,-435.25 1056.25,-441.25 1050.25,-441.25"/>
|
|
101
|
+
<text xml:space="preserve" text-anchor="middle" x="995" y="-426.3" font-family="sans-Serif" font-size="11.00" fill="#0f172a">howto</text>
|
|
102
|
+
<text xml:space="preserve" text-anchor="middle" x="995" y="-412.8" font-family="sans-Serif" font-size="11.00" fill="#0f172a">example commands only</text>
|
|
106
103
|
</g>
|
|
107
|
-
<!-- Kind->
|
|
104
|
+
<!-- Kind->HowTo -->
|
|
108
105
|
<g id="edge4" class="edge">
|
|
109
|
-
<title>Kind->
|
|
110
|
-
<path fill="none" stroke="#fb7185" stroke-width="1.3" d="
|
|
111
|
-
<polygon fill="#fb7185" stroke="#fb7185" stroke-width="1.3" points="
|
|
112
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
106
|
+
<title>Kind->HowTo</title>
|
|
107
|
+
<path fill="none" stroke="#fb7185" stroke-width="1.3" d="M1083.95,-599.71C963.58,-592.74 723.35,-575.4 698.25,-547 692.07,-540.01 691.78,-532.73 698.25,-526 714.27,-509.35 884.95,-527.52 906,-518 937.73,-503.64 963.69,-472.25 979.22,-449.74"/>
|
|
108
|
+
<polygon fill="#fb7185" stroke="#fb7185" stroke-width="1.3" points="981.45,-451.45 983.56,-443.24 976.79,-448.34 981.45,-451.45"/>
|
|
109
|
+
<text xml:space="preserve" text-anchor="middle" x="710.62" y="-533.2" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">howto</text>
|
|
113
110
|
</g>
|
|
114
|
-
<!--
|
|
111
|
+
<!-- Recal -->
|
|
115
112
|
<g id="node6" class="node">
|
|
113
|
+
<title>Recal</title>
|
|
114
|
+
<path fill="#fda4af" stroke="#334155" stroke-width="1.4" d="M1189.25,-441.25C1189.25,-441.25 1114.75,-441.25 1114.75,-441.25 1108.75,-441.25 1102.75,-435.25 1102.75,-429.25 1102.75,-429.25 1102.75,-417.25 1102.75,-417.25 1102.75,-411.25 1108.75,-405.25 1114.75,-405.25 1114.75,-405.25 1189.25,-405.25 1189.25,-405.25 1195.25,-405.25 1201.25,-411.25 1201.25,-417.25 1201.25,-417.25 1201.25,-429.25 1201.25,-429.25 1201.25,-435.25 1195.25,-441.25 1189.25,-441.25"/>
|
|
115
|
+
<text xml:space="preserve" text-anchor="middle" x="1152" y="-426.3" font-family="sans-Serif" font-size="11.00" fill="#0f172a">recall</text>
|
|
116
|
+
<text xml:space="preserve" text-anchor="middle" x="1152" y="-412.8" font-family="sans-Serif" font-size="11.00" fill="#0f172a">prior-turn answer</text>
|
|
117
|
+
</g>
|
|
118
|
+
<!-- Kind->Recal -->
|
|
119
|
+
<g id="edge5" class="edge">
|
|
120
|
+
<title>Kind->Recal</title>
|
|
121
|
+
<path fill="none" stroke="#fb7185" stroke-width="1.3" d="M1152,-585.43C1152,-553.99 1152,-488.48 1152,-451.39"/>
|
|
122
|
+
<polygon fill="#fb7185" stroke="#fb7185" stroke-width="1.3" points="1154.8,-451.7 1152,-443.7 1149.2,-451.7 1154.8,-451.7"/>
|
|
123
|
+
<text xml:space="preserve" text-anchor="middle" x="1163.25" y="-533.2" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">recall</text>
|
|
124
|
+
</g>
|
|
125
|
+
<!-- Plan -->
|
|
126
|
+
<g id="node7" class="node">
|
|
116
127
|
<title>Plan</title>
|
|
117
|
-
<path fill="#c4b5fd" stroke="#334155" stroke-width="1.4" d="
|
|
118
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
119
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
120
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
128
|
+
<path fill="#c4b5fd" stroke="#334155" stroke-width="1.4" d="M1483.38,-305.75C1483.38,-305.75 1358.62,-305.75 1358.62,-305.75 1352.62,-305.75 1346.62,-299.75 1346.62,-293.75 1346.62,-293.75 1346.62,-269.25 1346.62,-269.25 1346.62,-263.25 1352.62,-257.25 1358.62,-257.25 1358.62,-257.25 1483.38,-257.25 1483.38,-257.25 1489.38,-257.25 1495.38,-263.25 1495.38,-269.25 1495.38,-269.25 1495.38,-293.75 1495.38,-293.75 1495.38,-299.75 1489.38,-305.75 1483.38,-305.75"/>
|
|
129
|
+
<text xml:space="preserve" text-anchor="middle" x="1421" y="-291.3" font-family="sans-Serif" font-size="11.00" fill="#0f172a">plan(request)</text>
|
|
130
|
+
<text xml:space="preserve" text-anchor="middle" x="1421" y="-277.8" font-family="sans-Serif" font-size="11.00" fill="#0f172a">enumerated · LLM · fallback</text>
|
|
131
|
+
<text xml:space="preserve" text-anchor="middle" x="1421" y="-264.3" font-family="sans-Serif" font-size="11.00" fill="#0f172a">ordered work units</text>
|
|
121
132
|
</g>
|
|
122
133
|
<!-- Kind->Plan -->
|
|
123
|
-
<g id="
|
|
134
|
+
<g id="edge6" class="edge">
|
|
124
135
|
<title>Kind->Plan</title>
|
|
125
|
-
<path fill="none" stroke="#a78bfa" stroke-width="2" d="
|
|
126
|
-
<polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="2" points="
|
|
127
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
136
|
+
<path fill="none" stroke="#a78bfa" stroke-width="2" d="M1219.79,-588.32C1261.18,-575.95 1312.26,-554.33 1345,-518 1396.77,-460.56 1413.31,-367.49 1418.57,-317.27"/>
|
|
137
|
+
<polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="2" points="1421.35,-317.6 1419.32,-309.37 1415.78,-317.07 1421.35,-317.6"/>
|
|
138
|
+
<text xml:space="preserve" text-anchor="middle" x="1345.57" y="-533.2" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">goal</text>
|
|
128
139
|
</g>
|
|
129
140
|
<!-- EmitP -->
|
|
130
|
-
<g id="
|
|
141
|
+
<g id="node8" class="node">
|
|
131
142
|
<title>EmitP</title>
|
|
132
|
-
<path fill="#c4b5fd" stroke="#334155" stroke-width="2" d="
|
|
133
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
134
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
135
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
136
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
137
|
-
<text xml:space="preserve" text-anchor="middle" x="1621" y="-257.55" font-family="sans-Serif" font-size="11.00" fill="#0f172a">  each may use 1+ tools</text>
|
|
143
|
+
<path fill="#c4b5fd" stroke="#334155" stroke-width="2" d="M1693,-312.5C1693,-312.5 1587,-312.5 1587,-312.5 1581,-312.5 1575,-306.5 1575,-300.5 1575,-300.5 1575,-262.5 1575,-262.5 1575,-256.5 1581,-250.5 1587,-250.5 1587,-250.5 1693,-250.5 1693,-250.5 1699,-250.5 1705,-256.5 1705,-262.5 1705,-262.5 1705,-300.5 1705,-300.5 1705,-306.5 1699,-312.5 1693,-312.5"/>
|
|
144
|
+
<text xml:space="preserve" text-anchor="middle" x="1640" y="-298.05" font-family="sans-Serif" font-size="11.00" fill="#0f172a">emit_plan!</text>
|
|
145
|
+
<text xml:space="preserve" text-anchor="middle" x="1640" y="-284.55" font-family="sans-Serif" font-size="11.00" fill="#0f172a">Goal: (original request)</text>
|
|
146
|
+
<text xml:space="preserve" text-anchor="middle" x="1640" y="-271.05" font-family="sans-Serif" font-size="11.00" fill="#0f172a">Tangible tasks (N):</text>
|
|
147
|
+
<text xml:space="preserve" text-anchor="middle" x="1640" y="-257.55" font-family="sans-Serif" font-size="11.00" fill="#0f172a">  each may use 1+ tools</text>
|
|
138
148
|
</g>
|
|
139
149
|
<!-- Plan->EmitP -->
|
|
140
|
-
<g id="
|
|
150
|
+
<g id="edge7" class="edge">
|
|
141
151
|
<title>Plan->EmitP</title>
|
|
142
|
-
<path fill="none" stroke="#a78bfa" stroke-width="1.3" d="
|
|
143
|
-
<polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="1.3" points="
|
|
152
|
+
<path fill="none" stroke="#a78bfa" stroke-width="1.3" d="M1495.85,-281.5C1518.68,-281.5 1541.51,-281.5 1564.34,-281.5"/>
|
|
153
|
+
<polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="1.3" points="1564.15,-284.3 1572.15,-281.5 1564.15,-278.7 1564.15,-284.3"/>
|
|
144
154
|
</g>
|
|
145
155
|
<!-- UI -->
|
|
146
|
-
<g id="
|
|
156
|
+
<g id="node17" class="node">
|
|
147
157
|
<title>UI</title>
|
|
148
|
-
<path fill="#7dd3fc" stroke="#334155" stroke-width="1.4" d="
|
|
149
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
150
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
151
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
158
|
+
<path fill="#7dd3fc" stroke="#334155" stroke-width="1.4" d="M1289.5,-48.5C1289.5,-48.5 1156.5,-48.5 1156.5,-48.5 1150.5,-48.5 1144.5,-42.5 1144.5,-36.5 1144.5,-36.5 1144.5,-12 1144.5,-12 1144.5,-6 1150.5,0 1156.5,0 1156.5,0 1289.5,0 1289.5,0 1295.5,0 1301.5,-6 1301.5,-12 1301.5,-12 1301.5,-36.5 1301.5,-36.5 1301.5,-42.5 1295.5,-48.5 1289.5,-48.5"/>
|
|
159
|
+
<text xml:space="preserve" text-anchor="middle" x="1223" y="-34.05" font-family="sans-Serif" font-size="11.00" fill="#0f172a">REPL on_tool</text>
|
|
160
|
+
<text xml:space="preserve" text-anchor="middle" x="1223" y="-20.55" font-family="sans-Serif" font-size="11.00" fill="#0f172a">name='task', full text, result=''</text>
|
|
161
|
+
<text xml:space="preserve" text-anchor="middle" x="1223" y="-7.05" font-family="sans-Serif" font-size="11.00" fill="#0f172a">(no truncation)</text>
|
|
152
162
|
</g>
|
|
153
163
|
<!-- EmitP->UI -->
|
|
154
|
-
<g id="
|
|
164
|
+
<g id="edge8" class="edge">
|
|
155
165
|
<title>EmitP->UI</title>
|
|
156
|
-
<path fill="none" stroke="#38bdf8" stroke-width="2" d="
|
|
157
|
-
<polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="2" points="
|
|
158
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
166
|
+
<path fill="none" stroke="#38bdf8" stroke-width="2" d="M1589.7,-249.71C1508.83,-200.21 1350.93,-103.56 1271.33,-54.84"/>
|
|
167
|
+
<polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="2" points="1272.89,-52.51 1264.61,-50.72 1269.97,-57.28 1272.89,-52.51"/>
|
|
168
|
+
<text xml:space="preserve" text-anchor="middle" x="1591.89" y="-136.45" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">full goal once</text>
|
|
159
169
|
</g>
|
|
160
170
|
<!-- FP -->
|
|
161
|
-
<g id="
|
|
171
|
+
<g id="node10" class="node">
|
|
162
172
|
<title>FP</title>
|
|
163
|
-
<path fill="#6ee7b7" stroke="#334155" stroke-width="1.4" d="M304.5,-
|
|
164
|
-
<text xml:space="preserve" text-anchor="middle" x="271" y="-
|
|
165
|
-
<text xml:space="preserve" text-anchor="middle" x="271" y="-
|
|
173
|
+
<path fill="#6ee7b7" stroke="#334155" stroke-width="1.4" d="M304.5,-441.25C304.5,-441.25 237.5,-441.25 237.5,-441.25 231.5,-441.25 225.5,-435.25 225.5,-429.25 225.5,-429.25 225.5,-417.25 225.5,-417.25 225.5,-411.25 231.5,-405.25 237.5,-405.25 237.5,-405.25 304.5,-405.25 304.5,-405.25 310.5,-405.25 316.5,-411.25 316.5,-417.25 316.5,-417.25 316.5,-429.25 316.5,-429.25 316.5,-435.25 310.5,-441.25 304.5,-441.25"/>
|
|
174
|
+
<text xml:space="preserve" text-anchor="middle" x="271" y="-426.3" font-family="sans-Serif" font-size="11.00" fill="#0f172a">brief_fingerprint</text>
|
|
175
|
+
<text xml:space="preserve" text-anchor="middle" x="271" y="-412.8" font-family="sans-Serif" font-size="11.00" fill="#0f172a">last_brief_fp</text>
|
|
166
176
|
</g>
|
|
167
177
|
<!-- About->FP -->
|
|
168
|
-
<g id="
|
|
178
|
+
<g id="edge10" class="edge">
|
|
169
179
|
<title>About->FP</title>
|
|
170
|
-
<path fill="none" stroke="#34d399" stroke-width="1.3" d="M146.68,-
|
|
171
|
-
<polygon fill="#34d399" stroke="#34d399" stroke-width="1.3" points="214.9,-
|
|
180
|
+
<path fill="none" stroke="#34d399" stroke-width="1.3" d="M146.68,-423.25C169.49,-423.25 192.29,-423.25 215.09,-423.25"/>
|
|
181
|
+
<polygon fill="#34d399" stroke="#34d399" stroke-width="1.3" points="214.9,-426.05 222.9,-423.25 214.9,-420.45 214.9,-426.05"/>
|
|
172
182
|
</g>
|
|
173
183
|
<!-- Dup -->
|
|
174
|
-
<g id="
|
|
184
|
+
<g id="node11" class="node">
|
|
175
185
|
<title>Dup</title>
|
|
176
|
-
<path fill="#fcd34d" stroke="#334155" stroke-width="1.4" d="M465.29,-
|
|
177
|
-
<text xml:space="preserve" text-anchor="middle" x="477" y="-
|
|
186
|
+
<path fill="#fcd34d" stroke="#334155" stroke-width="1.4" d="M465.29,-438.64C465.29,-438.64 407.83,-425.86 407.83,-425.86 401.97,-424.55 401.97,-421.95 407.83,-420.64 407.83,-420.64 465.29,-407.86 465.29,-407.86 471.14,-406.55 482.86,-406.55 488.71,-407.86 488.71,-407.86 546.17,-420.64 546.17,-420.64 552.03,-421.95 552.03,-424.55 546.17,-425.86 546.17,-425.86 488.71,-438.64 488.71,-438.64 482.86,-439.95 471.14,-439.95 465.29,-438.64"/>
|
|
187
|
+
<text xml:space="preserve" text-anchor="middle" x="477" y="-419.55" font-family="sans-Serif" font-size="11.00" fill="#0f172a">duplicate_brief?</text>
|
|
178
188
|
</g>
|
|
179
189
|
<!-- FP->Dup -->
|
|
180
|
-
<g id="
|
|
190
|
+
<g id="edge11" class="edge">
|
|
181
191
|
<title>FP->Dup</title>
|
|
182
|
-
<path fill="none" stroke="#34d399" stroke-width="1.3" d="M316.87,-
|
|
183
|
-
<polygon fill="#34d399" stroke="#34d399" stroke-width="1.3" points="383.21,-
|
|
192
|
+
<path fill="none" stroke="#34d399" stroke-width="1.3" d="M316.87,-423.25C339.03,-423.25 361.18,-423.25 383.34,-423.25"/>
|
|
193
|
+
<polygon fill="#34d399" stroke="#34d399" stroke-width="1.3" points="383.21,-426.05 391.21,-423.25 383.21,-420.45 383.21,-426.05"/>
|
|
184
194
|
</g>
|
|
185
195
|
<!-- EmitB -->
|
|
186
|
-
<g id="
|
|
196
|
+
<g id="node12" class="node">
|
|
187
197
|
<title>EmitB</title>
|
|
188
|
-
<path fill="#6ee7b7" stroke="#334155" stroke-width="2" d="
|
|
189
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
190
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
191
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
198
|
+
<path fill="#6ee7b7" stroke="#334155" stroke-width="2" d="M875.5,-447.5C875.5,-447.5 802.5,-447.5 802.5,-447.5 796.5,-447.5 790.5,-441.5 790.5,-435.5 790.5,-435.5 790.5,-411 790.5,-411 790.5,-405 796.5,-399 802.5,-399 802.5,-399 875.5,-399 875.5,-399 881.5,-399 887.5,-405 887.5,-411 887.5,-411 887.5,-435.5 887.5,-435.5 887.5,-441.5 881.5,-447.5 875.5,-447.5"/>
|
|
199
|
+
<text xml:space="preserve" text-anchor="middle" x="839" y="-433.05" font-family="sans-Serif" font-size="11.00" fill="#0f172a">emit task line</text>
|
|
200
|
+
<text xml:space="preserve" text-anchor="middle" x="839" y="-419.55" font-family="sans-Serif" font-size="11.00" fill="#0f172a">task k/N:</text>
|
|
201
|
+
<text xml:space="preserve" text-anchor="middle" x="839" y="-406.05" font-family="sans-Serif" font-size="11.00" fill="#0f172a">via shell (search)</text>
|
|
192
202
|
</g>
|
|
193
203
|
<!-- Dup->EmitB -->
|
|
194
|
-
<g id="
|
|
204
|
+
<g id="edge12" class="edge">
|
|
195
205
|
<title>Dup->EmitB</title>
|
|
196
|
-
<path fill="none" stroke="#34d399" stroke-width="1.3" d="
|
|
197
|
-
<polygon fill="#34d399" stroke="#34d399" stroke-width="1.3" points="
|
|
198
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
206
|
+
<path fill="none" stroke="#34d399" stroke-width="1.3" d="M493.25,-437.98C518.01,-459.31 567.64,-497.87 618,-512.46 682.89,-531.26 709.35,-542.22 770,-512.46 793.58,-500.89 811.39,-476.95 823.01,-456.78"/>
|
|
207
|
+
<polygon fill="#34d399" stroke="#34d399" stroke-width="1.3" points="825.42,-458.21 826.81,-449.85 820.51,-455.52 825.42,-458.21"/>
|
|
208
|
+
<text xml:space="preserve" text-anchor="middle" x="742" y="-533.2" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">new</text>
|
|
199
209
|
</g>
|
|
200
210
|
<!-- Skip -->
|
|
201
|
-
<g id="
|
|
211
|
+
<g id="node13" class="node">
|
|
202
212
|
<title>Skip</title>
|
|
203
|
-
<path fill="#fda4af" stroke="#334155" stroke-width="1.4" d="M738.38,-
|
|
204
|
-
<text xml:space="preserve" text-anchor="middle" x="694" y="-
|
|
205
|
-
<text xml:space="preserve" text-anchor="middle" x="694" y="-
|
|
213
|
+
<path fill="#fda4af" stroke="#334155" stroke-width="1.4" d="M738.38,-441.25C738.38,-441.25 649.62,-441.25 649.62,-441.25 643.62,-441.25 637.62,-435.25 637.62,-429.25 637.62,-429.25 637.62,-417.25 637.62,-417.25 637.62,-411.25 643.62,-405.25 649.62,-405.25 649.62,-405.25 738.38,-405.25 738.38,-405.25 744.38,-405.25 750.38,-411.25 750.38,-417.25 750.38,-417.25 750.38,-429.25 750.38,-429.25 750.38,-435.25 744.38,-441.25 738.38,-441.25"/>
|
|
214
|
+
<text xml:space="preserve" text-anchor="middle" x="694" y="-426.3" font-family="sans-Serif" font-size="11.00" fill="#0f172a">return nil</text>
|
|
215
|
+
<text xml:space="preserve" text-anchor="middle" x="694" y="-412.8" font-family="sans-Serif" font-size="11.00" fill="#0f172a">(suppress duplicate)</text>
|
|
206
216
|
</g>
|
|
207
217
|
<!-- Dup->Skip -->
|
|
208
|
-
<g id="
|
|
218
|
+
<g id="edge13" class="edge">
|
|
209
219
|
<title>Dup->Skip</title>
|
|
210
|
-
<path fill="none" stroke="#fb7185" stroke-width="1.3" d="M560.9,-
|
|
211
|
-
<polygon fill="#fb7185" stroke="#fb7185" stroke-width="1.3" points="627.19,-
|
|
212
|
-
<text xml:space="preserve" text-anchor="middle" x="597.76" y="-
|
|
220
|
+
<path fill="none" stroke="#fb7185" stroke-width="1.3" d="M560.9,-423.25C582.93,-423.25 606.39,-423.25 627.38,-423.25"/>
|
|
221
|
+
<polygon fill="#fb7185" stroke="#fb7185" stroke-width="1.3" points="627.19,-426.05 635.19,-423.25 627.19,-420.45 627.19,-426.05"/>
|
|
222
|
+
<text xml:space="preserve" text-anchor="middle" x="597.76" y="-428.2" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">same fp</text>
|
|
213
223
|
</g>
|
|
214
224
|
<!-- Tools -->
|
|
215
|
-
<g id="
|
|
225
|
+
<g id="node14" class="node">
|
|
216
226
|
<title>Tools</title>
|
|
217
|
-
<path fill="#fcd34d" stroke="#334155" stroke-width="1.4" d="
|
|
218
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
219
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
220
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
227
|
+
<path fill="#fcd34d" stroke="#334155" stroke-width="1.4" d="M750.25,-164C750.25,-164 597.75,-164 597.75,-164 591.75,-164 585.75,-158 585.75,-152 585.75,-152 585.75,-127.5 585.75,-127.5 585.75,-121.5 591.75,-115.5 597.75,-115.5 597.75,-115.5 750.25,-115.5 750.25,-115.5 756.25,-115.5 762.25,-121.5 762.25,-127.5 762.25,-127.5 762.25,-152 762.25,-152 762.25,-158 756.25,-164 750.25,-164"/>
|
|
228
|
+
<text xml:space="preserve" text-anchor="middle" x="674" y="-149.55" font-family="sans-Serif" font-size="11.00" fill="#0f172a">Dispatch tools</text>
|
|
229
|
+
<text xml:space="preserve" text-anchor="middle" x="674" y="-136.05" font-family="sans-Serif" font-size="11.00" fill="#0f172a">shell · pwn_eval · CORE_TOOLS</text>
|
|
230
|
+
<text xml:space="preserve" text-anchor="middle" x="674" y="-122.55" font-family="sans-Serif" font-size="11.00" fill="#0f172a">own REPL lines</text>
|
|
221
231
|
</g>
|
|
222
232
|
<!-- EmitB->Tools -->
|
|
223
|
-
<g id="
|
|
233
|
+
<g id="edge15" class="edge">
|
|
224
234
|
<title>EmitB->Tools</title>
|
|
225
|
-
<path fill="none" stroke="#f59e0b" stroke-width="1.3" d="
|
|
226
|
-
<polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="
|
|
235
|
+
<path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M824.93,-398.25C795.28,-347.66 726.35,-230.07 692.89,-172.98"/>
|
|
236
|
+
<polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="695.49,-171.87 689.03,-166.39 690.66,-174.7 695.49,-171.87"/>
|
|
227
237
|
</g>
|
|
228
238
|
<!-- EmitB->UI -->
|
|
229
|
-
<g id="
|
|
239
|
+
<g id="edge14" class="edge">
|
|
230
240
|
<title>EmitB->UI</title>
|
|
231
|
-
<path fill="none" stroke="#38bdf8" stroke-width="2" d="
|
|
232
|
-
<polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="2" points="
|
|
241
|
+
<path fill="none" stroke="#38bdf8" stroke-width="2" d="M887.97,-398.16C977.62,-353.65 1160.71,-260.68 1180,-234.5 1218.25,-182.59 1224.38,-104.67 1224.37,-60.02"/>
|
|
242
|
+
<polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="2" points="1227.18,-60.15 1224.29,-52.18 1221.58,-60.21 1227.18,-60.15"/>
|
|
233
243
|
</g>
|
|
234
244
|
<!-- Skip->Tools -->
|
|
235
|
-
<g id="
|
|
245
|
+
<g id="edge16" class="edge">
|
|
236
246
|
<title>Skip->Tools</title>
|
|
237
|
-
<path fill="none" stroke="#94a3b8" stroke-width="1.3" stroke-dasharray="5,2" d="
|
|
238
|
-
<polygon fill="#94a3b8" stroke="#94a3b8" stroke-width="1.3" points="
|
|
247
|
+
<path fill="none" stroke="#94a3b8" stroke-width="1.3" stroke-dasharray="5,2" d="M692.75,-404.64C689.48,-358.67 680.66,-234.46 676.38,-174.3"/>
|
|
248
|
+
<polygon fill="#94a3b8" stroke="#94a3b8" stroke-width="1.3" points="679.19,-174.27 675.83,-166.49 673.6,-174.67 679.19,-174.27"/>
|
|
239
249
|
</g>
|
|
240
250
|
<!-- Rec -->
|
|
241
|
-
<g id="
|
|
251
|
+
<g id="node15" class="node">
|
|
242
252
|
<title>Rec</title>
|
|
243
|
-
<path fill="#fcd34d" stroke="#334155" stroke-width="1.4" d="
|
|
244
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
245
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
246
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
253
|
+
<path fill="#fcd34d" stroke="#334155" stroke-width="1.4" d="M952.62,-164C952.62,-164 853.38,-164 853.38,-164 847.38,-164 841.38,-158 841.38,-152 841.38,-152 841.38,-127.5 841.38,-127.5 841.38,-121.5 847.38,-115.5 853.38,-115.5 853.38,-115.5 952.62,-115.5 952.62,-115.5 958.62,-115.5 964.62,-121.5 964.62,-127.5 964.62,-127.5 964.62,-152 964.62,-152 964.62,-158 958.62,-164 952.62,-164"/>
|
|
254
|
+
<text xml:space="preserve" text-anchor="middle" x="903" y="-149.55" font-family="sans-Serif" font-size="11.00" fill="#0f172a">record!</text>
|
|
255
|
+
<text xml:space="preserve" text-anchor="middle" x="903" y="-136.05" font-family="sans-Serif" font-size="11.00" fill="#0f172a">advance plan_idx</text>
|
|
256
|
+
<text xml:space="preserve" text-anchor="middle" x="903" y="-122.55" font-family="sans-Serif" font-size="11.00" fill="#0f172a">(silent unless verbose)</text>
|
|
247
257
|
</g>
|
|
248
258
|
<!-- Tools->Rec -->
|
|
249
|
-
<g id="
|
|
259
|
+
<g id="edge17" class="edge">
|
|
250
260
|
<title>Tools->Rec</title>
|
|
251
|
-
<path fill="none" stroke="#f59e0b" stroke-width="1.3" d="
|
|
252
|
-
<polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="
|
|
261
|
+
<path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M762.56,-139.75C785.36,-139.75 808.16,-139.75 830.96,-139.75"/>
|
|
262
|
+
<polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="830.77,-142.55 838.77,-139.75 830.77,-136.95 830.77,-142.55"/>
|
|
253
263
|
</g>
|
|
254
264
|
<!-- Rec->About -->
|
|
255
|
-
<g id="
|
|
265
|
+
<g id="edge18" class="edge">
|
|
256
266
|
<title>Rec->About</title>
|
|
257
|
-
<path fill="none" stroke="#94a3b8" stroke-width="1.3" stroke-dasharray="5,2" d="
|
|
258
|
-
<polygon fill="#94a3b8" stroke="#94a3b8" stroke-width="1.3" points="155.
|
|
259
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
267
|
+
<path fill="none" stroke="#94a3b8" stroke-width="1.3" stroke-dasharray="5,2" d="M878.59,-164.47C855.47,-185.69 818.9,-216.2 782,-234.5 753.41,-248.68 330.83,-358.06 155.93,-403.03"/>
|
|
268
|
+
<polygon fill="#94a3b8" stroke="#94a3b8" stroke-width="1.3" points="155.49,-400.25 148.44,-404.96 156.88,-405.68 155.49,-400.25"/>
|
|
269
|
+
<text xml:space="preserve" text-anchor="middle" x="774.6" y="-278.2" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">next batch</text>
|
|
260
270
|
</g>
|
|
261
271
|
<!-- Flush -->
|
|
262
|
-
<g id="
|
|
272
|
+
<g id="node16" class="node">
|
|
263
273
|
<title>Flush</title>
|
|
264
|
-
<path fill="#fcd34d" stroke="#334155" stroke-width="1.4" d="
|
|
265
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
266
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
274
|
+
<path fill="#fcd34d" stroke="#334155" stroke-width="1.4" d="M1149.75,-157.75C1149.75,-157.75 1060.25,-157.75 1060.25,-157.75 1054.25,-157.75 1048.25,-151.75 1048.25,-145.75 1048.25,-145.75 1048.25,-133.75 1048.25,-133.75 1048.25,-127.75 1054.25,-121.75 1060.25,-121.75 1060.25,-121.75 1149.75,-121.75 1149.75,-121.75 1155.75,-121.75 1161.75,-127.75 1161.75,-133.75 1161.75,-133.75 1161.75,-145.75 1161.75,-145.75 1161.75,-151.75 1155.75,-157.75 1149.75,-157.75"/>
|
|
275
|
+
<text xml:space="preserve" text-anchor="middle" x="1105" y="-142.8" font-family="sans-Serif" font-size="11.00" fill="#0f172a">flush! / emit!</text>
|
|
276
|
+
<text xml:space="preserve" text-anchor="middle" x="1105" y="-129.3" font-family="sans-Serif" font-size="11.00" fill="#0f172a">optional closing brief</text>
|
|
267
277
|
</g>
|
|
268
278
|
<!-- Rec->Flush -->
|
|
269
|
-
<g id="
|
|
279
|
+
<g id="edge19" class="edge">
|
|
270
280
|
<title>Rec->Flush</title>
|
|
271
|
-
<path fill="none" stroke="#f59e0b" stroke-width="1.3" d="
|
|
272
|
-
<polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="
|
|
273
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
281
|
+
<path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M965.25,-139.75C988.28,-139.75 1014.47,-139.75 1037.91,-139.75"/>
|
|
282
|
+
<polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="1037.8,-142.55 1045.8,-139.75 1037.8,-136.95 1037.8,-142.55"/>
|
|
283
|
+
<text xml:space="preserve" text-anchor="middle" x="1006.44" y="-144.7" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">end of turn</text>
|
|
274
284
|
</g>
|
|
275
285
|
<!-- Flush->UI -->
|
|
276
|
-
<g id="
|
|
286
|
+
<g id="edge20" class="edge">
|
|
277
287
|
<title>Flush->UI</title>
|
|
278
|
-
<path fill="none" stroke="#38bdf8" stroke-width="1.3" stroke-dasharray="5,2" d="
|
|
279
|
-
<polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="1.3" points="
|
|
288
|
+
<path fill="none" stroke="#38bdf8" stroke-width="1.3" stroke-dasharray="5,2" d="M1123.18,-121.26C1141.3,-103.83 1169.5,-76.71 1191.31,-55.73"/>
|
|
289
|
+
<polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="1.3" points="1193.2,-57.8 1197.02,-50.24 1189.31,-53.77 1193.2,-57.8"/>
|
|
280
290
|
</g>
|
|
281
291
|
</g>
|
|
282
292
|
</svg>
|