agentdebugx 0.4.0__tar.gz → 0.5.0__tar.gz
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.
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/PKG-INFO +1 -1
- agentdebugx-0.5.0/docs/taxonomy_manifest.md +36 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/pyproject.toml +1 -1
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/__init__.py +1 -1
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/diagnose/attribute/__init__.py +6 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/diagnose/attribute/attribution.py +41 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/diagnose/detect/README.md +58 -0
- agentdebugx-0.5.0/src/agentdebug/diagnose/detect/evidence.py +940 -0
- agentdebugx-0.5.0/src/agentdebug/ingest/README.md +66 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/ingest/__init__.py +6 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/ingest/adapters/importers.py +16 -0
- agentdebugx-0.5.0/src/agentdebug/ingest/native_protocol.py +588 -0
- agentdebugx-0.5.0/src/agentdebug/provenance.py +69 -0
- agentdebugx-0.5.0/src/agentdebug/taxonomy_manifest.py +384 -0
- agentdebugx-0.4.0/src/agentdebug/diagnose/detect/evidence.py +0 -360
- agentdebugx-0.4.0/src/agentdebug/ingest/README.md +0 -43
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/LICENSE +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/README.md +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/docs/ARCHITECTURE.md +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/docs/GUI_RCA_COMMANDS.md +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/docs/TRACE_SCHEMA.md +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/docs/assets/UI.png +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/docs/assets/logo-dark.svg +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/docs/assets/logo.png +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/docs/assets/logo.svg +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/docs/assets/overview.pdf +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/docs/assets/overview.png +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/docs/assets/stylesheets/extra.css +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/docs/concepts/workflow.md +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/docs/getting-started/installation.md +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/docs/getting-started/quickstart.md +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/docs/guides/diagnose.md +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/docs/guides/gui-rca.md +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/docs/guides/ingest.md +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/docs/guides/local-ui.md +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/docs/guides/rerun.md +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/docs/help/build-docs.md +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/docs/help/troubleshooting.md +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/docs/index.md +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/docs/reference/cli.md +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/docs/reference/diagnostic-report.md +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/docs/reference/python-api.md +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/batch/README.md +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/batch/__init__.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/batch/workflow.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/capture/README.md +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/capture/__init__.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/capture/config.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/capture/context.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/capture/contracts.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/capture/filtering.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/capture/hosts/CODEX_SUPPORT.md +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/capture/hosts/README.md +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/capture/hosts/__init__.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/capture/hosts/base.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/capture/hosts/claude_code.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/capture/hosts/codex.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/capture/hosts/registry.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/capture/identity.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/capture/repository.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/capture/service.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/capture/snapshot.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/cli/README.md +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/cli/__init__.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/cli/__main__.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/cli/commands/__init__.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/cli/commands/batch.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/cli/commands/capture.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/cli/commands/config.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/cli/commands/diagnose.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/cli/commands/doctor.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/cli/commands/hub.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/cli/commands/ingest.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/cli/commands/integrations.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/cli/commands/rerun.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/cli/commands/run.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/cli/commands/runner.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/cli/commands/serve.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/cli/commands/store.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/cli/commands/ui.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/cli/legacy.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/cli/main.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/core/__init__.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/core/events.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/core/gui_taxonomy.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/core/llm.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/core/llm_channel.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/core/models.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/core/plugins/__init__.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/core/plugins/registry.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/core/plugins/types.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/core/storage.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/core/taxonomy.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/diagnose/README.md +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/diagnose/__init__.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/diagnose/actions/__init__.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/diagnose/actions/attribution.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/diagnose/actions/hub/__init__.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/diagnose/actions/hub/backend_base.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/diagnose/actions/hub/backends.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/diagnose/actions/hub/bundle.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/diagnose/actions/hub/scrub.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/diagnose/actions/integrations/__init__.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/diagnose/actions/integrations/_templates.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/diagnose/actions/integrations/claude_skill.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/diagnose/actions/integrations/debug_skill.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/diagnose/actions/integrations/openhands.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/diagnose/actions/moe.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/diagnose/actions/recovery.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/diagnose/analyzers.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/diagnose/attribute/README.md +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/diagnose/attribute/async_api.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/diagnose/attribute/deep_memory.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/diagnose/attribute/deepdebug.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/diagnose/attribute/moe.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/diagnose/attribute/reference.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/diagnose/attribute/trajdebug.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/diagnose/component_manifests/__init__.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/diagnose/component_manifests/attribute/__init__.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/diagnose/component_manifests/attribute/all_at_once.json +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/diagnose/component_manifests/attribute/binary_search.json +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/diagnose/component_manifests/attribute/counterfactual.json +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/diagnose/component_manifests/attribute/deepdebug.json +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/diagnose/component_manifests/attribute/heuristic.json +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/diagnose/component_manifests/attribute/step_by_step.json +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/diagnose/component_manifests/attribute/trajdebug.json +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/diagnose/component_manifests/detect/__init__.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/diagnose/component_manifests/detect/heuristic.json +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/diagnose/component_manifests/detect/llm_judge.json +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/diagnose/component_manifests/detect/perstep.json +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/diagnose/component_manifests/detect/stage_a.json +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/diagnose/component_manifests/detect/trajdebug.json +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/diagnose/component_manifests/recover/__init__.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/diagnose/component_manifests/recover/auto_manual.json +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/diagnose/component_manifests/recover/critic.json +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/diagnose/component_manifests/recover/deepdebug.json +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/diagnose/component_manifests/recover/reflexion.json +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/diagnose/component_manifests/recover/saga_rollback.json +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/diagnose/component_manifests/recover/self_refine.json +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/diagnose/context.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/diagnose/deep.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/diagnose/deep_memory.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/diagnose/detect/__init__.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/diagnose/detect/analyzers.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/diagnose/detect/compression.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/diagnose/detect/detectors.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/diagnose/detect/judge.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/diagnose/detect/perstep.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/diagnose/detect/rules/__init__.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/diagnose/detect/rules/agenterrorbench.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/diagnose/detect/rules/base.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/diagnose/detect/rules/core.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/diagnose/detect/rules/gui.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/diagnose/detect/rules/packs/__init__.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/diagnose/detect/rules/packs/agenterrorbench/__init__.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/diagnose/detect/rules/packs/agenterrorbench/manifest.json +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/diagnose/detect/rules/packs/agenterrorbench/rules.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/diagnose/detect/rules/packs/core/__init__.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/diagnose/detect/rules/packs/core/manifest.json +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/diagnose/detect/rules/packs/core/rules.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/diagnose/detect/rules/packs/gui/__init__.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/diagnose/detect/rules/packs/gui/manifest.json +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/diagnose/detect/rules/packs/gui/rules.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/diagnose/detect/rules/registry.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/diagnose/detect/rules.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/diagnose/detect/selection.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/diagnose/detect/taxonomy_induction.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/diagnose/detect/trajdebug.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/diagnose/detectors.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/diagnose/deterministic.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/diagnose/gui_rca.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/diagnose/judge.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/diagnose/judges.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/diagnose/pipeline.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/diagnose/profiles/README.md +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/diagnose/profiles/__init__.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/diagnose/profiles/deepdebug.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/diagnose/recover/README.md +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/diagnose/recover/__init__.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/diagnose/recover/recovery.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/diagnose/registry.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/diagnose/rules/__init__.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/diagnose/rules/agenterrorbench.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/diagnose/rules/base.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/diagnose/rules/core.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/diagnose/rules/gui.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/diagnose/rules/registry.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/diagnose/taxonomy_induction.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/gui/__init__.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/gui/__main__.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/gui/agent.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/gui/config/debugger.example.json +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/gui/config.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/gui/discuss.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/gui/dispatch.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/gui/eval/__init__.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/gui/eval/accuracy.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/gui/evolving/__init__.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/gui/evolving/alignment.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/gui/evolving/case_loader.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/gui/evolving/prompts.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/gui/evolving/protocol.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/gui/evolving/runner.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/gui/evolving/state.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/gui/evolving/tools.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/gui/ingester.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/gui/memory/__init__.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/gui/memory/annotation_loader.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/gui/memory/distill.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/gui/memory/episode_memory.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/gui/memory/intention.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/gui/memory/lesson_injector.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/gui/memory/lesson_memory.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/gui/memory/semantic_merge.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/gui/openai_adapter.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/gui/output.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/gui/perplexity_adapter.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/gui/pipeline/__init__.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/gui/pipeline/classify.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/gui/pipeline/client_factory.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/gui/pipeline/orchestrator.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/gui/pipeline/results.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/gui/pipeline/runtime.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/gui/pipeline/worker.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/gui/prompts.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/gui/prompts_discuss.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/gui/rca.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/gui/scripts/__init__.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/gui/scripts/download_input_trajectory.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/gui/tagger.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/gui/taxonomy.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/gui/together_adapter.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/gui/tools/__init__.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/gui/tools/lesson_explorer.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/gui/trajectory.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/gui/trajectory_normalizer.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/gui/utils/__init__.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/gui/utils/lock.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/gui/utils/logger.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/gui/vis/__init__.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/gui/vis/debugger_app.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/gui/vis/generate_assignments.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/hub/README.md +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/hub/__init__.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/hub/backend_base.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/hub/backends.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/hub/bundle.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/hub/scrub.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/ingest/adapters/__init__.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/ingest/adapters/base.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/ingest/adapters/crewai.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/ingest/adapters/gaia_odr.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/ingest/adapters/langgraph.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/ingest/adapters/openai_agents.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/ingest/adapters/osworld.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/ingest/adapters/otel.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/ingest/adapters/raw.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/ingest/adapters/trajdebug.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/ingest/core/__init__.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/ingest/importers.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/ingest/instrumentation.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/ingest/recorder.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/inspect/README.md +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/inspect/__init__.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/inspect/discussion.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/inspect/traceback.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/inspect/ui/__init__.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/inspect/ui/app.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/inspect/ui/assets/robot-avatar.svg +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/inspect/ui/branch_store.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/inspect/ui/discussion_store.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/inspect/ui/llm_convert.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/inspect/ui/manager.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/inspect/ui/mcp_rerun.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/inspect/ui/routes.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/inspect/ui/server.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/inspect/ui/services.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/inspect/ui/upload.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/inspect/ui/views.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/integrations/README.md +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/integrations/__init__.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/integrations/_templates.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/integrations/agentdebug_skill/SKILL.md +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/integrations/agentdebug_skill/references/analysis.md +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/integrations/agentdebug_skill/references/cli_reference.md +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/integrations/agentdebug_skill/references/formats.md +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/integrations/agentdebug_skill/references/recovery.md +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/integrations/agentdebug_skill/references/safety.md +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/integrations/agentdebug_skill/references/setup.md +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/integrations/capture_management.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/integrations/claude_skill.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/integrations/codex_skill.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/integrations/debug_skill.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/integrations/management.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/integrations/openhands.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/py.typed +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/rerun/ACTOR_TASK_SPEC.md +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/rerun/README.md +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/rerun/RUNNER_SPEC.md +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/rerun/SIMULATION_SPEC.md +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/rerun/__init__.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/rerun/actor_task.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/rerun/branch.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/rerun/evaluators.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/rerun/executors/__init__.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/rerun/executors/base.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/rerun/executors/http_live.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/rerun/executors/llm_continuation.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/rerun/executors/process_live.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/rerun/http_service.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/rerun/live_validation.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/rerun/request.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/rerun/workflow.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/runtime/README.md +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/runtime/__init__.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/runtime/events.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/runtime/gui_taxonomy.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/runtime/llm.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/runtime/llm_channel.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/runtime/plugins/__init__.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/runtime/plugins/registry.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/runtime/plugins/types.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/runtime/storage.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/schema/README.md +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/schema/__init__.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/schema/models.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/schema/taxonomy.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/workbench/README.md +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/workbench/__init__.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/workbench/models.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/workbench/profiles.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/workbench/registry.py +0 -0
- {agentdebugx-0.4.0 → agentdebugx-0.5.0}/src/agentdebug/workbench/service.py +0 -0
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# Taxonomy manifest and classification contract
|
|
2
|
+
|
|
3
|
+
`agentdebug.taxonomy_manifest` freezes `SEED_FAILURE_MODES` into a JSON-serialisable
|
|
4
|
+
document with a content fingerprint and the package revision it came from, and defines a
|
|
5
|
+
side-effect-free classification contract on top of it. A label stored in a corpus is only
|
|
6
|
+
interpretable if the reader can recover the exact definitions the labeller saw; the
|
|
7
|
+
fingerprint is how a corpus notices that its labels and its taxonomy drifted apart.
|
|
8
|
+
|
|
9
|
+
```python
|
|
10
|
+
from agentdebug.taxonomy_manifest import (
|
|
11
|
+
ClassificationRequest, cohens_kappa, compile_classification_prompt,
|
|
12
|
+
parse_classification_response, taxonomy_manifest,
|
|
13
|
+
)
|
|
14
|
+
|
|
15
|
+
manifest = taxonomy_manifest() # 23 modes in 9 families, fingerprint, source_revision
|
|
16
|
+
system, user = compile_classification_prompt(manifest, ClassificationRequest(
|
|
17
|
+
trace_uid="tr-1", task_statement="...", outcome_text="failed", window=rendered_tail))
|
|
18
|
+
reply = my_client.complete(system=system, user=user) # the consumer owns the call and its budget
|
|
19
|
+
result = parse_classification_response(reply.text, manifest)
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
`ClassificationResult` carries `mode_id`, `family`, optional `submode`, `decisive_step`,
|
|
23
|
+
`evidence_quote`, `rationale`, `confidence` in [0, 1], and an explicit `abstain` with one of
|
|
24
|
+
`ABSTAIN_REASONS` (`infrastructure_fault`, `decisive_step_not_in_window`, `ambiguous`,
|
|
25
|
+
`unknown_mode`, `malformed_response`, `unparsed`). Infrastructure faults and ambiguous cases
|
|
26
|
+
are never forced into an agent-error family. `parse_classification_response` never raises:
|
|
27
|
+
fenced JSON, trailing prose, an unknown mode id, duplicate keys and malformed JSON all map to a
|
|
28
|
+
result or an abstention with the raw object preserved.
|
|
29
|
+
|
|
30
|
+
The grouping from leaf modes to families keeps every family, including `verification`,
|
|
31
|
+
`multiagent`, `multimodal` and `observation`. `cohens_kappa(labels_a, labels_b)` measures
|
|
32
|
+
two-judge agreement over the items both labelled and returns `None` where kappa is undefined.
|
|
33
|
+
|
|
34
|
+
Consumers keep provider calls, budgets, metering, trace binding and append-only storage; a
|
|
35
|
+
row should record the manifest `fingerprint`, `source_revision` and the SHA-256 of the
|
|
36
|
+
compiled prompt so the classification is reproducible from the stored reply.
|
|
@@ -18,7 +18,10 @@ from agentdebug.diagnose.attribute.attribution import (
|
|
|
18
18
|
CorrectedAction,
|
|
19
19
|
CounterfactualAttributor,
|
|
20
20
|
EnsembleAttributor,
|
|
21
|
+
AttributionUnavailable,
|
|
21
22
|
HeuristicAttributor,
|
|
23
|
+
NO_FALLBACK,
|
|
24
|
+
NoFallback,
|
|
22
25
|
SBFLAttributor,
|
|
23
26
|
StepByStepAttributor,
|
|
24
27
|
)
|
|
@@ -42,7 +45,10 @@ __all__ = [
|
|
|
42
45
|
'DeepDebugResult',
|
|
43
46
|
'DeepDebugRound',
|
|
44
47
|
'EnsembleAttributor',
|
|
48
|
+
'AttributionUnavailable',
|
|
45
49
|
'HeuristicAttributor',
|
|
50
|
+
'NO_FALLBACK',
|
|
51
|
+
'NoFallback',
|
|
46
52
|
'SBFLAttributor',
|
|
47
53
|
'StepByStepAttributor',
|
|
48
54
|
'attribute_async',
|
|
@@ -162,6 +162,47 @@ class Attributor(Protocol):
|
|
|
162
162
|
...
|
|
163
163
|
|
|
164
164
|
|
|
165
|
+
class AttributionUnavailable(RuntimeError):
|
|
166
|
+
"""The model-based attributor produced nothing and the caller refused a substitute.
|
|
167
|
+
|
|
168
|
+
Raised by :data:`NO_FALLBACK` where an attributor would otherwise hand the
|
|
169
|
+
trajectory to its ``fallback``. The message names the attributor and the
|
|
170
|
+
reason (an LLM error, or a reply with no JSON block), so a corpus can
|
|
171
|
+
record the attempt as a dropout instead of a heuristic label that looks
|
|
172
|
+
like a model one.
|
|
173
|
+
"""
|
|
174
|
+
|
|
175
|
+
|
|
176
|
+
class NoFallback:
|
|
177
|
+
"""An ``Attributor`` that refuses, for callers who want fail-closed attribution.
|
|
178
|
+
|
|
179
|
+
Every model-based attributor defaults to ``fallback or HeuristicAttributor()``:
|
|
180
|
+
when the model call fails or returns no JSON, a model-free ranking of the
|
|
181
|
+
detector findings is returned under the *same* result type, and nothing
|
|
182
|
+
downstream can tell the two apart. Pass ``fallback=NO_FALLBACK`` to make that
|
|
183
|
+
path raise :class:`AttributionUnavailable` instead. Measured by a consumer
|
|
184
|
+
on 887 rows: the silent substitute fired on 16.7% of one model's attempts
|
|
185
|
+
against 0.5% of another's, all labelled as model attributions.
|
|
186
|
+
"""
|
|
187
|
+
|
|
188
|
+
id = 'no_fallback'
|
|
189
|
+
requires_findings = False
|
|
190
|
+
|
|
191
|
+
def attribute(
|
|
192
|
+
self,
|
|
193
|
+
trajectory: AgentTrajectory,
|
|
194
|
+
findings: Optional[List[FailureFinding]] = None,
|
|
195
|
+
) -> AttributionResult:
|
|
196
|
+
raise AttributionUnavailable(
|
|
197
|
+
f'attribution unavailable for trace {trajectory.trace_id!r}: the model-based '
|
|
198
|
+
'attributor produced no usable result and fallback is disabled (NO_FALLBACK)'
|
|
199
|
+
)
|
|
200
|
+
|
|
201
|
+
|
|
202
|
+
#: Pass as ``fallback=`` to any attributor to disable the heuristic substitute.
|
|
203
|
+
NO_FALLBACK = NoFallback()
|
|
204
|
+
|
|
205
|
+
|
|
165
206
|
class HeuristicAttributor:
|
|
166
207
|
"""Cheap, model-free fallback that picks the earliest highest-confidence finding.
|
|
167
208
|
|
|
@@ -64,6 +64,64 @@ still fails.
|
|
|
64
64
|
|
|
65
65
|
Adapted from TrajDebug Stage B (THU-KEG/TrajDebug, MIT).
|
|
66
66
|
|
|
67
|
+
### Where a quote came from
|
|
68
|
+
|
|
69
|
+
`quote_verified` is a boolean, which is what a detector needs to keep or drop
|
|
70
|
+
a finding. A consumer that stores findings needs to know *where* a quote was
|
|
71
|
+
found, because position is evidence too: a verbatim quote of the grader's
|
|
72
|
+
verdict at the last event does not support a diagnosis of step 4.
|
|
73
|
+
|
|
74
|
+
`locate_quote(trajectory, quote, anchor=None, shown=None)` returns a
|
|
75
|
+
`QuoteLocation`:
|
|
76
|
+
|
|
77
|
+
- `rung` -- `exact` (verbatim substring of the stored field), `normalized`
|
|
78
|
+
(after the same normalisation `verify_finding_quotes` applies, plus removal
|
|
79
|
+
of the renderer's `[step 3] event_id=... output=` framing and one pair of
|
|
80
|
+
wrapping quotation marks), `anchored` (the text was found nowhere but the
|
|
81
|
+
quote or the caller named an event id that exists -- a pointer, not a
|
|
82
|
+
transcription), or `unresolvable`
|
|
83
|
+
- `region` -- `event`, `shown` (the text a detector rendered for an event),
|
|
84
|
+
`goal`, or `none`; with `event_id`, `event_index`, `step_index`,
|
|
85
|
+
`event_type` and `field` (`input` / `output` / `error`) for an event
|
|
86
|
+
- `span` and `text` -- character offsets into the stored field (as `str`, or
|
|
87
|
+
`repr` for a non-string value), the `shown` text, or the goal, and the slice
|
|
88
|
+
they cover. Offsets are into the raw field even when the match was made after
|
|
89
|
+
unescaping, so `event.output[start:end]` is the cited text
|
|
90
|
+
- `anchor` and `anchor_status` -- `not_declared`, `resolved`, `unknown_event`
|
|
91
|
+
(an id the trajectory does not contain), or `elsewhere` (a real id whose
|
|
92
|
+
event does not contain the text: a mislabelling, not a fabrication)
|
|
93
|
+
- `grounded` -- `rung` is `exact` or `normalized` and `region` is `event` or
|
|
94
|
+
`shown`. A goal quote is faithful and grounds nothing about the trajectory;
|
|
95
|
+
a real pointer locates an event but cannot be checked by string search.
|
|
96
|
+
|
|
97
|
+
Rungs are tried strictest first; within a rung the anchor's event is searched
|
|
98
|
+
before the others, then the remaining events in order, then the goal.
|
|
99
|
+
|
|
100
|
+
`resolve_anchor(trajectory, event_id)` returns the event an id names, by exact
|
|
101
|
+
match, or `None`.
|
|
102
|
+
|
|
103
|
+
`grounds_trajectory(findings, trajectory, shown=None)` locates the
|
|
104
|
+
`wrong_content_quote` (anchored on the blamed event) and `reference_quote` of
|
|
105
|
+
each finding and places each relative to the blamed event: `position` is
|
|
106
|
+
`before` / `at` / `after`, and `at_or_before_blame` is the question a consumer
|
|
107
|
+
asks -- was this text in front of the agent when it acted? `FindingGrounding.
|
|
108
|
+
grounded` is `None` for a finding with no quotes (as `quote_verified` is),
|
|
109
|
+
and otherwise requires every quote to be located under a grounding rung, none
|
|
110
|
+
to come from after the blame, and the wrong-content quote to sit at it.
|
|
111
|
+
`annotate_evidence_regions(findings, trajectory)` writes that as JSON into
|
|
112
|
+
`finding.metadata['evidence_regions']`, next to `quote_verified`.
|
|
113
|
+
|
|
114
|
+
```python
|
|
115
|
+
from agentdebug.diagnose.detect.evidence import locate_quote, grounds_trajectory
|
|
116
|
+
|
|
117
|
+
loc = locate_quote(trajectory, 'you see a cd 3')
|
|
118
|
+
loc.rung, loc.event_id, loc.field, loc.span # 'exact', 'evt_...', 'output', (17, 31)
|
|
119
|
+
|
|
120
|
+
for g in grounds_trajectory(report.findings, trajectory):
|
|
121
|
+
for q in g.quotes:
|
|
122
|
+
print(g.finding_id, q.role, q.location.rung, q.position, q.at_or_before_blame)
|
|
123
|
+
```
|
|
124
|
+
|
|
67
125
|
## Context budget
|
|
68
126
|
|
|
69
127
|
Both LLM detectors render the trajectory by clipping each event to a fixed
|