execweave 0.8.2__tar.gz → 0.8.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.
Files changed (489) hide show
  1. execweave-0.8.3/.github/workflows/provider-capability-stage-integrity.yml +98 -0
  2. execweave-0.8.3/PKG-INFO +337 -0
  3. execweave-0.8.3/README.de.md +284 -0
  4. execweave-0.8.3/README.fr.md +284 -0
  5. execweave-0.8.3/README.ja.md +284 -0
  6. execweave-0.8.3/README.ko.md +284 -0
  7. execweave-0.8.3/README.md +284 -0
  8. execweave-0.8.3/README.ru.md +284 -0
  9. execweave-0.8.3/README.zh-CN.md +284 -0
  10. execweave-0.8.3/README.zh-TW.md +284 -0
  11. execweave-0.8.3/docs/v0.8.3-graph-ergonomics.md +180 -0
  12. {execweave-0.8.2 → execweave-0.8.3}/pyproject.toml +2 -2
  13. {execweave-0.8.2 → execweave-0.8.3}/src/execweave/__init__.py +1 -1
  14. {execweave-0.8.2 → execweave-0.8.3}/src/execweave/anthropic.py +34 -9
  15. {execweave-0.8.2 → execweave-0.8.3}/src/execweave/anthropic_full_fidelity.py +24 -21
  16. {execweave-0.8.2 → execweave-0.8.3}/src/execweave/antigravity_adapter.py +43 -7
  17. {execweave-0.8.2 → execweave-0.8.3}/src/execweave/conversation_archive.py +0 -1
  18. execweave-0.8.3/src/execweave/conversation_records.py +301 -0
  19. {execweave-0.8.2 → execweave-0.8.3}/src/execweave/dashboard_shell.py +35 -1
  20. {execweave-0.8.2 → execweave-0.8.3}/src/execweave/inference_gateway.py +84 -29
  21. {execweave-0.8.2 → execweave-0.8.3}/src/execweave/live_view.py +6 -3
  22. {execweave-0.8.2 → execweave-0.8.3}/src/execweave/live_view_markup.py +1 -1
  23. {execweave-0.8.2 → execweave-0.8.3}/src/execweave/live_view_readability.py +228 -20
  24. {execweave-0.8.2 → execweave-0.8.3}/src/execweave/live_view_script_c.py +26 -1
  25. {execweave-0.8.2 → execweave-0.8.3}/src/execweave/model_runtime.py +38 -12
  26. {execweave-0.8.2 → execweave-0.8.3}/src/execweave/openai_compatible.py +42 -14
  27. {execweave-0.8.2 → execweave-0.8.3}/src/execweave/openai_compatible_full_fidelity.py +20 -19
  28. {execweave-0.8.2 → execweave-0.8.3}/src/execweave/opencode_adapter.py +14 -4
  29. {execweave-0.8.2 → execweave-0.8.3}/src/execweave/opencode_full_fidelity.py +7 -14
  30. {execweave-0.8.2 → execweave-0.8.3}/src/execweave/viewer_agent_panel.py +58 -2
  31. execweave-0.8.3/src/execweave/viewer_dashboard_hardening.py +263 -0
  32. execweave-0.8.3/src/execweave/viewer_dashboard_hardening_v2.py +91 -0
  33. execweave-0.8.3/tests/test_antigravity_history_replay.py +233 -0
  34. execweave-0.8.3/tests/test_antigravity_identity_topology.py +112 -0
  35. {execweave-0.8.2 → execweave-0.8.3}/tests/test_conversation_agent_focus.py +3 -1
  36. {execweave-0.8.2 → execweave-0.8.3}/tests/test_conversation_identity_merge.py +69 -15
  37. execweave-0.8.3/tests/test_graph_clear_focus_e2e.py +122 -0
  38. execweave-0.8.3/tests/test_graph_edge_routing_e2e.py +157 -0
  39. execweave-0.8.3/tests/test_graph_lane_separation_e2e.py +165 -0
  40. execweave-0.8.3/tests/test_graph_node_sizing_e2e.py +286 -0
  41. execweave-0.8.3/tests/test_inference_endpoint_identity.py +147 -0
  42. {execweave-0.8.2 → execweave-0.8.3}/tests/test_model_runtime.py +6 -2
  43. execweave-0.8.3/tests/test_opencode_identity_unification.py +87 -0
  44. execweave-0.8.3/tests/test_pr25_premerge_hardening_contract.py +57 -0
  45. execweave-0.8.3/tests/test_pr25_premerge_hardening_e2e.py +401 -0
  46. execweave-0.8.3/tests/test_tool_traffic_e2e.py +134 -0
  47. {execweave-0.8.2 → execweave-0.8.3}/tests/test_v069_dashboard_release.py +5 -5
  48. execweave-0.8.3/tests/test_v083_release_gate_p2.py +150 -0
  49. execweave-0.8.2/.github/workflows/provider-capability-stage-integrity.yml +0 -49
  50. execweave-0.8.2/PKG-INFO +0 -360
  51. execweave-0.8.2/README.de.md +0 -307
  52. execweave-0.8.2/README.fr.md +0 -307
  53. execweave-0.8.2/README.ja.md +0 -307
  54. execweave-0.8.2/README.ko.md +0 -307
  55. execweave-0.8.2/README.md +0 -307
  56. execweave-0.8.2/README.ru.md +0 -307
  57. execweave-0.8.2/README.zh-CN.md +0 -307
  58. execweave-0.8.2/README.zh-TW.md +0 -307
  59. execweave-0.8.2/src/execweave/conversation_records.py +0 -115
  60. {execweave-0.8.2 → execweave-0.8.3}/.github/workflows/ci.yml +0 -0
  61. {execweave-0.8.2 → execweave-0.8.3}/.github/workflows/cleanup-workflow-history.yml +0 -0
  62. {execweave-0.8.2 → execweave-0.8.3}/.github/workflows/i18n.yml +0 -0
  63. {execweave-0.8.2 → execweave-0.8.3}/.github/workflows/package-benchmark.yml +0 -0
  64. {execweave-0.8.2 → execweave-0.8.3}/.github/workflows/package-smoke.yml +0 -0
  65. {execweave-0.8.2 → execweave-0.8.3}/.github/workflows/publish.yml +0 -0
  66. {execweave-0.8.2 → execweave-0.8.3}/.github/workflows/scalability.yml +0 -0
  67. {execweave-0.8.2 → execweave-0.8.3}/.github/workflows/viewer-agent-isolation.yml +0 -0
  68. {execweave-0.8.2 → execweave-0.8.3}/.github/workflows/wheel-smoke.yml +0 -0
  69. {execweave-0.8.2 → execweave-0.8.3}/.github/workflows/windows-launcher.yml +0 -0
  70. {execweave-0.8.2 → execweave-0.8.3}/.gitignore +0 -0
  71. {execweave-0.8.2 → execweave-0.8.3}/LICENSE +0 -0
  72. {execweave-0.8.2 → execweave-0.8.3}/RELEASE-PLAN-0.8.0.md +0 -0
  73. {execweave-0.8.2 → execweave-0.8.3}/benchmarks/phase1_overhead.py +0 -0
  74. {execweave-0.8.2 → execweave-0.8.3}/docs/antigravity-hooks.md +0 -0
  75. {execweave-0.8.2 → execweave-0.8.3}/docs/assets/codex.gif +0 -0
  76. {execweave-0.8.2 → execweave-0.8.3}/docs/benchmarks/README.md +0 -0
  77. {execweave-0.8.2 → execweave-0.8.3}/docs/benchmarks/v0.6.0-github-actions.json +0 -0
  78. {execweave-0.8.2 → execweave-0.8.3}/docs/benchmarks/v0.6.0-github-actions.svg +0 -0
  79. {execweave-0.8.2 → execweave-0.8.3}/docs/claude-code-hooks.de.md +0 -0
  80. {execweave-0.8.2 → execweave-0.8.3}/docs/claude-code-hooks.fr.md +0 -0
  81. {execweave-0.8.2 → execweave-0.8.3}/docs/claude-code-hooks.ja.md +0 -0
  82. {execweave-0.8.2 → execweave-0.8.3}/docs/claude-code-hooks.ko.md +0 -0
  83. {execweave-0.8.2 → execweave-0.8.3}/docs/claude-code-hooks.md +0 -0
  84. {execweave-0.8.2 → execweave-0.8.3}/docs/claude-code-hooks.ru.md +0 -0
  85. {execweave-0.8.2 → execweave-0.8.3}/docs/claude-code-hooks.zh-CN.md +0 -0
  86. {execweave-0.8.2 → execweave-0.8.3}/docs/claude-code-hooks.zh-TW.md +0 -0
  87. {execweave-0.8.2 → execweave-0.8.3}/docs/codex-hooks.de.md +0 -0
  88. {execweave-0.8.2 → execweave-0.8.3}/docs/codex-hooks.fr.md +0 -0
  89. {execweave-0.8.2 → execweave-0.8.3}/docs/codex-hooks.ja.md +0 -0
  90. {execweave-0.8.2 → execweave-0.8.3}/docs/codex-hooks.ko.md +0 -0
  91. {execweave-0.8.2 → execweave-0.8.3}/docs/codex-hooks.md +0 -0
  92. {execweave-0.8.2 → execweave-0.8.3}/docs/codex-hooks.ru.md +0 -0
  93. {execweave-0.8.2 → execweave-0.8.3}/docs/codex-hooks.zh-CN.md +0 -0
  94. {execweave-0.8.2 → execweave-0.8.3}/docs/codex-hooks.zh-TW.md +0 -0
  95. {execweave-0.8.2 → execweave-0.8.3}/docs/cursor-hooks.de.md +0 -0
  96. {execweave-0.8.2 → execweave-0.8.3}/docs/cursor-hooks.fr.md +0 -0
  97. {execweave-0.8.2 → execweave-0.8.3}/docs/cursor-hooks.ja.md +0 -0
  98. {execweave-0.8.2 → execweave-0.8.3}/docs/cursor-hooks.ko.md +0 -0
  99. {execweave-0.8.2 → execweave-0.8.3}/docs/cursor-hooks.md +0 -0
  100. {execweave-0.8.2 → execweave-0.8.3}/docs/cursor-hooks.ru.md +0 -0
  101. {execweave-0.8.2 → execweave-0.8.3}/docs/cursor-hooks.zh-CN.md +0 -0
  102. {execweave-0.8.2 → execweave-0.8.3}/docs/cursor-hooks.zh-TW.md +0 -0
  103. {execweave-0.8.2 → execweave-0.8.3}/docs/evidence-grades.de.md +0 -0
  104. {execweave-0.8.2 → execweave-0.8.3}/docs/evidence-grades.fr.md +0 -0
  105. {execweave-0.8.2 → execweave-0.8.3}/docs/evidence-grades.ja.md +0 -0
  106. {execweave-0.8.2 → execweave-0.8.3}/docs/evidence-grades.ko.md +0 -0
  107. {execweave-0.8.2 → execweave-0.8.3}/docs/evidence-grades.md +0 -0
  108. {execweave-0.8.2 → execweave-0.8.3}/docs/evidence-grades.ru.md +0 -0
  109. {execweave-0.8.2 → execweave-0.8.3}/docs/evidence-grades.zh-CN.md +0 -0
  110. {execweave-0.8.2 → execweave-0.8.3}/docs/evidence-grades.zh-TW.md +0 -0
  111. {execweave-0.8.2 → execweave-0.8.3}/docs/gemini-hooks.de.md +0 -0
  112. {execweave-0.8.2 → execweave-0.8.3}/docs/gemini-hooks.fr.md +0 -0
  113. {execweave-0.8.2 → execweave-0.8.3}/docs/gemini-hooks.ja.md +0 -0
  114. {execweave-0.8.2 → execweave-0.8.3}/docs/gemini-hooks.ko.md +0 -0
  115. {execweave-0.8.2 → execweave-0.8.3}/docs/gemini-hooks.md +0 -0
  116. {execweave-0.8.2 → execweave-0.8.3}/docs/gemini-hooks.ru.md +0 -0
  117. {execweave-0.8.2 → execweave-0.8.3}/docs/gemini-hooks.zh-CN.md +0 -0
  118. {execweave-0.8.2 → execweave-0.8.3}/docs/gemini-hooks.zh-TW.md +0 -0
  119. {execweave-0.8.2 → execweave-0.8.3}/docs/inference-gateway.de.md +0 -0
  120. {execweave-0.8.2 → execweave-0.8.3}/docs/inference-gateway.fr.md +0 -0
  121. {execweave-0.8.2 → execweave-0.8.3}/docs/inference-gateway.ja.md +0 -0
  122. {execweave-0.8.2 → execweave-0.8.3}/docs/inference-gateway.ko.md +0 -0
  123. {execweave-0.8.2 → execweave-0.8.3}/docs/inference-gateway.md +0 -0
  124. {execweave-0.8.2 → execweave-0.8.3}/docs/inference-gateway.ru.md +0 -0
  125. {execweave-0.8.2 → execweave-0.8.3}/docs/inference-gateway.zh-CN.md +0 -0
  126. {execweave-0.8.2 → execweave-0.8.3}/docs/inference-gateway.zh-TW.md +0 -0
  127. {execweave-0.8.2 → execweave-0.8.3}/docs/internal/provider-capability-matrix.md +0 -0
  128. {execweave-0.8.2 → execweave-0.8.3}/docs/live-graph.de.md +0 -0
  129. {execweave-0.8.2 → execweave-0.8.3}/docs/live-graph.fr.md +0 -0
  130. {execweave-0.8.2 → execweave-0.8.3}/docs/live-graph.ja.md +0 -0
  131. {execweave-0.8.2 → execweave-0.8.3}/docs/live-graph.ko.md +0 -0
  132. {execweave-0.8.2 → execweave-0.8.3}/docs/live-graph.md +0 -0
  133. {execweave-0.8.2 → execweave-0.8.3}/docs/live-graph.ru.md +0 -0
  134. {execweave-0.8.2 → execweave-0.8.3}/docs/live-graph.zh-CN.md +0 -0
  135. {execweave-0.8.2 → execweave-0.8.3}/docs/live-graph.zh-TW.md +0 -0
  136. {execweave-0.8.2 → execweave-0.8.3}/docs/model-runtime.de.md +0 -0
  137. {execweave-0.8.2 → execweave-0.8.3}/docs/model-runtime.fr.md +0 -0
  138. {execweave-0.8.2 → execweave-0.8.3}/docs/model-runtime.ja.md +0 -0
  139. {execweave-0.8.2 → execweave-0.8.3}/docs/model-runtime.ko.md +0 -0
  140. {execweave-0.8.2 → execweave-0.8.3}/docs/model-runtime.md +0 -0
  141. {execweave-0.8.2 → execweave-0.8.3}/docs/model-runtime.ru.md +0 -0
  142. {execweave-0.8.2 → execweave-0.8.3}/docs/model-runtime.zh-CN.md +0 -0
  143. {execweave-0.8.2 → execweave-0.8.3}/docs/model-runtime.zh-TW.md +0 -0
  144. {execweave-0.8.2 → execweave-0.8.3}/docs/opencode-plugin.de.md +0 -0
  145. {execweave-0.8.2 → execweave-0.8.3}/docs/opencode-plugin.fr.md +0 -0
  146. {execweave-0.8.2 → execweave-0.8.3}/docs/opencode-plugin.ja.md +0 -0
  147. {execweave-0.8.2 → execweave-0.8.3}/docs/opencode-plugin.ko.md +0 -0
  148. {execweave-0.8.2 → execweave-0.8.3}/docs/opencode-plugin.md +0 -0
  149. {execweave-0.8.2 → execweave-0.8.3}/docs/opencode-plugin.ru.md +0 -0
  150. {execweave-0.8.2 → execweave-0.8.3}/docs/opencode-plugin.zh-CN.md +0 -0
  151. {execweave-0.8.2 → execweave-0.8.3}/docs/opencode-plugin.zh-TW.md +0 -0
  152. {execweave-0.8.2 → execweave-0.8.3}/docs/phase-1-runtime-collection.de.md +0 -0
  153. {execweave-0.8.2 → execweave-0.8.3}/docs/phase-1-runtime-collection.fr.md +0 -0
  154. {execweave-0.8.2 → execweave-0.8.3}/docs/phase-1-runtime-collection.ja.md +0 -0
  155. {execweave-0.8.2 → execweave-0.8.3}/docs/phase-1-runtime-collection.ko.md +0 -0
  156. {execweave-0.8.2 → execweave-0.8.3}/docs/phase-1-runtime-collection.md +0 -0
  157. {execweave-0.8.2 → execweave-0.8.3}/docs/phase-1-runtime-collection.ru.md +0 -0
  158. {execweave-0.8.2 → execweave-0.8.3}/docs/phase-1-runtime-collection.zh-CN.md +0 -0
  159. {execweave-0.8.2 → execweave-0.8.3}/docs/phase-1-runtime-collection.zh-TW.md +0 -0
  160. {execweave-0.8.2 → execweave-0.8.3}/docs/phase-2-execution-graph.de.md +0 -0
  161. {execweave-0.8.2 → execweave-0.8.3}/docs/phase-2-execution-graph.fr.md +0 -0
  162. {execweave-0.8.2 → execweave-0.8.3}/docs/phase-2-execution-graph.ja.md +0 -0
  163. {execweave-0.8.2 → execweave-0.8.3}/docs/phase-2-execution-graph.ko.md +0 -0
  164. {execweave-0.8.2 → execweave-0.8.3}/docs/phase-2-execution-graph.md +0 -0
  165. {execweave-0.8.2 → execweave-0.8.3}/docs/phase-2-execution-graph.ru.md +0 -0
  166. {execweave-0.8.2 → execweave-0.8.3}/docs/phase-2-execution-graph.zh-CN.md +0 -0
  167. {execweave-0.8.2 → execweave-0.8.3}/docs/phase-2-execution-graph.zh-TW.md +0 -0
  168. {execweave-0.8.2 → execweave-0.8.3}/docs/rule-packs.de.md +0 -0
  169. {execweave-0.8.2 → execweave-0.8.3}/docs/rule-packs.fr.md +0 -0
  170. {execweave-0.8.2 → execweave-0.8.3}/docs/rule-packs.ja.md +0 -0
  171. {execweave-0.8.2 → execweave-0.8.3}/docs/rule-packs.ko.md +0 -0
  172. {execweave-0.8.2 → execweave-0.8.3}/docs/rule-packs.md +0 -0
  173. {execweave-0.8.2 → execweave-0.8.3}/docs/rule-packs.ru.md +0 -0
  174. {execweave-0.8.2 → execweave-0.8.3}/docs/rule-packs.zh-CN.md +0 -0
  175. {execweave-0.8.2 → execweave-0.8.3}/docs/rule-packs.zh-TW.md +0 -0
  176. {execweave-0.8.2 → execweave-0.8.3}/docs/run-integrity.de.md +0 -0
  177. {execweave-0.8.2 → execweave-0.8.3}/docs/run-integrity.fr.md +0 -0
  178. {execweave-0.8.2 → execweave-0.8.3}/docs/run-integrity.ja.md +0 -0
  179. {execweave-0.8.2 → execweave-0.8.3}/docs/run-integrity.ko.md +0 -0
  180. {execweave-0.8.2 → execweave-0.8.3}/docs/run-integrity.md +0 -0
  181. {execweave-0.8.2 → execweave-0.8.3}/docs/run-integrity.ru.md +0 -0
  182. {execweave-0.8.2 → execweave-0.8.3}/docs/run-integrity.zh-CN.md +0 -0
  183. {execweave-0.8.2 → execweave-0.8.3}/docs/run-integrity.zh-TW.md +0 -0
  184. {execweave-0.8.2 → execweave-0.8.3}/docs/runtime-threat-model.de.md +0 -0
  185. {execweave-0.8.2 → execweave-0.8.3}/docs/runtime-threat-model.fr.md +0 -0
  186. {execweave-0.8.2 → execweave-0.8.3}/docs/runtime-threat-model.ja.md +0 -0
  187. {execweave-0.8.2 → execweave-0.8.3}/docs/runtime-threat-model.ko.md +0 -0
  188. {execweave-0.8.2 → execweave-0.8.3}/docs/runtime-threat-model.md +0 -0
  189. {execweave-0.8.2 → execweave-0.8.3}/docs/runtime-threat-model.ru.md +0 -0
  190. {execweave-0.8.2 → execweave-0.8.3}/docs/runtime-threat-model.zh-CN.md +0 -0
  191. {execweave-0.8.2 → execweave-0.8.3}/docs/runtime-threat-model.zh-TW.md +0 -0
  192. {execweave-0.8.2 → execweave-0.8.3}/docs/security-analysis.de.md +0 -0
  193. {execweave-0.8.2 → execweave-0.8.3}/docs/security-analysis.fr.md +0 -0
  194. {execweave-0.8.2 → execweave-0.8.3}/docs/security-analysis.ja.md +0 -0
  195. {execweave-0.8.2 → execweave-0.8.3}/docs/security-analysis.ko.md +0 -0
  196. {execweave-0.8.2 → execweave-0.8.3}/docs/security-analysis.md +0 -0
  197. {execweave-0.8.2 → execweave-0.8.3}/docs/security-analysis.ru.md +0 -0
  198. {execweave-0.8.2 → execweave-0.8.3}/docs/security-analysis.zh-CN.md +0 -0
  199. {execweave-0.8.2 → execweave-0.8.3}/docs/security-analysis.zh-TW.md +0 -0
  200. {execweave-0.8.2 → execweave-0.8.3}/docs/semantic-telemetry.de.md +0 -0
  201. {execweave-0.8.2 → execweave-0.8.3}/docs/semantic-telemetry.fr.md +0 -0
  202. {execweave-0.8.2 → execweave-0.8.3}/docs/semantic-telemetry.ja.md +0 -0
  203. {execweave-0.8.2 → execweave-0.8.3}/docs/semantic-telemetry.ko.md +0 -0
  204. {execweave-0.8.2 → execweave-0.8.3}/docs/semantic-telemetry.md +0 -0
  205. {execweave-0.8.2 → execweave-0.8.3}/docs/semantic-telemetry.ru.md +0 -0
  206. {execweave-0.8.2 → execweave-0.8.3}/docs/semantic-telemetry.zh-CN.md +0 -0
  207. {execweave-0.8.2 → execweave-0.8.3}/docs/semantic-telemetry.zh-TW.md +0 -0
  208. {execweave-0.8.2 → execweave-0.8.3}/docs/v0.6.5-hardening-decisions.md +0 -0
  209. {execweave-0.8.2 → execweave-0.8.3}/scripts/audit_i18n_parity.py +0 -0
  210. {execweave-0.8.2 → execweave-0.8.3}/scripts/check_claude_hook.py +0 -0
  211. {execweave-0.8.2 → execweave-0.8.3}/scripts/check_claude_record_graph.py +0 -0
  212. {execweave-0.8.2 → execweave-0.8.3}/scripts/check_codex_hook.py +0 -0
  213. {execweave-0.8.2 → execweave-0.8.3}/scripts/check_conversation_records.py +0 -0
  214. {execweave-0.8.2 → execweave-0.8.3}/scripts/check_correlation_graph.py +0 -0
  215. {execweave-0.8.2 → execweave-0.8.3}/scripts/check_inference_gateway_cli.py +0 -0
  216. {execweave-0.8.2 → execweave-0.8.3}/scripts/check_model_runtime_cli.py +0 -0
  217. {execweave-0.8.2 → execweave-0.8.3}/scripts/check_openai_compatible_cli.py +0 -0
  218. {execweave-0.8.2 → execweave-0.8.3}/scripts/check_release_stage_integrity.py +0 -0
  219. {execweave-0.8.2 → execweave-0.8.3}/scripts/check_semantic_graph.py +0 -0
  220. {execweave-0.8.2 → execweave-0.8.3}/scripts/check_viewer_js.py +0 -0
  221. {execweave-0.8.2 → execweave-0.8.3}/scripts/check_wheel_install.py +0 -0
  222. {execweave-0.8.2 → execweave-0.8.3}/scripts/check_windows_launchers.py +0 -0
  223. {execweave-0.8.2 → execweave-0.8.3}/scripts/emit_claude_hook_smoke.py +0 -0
  224. {execweave-0.8.2 → execweave-0.8.3}/scripts/emit_codex_hook_smoke.py +0 -0
  225. {execweave-0.8.2 → execweave-0.8.3}/scripts/emit_cursor_hook_smoke.py +0 -0
  226. {execweave-0.8.2 → execweave-0.8.3}/scripts/emit_gemini_hook_smoke.py +0 -0
  227. {execweave-0.8.2 → execweave-0.8.3}/scripts/emit_opencode_plugin_smoke.py +0 -0
  228. {execweave-0.8.2 → execweave-0.8.3}/scripts/make_semantic_smoke.py +0 -0
  229. {execweave-0.8.2 → execweave-0.8.3}/scripts/probe_provider_capability.py +0 -0
  230. {execweave-0.8.2 → execweave-0.8.3}/scripts/sync_i18n_nav.py +0 -0
  231. {execweave-0.8.2 → execweave-0.8.3}/src/execweave/__main__.py +0 -0
  232. {execweave-0.8.2 → execweave-0.8.3}/src/execweave/_conversation_records_core.py +0 -0
  233. {execweave-0.8.2 → execweave-0.8.3}/src/execweave/agent_bootstrap.py +0 -0
  234. {execweave-0.8.2 → execweave-0.8.3}/src/execweave/agent_topology.py +0 -0
  235. {execweave-0.8.2 → execweave-0.8.3}/src/execweave/agent_trace.py +0 -0
  236. {execweave-0.8.2 → execweave-0.8.3}/src/execweave/analysis.py +0 -0
  237. {execweave-0.8.2 → execweave-0.8.3}/src/execweave/anthropic_cli.py +0 -0
  238. {execweave-0.8.2 → execweave-0.8.3}/src/execweave/antigravity_adapter_base.py +0 -0
  239. {execweave-0.8.2 → execweave-0.8.3}/src/execweave/antigravity_full_fidelity.py +0 -0
  240. {execweave-0.8.2 → execweave-0.8.3}/src/execweave/antigravity_full_fidelity_base.py +0 -0
  241. {execweave-0.8.2 → execweave-0.8.3}/src/execweave/antigravity_full_fidelity_collaboration_base.py +0 -0
  242. {execweave-0.8.2 → execweave-0.8.3}/src/execweave/antigravity_hook_cli.py +0 -0
  243. {execweave-0.8.2 → execweave-0.8.3}/src/execweave/antigravity_record.py +0 -0
  244. {execweave-0.8.2 → execweave-0.8.3}/src/execweave/antigravity_subagent_linkage.py +0 -0
  245. {execweave-0.8.2 → execweave-0.8.3}/src/execweave/antigravity_trace_capability.py +0 -0
  246. {execweave-0.8.2 → execweave-0.8.3}/src/execweave/auto_specialized.py +0 -0
  247. {execweave-0.8.2 → execweave-0.8.3}/src/execweave/backends.py +0 -0
  248. {execweave-0.8.2 → execweave-0.8.3}/src/execweave/benchmark.py +0 -0
  249. {execweave-0.8.2 → execweave-0.8.3}/src/execweave/claude_adapter.py +0 -0
  250. {execweave-0.8.2 → execweave-0.8.3}/src/execweave/claude_delegation.py +0 -0
  251. {execweave-0.8.2 → execweave-0.8.3}/src/execweave/claude_full_fidelity.py +0 -0
  252. {execweave-0.8.2 → execweave-0.8.3}/src/execweave/claude_hook_cli.py +0 -0
  253. {execweave-0.8.2 → execweave-0.8.3}/src/execweave/claude_hook_contract.py +0 -0
  254. {execweave-0.8.2 → execweave-0.8.3}/src/execweave/claude_model_observer.py +0 -0
  255. {execweave-0.8.2 → execweave-0.8.3}/src/execweave/claude_record.py +0 -0
  256. {execweave-0.8.2 → execweave-0.8.3}/src/execweave/cli.py +0 -0
  257. {execweave-0.8.2 → execweave-0.8.3}/src/execweave/codex_adapter.py +0 -0
  258. {execweave-0.8.2 → execweave-0.8.3}/src/execweave/codex_conversation.py +0 -0
  259. {execweave-0.8.2 → execweave-0.8.3}/src/execweave/codex_full_fidelity.py +0 -0
  260. {execweave-0.8.2 → execweave-0.8.3}/src/execweave/codex_hook_cli.py +0 -0
  261. {execweave-0.8.2 → execweave-0.8.3}/src/execweave/codex_hook_lifecycle.py +0 -0
  262. {execweave-0.8.2 → execweave-0.8.3}/src/execweave/codex_message_diagnostics.py +0 -0
  263. {execweave-0.8.2 → execweave-0.8.3}/src/execweave/codex_message_transport_diagnostics.py +0 -0
  264. {execweave-0.8.2 → execweave-0.8.3}/src/execweave/codex_record.py +0 -0
  265. {execweave-0.8.2 → execweave-0.8.3}/src/execweave/codex_rollout_structures.py +0 -0
  266. {execweave-0.8.2 → execweave-0.8.3}/src/execweave/codex_rollout_trace.py +0 -0
  267. {execweave-0.8.2 → execweave-0.8.3}/src/execweave/codex_rollout_trace_base.py +0 -0
  268. {execweave-0.8.2 → execweave-0.8.3}/src/execweave/collector.py +0 -0
  269. {execweave-0.8.2 → execweave-0.8.3}/src/execweave/command.py +0 -0
  270. {execweave-0.8.2 → execweave-0.8.3}/src/execweave/content_evidence.py +0 -0
  271. {execweave-0.8.2 → execweave-0.8.3}/src/execweave/content_store.py +0 -0
  272. {execweave-0.8.2 → execweave-0.8.3}/src/execweave/conversation_message_identity.py +0 -0
  273. {execweave-0.8.2 → execweave-0.8.3}/src/execweave/conversation_preview.py +0 -0
  274. {execweave-0.8.2 → execweave-0.8.3}/src/execweave/correlation.py +0 -0
  275. {execweave-0.8.2 → execweave-0.8.3}/src/execweave/cursor_adapter.py +0 -0
  276. {execweave-0.8.2 → execweave-0.8.3}/src/execweave/cursor_delegation.py +0 -0
  277. {execweave-0.8.2 → execweave-0.8.3}/src/execweave/cursor_delegation_base.py +0 -0
  278. {execweave-0.8.2 → execweave-0.8.3}/src/execweave/cursor_full_fidelity.py +0 -0
  279. {execweave-0.8.2 → execweave-0.8.3}/src/execweave/cursor_hook_cli.py +0 -0
  280. {execweave-0.8.2 → execweave-0.8.3}/src/execweave/cursor_hook_contract.py +0 -0
  281. {execweave-0.8.2 → execweave-0.8.3}/src/execweave/cursor_record.py +0 -0
  282. {execweave-0.8.2 → execweave-0.8.3}/src/execweave/entry.py +0 -0
  283. {execweave-0.8.2 → execweave-0.8.3}/src/execweave/evidence_availability.py +0 -0
  284. {execweave-0.8.2 → execweave-0.8.3}/src/execweave/evidence_grade.py +0 -0
  285. {execweave-0.8.2 → execweave-0.8.3}/src/execweave/fidelity.py +0 -0
  286. {execweave-0.8.2 → execweave-0.8.3}/src/execweave/filesystem.py +0 -0
  287. {execweave-0.8.2 → execweave-0.8.3}/src/execweave/focus.py +0 -0
  288. {execweave-0.8.2 → execweave-0.8.3}/src/execweave/gemini_adapter.py +0 -0
  289. {execweave-0.8.2 → execweave-0.8.3}/src/execweave/gemini_full_fidelity.py +0 -0
  290. {execweave-0.8.2 → execweave-0.8.3}/src/execweave/gemini_hook_cli.py +0 -0
  291. {execweave-0.8.2 → execweave-0.8.3}/src/execweave/gemini_hook_contract.py +0 -0
  292. {execweave-0.8.2 → execweave-0.8.3}/src/execweave/gemini_record.py +0 -0
  293. {execweave-0.8.2 → execweave-0.8.3}/src/execweave/graph.py +0 -0
  294. {execweave-0.8.2 → execweave-0.8.3}/src/execweave/graph_ops.py +0 -0
  295. {execweave-0.8.2 → execweave-0.8.3}/src/execweave/http_proxy.py +0 -0
  296. {execweave-0.8.2 → execweave-0.8.3}/src/execweave/http_proxy_cli.py +0 -0
  297. {execweave-0.8.2 → execweave-0.8.3}/src/execweave/inference_gateway_cli.py +0 -0
  298. {execweave-0.8.2 → execweave-0.8.3}/src/execweave/inference_gateway_full_fidelity.py +0 -0
  299. {execweave-0.8.2 → execweave-0.8.3}/src/execweave/inference_identity.py +0 -0
  300. {execweave-0.8.2 → execweave-0.8.3}/src/execweave/inference_identity_cli.py +0 -0
  301. {execweave-0.8.2 → execweave-0.8.3}/src/execweave/integrity.py +0 -0
  302. {execweave-0.8.2 → execweave-0.8.3}/src/execweave/integrity_cli.py +0 -0
  303. {execweave-0.8.2 → execweave-0.8.3}/src/execweave/litellm_callback.py +0 -0
  304. {execweave-0.8.2 → execweave-0.8.3}/src/execweave/litellm_callback_cli.py +0 -0
  305. {execweave-0.8.2 → execweave-0.8.3}/src/execweave/live.py +0 -0
  306. {execweave-0.8.2 → execweave-0.8.3}/src/execweave/live_core.py +0 -0
  307. {execweave-0.8.2 → execweave-0.8.3}/src/execweave/live_view_extra_style.py +0 -0
  308. {execweave-0.8.2 → execweave-0.8.3}/src/execweave/live_view_script_a.py +0 -0
  309. {execweave-0.8.2 → execweave-0.8.3}/src/execweave/live_view_script_b.py +0 -0
  310. {execweave-0.8.2 → execweave-0.8.3}/src/execweave/live_view_script_d.py +0 -0
  311. {execweave-0.8.2 → execweave-0.8.3}/src/execweave/live_view_style.py +0 -0
  312. {execweave-0.8.2 → execweave-0.8.3}/src/execweave/model_runtime_cli.py +0 -0
  313. {execweave-0.8.2 → execweave-0.8.3}/src/execweave/model_runtime_full_fidelity.py +0 -0
  314. {execweave-0.8.2 → execweave-0.8.3}/src/execweave/openai_compatible_cli.py +0 -0
  315. {execweave-0.8.2 → execweave-0.8.3}/src/execweave/opencode_event_contract.py +0 -0
  316. {execweave-0.8.2 → execweave-0.8.3}/src/execweave/opencode_hook_cli.py +0 -0
  317. {execweave-0.8.2 → execweave-0.8.3}/src/execweave/opencode_plugin_cli.py +0 -0
  318. {execweave-0.8.2 → execweave-0.8.3}/src/execweave/opencode_record.py +0 -0
  319. {execweave-0.8.2 → execweave-0.8.3}/src/execweave/opencode_task_linkage.py +0 -0
  320. {execweave-0.8.2 → execweave-0.8.3}/src/execweave/overhead_benchmark.py +0 -0
  321. {execweave-0.8.2 → execweave-0.8.3}/src/execweave/provider_capability.py +0 -0
  322. {execweave-0.8.2 → execweave-0.8.3}/src/execweave/provider_lifecycle.py +0 -0
  323. {execweave-0.8.2 → execweave-0.8.3}/src/execweave/provider_record.py +0 -0
  324. {execweave-0.8.2 → execweave-0.8.3}/src/execweave/rule_pack.py +0 -0
  325. {execweave-0.8.2 → execweave-0.8.3}/src/execweave/rule_pack_cli.py +0 -0
  326. {execweave-0.8.2 → execweave-0.8.3}/src/execweave/scalability_benchmark.py +0 -0
  327. {execweave-0.8.2 → execweave-0.8.3}/src/execweave/schema.py +0 -0
  328. {execweave-0.8.2 → execweave-0.8.3}/src/execweave/scope.py +0 -0
  329. {execweave-0.8.2 → execweave-0.8.3}/src/execweave/semantic.py +0 -0
  330. {execweave-0.8.2 → execweave-0.8.3}/src/execweave/sink.py +0 -0
  331. {execweave-0.8.2 → execweave-0.8.3}/src/execweave/strace_backend.py +0 -0
  332. {execweave-0.8.2 → execweave-0.8.3}/src/execweave/stream_assembly.py +0 -0
  333. {execweave-0.8.2 → execweave-0.8.3}/src/execweave/theme.py +0 -0
  334. {execweave-0.8.2 → execweave-0.8.3}/src/execweave/top.py +0 -0
  335. {execweave-0.8.2 → execweave-0.8.3}/src/execweave/top_cli.py +0 -0
  336. {execweave-0.8.2 → execweave-0.8.3}/src/execweave/validate.py +0 -0
  337. {execweave-0.8.2 → execweave-0.8.3}/src/execweave/view_cli.py +0 -0
  338. {execweave-0.8.2 → execweave-0.8.3}/src/execweave/viewer.py +0 -0
  339. {execweave-0.8.2 → execweave-0.8.3}/src/execweave/viewer_content_inspector.py +0 -0
  340. {execweave-0.8.2 → execweave-0.8.3}/src/execweave/viewer_dashboard_clean.py +0 -0
  341. {execweave-0.8.2 → execweave-0.8.3}/src/execweave/viewer_dashboard_focus.py +0 -0
  342. {execweave-0.8.2 → execweave-0.8.3}/src/execweave/viewer_live_layout.py +0 -0
  343. {execweave-0.8.2 → execweave-0.8.3}/src/execweave/viewer_projection.py +0 -0
  344. {execweave-0.8.2 → execweave-0.8.3}/src/execweave/viewer_projection_base.py +0 -0
  345. {execweave-0.8.2 → execweave-0.8.3}/src/execweave/workflow.py +0 -0
  346. {execweave-0.8.2 → execweave-0.8.3}/tests/dashboard_readability_fixture.py +0 -0
  347. {execweave-0.8.2 → execweave-0.8.3}/tests/fixtures/codex_multi_agent/PROVENANCE.md +0 -0
  348. {execweave-0.8.2 → execweave-0.8.3}/tests/fixtures/codex_multi_agent/hook-payloads.json +0 -0
  349. {execweave-0.8.2 → execweave-0.8.3}/tests/fixtures/codex_multi_agent/rollout-main.jsonl +0 -0
  350. {execweave-0.8.2 → execweave-0.8.3}/tests/fixtures/hooks/README.md +0 -0
  351. {execweave-0.8.2 → execweave-0.8.3}/tests/fixtures/hooks/claude.json +0 -0
  352. {execweave-0.8.2 → execweave-0.8.3}/tests/fixtures/hooks/codex.json +0 -0
  353. {execweave-0.8.2 → execweave-0.8.3}/tests/fixtures/hooks/cursor.json +0 -0
  354. {execweave-0.8.2 → execweave-0.8.3}/tests/fixtures/hooks/gemini.json +0 -0
  355. {execweave-0.8.2 → execweave-0.8.3}/tests/fixtures/hooks/manifest.json +0 -0
  356. {execweave-0.8.2 → execweave-0.8.3}/tests/fixtures/hooks/opencode.json +0 -0
  357. {execweave-0.8.2 → execweave-0.8.3}/tests/multi_agent_run_fixture.py +0 -0
  358. {execweave-0.8.2 → execweave-0.8.3}/tests/test_agent_bootstrap.py +0 -0
  359. {execweave-0.8.2 → execweave-0.8.3}/tests/test_agent_message_viewer.py +0 -0
  360. {execweave-0.8.2 → execweave-0.8.3}/tests/test_agent_node_labels.py +0 -0
  361. {execweave-0.8.2 → execweave-0.8.3}/tests/test_agent_said_panel.py +0 -0
  362. {execweave-0.8.2 → execweave-0.8.3}/tests/test_agent_topology_evidence.py +0 -0
  363. {execweave-0.8.2 → execweave-0.8.3}/tests/test_agent_trace_lifecycle.py +0 -0
  364. {execweave-0.8.2 → execweave-0.8.3}/tests/test_agent_trace_viewer_visibility.py +0 -0
  365. {execweave-0.8.2 → execweave-0.8.3}/tests/test_analysis.py +0 -0
  366. {execweave-0.8.2 → execweave-0.8.3}/tests/test_anthropic.py +0 -0
  367. {execweave-0.8.2 → execweave-0.8.3}/tests/test_antigravity_agent_collaboration.py +0 -0
  368. {execweave-0.8.2 → execweave-0.8.3}/tests/test_antigravity_cursor_launch.py +0 -0
  369. {execweave-0.8.2 → execweave-0.8.3}/tests/test_antigravity_lifecycle.py +0 -0
  370. {execweave-0.8.2 → execweave-0.8.3}/tests/test_antigravity_linkage_projection.py +0 -0
  371. {execweave-0.8.2 → execweave-0.8.3}/tests/test_antigravity_official_contract.py +0 -0
  372. {execweave-0.8.2 → execweave-0.8.3}/tests/test_antigravity_subagent_transcript_linkage.py +0 -0
  373. {execweave-0.8.2 → execweave-0.8.3}/tests/test_antigravity_trace_capability_cli.py +0 -0
  374. {execweave-0.8.2 → execweave-0.8.3}/tests/test_auto_specialized.py +0 -0
  375. {execweave-0.8.2 → execweave-0.8.3}/tests/test_backends.py +0 -0
  376. {execweave-0.8.2 → execweave-0.8.3}/tests/test_claude_adapter.py +0 -0
  377. {execweave-0.8.2 → execweave-0.8.3}/tests/test_claude_delegation.py +0 -0
  378. {execweave-0.8.2 → execweave-0.8.3}/tests/test_claude_full_fidelity.py +0 -0
  379. {execweave-0.8.2 → execweave-0.8.3}/tests/test_claude_hook_contract.py +0 -0
  380. {execweave-0.8.2 → execweave-0.8.3}/tests/test_claude_hook_metadata.py +0 -0
  381. {execweave-0.8.2 → execweave-0.8.3}/tests/test_claude_hook_viewer.py +0 -0
  382. {execweave-0.8.2 → execweave-0.8.3}/tests/test_claude_model_observer.py +0 -0
  383. {execweave-0.8.2 → execweave-0.8.3}/tests/test_claude_record.py +0 -0
  384. {execweave-0.8.2 → execweave-0.8.3}/tests/test_codex_adapter.py +0 -0
  385. {execweave-0.8.2 → execweave-0.8.3}/tests/test_codex_archive_full_fidelity.py +0 -0
  386. {execweave-0.8.2 → execweave-0.8.3}/tests/test_codex_conversation_isolation.py +0 -0
  387. {execweave-0.8.2 → execweave-0.8.3}/tests/test_codex_full_fidelity.py +0 -0
  388. {execweave-0.8.2 → execweave-0.8.3}/tests/test_codex_hook_lifecycle.py +0 -0
  389. {execweave-0.8.2 → execweave-0.8.3}/tests/test_codex_hook_partial_capture.py +0 -0
  390. {execweave-0.8.2 → execweave-0.8.3}/tests/test_codex_message_diagnostics.py +0 -0
  391. {execweave-0.8.2 → execweave-0.8.3}/tests/test_codex_message_transport_diagnostics.py +0 -0
  392. {execweave-0.8.2 → execweave-0.8.3}/tests/test_codex_plain_routed_agent_message.py +0 -0
  393. {execweave-0.8.2 → execweave-0.8.3}/tests/test_codex_real_multi_agent_conversation.py +0 -0
  394. {execweave-0.8.2 → execweave-0.8.3}/tests/test_codex_record.py +0 -0
  395. {execweave-0.8.2 → execweave-0.8.3}/tests/test_codex_reducer_command.py +0 -0
  396. {execweave-0.8.2 → execweave-0.8.3}/tests/test_codex_rollout_structures.py +0 -0
  397. {execweave-0.8.2 → execweave-0.8.3}/tests/test_codex_rollout_trace.py +0 -0
  398. {execweave-0.8.2 → execweave-0.8.3}/tests/test_codex_routing_native_identity.py +0 -0
  399. {execweave-0.8.2 → execweave-0.8.3}/tests/test_collector.py +0 -0
  400. {execweave-0.8.2 → execweave-0.8.3}/tests/test_command.py +0 -0
  401. {execweave-0.8.2 → execweave-0.8.3}/tests/test_condense.py +0 -0
  402. {execweave-0.8.2 → execweave-0.8.3}/tests/test_conversation_access.py +0 -0
  403. {execweave-0.8.2 → execweave-0.8.3}/tests/test_conversation_agent_isolation.py +0 -0
  404. {execweave-0.8.2 → execweave-0.8.3}/tests/test_conversation_message_observation_dedupe.py +0 -0
  405. {execweave-0.8.2 → execweave-0.8.3}/tests/test_conversation_provider_parity.py +0 -0
  406. {execweave-0.8.2 → execweave-0.8.3}/tests/test_correlation.py +0 -0
  407. {execweave-0.8.2 → execweave-0.8.3}/tests/test_correlation_canonical_path.py +0 -0
  408. {execweave-0.8.2 → execweave-0.8.3}/tests/test_correlation_checker.py +0 -0
  409. {execweave-0.8.2 → execweave-0.8.3}/tests/test_correlation_process_exe.py +0 -0
  410. {execweave-0.8.2 → execweave-0.8.3}/tests/test_cross_provider_agent_trace.py +0 -0
  411. {execweave-0.8.2 → execweave-0.8.3}/tests/test_cursor_adapter.py +0 -0
  412. {execweave-0.8.2 → execweave-0.8.3}/tests/test_cursor_delegation.py +0 -0
  413. {execweave-0.8.2 → execweave-0.8.3}/tests/test_cursor_full_fidelity.py +0 -0
  414. {execweave-0.8.2 → execweave-0.8.3}/tests/test_cursor_hook_contract.py +0 -0
  415. {execweave-0.8.2 → execweave-0.8.3}/tests/test_cursor_hook_fail_open.py +0 -0
  416. {execweave-0.8.2 → execweave-0.8.3}/tests/test_cursor_record.py +0 -0
  417. {execweave-0.8.2 → execweave-0.8.3}/tests/test_cursor_task_linkage.py +0 -0
  418. {execweave-0.8.2 → execweave-0.8.3}/tests/test_dashboard_information_architecture.py +0 -0
  419. {execweave-0.8.2 → execweave-0.8.3}/tests/test_dashboard_readability_e2e.py +0 -0
  420. {execweave-0.8.2 → execweave-0.8.3}/tests/test_dashboard_round_fold_state_e2e.py +0 -0
  421. {execweave-0.8.2 → execweave-0.8.3}/tests/test_dashboard_simplification.py +0 -0
  422. {execweave-0.8.2 → execweave-0.8.3}/tests/test_dashboard_ux_and_hook_projection.py +0 -0
  423. {execweave-0.8.2 → execweave-0.8.3}/tests/test_delegation_viewer.py +0 -0
  424. {execweave-0.8.2 → execweave-0.8.3}/tests/test_evidence_grade.py +0 -0
  425. {execweave-0.8.2 → execweave-0.8.3}/tests/test_execution_viewer.py +0 -0
  426. {execweave-0.8.2 → execweave-0.8.3}/tests/test_fidelity.py +0 -0
  427. {execweave-0.8.2 → execweave-0.8.3}/tests/test_filesystem_resilience.py +0 -0
  428. {execweave-0.8.2 → execweave-0.8.3}/tests/test_focus.py +0 -0
  429. {execweave-0.8.2 → execweave-0.8.3}/tests/test_fold_budget_setting.py +0 -0
  430. {execweave-0.8.2 → execweave-0.8.3}/tests/test_full_fidelity.py +0 -0
  431. {execweave-0.8.2 → execweave-0.8.3}/tests/test_gemini_adapter.py +0 -0
  432. {execweave-0.8.2 → execweave-0.8.3}/tests/test_gemini_full_fidelity.py +0 -0
  433. {execweave-0.8.2 → execweave-0.8.3}/tests/test_gemini_hook_contract.py +0 -0
  434. {execweave-0.8.2 → execweave-0.8.3}/tests/test_gemini_lifecycle.py +0 -0
  435. {execweave-0.8.2 → execweave-0.8.3}/tests/test_gemini_record.py +0 -0
  436. {execweave-0.8.2 → execweave-0.8.3}/tests/test_graph.py +0 -0
  437. {execweave-0.8.2 → execweave-0.8.3}/tests/test_graph_ops.py +0 -0
  438. {execweave-0.8.2 → execweave-0.8.3}/tests/test_hook_fixture_corpus.py +0 -0
  439. {execweave-0.8.2 → execweave-0.8.3}/tests/test_http_proxy.py +0 -0
  440. {execweave-0.8.2 → execweave-0.8.3}/tests/test_inference_gateway.py +0 -0
  441. {execweave-0.8.2 → execweave-0.8.3}/tests/test_inference_gateway_full_fidelity.py +0 -0
  442. {execweave-0.8.2 → execweave-0.8.3}/tests/test_inference_identity.py +0 -0
  443. {execweave-0.8.2 → execweave-0.8.3}/tests/test_integrity.py +0 -0
  444. {execweave-0.8.2 → execweave-0.8.3}/tests/test_litellm_callback.py +0 -0
  445. {execweave-0.8.2 → execweave-0.8.3}/tests/test_live.py +0 -0
  446. {execweave-0.8.2 → execweave-0.8.3}/tests/test_live_auth.py +0 -0
  447. {execweave-0.8.2 → execweave-0.8.3}/tests/test_live_dashboard.py +0 -0
  448. {execweave-0.8.2 → execweave-0.8.3}/tests/test_live_dashboard_js.py +0 -0
  449. {execweave-0.8.2 → execweave-0.8.3}/tests/test_live_delta.py +0 -0
  450. {execweave-0.8.2 → execweave-0.8.3}/tests/test_live_logs_export.py +0 -0
  451. {execweave-0.8.2 → execweave-0.8.3}/tests/test_live_theme.py +0 -0
  452. {execweave-0.8.2 → execweave-0.8.3}/tests/test_lmstudio_auto_specialized.py +0 -0
  453. {execweave-0.8.2 → execweave-0.8.3}/tests/test_local_runtime_live_capture.py +0 -0
  454. {execweave-0.8.2 → execweave-0.8.3}/tests/test_model_runtime_full_fidelity.py +0 -0
  455. {execweave-0.8.2 → execweave-0.8.3}/tests/test_openai_compatible.py +0 -0
  456. {execweave-0.8.2 → execweave-0.8.3}/tests/test_opencode_adapter.py +0 -0
  457. {execweave-0.8.2 → execweave-0.8.3}/tests/test_opencode_event_contract.py +0 -0
  458. {execweave-0.8.2 → execweave-0.8.3}/tests/test_opencode_event_lifecycle.py +0 -0
  459. {execweave-0.8.2 → execweave-0.8.3}/tests/test_opencode_full_fidelity.py +0 -0
  460. {execweave-0.8.2 → execweave-0.8.3}/tests/test_opencode_plugin.py +0 -0
  461. {execweave-0.8.2 → execweave-0.8.3}/tests/test_opencode_record.py +0 -0
  462. {execweave-0.8.2 → execweave-0.8.3}/tests/test_opencode_task_session_linkage.py +0 -0
  463. {execweave-0.8.2 → execweave-0.8.3}/tests/test_overhead_benchmark.py +0 -0
  464. {execweave-0.8.2 → execweave-0.8.3}/tests/test_per_agent_conversation_default.py +0 -0
  465. {execweave-0.8.2 → execweave-0.8.3}/tests/test_provider_capability.py +0 -0
  466. {execweave-0.8.2 → execweave-0.8.3}/tests/test_provider_conversation_evidence.py +0 -0
  467. {execweave-0.8.2 → execweave-0.8.3}/tests/test_provider_lifecycle.py +0 -0
  468. {execweave-0.8.2 → execweave-0.8.3}/tests/test_release_stage_integrity_version_guard.py +0 -0
  469. {execweave-0.8.2 → execweave-0.8.3}/tests/test_rule_pack.py +0 -0
  470. {execweave-0.8.2 → execweave-0.8.3}/tests/test_schema.py +0 -0
  471. {execweave-0.8.2 → execweave-0.8.3}/tests/test_scope.py +0 -0
  472. {execweave-0.8.2 → execweave-0.8.3}/tests/test_semantic.py +0 -0
  473. {execweave-0.8.2 → execweave-0.8.3}/tests/test_shared_injected_context_scope.py +0 -0
  474. {execweave-0.8.2 → execweave-0.8.3}/tests/test_strace_backend.py +0 -0
  475. {execweave-0.8.2 → execweave-0.8.3}/tests/test_stream_assembly.py +0 -0
  476. {execweave-0.8.2 → execweave-0.8.3}/tests/test_threat_model.py +0 -0
  477. {execweave-0.8.2 → execweave-0.8.3}/tests/test_top_detached.py +0 -0
  478. {execweave-0.8.2 → execweave-0.8.3}/tests/test_v063_features.py +0 -0
  479. {execweave-0.8.2 → execweave-0.8.3}/tests/test_v064_live_auto_integrations.py +0 -0
  480. {execweave-0.8.2 → execweave-0.8.3}/tests/test_v064_live_evidence.py +0 -0
  481. {execweave-0.8.2 → execweave-0.8.3}/tests/test_v079_review_e2e.py +0 -0
  482. {execweave-0.8.2 → execweave-0.8.3}/tests/test_v079_review_regressions.py +0 -0
  483. {execweave-0.8.2 → execweave-0.8.3}/tests/test_validate.py +0 -0
  484. {execweave-0.8.2 → execweave-0.8.3}/tests/test_version.py +0 -0
  485. {execweave-0.8.2 → execweave-0.8.3}/tests/test_viewer.py +0 -0
  486. {execweave-0.8.2 → execweave-0.8.3}/tests/test_viewer_agent_isolation_e2e.py +0 -0
  487. {execweave-0.8.2 → execweave-0.8.3}/tests/test_viewer_content_inspector.py +0 -0
  488. {execweave-0.8.2 → execweave-0.8.3}/tests/test_viewer_projection.py +0 -0
  489. {execweave-0.8.2 → execweave-0.8.3}/tests/test_workflow.py +0 -0
@@ -0,0 +1,98 @@
1
+ name: Provider Capability Stage Integrity
2
+
3
+ # No path filter. This job guards release red lines — the disabled CONNECT handler,
4
+ # the existing test set, the conversation completeness vocabulary, release metadata —
5
+ # so it must run on every pull request. A filter listing only the capability-probe
6
+ # files would arm the guard exactly when the guarded files are NOT the ones changing:
7
+ # a pull request that weakens http_proxy.py, deletes a test, or bumps the version
8
+ # while touching none of those paths would skip this job entirely.
9
+ on:
10
+ pull_request:
11
+ workflow_dispatch:
12
+ inputs:
13
+ baseline_ref:
14
+ description: Base commit or ref used to reconstruct baseline test node IDs
15
+ required: true
16
+ type: string
17
+
18
+ permissions:
19
+ contents: read
20
+
21
+ jobs:
22
+ integrity:
23
+ runs-on: ubuntu-latest
24
+ steps:
25
+ - name: Check out pull request
26
+ uses: actions/checkout@v4
27
+ with:
28
+ fetch-depth: 0
29
+
30
+ - name: Set up Python
31
+ uses: actions/setup-python@v5
32
+ with:
33
+ python-version: "3.12"
34
+ cache: pip
35
+
36
+ - name: Install
37
+ run: python -m pip install -e ".[dev]"
38
+
39
+ - name: Validate stage integrity
40
+ shell: bash
41
+ env:
42
+ BASELINE_REF: "${{ github.event.pull_request.base.sha || inputs.baseline_ref }}"
43
+ HEAD_REF: "${{ github.head_ref }}"
44
+ run: |
45
+ args=(--baseline-ref "$BASELINE_REF")
46
+ # A release/* branch may advance the release metadata assertions, but the
47
+ # branch name alone is not the grant: the whole 0.8.x series of feature work
48
+ # lives under release/*, and an allowance those branches never use is an open
49
+ # allowance, which the checker refuses. The file has to actually change.
50
+ release_metadata_changed=""
51
+ if git diff --name-only "$BASELINE_REF...HEAD" \
52
+ | grep -qx 'tests/test_v069_dashboard_release.py'; then
53
+ release_metadata_changed=yes
54
+ fi
55
+ if [[ "$HEAD_REF" == release/* && -n "$release_metadata_changed" ]]; then
56
+ args+=(--allow-test-change "tests/test_v069_dashboard_release.py=release metadata assertions may advance only on a release/* pull request; the historical test name remains stable because the node-ID floor refuses renames")
57
+ fi
58
+ # PR #25 changes one historical source assertion only because tool traffic is
59
+ # appended inside the same render pass. Grant that exact exception only to the
60
+ # exact PR #25 branch and only while the file actually differs from the base.
61
+ # Once PR #25 lands, future branches cannot inherit this allowance merely by
62
+ # changing the same test file.
63
+ conversation_focus_changed=""
64
+ if git diff --name-only "$BASELINE_REF...HEAD" \
65
+ | grep -qx 'tests/test_conversation_agent_focus.py'; then
66
+ conversation_focus_changed=yes
67
+ fi
68
+ if [[ "$HEAD_REF" == "release/0.8.3-graph-ergonomics" && -n "$conversation_focus_changed" ]]; then
69
+ args+=(--allow-test-change "tests/test_conversation_agent_focus.py=PR #25 only: surfacing tool traffic appends one more card inside the same render pass, so the source assertion that pinned the final line names the new line. The test ID and subject are unchanged")
70
+ fi
71
+ # AUD-001 repairs a historical assertion that deliberately characterized the
72
+ # cross-session root merge as a known limitation. Keep the node ID stable, and
73
+ # grant the assertion change only on the dedicated R1 branch or the exact PR #25
74
+ # integration branch that may absorb it. The file must actually differ, so this
75
+ # cannot become a standing exemption for unrelated work or future release lines.
76
+ conversation_identity_changed=""
77
+ if git diff --name-only "$BASELINE_REF...HEAD" \
78
+ | grep -qx 'tests/test_conversation_identity_merge.py'; then
79
+ conversation_identity_changed=yes
80
+ fi
81
+ if [[ -n "$conversation_identity_changed" ]] \
82
+ && { [[ "$HEAD_REF" == "fix/0.8.3-conversation-identity" ]] \
83
+ || [[ "$HEAD_REF" == "release/0.8.3-graph-ergonomics" ]]; }; then
84
+ args+=(--allow-test-change "tests/test_conversation_identity_merge.py=AUD-001 only: the historical root-collision assertion is no longer correct after derived presentation thread ids stop acting as cross-execution identity; the original test node ID is retained and the assertion now requires isolation")
85
+ fi
86
+ # R2 changes the historical llama.cpp request-ID assertion because native
87
+ # request IDs are no longer globally authoritative: the endpoint scope is now
88
+ # part of the graph request identity. Grant only this branch/file combination.
89
+ model_runtime_identity_changed=""
90
+ if git diff --name-only "$BASELINE_REF...HEAD" \
91
+ | grep -qx 'tests/test_model_runtime.py'; then
92
+ model_runtime_identity_changed=yes
93
+ fi
94
+ if [[ "$HEAD_REF" == "fix/0.8.3-inference-endpoint-identity" \
95
+ && -n "$model_runtime_identity_changed" ]]; then
96
+ args+=(--allow-test-change "tests/test_model_runtime.py=AUD-002 only: the historical llama.cpp request ID assertion now includes the sanitized endpoint scope; the test node ID and runtime privacy contract are unchanged")
97
+ fi
98
+ python scripts/check_release_stage_integrity.py "${args[@]}"
@@ -0,0 +1,337 @@
1
+ Metadata-Version: 2.5
2
+ Name: execweave
3
+ Version: 0.8.3
4
+ Summary: Turn AI-agent runtime behavior into a local interactive execution graph.
5
+ Project-URL: Homepage, https://github.com/Irish-kw/ExecWeave
6
+ Project-URL: Repository, https://github.com/Irish-kw/ExecWeave
7
+ Project-URL: Documentation, https://github.com/Irish-kw/ExecWeave#documentation
8
+ Project-URL: Issues, https://github.com/Irish-kw/ExecWeave/issues
9
+ Author: ExecWeave contributors
10
+ License: PolyForm Noncommercial License 1.0.0
11
+
12
+ This software is licensed under the PolyForm Noncommercial License 1.0.0.
13
+ The complete license terms are available at:
14
+ https://polyformproject.org/licenses/noncommercial/1.0.0
15
+
16
+ Required Notice: Copyright (c) 2026 GWW
17
+
18
+ Commercial use is not permitted under this license. Any commercial use,
19
+ including use in or for a commercial product or service, requires a separate
20
+ written commercial license from the licensor.
21
+
22
+ For the avoidance of doubt, this license change applies to versions released
23
+ under these terms. Earlier versions that were already distributed under the
24
+ MIT License remain available under the license terms that accompanied those
25
+ versions.
26
+ License-File: LICENSE
27
+ Keywords: ai-agents,execution-graph,observability,provenance,runtime,security
28
+ Classifier: Development Status :: 4 - Beta
29
+ Classifier: Environment :: Console
30
+ Classifier: Intended Audience :: Developers
31
+ Classifier: Intended Audience :: Information Technology
32
+ Classifier: License :: Other/Proprietary License
33
+ Classifier: Operating System :: OS Independent
34
+ Classifier: Programming Language :: Python :: 3
35
+ Classifier: Programming Language :: Python :: 3.10
36
+ Classifier: Programming Language :: Python :: 3.11
37
+ Classifier: Programming Language :: Python :: 3.12
38
+ Classifier: Programming Language :: Python :: 3.13
39
+ Classifier: Topic :: Software Development :: Debuggers
40
+ Classifier: Topic :: System :: Monitoring
41
+ Requires-Python: >=3.10
42
+ Requires-Dist: psutil>=5.9
43
+ Requires-Dist: watchdog>=4.0
44
+ Provides-Extra: dev
45
+ Requires-Dist: pytest>=8.0; extra == 'dev'
46
+ Requires-Dist: ruff<0.17,>=0.16; extra == 'dev'
47
+ Provides-Extra: e2e
48
+ Requires-Dist: playwright>=1.44; extra == 'e2e'
49
+ Provides-Extra: release
50
+ Requires-Dist: build>=1.2; extra == 'release'
51
+ Requires-Dist: twine>=6.0; extra == 'release'
52
+ Description-Content-Type: text/markdown
53
+
54
+ # ExecWeave
55
+
56
+ <!-- i18n-nav:start -->
57
+ <p align="center">
58
+ <strong>English</strong> |
59
+ <a href="README.zh-TW.md">繁體中文</a> |
60
+ <a href="README.zh-CN.md">简体中文</a> |
61
+ <a href="README.ja.md">日本語</a> |
62
+ <a href="README.ko.md">한국어</a> |
63
+ <a href="README.fr.md">Français</a> |
64
+ <a href="README.de.md">Deutsch</a> |
65
+ <a href="README.ru.md">Русский</a>
66
+ </p>
67
+ <!-- i18n-nav:end -->
68
+
69
+ <p align="center">
70
+ <a href="https://pypi.org/project/execweave/"><img src="https://img.shields.io/pypi/v/execweave" alt="PyPI"></a>
71
+ <a href="https://github.com/Irish-kw/ExecWeave/actions/workflows/ci.yml"><img src="https://github.com/Irish-kw/ExecWeave/actions/workflows/ci.yml/badge.svg" alt="CI"></a>
72
+ <img src="https://img.shields.io/badge/Python-3.10%2B-blue" alt="Python 3.10+">
73
+ <a href="LICENSE"><img src="https://img.shields.io/badge/license-PolyForm%20Noncommercial-blue" alt="License"></a>
74
+ </p>
75
+
76
+ **See what AI agents actually do on your machine.**
77
+
78
+ ExecWeave is a source-available, local-first observability project that turns AI-agent activity into an interactive execution graph while keeping observed evidence, provider-supplied content, and derived inference explicitly separated.
79
+
80
+ > **Event is ground truth. The graph is a materialized view.**
81
+
82
+ <p align="center">
83
+ <img src="docs/assets/codex.gif" alt="ExecWeave animated live demo" width="100%">
84
+ </p>
85
+
86
+ This README documents **v0.8.3**.
87
+
88
+ ## Why ExecWeave
89
+
90
+ - **One local inspection surface.** Live runs, completed runs, and standalone `viewer.html` use the same dashboard renderer for graph, logs, conversations, and node details.
91
+ - **Evidence-aware by design.** Direct observations stay distinguishable from identity links, conservative inference, and causal claims.
92
+ - **Provider-aware without inventing hidden behavior.** ExecWeave uses the strongest routing and identity evidence a provider actually exposes; missing evidence stays missing.
93
+ - **Useful beyond one Agent.** OS-runtime telemetry can wrap any local command, while provider adapters add richer semantics when supported.
94
+
95
+ ## Install
96
+
97
+ Install the latest published package from PyPI:
98
+
99
+ ```bash
100
+ python -m pip install -U execweave
101
+ ```
102
+
103
+ For development:
104
+
105
+ ```bash
106
+ git clone https://github.com/Irish-kw/ExecWeave.git
107
+ cd ExecWeave
108
+ python -m pip install -e ".[dev]"
109
+ ```
110
+
111
+ ## 60-second quick start
112
+
113
+ Live OS-runtime telemetry works with **any local command**. These Agent/runtime names are examples, not a whitelist.
114
+
115
+ ```bash
116
+ execweave live --open -- claude
117
+ execweave live --open -- codex
118
+ execweave live --open -- antigravity
119
+ execweave live --open -- cursor
120
+ execweave live --open -- opencode
121
+ execweave live --open -- ollama serve
122
+ execweave live --open -- python my_agent.py
123
+ ```
124
+
125
+ > **Approve the hook when prompted.** On the first provider-integrated run, the Agent/IDE may ask whether ExecWeave may enable its local hook integration. Choose **Allow / Yes**. Without approval, OS-runtime telemetry can still work, but provider-level tool, model, conversation, and supplied-content visibility may be reduced or unavailable.
126
+
127
+ Google Antigravity currently uses the `agy` CLI command; ExecWeave also accepts `antigravity` as a friendly alias and resolves it to `agy`. For Cursor, `execweave live --open -- cursor` first tries a normal PATH launcher, then falls back to the standard desktop application binary on macOS and Windows.
128
+
129
+ Build finalized run artifacts with:
130
+
131
+ ```bash
132
+ execweave record --open -- python my_agent.py
133
+ ```
134
+
135
+ For a detached overview while keeping the Agent interactive in the launch terminal:
136
+
137
+ ```bash
138
+ execweave top -- codex
139
+ ```
140
+
141
+ ## Dashboard
142
+
143
+ ExecWeave keeps Live, finished, and standalone viewing on the same dashboard model instead of switching renderers at the end of a run.
144
+
145
+ - **Execution graph:** agents, processes, files, network endpoints, tools, model/runtime entities, and supported semantic relations.
146
+ - **Conversation rounds:** the newest round is immediately readable; older rounds remain individually reachable instead of being overwritten by newer replies.
147
+ - **Node details:** process nodes show command/PID context, file nodes show path/history context, and network nodes show endpoint/process context.
148
+ - **Large-run readability:** per-type folding keeps recent members visible while older members collapse into an inspectable aggregate. Set the threshold with `--fold-budget N`.
149
+ - **Selection clarity:** multi-agent layout keeps a stable root/child hierarchy and de-emphasizes unrelated edges when an agent is selected.
150
+
151
+ ### v0.8.3 dashboard changes
152
+
153
+ v0.8.3 focuses on making dense and multi-round runs readable without changing raw evidence:
154
+
155
+ - conversation panels are round-based instead of pairing one old prompt with one new reply;
156
+ - explicit reader open/closed state survives the 800 ms Live refresh;
157
+ - subagent responses remain attributed to the agent that produced them;
158
+ - process, file, and network selections no longer open empty detail panels;
159
+ - high-cardinality node types fold under a configurable budget rather than overwhelming the graph;
160
+ - lifecycle return edges no longer distort root/child rank, and shared tool/model traffic uses clearer routed geometry.
161
+
162
+ These are presentation-layer changes. Raw graph evidence is unchanged, and Live, finished, and `viewer.html` continue to share one renderer.
163
+
164
+ ## Supported integrations
165
+
166
+ | Integration | OS-runtime observation when launched under ExecWeave | Specialized evidence |
167
+ | --- | --- | --- |
168
+ | Claude Code | Yes | native hooks + full-fidelity supplied hook content + exact subagent results when exposed |
169
+ | OpenAI Codex | Yes | lifecycle hooks + validated rollout transcripts + agent-local task/message/final-response routing |
170
+ | Google Antigravity / Antigravity CLI | Yes | passive native hooks + validated conversation/subagent routing where exposed |
171
+ | Cursor | Yes | native hooks + exact subagent task/summary routing when exposed |
172
+ | OpenCode | Yes | project plugin + session/task routing + full-fidelity supplied plugin content |
173
+ | Ollama | Yes | `execweave-model-runtime event/exchange/probe --runtime ollama` |
174
+ | llama.cpp | Yes | `execweave-model-runtime event/exchange/probe --runtime llamacpp` |
175
+ | vLLM | Yes | `execweave-model-runtime event/exchange/probe --runtime vllm` |
176
+ | LM Studio | Only when the local process is launched under ExecWeave | `execweave-model-runtime event/exchange/probe --runtime lmstudio` |
177
+ | LiteLLM Proxy | Yes when the configured proxy is launched under ExecWeave | metadata-oriented gateway callback/event integration |
178
+ | OpenRouter | Observe the local client, not the remote service process | `execweave-inference-gateway event/exchange/generation --gateway openrouter` |
179
+
180
+ Stable provider identifiers such as Cursor `tool_use_id`, Codex rollout thread identity, or OpenCode `sessionID + callID` prove logical provider identity; they are not OS PIDs. Cross-agent content is shown only when the provider exposes an explicit route, delegation, or result. Gateways or local runtimes that expose only root request/response traffic remain root-only; ExecWeave does not fabricate subagents or hidden routing.
181
+
182
+ OpenRouter `exchange` is caller-supplied request+response evidence, not transparent wire interception. LiteLLM Proxy remains a narrower metadata-oriented integration in the current baseline. Legacy Gemini CLI entry points remain packaged for compatibility, but new Google CLI usage should use Antigravity (`agy`).
183
+
184
+ ## Evidence model
185
+
186
+ ExecWeave keeps evidence layers separate instead of flattening them into one trace:
187
+
188
+ ```text
189
+ Agent / IDE semantic + supplied content evidence
190
+
191
+ Inference gateway / routing evidence
192
+
193
+ Model runtime / inference-server evidence
194
+
195
+ OS runtime evidence: process / file / network
196
+ ```
197
+
198
+ A relationship is causal only when the underlying telemetry supports that claim. Conservative Tool → Process bridges stay marked as derived evidence:
199
+
200
+ ```text
201
+ inferred: true
202
+ causal: false
203
+ ```
204
+
205
+ Exact shared request identity across Gateway and Model Runtime is identity evidence, not causal evidence:
206
+
207
+ ```text
208
+ identity_exact: true
209
+ inferred: false
210
+ causal: false
211
+ ```
212
+
213
+ Ambiguity produces no edge.
214
+
215
+ ### Full-fidelity supplied content
216
+
217
+ Since **v0.6.9**, supported integration points can preserve the complete value explicitly supplied by the provider/hook/API in a local SHA-256 content-addressed store while the semantic event stream keeps a reference:
218
+
219
+ ```text
220
+ <run-root>/content/sha256/<sha256>.<json|txt|bin>
221
+ ```
222
+
223
+ Depending on the integration, preserved values can include prompts/messages, request/response objects, tool inputs/results, assistant responses, explicitly exposed reasoning/thinking text, shell/MCP output, and file content supplied by provider hooks.
224
+
225
+ `complete_from_source: true` means ExecWeave stored the complete value delivered by that integration point. It does **not** mean ExecWeave observed hidden model state, provider-side stages that were never exposed, an unseen final wire request, or bytes it did not intercept.
226
+
227
+ ## Common commands
228
+
229
+ ### Agent / IDE recorders
230
+
231
+ ```bash
232
+ execweave-claude-record --open -- claude
233
+ execweave-codex-record --open -- codex
234
+ execweave-antigravity-record --open -- antigravity
235
+ execweave-cursor-record --open -- cursor
236
+ execweave-opencode-plugin --install
237
+ execweave-opencode-record --open -- opencode
238
+ ```
239
+
240
+ ### Gateways and model runtimes
241
+
242
+ ```bash
243
+ execweave-inference-gateway event --gateway openrouter --sidecar gateway.jsonl
244
+ execweave-inference-gateway exchange --gateway openrouter --sidecar gateway.jsonl
245
+ execweave-inference-gateway event --gateway litellm --sidecar gateway.jsonl
246
+
247
+ execweave-model-runtime event --runtime ollama --sidecar model-runtime.jsonl
248
+ execweave-model-runtime exchange --runtime ollama --sidecar model-runtime.jsonl
249
+ execweave-model-runtime probe --runtime ollama --sidecar model-runtime.jsonl
250
+ ```
251
+
252
+ `event` is response-only evidence. `exchange` stores a caller-supplied request+response object and does not assert transparent interception. Runtime catalog relations keep their source-specific meanings: `LOADED_MODEL`, `SERVES_MODEL`, and `ADVERTISES_MODEL` are not interchangeable. LM Studio catalog visibility remains `ADVERTISES_MODEL`, not proof that weights were resident in memory.
253
+
254
+ ### Runtime, graph, security, and integrity
255
+
256
+ ```bash
257
+ execweave doctor
258
+ execweave run --backend portable -- your-command
259
+ execweave run --backend strace -- your-command
260
+ execweave graph-summary run.graph.json
261
+ execweave graph-filter run.graph.json --causal-only --output causal.graph.json
262
+ execweave graph-focus run.graph.json NODE_ID --hops 2 --output focused.graph.json
263
+ execweave path run.graph.json SOURCE TARGET --causal-only
264
+ execweave analyze run.graph.json --output analysis.json
265
+ execweave-rule-pack graph.json --rule-pack local-policy.json --output report.json
266
+ execweave-integrity seal .execweave/runs/<run-id>
267
+ execweave-integrity verify .execweave/runs/<run-id>
268
+ ```
269
+
270
+ Security findings carry an evidence grade independently from severity. Current grades are `A`, `B`, `C`, `D`, and `U`; they are evidence-strength categories, not probabilities or trust scores. Rule packs are bounded, explainable single-edge observation policies and cannot execute third-party code or prove byte-level exfiltration.
271
+
272
+ ## Run artifacts
273
+
274
+ A provider-integrated run may contain:
275
+
276
+ ```text
277
+ .execweave/runs/<run-id>/
278
+ ├── events.jsonl
279
+ ├── graph.json
280
+ ├── viewer.html
281
+ ├── semantic.jsonl
282
+ ├── content/sha256/...
283
+ ├── conversations.md
284
+ ├── conversations.json
285
+ ├── events.semantic.jsonl
286
+ ├── graph.semantic.json
287
+ ├── viewer.semantic.html
288
+ ├── events.correlated.jsonl
289
+ ├── graph.correlated.json
290
+ ├── viewer.correlated.html
291
+ └── integrity.json # after an explicit seal
292
+ ```
293
+
294
+ Derived correlation never rewrites raw runtime or provider sidecar evidence.
295
+
296
+ ## Limits and privacy
297
+
298
+ - The portable collector runs on Linux, macOS, and Windows. Portable filesystem observation is session-correlated rather than process-causal, and polling can miss sufficiently short-lived activity.
299
+ - Linux also has a syscall-backed `strace` reference backend with stronger process-attributed syscall evidence for supported executions.
300
+ - Native Linux eBPF, Windows ETW, and macOS Endpoint Security collectors remain planned work, not current claims.
301
+ - Full-fidelity provider content can preserve secrets embedded in prompts, tool values, model responses, shell output, or supplied files. ExecWeave is **not** a general secret scanner or content redactor.
302
+ - Conversation isolation is an attribution/display rule, not a redaction boundary. If a provider explicitly routes content between agents, that content can legitimately appear at participating endpoints.
303
+ - Commands, paths, endpoints, identifiers, model metadata, prompts, tool values, and content blobs can all be sensitive. Review the entire run directory before sharing it.
304
+ - A local integrity seal detects file changes relative to its manifest, but it is not adversary-resistant when both evidence and manifest remain inside the same writable trust boundary.
305
+
306
+ ## Performance
307
+
308
+ ExecWeave includes bounded filesystem/viewer protections, incremental Live JSONL tailing, large-graph safety guards, detached Top, and provisional live sidecars for configured provider integrations.
309
+
310
+ The reproducible incremental `GraphAccumulator` reference result reaches **164,273 ev/s** at 1M synthetic events on the documented GitHub Actions workload. This is a graph-accumulation benchmark, not end-to-end collector/browser throughput.
311
+
312
+ Run the package-level benchmarks on a representative host/workload:
313
+
314
+ ```bash
315
+ execweave-overhead --iterations 7 --strace auto --output-json benchmark-results.json
316
+ execweave-scalability
317
+ ```
318
+
319
+ Reference data and methodology live in [`docs/benchmarks/`](docs/benchmarks/).
320
+
321
+ ## Documentation
322
+
323
+ | Area | Documents |
324
+ | --- | --- |
325
+ | Runtime and graph | [`Phase 1 — Runtime Collection`](docs/phase-1-runtime-collection.md) · [`Phase 2 — Execution Graph`](docs/phase-2-execution-graph.md) · [`Live Graph`](docs/live-graph.md) · [`Semantic Telemetry`](docs/semantic-telemetry.md) |
326
+ | Agent / IDE integrations | [`Claude Code`](docs/claude-code-hooks.md) · [`OpenAI Codex`](docs/codex-hooks.md) · [`Google Antigravity`](docs/antigravity-hooks.md) · [`Cursor`](docs/cursor-hooks.md) · [`OpenCode`](docs/opencode-plugin.md) |
327
+ | Gateways and runtimes | [`Inference Gateway / OpenRouter / LiteLLM`](docs/inference-gateway.md) · [`Model Runtime / Ollama / llama.cpp / vLLM / LM Studio`](docs/model-runtime.md) |
328
+ | Trust and analysis | [`Runtime Threat Model`](docs/runtime-threat-model.md) · [`Evidence Grades`](docs/evidence-grades.md) · [`Rule Packs`](docs/rule-packs.md) · [`Run Integrity`](docs/run-integrity.md) · [`Security Analysis`](docs/security-analysis.md) |
329
+ | Performance | [`Benchmarks`](docs/benchmarks/README.md) |
330
+
331
+ ## Contributing
332
+
333
+ Contributions are welcome, especially around native OS collectors, Agent/IDE adapters, inference gateways, model runtimes, evidence/correlation methods, privacy/redaction, graph UX, multi-agent conversation attribution, and performance evaluation.
334
+
335
+ ## License
336
+
337
+ Starting with v0.6.8, ExecWeave is licensed under the **PolyForm Noncommercial License 1.0.0**. Noncommercial use, modification, and redistribution are permitted under its terms. Commercial use requires a separate written commercial license from the licensor. See [`LICENSE`](LICENSE).