execweave 0.6.2__tar.gz → 0.6.3__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.3/.github/workflows/i18n.yml +34 -0
- execweave-0.6.3/.github/workflows/package-smoke.yml +42 -0
- {execweave-0.6.2 → execweave-0.6.3}/.github/workflows/publish.yml +1 -1
- execweave-0.6.3/.github/workflows/scalability.yml +54 -0
- execweave-0.6.3/.github/workflows/wheel-smoke.yml +34 -0
- {execweave-0.6.2 → execweave-0.6.3}/PKG-INFO +73 -12
- execweave-0.6.3/README.de.md +388 -0
- execweave-0.6.3/README.fr.md +388 -0
- {execweave-0.6.2 → execweave-0.6.3}/README.ja.md +71 -10
- {execweave-0.6.2 → execweave-0.6.3}/README.ko.md +71 -10
- {execweave-0.6.2 → execweave-0.6.3}/README.md +72 -11
- execweave-0.6.3/README.ru.md +388 -0
- {execweave-0.6.2 → execweave-0.6.3}/README.zh-CN.md +71 -10
- {execweave-0.6.2 → execweave-0.6.3}/README.zh-TW.md +72 -11
- execweave-0.6.3/docs/assets/execweave-viewer.png +0 -0
- execweave-0.6.3/docs/claude-code-hooks.de.md +275 -0
- execweave-0.6.3/docs/claude-code-hooks.fr.md +275 -0
- {execweave-0.6.2 → execweave-0.6.3}/docs/claude-code-hooks.ja.md +4 -1
- {execweave-0.6.2 → execweave-0.6.3}/docs/claude-code-hooks.ko.md +4 -1
- {execweave-0.6.2 → execweave-0.6.3}/docs/claude-code-hooks.md +4 -1
- execweave-0.6.3/docs/claude-code-hooks.ru.md +275 -0
- {execweave-0.6.2 → execweave-0.6.3}/docs/claude-code-hooks.zh-CN.md +4 -1
- execweave-0.6.3/docs/claude-code-hooks.zh-TW.md +273 -0
- execweave-0.6.3/docs/codex-hooks.de.md +182 -0
- execweave-0.6.3/docs/codex-hooks.fr.md +182 -0
- execweave-0.6.3/docs/codex-hooks.ja.md +182 -0
- execweave-0.6.3/docs/codex-hooks.ko.md +180 -0
- {execweave-0.6.2 → execweave-0.6.3}/docs/codex-hooks.md +4 -1
- execweave-0.6.3/docs/codex-hooks.ru.md +182 -0
- {execweave-0.6.2 → execweave-0.6.3}/docs/codex-hooks.zh-CN.md +4 -1
- {execweave-0.6.2 → execweave-0.6.3}/docs/codex-hooks.zh-TW.md +4 -1
- execweave-0.6.3/docs/cursor-hooks.de.md +85 -0
- execweave-0.6.3/docs/cursor-hooks.fr.md +85 -0
- {execweave-0.6.2 → execweave-0.6.3}/docs/cursor-hooks.ja.md +6 -1
- {execweave-0.6.2 → execweave-0.6.3}/docs/cursor-hooks.ko.md +6 -1
- {execweave-0.6.2 → execweave-0.6.3}/docs/cursor-hooks.md +6 -1
- execweave-0.6.3/docs/cursor-hooks.ru.md +85 -0
- {execweave-0.6.2 → execweave-0.6.3}/docs/cursor-hooks.zh-CN.md +6 -1
- {execweave-0.6.2 → execweave-0.6.3}/docs/cursor-hooks.zh-TW.md +6 -1
- execweave-0.6.3/docs/gemini-hooks.de.md +189 -0
- execweave-0.6.3/docs/gemini-hooks.fr.md +189 -0
- {execweave-0.6.2 → execweave-0.6.3}/docs/gemini-hooks.ja.md +36 -11
- {execweave-0.6.2 → execweave-0.6.3}/docs/gemini-hooks.ko.md +36 -11
- {execweave-0.6.2 → execweave-0.6.3}/docs/gemini-hooks.md +4 -1
- execweave-0.6.3/docs/gemini-hooks.ru.md +189 -0
- {execweave-0.6.2 → execweave-0.6.3}/docs/gemini-hooks.zh-CN.md +24 -3
- {execweave-0.6.2 → execweave-0.6.3}/docs/gemini-hooks.zh-TW.md +4 -1
- execweave-0.6.3/docs/inference-gateway.de.md +130 -0
- execweave-0.6.3/docs/inference-gateway.fr.md +130 -0
- {execweave-0.6.2 → execweave-0.6.3}/docs/inference-gateway.ja.md +6 -1
- {execweave-0.6.2 → execweave-0.6.3}/docs/inference-gateway.ko.md +6 -1
- {execweave-0.6.2 → execweave-0.6.3}/docs/inference-gateway.md +6 -1
- execweave-0.6.3/docs/inference-gateway.ru.md +130 -0
- {execweave-0.6.2 → execweave-0.6.3}/docs/inference-gateway.zh-CN.md +6 -1
- {execweave-0.6.2 → execweave-0.6.3}/docs/inference-gateway.zh-TW.md +6 -1
- execweave-0.6.3/docs/live-graph.de.md +138 -0
- execweave-0.6.3/docs/live-graph.fr.md +138 -0
- execweave-0.6.3/docs/live-graph.ja.md +138 -0
- execweave-0.6.3/docs/live-graph.ko.md +138 -0
- {execweave-0.6.2 → execweave-0.6.3}/docs/live-graph.md +4 -1
- execweave-0.6.3/docs/live-graph.ru.md +138 -0
- {execweave-0.6.2 → execweave-0.6.3}/docs/live-graph.zh-CN.md +4 -1
- {execweave-0.6.2 → execweave-0.6.3}/docs/live-graph.zh-TW.md +4 -1
- execweave-0.6.3/docs/model-runtime.de.md +106 -0
- execweave-0.6.3/docs/model-runtime.fr.md +106 -0
- {execweave-0.6.2 → execweave-0.6.3}/docs/model-runtime.ja.md +6 -1
- {execweave-0.6.2 → execweave-0.6.3}/docs/model-runtime.ko.md +6 -1
- {execweave-0.6.2 → execweave-0.6.3}/docs/model-runtime.md +6 -1
- execweave-0.6.3/docs/model-runtime.ru.md +106 -0
- {execweave-0.6.2 → execweave-0.6.3}/docs/model-runtime.zh-CN.md +6 -1
- {execweave-0.6.2 → execweave-0.6.3}/docs/model-runtime.zh-TW.md +6 -1
- execweave-0.6.3/docs/opencode-plugin.de.md +81 -0
- execweave-0.6.3/docs/opencode-plugin.fr.md +81 -0
- {execweave-0.6.2 → execweave-0.6.3}/docs/opencode-plugin.ja.md +6 -1
- {execweave-0.6.2 → execweave-0.6.3}/docs/opencode-plugin.ko.md +6 -1
- {execweave-0.6.2 → execweave-0.6.3}/docs/opencode-plugin.md +6 -1
- execweave-0.6.3/docs/opencode-plugin.ru.md +81 -0
- {execweave-0.6.2 → execweave-0.6.3}/docs/opencode-plugin.zh-CN.md +6 -1
- {execweave-0.6.2 → execweave-0.6.3}/docs/opencode-plugin.zh-TW.md +6 -1
- execweave-0.6.3/docs/phase-1-runtime-collection.de.md +322 -0
- execweave-0.6.3/docs/phase-1-runtime-collection.fr.md +322 -0
- execweave-0.6.3/docs/phase-1-runtime-collection.ja.md +322 -0
- execweave-0.6.3/docs/phase-1-runtime-collection.ko.md +322 -0
- {execweave-0.6.2 → execweave-0.6.3}/docs/phase-1-runtime-collection.md +4 -1
- execweave-0.6.3/docs/phase-1-runtime-collection.ru.md +322 -0
- {execweave-0.6.2 → execweave-0.6.3}/docs/phase-1-runtime-collection.zh-CN.md +4 -1
- {execweave-0.6.2 → execweave-0.6.3}/docs/phase-1-runtime-collection.zh-TW.md +4 -1
- execweave-0.6.3/docs/phase-2-execution-graph.de.md +286 -0
- execweave-0.6.3/docs/phase-2-execution-graph.fr.md +286 -0
- execweave-0.6.3/docs/phase-2-execution-graph.ja.md +286 -0
- execweave-0.6.3/docs/phase-2-execution-graph.ko.md +286 -0
- {execweave-0.6.2 → execweave-0.6.3}/docs/phase-2-execution-graph.md +4 -1
- execweave-0.6.3/docs/phase-2-execution-graph.ru.md +286 -0
- {execweave-0.6.2 → execweave-0.6.3}/docs/phase-2-execution-graph.zh-CN.md +4 -1
- {execweave-0.6.2 → execweave-0.6.3}/docs/phase-2-execution-graph.zh-TW.md +4 -1
- execweave-0.6.3/docs/security-analysis.de.md +178 -0
- execweave-0.6.3/docs/security-analysis.fr.md +178 -0
- execweave-0.6.3/docs/security-analysis.ja.md +178 -0
- execweave-0.6.3/docs/security-analysis.ko.md +178 -0
- {execweave-0.6.2 → execweave-0.6.3}/docs/security-analysis.md +4 -1
- execweave-0.6.3/docs/security-analysis.ru.md +178 -0
- {execweave-0.6.2 → execweave-0.6.3}/docs/security-analysis.zh-CN.md +4 -1
- {execweave-0.6.2 → execweave-0.6.3}/docs/security-analysis.zh-TW.md +4 -1
- execweave-0.6.3/docs/semantic-telemetry.de.md +160 -0
- execweave-0.6.3/docs/semantic-telemetry.fr.md +160 -0
- execweave-0.6.3/docs/semantic-telemetry.ja.md +160 -0
- execweave-0.6.3/docs/semantic-telemetry.ko.md +160 -0
- {execweave-0.6.2 → execweave-0.6.3}/docs/semantic-telemetry.md +4 -1
- execweave-0.6.3/docs/semantic-telemetry.ru.md +160 -0
- {execweave-0.6.2 → execweave-0.6.3}/docs/semantic-telemetry.zh-CN.md +4 -1
- {execweave-0.6.2 → execweave-0.6.3}/docs/semantic-telemetry.zh-TW.md +4 -1
- {execweave-0.6.2 → execweave-0.6.3}/pyproject.toml +4 -2
- execweave-0.6.3/scripts/audit_i18n_parity.py +166 -0
- execweave-0.6.3/scripts/check_wheel_install.py +74 -0
- {execweave-0.6.2 → execweave-0.6.3}/scripts/check_windows_launchers.py +25 -1
- execweave-0.6.3/scripts/sync_i18n_nav.py +143 -0
- {execweave-0.6.2 → execweave-0.6.3}/src/execweave/__init__.py +1 -1
- {execweave-0.6.2 → execweave-0.6.3}/src/execweave/__main__.py +1 -1
- execweave-0.6.3/src/execweave/entry.py +18 -0
- execweave-0.6.3/src/execweave/filesystem.py +240 -0
- execweave-0.6.3/src/execweave/live.py +553 -0
- execweave-0.6.3/src/execweave/live_view.py +78 -0
- execweave-0.6.3/src/execweave/scalability_benchmark.py +195 -0
- execweave-0.6.3/src/execweave/theme.py +33 -0
- execweave-0.6.3/src/execweave/top.py +361 -0
- execweave-0.6.3/src/execweave/top_cli.py +91 -0
- execweave-0.6.3/src/execweave/view_cli.py +46 -0
- {execweave-0.6.2 → execweave-0.6.3}/src/execweave/workflow.py +7 -1
- execweave-0.6.3/tests/test_filesystem_resilience.py +235 -0
- execweave-0.6.3/tests/test_live_delta.py +193 -0
- execweave-0.6.3/tests/test_live_theme.py +11 -0
- execweave-0.6.3/tests/test_v063_features.py +132 -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/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.3}/.github/workflows/ci.yml +0 -0
- {execweave-0.6.2 → execweave-0.6.3}/.github/workflows/package-benchmark.yml +0 -0
- {execweave-0.6.2 → execweave-0.6.3}/.github/workflows/windows-launcher.yml +0 -0
- {execweave-0.6.2 → execweave-0.6.3}/.gitignore +0 -0
- {execweave-0.6.2 → execweave-0.6.3}/LICENSE +0 -0
- {execweave-0.6.2 → execweave-0.6.3}/benchmarks/phase1_overhead.py +0 -0
- {execweave-0.6.2 → execweave-0.6.3}/docs/benchmarks/README.md +0 -0
- {execweave-0.6.2 → execweave-0.6.3}/docs/benchmarks/v0.6.0-github-actions.json +0 -0
- {execweave-0.6.2 → execweave-0.6.3}/docs/benchmarks/v0.6.0-github-actions.svg +0 -0
- {execweave-0.6.2 → execweave-0.6.3}/scripts/check_claude_hook.py +0 -0
- {execweave-0.6.2 → execweave-0.6.3}/scripts/check_claude_record_graph.py +0 -0
- {execweave-0.6.2 → execweave-0.6.3}/scripts/check_correlation_graph.py +0 -0
- {execweave-0.6.2 → execweave-0.6.3}/scripts/check_inference_gateway_cli.py +0 -0
- {execweave-0.6.2 → execweave-0.6.3}/scripts/check_model_runtime_cli.py +0 -0
- {execweave-0.6.2 → execweave-0.6.3}/scripts/check_semantic_graph.py +0 -0
- {execweave-0.6.2 → execweave-0.6.3}/scripts/check_viewer_js.py +0 -0
- {execweave-0.6.2 → execweave-0.6.3}/scripts/emit_claude_hook_smoke.py +0 -0
- {execweave-0.6.2 → execweave-0.6.3}/scripts/emit_cursor_hook_smoke.py +0 -0
- {execweave-0.6.2 → execweave-0.6.3}/scripts/emit_gemini_hook_smoke.py +0 -0
- {execweave-0.6.2 → execweave-0.6.3}/scripts/emit_opencode_plugin_smoke.py +0 -0
- {execweave-0.6.2 → execweave-0.6.3}/scripts/make_semantic_smoke.py +0 -0
- {execweave-0.6.2 → execweave-0.6.3}/src/execweave/analysis.py +0 -0
- {execweave-0.6.2 → execweave-0.6.3}/src/execweave/backends.py +0 -0
- {execweave-0.6.2 → execweave-0.6.3}/src/execweave/benchmark.py +0 -0
- {execweave-0.6.2 → execweave-0.6.3}/src/execweave/claude_adapter.py +0 -0
- {execweave-0.6.2 → execweave-0.6.3}/src/execweave/claude_hook_cli.py +0 -0
- {execweave-0.6.2 → execweave-0.6.3}/src/execweave/claude_record.py +0 -0
- {execweave-0.6.2 → execweave-0.6.3}/src/execweave/cli.py +0 -0
- {execweave-0.6.2 → execweave-0.6.3}/src/execweave/codex_adapter.py +0 -0
- {execweave-0.6.2 → execweave-0.6.3}/src/execweave/codex_hook_cli.py +0 -0
- {execweave-0.6.2 → execweave-0.6.3}/src/execweave/codex_record.py +0 -0
- {execweave-0.6.2 → execweave-0.6.3}/src/execweave/collector.py +0 -0
- {execweave-0.6.2 → execweave-0.6.3}/src/execweave/command.py +0 -0
- {execweave-0.6.2 → execweave-0.6.3}/src/execweave/correlation.py +0 -0
- {execweave-0.6.2 → execweave-0.6.3}/src/execweave/cursor_adapter.py +0 -0
- {execweave-0.6.2 → execweave-0.6.3}/src/execweave/cursor_hook_cli.py +0 -0
- {execweave-0.6.2 → execweave-0.6.3}/src/execweave/cursor_record.py +0 -0
- {execweave-0.6.2 → execweave-0.6.3}/src/execweave/focus.py +0 -0
- {execweave-0.6.2 → execweave-0.6.3}/src/execweave/gemini_adapter.py +0 -0
- {execweave-0.6.2 → execweave-0.6.3}/src/execweave/gemini_hook_cli.py +0 -0
- {execweave-0.6.2 → execweave-0.6.3}/src/execweave/gemini_record.py +0 -0
- {execweave-0.6.2 → execweave-0.6.3}/src/execweave/graph.py +0 -0
- {execweave-0.6.2 → execweave-0.6.3}/src/execweave/graph_ops.py +0 -0
- {execweave-0.6.2 → execweave-0.6.3}/src/execweave/inference_gateway.py +0 -0
- {execweave-0.6.2 → execweave-0.6.3}/src/execweave/inference_gateway_cli.py +0 -0
- {execweave-0.6.2 → execweave-0.6.3}/src/execweave/inference_identity.py +0 -0
- {execweave-0.6.2 → execweave-0.6.3}/src/execweave/inference_identity_cli.py +0 -0
- {execweave-0.6.2 → execweave-0.6.3}/src/execweave/model_runtime.py +0 -0
- {execweave-0.6.2 → execweave-0.6.3}/src/execweave/model_runtime_cli.py +0 -0
- {execweave-0.6.2 → execweave-0.6.3}/src/execweave/opencode_adapter.py +0 -0
- {execweave-0.6.2 → execweave-0.6.3}/src/execweave/opencode_hook_cli.py +0 -0
- {execweave-0.6.2 → execweave-0.6.3}/src/execweave/opencode_plugin_cli.py +0 -0
- {execweave-0.6.2 → execweave-0.6.3}/src/execweave/opencode_record.py +0 -0
- {execweave-0.6.2 → execweave-0.6.3}/src/execweave/overhead_benchmark.py +0 -0
- {execweave-0.6.2 → execweave-0.6.3}/src/execweave/provider_record.py +0 -0
- {execweave-0.6.2 → execweave-0.6.3}/src/execweave/schema.py +0 -0
- {execweave-0.6.2 → execweave-0.6.3}/src/execweave/scope.py +0 -0
- {execweave-0.6.2 → execweave-0.6.3}/src/execweave/semantic.py +0 -0
- {execweave-0.6.2 → execweave-0.6.3}/src/execweave/sink.py +0 -0
- {execweave-0.6.2 → execweave-0.6.3}/src/execweave/strace_backend.py +0 -0
- {execweave-0.6.2 → execweave-0.6.3}/src/execweave/validate.py +0 -0
- {execweave-0.6.2 → execweave-0.6.3}/src/execweave/viewer.py +0 -0
- {execweave-0.6.2 → execweave-0.6.3}/tests/test_analysis.py +0 -0
- {execweave-0.6.2 → execweave-0.6.3}/tests/test_backends.py +0 -0
- {execweave-0.6.2 → execweave-0.6.3}/tests/test_claude_adapter.py +0 -0
- {execweave-0.6.2 → execweave-0.6.3}/tests/test_claude_record.py +0 -0
- {execweave-0.6.2 → execweave-0.6.3}/tests/test_codex_adapter.py +0 -0
- {execweave-0.6.2 → execweave-0.6.3}/tests/test_codex_record.py +0 -0
- {execweave-0.6.2 → execweave-0.6.3}/tests/test_collector.py +0 -0
- {execweave-0.6.2 → execweave-0.6.3}/tests/test_command.py +0 -0
- {execweave-0.6.2 → execweave-0.6.3}/tests/test_condense.py +0 -0
- {execweave-0.6.2 → execweave-0.6.3}/tests/test_correlation.py +0 -0
- {execweave-0.6.2 → execweave-0.6.3}/tests/test_correlation_canonical_path.py +0 -0
- {execweave-0.6.2 → execweave-0.6.3}/tests/test_correlation_process_exe.py +0 -0
- {execweave-0.6.2 → execweave-0.6.3}/tests/test_cursor_adapter.py +0 -0
- {execweave-0.6.2 → execweave-0.6.3}/tests/test_cursor_record.py +0 -0
- {execweave-0.6.2 → execweave-0.6.3}/tests/test_focus.py +0 -0
- {execweave-0.6.2 → execweave-0.6.3}/tests/test_gemini_adapter.py +0 -0
- {execweave-0.6.2 → execweave-0.6.3}/tests/test_gemini_record.py +0 -0
- {execweave-0.6.2 → execweave-0.6.3}/tests/test_graph.py +0 -0
- {execweave-0.6.2 → execweave-0.6.3}/tests/test_graph_ops.py +0 -0
- {execweave-0.6.2 → execweave-0.6.3}/tests/test_inference_gateway.py +0 -0
- {execweave-0.6.2 → execweave-0.6.3}/tests/test_inference_identity.py +0 -0
- {execweave-0.6.2 → execweave-0.6.3}/tests/test_live.py +0 -0
- {execweave-0.6.2 → execweave-0.6.3}/tests/test_model_runtime.py +0 -0
- {execweave-0.6.2 → execweave-0.6.3}/tests/test_opencode_adapter.py +0 -0
- {execweave-0.6.2 → execweave-0.6.3}/tests/test_opencode_plugin.py +0 -0
- {execweave-0.6.2 → execweave-0.6.3}/tests/test_opencode_record.py +0 -0
- {execweave-0.6.2 → execweave-0.6.3}/tests/test_overhead_benchmark.py +0 -0
- {execweave-0.6.2 → execweave-0.6.3}/tests/test_schema.py +0 -0
- {execweave-0.6.2 → execweave-0.6.3}/tests/test_scope.py +0 -0
- {execweave-0.6.2 → execweave-0.6.3}/tests/test_semantic.py +0 -0
- {execweave-0.6.2 → execweave-0.6.3}/tests/test_strace_backend.py +0 -0
- {execweave-0.6.2 → execweave-0.6.3}/tests/test_validate.py +0 -0
- {execweave-0.6.2 → execweave-0.6.3}/tests/test_version.py +0 -0
- {execweave-0.6.2 → execweave-0.6.3}/tests/test_viewer.py +0 -0
- {execweave-0.6.2 → execweave-0.6.3}/tests/test_workflow.py +0 -0
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
name: Documentation i18n
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main]
|
|
6
|
+
paths:
|
|
7
|
+
- "README*.md"
|
|
8
|
+
- "docs/*.md"
|
|
9
|
+
- "scripts/audit_i18n_parity.py"
|
|
10
|
+
- "scripts/sync_i18n_nav.py"
|
|
11
|
+
- ".github/workflows/i18n.yml"
|
|
12
|
+
pull_request:
|
|
13
|
+
paths:
|
|
14
|
+
- "README*.md"
|
|
15
|
+
- "docs/*.md"
|
|
16
|
+
- "scripts/audit_i18n_parity.py"
|
|
17
|
+
- "scripts/sync_i18n_nav.py"
|
|
18
|
+
- ".github/workflows/i18n.yml"
|
|
19
|
+
|
|
20
|
+
permissions:
|
|
21
|
+
contents: read
|
|
22
|
+
|
|
23
|
+
jobs:
|
|
24
|
+
audit:
|
|
25
|
+
runs-on: ubuntu-latest
|
|
26
|
+
steps:
|
|
27
|
+
- uses: actions/checkout@v4
|
|
28
|
+
- uses: actions/setup-python@v5
|
|
29
|
+
with:
|
|
30
|
+
python-version: "3.12"
|
|
31
|
+
- name: Check eight-language navigation and coverage
|
|
32
|
+
run: python scripts/sync_i18n_nav.py --check
|
|
33
|
+
- name: Check German, French, and Russian structural parity
|
|
34
|
+
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
|
|
@@ -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.3
|
|
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,10 @@ 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-viewer.png" alt="ExecWeave Live execution graph" width="100%">
|
|
80
|
+
</p>
|
|
81
|
+
|
|
73
82
|
## Install
|
|
74
83
|
|
|
75
84
|
ExecWeave is published on PyPI as a standard Python wheel/sdist. Install the latest published release with:
|
|
@@ -92,19 +101,71 @@ cd ExecWeave
|
|
|
92
101
|
python -m pip install -e ".[dev]"
|
|
93
102
|
```
|
|
94
103
|
|
|
95
|
-
|
|
104
|
+
Live OS-runtime telemetry works with **any local command**. The names below are examples, not a whitelist:
|
|
96
105
|
|
|
97
106
|
```bash
|
|
98
|
-
#
|
|
107
|
+
# Agent / IDE CLIs
|
|
99
108
|
execweave live --open -- claude
|
|
100
|
-
|
|
101
|
-
# OpenAI Codex
|
|
102
109
|
execweave live --open -- codex
|
|
103
|
-
|
|
104
|
-
# Gemini CLI
|
|
105
110
|
execweave live --open -- gemini
|
|
111
|
+
execweave live --open -- cursor
|
|
112
|
+
execweave live --open -- opencode
|
|
113
|
+
|
|
114
|
+
# Any local program
|
|
115
|
+
execweave live --open -- python my_agent.py
|
|
116
|
+
|
|
117
|
+
# A local model runtime launched under ExecWeave
|
|
118
|
+
execweave live --open -- ollama serve
|
|
106
119
|
```
|
|
107
120
|
|
|
121
|
+
`execweave live` streams process, file, and network evidence for the command tree it launches. It does **not** automatically inject Agent semantic hooks, model-runtime API metadata, or inference-gateway routing metadata into the Live Viewer.
|
|
122
|
+
|
|
123
|
+
#### Live capability matrix
|
|
124
|
+
|
|
125
|
+
| Integration | Direct OS-runtime live | Specialized metadata | Automatically in Live Viewer |
|
|
126
|
+
| --- | --- | --- | --- |
|
|
127
|
+
| Claude Code | Yes | `execweave-claude-record` / hooks | No |
|
|
128
|
+
| OpenAI Codex | Yes | `execweave-codex-record` / hooks | No |
|
|
129
|
+
| Gemini CLI | Yes | `execweave-gemini-record` / hooks | No |
|
|
130
|
+
| Cursor | Yes | `execweave-cursor-record` / hooks | No |
|
|
131
|
+
| OpenCode | Yes | `execweave-opencode-record` / plugin | No |
|
|
132
|
+
| Ollama | Yes, when launched under ExecWeave (for example `ollama serve`) | `execweave-model-runtime event/probe --runtime ollama` | No |
|
|
133
|
+
| llama.cpp | Yes, when its local server is launched under ExecWeave | `execweave-model-runtime event/probe --runtime llamacpp` | No |
|
|
134
|
+
| vLLM | Yes, when its local server is launched under ExecWeave | `execweave-model-runtime event/probe --runtime vllm` | No |
|
|
135
|
+
| 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` | No |
|
|
136
|
+
| LiteLLM Proxy | Yes, when the local proxy is launched under ExecWeave | `execweave-inference-gateway event --gateway litellm` | No |
|
|
137
|
+
| OpenRouter | No direct remote-service process; run the local client/Agent under `live` instead | `execweave-inference-gateway event/generation --gateway openrouter` | No |
|
|
138
|
+
|
|
139
|
+
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.
|
|
140
|
+
|
|
141
|
+
<!-- v0.6.3-live -->
|
|
142
|
+
### v0.6.3 live observability
|
|
143
|
+
|
|
144
|
+
Use the same live session in either the browser or terminal:
|
|
145
|
+
|
|
146
|
+
```bash
|
|
147
|
+
execweave top -- codex # Terminal dashboard
|
|
148
|
+
execweave top --open -- codex # Terminal + Web Viewer
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
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.
|
|
152
|
+
|
|
153
|
+
`live` is a generic OS-runtime view rather than an integration whitelist. Specialized Agent semantic, model-runtime, and gateway metadata remain separate evidence layers and are not automatically injected into the Live Viewer in v0.6.3.
|
|
154
|
+
|
|
155
|
+
Run the reproducible graph scalability benchmark with `execweave-scalability`; CI covers 10k, 100k, and 1M synthetic events.
|
|
156
|
+
|
|
157
|
+
#### Scalability benchmark
|
|
158
|
+
|
|
159
|
+
Reference GitHub Actions result for the incremental `GraphAccumulator` synthetic workload (`retain_event_ids=False`):
|
|
160
|
+
|
|
161
|
+
| Events | Apply time | Throughput | Nodes | Edges | Apply RSS Δ | Snapshot |
|
|
162
|
+
| ---: | ---: | ---: | ---: | ---: | ---: | ---: |
|
|
163
|
+
| 10k | 0.114 s | 87,681 ev/s | 10,001 | 10,000 | 35.9 MiB | 8.5 MiB |
|
|
164
|
+
| 100k | 0.654 s | 152,816 ev/s | 10,001 | 10,000 | 25.8 MiB | 8.6 MiB |
|
|
165
|
+
| **1M** | **6.087 s** | **164,273 ev/s** | **10,001** | **10,000** | **23.5 MiB** | **8.6 MiB** |
|
|
166
|
+
|
|
167
|
+
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.
|
|
168
|
+
|
|
108
169
|
Or build the full artifact pipeline:
|
|
109
170
|
|
|
110
171
|
```bash
|
|
@@ -279,9 +340,9 @@ Portable filesystem watching is session-correlated rather than process-causal, a
|
|
|
279
340
|
|
|
280
341
|
Future native collectors remain planned for Linux eBPF, Windows ETW, and macOS Endpoint Security.
|
|
281
342
|
|
|
282
|
-
## v0.6.
|
|
343
|
+
## v0.6.3 safety patch
|
|
283
344
|
|
|
284
|
-
v0.6.
|
|
345
|
+
v0.6.3 hardens long-running and high-cardinality sessions without changing evidence semantics or graph schema 0.1:
|
|
285
346
|
|
|
286
347
|
- 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
348
|
- 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,7 +403,7 @@ Security findings remain explicit about evidence limits. A possible sensitive-fi
|
|
|
342
403
|
|
|
343
404
|
## Current status
|
|
344
405
|
|
|
345
|
-
ExecWeave `main` is currently **v0.6.
|
|
406
|
+
ExecWeave `main` is currently **v0.6.3** and under active development.
|
|
346
407
|
|
|
347
408
|
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.
|
|
348
409
|
|
|
@@ -358,7 +419,7 @@ Review artifacts before sharing them.
|
|
|
358
419
|
- [`Phase 2 — Execution Graph`](docs/phase-2-execution-graph.md)
|
|
359
420
|
- [`Live Graph`](docs/live-graph.md)
|
|
360
421
|
- [`Semantic Telemetry`](docs/semantic-telemetry.md)
|
|
361
|
-
- [`Claude Code Hooks`](docs/claude-
|
|
422
|
+
- [`Claude Code Hooks`](docs/claude-hooks.md)
|
|
362
423
|
- [`OpenAI Codex Hooks`](docs/codex-hooks.md)
|
|
363
424
|
- [`Gemini CLI Hooks`](docs/gemini-hooks.md)
|
|
364
425
|
- [`Cursor Hooks`](docs/cursor-hooks.md)
|