execweave 0.8.6__tar.gz → 0.8.7__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 (521) hide show
  1. {execweave-0.8.6 → execweave-0.8.7}/.github/workflows/provider-capability-stage-integrity.yml +34 -18
  2. {execweave-0.8.6 → execweave-0.8.7}/PKG-INFO +4 -2
  3. {execweave-0.8.6 → execweave-0.8.7}/README.de.md +3 -1
  4. {execweave-0.8.6 → execweave-0.8.7}/README.fr.md +3 -1
  5. {execweave-0.8.6 → execweave-0.8.7}/README.ja.md +3 -1
  6. {execweave-0.8.6 → execweave-0.8.7}/README.ko.md +3 -1
  7. {execweave-0.8.6 → execweave-0.8.7}/README.md +3 -1
  8. {execweave-0.8.6 → execweave-0.8.7}/README.ru.md +3 -1
  9. {execweave-0.8.6 → execweave-0.8.7}/README.zh-CN.md +3 -1
  10. {execweave-0.8.6 → execweave-0.8.7}/README.zh-TW.md +3 -1
  11. {execweave-0.8.6 → execweave-0.8.7}/pyproject.toml +2 -2
  12. {execweave-0.8.6 → execweave-0.8.7}/src/execweave/__init__.py +1 -1
  13. execweave-0.8.7/src/execweave/agy_preview_sanitize.py +102 -0
  14. {execweave-0.8.6 → execweave-0.8.7}/src/execweave/antigravity_adapter_base.py +3 -0
  15. execweave-0.8.7/src/execweave/antigravity_full_fidelity.py +495 -0
  16. {execweave-0.8.6 → execweave-0.8.7}/src/execweave/antigravity_full_fidelity_base.py +6 -1
  17. {execweave-0.8.6 → execweave-0.8.7}/src/execweave/antigravity_hook_cli.py +45 -5
  18. {execweave-0.8.6 → execweave-0.8.7}/src/execweave/antigravity_subagent_linkage.py +116 -3
  19. {execweave-0.8.6 → execweave-0.8.7}/src/execweave/codex_adapter.py +82 -0
  20. {execweave-0.8.6 → execweave-0.8.7}/src/execweave/codex_conversation.py +31 -4
  21. execweave-0.8.7/src/execweave/conversation_preview.py +66 -0
  22. execweave-0.8.7/src/execweave/conversation_preview_antigravity.py +32 -0
  23. execweave-0.8.7/src/execweave/conversation_preview_claude.py +31 -0
  24. execweave-0.8.7/src/execweave/conversation_preview_codex.py +107 -0
  25. execweave-0.8.7/src/execweave/conversation_preview_common.py +156 -0
  26. execweave-0.8.7/src/execweave/conversation_preview_generic.py +166 -0
  27. execweave-0.8.7/src/execweave/conversation_preview_lines.py +116 -0
  28. execweave-0.8.7/src/execweave/conversation_preview_transcript.py +121 -0
  29. {execweave-0.8.6 → execweave-0.8.7}/src/execweave/conversation_records.py +21 -260
  30. execweave-0.8.7/src/execweave/conversation_records_antigravity.py +369 -0
  31. execweave-0.8.7/src/execweave/conversation_records_codex.py +59 -0
  32. execweave-0.8.7/src/execweave/conversation_records_common.py +16 -0
  33. execweave-0.8.7/src/execweave/conversation_records_ollama.py +39 -0
  34. {execweave-0.8.6 → execweave-0.8.7}/src/execweave/dashboard_shell.py +14 -1
  35. {execweave-0.8.6 → execweave-0.8.7}/src/execweave/live_view.py +5 -4
  36. {execweave-0.8.6 → execweave-0.8.7}/src/execweave/live_view_markup.py +1 -1
  37. execweave-0.8.7/src/execweave/live_view_process_layout.py +349 -0
  38. {execweave-0.8.6 → execweave-0.8.7}/src/execweave/live_view_readability.py +54 -1
  39. execweave-0.8.7/src/execweave/vendor/dagre.min.js +815 -0
  40. {execweave-0.8.6 → execweave-0.8.7}/src/execweave/viewer_agent_panel.py +88 -32
  41. execweave-0.8.7/src/execweave/viewer_agent_panel_antigravity.py +31 -0
  42. execweave-0.8.7/src/execweave/viewer_agent_panel_claude.py +9 -0
  43. execweave-0.8.7/src/execweave/viewer_agent_panel_codex.py +50 -0
  44. execweave-0.8.7/src/execweave/viewer_agent_panel_cursor.py +9 -0
  45. execweave-0.8.7/src/execweave/viewer_agent_panel_default.py +36 -0
  46. execweave-0.8.7/src/execweave/viewer_agent_panel_gemini.py +9 -0
  47. execweave-0.8.7/src/execweave/viewer_agent_panel_ollama.py +20 -0
  48. execweave-0.8.7/src/execweave/viewer_agent_panel_opencode.py +9 -0
  49. execweave-0.8.7/src/execweave/viewer_agent_panel_registry.py +21 -0
  50. {execweave-0.8.6 → execweave-0.8.7}/src/execweave/viewer_dashboard_clean.py +101 -52
  51. execweave-0.8.7/src/execweave/viewer_external_endpoints.py +199 -0
  52. execweave-0.8.7/src/execweave/viewer_projection.py +198 -0
  53. execweave-0.8.7/tests/test_agy_windows_wire_acceptance.py +302 -0
  54. execweave-0.8.7/tests/test_antigravity_child_panel_policy.py +166 -0
  55. execweave-0.8.7/tests/test_antigravity_child_transcript_tools.py +135 -0
  56. execweave-0.8.7/tests/test_antigravity_invocation_archive.py +123 -0
  57. execweave-0.8.7/tests/test_antigravity_role_path_fallback.py +249 -0
  58. {execweave-0.8.6 → execweave-0.8.7}/tests/test_codex_adapter.py +66 -0
  59. execweave-0.8.7/tests/test_codex_child_panel_policy.py +375 -0
  60. execweave-0.8.7/tests/test_codex_nickname_path_fallback.py +134 -0
  61. {execweave-0.8.6 → execweave-0.8.7}/tests/test_dashboard_readability_e2e.py +2 -2
  62. {execweave-0.8.6 → execweave-0.8.7}/tests/test_dashboard_simplification.py +6 -1
  63. {execweave-0.8.6 → execweave-0.8.7}/tests/test_dashboard_ux_and_hook_projection.py +2 -1
  64. execweave-0.8.7/tests/test_external_endpoints_all_providers.py +148 -0
  65. {execweave-0.8.6 → execweave-0.8.7}/tests/test_live.py +3 -1
  66. execweave-0.8.7/tests/test_ollama_panel_policy.py +89 -0
  67. {execweave-0.8.6 → execweave-0.8.7}/tests/test_per_agent_conversation_default.py +4 -2
  68. {execweave-0.8.6 → execweave-0.8.7}/tests/test_pr25_premerge_hardening_e2e.py +16 -6
  69. execweave-0.8.7/tests/test_process_tree_layout.py +156 -0
  70. {execweave-0.8.6 → execweave-0.8.7}/tests/test_v069_dashboard_release.py +3 -3
  71. {execweave-0.8.6 → execweave-0.8.7}/tests/test_viewer_agent_isolation_e2e.py +1 -1
  72. {execweave-0.8.6 → execweave-0.8.7}/tests/test_viewer_projection.py +18 -1
  73. execweave-0.8.7/tests/test_windows_codex_agy_display_repair.py +220 -0
  74. execweave-0.8.6/src/execweave/antigravity_full_fidelity.py +0 -220
  75. execweave-0.8.6/src/execweave/conversation_preview.py +0 -793
  76. execweave-0.8.6/src/execweave/viewer_projection.py +0 -90
  77. {execweave-0.8.6 → execweave-0.8.7}/.github/workflows/ci.yml +0 -0
  78. {execweave-0.8.6 → execweave-0.8.7}/.github/workflows/cleanup-workflow-history.yml +0 -0
  79. {execweave-0.8.6 → execweave-0.8.7}/.github/workflows/i18n.yml +0 -0
  80. {execweave-0.8.6 → execweave-0.8.7}/.github/workflows/package-benchmark.yml +0 -0
  81. {execweave-0.8.6 → execweave-0.8.7}/.github/workflows/package-smoke.yml +0 -0
  82. {execweave-0.8.6 → execweave-0.8.7}/.github/workflows/publish.yml +0 -0
  83. {execweave-0.8.6 → execweave-0.8.7}/.github/workflows/scalability.yml +0 -0
  84. {execweave-0.8.6 → execweave-0.8.7}/.github/workflows/viewer-agent-isolation.yml +0 -0
  85. {execweave-0.8.6 → execweave-0.8.7}/.github/workflows/wheel-smoke.yml +0 -0
  86. {execweave-0.8.6 → execweave-0.8.7}/.github/workflows/windows-launcher.yml +0 -0
  87. {execweave-0.8.6 → execweave-0.8.7}/.gitignore +0 -0
  88. {execweave-0.8.6 → execweave-0.8.7}/LICENSE +0 -0
  89. {execweave-0.8.6 → execweave-0.8.7}/RELEASE-PLAN-0.8.0.md +0 -0
  90. {execweave-0.8.6 → execweave-0.8.7}/benchmarks/phase1_overhead.py +0 -0
  91. {execweave-0.8.6 → execweave-0.8.7}/docs/antigravity-hooks.md +0 -0
  92. {execweave-0.8.6 → execweave-0.8.7}/docs/assets/codex.gif +0 -0
  93. {execweave-0.8.6 → execweave-0.8.7}/docs/benchmarks/README.md +0 -0
  94. {execweave-0.8.6 → execweave-0.8.7}/docs/benchmarks/v0.6.0-github-actions.json +0 -0
  95. {execweave-0.8.6 → execweave-0.8.7}/docs/benchmarks/v0.6.0-github-actions.svg +0 -0
  96. {execweave-0.8.6 → execweave-0.8.7}/docs/claude-code-hooks.de.md +0 -0
  97. {execweave-0.8.6 → execweave-0.8.7}/docs/claude-code-hooks.fr.md +0 -0
  98. {execweave-0.8.6 → execweave-0.8.7}/docs/claude-code-hooks.ja.md +0 -0
  99. {execweave-0.8.6 → execweave-0.8.7}/docs/claude-code-hooks.ko.md +0 -0
  100. {execweave-0.8.6 → execweave-0.8.7}/docs/claude-code-hooks.md +0 -0
  101. {execweave-0.8.6 → execweave-0.8.7}/docs/claude-code-hooks.ru.md +0 -0
  102. {execweave-0.8.6 → execweave-0.8.7}/docs/claude-code-hooks.zh-CN.md +0 -0
  103. {execweave-0.8.6 → execweave-0.8.7}/docs/claude-code-hooks.zh-TW.md +0 -0
  104. {execweave-0.8.6 → execweave-0.8.7}/docs/codex-hooks.de.md +0 -0
  105. {execweave-0.8.6 → execweave-0.8.7}/docs/codex-hooks.fr.md +0 -0
  106. {execweave-0.8.6 → execweave-0.8.7}/docs/codex-hooks.ja.md +0 -0
  107. {execweave-0.8.6 → execweave-0.8.7}/docs/codex-hooks.ko.md +0 -0
  108. {execweave-0.8.6 → execweave-0.8.7}/docs/codex-hooks.md +0 -0
  109. {execweave-0.8.6 → execweave-0.8.7}/docs/codex-hooks.ru.md +0 -0
  110. {execweave-0.8.6 → execweave-0.8.7}/docs/codex-hooks.zh-CN.md +0 -0
  111. {execweave-0.8.6 → execweave-0.8.7}/docs/codex-hooks.zh-TW.md +0 -0
  112. {execweave-0.8.6 → execweave-0.8.7}/docs/cursor-hooks.de.md +0 -0
  113. {execweave-0.8.6 → execweave-0.8.7}/docs/cursor-hooks.fr.md +0 -0
  114. {execweave-0.8.6 → execweave-0.8.7}/docs/cursor-hooks.ja.md +0 -0
  115. {execweave-0.8.6 → execweave-0.8.7}/docs/cursor-hooks.ko.md +0 -0
  116. {execweave-0.8.6 → execweave-0.8.7}/docs/cursor-hooks.md +0 -0
  117. {execweave-0.8.6 → execweave-0.8.7}/docs/cursor-hooks.ru.md +0 -0
  118. {execweave-0.8.6 → execweave-0.8.7}/docs/cursor-hooks.zh-CN.md +0 -0
  119. {execweave-0.8.6 → execweave-0.8.7}/docs/cursor-hooks.zh-TW.md +0 -0
  120. {execweave-0.8.6 → execweave-0.8.7}/docs/evidence-grades.de.md +0 -0
  121. {execweave-0.8.6 → execweave-0.8.7}/docs/evidence-grades.fr.md +0 -0
  122. {execweave-0.8.6 → execweave-0.8.7}/docs/evidence-grades.ja.md +0 -0
  123. {execweave-0.8.6 → execweave-0.8.7}/docs/evidence-grades.ko.md +0 -0
  124. {execweave-0.8.6 → execweave-0.8.7}/docs/evidence-grades.md +0 -0
  125. {execweave-0.8.6 → execweave-0.8.7}/docs/evidence-grades.ru.md +0 -0
  126. {execweave-0.8.6 → execweave-0.8.7}/docs/evidence-grades.zh-CN.md +0 -0
  127. {execweave-0.8.6 → execweave-0.8.7}/docs/evidence-grades.zh-TW.md +0 -0
  128. {execweave-0.8.6 → execweave-0.8.7}/docs/gemini-hooks.de.md +0 -0
  129. {execweave-0.8.6 → execweave-0.8.7}/docs/gemini-hooks.fr.md +0 -0
  130. {execweave-0.8.6 → execweave-0.8.7}/docs/gemini-hooks.ja.md +0 -0
  131. {execweave-0.8.6 → execweave-0.8.7}/docs/gemini-hooks.ko.md +0 -0
  132. {execweave-0.8.6 → execweave-0.8.7}/docs/gemini-hooks.md +0 -0
  133. {execweave-0.8.6 → execweave-0.8.7}/docs/gemini-hooks.ru.md +0 -0
  134. {execweave-0.8.6 → execweave-0.8.7}/docs/gemini-hooks.zh-CN.md +0 -0
  135. {execweave-0.8.6 → execweave-0.8.7}/docs/gemini-hooks.zh-TW.md +0 -0
  136. {execweave-0.8.6 → execweave-0.8.7}/docs/inference-gateway.de.md +0 -0
  137. {execweave-0.8.6 → execweave-0.8.7}/docs/inference-gateway.fr.md +0 -0
  138. {execweave-0.8.6 → execweave-0.8.7}/docs/inference-gateway.ja.md +0 -0
  139. {execweave-0.8.6 → execweave-0.8.7}/docs/inference-gateway.ko.md +0 -0
  140. {execweave-0.8.6 → execweave-0.8.7}/docs/inference-gateway.md +0 -0
  141. {execweave-0.8.6 → execweave-0.8.7}/docs/inference-gateway.ru.md +0 -0
  142. {execweave-0.8.6 → execweave-0.8.7}/docs/inference-gateway.zh-CN.md +0 -0
  143. {execweave-0.8.6 → execweave-0.8.7}/docs/inference-gateway.zh-TW.md +0 -0
  144. {execweave-0.8.6 → execweave-0.8.7}/docs/internal/provider-capability-matrix.md +0 -0
  145. {execweave-0.8.6 → execweave-0.8.7}/docs/live-graph.de.md +0 -0
  146. {execweave-0.8.6 → execweave-0.8.7}/docs/live-graph.fr.md +0 -0
  147. {execweave-0.8.6 → execweave-0.8.7}/docs/live-graph.ja.md +0 -0
  148. {execweave-0.8.6 → execweave-0.8.7}/docs/live-graph.ko.md +0 -0
  149. {execweave-0.8.6 → execweave-0.8.7}/docs/live-graph.md +0 -0
  150. {execweave-0.8.6 → execweave-0.8.7}/docs/live-graph.ru.md +0 -0
  151. {execweave-0.8.6 → execweave-0.8.7}/docs/live-graph.zh-CN.md +0 -0
  152. {execweave-0.8.6 → execweave-0.8.7}/docs/live-graph.zh-TW.md +0 -0
  153. {execweave-0.8.6 → execweave-0.8.7}/docs/model-runtime.de.md +0 -0
  154. {execweave-0.8.6 → execweave-0.8.7}/docs/model-runtime.fr.md +0 -0
  155. {execweave-0.8.6 → execweave-0.8.7}/docs/model-runtime.ja.md +0 -0
  156. {execweave-0.8.6 → execweave-0.8.7}/docs/model-runtime.ko.md +0 -0
  157. {execweave-0.8.6 → execweave-0.8.7}/docs/model-runtime.md +0 -0
  158. {execweave-0.8.6 → execweave-0.8.7}/docs/model-runtime.ru.md +0 -0
  159. {execweave-0.8.6 → execweave-0.8.7}/docs/model-runtime.zh-CN.md +0 -0
  160. {execweave-0.8.6 → execweave-0.8.7}/docs/model-runtime.zh-TW.md +0 -0
  161. {execweave-0.8.6 → execweave-0.8.7}/docs/opencode-plugin.de.md +0 -0
  162. {execweave-0.8.6 → execweave-0.8.7}/docs/opencode-plugin.fr.md +0 -0
  163. {execweave-0.8.6 → execweave-0.8.7}/docs/opencode-plugin.ja.md +0 -0
  164. {execweave-0.8.6 → execweave-0.8.7}/docs/opencode-plugin.ko.md +0 -0
  165. {execweave-0.8.6 → execweave-0.8.7}/docs/opencode-plugin.md +0 -0
  166. {execweave-0.8.6 → execweave-0.8.7}/docs/opencode-plugin.ru.md +0 -0
  167. {execweave-0.8.6 → execweave-0.8.7}/docs/opencode-plugin.zh-CN.md +0 -0
  168. {execweave-0.8.6 → execweave-0.8.7}/docs/opencode-plugin.zh-TW.md +0 -0
  169. {execweave-0.8.6 → execweave-0.8.7}/docs/phase-1-runtime-collection.de.md +0 -0
  170. {execweave-0.8.6 → execweave-0.8.7}/docs/phase-1-runtime-collection.fr.md +0 -0
  171. {execweave-0.8.6 → execweave-0.8.7}/docs/phase-1-runtime-collection.ja.md +0 -0
  172. {execweave-0.8.6 → execweave-0.8.7}/docs/phase-1-runtime-collection.ko.md +0 -0
  173. {execweave-0.8.6 → execweave-0.8.7}/docs/phase-1-runtime-collection.md +0 -0
  174. {execweave-0.8.6 → execweave-0.8.7}/docs/phase-1-runtime-collection.ru.md +0 -0
  175. {execweave-0.8.6 → execweave-0.8.7}/docs/phase-1-runtime-collection.zh-CN.md +0 -0
  176. {execweave-0.8.6 → execweave-0.8.7}/docs/phase-1-runtime-collection.zh-TW.md +0 -0
  177. {execweave-0.8.6 → execweave-0.8.7}/docs/phase-2-execution-graph.de.md +0 -0
  178. {execweave-0.8.6 → execweave-0.8.7}/docs/phase-2-execution-graph.fr.md +0 -0
  179. {execweave-0.8.6 → execweave-0.8.7}/docs/phase-2-execution-graph.ja.md +0 -0
  180. {execweave-0.8.6 → execweave-0.8.7}/docs/phase-2-execution-graph.ko.md +0 -0
  181. {execweave-0.8.6 → execweave-0.8.7}/docs/phase-2-execution-graph.md +0 -0
  182. {execweave-0.8.6 → execweave-0.8.7}/docs/phase-2-execution-graph.ru.md +0 -0
  183. {execweave-0.8.6 → execweave-0.8.7}/docs/phase-2-execution-graph.zh-CN.md +0 -0
  184. {execweave-0.8.6 → execweave-0.8.7}/docs/phase-2-execution-graph.zh-TW.md +0 -0
  185. {execweave-0.8.6 → execweave-0.8.7}/docs/rule-packs.de.md +0 -0
  186. {execweave-0.8.6 → execweave-0.8.7}/docs/rule-packs.fr.md +0 -0
  187. {execweave-0.8.6 → execweave-0.8.7}/docs/rule-packs.ja.md +0 -0
  188. {execweave-0.8.6 → execweave-0.8.7}/docs/rule-packs.ko.md +0 -0
  189. {execweave-0.8.6 → execweave-0.8.7}/docs/rule-packs.md +0 -0
  190. {execweave-0.8.6 → execweave-0.8.7}/docs/rule-packs.ru.md +0 -0
  191. {execweave-0.8.6 → execweave-0.8.7}/docs/rule-packs.zh-CN.md +0 -0
  192. {execweave-0.8.6 → execweave-0.8.7}/docs/rule-packs.zh-TW.md +0 -0
  193. {execweave-0.8.6 → execweave-0.8.7}/docs/run-integrity.de.md +0 -0
  194. {execweave-0.8.6 → execweave-0.8.7}/docs/run-integrity.fr.md +0 -0
  195. {execweave-0.8.6 → execweave-0.8.7}/docs/run-integrity.ja.md +0 -0
  196. {execweave-0.8.6 → execweave-0.8.7}/docs/run-integrity.ko.md +0 -0
  197. {execweave-0.8.6 → execweave-0.8.7}/docs/run-integrity.md +0 -0
  198. {execweave-0.8.6 → execweave-0.8.7}/docs/run-integrity.ru.md +0 -0
  199. {execweave-0.8.6 → execweave-0.8.7}/docs/run-integrity.zh-CN.md +0 -0
  200. {execweave-0.8.6 → execweave-0.8.7}/docs/run-integrity.zh-TW.md +0 -0
  201. {execweave-0.8.6 → execweave-0.8.7}/docs/runtime-threat-model.de.md +0 -0
  202. {execweave-0.8.6 → execweave-0.8.7}/docs/runtime-threat-model.fr.md +0 -0
  203. {execweave-0.8.6 → execweave-0.8.7}/docs/runtime-threat-model.ja.md +0 -0
  204. {execweave-0.8.6 → execweave-0.8.7}/docs/runtime-threat-model.ko.md +0 -0
  205. {execweave-0.8.6 → execweave-0.8.7}/docs/runtime-threat-model.md +0 -0
  206. {execweave-0.8.6 → execweave-0.8.7}/docs/runtime-threat-model.ru.md +0 -0
  207. {execweave-0.8.6 → execweave-0.8.7}/docs/runtime-threat-model.zh-CN.md +0 -0
  208. {execweave-0.8.6 → execweave-0.8.7}/docs/runtime-threat-model.zh-TW.md +0 -0
  209. {execweave-0.8.6 → execweave-0.8.7}/docs/security-analysis.de.md +0 -0
  210. {execweave-0.8.6 → execweave-0.8.7}/docs/security-analysis.fr.md +0 -0
  211. {execweave-0.8.6 → execweave-0.8.7}/docs/security-analysis.ja.md +0 -0
  212. {execweave-0.8.6 → execweave-0.8.7}/docs/security-analysis.ko.md +0 -0
  213. {execweave-0.8.6 → execweave-0.8.7}/docs/security-analysis.md +0 -0
  214. {execweave-0.8.6 → execweave-0.8.7}/docs/security-analysis.ru.md +0 -0
  215. {execweave-0.8.6 → execweave-0.8.7}/docs/security-analysis.zh-CN.md +0 -0
  216. {execweave-0.8.6 → execweave-0.8.7}/docs/security-analysis.zh-TW.md +0 -0
  217. {execweave-0.8.6 → execweave-0.8.7}/docs/semantic-telemetry.de.md +0 -0
  218. {execweave-0.8.6 → execweave-0.8.7}/docs/semantic-telemetry.fr.md +0 -0
  219. {execweave-0.8.6 → execweave-0.8.7}/docs/semantic-telemetry.ja.md +0 -0
  220. {execweave-0.8.6 → execweave-0.8.7}/docs/semantic-telemetry.ko.md +0 -0
  221. {execweave-0.8.6 → execweave-0.8.7}/docs/semantic-telemetry.md +0 -0
  222. {execweave-0.8.6 → execweave-0.8.7}/docs/semantic-telemetry.ru.md +0 -0
  223. {execweave-0.8.6 → execweave-0.8.7}/docs/semantic-telemetry.zh-CN.md +0 -0
  224. {execweave-0.8.6 → execweave-0.8.7}/docs/semantic-telemetry.zh-TW.md +0 -0
  225. {execweave-0.8.6 → execweave-0.8.7}/docs/v0.6.5-hardening-decisions.md +0 -0
  226. {execweave-0.8.6 → execweave-0.8.7}/docs/v0.8.3-graph-ergonomics.md +0 -0
  227. {execweave-0.8.6 → execweave-0.8.7}/scripts/audit_i18n_parity.py +0 -0
  228. {execweave-0.8.6 → execweave-0.8.7}/scripts/check_claude_hook.py +0 -0
  229. {execweave-0.8.6 → execweave-0.8.7}/scripts/check_claude_record_graph.py +0 -0
  230. {execweave-0.8.6 → execweave-0.8.7}/scripts/check_codex_hook.py +0 -0
  231. {execweave-0.8.6 → execweave-0.8.7}/scripts/check_conversation_records.py +0 -0
  232. {execweave-0.8.6 → execweave-0.8.7}/scripts/check_correlation_graph.py +0 -0
  233. {execweave-0.8.6 → execweave-0.8.7}/scripts/check_inference_gateway_cli.py +0 -0
  234. {execweave-0.8.6 → execweave-0.8.7}/scripts/check_model_runtime_cli.py +0 -0
  235. {execweave-0.8.6 → execweave-0.8.7}/scripts/check_openai_compatible_cli.py +0 -0
  236. {execweave-0.8.6 → execweave-0.8.7}/scripts/check_release_stage_integrity.py +0 -0
  237. {execweave-0.8.6 → execweave-0.8.7}/scripts/check_semantic_graph.py +0 -0
  238. {execweave-0.8.6 → execweave-0.8.7}/scripts/check_viewer_js.py +0 -0
  239. {execweave-0.8.6 → execweave-0.8.7}/scripts/check_wheel_install.py +0 -0
  240. {execweave-0.8.6 → execweave-0.8.7}/scripts/check_windows_launchers.py +0 -0
  241. {execweave-0.8.6 → execweave-0.8.7}/scripts/emit_claude_hook_smoke.py +0 -0
  242. {execweave-0.8.6 → execweave-0.8.7}/scripts/emit_codex_hook_smoke.py +0 -0
  243. {execweave-0.8.6 → execweave-0.8.7}/scripts/emit_cursor_hook_smoke.py +0 -0
  244. {execweave-0.8.6 → execweave-0.8.7}/scripts/emit_gemini_hook_smoke.py +0 -0
  245. {execweave-0.8.6 → execweave-0.8.7}/scripts/emit_opencode_plugin_smoke.py +0 -0
  246. {execweave-0.8.6 → execweave-0.8.7}/scripts/make_semantic_smoke.py +0 -0
  247. {execweave-0.8.6 → execweave-0.8.7}/scripts/probe_provider_capability.py +0 -0
  248. {execweave-0.8.6 → execweave-0.8.7}/scripts/sync_i18n_nav.py +0 -0
  249. {execweave-0.8.6 → execweave-0.8.7}/src/execweave/__main__.py +0 -0
  250. {execweave-0.8.6 → execweave-0.8.7}/src/execweave/_conversation_records_core.py +0 -0
  251. {execweave-0.8.6 → execweave-0.8.7}/src/execweave/agent_bootstrap.py +0 -0
  252. {execweave-0.8.6 → execweave-0.8.7}/src/execweave/agent_topology.py +0 -0
  253. {execweave-0.8.6 → execweave-0.8.7}/src/execweave/agent_trace.py +0 -0
  254. {execweave-0.8.6 → execweave-0.8.7}/src/execweave/analysis.py +0 -0
  255. {execweave-0.8.6 → execweave-0.8.7}/src/execweave/anthropic.py +0 -0
  256. {execweave-0.8.6 → execweave-0.8.7}/src/execweave/anthropic_cli.py +0 -0
  257. {execweave-0.8.6 → execweave-0.8.7}/src/execweave/anthropic_full_fidelity.py +0 -0
  258. {execweave-0.8.6 → execweave-0.8.7}/src/execweave/antigravity_adapter.py +0 -0
  259. {execweave-0.8.6 → execweave-0.8.7}/src/execweave/antigravity_full_fidelity_collaboration_base.py +0 -0
  260. {execweave-0.8.6 → execweave-0.8.7}/src/execweave/antigravity_record.py +0 -0
  261. {execweave-0.8.6 → execweave-0.8.7}/src/execweave/antigravity_trace_capability.py +0 -0
  262. {execweave-0.8.6 → execweave-0.8.7}/src/execweave/auto_specialized.py +0 -0
  263. {execweave-0.8.6 → execweave-0.8.7}/src/execweave/backends.py +0 -0
  264. {execweave-0.8.6 → execweave-0.8.7}/src/execweave/benchmark.py +0 -0
  265. {execweave-0.8.6 → execweave-0.8.7}/src/execweave/claude_adapter.py +0 -0
  266. {execweave-0.8.6 → execweave-0.8.7}/src/execweave/claude_delegation.py +0 -0
  267. {execweave-0.8.6 → execweave-0.8.7}/src/execweave/claude_full_fidelity.py +0 -0
  268. {execweave-0.8.6 → execweave-0.8.7}/src/execweave/claude_hook_cli.py +0 -0
  269. {execweave-0.8.6 → execweave-0.8.7}/src/execweave/claude_hook_contract.py +0 -0
  270. {execweave-0.8.6 → execweave-0.8.7}/src/execweave/claude_model_observer.py +0 -0
  271. {execweave-0.8.6 → execweave-0.8.7}/src/execweave/claude_record.py +0 -0
  272. {execweave-0.8.6 → execweave-0.8.7}/src/execweave/cli.py +0 -0
  273. {execweave-0.8.6 → execweave-0.8.7}/src/execweave/codex_full_fidelity.py +0 -0
  274. {execweave-0.8.6 → execweave-0.8.7}/src/execweave/codex_hook_cli.py +0 -0
  275. {execweave-0.8.6 → execweave-0.8.7}/src/execweave/codex_hook_lifecycle.py +0 -0
  276. {execweave-0.8.6 → execweave-0.8.7}/src/execweave/codex_message_diagnostics.py +0 -0
  277. {execweave-0.8.6 → execweave-0.8.7}/src/execweave/codex_message_transport_diagnostics.py +0 -0
  278. {execweave-0.8.6 → execweave-0.8.7}/src/execweave/codex_record.py +0 -0
  279. {execweave-0.8.6 → execweave-0.8.7}/src/execweave/codex_rollout_structures.py +0 -0
  280. {execweave-0.8.6 → execweave-0.8.7}/src/execweave/codex_rollout_trace.py +0 -0
  281. {execweave-0.8.6 → execweave-0.8.7}/src/execweave/codex_rollout_trace_base.py +0 -0
  282. {execweave-0.8.6 → execweave-0.8.7}/src/execweave/collector.py +0 -0
  283. {execweave-0.8.6 → execweave-0.8.7}/src/execweave/command.py +0 -0
  284. {execweave-0.8.6 → execweave-0.8.7}/src/execweave/content_evidence.py +0 -0
  285. {execweave-0.8.6 → execweave-0.8.7}/src/execweave/content_store.py +0 -0
  286. {execweave-0.8.6 → execweave-0.8.7}/src/execweave/conversation_archive.py +0 -0
  287. {execweave-0.8.6 → execweave-0.8.7}/src/execweave/conversation_message_identity.py +0 -0
  288. {execweave-0.8.6 → execweave-0.8.7}/src/execweave/correlation.py +0 -0
  289. {execweave-0.8.6 → execweave-0.8.7}/src/execweave/cursor_adapter.py +0 -0
  290. {execweave-0.8.6 → execweave-0.8.7}/src/execweave/cursor_delegation.py +0 -0
  291. {execweave-0.8.6 → execweave-0.8.7}/src/execweave/cursor_delegation_base.py +0 -0
  292. {execweave-0.8.6 → execweave-0.8.7}/src/execweave/cursor_full_fidelity.py +0 -0
  293. {execweave-0.8.6 → execweave-0.8.7}/src/execweave/cursor_hook_cli.py +0 -0
  294. {execweave-0.8.6 → execweave-0.8.7}/src/execweave/cursor_hook_contract.py +0 -0
  295. {execweave-0.8.6 → execweave-0.8.7}/src/execweave/cursor_record.py +0 -0
  296. {execweave-0.8.6 → execweave-0.8.7}/src/execweave/entry.py +0 -0
  297. {execweave-0.8.6 → execweave-0.8.7}/src/execweave/evidence_availability.py +0 -0
  298. {execweave-0.8.6 → execweave-0.8.7}/src/execweave/evidence_grade.py +0 -0
  299. {execweave-0.8.6 → execweave-0.8.7}/src/execweave/fidelity.py +0 -0
  300. {execweave-0.8.6 → execweave-0.8.7}/src/execweave/filesystem.py +0 -0
  301. {execweave-0.8.6 → execweave-0.8.7}/src/execweave/focus.py +0 -0
  302. {execweave-0.8.6 → execweave-0.8.7}/src/execweave/gemini_adapter.py +0 -0
  303. {execweave-0.8.6 → execweave-0.8.7}/src/execweave/gemini_full_fidelity.py +0 -0
  304. {execweave-0.8.6 → execweave-0.8.7}/src/execweave/gemini_hook_cli.py +0 -0
  305. {execweave-0.8.6 → execweave-0.8.7}/src/execweave/gemini_hook_contract.py +0 -0
  306. {execweave-0.8.6 → execweave-0.8.7}/src/execweave/gemini_record.py +0 -0
  307. {execweave-0.8.6 → execweave-0.8.7}/src/execweave/graph.py +0 -0
  308. {execweave-0.8.6 → execweave-0.8.7}/src/execweave/graph_ops.py +0 -0
  309. {execweave-0.8.6 → execweave-0.8.7}/src/execweave/http_proxy.py +0 -0
  310. {execweave-0.8.6 → execweave-0.8.7}/src/execweave/http_proxy_cli.py +0 -0
  311. {execweave-0.8.6 → execweave-0.8.7}/src/execweave/inference_gateway.py +0 -0
  312. {execweave-0.8.6 → execweave-0.8.7}/src/execweave/inference_gateway_cli.py +0 -0
  313. {execweave-0.8.6 → execweave-0.8.7}/src/execweave/inference_gateway_full_fidelity.py +0 -0
  314. {execweave-0.8.6 → execweave-0.8.7}/src/execweave/inference_identity.py +0 -0
  315. {execweave-0.8.6 → execweave-0.8.7}/src/execweave/inference_identity_cli.py +0 -0
  316. {execweave-0.8.6 → execweave-0.8.7}/src/execweave/integrity.py +0 -0
  317. {execweave-0.8.6 → execweave-0.8.7}/src/execweave/integrity_cli.py +0 -0
  318. {execweave-0.8.6 → execweave-0.8.7}/src/execweave/litellm_callback.py +0 -0
  319. {execweave-0.8.6 → execweave-0.8.7}/src/execweave/litellm_callback_cli.py +0 -0
  320. {execweave-0.8.6 → execweave-0.8.7}/src/execweave/live.py +0 -0
  321. {execweave-0.8.6 → execweave-0.8.7}/src/execweave/live_core.py +0 -0
  322. {execweave-0.8.6 → execweave-0.8.7}/src/execweave/live_view_extra_style.py +0 -0
  323. {execweave-0.8.6 → execweave-0.8.7}/src/execweave/live_view_script_a.py +0 -0
  324. {execweave-0.8.6 → execweave-0.8.7}/src/execweave/live_view_script_b.py +0 -0
  325. {execweave-0.8.6 → execweave-0.8.7}/src/execweave/live_view_script_c.py +0 -0
  326. {execweave-0.8.6 → execweave-0.8.7}/src/execweave/live_view_script_d.py +0 -0
  327. {execweave-0.8.6 → execweave-0.8.7}/src/execweave/live_view_style.py +0 -0
  328. {execweave-0.8.6 → execweave-0.8.7}/src/execweave/model_runtime.py +0 -0
  329. {execweave-0.8.6 → execweave-0.8.7}/src/execweave/model_runtime_cli.py +0 -0
  330. {execweave-0.8.6 → execweave-0.8.7}/src/execweave/model_runtime_full_fidelity.py +0 -0
  331. {execweave-0.8.6 → execweave-0.8.7}/src/execweave/openai_compatible.py +0 -0
  332. {execweave-0.8.6 → execweave-0.8.7}/src/execweave/openai_compatible_cli.py +0 -0
  333. {execweave-0.8.6 → execweave-0.8.7}/src/execweave/openai_compatible_full_fidelity.py +0 -0
  334. {execweave-0.8.6 → execweave-0.8.7}/src/execweave/opencode_adapter.py +0 -0
  335. {execweave-0.8.6 → execweave-0.8.7}/src/execweave/opencode_event_contract.py +0 -0
  336. {execweave-0.8.6 → execweave-0.8.7}/src/execweave/opencode_full_fidelity.py +0 -0
  337. {execweave-0.8.6 → execweave-0.8.7}/src/execweave/opencode_hook_cli.py +0 -0
  338. {execweave-0.8.6 → execweave-0.8.7}/src/execweave/opencode_plugin_cli.py +0 -0
  339. {execweave-0.8.6 → execweave-0.8.7}/src/execweave/opencode_record.py +0 -0
  340. {execweave-0.8.6 → execweave-0.8.7}/src/execweave/opencode_task_linkage.py +0 -0
  341. {execweave-0.8.6 → execweave-0.8.7}/src/execweave/overhead_benchmark.py +0 -0
  342. {execweave-0.8.6 → execweave-0.8.7}/src/execweave/provider_capability.py +0 -0
  343. {execweave-0.8.6 → execweave-0.8.7}/src/execweave/provider_lifecycle.py +0 -0
  344. {execweave-0.8.6 → execweave-0.8.7}/src/execweave/provider_record.py +0 -0
  345. {execweave-0.8.6 → execweave-0.8.7}/src/execweave/rule_pack.py +0 -0
  346. {execweave-0.8.6 → execweave-0.8.7}/src/execweave/rule_pack_cli.py +0 -0
  347. {execweave-0.8.6 → execweave-0.8.7}/src/execweave/scalability_benchmark.py +0 -0
  348. {execweave-0.8.6 → execweave-0.8.7}/src/execweave/schema.py +0 -0
  349. {execweave-0.8.6 → execweave-0.8.7}/src/execweave/scope.py +0 -0
  350. {execweave-0.8.6 → execweave-0.8.7}/src/execweave/semantic.py +0 -0
  351. {execweave-0.8.6 → execweave-0.8.7}/src/execweave/sink.py +0 -0
  352. {execweave-0.8.6 → execweave-0.8.7}/src/execweave/strace_backend.py +0 -0
  353. {execweave-0.8.6 → execweave-0.8.7}/src/execweave/stream_assembly.py +0 -0
  354. {execweave-0.8.6 → execweave-0.8.7}/src/execweave/theme.py +0 -0
  355. {execweave-0.8.6 → execweave-0.8.7}/src/execweave/top.py +0 -0
  356. {execweave-0.8.6 → execweave-0.8.7}/src/execweave/top_cli.py +0 -0
  357. {execweave-0.8.6 → execweave-0.8.7}/src/execweave/validate.py +0 -0
  358. {execweave-0.8.6 → execweave-0.8.7}/src/execweave/view_cli.py +0 -0
  359. {execweave-0.8.6 → execweave-0.8.7}/src/execweave/viewer.py +0 -0
  360. {execweave-0.8.6 → execweave-0.8.7}/src/execweave/viewer_content_inspector.py +0 -0
  361. {execweave-0.8.6 → execweave-0.8.7}/src/execweave/viewer_dashboard_focus.py +0 -0
  362. {execweave-0.8.6 → execweave-0.8.7}/src/execweave/viewer_dashboard_hardening.py +0 -0
  363. {execweave-0.8.6 → execweave-0.8.7}/src/execweave/viewer_dashboard_hardening_v2.py +0 -0
  364. {execweave-0.8.6 → execweave-0.8.7}/src/execweave/viewer_live_layout.py +0 -0
  365. {execweave-0.8.6 → execweave-0.8.7}/src/execweave/viewer_projection_base.py +0 -0
  366. {execweave-0.8.6 → execweave-0.8.7}/src/execweave/workflow.py +0 -0
  367. {execweave-0.8.6 → execweave-0.8.7}/tests/dashboard_readability_fixture.py +0 -0
  368. {execweave-0.8.6 → execweave-0.8.7}/tests/fixtures/codex_multi_agent/PROVENANCE.md +0 -0
  369. {execweave-0.8.6 → execweave-0.8.7}/tests/fixtures/codex_multi_agent/hook-payloads.json +0 -0
  370. {execweave-0.8.6 → execweave-0.8.7}/tests/fixtures/codex_multi_agent/rollout-main.jsonl +0 -0
  371. {execweave-0.8.6 → execweave-0.8.7}/tests/fixtures/hooks/README.md +0 -0
  372. {execweave-0.8.6 → execweave-0.8.7}/tests/fixtures/hooks/claude.json +0 -0
  373. {execweave-0.8.6 → execweave-0.8.7}/tests/fixtures/hooks/codex.json +0 -0
  374. {execweave-0.8.6 → execweave-0.8.7}/tests/fixtures/hooks/cursor.json +0 -0
  375. {execweave-0.8.6 → execweave-0.8.7}/tests/fixtures/hooks/gemini.json +0 -0
  376. {execweave-0.8.6 → execweave-0.8.7}/tests/fixtures/hooks/manifest.json +0 -0
  377. {execweave-0.8.6 → execweave-0.8.7}/tests/fixtures/hooks/opencode.json +0 -0
  378. {execweave-0.8.6 → execweave-0.8.7}/tests/multi_agent_run_fixture.py +0 -0
  379. {execweave-0.8.6 → execweave-0.8.7}/tests/test_agent_bootstrap.py +0 -0
  380. {execweave-0.8.6 → execweave-0.8.7}/tests/test_agent_message_viewer.py +0 -0
  381. {execweave-0.8.6 → execweave-0.8.7}/tests/test_agent_node_labels.py +0 -0
  382. {execweave-0.8.6 → execweave-0.8.7}/tests/test_agent_said_panel.py +0 -0
  383. {execweave-0.8.6 → execweave-0.8.7}/tests/test_agent_topology_evidence.py +0 -0
  384. {execweave-0.8.6 → execweave-0.8.7}/tests/test_agent_trace_lifecycle.py +0 -0
  385. {execweave-0.8.6 → execweave-0.8.7}/tests/test_agent_trace_viewer_visibility.py +0 -0
  386. {execweave-0.8.6 → execweave-0.8.7}/tests/test_analysis.py +0 -0
  387. {execweave-0.8.6 → execweave-0.8.7}/tests/test_anthropic.py +0 -0
  388. {execweave-0.8.6 → execweave-0.8.7}/tests/test_antigravity_agent_collaboration.py +0 -0
  389. {execweave-0.8.6 → execweave-0.8.7}/tests/test_antigravity_cursor_launch.py +0 -0
  390. {execweave-0.8.6 → execweave-0.8.7}/tests/test_antigravity_history_replay.py +0 -0
  391. {execweave-0.8.6 → execweave-0.8.7}/tests/test_antigravity_identity_topology.py +0 -0
  392. {execweave-0.8.6 → execweave-0.8.7}/tests/test_antigravity_lifecycle.py +0 -0
  393. {execweave-0.8.6 → execweave-0.8.7}/tests/test_antigravity_linkage_projection.py +0 -0
  394. {execweave-0.8.6 → execweave-0.8.7}/tests/test_antigravity_multi_conversation_isolation.py +0 -0
  395. {execweave-0.8.6 → execweave-0.8.7}/tests/test_antigravity_official_contract.py +0 -0
  396. {execweave-0.8.6 → execweave-0.8.7}/tests/test_antigravity_root_child_history_v2.py +0 -0
  397. {execweave-0.8.6 → execweave-0.8.7}/tests/test_antigravity_subagent_transcript_linkage.py +0 -0
  398. {execweave-0.8.6 → execweave-0.8.7}/tests/test_antigravity_trace_capability_cli.py +0 -0
  399. {execweave-0.8.6 → execweave-0.8.7}/tests/test_auto_specialized.py +0 -0
  400. {execweave-0.8.6 → execweave-0.8.7}/tests/test_backends.py +0 -0
  401. {execweave-0.8.6 → execweave-0.8.7}/tests/test_claude_adapter.py +0 -0
  402. {execweave-0.8.6 → execweave-0.8.7}/tests/test_claude_delegation.py +0 -0
  403. {execweave-0.8.6 → execweave-0.8.7}/tests/test_claude_full_fidelity.py +0 -0
  404. {execweave-0.8.6 → execweave-0.8.7}/tests/test_claude_hook_contract.py +0 -0
  405. {execweave-0.8.6 → execweave-0.8.7}/tests/test_claude_hook_metadata.py +0 -0
  406. {execweave-0.8.6 → execweave-0.8.7}/tests/test_claude_hook_viewer.py +0 -0
  407. {execweave-0.8.6 → execweave-0.8.7}/tests/test_claude_model_observer.py +0 -0
  408. {execweave-0.8.6 → execweave-0.8.7}/tests/test_claude_record.py +0 -0
  409. {execweave-0.8.6 → execweave-0.8.7}/tests/test_codex_archive_full_fidelity.py +0 -0
  410. {execweave-0.8.6 → execweave-0.8.7}/tests/test_codex_conversation_isolation.py +0 -0
  411. {execweave-0.8.6 → execweave-0.8.7}/tests/test_codex_full_fidelity.py +0 -0
  412. {execweave-0.8.6 → execweave-0.8.7}/tests/test_codex_hook_lifecycle.py +0 -0
  413. {execweave-0.8.6 → execweave-0.8.7}/tests/test_codex_hook_partial_capture.py +0 -0
  414. {execweave-0.8.6 → execweave-0.8.7}/tests/test_codex_message_diagnostics.py +0 -0
  415. {execweave-0.8.6 → execweave-0.8.7}/tests/test_codex_message_transport_diagnostics.py +0 -0
  416. {execweave-0.8.6 → execweave-0.8.7}/tests/test_codex_plain_routed_agent_message.py +0 -0
  417. {execweave-0.8.6 → execweave-0.8.7}/tests/test_codex_real_multi_agent_conversation.py +0 -0
  418. {execweave-0.8.6 → execweave-0.8.7}/tests/test_codex_record.py +0 -0
  419. {execweave-0.8.6 → execweave-0.8.7}/tests/test_codex_reducer_command.py +0 -0
  420. {execweave-0.8.6 → execweave-0.8.7}/tests/test_codex_rollout_structures.py +0 -0
  421. {execweave-0.8.6 → execweave-0.8.7}/tests/test_codex_rollout_trace.py +0 -0
  422. {execweave-0.8.6 → execweave-0.8.7}/tests/test_codex_routing_native_identity.py +0 -0
  423. {execweave-0.8.6 → execweave-0.8.7}/tests/test_collector.py +0 -0
  424. {execweave-0.8.6 → execweave-0.8.7}/tests/test_command.py +0 -0
  425. {execweave-0.8.6 → execweave-0.8.7}/tests/test_condense.py +0 -0
  426. {execweave-0.8.6 → execweave-0.8.7}/tests/test_conversation_access.py +0 -0
  427. {execweave-0.8.6 → execweave-0.8.7}/tests/test_conversation_agent_focus.py +0 -0
  428. {execweave-0.8.6 → execweave-0.8.7}/tests/test_conversation_agent_isolation.py +0 -0
  429. {execweave-0.8.6 → execweave-0.8.7}/tests/test_conversation_identity_merge.py +0 -0
  430. {execweave-0.8.6 → execweave-0.8.7}/tests/test_conversation_message_observation_dedupe.py +0 -0
  431. {execweave-0.8.6 → execweave-0.8.7}/tests/test_conversation_provider_parity.py +0 -0
  432. {execweave-0.8.6 → execweave-0.8.7}/tests/test_conversation_root_authority.py +0 -0
  433. {execweave-0.8.6 → execweave-0.8.7}/tests/test_correlation.py +0 -0
  434. {execweave-0.8.6 → execweave-0.8.7}/tests/test_correlation_canonical_path.py +0 -0
  435. {execweave-0.8.6 → execweave-0.8.7}/tests/test_correlation_checker.py +0 -0
  436. {execweave-0.8.6 → execweave-0.8.7}/tests/test_correlation_process_exe.py +0 -0
  437. {execweave-0.8.6 → execweave-0.8.7}/tests/test_cross_provider_agent_trace.py +0 -0
  438. {execweave-0.8.6 → execweave-0.8.7}/tests/test_cursor_adapter.py +0 -0
  439. {execweave-0.8.6 → execweave-0.8.7}/tests/test_cursor_delegation.py +0 -0
  440. {execweave-0.8.6 → execweave-0.8.7}/tests/test_cursor_full_fidelity.py +0 -0
  441. {execweave-0.8.6 → execweave-0.8.7}/tests/test_cursor_hook_contract.py +0 -0
  442. {execweave-0.8.6 → execweave-0.8.7}/tests/test_cursor_hook_fail_open.py +0 -0
  443. {execweave-0.8.6 → execweave-0.8.7}/tests/test_cursor_record.py +0 -0
  444. {execweave-0.8.6 → execweave-0.8.7}/tests/test_cursor_task_linkage.py +0 -0
  445. {execweave-0.8.6 → execweave-0.8.7}/tests/test_dashboard_information_architecture.py +0 -0
  446. {execweave-0.8.6 → execweave-0.8.7}/tests/test_dashboard_round_fold_state_e2e.py +0 -0
  447. {execweave-0.8.6 → execweave-0.8.7}/tests/test_delegation_viewer.py +0 -0
  448. {execweave-0.8.6 → execweave-0.8.7}/tests/test_evidence_grade.py +0 -0
  449. {execweave-0.8.6 → execweave-0.8.7}/tests/test_execution_viewer.py +0 -0
  450. {execweave-0.8.6 → execweave-0.8.7}/tests/test_fidelity.py +0 -0
  451. {execweave-0.8.6 → execweave-0.8.7}/tests/test_filesystem_resilience.py +0 -0
  452. {execweave-0.8.6 → execweave-0.8.7}/tests/test_focus.py +0 -0
  453. {execweave-0.8.6 → execweave-0.8.7}/tests/test_fold_budget_setting.py +0 -0
  454. {execweave-0.8.6 → execweave-0.8.7}/tests/test_full_fidelity.py +0 -0
  455. {execweave-0.8.6 → execweave-0.8.7}/tests/test_gemini_adapter.py +0 -0
  456. {execweave-0.8.6 → execweave-0.8.7}/tests/test_gemini_full_fidelity.py +0 -0
  457. {execweave-0.8.6 → execweave-0.8.7}/tests/test_gemini_hook_contract.py +0 -0
  458. {execweave-0.8.6 → execweave-0.8.7}/tests/test_gemini_lifecycle.py +0 -0
  459. {execweave-0.8.6 → execweave-0.8.7}/tests/test_gemini_record.py +0 -0
  460. {execweave-0.8.6 → execweave-0.8.7}/tests/test_graph.py +0 -0
  461. {execweave-0.8.6 → execweave-0.8.7}/tests/test_graph_clear_focus_e2e.py +0 -0
  462. {execweave-0.8.6 → execweave-0.8.7}/tests/test_graph_edge_routing_e2e.py +0 -0
  463. {execweave-0.8.6 → execweave-0.8.7}/tests/test_graph_lane_separation_e2e.py +0 -0
  464. {execweave-0.8.6 → execweave-0.8.7}/tests/test_graph_node_sizing_e2e.py +0 -0
  465. {execweave-0.8.6 → execweave-0.8.7}/tests/test_graph_ops.py +0 -0
  466. {execweave-0.8.6 → execweave-0.8.7}/tests/test_hook_fixture_corpus.py +0 -0
  467. {execweave-0.8.6 → execweave-0.8.7}/tests/test_http_proxy.py +0 -0
  468. {execweave-0.8.6 → execweave-0.8.7}/tests/test_inference_endpoint_identity.py +0 -0
  469. {execweave-0.8.6 → execweave-0.8.7}/tests/test_inference_gateway.py +0 -0
  470. {execweave-0.8.6 → execweave-0.8.7}/tests/test_inference_gateway_full_fidelity.py +0 -0
  471. {execweave-0.8.6 → execweave-0.8.7}/tests/test_inference_identity.py +0 -0
  472. {execweave-0.8.6 → execweave-0.8.7}/tests/test_integrity.py +0 -0
  473. {execweave-0.8.6 → execweave-0.8.7}/tests/test_litellm_callback.py +0 -0
  474. {execweave-0.8.6 → execweave-0.8.7}/tests/test_live_auth.py +0 -0
  475. {execweave-0.8.6 → execweave-0.8.7}/tests/test_live_dashboard.py +0 -0
  476. {execweave-0.8.6 → execweave-0.8.7}/tests/test_live_dashboard_js.py +0 -0
  477. {execweave-0.8.6 → execweave-0.8.7}/tests/test_live_delta.py +0 -0
  478. {execweave-0.8.6 → execweave-0.8.7}/tests/test_live_logs_export.py +0 -0
  479. {execweave-0.8.6 → execweave-0.8.7}/tests/test_live_theme.py +0 -0
  480. {execweave-0.8.6 → execweave-0.8.7}/tests/test_lmstudio_auto_specialized.py +0 -0
  481. {execweave-0.8.6 → execweave-0.8.7}/tests/test_local_runtime_live_capture.py +0 -0
  482. {execweave-0.8.6 → execweave-0.8.7}/tests/test_model_runtime.py +0 -0
  483. {execweave-0.8.6 → execweave-0.8.7}/tests/test_model_runtime_full_fidelity.py +0 -0
  484. {execweave-0.8.6 → execweave-0.8.7}/tests/test_openai_compatible.py +0 -0
  485. {execweave-0.8.6 → execweave-0.8.7}/tests/test_opencode_adapter.py +0 -0
  486. {execweave-0.8.6 → execweave-0.8.7}/tests/test_opencode_event_contract.py +0 -0
  487. {execweave-0.8.6 → execweave-0.8.7}/tests/test_opencode_event_lifecycle.py +0 -0
  488. {execweave-0.8.6 → execweave-0.8.7}/tests/test_opencode_full_fidelity.py +0 -0
  489. {execweave-0.8.6 → execweave-0.8.7}/tests/test_opencode_identity_unification.py +0 -0
  490. {execweave-0.8.6 → execweave-0.8.7}/tests/test_opencode_plugin.py +0 -0
  491. {execweave-0.8.6 → execweave-0.8.7}/tests/test_opencode_record.py +0 -0
  492. {execweave-0.8.6 → execweave-0.8.7}/tests/test_opencode_task_session_linkage.py +0 -0
  493. {execweave-0.8.6 → execweave-0.8.7}/tests/test_overhead_benchmark.py +0 -0
  494. {execweave-0.8.6 → execweave-0.8.7}/tests/test_pr25_premerge_hardening_contract.py +0 -0
  495. {execweave-0.8.6 → execweave-0.8.7}/tests/test_provider_capability.py +0 -0
  496. {execweave-0.8.6 → execweave-0.8.7}/tests/test_provider_conversation_evidence.py +0 -0
  497. {execweave-0.8.6 → execweave-0.8.7}/tests/test_provider_conversation_history_integrity.py +0 -0
  498. {execweave-0.8.6 → execweave-0.8.7}/tests/test_provider_lifecycle.py +0 -0
  499. {execweave-0.8.6 → execweave-0.8.7}/tests/test_release_stage_integrity_version_guard.py +0 -0
  500. {execweave-0.8.6 → execweave-0.8.7}/tests/test_rule_pack.py +0 -0
  501. {execweave-0.8.6 → execweave-0.8.7}/tests/test_schema.py +0 -0
  502. {execweave-0.8.6 → execweave-0.8.7}/tests/test_scope.py +0 -0
  503. {execweave-0.8.6 → execweave-0.8.7}/tests/test_semantic.py +0 -0
  504. {execweave-0.8.6 → execweave-0.8.7}/tests/test_shared_injected_context_scope.py +0 -0
  505. {execweave-0.8.6 → execweave-0.8.7}/tests/test_strace_backend.py +0 -0
  506. {execweave-0.8.6 → execweave-0.8.7}/tests/test_stream_assembly.py +0 -0
  507. {execweave-0.8.6 → execweave-0.8.7}/tests/test_threat_model.py +0 -0
  508. {execweave-0.8.6 → execweave-0.8.7}/tests/test_tool_traffic_e2e.py +0 -0
  509. {execweave-0.8.6 → execweave-0.8.7}/tests/test_top_detached.py +0 -0
  510. {execweave-0.8.6 → execweave-0.8.7}/tests/test_v063_features.py +0 -0
  511. {execweave-0.8.6 → execweave-0.8.7}/tests/test_v064_live_auto_integrations.py +0 -0
  512. {execweave-0.8.6 → execweave-0.8.7}/tests/test_v064_live_evidence.py +0 -0
  513. {execweave-0.8.6 → execweave-0.8.7}/tests/test_v079_review_e2e.py +0 -0
  514. {execweave-0.8.6 → execweave-0.8.7}/tests/test_v079_review_regressions.py +0 -0
  515. {execweave-0.8.6 → execweave-0.8.7}/tests/test_v083_release_gate_p2.py +0 -0
  516. {execweave-0.8.6 → execweave-0.8.7}/tests/test_validate.py +0 -0
  517. {execweave-0.8.6 → execweave-0.8.7}/tests/test_version.py +0 -0
  518. {execweave-0.8.6 → execweave-0.8.7}/tests/test_viewer.py +0 -0
  519. {execweave-0.8.6 → execweave-0.8.7}/tests/test_viewer_child_authority.py +0 -0
  520. {execweave-0.8.6 → execweave-0.8.7}/tests/test_viewer_content_inspector.py +0 -0
  521. {execweave-0.8.6 → execweave-0.8.7}/tests/test_workflow.py +0 -0
@@ -43,10 +43,6 @@ jobs:
43
43
  HEAD_REF: "${{ github.head_ref }}"
44
44
  run: |
45
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
46
  release_metadata_changed=""
51
47
  if git diff --name-only "$BASELINE_REF...HEAD" \
52
48
  | grep -qx 'tests/test_v069_dashboard_release.py'; then
@@ -55,11 +51,6 @@ jobs:
55
51
  if [[ "$HEAD_REF" == release/* && -n "$release_metadata_changed" ]]; then
56
52
  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
53
  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
54
  conversation_focus_changed=""
64
55
  if git diff --name-only "$BASELINE_REF...HEAD" \
65
56
  | grep -qx 'tests/test_conversation_agent_focus.py'; then
@@ -68,11 +59,6 @@ jobs:
68
59
  if [[ "$HEAD_REF" == "release/0.8.3-graph-ergonomics" && -n "$conversation_focus_changed" ]]; then
69
60
  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
61
  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
62
  conversation_identity_changed=""
77
63
  if git diff --name-only "$BASELINE_REF...HEAD" \
78
64
  | grep -qx 'tests/test_conversation_identity_merge.py'; then
@@ -83,9 +69,6 @@ jobs:
83
69
  || [[ "$HEAD_REF" == "release/0.8.3-graph-ergonomics" ]]; }; then
84
70
  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
71
  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
72
  model_runtime_identity_changed=""
90
73
  if git diff --name-only "$BASELINE_REF...HEAD" \
91
74
  | grep -qx 'tests/test_model_runtime.py'; then
@@ -95,4 +78,37 @@ jobs:
95
78
  && -n "$model_runtime_identity_changed" ]]; then
96
79
  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
80
  fi
98
- python scripts/check_release_stage_integrity.py "${args[@]}"
81
+ if [[ "$HEAD_REF" == "fix/provider-isolation" ]]; then
82
+ while IFS= read -r path; do
83
+ case "$path" in
84
+ tests/test_viewer_projection.py)
85
+ args+=(--allow-test-change "tests/test_viewer_projection.py=non-loopback endpoints now fold into viewer-cluster:external; loopback stays separate. Test node ID is unchanged")
86
+ ;;
87
+ tests/test_live.py)
88
+ args+=(--allow-test-change "tests/test_live.py=process-tree layout spreads a small depth Map into Math.max; coordinate arrays still must not be spread")
89
+ ;;
90
+ tests/test_dashboard_simplification.py)
91
+ args+=(--allow-test-change "tests/test_dashboard_simplification.py=projected node set now contains External instead of the raw outbound IP")
92
+ ;;
93
+ tests/test_codex_adapter.py)
94
+ args+=(--allow-test-change "tests/test_codex_adapter.py=apply_patch now declares explicit file targets so the graph preserves the tool-call-to-file relationship; existing test node IDs remain unchanged")
95
+ ;;
96
+ tests/test_dashboard_ux_and_hook_projection.py)
97
+ args+=(--allow-test-change "tests/test_dashboard_ux_and_hook_projection.py=live graph projection folds the public endpoint; hook process remains hidden")
98
+ ;;
99
+ tests/test_viewer_agent_isolation_e2e.py)
100
+ args+=(--allow-test-change "tests/test_viewer_agent_isolation_e2e.py=non-agent click target is External after IP collapse")
101
+ ;;
102
+ tests/test_dashboard_readability_e2e.py)
103
+ args+=(--allow-test-change "tests/test_dashboard_readability_e2e.py=Dagre reflows existing nodes when a live node is added; identity of those nodes is unchanged")
104
+ ;;
105
+ tests/test_pr25_premerge_hardening_e2e.py)
106
+ args+=(--allow-test-change "tests/test_pr25_premerge_hardening_e2e.py=Dagre LR placement replaces the old barycentre Y order; files stay to the right of owners and do not overlap")
107
+ ;;
108
+ tests/test_per_agent_conversation_default.py)
109
+ args+=(--allow-test-change "tests/test_per_agent_conversation_default.py=isTask recipient/sender checks moved from viewer_agent_panel.py into viewer_agent_panel_default.py; historical test names are unchanged")
110
+ ;;
111
+ esac
112
+ done < <(git diff --name-only "$BASELINE_REF...HEAD" -- tests)
113
+ fi
114
+ python scripts/check_release_stage_integrity.py "${args[@]}"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: execweave
3
- Version: 0.8.6
3
+ Version: 0.8.7
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
@@ -51,6 +51,8 @@ Requires-Dist: build>=1.2; extra == 'release'
51
51
  Requires-Dist: twine>=6.0; extra == 'release'
52
52
  Description-Content-Type: text/markdown
53
53
 
54
+ > Codex + AGY are now fully reworked; the remaining providers are not yet fully fixed.
55
+
54
56
  # ExecWeave
55
57
 
56
58
  <!-- i18n-nav:start -->
@@ -83,7 +85,7 @@ ExecWeave is a source-available, local-first observability project that turns AI
83
85
  <img src="docs/assets/codex.gif" alt="ExecWeave animated live demo" width="100%">
84
86
  </p>
85
87
 
86
- This README documents **v0.8.6**.
88
+ This README documents **v0.8.7**.
87
89
 
88
90
  ## Why ExecWeave
89
91
 
@@ -1,3 +1,5 @@
1
+ > Codex + AGY wurden vollständig überarbeitet; die übrigen Provider sind noch nicht vollständig korrigiert.
2
+
1
3
  # ExecWeave
2
4
 
3
5
  <!-- i18n-nav:start -->
@@ -30,7 +32,7 @@ ExecWeave ist ein source-available, local-first Observability-Projekt, das Aktiv
30
32
  <img src="docs/assets/codex.gif" alt="ExecWeave animated live demo" width="100%">
31
33
  </p>
32
34
 
33
- Dieses README dokumentiert **v0.8.6**.
35
+ Dieses README dokumentiert **v0.8.7**.
34
36
 
35
37
  ## Warum ExecWeave
36
38
 
@@ -1,3 +1,5 @@
1
+ > Codex + AGY ont maintenant été entièrement remaniés ; les autres providers ne sont pas encore complètement corrigés.
2
+
1
3
  # ExecWeave
2
4
 
3
5
  <!-- i18n-nav:start -->
@@ -30,7 +32,7 @@ ExecWeave est un projet d’observabilité source-available et local-first qui t
30
32
  <img src="docs/assets/codex.gif" alt="ExecWeave animated live demo" width="100%">
31
33
  </p>
32
34
 
33
- Ce README décrit **v0.8.6**.
35
+ Ce README décrit **v0.8.7**.
34
36
 
35
37
  ## Pourquoi ExecWeave
36
38
 
@@ -1,3 +1,5 @@
1
+ > Codex + AGY は完全な再構成が完了しました。残りの provider はまだ修正完了していません。
2
+
1
3
  # ExecWeave
2
4
 
3
5
  <!-- i18n-nav:start -->
@@ -30,7 +32,7 @@ ExecWeave は source-available / local-first の observability プロジェク
30
32
  <img src="docs/assets/codex.gif" alt="ExecWeave animated live demo" width="100%">
31
33
  </p>
32
34
 
33
- この README は **v0.8.6** を説明します。
35
+ この README は **v0.8.7** を説明します。
34
36
 
35
37
  ## ExecWeave を使う理由
36
38
 
@@ -1,3 +1,5 @@
1
+ > Codex + AGY는 전체 재정비가 완료되었습니다. 나머지 provider는 아직 수정이 완료되지 않았습니다.
2
+
1
3
  # ExecWeave
2
4
 
3
5
  <!-- i18n-nav:start -->
@@ -30,7 +32,7 @@ ExecWeave는 source-available, local-first observability 프로젝트입니다.
30
32
  <img src="docs/assets/codex.gif" alt="ExecWeave animated live demo" width="100%">
31
33
  </p>
32
34
 
33
- 이 README는 **v0.8.6**을 설명합니다.
35
+ 이 README는 **v0.8.7**을 설명합니다.
34
36
 
35
37
  ## 왜 ExecWeave인가
36
38
 
@@ -1,3 +1,5 @@
1
+ > Codex + AGY are now fully reworked; the remaining providers are not yet fully fixed.
2
+
1
3
  # ExecWeave
2
4
 
3
5
  <!-- i18n-nav:start -->
@@ -30,7 +32,7 @@ ExecWeave is a source-available, local-first observability project that turns AI
30
32
  <img src="docs/assets/codex.gif" alt="ExecWeave animated live demo" width="100%">
31
33
  </p>
32
34
 
33
- This README documents **v0.8.6**.
35
+ This README documents **v0.8.7**.
34
36
 
35
37
  ## Why ExecWeave
36
38
 
@@ -1,3 +1,5 @@
1
+ > Codex + AGY полностью переработаны; остальные провайдеры ещё не исправлены полностью.
2
+
1
3
  # ExecWeave
2
4
 
3
5
  <!-- i18n-nav:start -->
@@ -30,7 +32,7 @@ ExecWeave — source-available, local-first проект наблюдаемос
30
32
  <img src="docs/assets/codex.gif" alt="ExecWeave animated live demo" width="100%">
31
33
  </p>
32
34
 
33
- Этот README описывает **v0.8.6**.
35
+ Этот README описывает **v0.8.7**.
34
36
 
35
37
  ## Почему ExecWeave
36
38
 
@@ -1,3 +1,5 @@
1
+ > Codex + AGY 已完成完整重整;其余 provider 尚未修正完毕。
2
+
1
3
  # ExecWeave
2
4
 
3
5
  <!-- i18n-nav:start -->
@@ -30,7 +32,7 @@ ExecWeave 是一个 source-available、local-first 的可观测性项目,把 A
30
32
  <img src="docs/assets/codex.gif" alt="ExecWeave animated live demo" width="100%">
31
33
  </p>
32
34
 
33
- 本 README 对应 **v0.8.6**。
35
+ 本 README 对应 **v0.8.7**。
34
36
 
35
37
  ## 为什么是 ExecWeave
36
38
 
@@ -1,3 +1,5 @@
1
+ > Codex + AGY 已完成完整重整;其餘 provider 尚未修正完畢。
2
+
1
3
  # ExecWeave
2
4
 
3
5
  <!-- i18n-nav:start -->
@@ -30,7 +32,7 @@ ExecWeave 是一個 source-available、local-first 的可觀測性專案,會
30
32
  <img src="docs/assets/codex.gif" alt="ExecWeave animated live demo" width="100%">
31
33
  </p>
32
34
 
33
- 本 README 對應 **v0.8.6**。
35
+ 本 README 對應 **v0.8.7**。
34
36
 
35
37
  ## 為什麼是 ExecWeave
36
38
 
@@ -4,8 +4,8 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "execweave"
7
- # ExecWeave v0.8.6 release metadata
8
- version = "0.8.6"
7
+ # ExecWeave v0.8.7 release metadata
8
+ version = "0.8.7"
9
9
  description = "Turn AI-agent runtime behavior into a local interactive execution graph."
10
10
  readme = "README.md"
11
11
  requires-python = ">=3.10"
@@ -1,3 +1,3 @@
1
1
  """ExecWeave runtime graph package."""
2
2
 
3
- __version__ = "0.8.6"
3
+ __version__ = "0.8.7"
@@ -0,0 +1,102 @@
1
+ from __future__ import annotations
2
+
3
+ from typing import Any
4
+
5
+ from .agent_topology import ROOT_PATH
6
+
7
+
8
+ def _normalized_preview_text(value: object) -> str:
9
+ return " ".join(str(value or "").split())
10
+
11
+
12
+ def _parent_agent_path(path: str) -> str:
13
+ parent = path.rsplit("/", 1)[0] if "/" in path else ""
14
+ return parent or ROOT_PATH
15
+
16
+
17
+ def _is_antigravity_addressed_task(message: dict[str, Any], path: str) -> bool:
18
+ if str(message.get("recipient") or "") != path:
19
+ return False
20
+ kind = str(message.get("kind") or "")
21
+ role = str(message.get("content_role") or "")
22
+ return kind == "subagent_task" or role == "antigravity_addressed_task"
23
+
24
+
25
+ def sanitize_antigravity_preview_messages(entries: list[dict[str, Any]]) -> None:
26
+ """Canonicalize child assignments and drop copies pasted onto /root."""
27
+ child_replies: set[str] = set()
28
+ child_assignments: set[str] = set()
29
+ for entry in entries:
30
+ if str(entry.get("provider") or "").lower() != "antigravity":
31
+ continue
32
+ preview = entry.get("conversation_preview")
33
+ if not isinstance(preview, dict) or preview.get("is_root") is not False:
34
+ continue
35
+ path = str(preview.get("agent_path") or "")
36
+ for message in preview.get("messages") or []:
37
+ if not isinstance(message, dict):
38
+ continue
39
+ kind = str(message.get("kind") or "")
40
+ sender = str(message.get("sender") or "")
41
+ text = _normalized_preview_text(message.get("text"))
42
+ if _is_antigravity_addressed_task(message, path) and text:
43
+ child_assignments.add(text)
44
+ if kind not in {"assistant_message", "subagent_final_response"}:
45
+ continue
46
+ if path and sender and sender != path:
47
+ continue
48
+ if text:
49
+ child_replies.add(text)
50
+
51
+ for entry in entries:
52
+ if str(entry.get("provider") or "").lower() != "antigravity":
53
+ continue
54
+ preview = entry.get("conversation_preview")
55
+ if not isinstance(preview, dict):
56
+ continue
57
+ messages = [message for message in preview.get("messages") or [] if isinstance(message, dict)]
58
+ path = str(preview.get("agent_path") or "")
59
+ is_root = preview.get("is_root") is True or path == ROOT_PATH
60
+ kept: list[dict[str, Any]] = []
61
+ assignment_texts: set[str] = set()
62
+ if not is_root:
63
+ for message in messages:
64
+ kind = str(message.get("kind") or "")
65
+ if kind in {"task", "subagent_task"} or str(
66
+ message.get("content_role") or ""
67
+ ) == "antigravity_addressed_task":
68
+ text = _normalized_preview_text(message.get("text"))
69
+ if text:
70
+ assignment_texts.add(text)
71
+ for original in messages:
72
+ message = original
73
+ kind = str(message.get("kind") or "")
74
+ recipient = str(message.get("recipient") or "")
75
+ text = _normalized_preview_text(message.get("text"))
76
+ if is_root:
77
+ if kind == "subagent_task" and recipient in {"", ROOT_PATH, "/root"}:
78
+ continue
79
+ if kind == "assistant_message" and text and text in child_assignments:
80
+ continue
81
+ if text and text in child_replies and kind != "assistant_message":
82
+ continue
83
+ else:
84
+ if _is_antigravity_addressed_task(message, path):
85
+ sender = str(message.get("sender") or "")
86
+ message = dict(message)
87
+ message["kind"] = "task"
88
+ message["phase"] = "assignment"
89
+ message["content_role"] = "antigravity_addressed_task"
90
+ if sender in {"", "user"}:
91
+ message["sender"] = _parent_agent_path(path)
92
+ kind = "task"
93
+ if (
94
+ kind == "user_message"
95
+ and text
96
+ and text in assignment_texts
97
+ and recipient == path
98
+ ):
99
+ continue
100
+ kept.append(message)
101
+ preview["messages"] = kept
102
+ preview["message_count"] = len(kept)
@@ -165,7 +165,10 @@ def _tool_call(payload: dict[str, Any]) -> tuple[dict[str, Any], dict[str, Any],
165
165
  attributes={
166
166
  "provider": "antigravity",
167
167
  "tool_name": name,
168
+ "conversation_id": conversation_id,
168
169
  "step_index": step,
170
+ "arguments": canonical_args,
171
+ "arguments_observed": isinstance(args, dict),
169
172
  },
170
173
  )
171
174
  tool = _entity(