execweave 0.6.2__tar.gz → 0.6.4__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.6.4/.github/workflows/i18n.yml +35 -0
- execweave-0.6.4/.github/workflows/package-smoke.yml +42 -0
- {execweave-0.6.2 → execweave-0.6.4}/.github/workflows/publish.yml +3 -1
- execweave-0.6.4/.github/workflows/scalability.yml +54 -0
- execweave-0.6.4/.github/workflows/wheel-smoke.yml +34 -0
- {execweave-0.6.2 → execweave-0.6.4}/PKG-INFO +100 -14
- execweave-0.6.4/README.de.md +410 -0
- execweave-0.6.4/README.fr.md +410 -0
- {execweave-0.6.2 → execweave-0.6.4}/README.ja.md +94 -11
- {execweave-0.6.2 → execweave-0.6.4}/README.ko.md +94 -11
- {execweave-0.6.2 → execweave-0.6.4}/README.md +99 -13
- execweave-0.6.4/README.ru.md +410 -0
- {execweave-0.6.2 → execweave-0.6.4}/README.zh-CN.md +94 -11
- {execweave-0.6.2 → execweave-0.6.4}/README.zh-TW.md +95 -12
- execweave-0.6.4/docs/assets/execweave-launch-demo-v5-x.gif +0 -0
- execweave-0.6.4/docs/claude-code-hooks.de.md +275 -0
- execweave-0.6.4/docs/claude-code-hooks.fr.md +275 -0
- {execweave-0.6.2 → execweave-0.6.4}/docs/claude-code-hooks.ja.md +4 -1
- {execweave-0.6.2 → execweave-0.6.4}/docs/claude-code-hooks.ko.md +4 -1
- {execweave-0.6.2 → execweave-0.6.4}/docs/claude-code-hooks.md +4 -1
- execweave-0.6.4/docs/claude-code-hooks.ru.md +275 -0
- {execweave-0.6.2 → execweave-0.6.4}/docs/claude-code-hooks.zh-CN.md +4 -1
- execweave-0.6.4/docs/claude-code-hooks.zh-TW.md +273 -0
- execweave-0.6.4/docs/codex-hooks.de.md +182 -0
- execweave-0.6.4/docs/codex-hooks.fr.md +182 -0
- execweave-0.6.4/docs/codex-hooks.ja.md +182 -0
- execweave-0.6.4/docs/codex-hooks.ko.md +180 -0
- {execweave-0.6.2 → execweave-0.6.4}/docs/codex-hooks.md +4 -1
- execweave-0.6.4/docs/codex-hooks.ru.md +182 -0
- {execweave-0.6.2 → execweave-0.6.4}/docs/codex-hooks.zh-CN.md +4 -1
- {execweave-0.6.2 → execweave-0.6.4}/docs/codex-hooks.zh-TW.md +4 -1
- execweave-0.6.4/docs/cursor-hooks.de.md +85 -0
- execweave-0.6.4/docs/cursor-hooks.fr.md +85 -0
- {execweave-0.6.2 → execweave-0.6.4}/docs/cursor-hooks.ja.md +6 -1
- {execweave-0.6.2 → execweave-0.6.4}/docs/cursor-hooks.ko.md +6 -1
- {execweave-0.6.2 → execweave-0.6.4}/docs/cursor-hooks.md +6 -1
- execweave-0.6.4/docs/cursor-hooks.ru.md +85 -0
- {execweave-0.6.2 → execweave-0.6.4}/docs/cursor-hooks.zh-CN.md +6 -1
- {execweave-0.6.2 → execweave-0.6.4}/docs/cursor-hooks.zh-TW.md +6 -1
- execweave-0.6.4/docs/gemini-hooks.de.md +189 -0
- execweave-0.6.4/docs/gemini-hooks.fr.md +189 -0
- {execweave-0.6.2 → execweave-0.6.4}/docs/gemini-hooks.ja.md +36 -11
- {execweave-0.6.2 → execweave-0.6.4}/docs/gemini-hooks.ko.md +36 -11
- {execweave-0.6.2 → execweave-0.6.4}/docs/gemini-hooks.md +4 -1
- execweave-0.6.4/docs/gemini-hooks.ru.md +189 -0
- {execweave-0.6.2 → execweave-0.6.4}/docs/gemini-hooks.zh-CN.md +24 -3
- {execweave-0.6.2 → execweave-0.6.4}/docs/gemini-hooks.zh-TW.md +4 -1
- execweave-0.6.4/docs/inference-gateway.de.md +152 -0
- execweave-0.6.4/docs/inference-gateway.fr.md +152 -0
- {execweave-0.6.2 → execweave-0.6.4}/docs/inference-gateway.ja.md +28 -1
- {execweave-0.6.2 → execweave-0.6.4}/docs/inference-gateway.ko.md +28 -1
- {execweave-0.6.2 → execweave-0.6.4}/docs/inference-gateway.md +28 -1
- execweave-0.6.4/docs/inference-gateway.ru.md +152 -0
- {execweave-0.6.2 → execweave-0.6.4}/docs/inference-gateway.zh-CN.md +28 -1
- {execweave-0.6.2 → execweave-0.6.4}/docs/inference-gateway.zh-TW.md +28 -1
- execweave-0.6.4/docs/live-graph.de.md +223 -0
- execweave-0.6.4/docs/live-graph.fr.md +223 -0
- execweave-0.6.4/docs/live-graph.ja.md +223 -0
- execweave-0.6.4/docs/live-graph.ko.md +223 -0
- execweave-0.6.4/docs/live-graph.md +223 -0
- execweave-0.6.4/docs/live-graph.ru.md +223 -0
- execweave-0.6.4/docs/live-graph.zh-CN.md +223 -0
- execweave-0.6.4/docs/live-graph.zh-TW.md +223 -0
- execweave-0.6.4/docs/model-runtime.de.md +109 -0
- execweave-0.6.4/docs/model-runtime.fr.md +109 -0
- {execweave-0.6.2 → execweave-0.6.4}/docs/model-runtime.ja.md +9 -1
- {execweave-0.6.2 → execweave-0.6.4}/docs/model-runtime.ko.md +9 -1
- {execweave-0.6.2 → execweave-0.6.4}/docs/model-runtime.md +9 -1
- execweave-0.6.4/docs/model-runtime.ru.md +109 -0
- {execweave-0.6.2 → execweave-0.6.4}/docs/model-runtime.zh-CN.md +9 -1
- {execweave-0.6.2 → execweave-0.6.4}/docs/model-runtime.zh-TW.md +9 -1
- execweave-0.6.4/docs/opencode-plugin.de.md +81 -0
- execweave-0.6.4/docs/opencode-plugin.fr.md +81 -0
- {execweave-0.6.2 → execweave-0.6.4}/docs/opencode-plugin.ja.md +6 -1
- {execweave-0.6.2 → execweave-0.6.4}/docs/opencode-plugin.ko.md +6 -1
- {execweave-0.6.2 → execweave-0.6.4}/docs/opencode-plugin.md +6 -1
- execweave-0.6.4/docs/opencode-plugin.ru.md +81 -0
- {execweave-0.6.2 → execweave-0.6.4}/docs/opencode-plugin.zh-CN.md +6 -1
- {execweave-0.6.2 → execweave-0.6.4}/docs/opencode-plugin.zh-TW.md +6 -1
- execweave-0.6.4/docs/phase-1-runtime-collection.de.md +322 -0
- execweave-0.6.4/docs/phase-1-runtime-collection.fr.md +322 -0
- execweave-0.6.4/docs/phase-1-runtime-collection.ja.md +322 -0
- execweave-0.6.4/docs/phase-1-runtime-collection.ko.md +322 -0
- {execweave-0.6.2 → execweave-0.6.4}/docs/phase-1-runtime-collection.md +4 -1
- execweave-0.6.4/docs/phase-1-runtime-collection.ru.md +322 -0
- {execweave-0.6.2 → execweave-0.6.4}/docs/phase-1-runtime-collection.zh-CN.md +4 -1
- {execweave-0.6.2 → execweave-0.6.4}/docs/phase-1-runtime-collection.zh-TW.md +4 -1
- execweave-0.6.4/docs/phase-2-execution-graph.de.md +286 -0
- execweave-0.6.4/docs/phase-2-execution-graph.fr.md +286 -0
- execweave-0.6.4/docs/phase-2-execution-graph.ja.md +286 -0
- execweave-0.6.4/docs/phase-2-execution-graph.ko.md +286 -0
- {execweave-0.6.2 → execweave-0.6.4}/docs/phase-2-execution-graph.md +4 -1
- execweave-0.6.4/docs/phase-2-execution-graph.ru.md +286 -0
- {execweave-0.6.2 → execweave-0.6.4}/docs/phase-2-execution-graph.zh-CN.md +4 -1
- {execweave-0.6.2 → execweave-0.6.4}/docs/phase-2-execution-graph.zh-TW.md +4 -1
- execweave-0.6.4/docs/security-analysis.de.md +178 -0
- execweave-0.6.4/docs/security-analysis.fr.md +178 -0
- execweave-0.6.4/docs/security-analysis.ja.md +178 -0
- execweave-0.6.4/docs/security-analysis.ko.md +178 -0
- {execweave-0.6.2 → execweave-0.6.4}/docs/security-analysis.md +4 -1
- execweave-0.6.4/docs/security-analysis.ru.md +178 -0
- {execweave-0.6.2 → execweave-0.6.4}/docs/security-analysis.zh-CN.md +4 -1
- {execweave-0.6.2 → execweave-0.6.4}/docs/security-analysis.zh-TW.md +4 -1
- execweave-0.6.4/docs/semantic-telemetry.de.md +160 -0
- execweave-0.6.4/docs/semantic-telemetry.fr.md +160 -0
- execweave-0.6.4/docs/semantic-telemetry.ja.md +160 -0
- execweave-0.6.4/docs/semantic-telemetry.ko.md +160 -0
- {execweave-0.6.2 → execweave-0.6.4}/docs/semantic-telemetry.md +4 -1
- execweave-0.6.4/docs/semantic-telemetry.ru.md +160 -0
- {execweave-0.6.2 → execweave-0.6.4}/docs/semantic-telemetry.zh-CN.md +4 -1
- {execweave-0.6.2 → execweave-0.6.4}/docs/semantic-telemetry.zh-TW.md +4 -1
- {execweave-0.6.2 → execweave-0.6.4}/pyproject.toml +6 -3
- execweave-0.6.4/scripts/audit_i18n_parity.py +180 -0
- {execweave-0.6.2 → execweave-0.6.4}/scripts/check_inference_gateway_cli.py +24 -0
- execweave-0.6.4/scripts/check_wheel_install.py +77 -0
- {execweave-0.6.2 → execweave-0.6.4}/scripts/check_windows_launchers.py +25 -1
- execweave-0.6.4/scripts/sync_i18n_nav.py +143 -0
- {execweave-0.6.2 → execweave-0.6.4}/src/execweave/__init__.py +1 -1
- {execweave-0.6.2 → execweave-0.6.4}/src/execweave/__main__.py +1 -1
- execweave-0.6.4/src/execweave/auto_specialized.py +322 -0
- {execweave-0.6.2 → execweave-0.6.4}/src/execweave/collector.py +16 -5
- execweave-0.6.4/src/execweave/entry.py +18 -0
- execweave-0.6.4/src/execweave/filesystem.py +240 -0
- execweave-0.6.4/src/execweave/litellm_callback.py +182 -0
- execweave-0.6.4/src/execweave/litellm_callback_cli.py +42 -0
- execweave-0.6.4/src/execweave/live.py +690 -0
- execweave-0.6.4/src/execweave/live_view.py +79 -0
- execweave-0.6.4/src/execweave/scalability_benchmark.py +195 -0
- {execweave-0.6.2 → execweave-0.6.4}/src/execweave/semantic.py +80 -2
- execweave-0.6.4/src/execweave/theme.py +33 -0
- execweave-0.6.4/src/execweave/top.py +506 -0
- execweave-0.6.4/src/execweave/top_cli.py +139 -0
- execweave-0.6.4/src/execweave/view_cli.py +46 -0
- {execweave-0.6.2 → execweave-0.6.4}/src/execweave/workflow.py +7 -1
- execweave-0.6.4/tests/test_auto_specialized.py +380 -0
- execweave-0.6.4/tests/test_filesystem_resilience.py +235 -0
- execweave-0.6.4/tests/test_litellm_callback.py +189 -0
- execweave-0.6.4/tests/test_live_delta.py +193 -0
- execweave-0.6.4/tests/test_live_theme.py +11 -0
- execweave-0.6.4/tests/test_lmstudio_auto_specialized.py +149 -0
- execweave-0.6.4/tests/test_top_detached.py +104 -0
- execweave-0.6.4/tests/test_v063_features.py +132 -0
- execweave-0.6.4/tests/test_v064_live_auto_integrations.py +135 -0
- execweave-0.6.4/tests/test_v064_live_evidence.py +250 -0
- execweave-0.6.2/docs/claude-code-hooks.zh-TW.md +0 -218
- execweave-0.6.2/docs/codex-hooks.ja.md +0 -84
- execweave-0.6.2/docs/codex-hooks.ko.md +0 -77
- execweave-0.6.2/docs/live-graph.ja.md +0 -93
- execweave-0.6.2/docs/live-graph.ko.md +0 -93
- execweave-0.6.2/docs/live-graph.md +0 -135
- execweave-0.6.2/docs/live-graph.zh-CN.md +0 -131
- execweave-0.6.2/docs/live-graph.zh-TW.md +0 -131
- execweave-0.6.2/docs/phase-1-runtime-collection.ja.md +0 -153
- execweave-0.6.2/docs/phase-1-runtime-collection.ko.md +0 -151
- execweave-0.6.2/docs/phase-2-execution-graph.ja.md +0 -110
- execweave-0.6.2/docs/phase-2-execution-graph.ko.md +0 -110
- execweave-0.6.2/docs/security-analysis.ja.md +0 -95
- execweave-0.6.2/docs/security-analysis.ko.md +0 -93
- execweave-0.6.2/docs/semantic-telemetry.ja.md +0 -82
- execweave-0.6.2/docs/semantic-telemetry.ko.md +0 -77
- execweave-0.6.2/src/execweave/filesystem.py +0 -103
- execweave-0.6.2/src/execweave/live.py +0 -387
- {execweave-0.6.2 → execweave-0.6.4}/.github/workflows/ci.yml +0 -0
- {execweave-0.6.2 → execweave-0.6.4}/.github/workflows/package-benchmark.yml +0 -0
- {execweave-0.6.2 → execweave-0.6.4}/.github/workflows/windows-launcher.yml +0 -0
- {execweave-0.6.2 → execweave-0.6.4}/.gitignore +0 -0
- {execweave-0.6.2 → execweave-0.6.4}/LICENSE +0 -0
- {execweave-0.6.2 → execweave-0.6.4}/benchmarks/phase1_overhead.py +0 -0
- {execweave-0.6.2 → execweave-0.6.4}/docs/benchmarks/README.md +0 -0
- {execweave-0.6.2 → execweave-0.6.4}/docs/benchmarks/v0.6.0-github-actions.json +0 -0
- {execweave-0.6.2 → execweave-0.6.4}/docs/benchmarks/v0.6.0-github-actions.svg +0 -0
- {execweave-0.6.2 → execweave-0.6.4}/scripts/check_claude_hook.py +0 -0
- {execweave-0.6.2 → execweave-0.6.4}/scripts/check_claude_record_graph.py +0 -0
- {execweave-0.6.2 → execweave-0.6.4}/scripts/check_correlation_graph.py +0 -0
- {execweave-0.6.2 → execweave-0.6.4}/scripts/check_model_runtime_cli.py +0 -0
- {execweave-0.6.2 → execweave-0.6.4}/scripts/check_semantic_graph.py +0 -0
- {execweave-0.6.2 → execweave-0.6.4}/scripts/check_viewer_js.py +0 -0
- {execweave-0.6.2 → execweave-0.6.4}/scripts/emit_claude_hook_smoke.py +0 -0
- {execweave-0.6.2 → execweave-0.6.4}/scripts/emit_cursor_hook_smoke.py +0 -0
- {execweave-0.6.2 → execweave-0.6.4}/scripts/emit_gemini_hook_smoke.py +0 -0
- {execweave-0.6.2 → execweave-0.6.4}/scripts/emit_opencode_plugin_smoke.py +0 -0
- {execweave-0.6.2 → execweave-0.6.4}/scripts/make_semantic_smoke.py +0 -0
- {execweave-0.6.2 → execweave-0.6.4}/src/execweave/analysis.py +0 -0
- {execweave-0.6.2 → execweave-0.6.4}/src/execweave/backends.py +0 -0
- {execweave-0.6.2 → execweave-0.6.4}/src/execweave/benchmark.py +0 -0
- {execweave-0.6.2 → execweave-0.6.4}/src/execweave/claude_adapter.py +0 -0
- {execweave-0.6.2 → execweave-0.6.4}/src/execweave/claude_hook_cli.py +0 -0
- {execweave-0.6.2 → execweave-0.6.4}/src/execweave/claude_record.py +0 -0
- {execweave-0.6.2 → execweave-0.6.4}/src/execweave/cli.py +0 -0
- {execweave-0.6.2 → execweave-0.6.4}/src/execweave/codex_adapter.py +0 -0
- {execweave-0.6.2 → execweave-0.6.4}/src/execweave/codex_hook_cli.py +0 -0
- {execweave-0.6.2 → execweave-0.6.4}/src/execweave/codex_record.py +0 -0
- {execweave-0.6.2 → execweave-0.6.4}/src/execweave/command.py +0 -0
- {execweave-0.6.2 → execweave-0.6.4}/src/execweave/correlation.py +0 -0
- {execweave-0.6.2 → execweave-0.6.4}/src/execweave/cursor_adapter.py +0 -0
- {execweave-0.6.2 → execweave-0.6.4}/src/execweave/cursor_hook_cli.py +0 -0
- {execweave-0.6.2 → execweave-0.6.4}/src/execweave/cursor_record.py +0 -0
- {execweave-0.6.2 → execweave-0.6.4}/src/execweave/focus.py +0 -0
- {execweave-0.6.2 → execweave-0.6.4}/src/execweave/gemini_adapter.py +0 -0
- {execweave-0.6.2 → execweave-0.6.4}/src/execweave/gemini_hook_cli.py +0 -0
- {execweave-0.6.2 → execweave-0.6.4}/src/execweave/gemini_record.py +0 -0
- {execweave-0.6.2 → execweave-0.6.4}/src/execweave/graph.py +0 -0
- {execweave-0.6.2 → execweave-0.6.4}/src/execweave/graph_ops.py +0 -0
- {execweave-0.6.2 → execweave-0.6.4}/src/execweave/inference_gateway.py +0 -0
- {execweave-0.6.2 → execweave-0.6.4}/src/execweave/inference_gateway_cli.py +0 -0
- {execweave-0.6.2 → execweave-0.6.4}/src/execweave/inference_identity.py +0 -0
- {execweave-0.6.2 → execweave-0.6.4}/src/execweave/inference_identity_cli.py +0 -0
- {execweave-0.6.2 → execweave-0.6.4}/src/execweave/model_runtime.py +0 -0
- {execweave-0.6.2 → execweave-0.6.4}/src/execweave/model_runtime_cli.py +0 -0
- {execweave-0.6.2 → execweave-0.6.4}/src/execweave/opencode_adapter.py +0 -0
- {execweave-0.6.2 → execweave-0.6.4}/src/execweave/opencode_hook_cli.py +0 -0
- {execweave-0.6.2 → execweave-0.6.4}/src/execweave/opencode_plugin_cli.py +0 -0
- {execweave-0.6.2 → execweave-0.6.4}/src/execweave/opencode_record.py +0 -0
- {execweave-0.6.2 → execweave-0.6.4}/src/execweave/overhead_benchmark.py +0 -0
- {execweave-0.6.2 → execweave-0.6.4}/src/execweave/provider_record.py +0 -0
- {execweave-0.6.2 → execweave-0.6.4}/src/execweave/schema.py +0 -0
- {execweave-0.6.2 → execweave-0.6.4}/src/execweave/scope.py +0 -0
- {execweave-0.6.2 → execweave-0.6.4}/src/execweave/sink.py +0 -0
- {execweave-0.6.2 → execweave-0.6.4}/src/execweave/strace_backend.py +0 -0
- {execweave-0.6.2 → execweave-0.6.4}/src/execweave/validate.py +0 -0
- {execweave-0.6.2 → execweave-0.6.4}/src/execweave/viewer.py +0 -0
- {execweave-0.6.2 → execweave-0.6.4}/tests/test_analysis.py +0 -0
- {execweave-0.6.2 → execweave-0.6.4}/tests/test_backends.py +0 -0
- {execweave-0.6.2 → execweave-0.6.4}/tests/test_claude_adapter.py +0 -0
- {execweave-0.6.2 → execweave-0.6.4}/tests/test_claude_record.py +0 -0
- {execweave-0.6.2 → execweave-0.6.4}/tests/test_codex_adapter.py +0 -0
- {execweave-0.6.2 → execweave-0.6.4}/tests/test_codex_record.py +0 -0
- {execweave-0.6.2 → execweave-0.6.4}/tests/test_collector.py +0 -0
- {execweave-0.6.2 → execweave-0.6.4}/tests/test_command.py +0 -0
- {execweave-0.6.2 → execweave-0.6.4}/tests/test_condense.py +0 -0
- {execweave-0.6.2 → execweave-0.6.4}/tests/test_correlation.py +0 -0
- {execweave-0.6.2 → execweave-0.6.4}/tests/test_correlation_canonical_path.py +0 -0
- {execweave-0.6.2 → execweave-0.6.4}/tests/test_correlation_process_exe.py +0 -0
- {execweave-0.6.2 → execweave-0.6.4}/tests/test_cursor_adapter.py +0 -0
- {execweave-0.6.2 → execweave-0.6.4}/tests/test_cursor_record.py +0 -0
- {execweave-0.6.2 → execweave-0.6.4}/tests/test_focus.py +0 -0
- {execweave-0.6.2 → execweave-0.6.4}/tests/test_gemini_adapter.py +0 -0
- {execweave-0.6.2 → execweave-0.6.4}/tests/test_gemini_record.py +0 -0
- {execweave-0.6.2 → execweave-0.6.4}/tests/test_graph.py +0 -0
- {execweave-0.6.2 → execweave-0.6.4}/tests/test_graph_ops.py +0 -0
- {execweave-0.6.2 → execweave-0.6.4}/tests/test_inference_gateway.py +0 -0
- {execweave-0.6.2 → execweave-0.6.4}/tests/test_inference_identity.py +0 -0
- {execweave-0.6.2 → execweave-0.6.4}/tests/test_live.py +0 -0
- {execweave-0.6.2 → execweave-0.6.4}/tests/test_model_runtime.py +0 -0
- {execweave-0.6.2 → execweave-0.6.4}/tests/test_opencode_adapter.py +0 -0
- {execweave-0.6.2 → execweave-0.6.4}/tests/test_opencode_plugin.py +0 -0
- {execweave-0.6.2 → execweave-0.6.4}/tests/test_opencode_record.py +0 -0
- {execweave-0.6.2 → execweave-0.6.4}/tests/test_overhead_benchmark.py +0 -0
- {execweave-0.6.2 → execweave-0.6.4}/tests/test_schema.py +0 -0
- {execweave-0.6.2 → execweave-0.6.4}/tests/test_scope.py +0 -0
- {execweave-0.6.2 → execweave-0.6.4}/tests/test_semantic.py +0 -0
- {execweave-0.6.2 → execweave-0.6.4}/tests/test_strace_backend.py +0 -0
- {execweave-0.6.2 → execweave-0.6.4}/tests/test_validate.py +0 -0
- {execweave-0.6.2 → execweave-0.6.4}/tests/test_version.py +0 -0
- {execweave-0.6.2 → execweave-0.6.4}/tests/test_viewer.py +0 -0
- {execweave-0.6.2 → execweave-0.6.4}/tests/test_workflow.py +0 -0
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
name: Documentation i18n
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
workflow_dispatch:
|
|
5
|
+
push:
|
|
6
|
+
branches: [main]
|
|
7
|
+
paths:
|
|
8
|
+
- "README*.md"
|
|
9
|
+
- "docs/*.md"
|
|
10
|
+
- "scripts/audit_i18n_parity.py"
|
|
11
|
+
- "scripts/sync_i18n_nav.py"
|
|
12
|
+
- ".github/workflows/i18n.yml"
|
|
13
|
+
pull_request:
|
|
14
|
+
paths:
|
|
15
|
+
- "README*.md"
|
|
16
|
+
- "docs/*.md"
|
|
17
|
+
- "scripts/audit_i18n_parity.py"
|
|
18
|
+
- "scripts/sync_i18n_nav.py"
|
|
19
|
+
- ".github/workflows/i18n.yml"
|
|
20
|
+
|
|
21
|
+
permissions:
|
|
22
|
+
contents: read
|
|
23
|
+
|
|
24
|
+
jobs:
|
|
25
|
+
audit:
|
|
26
|
+
runs-on: ubuntu-latest
|
|
27
|
+
steps:
|
|
28
|
+
- uses: actions/checkout@v4
|
|
29
|
+
- uses: actions/setup-python@v5
|
|
30
|
+
with:
|
|
31
|
+
python-version: "3.12"
|
|
32
|
+
- name: Check eight-language navigation and coverage
|
|
33
|
+
run: python scripts/sync_i18n_nav.py --check
|
|
34
|
+
- name: Check translation structural parity
|
|
35
|
+
run: python scripts/audit_i18n_parity.py --languages fr de ru
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
name: Package Smoke
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main]
|
|
6
|
+
paths:
|
|
7
|
+
- "pyproject.toml"
|
|
8
|
+
- "src/**"
|
|
9
|
+
- ".github/workflows/package-smoke.yml"
|
|
10
|
+
workflow_dispatch:
|
|
11
|
+
|
|
12
|
+
permissions:
|
|
13
|
+
contents: read
|
|
14
|
+
|
|
15
|
+
jobs:
|
|
16
|
+
wheel:
|
|
17
|
+
runs-on: ubuntu-latest
|
|
18
|
+
steps:
|
|
19
|
+
- uses: actions/checkout@v4
|
|
20
|
+
- uses: actions/setup-python@v5
|
|
21
|
+
with:
|
|
22
|
+
python-version: "3.12"
|
|
23
|
+
- name: Build wheel and sdist
|
|
24
|
+
run: |
|
|
25
|
+
python -m pip install --upgrade pip
|
|
26
|
+
python -m pip install build twine
|
|
27
|
+
python -m build
|
|
28
|
+
python -m twine check dist/*
|
|
29
|
+
- name: Install clean wheel
|
|
30
|
+
shell: bash
|
|
31
|
+
run: |
|
|
32
|
+
wheel="$(ls dist/*.whl)"
|
|
33
|
+
python -m venv .wheel-smoke
|
|
34
|
+
.wheel-smoke/bin/python -m pip install --upgrade pip
|
|
35
|
+
.wheel-smoke/bin/python -m pip install "$wheel"
|
|
36
|
+
- name: Smoke installed entry points
|
|
37
|
+
shell: bash
|
|
38
|
+
run: |
|
|
39
|
+
.wheel-smoke/bin/execweave --help
|
|
40
|
+
.wheel-smoke/bin/execweave top --help
|
|
41
|
+
.wheel-smoke/bin/execweave-top --help
|
|
42
|
+
.wheel-smoke/bin/execweave-scalability --help
|
|
@@ -38,6 +38,8 @@ jobs:
|
|
|
38
38
|
python -m pip install build twine
|
|
39
39
|
python -m build
|
|
40
40
|
python -m twine check dist/*
|
|
41
|
+
- name: Clean wheel install smoke
|
|
42
|
+
run: python scripts/check_wheel_install.py
|
|
41
43
|
- uses: actions/upload-artifact@v4
|
|
42
44
|
with:
|
|
43
45
|
name: python-package-distributions
|
|
@@ -74,4 +76,4 @@ jobs:
|
|
|
74
76
|
env:
|
|
75
77
|
GH_TOKEN: ${{ github.token }}
|
|
76
78
|
RELEASE_TAG: ${{ github.event.release.tag_name }}
|
|
77
|
-
run: gh release upload "$RELEASE_TAG" dist/* --clobber
|
|
79
|
+
run: gh release upload "$RELEASE_TAG" dist/* --clobber --repo "$GITHUB_REPOSITORY"
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
name: Scalability Benchmark
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main]
|
|
6
|
+
paths:
|
|
7
|
+
- "src/execweave/graph.py"
|
|
8
|
+
- "src/execweave/live.py"
|
|
9
|
+
- "src/execweave/scalability_benchmark.py"
|
|
10
|
+
- "pyproject.toml"
|
|
11
|
+
- ".github/workflows/scalability.yml"
|
|
12
|
+
workflow_dispatch:
|
|
13
|
+
|
|
14
|
+
permissions:
|
|
15
|
+
contents: read
|
|
16
|
+
|
|
17
|
+
jobs:
|
|
18
|
+
benchmark:
|
|
19
|
+
runs-on: ubuntu-latest
|
|
20
|
+
timeout-minutes: 15
|
|
21
|
+
steps:
|
|
22
|
+
- uses: actions/checkout@v4
|
|
23
|
+
- uses: actions/setup-python@v5
|
|
24
|
+
with:
|
|
25
|
+
python-version: "3.12"
|
|
26
|
+
- name: Install package
|
|
27
|
+
run: python -m pip install -e .
|
|
28
|
+
- name: Run 10k / 100k / 1M benchmark
|
|
29
|
+
run: |
|
|
30
|
+
execweave-scalability \
|
|
31
|
+
--sizes 10000,100000,1000000 \
|
|
32
|
+
--resources 10000 \
|
|
33
|
+
--output-json scalability-results.json
|
|
34
|
+
- name: Validate benchmark invariants
|
|
35
|
+
run: |
|
|
36
|
+
python - <<'PY'
|
|
37
|
+
import json
|
|
38
|
+
from pathlib import Path
|
|
39
|
+
|
|
40
|
+
payload = json.loads(Path("scalability-results.json").read_text(encoding="utf-8"))
|
|
41
|
+
points = payload["points"]
|
|
42
|
+
assert [p["event_count"] for p in points] == [10_000, 100_000, 1_000_000]
|
|
43
|
+
assert all(p["retained_event_ids"] == 0 for p in points)
|
|
44
|
+
assert all(p["events_per_second"] > 0 for p in points)
|
|
45
|
+
assert all(p["snapshot_bytes"] > 0 for p in points)
|
|
46
|
+
assert points[-1]["node_count"] == 10_001
|
|
47
|
+
assert points[-1]["edge_count"] == 10_000
|
|
48
|
+
print(json.dumps(points, indent=2))
|
|
49
|
+
PY
|
|
50
|
+
- uses: actions/upload-artifact@v4
|
|
51
|
+
with:
|
|
52
|
+
name: execweave-scalability
|
|
53
|
+
path: scalability-results.json
|
|
54
|
+
if-no-files-found: error
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
name: Wheel Install Smoke
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main]
|
|
6
|
+
paths:
|
|
7
|
+
- "pyproject.toml"
|
|
8
|
+
- "src/execweave/**"
|
|
9
|
+
- "scripts/check_wheel_install.py"
|
|
10
|
+
- ".github/workflows/wheel-smoke.yml"
|
|
11
|
+
workflow_dispatch:
|
|
12
|
+
|
|
13
|
+
permissions:
|
|
14
|
+
contents: read
|
|
15
|
+
|
|
16
|
+
jobs:
|
|
17
|
+
wheel-smoke:
|
|
18
|
+
strategy:
|
|
19
|
+
fail-fast: false
|
|
20
|
+
matrix:
|
|
21
|
+
os: [ubuntu-latest, windows-latest, macos-latest]
|
|
22
|
+
runs-on: ${{ matrix.os }}
|
|
23
|
+
timeout-minutes: 15
|
|
24
|
+
steps:
|
|
25
|
+
- uses: actions/checkout@v4
|
|
26
|
+
- uses: actions/setup-python@v5
|
|
27
|
+
with:
|
|
28
|
+
python-version: "3.12"
|
|
29
|
+
- name: Build wheel
|
|
30
|
+
run: |
|
|
31
|
+
python -m pip install --upgrade build
|
|
32
|
+
python -m build --wheel
|
|
33
|
+
- name: Clean wheel install smoke
|
|
34
|
+
run: python scripts/check_wheel_install.py
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: execweave
|
|
3
|
-
Version: 0.6.
|
|
3
|
+
Version: 0.6.4
|
|
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
|
|
@@ -56,13 +56,18 @@ Description-Content-Type: text/markdown
|
|
|
56
56
|
|
|
57
57
|
# ExecWeave
|
|
58
58
|
|
|
59
|
+
<!-- i18n-nav:start -->
|
|
59
60
|
<p align="center">
|
|
60
61
|
<strong>English</strong> |
|
|
61
62
|
<a href="README.zh-TW.md">繁體中文</a> |
|
|
62
63
|
<a href="README.zh-CN.md">简体中文</a> |
|
|
63
64
|
<a href="README.ja.md">日本語</a> |
|
|
64
|
-
<a href="README.ko.md">한국어</a>
|
|
65
|
+
<a href="README.ko.md">한국어</a> |
|
|
66
|
+
<a href="README.fr.md">Français</a> |
|
|
67
|
+
<a href="README.de.md">Deutsch</a> |
|
|
68
|
+
<a href="README.ru.md">Русский</a>
|
|
65
69
|
</p>
|
|
70
|
+
<!-- i18n-nav:end -->
|
|
66
71
|
|
|
67
72
|
**See what AI agents actually do on your machine.**
|
|
68
73
|
|
|
@@ -70,6 +75,31 @@ ExecWeave is an open-source, local-first observability project that turns AI-age
|
|
|
70
75
|
|
|
71
76
|
> **Event is ground truth. The graph is a materialized view.**
|
|
72
77
|
|
|
78
|
+
<p align="center">
|
|
79
|
+
<img src="docs/assets/execweave-launch-demo-v5-x.gif" alt="ExecWeave animated live demo" width="100%">
|
|
80
|
+
</p>
|
|
81
|
+
|
|
82
|
+
<!-- execweave-demo:start -->
|
|
83
|
+
## Reproduce this demo
|
|
84
|
+
|
|
85
|
+
The animation above is a real ExecWeave v0.6.3 live session. This workload deliberately creates enough activity to make the execution graph useful: multiple Python modules, JSON/CSV files, tests, file inspection, and outbound HTTP requests.
|
|
86
|
+
|
|
87
|
+
Run a local Agent CLI under ExecWeave. For example:
|
|
88
|
+
|
|
89
|
+
```bash
|
|
90
|
+
execweave live --open -- claude
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
Then paste this workload prompt into the Agent:
|
|
94
|
+
|
|
95
|
+
```text
|
|
96
|
+
Create a small Python project in ./execweave-demo with 8 modules,
|
|
97
|
+
generate sample JSON and CSV data, run the program and tests,
|
|
98
|
+
inspect the generated files, and fetch example.com plus the GitHub API.
|
|
99
|
+
```
|
|
100
|
+
The same workload works with `codex`, `gemini`, `cursor`, or `opencode`. Exact node, edge, event, process, and endpoint counts vary by OS, Agent version, and environment. ExecWeave records observed runtime evidence; the animation is one concrete run, not a fixed expected graph.
|
|
101
|
+
<!-- execweave-demo:end -->
|
|
102
|
+
|
|
73
103
|
## Install
|
|
74
104
|
|
|
75
105
|
ExecWeave is published on PyPI as a standard Python wheel/sdist. Install the latest published release with:
|
|
@@ -92,19 +122,75 @@ cd ExecWeave
|
|
|
92
122
|
python -m pip install -e ".[dev]"
|
|
93
123
|
```
|
|
94
124
|
|
|
95
|
-
|
|
125
|
+
Live OS-runtime telemetry works with **any local command**. The names below are examples, not a whitelist:
|
|
96
126
|
|
|
97
127
|
```bash
|
|
98
|
-
#
|
|
128
|
+
# Agent / IDE CLIs
|
|
99
129
|
execweave live --open -- claude
|
|
100
|
-
|
|
101
|
-
# OpenAI Codex
|
|
102
130
|
execweave live --open -- codex
|
|
103
|
-
|
|
104
|
-
# Gemini CLI
|
|
105
131
|
execweave live --open -- gemini
|
|
132
|
+
execweave live --open -- cursor
|
|
133
|
+
execweave live --open -- opencode
|
|
134
|
+
|
|
135
|
+
# Any local program
|
|
136
|
+
execweave live --open -- python my_agent.py
|
|
137
|
+
|
|
138
|
+
# A local model runtime launched under ExecWeave
|
|
139
|
+
execweave live --open -- ollama serve
|
|
106
140
|
```
|
|
107
141
|
|
|
142
|
+
`execweave live` streams process, file, and network evidence for the command tree it launches. In v0.6.4, configured Claude/Codex/Gemini/Cursor hooks and the OpenCode plugin automatically feed the per-run live sidecar. Ollama, llama.cpp, and vLLM server launches also receive automatic local model-catalog probes.
|
|
143
|
+
|
|
144
|
+
#### Live capability matrix
|
|
145
|
+
|
|
146
|
+
| Integration | Direct OS-runtime live | Specialized metadata | Automatically in Live Viewer |
|
|
147
|
+
| --- | --- | --- | --- |
|
|
148
|
+
| Claude Code | Yes | `execweave-claude-record` / hooks | Yes (configured hook/plugin) |
|
|
149
|
+
| OpenAI Codex | Yes | `execweave-codex-record` / hooks | Yes (configured hook/plugin) |
|
|
150
|
+
| Gemini CLI | Yes | `execweave-gemini-record` / hooks | Yes (configured hook/plugin) |
|
|
151
|
+
| Cursor | Yes | `execweave-cursor-record` / hooks | Yes (configured hook/plugin) |
|
|
152
|
+
| OpenCode | Yes | `execweave-opencode-record` / plugin | Yes (configured hook/plugin) |
|
|
153
|
+
| Ollama | Yes, when launched under ExecWeave (for example `ollama serve`) | `execweave-model-runtime event/probe --runtime ollama` | Yes (automatic local probe) |
|
|
154
|
+
| llama.cpp | Yes, when its local server is launched under ExecWeave | `execweave-model-runtime event/probe --runtime llamacpp` | Yes (automatic local probe) |
|
|
155
|
+
| vLLM | Yes, when its local server is launched under ExecWeave | `execweave-model-runtime event/probe --runtime vllm` | Yes (automatic local probe) |
|
|
156
|
+
| LM Studio | Yes only for a local process launched under ExecWeave; an already-running server is not attached | `execweave-model-runtime event/probe --runtime lmstudio` | Yes (automatic after successful `lms server start --port <port>`) |
|
|
157
|
+
| LiteLLM Proxy | Yes, when the local proxy is launched under ExecWeave | `execweave-inference-gateway event --gateway litellm` / configured callback | Yes (configured callback) |
|
|
158
|
+
| OpenRouter | No direct remote-service process; run the local client/Agent under `live` instead | `execweave-inference-gateway event/generation --gateway openrouter` | No |
|
|
159
|
+
|
|
160
|
+
Agent rows marked **Yes** require the provider hook/plugin to be configured once; `execweave live` then supplies the per-run `EXECWEAVE_SEMANTIC_SIDECAR` automatically. Ollama, llama.cpp, and vLLM rows marked **Yes** use automatic loopback model-catalog probes only when ExecWeave launches the corresponding local server. LM Studio is also automatic for `lms server start` when an explicit `--port` is supplied, the compatible endpoint was absent before launch, and the launcher exits successfully. LiteLLM Proxy is **Yes** after its ExecWeave callback has been configured once and the proxy is launched inside the current `execweave live` environment. OpenRouter remains **No** because remote routing metadata is not available from OS/network observation alone.
|
|
161
|
+
|
|
162
|
+
For an already-running Ollama server, use `execweave-model-runtime probe --runtime ollama` to snapshot loaded-model state. For OpenRouter, `live` can observe the local client and its network activity, while gateway routing/usage metadata remains a separate evidence layer.
|
|
163
|
+
|
|
164
|
+
<!-- v0.6.4-live -->
|
|
165
|
+
### v0.6.4 live observability
|
|
166
|
+
|
|
167
|
+
`top` keeps the Agent fully interactive in the terminal where you launched it and opens the dashboard in a **separate terminal window**:
|
|
168
|
+
|
|
169
|
+
```bash
|
|
170
|
+
execweave top -- codex # Agent here + detached Top dashboard
|
|
171
|
+
execweave top --open -- codex # Agent here + detached Top dashboard + Web Viewer
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
The detached dashboard is an attach-only client for the same localhost live session; it never launches a second Agent process. On Windows it uses a new console, on macOS it opens Terminal, and on desktop Linux it uses an available terminal emulator. In a headless environment, ExecWeave prints an attach command instead of taking over the Agent terminal.
|
|
175
|
+
|
|
176
|
+
Live updates use incremental snapshots/deltas with bounded history instead of repeatedly rebuilding and transferring the full graph. Live and standalone viewers support a persistent Dark/Light theme switch. On Linux, very large recursive filesystem scopes are preflighted and automatically fall back from inotify to polling when needed, so an exhausted inotify watch pool does not abort the session.
|
|
177
|
+
|
|
178
|
+
v0.6.4 gives each live run a shared specialized-evidence sidecar. Configured Claude Code, Codex, Gemini CLI, Cursor, and OpenCode integrations inherit that sidecar automatically, so their provider semantic evidence can appear incrementally beside OS-runtime evidence in the same live graph. This live normalization is provisional; after the command exits, the final graph is rebuilt from the canonical runtime + semantic merge. Missing specialized evidence is never invented.
|
|
179
|
+
|
|
180
|
+
Run the reproducible graph scalability benchmark with `execweave-scalability`; CI covers 10k, 100k, and 1M synthetic events.
|
|
181
|
+
|
|
182
|
+
#### Scalability benchmark
|
|
183
|
+
|
|
184
|
+
Reference GitHub Actions result for the incremental `GraphAccumulator` synthetic workload (`retain_event_ids=False`):
|
|
185
|
+
|
|
186
|
+
| Events | Apply time | Throughput | Nodes | Edges | Apply RSS Δ | Snapshot |
|
|
187
|
+
| ---: | ---: | ---: | ---: | ---: | ---: | ---: |
|
|
188
|
+
| 10k | 0.114 s | 87,681 ev/s | 10,001 | 10,000 | 35.9 MiB | 8.5 MiB |
|
|
189
|
+
| 100k | 0.654 s | 152,816 ev/s | 10,001 | 10,000 | 25.8 MiB | 8.6 MiB |
|
|
190
|
+
| **1M** | **6.087 s** | **164,273 ev/s** | **10,001** | **10,000** | **23.5 MiB** | **8.6 MiB** |
|
|
191
|
+
|
|
192
|
+
At **1,000,000 events**, the incremental in-memory graph did not duplicate raw event IDs; raw evidence remains separate from the materialized graph. This benchmark measures graph accumulation and snapshot materialization, not end-to-end collector or browser throughput.
|
|
193
|
+
|
|
108
194
|
Or build the full artifact pipeline:
|
|
109
195
|
|
|
110
196
|
```bash
|
|
@@ -279,9 +365,9 @@ Portable filesystem watching is session-correlated rather than process-causal, a
|
|
|
279
365
|
|
|
280
366
|
Future native collectors remain planned for Linux eBPF, Windows ETW, and macOS Endpoint Security.
|
|
281
367
|
|
|
282
|
-
## v0.6.
|
|
368
|
+
## v0.6.3 safety patch
|
|
283
369
|
|
|
284
|
-
v0.6.
|
|
370
|
+
v0.6.3 hardens long-running and high-cardinality sessions without changing evidence semantics or graph schema 0.1:
|
|
285
371
|
|
|
286
372
|
- Broad recursive filesystem scopes such as a filesystem root, user home, or users-home parent are no longer recursively observed as-is; process, network, and semantic collection can continue.
|
|
287
373
|
- Standalone and Live Viewers stop SVG materialization above the safety budget (1,500 nodes, 4,000 edges, or an estimated 5,000 SVG elements) instead of exhausting browser memory. The canonical `graph.json` evidence artifact remains complete.
|
|
@@ -342,9 +428,9 @@ Security findings remain explicit about evidence limits. A possible sensitive-fi
|
|
|
342
428
|
|
|
343
429
|
## Current status
|
|
344
430
|
|
|
345
|
-
ExecWeave `main` is currently **v0.6.
|
|
431
|
+
ExecWeave `main` is currently **v0.6.4** and under active development.
|
|
346
432
|
|
|
347
|
-
The baseline includes runtime collection, graph materialization/querying, standalone/live Viewer, Claude/Codex/Gemini/Cursor/OpenCode semantic integrations, conservative Tool → Process correlation, OpenRouter/LiteLLM gateway metadata, Ollama/llama.cpp/vLLM/LM Studio runtime metadata, exact Gateway ↔ Model Runtime request identity, published PyPI wheel/sdist packaging, reproducible overhead benchmarking, cross-platform command-launcher compatibility, large-graph browser safety guards, incremental Live JSONL tail/cache, and cross-platform CI on Python 3.10/3.12.
|
|
433
|
+
The baseline includes runtime collection, graph materialization/querying, standalone/live Viewer, detached terminal Top dashboard, provisional multi-layer live evidence with canonical final semantic merge, Claude/Codex/Gemini/Cursor/OpenCode semantic integrations, conservative Tool → Process correlation, OpenRouter/LiteLLM gateway metadata, Ollama/llama.cpp/vLLM/LM Studio runtime metadata, exact Gateway ↔ Model Runtime request identity, published PyPI wheel/sdist packaging, reproducible overhead benchmarking, cross-platform command-launcher compatibility, large-graph browser safety guards, incremental Live JSONL tail/cache, and cross-platform CI on Python 3.10/3.12.
|
|
348
434
|
|
|
349
435
|
## Privacy
|
|
350
436
|
|
|
@@ -358,7 +444,7 @@ Review artifacts before sharing them.
|
|
|
358
444
|
- [`Phase 2 — Execution Graph`](docs/phase-2-execution-graph.md)
|
|
359
445
|
- [`Live Graph`](docs/live-graph.md)
|
|
360
446
|
- [`Semantic Telemetry`](docs/semantic-telemetry.md)
|
|
361
|
-
- [`Claude Code Hooks`](docs/claude-
|
|
447
|
+
- [`Claude Code Hooks`](docs/claude-hooks.md)
|
|
362
448
|
- [`OpenAI Codex Hooks`](docs/codex-hooks.md)
|
|
363
449
|
- [`Gemini CLI Hooks`](docs/gemini-hooks.md)
|
|
364
450
|
- [`Cursor Hooks`](docs/cursor-hooks.md)
|
|
@@ -374,4 +460,4 @@ Contributions are welcome, especially around native OS collectors, additional Ag
|
|
|
374
460
|
|
|
375
461
|
## License
|
|
376
462
|
|
|
377
|
-
See [`LICENSE`](LICENSE).
|
|
463
|
+
See [`LICENSE`](LICENSE).
|