pwn 0.5.705 → 0.5.707
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/Gemfile +1 -1
- data/documentation/Reporting.md +1 -0
- data/etc/default_skills/pwn/reports/SKILL.md +4 -2
- data/etc/default_skills/pwn/reports/csv/SKILL.md +47 -0
- data/etc/default_skills/pwn/reports/html/SKILL.md +47 -0
- data/etc/default_skills/pwn/reports/json/SKILL.md +47 -0
- data/etc/default_skills/pwn/reports/markdown/SKILL.md +47 -0
- data/etc/default_skills/pwn/reports/pdf/SKILL.md +47 -0
- data/etc/default_skills/pwn/reports/xml/SKILL.md +47 -0
- data/lib/pwn/ai/agent/curriculum.rb +22 -20
- data/lib/pwn/ai/agent/learning.rb +3 -10
- data/lib/pwn/ai/agent/loop.rb +243 -52
- data/lib/pwn/ai/agent/policy.rb +23 -5
- data/lib/pwn/ai/agent/reward.rb +11 -23
- data/lib/pwn/ai/agent/turn_finalizer.rb +0 -1
- data/lib/pwn/reports/ai_red_team.rb +1 -1
- data/lib/pwn/reports/csv.rb +38 -0
- data/lib/pwn/reports/fuzz.rb +1 -1
- data/lib/pwn/reports/html.rb +58 -0
- data/lib/pwn/reports/json.rb +32 -0
- data/lib/pwn/reports/markdown.rb +40 -0
- data/lib/pwn/reports/pdf.rb +93 -0
- data/lib/pwn/reports/phone.rb +1 -1
- data/lib/pwn/reports/sast.rb +1 -1
- data/lib/pwn/reports/uri_buster.rb +1 -1
- data/lib/pwn/reports/xml.rb +44 -0
- data/lib/pwn/reports.rb +54 -6
- data/lib/pwn/version.rb +1 -1
- data/spec/integration/reinforced_feedback_loop_spec.rb +19 -4
- data/spec/lib/pwn/ai/agent/loop_spec.rb +166 -10
- data/spec/lib/pwn/ai/agent/policy_spec.rb +12 -2
- data/spec/lib/pwn/ai/agent/reward_spec.rb +72 -0
- data/spec/lib/pwn/reports/csv_spec.rb +19 -0
- data/spec/lib/pwn/reports/formats_spec.rb +90 -0
- data/spec/lib/pwn/reports/html_spec.rb +19 -0
- data/spec/lib/pwn/reports/json_spec.rb +19 -0
- data/spec/lib/pwn/reports/markdown_spec.rb +19 -0
- data/spec/lib/pwn/reports/pdf_spec.rb +19 -0
- data/spec/lib/pwn/reports/xml_spec.rb +19 -0
- data/third_party/pwn_rdoc.jsonl +46 -1
- metadata +22 -3
|
@@ -131,13 +131,23 @@ describe PWN::AI::Agent::Policy do
|
|
|
131
131
|
grind = described_class.observe_step(
|
|
132
132
|
action: 'shell', ok: true, session_id: 'en_credit', ts_state: ts
|
|
133
133
|
)
|
|
134
|
-
|
|
135
|
-
|
|
134
|
+
poc = "/tmp/pwn-policy-#{Process.pid}.poc"
|
|
135
|
+
File.write(poc, 'poc')
|
|
136
|
+
Thread.current[:pwn_loop_deliverables] = {
|
|
137
|
+
paths: [],
|
|
138
|
+
min_seconds: 0,
|
|
139
|
+
skills: [],
|
|
140
|
+
proofs: [poc],
|
|
141
|
+
hosts: [],
|
|
142
|
+
techniques: []
|
|
143
|
+
}
|
|
136
144
|
advance = described_class.observe_step(
|
|
137
145
|
action: 'shell', ok: true, session_id: 'en_credit', ts_state: ts
|
|
138
146
|
)
|
|
139
147
|
expect(advance[:reward].to_f).to be > grind[:reward].to_f
|
|
140
148
|
ensure
|
|
149
|
+
FileUtils.rm_f(poc) if defined?(poc)
|
|
150
|
+
Thread.current[:pwn_loop_deliverables] = nil
|
|
141
151
|
described_class.reset
|
|
142
152
|
FileUtils.remove_entry(tmp) if tmp && Dir.exist?(tmp)
|
|
143
153
|
end
|
|
@@ -328,3 +328,75 @@ describe PWN::AI::Agent::Reward do
|
|
|
328
328
|
expect(src).to include('quiet: true')
|
|
329
329
|
end
|
|
330
330
|
end
|
|
331
|
+
|
|
332
|
+
describe 'PWN::AI::Agent::Reward vs TUI plan' do
|
|
333
|
+
it 'does not let a TUI plan_cover_low haircut a high-evidence original-request answer' do
|
|
334
|
+
stub_const('PWN::AI::Agent::Reward::SENTINEL_FILE', File.join(Dir.mktmpdir, 's.json'))
|
|
335
|
+
allow(PWN::AI::Agent::Reward).to receive(:reflect_available?).and_return(false)
|
|
336
|
+
plan = [
|
|
337
|
+
'Load and review rules of engagement, submission criteria, and the full in-scope subdomain list',
|
|
338
|
+
'Inventory applicable unauthenticated testing skills and techniques',
|
|
339
|
+
'Enumerate and resolve all in-scope subdomains and map reachable services',
|
|
340
|
+
'Fingerprint stacks, configurations, and exposure on every subdomain',
|
|
341
|
+
'Run exhaustive unauthenticated analysis across the full attack surface',
|
|
342
|
+
'Prioritize and deep-dive each promising lead to confirm exploitability',
|
|
343
|
+
'Develop evidence-backed proof-of-concept demonstrations',
|
|
344
|
+
'Combine related weaknesses into higher-impact attack chains',
|
|
345
|
+
'Assign evidence-backed severity and filter to submission-eligible issues',
|
|
346
|
+
'Use graphical applications where they improve validation',
|
|
347
|
+
'Compile submission-ready writeups with reproduction steps',
|
|
348
|
+
'Re-verify each finding still reproduces and present the final set'
|
|
349
|
+
]
|
|
350
|
+
final = <<~TXT
|
|
351
|
+
Path-backed answer for the original request. Hosts scanned: 10.9.8.7 and 10.9.8.8.
|
|
352
|
+
Verified complete. Evidence in /tmp/pwn-eval-hosts.json. 12 hosts live. rspec passed.
|
|
353
|
+
TXT
|
|
354
|
+
klass = PWN::AI::Agent::Reward
|
|
355
|
+
v = klass.judge(
|
|
356
|
+
request: 'what live hosts can you find on this box and write /tmp/pwn-eval-hosts.json',
|
|
357
|
+
final: final,
|
|
358
|
+
plan: plan,
|
|
359
|
+
trace: [
|
|
360
|
+
'{"success":true,"result":{"stdout":"10.9.8.7 up","exit":0},"effect":"eval"}',
|
|
361
|
+
'{"success":true,"result":{"stdout":"wrote /tmp/pwn-eval-hosts.json","exit":0},"effect":"write"}'
|
|
362
|
+
],
|
|
363
|
+
commit: false
|
|
364
|
+
)
|
|
365
|
+
expect(v[:source].to_s).to eq 'heuristic'
|
|
366
|
+
expect(v[:score]).to be >= 0.6
|
|
367
|
+
expect(v[:verdict].to_s).to eq 'solved'
|
|
368
|
+
args = {
|
|
369
|
+
request: 'what live hosts can you find on this box and write /tmp/pwn-eval-hosts.json',
|
|
370
|
+
final: final,
|
|
371
|
+
trace: [
|
|
372
|
+
'{"success":true,"result":{"stdout":"10.9.8.7 up","exit":0},"effect":"eval"}',
|
|
373
|
+
'{"success":true,"result":{"stdout":"wrote /tmp/pwn-eval-hosts.json","exit":0},"effect":"write"}'
|
|
374
|
+
]
|
|
375
|
+
}
|
|
376
|
+
base = klass.send(:evidence_prior, **args)
|
|
377
|
+
mixed = klass.send(:evidence_prior, **args, plan: plan)
|
|
378
|
+
expect(mixed[:score]).to eq(base[:score])
|
|
379
|
+
end
|
|
380
|
+
|
|
381
|
+
it 'always grades the original request even when a stub compass or TUI plan is supplied' do
|
|
382
|
+
stub_const('PWN::AI::Agent::Reward::SENTINEL_FILE', File.join(Dir.mktmpdir, 's.json'))
|
|
383
|
+
allow(PWN::AI::Agent::Reward).to receive(:reflect_available?).and_return(false)
|
|
384
|
+
klass = PWN::AI::Agent::Reward
|
|
385
|
+
src = File.read(klass.method(:judge).source_location.first)
|
|
386
|
+
expect(src).not_to include('llm_judge(request: request, final: final, trace: trace, plan: opts[:plan])')
|
|
387
|
+
expect(src).not_to include('heuristic_judge(request: request, final: final, trace: trace, plan: opts[:plan])')
|
|
388
|
+
request = 'using hping3 what live hosts can you find in this subnet and write /tmp/x.json'
|
|
389
|
+
final = 'Live hosts: 10.1.2.3. Verified. Wrote /tmp/x.json. 4 hosts up. rspec passed.'
|
|
390
|
+
trace = [
|
|
391
|
+
'{"success":true,"result":{"stdout":"10.1.2.3 up","exit":0},"effect":"eval"}',
|
|
392
|
+
'{"success":true,"result":{"stdout":"wrote /tmp/x.json","exit":0},"effect":"write"}'
|
|
393
|
+
]
|
|
394
|
+
a = klass.judge(request: request, final: final, trace: trace, commit: false)
|
|
395
|
+
b = klass.judge(request: request, final: final, trace: trace, plan: ['Carry out the core work'], commit: false)
|
|
396
|
+
c = klass.judge(request: request, final: final, trace: trace, plan: ['Enumerate subdomains', 'Compile writeups'], commit: false)
|
|
397
|
+
expect(a[:score]).to eq(b[:score])
|
|
398
|
+
expect(b[:score]).to eq(c[:score])
|
|
399
|
+
expect(a[:score]).to be >= 0.6
|
|
400
|
+
expect(a[:verdict].to_s).to eq('solved')
|
|
401
|
+
end
|
|
402
|
+
end
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'spec_helper'
|
|
4
|
+
|
|
5
|
+
describe PWN::Reports::CSV do
|
|
6
|
+
it 'should display information for authors' do
|
|
7
|
+
authors_response = PWN::Reports::CSV
|
|
8
|
+
expect(authors_response).to respond_to :authors
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
it 'should display information for existing help method' do
|
|
12
|
+
help_response = PWN::Reports::CSV
|
|
13
|
+
expect(help_response).to respond_to :help
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
it 'should respond to generate' do
|
|
17
|
+
expect(PWN::Reports::CSV).to respond_to :generate
|
|
18
|
+
end
|
|
19
|
+
end
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'spec_helper'
|
|
4
|
+
require 'json'
|
|
5
|
+
require 'csv'
|
|
6
|
+
require 'tmpdir'
|
|
7
|
+
|
|
8
|
+
describe 'PWN::Reports format generators' do
|
|
9
|
+
let(:payload) do
|
|
10
|
+
{
|
|
11
|
+
title: 'PWN Format Spec',
|
|
12
|
+
report_name: 'pwn_format_spec',
|
|
13
|
+
executive_summary: 'One finding.',
|
|
14
|
+
findings: [
|
|
15
|
+
{
|
|
16
|
+
id: 'CFG-001',
|
|
17
|
+
title: 'Missing Security Headers',
|
|
18
|
+
severity: 'Low',
|
|
19
|
+
cvss: 4.3,
|
|
20
|
+
description: 'No X-Frame-Options',
|
|
21
|
+
poc: 'GET /',
|
|
22
|
+
recommendation: 'Add headers'
|
|
23
|
+
}
|
|
24
|
+
]
|
|
25
|
+
}
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
{
|
|
29
|
+
PDF: { ext: 'pdf', const: 'PDF' },
|
|
30
|
+
HTML: { ext: 'html', const: 'HTML' },
|
|
31
|
+
Markdown: { ext: 'md', const: 'Markdown' },
|
|
32
|
+
XML: { ext: 'xml', const: 'XML' },
|
|
33
|
+
CSV: { ext: 'csv', const: 'CSV' },
|
|
34
|
+
JSON: { ext: 'json', const: 'JSON' }
|
|
35
|
+
}.each do |label, meta|
|
|
36
|
+
describe "PWN::Reports::#{meta[:const]}" do
|
|
37
|
+
it 'responds to generate, authors, and help' do
|
|
38
|
+
klass = PWN::Reports.const_get(meta[:const])
|
|
39
|
+
expect(klass).to respond_to(:generate)
|
|
40
|
+
expect(klass).to respond_to(:authors)
|
|
41
|
+
expect(klass).to respond_to(:help)
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
it "writes a .#{meta[:ext]} report via generate" do
|
|
45
|
+
klass = PWN::Reports.const_get(meta[:const])
|
|
46
|
+
Dir.mktmpdir('pwn_report_fmt') do |dir|
|
|
47
|
+
path = klass.generate(
|
|
48
|
+
dir_path: dir,
|
|
49
|
+
report_name: 'pwn_format_spec',
|
|
50
|
+
results_hash: payload
|
|
51
|
+
)
|
|
52
|
+
expect(path).to eq(File.join(dir, "pwn_format_spec.#{meta[:ext]}"))
|
|
53
|
+
expect(File.file?(path)).to eq(true)
|
|
54
|
+
expect(File.size(path)).to be > 0
|
|
55
|
+
body = File.binread(path)
|
|
56
|
+
case label
|
|
57
|
+
when :PDF
|
|
58
|
+
expect(body.start_with?('%PDF')).to eq(true)
|
|
59
|
+
when :HTML
|
|
60
|
+
expect(body).to match(/<!DOCTYPE html>/i)
|
|
61
|
+
expect(body).to include('Missing Security Headers')
|
|
62
|
+
when :Markdown
|
|
63
|
+
expect(body).to include('# PWN Format Spec')
|
|
64
|
+
expect(body).to include('Missing Security Headers')
|
|
65
|
+
when :XML
|
|
66
|
+
expect(body).to include('<?xml')
|
|
67
|
+
expect(body).to include('Missing Security Headers')
|
|
68
|
+
when :CSV
|
|
69
|
+
rows = CSV.parse(body)
|
|
70
|
+
expect(rows.first).to include('title')
|
|
71
|
+
expect(body).to include('Missing Security Headers')
|
|
72
|
+
when :JSON
|
|
73
|
+
parsed = JSON.parse(body)
|
|
74
|
+
expect(parsed['title']).to eq('PWN Format Spec')
|
|
75
|
+
expect(parsed['findings'].first['id']).to eq('CFG-001')
|
|
76
|
+
end
|
|
77
|
+
end
|
|
78
|
+
end
|
|
79
|
+
end
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
it 'honours an explicit path: override' do
|
|
83
|
+
Dir.mktmpdir('pwn_report_path') do |dir|
|
|
84
|
+
out = File.join(dir, 'custom.json')
|
|
85
|
+
path = PWN::Reports::JSON.generate(path: out, results_hash: payload)
|
|
86
|
+
expect(path).to eq(out)
|
|
87
|
+
expect(JSON.parse(File.read(out))['title']).to eq('PWN Format Spec')
|
|
88
|
+
end
|
|
89
|
+
end
|
|
90
|
+
end
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'spec_helper'
|
|
4
|
+
|
|
5
|
+
describe PWN::Reports::HTML do
|
|
6
|
+
it 'should display information for authors' do
|
|
7
|
+
authors_response = PWN::Reports::HTML
|
|
8
|
+
expect(authors_response).to respond_to :authors
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
it 'should display information for existing help method' do
|
|
12
|
+
help_response = PWN::Reports::HTML
|
|
13
|
+
expect(help_response).to respond_to :help
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
it 'should respond to generate' do
|
|
17
|
+
expect(PWN::Reports::HTML).to respond_to :generate
|
|
18
|
+
end
|
|
19
|
+
end
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'spec_helper'
|
|
4
|
+
|
|
5
|
+
describe PWN::Reports::JSON do
|
|
6
|
+
it 'should display information for authors' do
|
|
7
|
+
authors_response = PWN::Reports::JSON
|
|
8
|
+
expect(authors_response).to respond_to :authors
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
it 'should display information for existing help method' do
|
|
12
|
+
help_response = PWN::Reports::JSON
|
|
13
|
+
expect(help_response).to respond_to :help
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
it 'should respond to generate' do
|
|
17
|
+
expect(PWN::Reports::JSON).to respond_to :generate
|
|
18
|
+
end
|
|
19
|
+
end
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'spec_helper'
|
|
4
|
+
|
|
5
|
+
describe PWN::Reports::Markdown do
|
|
6
|
+
it 'should display information for authors' do
|
|
7
|
+
authors_response = PWN::Reports::Markdown
|
|
8
|
+
expect(authors_response).to respond_to :authors
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
it 'should display information for existing help method' do
|
|
12
|
+
help_response = PWN::Reports::Markdown
|
|
13
|
+
expect(help_response).to respond_to :help
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
it 'should respond to generate' do
|
|
17
|
+
expect(PWN::Reports::Markdown).to respond_to :generate
|
|
18
|
+
end
|
|
19
|
+
end
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'spec_helper'
|
|
4
|
+
|
|
5
|
+
describe PWN::Reports::PDF do
|
|
6
|
+
it 'should display information for authors' do
|
|
7
|
+
authors_response = PWN::Reports::PDF
|
|
8
|
+
expect(authors_response).to respond_to :authors
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
it 'should display information for existing help method' do
|
|
12
|
+
help_response = PWN::Reports::PDF
|
|
13
|
+
expect(help_response).to respond_to :help
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
it 'should respond to generate' do
|
|
17
|
+
expect(PWN::Reports::PDF).to respond_to :generate
|
|
18
|
+
end
|
|
19
|
+
end
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'spec_helper'
|
|
4
|
+
|
|
5
|
+
describe PWN::Reports::XML do
|
|
6
|
+
it 'should display information for authors' do
|
|
7
|
+
authors_response = PWN::Reports::XML
|
|
8
|
+
expect(authors_response).to respond_to :authors
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
it 'should display information for existing help method' do
|
|
12
|
+
help_response = PWN::Reports::XML
|
|
13
|
+
expect(help_response).to respond_to :help
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
it 'should respond to generate' do
|
|
17
|
+
expect(PWN::Reports::XML).to respond_to :generate
|
|
18
|
+
end
|
|
19
|
+
end
|
data/third_party/pwn_rdoc.jsonl
CHANGED
|
@@ -40,6 +40,7 @@
|
|
|
40
40
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Curriculum.ollama_create Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Curriculum.ollama_create`: "}]}
|
|
41
41
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Curriculum.practice Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Curriculum.practice`: "}]}
|
|
42
42
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Curriculum.practice_kpi Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Curriculum.practice_kpi`: "}]}
|
|
43
|
+
{"messages":[{"role":"user","content":"PWN::AI::Agent::Curriculum.practice_poc_ok? Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Curriculum.practice_poc_ok?`: "}]}
|
|
43
44
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Curriculum.practice_skip? Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Curriculum.practice_skip?`: "}]}
|
|
44
45
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Curriculum.preference_balance Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Curriculum.preference_balance`: "}]}
|
|
45
46
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Curriculum.preference_diet_gate Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Curriculum.preference_diet_gate`: "}]}
|
|
@@ -309,6 +310,7 @@
|
|
|
309
310
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Learning.update_skill Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Learning.update_skill`: "}]}
|
|
310
311
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Learning.verdict_for_score Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Learning.verdict_for_score`: "}]}
|
|
311
312
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Learning.weighted_judge_mean Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Learning.weighted_judge_mean`: "}]}
|
|
313
|
+
{"messages":[{"role":"user","content":"PWN::AI::Agent::Loop.abs_paths Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Loop.abs_paths`: "}]}
|
|
312
314
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Loop.active_engine Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Loop.active_engine`: "}]}
|
|
313
315
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Loop.agent_flag Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Loop.agent_flag`: "}]}
|
|
314
316
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Loop.answer_greeting Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Loop.answer_greeting`: "}]}
|
|
@@ -327,6 +329,7 @@
|
|
|
327
329
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Loop.call_engine Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Loop.call_engine`: Supported Method Parameters\n\nmsg = PWN::AI::Agent::Loop.call_engine(\n\nmessages: 'required - OpenAI-format messages array',\ntools: 'optional - OpenAI tools array'\n\n)\n\nReturns a normalised assistant message hash:\n\n{ role: 'assistant', content: String|nil,\n tool_calls: [ {id:, type:'function', function:{name:, arguments:}} ],\n _native_content: <provider raw> (when adapter needs round-trip) }\n"}]}
|
|
328
330
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Loop.catalog_lookup? Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Loop.catalog_lookup?`: "}]}
|
|
329
331
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Loop.chat_response_history Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Loop.chat_response_history`: "}]}
|
|
332
|
+
{"messages":[{"role":"user","content":"PWN::AI::Agent::Loop.checkpoint_result Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Loop.checkpoint_result`: "}]}
|
|
330
333
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Loop.compact_history! Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Loop.compact_history!`: "}]}
|
|
331
334
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Loop.debug_final_text! Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Loop.debug_final_text!`: "}]}
|
|
332
335
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Loop.debug_msgs_line Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Loop.debug_msgs_line`: "}]}
|
|
@@ -335,8 +338,15 @@
|
|
|
335
338
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Loop.debug_snippet Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Loop.debug_snippet`: "}]}
|
|
336
339
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Loop.debug_tool_io! Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Loop.debug_tool_io!`: "}]}
|
|
337
340
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Loop.debug_tools_line Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Loop.debug_tools_line`: "}]}
|
|
341
|
+
{"messages":[{"role":"user","content":"PWN::AI::Agent::Loop.declared_contract Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Loop.declared_contract`: "}]}
|
|
342
|
+
{"messages":[{"role":"user","content":"PWN::AI::Agent::Loop.declared_contract_unsatisfied? Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Loop.declared_contract_unsatisfied?`: "}]}
|
|
343
|
+
{"messages":[{"role":"user","content":"PWN::AI::Agent::Loop.declared_deliverables Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Loop.declared_deliverables`: "}]}
|
|
344
|
+
{"messages":[{"role":"user","content":"PWN::AI::Agent::Loop.declared_hosts_missing? Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Loop.declared_hosts_missing?`: "}]}
|
|
345
|
+
{"messages":[{"role":"user","content":"PWN::AI::Agent::Loop.declared_min_seconds Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Loop.declared_min_seconds`: "}]}
|
|
346
|
+
{"messages":[{"role":"user","content":"PWN::AI::Agent::Loop.declared_skills_missing? Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Loop.declared_skills_missing?`: "}]}
|
|
338
347
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Loop.default_interactive_toolsets Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Loop.default_interactive_toolsets`: "}]}
|
|
339
348
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Loop.degrade_text_only Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Loop.degrade_text_only`: "}]}
|
|
349
|
+
{"messages":[{"role":"user","content":"PWN::AI::Agent::Loop.deliverable_missing? Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Loop.deliverable_missing?`: "}]}
|
|
340
350
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Loop.dispatch_fail_n Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Loop.dispatch_fail_n`: "}]}
|
|
341
351
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Loop.duration_unsatisfied? Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Loop.duration_unsatisfied?`: "}]}
|
|
342
352
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Loop.emit_task_summary Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Loop.emit_task_summary`: "}]}
|
|
@@ -349,6 +359,7 @@
|
|
|
349
359
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Loop.guard_repeated_failure Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Loop.guard_repeated_failure`: "}]}
|
|
350
360
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Loop.help Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Loop.help`: "}]}
|
|
351
361
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Loop.incomplete_final? Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Loop.incomplete_final?`: "}]}
|
|
362
|
+
{"messages":[{"role":"user","content":"PWN::AI::Agent::Loop.infer_deliverables Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Loop.infer_deliverables`: "}]}
|
|
352
363
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Loop.inject_task_focus! Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Loop.inject_task_focus!`: "}]}
|
|
353
364
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Loop.local_engine? Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Loop.local_engine?`: "}]}
|
|
354
365
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Loop.loud_debug_tui! Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Loop.loud_debug_tui!`: "}]}
|
|
@@ -361,12 +372,14 @@
|
|
|
361
372
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Loop.mistake_ts Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Loop.mistake_ts`: "}]}
|
|
362
373
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Loop.needs_host_work? Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Loop.needs_host_work?`: "}]}
|
|
363
374
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Loop.no_progress_result Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Loop.no_progress_result`: "}]}
|
|
375
|
+
{"messages":[{"role":"user","content":"PWN::AI::Agent::Loop.normalize_contract Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Loop.normalize_contract`: "}]}
|
|
364
376
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Loop.normalize_llm Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Loop.normalize_llm`: Supported Method Parameters\n\nmsg = PWN::AI::Agent::Loop.normalize_llm(\n\nresponse: 'required - chat_with_tools response Hash from any provider'\n\n)\n"}]}
|
|
365
377
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Loop.note_same_payload! Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Loop.note_same_payload!`: "}]}
|
|
366
378
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Loop.ollama_wire_messages Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Loop.ollama_wire_messages`: Supported Method Parameters\n\nwire = PWN::AI::Agent::Loop.ollama_wire_messages(\n\nmessages: 'required - in-memory OpenAI-ish messages (may have String args)'\n\n)\n\nReturns a deep-copied array safe for Ollama / Open WebUI ollama/api/chat:\n\nparses JSON-string function.arguments into Hash/Array objects\n\ncoerces nil assistant content to ” when tool_calls present (Open WebUI GenerateChatCompletionForm rejects content:null alone)\n\ndrops _native_content / _text_tool_coerced / thinking private keys\n\nstringifies Hash/Array message content (tool results) to JSON text\n\n"}]}
|
|
367
379
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Loop.ollama_wire_tool_call Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Loop.ollama_wire_tool_call`: "}]}
|
|
368
380
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Loop.openai_wire_messages Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Loop.openai_wire_messages`: Supported Method Parameters\n\nwire = PWN::AI::Agent::Loop.openai_wire_messages(\n\nmessages: 'required - in-memory OpenAI-ish messages (may have Hash args / internal keys)'\n\n)\n\nReturns a deep-copied array safe for OpenAI / xAI chat.completions:\n\ndrops _native_content / _text_tool_coerced / thinking private keys\n\nstringifies function.arguments maps\n\ncoerces Hash/non-string content to JSON/string (nil kept for assistant tool turns)\n\n"}]}
|
|
369
381
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Loop.openai_wire_tool_call Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Loop.openai_wire_tool_call`: "}]}
|
|
382
|
+
{"messages":[{"role":"user","content":"PWN::AI::Agent::Loop.parse_contract Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Loop.parse_contract`: "}]}
|
|
370
383
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Loop.parse_tool_arguments Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Loop.parse_tool_arguments`: "}]}
|
|
371
384
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Loop.payload_sig Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Loop.payload_sig`: "}]}
|
|
372
385
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Loop.plan_first Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Loop.plan_first`: "}]}
|
|
@@ -381,6 +394,8 @@
|
|
|
381
394
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Loop.run Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Loop.run`: Supported Method Parameters\n\nfinal = PWN::AI::Agent::Loop.run(\n\nrequest: 'required - what the human typed',\nsession_id: 'optional - PWN::Sessions id (transcript is appended to it)',\nenabled_toolsets: 'optional - subset of Registry.toolsets, or nil for all',\non_tool: 'optional - ->(name, args, result) callback for live UI',\nsystem_role_content: 'optional - override default system prompt (built from session_id if not provided)'\n\n)\n"}]}
|
|
382
395
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Loop.session_chat_history Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Loop.session_chat_history`: "}]}
|
|
383
396
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Loop.should_auto_introspect? Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Loop.should_auto_introspect?`: "}]}
|
|
397
|
+
{"messages":[{"role":"user","content":"PWN::AI::Agent::Loop.spill_tool_body Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Loop.spill_tool_body`: "}]}
|
|
398
|
+
{"messages":[{"role":"user","content":"PWN::AI::Agent::Loop.spill_tool_history! Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Loop.spill_tool_history!`: "}]}
|
|
384
399
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Loop.stamped_effect Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Loop.stamped_effect`: "}]}
|
|
385
400
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Loop.start_debug_session Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Loop.start_debug_session`: "}]}
|
|
386
401
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Loop.stringify_tool_arguments Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Loop.stringify_tool_arguments`: "}]}
|
|
@@ -468,6 +483,7 @@
|
|
|
468
483
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Policy.bump_visit! Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Policy.bump_visit!`: "}]}
|
|
469
484
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Policy.cold? Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Policy.cold?`: "}]}
|
|
470
485
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Policy.completeness_bin Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Policy.completeness_bin`: "}]}
|
|
486
|
+
{"messages":[{"role":"user","content":"PWN::AI::Agent::Policy.contract_fields_met Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Policy.contract_fields_met`: "}]}
|
|
471
487
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Policy.current_episode Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Policy.current_episode`: "}]}
|
|
472
488
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Policy.current_state Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Policy.current_state`: "}]}
|
|
473
489
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Policy.detach_episode! Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Policy.detach_episode!`: "}]}
|
|
@@ -2467,20 +2483,45 @@
|
|
|
2467
2483
|
{"messages":[{"role":"user","content":"PWN::Plugins::Zaproxy.stop Usage"},{"role":"assistant","content":"`PWN::Plugins::Zaproxy.stop`: Supported Method Parameters\n\nPWN::Plugins::Zaproxy.stop(\n\nzap_obj: 'required - zap_obj returned from #open method'\n\n)\n"}]}
|
|
2468
2484
|
{"messages":[{"role":"user","content":"PWN::Plugins::Zaproxy.tamper Usage"},{"role":"assistant","content":"`PWN::Plugins::Zaproxy.tamper`: Supported Method Parameters\n\nPWN::Plugins::Zaproxy.tamper(\n\nzap_obj: 'required - zap_obj returned from #open method',\ndomain: 'required - FQDN to tamper (e.g. test.domain.local)',\nenabled: 'optional - boolean (defaults to true)'\n\n)\n"}]}
|
|
2469
2485
|
{"messages":[{"role":"user","content":"PWN::Plugins::Zaproxy.zap_rest_call Usage"},{"role":"assistant","content":"`PWN::Plugins::Zaproxy.zap_rest_call`: Supported Method Parameters\n\nzap_rest_call(\n\nzap_obj: 'required zap_obj returned from #start method',\nrest_call: 'required rest call to make per the schema',\nhttp_method: 'optional HTTP method (defaults to GET)\nhttp_body: 'optional HTTP body sent in HTTP methods that support it e.g. POST'\n\n)\n"}]}
|
|
2470
|
-
{"messages":[{"role":"user","content":"PWN::Reports.authors Usage"},{"role":"assistant","content":"`PWN::Reports.authors`:
|
|
2486
|
+
{"messages":[{"role":"user","content":"PWN::Reports.authors Usage"},{"role":"assistant","content":"`PWN::Reports.authors`: "}]}
|
|
2471
2487
|
{"messages":[{"role":"user","content":"PWN::Reports.help Usage"},{"role":"assistant","content":"`PWN::Reports.help`: "}]}
|
|
2488
|
+
{"messages":[{"role":"user","content":"PWN::Reports.report_payload Usage"},{"role":"assistant","content":"`PWN::Reports.report_payload`: "}]}
|
|
2489
|
+
{"messages":[{"role":"user","content":"PWN::Reports.resolve_path Usage"},{"role":"assistant","content":"`PWN::Reports.resolve_path`: "}]}
|
|
2490
|
+
{"messages":[{"role":"user","content":"PWN::Reports.stringify_keys Usage"},{"role":"assistant","content":"`PWN::Reports.stringify_keys`: "}]}
|
|
2472
2491
|
{"messages":[{"role":"user","content":"PWN::Reports::AIRedTeam.authors Usage"},{"role":"assistant","content":"`PWN::Reports::AIRedTeam.authors`: Author(s)\n\n0day Inc. <support@0dayinc.com>\n"}]}
|
|
2473
2492
|
{"messages":[{"role":"user","content":"PWN::Reports::AIRedTeam.generate Usage"},{"role":"assistant","content":"`PWN::Reports::AIRedTeam.generate`: Supported Method Parameters\n\nPWN::Reports::AIRedTeam.generate(\n\ndir_path: 'optional - Directory path to save the report (defaults to .)',\nresults_hash: 'optional - Hash containing the results of the AI RedTeam analysis (defaults to empty hash structure)',\nreport_name: 'optional - Name of the report file (defaults to current directory name)'\n\n)\n"}]}
|
|
2474
2493
|
{"messages":[{"role":"user","content":"PWN::Reports::AIRedTeam.help Usage"},{"role":"assistant","content":"`PWN::Reports::AIRedTeam.help`: "}]}
|
|
2494
|
+
{"messages":[{"role":"user","content":"PWN::Reports::CSV.authors Usage"},{"role":"assistant","content":"`PWN::Reports::CSV.authors`: "}]}
|
|
2495
|
+
{"messages":[{"role":"user","content":"PWN::Reports::CSV.generate Usage"},{"role":"assistant","content":"`PWN::Reports::CSV.generate`: "}]}
|
|
2496
|
+
{"messages":[{"role":"user","content":"PWN::Reports::CSV.help Usage"},{"role":"assistant","content":"`PWN::Reports::CSV.help`: "}]}
|
|
2475
2497
|
{"messages":[{"role":"user","content":"PWN::Reports::Fuzz.authors Usage"},{"role":"assistant","content":"`PWN::Reports::Fuzz.authors`: Author(s)\n\n0day Inc. <support@0dayinc.com>\n"}]}
|
|
2476
2498
|
{"messages":[{"role":"user","content":"PWN::Reports::Fuzz.generate Usage"},{"role":"assistant","content":"`PWN::Reports::Fuzz.generate`: Supported Method Parameters\n\nPWN::Reports::Fuzz.generate(\n\ndir_path: dir_path,\nresults_hash: results_hash,\nchar_encoding: 'optional - character encoding returned by PWN::Plugins::Char.list_encoders (defaults to UTF-8)'\n\n)\n"}]}
|
|
2477
2499
|
{"messages":[{"role":"user","content":"PWN::Reports::Fuzz.help Usage"},{"role":"assistant","content":"`PWN::Reports::Fuzz.help`: "}]}
|
|
2500
|
+
{"messages":[{"role":"user","content":"PWN::Reports::HTML.authors Usage"},{"role":"assistant","content":"`PWN::Reports::HTML.authors`: "}]}
|
|
2501
|
+
{"messages":[{"role":"user","content":"PWN::Reports::HTML.generate Usage"},{"role":"assistant","content":"`PWN::Reports::HTML.generate`: "}]}
|
|
2502
|
+
{"messages":[{"role":"user","content":"PWN::Reports::HTML.h Usage"},{"role":"assistant","content":"`PWN::Reports::HTML.h`: "}]}
|
|
2503
|
+
{"messages":[{"role":"user","content":"PWN::Reports::HTML.help Usage"},{"role":"assistant","content":"`PWN::Reports::HTML.help`: "}]}
|
|
2504
|
+
{"messages":[{"role":"user","content":"PWN::Reports::HTML.summary_html Usage"},{"role":"assistant","content":"`PWN::Reports::HTML.summary_html`: "}]}
|
|
2478
2505
|
{"messages":[{"role":"user","content":"PWN::Reports::HTMLFooter.authors Usage"},{"role":"assistant","content":"`PWN::Reports::HTMLFooter.authors`: Author(s)\n\n0day Inc. <support@0dayinc.com>\n"}]}
|
|
2479
2506
|
{"messages":[{"role":"user","content":"PWN::Reports::HTMLFooter.generate Usage"},{"role":"assistant","content":"`PWN::Reports::HTMLFooter.generate`: Supported Method Parameters\n\nPWN::Reports::HTMLFooter.generate(\n\ncolumn_names: 'required - array of column names to use in the report table',\ndriver_src_uri: 'required - pwn driver source code uri',\n\n)\n"}]}
|
|
2480
2507
|
{"messages":[{"role":"user","content":"PWN::Reports::HTMLFooter.help Usage"},{"role":"assistant","content":"`PWN::Reports::HTMLFooter.help`: "}]}
|
|
2481
2508
|
{"messages":[{"role":"user","content":"PWN::Reports::HTMLHeader.authors Usage"},{"role":"assistant","content":"`PWN::Reports::HTMLHeader.authors`: Author(s)\n\n0day Inc. <support@0dayinc.com>\n"}]}
|
|
2482
2509
|
{"messages":[{"role":"user","content":"PWN::Reports::HTMLHeader.generate Usage"},{"role":"assistant","content":"`PWN::Reports::HTMLHeader.generate`: Supported Method Parameters\n\nPWN::Reports::HTMLHeader.generate(\n\ncolumn_names: 'required - array of column names to use in the report table',\ndriver_src_uri: 'required - pwn driver source code uri',\n\n)\n"}]}
|
|
2483
2510
|
{"messages":[{"role":"user","content":"PWN::Reports::HTMLHeader.help Usage"},{"role":"assistant","content":"`PWN::Reports::HTMLHeader.help`: "}]}
|
|
2511
|
+
{"messages":[{"role":"user","content":"PWN::Reports::JSON.authors Usage"},{"role":"assistant","content":"`PWN::Reports::JSON.authors`: "}]}
|
|
2512
|
+
{"messages":[{"role":"user","content":"PWN::Reports::JSON.generate Usage"},{"role":"assistant","content":"`PWN::Reports::JSON.generate`: "}]}
|
|
2513
|
+
{"messages":[{"role":"user","content":"PWN::Reports::JSON.help Usage"},{"role":"assistant","content":"`PWN::Reports::JSON.help`: "}]}
|
|
2514
|
+
{"messages":[{"role":"user","content":"PWN::Reports::Markdown.authors Usage"},{"role":"assistant","content":"`PWN::Reports::Markdown.authors`: "}]}
|
|
2515
|
+
{"messages":[{"role":"user","content":"PWN::Reports::Markdown.generate Usage"},{"role":"assistant","content":"`PWN::Reports::Markdown.generate`: "}]}
|
|
2516
|
+
{"messages":[{"role":"user","content":"PWN::Reports::Markdown.help Usage"},{"role":"assistant","content":"`PWN::Reports::Markdown.help`: "}]}
|
|
2517
|
+
{"messages":[{"role":"user","content":"PWN::Reports::PDF.assemble_pdf Usage"},{"role":"assistant","content":"`PWN::Reports::PDF.assemble_pdf`: "}]}
|
|
2518
|
+
{"messages":[{"role":"user","content":"PWN::Reports::PDF.authors Usage"},{"role":"assistant","content":"`PWN::Reports::PDF.authors`: "}]}
|
|
2519
|
+
{"messages":[{"role":"user","content":"PWN::Reports::PDF.generate Usage"},{"role":"assistant","content":"`PWN::Reports::PDF.generate`: "}]}
|
|
2520
|
+
{"messages":[{"role":"user","content":"PWN::Reports::PDF.help Usage"},{"role":"assistant","content":"`PWN::Reports::PDF.help`: "}]}
|
|
2521
|
+
{"messages":[{"role":"user","content":"PWN::Reports::PDF.pdf_escape Usage"},{"role":"assistant","content":"`PWN::Reports::PDF.pdf_escape`: "}]}
|
|
2522
|
+
{"messages":[{"role":"user","content":"PWN::Reports::PDF.pdf_stream Usage"},{"role":"assistant","content":"`PWN::Reports::PDF.pdf_stream`: "}]}
|
|
2523
|
+
{"messages":[{"role":"user","content":"PWN::Reports::PDF.render_pdf Usage"},{"role":"assistant","content":"`PWN::Reports::PDF.render_pdf`: "}]}
|
|
2524
|
+
{"messages":[{"role":"user","content":"PWN::Reports::PDF.wrap_line Usage"},{"role":"assistant","content":"`PWN::Reports::PDF.wrap_line`: "}]}
|
|
2484
2525
|
{"messages":[{"role":"user","content":"PWN::Reports::Phone.authors Usage"},{"role":"assistant","content":"`PWN::Reports::Phone.authors`: Author(s)\n\n0day Inc. <support@0dayinc.com>\n"}]}
|
|
2485
2526
|
{"messages":[{"role":"user","content":"PWN::Reports::Phone.generate Usage"},{"role":"assistant","content":"`PWN::Reports::Phone.generate`: Supported Method Parameters\n\nPWN::Reports::Phone.generate(\n\ndir_path: dir_path,\nresults_hash: results_hash\n\n)\n"}]}
|
|
2486
2527
|
{"messages":[{"role":"user","content":"PWN::Reports::Phone.help Usage"},{"role":"assistant","content":"`PWN::Reports::Phone.help`: "}]}
|
|
@@ -2490,6 +2531,10 @@
|
|
|
2490
2531
|
{"messages":[{"role":"user","content":"PWN::Reports::URIBuster.authors Usage"},{"role":"assistant","content":"`PWN::Reports::URIBuster.authors`: Author(s)\n\n0day Inc. <support@0dayinc.com>\n"}]}
|
|
2491
2532
|
{"messages":[{"role":"user","content":"PWN::Reports::URIBuster.generate Usage"},{"role":"assistant","content":"`PWN::Reports::URIBuster.generate`: Supported Method Parameters\n\nPWN::Reports::URIBuster.generate(\n\ndir_path: dir_path,\nresults_hash: results_hash\n\n)\n"}]}
|
|
2492
2533
|
{"messages":[{"role":"user","content":"PWN::Reports::URIBuster.help Usage"},{"role":"assistant","content":"`PWN::Reports::URIBuster.help`: "}]}
|
|
2534
|
+
{"messages":[{"role":"user","content":"PWN::Reports::XML.authors Usage"},{"role":"assistant","content":"`PWN::Reports::XML.authors`: "}]}
|
|
2535
|
+
{"messages":[{"role":"user","content":"PWN::Reports::XML.generate Usage"},{"role":"assistant","content":"`PWN::Reports::XML.generate`: "}]}
|
|
2536
|
+
{"messages":[{"role":"user","content":"PWN::Reports::XML.help Usage"},{"role":"assistant","content":"`PWN::Reports::XML.help`: "}]}
|
|
2537
|
+
{"messages":[{"role":"user","content":"PWN::Reports::XML.safe_tag Usage"},{"role":"assistant","content":"`PWN::Reports::XML.safe_tag`: "}]}
|
|
2493
2538
|
{"messages":[{"role":"user","content":"PWN::SAST.authors Usage"},{"role":"assistant","content":"`PWN::SAST.authors`: Author(s)\n\n0day Inc. <support@0dayinc.com>\n"}]}
|
|
2494
2539
|
{"messages":[{"role":"user","content":"PWN::SAST.help Usage"},{"role":"assistant","content":"`PWN::SAST.help`: "}]}
|
|
2495
2540
|
{"messages":[{"role":"user","content":"PWN::SAST::AMQPConnectAsGuest.authors Usage"},{"role":"assistant","content":"`PWN::SAST::AMQPConnectAsGuest.authors`: Author(s)\n\n0day Inc. <support@0dayinc.com>\n"}]}
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: pwn
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.5.
|
|
4
|
+
version: 0.5.707
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- 0day Inc.
|
|
@@ -505,14 +505,14 @@ dependencies:
|
|
|
505
505
|
requirements:
|
|
506
506
|
- - '='
|
|
507
507
|
- !ruby/object:Gem::Version
|
|
508
|
-
version: 1.
|
|
508
|
+
version: 1.4.0
|
|
509
509
|
type: :runtime
|
|
510
510
|
prerelease: false
|
|
511
511
|
version_requirements: !ruby/object:Gem::Requirement
|
|
512
512
|
requirements:
|
|
513
513
|
- - '='
|
|
514
514
|
- !ruby/object:Gem::Version
|
|
515
|
-
version: 1.
|
|
515
|
+
version: 1.4.0
|
|
516
516
|
- !ruby/object:Gem::Dependency
|
|
517
517
|
name: meshtastic
|
|
518
518
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -5264,11 +5264,16 @@ files:
|
|
|
5264
5264
|
- etc/default_skills/pwn/reports/SKILL.md
|
|
5265
5265
|
- etc/default_skills/pwn/reports/ai_red_team/SKILL.md
|
|
5266
5266
|
- etc/default_skills/pwn/reports/ai_red_team/references/urls.md
|
|
5267
|
+
- etc/default_skills/pwn/reports/csv/SKILL.md
|
|
5267
5268
|
- etc/default_skills/pwn/reports/fuzz/SKILL.md
|
|
5268
5269
|
- etc/default_skills/pwn/reports/fuzz/references/urls.md
|
|
5270
|
+
- etc/default_skills/pwn/reports/html/SKILL.md
|
|
5269
5271
|
- etc/default_skills/pwn/reports/html_footer/SKILL.md
|
|
5270
5272
|
- etc/default_skills/pwn/reports/html_header/SKILL.md
|
|
5271
5273
|
- etc/default_skills/pwn/reports/html_header/references/urls.md
|
|
5274
|
+
- etc/default_skills/pwn/reports/json/SKILL.md
|
|
5275
|
+
- etc/default_skills/pwn/reports/markdown/SKILL.md
|
|
5276
|
+
- etc/default_skills/pwn/reports/pdf/SKILL.md
|
|
5272
5277
|
- etc/default_skills/pwn/reports/phone/SKILL.md
|
|
5273
5278
|
- etc/default_skills/pwn/reports/phone/references/urls.md
|
|
5274
5279
|
- etc/default_skills/pwn/reports/references/urls.md
|
|
@@ -5276,6 +5281,7 @@ files:
|
|
|
5276
5281
|
- etc/default_skills/pwn/reports/sast/references/urls.md
|
|
5277
5282
|
- etc/default_skills/pwn/reports/uri_buster/SKILL.md
|
|
5278
5283
|
- etc/default_skills/pwn/reports/uri_buster/references/urls.md
|
|
5284
|
+
- etc/default_skills/pwn/reports/xml/SKILL.md
|
|
5279
5285
|
- etc/default_skills/pwn/sast/SKILL.md
|
|
5280
5286
|
- etc/default_skills/pwn/sast/amqp_connect_as_guest/SKILL.md
|
|
5281
5287
|
- etc/default_skills/pwn/sast/amqp_connect_as_guest/references/security.md
|
|
@@ -6086,12 +6092,18 @@ files:
|
|
|
6086
6092
|
- lib/pwn/plugins/zaproxy.rb
|
|
6087
6093
|
- lib/pwn/reports.rb
|
|
6088
6094
|
- lib/pwn/reports/ai_red_team.rb
|
|
6095
|
+
- lib/pwn/reports/csv.rb
|
|
6089
6096
|
- lib/pwn/reports/fuzz.rb
|
|
6097
|
+
- lib/pwn/reports/html.rb
|
|
6090
6098
|
- lib/pwn/reports/html_footer.rb
|
|
6091
6099
|
- lib/pwn/reports/html_header.rb
|
|
6100
|
+
- lib/pwn/reports/json.rb
|
|
6101
|
+
- lib/pwn/reports/markdown.rb
|
|
6102
|
+
- lib/pwn/reports/pdf.rb
|
|
6092
6103
|
- lib/pwn/reports/phone.rb
|
|
6093
6104
|
- lib/pwn/reports/sast.rb
|
|
6094
6105
|
- lib/pwn/reports/uri_buster.rb
|
|
6106
|
+
- lib/pwn/reports/xml.rb
|
|
6095
6107
|
- lib/pwn/sast.rb
|
|
6096
6108
|
- lib/pwn/sast/amqp_connect_as_guest.rb
|
|
6097
6109
|
- lib/pwn/sast/apache_file_system_util_api.rb
|
|
@@ -6572,12 +6584,19 @@ files:
|
|
|
6572
6584
|
- spec/lib/pwn/plugins/zaproxy_spec.rb
|
|
6573
6585
|
- spec/lib/pwn/plugins_spec.rb
|
|
6574
6586
|
- spec/lib/pwn/reports/ai_red_team_spec.rb
|
|
6587
|
+
- spec/lib/pwn/reports/csv_spec.rb
|
|
6588
|
+
- spec/lib/pwn/reports/formats_spec.rb
|
|
6575
6589
|
- spec/lib/pwn/reports/fuzz_spec.rb
|
|
6576
6590
|
- spec/lib/pwn/reports/html_footer_spec.rb
|
|
6577
6591
|
- spec/lib/pwn/reports/html_header_spec.rb
|
|
6592
|
+
- spec/lib/pwn/reports/html_spec.rb
|
|
6593
|
+
- spec/lib/pwn/reports/json_spec.rb
|
|
6594
|
+
- spec/lib/pwn/reports/markdown_spec.rb
|
|
6595
|
+
- spec/lib/pwn/reports/pdf_spec.rb
|
|
6578
6596
|
- spec/lib/pwn/reports/phone_spec.rb
|
|
6579
6597
|
- spec/lib/pwn/reports/sast_spec.rb
|
|
6580
6598
|
- spec/lib/pwn/reports/uri_buster_spec.rb
|
|
6599
|
+
- spec/lib/pwn/reports/xml_spec.rb
|
|
6581
6600
|
- spec/lib/pwn/reports_spec.rb
|
|
6582
6601
|
- spec/lib/pwn/sast/amqp_connect_as_guest_spec.rb
|
|
6583
6602
|
- spec/lib/pwn/sast/apache_file_system_util_api_spec.rb
|