execweave 0.7.9__tar.gz → 0.8.1__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 (462) hide show
  1. execweave-0.8.1/.github/workflows/provider-capability-stage-integrity.yml +43 -0
  2. {execweave-0.7.9 → execweave-0.8.1}/PKG-INFO +4 -4
  3. {execweave-0.7.9 → execweave-0.8.1}/README.de.md +3 -3
  4. {execweave-0.7.9 → execweave-0.8.1}/README.fr.md +3 -3
  5. {execweave-0.7.9 → execweave-0.8.1}/README.ja.md +3 -3
  6. {execweave-0.7.9 → execweave-0.8.1}/README.ko.md +3 -3
  7. {execweave-0.7.9 → execweave-0.8.1}/README.md +3 -3
  8. {execweave-0.7.9 → execweave-0.8.1}/README.ru.md +3 -3
  9. {execweave-0.7.9 → execweave-0.8.1}/README.zh-CN.md +3 -3
  10. {execweave-0.7.9 → execweave-0.8.1}/README.zh-TW.md +3 -3
  11. execweave-0.8.1/RELEASE-PLAN-0.8.0.md +176 -0
  12. {execweave-0.7.9 → execweave-0.8.1}/pyproject.toml +2 -2
  13. {execweave-0.7.9 → execweave-0.8.1}/scripts/check_release_stage_integrity.py +56 -7
  14. {execweave-0.7.9 → execweave-0.8.1}/src/execweave/__init__.py +1 -1
  15. {execweave-0.7.9 → execweave-0.8.1}/src/execweave/_conversation_records_core.py +32 -10
  16. {execweave-0.7.9 → execweave-0.8.1}/src/execweave/cli.py +5 -0
  17. {execweave-0.7.9 → execweave-0.8.1}/src/execweave/dashboard_shell.py +2 -1
  18. {execweave-0.7.9 → execweave-0.8.1}/src/execweave/live_core.py +18 -1
  19. {execweave-0.7.9 → execweave-0.8.1}/src/execweave/top_cli.py +3 -0
  20. {execweave-0.7.9 → execweave-0.8.1}/src/execweave/view_cli.py +3 -0
  21. execweave-0.8.1/src/execweave/viewer_agent_panel.py +281 -0
  22. {execweave-0.7.9 → execweave-0.8.1}/src/execweave/viewer_dashboard_clean.py +117 -2
  23. {execweave-0.7.9 → execweave-0.8.1}/tests/multi_agent_run_fixture.py +32 -2
  24. {execweave-0.7.9 → execweave-0.8.1}/tests/test_agent_said_panel.py +4 -4
  25. {execweave-0.7.9 → execweave-0.8.1}/tests/test_agent_topology_evidence.py +4 -1
  26. {execweave-0.7.9 → execweave-0.8.1}/tests/test_conversation_agent_focus.py +4 -4
  27. {execweave-0.7.9 → execweave-0.8.1}/tests/test_dashboard_information_architecture.py +4 -4
  28. {execweave-0.7.9 → execweave-0.8.1}/tests/test_dashboard_simplification.py +1 -1
  29. execweave-0.8.1/tests/test_fold_budget_setting.py +121 -0
  30. {execweave-0.7.9 → execweave-0.8.1}/tests/test_per_agent_conversation_default.py +4 -4
  31. execweave-0.8.1/tests/test_release_stage_integrity_version_guard.py +112 -0
  32. execweave-0.8.1/tests/test_shared_injected_context_scope.py +90 -0
  33. {execweave-0.7.9 → execweave-0.8.1}/tests/test_v069_dashboard_release.py +3 -3
  34. {execweave-0.7.9 → execweave-0.8.1}/tests/test_viewer_agent_isolation_e2e.py +150 -2
  35. execweave-0.7.9/.github/workflows/provider-capability-stage-integrity.yml +0 -69
  36. execweave-0.7.9/RELEASE-PLAN-0.7.5-0.8.0.md +0 -824
  37. execweave-0.7.9/src/execweave/viewer_agent_panel.py +0 -90
  38. {execweave-0.7.9 → execweave-0.8.1}/.github/workflows/ci.yml +0 -0
  39. {execweave-0.7.9 → execweave-0.8.1}/.github/workflows/cleanup-workflow-history.yml +0 -0
  40. {execweave-0.7.9 → execweave-0.8.1}/.github/workflows/i18n.yml +0 -0
  41. {execweave-0.7.9 → execweave-0.8.1}/.github/workflows/package-benchmark.yml +0 -0
  42. {execweave-0.7.9 → execweave-0.8.1}/.github/workflows/package-smoke.yml +0 -0
  43. {execweave-0.7.9 → execweave-0.8.1}/.github/workflows/publish.yml +0 -0
  44. {execweave-0.7.9 → execweave-0.8.1}/.github/workflows/scalability.yml +0 -0
  45. {execweave-0.7.9 → execweave-0.8.1}/.github/workflows/viewer-agent-isolation.yml +0 -0
  46. {execweave-0.7.9 → execweave-0.8.1}/.github/workflows/wheel-smoke.yml +0 -0
  47. {execweave-0.7.9 → execweave-0.8.1}/.github/workflows/windows-launcher.yml +0 -0
  48. {execweave-0.7.9 → execweave-0.8.1}/.gitignore +0 -0
  49. {execweave-0.7.9 → execweave-0.8.1}/LICENSE +0 -0
  50. {execweave-0.7.9 → execweave-0.8.1}/benchmarks/phase1_overhead.py +0 -0
  51. {execweave-0.7.9 → execweave-0.8.1}/docs/antigravity-hooks.md +0 -0
  52. {execweave-0.7.9 → execweave-0.8.1}/docs/assets/codex.gif +0 -0
  53. {execweave-0.7.9 → execweave-0.8.1}/docs/benchmarks/README.md +0 -0
  54. {execweave-0.7.9 → execweave-0.8.1}/docs/benchmarks/v0.6.0-github-actions.json +0 -0
  55. {execweave-0.7.9 → execweave-0.8.1}/docs/benchmarks/v0.6.0-github-actions.svg +0 -0
  56. {execweave-0.7.9 → execweave-0.8.1}/docs/claude-code-hooks.de.md +0 -0
  57. {execweave-0.7.9 → execweave-0.8.1}/docs/claude-code-hooks.fr.md +0 -0
  58. {execweave-0.7.9 → execweave-0.8.1}/docs/claude-code-hooks.ja.md +0 -0
  59. {execweave-0.7.9 → execweave-0.8.1}/docs/claude-code-hooks.ko.md +0 -0
  60. {execweave-0.7.9 → execweave-0.8.1}/docs/claude-code-hooks.md +0 -0
  61. {execweave-0.7.9 → execweave-0.8.1}/docs/claude-code-hooks.ru.md +0 -0
  62. {execweave-0.7.9 → execweave-0.8.1}/docs/claude-code-hooks.zh-CN.md +0 -0
  63. {execweave-0.7.9 → execweave-0.8.1}/docs/claude-code-hooks.zh-TW.md +0 -0
  64. {execweave-0.7.9 → execweave-0.8.1}/docs/codex-hooks.de.md +0 -0
  65. {execweave-0.7.9 → execweave-0.8.1}/docs/codex-hooks.fr.md +0 -0
  66. {execweave-0.7.9 → execweave-0.8.1}/docs/codex-hooks.ja.md +0 -0
  67. {execweave-0.7.9 → execweave-0.8.1}/docs/codex-hooks.ko.md +0 -0
  68. {execweave-0.7.9 → execweave-0.8.1}/docs/codex-hooks.md +0 -0
  69. {execweave-0.7.9 → execweave-0.8.1}/docs/codex-hooks.ru.md +0 -0
  70. {execweave-0.7.9 → execweave-0.8.1}/docs/codex-hooks.zh-CN.md +0 -0
  71. {execweave-0.7.9 → execweave-0.8.1}/docs/codex-hooks.zh-TW.md +0 -0
  72. {execweave-0.7.9 → execweave-0.8.1}/docs/cursor-hooks.de.md +0 -0
  73. {execweave-0.7.9 → execweave-0.8.1}/docs/cursor-hooks.fr.md +0 -0
  74. {execweave-0.7.9 → execweave-0.8.1}/docs/cursor-hooks.ja.md +0 -0
  75. {execweave-0.7.9 → execweave-0.8.1}/docs/cursor-hooks.ko.md +0 -0
  76. {execweave-0.7.9 → execweave-0.8.1}/docs/cursor-hooks.md +0 -0
  77. {execweave-0.7.9 → execweave-0.8.1}/docs/cursor-hooks.ru.md +0 -0
  78. {execweave-0.7.9 → execweave-0.8.1}/docs/cursor-hooks.zh-CN.md +0 -0
  79. {execweave-0.7.9 → execweave-0.8.1}/docs/cursor-hooks.zh-TW.md +0 -0
  80. {execweave-0.7.9 → execweave-0.8.1}/docs/evidence-grades.de.md +0 -0
  81. {execweave-0.7.9 → execweave-0.8.1}/docs/evidence-grades.fr.md +0 -0
  82. {execweave-0.7.9 → execweave-0.8.1}/docs/evidence-grades.ja.md +0 -0
  83. {execweave-0.7.9 → execweave-0.8.1}/docs/evidence-grades.ko.md +0 -0
  84. {execweave-0.7.9 → execweave-0.8.1}/docs/evidence-grades.md +0 -0
  85. {execweave-0.7.9 → execweave-0.8.1}/docs/evidence-grades.ru.md +0 -0
  86. {execweave-0.7.9 → execweave-0.8.1}/docs/evidence-grades.zh-CN.md +0 -0
  87. {execweave-0.7.9 → execweave-0.8.1}/docs/evidence-grades.zh-TW.md +0 -0
  88. {execweave-0.7.9 → execweave-0.8.1}/docs/gemini-hooks.de.md +0 -0
  89. {execweave-0.7.9 → execweave-0.8.1}/docs/gemini-hooks.fr.md +0 -0
  90. {execweave-0.7.9 → execweave-0.8.1}/docs/gemini-hooks.ja.md +0 -0
  91. {execweave-0.7.9 → execweave-0.8.1}/docs/gemini-hooks.ko.md +0 -0
  92. {execweave-0.7.9 → execweave-0.8.1}/docs/gemini-hooks.md +0 -0
  93. {execweave-0.7.9 → execweave-0.8.1}/docs/gemini-hooks.ru.md +0 -0
  94. {execweave-0.7.9 → execweave-0.8.1}/docs/gemini-hooks.zh-CN.md +0 -0
  95. {execweave-0.7.9 → execweave-0.8.1}/docs/gemini-hooks.zh-TW.md +0 -0
  96. {execweave-0.7.9 → execweave-0.8.1}/docs/inference-gateway.de.md +0 -0
  97. {execweave-0.7.9 → execweave-0.8.1}/docs/inference-gateway.fr.md +0 -0
  98. {execweave-0.7.9 → execweave-0.8.1}/docs/inference-gateway.ja.md +0 -0
  99. {execweave-0.7.9 → execweave-0.8.1}/docs/inference-gateway.ko.md +0 -0
  100. {execweave-0.7.9 → execweave-0.8.1}/docs/inference-gateway.md +0 -0
  101. {execweave-0.7.9 → execweave-0.8.1}/docs/inference-gateway.ru.md +0 -0
  102. {execweave-0.7.9 → execweave-0.8.1}/docs/inference-gateway.zh-CN.md +0 -0
  103. {execweave-0.7.9 → execweave-0.8.1}/docs/inference-gateway.zh-TW.md +0 -0
  104. {execweave-0.7.9 → execweave-0.8.1}/docs/internal/provider-capability-matrix.md +0 -0
  105. {execweave-0.7.9 → execweave-0.8.1}/docs/live-graph.de.md +0 -0
  106. {execweave-0.7.9 → execweave-0.8.1}/docs/live-graph.fr.md +0 -0
  107. {execweave-0.7.9 → execweave-0.8.1}/docs/live-graph.ja.md +0 -0
  108. {execweave-0.7.9 → execweave-0.8.1}/docs/live-graph.ko.md +0 -0
  109. {execweave-0.7.9 → execweave-0.8.1}/docs/live-graph.md +0 -0
  110. {execweave-0.7.9 → execweave-0.8.1}/docs/live-graph.ru.md +0 -0
  111. {execweave-0.7.9 → execweave-0.8.1}/docs/live-graph.zh-CN.md +0 -0
  112. {execweave-0.7.9 → execweave-0.8.1}/docs/live-graph.zh-TW.md +0 -0
  113. {execweave-0.7.9 → execweave-0.8.1}/docs/model-runtime.de.md +0 -0
  114. {execweave-0.7.9 → execweave-0.8.1}/docs/model-runtime.fr.md +0 -0
  115. {execweave-0.7.9 → execweave-0.8.1}/docs/model-runtime.ja.md +0 -0
  116. {execweave-0.7.9 → execweave-0.8.1}/docs/model-runtime.ko.md +0 -0
  117. {execweave-0.7.9 → execweave-0.8.1}/docs/model-runtime.md +0 -0
  118. {execweave-0.7.9 → execweave-0.8.1}/docs/model-runtime.ru.md +0 -0
  119. {execweave-0.7.9 → execweave-0.8.1}/docs/model-runtime.zh-CN.md +0 -0
  120. {execweave-0.7.9 → execweave-0.8.1}/docs/model-runtime.zh-TW.md +0 -0
  121. {execweave-0.7.9 → execweave-0.8.1}/docs/opencode-plugin.de.md +0 -0
  122. {execweave-0.7.9 → execweave-0.8.1}/docs/opencode-plugin.fr.md +0 -0
  123. {execweave-0.7.9 → execweave-0.8.1}/docs/opencode-plugin.ja.md +0 -0
  124. {execweave-0.7.9 → execweave-0.8.1}/docs/opencode-plugin.ko.md +0 -0
  125. {execweave-0.7.9 → execweave-0.8.1}/docs/opencode-plugin.md +0 -0
  126. {execweave-0.7.9 → execweave-0.8.1}/docs/opencode-plugin.ru.md +0 -0
  127. {execweave-0.7.9 → execweave-0.8.1}/docs/opencode-plugin.zh-CN.md +0 -0
  128. {execweave-0.7.9 → execweave-0.8.1}/docs/opencode-plugin.zh-TW.md +0 -0
  129. {execweave-0.7.9 → execweave-0.8.1}/docs/phase-1-runtime-collection.de.md +0 -0
  130. {execweave-0.7.9 → execweave-0.8.1}/docs/phase-1-runtime-collection.fr.md +0 -0
  131. {execweave-0.7.9 → execweave-0.8.1}/docs/phase-1-runtime-collection.ja.md +0 -0
  132. {execweave-0.7.9 → execweave-0.8.1}/docs/phase-1-runtime-collection.ko.md +0 -0
  133. {execweave-0.7.9 → execweave-0.8.1}/docs/phase-1-runtime-collection.md +0 -0
  134. {execweave-0.7.9 → execweave-0.8.1}/docs/phase-1-runtime-collection.ru.md +0 -0
  135. {execweave-0.7.9 → execweave-0.8.1}/docs/phase-1-runtime-collection.zh-CN.md +0 -0
  136. {execweave-0.7.9 → execweave-0.8.1}/docs/phase-1-runtime-collection.zh-TW.md +0 -0
  137. {execweave-0.7.9 → execweave-0.8.1}/docs/phase-2-execution-graph.de.md +0 -0
  138. {execweave-0.7.9 → execweave-0.8.1}/docs/phase-2-execution-graph.fr.md +0 -0
  139. {execweave-0.7.9 → execweave-0.8.1}/docs/phase-2-execution-graph.ja.md +0 -0
  140. {execweave-0.7.9 → execweave-0.8.1}/docs/phase-2-execution-graph.ko.md +0 -0
  141. {execweave-0.7.9 → execweave-0.8.1}/docs/phase-2-execution-graph.md +0 -0
  142. {execweave-0.7.9 → execweave-0.8.1}/docs/phase-2-execution-graph.ru.md +0 -0
  143. {execweave-0.7.9 → execweave-0.8.1}/docs/phase-2-execution-graph.zh-CN.md +0 -0
  144. {execweave-0.7.9 → execweave-0.8.1}/docs/phase-2-execution-graph.zh-TW.md +0 -0
  145. {execweave-0.7.9 → execweave-0.8.1}/docs/rule-packs.de.md +0 -0
  146. {execweave-0.7.9 → execweave-0.8.1}/docs/rule-packs.fr.md +0 -0
  147. {execweave-0.7.9 → execweave-0.8.1}/docs/rule-packs.ja.md +0 -0
  148. {execweave-0.7.9 → execweave-0.8.1}/docs/rule-packs.ko.md +0 -0
  149. {execweave-0.7.9 → execweave-0.8.1}/docs/rule-packs.md +0 -0
  150. {execweave-0.7.9 → execweave-0.8.1}/docs/rule-packs.ru.md +0 -0
  151. {execweave-0.7.9 → execweave-0.8.1}/docs/rule-packs.zh-CN.md +0 -0
  152. {execweave-0.7.9 → execweave-0.8.1}/docs/rule-packs.zh-TW.md +0 -0
  153. {execweave-0.7.9 → execweave-0.8.1}/docs/run-integrity.de.md +0 -0
  154. {execweave-0.7.9 → execweave-0.8.1}/docs/run-integrity.fr.md +0 -0
  155. {execweave-0.7.9 → execweave-0.8.1}/docs/run-integrity.ja.md +0 -0
  156. {execweave-0.7.9 → execweave-0.8.1}/docs/run-integrity.ko.md +0 -0
  157. {execweave-0.7.9 → execweave-0.8.1}/docs/run-integrity.md +0 -0
  158. {execweave-0.7.9 → execweave-0.8.1}/docs/run-integrity.ru.md +0 -0
  159. {execweave-0.7.9 → execweave-0.8.1}/docs/run-integrity.zh-CN.md +0 -0
  160. {execweave-0.7.9 → execweave-0.8.1}/docs/run-integrity.zh-TW.md +0 -0
  161. {execweave-0.7.9 → execweave-0.8.1}/docs/runtime-threat-model.de.md +0 -0
  162. {execweave-0.7.9 → execweave-0.8.1}/docs/runtime-threat-model.fr.md +0 -0
  163. {execweave-0.7.9 → execweave-0.8.1}/docs/runtime-threat-model.ja.md +0 -0
  164. {execweave-0.7.9 → execweave-0.8.1}/docs/runtime-threat-model.ko.md +0 -0
  165. {execweave-0.7.9 → execweave-0.8.1}/docs/runtime-threat-model.md +0 -0
  166. {execweave-0.7.9 → execweave-0.8.1}/docs/runtime-threat-model.ru.md +0 -0
  167. {execweave-0.7.9 → execweave-0.8.1}/docs/runtime-threat-model.zh-CN.md +0 -0
  168. {execweave-0.7.9 → execweave-0.8.1}/docs/runtime-threat-model.zh-TW.md +0 -0
  169. {execweave-0.7.9 → execweave-0.8.1}/docs/security-analysis.de.md +0 -0
  170. {execweave-0.7.9 → execweave-0.8.1}/docs/security-analysis.fr.md +0 -0
  171. {execweave-0.7.9 → execweave-0.8.1}/docs/security-analysis.ja.md +0 -0
  172. {execweave-0.7.9 → execweave-0.8.1}/docs/security-analysis.ko.md +0 -0
  173. {execweave-0.7.9 → execweave-0.8.1}/docs/security-analysis.md +0 -0
  174. {execweave-0.7.9 → execweave-0.8.1}/docs/security-analysis.ru.md +0 -0
  175. {execweave-0.7.9 → execweave-0.8.1}/docs/security-analysis.zh-CN.md +0 -0
  176. {execweave-0.7.9 → execweave-0.8.1}/docs/security-analysis.zh-TW.md +0 -0
  177. {execweave-0.7.9 → execweave-0.8.1}/docs/semantic-telemetry.de.md +0 -0
  178. {execweave-0.7.9 → execweave-0.8.1}/docs/semantic-telemetry.fr.md +0 -0
  179. {execweave-0.7.9 → execweave-0.8.1}/docs/semantic-telemetry.ja.md +0 -0
  180. {execweave-0.7.9 → execweave-0.8.1}/docs/semantic-telemetry.ko.md +0 -0
  181. {execweave-0.7.9 → execweave-0.8.1}/docs/semantic-telemetry.md +0 -0
  182. {execweave-0.7.9 → execweave-0.8.1}/docs/semantic-telemetry.ru.md +0 -0
  183. {execweave-0.7.9 → execweave-0.8.1}/docs/semantic-telemetry.zh-CN.md +0 -0
  184. {execweave-0.7.9 → execweave-0.8.1}/docs/semantic-telemetry.zh-TW.md +0 -0
  185. {execweave-0.7.9 → execweave-0.8.1}/docs/v0.6.5-hardening-decisions.md +0 -0
  186. {execweave-0.7.9 → execweave-0.8.1}/scripts/audit_i18n_parity.py +0 -0
  187. {execweave-0.7.9 → execweave-0.8.1}/scripts/check_claude_hook.py +0 -0
  188. {execweave-0.7.9 → execweave-0.8.1}/scripts/check_claude_record_graph.py +0 -0
  189. {execweave-0.7.9 → execweave-0.8.1}/scripts/check_codex_hook.py +0 -0
  190. {execweave-0.7.9 → execweave-0.8.1}/scripts/check_conversation_records.py +0 -0
  191. {execweave-0.7.9 → execweave-0.8.1}/scripts/check_correlation_graph.py +0 -0
  192. {execweave-0.7.9 → execweave-0.8.1}/scripts/check_inference_gateway_cli.py +0 -0
  193. {execweave-0.7.9 → execweave-0.8.1}/scripts/check_model_runtime_cli.py +0 -0
  194. {execweave-0.7.9 → execweave-0.8.1}/scripts/check_openai_compatible_cli.py +0 -0
  195. {execweave-0.7.9 → execweave-0.8.1}/scripts/check_semantic_graph.py +0 -0
  196. {execweave-0.7.9 → execweave-0.8.1}/scripts/check_viewer_js.py +0 -0
  197. {execweave-0.7.9 → execweave-0.8.1}/scripts/check_wheel_install.py +0 -0
  198. {execweave-0.7.9 → execweave-0.8.1}/scripts/check_windows_launchers.py +0 -0
  199. {execweave-0.7.9 → execweave-0.8.1}/scripts/emit_claude_hook_smoke.py +0 -0
  200. {execweave-0.7.9 → execweave-0.8.1}/scripts/emit_codex_hook_smoke.py +0 -0
  201. {execweave-0.7.9 → execweave-0.8.1}/scripts/emit_cursor_hook_smoke.py +0 -0
  202. {execweave-0.7.9 → execweave-0.8.1}/scripts/emit_gemini_hook_smoke.py +0 -0
  203. {execweave-0.7.9 → execweave-0.8.1}/scripts/emit_opencode_plugin_smoke.py +0 -0
  204. {execweave-0.7.9 → execweave-0.8.1}/scripts/make_semantic_smoke.py +0 -0
  205. {execweave-0.7.9 → execweave-0.8.1}/scripts/probe_provider_capability.py +0 -0
  206. {execweave-0.7.9 → execweave-0.8.1}/scripts/sync_i18n_nav.py +0 -0
  207. {execweave-0.7.9 → execweave-0.8.1}/src/execweave/__main__.py +0 -0
  208. {execweave-0.7.9 → execweave-0.8.1}/src/execweave/agent_bootstrap.py +0 -0
  209. {execweave-0.7.9 → execweave-0.8.1}/src/execweave/agent_topology.py +0 -0
  210. {execweave-0.7.9 → execweave-0.8.1}/src/execweave/agent_trace.py +0 -0
  211. {execweave-0.7.9 → execweave-0.8.1}/src/execweave/analysis.py +0 -0
  212. {execweave-0.7.9 → execweave-0.8.1}/src/execweave/anthropic.py +0 -0
  213. {execweave-0.7.9 → execweave-0.8.1}/src/execweave/anthropic_cli.py +0 -0
  214. {execweave-0.7.9 → execweave-0.8.1}/src/execweave/anthropic_full_fidelity.py +0 -0
  215. {execweave-0.7.9 → execweave-0.8.1}/src/execweave/antigravity_adapter.py +0 -0
  216. {execweave-0.7.9 → execweave-0.8.1}/src/execweave/antigravity_adapter_base.py +0 -0
  217. {execweave-0.7.9 → execweave-0.8.1}/src/execweave/antigravity_full_fidelity.py +0 -0
  218. {execweave-0.7.9 → execweave-0.8.1}/src/execweave/antigravity_full_fidelity_base.py +0 -0
  219. {execweave-0.7.9 → execweave-0.8.1}/src/execweave/antigravity_full_fidelity_collaboration_base.py +0 -0
  220. {execweave-0.7.9 → execweave-0.8.1}/src/execweave/antigravity_hook_cli.py +0 -0
  221. {execweave-0.7.9 → execweave-0.8.1}/src/execweave/antigravity_record.py +0 -0
  222. {execweave-0.7.9 → execweave-0.8.1}/src/execweave/antigravity_subagent_linkage.py +0 -0
  223. {execweave-0.7.9 → execweave-0.8.1}/src/execweave/antigravity_trace_capability.py +0 -0
  224. {execweave-0.7.9 → execweave-0.8.1}/src/execweave/auto_specialized.py +0 -0
  225. {execweave-0.7.9 → execweave-0.8.1}/src/execweave/backends.py +0 -0
  226. {execweave-0.7.9 → execweave-0.8.1}/src/execweave/benchmark.py +0 -0
  227. {execweave-0.7.9 → execweave-0.8.1}/src/execweave/claude_adapter.py +0 -0
  228. {execweave-0.7.9 → execweave-0.8.1}/src/execweave/claude_delegation.py +0 -0
  229. {execweave-0.7.9 → execweave-0.8.1}/src/execweave/claude_full_fidelity.py +0 -0
  230. {execweave-0.7.9 → execweave-0.8.1}/src/execweave/claude_hook_cli.py +0 -0
  231. {execweave-0.7.9 → execweave-0.8.1}/src/execweave/claude_hook_contract.py +0 -0
  232. {execweave-0.7.9 → execweave-0.8.1}/src/execweave/claude_model_observer.py +0 -0
  233. {execweave-0.7.9 → execweave-0.8.1}/src/execweave/claude_record.py +0 -0
  234. {execweave-0.7.9 → execweave-0.8.1}/src/execweave/codex_adapter.py +0 -0
  235. {execweave-0.7.9 → execweave-0.8.1}/src/execweave/codex_conversation.py +0 -0
  236. {execweave-0.7.9 → execweave-0.8.1}/src/execweave/codex_full_fidelity.py +0 -0
  237. {execweave-0.7.9 → execweave-0.8.1}/src/execweave/codex_hook_cli.py +0 -0
  238. {execweave-0.7.9 → execweave-0.8.1}/src/execweave/codex_hook_lifecycle.py +0 -0
  239. {execweave-0.7.9 → execweave-0.8.1}/src/execweave/codex_message_diagnostics.py +0 -0
  240. {execweave-0.7.9 → execweave-0.8.1}/src/execweave/codex_message_transport_diagnostics.py +0 -0
  241. {execweave-0.7.9 → execweave-0.8.1}/src/execweave/codex_record.py +0 -0
  242. {execweave-0.7.9 → execweave-0.8.1}/src/execweave/codex_rollout_structures.py +0 -0
  243. {execweave-0.7.9 → execweave-0.8.1}/src/execweave/codex_rollout_trace.py +0 -0
  244. {execweave-0.7.9 → execweave-0.8.1}/src/execweave/codex_rollout_trace_base.py +0 -0
  245. {execweave-0.7.9 → execweave-0.8.1}/src/execweave/collector.py +0 -0
  246. {execweave-0.7.9 → execweave-0.8.1}/src/execweave/command.py +0 -0
  247. {execweave-0.7.9 → execweave-0.8.1}/src/execweave/content_evidence.py +0 -0
  248. {execweave-0.7.9 → execweave-0.8.1}/src/execweave/content_store.py +0 -0
  249. {execweave-0.7.9 → execweave-0.8.1}/src/execweave/conversation_archive.py +0 -0
  250. {execweave-0.7.9 → execweave-0.8.1}/src/execweave/conversation_message_identity.py +0 -0
  251. {execweave-0.7.9 → execweave-0.8.1}/src/execweave/conversation_preview.py +0 -0
  252. {execweave-0.7.9 → execweave-0.8.1}/src/execweave/conversation_records.py +0 -0
  253. {execweave-0.7.9 → execweave-0.8.1}/src/execweave/correlation.py +0 -0
  254. {execweave-0.7.9 → execweave-0.8.1}/src/execweave/cursor_adapter.py +0 -0
  255. {execweave-0.7.9 → execweave-0.8.1}/src/execweave/cursor_delegation.py +0 -0
  256. {execweave-0.7.9 → execweave-0.8.1}/src/execweave/cursor_delegation_base.py +0 -0
  257. {execweave-0.7.9 → execweave-0.8.1}/src/execweave/cursor_full_fidelity.py +0 -0
  258. {execweave-0.7.9 → execweave-0.8.1}/src/execweave/cursor_hook_cli.py +0 -0
  259. {execweave-0.7.9 → execweave-0.8.1}/src/execweave/cursor_hook_contract.py +0 -0
  260. {execweave-0.7.9 → execweave-0.8.1}/src/execweave/cursor_record.py +0 -0
  261. {execweave-0.7.9 → execweave-0.8.1}/src/execweave/entry.py +0 -0
  262. {execweave-0.7.9 → execweave-0.8.1}/src/execweave/evidence_availability.py +0 -0
  263. {execweave-0.7.9 → execweave-0.8.1}/src/execweave/evidence_grade.py +0 -0
  264. {execweave-0.7.9 → execweave-0.8.1}/src/execweave/fidelity.py +0 -0
  265. {execweave-0.7.9 → execweave-0.8.1}/src/execweave/filesystem.py +0 -0
  266. {execweave-0.7.9 → execweave-0.8.1}/src/execweave/focus.py +0 -0
  267. {execweave-0.7.9 → execweave-0.8.1}/src/execweave/gemini_adapter.py +0 -0
  268. {execweave-0.7.9 → execweave-0.8.1}/src/execweave/gemini_full_fidelity.py +0 -0
  269. {execweave-0.7.9 → execweave-0.8.1}/src/execweave/gemini_hook_cli.py +0 -0
  270. {execweave-0.7.9 → execweave-0.8.1}/src/execweave/gemini_hook_contract.py +0 -0
  271. {execweave-0.7.9 → execweave-0.8.1}/src/execweave/gemini_record.py +0 -0
  272. {execweave-0.7.9 → execweave-0.8.1}/src/execweave/graph.py +0 -0
  273. {execweave-0.7.9 → execweave-0.8.1}/src/execweave/graph_ops.py +0 -0
  274. {execweave-0.7.9 → execweave-0.8.1}/src/execweave/http_proxy.py +0 -0
  275. {execweave-0.7.9 → execweave-0.8.1}/src/execweave/http_proxy_cli.py +0 -0
  276. {execweave-0.7.9 → execweave-0.8.1}/src/execweave/inference_gateway.py +0 -0
  277. {execweave-0.7.9 → execweave-0.8.1}/src/execweave/inference_gateway_cli.py +0 -0
  278. {execweave-0.7.9 → execweave-0.8.1}/src/execweave/inference_gateway_full_fidelity.py +0 -0
  279. {execweave-0.7.9 → execweave-0.8.1}/src/execweave/inference_identity.py +0 -0
  280. {execweave-0.7.9 → execweave-0.8.1}/src/execweave/inference_identity_cli.py +0 -0
  281. {execweave-0.7.9 → execweave-0.8.1}/src/execweave/integrity.py +0 -0
  282. {execweave-0.7.9 → execweave-0.8.1}/src/execweave/integrity_cli.py +0 -0
  283. {execweave-0.7.9 → execweave-0.8.1}/src/execweave/litellm_callback.py +0 -0
  284. {execweave-0.7.9 → execweave-0.8.1}/src/execweave/litellm_callback_cli.py +0 -0
  285. {execweave-0.7.9 → execweave-0.8.1}/src/execweave/live.py +0 -0
  286. {execweave-0.7.9 → execweave-0.8.1}/src/execweave/live_view.py +0 -0
  287. {execweave-0.7.9 → execweave-0.8.1}/src/execweave/live_view_extra_style.py +0 -0
  288. {execweave-0.7.9 → execweave-0.8.1}/src/execweave/live_view_markup.py +0 -0
  289. {execweave-0.7.9 → execweave-0.8.1}/src/execweave/live_view_script_a.py +0 -0
  290. {execweave-0.7.9 → execweave-0.8.1}/src/execweave/live_view_script_b.py +0 -0
  291. {execweave-0.7.9 → execweave-0.8.1}/src/execweave/live_view_script_c.py +0 -0
  292. {execweave-0.7.9 → execweave-0.8.1}/src/execweave/live_view_script_d.py +0 -0
  293. {execweave-0.7.9 → execweave-0.8.1}/src/execweave/live_view_style.py +0 -0
  294. {execweave-0.7.9 → execweave-0.8.1}/src/execweave/model_runtime.py +0 -0
  295. {execweave-0.7.9 → execweave-0.8.1}/src/execweave/model_runtime_cli.py +0 -0
  296. {execweave-0.7.9 → execweave-0.8.1}/src/execweave/model_runtime_full_fidelity.py +0 -0
  297. {execweave-0.7.9 → execweave-0.8.1}/src/execweave/openai_compatible.py +0 -0
  298. {execweave-0.7.9 → execweave-0.8.1}/src/execweave/openai_compatible_cli.py +0 -0
  299. {execweave-0.7.9 → execweave-0.8.1}/src/execweave/openai_compatible_full_fidelity.py +0 -0
  300. {execweave-0.7.9 → execweave-0.8.1}/src/execweave/opencode_adapter.py +0 -0
  301. {execweave-0.7.9 → execweave-0.8.1}/src/execweave/opencode_event_contract.py +0 -0
  302. {execweave-0.7.9 → execweave-0.8.1}/src/execweave/opencode_full_fidelity.py +0 -0
  303. {execweave-0.7.9 → execweave-0.8.1}/src/execweave/opencode_hook_cli.py +0 -0
  304. {execweave-0.7.9 → execweave-0.8.1}/src/execweave/opencode_plugin_cli.py +0 -0
  305. {execweave-0.7.9 → execweave-0.8.1}/src/execweave/opencode_record.py +0 -0
  306. {execweave-0.7.9 → execweave-0.8.1}/src/execweave/opencode_task_linkage.py +0 -0
  307. {execweave-0.7.9 → execweave-0.8.1}/src/execweave/overhead_benchmark.py +0 -0
  308. {execweave-0.7.9 → execweave-0.8.1}/src/execweave/provider_capability.py +0 -0
  309. {execweave-0.7.9 → execweave-0.8.1}/src/execweave/provider_lifecycle.py +0 -0
  310. {execweave-0.7.9 → execweave-0.8.1}/src/execweave/provider_record.py +0 -0
  311. {execweave-0.7.9 → execweave-0.8.1}/src/execweave/rule_pack.py +0 -0
  312. {execweave-0.7.9 → execweave-0.8.1}/src/execweave/rule_pack_cli.py +0 -0
  313. {execweave-0.7.9 → execweave-0.8.1}/src/execweave/scalability_benchmark.py +0 -0
  314. {execweave-0.7.9 → execweave-0.8.1}/src/execweave/schema.py +0 -0
  315. {execweave-0.7.9 → execweave-0.8.1}/src/execweave/scope.py +0 -0
  316. {execweave-0.7.9 → execweave-0.8.1}/src/execweave/semantic.py +0 -0
  317. {execweave-0.7.9 → execweave-0.8.1}/src/execweave/sink.py +0 -0
  318. {execweave-0.7.9 → execweave-0.8.1}/src/execweave/strace_backend.py +0 -0
  319. {execweave-0.7.9 → execweave-0.8.1}/src/execweave/stream_assembly.py +0 -0
  320. {execweave-0.7.9 → execweave-0.8.1}/src/execweave/theme.py +0 -0
  321. {execweave-0.7.9 → execweave-0.8.1}/src/execweave/top.py +0 -0
  322. {execweave-0.7.9 → execweave-0.8.1}/src/execweave/validate.py +0 -0
  323. {execweave-0.7.9 → execweave-0.8.1}/src/execweave/viewer.py +0 -0
  324. {execweave-0.7.9 → execweave-0.8.1}/src/execweave/viewer_content_inspector.py +0 -0
  325. {execweave-0.7.9 → execweave-0.8.1}/src/execweave/viewer_dashboard_focus.py +0 -0
  326. {execweave-0.7.9 → execweave-0.8.1}/src/execweave/viewer_live_layout.py +0 -0
  327. {execweave-0.7.9 → execweave-0.8.1}/src/execweave/viewer_projection.py +0 -0
  328. {execweave-0.7.9 → execweave-0.8.1}/src/execweave/viewer_projection_base.py +0 -0
  329. {execweave-0.7.9 → execweave-0.8.1}/src/execweave/workflow.py +0 -0
  330. {execweave-0.7.9 → execweave-0.8.1}/tests/fixtures/codex_multi_agent/PROVENANCE.md +0 -0
  331. {execweave-0.7.9 → execweave-0.8.1}/tests/fixtures/codex_multi_agent/hook-payloads.json +0 -0
  332. {execweave-0.7.9 → execweave-0.8.1}/tests/fixtures/codex_multi_agent/rollout-main.jsonl +0 -0
  333. {execweave-0.7.9 → execweave-0.8.1}/tests/fixtures/hooks/README.md +0 -0
  334. {execweave-0.7.9 → execweave-0.8.1}/tests/fixtures/hooks/claude.json +0 -0
  335. {execweave-0.7.9 → execweave-0.8.1}/tests/fixtures/hooks/codex.json +0 -0
  336. {execweave-0.7.9 → execweave-0.8.1}/tests/fixtures/hooks/cursor.json +0 -0
  337. {execweave-0.7.9 → execweave-0.8.1}/tests/fixtures/hooks/gemini.json +0 -0
  338. {execweave-0.7.9 → execweave-0.8.1}/tests/fixtures/hooks/manifest.json +0 -0
  339. {execweave-0.7.9 → execweave-0.8.1}/tests/fixtures/hooks/opencode.json +0 -0
  340. {execweave-0.7.9 → execweave-0.8.1}/tests/test_agent_bootstrap.py +0 -0
  341. {execweave-0.7.9 → execweave-0.8.1}/tests/test_agent_message_viewer.py +0 -0
  342. {execweave-0.7.9 → execweave-0.8.1}/tests/test_agent_node_labels.py +0 -0
  343. {execweave-0.7.9 → execweave-0.8.1}/tests/test_agent_trace_lifecycle.py +0 -0
  344. {execweave-0.7.9 → execweave-0.8.1}/tests/test_agent_trace_viewer_visibility.py +0 -0
  345. {execweave-0.7.9 → execweave-0.8.1}/tests/test_analysis.py +0 -0
  346. {execweave-0.7.9 → execweave-0.8.1}/tests/test_anthropic.py +0 -0
  347. {execweave-0.7.9 → execweave-0.8.1}/tests/test_antigravity_agent_collaboration.py +0 -0
  348. {execweave-0.7.9 → execweave-0.8.1}/tests/test_antigravity_cursor_launch.py +0 -0
  349. {execweave-0.7.9 → execweave-0.8.1}/tests/test_antigravity_lifecycle.py +0 -0
  350. {execweave-0.7.9 → execweave-0.8.1}/tests/test_antigravity_linkage_projection.py +0 -0
  351. {execweave-0.7.9 → execweave-0.8.1}/tests/test_antigravity_official_contract.py +0 -0
  352. {execweave-0.7.9 → execweave-0.8.1}/tests/test_antigravity_subagent_transcript_linkage.py +0 -0
  353. {execweave-0.7.9 → execweave-0.8.1}/tests/test_antigravity_trace_capability_cli.py +0 -0
  354. {execweave-0.7.9 → execweave-0.8.1}/tests/test_auto_specialized.py +0 -0
  355. {execweave-0.7.9 → execweave-0.8.1}/tests/test_backends.py +0 -0
  356. {execweave-0.7.9 → execweave-0.8.1}/tests/test_claude_adapter.py +0 -0
  357. {execweave-0.7.9 → execweave-0.8.1}/tests/test_claude_delegation.py +0 -0
  358. {execweave-0.7.9 → execweave-0.8.1}/tests/test_claude_full_fidelity.py +0 -0
  359. {execweave-0.7.9 → execweave-0.8.1}/tests/test_claude_hook_contract.py +0 -0
  360. {execweave-0.7.9 → execweave-0.8.1}/tests/test_claude_hook_metadata.py +0 -0
  361. {execweave-0.7.9 → execweave-0.8.1}/tests/test_claude_hook_viewer.py +0 -0
  362. {execweave-0.7.9 → execweave-0.8.1}/tests/test_claude_model_observer.py +0 -0
  363. {execweave-0.7.9 → execweave-0.8.1}/tests/test_claude_record.py +0 -0
  364. {execweave-0.7.9 → execweave-0.8.1}/tests/test_codex_adapter.py +0 -0
  365. {execweave-0.7.9 → execweave-0.8.1}/tests/test_codex_archive_full_fidelity.py +0 -0
  366. {execweave-0.7.9 → execweave-0.8.1}/tests/test_codex_conversation_isolation.py +0 -0
  367. {execweave-0.7.9 → execweave-0.8.1}/tests/test_codex_full_fidelity.py +0 -0
  368. {execweave-0.7.9 → execweave-0.8.1}/tests/test_codex_hook_lifecycle.py +0 -0
  369. {execweave-0.7.9 → execweave-0.8.1}/tests/test_codex_hook_partial_capture.py +0 -0
  370. {execweave-0.7.9 → execweave-0.8.1}/tests/test_codex_message_diagnostics.py +0 -0
  371. {execweave-0.7.9 → execweave-0.8.1}/tests/test_codex_message_transport_diagnostics.py +0 -0
  372. {execweave-0.7.9 → execweave-0.8.1}/tests/test_codex_plain_routed_agent_message.py +0 -0
  373. {execweave-0.7.9 → execweave-0.8.1}/tests/test_codex_real_multi_agent_conversation.py +0 -0
  374. {execweave-0.7.9 → execweave-0.8.1}/tests/test_codex_record.py +0 -0
  375. {execweave-0.7.9 → execweave-0.8.1}/tests/test_codex_reducer_command.py +0 -0
  376. {execweave-0.7.9 → execweave-0.8.1}/tests/test_codex_rollout_structures.py +0 -0
  377. {execweave-0.7.9 → execweave-0.8.1}/tests/test_codex_rollout_trace.py +0 -0
  378. {execweave-0.7.9 → execweave-0.8.1}/tests/test_codex_routing_native_identity.py +0 -0
  379. {execweave-0.7.9 → execweave-0.8.1}/tests/test_collector.py +0 -0
  380. {execweave-0.7.9 → execweave-0.8.1}/tests/test_command.py +0 -0
  381. {execweave-0.7.9 → execweave-0.8.1}/tests/test_condense.py +0 -0
  382. {execweave-0.7.9 → execweave-0.8.1}/tests/test_conversation_access.py +0 -0
  383. {execweave-0.7.9 → execweave-0.8.1}/tests/test_conversation_agent_isolation.py +0 -0
  384. {execweave-0.7.9 → execweave-0.8.1}/tests/test_conversation_identity_merge.py +0 -0
  385. {execweave-0.7.9 → execweave-0.8.1}/tests/test_conversation_message_observation_dedupe.py +0 -0
  386. {execweave-0.7.9 → execweave-0.8.1}/tests/test_conversation_provider_parity.py +0 -0
  387. {execweave-0.7.9 → execweave-0.8.1}/tests/test_correlation.py +0 -0
  388. {execweave-0.7.9 → execweave-0.8.1}/tests/test_correlation_canonical_path.py +0 -0
  389. {execweave-0.7.9 → execweave-0.8.1}/tests/test_correlation_checker.py +0 -0
  390. {execweave-0.7.9 → execweave-0.8.1}/tests/test_correlation_process_exe.py +0 -0
  391. {execweave-0.7.9 → execweave-0.8.1}/tests/test_cross_provider_agent_trace.py +0 -0
  392. {execweave-0.7.9 → execweave-0.8.1}/tests/test_cursor_adapter.py +0 -0
  393. {execweave-0.7.9 → execweave-0.8.1}/tests/test_cursor_delegation.py +0 -0
  394. {execweave-0.7.9 → execweave-0.8.1}/tests/test_cursor_full_fidelity.py +0 -0
  395. {execweave-0.7.9 → execweave-0.8.1}/tests/test_cursor_hook_contract.py +0 -0
  396. {execweave-0.7.9 → execweave-0.8.1}/tests/test_cursor_hook_fail_open.py +0 -0
  397. {execweave-0.7.9 → execweave-0.8.1}/tests/test_cursor_record.py +0 -0
  398. {execweave-0.7.9 → execweave-0.8.1}/tests/test_cursor_task_linkage.py +0 -0
  399. {execweave-0.7.9 → execweave-0.8.1}/tests/test_dashboard_ux_and_hook_projection.py +0 -0
  400. {execweave-0.7.9 → execweave-0.8.1}/tests/test_delegation_viewer.py +0 -0
  401. {execweave-0.7.9 → execweave-0.8.1}/tests/test_evidence_grade.py +0 -0
  402. {execweave-0.7.9 → execweave-0.8.1}/tests/test_execution_viewer.py +0 -0
  403. {execweave-0.7.9 → execweave-0.8.1}/tests/test_fidelity.py +0 -0
  404. {execweave-0.7.9 → execweave-0.8.1}/tests/test_filesystem_resilience.py +0 -0
  405. {execweave-0.7.9 → execweave-0.8.1}/tests/test_focus.py +0 -0
  406. {execweave-0.7.9 → execweave-0.8.1}/tests/test_full_fidelity.py +0 -0
  407. {execweave-0.7.9 → execweave-0.8.1}/tests/test_gemini_adapter.py +0 -0
  408. {execweave-0.7.9 → execweave-0.8.1}/tests/test_gemini_full_fidelity.py +0 -0
  409. {execweave-0.7.9 → execweave-0.8.1}/tests/test_gemini_hook_contract.py +0 -0
  410. {execweave-0.7.9 → execweave-0.8.1}/tests/test_gemini_lifecycle.py +0 -0
  411. {execweave-0.7.9 → execweave-0.8.1}/tests/test_gemini_record.py +0 -0
  412. {execweave-0.7.9 → execweave-0.8.1}/tests/test_graph.py +0 -0
  413. {execweave-0.7.9 → execweave-0.8.1}/tests/test_graph_ops.py +0 -0
  414. {execweave-0.7.9 → execweave-0.8.1}/tests/test_hook_fixture_corpus.py +0 -0
  415. {execweave-0.7.9 → execweave-0.8.1}/tests/test_http_proxy.py +0 -0
  416. {execweave-0.7.9 → execweave-0.8.1}/tests/test_inference_gateway.py +0 -0
  417. {execweave-0.7.9 → execweave-0.8.1}/tests/test_inference_gateway_full_fidelity.py +0 -0
  418. {execweave-0.7.9 → execweave-0.8.1}/tests/test_inference_identity.py +0 -0
  419. {execweave-0.7.9 → execweave-0.8.1}/tests/test_integrity.py +0 -0
  420. {execweave-0.7.9 → execweave-0.8.1}/tests/test_litellm_callback.py +0 -0
  421. {execweave-0.7.9 → execweave-0.8.1}/tests/test_live.py +0 -0
  422. {execweave-0.7.9 → execweave-0.8.1}/tests/test_live_auth.py +0 -0
  423. {execweave-0.7.9 → execweave-0.8.1}/tests/test_live_dashboard.py +0 -0
  424. {execweave-0.7.9 → execweave-0.8.1}/tests/test_live_dashboard_js.py +0 -0
  425. {execweave-0.7.9 → execweave-0.8.1}/tests/test_live_delta.py +0 -0
  426. {execweave-0.7.9 → execweave-0.8.1}/tests/test_live_logs_export.py +0 -0
  427. {execweave-0.7.9 → execweave-0.8.1}/tests/test_live_theme.py +0 -0
  428. {execweave-0.7.9 → execweave-0.8.1}/tests/test_lmstudio_auto_specialized.py +0 -0
  429. {execweave-0.7.9 → execweave-0.8.1}/tests/test_local_runtime_live_capture.py +0 -0
  430. {execweave-0.7.9 → execweave-0.8.1}/tests/test_model_runtime.py +0 -0
  431. {execweave-0.7.9 → execweave-0.8.1}/tests/test_model_runtime_full_fidelity.py +0 -0
  432. {execweave-0.7.9 → execweave-0.8.1}/tests/test_openai_compatible.py +0 -0
  433. {execweave-0.7.9 → execweave-0.8.1}/tests/test_opencode_adapter.py +0 -0
  434. {execweave-0.7.9 → execweave-0.8.1}/tests/test_opencode_event_contract.py +0 -0
  435. {execweave-0.7.9 → execweave-0.8.1}/tests/test_opencode_event_lifecycle.py +0 -0
  436. {execweave-0.7.9 → execweave-0.8.1}/tests/test_opencode_full_fidelity.py +0 -0
  437. {execweave-0.7.9 → execweave-0.8.1}/tests/test_opencode_plugin.py +0 -0
  438. {execweave-0.7.9 → execweave-0.8.1}/tests/test_opencode_record.py +0 -0
  439. {execweave-0.7.9 → execweave-0.8.1}/tests/test_opencode_task_session_linkage.py +0 -0
  440. {execweave-0.7.9 → execweave-0.8.1}/tests/test_overhead_benchmark.py +0 -0
  441. {execweave-0.7.9 → execweave-0.8.1}/tests/test_provider_capability.py +0 -0
  442. {execweave-0.7.9 → execweave-0.8.1}/tests/test_provider_conversation_evidence.py +0 -0
  443. {execweave-0.7.9 → execweave-0.8.1}/tests/test_provider_lifecycle.py +0 -0
  444. {execweave-0.7.9 → execweave-0.8.1}/tests/test_rule_pack.py +0 -0
  445. {execweave-0.7.9 → execweave-0.8.1}/tests/test_schema.py +0 -0
  446. {execweave-0.7.9 → execweave-0.8.1}/tests/test_scope.py +0 -0
  447. {execweave-0.7.9 → execweave-0.8.1}/tests/test_semantic.py +0 -0
  448. {execweave-0.7.9 → execweave-0.8.1}/tests/test_strace_backend.py +0 -0
  449. {execweave-0.7.9 → execweave-0.8.1}/tests/test_stream_assembly.py +0 -0
  450. {execweave-0.7.9 → execweave-0.8.1}/tests/test_threat_model.py +0 -0
  451. {execweave-0.7.9 → execweave-0.8.1}/tests/test_top_detached.py +0 -0
  452. {execweave-0.7.9 → execweave-0.8.1}/tests/test_v063_features.py +0 -0
  453. {execweave-0.7.9 → execweave-0.8.1}/tests/test_v064_live_auto_integrations.py +0 -0
  454. {execweave-0.7.9 → execweave-0.8.1}/tests/test_v064_live_evidence.py +0 -0
  455. {execweave-0.7.9 → execweave-0.8.1}/tests/test_v079_review_e2e.py +0 -0
  456. {execweave-0.7.9 → execweave-0.8.1}/tests/test_v079_review_regressions.py +0 -0
  457. {execweave-0.7.9 → execweave-0.8.1}/tests/test_validate.py +0 -0
  458. {execweave-0.7.9 → execweave-0.8.1}/tests/test_version.py +0 -0
  459. {execweave-0.7.9 → execweave-0.8.1}/tests/test_viewer.py +0 -0
  460. {execweave-0.7.9 → execweave-0.8.1}/tests/test_viewer_content_inspector.py +0 -0
  461. {execweave-0.7.9 → execweave-0.8.1}/tests/test_viewer_projection.py +0 -0
  462. {execweave-0.7.9 → execweave-0.8.1}/tests/test_workflow.py +0 -0
@@ -0,0 +1,43 @@
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
+ run: >-
41
+ python scripts/check_release_stage_integrity.py
42
+ --baseline-ref "${{ github.event.pull_request.base.sha || inputs.baseline_ref }}"
43
+ --allow-test-change "tests/test_v069_dashboard_release.py=the release metadata assertions move from 0.8.0 to 0.8.1. The test keeps the function name it was written under because the node-ID floor refuses renames, and the English README anchor it pins is unchanged"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: execweave
3
- Version: 0.7.9
3
+ Version: 0.8.1
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
@@ -84,7 +84,7 @@ Install the latest published wheel/sdist from PyPI:
84
84
  python -m pip install -U execweave
85
85
  ```
86
86
 
87
- The current release is **v0.7.9**.
87
+ The current release is **v0.8.1**.
88
88
 
89
89
  For development:
90
90
 
@@ -120,7 +120,7 @@ execweave record --open -- python my_agent.py
120
120
 
121
121
  `execweave top -- codex` keeps the Agent interactive in the launch terminal while opening/attaching the detached Top dashboard according to the host environment.
122
122
 
123
- **v0.7.9one dashboard, while the run happens and afterwards.** Live, the finished run and viewer.html were three renderings of the same evidence, and completion fetched a separate document and wrote it over the page a reader was watching. There is now one shell: finishing a run changes its state in place, and viewer.html is that same dashboard saved offline. Selecting an agent answers one question and stops a root shows its Prompt and its Final response, a subagent shows its Task, its Thinking where the provider exposed plaintext, and its Response while a process, a file, a network endpoint or a model shows no conversation at all, because a conversation belongs to an agent. A turn the provider encrypted reads as observed without plaintext rather than as never recorded, the block a provider prepends to every subagent is never presented as one agent's assignment, and an answer that quotes routing words survives intact. The provider-neutral, agent-local multi-agent conversations each agent owns are aggregated across every archive a run wrote, so an agent recorded many times still shows what it said. Release checks drive the shipped dashboard in a real browser through every selection a person can make, in both its live and its finished form.
123
+ **v0.8.1every round, and every node, says what it holds.** A run is rarely one question, and the panel had room for one: it paired the oldest prompt with the newest answer, so a two-round run showed the first question beside the second question's reply while the first round's own answer stayed unreachable. Rounds are the unit now the newest is open, older ones fold to a line naming their own moment and question, and a subagent's fold carries the timestamp and wording of the root round it came from. Two subagents had also been losing their Response: the rule that stops a provider's shared preamble from being read as one agent's assignment matched any long text appearing under two agents, and a child's answer appears both in its own record and in its parent's. That rule now reaches inbound messages only, so what an agent wrote stays its own however often the run repeats it. Selecting a process, a file or a network endpoint no longer draws an empty panel: each names what it is — a command line with its pid and parent, a path with the history that touched it, an address with the process that reached it. And a type crowded past its budget keeps its newest members drawn while the older ones collapse into a single node that still names every one it holds, so a run that touches a thousand paths stays readable without losing one of them. The provider-neutral, agent-local multi-agent conversations each agent owns are the same records they always were; what changed is that a reader can reach all of them instead of one. The budget past which a type folds is `--fold-budget N` on every command that renders a dashboard, so a deployment whose agents write hundreds of files chooses its own number instead of editing the package.
124
124
 
125
125
  The unified dashboard brings the execution graph, logs, and conversation records into the same inspection flow. Finalized runs generate `conversations.md` and `conversations.json`, while validated provider transcripts are copied into the run-local SHA-256 content store. Claude Code, OpenAI Codex, Cursor, OpenCode, and Google Antigravity use the strongest provider-exposed multi-agent evidence available to each integration. For gateways and local runtimes that expose only root request/response traffic, ExecWeave shows only that root conversation and does not invent subagents or hidden routing.
126
126
 
@@ -329,7 +329,7 @@ Conversation isolation is an attribution/display rule, not a redaction boundary.
329
329
 
330
330
  ## Current status
331
331
 
332
- v0.7.9 combines cross-platform runtime collection, materialized execution graphs, standalone/live dashboards, conservative provider↔runtime correlation, full-fidelity content-addressed provider evidence, attributable multi-agent execution traces, direct run-local conversation access, agent-local conversation isolation across provider-neutral projections, and per-agent conversation focus in the standalone and live dashboards. Supported integrations preserve the strongest identity/routing evidence actually exposed by each provider and abstain when that evidence is unavailable. Observed evidence and inference remain separate by design.
332
+ v0.8.1 combines cross-platform runtime collection, materialized execution graphs, standalone/live dashboards, conservative provider↔runtime correlation, full-fidelity content-addressed provider evidence, attributable multi-agent execution traces, direct run-local conversation access, agent-local conversation isolation across provider-neutral projections, per-round agent conversation panels, and self-describing non-agent nodes with per-type folding in the standalone and live dashboards. Supported integrations preserve the strongest identity/routing evidence actually exposed by each provider and abstain when that evidence is unavailable. Observed evidence and inference remain separate by design.
333
333
 
334
334
  ## Documentation
335
335
 
@@ -31,7 +31,7 @@ Installieren Sie das neueste veröffentlichte wheel/sdist von PyPI:
31
31
  python -m pip install -U execweave
32
32
  ```
33
33
 
34
- Die aktuelle Version ist **v0.7.9**.
34
+ Die aktuelle Version ist **v0.8.1**.
35
35
 
36
36
  Für die Entwicklung:
37
37
 
@@ -67,7 +67,7 @@ execweave record --open -- python my_agent.py
67
67
 
68
68
  `execweave top -- codex` hält den Agent im Startterminal interaktiv und öffnet bzw. verbindet gleichzeitig das detached Top dashboard entsprechend der Host-Umgebung.
69
69
 
70
- **v0.7.9ein Dashboard, während des Runs und danach.** Live, der beendete Run und viewer.html waren drei Darstellungen derselben Evidenz, und der Abschluss holte ein eigenes Dokument und schrieb es über die Seite, die ein Leser gerade betrachtete. Es gibt jetzt nur eine Hülle: Das Beenden eines Runs ändert dessen Zustand an Ort und Stelle, und viewer.html ist genau dieses Dashboard offline gespeichert. Die Auswahl eines Agents beantwortet eine Frage und hört auf eine Wurzel zeigt ihren Prompt und ihre finale Antwort, ein Subagent zeigt seine Aufgabe, sein Denken dort, wo der Provider Klartext offengelegt hat, und seine Antwort während ein Prozess, eine Datei, ein Netzwerk-Endpunkt oder ein Modell überhaupt keine Conversation zeigt, denn eine Conversation gehört einem Agent. Ein vom Provider verschlüsselter Turn liest sich als beobachtet ohne Klartext und nicht als nie aufgezeichnet, der Block, den ein Provider jedem Subagent voranstellt, wird nie als die Zuweisung eines Agents dargestellt, und eine Antwort, die Routing-Wörter zitiert, bleibt unversehrt. Die provider-neutralen, agent-lokalen Multi-Agent-Conversations, die jeder Agent besitzt, werden über alle Archive hinweg zusammengeführt, die ein Run geschrieben hat, sodass ein mehrfach aufgezeichneter Agent weiterhin zeigt, was er gesagt hat. Release-Prüfungen fahren das ausgelieferte Dashboard in einem echten Browser durch jede Auswahl, die eine Person treffen kann, in seiner Live- wie in seiner beendeten Form.
70
+ **v0.8.1jede Runde und jeder Knoten sagt, was er enthält.** Ein Run besteht selten aus einer einzigen Frage, das Panel hatte aber nur für eine Platz: Es stellte die älteste Frage neben die neueste Antwort, sodass ein Run mit zwei Runden die erste Frage neben der Antwort der zweiten zeigte, während die eigene Antwort der ersten Runde unerreichbar blieb. Die Runde ist jetzt die Einheit die neueste steht offen, ältere klappen zu einer Zeile zusammen, die ihren eigenen Zeitpunkt und ihre eigene Frage nennt, und die Faltung eines Subagents trägt Zeitstempel und Wortlaut der Wurzelrunde, aus der sie stammt. Zwei Subagents verloren zudem ihre Antwort: Die Regel, die verhindert, dass die gemeinsame Präambel eines Providers als Zuweisung eines Agents gelesen wird, traf auf jeden langen Text zu, der unter zwei Agents auftaucht — und die Antwort eines Kindes steht sowohl in seinem eigenen als auch im Datensatz seines Elternteils. Diese Regel greift nun nur noch bei eingehenden Nachrichten, sodass das, was ein Agent geschrieben hat, sein eigenes bleibt, wie oft der Run es auch wiederholt. Die Auswahl eines Prozesses, einer Datei oder eines Netzwerk-Endpunkts zeichnet kein leeres Panel mehr: Jeder nennt, was er ist — eine Kommandozeile mit ihrer pid und ihrem Elternprozess, ein Pfad mit der Historie, die ihn berührt hat, eine Adresse mit dem Prozess, der sie erreicht hat. Und ein Typ, der sein Budget überschreitet, behält seine neuesten Mitglieder gezeichnet, während die älteren zu einem einzigen Knoten zusammenklappen, der weiterhin jedes einzelne benennt, das er hält — ein Run, der tausend Pfade berührt, bleibt so lesbar, ohne einen davon zu verlieren. Die provider-neutralen, agent-lokalen Multi-Agent-Conversations, die jeder Agent besitzt, sind dieselben Datensätze wie zuvor; geändert hat sich, dass ein Leser sie alle erreicht statt nur eine. Ab wann ein Typ faltet, bestimmt `--fold-budget N` auf jedem Befehl, der ein Dashboard erzeugt eine Installation, deren Agents Hunderte von Dateien schreiben, wählt ihre eigene Zahl, statt das Paket zu ändern.
71
71
 
72
72
  Das vereinheitlichte Dashboard bringt execution graph, logs und conversation records in denselben Inspection-Flow. Finalisierte Runs erzeugen `conversations.md` und `conversations.json`; validierte Provider-Transcripts werden in den run-local SHA-256 content store kopiert. Claude Code, OpenAI Codex, Cursor, OpenCode und Google Antigravity verwenden jeweils die stärkste Multi-Agent-Evidence, die ihre Integration tatsächlich offenlegt. Wenn ein Gateway oder lokaler Runtime nur root request/response sichtbar macht, zeigt ExecWeave nur diese Root-Conversation und erfindet weder Subagents noch hidden routing.
73
73
 
@@ -276,7 +276,7 @@ Conversation isolation ist eine Attribution-/Display-Regel, keine Redaction Boun
276
276
 
277
277
  ## Aktueller Stand
278
278
 
279
- v0.7.9 kombiniert cross-platform runtime collection, materialized execution graphs, standalone/live dashboards, konservative provider↔runtime correlation, full-fidelity content-addressed provider evidence, attributable multi-agent execution traces, direkten run-local conversation access agent-local conversation isolation in provider-neutralen Projektionen und per-agent conversation focus in den Standalone- und Live-Dashboards. Jede Integration bewahrt nur die stärkste identity/routing evidence, die der Provider tatsächlich offenlegt, und enthält sich, wenn diese Evidence fehlt. Observed evidence und inference bleiben konstruktiv getrennt.
279
+ v0.8.1 kombiniert cross-platform runtime collection, materialized execution graphs, standalone/live dashboards, konservative provider↔runtime correlation, full-fidelity content-addressed provider evidence, attributable multi-agent execution traces, direkten run-local conversation access, agent-local conversation isolation in provider-neutralen Projektionen, Conversation-Panels pro Runde sowie sich selbst beschreibende Nicht-Agent-Knoten mit Faltung pro Typ in den Standalone- und Live-Dashboards. Jede Integration bewahrt nur die stärkste identity/routing evidence, die der Provider tatsächlich offenlegt, und enthält sich, wenn diese Evidence fehlt. Observed evidence und inference bleiben konstruktiv getrennt.
280
280
 
281
281
  ## Dokumentation
282
282
 
@@ -31,7 +31,7 @@ Installez le dernier wheel/sdist publié depuis PyPI :
31
31
  python -m pip install -U execweave
32
32
  ```
33
33
 
34
- La version courante est **v0.7.9**.
34
+ La version courante est **v0.8.1**.
35
35
 
36
36
  Pour le développement :
37
37
 
@@ -67,7 +67,7 @@ execweave record --open -- python my_agent.py
67
67
 
68
68
  `execweave top -- codex` garde l’Agent interactif dans le terminal de lancement tout en ouvrant ou en attachant le dashboard Top détaché selon l’environnement hôte.
69
69
 
70
- **v0.7.9un seul tableau de bord, pendant le run et après.** Le live, le run terminé et viewer.html étaient trois rendus des mêmes preuves, et la fin d'un run allait chercher un document séparé pour l'écrire par-dessus la page que le lecteur regardait. Il n'y a plus qu'une coque : terminer un run change son état sur place, et viewer.html est ce même tableau de bord enregistré hors ligne. Sélectionner un agent répond à une question et s'arrête une racine montre son Prompt et sa Réponse finale, un subagent montre sa Tâche, son Raisonnement le provider a exposé du texte en clair, et sa Réponse tandis qu'un processus, un fichier, un point de terminaison réseau ou un modèle ne montre aucune conversation, parce qu'une conversation appartient à un agent. Un turn chiffré par le provider se lit comme observé sans clair plutôt que comme jamais enregistré, le bloc qu'un provider ajoute devant chaque subagent n'est jamais présenté comme l'assignation d'un agent, et une réponse qui cite des mots de routage reste intacte. Les conversations multi-agent provider-neutral et agent-local que chaque agent possède sont agrégées sur toutes les archives qu'un run a écrites, si bien qu'un agent enregistré plusieurs fois montre encore ce qu'il a dit. Les vérifications de release pilotent le tableau de bord livré dans un vrai navigateur, à travers chaque sélection possible, dans sa forme live comme dans sa forme terminée.
70
+ **v0.8.1chaque tour, et chaque nœud, dit ce qu'il contient.** Un run se limite rarement à une seule question, et le panneau n'avait de place que pour une : il associait la plus ancienne question à la plus récente réponse, si bien qu'un run de deux tours montrait la première question à côté de la réponse de la seconde, tandis que la réponse propre au premier tour restait inaccessible. Le tour est désormais l'unité le plus récent est ouvert, les plus anciens se replient en une ligne nommant leur propre moment et leur propre question, et le repli d'un subagent porte l'horodatage et la formulation du tour racine dont il provient. Deux subagents perdaient aussi leur Réponse : la règle qui empêche le préambule partagé d'un provider d'être lu comme l'assignation d'un agent correspondait à tout texte long apparaissant sous deux agents, or la réponse d'un enfant apparaît à la fois dans son propre enregistrement et dans celui de son parent. Cette règle ne touche plus que les messages entrants, de sorte que ce qu'un agent a écrit reste le sien, quel que soit le nombre de fois où le run le répète. Sélectionner un processus, un fichier ou un point de terminaison réseau ne dessine plus un panneau vide : chacun dit ce qu'il est — une ligne de commande avec son pid et son parent, un chemin avec l'historique qui l'a touché, une adresse avec le processus qui l'a atteinte. Et un type encombré au-delà de son budget garde ses membres les plus récents dessinés tandis que les plus anciens se replient en un seul nœud qui nomme encore chacun de ceux qu'il contient, si bien qu'un run touchant mille chemins reste lisible sans en perdre un seul. Les conversations multi-agent provider-neutral et agent-local que chaque agent possède sont les mêmes enregistrements qu'auparavant ; ce qui a changé, c'est qu'un lecteur peut désormais les atteindre toutes plutôt qu'une seule. Le seuil à partir duquel un type se replie est `--fold-budget N`, disponible sur chaque commande qui produit un tableau de bord : un déploiement dont les agents écrivent des centaines de fichiers choisit son propre nombre au lieu de modifier le paquet.
71
71
 
72
72
  Le dashboard unifié rassemble execution graph, logs et conversation records dans le même flux d’inspection. Les runs finalisés génèrent `conversations.md` et `conversations.json`, et les transcripts provider validés sont copiés dans le content store SHA-256 local au run. Claude Code, OpenAI Codex, Cursor, OpenCode et Google Antigravity exploitent chacun le niveau de multi-agent evidence réellement exposé par leur integration. Lorsqu’un gateway ou un local runtime n’expose que des request/response root, ExecWeave affiche uniquement cette root conversation et n’invente ni subagent ni hidden routing.
73
73
 
@@ -276,7 +276,7 @@ La conversation isolation est une règle d’attribution et d’affichage, pas u
276
276
 
277
277
  ## État actuel
278
278
 
279
- v0.7.9 combine cross-platform runtime collection, materialized execution graphs, standalone/live dashboards, conservative provider↔runtime correlation, full-fidelity content-addressed provider evidence, attributable multi-agent execution traces, accès direct aux conversations run-local agent-local conversation isolation dans les projections provider-neutral et per-agent conversation focus dans les dashboards standalone et live. Chaque integration conserve uniquement la meilleure identity/routing evidence réellement exposée par le provider et s’abstient lorsque cette evidence manque. Observed evidence et inference restent séparées par conception.
279
+ v0.8.1 combine cross-platform runtime collection, materialized execution graphs, standalone/live dashboards, conservative provider↔runtime correlation, full-fidelity content-addressed provider evidence, attributable multi-agent execution traces, accès direct aux conversations run-local, agent-local conversation isolation dans les projections provider-neutral, des panneaux de conversation par tour et des nœuds non-agent qui se décrivent eux-mêmes avec un repli par type dans les dashboards standalone et live. Chaque integration conserve uniquement la meilleure identity/routing evidence réellement exposée par le provider et s’abstient lorsque cette evidence manque. Observed evidence et inference restent séparées par conception.
280
280
 
281
281
  ## Documentation
282
282
 
@@ -31,7 +31,7 @@ PyPI から最新の wheel/sdist をインストールします。
31
31
  python -m pip install -U execweave
32
32
  ```
33
33
 
34
- 現在のリリースは **v0.7.9** です。
34
+ 現在のリリースは **v0.8.1** です。
35
35
 
36
36
  開発環境では次のようにインストールできます。
37
37
 
@@ -67,7 +67,7 @@ execweave record --open -- python my_agent.py
67
67
 
68
68
  `execweave top -- codex` は Agent を起動 terminal 上でインタラクティブなまま保ち、ホスト環境に応じて detached Top dashboard を開くか既存のものに attach します。
69
69
 
70
- **v0.7.9実行中も実行後も、ひとつの Dashboard。** Live、完了後の画面、viewer.html は同じ証拠の三つの描画であり、完了時には別の文書を取得して読者が見ているページに上書きしていました。いまはひとつの shell だけです。完了は開いている画面の状態を変えるだけで、viewer.html はその同じ Dashboard のオフライン保存です。agent を選ぶとひとつの問いに答えて止まります。root Prompt Final response を、subagent Task、provider が平文を公開した場合の Thinking、そして Response を示します。process、file、network endpoint、model conversation をまったく示しません。conversation agent のものだからです。provider が暗号化した turn は「観測済みだが平文は非公開」と読まれ、記録されなかったとは読まれません。provider がすべての subagent に前置きするブロックが、ある agent の assignment として示されることはありません。routing の語を引用した回答もそのまま残ります。各 agent が保持する provider-neutral かつ agent-local な multi-agent conversation は、その実行が書き出したすべてのアーカイブを横断して集約されるため、何度も記録された agent も自分が述べたことを示せます。リリース前の検査は、出荷される Dashboard live finished の両方の状態で、実物のブラウザで人が行えるあらゆる選択にわたって駆動します。
70
+ **v0.8.1どのラウンドも、どの node も、自分が何を持っているかを述べる。** 一回の実行が一つの問いで終わることは稀ですが、パネルには一つ分の場所しかありませんでした。最も古い問いに最も新しい回答を並べるため、二ラウンドの実行では最初の問いの隣に二番目の問いの回答が出て、最初のラウンド自身の回答には到達できませんでした。いまはラウンドが単位です。最新のものは開いたまま、古いものは自分の時刻と問いを示す一行に畳まれ、subagent の折り畳みは、それが属する root ラウンドと同じ時刻と文言を持ちます。さらに二つの subagent は自分の Response を失っていました。provider の共通前置きをある agent assignment と読ませないための規則が、二つの agent の下に現れる長い文字列すべてに一致していたためです。child の回答は自分の記録にも親の記録にも現れます。この規則はいま受信したメッセージだけを見るので、agent が書いたものは実行中に何度繰り返されても自分のものです。process、file、network endpoint を選んでも空のパネルは出ません。それぞれが自分を述べます。コマンドラインとその pid と親、パスとそれに触れた履歴、アドレスとそこへ到達した process です。そしてある型が上限を超えて混み合うと、新しいものは描かれたまま、古いものは一つの node に畳まれ、そこに含まれるすべてを名前で列挙します。千の path に触れる実行でも、一つも失わずに読める状態が保たれます。 agent が保持する provider-neutral かつ agent-local な multi-agent conversation は以前と同じ記録のままです。変わったのは、読者がその一部ではなく全体に到達できることです。 ある型がどこから畳まれるかは、Dashboard を生成するすべてのコマンドの `--fold-budget N` で決まります。数百のファイルを書く配置環境は、パッケージを書き換えずに自分の数を選べます。
71
71
 
72
72
  統合 dashboard では execution graph、logs、conversation records を同じ inspection flow で確認できます。Finalized run は `conversations.md` と `conversations.json` を生成し、検証済み provider transcript は run-local SHA-256 content store にコピーされます。Claude Code、OpenAI Codex、Cursor、OpenCode、Google Antigravity は、それぞれが実際に公開する最も強い multi-agent evidence を利用します。gateway や local runtime が root request/response しか公開しない場合、ExecWeave は root conversation だけを表示し、subagent や hidden routing を捏造しません。
73
73
 
@@ -276,7 +276,7 @@ Conversation isolation は attribution/display の規則であり redaction boun
276
276
 
277
277
  ## 現在の状態
278
278
 
279
- v0.7.9 は cross-platform runtime collection、materialized execution graph、standalone/live dashboard、保守的な provider↔runtime correlation、content-addressed full-fidelity provider evidence、attributable multi-agent execution trace、run-local conversation access、provider-neutral projection 上の agent-local conversation isolation、standalone および live dashboard での per-agent conversation focus を統合します。各 integration は provider が実際に公開した最も強い identity/routing evidence のみを保持し、不足する場合は abstain します。Observed evidence と inference は設計上分離されたままです。
279
+ v0.8.1 は cross-platform runtime collection、materialized execution graph、standalone/live dashboard、保守的な provider↔runtime correlation、content-addressed full-fidelity provider evidence、attributable multi-agent execution trace、run-local conversation access、provider-neutral projection 上の agent-local conversation isolation、standalone および live dashboard での per-round agent conversation パネルと、自己記述する non-agent node および型ごとの折り畳みを統合します。各 integration は provider が実際に公開した最も強い identity/routing evidence のみを保持し、不足する場合は abstain します。Observed evidence と inference は設計上分離されたままです。
280
280
 
281
281
  ## ドキュメント
282
282
 
@@ -31,7 +31,7 @@ PyPI에서 최신 wheel/sdist를 설치합니다.
31
31
  python -m pip install -U execweave
32
32
  ```
33
33
 
34
- 현재 릴리스는 **v0.7.9** 입니다.
34
+ 현재 릴리스는 **v0.8.1** 입니다.
35
35
 
36
36
  개발 설치:
37
37
 
@@ -67,7 +67,7 @@ execweave record --open -- python my_agent.py
67
67
 
68
68
  `execweave top -- codex`는 Agent를 시작 terminal에서 interactive 상태로 유지하면서 host 환경에 따라 detached Top dashboard를 열거나 attach합니다.
69
69
 
70
- **v0.7.9실행 중에도 실행 후에도, 하나의 Dashboard.** Live, 완료된 화면, viewer.html 같은 증거의 가지 렌더링이었고, 완료 시점에는 별도의 문서를 가져와 읽는 사람이 보고 있던 페이지 위에 덮어썼습니다. 이제 shell 하나입니다. 완료는 열려 있는 화면의 상태를 바꿀 뿐이고, viewer.html 바로 Dashboard 오프라인 저장본입니다. agent 선택하면 하나의 질문에 답하고 멈춥니다. root Prompt Final response 를, subagent Task 와, provider 가 평문을 노출한 경우의 Thinking, 그리고 Response 보여 줍니다. process, file, network endpoint, model conversation 전혀 보여 주지 않습니다. conversation agent 것이기 때문입니다. provider 암호화한 turn 기록되지 않은 것이 아니라 관측되었으나 평문이 노출되지 않은 것으로 읽힙니다. provider 모든 subagent 앞에 붙이는 블록이 어느 agent assignment제시되는 일도 없습니다. routing 어휘를 인용한 답변도 온전히 남습니다. 각 agent 가 소유한 provider-neutral, agent-local multi-agent conversation 은 실행이 남긴 모든 아카이브에 걸쳐 집계되므로, 여러 기록된 agent 자신이 말한 것을 보여 줍니다. 릴리스 검사는 출시되는 Dashboard 를 live finished 상태 모두에서 실제 브라우저로, 사람이 있는 모든 선택에 걸쳐 구동합니다.
70
+ **v0.8.1모든 라운드와 모든 node 가 자신이 무엇을 담고 있는지 말합니다.** 한 번의 실행이 하나의 질문으로 끝나는 경우는 드물지만 패널에는 하나의 자리밖에 없었습니다. 가장 오래된 질문에 가장 새로운 답변을 짝지었기 때문에, 라운드짜리 실행에서는 번째 질문 옆에 번째 질문의 답변이 놓이고 라운드 자신의 답변에는 닿을 없었습니다. 이제 단위는 라운드입니다. 가장 새로운 라운드는 펼쳐진 채로 두고, 오래된 라운드는 자신의 시각과 질문을 밝히는 한 줄로 접히며, subagent 의 접힌 줄은 그것이 속한 root 라운드와 같은 시각과 문구를 가집니다. 또한 subagent 자신의 Response 를 잃고 있었습니다. provider 의 공통 서문을 어느 agent 의 assignment 로 읽지 않게 하는 규칙이, 두 agent 아래에 나타나는 긴 텍스트 전부와 일치했기 때문입니다. child 의 답변은 자기 기록에도 부모 기록에도 나타납니다. 이 규칙은 이제 들어온 메시지만 봅니다. 따라서 agent 것은 실행 반복되든 agent 의 것입니다. process, file, network endpoint 선택해도 이상 패널이 그려지지 않습니다. 각자 자신을 밝힙니다. 명령줄과 pid 부모, 경로와 그것을 건드린 이력, 주소와 그곳에 도달한 process 입니다. 그리고 어떤 유형이 한도를 넘어 붐비면 가장 새로운 것들은 그려진 채로 두고 오래된 것들은 하나의 node 접히며, 안에 담긴 모든 것을 여전히 이름으로 열거합니다. 천 개의 path 를 건드리는 실행도 하나도 잃지 않은 채 읽을 수 있습니다. 각 agent 가 소유한 provider-neutral, agent-local multi-agent conversation 은 예전과 같은 기록 그대로입니다. 달라진 것은 읽는 사람이 그중 일부가 아니라 전부에 닿을 있다는 점입니다. 어떤 유형이 어디서부터 접히는지는 Dashboard 를 만드는 모든 명령의 `--fold-budget N` 정합니다. 수백 개의 파일을 쓰는 배포 환경은 패키지를 고치지 않고 자신의 숫자를 고를 수 있습니다.
71
71
 
72
72
  통합 dashboard는 execution graph, logs, conversation records를 하나의 inspection flow에서 제공합니다. Finalized run은 `conversations.md`와 `conversations.json`을 만들며, 검증된 provider transcript는 run-local SHA-256 content store로 복사됩니다. Claude Code, OpenAI Codex, Cursor, OpenCode, Google Antigravity는 각 integration이 실제로 노출하는 가장 강한 multi-agent evidence를 사용합니다. gateway나 local runtime이 root request/response만 노출하면 ExecWeave는 root conversation만 보여 주며 subagent나 hidden routing을 만들어내지 않습니다.
73
73
 
@@ -276,7 +276,7 @@ Conversation isolation은 attribution/display 규칙이지 redaction boundary가
276
276
 
277
277
  ## 현재 상태
278
278
 
279
- v0.7.9는 cross-platform runtime collection, materialized execution graph, standalone/live dashboard, 보수적인 provider↔runtime correlation, content-addressed full-fidelity provider evidence, attributable multi-agent execution trace, run-local conversation access, provider-neutral projection의 agent-local conversation isolation, standalone 및 live dashboard의 per-agent conversation focus를 통합합니다. 각 integration은 provider가 실제로 노출한 가장 강한 identity/routing evidence만 보존하고 충분한 증거가 없으면 abstain합니다. Observed evidence와 inference는 설계상 계속 분리됩니다.
279
+ v0.8.1은 cross-platform runtime collection, materialized execution graph, standalone/live dashboard, 보수적인 provider↔runtime correlation, content-addressed full-fidelity provider evidence, attributable multi-agent execution trace, run-local conversation access, provider-neutral projection의 agent-local conversation isolation, standalone 및 live dashboard의 per-round agent conversation 패널과 스스로를 설명하는 non-agent node 및 유형별 접기를 통합합니다. 각 integration은 provider가 실제로 노출한 가장 강한 identity/routing evidence만 보존하고 충분한 증거가 없으면 abstain합니다. Observed evidence와 inference는 설계상 계속 분리됩니다.
280
280
 
281
281
  ## 문서
282
282
 
@@ -31,7 +31,7 @@ Install the latest published wheel/sdist from PyPI:
31
31
  python -m pip install -U execweave
32
32
  ```
33
33
 
34
- The current release is **v0.7.9**.
34
+ The current release is **v0.8.1**.
35
35
 
36
36
  For development:
37
37
 
@@ -67,7 +67,7 @@ execweave record --open -- python my_agent.py
67
67
 
68
68
  `execweave top -- codex` keeps the Agent interactive in the launch terminal while opening/attaching the detached Top dashboard according to the host environment.
69
69
 
70
- **v0.7.9one dashboard, while the run happens and afterwards.** Live, the finished run and viewer.html were three renderings of the same evidence, and completion fetched a separate document and wrote it over the page a reader was watching. There is now one shell: finishing a run changes its state in place, and viewer.html is that same dashboard saved offline. Selecting an agent answers one question and stops a root shows its Prompt and its Final response, a subagent shows its Task, its Thinking where the provider exposed plaintext, and its Response while a process, a file, a network endpoint or a model shows no conversation at all, because a conversation belongs to an agent. A turn the provider encrypted reads as observed without plaintext rather than as never recorded, the block a provider prepends to every subagent is never presented as one agent's assignment, and an answer that quotes routing words survives intact. The provider-neutral, agent-local multi-agent conversations each agent owns are aggregated across every archive a run wrote, so an agent recorded many times still shows what it said. Release checks drive the shipped dashboard in a real browser through every selection a person can make, in both its live and its finished form.
70
+ **v0.8.1every round, and every node, says what it holds.** A run is rarely one question, and the panel had room for one: it paired the oldest prompt with the newest answer, so a two-round run showed the first question beside the second question's reply while the first round's own answer stayed unreachable. Rounds are the unit now the newest is open, older ones fold to a line naming their own moment and question, and a subagent's fold carries the timestamp and wording of the root round it came from. Two subagents had also been losing their Response: the rule that stops a provider's shared preamble from being read as one agent's assignment matched any long text appearing under two agents, and a child's answer appears both in its own record and in its parent's. That rule now reaches inbound messages only, so what an agent wrote stays its own however often the run repeats it. Selecting a process, a file or a network endpoint no longer draws an empty panel: each names what it is — a command line with its pid and parent, a path with the history that touched it, an address with the process that reached it. And a type crowded past its budget keeps its newest members drawn while the older ones collapse into a single node that still names every one it holds, so a run that touches a thousand paths stays readable without losing one of them. The provider-neutral, agent-local multi-agent conversations each agent owns are the same records they always were; what changed is that a reader can reach all of them instead of one. The budget past which a type folds is `--fold-budget N` on every command that renders a dashboard, so a deployment whose agents write hundreds of files chooses its own number instead of editing the package.
71
71
 
72
72
  The unified dashboard brings the execution graph, logs, and conversation records into the same inspection flow. Finalized runs generate `conversations.md` and `conversations.json`, while validated provider transcripts are copied into the run-local SHA-256 content store. Claude Code, OpenAI Codex, Cursor, OpenCode, and Google Antigravity use the strongest provider-exposed multi-agent evidence available to each integration. For gateways and local runtimes that expose only root request/response traffic, ExecWeave shows only that root conversation and does not invent subagents or hidden routing.
73
73
 
@@ -276,7 +276,7 @@ Conversation isolation is an attribution/display rule, not a redaction boundary.
276
276
 
277
277
  ## Current status
278
278
 
279
- v0.7.9 combines cross-platform runtime collection, materialized execution graphs, standalone/live dashboards, conservative provider↔runtime correlation, full-fidelity content-addressed provider evidence, attributable multi-agent execution traces, direct run-local conversation access, agent-local conversation isolation across provider-neutral projections, and per-agent conversation focus in the standalone and live dashboards. Supported integrations preserve the strongest identity/routing evidence actually exposed by each provider and abstain when that evidence is unavailable. Observed evidence and inference remain separate by design.
279
+ v0.8.1 combines cross-platform runtime collection, materialized execution graphs, standalone/live dashboards, conservative provider↔runtime correlation, full-fidelity content-addressed provider evidence, attributable multi-agent execution traces, direct run-local conversation access, agent-local conversation isolation across provider-neutral projections, per-round agent conversation panels, and self-describing non-agent nodes with per-type folding in the standalone and live dashboards. Supported integrations preserve the strongest identity/routing evidence actually exposed by each provider and abstain when that evidence is unavailable. Observed evidence and inference remain separate by design.
280
280
 
281
281
  ## Documentation
282
282
 
@@ -31,7 +31,7 @@ ExecWeave — source-available, local-first проект наблюдаемос
31
31
  python -m pip install -U execweave
32
32
  ```
33
33
 
34
- Текущая версия — **v0.7.9**.
34
+ Текущая версия — **v0.8.1**.
35
35
 
36
36
  Для разработки:
37
37
 
@@ -67,7 +67,7 @@ execweave record --open -- python my_agent.py
67
67
 
68
68
  `execweave top -- codex` оставляет Agent интерактивным в стартовом terminal и одновременно открывает либо подключает detached Top dashboard в зависимости от host environment.
69
69
 
70
- **v0.7.9одна панель, во время прогона и после него.** Live, завершённый прогон и viewer.html были тремя отрисовками одних и тех же свидетельств, а завершение забирало отдельный документ и записывало его поверх страницы, которую читатель уже смотрел. Теперь оболочка одна: завершение меняет состояние на месте, а viewer.htmlэто та же панель, сохранённая офлайн. Выбор agent отвечает на один вопрос и останавливается: корень показывает свой Prompt и итоговый ответ, subagent свою задачу, своё рассуждение там, где provider раскрыл открытый текст, и свой ответ, тогда как процесс, файл, сетевая конечная точка или модель не показывают conversation вовсе, потому что conversation принадлежит agent. Turn, зашифрованный provider, читается как наблюдавшийся без открытого текста, а не как никогда не записанный; блок, который provider добавляет перед каждым subagent, никогда не подаётся как задание какого-либо agent; ответ, цитирующий слова маршрутизации, остаётся целым. Provider-neutral, agent-local multi-agent conversations, которыми владеет каждый agent, собираются по всем архивам, записанным прогоном, поэтому agent, записанный много раз, по-прежнему показывает сказанное им. Релизные проверки ведут поставляемую панель в настоящем браузере через каждый выбор, который может сделать человек, и в live-, и в завершённой форме.
70
+ **v0.8.1каждый раунд и каждый узел говорят, что в них есть.** Прогон редко состоит из одного вопроса, а в панели помещался только один: она ставила самый старый вопрос рядом с самым свежим ответом, поэтому прогон из двух раундов показывал первый вопрос рядом с ответом на второй, а собственный ответ первого раунда оставался недостижимым. Теперь единицей стал раунд самый свежий раскрыт, более старые сворачиваются в строку, называющую собственное время и собственный вопрос, а свёртка subagent несёт отметку времени и формулировку корневого раунда, из которого она пришла. Два subagent к тому же теряли свой ответ: правило, не дающее прочесть общую преамбулу provider как задание одного agent, срабатывало на любой длинный текст, встречающийся под двумя agent, а ответ потомка появляется и в его собственной записи, и в записи родителя. Теперь это правило смотрит только на входящие сообщения, поэтому написанное agent остаётся его собственным, сколько бы раз прогон это ни повторил. Выбор процесса, файла или сетевой конечной точки больше не рисует пустую панель: каждый называет, что он такое командная строка со своим pid и родителем, путь с историей того, что его касалось, адрес с процессом, который до него дошёл. А тип, переполнивший свой бюджет, оставляет отрисованными самые свежие элементы, тогда как более старые сворачиваются в один узел, который по-прежнему называет каждый из них, так что прогон, затрагивающий тысячу путей, остаётся читаемым и не теряет ни одного. Provider-neutral, agent-local multi-agent conversations, которыми владеет каждый agent, те же самые записи, что и раньше; изменилось то, что читатель добирается до всех них, а не до одной. Порог, за которым тип сворачивается, задаёт `--fold-budget N` у каждой команды, которая строит панель, так что развёртывание, чьи agent пишут сотни файлов, выбирает своё число, а не правит пакет.
71
71
 
72
72
  Единый dashboard объединяет execution graph, logs и conversation records в одном inspection flow. Finalized runs создают `conversations.md` и `conversations.json`, а проверенные provider transcripts копируются в run-local SHA-256 content store. Claude Code, OpenAI Codex, Cursor, OpenCode и Google Antigravity используют наиболее сильную multi-agent evidence, которую реально раскрывает соответствующая integration. Если gateway или local runtime показывает только root request/response, ExecWeave отображает только root conversation и не выдумывает subagents или hidden routing.
73
73
 
@@ -276,7 +276,7 @@ Conversation isolation — это правило attribution/display, а не re
276
276
 
277
277
  ## Текущий статус
278
278
 
279
- v0.7.9 объединяет cross-platform runtime collection, materialized execution graphs, standalone/live dashboards, conservative provider↔runtime correlation, full-fidelity content-addressed provider evidence, attributable multi-agent execution traces, прямой run-local conversation access agent-local conversation isolation в provider-neutral projections и per-agent conversation focus в standalone и live dashboards. Каждая integration сохраняет только наиболее сильную identity/routing evidence, реально раскрытую provider, и abstain-ит при её отсутствии. Observed evidence и inference по-прежнему разделены архитектурно.
279
+ v0.8.1 объединяет cross-platform runtime collection, materialized execution graphs, standalone/live dashboards, conservative provider↔runtime correlation, full-fidelity content-addressed provider evidence, attributable multi-agent execution traces, прямой run-local conversation access, agent-local conversation isolation в provider-neutral projections, панели conversation по раундам и самоописывающиеся non-agent узлы со свёрткой по типу в standalone и live dashboards. Каждая integration сохраняет только наиболее сильную identity/routing evidence, реально раскрытую provider, и abstain-ит при её отсутствии. Observed evidence и inference по-прежнему разделены архитектурно.
280
280
 
281
281
  ## Документация
282
282
 
@@ -31,7 +31,7 @@ ExecWeave 是一个 source-available、local-first 的可观测性项目,把 A
31
31
  python -m pip install -U execweave
32
32
  ```
33
33
 
34
- 当前正式版本是 **v0.7.9**。
34
+ 当前正式版本是 **v0.8.1**。
35
35
 
36
36
  开发安装:
37
37
 
@@ -67,7 +67,7 @@ execweave record --open -- python my_agent.py
67
67
 
68
68
  `execweave top -- codex` 会让 Agent 保持在启动 terminal 中交互,并根据主机环境打开或附加 detached Top dashboard。
69
69
 
70
- **v0.7.9运行中与运行后,同一套 Dashboard。** Live、完成后的画面与 viewer.html 原本是同一批证据的三种渲染,而且运行结束时会去抓另一份文件覆盖读者正在看的页面。现在只有一套 shell:完成只让当前画面转为结束状态,viewer.html 就是同一套 Dashboard 的离线存档。选取一个 agent 只回答一个问题就停——root 显示它的 Prompt Final response,subagent 显示 Task、provider 有公开明文时的 Thinking、以及 Response——而 process、file、网络端点或 model 完全不显示任何对话,因为对话属于 agent。provider 加密的 turn 读作「已观测但未公开明文」,而不是从未记录;provider 加在每个 subagent 前面的内容永远不会被当成某个 agent 的交办;引用了 routing 字眼的回答也完整保留。每个 agent 各自拥有的 provider-neutral、agent-local multi-agent conversation 会跨该次运行写出的所有存档聚合,因此被记录多次的 agent 仍然显示得出它说了什么。发布前的检查会用真实浏览器把出货的 Dashboard live finished 两种状态下走过每一种可操作的选取。
70
+ **v0.8.1每一轮、每一个 node,都说得出自己有什么。** 一次运行很少只有一个问题,面板却只放得下一个:它把最旧的提问配上最新的回答,于是两轮的运行会把第一个问题和第二个问题的回答排在一起,而第一轮自己的回答根本点不到。现在以轮为单位——最新的一轮展开,较旧的折叠成一行,标明它自己的时间与问题;subagent 的折叠行沿用它所属 root 轮次的时间与叙述。另外有两个 subagent 一直遗失自己的 Response:那条避免把 provider 共用前言当成某个 agent 交办的规则,会比对任何同时出现在两个 agent 底下的长文字,而 child 的回答本来就同时出现在它自己的记录与父层的记录里。该规则现在只看送进来的消息,所以 agent 写的东西不管在运行中重复几次都仍然是它自己的。选取 process、file 或网络端点不再画出空面板:各自说明自己是什么——命令行连同它的 pid 与父进程、路径连同动过它的历程、地址连同连上它的进程。而某个类型多到超过额度时,最新的仍然画出来,较旧的收合成单一 node,并且仍然列出它收了哪些,因此动到上千个路径的运行依然读得下去,也不会漏掉任何一个。 每个 agent 各自拥有的 provider-neutral、agent-local multi-agent conversation 仍是原本那份记录;变的是读者现在读得到全部,而不是其中一段。 某个类型从哪里开始折叠,由每个会产生 Dashboard 的命令上的 `--fold-budget N` 决定,因此写入上百个文件的部署可以自己选数字,不必去改包。
71
71
 
72
72
  统一 dashboard 把 execution graph、logs 与 conversation records 放进同一条 inspection flow。Finalized run 会生成 `conversations.md` 与 `conversations.json`,经过验证的 provider transcript 也会复制进 run-local SHA-256 content store。Claude Code、OpenAI Codex、Cursor、OpenCode 与 Google Antigravity 都依据各自实际暴露的 evidence 强度建立 multi-agent trace;如果 gateway 或 local runtime 只提供 root request/response,ExecWeave 就只显示 root conversation,不会虚构 subagent 或 hidden routing。
73
73
 
@@ -276,7 +276,7 @@ Conversation isolation 是 attribution/display 规则,而不是 redaction boun
276
276
 
277
277
  ## 当前状态
278
278
 
279
- v0.7.9 组合 cross-platform runtime collection、materialized execution graph、standalone/live dashboard、保守的 provider↔runtime correlation、content-addressed full-fidelity provider evidence、可归属的 multi-agent execution trace、run-local conversation access,provider-neutral projection 上的 agent-local conversation isolation,以及 standalone 与 live dashboard 上的 per-agent conversation focus。各 integration 只保留 provider 实际暴露的最强 identity/routing evidence,证据不足时选择 abstain。Observed evidence 与 inference 从设计上保持分离。
279
+ v0.8.1 组合 cross-platform runtime collection、materialized execution graph、standalone/live dashboard、保守的 provider↔runtime correlation、content-addressed full-fidelity provider evidence、可归属的 multi-agent execution trace、run-local conversation access,provider-neutral projection 上的 agent-local conversation isolation,以及 standalone 与 live dashboard 上的 per-round agent conversation 面板、会自我说明并依类型折叠的 non-agent node。各 integration 只保留 provider 实际暴露的最强 identity/routing evidence,证据不足时选择 abstain。Observed evidence 与 inference 从设计上保持分离。
280
280
 
281
281
  ## 文档
282
282
 
@@ -31,7 +31,7 @@ ExecWeave 是一個 source-available、local-first 的可觀測性專案,會
31
31
  python -m pip install -U execweave
32
32
  ```
33
33
 
34
- 目前正式版本是 **v0.7.9**。
34
+ 目前正式版本是 **v0.8.1**。
35
35
 
36
36
  開發安裝:
37
37
 
@@ -67,7 +67,7 @@ execweave record --open -- python my_agent.py
67
67
 
68
68
  `execweave top -- codex` 會讓 Agent 保持在啟動 terminal 中互動,並依主機環境開啟或附加 detached Top dashboard。
69
69
 
70
- **v0.7.9執行中與執行後,同一套 Dashboard。** Live、完成後的畫面與 viewer.html 原本是同一批證據的三種渲染,而且執行結束時會去抓另一份文件覆蓋讀者正在看的頁面。現在只有一套 shell:完成只讓當前畫面轉為結束狀態,viewer.html 就是同一套 Dashboard 的離線存檔。選取一個 agent 只回答一個問題就停——root 顯示它的 Prompt Final response,subagent 顯示 Task、provider 有公開明文時的 Thinking、以及 Response——而 process、file、網路端點或 model 完全不顯示任何對話,因為對話屬於 agent。provider 加密的 turn 讀作「已觀測但未公開明文」,而不是從未記錄;provider 加在每個 subagent 前面的內容永遠不會被當成某個 agent 的交辦;引用了 routing 字眼的回答也完整保留。每個 agent 各自擁有的 provider-neutral、agent-local multi-agent conversation 會跨該次執行寫出的所有存檔聚合,因此被記錄多次的 agent 仍然顯示得出它說了什麼。發布前的檢查會用真實瀏覽器把出貨的 Dashboard live finished 兩種狀態下走過每一種可操作的選取。
70
+ **v0.8.1每一輪、每一個 node,都說得出自己有什麼。** 一次執行很少只有一個問題,面板卻只放得下一個:它把最舊的提問配上最新的回答,於是兩輪的執行會把第一個問題和第二個問題的回答排在一起,而第一輪自己的回答根本點不到。現在以輪為單位——最新的一輪展開,較舊的摺疊成一行,標明它自己的時間與問題;subagent 的摺疊行沿用它所屬 root 輪次的時間與敘述。另外有兩個 subagent 一直遺失自己的 Response:那條避免把 provider 共用前言當成某個 agent 交辦的規則,會比對任何同時出現在兩個 agent 底下的長文字,而 child 的回答本來就同時出現在它自己的紀錄與父層的紀錄裡。該規則現在只看送進來的訊息,所以 agent 寫的東西不管在執行中重複幾次都仍然是它自己的。選取 process、file 或網路端點不再畫出空面板:各自說明自己是什麼——指令列連同它的 pid 與父行程、路徑連同動過它的歷程、位址連同連上它的行程。而某個類型多到超過額度時,最新的仍然畫出來,較舊的收合成單一 node,並且仍然列出它收了哪些,因此動到上千個路徑的執行依然讀得下去,也不會漏掉任何一個。 每個 agent 各自擁有的 provider-neutral、agent-local multi-agent conversation 仍是原本那份紀錄;變的是讀者現在讀得到全部,而不是其中一段。 某個類型從哪裡開始摺疊,由每個會產生 Dashboard 的命令上的 `--fold-budget N` 決定,因此寫入上百個檔案的部署可以自己選數字,不必去改套件。
71
71
 
72
72
  統一 dashboard 把 execution graph、logs 與 conversation records 放進同一條 inspection flow。Finalized run 會產生 `conversations.md` 與 `conversations.json`,經驗證的 provider transcript 也會複製進 run-local SHA-256 content store。Claude Code、OpenAI Codex、Cursor、OpenCode 與 Google Antigravity 都依各自實際曝露的 evidence 強度建立 multi-agent trace;若 gateway 或 local runtime 只提供 root request/response,ExecWeave 就只顯示 root conversation,不會虛構 subagent 或 hidden routing。
73
73
 
@@ -276,7 +276,7 @@ Conversation isolation 是 attribution/display 規則,不是 redaction boundar
276
276
 
277
277
  ## 目前狀態
278
278
 
279
- v0.7.9 整合 cross-platform runtime collection、materialized execution graph、standalone/live dashboard、保守的 provider↔runtime correlation、content-addressed full-fidelity provider evidence、可歸屬的 multi-agent execution trace、run-local conversation access,provider-neutral projection 上的 agent-local conversation isolation,以及 standalone 與 live dashboard 上的 per-agent conversation focus。各 integration 只保留 provider 實際曝露的最強 identity/routing evidence,證據不足時選擇 abstain。Observed evidence 與 inference 仍從設計上分離。
279
+ v0.8.1 整合 cross-platform runtime collection、materialized execution graph、standalone/live dashboard、保守的 provider↔runtime correlation、content-addressed full-fidelity provider evidence、可歸屬的 multi-agent execution trace、run-local conversation access,provider-neutral projection 上的 agent-local conversation isolation,以及 standalone 與 live dashboard 上的 per-round agent conversation 面板、會自我說明並依類型摺疊的 non-agent node。各 integration 只保留 provider 實際曝露的最強 identity/routing evidence,證據不足時選擇 abstain。Observed evidence 與 inference 仍從設計上分離。
280
280
 
281
281
  ## 文件
282
282
 
@@ -0,0 +1,176 @@
1
+ # ExecWeave 0.8.0 implementation plan
2
+
3
+ > Baseline: `main` @ `bfdfb1b` (v0.7.9).
4
+ > This is a specification to execute item by item, not a proposal. Every item needs a
5
+ > corresponding browser check.
6
+
7
+ ---
8
+
9
+ ## 0. What this round fixes
10
+
11
+ v0.7.9 collapsed live, finished and `viewer.html` into one dashboard and reduced the
12
+ agent panel to "root: Prompt and Final response" / "subagent: Task, Thinking and
13
+ Response".
14
+
15
+ Running a real session with five subagents and two rounds of questions exposed three
16
+ things:
17
+
18
+ 1. Two subagents lost their Response; it rendered as encrypted.
19
+ 2. The `/root` panel paired the first question with the second question's answer, and
20
+ the first round's real answer was nowhere.
21
+ 3. process, file and tool_call nodes carry nothing when selected, so they have no
22
+ meaning in the graph.
23
+
24
+ The first two are defects. The third is a gap.
25
+
26
+ ---
27
+
28
+ ## 1. Fix: a subagent's Response classified as injected context
29
+
30
+ ### Symptom
31
+
32
+ In one run, two of five subagents showed this in the Response card:
33
+
34
+ ```
35
+ Observed — plaintext not exposed by provider.
36
+ ```
37
+
38
+ while `conversations.json` holds their `subagent_final_response` as `plaintext`, intact.
39
+
40
+ ### Cause
41
+
42
+ The v0.7.9 rule in `_mark_shared_injected_context()`
43
+ (`src/execweave/_conversation_records_core.py`) reads:
44
+
45
+ > text of 400 characters or more appearing verbatim under two or more agents is marked
46
+ > `content_role = "shared_injected_context"`.
47
+
48
+ The rule exists to stop the plugin catalogue a provider prepends to every subagent from
49
+ being read as that agent's assignment. But **a child's answer legitimately appears
50
+ twice**: in the child's own rollout, and in the root's record, because the child reports
51
+ back to root. The answer is therefore classified as injected context and filtered out by
52
+ `isInjected()` in `viewer_agent_panel.py`.
53
+
54
+ Only two of five were affected because the other three answers are shorter than 400
55
+ characters and slipped under the threshold.
56
+
57
+ ### Fix
58
+
59
+ Apply the rule to inbound assignments only:
60
+
61
+ - consider only messages where `recipient === <the agent>` and `sender !== <the agent>`
62
+ - never apply it to messages the agent wrote itself (`sender === <the agent>`)
63
+ - keep the 400-character threshold, but stop treating it as the sole criterion
64
+
65
+ ### Verification
66
+
67
+ - unit: assert against the real `conversations.json` from that run that all five agents
68
+ keep a plaintext Response
69
+ - browser: select each of the five subagents; no Response may render the encrypted notice
70
+ - reverted: restore the old rule and the check must fail
71
+
72
+ ---
73
+
74
+ ## 2. Rounds
75
+
76
+ ### Definition
77
+
78
+ | panel | one round |
79
+ |---|---|
80
+ | `/root` | one user message through that round's final answer |
81
+ | subagent | one assignment through its Task / Thinking / Response |
82
+
83
+ ### Presentation
84
+
85
+ - **the newest round is on top and expanded**
86
+ - older rounds fold to a single line: `17:22 · five agents reviewing dependency risk`
87
+ - **no fold at all when there is only one round**; keep the v0.7.9 appearance
88
+ - a subagent's fold carries the timestamp of **the root round it belongs to**, not of its
89
+ own assignment, so the two sides line up
90
+ - time only within a single day; a `08-31` style prefix appears when a run crosses
91
+ midnight
92
+
93
+ ### Attribution
94
+
95
+ Each subagent round belongs to the root round whose interval contains it. A root round's
96
+ interval runs from its question to the next question, and the last round runs to the end
97
+ of the run.
98
+
99
+ ### Verification
100
+
101
+ - browser: a run with two questions gives `/root` two rounds, newest expanded, older
102
+ folded
103
+ - browser: expanding an older round shows that round's question beside **that round's own**
104
+ answer
105
+ - browser: a subagent's fold timestamp equals the root round it belongs to
106
+
107
+ ---
108
+
109
+ ## 3. Non-agent nodes
110
+
111
+ Selecting a process, file, tool_call or network_endpoint currently shows nothing. What
112
+ follows lists **only what the existing data actually supports**. No field may be shown
113
+ that does not exist.
114
+
115
+ | node | shows | source |
116
+ |---|---|---|
117
+ | `process` | command, executable, pid / ppid, when it appeared | `cmdline`, `exe`, `pid`, `ppid`, `create_time` |
118
+ | `file` | filename, creation / modification / deletion and their times | edge `event_types`, `first_seen`, `last_seen` |
119
+ | `tool_call` | tool name, time, input field names | `tool_name`, `input_keys`, `tool_use_id` |
120
+ | `session` | launch command, working directory, backend | `command`, `cwd`, `backend` |
121
+ | `network_endpoint` | address, first and last seen, which process connected | node name and edge |
122
+ | `model` / `tool` / `provider_session` | provider, name, session id | node attributes |
123
+
124
+ ### cmdline already carries inline scripts
125
+
126
+ `cmdline` is captured verbatim, newlines included. For example:
127
+
128
+ ```
129
+ ['/bin/zsh', '-lc', 'if [[ -n "$ZDOTDIR" ]]; then\n rc="$ZDOTDIR/.zshrc"\n…']
130
+ ```
131
+
132
+ For inline execution the script text is **already in the data today** and simply is not
133
+ rendered. The panel shows it in full, folding when long.
134
+
135
+ ### The content boundary for tool_call
136
+
137
+ The inputs and outputs of `collaborationspawn_agent`, `collaborationsend_message` and
138
+ `collaborationwait_agent` **are the agent conversation itself**.
139
+
140
+ - **conversation-routing tools: do not show message content.** Name the agent the message
141
+ was addressed to and say the content lives in that agent's panel.
142
+ - **non-conversation tools** such as `webrun`: show prompt and response.
143
+
144
+ The reason: v0.7.9 established that a conversation belongs to an agent and a non-agent
145
+ node must not show one. If a tool_call panel rendered its input verbatim,
146
+ `collaborationsend_message` would become a place to read agent conversations from a
147
+ non-agent node — the hole just closed, reopened through a different door.
148
+
149
+ ### Verification
150
+
151
+ - browser: selecting a `collaborationsend_message` node shows no agent conversation
152
+ - browser: selecting a `webrun` node shows what was queried and what came back
153
+ - browser: selecting a process node shows the full cmdline
154
+
155
+ ---
156
+
157
+ ## 4. Red lines
158
+
159
+ The v0.7.9 boundaries hold and are not relaxed for this round:
160
+
161
+ 1. Live, finished and `viewer.html` share one renderer.
162
+ 2. Completion never calls `fetch('/final')`, `document.write()`, or replaces the DOM.
163
+ 3. A conversation belongs to an agent. A non-agent node never shows one.
164
+ 4. The main dashboard does not regain Conversation records, Raw node evidence, Show all
165
+ agents, Open raw conversation evidence, Saved views, Timeline, Filters, or
166
+ provider/relation/bytes source annotations.
167
+ 5. Encrypted content reads as observed without plaintext, never as unobserved.
168
+ 6. Every new contract needs a Chromium behaviour check. Source-string assertions are not
169
+ an acceptable substitute.
170
+
171
+ ---
172
+
173
+ ## 5. Out of scope
174
+
175
+ Capturing file contents and rendering diffs changes the collection layer and belongs to
176
+ 0.8.1. Here, a file node shows creation, modification and deletion with their timestamps.
@@ -4,8 +4,8 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "execweave"
7
- # ExecWeave v0.7.9 release metadata
8
- version = "0.7.9"
7
+ # ExecWeave v0.8.1 release metadata
8
+ version = "0.8.1"
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"