execweave 0.8.8__tar.gz → 0.8.9__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.
- {execweave-0.8.8 → execweave-0.8.9}/.github/workflows/provider-capability-stage-integrity.yml +36 -0
- {execweave-0.8.8 → execweave-0.8.9}/.github/workflows/provider-dashboard-contract.yml +33 -0
- {execweave-0.8.8 → execweave-0.8.9}/PKG-INFO +2 -2
- {execweave-0.8.8 → execweave-0.8.9}/README.de.md +1 -1
- {execweave-0.8.8 → execweave-0.8.9}/README.fr.md +1 -1
- {execweave-0.8.8 → execweave-0.8.9}/README.ja.md +1 -1
- {execweave-0.8.8 → execweave-0.8.9}/README.ko.md +1 -1
- {execweave-0.8.8 → execweave-0.8.9}/README.md +1 -1
- {execweave-0.8.8 → execweave-0.8.9}/README.ru.md +1 -1
- {execweave-0.8.8 → execweave-0.8.9}/README.zh-CN.md +1 -1
- {execweave-0.8.8 → execweave-0.8.9}/README.zh-TW.md +1 -1
- {execweave-0.8.8 → execweave-0.8.9}/pyproject.toml +2 -2
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/__init__.py +1 -1
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/antigravity_full_fidelity.py +79 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/antigravity_subagent_linkage.py +56 -30
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/conversation_records_antigravity.py +6 -5
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/graph.py +166 -59
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/live.py +80 -7
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/live_view_process_layout.py +66 -7
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/live_view_readability.py +2 -2
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/live_view_script_d.py +5 -5
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/live_view_style.py +1 -1
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/viewer_agent_panel.py +2 -0
- execweave-0.8.9/src/execweave/viewer_projection.py +463 -0
- execweave-0.8.9/tests/test_antigravity_field_run_regressions.py +280 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_antigravity_subagent_transcript_linkage.py +69 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_dashboard_information_architecture.py +5 -1
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_graph.py +70 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_graph_edge_routing_e2e.py +11 -4
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_live_logs_export.py +4 -2
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_process_tree_layout.py +61 -8
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_provider_dashboard_contract.py +131 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_v069_dashboard_release.py +3 -3
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_viewer_agent_isolation_e2e.py +243 -0
- execweave-0.8.8/src/execweave/viewer_projection.py +0 -198
- {execweave-0.8.8 → execweave-0.8.9}/.github/workflows/ci.yml +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/.github/workflows/cleanup-workflow-history.yml +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/.github/workflows/i18n.yml +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/.github/workflows/package-benchmark.yml +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/.github/workflows/package-smoke.yml +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/.github/workflows/publish.yml +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/.github/workflows/scalability.yml +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/.github/workflows/viewer-agent-isolation.yml +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/.github/workflows/wheel-smoke.yml +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/.github/workflows/windows-launcher.yml +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/.gitignore +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/LICENSE +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/benchmarks/phase1_overhead.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/docs/antigravity-hooks.md +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/docs/assets/codex.gif +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/docs/benchmarks/README.md +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/docs/benchmarks/v0.6.0-github-actions.json +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/docs/benchmarks/v0.6.0-github-actions.svg +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/docs/claude-code-hooks.de.md +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/docs/claude-code-hooks.fr.md +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/docs/claude-code-hooks.ja.md +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/docs/claude-code-hooks.ko.md +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/docs/claude-code-hooks.md +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/docs/claude-code-hooks.ru.md +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/docs/claude-code-hooks.zh-CN.md +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/docs/claude-code-hooks.zh-TW.md +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/docs/codex-hooks.de.md +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/docs/codex-hooks.fr.md +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/docs/codex-hooks.ja.md +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/docs/codex-hooks.ko.md +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/docs/codex-hooks.md +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/docs/codex-hooks.ru.md +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/docs/codex-hooks.zh-CN.md +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/docs/codex-hooks.zh-TW.md +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/docs/cursor-hooks.de.md +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/docs/cursor-hooks.fr.md +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/docs/cursor-hooks.ja.md +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/docs/cursor-hooks.ko.md +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/docs/cursor-hooks.md +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/docs/cursor-hooks.ru.md +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/docs/cursor-hooks.zh-CN.md +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/docs/cursor-hooks.zh-TW.md +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/docs/evidence-grades.de.md +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/docs/evidence-grades.fr.md +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/docs/evidence-grades.ja.md +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/docs/evidence-grades.ko.md +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/docs/evidence-grades.md +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/docs/evidence-grades.ru.md +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/docs/evidence-grades.zh-CN.md +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/docs/evidence-grades.zh-TW.md +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/docs/inference-gateway.de.md +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/docs/inference-gateway.fr.md +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/docs/inference-gateway.ja.md +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/docs/inference-gateway.ko.md +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/docs/inference-gateway.md +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/docs/inference-gateway.ru.md +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/docs/inference-gateway.zh-CN.md +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/docs/inference-gateway.zh-TW.md +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/docs/internal/provider-capability-matrix.md +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/docs/live-graph.de.md +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/docs/live-graph.fr.md +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/docs/live-graph.ja.md +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/docs/live-graph.ko.md +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/docs/live-graph.md +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/docs/live-graph.ru.md +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/docs/live-graph.zh-CN.md +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/docs/live-graph.zh-TW.md +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/docs/model-runtime.de.md +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/docs/model-runtime.fr.md +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/docs/model-runtime.ja.md +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/docs/model-runtime.ko.md +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/docs/model-runtime.md +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/docs/model-runtime.ru.md +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/docs/model-runtime.zh-CN.md +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/docs/model-runtime.zh-TW.md +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/docs/opencode-plugin.de.md +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/docs/opencode-plugin.fr.md +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/docs/opencode-plugin.ja.md +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/docs/opencode-plugin.ko.md +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/docs/opencode-plugin.md +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/docs/opencode-plugin.ru.md +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/docs/opencode-plugin.zh-CN.md +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/docs/opencode-plugin.zh-TW.md +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/docs/phase-1-runtime-collection.de.md +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/docs/phase-1-runtime-collection.fr.md +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/docs/phase-1-runtime-collection.ja.md +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/docs/phase-1-runtime-collection.ko.md +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/docs/phase-1-runtime-collection.md +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/docs/phase-1-runtime-collection.ru.md +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/docs/phase-1-runtime-collection.zh-CN.md +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/docs/phase-1-runtime-collection.zh-TW.md +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/docs/phase-2-execution-graph.de.md +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/docs/phase-2-execution-graph.fr.md +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/docs/phase-2-execution-graph.ja.md +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/docs/phase-2-execution-graph.ko.md +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/docs/phase-2-execution-graph.md +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/docs/phase-2-execution-graph.ru.md +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/docs/phase-2-execution-graph.zh-CN.md +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/docs/phase-2-execution-graph.zh-TW.md +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/docs/remaining-provider-audit-v0.8.7.md +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/docs/rule-packs.de.md +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/docs/rule-packs.fr.md +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/docs/rule-packs.ja.md +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/docs/rule-packs.ko.md +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/docs/rule-packs.md +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/docs/rule-packs.ru.md +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/docs/rule-packs.zh-CN.md +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/docs/rule-packs.zh-TW.md +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/docs/run-integrity.de.md +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/docs/run-integrity.fr.md +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/docs/run-integrity.ja.md +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/docs/run-integrity.ko.md +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/docs/run-integrity.md +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/docs/run-integrity.ru.md +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/docs/run-integrity.zh-CN.md +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/docs/run-integrity.zh-TW.md +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/docs/runtime-threat-model.de.md +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/docs/runtime-threat-model.fr.md +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/docs/runtime-threat-model.ja.md +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/docs/runtime-threat-model.ko.md +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/docs/runtime-threat-model.md +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/docs/runtime-threat-model.ru.md +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/docs/runtime-threat-model.zh-CN.md +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/docs/runtime-threat-model.zh-TW.md +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/docs/security-analysis.de.md +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/docs/security-analysis.fr.md +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/docs/security-analysis.ja.md +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/docs/security-analysis.ko.md +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/docs/security-analysis.md +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/docs/security-analysis.ru.md +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/docs/security-analysis.zh-CN.md +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/docs/security-analysis.zh-TW.md +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/docs/semantic-telemetry.de.md +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/docs/semantic-telemetry.fr.md +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/docs/semantic-telemetry.ja.md +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/docs/semantic-telemetry.ko.md +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/docs/semantic-telemetry.md +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/docs/semantic-telemetry.ru.md +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/docs/semantic-telemetry.zh-CN.md +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/docs/semantic-telemetry.zh-TW.md +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/docs/v0.6.5-hardening-decisions.md +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/docs/v0.8.3-graph-ergonomics.md +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/scripts/audit_i18n_parity.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/scripts/check_claude_hook.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/scripts/check_claude_record_graph.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/scripts/check_codex_hook.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/scripts/check_conversation_records.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/scripts/check_correlation_graph.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/scripts/check_inference_gateway_cli.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/scripts/check_model_runtime_cli.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/scripts/check_openai_compatible_cli.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/scripts/check_release_stage_integrity.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/scripts/check_semantic_graph.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/scripts/check_viewer_js.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/scripts/check_wheel_install.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/scripts/check_windows_launchers.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/scripts/emit_claude_hook_smoke.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/scripts/emit_codex_hook_smoke.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/scripts/emit_cursor_hook_smoke.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/scripts/emit_opencode_plugin_smoke.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/scripts/make_semantic_smoke.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/scripts/probe_provider_capability.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/scripts/sync_i18n_nav.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/__main__.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/_conversation_records_core.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/agent_bootstrap.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/agent_topology.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/agent_trace.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/agy_preview_sanitize.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/analysis.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/anthropic.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/anthropic_cli.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/anthropic_full_fidelity.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/antigravity_adapter.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/antigravity_adapter_base.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/antigravity_full_fidelity_base.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/antigravity_full_fidelity_collaboration_base.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/antigravity_hook_cli.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/antigravity_record.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/antigravity_trace_capability.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/auto_specialized.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/backends.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/benchmark.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/claude_adapter.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/claude_child_transcript.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/claude_delegation.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/claude_full_fidelity.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/claude_hook_cli.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/claude_hook_contract.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/claude_model_observer.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/claude_record.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/cli.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/codex_adapter.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/codex_conversation.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/codex_full_fidelity.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/codex_hook_cli.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/codex_hook_lifecycle.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/codex_message_diagnostics.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/codex_message_transport_diagnostics.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/codex_record.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/codex_rollout_structures.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/codex_rollout_trace.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/codex_rollout_trace_base.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/collector.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/command.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/content_evidence.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/content_store.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/conversation_archive.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/conversation_message_identity.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/conversation_preview.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/conversation_preview_antigravity.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/conversation_preview_claude.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/conversation_preview_codex.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/conversation_preview_common.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/conversation_preview_generic.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/conversation_preview_lines.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/conversation_preview_transcript.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/conversation_records.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/conversation_records_codex.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/conversation_records_common.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/conversation_records_ollama.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/correlation.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/cursor_adapter.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/cursor_delegation.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/cursor_delegation_base.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/cursor_full_fidelity.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/cursor_hook_cli.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/cursor_hook_contract.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/cursor_record.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/dashboard_shell.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/entry.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/evidence_availability.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/evidence_grade.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/fidelity.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/filesystem.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/focus.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/graph_ops.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/http_proxy.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/http_proxy_cli.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/inference_gateway.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/inference_gateway_cli.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/inference_gateway_full_fidelity.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/inference_identity.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/inference_identity_cli.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/integrity.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/integrity_cli.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/litellm_callback.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/litellm_callback_cli.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/live_core.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/live_view.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/live_view_extra_style.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/live_view_markup.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/live_view_script_a.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/live_view_script_b.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/live_view_script_c.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/model_runtime.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/model_runtime_cli.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/model_runtime_full_fidelity.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/openai_compatible.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/openai_compatible_cli.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/openai_compatible_full_fidelity.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/opencode_adapter.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/opencode_event_contract.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/opencode_full_fidelity.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/opencode_hook_cli.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/opencode_plugin_cli.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/opencode_record.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/opencode_task_linkage.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/overhead_benchmark.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/provider_capability.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/provider_lifecycle.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/provider_record.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/rule_pack.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/rule_pack_cli.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/scalability_benchmark.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/schema.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/scope.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/semantic.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/sink.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/strace_backend.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/stream_assembly.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/theme.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/top.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/top_cli.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/validate.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/vendor/dagre.min.js +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/view_cli.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/viewer.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/viewer_agent_panel_antigravity.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/viewer_agent_panel_claude.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/viewer_agent_panel_codex.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/viewer_agent_panel_cursor.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/viewer_agent_panel_default.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/viewer_agent_panel_ollama.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/viewer_agent_panel_opencode.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/viewer_agent_panel_registry.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/viewer_content_inspector.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/viewer_dashboard_clean.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/viewer_dashboard_focus.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/viewer_dashboard_hardening.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/viewer_dashboard_hardening_v2.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/viewer_external_endpoints.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/viewer_limits.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/viewer_live_layout.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/viewer_projection_base.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/src/execweave/workflow.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/dashboard_readability_fixture.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/fixtures/codex_multi_agent/PROVENANCE.md +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/fixtures/codex_multi_agent/hook-payloads.json +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/fixtures/codex_multi_agent/rollout-main.jsonl +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/fixtures/hooks/README.md +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/fixtures/hooks/claude.json +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/fixtures/hooks/codex.json +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/fixtures/hooks/cursor.json +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/fixtures/hooks/manifest.json +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/fixtures/hooks/opencode.json +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/multi_agent_run_fixture.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_agent_bootstrap.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_agent_message_viewer.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_agent_node_labels.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_agent_said_panel.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_agent_topology_evidence.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_agent_trace_lifecycle.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_agent_trace_viewer_visibility.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_agy_windows_wire_acceptance.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_analysis.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_anthropic.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_antigravity_agent_collaboration.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_antigravity_child_panel_policy.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_antigravity_child_transcript_tools.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_antigravity_cursor_launch.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_antigravity_history_replay.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_antigravity_identity_topology.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_antigravity_invocation_archive.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_antigravity_lifecycle.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_antigravity_linkage_projection.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_antigravity_multi_conversation_isolation.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_antigravity_official_contract.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_antigravity_role_path_fallback.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_antigravity_root_child_history_v2.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_antigravity_trace_capability_cli.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_auto_specialized.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_backends.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_claude_adapter.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_claude_child_transcript_tools.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_claude_delegation.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_claude_full_fidelity.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_claude_hook_contract.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_claude_hook_metadata.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_claude_hook_viewer.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_claude_model_observer.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_claude_record.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_codex_adapter.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_codex_archive_full_fidelity.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_codex_child_panel_policy.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_codex_conversation_isolation.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_codex_full_fidelity.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_codex_hook_lifecycle.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_codex_hook_partial_capture.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_codex_message_diagnostics.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_codex_message_transport_diagnostics.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_codex_nickname_path_fallback.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_codex_plain_routed_agent_message.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_codex_real_multi_agent_conversation.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_codex_record.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_codex_reducer_command.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_codex_rollout_structures.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_codex_rollout_trace.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_codex_routing_native_identity.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_collector.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_command.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_condense.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_conversation_access.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_conversation_agent_focus.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_conversation_agent_isolation.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_conversation_identity_merge.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_conversation_message_observation_dedupe.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_conversation_provider_parity.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_conversation_root_authority.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_correlation.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_correlation_canonical_path.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_correlation_checker.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_correlation_process_exe.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_cross_provider_agent_trace.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_cursor_adapter.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_cursor_delegation.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_cursor_full_fidelity.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_cursor_hook_contract.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_cursor_hook_fail_open.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_cursor_record.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_cursor_task_linkage.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_dashboard_readability_e2e.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_dashboard_round_fold_state_e2e.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_dashboard_simplification.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_dashboard_ux_and_hook_projection.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_delegation_viewer.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_evidence_grade.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_execution_viewer.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_external_endpoints_all_providers.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_fidelity.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_filesystem_resilience.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_focus.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_fold_budget_setting.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_full_fidelity.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_graph_clear_focus_e2e.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_graph_lane_separation_e2e.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_graph_node_sizing_e2e.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_graph_ops.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_hook_fixture_corpus.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_http_proxy.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_inference_endpoint_identity.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_inference_gateway.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_inference_gateway_full_fidelity.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_inference_identity.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_integrity.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_litellm_callback.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_live.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_live_auth.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_live_dashboard.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_live_dashboard_js.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_live_delta.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_live_theme.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_lmstudio_auto_specialized.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_local_runtime_live_capture.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_model_runtime.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_model_runtime_full_fidelity.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_ollama_panel_policy.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_openai_compatible.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_opencode_adapter.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_opencode_event_contract.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_opencode_event_lifecycle.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_opencode_full_fidelity.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_opencode_identity_unification.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_opencode_plugin.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_opencode_record.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_opencode_task_session_linkage.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_overhead_benchmark.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_per_agent_conversation_default.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_pr25_premerge_hardening_contract.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_pr25_premerge_hardening_e2e.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_provider_capability.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_provider_conversation_evidence.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_provider_conversation_history_integrity.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_provider_lifecycle.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_release_stage_integrity_version_guard.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_rule_pack.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_schema.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_scope.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_semantic.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_shared_injected_context_scope.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_strace_backend.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_stream_assembly.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_threat_model.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_tool_traffic_e2e.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_top_detached.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_v063_features.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_v064_live_auto_integrations.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_v064_live_evidence.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_v079_review_e2e.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_v079_review_regressions.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_v083_release_gate_p2.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_validate.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_version.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_viewer.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_viewer_child_authority.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_viewer_content_inspector.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_viewer_limits.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_viewer_projection.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_windows_codex_agy_display_repair.py +0 -0
- {execweave-0.8.8 → execweave-0.8.9}/tests/test_workflow.py +0 -0
{execweave-0.8.8 → execweave-0.8.9}/.github/workflows/provider-capability-stage-integrity.yml
RENAMED
|
@@ -111,6 +111,42 @@ jobs:
|
|
|
111
111
|
esac
|
|
112
112
|
done < <(git diff --name-only "$BASELINE_REF...HEAD" -- tests)
|
|
113
113
|
fi
|
|
114
|
+
if [[ "$HEAD_REF" == "fix/provider-history-aggregation" ]]; then
|
|
115
|
+
while IFS= read -r path; do
|
|
116
|
+
case "$path" in
|
|
117
|
+
tests/test_antigravity_subagent_transcript_linkage.py)
|
|
118
|
+
args+=(--allow-test-change "$path=follow-up Antigravity spawn pairs now select the validated latest transcript pair while preserving the historical duplicate-pair abstention contract")
|
|
119
|
+
;;
|
|
120
|
+
tests/test_graph.py)
|
|
121
|
+
args+=(--allow-test-change "$path=semantic transcript replay is folded into one graph transition while raw evidence counts remain visible")
|
|
122
|
+
;;
|
|
123
|
+
tests/test_live_logs_export.py)
|
|
124
|
+
args+=(--allow-test-change "$path=raw event details now expose safe inspection actions for the event source and file target nodes")
|
|
125
|
+
;;
|
|
126
|
+
tests/test_provider_dashboard_contract.py)
|
|
127
|
+
args+=(--allow-test-change "$path=all providers now assert repeated result aggregation and semantic-only raw file evidence")
|
|
128
|
+
;;
|
|
129
|
+
tests/test_dashboard_information_architecture.py)
|
|
130
|
+
args+=(--allow-test-change "$path=runtime and semantic raw evidence now retain independent 320-row budgets, so the combined raw panel limit is 640")
|
|
131
|
+
;;
|
|
132
|
+
tests/test_viewer_agent_isolation_e2e.py)
|
|
133
|
+
args+=(--allow-test-change "$path=browser regressions now verify semantic-only md inspection and AGY follow-up conversation continuity")
|
|
134
|
+
;;
|
|
135
|
+
esac
|
|
136
|
+
done < <(git diff --name-only "$BASELINE_REF...HEAD" -- tests)
|
|
137
|
+
fi
|
|
138
|
+
if [[ "$HEAD_REF" == "fix/dagre-routing-and-ports" ]]; then
|
|
139
|
+
while IFS= read -r path; do
|
|
140
|
+
case "$path" in
|
|
141
|
+
tests/test_process_tree_layout.py)
|
|
142
|
+
args+=(--allow-test-change "$path=dagre now exposes route points and ports are recomputed after layout; historical test names remain stable")
|
|
143
|
+
;;
|
|
144
|
+
tests/test_graph_edge_routing_e2e.py)
|
|
145
|
+
args+=(--allow-test-change "$path=ordinary edges now use dagre polylines instead of cubics while bundle and lifecycle-return families stay deliberate exceptions")
|
|
146
|
+
;;
|
|
147
|
+
esac
|
|
148
|
+
done < <(git diff --name-only "$BASELINE_REF...HEAD" -- tests)
|
|
149
|
+
fi
|
|
114
150
|
if [[ "$HEAD_REF" == "audit/remaining-providers-v0.8.7" ]]; then
|
|
115
151
|
args+=(--allow-retired-provider "gemini=Gemini integration was retired and replaced by the AGY/Antigravity provider; only Gemini-owned test IDs and files may disappear")
|
|
116
152
|
while IFS= read -r path; do
|
|
@@ -14,6 +14,38 @@ concurrency:
|
|
|
14
14
|
cancel-in-progress: ${{ github.event_name != 'workflow_dispatch' }}
|
|
15
15
|
|
|
16
16
|
jobs:
|
|
17
|
+
cross-platform:
|
|
18
|
+
name: ${{ matrix.os }} all-provider graph/history/raw contract
|
|
19
|
+
runs-on: ${{ matrix.os }}
|
|
20
|
+
timeout-minutes: 25
|
|
21
|
+
strategy:
|
|
22
|
+
fail-fast: false
|
|
23
|
+
matrix:
|
|
24
|
+
os: [ubuntu-latest, macos-latest, windows-latest]
|
|
25
|
+
|
|
26
|
+
steps:
|
|
27
|
+
- uses: actions/checkout@v4
|
|
28
|
+
- uses: actions/setup-python@v5
|
|
29
|
+
with:
|
|
30
|
+
python-version: "3.12"
|
|
31
|
+
cache: pip
|
|
32
|
+
- name: Install test dependencies
|
|
33
|
+
run: python -m pip install -e ".[dev]"
|
|
34
|
+
- name: Run provider-neutral graph, history, dashboard, and raw-event contracts
|
|
35
|
+
run: >-
|
|
36
|
+
python -m pytest -q
|
|
37
|
+
tests/test_provider_dashboard_contract.py
|
|
38
|
+
tests/test_conversation_provider_parity.py
|
|
39
|
+
tests/test_provider_conversation_evidence.py
|
|
40
|
+
tests/test_provider_conversation_history_integrity.py
|
|
41
|
+
tests/test_external_endpoints_all_providers.py
|
|
42
|
+
tests/test_graph.py
|
|
43
|
+
tests/test_antigravity_field_run_regressions.py
|
|
44
|
+
tests/test_antigravity_subagent_transcript_linkage.py
|
|
45
|
+
tests/test_antigravity_role_path_fallback.py
|
|
46
|
+
- name: Check dashboard JavaScript syntax
|
|
47
|
+
run: python -m pytest -q tests/test_live_dashboard_js.py tests/test_live_dashboard.py
|
|
48
|
+
|
|
17
49
|
provider:
|
|
18
50
|
name: ${{ matrix.provider }} history/dashboard/raw contract
|
|
19
51
|
runs-on: ubuntu-latest
|
|
@@ -41,6 +73,7 @@ jobs:
|
|
|
41
73
|
tests/test_antigravity_root_child_history_v2.py
|
|
42
74
|
tests/test_antigravity_invocation_archive.py
|
|
43
75
|
tests/test_antigravity_child_transcript_tools.py
|
|
76
|
+
tests/test_antigravity_field_run_regressions.py
|
|
44
77
|
tests/test_antigravity_role_path_fallback.py
|
|
45
78
|
tests/test_agy_windows_wire_acceptance.py
|
|
46
79
|
tests/test_provider_conversation_evidence.py
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: execweave
|
|
3
|
-
Version: 0.8.
|
|
3
|
+
Version: 0.8.9
|
|
4
4
|
Summary: Turn AI-agent runtime behavior into a local interactive execution graph.
|
|
5
5
|
Project-URL: Homepage, https://github.com/Irish-kw/ExecWeave
|
|
6
6
|
Project-URL: Repository, https://github.com/Irish-kw/ExecWeave
|
|
@@ -85,7 +85,7 @@ ExecWeave is a source-available, local-first observability project that turns AI
|
|
|
85
85
|
<img src="docs/assets/codex.gif" alt="ExecWeave animated live demo" width="100%">
|
|
86
86
|
</p>
|
|
87
87
|
|
|
88
|
-
This README documents **v0.8.
|
|
88
|
+
This README documents **v0.8.9**. It includes dagre route-point rendering and post-layout port recomputation, with provider graph/history/raw contracts verified across Ubuntu, macOS, and Windows.
|
|
89
89
|
|
|
90
90
|
## Why ExecWeave
|
|
91
91
|
|
|
@@ -32,7 +32,7 @@ ExecWeave ist ein source-available, local-first Observability-Projekt, das Aktiv
|
|
|
32
32
|
<img src="docs/assets/codex.gif" alt="ExecWeave animated live demo" width="100%">
|
|
33
33
|
</p>
|
|
34
34
|
|
|
35
|
-
Dieses README dokumentiert **v0.8.
|
|
35
|
+
Dieses README dokumentiert **v0.8.9**.
|
|
36
36
|
|
|
37
37
|
## Warum ExecWeave
|
|
38
38
|
|
|
@@ -32,7 +32,7 @@ ExecWeave est un projet d’observabilité source-available et local-first qui t
|
|
|
32
32
|
<img src="docs/assets/codex.gif" alt="ExecWeave animated live demo" width="100%">
|
|
33
33
|
</p>
|
|
34
34
|
|
|
35
|
-
Ce README décrit **v0.8.
|
|
35
|
+
Ce README décrit **v0.8.9**.
|
|
36
36
|
|
|
37
37
|
## Pourquoi ExecWeave
|
|
38
38
|
|
|
@@ -32,7 +32,7 @@ ExecWeave is a source-available, local-first observability project that turns AI
|
|
|
32
32
|
<img src="docs/assets/codex.gif" alt="ExecWeave animated live demo" width="100%">
|
|
33
33
|
</p>
|
|
34
34
|
|
|
35
|
-
This README documents **v0.8.
|
|
35
|
+
This README documents **v0.8.9**. It includes dagre route-point rendering and post-layout port recomputation, with provider graph/history/raw contracts verified across Ubuntu, macOS, and Windows.
|
|
36
36
|
|
|
37
37
|
## Why ExecWeave
|
|
38
38
|
|
|
@@ -4,8 +4,8 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "execweave"
|
|
7
|
-
# ExecWeave v0.8.
|
|
8
|
-
version = "0.8.
|
|
7
|
+
# ExecWeave v0.8.9 release metadata
|
|
8
|
+
version = "0.8.9"
|
|
9
9
|
description = "Turn AI-agent runtime behavior into a local interactive execution graph."
|
|
10
10
|
readme = "README.md"
|
|
11
11
|
requires-python = ">=3.10"
|
|
@@ -8,6 +8,7 @@ from . import antigravity_full_fidelity_collaboration_base as _base
|
|
|
8
8
|
from . import antigravity_adapter_base as _semantic
|
|
9
9
|
from .agent_topology import EVIDENCE_VALIDATED_CHILD_TRANSCRIPT, subagent_topology
|
|
10
10
|
from .antigravity_subagent_linkage import (
|
|
11
|
+
derived_child_agent_path,
|
|
11
12
|
read_transcript_records,
|
|
12
13
|
transcript_subagent_links,
|
|
13
14
|
validated_subagent_links,
|
|
@@ -70,6 +71,10 @@ def _assignment_event(
|
|
|
70
71
|
"conversation_id": child_id,
|
|
71
72
|
"agent_type": child_label,
|
|
72
73
|
"agent_nickname": role or type_name,
|
|
74
|
+
"provider_role_slot": subagent_index,
|
|
75
|
+
"provider_role_type": type_name,
|
|
76
|
+
"provider_role_workspace": workspace,
|
|
77
|
+
"provider_role_path": derived_child_agent_path(spec, child_id),
|
|
73
78
|
"identity_semantics": "provider_transcript_result_conversation_id",
|
|
74
79
|
"execution_observed": False,
|
|
75
80
|
"lifecycle_authority": "child_provider_hooks",
|
|
@@ -132,6 +137,67 @@ def _child_session_event(*, assignment: dict[str, Any], parent_id: str) -> dict[
|
|
|
132
137
|
}
|
|
133
138
|
|
|
134
139
|
|
|
140
|
+
def _subtask_request_event(*, assignment: dict[str, Any], parent_id: str) -> dict[str, Any]:
|
|
141
|
+
"""Connect the requesting agent to the subtask before its child is known."""
|
|
142
|
+
subtask = assignment.get("source")
|
|
143
|
+
subtask = subtask if isinstance(subtask, dict) else {}
|
|
144
|
+
attributes = assignment.get("attributes")
|
|
145
|
+
request_attributes = dict(attributes) if isinstance(attributes, dict) else {}
|
|
146
|
+
request_attributes.update(
|
|
147
|
+
{
|
|
148
|
+
"provider": "antigravity",
|
|
149
|
+
"attribution": "antigravity_hook",
|
|
150
|
+
"evidence_source": "provider_hook_plus_validated_transcript",
|
|
151
|
+
"causal": False,
|
|
152
|
+
"inferred": False,
|
|
153
|
+
"identity_exact": True,
|
|
154
|
+
"provider_collaboration_tool_exact": True,
|
|
155
|
+
"provider_post_tool_success": True,
|
|
156
|
+
}
|
|
157
|
+
)
|
|
158
|
+
return {
|
|
159
|
+
"timestamp": assignment.get("timestamp"),
|
|
160
|
+
"event_type": "semantic.antigravity.subtask.requested",
|
|
161
|
+
"relation": "REQUESTED_SUBTASK",
|
|
162
|
+
"source": _entity(
|
|
163
|
+
"agent",
|
|
164
|
+
f"agent:antigravity:conversation:{parent_id}",
|
|
165
|
+
name="Antigravity conversation",
|
|
166
|
+
attributes={
|
|
167
|
+
"provider": "antigravity",
|
|
168
|
+
"conversation_id": parent_id,
|
|
169
|
+
"identity_semantics": "provider_conversation_id",
|
|
170
|
+
},
|
|
171
|
+
),
|
|
172
|
+
"target": subtask,
|
|
173
|
+
"attributes": request_attributes,
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
|
|
177
|
+
def _append_missing_subtask_requests(
|
|
178
|
+
events: list[dict[str, Any]],
|
|
179
|
+
assignments: list[dict[str, Any]],
|
|
180
|
+
*,
|
|
181
|
+
parent_id: str,
|
|
182
|
+
) -> None:
|
|
183
|
+
"""Add root-to-subtask edges without duplicating request-only evidence."""
|
|
184
|
+
requested_ids = {
|
|
185
|
+
target.get("id")
|
|
186
|
+
for event in events
|
|
187
|
+
if event.get("relation") == "REQUESTED_SUBTASK"
|
|
188
|
+
and isinstance((target := event.get("target")), dict)
|
|
189
|
+
and isinstance(target.get("id"), str)
|
|
190
|
+
}
|
|
191
|
+
for assignment in assignments:
|
|
192
|
+
source = assignment.get("source")
|
|
193
|
+
if not isinstance(source, dict) or not isinstance(source.get("id"), str):
|
|
194
|
+
continue
|
|
195
|
+
if source["id"] in requested_ids:
|
|
196
|
+
continue
|
|
197
|
+
events.append(_subtask_request_event(assignment=assignment, parent_id=parent_id))
|
|
198
|
+
requested_ids.add(source["id"])
|
|
199
|
+
|
|
200
|
+
|
|
135
201
|
def _child_task_content_event(
|
|
136
202
|
*,
|
|
137
203
|
assignment: dict[str, Any],
|
|
@@ -474,6 +540,7 @@ def _transcript_assignment_events(
|
|
|
474
540
|
parent_id=conversation_id,
|
|
475
541
|
)
|
|
476
542
|
events: list[dict[str, Any]] = []
|
|
543
|
+
assignments: list[dict[str, Any]] = []
|
|
477
544
|
for link in links:
|
|
478
545
|
spec = link["spec"]
|
|
479
546
|
child_id = link["conversation_id"]
|
|
@@ -487,6 +554,7 @@ def _transcript_assignment_events(
|
|
|
487
554
|
child_id=child_id,
|
|
488
555
|
spec=spec,
|
|
489
556
|
)
|
|
557
|
+
assignments.append(assignment)
|
|
490
558
|
events.append(assignment)
|
|
491
559
|
events.append(_child_session_event(assignment=assignment, parent_id=conversation_id))
|
|
492
560
|
events.extend(
|
|
@@ -513,6 +581,7 @@ def _transcript_assignment_events(
|
|
|
513
581
|
)
|
|
514
582
|
if task_content is not None:
|
|
515
583
|
events.append(task_content)
|
|
584
|
+
_append_missing_subtask_requests(events, assignments, parent_id=conversation_id)
|
|
516
585
|
return events
|
|
517
586
|
|
|
518
587
|
|
|
@@ -539,6 +608,16 @@ def antigravity_hook_to_content_events(
|
|
|
539
608
|
timestamp=timestamp,
|
|
540
609
|
store=store,
|
|
541
610
|
)
|
|
611
|
+
assignments = [
|
|
612
|
+
event
|
|
613
|
+
for event in assigned
|
|
614
|
+
if event.get("relation") == "ASSIGNED_AGENT_TASK"
|
|
615
|
+
]
|
|
616
|
+
_append_missing_subtask_requests(
|
|
617
|
+
events,
|
|
618
|
+
assignments,
|
|
619
|
+
parent_id=str(payload.get("conversationId") or ""),
|
|
620
|
+
)
|
|
542
621
|
events.extend(assigned)
|
|
543
622
|
tool_call = payload.get("toolCall")
|
|
544
623
|
tool_name = tool_call.get("name") if isinstance(tool_call, dict) else None
|
|
@@ -305,36 +305,46 @@ def transcript_subagent_links(
|
|
|
305
305
|
step if isinstance(step, int) and not isinstance(step, bool) and step >= 0 else index
|
|
306
306
|
)
|
|
307
307
|
candidates.append((specs, results, step_index))
|
|
308
|
-
if
|
|
308
|
+
if not candidates:
|
|
309
309
|
return []
|
|
310
|
-
|
|
311
|
-
|
|
310
|
+
# A cumulative transcript contains every completed spawn pair. Replaying
|
|
311
|
+
# the exact same pair is ambiguous/corrupt evidence, but multiple distinct
|
|
312
|
+
# pairs are valid and must all remain attached to the parent conversation.
|
|
313
|
+
signatures = {
|
|
314
|
+
json.dumps((specs, results), ensure_ascii=False, sort_keys=True)
|
|
315
|
+
for specs, results, _ in candidates
|
|
316
|
+
}
|
|
317
|
+
if len(signatures) != len(candidates):
|
|
312
318
|
return []
|
|
313
|
-
|
|
319
|
+
|
|
314
320
|
links: list[dict[str, Any]] = []
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
if
|
|
318
|
-
return []
|
|
319
|
-
if child_id == parent_id or child_id in seen:
|
|
321
|
+
seen: set[str] = set()
|
|
322
|
+
for specs, results, step_index in candidates:
|
|
323
|
+
if len(results) != len(specs):
|
|
320
324
|
return []
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
325
|
+
for subagent_index, (spec, result) in enumerate(zip(specs, results, strict=True)):
|
|
326
|
+
child_id = result.get("conversationId")
|
|
327
|
+
if not isinstance(child_id, str) or not child_id:
|
|
328
|
+
return []
|
|
329
|
+
if child_id == parent_id or child_id in seen:
|
|
330
|
+
return []
|
|
331
|
+
seen.add(child_id)
|
|
332
|
+
child_transcript = None
|
|
333
|
+
log_uri = result.get("logAbsoluteUri")
|
|
334
|
+
if isinstance(log_uri, str):
|
|
335
|
+
candidate = _canonical_file_uri_path(log_uri)
|
|
336
|
+
if candidate is not None and _transcript_root(candidate, child_id) is not None:
|
|
337
|
+
child_transcript = candidate
|
|
338
|
+
links.append(
|
|
339
|
+
{
|
|
340
|
+
"subagent_index": subagent_index,
|
|
341
|
+
"conversation_id": child_id,
|
|
342
|
+
"step_index": step_index,
|
|
343
|
+
"spec": spec,
|
|
344
|
+
"agent_path": derived_child_agent_path(spec, child_id),
|
|
345
|
+
"transcript_path": child_transcript,
|
|
346
|
+
}
|
|
347
|
+
)
|
|
338
348
|
return links
|
|
339
349
|
|
|
340
350
|
|
|
@@ -378,16 +388,32 @@ def validated_subagent_links(
|
|
|
378
388
|
if records is None:
|
|
379
389
|
return []
|
|
380
390
|
|
|
381
|
-
candidates: list[list[dict[str, Any]]] = []
|
|
391
|
+
candidates: list[tuple[list[dict[str, Any]], int]] = []
|
|
382
392
|
for index, record in enumerate(records[:-1]):
|
|
383
393
|
if not _matching_request(record, specs):
|
|
384
394
|
continue
|
|
385
395
|
results = _matching_result(records[index + 1])
|
|
386
396
|
if results is not None:
|
|
387
|
-
|
|
388
|
-
|
|
397
|
+
step = record.get("step_index")
|
|
398
|
+
step_index = (
|
|
399
|
+
step if isinstance(step, int) and not isinstance(step, bool) and step >= 0 else index
|
|
400
|
+
)
|
|
401
|
+
candidates.append((results, step_index))
|
|
402
|
+
if not candidates:
|
|
403
|
+
return []
|
|
404
|
+
payload_step = payload.get("stepIdx")
|
|
405
|
+
eligible = [
|
|
406
|
+
candidate
|
|
407
|
+
for candidate in candidates
|
|
408
|
+
if not isinstance(payload_step, int) or candidate[1] <= payload_step
|
|
409
|
+
]
|
|
410
|
+
if not eligible:
|
|
411
|
+
return []
|
|
412
|
+
latest_step = max(candidate[1] for candidate in eligible)
|
|
413
|
+
latest = [candidate for candidate in eligible if candidate[1] == latest_step]
|
|
414
|
+
if len(latest) != 1:
|
|
389
415
|
return []
|
|
390
|
-
results =
|
|
416
|
+
results = latest[0][0]
|
|
391
417
|
if len(results) != len(specs):
|
|
392
418
|
return []
|
|
393
419
|
|
|
@@ -190,14 +190,15 @@ def apply_antigravity_role_path_fallback(
|
|
|
190
190
|
child_entry = by_id.get(child_id)
|
|
191
191
|
if child_entry is None:
|
|
192
192
|
continue
|
|
193
|
-
if child_id in declared_children:
|
|
194
|
-
continue
|
|
195
193
|
child_preview = child_entry.get("conversation_preview")
|
|
196
194
|
if not isinstance(child_preview, dict):
|
|
197
195
|
continue
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
196
|
+
# A validated graph child already has authoritative topology. Its
|
|
197
|
+
# canonical path is derived from the provider conversation id when AGY
|
|
198
|
+
# publishes no path; the Role label is presentation identity only and
|
|
199
|
+
# must not overwrite that native conversation scope. Role continuity in
|
|
200
|
+
# the viewer is handled separately by ``provider_role_path``.
|
|
201
|
+
if child_id in declared_children:
|
|
201
202
|
continue
|
|
202
203
|
spec = link["spec"]
|
|
203
204
|
nickname = spec.get("Role") if isinstance(spec.get("Role"), str) else spec.get("TypeName")
|