agentwire-dev 1.67.0__tar.gz → 1.69.0__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 (618) hide show
  1. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/.github/workflows/security.yml +73 -1
  2. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/PKG-INFO +1 -1
  3. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/__init__.py +1 -1
  4. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/__main__.py +6 -2
  5. agentwire_dev-1.69.0/agentwire/alerts_cli.py +153 -0
  6. agentwire_dev-1.69.0/agentwire/auth_expired.py +493 -0
  7. agentwire_dev-1.69.0/agentwire/beta.py +182 -0
  8. agentwire_dev-1.69.0/agentwire/buddy_cli.py +370 -0
  9. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/cohort.py +10 -0
  10. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/completion.py +50 -2
  11. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/config.py +129 -5
  12. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/core.py +371 -72
  13. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/doctor_cli.py +733 -59
  14. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/ensure_cli.py +41 -0
  15. agentwire_dev-1.69.0/agentwire/fleet_alerts.py +327 -0
  16. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/history.py +220 -12
  17. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/history_cli.py +125 -0
  18. agentwire_dev-1.69.0/agentwire/history_migrate.py +463 -0
  19. agentwire_dev-1.69.0/agentwire/hooks/damage-control/bash-tool-damage-control.py +3009 -0
  20. agentwire_dev-1.69.0/agentwire/hooks/damage-control/edit-tool-damage-control.py +2910 -0
  21. agentwire_dev-1.69.0/agentwire/hooks/damage-control/mcp-tool-damage-control.py +3045 -0
  22. agentwire_dev-1.69.0/agentwire/hooks/damage-control/read-tool-damage-control.py +2925 -0
  23. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/hooks/damage-control/rules/agentwire.yaml +7 -0
  24. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/hooks/damage-control/rules/aws.yaml +13 -0
  25. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/hooks/damage-control/rules/cloud-hosting.yaml +27 -0
  26. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/hooks/damage-control/rules/containers.yaml +10 -3
  27. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/hooks/damage-control/rules/core.yaml +19 -7
  28. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/hooks/damage-control/rules/databases.yaml +27 -55
  29. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/hooks/damage-control/rules/firebase.yaml +5 -0
  30. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/hooks/damage-control/rules/gcp.yaml +9 -0
  31. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/hooks/damage-control/rules/gws.yaml +7 -0
  32. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/hooks/damage-control/rules/infrastructure.yaml +10 -0
  33. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/hooks/damage-control/rules/outbound.yaml +7 -0
  34. agentwire_dev-1.69.0/agentwire/hooks/damage-control/rules/payloads.yaml +118 -0
  35. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/hooks/damage-control/rules/publish.yaml +6 -0
  36. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/hooks/damage-control/rules/remote.yaml +30 -0
  37. agentwire_dev-1.69.0/agentwire/hooks/damage-control/write-tool-damage-control.py +2909 -0
  38. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/hooks/queue-processor.sh +0 -0
  39. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/hooks_cli.py +60 -7
  40. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/inbox.py +130 -9
  41. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/limits_cli.py +18 -1
  42. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/machine_cli.py +8 -8
  43. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/mcp_msg.py +8 -0
  44. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/mcp_services.py +4 -2
  45. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/msg_cli.py +10 -2
  46. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/onboarding.py +8 -1
  47. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/pane_cli.py +24 -9
  48. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/prompt_router.py +452 -61
  49. agentwire_dev-1.69.0/agentwire/restart_cli.py +276 -0
  50. agentwire_dev-1.69.0/agentwire/role_prompts.py +301 -0
  51. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/roles/__init__.py +11 -0
  52. agentwire_dev-1.69.0/agentwire/roles/agentwire.md +87 -0
  53. agentwire_dev-1.69.0/agentwire/roles/orchestrator.md +105 -0
  54. agentwire_dev-1.69.0/agentwire/roles/worker-worktree.md +51 -0
  55. agentwire_dev-1.69.0/agentwire/roles/worker.md +51 -0
  56. agentwire_dev-1.69.0/agentwire/safety/_core.py +2821 -0
  57. agentwire_dev-1.69.0/agentwire/safety/lint.py +252 -0
  58. agentwire_dev-1.69.0/agentwire/safety/provenance.py +205 -0
  59. agentwire_dev-1.69.0/agentwire/safety/rule_baselines.json +116 -0
  60. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/safety_cli.py +18 -2
  61. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/safety_commands.py +395 -54
  62. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/scheduler/dispatch.py +59 -2
  63. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/scheduler/models.py +3 -1
  64. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/scheduler_cli.py +2 -1
  65. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/security.py +8 -22
  66. agentwire_dev-1.69.0/agentwire/services.py +628 -0
  67. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/session_cli.py +39 -7
  68. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/system_cli.py +30 -3
  69. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/tasks.py +22 -5
  70. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/tasks_cli.py +48 -0
  71. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/templates/tmux.conf +12 -3
  72. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/usage_limit.py +49 -1
  73. agentwire_dev-1.69.0/agentwire/voice_layer/__init__.py +29 -0
  74. agentwire_dev-1.69.0/agentwire/voice_layer/client.py +1880 -0
  75. agentwire_dev-1.69.0/agentwire/voice_layer/confirm.py +2166 -0
  76. agentwire_dev-1.69.0/agentwire/voice_layer/delivery.py +262 -0
  77. agentwire_dev-1.69.0/agentwire/voice_layer/identity.py +204 -0
  78. agentwire_dev-1.69.0/agentwire/voice_layer/instructions.py +324 -0
  79. agentwire_dev-1.69.0/agentwire/voice_layer/outbox.py +188 -0
  80. agentwire_dev-1.69.0/agentwire/voice_layer/realtime.py +152 -0
  81. agentwire_dev-1.69.0/agentwire/voice_layer/server.py +450 -0
  82. agentwire_dev-1.69.0/agentwire/voice_layer/surface.py +355 -0
  83. agentwire_dev-1.69.0/agentwire/voice_layer/tools.py +849 -0
  84. agentwire_dev-1.69.0/agentwire/voice_layer/transcript.py +441 -0
  85. agentwire_dev-1.69.0/agentwire/voice_layer/write_tools.py +381 -0
  86. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/docs/wiki/INDEX.md +4 -1
  87. agentwire_dev-1.69.0/docs/wiki/auth-expired.md +210 -0
  88. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/docs/wiki/internals/damage-control.md +424 -10
  89. agentwire_dev-1.69.0/docs/wiki/security/pip-audit.md +158 -0
  90. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/docs/wiki/security/secrets.md +36 -0
  91. agentwire_dev-1.69.0/docs/wiki/services.md +140 -0
  92. agentwire_dev-1.69.0/docs/wiki/sessions/conversation-identity.md +532 -0
  93. agentwire_dev-1.69.0/docs/wiki/sessions/heal-line-count-cliff.md +166 -0
  94. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/docs/wiki/sessions/messaging.md +180 -6
  95. agentwire_dev-1.69.0/docs/wiki/sessions/prompt-routing.md +290 -0
  96. agentwire_dev-1.69.0/docs/wiki/voice-layer.md +2461 -0
  97. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/pyproject.toml +4 -0
  98. agentwire_dev-1.69.0/tests/conftest.py +371 -0
  99. agentwire_dev-1.69.0/tests/fixtures/main_mcp_tools.json +110 -0
  100. agentwire_dev-1.69.0/tests/home_guard.py +133 -0
  101. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/integration/test_tmux_name_rewrite.py +11 -3
  102. agentwire_dev-1.69.0/tests/page_slice.py +40 -0
  103. agentwire_dev-1.69.0/tests/unit/test_auth_expired.py +417 -0
  104. agentwire_dev-1.69.0/tests/unit/test_auth_expired_dispatch.py +310 -0
  105. agentwire_dev-1.69.0/tests/unit/test_beta_flag.py +795 -0
  106. agentwire_dev-1.69.0/tests/unit/test_buddy_restart.py +370 -0
  107. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_build_agent_command.py +38 -16
  108. agentwire_dev-1.69.0/tests/unit/test_client_wires.py +302 -0
  109. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_control_plane_protection.py +8 -0
  110. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_damage_control_bypass.py +10 -0
  111. agentwire_dev-1.69.0/tests/unit/test_damage_control_hooks.py +1867 -0
  112. agentwire_dev-1.69.0/tests/unit/test_damage_control_payload_anchoring.py +1354 -0
  113. agentwire_dev-1.69.0/tests/unit/test_doctor_orphaned_history.py +168 -0
  114. agentwire_dev-1.69.0/tests/unit/test_doctor_secrets_perms.py +128 -0
  115. agentwire_dev-1.69.0/tests/unit/test_fleet_alerts.py +804 -0
  116. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_guarded_launch_command.py +12 -2
  117. agentwire_dev-1.69.0/tests/unit/test_history.py +179 -0
  118. agentwire_dev-1.69.0/tests/unit/test_history_migrate.py +476 -0
  119. agentwire_dev-1.69.0/tests/unit/test_history_migrate_cli.py +134 -0
  120. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_history_resume_name.py +9 -9
  121. agentwire_dev-1.69.0/tests/unit/test_home_isolation.py +364 -0
  122. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_hooks_install.py +10 -0
  123. agentwire_dev-1.69.0/tests/unit/test_launch_line_reentry.py +355 -0
  124. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_locking.py +4 -4
  125. agentwire_dev-1.69.0/tests/unit/test_owner_only_writes.py +102 -0
  126. agentwire_dev-1.69.0/tests/unit/test_pip_audit_report.py +580 -0
  127. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_prompt_router.py +6 -2
  128. agentwire_dev-1.69.0/tests/unit/test_prompt_router_resume.py +701 -0
  129. agentwire_dev-1.69.0/tests/unit/test_remote_session_record.py +97 -0
  130. agentwire_dev-1.69.0/tests/unit/test_restart_cli.py +373 -0
  131. agentwire_dev-1.69.0/tests/unit/test_role_prompt_retention.py +286 -0
  132. agentwire_dev-1.69.0/tests/unit/test_role_prompt_sweep_wiring.py +198 -0
  133. agentwire_dev-1.69.0/tests/unit/test_safety_deployment.py +842 -0
  134. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_safety_heal.py +9 -0
  135. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_services.py +1 -1
  136. agentwire_dev-1.69.0/tests/unit/test_services_command.py +919 -0
  137. agentwire_dev-1.69.0/tests/unit/test_session_metadata_ssot.py +190 -0
  138. agentwire_dev-1.69.0/tests/unit/test_session_metadata_write.py +157 -0
  139. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_skill_install.py +12 -2
  140. agentwire_dev-1.69.0/tests/unit/test_tmux_session_cwd.py +126 -0
  141. agentwire_dev-1.69.0/tests/unit/test_unattended_scoped_allow.py +732 -0
  142. agentwire_dev-1.69.0/tests/unit/test_voice_announcer.py +3291 -0
  143. agentwire_dev-1.69.0/tests/unit/test_voice_body_delivery.py +364 -0
  144. agentwire_dev-1.69.0/tests/unit/test_voice_bridge_host.py +343 -0
  145. agentwire_dev-1.69.0/tests/unit/test_voice_confirm.py +3761 -0
  146. agentwire_dev-1.69.0/tests/unit/test_voice_epoch.py +432 -0
  147. agentwire_dev-1.69.0/tests/unit/test_voice_fleet_alerts.py +152 -0
  148. agentwire_dev-1.69.0/tests/unit/test_voice_kind.py +468 -0
  149. agentwire_dev-1.69.0/tests/unit/test_voice_layer.py +689 -0
  150. agentwire_dev-1.69.0/tests/unit/test_voice_outbox.py +460 -0
  151. agentwire_dev-1.69.0/tests/unit/test_voice_persona.py +334 -0
  152. agentwire_dev-1.69.0/tests/unit/test_voice_surface.py +1201 -0
  153. agentwire_dev-1.69.0/tests/unit/test_voice_wiki_accuracy.py +818 -0
  154. agentwire_dev-1.69.0/tools/voice_dc_probe.py +254 -0
  155. agentwire_dev-1.69.0/tools/voice_heal_probe.py +281 -0
  156. agentwire_dev-1.67.0/agentwire/hooks/damage-control/bash-tool-damage-control.py +0 -1605
  157. agentwire_dev-1.67.0/agentwire/hooks/damage-control/edit-tool-damage-control.py +0 -1515
  158. agentwire_dev-1.67.0/agentwire/hooks/damage-control/mcp-tool-damage-control.py +0 -1642
  159. agentwire_dev-1.67.0/agentwire/hooks/damage-control/read-tool-damage-control.py +0 -1530
  160. agentwire_dev-1.67.0/agentwire/hooks/damage-control/write-tool-damage-control.py +0 -1514
  161. agentwire_dev-1.67.0/agentwire/safety/_core.py +0 -1429
  162. agentwire_dev-1.67.0/agentwire/services.py +0 -325
  163. agentwire_dev-1.67.0/docs/wiki/security/pip-audit.md +0 -60
  164. agentwire_dev-1.67.0/docs/wiki/services.md +0 -74
  165. agentwire_dev-1.67.0/docs/wiki/sessions/conversation-identity.md +0 -151
  166. agentwire_dev-1.67.0/docs/wiki/sessions/prompt-routing.md +0 -156
  167. agentwire_dev-1.67.0/tests/conftest.py +0 -149
  168. agentwire_dev-1.67.0/tests/unit/test_damage_control_hooks.py +0 -806
  169. agentwire_dev-1.67.0/tests/unit/test_history.py +0 -34
  170. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/.agentwire.yml.example +0 -0
  171. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/.claude/commands/handoff.md +0 -0
  172. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/.claude/skills/wiki/SKILL.md +0 -0
  173. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/.github/FUNDING.yml +0 -0
  174. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  175. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  176. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/.github/ISSUE_TEMPLATE/question.md +0 -0
  177. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  178. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/.github/workflows/pytest.yml +0 -0
  179. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/.github/workflows/ruff.yml +0 -0
  180. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/.github/workflows/tts-smoke.yml +0 -0
  181. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/.gitignore +0 -0
  182. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/AGENTS.md +0 -0
  183. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/CODE_OF_CONDUCT.md +0 -0
  184. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/CONTRIBUTING.md +0 -0
  185. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/Dockerfile.local +0 -0
  186. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/LICENSE +0 -0
  187. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/README.md +0 -0
  188. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/RELEASING.md +0 -0
  189. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/SECURITY.md +0 -0
  190. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/SPONSORS.md +0 -0
  191. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/agents/__init__.py +0 -0
  192. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/agents/base.py +0 -0
  193. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/agents/tmux.py +0 -0
  194. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/cached_status.py +0 -0
  195. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/channels/__init__.py +0 -0
  196. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/channels/base.py +0 -0
  197. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/channels/email.py +0 -0
  198. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/channels/push.py +0 -0
  199. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/channels/quo.py +0 -0
  200. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/channels_cli.py +0 -0
  201. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/chrome_tabs.py +0 -0
  202. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/config_cli.py +0 -0
  203. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/council/__init__.py +0 -0
  204. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/council/cli.py +0 -0
  205. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/council/inbox.py +0 -0
  206. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/council/minutes.py +0 -0
  207. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/council/state.py +0 -0
  208. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/council/view.py +0 -0
  209. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/devices.py +0 -0
  210. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/diff_cli.py +0 -0
  211. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/doctor_voice.py +0 -0
  212. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/fetch.py +0 -0
  213. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/handoff/__init__.py +0 -0
  214. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/handoff/git_state.py +0 -0
  215. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/handoff/instructions.py +0 -0
  216. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/handoff/parser.py +0 -0
  217. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/handoff/renderer.py +0 -0
  218. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/handoff/schema.py +0 -0
  219. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/handoff_cli.py +0 -0
  220. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/hooks/__init__.py +0 -0
  221. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/hooks/agentwire-permission.sh +0 -0
  222. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/hooks/damage-control/__init__.py +0 -0
  223. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/hooks/damage-control/audit_logger.py +0 -0
  224. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/hooks/damage-control/rules/control-plane.yaml +0 -0
  225. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/hooks/damage-control/rules/git.yaml +0 -0
  226. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/hooks/idle-handler.sh +0 -0
  227. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/listen.py +0 -0
  228. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/locking.py +0 -0
  229. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/mcp_channels.py +0 -0
  230. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/mcp_chrome.py +0 -0
  231. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/mcp_cli.py +0 -0
  232. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/mcp_core.py +0 -0
  233. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/mcp_council.py +0 -0
  234. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/mcp_desktop.py +0 -0
  235. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/mcp_handoff.py +0 -0
  236. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/mcp_history.py +0 -0
  237. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/mcp_listen.py +0 -0
  238. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/mcp_lock.py +0 -0
  239. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/mcp_machine.py +0 -0
  240. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/mcp_notify.py +0 -0
  241. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/mcp_pane.py +0 -0
  242. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/mcp_projects.py +0 -0
  243. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/mcp_scheduler.py +0 -0
  244. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/mcp_scratchpad.py +0 -0
  245. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/mcp_server.py +0 -0
  246. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/mcp_session.py +0 -0
  247. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/mcp_status.py +0 -0
  248. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/mcp_task.py +0 -0
  249. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/mcp_tunnels.py +0 -0
  250. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/mcp_voice.py +0 -0
  251. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/mcp_wiki.py +0 -0
  252. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/mcp_worktree.py +0 -0
  253. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/network.py +0 -0
  254. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/notify_cli.py +0 -0
  255. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/palette_cli.py +0 -0
  256. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/pane_manager.py +0 -0
  257. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/portal_cli.py +0 -0
  258. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/project_config.py +0 -0
  259. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/projects.py +0 -0
  260. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/prompts_cli.py +0 -0
  261. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/push_cli.py +0 -0
  262. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/push_store.py +0 -0
  263. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/repo_cli.py +0 -0
  264. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/research.py +0 -0
  265. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/roles/anchor.md +0 -0
  266. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/roles/chatbot.md +0 -0
  267. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/roles/contributor.md +0 -0
  268. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/roles/correspondent.md +0 -0
  269. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/roles/council-brain.md +0 -0
  270. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/roles/council-conscience.md +0 -0
  271. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/roles/council-critic.md +0 -0
  272. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/roles/council-devils-advocate.md +0 -0
  273. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/roles/council-gut.md +0 -0
  274. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/roles/council-historian.md +0 -0
  275. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/roles/council-member.md +0 -0
  276. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/roles/council-orchestrator.md +0 -0
  277. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/roles/init.md +0 -0
  278. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/roles/notifications.md +0 -0
  279. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/roles/reviewer-worktree.md +0 -0
  280. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/roles/reviewer.md +0 -0
  281. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/roles/shared-checkout.md +0 -0
  282. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/roles/soul.md +0 -0
  283. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/roles/task-runner.md +0 -0
  284. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/roles/voice.md +0 -0
  285. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/roles_cli.py +0 -0
  286. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/routes/__init__.py +0 -0
  287. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/routes/artifacts.py +0 -0
  288. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/routes/config.py +0 -0
  289. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/routes/council.py +0 -0
  290. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/routes/desktop.py +0 -0
  291. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/routes/history.py +0 -0
  292. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/routes/machines.py +0 -0
  293. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/routes/notify.py +0 -0
  294. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/routes/palette.py +0 -0
  295. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/routes/permission.py +0 -0
  296. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/routes/projects.py +0 -0
  297. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/routes/push.py +0 -0
  298. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/routes/safety.py +0 -0
  299. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/routes/scheduler.py +0 -0
  300. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/routes/scratchpad.py +0 -0
  301. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/routes/sessions.py +0 -0
  302. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/routes/sessions_admin.py +0 -0
  303. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/routes/voice.py +0 -0
  304. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/safety/__init__.py +0 -0
  305. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/scheduler/__init__.py +0 -0
  306. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/scheduler/gates.py +0 -0
  307. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/scheduler/loop.py +0 -0
  308. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/scheduler/report.py +0 -0
  309. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/scheduler/schedule.py +0 -0
  310. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/scheduler/state.py +0 -0
  311. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/scheduler/zombie.py +0 -0
  312. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/scratchpad.py +0 -0
  313. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/send_cli.py +0 -0
  314. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/server.py +0 -0
  315. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/session_context.py +0 -0
  316. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/session_ready.py +0 -0
  317. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/ssh.py +0 -0
  318. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/agentwire-splash-logo-layers--agentwire-text.png +0 -0
  319. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/agentwire-splash-logo-layers--echo-claw-fg.png +0 -0
  320. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/agentwire-splash-logo-layers--echo.png +0 -0
  321. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/agentwire-splash-logo-layers--telephone.png +0 -0
  322. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/agentwire-splash-logo-layers--tree.png +0 -0
  323. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/announcements.json +0 -0
  324. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/apple-touch-icon.png +0 -0
  325. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/css/desktop.css +0 -0
  326. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/css/mobile.css +0 -0
  327. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/favicon-32.png +0 -0
  328. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/favicon-64.png +0 -0
  329. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/icons/sessions/bear.webp +0 -0
  330. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/icons/sessions/cat.webp +0 -0
  331. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/icons/sessions/crown.webp +0 -0
  332. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/icons/sessions/custom/agentwire-portal.webp +0 -0
  333. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/icons/sessions/custom/agentwire-tts.webp +0 -0
  334. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/icons/sessions/custom/agentwire.webp +0 -0
  335. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/icons/sessions/deer.webp +0 -0
  336. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/icons/sessions/drone.webp +0 -0
  337. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/icons/sessions/eagle.webp +0 -0
  338. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/icons/sessions/fox.webp +0 -0
  339. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/icons/sessions/hawk.webp +0 -0
  340. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/icons/sessions/horse.webp +0 -0
  341. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/icons/sessions/lion.webp +0 -0
  342. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/icons/sessions/rabbit.webp +0 -0
  343. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/icons/sessions/robot.webp +0 -0
  344. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/icons/sessions/tiger.webp +0 -0
  345. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/icons/sessions/wolf.webp +0 -0
  346. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/img/icon-192.png +0 -0
  347. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/img/icon-512.png +0 -0
  348. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/js/.gitkeep +0 -0
  349. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/js/announcement-modal.js +0 -0
  350. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/js/api.js +0 -0
  351. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/js/artifact-window.js +0 -0
  352. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/js/card-terminal.js +0 -0
  353. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/js/collage.js +0 -0
  354. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/js/command-palette.js +0 -0
  355. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/js/council-window.js +0 -0
  356. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/js/dead-key-suppressor.js +0 -0
  357. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/js/desktop-manager.js +0 -0
  358. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/js/desktop.js +0 -0
  359. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/js/help-modal.js +0 -0
  360. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/js/icon-manager.js +0 -0
  361. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/js/lineage.js +0 -0
  362. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/js/mobile.js +0 -0
  363. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/js/notification-prefs.js +0 -0
  364. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/js/notifications-panel.js +0 -0
  365. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/js/ptt.js +0 -0
  366. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/js/push-client.js +0 -0
  367. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/js/review-window.js +0 -0
  368. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/js/safety-shared.js +0 -0
  369. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/js/safety-window.js +0 -0
  370. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/js/scratchpad.js +0 -0
  371. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/js/service-classification.js +0 -0
  372. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/js/session-hud-controller.js +0 -0
  373. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/js/session-hud-notices.js +0 -0
  374. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/js/session-hud-spawn.js +0 -0
  375. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/js/session-hud.js +0 -0
  376. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/js/session-id.js +0 -0
  377. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/js/session-window.js +0 -0
  378. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/js/shortcuts.js +0 -0
  379. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/js/sidebar/artifacts-section.js +0 -0
  380. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/js/sidebar/config-section.js +0 -0
  381. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/js/sidebar/council-section.js +0 -0
  382. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/js/sidebar/machines-section.js +0 -0
  383. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/js/sidebar/projects-section.js +0 -0
  384. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/js/sidebar/safety-section.js +0 -0
  385. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/js/sidebar/scheduler-section.js +0 -0
  386. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/js/sidebar/services-section.js +0 -0
  387. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/js/sidebar/sessions-section.js +0 -0
  388. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/js/sidebar.js +0 -0
  389. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/js/spawn-ghost.js +0 -0
  390. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/js/terminal-font-prefs.js +0 -0
  391. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/js/terminal-pane.js +0 -0
  392. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/js/tile-manager.js +0 -0
  393. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/js/toast.js +0 -0
  394. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/js/token-modal.js +0 -0
  395. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/js/topology-render.js +0 -0
  396. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/js/utils/ansi.js +0 -0
  397. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/js/utils/rich-text.js +0 -0
  398. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/js/utils/swipe.js +0 -0
  399. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/js/voice/autosend-prefs.js +0 -0
  400. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/js/voice/browser-stt.js +0 -0
  401. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/js/voice/browser-tts.js +0 -0
  402. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/js/voice/jargon.js +0 -0
  403. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/js/voice/prompt.js +0 -0
  404. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/js/winbox.bundle.min.js +0 -0
  405. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/js/workspace-window.js +0 -0
  406. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/manifest.webmanifest +0 -0
  407. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/service-worker.js +0 -0
  408. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/topology-harness.html +0 -0
  409. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/stt/__init__.py +0 -0
  410. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/stt/base.py +0 -0
  411. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/stt/cloud.py +0 -0
  412. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/stt/engine.py +0 -0
  413. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/stt/local.py +0 -0
  414. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/stt/server_backend.py +0 -0
  415. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/stt/stt_server.py +0 -0
  416. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/tabs_cli.py +0 -0
  417. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/templates/__init__.py +0 -0
  418. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/templates/base.html +0 -0
  419. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/templates/council/minutes.html.j2 +0 -0
  420. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/templates/desktop.html +0 -0
  421. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/templates/email_notification.html +0 -0
  422. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/templates/handoff/show-the-story.html.j2 +0 -0
  423. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/templates/handoff/theme.css.j2 +0 -0
  424. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/templates/mobile.html +0 -0
  425. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/templates/pair.html +0 -0
  426. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/templates/statusline.sh +0 -0
  427. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/templating.py +0 -0
  428. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/tooldefs/aws.yaml +0 -0
  429. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/tooldefs/docker.yaml +0 -0
  430. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/tooldefs/gcp.yaml +0 -0
  431. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/tooldefs/gh.yaml +0 -0
  432. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/tooldefs/git.yaml +0 -0
  433. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/tooldefs/gws.yaml +0 -0
  434. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/tooldefs/kubectl.yaml +0 -0
  435. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/tooldefs/npm.yaml +0 -0
  436. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/tooldefs/terraform.yaml +0 -0
  437. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/tooldefs/uv.yaml +0 -0
  438. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/tts/__init__.py +0 -0
  439. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/tts/audio.py +0 -0
  440. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/tts/base.py +0 -0
  441. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/tts/engines/__init__.py +0 -0
  442. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/tts/engines/chatterbox.py +0 -0
  443. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/tts/engines/kokoro.py +0 -0
  444. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/tts/engines/zonos.py +0 -0
  445. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/tts/kokoro_server.py +0 -0
  446. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/tts/local.py +0 -0
  447. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/tts/registry.py +0 -0
  448. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/tts_cli.py +0 -0
  449. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/tts_server.py +0 -0
  450. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/tunnels.py +0 -0
  451. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/tunnels_cli.py +0 -0
  452. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/utils/__init__.py +0 -0
  453. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/utils/chunker.py +0 -0
  454. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/utils/event_log.py +0 -0
  455. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/utils/file_io.py +0 -0
  456. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/utils/paths.py +0 -0
  457. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/utils/speech.py +0 -0
  458. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/utils/subprocess.py +0 -0
  459. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/validation.py +0 -0
  460. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/voice_status.py +0 -0
  461. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/wait_cli.py +0 -0
  462. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/wiki.py +0 -0
  463. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/wiki_audit.py +0 -0
  464. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/wiki_cli.py +0 -0
  465. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/worktree.py +0 -0
  466. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/worktree_cli.py +0 -0
  467. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/worktree_registry.py +0 -0
  468. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/docs/decisions/obsidian-second-brain.md +0 -0
  469. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/docs/design/session-card-fields.md +0 -0
  470. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/docs/design/session-card-recommendation.md +0 -0
  471. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/docs/logo.png +0 -0
  472. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/docs/wiki/architecture.md +0 -0
  473. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/docs/wiki/briefing-mode.md +0 -0
  474. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/docs/wiki/communication/channels.md +0 -0
  475. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/docs/wiki/communication/hammerspoon.md +0 -0
  476. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/docs/wiki/communication/handoff.md +0 -0
  477. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/docs/wiki/concepts.md +0 -0
  478. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/docs/wiki/council.md +0 -0
  479. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/docs/wiki/deployment/remote-access.md +0 -0
  480. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/docs/wiki/deployment/remote-machines.md +0 -0
  481. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/docs/wiki/glossary.md +0 -0
  482. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/docs/wiki/integrations/gws-google-workspace-cli.md +0 -0
  483. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/docs/wiki/internals/parallel-refactor.md +0 -0
  484. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/docs/wiki/internals/portal.md +0 -0
  485. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/docs/wiki/internals/session-topology.md +0 -0
  486. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/docs/wiki/internals/shell-escaping.md +0 -0
  487. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/docs/wiki/internals/troubleshooting.md +0 -0
  488. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/docs/wiki/internals/window-collage.md +0 -0
  489. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/docs/wiki/quickstart.md +0 -0
  490. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/docs/wiki/research/briefing-mode-feasibility.md +0 -0
  491. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/docs/wiki/research/orchestration-transport-alternatives.md +0 -0
  492. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/docs/wiki/scheduling/scheduled-workloads.md +0 -0
  493. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/docs/wiki/security/damage-control-hardening.md +0 -0
  494. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/docs/wiki/security/remote-access-hardening.md +0 -0
  495. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/docs/wiki/sessions/claude-code-auto-mode.md +0 -0
  496. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/docs/wiki/sessions/fan-out-cohorts.md +0 -0
  497. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/docs/wiki/sessions/helper-sessions.md +0 -0
  498. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/docs/wiki/sessions/window-sizing.md +0 -0
  499. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/docs/wiki/sessions/worktree-sessions.md +0 -0
  500. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/docs/wiki/usage-limit-recovery.md +0 -0
  501. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/docs/wiki/voice/shim-contract.md +0 -0
  502. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/docs/wiki/voice/stt-cloud.md +0 -0
  503. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/docs/wiki/voice/stt-self-hosted.md +0 -0
  504. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/docs/wiki/voice/tts-self-hosted.md +0 -0
  505. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/e2e/test_portal_ui.py +0 -0
  506. {agentwire_dev-1.67.0/agentwire/roles → agentwire_dev-1.69.0/tests/fixtures/main_roles}/agentwire.md +0 -0
  507. {agentwire_dev-1.67.0/agentwire/roles → agentwire_dev-1.69.0/tests/fixtures/main_roles}/orchestrator.md +0 -0
  508. {agentwire_dev-1.67.0/agentwire/roles → agentwire_dev-1.69.0/tests/fixtures/main_roles}/worker-worktree.md +0 -0
  509. {agentwire_dev-1.67.0/agentwire/roles → agentwire_dev-1.69.0/tests/fixtures/main_roles}/worker.md +0 -0
  510. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/fixtures/sample_agentwire.yml +0 -0
  511. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/fixtures/sample_config.yaml +0 -0
  512. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/fixtures/sample_scheduler.yaml +0 -0
  513. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/integration/test_council_portal.py +0 -0
  514. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/integration/test_scheduler_board.py +0 -0
  515. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/integration/test_send_verified_tmux.py +0 -0
  516. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/integration/test_server_websockets.py +0 -0
  517. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/integration/test_worktree_cmd.py +0 -0
  518. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_announcements.py +0 -0
  519. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_channels.py +0 -0
  520. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_chrome_tabs.py +0 -0
  521. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_cli_commands.py +0 -0
  522. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_cli_output.py +0 -0
  523. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_cli_smoke.py +0 -0
  524. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_cohort.py +0 -0
  525. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_config.py +0 -0
  526. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_config_cli.py +0 -0
  527. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_core_created_by_rooting.py +0 -0
  528. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_council_cli.py +0 -0
  529. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_council_inbox.py +0 -0
  530. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_council_minutes.py +0 -0
  531. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_council_state.py +0 -0
  532. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_council_view.py +0 -0
  533. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_damage_control_sync.py +0 -0
  534. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_dangling_worktrees.py +0 -0
  535. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_devices.py +0 -0
  536. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_diff_cli.py +0 -0
  537. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_doctor_scheduler_staleness.py +0 -0
  538. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_doctor_task_migration.py +0 -0
  539. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_doctor_voice.py +0 -0
  540. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_ensure_shared_dir.py +0 -0
  541. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_ensure_verified_prompt.py +0 -0
  542. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_event_log.py +0 -0
  543. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_file_io.py +0 -0
  544. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_handoff_git_state.py +0 -0
  545. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_handoff_instructions.py +0 -0
  546. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_handoff_parser.py +0 -0
  547. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_handoff_renderer.py +0 -0
  548. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_helper_session.py +0 -0
  549. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_idle_handler.py +0 -0
  550. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_idle_nag.py +0 -0
  551. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_inbox.py +0 -0
  552. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_init_command.py +0 -0
  553. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_install_parity.py +0 -0
  554. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_launch_via_env.py +0 -0
  555. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_limits_tick_isolation.py +0 -0
  556. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_mcp_server.py +0 -0
  557. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_mcp_tools_args.py +0 -0
  558. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_msg_cli.py +0 -0
  559. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_notify_cli.py +0 -0
  560. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_onboarding_reinit.py +0 -0
  561. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_palette_cli.py +0 -0
  562. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_pending_message_visibility.py +0 -0
  563. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_pip_environment.py +0 -0
  564. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_portal_api.py +0 -0
  565. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_posture_default.py +0 -0
  566. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_project_config.py +0 -0
  567. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_projects_registry.py +0 -0
  568. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_push.py +0 -0
  569. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_rebuild_guard.py +0 -0
  570. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_repo_cli.py +0 -0
  571. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_rich_text_js.py +0 -0
  572. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_roles.py +0 -0
  573. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_routes_snapshot.py +0 -0
  574. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_safety_commands.py +0 -0
  575. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_safety_disabled_rules.py +0 -0
  576. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_safety_escape_hatch.py +0 -0
  577. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_safety_kill_switch.py +0 -0
  578. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_scheduler.py +0 -0
  579. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_scheduler_liveness.py +0 -0
  580. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_scheduler_parsing.py +0 -0
  581. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_scheduler_zombie.py +0 -0
  582. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_scratchpad.py +0 -0
  583. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_security.py +0 -0
  584. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_server_async.py +0 -0
  585. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_server_pure.py +0 -0
  586. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_session_context.py +0 -0
  587. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_session_created_by_env.py +0 -0
  588. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_session_ready.py +0 -0
  589. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_shared_dir_guard.py +0 -0
  590. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_shim_selfheal.py +0 -0
  591. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_speech_tags.py +0 -0
  592. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_ssh.py +0 -0
  593. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_stt_backend.py +0 -0
  594. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_stt_cloud.py +0 -0
  595. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_stt_engine.py +0 -0
  596. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_task_cli.py +0 -0
  597. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_task_max_duration.py +0 -0
  598. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_tasks.py +0 -0
  599. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_tasks_cli.py +0 -0
  600. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_templating.py +0 -0
  601. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_terminal_resize.py +0 -0
  602. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_tmux_template.py +0 -0
  603. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_tts_engine_resolution.py +0 -0
  604. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_tts_local.py +0 -0
  605. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_tunnels_probe.py +0 -0
  606. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_unattended_env_isolation.py +0 -0
  607. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_usage_limit.py +0 -0
  608. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_validation.py +0 -0
  609. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_voice_status.py +0 -0
  610. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_wiki.py +0 -0
  611. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_wiki_audit.py +0 -0
  612. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_window_cycling_binding.py +0 -0
  613. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_worktree.py +0 -0
  614. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_worktree_branch_cleanup.py +0 -0
  615. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_worktree_dot_project.py +0 -0
  616. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_worktree_git_truth.py +0 -0
  617. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_worktree_layout.py +0 -0
  618. {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_worktree_registry.py +0 -0
@@ -66,6 +66,16 @@ jobs:
66
66
  # deps are bumped explicitly in pyproject; transitive fixes land via lock
67
67
  # bumps. See docs/wiki/security/pip-audit.md for the residual-CVE rationale.
68
68
  continue-on-error: true
69
+ # The weekly cron opens/updates the tracking issue, which the DEFAULT token
70
+ # does not necessarily allow — a repo set to read-only default permissions
71
+ # would fail the `gh issue` call. Declared explicitly so the durable half of
72
+ # the visibility fix can't silently no-op. (No `pull-requests: write`: this
73
+ # deliberately does not comment on PRs — a fork PR gets a read-only token,
74
+ # so that flow would silently fail for exactly the external contributors it
75
+ # would exist to serve.)
76
+ permissions:
77
+ contents: read
78
+ issues: write
69
79
  steps:
70
80
  - uses: actions/checkout@v4
71
81
  - name: Install uv
@@ -85,14 +95,42 @@ jobs:
85
95
  # HTTP request-handling CVEs are not on a reachable path. Documented +
86
96
  # ignored here so the advisory signal stays meaningful; revisit when mcp /
87
97
  # chatterbox-tts relax the ceiling. See docs/wiki/security/pip-audit.md.
98
+ # PYSEC-2026-3483 is the deprecated WebSocket SERVER transport
99
+ # (mcp.server.websocket) missing Host/Origin validation. agentwire runs
100
+ # its MCP server on stdio (mcp_server.py: mcp.run(transport="stdio")) and
101
+ # never imports that module, so it is not on a reachable path. Its fix
102
+ # needs mcp>=1.28.1, which pulls pydantic 2.13 and cascades the tts
103
+ # extra's whole chain (torch 2.6 -> 2.13 plus the CUDA stack, 32 packages)
104
+ # — a bad trade against an unreachable advisory. 1.27.2 clears the other
105
+ # two mcp advisories at a one-package diff. Revisit when the torch bump is
106
+ # wanted on its own merits. See docs/wiki/security/pip-audit.md.
88
107
  - name: Audit runtime dependencies
108
+ id: audit
109
+ continue-on-error: true
89
110
  run: >
90
111
  uvx pip-audit==2.10.1 -r requirements.txt
112
+ --format json --output audit-runtime.json
91
113
  --ignore-vuln PYSEC-2026-161
92
114
  --ignore-vuln CVE-2026-48818
93
115
  --ignore-vuln CVE-2026-48817
94
116
  --ignore-vuln CVE-2026-54283
95
117
  --ignore-vuln CVE-2026-54282
118
+ --ignore-vuln PYSEC-2026-3483
119
+ # The job stays advisory (continue-on-error above), but its RESULT is no
120
+ # longer invisible: this prints ::warning:: annotations, which GitHub
121
+ # renders on the run and PR checks views without anyone opening the job
122
+ # log, and writes a table to the step summary. `if: always()` so a
123
+ # crashed audit reports "UNKNOWN, which is not clean" rather than nothing
124
+ # — the exact shape of #900, where a red audit rendered as green.
125
+ # --min-packages is a coverage floor, not a version assertion: zero
126
+ # advisories over zero packages is not a clean bill of health. The
127
+ # runtime export is ~124 packages, so anything under 50 means the export
128
+ # produced nothing to audit and the run is reported UNKNOWN, not clean.
129
+ - name: Report advisories (never blocks)
130
+ if: always()
131
+ run: >
132
+ uv run --no-project python scripts/pip_audit_report.py
133
+ audit-runtime.json --scope runtime --min-packages 50
96
134
  # Full audit including optional extras (tts/stt: torch, onnxruntime,
97
135
  # gradio, ...). Weekly only and never ignore-filtered — surfaces the full
98
136
  # backlog for review without blocking or spamming every PR.
@@ -101,4 +139,38 @@ jobs:
101
139
  run: uv export --no-emit-project --all-extras --format requirements-txt -o requirements-all.txt
102
140
  - name: Full audit (weekly cron, optional extras)
103
141
  if: github.event_name == 'schedule'
104
- run: uvx pip-audit==2.10.1 -r requirements-all.txt
142
+ continue-on-error: true
143
+ run: >
144
+ uvx pip-audit==2.10.1 -r requirements-all.txt
145
+ --format json --output audit-all.json
146
+ - name: Report full audit + open/update the tracking issue
147
+ if: always() && github.event_name == 'schedule'
148
+ env:
149
+ GH_TOKEN: ${{ github.token }}
150
+ AUDIT_RUN_URL: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}
151
+ run: |
152
+ uv run --no-project python scripts/pip_audit_report.py audit-all.json \
153
+ --scope "all extras" --min-packages 100 --issue-body issue-body.md
154
+ # ONE issue, reused. Annotations and summaries belong to a run nobody
155
+ # revisits; an issue is what actually stops advisories accumulating
156
+ # unseen — which is how #900 reached eight.
157
+ title='pip-audit: unresolved advisories in the dependency lock'
158
+ # --state all, NOT --state open: an open-only search cannot see the
159
+ # issue this workflow closed last week, so a recurrence would file a
160
+ # SECOND issue and the "one issue, reused" promise would quietly
161
+ # become "one per close/recur cycle".
162
+ existing=$(gh issue list --state all --search "$title in:title" \
163
+ --json number,state --jq '.[0] | "\(.number) \(.state)"' || true)
164
+ number=${existing%% *}
165
+ state=${existing##* }
166
+ if grep -q ': clean' issue-body.md; then
167
+ if [ -n "$number" ] && [ "$state" = "OPEN" ]; then
168
+ gh issue comment "$number" --body-file issue-body.md
169
+ gh issue close "$number" --comment "pip-audit is clean; closing. This issue is reopened automatically if findings return."
170
+ fi
171
+ elif [ -z "$number" ]; then
172
+ gh issue create --title "$title" --label "area:security" --body-file issue-body.md
173
+ else
174
+ [ "$state" = "CLOSED" ] && gh issue reopen "$number"
175
+ gh issue comment "$number" --body-file issue-body.md
176
+ fi
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agentwire-dev
3
- Version: 1.67.0
3
+ Version: 1.69.0
4
4
  Summary: Multi-session voice web interface for AI coding agents
5
5
  Project-URL: Homepage, https://agentwire.dev
6
6
  Project-URL: Repository, https://github.com/dotdevdotdev/agentwire-dev
@@ -1,3 +1,3 @@
1
1
  """AgentWire - Multi-session voice web interface for AI coding agents."""
2
2
 
3
- __version__ = "1.67.0"
3
+ __version__ = "1.69.0"
@@ -183,24 +183,27 @@ Command Categories:
183
183
  # - diff: structured git diff for the mobile Review window
184
184
  # - prompts: prompt routing (rides the limits watchdog)
185
185
  # - msg: polite agent-to-agent inbox (rides the watchdog)
186
- from . import diff_cli, limits_cli, msg_cli, pane_cli, prompts_cli, send_cli # noqa: I001 # session_cli kept on its own line below to minimize Phase 1 #495 merge conflicts
186
+ from . import alerts_cli, diff_cli, limits_cli, msg_cli, pane_cli, prompts_cli, send_cli # noqa: I001 # session_cli kept on its own line below to minimize Phase 1 #495 merge conflicts
187
187
  from . import session_cli
188
188
  from . import channels_cli, config_cli, portal_cli, tts_cli
189
189
  from . import scheduler_cli, ensure_cli, tasks_cli
190
190
  from . import doctor_cli, history_cli, machine_cli, safety_cli
191
191
  from . import handoff_cli, hooks_cli, mcp_cli, roles_cli, tunnels_cli
192
192
  from . import notify_cli, palette_cli, push_cli, repo_cli, system_cli, wiki_cli
193
- from . import tabs_cli, wait_cli, worktree_cli
193
+ from . import restart_cli, tabs_cli, wait_cli, worktree_cli
194
+ from . import buddy_cli # BETA: gated on beta.voice_layer (default off)
194
195
  from .council import cli as council_cli
195
196
 
196
197
  _REGISTRARS = [ # noqa: N806 # registry constant; Phase 1 of #495 appends here
197
198
  diff_cli.register_diff_parser,
198
199
  prompts_cli.register_prompts_parser,
199
200
  msg_cli.register_msg_parser,
201
+ alerts_cli.register_alerts_parser,
200
202
  limits_cli.register_limits_parser,
201
203
  pane_cli.register_pane_parser,
202
204
  send_cli.register_send_parser,
203
205
  session_cli.register_session_parser,
206
+ restart_cli.register_restart_parser,
204
207
  portal_cli.register_portal_parser,
205
208
  tts_cli.register_tts_parser,
206
209
  channels_cli.register_channels_parser,
@@ -227,6 +230,7 @@ Command Categories:
227
230
  tabs_cli.register_tabs_parser,
228
231
  wait_cli.register_wait_parser,
229
232
  worktree_cli.register_helper_parser,
233
+ buddy_cli.register_buddy_parser,
230
234
  ]
231
235
  for _reg in _REGISTRARS:
232
236
  _reg(subparsers)
@@ -0,0 +1,153 @@
1
+ """``agentwire alerts`` — who hears the machine's own detectors (#982).
2
+
3
+ Fleet detectors (expired login, usage-limit park, dead-lettered report-backs, a
4
+ root pane blocked with nowhere to route) have always been able to email the
5
+ OWNER. ``fleet_alerts`` lets them address a SESSION as typed mail instead, and
6
+ this is the surface that turns that on: without a CLI verb the subscription API
7
+ would be reachable only from inside the tree that calls it, which is precisely
8
+ the shape "CLI is the single source of truth" exists to prevent.
9
+
10
+ Subscription is a renewable **lease**, so ``list`` reports the expiry rather
11
+ than a boolean: a subscriber that stopped renewing has silently stopped
12
+ hearing anything, and that is a state an operator has to be able to see.
13
+ """
14
+
15
+ from __future__ import annotations
16
+
17
+ import json
18
+
19
+ from . import fleet_alerts
20
+
21
+
22
+ def _emit(payload: dict, json_mode: bool, lines: "list[str] | None" = None) -> int:
23
+ if json_mode:
24
+ print(json.dumps(payload, indent=2))
25
+ else:
26
+ for line in lines or []:
27
+ print(line)
28
+ return 0 if payload.get("success", True) else 1
29
+
30
+
31
+ def cmd_alerts_subscribe(args) -> int:
32
+ json_mode = getattr(args, "json", False)
33
+ try:
34
+ lease = fleet_alerts.subscribe(args.session)
35
+ except Exception as exc:
36
+ return _emit(
37
+ {"success": False, "error": str(exc)}, json_mode, [f"error: {exc}"]
38
+ )
39
+ return _emit(
40
+ {"success": True, "session": args.session, "lease": lease},
41
+ json_mode,
42
+ [
43
+ f"'{args.session}' now receives fleet alerts.",
44
+ f" lease expires: {lease['expires_at']}",
45
+ " Renew before then — an expired lease goes quiet, it does not warn.",
46
+ ],
47
+ )
48
+
49
+
50
+ def cmd_alerts_unsubscribe(args) -> int:
51
+ json_mode = getattr(args, "json", False)
52
+ dropped = fleet_alerts.unsubscribe(args.session)
53
+ if not dropped:
54
+ return _emit(
55
+ {"success": False, "error": f"'{args.session}' was not subscribed"},
56
+ json_mode,
57
+ [f"'{args.session}' was not subscribed."],
58
+ )
59
+ return _emit(
60
+ {"success": True, "session": args.session},
61
+ json_mode,
62
+ [f"'{args.session}' no longer receives fleet alerts."],
63
+ )
64
+
65
+
66
+ def cmd_alerts_list(args) -> int:
67
+ """Who is subscribed — and whether this answer can be trusted.
68
+
69
+ ``list`` reads the same candidate index the emit path does, so a lost index
70
+ makes both of them say "nobody". That would be the worst property this
71
+ command could have: the one surface built to make a silent stop VISIBLE
72
+ would agree with the silent stop. So the index's presence is reported
73
+ alongside the answer, and its absence is not rendered as a confident zero.
74
+ """
75
+ json_mode = getattr(args, "json", False)
76
+ names = fleet_alerts.subscribers()
77
+ index_present = fleet_alerts.subscribers_index_path().exists()
78
+ rows = [{"session": n, "lease": fleet_alerts.subscription(n)} for n in names]
79
+ if names:
80
+ lines = [
81
+ "Sessions receiving fleet alerts:",
82
+ *(f" {r['session']} (lease expires {(r['lease'] or {}).get('expires_at')})"
83
+ for r in rows),
84
+ ]
85
+ elif index_present:
86
+ lines = ["No session is subscribed to fleet alerts."]
87
+ else:
88
+ lines = [
89
+ "No subscriber index — so this is NOT a confident 'nobody subscribed'.",
90
+ "Either nobody ever subscribed, or the index was lost; from here those "
91
+ "look identical, and while it is missing every alert reaches nobody.",
92
+ "Settle it (cheap, and it rebuilds the index either way):",
93
+ " agentwire alerts reindex",
94
+ ]
95
+ return _emit(
96
+ {
97
+ "success": True,
98
+ "subscribers": names,
99
+ "leases": rows,
100
+ "index_present": index_present,
101
+ },
102
+ json_mode,
103
+ lines,
104
+ )
105
+
106
+
107
+ def cmd_alerts_reindex(args) -> int:
108
+ """Rebuild the candidate index from the session records.
109
+
110
+ The alert path never walks the record store — that cost sits on the
111
+ synchronous permission-hook path — so a lost index means fewer alerts until
112
+ somebody rebuilds it. This is that somebody.
113
+ """
114
+ json_mode = getattr(args, "json", False)
115
+ names = fleet_alerts.reindex()
116
+ return _emit(
117
+ {"success": True, "subscribers": names},
118
+ json_mode,
119
+ [f"Reindexed: {len(names)} live subscriber(s)." , *(f" {n}" for n in names)],
120
+ )
121
+
122
+
123
+ def register_alerts_parser(subparsers) -> None:
124
+ parser = subparsers.add_parser(
125
+ "alerts",
126
+ help="Who hears the machine's own detectors (fleet alerts)",
127
+ description=(
128
+ "Fleet detectors — expired login, usage-limit park, dead-lettered "
129
+ "report-backs, a root pane blocked with nowhere to route — email the "
130
+ "owner. They can also address a SESSION as typed mail: an escalation "
131
+ "for the two conditions only a human can clear, a note or a request "
132
+ "for the rest. A session subscribes here, on a renewable lease."
133
+ ),
134
+ )
135
+ sub = parser.add_subparsers(dest="alerts_command", required=True)
136
+
137
+ p = sub.add_parser("subscribe", help="Lease fleet alerts for a session")
138
+ p.add_argument("session", help="Session name (must have a session record)")
139
+ p.add_argument("--json", action="store_true", help="JSON output")
140
+ p.set_defaults(func=cmd_alerts_subscribe)
141
+
142
+ p = sub.add_parser("unsubscribe", help="Drop a session's fleet-alert lease")
143
+ p.add_argument("session")
144
+ p.add_argument("--json", action="store_true", help="JSON output")
145
+ p.set_defaults(func=cmd_alerts_unsubscribe)
146
+
147
+ p = sub.add_parser("list", help="Sessions with a live lease, and its expiry")
148
+ p.add_argument("--json", action="store_true", help="JSON output")
149
+ p.set_defaults(func=cmd_alerts_list)
150
+
151
+ p = sub.add_parser("reindex", help="Rebuild the subscriber index from records")
152
+ p.add_argument("--json", action="store_true", help="JSON output")
153
+ p.set_defaults(func=cmd_alerts_reindex)