execweave 0.7.0__tar.gz → 0.7.2__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.7.2/.github/workflows/cleanup-workflow-history.yml +98 -0
- {execweave-0.7.0 → execweave-0.7.2}/PKG-INFO +14 -14
- execweave-0.7.2/README.de.md +307 -0
- execweave-0.7.2/README.fr.md +307 -0
- execweave-0.7.2/README.ja.md +307 -0
- execweave-0.7.2/README.ko.md +307 -0
- {execweave-0.7.0 → execweave-0.7.2}/README.md +13 -13
- execweave-0.7.2/README.ru.md +307 -0
- {execweave-0.7.0 → execweave-0.7.2}/README.zh-CN.md +24 -17
- {execweave-0.7.0 → execweave-0.7.2}/README.zh-TW.md +22 -15
- {execweave-0.7.0 → execweave-0.7.2}/pyproject.toml +2 -2
- {execweave-0.7.0 → execweave-0.7.2}/scripts/audit_i18n_parity.py +3 -2
- {execweave-0.7.0 → execweave-0.7.2}/src/execweave/__init__.py +1 -1
- {execweave-0.7.0 → execweave-0.7.2}/src/execweave/antigravity_full_fidelity.py +58 -11
- {execweave-0.7.0 → execweave-0.7.2}/src/execweave/antigravity_full_fidelity_collaboration_base.py +80 -0
- execweave-0.7.2/src/execweave/codex_conversation.py +347 -0
- {execweave-0.7.0 → execweave-0.7.2}/src/execweave/codex_hook_cli.py +23 -8
- {execweave-0.7.0 → execweave-0.7.2}/src/execweave/conversation_archive.py +97 -0
- execweave-0.7.2/src/execweave/conversation_preview.py +685 -0
- execweave-0.7.2/src/execweave/conversation_records.py +523 -0
- {execweave-0.7.0 → execweave-0.7.2}/src/execweave/live.py +11 -1
- {execweave-0.7.0 → execweave-0.7.2}/src/execweave/opencode_full_fidelity.py +30 -14
- {execweave-0.7.0 → execweave-0.7.2}/src/execweave/opencode_hook_cli.py +1 -0
- {execweave-0.7.0 → execweave-0.7.2}/src/execweave/opencode_task_linkage.py +73 -3
- execweave-0.7.2/src/execweave/viewer_conversation_panel.py +101 -0
- execweave-0.7.2/src/execweave/viewer_conversation_tree.py +92 -0
- execweave-0.7.2/src/execweave/viewer_dashboard_clean.py +195 -0
- execweave-0.7.2/src/execweave/viewer_dashboard_focus.py +71 -0
- execweave-0.7.2/src/execweave/viewer_live_layout.py +61 -0
- {execweave-0.7.0 → execweave-0.7.2}/src/execweave/viewer_projection.py +28 -9
- execweave-0.7.2/tests/test_codex_archive_full_fidelity.py +222 -0
- execweave-0.7.2/tests/test_codex_conversation_isolation.py +94 -0
- execweave-0.7.2/tests/test_conversation_agent_isolation.py +118 -0
- execweave-0.7.2/tests/test_conversation_provider_parity.py +487 -0
- execweave-0.7.2/tests/test_dashboard_information_architecture.py +240 -0
- execweave-0.7.2/tests/test_dashboard_simplification.py +205 -0
- execweave-0.7.2/tests/test_provider_conversation_evidence.py +304 -0
- {execweave-0.7.0 → execweave-0.7.2}/tests/test_v069_dashboard_release.py +9 -6
- execweave-0.7.0/README.de.md +0 -296
- execweave-0.7.0/README.fr.md +0 -296
- execweave-0.7.0/README.ja.md +0 -296
- execweave-0.7.0/README.ko.md +0 -296
- execweave-0.7.0/README.ru.md +0 -296
- execweave-0.7.0/src/execweave/conversation_records.py +0 -209
- execweave-0.7.0/src/execweave/viewer_conversation_panel.py +0 -65
- {execweave-0.7.0 → execweave-0.7.2}/.github/workflows/ci.yml +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/.github/workflows/i18n.yml +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/.github/workflows/package-benchmark.yml +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/.github/workflows/package-smoke.yml +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/.github/workflows/publish.yml +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/.github/workflows/scalability.yml +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/.github/workflows/wheel-smoke.yml +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/.github/workflows/windows-launcher.yml +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/.gitignore +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/LICENSE +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/benchmarks/phase1_overhead.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/docs/antigravity-hooks.md +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/docs/assets/codex.gif +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/docs/benchmarks/README.md +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/docs/benchmarks/v0.6.0-github-actions.json +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/docs/benchmarks/v0.6.0-github-actions.svg +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/docs/claude-code-hooks.de.md +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/docs/claude-code-hooks.fr.md +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/docs/claude-code-hooks.ja.md +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/docs/claude-code-hooks.ko.md +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/docs/claude-code-hooks.md +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/docs/claude-code-hooks.ru.md +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/docs/claude-code-hooks.zh-CN.md +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/docs/claude-code-hooks.zh-TW.md +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/docs/codex-hooks.de.md +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/docs/codex-hooks.fr.md +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/docs/codex-hooks.ja.md +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/docs/codex-hooks.ko.md +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/docs/codex-hooks.md +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/docs/codex-hooks.ru.md +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/docs/codex-hooks.zh-CN.md +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/docs/codex-hooks.zh-TW.md +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/docs/cursor-hooks.de.md +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/docs/cursor-hooks.fr.md +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/docs/cursor-hooks.ja.md +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/docs/cursor-hooks.ko.md +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/docs/cursor-hooks.md +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/docs/cursor-hooks.ru.md +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/docs/cursor-hooks.zh-CN.md +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/docs/cursor-hooks.zh-TW.md +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/docs/evidence-grades.de.md +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/docs/evidence-grades.fr.md +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/docs/evidence-grades.ja.md +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/docs/evidence-grades.ko.md +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/docs/evidence-grades.md +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/docs/evidence-grades.ru.md +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/docs/evidence-grades.zh-CN.md +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/docs/evidence-grades.zh-TW.md +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/docs/gemini-hooks.de.md +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/docs/gemini-hooks.fr.md +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/docs/gemini-hooks.ja.md +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/docs/gemini-hooks.ko.md +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/docs/gemini-hooks.md +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/docs/gemini-hooks.ru.md +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/docs/gemini-hooks.zh-CN.md +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/docs/gemini-hooks.zh-TW.md +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/docs/inference-gateway.de.md +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/docs/inference-gateway.fr.md +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/docs/inference-gateway.ja.md +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/docs/inference-gateway.ko.md +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/docs/inference-gateway.md +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/docs/inference-gateway.ru.md +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/docs/inference-gateway.zh-CN.md +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/docs/inference-gateway.zh-TW.md +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/docs/live-graph.de.md +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/docs/live-graph.fr.md +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/docs/live-graph.ja.md +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/docs/live-graph.ko.md +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/docs/live-graph.md +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/docs/live-graph.ru.md +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/docs/live-graph.zh-CN.md +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/docs/live-graph.zh-TW.md +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/docs/model-runtime.de.md +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/docs/model-runtime.fr.md +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/docs/model-runtime.ja.md +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/docs/model-runtime.ko.md +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/docs/model-runtime.md +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/docs/model-runtime.ru.md +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/docs/model-runtime.zh-CN.md +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/docs/model-runtime.zh-TW.md +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/docs/opencode-plugin.de.md +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/docs/opencode-plugin.fr.md +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/docs/opencode-plugin.ja.md +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/docs/opencode-plugin.ko.md +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/docs/opencode-plugin.md +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/docs/opencode-plugin.ru.md +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/docs/opencode-plugin.zh-CN.md +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/docs/opencode-plugin.zh-TW.md +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/docs/phase-1-runtime-collection.de.md +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/docs/phase-1-runtime-collection.fr.md +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/docs/phase-1-runtime-collection.ja.md +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/docs/phase-1-runtime-collection.ko.md +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/docs/phase-1-runtime-collection.md +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/docs/phase-1-runtime-collection.ru.md +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/docs/phase-1-runtime-collection.zh-CN.md +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/docs/phase-1-runtime-collection.zh-TW.md +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/docs/phase-2-execution-graph.de.md +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/docs/phase-2-execution-graph.fr.md +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/docs/phase-2-execution-graph.ja.md +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/docs/phase-2-execution-graph.ko.md +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/docs/phase-2-execution-graph.md +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/docs/phase-2-execution-graph.ru.md +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/docs/phase-2-execution-graph.zh-CN.md +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/docs/phase-2-execution-graph.zh-TW.md +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/docs/rule-packs.de.md +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/docs/rule-packs.fr.md +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/docs/rule-packs.ja.md +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/docs/rule-packs.ko.md +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/docs/rule-packs.md +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/docs/rule-packs.ru.md +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/docs/rule-packs.zh-CN.md +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/docs/rule-packs.zh-TW.md +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/docs/run-integrity.de.md +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/docs/run-integrity.fr.md +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/docs/run-integrity.ja.md +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/docs/run-integrity.ko.md +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/docs/run-integrity.md +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/docs/run-integrity.ru.md +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/docs/run-integrity.zh-CN.md +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/docs/run-integrity.zh-TW.md +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/docs/runtime-threat-model.de.md +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/docs/runtime-threat-model.fr.md +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/docs/runtime-threat-model.ja.md +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/docs/runtime-threat-model.ko.md +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/docs/runtime-threat-model.md +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/docs/runtime-threat-model.ru.md +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/docs/runtime-threat-model.zh-CN.md +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/docs/runtime-threat-model.zh-TW.md +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/docs/security-analysis.de.md +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/docs/security-analysis.fr.md +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/docs/security-analysis.ja.md +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/docs/security-analysis.ko.md +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/docs/security-analysis.md +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/docs/security-analysis.ru.md +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/docs/security-analysis.zh-CN.md +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/docs/security-analysis.zh-TW.md +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/docs/semantic-telemetry.de.md +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/docs/semantic-telemetry.fr.md +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/docs/semantic-telemetry.ja.md +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/docs/semantic-telemetry.ko.md +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/docs/semantic-telemetry.md +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/docs/semantic-telemetry.ru.md +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/docs/semantic-telemetry.zh-CN.md +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/docs/semantic-telemetry.zh-TW.md +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/docs/v0.6.5-hardening-decisions.md +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/scripts/check_claude_hook.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/scripts/check_claude_record_graph.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/scripts/check_codex_hook.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/scripts/check_correlation_graph.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/scripts/check_inference_gateway_cli.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/scripts/check_model_runtime_cli.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/scripts/check_openai_compatible_cli.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/scripts/check_semantic_graph.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/scripts/check_viewer_js.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/scripts/check_wheel_install.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/scripts/check_windows_launchers.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/scripts/emit_claude_hook_smoke.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/scripts/emit_cursor_hook_smoke.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/scripts/emit_gemini_hook_smoke.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/scripts/emit_opencode_plugin_smoke.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/scripts/make_semantic_smoke.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/scripts/sync_i18n_nav.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/src/execweave/__main__.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/src/execweave/agent_bootstrap.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/src/execweave/agent_trace.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/src/execweave/analysis.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/src/execweave/anthropic.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/src/execweave/anthropic_cli.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/src/execweave/anthropic_full_fidelity.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/src/execweave/antigravity_adapter.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/src/execweave/antigravity_adapter_base.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/src/execweave/antigravity_full_fidelity_base.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/src/execweave/antigravity_hook_cli.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/src/execweave/antigravity_record.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/src/execweave/antigravity_subagent_linkage.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/src/execweave/antigravity_trace_capability.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/src/execweave/auto_specialized.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/src/execweave/backends.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/src/execweave/benchmark.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/src/execweave/claude_adapter.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/src/execweave/claude_delegation.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/src/execweave/claude_full_fidelity.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/src/execweave/claude_hook_cli.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/src/execweave/claude_hook_contract.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/src/execweave/claude_model_observer.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/src/execweave/claude_record.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/src/execweave/cli.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/src/execweave/codex_adapter.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/src/execweave/codex_full_fidelity.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/src/execweave/codex_hook_lifecycle.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/src/execweave/codex_message_diagnostics.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/src/execweave/codex_message_transport_diagnostics.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/src/execweave/codex_record.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/src/execweave/codex_rollout_structures.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/src/execweave/codex_rollout_trace.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/src/execweave/codex_rollout_trace_base.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/src/execweave/collector.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/src/execweave/command.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/src/execweave/content_evidence.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/src/execweave/content_store.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/src/execweave/correlation.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/src/execweave/cursor_adapter.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/src/execweave/cursor_delegation.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/src/execweave/cursor_delegation_base.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/src/execweave/cursor_full_fidelity.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/src/execweave/cursor_hook_cli.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/src/execweave/cursor_hook_contract.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/src/execweave/cursor_record.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/src/execweave/entry.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/src/execweave/evidence_grade.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/src/execweave/fidelity.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/src/execweave/filesystem.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/src/execweave/focus.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/src/execweave/gemini_adapter.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/src/execweave/gemini_full_fidelity.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/src/execweave/gemini_hook_cli.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/src/execweave/gemini_hook_contract.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/src/execweave/gemini_record.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/src/execweave/graph.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/src/execweave/graph_ops.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/src/execweave/http_proxy.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/src/execweave/http_proxy_cli.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/src/execweave/inference_gateway.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/src/execweave/inference_gateway_cli.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/src/execweave/inference_gateway_full_fidelity.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/src/execweave/inference_identity.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/src/execweave/inference_identity_cli.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/src/execweave/integrity.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/src/execweave/integrity_cli.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/src/execweave/litellm_callback.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/src/execweave/litellm_callback_cli.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/src/execweave/live_core.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/src/execweave/live_view.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/src/execweave/live_view_extra_style.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/src/execweave/live_view_markup.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/src/execweave/live_view_script_a.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/src/execweave/live_view_script_b.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/src/execweave/live_view_script_c.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/src/execweave/live_view_script_d.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/src/execweave/live_view_style.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/src/execweave/model_runtime.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/src/execweave/model_runtime_cli.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/src/execweave/model_runtime_full_fidelity.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/src/execweave/openai_compatible.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/src/execweave/openai_compatible_cli.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/src/execweave/openai_compatible_full_fidelity.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/src/execweave/opencode_adapter.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/src/execweave/opencode_event_contract.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/src/execweave/opencode_plugin_cli.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/src/execweave/opencode_record.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/src/execweave/overhead_benchmark.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/src/execweave/provider_lifecycle.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/src/execweave/provider_record.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/src/execweave/rule_pack.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/src/execweave/rule_pack_cli.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/src/execweave/scalability_benchmark.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/src/execweave/schema.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/src/execweave/scope.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/src/execweave/semantic.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/src/execweave/sink.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/src/execweave/strace_backend.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/src/execweave/theme.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/src/execweave/top.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/src/execweave/top_cli.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/src/execweave/validate.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/src/execweave/view_cli.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/src/execweave/viewer.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/src/execweave/viewer_antigravity_linkage_inspector.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/src/execweave/viewer_content_inspector.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/src/execweave/viewer_execution_inspector.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/src/execweave/viewer_projection_base.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/src/execweave/workflow.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/tests/fixtures/hooks/README.md +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/tests/fixtures/hooks/claude.json +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/tests/fixtures/hooks/codex.json +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/tests/fixtures/hooks/cursor.json +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/tests/fixtures/hooks/gemini.json +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/tests/fixtures/hooks/manifest.json +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/tests/fixtures/hooks/opencode.json +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/tests/test_agent_bootstrap.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/tests/test_agent_message_viewer.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/tests/test_agent_trace_lifecycle.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/tests/test_agent_trace_viewer_visibility.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/tests/test_analysis.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/tests/test_anthropic.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/tests/test_antigravity_agent_collaboration.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/tests/test_antigravity_cursor_launch.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/tests/test_antigravity_lifecycle.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/tests/test_antigravity_linkage_projection.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/tests/test_antigravity_official_contract.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/tests/test_antigravity_subagent_transcript_linkage.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/tests/test_antigravity_trace_capability_cli.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/tests/test_auto_specialized.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/tests/test_backends.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/tests/test_claude_adapter.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/tests/test_claude_delegation.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/tests/test_claude_full_fidelity.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/tests/test_claude_hook_contract.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/tests/test_claude_hook_metadata.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/tests/test_claude_hook_viewer.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/tests/test_claude_model_observer.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/tests/test_claude_record.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/tests/test_codex_adapter.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/tests/test_codex_full_fidelity.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/tests/test_codex_hook_lifecycle.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/tests/test_codex_message_diagnostics.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/tests/test_codex_message_transport_diagnostics.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/tests/test_codex_record.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/tests/test_codex_reducer_command.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/tests/test_codex_rollout_structures.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/tests/test_codex_rollout_trace.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/tests/test_collector.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/tests/test_command.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/tests/test_condense.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/tests/test_conversation_access.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/tests/test_correlation.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/tests/test_correlation_canonical_path.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/tests/test_correlation_checker.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/tests/test_correlation_process_exe.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/tests/test_cross_provider_agent_trace.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/tests/test_cursor_adapter.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/tests/test_cursor_delegation.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/tests/test_cursor_full_fidelity.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/tests/test_cursor_hook_contract.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/tests/test_cursor_hook_fail_open.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/tests/test_cursor_record.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/tests/test_cursor_task_linkage.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/tests/test_dashboard_ux_and_hook_projection.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/tests/test_delegation_viewer.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/tests/test_evidence_grade.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/tests/test_execution_viewer.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/tests/test_fidelity.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/tests/test_filesystem_resilience.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/tests/test_focus.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/tests/test_full_fidelity.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/tests/test_gemini_adapter.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/tests/test_gemini_full_fidelity.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/tests/test_gemini_hook_contract.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/tests/test_gemini_lifecycle.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/tests/test_gemini_record.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/tests/test_graph.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/tests/test_graph_ops.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/tests/test_hook_fixture_corpus.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/tests/test_http_proxy.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/tests/test_inference_gateway.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/tests/test_inference_gateway_full_fidelity.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/tests/test_inference_identity.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/tests/test_integrity.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/tests/test_litellm_callback.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/tests/test_live.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/tests/test_live_auth.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/tests/test_live_dashboard.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/tests/test_live_dashboard_js.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/tests/test_live_delta.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/tests/test_live_logs_export.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/tests/test_live_theme.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/tests/test_lmstudio_auto_specialized.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/tests/test_model_runtime.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/tests/test_model_runtime_full_fidelity.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/tests/test_openai_compatible.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/tests/test_opencode_adapter.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/tests/test_opencode_event_contract.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/tests/test_opencode_event_lifecycle.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/tests/test_opencode_full_fidelity.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/tests/test_opencode_plugin.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/tests/test_opencode_record.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/tests/test_opencode_task_session_linkage.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/tests/test_overhead_benchmark.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/tests/test_provider_lifecycle.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/tests/test_rule_pack.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/tests/test_schema.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/tests/test_scope.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/tests/test_semantic.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/tests/test_strace_backend.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/tests/test_threat_model.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/tests/test_top_detached.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/tests/test_v063_features.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/tests/test_v064_live_auto_integrations.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/tests/test_v064_live_evidence.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/tests/test_validate.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/tests/test_version.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/tests/test_viewer.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/tests/test_viewer_content_inspector.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/tests/test_viewer_projection.py +0 -0
- {execweave-0.7.0 → execweave-0.7.2}/tests/test_workflow.py +0 -0
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
name: Cleanup workflow history
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main]
|
|
6
|
+
paths:
|
|
7
|
+
- .github/workflows/cleanup-workflow-history.yml
|
|
8
|
+
workflow_dispatch:
|
|
9
|
+
|
|
10
|
+
permissions:
|
|
11
|
+
contents: read
|
|
12
|
+
actions: write
|
|
13
|
+
|
|
14
|
+
jobs:
|
|
15
|
+
cleanup:
|
|
16
|
+
runs-on: ubuntu-latest
|
|
17
|
+
steps:
|
|
18
|
+
- name: Delete superseded completed workflow runs
|
|
19
|
+
env:
|
|
20
|
+
GH_TOKEN: ${{ github.token }}
|
|
21
|
+
REPOSITORY: ${{ github.repository }}
|
|
22
|
+
CURRENT_RUN_ID: ${{ github.run_id }}
|
|
23
|
+
V070_PUBLISH_RUN_ID: "33179361863"
|
|
24
|
+
run: |
|
|
25
|
+
python - <<'PY'
|
|
26
|
+
import json
|
|
27
|
+
import os
|
|
28
|
+
import urllib.error
|
|
29
|
+
import urllib.request
|
|
30
|
+
|
|
31
|
+
repo = os.environ["REPOSITORY"]
|
|
32
|
+
token = os.environ["GH_TOKEN"]
|
|
33
|
+
current_run_id = int(os.environ["CURRENT_RUN_ID"])
|
|
34
|
+
protected_publish_run_id = int(os.environ["V070_PUBLISH_RUN_ID"])
|
|
35
|
+
api = f"https://api.github.com/repos/{repo}"
|
|
36
|
+
headers = {
|
|
37
|
+
"Accept": "application/vnd.github+json",
|
|
38
|
+
"Authorization": f"Bearer {token}",
|
|
39
|
+
"X-GitHub-Api-Version": "2022-11-28",
|
|
40
|
+
"User-Agent": "execweave-workflow-history-cleanup",
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
def request_json(url):
|
|
44
|
+
req = urllib.request.Request(url, headers=headers)
|
|
45
|
+
with urllib.request.urlopen(req) as response:
|
|
46
|
+
return json.load(response)
|
|
47
|
+
|
|
48
|
+
runs = []
|
|
49
|
+
page = 1
|
|
50
|
+
while True:
|
|
51
|
+
payload = request_json(f"{api}/actions/runs?per_page=100&page={page}")
|
|
52
|
+
batch = payload.get("workflow_runs", [])
|
|
53
|
+
runs.extend(batch)
|
|
54
|
+
if len(batch) < 100:
|
|
55
|
+
break
|
|
56
|
+
page += 1
|
|
57
|
+
|
|
58
|
+
completed = [run for run in runs if run.get("status") == "completed"]
|
|
59
|
+
completed.sort(key=lambda run: run.get("created_at", ""), reverse=True)
|
|
60
|
+
|
|
61
|
+
keep = {current_run_id, protected_publish_run_id}
|
|
62
|
+
seen_success = set()
|
|
63
|
+
seen_failure = set()
|
|
64
|
+
|
|
65
|
+
for run in completed:
|
|
66
|
+
workflow_id = run.get("workflow_id")
|
|
67
|
+
conclusion = run.get("conclusion")
|
|
68
|
+
if conclusion == "success" and workflow_id not in seen_success:
|
|
69
|
+
keep.add(run["id"])
|
|
70
|
+
seen_success.add(workflow_id)
|
|
71
|
+
elif conclusion != "success" and workflow_id not in seen_failure:
|
|
72
|
+
keep.add(run["id"])
|
|
73
|
+
seen_failure.add(workflow_id)
|
|
74
|
+
|
|
75
|
+
delete_ids = [run["id"] for run in completed if run["id"] not in keep]
|
|
76
|
+
deleted = 0
|
|
77
|
+
failed = []
|
|
78
|
+
for run_id in delete_ids:
|
|
79
|
+
req = urllib.request.Request(
|
|
80
|
+
f"{api}/actions/runs/{run_id}",
|
|
81
|
+
headers=headers,
|
|
82
|
+
method="DELETE",
|
|
83
|
+
)
|
|
84
|
+
try:
|
|
85
|
+
with urllib.request.urlopen(req) as response:
|
|
86
|
+
if response.status == 204:
|
|
87
|
+
deleted += 1
|
|
88
|
+
except urllib.error.HTTPError as exc:
|
|
89
|
+
failed.append((run_id, exc.code))
|
|
90
|
+
|
|
91
|
+
print(f"workflow runs discovered: {len(runs)}")
|
|
92
|
+
print(f"completed runs considered: {len(completed)}")
|
|
93
|
+
print(f"protected runs: {len(keep)}")
|
|
94
|
+
print(f"deleted runs: {deleted}")
|
|
95
|
+
if failed:
|
|
96
|
+
print(f"failed deletions: {failed}")
|
|
97
|
+
raise SystemExit(1)
|
|
98
|
+
PY
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: execweave
|
|
3
|
-
Version: 0.7.
|
|
3
|
+
Version: 0.7.2
|
|
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
|
|
@@ -82,7 +82,7 @@ Install the latest published wheel/sdist from PyPI:
|
|
|
82
82
|
python -m pip install -U execweave
|
|
83
83
|
```
|
|
84
84
|
|
|
85
|
-
The current release is **v0.7.
|
|
85
|
+
The current release is **v0.7.2**.
|
|
86
86
|
|
|
87
87
|
For development:
|
|
88
88
|
|
|
@@ -118,9 +118,9 @@ execweave record --open -- python my_agent.py
|
|
|
118
118
|
|
|
119
119
|
`execweave top -- codex` keeps the Agent interactive in the launch terminal while opening/attaching the detached Top dashboard according to the host environment.
|
|
120
120
|
|
|
121
|
-
v0.7.
|
|
121
|
+
**v0.7.2 — provider-neutral, agent-local multi-agent conversations.** ExecWeave now projects provider-exposed conversation evidence into agent-scoped dashboard threads instead of duplicating one full transcript across every agent node. Parent → child task assignments, routed inter-agent messages, waits/results, and child → parent final responses are preserved when the provider exposes authoritative identity or routing evidence. A child agent keeps only its own visible task and conversation; inherited parent history and sibling-private content are excluded. The common merge layer also scopes by provider, raw thread identity, and agent identity, so even a reused provider thread ID cannot fold Agent 1 into Agent 2.
|
|
122
122
|
|
|
123
|
-
|
|
123
|
+
The unified dashboard brings the execution graph, logs, and conversation records into the same inspection flow. Finalized runs generate `conversations.md` and `conversations.json`, while validated provider transcripts are copied into the run-local SHA-256 content store. Claude Code, OpenAI Codex, Cursor, OpenCode, and Google Antigravity use the strongest provider-exposed multi-agent evidence available to each integration. For gateways and local runtimes that expose only root request/response traffic, ExecWeave shows only that root conversation and does not invent subagents or hidden routing.
|
|
124
124
|
|
|
125
125
|
## v0.6.9: full-fidelity observability with explicit evidence boundaries
|
|
126
126
|
|
|
@@ -140,11 +140,11 @@ Full fidelity also changes the privacy boundary: application-level secrets embed
|
|
|
140
140
|
|
|
141
141
|
| Integration | OS-runtime observation when launched under ExecWeave | Specialized evidence |
|
|
142
142
|
| --- | --- | --- |
|
|
143
|
-
| Claude Code | Yes | native hooks + full-fidelity supplied hook content |
|
|
144
|
-
| OpenAI Codex | Yes | lifecycle hooks +
|
|
145
|
-
| Google Antigravity / Antigravity CLI | Yes | passive native hooks
|
|
146
|
-
| Cursor | Yes | native hooks +
|
|
147
|
-
| OpenCode | Yes | project plugin + full-fidelity supplied plugin content |
|
|
143
|
+
| Claude Code | Yes | native hooks + full-fidelity supplied hook content + exact subagent results when exposed |
|
|
144
|
+
| OpenAI Codex | Yes | lifecycle hooks + validated rollout transcripts + agent-local task/message/final-response routing |
|
|
145
|
+
| Google Antigravity / Antigravity CLI | Yes | passive native hooks + validated conversation/subagent routing where exposed |
|
|
146
|
+
| Cursor | Yes | native hooks + exact subagent task/summary routing when exposed |
|
|
147
|
+
| OpenCode | Yes | project plugin + session/task routing + full-fidelity supplied plugin content |
|
|
148
148
|
| Ollama | Yes | `execweave-model-runtime event/exchange/probe --runtime ollama` |
|
|
149
149
|
| llama.cpp | Yes | `execweave-model-runtime event/exchange/probe --runtime llamacpp` |
|
|
150
150
|
| vLLM | Yes | `execweave-model-runtime event/exchange/probe --runtime vllm` |
|
|
@@ -152,7 +152,7 @@ Full fidelity also changes the privacy boundary: application-level secrets embed
|
|
|
152
152
|
| LiteLLM Proxy | Yes when the configured proxy is launched under ExecWeave | metadata-oriented gateway callback/event integration |
|
|
153
153
|
| OpenRouter | Observe the local client, not the remote service process | `execweave-inference-gateway event/exchange/generation --gateway openrouter` |
|
|
154
154
|
|
|
155
|
-
OpenRouter `exchange` is caller-supplied request+response evidence, not transparent wire interception. LiteLLM Proxy remains a narrower metadata-oriented integration in the current baseline.
|
|
155
|
+
OpenRouter `exchange` is caller-supplied request+response evidence, not transparent wire interception. LiteLLM Proxy remains a narrower metadata-oriented integration in the current baseline. Provider-neutral conversation projection never upgrades missing provider evidence into a fabricated agent relationship.
|
|
156
156
|
|
|
157
157
|
## Evidence layers
|
|
158
158
|
|
|
@@ -202,7 +202,7 @@ execweave-opencode-plugin --install
|
|
|
202
202
|
execweave-opencode-record --open -- opencode
|
|
203
203
|
```
|
|
204
204
|
|
|
205
|
-
Provider-integrated recorders keep raw runtime, semantic, and
|
|
205
|
+
Provider-integrated recorders keep raw runtime, semantic, correlated, and conversation artifacts separate. Stable provider identifiers such as Cursor `tool_use_id`, Codex rollout thread identity, or OpenCode `sessionID + callID` prove logical provider identity; they are not OS PIDs. Cross-agent content is shown only when the provider exposes an explicit route, delegation, or result. Legacy Gemini CLI hook entry points remain packaged for existing installations, but Gemini CLI is no longer advertised as a current integration; new Google CLI usage should use Antigravity (`agy`).
|
|
206
206
|
|
|
207
207
|
## Inference gateways and model runtimes
|
|
208
208
|
|
|
@@ -323,11 +323,11 @@ Derived correlation never rewrites the raw runtime or provider sidecar evidence.
|
|
|
323
323
|
|
|
324
324
|
ExecWeave is local-first: captures, content blobs, graphs, reports, and viewers remain local by default. The **OS runtime collector** does not intentionally capture file contents or raw read/write byte buffers. That boundary must not be confused with the **provider full-fidelity content store introduced in v0.6.9**: supported hooks/APIs can explicitly supply prompts, tool arguments/results, model responses, reasoning/thinking text, shell output, file content, or other sensitive values, and ExecWeave can preserve those values completely.
|
|
325
325
|
|
|
326
|
-
Do not assume content has been secret-redacted. Commands, paths, endpoint metadata, identifiers, model metadata, prompts, tool values, and content blobs can all be sensitive. Review the entire run directory before sharing it.
|
|
326
|
+
Conversation isolation is an attribution/display rule, not a redaction boundary. If a provider explicitly sends Agent 1 content to Agent 2, that routed evidence can legitimately appear at the participating endpoints. Do not assume content has been secret-redacted. Commands, paths, endpoint metadata, identifiers, model metadata, prompts, tool values, and content blobs can all be sensitive. Review the entire run directory before sharing it.
|
|
327
327
|
|
|
328
328
|
## Current status
|
|
329
329
|
|
|
330
|
-
v0.7.
|
|
330
|
+
v0.7.2 combines cross-platform runtime collection, materialized execution graphs, standalone/live dashboards, conservative provider↔runtime correlation, full-fidelity content-addressed provider evidence, attributable multi-agent execution traces, direct run-local conversation access, and agent-local conversation isolation across provider-neutral projections. Supported integrations preserve the strongest identity/routing evidence actually exposed by each provider and abstain when that evidence is unavailable. Observed evidence and inference remain separate by design.
|
|
331
331
|
|
|
332
332
|
## Documentation
|
|
333
333
|
|
|
@@ -351,7 +351,7 @@ v0.7.0 combines cross-platform runtime collection, materialized execution graphs
|
|
|
351
351
|
|
|
352
352
|
## Contributing
|
|
353
353
|
|
|
354
|
-
Contributions are welcome, especially around native OS collectors, Agent/IDE adapters, inference gateways, model runtimes, evidence/correlation methods, privacy/redaction, graph UX, and performance evaluation.
|
|
354
|
+
Contributions are welcome, especially around native OS collectors, Agent/IDE adapters, inference gateways, model runtimes, evidence/correlation methods, privacy/redaction, graph UX, multi-agent conversation attribution, and performance evaluation.
|
|
355
355
|
|
|
356
356
|
## License
|
|
357
357
|
|
|
@@ -0,0 +1,307 @@
|
|
|
1
|
+
# ExecWeave
|
|
2
|
+
|
|
3
|
+
<!-- i18n-nav:start -->
|
|
4
|
+
<p align="center">
|
|
5
|
+
<a href="README.md">English</a> |
|
|
6
|
+
<a href="README.zh-TW.md">繁體中文</a> |
|
|
7
|
+
<a href="README.zh-CN.md">简体中文</a> |
|
|
8
|
+
<a href="README.ja.md">日本語</a> |
|
|
9
|
+
<a href="README.ko.md">한국어</a> |
|
|
10
|
+
<a href="README.fr.md">Français</a> |
|
|
11
|
+
<strong>Deutsch</strong> |
|
|
12
|
+
<a href="README.ru.md">Русский</a>
|
|
13
|
+
</p>
|
|
14
|
+
<!-- i18n-nav:end -->
|
|
15
|
+
|
|
16
|
+
**Sehen Sie, was KI-Agenten auf Ihrem Rechner tatsächlich tun.**
|
|
17
|
+
|
|
18
|
+
ExecWeave ist ein source-available, local-first Observability-Projekt, das Aktivitäten von KI-Agenten in einen interaktiven execution graph überführt und observed evidence, provider content sowie derived inference ausdrücklich getrennt hält.
|
|
19
|
+
|
|
20
|
+
> **Das Event ist ground truth. Der Graph ist eine materialized view.**
|
|
21
|
+
|
|
22
|
+
<p align="center">
|
|
23
|
+
<img src="docs/assets/codex.gif" alt="ExecWeave animated live demo" width="100%">
|
|
24
|
+
</p>
|
|
25
|
+
|
|
26
|
+
## Installation
|
|
27
|
+
|
|
28
|
+
Installieren Sie das neueste veröffentlichte wheel/sdist von PyPI:
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
python -m pip install -U execweave
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
Die aktuelle Version ist **v0.7.2**.
|
|
35
|
+
|
|
36
|
+
Für die Entwicklung:
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
git clone https://github.com/Irish-kw/ExecWeave.git
|
|
40
|
+
cd ExecWeave
|
|
41
|
+
python -m pip install -e ".[dev]"
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
## Schnellstart
|
|
45
|
+
|
|
46
|
+
Live OS-runtime telemetry funktioniert mit **jedem lokalen Befehl**. Die folgenden Agent/runtime-Namen sind Beispiele und keine whitelist.
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
execweave live --open -- claude
|
|
50
|
+
execweave live --open -- codex
|
|
51
|
+
execweave live --open -- antigravity
|
|
52
|
+
execweave live --open -- cursor
|
|
53
|
+
execweave live --open -- opencode
|
|
54
|
+
execweave live --open -- ollama serve
|
|
55
|
+
execweave live --open -- python my_agent.py
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
> **Bestätigen Sie den Hook, wenn Sie dazu aufgefordert werden.** Beim ersten provider-integrierten Lauf kann der Agent/die IDE fragen, ob ExecWeave die lokale Hook-Integration aktivieren darf. Wählen Sie **Allow / Yes**. Ohne Freigabe kann OS-runtime telemetry weiterhin funktionieren, provider-level tool-, model- und supplied-content observability ist dann jedoch eingeschränkt oder nicht verfügbar.
|
|
59
|
+
|
|
60
|
+
Google Antigravity verwendet aktuell den CLI-Befehl `agy`. ExecWeave akzeptiert `antigravity` zusätzlich als freundlichen Alias und löst ihn zu `agy` auf. Bei Cursor versucht `execweave live --open -- cursor` zunächst einen normalen PATH launcher und fällt auf macOS/Windows auf das Standard-Binary der Cursor Desktop-Anwendung zurück.
|
|
61
|
+
|
|
62
|
+
Für die finalisierte Artifact-Pipeline:
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
execweave record --open -- python my_agent.py
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
`execweave top -- codex` hält den Agent im Startterminal interaktiv und öffnet bzw. verbindet gleichzeitig das detached Top dashboard entsprechend der Host-Umgebung.
|
|
69
|
+
|
|
70
|
+
**v0.7.2 — provider-neutral, agent-local multi-agent conversations.** ExecWeave projiziert die vom Provider tatsächlich offengelegte conversation evidence jetzt in agent-spezifische Dashboard-Threads, statt denselben vollständigen Transcript in jeden agent node zu kopieren. Wenn der Provider authoritative identity / routing evidence bereitstellt, werden parent → child task assignments, inter-agent messages, waits/results und child → parent final responses erhalten. Ein Child Agent enthält nur die Task, die er tatsächlich erhalten hat, sowie seine eigene Conversation; inherited parent history und sibling-private content werden ausgeschlossen. Die gemeinsame Merge-Schicht scoped zusätzlich nach Provider, raw thread identity und agent identity, sodass selbst ein wiederverwendeter Provider-thread-ID Agent 1 und Agent 2 nicht zusammenführen kann.
|
|
71
|
+
|
|
72
|
+
Das vereinheitlichte Dashboard bringt execution graph, logs und conversation records in denselben Inspection-Flow. Finalisierte Runs erzeugen `conversations.md` und `conversations.json`; validierte Provider-Transcripts werden in den run-local SHA-256 content store kopiert. Claude Code, OpenAI Codex, Cursor, OpenCode und Google Antigravity verwenden jeweils die stärkste Multi-Agent-Evidence, die ihre Integration tatsächlich offenlegt. Wenn ein Gateway oder lokaler Runtime nur root request/response sichtbar macht, zeigt ExecWeave nur diese Root-Conversation und erfindet weder Subagents noch hidden routing.
|
|
73
|
+
|
|
74
|
+
## v0.6.9: Full-Fidelity Observability mit expliziten Evidence Boundaries
|
|
75
|
+
|
|
76
|
+
v0.6.9 erweitert Provider-/Runtime-Observability über kompakte Metadata hinaus. Wenn ein unterstützter Integration Point Inhalte ausdrücklich liefert, kann ExecWeave den **vollständig gelieferten Wert** in einem lokalen SHA-256 content-addressed store speichern und im semantic event stream nur eine Reference behalten.
|
|
77
|
+
|
|
78
|
+
```text
|
|
79
|
+
<run-root>/content/sha256/<sha256>.<json|txt|bin>
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
Abhängig vom Adapter und der upstream Hook/API surface können unter anderem prompts/messages, model request/response objects, tool inputs/results, assistant responses, ausdrücklich offengelegter reasoning/thinking text, shell/MCP output und durch Provider-Hooks gelieferter file content gespeichert werden.
|
|
83
|
+
|
|
84
|
+
`complete_from_source: true` bedeutet lediglich, dass ExecWeave den vollständigen Wert gespeichert hat, den dieser Integration Point geliefert hat. Es bedeutet **nicht**, dass ExecWeave hidden model state, nie offengelegte provider-side stages, einen nicht beobachteten finalen wire request oder nicht abgefangene bytes gesehen hat.
|
|
85
|
+
|
|
86
|
+
Full fidelity verändert auch die Privacy Boundary: application-level secrets innerhalb des Contents werden mitgespeichert. Bekannte transport credentials werden nur in ausgewählten provider-metadata projections gefiltert, wenn der Adapter dieses Verhalten ausdrücklich definiert. ExecWeave ist **kein** allgemeiner secret scanner oder content redactor.
|
|
87
|
+
|
|
88
|
+
### Unterstützte Semantic-/Inference-Surfaces
|
|
89
|
+
|
|
90
|
+
| Integration | OS-runtime observation bei Start unter ExecWeave | Specialized evidence |
|
|
91
|
+
| --- | --- | --- |
|
|
92
|
+
| Claude Code | Yes | native hooks + full-fidelity hook content + vom Provider offengelegte subagent results |
|
|
93
|
+
| OpenAI Codex | Yes | lifecycle hooks + validated rollout transcripts + agent-local task/message/final-response routing |
|
|
94
|
+
| Google Antigravity / Antigravity CLI | Yes | passive native hooks + validierbares conversation/subagent routing |
|
|
95
|
+
| Cursor | Yes | native hooks + exact subagent task/summary routing, wenn verfügbar |
|
|
96
|
+
| OpenCode | Yes | project plugin + session/task routing + full-fidelity plugin content |
|
|
97
|
+
| Ollama | Yes | `execweave-model-runtime event/exchange/probe --runtime ollama` |
|
|
98
|
+
| llama.cpp | Yes | `execweave-model-runtime event/exchange/probe --runtime llamacpp` |
|
|
99
|
+
| vLLM | Yes | `execweave-model-runtime event/exchange/probe --runtime vllm` |
|
|
100
|
+
| LM Studio | Nur wenn der lokale Process unter ExecWeave gestartet wird | `execweave-model-runtime event/exchange/probe --runtime lmstudio` |
|
|
101
|
+
| LiteLLM Proxy | Yes, wenn der konfigurierte Proxy unter ExecWeave gestartet wird | metadata-oriented gateway callback/event integration |
|
|
102
|
+
| OpenRouter | Beobachtet den lokalen Client, nicht den entfernten Service-Process | `execweave-inference-gateway event/exchange/generation --gateway openrouter` |
|
|
103
|
+
|
|
104
|
+
OpenRouter `exchange` ist caller-supplied request+response evidence und keine transparent wire interception. LiteLLM Proxy bleibt im aktuellen Baseline eine engere metadata-oriented integration. Die provider-neutrale Conversation-Projektion erhebt fehlende Provider-Evidence niemals zu einer erfundenen agent relationship.
|
|
105
|
+
|
|
106
|
+
## Evidence layers
|
|
107
|
+
|
|
108
|
+
ExecWeave hält Evidence Layers getrennt, anstatt alle Signale in eine einzige Trace zu flatten:
|
|
109
|
+
|
|
110
|
+
```text
|
|
111
|
+
Agent / IDE semantic + supplied content evidence
|
|
112
|
+
↓
|
|
113
|
+
Inference gateway / routing evidence
|
|
114
|
+
↓
|
|
115
|
+
Model runtime / inference-server evidence
|
|
116
|
+
↓
|
|
117
|
+
OS runtime evidence: process / file / network
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
Eine Relationship ist nur dann causal, wenn die zugrunde liegende Telemetrie diesen Claim unterstützt. Tool → Process bridges bleiben konservative derived evidence:
|
|
121
|
+
|
|
122
|
+
```text
|
|
123
|
+
inferred: true
|
|
124
|
+
causal: false
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
Bei Ambiguität wird kein Edge erzeugt. Eine exact shared request identity zwischen Gateway und Model Runtime bleibt identity evidence statt causal evidence:
|
|
128
|
+
|
|
129
|
+
```text
|
|
130
|
+
identity_exact: true
|
|
131
|
+
inferred: false
|
|
132
|
+
causal: false
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
## Agent / IDE integrations
|
|
136
|
+
|
|
137
|
+
```bash
|
|
138
|
+
execweave-claude-hook --print-config
|
|
139
|
+
execweave-claude-record --open -- claude
|
|
140
|
+
|
|
141
|
+
execweave-codex-hook --print-config
|
|
142
|
+
execweave-codex-record --open -- codex
|
|
143
|
+
|
|
144
|
+
execweave-antigravity-hook --print-config
|
|
145
|
+
execweave-antigravity-record --open -- antigravity
|
|
146
|
+
|
|
147
|
+
execweave-cursor-hook --print-config
|
|
148
|
+
execweave-cursor-record --open -- cursor
|
|
149
|
+
|
|
150
|
+
execweave-opencode-plugin --install
|
|
151
|
+
execweave-opencode-record --open -- opencode
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
Provider-integrierte Recorder speichern raw runtime, semantic, correlated und conversation artifacts getrennt. Stabile Provider-Identifier wie Cursor `tool_use_id`, Codex rollout thread identity oder OpenCode `sessionID + callID` belegen logische Provider-Identität; sie sind keine OS PIDs. Cross-agent content wird nur angezeigt, wenn der Provider eine Route, Delegation oder ein Result explizit offenlegt. Legacy Gemini CLI Hook Entry Points bleiben für bestehende Installationen paketiert, neue Google-CLI-Nutzung sollte jedoch Antigravity (`agy`) verwenden.
|
|
155
|
+
|
|
156
|
+
## Inference gateways und model runtimes
|
|
157
|
+
|
|
158
|
+
OpenRouter- oder LiteLLM-Gateway-Evidence erfassen:
|
|
159
|
+
|
|
160
|
+
```bash
|
|
161
|
+
execweave-inference-gateway event --gateway openrouter --sidecar gateway.jsonl
|
|
162
|
+
execweave-inference-gateway event --gateway litellm --sidecar gateway.jsonl
|
|
163
|
+
execweave-inference-gateway exchange --gateway openrouter --sidecar gateway.jsonl
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
Model-runtime evidence für Ollama, llama.cpp, vLLM oder LM Studio erfassen:
|
|
167
|
+
|
|
168
|
+
```bash
|
|
169
|
+
execweave-model-runtime event --runtime ollama --sidecar model-runtime.jsonl
|
|
170
|
+
execweave-model-runtime exchange --runtime ollama --sidecar model-runtime.jsonl
|
|
171
|
+
execweave-model-runtime probe --runtime ollama --sidecar model-runtime.jsonl
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
`event` ist response-only evidence. `exchange` speichert ein caller-supplied request+response object und behauptet keine transparente Interception. Runtime catalog relations behalten ihre quellenspezifische Bedeutung: `LOADED_MODEL`, `SERVES_MODEL` und `ADVERTISES_MODEL` sind nicht austauschbar. Die Catalog Visibility von LM Studio bleibt `ADVERTISES_MODEL` und ist kein Beweis dafür, dass Weights resident in memory waren.
|
|
175
|
+
|
|
176
|
+
## Security analysis, evidence grades und bounded rule packs
|
|
177
|
+
|
|
178
|
+
Die integrierte Analyse ausführen:
|
|
179
|
+
|
|
180
|
+
```bash
|
|
181
|
+
execweave analyze run.graph.json --output analysis.json
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
Findings enthalten einen von der Severity unabhängigen evidence grade. Aktuelle Grades sind `A`, `B`, `C`, `D` und `U`, von direkter syscall attribution bis inferred/unknown provenance. Diese Grades sind Kategorien der Evidence-Stärke, **keine Wahrscheinlichkeiten oder Trust Scores**.
|
|
185
|
+
|
|
186
|
+
Lokale Rule Packs fügen begrenzte, erklärbare **single-edge observation** policies hinzu, ohne Third-Party-Code auszuführen:
|
|
187
|
+
|
|
188
|
+
```bash
|
|
189
|
+
execweave-rule-pack graph.json --rule-pack local-policy.json --output report.json
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
Rule Packs können keinen Code ausführen, keine Regex-/Path-Programme definieren und keinen byte-level data flow oder Exfiltration behaupten. Rule-Pack-Findings bleiben observation-only.
|
|
193
|
+
|
|
194
|
+
Security Findings machen stärkere Non-Claims weiterhin explizit:
|
|
195
|
+
|
|
196
|
+
```json
|
|
197
|
+
{
|
|
198
|
+
"data_flow_proven": false,
|
|
199
|
+
"exfiltration_proven": false
|
|
200
|
+
}
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
## Run integrity
|
|
204
|
+
|
|
205
|
+
Einen abgeschlossenen Run seal-en und später prüfen, ob sich sein regular-file inventory gegenüber dem Seal verändert hat:
|
|
206
|
+
|
|
207
|
+
```text
|
|
208
|
+
execweave-integrity seal .execweave/runs/<run-id>
|
|
209
|
+
execweave-integrity verify .execweave/runs/<run-id>
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
Das deterministische Manifest speichert file size/SHA-256 und verweigert symbolic links. Es erkennt fehlende, geänderte, ersetzte oder neu hinzugefügte regular files nach dem Seal.
|
|
213
|
+
|
|
214
|
+
Dieser local seal wird bewusst **nicht** als adversary-resistant tamper evidence bezeichnet, wenn Evidence und Manifest innerhalb derselben writable trust boundary liegen. Das Manifest vermerkt `malicious_writer_resistance: false` und `external_trust_anchor: false`. Für einen stärkeren Trust Anchor sollte der Manifest-Digest außerhalb dieser Boundary kopiert oder geschützt werden.
|
|
215
|
+
|
|
216
|
+
## Runtime evidence und graph operations
|
|
217
|
+
|
|
218
|
+
Der portable Collector läuft unter Linux, macOS und Windows. Linux besitzt zusätzlich einen syscall-backed `strace` reference backend.
|
|
219
|
+
|
|
220
|
+
```bash
|
|
221
|
+
execweave doctor
|
|
222
|
+
execweave run --backend portable -- your-command
|
|
223
|
+
execweave run --backend strace -- your-command
|
|
224
|
+
execweave graph-summary run.graph.json
|
|
225
|
+
execweave graph-filter run.graph.json --causal-only --output causal.graph.json
|
|
226
|
+
execweave graph-focus run.graph.json NODE_ID --hops 2 --output focused.graph.json
|
|
227
|
+
execweave path run.graph.json SOURCE TARGET --causal-only
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
Portable filesystem observation ist session-correlated statt process-causal; Polling kann ausreichend kurzlebige Aktivität verpassen. Linux `strace` liefert für unterstützte Executions stärker process-attributed syscall evidence. Zukünftige native Collectors sind weiterhin für Linux eBPF, Windows ETW und macOS Endpoint Security geplant.
|
|
231
|
+
|
|
232
|
+
## Performance und Large-Run-Sicherheit
|
|
233
|
+
|
|
234
|
+
ExecWeave enthält begrenzte filesystem/viewer protections, inkrementelles Live JSONL tailing, large-graph safety guards, detached Top und provisional live sidecars für konfigurierte Provider-Integrationen.
|
|
235
|
+
|
|
236
|
+
Das reproduzierbare inkrementelle `GraphAccumulator`-Referenzergebnis erreicht **164,273 ev/s** bei 1M synthetic events auf dem dokumentierten GitHub-Actions-Workload. Dies ist ein Graph-Accumulation-Benchmark und kein end-to-end collector/browser throughput.
|
|
237
|
+
|
|
238
|
+
Führen Sie den package-level overhead benchmark auf einem repräsentativen Host/Workload aus:
|
|
239
|
+
|
|
240
|
+
```bash
|
|
241
|
+
execweave-overhead --iterations 7 --strace auto --output-json benchmark-results.json
|
|
242
|
+
execweave-scalability
|
|
243
|
+
```
|
|
244
|
+
|
|
245
|
+
Referenzdaten und Methodik finden Sie unter [`docs/benchmarks/`](docs/benchmarks/).
|
|
246
|
+
|
|
247
|
+
## Layered artifacts
|
|
248
|
+
|
|
249
|
+
Ein provider-integrierter Run kann enthalten:
|
|
250
|
+
|
|
251
|
+
```text
|
|
252
|
+
.execweave/runs/<run-id>/
|
|
253
|
+
├── events.jsonl
|
|
254
|
+
├── graph.json
|
|
255
|
+
├── viewer.html
|
|
256
|
+
├── semantic.jsonl
|
|
257
|
+
├── content/sha256/...
|
|
258
|
+
├── conversations.md
|
|
259
|
+
├── conversations.json
|
|
260
|
+
├── events.semantic.jsonl
|
|
261
|
+
├── graph.semantic.json
|
|
262
|
+
├── viewer.semantic.html
|
|
263
|
+
├── events.correlated.jsonl
|
|
264
|
+
├── graph.correlated.json
|
|
265
|
+
├── viewer.correlated.html
|
|
266
|
+
└── integrity.json # nach explizitem Seal
|
|
267
|
+
```
|
|
268
|
+
|
|
269
|
+
Derived correlation schreibt raw runtime oder provider sidecar evidence niemals um.
|
|
270
|
+
|
|
271
|
+
## Privacy
|
|
272
|
+
|
|
273
|
+
ExecWeave ist local-first: Captures, content blobs, Graphs, Reports und Viewer bleiben standardmäßig lokal. Der **OS runtime collector** erfasst file contents oder raw read/write byte buffers nicht absichtlich. Diese Boundary darf nicht mit dem in v0.6.9 eingeführten **provider full-fidelity content store** verwechselt werden: Unterstützte Hooks/APIs können prompts, tool arguments/results, model responses, reasoning/thinking text, shell output, file content oder andere sensible Werte ausdrücklich liefern, die ExecWeave vollständig speichern kann.
|
|
274
|
+
|
|
275
|
+
Conversation isolation ist eine Attribution-/Display-Regel, keine Redaction Boundary. Wenn ein Provider Inhalt von Agent 1 ausdrücklich an Agent 2 sendet, kann diese routed evidence legitimerweise an den beteiligten Endpoints erscheinen. Gehen Sie nicht davon aus, dass Content secret-redacted wurde. Commands, Paths, endpoint metadata, identifiers, model metadata, prompts, tool values und content blobs können sensibel sein. Prüfen Sie das gesamte Run-Verzeichnis vor dem Teilen.
|
|
276
|
+
|
|
277
|
+
## Aktueller Stand
|
|
278
|
+
|
|
279
|
+
v0.7.2 kombiniert cross-platform runtime collection, materialized execution graphs, standalone/live dashboards, konservative provider↔runtime correlation, full-fidelity content-addressed provider evidence, attributable multi-agent execution traces, direkten run-local conversation access und agent-local conversation isolation in provider-neutralen Projektionen. Jede Integration bewahrt nur die stärkste identity/routing evidence, die der Provider tatsächlich offenlegt, und enthält sich, wenn diese Evidence fehlt. Observed evidence und inference bleiben konstruktiv getrennt.
|
|
280
|
+
|
|
281
|
+
## Dokumentation
|
|
282
|
+
|
|
283
|
+
- [`Phase 1 — Runtime Collection`](docs/phase-1-runtime-collection.de.md)
|
|
284
|
+
- [`Phase 2 — Execution Graph`](docs/phase-2-execution-graph.de.md)
|
|
285
|
+
- [`Live Graph`](docs/live-graph.de.md)
|
|
286
|
+
- [`Semantic Telemetry`](docs/semantic-telemetry.de.md)
|
|
287
|
+
- [`Claude Code Hooks`](docs/claude-code-hooks.de.md)
|
|
288
|
+
- [`OpenAI Codex Hooks`](docs/codex-hooks.de.md)
|
|
289
|
+
- [`Google Antigravity Hooks`](docs/antigravity-hooks.md)
|
|
290
|
+
- [`Cursor Hooks`](docs/cursor-hooks.de.md)
|
|
291
|
+
- [`OpenCode Plugin`](docs/opencode-plugin.de.md)
|
|
292
|
+
- [`Inference Gateway / OpenRouter / LiteLLM`](docs/inference-gateway.de.md)
|
|
293
|
+
- [`Model Runtime / Ollama / llama.cpp / vLLM / LM Studio`](docs/model-runtime.de.md)
|
|
294
|
+
- [`Runtime Threat Model`](docs/runtime-threat-model.de.md)
|
|
295
|
+
- [`Evidence Grades`](docs/evidence-grades.de.md)
|
|
296
|
+
- [`Rule Packs`](docs/rule-packs.de.md)
|
|
297
|
+
- [`Run Integrity`](docs/run-integrity.de.md)
|
|
298
|
+
- [`Security Analysis`](docs/security-analysis.de.md)
|
|
299
|
+
- [`Performance Benchmarks`](docs/benchmarks/README.md)
|
|
300
|
+
|
|
301
|
+
## Mitwirken
|
|
302
|
+
|
|
303
|
+
Beiträge sind willkommen, insbesondere zu native OS collectors, Agent/IDE adapters, inference gateways, model runtimes, evidence/correlation methods, privacy/redaction, graph UX, multi-agent conversation attribution und performance evaluation.
|
|
304
|
+
|
|
305
|
+
## License
|
|
306
|
+
|
|
307
|
+
Seit v0.6.8 steht ExecWeave unter der **PolyForm Noncommercial License 1.0.0**. Nichtkommerzielle Nutzung, Änderung und Weitergabe sind gemäß ihren Bedingungen zulässig. Kommerzielle Nutzung erfordert eine separate schriftliche commercial license vom Licensor. Siehe [`LICENSE`](LICENSE).
|