pwn 0.5.708 → 0.5.710
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 +2 -2
- data/documentation/Installation.md +1 -0
- data/etc/default_skills/exploitdev/SKILL.md +38 -0
- data/etc/default_skills/pwn/ai/agent/extrospection/osint/bridges/SKILL.md +30 -8
- data/etc/default_skills/pwn/ai/agent/extrospection/osint/social/SKILL.md +30 -8
- data/etc/default_skills/pwn/ai/agent/extrospection/osint/social/references/urls.md +1 -1
- data/etc/default_skills/pwn/ai/agent/extrospection/references/urls.md +0 -1
- data/etc/default_skills/pwn/memory_index/SKILL.md +0 -4
- data/etc/default_skills/pwn/plugins/aflplusplus/SKILL.md +49 -0
- data/etc/default_skills/pwn/plugins/android/SKILL.md +1 -0
- data/etc/default_skills/pwn/plugins/artifact_registry/SKILL.md +49 -0
- data/etc/default_skills/pwn/plugins/binary_parser/SKILL.md +54 -0
- data/etc/default_skills/pwn/plugins/credential_attack/SKILL.md +58 -0
- data/etc/default_skills/pwn/plugins/credential_attack/references/urls.md +3 -0
- data/etc/default_skills/pwn/plugins/exploit_db/SKILL.md +49 -0
- data/etc/default_skills/pwn/plugins/exploit_dev/SKILL.md +63 -0
- data/etc/default_skills/pwn/plugins/frida/SKILL.md +51 -0
- data/etc/default_skills/pwn/plugins/fuzz/SKILL.md +2 -0
- data/etc/default_skills/pwn/plugins/gdb/SKILL.md +53 -0
- data/etc/default_skills/pwn/plugins/jobs/SKILL.md +51 -0
- data/etc/default_skills/pwn/plugins/k8s/SKILL.md +51 -0
- data/etc/default_skills/pwn/plugins/nuclei/SKILL.md +50 -0
- data/etc/default_skills/pwn/plugins/preflight_checker/SKILL.md +59 -0
- data/etc/default_skills/pwn/plugins/process_tube/SKILL.md +53 -0
- data/etc/default_skills/pwn/plugins/radare2/SKILL.md +59 -0
- data/etc/default_skills/pwn/plugins/recon/SKILL.md +57 -0
- data/etc/default_skills/pwn/plugins/recon/references/urls.md +6 -0
- data/etc/default_skills/pwn/plugins/semgrep/SKILL.md +48 -0
- data/etc/default_skills/pwn/plugins/sqlmap/SKILL.md +48 -0
- data/etc/default_skills/pwn/plugins/transparent_browser/SKILL.md +0 -4
- data/etc/default_skills/pwn/plugins/volatility/SKILL.md +49 -0
- data/lib/pwn/ai/agent/assembly.rb +4 -1
- data/lib/pwn/ai/agent/btc.rb +4 -1
- data/lib/pwn/ai/agent/burp_suite.rb +5 -2
- data/lib/pwn/ai/agent/curriculum.rb +89 -30
- data/lib/pwn/ai/agent/dispatch.rb +27 -16
- data/lib/pwn/ai/agent/extrospection/osint/bridges.rb +9 -18
- data/lib/pwn/ai/agent/extrospection/osint/social.rb +9 -18
- data/lib/pwn/ai/agent/extrospection.rb +185 -60
- data/lib/pwn/ai/agent/gqrx.rb +4 -1
- data/lib/pwn/ai/agent/hacker_one.rb +5 -2
- data/lib/pwn/ai/agent/learning.rb +142 -25
- data/lib/pwn/ai/agent/loop.rb +53 -46
- data/lib/pwn/ai/agent/metrics.rb +133 -23
- data/lib/pwn/ai/agent/mistakes.rb +126 -17
- data/lib/pwn/ai/agent/open_goal.rb +25 -9
- data/lib/pwn/ai/agent/policy.rb +158 -18
- data/lib/pwn/ai/agent/prompt_builder.rb +21 -11
- data/lib/pwn/ai/agent/prompt_cache.rb +44 -13
- data/lib/pwn/ai/agent/reflect.rb +9 -5
- data/lib/pwn/ai/agent/registry.rb +65 -12
- data/lib/pwn/ai/agent/result.rb +19 -10
- data/lib/pwn/ai/agent/reward.rb +150 -32
- data/lib/pwn/ai/agent/sast.rb +4 -1
- data/lib/pwn/ai/agent/swarm.rb +72 -36
- data/lib/pwn/ai/agent/task_summarizer.rb +165 -36
- data/lib/pwn/ai/agent/tool_guard.rb +105 -6
- data/lib/pwn/ai/agent/tools/sessions.rb +8 -1
- data/lib/pwn/ai/agent/transparent_browser.rb +4 -1
- data/lib/pwn/ai/agent/turn_finalizer.rb +41 -21
- data/lib/pwn/ai/agent/vuln_gen.rb +6 -3
- data/lib/pwn/ai/agent.rb +4 -0
- data/lib/pwn/ai/anthropic.rb +41 -7
- data/lib/pwn/ai/gemini.rb +21 -11
- data/lib/pwn/ai/grok.rb +44 -6
- data/lib/pwn/ai/http_retry.rb +40 -12
- data/lib/pwn/ai/ollama.rb +19 -10
- data/lib/pwn/ai/open_ai.rb +81 -30
- data/lib/pwn/ai/open_web_ui.rb +20 -14
- data/lib/pwn/ai/red_team/agent_protocol_abuse.rb +7 -1
- data/lib/pwn/ai/red_team/data_and_model_poisoning.rb +7 -1
- data/lib/pwn/ai/red_team/excessive_agency.rb +7 -1
- data/lib/pwn/ai/red_team/hidden_context_exposure.rb +7 -1
- data/lib/pwn/ai/red_team/insecure_output_handling.rb +7 -1
- data/lib/pwn/ai/red_team/jailbreak.rb +7 -1
- data/lib/pwn/ai/red_team/memory_poisoning.rb +7 -1
- data/lib/pwn/ai/red_team/multimodal_injection.rb +7 -1
- data/lib/pwn/ai/red_team/overreliance.rb +7 -1
- data/lib/pwn/ai/red_team/payload_splitting.rb +7 -1
- data/lib/pwn/ai/red_team/prompt_injection.rb +7 -1
- data/lib/pwn/ai/red_team/rag_poisoning.rb +7 -1
- data/lib/pwn/ai/red_team/sensitive_information_disclosure.rb +7 -1
- data/lib/pwn/ai/red_team/supply_chain.rb +7 -1
- data/lib/pwn/ai/red_team/system_prompt_extraction.rb +7 -1
- data/lib/pwn/ai/red_team/test_case_engine.rb +12 -9
- data/lib/pwn/ai/red_team/token_smuggling.rb +7 -1
- data/lib/pwn/ai/red_team/unbounded_consumption.rb +7 -1
- data/lib/pwn/ai/red_team/vector_and_embedding_weaknesses.rb +7 -1
- data/lib/pwn/ai/red_team.rb +4 -0
- data/lib/pwn/ai.rb +4 -0
- data/lib/pwn/aws/acm.rb +5 -2
- data/lib/pwn/aws/api_gateway.rb +10 -7
- data/lib/pwn/aws/app_stream.rb +5 -2
- data/lib/pwn/aws/application_auto_scaling.rb +5 -2
- data/lib/pwn/aws/application_discovery_service.rb +5 -2
- data/lib/pwn/aws/auto_scaling.rb +5 -2
- data/lib/pwn/aws/batch.rb +5 -2
- data/lib/pwn/aws/budgets.rb +5 -2
- data/lib/pwn/aws/cloud_formation.rb +5 -2
- data/lib/pwn/aws/cloud_front.rb +7 -4
- data/lib/pwn/aws/cloud_hsm.rb +5 -2
- data/lib/pwn/aws/cloud_search.rb +5 -2
- data/lib/pwn/aws/cloud_search_domain.rb +5 -2
- data/lib/pwn/aws/cloud_trail.rb +5 -2
- data/lib/pwn/aws/cloud_watch.rb +5 -2
- data/lib/pwn/aws/cloud_watch_events.rb +5 -2
- data/lib/pwn/aws/cloud_watch_logs.rb +5 -2
- data/lib/pwn/aws/code_build.rb +5 -2
- data/lib/pwn/aws/code_commit.rb +5 -2
- data/lib/pwn/aws/code_deploy.rb +5 -2
- data/lib/pwn/aws/code_pipeline.rb +5 -2
- data/lib/pwn/aws/cognito_identity.rb +5 -2
- data/lib/pwn/aws/cognito_identity_provider.rb +5 -2
- data/lib/pwn/aws/cognito_sync.rb +5 -2
- data/lib/pwn/aws/config_service.rb +5 -2
- data/lib/pwn/aws/data_pipleline.rb +5 -2
- data/lib/pwn/aws/database_migration_service.rb +5 -2
- data/lib/pwn/aws/device_farm.rb +5 -2
- data/lib/pwn/aws/direct_connect.rb +5 -2
- data/lib/pwn/aws/directory_service.rb +5 -2
- data/lib/pwn/aws/dynamo_db.rb +5 -2
- data/lib/pwn/aws/dynamo_db_streams.rb +5 -2
- data/lib/pwn/aws/ec2.rb +5 -2
- data/lib/pwn/aws/ecr.rb +5 -2
- data/lib/pwn/aws/ecs.rb +5 -2
- data/lib/pwn/aws/efs.rb +5 -2
- data/lib/pwn/aws/elasti_cache.rb +5 -2
- data/lib/pwn/aws/elastic_beanstalk.rb +8 -5
- data/lib/pwn/aws/elastic_load_balancing.rb +5 -2
- data/lib/pwn/aws/elastic_load_balancing_v2.rb +6 -3
- data/lib/pwn/aws/elastic_transcoder.rb +5 -2
- data/lib/pwn/aws/elasticsearch_service.rb +5 -2
- data/lib/pwn/aws/emr.rb +5 -2
- data/lib/pwn/aws/firehose.rb +5 -2
- data/lib/pwn/aws/game_lift.rb +5 -2
- data/lib/pwn/aws/glacier.rb +6 -3
- data/lib/pwn/aws/health.rb +5 -2
- data/lib/pwn/aws/iam.rb +10 -4
- data/lib/pwn/aws/import_export.rb +5 -2
- data/lib/pwn/aws/inspector.rb +5 -2
- data/lib/pwn/aws/iot.rb +5 -2
- data/lib/pwn/aws/iot_data_plane.rb +5 -2
- data/lib/pwn/aws/kinesis.rb +5 -2
- data/lib/pwn/aws/kinesis_analytics.rb +5 -2
- data/lib/pwn/aws/kms.rb +5 -2
- data/lib/pwn/aws/lambda.rb +5 -2
- data/lib/pwn/aws/lambda_preview.rb +5 -2
- data/lib/pwn/aws/lex.rb +5 -2
- data/lib/pwn/aws/lightsail.rb +5 -2
- data/lib/pwn/aws/machine_learning.rb +5 -2
- data/lib/pwn/aws/marketplace_commerce_analytics.rb +5 -2
- data/lib/pwn/aws/marketplace_metering.rb +5 -2
- data/lib/pwn/aws/ops_works.rb +5 -2
- data/lib/pwn/aws/ops_works_cm.rb +5 -2
- data/lib/pwn/aws/pinpoint.rb +5 -2
- data/lib/pwn/aws/polly.rb +5 -2
- data/lib/pwn/aws/rds.rb +5 -2
- data/lib/pwn/aws/redshift.rb +5 -2
- data/lib/pwn/aws/rekognition.rb +5 -2
- data/lib/pwn/aws/route53.rb +5 -2
- data/lib/pwn/aws/route53_domains.rb +5 -2
- data/lib/pwn/aws/s3.rb +5 -2
- data/lib/pwn/aws/service_catalog.rb +5 -2
- data/lib/pwn/aws/ses.rb +5 -2
- data/lib/pwn/aws/shield.rb +5 -2
- data/lib/pwn/aws/simple_db.rb +5 -2
- data/lib/pwn/aws/sms.rb +5 -2
- data/lib/pwn/aws/snowball.rb +5 -2
- data/lib/pwn/aws/sns.rb +5 -2
- data/lib/pwn/aws/sqs.rb +5 -2
- data/lib/pwn/aws/ssm.rb +5 -2
- data/lib/pwn/aws/states.rb +5 -2
- data/lib/pwn/aws/storage_gateway.rb +5 -2
- data/lib/pwn/aws/sts.rb +4 -1
- data/lib/pwn/aws/support.rb +5 -2
- data/lib/pwn/aws/swf.rb +5 -2
- data/lib/pwn/aws/waf.rb +5 -2
- data/lib/pwn/aws/waf_regional.rb +5 -2
- data/lib/pwn/aws/workspaces.rb +5 -2
- data/lib/pwn/aws/x_ray.rb +5 -2
- data/lib/pwn/aws.rb +4 -0
- data/lib/pwn/banner/anon.rb +3 -0
- data/lib/pwn/banner/bubble.rb +3 -0
- data/lib/pwn/banner/cheshire.rb +3 -0
- data/lib/pwn/banner/code_cave.rb +3 -0
- data/lib/pwn/banner/dont_panic.rb +3 -0
- data/lib/pwn/banner/f_society.rb +3 -0
- data/lib/pwn/banner/fork_bomb.rb +3 -0
- data/lib/pwn/banner/jmp_esp.rb +3 -0
- data/lib/pwn/banner/matrix.rb +5 -1
- data/lib/pwn/banner/ninja.rb +3 -0
- data/lib/pwn/banner/off_the_air.rb +3 -0
- data/lib/pwn/banner/pirate.rb +3 -0
- data/lib/pwn/banner/radare2.rb +3 -0
- data/lib/pwn/banner/radare2_ai.rb +3 -0
- data/lib/pwn/banner/white_rabbit.rb +3 -0
- data/lib/pwn/banner.rb +6 -2
- data/lib/pwn/blockchain/btc.rb +8 -3
- data/lib/pwn/blockchain/eth.rb +10 -3
- data/lib/pwn/blockchain.rb +4 -0
- data/lib/pwn/bounty/lifecycle_authz_replay.rb +46 -27
- data/lib/pwn/bounty.rb +4 -0
- data/lib/pwn/config.rb +79 -13
- data/lib/pwn/cron.rb +297 -20
- data/lib/pwn/driver.rb +2 -18
- data/lib/pwn/ffi/adalm_pluto.rb +65 -11
- data/lib/pwn/ffi/fftw.rb +31 -6
- data/lib/pwn/ffi/hack_rf.rb +59 -8
- data/lib/pwn/ffi/liquid.rb +63 -10
- data/lib/pwn/ffi/rtl_sdr.rb +35 -5
- data/lib/pwn/ffi/soapy_sdr.rb +60 -10
- data/lib/pwn/ffi/stdio.rb +7 -8
- data/lib/pwn/ffi/volk.rb +36 -7
- data/lib/pwn/ffi.rb +12 -0
- data/lib/pwn/memory.rb +136 -16
- data/lib/pwn/memory_index.rb +34 -19
- data/lib/pwn/migrate.rb +34 -24
- data/lib/pwn/module_skills.rb +39 -8
- data/lib/pwn/plugins/aflplusplus.rb +72 -0
- data/lib/pwn/plugins/android.rb +71 -245
- data/lib/pwn/plugins/artifact_registry.rb +71 -0
- data/lib/pwn/plugins/assembly.rb +9 -4
- data/lib/pwn/plugins/authentication_helper.rb +8 -5
- data/lib/pwn/plugins/baresip.rb +59 -12
- data/lib/pwn/plugins/basic_auth.rb +9 -3
- data/lib/pwn/plugins/beef.rb +28 -18
- data/lib/pwn/plugins/binary_parser.rb +133 -0
- data/lib/pwn/plugins/black_duck_binary_analysis.rb +63 -39
- data/lib/pwn/plugins/burp_suite.rb +98 -68
- data/lib/pwn/plugins/bus_pirate.rb +15 -8
- data/lib/pwn/plugins/char.rb +33 -3
- data/lib/pwn/plugins/credential_attack.rb +158 -0
- data/lib/pwn/plugins/credit_card.rb +6 -1
- data/lib/pwn/plugins/dao_ldap.rb +19 -13
- data/lib/pwn/plugins/dao_mongo.rb +11 -5
- data/lib/pwn/plugins/dao_postgres.rb +28 -19
- data/lib/pwn/plugins/dao_sqlite3.rb +15 -6
- data/lib/pwn/plugins/defect_dojo.rb +38 -22
- data/lib/pwn/plugins/detect_os.rb +5 -0
- data/lib/pwn/plugins/ein.rb +3 -0
- data/lib/pwn/plugins/exploit_db.rb +69 -0
- data/lib/pwn/plugins/exploit_dev.rb +330 -0
- data/lib/pwn/plugins/file_fu.rb +11 -8
- data/lib/pwn/plugins/frida.rb +112 -0
- data/lib/pwn/plugins/fuzz.rb +42 -6
- data/lib/pwn/plugins/gdb.rb +115 -0
- data/lib/pwn/plugins/git.rb +19 -14
- data/lib/pwn/plugins/github.rb +38 -15
- data/lib/pwn/plugins/google_workspace.rb +188 -45
- data/lib/pwn/plugins/hacker_one.rb +159 -35
- data/lib/pwn/plugins/hunter.rb +6 -3
- data/lib/pwn/plugins/ip_info.rb +9 -4
- data/lib/pwn/plugins/irc.rb +28 -15
- data/lib/pwn/plugins/jenkins.rb +65 -57
- data/lib/pwn/plugins/jira_data_center.rb +30 -22
- data/lib/pwn/plugins/jobs.rb +110 -0
- data/lib/pwn/plugins/json_pathify.rb +9 -5
- data/lib/pwn/plugins/k8s.rb +73 -0
- data/lib/pwn/plugins/log.rb +113 -13
- data/lib/pwn/plugins/mail_agent.rb +87 -79
- data/lib/pwn/plugins/metasploit.rb +11 -6
- data/lib/pwn/plugins/monkey_patch.rb +3 -0
- data/lib/pwn/plugins/msr206.rb +42 -28
- data/lib/pwn/plugins/nessus_cloud.rb +44 -4
- data/lib/pwn/plugins/nexpose_vuln_scan.rb +40 -24
- data/lib/pwn/plugins/nmap_it.rb +14 -34
- data/lib/pwn/plugins/nuclei.rb +90 -0
- data/lib/pwn/plugins/oauth2.rb +11 -5
- data/lib/pwn/plugins/ocr.rb +3 -0
- data/lib/pwn/plugins/open_api.rb +5 -2
- data/lib/pwn/plugins/openvas.rb +33 -25
- data/lib/pwn/plugins/packet.rb +152 -31
- data/lib/pwn/plugins/pdf_parse.rb +5 -2
- data/lib/pwn/plugins/pony.rb +86 -1
- data/lib/pwn/plugins/preflight_checker.rb +166 -0
- data/lib/pwn/plugins/process_tube.rb +139 -0
- data/lib/pwn/plugins/ps.rb +7 -1
- data/lib/pwn/plugins/pwn_logger.rb +6 -2
- data/lib/pwn/plugins/rabbit_mq.rb +12 -7
- data/lib/pwn/plugins/radare2.rb +253 -0
- data/lib/pwn/plugins/recon.rb +196 -0
- data/lib/pwn/plugins/repl.rb +122 -1
- data/lib/pwn/plugins/scannable_codes.rb +5 -1
- data/lib/pwn/plugins/semgrep.rb +61 -0
- data/lib/pwn/plugins/serial.rb +24 -14
- data/lib/pwn/plugins/shodan.rb +54 -35
- data/lib/pwn/plugins/slack_client.rb +11 -6
- data/lib/pwn/plugins/sock.rb +17 -8
- data/lib/pwn/plugins/spider.rb +5 -2
- data/lib/pwn/plugins/sqlmap.rb +49 -0
- data/lib/pwn/plugins/ssn.rb +3 -0
- data/lib/pwn/plugins/thread_pool.rb +6 -9
- data/lib/pwn/plugins/tor.rb +9 -4
- data/lib/pwn/plugins/transparent_browser.rb +62 -107
- data/lib/pwn/plugins/tty_spinner.rb +16 -2
- data/lib/pwn/plugins/twitter_api.rb +6 -2
- data/lib/pwn/plugins/uri_scheme.rb +4 -1
- data/lib/pwn/plugins/vault.rb +12 -3
- data/lib/pwn/plugins/vin.rb +24 -12
- data/lib/pwn/plugins/voice.rb +7 -2
- data/lib/pwn/plugins/volatility.rb +67 -0
- data/lib/pwn/plugins/vsphere.rb +9 -5
- data/lib/pwn/plugins/xxd.rb +12 -43
- data/lib/pwn/plugins/zaproxy.rb +30 -16
- data/lib/pwn/plugins.rb +22 -0
- data/lib/pwn/reports/ai_red_team.rb +6 -2
- data/lib/pwn/reports/csv.rb +8 -1
- data/lib/pwn/reports/fuzz.rb +5 -2
- data/lib/pwn/reports/html.rb +8 -1
- data/lib/pwn/reports/html_footer.rb +4 -3
- data/lib/pwn/reports/html_header.rb +6 -2
- data/lib/pwn/reports/json.rb +8 -1
- data/lib/pwn/reports/markdown.rb +8 -1
- data/lib/pwn/reports/pdf.rb +8 -1
- data/lib/pwn/reports/phone.rb +5 -2
- data/lib/pwn/reports/sast.rb +6 -2
- data/lib/pwn/reports/uri_buster.rb +5 -2
- data/lib/pwn/reports/xml.rb +8 -1
- data/lib/pwn/reports.rb +19 -0
- data/lib/pwn/sast/amqp_connect_as_guest.rb +9 -3
- data/lib/pwn/sast/apache_file_system_util_api.rb +9 -3
- data/lib/pwn/sast/aws.rb +9 -3
- data/lib/pwn/sast/banned_function_calls_c.rb +9 -3
- data/lib/pwn/sast/base64.rb +9 -3
- data/lib/pwn/sast/beef_hook.rb +9 -3
- data/lib/pwn/sast/cmd_execution_go_lang.rb +9 -3
- data/lib/pwn/sast/cmd_execution_java.rb +9 -3
- data/lib/pwn/sast/cmd_execution_python.rb +9 -3
- data/lib/pwn/sast/cmd_execution_ruby.rb +9 -3
- data/lib/pwn/sast/cmd_execution_scala.rb +9 -3
- data/lib/pwn/sast/csrf.rb +9 -3
- data/lib/pwn/sast/deserial_java.rb +9 -3
- data/lib/pwn/sast/emoticon.rb +9 -3
- data/lib/pwn/sast/eval.rb +9 -3
- data/lib/pwn/sast/factory.rb +9 -3
- data/lib/pwn/sast/http_authorization_header.rb +9 -3
- data/lib/pwn/sast/inner_html.rb +9 -3
- data/lib/pwn/sast/keystore.rb +9 -3
- data/lib/pwn/sast/local_storage.rb +9 -3
- data/lib/pwn/sast/location_hash.rb +9 -3
- data/lib/pwn/sast/log4j.rb +9 -3
- data/lib/pwn/sast/logger.rb +9 -3
- data/lib/pwn/sast/md5.rb +9 -3
- data/lib/pwn/sast/outer_html.rb +9 -3
- data/lib/pwn/sast/padding_oracle.rb +9 -3
- data/lib/pwn/sast/password.rb +9 -3
- data/lib/pwn/sast/php_input_mechanisms.rb +9 -3
- data/lib/pwn/sast/php_type_juggling.rb +9 -3
- data/lib/pwn/sast/pom_version.rb +9 -3
- data/lib/pwn/sast/port.rb +9 -3
- data/lib/pwn/sast/post_message.rb +9 -3
- data/lib/pwn/sast/private_key.rb +9 -3
- data/lib/pwn/sast/redirect.rb +9 -3
- data/lib/pwn/sast/redos.rb +9 -3
- data/lib/pwn/sast/shell.rb +9 -3
- data/lib/pwn/sast/signature.rb +9 -3
- data/lib/pwn/sast/sql.rb +9 -3
- data/lib/pwn/sast/ssl.rb +9 -3
- data/lib/pwn/sast/sudo.rb +9 -3
- data/lib/pwn/sast/task_tag.rb +9 -3
- data/lib/pwn/sast/test_case_engine.rb +11 -7
- data/lib/pwn/sast/throw_errors.rb +9 -3
- data/lib/pwn/sast/token.rb +9 -3
- data/lib/pwn/sast/type_script_type_juggling.rb +9 -3
- data/lib/pwn/sast/use_after_free.rb +9 -3
- data/lib/pwn/sast/version.rb +9 -3
- data/lib/pwn/sast/window_location_hash.rb +9 -3
- data/lib/pwn/sast.rb +4 -0
- data/lib/pwn/sdr/decoder/adsb.rb +36 -5
- data/lib/pwn/sdr/decoder/apt.rb +9 -6
- data/lib/pwn/sdr/decoder/base.rb +74 -22
- data/lib/pwn/sdr/decoder/bluetooth.rb +17 -5
- data/lib/pwn/sdr/decoder/dect.rb +12 -3
- data/lib/pwn/sdr/decoder/dsp.rb +229 -39
- data/lib/pwn/sdr/decoder/flex.rb +59 -11
- data/lib/pwn/sdr/decoder/gps.rb +12 -3
- data/lib/pwn/sdr/decoder/gsm.rb +24 -4
- data/lib/pwn/sdr/decoder/iridium.rb +12 -3
- data/lib/pwn/sdr/decoder/lora.rb +13 -4
- data/lib/pwn/sdr/decoder/lte.rb +27 -3
- data/lib/pwn/sdr/decoder/morse.rb +12 -3
- data/lib/pwn/sdr/decoder/p25.rb +12 -3
- data/lib/pwn/sdr/decoder/pager.rb +8 -5
- data/lib/pwn/sdr/decoder/pocsag.rb +29 -9
- data/lib/pwn/sdr/decoder/rds.rb +14 -8
- data/lib/pwn/sdr/decoder/rfid.rb +12 -3
- data/lib/pwn/sdr/decoder/rtl433.rb +12 -3
- data/lib/pwn/sdr/decoder/rtty.rb +8 -5
- data/lib/pwn/sdr/decoder/wifi.rb +12 -3
- data/lib/pwn/sdr/decoder/zigbee.rb +12 -3
- data/lib/pwn/sdr/decoder.rb +9 -0
- data/lib/pwn/sdr/flipper_zero.rb +17 -10
- data/lib/pwn/sdr/frequency_allocation.rb +4 -1
- data/lib/pwn/sdr/gqrx.rb +178 -119
- data/lib/pwn/sdr/rfidler.rb +4 -1
- data/lib/pwn/sdr/son_micro_rfid.rb +37 -24
- data/lib/pwn/sdr.rb +14 -0
- data/lib/pwn/sessions.rb +86 -16
- data/lib/pwn/setup.rb +106 -37
- data/lib/pwn/version.rb +1 -1
- data/lib/pwn/www/app_cobalt_io.rb +11 -5
- data/lib/pwn/www/bing.rb +10 -5
- data/lib/pwn/www/bug_crowd.rb +11 -5
- data/lib/pwn/www/checkip.rb +8 -4
- data/lib/pwn/www/coinbase_pro.rb +11 -5
- data/lib/pwn/www/duckduckgo.rb +12 -6
- data/lib/pwn/www/facebook.rb +11 -5
- data/lib/pwn/www/github.rb +11 -5
- data/lib/pwn/www/google.rb +11 -5
- data/lib/pwn/www/hacker_one.rb +20 -9
- data/lib/pwn/www/linkedin.rb +11 -5
- data/lib/pwn/www/pandora.rb +11 -5
- data/lib/pwn/www/pastebin.rb +9 -4
- data/lib/pwn/www/paypal.rb +19 -11
- data/lib/pwn/www/synack.rb +11 -5
- data/lib/pwn/www/torch.rb +13 -8
- data/lib/pwn/www/trading_view.rb +11 -5
- data/lib/pwn/www/twitter.rb +11 -5
- data/lib/pwn/www/uber.rb +11 -5
- data/lib/pwn/www/upwork.rb +11 -5
- data/lib/pwn/www/wayback_machine.rb +12 -6
- data/lib/pwn/www/youtube.rb +10 -5
- data/lib/pwn/www.rb +4 -0
- data/spec/conventions_spec.rb +118 -2
- data/spec/integration/help_contract_spec.rb +2 -0
- data/spec/lib/pwn/ai/agent/reward_spec.rb +9 -0
- data/spec/lib/pwn/plugins/aflplusplus_spec.rb +13 -0
- data/spec/lib/pwn/plugins/artifact_registry_spec.rb +13 -0
- data/spec/lib/pwn/plugins/binary_parser_spec.rb +21 -0
- data/spec/lib/pwn/plugins/credential_attack_spec.rb +13 -0
- data/spec/lib/pwn/plugins/exploit_db_spec.rb +13 -0
- data/spec/lib/pwn/plugins/exploit_dev_spec.rb +23 -0
- data/spec/lib/pwn/plugins/frida_spec.rb +13 -0
- data/spec/lib/pwn/plugins/gdb_spec.rb +13 -0
- data/spec/lib/pwn/plugins/jobs_spec.rb +13 -0
- data/spec/lib/pwn/plugins/k8s_spec.rb +13 -0
- data/spec/lib/pwn/plugins/nuclei_spec.rb +13 -0
- data/spec/lib/pwn/plugins/preflight_checker_spec.rb +23 -0
- data/spec/lib/pwn/plugins/process_tube_spec.rb +13 -0
- data/spec/lib/pwn/plugins/radare2_spec.rb +13 -0
- data/spec/lib/pwn/plugins/recon_spec.rb +26 -0
- data/spec/lib/pwn/plugins/semgrep_spec.rb +13 -0
- data/spec/lib/pwn/plugins/sqlmap_spec.rb +13 -0
- data/spec/lib/pwn/plugins/volatility_spec.rb +13 -0
- data/spec/lib/pwn/req_queue_spec.rb +168 -0
- data/third_party/pwn_rdoc.jsonl +160 -5
- metadata +63 -7
- data/etc/default_skills/pwn/memory_index/references/urls.md +0 -4
- data/etc/default_skills/pwn/plugins/transparent_browser/references/urls.md +0 -3
|
@@ -1771,31 +1771,148 @@ module PWN
|
|
|
1771
1771
|
# Display Usage for this Module
|
|
1772
1772
|
|
|
1773
1773
|
public_class_method def self.help
|
|
1774
|
-
puts
|
|
1775
|
-
|
|
1776
|
-
|
|
1777
|
-
|
|
1778
|
-
|
|
1779
|
-
|
|
1780
|
-
PWN::
|
|
1781
|
-
|
|
1782
|
-
|
|
1783
|
-
|
|
1784
|
-
|
|
1785
|
-
|
|
1786
|
-
|
|
1787
|
-
|
|
1788
|
-
|
|
1789
|
-
|
|
1790
|
-
|
|
1791
|
-
|
|
1792
|
-
|
|
1793
|
-
|
|
1794
|
-
|
|
1795
|
-
|
|
1796
|
-
|
|
1797
|
-
|
|
1798
|
-
|
|
1774
|
+
puts "USAGE:
|
|
1775
|
+
# Run note outcome and return its result
|
|
1776
|
+
#{self}.note_outcome(
|
|
1777
|
+
task: 'required - short description of what was attempted',
|
|
1778
|
+
success: 'required - Boolean, did the attempt achieve its goal',
|
|
1779
|
+
details: 'optional - free-form notes / error / evidence',
|
|
1780
|
+
session_id: 'optional - PWN::Sessions id this outcome belongs to',
|
|
1781
|
+
tags: 'optional - Array of String labels for later retrieval',
|
|
1782
|
+
score: 'optional - score value consumed by #note_outcome',
|
|
1783
|
+
judge_source: 'required - judge source value consumed by #note_outcome',
|
|
1784
|
+
predicted: 'optional - predicted value consumed by #note_outcome',
|
|
1785
|
+
confidence: 'optional - confidence value consumed by #note_outcome',
|
|
1786
|
+
engine: 'optional - engine value consumed by #note_outcome'
|
|
1787
|
+
)
|
|
1788
|
+
|
|
1789
|
+
# Run outcomes and return its result
|
|
1790
|
+
#{self}.outcomes(
|
|
1791
|
+
limit: 'optional - max entries returned newest-first (default 50)',
|
|
1792
|
+
success: 'optional - filter by Boolean outcome',
|
|
1793
|
+
tag: 'optional - filter by tag substring'
|
|
1794
|
+
)
|
|
1795
|
+
|
|
1796
|
+
# Run stats and return its result
|
|
1797
|
+
#{self}.stats
|
|
1798
|
+
|
|
1799
|
+
# Run to context and return its result
|
|
1800
|
+
#{self}.to_context(
|
|
1801
|
+
limit: 'optional - number of recent outcomes to surface (default 5)'
|
|
1802
|
+
)
|
|
1803
|
+
|
|
1804
|
+
# Run exemplars for and return its result
|
|
1805
|
+
#{self}.exemplars_for(
|
|
1806
|
+
request: 'required - current user request',
|
|
1807
|
+
limit: 'optional - max exemplar traces to return (default 1)',
|
|
1808
|
+
max_msgs: 'optional - cap on messages per exemplar (default 6)'
|
|
1809
|
+
)
|
|
1810
|
+
|
|
1811
|
+
# Run export finetune and return its result
|
|
1812
|
+
#{self}.export_finetune(
|
|
1813
|
+
format: 'optional - format value consumed by #export_finetune (defaults to :sharegpt))',
|
|
1814
|
+
min_tools: 'optional - min tools value consumed by #export_finetune',
|
|
1815
|
+
min_score: 'optional - min score value consumed by #export_finetune',
|
|
1816
|
+
compress: 'optional - compress value consumed by #export_finetune',
|
|
1817
|
+
out: 'optional - out value consumed by #export_finetune'
|
|
1818
|
+
)
|
|
1819
|
+
|
|
1820
|
+
# Run distill skill and return its result
|
|
1821
|
+
#{self}.distill_skill(
|
|
1822
|
+
name: 'required - snake_case name for the new skill',
|
|
1823
|
+
session_id: 'optional - PWN::Sessions id to mine (uses its transcript)',
|
|
1824
|
+
content: 'optional - explicit markdown body; overrides transcript mining',
|
|
1825
|
+
references: 'optional - Array of reference URLs / CWE / CVE / ATT&CK ids',
|
|
1826
|
+
description: 'optional - description value consumed by #distill_skill'
|
|
1827
|
+
)
|
|
1828
|
+
|
|
1829
|
+
# Fold RL artefacts (mistakes / structured_fix / an explicit lesson)
|
|
1830
|
+
#{self}.update_skill(
|
|
1831
|
+
dry_run: 'optional - dry run value consumed by #update_skill',
|
|
1832
|
+
lesson: 'optional - lesson value consumed by #update_skill',
|
|
1833
|
+
signature: 'optional - signature value consumed by #update_skill',
|
|
1834
|
+
request: 'optional - request value consumed by #update_skill (defaults to opts[:query])',
|
|
1835
|
+
query: 'optional - search query string',
|
|
1836
|
+
name: 'required - binary or identifier name'
|
|
1837
|
+
)
|
|
1838
|
+
|
|
1839
|
+
# Run reflect and return its result
|
|
1840
|
+
#{self}.reflect(
|
|
1841
|
+
session_id: 'required - PWN::Sessions id to analyse',
|
|
1842
|
+
dry_run: 'optional - when true, do not write to Memory/Skills (default false)'
|
|
1843
|
+
)
|
|
1844
|
+
|
|
1845
|
+
# Called by Loop.run when PWN::Env[:ai][:agent][:auto_introspect] is
|
|
1846
|
+
#{self}.auto_introspect(
|
|
1847
|
+
session_id: 'required - id of the just-completed session',
|
|
1848
|
+
request: 'optional - original user request (for outcome logging)',
|
|
1849
|
+
final: 'optional - final assistant answer (for outcome logging)',
|
|
1850
|
+
inline: 'optional - inline value consumed by #auto_introspect',
|
|
1851
|
+
predicted: 'optional - predicted value consumed by #auto_introspect',
|
|
1852
|
+
plan: 'optional - plan value consumed by #auto_introspect',
|
|
1853
|
+
ts_state: 'optional - ts state value consumed by #auto_introspect'
|
|
1854
|
+
)
|
|
1855
|
+
|
|
1856
|
+
# Run flip last outcome and return its result
|
|
1857
|
+
#{self}.flip_last_outcome(
|
|
1858
|
+
session_id: 'optional - session id value consumed by #flip_last_outcome',
|
|
1859
|
+
reason: 'optional - reason value consumed by #flip_last_outcome'
|
|
1860
|
+
)
|
|
1861
|
+
|
|
1862
|
+
# Run consolidate and return its result
|
|
1863
|
+
#{self}.consolidate(
|
|
1864
|
+
max_entries: 'optional - hard cap on PWN::Memory size (default MAX_MEMORY_ENTRIES)'
|
|
1865
|
+
)
|
|
1866
|
+
|
|
1867
|
+
# Run reset and return its result
|
|
1868
|
+
#{self}.reset
|
|
1869
|
+
|
|
1870
|
+
# One-shot / on-load repair: rewrite tags+details where verdict label
|
|
1871
|
+
#{self}.reconcile_verdict_tags!(
|
|
1872
|
+
dry_run: 'optional - dry run value consumed by #reconcile_verdict_tags!'
|
|
1873
|
+
)
|
|
1874
|
+
|
|
1875
|
+
# Run prune outcomes and return its result
|
|
1876
|
+
#{self}.prune_outcomes!(
|
|
1877
|
+
dry_run: 'optional - Boolean (default false)',
|
|
1878
|
+
max_rows: 'optional - hard cap (default MAX_OUTCOME_ROWS)',
|
|
1879
|
+
retain_days: 'optional - age floor for low-value drop',
|
|
1880
|
+
recent_days: 'optional - always keep newer than this',
|
|
1881
|
+
details_max: 'optional - details max value consumed by #prune_outcomes!',
|
|
1882
|
+
gold_min_score: 'optional - gold min score value consumed by #prune_outcomes!'
|
|
1883
|
+
)
|
|
1884
|
+
|
|
1885
|
+
# Memory lean + outcome prune
|
|
1886
|
+
#{self}.lean!(
|
|
1887
|
+
dry_run: 'optional - dry run value consumed by #lean!',
|
|
1888
|
+
max_entries: 'optional - max entries value consumed by #lean!',
|
|
1889
|
+
max_rows: 'optional - max rows value consumed by #lean!',
|
|
1890
|
+
retain_days: 'optional - retain days value consumed by #lean!',
|
|
1891
|
+
recent_days: 'optional - recent days value consumed by #lean!',
|
|
1892
|
+
details_max: 'optional - details max value consumed by #lean!',
|
|
1893
|
+
gold_min_score: 'optional - gold min score value consumed by #lean!'
|
|
1894
|
+
)
|
|
1895
|
+
|
|
1896
|
+
# One-shot lean across memory + learning + mistakes + sessions
|
|
1897
|
+
#{self}.gc_stores!(
|
|
1898
|
+
dry_run: 'optional - Boolean (default false)',
|
|
1899
|
+
current_session_id: 'optional - never delete this sessions id',
|
|
1900
|
+
max_entries: 'optional - Memory consolidate cap',
|
|
1901
|
+
max_rows: 'optional - learning.jsonl cap',
|
|
1902
|
+
retain_days: 'optional - outcome / session age floor',
|
|
1903
|
+
recent_days: 'optional - recent days value consumed by #gc_stores!',
|
|
1904
|
+
details_max: 'optional - details max value consumed by #gc_stores!',
|
|
1905
|
+
gold_min_score: 'optional - gold min score value consumed by #gc_stores!',
|
|
1906
|
+
max_files: 'optional - max files value consumed by #gc_stores!'
|
|
1907
|
+
)
|
|
1908
|
+
|
|
1909
|
+
# One-shot GC of the pre-R1 garbage: drops every PWN::Memory entry
|
|
1910
|
+
#{self}.purge_noise
|
|
1911
|
+
|
|
1912
|
+
# Print the AUTHOR(S) string for this module.
|
|
1913
|
+
#{self}.authors
|
|
1914
|
+
"
|
|
1915
|
+
constants.sort
|
|
1799
1916
|
end
|
|
1800
1917
|
end
|
|
1801
1918
|
end
|
data/lib/pwn/ai/agent/loop.rb
CHANGED
|
@@ -3071,52 +3071,59 @@ module PWN
|
|
|
3071
3071
|
# Display Usage for this Module
|
|
3072
3072
|
|
|
3073
3073
|
public_class_method def self.help
|
|
3074
|
-
puts
|
|
3075
|
-
|
|
3076
|
-
|
|
3077
|
-
|
|
3078
|
-
|
|
3079
|
-
|
|
3080
|
-
|
|
3081
|
-
|
|
3082
|
-
|
|
3083
|
-
|
|
3084
|
-
|
|
3085
|
-
|
|
3086
|
-
|
|
3087
|
-
|
|
3088
|
-
|
|
3089
|
-
|
|
3090
|
-
|
|
3091
|
-
|
|
3092
|
-
|
|
3093
|
-
|
|
3094
|
-
|
|
3095
|
-
|
|
3096
|
-
|
|
3097
|
-
|
|
3098
|
-
|
|
3099
|
-
|
|
3100
|
-
|
|
3101
|
-
|
|
3102
|
-
|
|
3103
|
-
|
|
3104
|
-
|
|
3105
|
-
|
|
3106
|
-
|
|
3107
|
-
|
|
3108
|
-
|
|
3109
|
-
|
|
3110
|
-
|
|
3111
|
-
|
|
3112
|
-
|
|
3113
|
-
|
|
3114
|
-
|
|
3115
|
-
|
|
3116
|
-
|
|
3117
|
-
|
|
3118
|
-
|
|
3119
|
-
|
|
3074
|
+
puts "USAGE:
|
|
3075
|
+
# Run debug on and return its result
|
|
3076
|
+
#{self}.debug_on?(
|
|
3077
|
+
debug: 'optional - debug value consumed by #debug_on?'
|
|
3078
|
+
)
|
|
3079
|
+
|
|
3080
|
+
# True only when the ask needs a live host/file/browser effect. World-knowledge
|
|
3081
|
+
#{self}.catalog_lookup?(
|
|
3082
|
+
request: 'required - request value consumed by #catalog_lookup?'
|
|
3083
|
+
)
|
|
3084
|
+
|
|
3085
|
+
# Run world knowledge and return its result
|
|
3086
|
+
#{self}.world_knowledge?(
|
|
3087
|
+
request: 'required - request value consumed by #world_knowledge?'
|
|
3088
|
+
)
|
|
3089
|
+
|
|
3090
|
+
# Run needs host work and return its result
|
|
3091
|
+
#{self}.needs_host_work?(
|
|
3092
|
+
request: 'required - request value consumed by #needs_host_work?'
|
|
3093
|
+
)
|
|
3094
|
+
|
|
3095
|
+
# Run ollama wire messages and return its result
|
|
3096
|
+
#{self}.ollama_wire_messages(
|
|
3097
|
+
messages: 'required - in-memory OpenAI-ish messages (may have String args)'
|
|
3098
|
+
)
|
|
3099
|
+
|
|
3100
|
+
# Run openai wire messages and return its result
|
|
3101
|
+
#{self}.openai_wire_messages(
|
|
3102
|
+
messages: 'required - in-memory OpenAI-ish messages (may have Hash args / internal keys)'
|
|
3103
|
+
)
|
|
3104
|
+
|
|
3105
|
+
# Run request intent and return its result
|
|
3106
|
+
#{self}.request_intent(
|
|
3107
|
+
request: 'optional - request value consumed by #request_intent'
|
|
3108
|
+
)
|
|
3109
|
+
|
|
3110
|
+
# Run run and return its result
|
|
3111
|
+
#{self}.run(
|
|
3112
|
+
request: 'required - what the human typed',
|
|
3113
|
+
session_id: 'optional - PWN::Sessions id (transcript is appended to it)',
|
|
3114
|
+
enabled_toolsets: 'optional - subset of Registry.toolsets, or nil for all',
|
|
3115
|
+
on_tool: 'optional - ->(name, args, result) callback for live UI',
|
|
3116
|
+
system_role_content: 'optional - override default system prompt (built from session_id if not provided)',
|
|
3117
|
+
debug: 'optional - debug value consumed by #run',
|
|
3118
|
+
from: 'optional - sender account or address to bind as operator',
|
|
3119
|
+
account: 'optional - operator account id to bind',
|
|
3120
|
+
force_tools: 'optional - force tools value consumed by #run'
|
|
3121
|
+
)
|
|
3122
|
+
|
|
3123
|
+
# Print the AUTHOR(S) string for this module.
|
|
3124
|
+
#{self}.authors
|
|
3125
|
+
"
|
|
3126
|
+
constants.sort
|
|
3120
3127
|
end
|
|
3121
3128
|
end
|
|
3122
3129
|
end
|
data/lib/pwn/ai/agent/metrics.rb
CHANGED
|
@@ -651,29 +651,139 @@ module PWN
|
|
|
651
651
|
# Display Usage for this Module
|
|
652
652
|
|
|
653
653
|
public_class_method def self.help
|
|
654
|
-
puts
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
654
|
+
puts "USAGE:
|
|
655
|
+
# Run load and return its result
|
|
656
|
+
#{self}.load
|
|
657
|
+
|
|
658
|
+
# Run save and return its result
|
|
659
|
+
#{self}.save(
|
|
660
|
+
metrics: 'required - Hash returned by .load / mutated in place'
|
|
661
|
+
)
|
|
662
|
+
|
|
663
|
+
# Run record and return its result
|
|
664
|
+
#{self}.record(
|
|
665
|
+
name: 'required - tool name that was dispatched',
|
|
666
|
+
success: 'required - Boolean, did the handler complete without error',
|
|
667
|
+
duration: 'optional - Float seconds the dispatch took',
|
|
668
|
+
error: 'optional - String error message when success is false',
|
|
669
|
+
engine: 'optional - Symbol/String AI engine that chose this tool (segments telemetry)'
|
|
670
|
+
)
|
|
671
|
+
|
|
672
|
+
# Run summary and return its result
|
|
673
|
+
#{self}.summary(
|
|
674
|
+
limit: 'optional - cap number of tools returned (default 25)',
|
|
675
|
+
engine: 'optional - only that engine\\s sub-bucket (falls back to global when absent)'
|
|
676
|
+
)
|
|
677
|
+
|
|
678
|
+
# Run to context and return its result
|
|
679
|
+
#{self}.to_context(
|
|
680
|
+
limit: 'optional - cap number of tools included (default 8)',
|
|
681
|
+
engine: 'optional - restrict to one engine\\s telemetry'
|
|
682
|
+
)
|
|
683
|
+
|
|
684
|
+
# P4 helper — Registry.rank calls this so β·advantage is scaled down
|
|
685
|
+
#{self}.proxy_trust
|
|
686
|
+
|
|
687
|
+
# Run ucb and return its result
|
|
688
|
+
#{self}.ucb(
|
|
689
|
+
name: 'optional - binary or identifier name',
|
|
690
|
+
c: 'optional - c value consumed by #ucb'
|
|
691
|
+
)
|
|
692
|
+
|
|
693
|
+
# Run thompson and return its result
|
|
694
|
+
#{self}.thompson(
|
|
695
|
+
name: 'optional - binary or identifier name'
|
|
696
|
+
)
|
|
697
|
+
|
|
698
|
+
# Run advantage and return its result
|
|
699
|
+
#{self}.advantage(
|
|
700
|
+
name: 'optional - binary or identifier name'
|
|
701
|
+
)
|
|
702
|
+
|
|
703
|
+
# Run prm advantage and return its result
|
|
704
|
+
#{self}.prm_advantage(
|
|
705
|
+
name: 'optional - binary or identifier name'
|
|
706
|
+
)
|
|
707
|
+
|
|
708
|
+
# Run prm n and return its result
|
|
709
|
+
#{self}.prm_n(
|
|
710
|
+
name: 'optional - binary or identifier name'
|
|
711
|
+
)
|
|
712
|
+
|
|
713
|
+
# P18 — called by Reward.prm after session annotate so live routing
|
|
714
|
+
#{self}.record_step_reward(
|
|
715
|
+
name: 'required - binary or identifier name',
|
|
716
|
+
reward: 'optional - reward value consumed by #record_step_reward'
|
|
717
|
+
)
|
|
718
|
+
|
|
719
|
+
# P20 — fold ORM judge (0..1) into per-tool telemetry so UCB /
|
|
720
|
+
#{self}.record_judge(
|
|
721
|
+
name: 'required - binary or identifier name',
|
|
722
|
+
score: 'optional - score value consumed by #record_judge',
|
|
723
|
+
confidence: 'optional - confidence value consumed by #record_judge',
|
|
724
|
+
source: 'optional - source value consumed by #record_judge'
|
|
725
|
+
)
|
|
726
|
+
|
|
727
|
+
# P1 — mean judge confidence for a tool (nil when no samples)
|
|
728
|
+
#{self}.judge_confidence(
|
|
729
|
+
name: 'optional - binary or identifier name'
|
|
730
|
+
)
|
|
731
|
+
|
|
732
|
+
# Mean judge score for a tool (nil when no ORM samples yet)
|
|
733
|
+
#{self}.judge_rate(
|
|
734
|
+
name: 'optional - binary or identifier name'
|
|
735
|
+
)
|
|
736
|
+
|
|
737
|
+
# Blended success rate: when proxy_distrust > 0 and judge samples
|
|
738
|
+
#{self}.effective_rate(
|
|
739
|
+
name: 'optional - binary or identifier name'
|
|
740
|
+
)
|
|
741
|
+
|
|
742
|
+
# Run changepoints and return its result
|
|
743
|
+
#{self}.changepoints(
|
|
744
|
+
cause: 'optional - :env_drift and does NOT count toward [REPEATING].',
|
|
745
|
+
within_secs: 'optional - within secs value consumed by #changepoints'
|
|
746
|
+
)
|
|
747
|
+
|
|
748
|
+
# W3 — plan_first emits p(success); Loop.run calls this with the
|
|
749
|
+
#{self}.record_calibration(
|
|
750
|
+
engine: 'optional - engine value consumed by #record_calibration (defaults to :global))',
|
|
751
|
+
brier: 'optional - brier value consumed by #record_calibration',
|
|
752
|
+
predicted: 'optional - predicted value consumed by #record_calibration',
|
|
753
|
+
actual: 'optional - actual value consumed by #record_calibration'
|
|
754
|
+
)
|
|
755
|
+
|
|
756
|
+
# Run calibration and return its result
|
|
757
|
+
#{self}.calibration(
|
|
758
|
+
engine: 'required - engine value consumed by #calibration'
|
|
759
|
+
)
|
|
760
|
+
|
|
761
|
+
# Run calibration green and return its result
|
|
762
|
+
#{self}.calibration_green?(
|
|
763
|
+
engine: 'optional - engine value consumed by #calibration_green?'
|
|
764
|
+
)
|
|
765
|
+
|
|
766
|
+
# Run scale prediction and return its result
|
|
767
|
+
#{self}.scale_prediction(
|
|
768
|
+
predicted: 'optional - predicted value consumed by #scale_prediction',
|
|
769
|
+
engine: 'optional - engine value consumed by #scale_prediction'
|
|
770
|
+
)
|
|
771
|
+
|
|
772
|
+
# Run scoreboard and return its result
|
|
773
|
+
#{self}.scoreboard(
|
|
774
|
+
engine: 'optional - engine value consumed by #scoreboard'
|
|
775
|
+
)
|
|
776
|
+
|
|
777
|
+
# Run health line and return its result
|
|
778
|
+
#{self}.health_line
|
|
779
|
+
|
|
780
|
+
# Run reset and return its result
|
|
781
|
+
#{self}.reset
|
|
782
|
+
|
|
783
|
+
# Print the AUTHOR(S) string for this module.
|
|
784
|
+
#{self}.authors
|
|
785
|
+
"
|
|
786
|
+
constants.sort
|
|
677
787
|
end
|
|
678
788
|
end
|
|
679
789
|
end
|
|
@@ -843,23 +843,132 @@ module PWN
|
|
|
843
843
|
# Display Usage for this Module
|
|
844
844
|
|
|
845
845
|
public_class_method def self.help
|
|
846
|
-
puts
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
|
|
850
|
-
|
|
851
|
-
|
|
852
|
-
|
|
853
|
-
|
|
854
|
-
|
|
855
|
-
|
|
856
|
-
|
|
857
|
-
|
|
858
|
-
|
|
859
|
-
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
|
|
846
|
+
puts "USAGE:
|
|
847
|
+
# Run load and return its result
|
|
848
|
+
#{self}.load
|
|
849
|
+
|
|
850
|
+
# Run save and return its result
|
|
851
|
+
#{self}.save(
|
|
852
|
+
store: 'optional - store value consumed by #save'
|
|
853
|
+
)
|
|
854
|
+
|
|
855
|
+
# Run signature and return its result
|
|
856
|
+
#{self}.signature(
|
|
857
|
+
tool: 'required - tool/component name that failed',
|
|
858
|
+
error: 'required - raw error text (will be normalised)'
|
|
859
|
+
)
|
|
860
|
+
|
|
861
|
+
# Run find and return its result
|
|
862
|
+
#{self}.find(
|
|
863
|
+
signature: 'optional - exact signature to fetch',
|
|
864
|
+
tool: 'optional - with error:, compute signature and fetch',
|
|
865
|
+
error: 'optional - raw error text (used with tool:)'
|
|
866
|
+
)
|
|
867
|
+
|
|
868
|
+
# Run for tool and return its result
|
|
869
|
+
#{self}.for_tool(
|
|
870
|
+
tool: 'required - tool name',
|
|
871
|
+
unresolved_only: 'optional - default false'
|
|
872
|
+
)
|
|
873
|
+
|
|
874
|
+
# Run record and return its result
|
|
875
|
+
#{self}.record(
|
|
876
|
+
tool: 'required - tool/component that produced the failure',
|
|
877
|
+
error: 'required - error text / message',
|
|
878
|
+
args: 'optional - args that triggered it (stored truncated as sample)',
|
|
879
|
+
session_id: 'optional - PWN::Sessions id',
|
|
880
|
+
source: 'optional - :tool | :user_correction | :loop | :model | :heuristic (default :tool)',
|
|
881
|
+
force: 'optional - force value consumed by #record',
|
|
882
|
+
meta: 'optional - meta value consumed by #record',
|
|
883
|
+
cause: 'optional - cause value consumed by #record (defaults to :self))',
|
|
884
|
+
shape: 'optional - shape value consumed by #record',
|
|
885
|
+
needs_code_change: 'optional - needs code change value consumed by #record'
|
|
886
|
+
)
|
|
887
|
+
|
|
888
|
+
# Run resolve and return its result
|
|
889
|
+
#{self}.resolve(
|
|
890
|
+
signature: 'required - mistake signature (from mistakes_list / .top)',
|
|
891
|
+
fix: 'required - what to do INSTEAD next time',
|
|
892
|
+
structured: 'optional - structured value consumed by #resolve',
|
|
893
|
+
clear_needs_code_change: 'optional - clear needs code change value consumed by #resolve'
|
|
894
|
+
)
|
|
895
|
+
|
|
896
|
+
# Run top and return its result
|
|
897
|
+
#{self}.top(
|
|
898
|
+
limit: 'optional - max rows (default 10)',
|
|
899
|
+
unresolved_only: 'optional - default true',
|
|
900
|
+
practiceable_only: 'optional - practiceable only value consumed by #top'
|
|
901
|
+
)
|
|
902
|
+
|
|
903
|
+
# Run extinguish and return its result
|
|
904
|
+
#{self}.extinguish!(
|
|
905
|
+
signature: 'optional - signature value consumed by #extinguish!',
|
|
906
|
+
shape: 'optional - shape value consumed by #extinguish!',
|
|
907
|
+
force: 'optional - force value consumed by #extinguish!'
|
|
908
|
+
)
|
|
909
|
+
|
|
910
|
+
# Auto-resolve parked items that already have a known extinguish recipe
|
|
911
|
+
#{self}.extinguish_parked!(
|
|
912
|
+
limit: 'optional - limit value consumed by #extinguish_parked!',
|
|
913
|
+
dry_run: 'optional - dry run value consumed by #extinguish_parked!'
|
|
914
|
+
)
|
|
915
|
+
|
|
916
|
+
# Run park and return its result
|
|
917
|
+
#{self}.park(
|
|
918
|
+
signature: 'required - signature value consumed by #park',
|
|
919
|
+
reason: 'optional - reason value consumed by #park'
|
|
920
|
+
)
|
|
921
|
+
|
|
922
|
+
# Operator inbox: parked / needs_code_change / needs_human scars that
|
|
923
|
+
#{self}.operator_inbox(
|
|
924
|
+
limit: 'optional - limit value consumed by #operator_inbox'
|
|
925
|
+
)
|
|
926
|
+
|
|
927
|
+
# Run to context and return its result
|
|
928
|
+
#{self}.to_context(
|
|
929
|
+
limit: 'optional - limit value consumed by #to_context (defaults to 6)',
|
|
930
|
+
request: 'optional - request value consumed by #to_context',
|
|
931
|
+
include_open: 'optional - include open value consumed by #to_context',
|
|
932
|
+
full: 'optional - full value consumed by #to_context'
|
|
933
|
+
)
|
|
934
|
+
|
|
935
|
+
# Run correction hint and return its result
|
|
936
|
+
#{self}.correction_hint(
|
|
937
|
+
tool: 'required - tool that just failed',
|
|
938
|
+
error: 'required - raw error it failed with'
|
|
939
|
+
)
|
|
940
|
+
|
|
941
|
+
# Run correction and return its result
|
|
942
|
+
#{self}.correction?(
|
|
943
|
+
request: 'optional - request value consumed by #correction?'
|
|
944
|
+
)
|
|
945
|
+
|
|
946
|
+
# Run check user correction and return its result
|
|
947
|
+
#{self}.check_user_correction(
|
|
948
|
+
request: 'required - the incoming user message',
|
|
949
|
+
session_id: 'optional - session to inspect for the previous answer'
|
|
950
|
+
)
|
|
951
|
+
|
|
952
|
+
# Run lean and return its result
|
|
953
|
+
#{self}.lean!(
|
|
954
|
+
dry_run: 'optional - Boolean (default false)',
|
|
955
|
+
max_resolved_kept: 'optional - cap on resolved-with-fix records',
|
|
956
|
+
resolved_min_age_days: 'optional - age before resolved count=1 may drop'
|
|
957
|
+
)
|
|
958
|
+
|
|
959
|
+
# Run reset and return its result
|
|
960
|
+
#{self}.reset
|
|
961
|
+
|
|
962
|
+
# Age-weighted count for [REPEATING] threshold — a ×8 signature from
|
|
963
|
+
#{self}.effective_count(
|
|
964
|
+
mistake: 'optional - mistake value consumed by #effective_count',
|
|
965
|
+
signature: 'optional - signature value consumed by #effective_count'
|
|
966
|
+
)
|
|
967
|
+
|
|
968
|
+
# Print the AUTHOR(S) string for this module.
|
|
969
|
+
#{self}.authors
|
|
970
|
+
"
|
|
971
|
+
constants.sort
|
|
863
972
|
end
|
|
864
973
|
end
|
|
865
974
|
end
|
|
@@ -67,15 +67,31 @@ module PWN
|
|
|
67
67
|
end
|
|
68
68
|
|
|
69
69
|
public_class_method def self.help
|
|
70
|
-
puts
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
70
|
+
puts "USAGE:
|
|
71
|
+
# Run goal file and return its result
|
|
72
|
+
#{self}.goal_file
|
|
73
|
+
|
|
74
|
+
# Run current and return its result
|
|
75
|
+
#{self}.current
|
|
76
|
+
|
|
77
|
+
# Run begin and return its result
|
|
78
|
+
#{self}.begin!(
|
|
79
|
+
request: 'required - request value consumed by #begin!',
|
|
80
|
+
session_id: 'optional - session id value consumed by #begin!'
|
|
81
|
+
)
|
|
82
|
+
|
|
83
|
+
# Run clear and return its result
|
|
84
|
+
#{self}.clear!
|
|
85
|
+
|
|
86
|
+
# Run resume and return its result
|
|
87
|
+
#{self}.resume?(
|
|
88
|
+
request: 'optional - request value consumed by #resume?'
|
|
89
|
+
)
|
|
90
|
+
|
|
91
|
+
# Print the AUTHOR(S) string for this module.
|
|
92
|
+
#{self}.authors
|
|
93
|
+
"
|
|
94
|
+
constants.sort
|
|
79
95
|
end
|
|
80
96
|
end
|
|
81
97
|
end
|