pwn 0.5.643 → 0.5.647
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/documentation/Cron.md +3 -2
- data/documentation/Home.md +1 -1
- data/documentation/Mistakes.md +13 -0
- data/documentation/Reinforcement-Learning.md +37 -3
- data/documentation/Skills-Memory-Learning.md +5 -3
- data/documentation/diagrams/dot/pwn-ai-feedback-learning-loop.dot +3 -3
- data/documentation/diagrams/dot/reinforcement-learning.dot +8 -8
- data/documentation/diagrams/pwn-ai-feedback-learning-loop.svg +318 -319
- data/documentation/diagrams/reinforcement-learning.svg +188 -187
- data/documentation/pwn-ai-Agent.md +5 -4
- data/lib/pwn/ai/agent/curriculum.rb +368 -32
- data/lib/pwn/ai/agent/learning.rb +159 -13
- data/lib/pwn/ai/agent/loop.rb +75 -4
- data/lib/pwn/ai/agent/metrics.rb +140 -10
- data/lib/pwn/ai/agent/mistakes.rb +26 -8
- data/lib/pwn/ai/agent/registry.rb +5 -2
- data/lib/pwn/ai/agent/reward.rb +279 -5
- data/lib/pwn/ai/agent/tools/reward.rb +66 -0
- data/lib/pwn/cron.rb +14 -2
- data/lib/pwn/version.rb +1 -1
- data/spec/integration/reinforced_feedback_loop_spec.rb +507 -12
- data/spec/lib/pwn/ai/agent/reward_spec.rb +64 -1
- data/third_party/pwn_rdoc.jsonl +24 -2
- metadata +1 -1
data/third_party/pwn_rdoc.jsonl
CHANGED
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::BurpSuite.authors Usage"},{"role":"assistant","content":"`PWN::AI::Agent::BurpSuite.authors`: Author(s)\n\n0day Inc. <support@0dayinc.com>\n"}]}
|
|
14
14
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::BurpSuite.help Usage"},{"role":"assistant","content":"`PWN::AI::Agent::BurpSuite.help`: "}]}
|
|
15
15
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Curriculum.ab_gate Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Curriculum.ab_gate`: "}]}
|
|
16
|
+
{"messages":[{"role":"user","content":"PWN::AI::Agent::Curriculum.ab_gate_v2 Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Curriculum.ab_gate_v2`: "}]}
|
|
16
17
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Curriculum.ask_persona Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Curriculum.ask_persona`: "}]}
|
|
17
18
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Curriculum.authors Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Curriculum.authors`: Author(s)\n\n0day Inc. <support@0dayinc.com>\n"}]}
|
|
18
19
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Curriculum.axolotl_config Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Curriculum.axolotl_config`: "}]}
|
|
@@ -22,6 +23,7 @@
|
|
|
22
23
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Curriculum.calibrate Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Curriculum.calibrate`: Supported Method Parameters\n\nPWN::AI::Agent::Curriculum.calibrate(predicted:, actual:, engine:)\n"}]}
|
|
23
24
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Curriculum.counterfactual Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Curriculum.counterfactual`: "}]}
|
|
24
25
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Curriculum.critic Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Curriculum.critic`: Supported Method Parameters\n\nv = PWN::AI::Agent::Curriculum.critic(\n\nrequest: 'required - user request',\nfinal: 'required - candidate final answer',\nsession_id: 'optional - for evidence lookup'\n\n)\n\nReturns { verdict: :pass|:flaw, flaw:, confidence: }. On :flaw the (final, flaw) pair is recorded as a preference so a future self-correction becomes DPO signal.\n"}]}
|
|
26
|
+
{"messages":[{"role":"user","content":"PWN::AI::Agent::Curriculum.critic_text_only Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Curriculum.critic_text_only`: "}]}
|
|
25
27
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Curriculum.detect_trainer Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Curriculum.detect_trainer`: "}]}
|
|
26
28
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Curriculum.enabled? Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Curriculum.enabled?`: "}]}
|
|
27
29
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Curriculum.ensure_persona Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Curriculum.ensure_persona`: "}]}
|
|
@@ -39,17 +41,22 @@
|
|
|
39
41
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Curriculum.practice Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Curriculum.practice`: "}]}
|
|
40
42
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Curriculum.practice_skip? Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Curriculum.practice_skip?`: "}]}
|
|
41
43
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Curriculum.preference_balance Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Curriculum.preference_balance`: "}]}
|
|
44
|
+
{"messages":[{"role":"user","content":"PWN::AI::Agent::Curriculum.preference_diet_gate Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Curriculum.preference_diet_gate`: "}]}
|
|
42
45
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Curriculum.python_site_package_roots Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Curriculum.python_site_package_roots`: "}]}
|
|
43
46
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Curriculum.red_team_plan Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Curriculum.red_team_plan`: Supported Method Parameters\n\nhint = PWN::AI::Agent::Curriculum.red_team_plan(\n\nrequest: 'required - user goal',\nplan: 'required - numbered plan text from plan_first'\n\n)\n"}]}
|
|
44
47
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Curriculum.reflect_available? Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Curriculum.reflect_available?`: "}]}
|
|
45
48
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Curriculum.replay_on Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Curriculum.replay_on`: "}]}
|
|
49
|
+
{"messages":[{"role":"user","content":"PWN::AI::Agent::Curriculum.replay_on_detailed Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Curriculum.replay_on_detailed`: "}]}
|
|
50
|
+
{"messages":[{"role":"user","content":"PWN::AI::Agent::Curriculum.revise_after_flaw Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Curriculum.revise_after_flaw`: "}]}
|
|
46
51
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Curriculum.run_axolotl_trainer Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Curriculum.run_axolotl_trainer`: "}]}
|
|
47
52
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Curriculum.run_trainer Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Curriculum.run_trainer`: "}]}
|
|
48
53
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Curriculum.run_unsloth_trainer Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Curriculum.run_unsloth_trainer`: "}]}
|
|
49
54
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Curriculum.save_cooldown Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Curriculum.save_cooldown`: "}]}
|
|
50
55
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Curriculum.save_models Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Curriculum.save_models`: "}]}
|
|
51
56
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Curriculum.score_branch Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Curriculum.score_branch`: "}]}
|
|
57
|
+
{"messages":[{"role":"user","content":"PWN::AI::Agent::Curriculum.score_branch_detailed Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Curriculum.score_branch_detailed`: "}]}
|
|
52
58
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Curriculum.self_play Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Curriculum.self_play`: "}]}
|
|
59
|
+
{"messages":[{"role":"user","content":"PWN::AI::Agent::Curriculum.smoke_eval_set Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Curriculum.smoke_eval_set`: "}]}
|
|
53
60
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Curriculum.train_and_gate Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Curriculum.train_and_gate`: Supported Method Parameters\n\nr = PWN::AI::Agent::Curriculum.train_and_gate(\n\nbase_model: 'optional - ollama base tag (default PWN::Env[:ai][:ollama][:model])',\ntrainer: 'optional - :unsloth | :axolotl | :auto (default :auto)',\ndry_run: 'optional - export + build eval set but do not train (default true)'\n\n)\n\nBest-effort orchestrator. When a supported trainer is installed it produces ~/.pwn/finetune/pwn-vN/, cuts an ollama Modelfile with the LoRA adapter, then REPLAYS Mistakes.top against vN and vN+1 under Reward.judge. Promotes (writes MODELS_FILE) iff vN+1 resolves more signatures. When no trainer is present it still exports SFT+DPO and emits the exact CLI to run manually — so the pipeline is complete even on a box without GPU.\n"}]}
|
|
54
61
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Curriculum.trainer_cli_path Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Curriculum.trainer_cli_path`: "}]}
|
|
55
62
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Curriculum.trainer_installed? Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Curriculum.trainer_installed?`: "}]}
|
|
@@ -252,12 +259,14 @@
|
|
|
252
259
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Learning.auto_introspect_enabled? Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Learning.auto_introspect_enabled?`: "}]}
|
|
253
260
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Learning.build_skill_from_session Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Learning.build_skill_from_session`: "}]}
|
|
254
261
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Learning.compress_exemplar Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Learning.compress_exemplar`: "}]}
|
|
262
|
+
{"messages":[{"role":"user","content":"PWN::AI::Agent::Learning.compress_finetune_trace Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Learning.compress_finetune_trace`: "}]}
|
|
255
263
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Learning.consolidate Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Learning.consolidate`: Supported Method Parameters\n\nremoved = PWN::AI::Agent::Learning.consolidate(\n\nmax_entries: 'optional - hard cap on PWN::Memory size (default MAX_MEMORY_ENTRIES)'\n\n)\n\nDeduplicates near-identical lesson values and prunes the oldest entries once the cap is exceeded so the injected MEMORY block stays high-signal.\n"}]}
|
|
256
264
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Learning.distill_skill Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Learning.distill_skill`: Supported Method Parameters\n\nskill = PWN::AI::Agent::Learning.distill_skill(\n\nname: 'required - snake_case name for the new skill',\nsession_id: 'optional - PWN::Sessions id to mine (uses its transcript)',\ncontent: 'optional - explicit markdown body; overrides transcript mining',\nreferences: 'optional - Array of reference URLs / CWE / CVE / ATT&CK ids'\n\n)\n"}]}
|
|
257
265
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Learning.exemplars_for Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Learning.exemplars_for`: Supported Method Parameters\n\nmsgs = PWN::AI::Agent::Learning.exemplars_for(\n\nrequest: 'required - current user request',\nlimit: 'optional - max exemplar traces to return (default 1)',\nmax_msgs: 'optional - cap on messages per exemplar (default 6)'\n\n)\n\nRetrieval-augmented BEHAVIOUR: keyword-matches request against prior successful outcomes in learning.jsonl, loads the matching session, and compresses its (user, tool, assistant) trace into a short few-shot exemplar Loop.run splices between system and user. Local models are dramatically better with 1 concrete example than with 25 abstract lessons.\n"}]}
|
|
258
|
-
{"messages":[{"role":"user","content":"PWN::AI::Agent::Learning.export_finetune Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Learning.export_finetune`:
|
|
266
|
+
{"messages":[{"role":"user","content":"PWN::AI::Agent::Learning.export_finetune Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Learning.export_finetune`: "}]}
|
|
259
267
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Learning.fact_check_local_final Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Learning.fact_check_local_final`: "}]}
|
|
260
268
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Learning.flip_last_outcome Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Learning.flip_last_outcome`: Supported Method Parameters\n\nPWN::AI::Agent::Learning.flip_last_outcome(\n\nsession_id: 'optional - only flip if the newest outcome belongs to this session',\nreason: 'optional - why it is being flipped (usually the user correction text)'\n\n)\n\nRewrites the most-recently-appended learning.jsonl entry from success:true to success:false. Called by Mistakes.check_user_correction when the user’s next message rejects the previous answer, so the 100 %-success illusion is broken and the failure enters the corpus.\n"}]}
|
|
269
|
+
{"messages":[{"role":"user","content":"PWN::AI::Agent::Learning.fold_judge_into_metrics Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Learning.fold_judge_into_metrics`: "}]}
|
|
261
270
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Learning.help Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Learning.help`: "}]}
|
|
262
271
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Learning.heuristic_lessons Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Learning.heuristic_lessons`: "}]}
|
|
263
272
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Learning.infer_success Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Learning.infer_success`: "}]}
|
|
@@ -266,6 +275,7 @@
|
|
|
266
275
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Learning.note_outcome Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Learning.note_outcome`: Supported Method Parameters\n\nentry = PWN::AI::Agent::Learning.note_outcome(\n\ntask: 'required - short description of what was attempted',\nsuccess: 'required - Boolean, did the attempt achieve its goal',\ndetails: 'optional - free-form notes / error / evidence',\nsession_id: 'optional - PWN::Sessions id this outcome belongs to',\ntags: 'optional - Array of String labels for later retrieval'\n\n)\n"}]}
|
|
267
276
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Learning.outcomes Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Learning.outcomes`: Supported Method Parameters\n\nrows = PWN::AI::Agent::Learning.outcomes(\n\nlimit: 'optional - max entries returned newest-first (default 50)',\nsuccess: 'optional - filter by Boolean outcome',\ntag: 'optional - filter by tag substring'\n\n)\n"}]}
|
|
268
277
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Learning.purge_noise Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Learning.purge_noise`: Supported Method Parameters\n\nPWN::AI::Agent::Learning.purge_noise\n\nOne-shot GC of the pre-R1 garbage: drops every PWN::Memory entry matching the old ‘SUCCESS: <req> — <final>` / `Avoid repeating failure pattern from <tool>: {“success”:true` shapes. Run once after upgrading; subsequent writes never produce these.\n"}]}
|
|
278
|
+
{"messages":[{"role":"user","content":"PWN::AI::Agent::Learning.recover_predicted_from_session Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Learning.recover_predicted_from_session`: "}]}
|
|
269
279
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Learning.reflect Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Learning.reflect`: Supported Method Parameters\n\nreport = PWN::AI::Agent::Learning.reflect(\n\nsession_id: 'required - PWN::Sessions id to analyse',\ndry_run: 'optional - when true, do not write to Memory/Skills (default false)'\n\n)\n\nUses PWN::AI::Agent::Reflect (when available) to LLM-summarise the session into structured lessons. Falls back to a heuristic extractor when module_reflection is disabled so learning never stops.\n"}]}
|
|
270
280
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Learning.reset Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Learning.reset`: Supported Method Parameters\n\nPWN::AI::Agent::Learning.reset\n"}]}
|
|
271
281
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Learning.semantic_merge Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Learning.semantic_merge`: "}]}
|
|
@@ -279,6 +289,7 @@
|
|
|
279
289
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Loop.append_session Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Loop.append_session`: "}]}
|
|
280
290
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Loop.attribute_cause Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Loop.attribute_cause`: "}]}
|
|
281
291
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Loop.authors Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Loop.authors`: Author(s)\n\n0day Inc. <support@0dayinc.com>\n"}]}
|
|
292
|
+
{"messages":[{"role":"user","content":"PWN::AI::Agent::Loop.budget_exhaustion_hot? Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Loop.budget_exhaustion_hot?`: "}]}
|
|
282
293
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Loop.calibration_state Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Loop.calibration_state`: "}]}
|
|
283
294
|
{"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"}]}
|
|
284
295
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Loop.compact_history! Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Loop.compact_history!`: "}]}
|
|
@@ -302,12 +313,17 @@
|
|
|
302
313
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Metrics.calibration Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Metrics.calibration`: Supported Method Parameters\n\ncal = PWN::AI::Agent::Metrics.calibration(engine: :ollama)\n"}]}
|
|
303
314
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Metrics.changepoints Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Metrics.changepoints`: Supported Method Parameters\n\ncps = PWN::AI::Agent::Metrics.changepoints\n\nE1 — tools whose CUSUM tripped (success_rate regime change). The caller (Mistakes.record / Curriculum) triggers extro_snapshot + correlate on these so a Mistake caused by env drift is tagged cause: :env_drift and does NOT count toward [REPEATING].\n"}]}
|
|
304
315
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Metrics.decay Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Metrics.decay`: "}]}
|
|
316
|
+
{"messages":[{"role":"user","content":"PWN::AI::Agent::Metrics.effective_rate Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Metrics.effective_rate`: "}]}
|
|
305
317
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Metrics.gamma_sample Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Metrics.gamma_sample`: "}]}
|
|
306
318
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Metrics.help Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Metrics.help`: "}]}
|
|
319
|
+
{"messages":[{"role":"user","content":"PWN::AI::Agent::Metrics.judge_rate Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Metrics.judge_rate`: "}]}
|
|
307
320
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Metrics.load Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Metrics.load`: Supported Method Parameters\n\nmetrics = PWN::AI::Agent::Metrics.load\n"}]}
|
|
321
|
+
{"messages":[{"role":"user","content":"PWN::AI::Agent::Metrics.prm_advantage Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Metrics.prm_advantage`: "}]}
|
|
308
322
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Metrics.proxy_trust Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Metrics.proxy_trust`: "}]}
|
|
309
323
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Metrics.record Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Metrics.record`: Supported Method Parameters\n\nPWN::AI::Agent::Metrics.record(\n\nname: 'required - tool name that was dispatched',\nsuccess: 'required - Boolean, did the handler complete without error',\nduration: 'optional - Float seconds the dispatch took',\nerror: 'optional - String error message when success is false',\nengine: 'optional - Symbol/String AI engine that chose this tool (segments telemetry)'\n\n)\n"}]}
|
|
310
324
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Metrics.record_calibration Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Metrics.record_calibration`: Supported Method Parameters\n\nPWN::AI::Agent::Metrics.record_calibration(predicted:, actual:, brier:, engine:)\n\nW3 — plan_first emits p(success); Loop.run calls this with the realised outcome. Tracked per-engine so calibration of the local LoRA vs frontier is comparable.\n"}]}
|
|
325
|
+
{"messages":[{"role":"user","content":"PWN::AI::Agent::Metrics.record_judge Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Metrics.record_judge`: "}]}
|
|
326
|
+
{"messages":[{"role":"user","content":"PWN::AI::Agent::Metrics.record_step_reward Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Metrics.record_step_reward`: "}]}
|
|
311
327
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Metrics.reset Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Metrics.reset`: Supported Method Parameters\n\nPWN::AI::Agent::Metrics.reset\n"}]}
|
|
312
328
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Metrics.save Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Metrics.save`: Supported Method Parameters\n\nPWN::AI::Agent::Metrics.save(\n\nmetrics: 'required - Hash returned by .load / mutated in place'\n\n)\n"}]}
|
|
313
329
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Metrics.summary Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Metrics.summary`: Supported Method Parameters\n\nrows = PWN::AI::Agent::Metrics.summary(\n\nlimit: 'optional - cap number of tools returned (default 25)',\nengine: 'optional - only that engine\\'s sub-bucket (falls back to global when absent)'\n\n)\n"}]}
|
|
@@ -382,6 +398,7 @@
|
|
|
382
398
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Reward.empty_sentinel Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Reward.empty_sentinel`: "}]}
|
|
383
399
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Reward.export_dpo Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Reward.export_dpo`: "}]}
|
|
384
400
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Reward.extract_cmd Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Reward.extract_cmd`: "}]}
|
|
401
|
+
{"messages":[{"role":"user","content":"PWN::AI::Agent::Reward.fold_step_reward_to_metrics Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Reward.fold_step_reward_to_metrics`: "}]}
|
|
385
402
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Reward.help Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Reward.help`: "}]}
|
|
386
403
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Reward.heuristic_judge Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Reward.heuristic_judge`: "}]}
|
|
387
404
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Reward.heuristic_prm Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Reward.heuristic_prm`: "}]}
|
|
@@ -391,21 +408,26 @@
|
|
|
391
408
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Reward.load_sentinel Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Reward.load_sentinel`: "}]}
|
|
392
409
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Reward.load_trace Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Reward.load_trace`: "}]}
|
|
393
410
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Reward.normalize_sentinel Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Reward.normalize_sentinel`: "}]}
|
|
411
|
+
{"messages":[{"role":"user","content":"PWN::AI::Agent::Reward.preference_balance Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Reward.preference_balance`: "}]}
|
|
394
412
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Reward.preferences Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Reward.preferences`: Supported Method Parameters\n\nrows = PWN::AI::Agent::Reward.preferences(limit: 500, source: nil)\n"}]}
|
|
395
413
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Reward.prm Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Reward.prm`: Supported Method Parameters\n\nsteps = PWN::AI::Agent::Reward.prm(\n\nrequest: 'required - user goal',\nsession_id: 'optional - session to score in place',\ntrace: 'optional - Array of {name:, args:, result:} or Strings'\n\n)\n\nReturns [{idx:, step:, reward: -1|0|1}, …] and, when session_id is given, rewrites each tool line in the transcript with a ‘[step_reward=N]` prefix so exemplars_for / distill_skill can keep only reward>0 steps (C4 minimal sufficient trace).\n"}]}
|
|
396
414
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Reward.proxy_distrust Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Reward.proxy_distrust`: "}]}
|
|
397
|
-
{"messages":[{"role":"user","content":"PWN::AI::Agent::Reward.record_preference Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Reward.record_preference`:
|
|
415
|
+
{"messages":[{"role":"user","content":"PWN::AI::Agent::Reward.record_preference Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Reward.record_preference`: "}]}
|
|
398
416
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Reward.record_sentinel Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Reward.record_sentinel`: "}]}
|
|
399
417
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Reward.recoverable_shape Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Reward.recoverable_shape`: "}]}
|
|
400
418
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Reward.reflect_available? Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Reward.reflect_available?`: "}]}
|
|
401
419
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Reward.reset Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Reward.reset`: "}]}
|
|
402
420
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Reward.reset_sentinel Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Reward.reset_sentinel`: "}]}
|
|
421
|
+
{"messages":[{"role":"user","content":"PWN::AI::Agent::Reward.scrub_preferences Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Reward.scrub_preferences`: "}]}
|
|
403
422
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Reward.semantic_ok Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Reward.semantic_ok`: Supported Method Parameters\n\nh = PWN::AI::Agent::Reward.semantic_ok(\n\nname: 'required - tool name',\nraw: 'required - JSON string returned by Dispatch.call',\nargs: 'optional - the tool call arguments (used for BENIGN_EXIT)'\n\n)\n\nReturns { ok:, semantic_ok:, exit:, err:, benign: }. :ok is the old proxy (handler didn’t raise); :semantic_ok additionally knows that grep/diff/find exit≠0 with empty stderr is not a failure. Loop.run records Metrics on :ok but only records Mistakes on !semantic_ok.\n"}]}
|
|
404
423
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Reward.sentinel Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Reward.sentinel`: Supported Method Parameters\n\nr = PWN::AI::Agent::Reward.sentinel\n"}]}
|
|
405
424
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Reward.set_proxy_distrust Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Reward.set_proxy_distrust`: "}]}
|
|
425
|
+
{"messages":[{"role":"user","content":"PWN::AI::Agent::Reward.usable_preference? Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Reward.usable_preference?`: "}]}
|
|
406
426
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Reward.user_correction_rate Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Reward.user_correction_rate`: "}]}
|
|
407
427
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Reward.verify_as_reward Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Reward.verify_as_reward`: Supported Method Parameters\n\ng = PWN::AI::Agent::Reward.verify_as_reward(final: text)\n"}]}
|
|
428
|
+
{"messages":[{"role":"user","content":"PWN::AI::Agent::Reward.warm_sentinel Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Reward.warm_sentinel`: "}]}
|
|
408
429
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::Reward.window_means Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Reward.window_means`: "}]}
|
|
430
|
+
{"messages":[{"role":"user","content":"PWN::AI::Agent::Reward.write_source_quota Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Reward.write_source_quota`: "}]}
|
|
409
431
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::SAST.analyze Usage"},{"role":"assistant","content":"`PWN::AI::Agent::SAST.analyze`: Supported Method Parameters\n\nai_analysis = PWN::AI::Agent::SAST.analyze(\n\nrequest: 'required - A string containing the source code snippet to be analyzed for SAST antipatterns and vulnerabilities.'\n\n)\n"}]}
|
|
410
432
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::SAST.authors Usage"},{"role":"assistant","content":"`PWN::AI::Agent::SAST.authors`: Author(s)\n\n0day Inc. <support@0dayinc.com>\n"}]}
|
|
411
433
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::SAST.help Usage"},{"role":"assistant","content":"`PWN::AI::Agent::SAST.help`: "}]}
|