execweave 0.8.3__tar.gz → 0.8.5__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.3 → execweave-0.8.5}/PKG-INFO +2 -2
- {execweave-0.8.3 → execweave-0.8.5}/README.de.md +1 -1
- {execweave-0.8.3 → execweave-0.8.5}/README.fr.md +1 -1
- {execweave-0.8.3 → execweave-0.8.5}/README.ja.md +1 -1
- {execweave-0.8.3 → execweave-0.8.5}/README.ko.md +1 -1
- {execweave-0.8.3 → execweave-0.8.5}/README.md +1 -1
- {execweave-0.8.3 → execweave-0.8.5}/README.ru.md +1 -1
- {execweave-0.8.3 → execweave-0.8.5}/README.zh-CN.md +1 -1
- {execweave-0.8.3 → execweave-0.8.5}/README.zh-TW.md +1 -1
- {execweave-0.8.3 → execweave-0.8.5}/pyproject.toml +2 -2
- {execweave-0.8.3 → execweave-0.8.5}/src/execweave/__init__.py +1 -1
- {execweave-0.8.3 → execweave-0.8.5}/src/execweave/antigravity_full_fidelity.py +9 -3
- {execweave-0.8.3 → execweave-0.8.5}/src/execweave/antigravity_full_fidelity_base.py +16 -4
- {execweave-0.8.3 → execweave-0.8.5}/src/execweave/auto_specialized.py +50 -0
- {execweave-0.8.3 → execweave-0.8.5}/src/execweave/collector.py +19 -12
- {execweave-0.8.3 → execweave-0.8.5}/src/execweave/conversation_preview.py +76 -17
- {execweave-0.8.3 → execweave-0.8.5}/src/execweave/conversation_records.py +179 -13
- {execweave-0.8.3 → execweave-0.8.5}/src/execweave/dashboard_shell.py +7 -29
- {execweave-0.8.3 → execweave-0.8.5}/src/execweave/model_runtime_full_fidelity.py +3 -0
- {execweave-0.8.3 → execweave-0.8.5}/src/execweave/strace_backend.py +8 -1
- {execweave-0.8.3 → execweave-0.8.5}/src/execweave/viewer_agent_panel.py +67 -15
- {execweave-0.8.3 → execweave-0.8.5}/src/execweave/viewer_dashboard_focus.py +32 -9
- execweave-0.8.5/tests/test_antigravity_multi_conversation_isolation.py +316 -0
- execweave-0.8.5/tests/test_conversation_root_authority.py +40 -0
- execweave-0.8.5/tests/test_provider_conversation_history_integrity.py +335 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_v069_dashboard_release.py +3 -3
- execweave-0.8.5/tests/test_viewer_child_authority.py +22 -0
- {execweave-0.8.3 → execweave-0.8.5}/.github/workflows/ci.yml +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/.github/workflows/cleanup-workflow-history.yml +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/.github/workflows/i18n.yml +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/.github/workflows/package-benchmark.yml +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/.github/workflows/package-smoke.yml +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/.github/workflows/provider-capability-stage-integrity.yml +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/.github/workflows/publish.yml +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/.github/workflows/scalability.yml +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/.github/workflows/viewer-agent-isolation.yml +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/.github/workflows/wheel-smoke.yml +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/.github/workflows/windows-launcher.yml +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/.gitignore +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/LICENSE +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/RELEASE-PLAN-0.8.0.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/benchmarks/phase1_overhead.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/antigravity-hooks.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/assets/codex.gif +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/benchmarks/README.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/benchmarks/v0.6.0-github-actions.json +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/benchmarks/v0.6.0-github-actions.svg +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/claude-code-hooks.de.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/claude-code-hooks.fr.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/claude-code-hooks.ja.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/claude-code-hooks.ko.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/claude-code-hooks.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/claude-code-hooks.ru.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/claude-code-hooks.zh-CN.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/claude-code-hooks.zh-TW.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/codex-hooks.de.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/codex-hooks.fr.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/codex-hooks.ja.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/codex-hooks.ko.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/codex-hooks.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/codex-hooks.ru.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/codex-hooks.zh-CN.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/codex-hooks.zh-TW.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/cursor-hooks.de.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/cursor-hooks.fr.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/cursor-hooks.ja.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/cursor-hooks.ko.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/cursor-hooks.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/cursor-hooks.ru.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/cursor-hooks.zh-CN.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/cursor-hooks.zh-TW.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/evidence-grades.de.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/evidence-grades.fr.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/evidence-grades.ja.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/evidence-grades.ko.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/evidence-grades.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/evidence-grades.ru.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/evidence-grades.zh-CN.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/evidence-grades.zh-TW.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/gemini-hooks.de.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/gemini-hooks.fr.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/gemini-hooks.ja.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/gemini-hooks.ko.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/gemini-hooks.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/gemini-hooks.ru.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/gemini-hooks.zh-CN.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/gemini-hooks.zh-TW.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/inference-gateway.de.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/inference-gateway.fr.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/inference-gateway.ja.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/inference-gateway.ko.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/inference-gateway.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/inference-gateway.ru.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/inference-gateway.zh-CN.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/inference-gateway.zh-TW.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/internal/provider-capability-matrix.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/live-graph.de.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/live-graph.fr.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/live-graph.ja.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/live-graph.ko.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/live-graph.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/live-graph.ru.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/live-graph.zh-CN.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/live-graph.zh-TW.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/model-runtime.de.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/model-runtime.fr.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/model-runtime.ja.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/model-runtime.ko.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/model-runtime.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/model-runtime.ru.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/model-runtime.zh-CN.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/model-runtime.zh-TW.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/opencode-plugin.de.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/opencode-plugin.fr.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/opencode-plugin.ja.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/opencode-plugin.ko.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/opencode-plugin.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/opencode-plugin.ru.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/opencode-plugin.zh-CN.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/opencode-plugin.zh-TW.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/phase-1-runtime-collection.de.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/phase-1-runtime-collection.fr.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/phase-1-runtime-collection.ja.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/phase-1-runtime-collection.ko.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/phase-1-runtime-collection.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/phase-1-runtime-collection.ru.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/phase-1-runtime-collection.zh-CN.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/phase-1-runtime-collection.zh-TW.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/phase-2-execution-graph.de.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/phase-2-execution-graph.fr.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/phase-2-execution-graph.ja.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/phase-2-execution-graph.ko.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/phase-2-execution-graph.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/phase-2-execution-graph.ru.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/phase-2-execution-graph.zh-CN.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/phase-2-execution-graph.zh-TW.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/rule-packs.de.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/rule-packs.fr.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/rule-packs.ja.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/rule-packs.ko.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/rule-packs.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/rule-packs.ru.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/rule-packs.zh-CN.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/rule-packs.zh-TW.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/run-integrity.de.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/run-integrity.fr.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/run-integrity.ja.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/run-integrity.ko.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/run-integrity.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/run-integrity.ru.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/run-integrity.zh-CN.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/run-integrity.zh-TW.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/runtime-threat-model.de.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/runtime-threat-model.fr.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/runtime-threat-model.ja.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/runtime-threat-model.ko.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/runtime-threat-model.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/runtime-threat-model.ru.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/runtime-threat-model.zh-CN.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/runtime-threat-model.zh-TW.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/security-analysis.de.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/security-analysis.fr.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/security-analysis.ja.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/security-analysis.ko.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/security-analysis.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/security-analysis.ru.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/security-analysis.zh-CN.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/security-analysis.zh-TW.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/semantic-telemetry.de.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/semantic-telemetry.fr.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/semantic-telemetry.ja.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/semantic-telemetry.ko.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/semantic-telemetry.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/semantic-telemetry.ru.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/semantic-telemetry.zh-CN.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/semantic-telemetry.zh-TW.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/v0.6.5-hardening-decisions.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/docs/v0.8.3-graph-ergonomics.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/scripts/audit_i18n_parity.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/scripts/check_claude_hook.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/scripts/check_claude_record_graph.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/scripts/check_codex_hook.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/scripts/check_conversation_records.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/scripts/check_correlation_graph.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/scripts/check_inference_gateway_cli.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/scripts/check_model_runtime_cli.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/scripts/check_openai_compatible_cli.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/scripts/check_release_stage_integrity.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/scripts/check_semantic_graph.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/scripts/check_viewer_js.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/scripts/check_wheel_install.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/scripts/check_windows_launchers.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/scripts/emit_claude_hook_smoke.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/scripts/emit_codex_hook_smoke.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/scripts/emit_cursor_hook_smoke.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/scripts/emit_gemini_hook_smoke.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/scripts/emit_opencode_plugin_smoke.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/scripts/make_semantic_smoke.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/scripts/probe_provider_capability.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/scripts/sync_i18n_nav.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/src/execweave/__main__.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/src/execweave/_conversation_records_core.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/src/execweave/agent_bootstrap.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/src/execweave/agent_topology.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/src/execweave/agent_trace.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/src/execweave/analysis.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/src/execweave/anthropic.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/src/execweave/anthropic_cli.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/src/execweave/anthropic_full_fidelity.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/src/execweave/antigravity_adapter.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/src/execweave/antigravity_adapter_base.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/src/execweave/antigravity_full_fidelity_collaboration_base.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/src/execweave/antigravity_hook_cli.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/src/execweave/antigravity_record.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/src/execweave/antigravity_subagent_linkage.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/src/execweave/antigravity_trace_capability.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/src/execweave/backends.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/src/execweave/benchmark.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/src/execweave/claude_adapter.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/src/execweave/claude_delegation.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/src/execweave/claude_full_fidelity.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/src/execweave/claude_hook_cli.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/src/execweave/claude_hook_contract.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/src/execweave/claude_model_observer.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/src/execweave/claude_record.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/src/execweave/cli.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/src/execweave/codex_adapter.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/src/execweave/codex_conversation.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/src/execweave/codex_full_fidelity.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/src/execweave/codex_hook_cli.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/src/execweave/codex_hook_lifecycle.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/src/execweave/codex_message_diagnostics.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/src/execweave/codex_message_transport_diagnostics.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/src/execweave/codex_record.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/src/execweave/codex_rollout_structures.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/src/execweave/codex_rollout_trace.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/src/execweave/codex_rollout_trace_base.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/src/execweave/command.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/src/execweave/content_evidence.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/src/execweave/content_store.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/src/execweave/conversation_archive.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/src/execweave/conversation_message_identity.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/src/execweave/correlation.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/src/execweave/cursor_adapter.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/src/execweave/cursor_delegation.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/src/execweave/cursor_delegation_base.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/src/execweave/cursor_full_fidelity.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/src/execweave/cursor_hook_cli.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/src/execweave/cursor_hook_contract.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/src/execweave/cursor_record.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/src/execweave/entry.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/src/execweave/evidence_availability.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/src/execweave/evidence_grade.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/src/execweave/fidelity.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/src/execweave/filesystem.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/src/execweave/focus.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/src/execweave/gemini_adapter.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/src/execweave/gemini_full_fidelity.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/src/execweave/gemini_hook_cli.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/src/execweave/gemini_hook_contract.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/src/execweave/gemini_record.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/src/execweave/graph.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/src/execweave/graph_ops.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/src/execweave/http_proxy.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/src/execweave/http_proxy_cli.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/src/execweave/inference_gateway.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/src/execweave/inference_gateway_cli.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/src/execweave/inference_gateway_full_fidelity.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/src/execweave/inference_identity.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/src/execweave/inference_identity_cli.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/src/execweave/integrity.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/src/execweave/integrity_cli.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/src/execweave/litellm_callback.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/src/execweave/litellm_callback_cli.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/src/execweave/live.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/src/execweave/live_core.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/src/execweave/live_view.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/src/execweave/live_view_extra_style.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/src/execweave/live_view_markup.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/src/execweave/live_view_readability.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/src/execweave/live_view_script_a.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/src/execweave/live_view_script_b.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/src/execweave/live_view_script_c.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/src/execweave/live_view_script_d.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/src/execweave/live_view_style.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/src/execweave/model_runtime.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/src/execweave/model_runtime_cli.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/src/execweave/openai_compatible.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/src/execweave/openai_compatible_cli.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/src/execweave/openai_compatible_full_fidelity.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/src/execweave/opencode_adapter.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/src/execweave/opencode_event_contract.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/src/execweave/opencode_full_fidelity.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/src/execweave/opencode_hook_cli.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/src/execweave/opencode_plugin_cli.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/src/execweave/opencode_record.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/src/execweave/opencode_task_linkage.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/src/execweave/overhead_benchmark.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/src/execweave/provider_capability.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/src/execweave/provider_lifecycle.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/src/execweave/provider_record.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/src/execweave/rule_pack.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/src/execweave/rule_pack_cli.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/src/execweave/scalability_benchmark.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/src/execweave/schema.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/src/execweave/scope.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/src/execweave/semantic.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/src/execweave/sink.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/src/execweave/stream_assembly.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/src/execweave/theme.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/src/execweave/top.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/src/execweave/top_cli.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/src/execweave/validate.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/src/execweave/view_cli.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/src/execweave/viewer.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/src/execweave/viewer_content_inspector.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/src/execweave/viewer_dashboard_clean.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/src/execweave/viewer_dashboard_hardening.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/src/execweave/viewer_dashboard_hardening_v2.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/src/execweave/viewer_live_layout.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/src/execweave/viewer_projection.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/src/execweave/viewer_projection_base.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/src/execweave/workflow.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/dashboard_readability_fixture.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/fixtures/codex_multi_agent/PROVENANCE.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/fixtures/codex_multi_agent/hook-payloads.json +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/fixtures/codex_multi_agent/rollout-main.jsonl +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/fixtures/hooks/README.md +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/fixtures/hooks/claude.json +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/fixtures/hooks/codex.json +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/fixtures/hooks/cursor.json +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/fixtures/hooks/gemini.json +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/fixtures/hooks/manifest.json +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/fixtures/hooks/opencode.json +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/multi_agent_run_fixture.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_agent_bootstrap.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_agent_message_viewer.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_agent_node_labels.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_agent_said_panel.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_agent_topology_evidence.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_agent_trace_lifecycle.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_agent_trace_viewer_visibility.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_analysis.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_anthropic.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_antigravity_agent_collaboration.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_antigravity_cursor_launch.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_antigravity_history_replay.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_antigravity_identity_topology.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_antigravity_lifecycle.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_antigravity_linkage_projection.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_antigravity_official_contract.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_antigravity_subagent_transcript_linkage.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_antigravity_trace_capability_cli.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_auto_specialized.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_backends.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_claude_adapter.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_claude_delegation.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_claude_full_fidelity.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_claude_hook_contract.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_claude_hook_metadata.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_claude_hook_viewer.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_claude_model_observer.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_claude_record.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_codex_adapter.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_codex_archive_full_fidelity.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_codex_conversation_isolation.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_codex_full_fidelity.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_codex_hook_lifecycle.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_codex_hook_partial_capture.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_codex_message_diagnostics.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_codex_message_transport_diagnostics.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_codex_plain_routed_agent_message.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_codex_real_multi_agent_conversation.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_codex_record.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_codex_reducer_command.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_codex_rollout_structures.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_codex_rollout_trace.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_codex_routing_native_identity.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_collector.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_command.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_condense.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_conversation_access.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_conversation_agent_focus.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_conversation_agent_isolation.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_conversation_identity_merge.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_conversation_message_observation_dedupe.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_conversation_provider_parity.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_correlation.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_correlation_canonical_path.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_correlation_checker.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_correlation_process_exe.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_cross_provider_agent_trace.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_cursor_adapter.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_cursor_delegation.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_cursor_full_fidelity.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_cursor_hook_contract.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_cursor_hook_fail_open.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_cursor_record.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_cursor_task_linkage.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_dashboard_information_architecture.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_dashboard_readability_e2e.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_dashboard_round_fold_state_e2e.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_dashboard_simplification.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_dashboard_ux_and_hook_projection.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_delegation_viewer.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_evidence_grade.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_execution_viewer.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_fidelity.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_filesystem_resilience.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_focus.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_fold_budget_setting.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_full_fidelity.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_gemini_adapter.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_gemini_full_fidelity.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_gemini_hook_contract.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_gemini_lifecycle.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_gemini_record.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_graph.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_graph_clear_focus_e2e.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_graph_edge_routing_e2e.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_graph_lane_separation_e2e.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_graph_node_sizing_e2e.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_graph_ops.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_hook_fixture_corpus.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_http_proxy.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_inference_endpoint_identity.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_inference_gateway.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_inference_gateway_full_fidelity.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_inference_identity.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_integrity.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_litellm_callback.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_live.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_live_auth.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_live_dashboard.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_live_dashboard_js.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_live_delta.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_live_logs_export.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_live_theme.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_lmstudio_auto_specialized.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_local_runtime_live_capture.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_model_runtime.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_model_runtime_full_fidelity.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_openai_compatible.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_opencode_adapter.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_opencode_event_contract.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_opencode_event_lifecycle.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_opencode_full_fidelity.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_opencode_identity_unification.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_opencode_plugin.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_opencode_record.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_opencode_task_session_linkage.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_overhead_benchmark.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_per_agent_conversation_default.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_pr25_premerge_hardening_contract.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_pr25_premerge_hardening_e2e.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_provider_capability.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_provider_conversation_evidence.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_provider_lifecycle.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_release_stage_integrity_version_guard.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_rule_pack.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_schema.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_scope.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_semantic.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_shared_injected_context_scope.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_strace_backend.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_stream_assembly.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_threat_model.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_tool_traffic_e2e.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_top_detached.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_v063_features.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_v064_live_auto_integrations.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_v064_live_evidence.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_v079_review_e2e.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_v079_review_regressions.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_v083_release_gate_p2.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_validate.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_version.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_viewer.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_viewer_agent_isolation_e2e.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_viewer_content_inspector.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_viewer_projection.py +0 -0
- {execweave-0.8.3 → execweave-0.8.5}/tests/test_workflow.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: execweave
|
|
3
|
-
Version: 0.8.
|
|
3
|
+
Version: 0.8.5
|
|
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
|
|
@@ -83,7 +83,7 @@ ExecWeave is a source-available, local-first observability project that turns AI
|
|
|
83
83
|
<img src="docs/assets/codex.gif" alt="ExecWeave animated live demo" width="100%">
|
|
84
84
|
</p>
|
|
85
85
|
|
|
86
|
-
This README documents **v0.8.
|
|
86
|
+
This README documents **v0.8.5**.
|
|
87
87
|
|
|
88
88
|
## Why ExecWeave
|
|
89
89
|
|
|
@@ -30,7 +30,7 @@ ExecWeave ist ein source-available, local-first Observability-Projekt, das Aktiv
|
|
|
30
30
|
<img src="docs/assets/codex.gif" alt="ExecWeave animated live demo" width="100%">
|
|
31
31
|
</p>
|
|
32
32
|
|
|
33
|
-
Dieses README dokumentiert **v0.8.
|
|
33
|
+
Dieses README dokumentiert **v0.8.5**.
|
|
34
34
|
|
|
35
35
|
## Warum ExecWeave
|
|
36
36
|
|
|
@@ -30,7 +30,7 @@ ExecWeave est un projet d’observabilité source-available et local-first qui t
|
|
|
30
30
|
<img src="docs/assets/codex.gif" alt="ExecWeave animated live demo" width="100%">
|
|
31
31
|
</p>
|
|
32
32
|
|
|
33
|
-
Ce README décrit **v0.8.
|
|
33
|
+
Ce README décrit **v0.8.5**.
|
|
34
34
|
|
|
35
35
|
## Pourquoi ExecWeave
|
|
36
36
|
|
|
@@ -30,7 +30,7 @@ ExecWeave is a source-available, local-first observability project that turns AI
|
|
|
30
30
|
<img src="docs/assets/codex.gif" alt="ExecWeave animated live demo" width="100%">
|
|
31
31
|
</p>
|
|
32
32
|
|
|
33
|
-
This README documents **v0.8.
|
|
33
|
+
This README documents **v0.8.5**.
|
|
34
34
|
|
|
35
35
|
## Why ExecWeave
|
|
36
36
|
|
|
@@ -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.5 release metadata
|
|
8
|
+
version = "0.8.5"
|
|
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"
|
|
@@ -3,6 +3,7 @@ from __future__ import annotations
|
|
|
3
3
|
from typing import Any
|
|
4
4
|
|
|
5
5
|
from . import antigravity_full_fidelity_collaboration_base as _base
|
|
6
|
+
from .agent_topology import EVIDENCE_VALIDATED_CHILD_TRANSCRIPT, subagent_topology
|
|
6
7
|
from .antigravity_subagent_linkage import validated_subagent_links
|
|
7
8
|
from .content_evidence import content_observation_event
|
|
8
9
|
from .content_store import FullFidelityContentStore
|
|
@@ -51,18 +52,23 @@ def _assignment_event(
|
|
|
51
52
|
"identity_semantics": "provider_invoke_subagent_spec_index",
|
|
52
53
|
},
|
|
53
54
|
)
|
|
55
|
+
child_label = role or type_name or "Antigravity subagent"
|
|
54
56
|
child = _entity(
|
|
55
57
|
"agent",
|
|
56
58
|
f"agent:antigravity:conversation:{child_id}",
|
|
57
|
-
name=
|
|
59
|
+
name=child_label,
|
|
58
60
|
attributes={
|
|
59
61
|
"provider": "antigravity",
|
|
60
62
|
"conversation_id": child_id,
|
|
61
|
-
"
|
|
62
|
-
"
|
|
63
|
+
"agent_type": child_label,
|
|
64
|
+
"agent_nickname": role or type_name,
|
|
63
65
|
"identity_semantics": "provider_transcript_result_conversation_id",
|
|
64
66
|
"execution_observed": False,
|
|
65
67
|
"lifecycle_authority": "child_provider_hooks",
|
|
68
|
+
**subagent_topology(
|
|
69
|
+
evidence=EVIDENCE_VALIDATED_CHILD_TRANSCRIPT,
|
|
70
|
+
parent_scope_id=conversation_id,
|
|
71
|
+
),
|
|
66
72
|
},
|
|
67
73
|
)
|
|
68
74
|
return {
|
|
@@ -11,12 +11,24 @@ def _now() -> str:
|
|
|
11
11
|
return datetime.now(timezone.utc).isoformat().replace("+00:00", "Z")
|
|
12
12
|
|
|
13
13
|
|
|
14
|
-
def _agent() -> dict[str, Any]:
|
|
14
|
+
def _agent(payload: dict[str, Any]) -> dict[str, Any]:
|
|
15
|
+
conversation_id = payload.get("conversationId")
|
|
16
|
+
if isinstance(conversation_id, str) and conversation_id:
|
|
17
|
+
return {
|
|
18
|
+
"type": "agent",
|
|
19
|
+
"id": f"agent:antigravity:conversation:{conversation_id}",
|
|
20
|
+
"name": "Antigravity conversation",
|
|
21
|
+
"attributes": {
|
|
22
|
+
"provider": "antigravity",
|
|
23
|
+
"conversation_id": conversation_id,
|
|
24
|
+
"identity_semantics": "provider_conversation_id",
|
|
25
|
+
},
|
|
26
|
+
}
|
|
15
27
|
return {
|
|
16
28
|
"type": "agent",
|
|
17
29
|
"id": "agent:Antigravity",
|
|
18
30
|
"name": "Antigravity",
|
|
19
|
-
"attributes": {},
|
|
31
|
+
"attributes": {"provider": "antigravity"},
|
|
20
32
|
}
|
|
21
33
|
|
|
22
34
|
|
|
@@ -70,7 +82,7 @@ def antigravity_hook_to_content_events(
|
|
|
70
82
|
content_observation_event(
|
|
71
83
|
timestamp=observed_at,
|
|
72
84
|
provider="antigravity",
|
|
73
|
-
source=_agent(),
|
|
85
|
+
source=_agent(payload),
|
|
74
86
|
reference=reference,
|
|
75
87
|
relation="OBSERVED_PROVIDER_METADATA",
|
|
76
88
|
observed_field="hook_metadata",
|
|
@@ -122,7 +134,7 @@ def antigravity_hook_to_content_events(
|
|
|
122
134
|
content_observation_event(
|
|
123
135
|
timestamp=observed_at,
|
|
124
136
|
provider="antigravity",
|
|
125
|
-
source=_agent(),
|
|
137
|
+
source=_agent(payload),
|
|
126
138
|
reference=reference,
|
|
127
139
|
relation="OBSERVED_TOOL_ERROR",
|
|
128
140
|
observed_field="error",
|
|
@@ -54,6 +54,14 @@ def _is_ollama_serve(command: list[str]) -> bool:
|
|
|
54
54
|
)
|
|
55
55
|
|
|
56
56
|
|
|
57
|
+
def _is_ollama_run(command: list[str]) -> bool:
|
|
58
|
+
return (
|
|
59
|
+
len(command) >= 2
|
|
60
|
+
and _command_name(command[0]) == "ollama"
|
|
61
|
+
and command[1].lower() == "run"
|
|
62
|
+
)
|
|
63
|
+
|
|
64
|
+
|
|
57
65
|
def _is_llamacpp_server(command: list[str]) -> bool:
|
|
58
66
|
return bool(command) and _command_name(command[0]) == "llama-server"
|
|
59
67
|
|
|
@@ -284,6 +292,48 @@ def run_post_command_specialized_probe(
|
|
|
284
292
|
time.sleep(_POST_PROBE_RETRY_SECONDS)
|
|
285
293
|
|
|
286
294
|
|
|
295
|
+
|
|
296
|
+
@contextmanager
|
|
297
|
+
def auto_specialized_launch(command: list[str]) -> Iterator[dict[str, str]]:
|
|
298
|
+
"""Prepare child-only launch wiring for supported transparent local integrations."""
|
|
299
|
+
environment = dict(os.environ)
|
|
300
|
+
configured_sidecar = os.environ.get(_SEMANTIC_ENV)
|
|
301
|
+
if not configured_sidecar or not _is_ollama_run(command):
|
|
302
|
+
yield environment
|
|
303
|
+
return
|
|
304
|
+
upstream = _ollama_endpoint_from_environment()
|
|
305
|
+
if upstream is None:
|
|
306
|
+
yield environment
|
|
307
|
+
return
|
|
308
|
+
|
|
309
|
+
from .http_proxy import ExecWeaveHTTPProxyServer, ProxyConfig
|
|
310
|
+
|
|
311
|
+
sidecar = Path(configured_sidecar).expanduser().resolve()
|
|
312
|
+
try:
|
|
313
|
+
server = ExecWeaveHTTPProxyServer(
|
|
314
|
+
("127.0.0.1", 0),
|
|
315
|
+
ProxyConfig(upstream=upstream, sidecar=sidecar, mode="ollama"),
|
|
316
|
+
)
|
|
317
|
+
except OSError:
|
|
318
|
+
yield environment
|
|
319
|
+
return
|
|
320
|
+
thread = threading.Thread(
|
|
321
|
+
target=server.serve_forever,
|
|
322
|
+
kwargs={"poll_interval": 0.05},
|
|
323
|
+
name="execweave-ollama-run-relay",
|
|
324
|
+
daemon=True,
|
|
325
|
+
)
|
|
326
|
+
thread.start()
|
|
327
|
+
host, port = server.server_address[:2]
|
|
328
|
+
environment["OLLAMA_HOST"] = f"http://{host}:{port}"
|
|
329
|
+
try:
|
|
330
|
+
yield environment
|
|
331
|
+
finally:
|
|
332
|
+
server.shutdown()
|
|
333
|
+
server.server_close()
|
|
334
|
+
thread.join(timeout=2.0)
|
|
335
|
+
|
|
336
|
+
|
|
287
337
|
@contextmanager
|
|
288
338
|
def auto_specialized_probe(command: list[str]) -> Iterator[None]:
|
|
289
339
|
"""Run supported local specialized probes without affecting command execution.
|
|
@@ -10,6 +10,7 @@ from typing import Iterable
|
|
|
10
10
|
import psutil
|
|
11
11
|
|
|
12
12
|
from .auto_specialized import (
|
|
13
|
+
auto_specialized_launch,
|
|
13
14
|
auto_specialized_probe,
|
|
14
15
|
prepare_post_command_specialized_probe,
|
|
15
16
|
run_post_command_specialized_probe,
|
|
@@ -95,6 +96,7 @@ def infer_agent_name(command: Iterable[str]) -> str:
|
|
|
95
96
|
"gemini": "Gemini CLI",
|
|
96
97
|
"cursor": "Cursor",
|
|
97
98
|
"opencode": "OpenCode",
|
|
99
|
+
"ollama": "Ollama",
|
|
98
100
|
}
|
|
99
101
|
return known.get(executable, basename)
|
|
100
102
|
|
|
@@ -167,20 +169,25 @@ class RuntimeCollector:
|
|
|
167
169
|
return_code = 1
|
|
168
170
|
post_command_probe = prepare_post_command_specialized_probe(command)
|
|
169
171
|
try:
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
172
|
+
with auto_specialized_launch(command) as launch_environment:
|
|
173
|
+
process = subprocess.Popen(
|
|
174
|
+
launch_command,
|
|
175
|
+
cwd=str(self.watch_root),
|
|
176
|
+
env=launch_environment,
|
|
177
|
+
)
|
|
178
|
+
root = psutil.Process(process.pid)
|
|
179
|
+
snapshot = _safe_process_snapshot(root)
|
|
180
|
+
if snapshot is not None:
|
|
181
|
+
self._record_process_start(snapshot, parent=session, relation="LAUNCHED")
|
|
175
182
|
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
183
|
+
with auto_specialized_probe(command):
|
|
184
|
+
while process.poll() is None:
|
|
185
|
+
self._sample_process_tree(root)
|
|
186
|
+
time.sleep(self.poll_interval)
|
|
180
187
|
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
188
|
+
self._sample_process_tree(root)
|
|
189
|
+
self._mark_disappeared_processes(set())
|
|
190
|
+
return_code = int(process.returncode or 0)
|
|
184
191
|
run_post_command_specialized_probe(
|
|
185
192
|
post_command_probe,
|
|
186
193
|
return_code=return_code,
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
3
|
import json
|
|
4
|
+
import re
|
|
4
5
|
from pathlib import Path
|
|
5
6
|
from typing import Any
|
|
6
7
|
|
|
@@ -269,6 +270,18 @@ def _structured_messages(
|
|
|
269
270
|
return messages
|
|
270
271
|
|
|
271
272
|
|
|
273
|
+
_ANTIGRAVITY_USER_REQUEST_RE = re.compile(
|
|
274
|
+
r"<USER_REQUEST>\s*(?P<body>.*?)\s*</USER_REQUEST>",
|
|
275
|
+
re.DOTALL,
|
|
276
|
+
)
|
|
277
|
+
|
|
278
|
+
|
|
279
|
+
def _antigravity_user_text(text: str) -> str:
|
|
280
|
+
"""Return the actual user request, excluding Antigravity's metadata envelope."""
|
|
281
|
+
match = _ANTIGRAVITY_USER_REQUEST_RE.search(text)
|
|
282
|
+
return match.group("body").strip() if match is not None else text.strip()
|
|
283
|
+
|
|
284
|
+
|
|
272
285
|
def _line_transcript_messages(
|
|
273
286
|
path: Path,
|
|
274
287
|
*,
|
|
@@ -291,26 +304,71 @@ def _line_transcript_messages(
|
|
|
291
304
|
continue
|
|
292
305
|
if not isinstance(record, dict):
|
|
293
306
|
continue
|
|
307
|
+
|
|
308
|
+
if antigravity:
|
|
309
|
+
role = str(record.get("source") or "").strip().lower()
|
|
310
|
+
record_type = str(record.get("type") or "").strip().lower()
|
|
311
|
+
text = _text_parts(record.get("content") or record.get("text"))
|
|
312
|
+
record_timestamp = record.get("created_at") or record.get("timestamp") or timestamp
|
|
313
|
+
step_index = record.get("step_index")
|
|
314
|
+
record_ordinal = (
|
|
315
|
+
step_index
|
|
316
|
+
if isinstance(step_index, int) and not isinstance(step_index, bool)
|
|
317
|
+
else (ordinal if isinstance(ordinal, int) else 0) + index
|
|
318
|
+
)
|
|
319
|
+
|
|
320
|
+
# Current Antigravity uses USER_EXPLICIT / USER_INPUT for real user turns.
|
|
321
|
+
# Keep the older USER/HUMAN spelling for archived compatibility.
|
|
322
|
+
if role in {"user_explicit", "user", "human"} and record_type in {
|
|
323
|
+
"user_input",
|
|
324
|
+
"user_message",
|
|
325
|
+
"",
|
|
326
|
+
}:
|
|
327
|
+
if text:
|
|
328
|
+
messages.append(
|
|
329
|
+
_message(
|
|
330
|
+
timestamp=record_timestamp,
|
|
331
|
+
ordinal=record_ordinal,
|
|
332
|
+
kind="user_message",
|
|
333
|
+
sender="user",
|
|
334
|
+
recipient=agent_path,
|
|
335
|
+
text=_antigravity_user_text(text),
|
|
336
|
+
)
|
|
337
|
+
)
|
|
338
|
+
continue
|
|
339
|
+
|
|
340
|
+
# PLANNER_RESPONSE is Antigravity's user-visible model surface. GENERIC
|
|
341
|
+
# records are tool/runtime results (define_subagent, manage_subagents,
|
|
342
|
+
# schedule, send_message acknowledgements, ...), so they must never be
|
|
343
|
+
# eligible for the conversation Final response card.
|
|
344
|
+
if role in {"model", "assistant"} and record_type == "planner_response":
|
|
345
|
+
if text:
|
|
346
|
+
messages.append(
|
|
347
|
+
_message(
|
|
348
|
+
timestamp=record_timestamp,
|
|
349
|
+
ordinal=record_ordinal,
|
|
350
|
+
kind="assistant_message",
|
|
351
|
+
sender=agent_path,
|
|
352
|
+
recipient=None,
|
|
353
|
+
text=text,
|
|
354
|
+
phase="planner_response",
|
|
355
|
+
)
|
|
356
|
+
)
|
|
357
|
+
continue
|
|
358
|
+
continue
|
|
359
|
+
|
|
294
360
|
record_timestamp = record.get("timestamp") or timestamp
|
|
295
361
|
record_ordinal = record.get("ordinal")
|
|
296
362
|
if not isinstance(record_ordinal, int):
|
|
297
363
|
record_ordinal = (ordinal if isinstance(ordinal, int) else 0) + index
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
364
|
+
record_type = str(record.get("type") or "").lower()
|
|
365
|
+
payload = record.get("message")
|
|
366
|
+
if isinstance(payload, dict):
|
|
367
|
+
role = str(payload.get("role") or record_type).lower()
|
|
368
|
+
text = _text_parts(payload.get("content"))
|
|
303
369
|
else:
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
if isinstance(payload, dict):
|
|
307
|
-
role = str(payload.get("role") or record_type).lower()
|
|
308
|
-
text = _text_parts(payload.get("content"))
|
|
309
|
-
else:
|
|
310
|
-
role = record_type
|
|
311
|
-
text = _text_parts(record.get("content") or record.get("text"))
|
|
312
|
-
phase = "response"
|
|
313
|
-
|
|
370
|
+
role = record_type
|
|
371
|
+
text = _text_parts(record.get("content") or record.get("text"))
|
|
314
372
|
if not text:
|
|
315
373
|
continue
|
|
316
374
|
if role in {"user", "human"}:
|
|
@@ -333,7 +391,7 @@ def _line_transcript_messages(
|
|
|
333
391
|
sender=agent_path,
|
|
334
392
|
recipient=None,
|
|
335
393
|
text=text,
|
|
336
|
-
phase=
|
|
394
|
+
phase="response",
|
|
337
395
|
)
|
|
338
396
|
)
|
|
339
397
|
return messages
|
|
@@ -722,7 +780,8 @@ def conversation_preview(
|
|
|
722
780
|
|
|
723
781
|
if not messages:
|
|
724
782
|
return None
|
|
725
|
-
|
|
783
|
+
preserve_history = content_kind.startswith("antigravity.conversation_transcript")
|
|
784
|
+
truncated = not preserve_history and len(messages) > _MAX_PREVIEW_MESSAGES
|
|
726
785
|
if truncated:
|
|
727
786
|
messages = messages[:10] + messages[-(_MAX_PREVIEW_MESSAGES - 10) :]
|
|
728
787
|
return {
|