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.
Files changed (256) hide show
  1. execweave-0.6.4/.github/workflows/i18n.yml +35 -0
  2. execweave-0.6.4/.github/workflows/package-smoke.yml +42 -0
  3. {execweave-0.6.2 → execweave-0.6.4}/.github/workflows/publish.yml +3 -1
  4. execweave-0.6.4/.github/workflows/scalability.yml +54 -0
  5. execweave-0.6.4/.github/workflows/wheel-smoke.yml +34 -0
  6. {execweave-0.6.2 → execweave-0.6.4}/PKG-INFO +100 -14
  7. execweave-0.6.4/README.de.md +410 -0
  8. execweave-0.6.4/README.fr.md +410 -0
  9. {execweave-0.6.2 → execweave-0.6.4}/README.ja.md +94 -11
  10. {execweave-0.6.2 → execweave-0.6.4}/README.ko.md +94 -11
  11. {execweave-0.6.2 → execweave-0.6.4}/README.md +99 -13
  12. execweave-0.6.4/README.ru.md +410 -0
  13. {execweave-0.6.2 → execweave-0.6.4}/README.zh-CN.md +94 -11
  14. {execweave-0.6.2 → execweave-0.6.4}/README.zh-TW.md +95 -12
  15. execweave-0.6.4/docs/assets/execweave-launch-demo-v5-x.gif +0 -0
  16. execweave-0.6.4/docs/claude-code-hooks.de.md +275 -0
  17. execweave-0.6.4/docs/claude-code-hooks.fr.md +275 -0
  18. {execweave-0.6.2 → execweave-0.6.4}/docs/claude-code-hooks.ja.md +4 -1
  19. {execweave-0.6.2 → execweave-0.6.4}/docs/claude-code-hooks.ko.md +4 -1
  20. {execweave-0.6.2 → execweave-0.6.4}/docs/claude-code-hooks.md +4 -1
  21. execweave-0.6.4/docs/claude-code-hooks.ru.md +275 -0
  22. {execweave-0.6.2 → execweave-0.6.4}/docs/claude-code-hooks.zh-CN.md +4 -1
  23. execweave-0.6.4/docs/claude-code-hooks.zh-TW.md +273 -0
  24. execweave-0.6.4/docs/codex-hooks.de.md +182 -0
  25. execweave-0.6.4/docs/codex-hooks.fr.md +182 -0
  26. execweave-0.6.4/docs/codex-hooks.ja.md +182 -0
  27. execweave-0.6.4/docs/codex-hooks.ko.md +180 -0
  28. {execweave-0.6.2 → execweave-0.6.4}/docs/codex-hooks.md +4 -1
  29. execweave-0.6.4/docs/codex-hooks.ru.md +182 -0
  30. {execweave-0.6.2 → execweave-0.6.4}/docs/codex-hooks.zh-CN.md +4 -1
  31. {execweave-0.6.2 → execweave-0.6.4}/docs/codex-hooks.zh-TW.md +4 -1
  32. execweave-0.6.4/docs/cursor-hooks.de.md +85 -0
  33. execweave-0.6.4/docs/cursor-hooks.fr.md +85 -0
  34. {execweave-0.6.2 → execweave-0.6.4}/docs/cursor-hooks.ja.md +6 -1
  35. {execweave-0.6.2 → execweave-0.6.4}/docs/cursor-hooks.ko.md +6 -1
  36. {execweave-0.6.2 → execweave-0.6.4}/docs/cursor-hooks.md +6 -1
  37. execweave-0.6.4/docs/cursor-hooks.ru.md +85 -0
  38. {execweave-0.6.2 → execweave-0.6.4}/docs/cursor-hooks.zh-CN.md +6 -1
  39. {execweave-0.6.2 → execweave-0.6.4}/docs/cursor-hooks.zh-TW.md +6 -1
  40. execweave-0.6.4/docs/gemini-hooks.de.md +189 -0
  41. execweave-0.6.4/docs/gemini-hooks.fr.md +189 -0
  42. {execweave-0.6.2 → execweave-0.6.4}/docs/gemini-hooks.ja.md +36 -11
  43. {execweave-0.6.2 → execweave-0.6.4}/docs/gemini-hooks.ko.md +36 -11
  44. {execweave-0.6.2 → execweave-0.6.4}/docs/gemini-hooks.md +4 -1
  45. execweave-0.6.4/docs/gemini-hooks.ru.md +189 -0
  46. {execweave-0.6.2 → execweave-0.6.4}/docs/gemini-hooks.zh-CN.md +24 -3
  47. {execweave-0.6.2 → execweave-0.6.4}/docs/gemini-hooks.zh-TW.md +4 -1
  48. execweave-0.6.4/docs/inference-gateway.de.md +152 -0
  49. execweave-0.6.4/docs/inference-gateway.fr.md +152 -0
  50. {execweave-0.6.2 → execweave-0.6.4}/docs/inference-gateway.ja.md +28 -1
  51. {execweave-0.6.2 → execweave-0.6.4}/docs/inference-gateway.ko.md +28 -1
  52. {execweave-0.6.2 → execweave-0.6.4}/docs/inference-gateway.md +28 -1
  53. execweave-0.6.4/docs/inference-gateway.ru.md +152 -0
  54. {execweave-0.6.2 → execweave-0.6.4}/docs/inference-gateway.zh-CN.md +28 -1
  55. {execweave-0.6.2 → execweave-0.6.4}/docs/inference-gateway.zh-TW.md +28 -1
  56. execweave-0.6.4/docs/live-graph.de.md +223 -0
  57. execweave-0.6.4/docs/live-graph.fr.md +223 -0
  58. execweave-0.6.4/docs/live-graph.ja.md +223 -0
  59. execweave-0.6.4/docs/live-graph.ko.md +223 -0
  60. execweave-0.6.4/docs/live-graph.md +223 -0
  61. execweave-0.6.4/docs/live-graph.ru.md +223 -0
  62. execweave-0.6.4/docs/live-graph.zh-CN.md +223 -0
  63. execweave-0.6.4/docs/live-graph.zh-TW.md +223 -0
  64. execweave-0.6.4/docs/model-runtime.de.md +109 -0
  65. execweave-0.6.4/docs/model-runtime.fr.md +109 -0
  66. {execweave-0.6.2 → execweave-0.6.4}/docs/model-runtime.ja.md +9 -1
  67. {execweave-0.6.2 → execweave-0.6.4}/docs/model-runtime.ko.md +9 -1
  68. {execweave-0.6.2 → execweave-0.6.4}/docs/model-runtime.md +9 -1
  69. execweave-0.6.4/docs/model-runtime.ru.md +109 -0
  70. {execweave-0.6.2 → execweave-0.6.4}/docs/model-runtime.zh-CN.md +9 -1
  71. {execweave-0.6.2 → execweave-0.6.4}/docs/model-runtime.zh-TW.md +9 -1
  72. execweave-0.6.4/docs/opencode-plugin.de.md +81 -0
  73. execweave-0.6.4/docs/opencode-plugin.fr.md +81 -0
  74. {execweave-0.6.2 → execweave-0.6.4}/docs/opencode-plugin.ja.md +6 -1
  75. {execweave-0.6.2 → execweave-0.6.4}/docs/opencode-plugin.ko.md +6 -1
  76. {execweave-0.6.2 → execweave-0.6.4}/docs/opencode-plugin.md +6 -1
  77. execweave-0.6.4/docs/opencode-plugin.ru.md +81 -0
  78. {execweave-0.6.2 → execweave-0.6.4}/docs/opencode-plugin.zh-CN.md +6 -1
  79. {execweave-0.6.2 → execweave-0.6.4}/docs/opencode-plugin.zh-TW.md +6 -1
  80. execweave-0.6.4/docs/phase-1-runtime-collection.de.md +322 -0
  81. execweave-0.6.4/docs/phase-1-runtime-collection.fr.md +322 -0
  82. execweave-0.6.4/docs/phase-1-runtime-collection.ja.md +322 -0
  83. execweave-0.6.4/docs/phase-1-runtime-collection.ko.md +322 -0
  84. {execweave-0.6.2 → execweave-0.6.4}/docs/phase-1-runtime-collection.md +4 -1
  85. execweave-0.6.4/docs/phase-1-runtime-collection.ru.md +322 -0
  86. {execweave-0.6.2 → execweave-0.6.4}/docs/phase-1-runtime-collection.zh-CN.md +4 -1
  87. {execweave-0.6.2 → execweave-0.6.4}/docs/phase-1-runtime-collection.zh-TW.md +4 -1
  88. execweave-0.6.4/docs/phase-2-execution-graph.de.md +286 -0
  89. execweave-0.6.4/docs/phase-2-execution-graph.fr.md +286 -0
  90. execweave-0.6.4/docs/phase-2-execution-graph.ja.md +286 -0
  91. execweave-0.6.4/docs/phase-2-execution-graph.ko.md +286 -0
  92. {execweave-0.6.2 → execweave-0.6.4}/docs/phase-2-execution-graph.md +4 -1
  93. execweave-0.6.4/docs/phase-2-execution-graph.ru.md +286 -0
  94. {execweave-0.6.2 → execweave-0.6.4}/docs/phase-2-execution-graph.zh-CN.md +4 -1
  95. {execweave-0.6.2 → execweave-0.6.4}/docs/phase-2-execution-graph.zh-TW.md +4 -1
  96. execweave-0.6.4/docs/security-analysis.de.md +178 -0
  97. execweave-0.6.4/docs/security-analysis.fr.md +178 -0
  98. execweave-0.6.4/docs/security-analysis.ja.md +178 -0
  99. execweave-0.6.4/docs/security-analysis.ko.md +178 -0
  100. {execweave-0.6.2 → execweave-0.6.4}/docs/security-analysis.md +4 -1
  101. execweave-0.6.4/docs/security-analysis.ru.md +178 -0
  102. {execweave-0.6.2 → execweave-0.6.4}/docs/security-analysis.zh-CN.md +4 -1
  103. {execweave-0.6.2 → execweave-0.6.4}/docs/security-analysis.zh-TW.md +4 -1
  104. execweave-0.6.4/docs/semantic-telemetry.de.md +160 -0
  105. execweave-0.6.4/docs/semantic-telemetry.fr.md +160 -0
  106. execweave-0.6.4/docs/semantic-telemetry.ja.md +160 -0
  107. execweave-0.6.4/docs/semantic-telemetry.ko.md +160 -0
  108. {execweave-0.6.2 → execweave-0.6.4}/docs/semantic-telemetry.md +4 -1
  109. execweave-0.6.4/docs/semantic-telemetry.ru.md +160 -0
  110. {execweave-0.6.2 → execweave-0.6.4}/docs/semantic-telemetry.zh-CN.md +4 -1
  111. {execweave-0.6.2 → execweave-0.6.4}/docs/semantic-telemetry.zh-TW.md +4 -1
  112. {execweave-0.6.2 → execweave-0.6.4}/pyproject.toml +6 -3
  113. execweave-0.6.4/scripts/audit_i18n_parity.py +180 -0
  114. {execweave-0.6.2 → execweave-0.6.4}/scripts/check_inference_gateway_cli.py +24 -0
  115. execweave-0.6.4/scripts/check_wheel_install.py +77 -0
  116. {execweave-0.6.2 → execweave-0.6.4}/scripts/check_windows_launchers.py +25 -1
  117. execweave-0.6.4/scripts/sync_i18n_nav.py +143 -0
  118. {execweave-0.6.2 → execweave-0.6.4}/src/execweave/__init__.py +1 -1
  119. {execweave-0.6.2 → execweave-0.6.4}/src/execweave/__main__.py +1 -1
  120. execweave-0.6.4/src/execweave/auto_specialized.py +322 -0
  121. {execweave-0.6.2 → execweave-0.6.4}/src/execweave/collector.py +16 -5
  122. execweave-0.6.4/src/execweave/entry.py +18 -0
  123. execweave-0.6.4/src/execweave/filesystem.py +240 -0
  124. execweave-0.6.4/src/execweave/litellm_callback.py +182 -0
  125. execweave-0.6.4/src/execweave/litellm_callback_cli.py +42 -0
  126. execweave-0.6.4/src/execweave/live.py +690 -0
  127. execweave-0.6.4/src/execweave/live_view.py +79 -0
  128. execweave-0.6.4/src/execweave/scalability_benchmark.py +195 -0
  129. {execweave-0.6.2 → execweave-0.6.4}/src/execweave/semantic.py +80 -2
  130. execweave-0.6.4/src/execweave/theme.py +33 -0
  131. execweave-0.6.4/src/execweave/top.py +506 -0
  132. execweave-0.6.4/src/execweave/top_cli.py +139 -0
  133. execweave-0.6.4/src/execweave/view_cli.py +46 -0
  134. {execweave-0.6.2 → execweave-0.6.4}/src/execweave/workflow.py +7 -1
  135. execweave-0.6.4/tests/test_auto_specialized.py +380 -0
  136. execweave-0.6.4/tests/test_filesystem_resilience.py +235 -0
  137. execweave-0.6.4/tests/test_litellm_callback.py +189 -0
  138. execweave-0.6.4/tests/test_live_delta.py +193 -0
  139. execweave-0.6.4/tests/test_live_theme.py +11 -0
  140. execweave-0.6.4/tests/test_lmstudio_auto_specialized.py +149 -0
  141. execweave-0.6.4/tests/test_top_detached.py +104 -0
  142. execweave-0.6.4/tests/test_v063_features.py +132 -0
  143. execweave-0.6.4/tests/test_v064_live_auto_integrations.py +135 -0
  144. execweave-0.6.4/tests/test_v064_live_evidence.py +250 -0
  145. execweave-0.6.2/docs/claude-code-hooks.zh-TW.md +0 -218
  146. execweave-0.6.2/docs/codex-hooks.ja.md +0 -84
  147. execweave-0.6.2/docs/codex-hooks.ko.md +0 -77
  148. execweave-0.6.2/docs/live-graph.ja.md +0 -93
  149. execweave-0.6.2/docs/live-graph.ko.md +0 -93
  150. execweave-0.6.2/docs/live-graph.md +0 -135
  151. execweave-0.6.2/docs/live-graph.zh-CN.md +0 -131
  152. execweave-0.6.2/docs/live-graph.zh-TW.md +0 -131
  153. execweave-0.6.2/docs/phase-1-runtime-collection.ja.md +0 -153
  154. execweave-0.6.2/docs/phase-1-runtime-collection.ko.md +0 -151
  155. execweave-0.6.2/docs/phase-2-execution-graph.ja.md +0 -110
  156. execweave-0.6.2/docs/phase-2-execution-graph.ko.md +0 -110
  157. execweave-0.6.2/docs/security-analysis.ja.md +0 -95
  158. execweave-0.6.2/docs/security-analysis.ko.md +0 -93
  159. execweave-0.6.2/docs/semantic-telemetry.ja.md +0 -82
  160. execweave-0.6.2/docs/semantic-telemetry.ko.md +0 -77
  161. execweave-0.6.2/src/execweave/filesystem.py +0 -103
  162. execweave-0.6.2/src/execweave/live.py +0 -387
  163. {execweave-0.6.2 → execweave-0.6.4}/.github/workflows/ci.yml +0 -0
  164. {execweave-0.6.2 → execweave-0.6.4}/.github/workflows/package-benchmark.yml +0 -0
  165. {execweave-0.6.2 → execweave-0.6.4}/.github/workflows/windows-launcher.yml +0 -0
  166. {execweave-0.6.2 → execweave-0.6.4}/.gitignore +0 -0
  167. {execweave-0.6.2 → execweave-0.6.4}/LICENSE +0 -0
  168. {execweave-0.6.2 → execweave-0.6.4}/benchmarks/phase1_overhead.py +0 -0
  169. {execweave-0.6.2 → execweave-0.6.4}/docs/benchmarks/README.md +0 -0
  170. {execweave-0.6.2 → execweave-0.6.4}/docs/benchmarks/v0.6.0-github-actions.json +0 -0
  171. {execweave-0.6.2 → execweave-0.6.4}/docs/benchmarks/v0.6.0-github-actions.svg +0 -0
  172. {execweave-0.6.2 → execweave-0.6.4}/scripts/check_claude_hook.py +0 -0
  173. {execweave-0.6.2 → execweave-0.6.4}/scripts/check_claude_record_graph.py +0 -0
  174. {execweave-0.6.2 → execweave-0.6.4}/scripts/check_correlation_graph.py +0 -0
  175. {execweave-0.6.2 → execweave-0.6.4}/scripts/check_model_runtime_cli.py +0 -0
  176. {execweave-0.6.2 → execweave-0.6.4}/scripts/check_semantic_graph.py +0 -0
  177. {execweave-0.6.2 → execweave-0.6.4}/scripts/check_viewer_js.py +0 -0
  178. {execweave-0.6.2 → execweave-0.6.4}/scripts/emit_claude_hook_smoke.py +0 -0
  179. {execweave-0.6.2 → execweave-0.6.4}/scripts/emit_cursor_hook_smoke.py +0 -0
  180. {execweave-0.6.2 → execweave-0.6.4}/scripts/emit_gemini_hook_smoke.py +0 -0
  181. {execweave-0.6.2 → execweave-0.6.4}/scripts/emit_opencode_plugin_smoke.py +0 -0
  182. {execweave-0.6.2 → execweave-0.6.4}/scripts/make_semantic_smoke.py +0 -0
  183. {execweave-0.6.2 → execweave-0.6.4}/src/execweave/analysis.py +0 -0
  184. {execweave-0.6.2 → execweave-0.6.4}/src/execweave/backends.py +0 -0
  185. {execweave-0.6.2 → execweave-0.6.4}/src/execweave/benchmark.py +0 -0
  186. {execweave-0.6.2 → execweave-0.6.4}/src/execweave/claude_adapter.py +0 -0
  187. {execweave-0.6.2 → execweave-0.6.4}/src/execweave/claude_hook_cli.py +0 -0
  188. {execweave-0.6.2 → execweave-0.6.4}/src/execweave/claude_record.py +0 -0
  189. {execweave-0.6.2 → execweave-0.6.4}/src/execweave/cli.py +0 -0
  190. {execweave-0.6.2 → execweave-0.6.4}/src/execweave/codex_adapter.py +0 -0
  191. {execweave-0.6.2 → execweave-0.6.4}/src/execweave/codex_hook_cli.py +0 -0
  192. {execweave-0.6.2 → execweave-0.6.4}/src/execweave/codex_record.py +0 -0
  193. {execweave-0.6.2 → execweave-0.6.4}/src/execweave/command.py +0 -0
  194. {execweave-0.6.2 → execweave-0.6.4}/src/execweave/correlation.py +0 -0
  195. {execweave-0.6.2 → execweave-0.6.4}/src/execweave/cursor_adapter.py +0 -0
  196. {execweave-0.6.2 → execweave-0.6.4}/src/execweave/cursor_hook_cli.py +0 -0
  197. {execweave-0.6.2 → execweave-0.6.4}/src/execweave/cursor_record.py +0 -0
  198. {execweave-0.6.2 → execweave-0.6.4}/src/execweave/focus.py +0 -0
  199. {execweave-0.6.2 → execweave-0.6.4}/src/execweave/gemini_adapter.py +0 -0
  200. {execweave-0.6.2 → execweave-0.6.4}/src/execweave/gemini_hook_cli.py +0 -0
  201. {execweave-0.6.2 → execweave-0.6.4}/src/execweave/gemini_record.py +0 -0
  202. {execweave-0.6.2 → execweave-0.6.4}/src/execweave/graph.py +0 -0
  203. {execweave-0.6.2 → execweave-0.6.4}/src/execweave/graph_ops.py +0 -0
  204. {execweave-0.6.2 → execweave-0.6.4}/src/execweave/inference_gateway.py +0 -0
  205. {execweave-0.6.2 → execweave-0.6.4}/src/execweave/inference_gateway_cli.py +0 -0
  206. {execweave-0.6.2 → execweave-0.6.4}/src/execweave/inference_identity.py +0 -0
  207. {execweave-0.6.2 → execweave-0.6.4}/src/execweave/inference_identity_cli.py +0 -0
  208. {execweave-0.6.2 → execweave-0.6.4}/src/execweave/model_runtime.py +0 -0
  209. {execweave-0.6.2 → execweave-0.6.4}/src/execweave/model_runtime_cli.py +0 -0
  210. {execweave-0.6.2 → execweave-0.6.4}/src/execweave/opencode_adapter.py +0 -0
  211. {execweave-0.6.2 → execweave-0.6.4}/src/execweave/opencode_hook_cli.py +0 -0
  212. {execweave-0.6.2 → execweave-0.6.4}/src/execweave/opencode_plugin_cli.py +0 -0
  213. {execweave-0.6.2 → execweave-0.6.4}/src/execweave/opencode_record.py +0 -0
  214. {execweave-0.6.2 → execweave-0.6.4}/src/execweave/overhead_benchmark.py +0 -0
  215. {execweave-0.6.2 → execweave-0.6.4}/src/execweave/provider_record.py +0 -0
  216. {execweave-0.6.2 → execweave-0.6.4}/src/execweave/schema.py +0 -0
  217. {execweave-0.6.2 → execweave-0.6.4}/src/execweave/scope.py +0 -0
  218. {execweave-0.6.2 → execweave-0.6.4}/src/execweave/sink.py +0 -0
  219. {execweave-0.6.2 → execweave-0.6.4}/src/execweave/strace_backend.py +0 -0
  220. {execweave-0.6.2 → execweave-0.6.4}/src/execweave/validate.py +0 -0
  221. {execweave-0.6.2 → execweave-0.6.4}/src/execweave/viewer.py +0 -0
  222. {execweave-0.6.2 → execweave-0.6.4}/tests/test_analysis.py +0 -0
  223. {execweave-0.6.2 → execweave-0.6.4}/tests/test_backends.py +0 -0
  224. {execweave-0.6.2 → execweave-0.6.4}/tests/test_claude_adapter.py +0 -0
  225. {execweave-0.6.2 → execweave-0.6.4}/tests/test_claude_record.py +0 -0
  226. {execweave-0.6.2 → execweave-0.6.4}/tests/test_codex_adapter.py +0 -0
  227. {execweave-0.6.2 → execweave-0.6.4}/tests/test_codex_record.py +0 -0
  228. {execweave-0.6.2 → execweave-0.6.4}/tests/test_collector.py +0 -0
  229. {execweave-0.6.2 → execweave-0.6.4}/tests/test_command.py +0 -0
  230. {execweave-0.6.2 → execweave-0.6.4}/tests/test_condense.py +0 -0
  231. {execweave-0.6.2 → execweave-0.6.4}/tests/test_correlation.py +0 -0
  232. {execweave-0.6.2 → execweave-0.6.4}/tests/test_correlation_canonical_path.py +0 -0
  233. {execweave-0.6.2 → execweave-0.6.4}/tests/test_correlation_process_exe.py +0 -0
  234. {execweave-0.6.2 → execweave-0.6.4}/tests/test_cursor_adapter.py +0 -0
  235. {execweave-0.6.2 → execweave-0.6.4}/tests/test_cursor_record.py +0 -0
  236. {execweave-0.6.2 → execweave-0.6.4}/tests/test_focus.py +0 -0
  237. {execweave-0.6.2 → execweave-0.6.4}/tests/test_gemini_adapter.py +0 -0
  238. {execweave-0.6.2 → execweave-0.6.4}/tests/test_gemini_record.py +0 -0
  239. {execweave-0.6.2 → execweave-0.6.4}/tests/test_graph.py +0 -0
  240. {execweave-0.6.2 → execweave-0.6.4}/tests/test_graph_ops.py +0 -0
  241. {execweave-0.6.2 → execweave-0.6.4}/tests/test_inference_gateway.py +0 -0
  242. {execweave-0.6.2 → execweave-0.6.4}/tests/test_inference_identity.py +0 -0
  243. {execweave-0.6.2 → execweave-0.6.4}/tests/test_live.py +0 -0
  244. {execweave-0.6.2 → execweave-0.6.4}/tests/test_model_runtime.py +0 -0
  245. {execweave-0.6.2 → execweave-0.6.4}/tests/test_opencode_adapter.py +0 -0
  246. {execweave-0.6.2 → execweave-0.6.4}/tests/test_opencode_plugin.py +0 -0
  247. {execweave-0.6.2 → execweave-0.6.4}/tests/test_opencode_record.py +0 -0
  248. {execweave-0.6.2 → execweave-0.6.4}/tests/test_overhead_benchmark.py +0 -0
  249. {execweave-0.6.2 → execweave-0.6.4}/tests/test_schema.py +0 -0
  250. {execweave-0.6.2 → execweave-0.6.4}/tests/test_scope.py +0 -0
  251. {execweave-0.6.2 → execweave-0.6.4}/tests/test_semantic.py +0 -0
  252. {execweave-0.6.2 → execweave-0.6.4}/tests/test_strace_backend.py +0 -0
  253. {execweave-0.6.2 → execweave-0.6.4}/tests/test_validate.py +0 -0
  254. {execweave-0.6.2 → execweave-0.6.4}/tests/test_version.py +0 -0
  255. {execweave-0.6.2 → execweave-0.6.4}/tests/test_viewer.py +0 -0
  256. {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.2
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
- Watch Claude Code, OpenAI Codex, or Gemini CLI live:
125
+ Live OS-runtime telemetry works with **any local command**. The names below are examples, not a whitelist:
96
126
 
97
127
  ```bash
98
- # Claude Code
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.2 safety patch
368
+ ## v0.6.3 safety patch
283
369
 
284
- v0.6.2 hardens long-running and high-cardinality sessions without changing evidence semantics or graph schema 0.1:
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.2** and under active development.
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-code-hooks.md)
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).