agentwire-dev 1.44.0__tar.gz → 1.45.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 (419) hide show
  1. agentwire_dev-1.45.1/.agents/skills/wiki/SKILL.md +105 -0
  2. agentwire_dev-1.45.1/.claude/skills/wiki/SKILL.md +105 -0
  3. agentwire_dev-1.45.1/.github/workflows/security.yml +74 -0
  4. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/PKG-INFO +18 -6
  5. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/README.md +16 -4
  6. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/SECURITY.md +17 -3
  7. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/SPONSORS.md +2 -2
  8. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/__init__.py +1 -1
  9. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/__main__.py +320 -8
  10. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/cli_safety.py +85 -2
  11. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/config.py +0 -22
  12. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/hooks/damage-control/bash-tool-damage-control.py +453 -68
  13. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/hooks/damage-control/edit-tool-damage-control.py +459 -72
  14. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/hooks/damage-control/mcp-tool-damage-control.py +453 -68
  15. agentwire_dev-1.45.1/agentwire/hooks/damage-control/read-tool-damage-control.py +1245 -0
  16. agentwire_dev-1.45.1/agentwire/hooks/damage-control/rules/control-plane.yaml +24 -0
  17. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/hooks/damage-control/rules/core.yaml +20 -0
  18. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/hooks/damage-control/write-tool-damage-control.py +459 -72
  19. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/mcp_server.py +87 -0
  20. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/onboarding.py +3 -0
  21. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/project_config.py +3 -57
  22. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/roles/agentwire.md +1 -1
  23. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/roles/notifications.md +1 -2
  24. agentwire_dev-1.45.1/agentwire/safety/_core.py +1144 -0
  25. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/server.py +52 -10
  26. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/session_ready.py +84 -6
  27. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/templates/tmux.conf +15 -1
  28. agentwire_dev-1.45.1/agentwire/wiki.py +524 -0
  29. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/docs/wiki/architecture.md +1 -1
  30. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/docs/wiki/internals/damage-control.md +66 -12
  31. agentwire_dev-1.45.1/docs/wiki/security/damage-control-hardening.md +92 -0
  32. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/docs/wiki/security/remote-access-hardening.md +1 -1
  33. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/pyproject.toml +16 -1
  34. agentwire_dev-1.45.1/tests/unit/test_control_plane_protection.py +338 -0
  35. agentwire_dev-1.45.1/tests/unit/test_damage_control_bypass.py +168 -0
  36. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/tests/unit/test_damage_control_sync.py +1 -0
  37. agentwire_dev-1.45.1/tests/unit/test_idle_nag.py +62 -0
  38. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/tests/unit/test_project_config.py +13 -83
  39. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/tests/unit/test_safety_heal.py +7 -6
  40. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/tests/unit/test_session_ready.py +68 -0
  41. agentwire_dev-1.45.1/tests/unit/test_skill_install.py +187 -0
  42. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/tests/unit/test_tmux_template.py +6 -0
  43. agentwire_dev-1.45.1/tests/unit/test_wiki.py +305 -0
  44. agentwire_dev-1.44.0/.agents/skills/wiki/SKILL.md +0 -89
  45. agentwire_dev-1.44.0/agentwire/safety/_core.py +0 -759
  46. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/.agents/skills/agentwire-cli/SKILL.md +0 -0
  47. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/.agents/skills/agentwire-config/SKILL.md +0 -0
  48. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/.agents/skills/agentwire-desktop-ui/SKILL.md +0 -0
  49. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/.agents/skills/agentwire-mcp-tools/SKILL.md +0 -0
  50. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/.agents/skills/agentwire-pi/SKILL.md +0 -0
  51. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/.agents/skills/agentwire-project-config/SKILL.md +0 -0
  52. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/.agents/skills/agentwire-scheduler/SKILL.md +0 -0
  53. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/.github/FUNDING.yml +0 -0
  54. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  55. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  56. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/.github/ISSUE_TEMPLATE/question.md +0 -0
  57. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  58. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/.github/workflows/pytest.yml +0 -0
  59. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/.github/workflows/tts-smoke.yml +0 -0
  60. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/.gitignore +0 -0
  61. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/AGENTS.md +0 -0
  62. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/CLA.md +0 -0
  63. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/CODE_OF_CONDUCT.md +0 -0
  64. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/CONTRIBUTING.md +0 -0
  65. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/Dockerfile.local +0 -0
  66. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/Dockerfile.runpod +0 -0
  67. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/LICENSE +0 -0
  68. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/RELEASING.md +0 -0
  69. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/agents/__init__.py +0 -0
  70. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/agents/base.py +0 -0
  71. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/agents/tmux.py +0 -0
  72. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/cached_status.py +0 -0
  73. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/channels/__init__.py +0 -0
  74. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/channels/base.py +0 -0
  75. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/channels/email.py +0 -0
  76. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/channels/quo.py +0 -0
  77. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/completion.py +0 -0
  78. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/council/__init__.py +0 -0
  79. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/council/cli.py +0 -0
  80. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/council/inbox.py +0 -0
  81. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/council/state.py +0 -0
  82. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/council/view.py +0 -0
  83. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/devices.py +0 -0
  84. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/doctor_voice.py +0 -0
  85. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/fetch.py +0 -0
  86. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/handoff/__init__.py +0 -0
  87. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/handoff/git_state.py +0 -0
  88. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/handoff/instructions.py +0 -0
  89. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/handoff/parser.py +0 -0
  90. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/handoff/renderer.py +0 -0
  91. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/handoff/schema.py +0 -0
  92. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/history.py +0 -0
  93. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/hooks/__init__.py +0 -0
  94. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/hooks/agentwire-permission.sh +0 -0
  95. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/hooks/damage-control/__init__.py +0 -0
  96. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/hooks/damage-control/audit_logger.py +0 -0
  97. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/hooks/damage-control/rules/agentwire.yaml +0 -0
  98. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/hooks/damage-control/rules/aws.yaml +0 -0
  99. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/hooks/damage-control/rules/cloud-hosting.yaml +0 -0
  100. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/hooks/damage-control/rules/containers.yaml +0 -0
  101. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/hooks/damage-control/rules/databases.yaml +0 -0
  102. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/hooks/damage-control/rules/firebase.yaml +0 -0
  103. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/hooks/damage-control/rules/gcp.yaml +0 -0
  104. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/hooks/damage-control/rules/git.yaml +0 -0
  105. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/hooks/damage-control/rules/gws.yaml +0 -0
  106. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/hooks/damage-control/rules/infrastructure.yaml +0 -0
  107. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/hooks/damage-control/rules/outbound.yaml +0 -0
  108. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/hooks/damage-control/rules/publish.yaml +0 -0
  109. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/hooks/damage-control/rules/remote.yaml +0 -0
  110. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/hooks/idle-handler.sh +0 -0
  111. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/hooks/queue-processor.sh +0 -0
  112. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/inbox.py +0 -0
  113. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/limits_cli.py +0 -0
  114. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/listen.py +0 -0
  115. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/locking.py +0 -0
  116. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/msg_cli.py +0 -0
  117. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/network.py +0 -0
  118. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/pane_manager.py +0 -0
  119. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/projects.py +0 -0
  120. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/prompt_router.py +0 -0
  121. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/prompts/__init__.py +0 -0
  122. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/prompts/init.md +0 -0
  123. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/prompts_cli.py +0 -0
  124. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/research.py +0 -0
  125. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/roles/__init__.py +0 -0
  126. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/roles/anchor.md +0 -0
  127. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/roles/chatbot.md +0 -0
  128. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/roles/correspondent.md +0 -0
  129. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/roles/council-brain.md +0 -0
  130. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/roles/council-conscience.md +0 -0
  131. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/roles/council-critic.md +0 -0
  132. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/roles/council-devils-advocate.md +0 -0
  133. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/roles/council-gut.md +0 -0
  134. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/roles/council-historian.md +0 -0
  135. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/roles/council-member.md +0 -0
  136. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/roles/council-orchestrator.md +0 -0
  137. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/roles/init.md +0 -0
  138. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/roles/orchestrator.md +0 -0
  139. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/roles/soul.md +0 -0
  140. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/roles/task-runner.md +0 -0
  141. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/roles/voice.md +0 -0
  142. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/roles/worker.md +0 -0
  143. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/roles/worktree-session.md +0 -0
  144. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/safety/__init__.py +0 -0
  145. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/scheduler.py +0 -0
  146. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/scratchpad.py +0 -0
  147. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/security.py +0 -0
  148. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/services.py +0 -0
  149. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/session_context.py +0 -0
  150. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/ssh.py +0 -0
  151. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/static/agentwire-Echo--black.png +0 -0
  152. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/static/agentwire-Echo--transparent.png +0 -0
  153. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/static/agentwire-Echo.png +0 -0
  154. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/static/agentwire-email-banner.png +0 -0
  155. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/static/agentwire-splash-logo-layers--agentwire-text.png +0 -0
  156. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/static/agentwire-splash-logo-layers--echo-claw-fg.png +0 -0
  157. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/static/agentwire-splash-logo-layers--echo.png +0 -0
  158. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/static/agentwire-splash-logo-layers--full--transparent-top.png +0 -0
  159. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/static/agentwire-splash-logo-layers--full-black.png +0 -0
  160. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/static/agentwire-splash-logo-layers--telephone-fg.png +0 -0
  161. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/static/agentwire-splash-logo-layers--telephone.png +0 -0
  162. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/static/agentwire-splash-logo-layers--transparent-top.png +0 -0
  163. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/static/agentwire-splash-logo-layers--transparent.png +0 -0
  164. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/static/agentwire-splash-logo-layers--tree.png +0 -0
  165. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/static/agentwire-splash-logo-layers.png +0 -0
  166. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/static/announcements.json +0 -0
  167. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/static/css/desktop.css +0 -0
  168. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/static/css/mobile.css +0 -0
  169. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/static/favicon.png +0 -0
  170. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/static/icons/machines/android.jpeg +0 -0
  171. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/static/icons/machines/automaton.jpeg +0 -0
  172. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/static/icons/machines/bot.jpeg +0 -0
  173. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/static/icons/machines/cyborg.jpeg +0 -0
  174. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/static/icons/machines/droid.jpeg +0 -0
  175. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/static/icons/machines/drone.jpeg +0 -0
  176. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/static/icons/machines/guardian.jpeg +0 -0
  177. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/static/icons/machines/mech.jpeg +0 -0
  178. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/static/icons/machines/probe.jpeg +0 -0
  179. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/static/icons/machines/robot.jpeg +0 -0
  180. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/static/icons/machines/sentinel.jpeg +0 -0
  181. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/static/icons/machines/unit.jpeg +0 -0
  182. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/static/icons/projects/blob.jpeg +0 -0
  183. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/static/icons/projects/cloud.jpeg +0 -0
  184. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/static/icons/projects/crystal.jpeg +0 -0
  185. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/static/icons/projects/cyclops.jpeg +0 -0
  186. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/static/icons/projects/flame.jpeg +0 -0
  187. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/static/icons/projects/fuzzy.jpeg +0 -0
  188. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/static/icons/projects/horned.jpeg +0 -0
  189. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/static/icons/projects/moon.jpeg +0 -0
  190. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/static/icons/projects/slime.jpeg +0 -0
  191. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/static/icons/projects/star.jpeg +0 -0
  192. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/static/icons/projects/tentacle.jpeg +0 -0
  193. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/static/icons/projects/winged.jpeg +0 -0
  194. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/static/icons/sessions/bear.jpeg +0 -0
  195. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/static/icons/sessions/cat.jpeg +0 -0
  196. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/static/icons/sessions/crown.jpeg +0 -0
  197. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/static/icons/sessions/custom/agentwire-portal.png +0 -0
  198. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/static/icons/sessions/custom/agentwire-tts.png +0 -0
  199. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/static/icons/sessions/custom/agentwire.png +0 -0
  200. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/static/icons/sessions/deer.jpeg +0 -0
  201. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/static/icons/sessions/drone.jpeg +0 -0
  202. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/static/icons/sessions/eagle.jpeg +0 -0
  203. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/static/icons/sessions/fox.jpeg +0 -0
  204. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/static/icons/sessions/hawk.jpeg +0 -0
  205. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/static/icons/sessions/horse.jpeg +0 -0
  206. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/static/icons/sessions/lion.jpeg +0 -0
  207. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/static/icons/sessions/rabbit.jpeg +0 -0
  208. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/static/icons/sessions/robot.jpeg +0 -0
  209. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/static/icons/sessions/tiger.jpeg +0 -0
  210. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/static/icons/sessions/wolf.jpeg +0 -0
  211. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/static/js/.gitkeep +0 -0
  212. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/static/js/announcement-modal.js +0 -0
  213. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/static/js/api.js +0 -0
  214. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/static/js/artifact-window.js +0 -0
  215. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/static/js/collage.js +0 -0
  216. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/static/js/command-palette.js +0 -0
  217. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/static/js/components/icon-picker.js +0 -0
  218. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/static/js/components/list-card.js +0 -0
  219. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/static/js/components/type-tag.js +0 -0
  220. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/static/js/council-window.js +0 -0
  221. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/static/js/dead-key-suppressor.js +0 -0
  222. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/static/js/desktop-manager.js +0 -0
  223. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/static/js/desktop.js +0 -0
  224. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/static/js/icon-manager.js +0 -0
  225. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/static/js/mobile.js +0 -0
  226. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/static/js/notification-prefs.js +0 -0
  227. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/static/js/notifications-panel.js +0 -0
  228. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/static/js/safety-shared.js +0 -0
  229. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/static/js/safety-window.js +0 -0
  230. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/static/js/scratchpad.js +0 -0
  231. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/static/js/service-classification.js +0 -0
  232. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/static/js/session-id.js +0 -0
  233. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/static/js/session-window.js +0 -0
  234. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/static/js/sidebar/artifacts-section.js +0 -0
  235. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/static/js/sidebar/config-section.js +0 -0
  236. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/static/js/sidebar/council-section.js +0 -0
  237. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/static/js/sidebar/machines-section.js +0 -0
  238. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/static/js/sidebar/projects-section.js +0 -0
  239. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/static/js/sidebar/safety-section.js +0 -0
  240. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/static/js/sidebar/scheduler-section.js +0 -0
  241. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/static/js/sidebar/services-section.js +0 -0
  242. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/static/js/sidebar/sessions-section.js +0 -0
  243. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/static/js/sidebar.js +0 -0
  244. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/static/js/terminal-font-prefs.js +0 -0
  245. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/static/js/tile-manager.js +0 -0
  246. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/static/js/toast.js +0 -0
  247. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/static/js/token-modal.js +0 -0
  248. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/static/js/utils/ansi.js +0 -0
  249. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/static/js/utils/auto-refresh.js +0 -0
  250. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/static/js/utils/swipe.js +0 -0
  251. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/static/js/voice/autosend-prefs.js +0 -0
  252. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/static/js/voice/browser-stt.js +0 -0
  253. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/static/js/voice/browser-tts.js +0 -0
  254. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/static/js/voice/jargon.js +0 -0
  255. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/static/js/voice/prompt.js +0 -0
  256. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/static/js/winbox.bundle.min.js +0 -0
  257. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/stt/__init__.py +0 -0
  258. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/stt/base.py +0 -0
  259. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/stt/cloud.py +0 -0
  260. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/stt/engine.py +0 -0
  261. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/stt/local.py +0 -0
  262. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/stt/server_backend.py +0 -0
  263. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/stt/stt_server.py +0 -0
  264. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/tasks.py +0 -0
  265. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/templates/__init__.py +0 -0
  266. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/templates/base.html +0 -0
  267. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/templates/desktop.html +0 -0
  268. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/templates/email_notification.html +0 -0
  269. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/templates/handoff/show-the-story.html.j2 +0 -0
  270. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/templates/handoff/theme.css.j2 +0 -0
  271. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/templates/mobile.html +0 -0
  272. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/templates/pair.html +0 -0
  273. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/templating.py +0 -0
  274. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/tooldefs/aws.yaml +0 -0
  275. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/tooldefs/docker.yaml +0 -0
  276. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/tooldefs/gcp.yaml +0 -0
  277. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/tooldefs/gh.yaml +0 -0
  278. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/tooldefs/git.yaml +0 -0
  279. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/tooldefs/gws.yaml +0 -0
  280. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/tooldefs/kubectl.yaml +0 -0
  281. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/tooldefs/npm.yaml +0 -0
  282. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/tooldefs/terraform.yaml +0 -0
  283. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/tooldefs/uv.yaml +0 -0
  284. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/tts/__init__.py +0 -0
  285. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/tts/audio.py +0 -0
  286. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/tts/base.py +0 -0
  287. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/tts/engines/__init__.py +0 -0
  288. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/tts/engines/chatterbox.py +0 -0
  289. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/tts/engines/kokoro.py +0 -0
  290. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/tts/engines/qwen_base.py +0 -0
  291. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/tts/engines/qwen_custom.py +0 -0
  292. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/tts/engines/qwen_design.py +0 -0
  293. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/tts/engines/zonos.py +0 -0
  294. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/tts/kokoro_server.py +0 -0
  295. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/tts/local.py +0 -0
  296. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/tts/registry.py +0 -0
  297. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/tts_server.py +0 -0
  298. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/tunnels.py +0 -0
  299. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/usage_limit.py +0 -0
  300. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/utils/__init__.py +0 -0
  301. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/utils/chunker.py +0 -0
  302. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/utils/file_io.py +0 -0
  303. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/utils/paths.py +0 -0
  304. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/utils/speech.py +0 -0
  305. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/utils/subprocess.py +0 -0
  306. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/validation.py +0 -0
  307. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/voice_status.py +0 -0
  308. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/voiceclone.py +0 -0
  309. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/voices/darren.wav +0 -0
  310. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/voices/default.wav +0 -0
  311. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/voices/jessica.wav +0 -0
  312. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/voices/lisa.wav +0 -0
  313. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/voices/may.wav +0 -0
  314. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/wiki_audit.py +0 -0
  315. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/worktree.py +0 -0
  316. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/agentwire/worktree_registry.py +0 -0
  317. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/docs/decisions/obsidian-second-brain.md +0 -0
  318. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/docs/logo.png +0 -0
  319. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/docs/wiki/INDEX.md +0 -0
  320. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/docs/wiki/briefing-mode.md +0 -0
  321. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/docs/wiki/communication/channels.md +0 -0
  322. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/docs/wiki/communication/hammerspoon.md +0 -0
  323. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/docs/wiki/communication/handoff.md +0 -0
  324. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/docs/wiki/concepts.md +0 -0
  325. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/docs/wiki/council.md +0 -0
  326. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/docs/wiki/deployment/remote-access.md +0 -0
  327. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/docs/wiki/deployment/remote-machines.md +0 -0
  328. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/docs/wiki/glossary.md +0 -0
  329. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/docs/wiki/integrations/gws-google-workspace-cli.md +0 -0
  330. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/docs/wiki/internals/portal.md +0 -0
  331. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/docs/wiki/internals/shell-escaping.md +0 -0
  332. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/docs/wiki/internals/troubleshooting.md +0 -0
  333. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/docs/wiki/internals/window-collage.md +0 -0
  334. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/docs/wiki/quickstart.md +0 -0
  335. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/docs/wiki/research/briefing-mode-feasibility.md +0 -0
  336. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/docs/wiki/research/orchestration-transport-alternatives.md +0 -0
  337. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/docs/wiki/scheduling/scheduled-workloads.md +0 -0
  338. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/docs/wiki/security/secrets.md +0 -0
  339. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/docs/wiki/services.md +0 -0
  340. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/docs/wiki/sessions/claude-code-auto-mode.md +0 -0
  341. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/docs/wiki/sessions/messaging.md +0 -0
  342. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/docs/wiki/sessions/pi.md +0 -0
  343. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/docs/wiki/sessions/prompt-routing.md +0 -0
  344. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/docs/wiki/sessions/window-sizing.md +0 -0
  345. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/docs/wiki/sessions/worktree-sessions.md +0 -0
  346. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/docs/wiki/usage-limit-recovery.md +0 -0
  347. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/docs/wiki/voice/shim-contract.md +0 -0
  348. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/docs/wiki/voice/stt-cloud.md +0 -0
  349. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/docs/wiki/voice/stt-self-hosted.md +0 -0
  350. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/docs/wiki/voice/tts-self-hosted.md +0 -0
  351. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/requirements-tts.txt +0 -0
  352. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/tests/conftest.py +0 -0
  353. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/tests/e2e/test_portal_ui.py +0 -0
  354. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/tests/fixtures/sample_agentwire.yml +0 -0
  355. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/tests/fixtures/sample_config.yaml +0 -0
  356. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/tests/fixtures/sample_scheduler.yaml +0 -0
  357. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/tests/integration/test_council_portal.py +0 -0
  358. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/tests/integration/test_scheduler_board.py +0 -0
  359. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/tests/integration/test_server_websockets.py +0 -0
  360. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/tests/integration/test_worktree_cmd.py +0 -0
  361. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/tests/unit/test_announcements.py +0 -0
  362. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/tests/unit/test_build_agent_command.py +0 -0
  363. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/tests/unit/test_channels.py +0 -0
  364. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/tests/unit/test_cli_commands.py +0 -0
  365. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/tests/unit/test_cli_output.py +0 -0
  366. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/tests/unit/test_cli_safety.py +0 -0
  367. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/tests/unit/test_config.py +0 -0
  368. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/tests/unit/test_council_cli.py +0 -0
  369. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/tests/unit/test_council_inbox.py +0 -0
  370. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/tests/unit/test_council_state.py +0 -0
  371. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/tests/unit/test_council_view.py +0 -0
  372. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/tests/unit/test_damage_control_hooks.py +0 -0
  373. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/tests/unit/test_devices.py +0 -0
  374. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/tests/unit/test_doctor_voice.py +0 -0
  375. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/tests/unit/test_file_io.py +0 -0
  376. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/tests/unit/test_handoff_git_state.py +0 -0
  377. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/tests/unit/test_handoff_instructions.py +0 -0
  378. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/tests/unit/test_handoff_parser.py +0 -0
  379. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/tests/unit/test_handoff_renderer.py +0 -0
  380. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/tests/unit/test_history.py +0 -0
  381. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/tests/unit/test_hooks_install.py +0 -0
  382. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/tests/unit/test_idle_handler.py +0 -0
  383. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/tests/unit/test_inbox.py +0 -0
  384. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/tests/unit/test_locking.py +0 -0
  385. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/tests/unit/test_mcp_server.py +0 -0
  386. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/tests/unit/test_mcp_tools_args.py +0 -0
  387. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/tests/unit/test_msg_cli.py +0 -0
  388. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/tests/unit/test_portal_api.py +0 -0
  389. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/tests/unit/test_prompt_router.py +0 -0
  390. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/tests/unit/test_rebuild_guard.py +0 -0
  391. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/tests/unit/test_roles.py +0 -0
  392. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/tests/unit/test_safety_disabled_rules.py +0 -0
  393. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/tests/unit/test_safety_escape_hatch.py +0 -0
  394. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/tests/unit/test_safety_kill_switch.py +0 -0
  395. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/tests/unit/test_scheduler.py +0 -0
  396. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/tests/unit/test_scheduler_parsing.py +0 -0
  397. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/tests/unit/test_scratchpad.py +0 -0
  398. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/tests/unit/test_security.py +0 -0
  399. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/tests/unit/test_server_async.py +0 -0
  400. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/tests/unit/test_server_pure.py +0 -0
  401. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/tests/unit/test_services.py +0 -0
  402. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/tests/unit/test_session_context.py +0 -0
  403. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/tests/unit/test_speech_tags.py +0 -0
  404. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/tests/unit/test_ssh.py +0 -0
  405. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/tests/unit/test_stt_backend.py +0 -0
  406. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/tests/unit/test_stt_cloud.py +0 -0
  407. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/tests/unit/test_stt_engine.py +0 -0
  408. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/tests/unit/test_task_cli.py +0 -0
  409. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/tests/unit/test_tasks.py +0 -0
  410. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/tests/unit/test_templating.py +0 -0
  411. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/tests/unit/test_terminal_resize.py +0 -0
  412. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/tests/unit/test_tts_engine_resolution.py +0 -0
  413. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/tests/unit/test_tts_local.py +0 -0
  414. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/tests/unit/test_usage_limit.py +0 -0
  415. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/tests/unit/test_validation.py +0 -0
  416. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/tests/unit/test_voice_status.py +0 -0
  417. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/tests/unit/test_wiki_audit.py +0 -0
  418. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/tests/unit/test_worktree.py +0 -0
  419. {agentwire_dev-1.44.0 → agentwire_dev-1.45.1}/tests/unit/test_worktree_registry.py +0 -0
@@ -0,0 +1,105 @@
1
+ ---
2
+ name: wiki
3
+ description: "Manage the agentwire LLM Wiki knowledge base. Authoring is in-context; mechanical ops (query, lint, status, new, done) run through the deterministic `agentwire wiki` CLI / `wiki_*` MCP tools. Use when recording knowledge, querying it, or health-checking the wiki. Subcommands: /wiki ingest, /wiki query <question>, /wiki lint (incl. ground-truth audit against the codebase)"
4
+ ---
5
+
6
+ # AgentWire Wiki
7
+
8
+ LLM-maintained knowledge base at `~/.agentwire/wiki/`. Read `~/.agentwire/wiki/AGENTS.md` for the full schema and conventions.
9
+
10
+ **How the loop actually works:** authoring is **in-context** — the session that learns something writes the page itself (`Write`/`Edit` into `wiki/<category>/<name>.md`), with full context, for free. That's the working path; there is **no scheduled batch ingester**. The *mechanical* parts — searching, health-checking, scaffolding, archiving sources — are deterministic and run through the `agentwire wiki` CLI (and the `wiki_query` / `wiki_lint` / `wiki_status` MCP tools), exactly like `/handoff` splits "LLM distills in-context, CLI renders deterministically."
11
+
12
+ | Mechanical op | Command |
13
+ |---|---|
14
+ | Search the wiki | `agentwire wiki query <q> [--limit N] [--json]` / MCP `wiki_query` |
15
+ | Health-check (structural + ground-truth) | `agentwire wiki lint [--strict] [--json]` / MCP `wiki_lint` |
16
+ | Overview (counts, unprocessed raw, health) | `agentwire wiki status [--json]` / MCP `wiki_status` |
17
+ | Scaffold a page with correct frontmatter | `agentwire wiki new <category> <name> [--title T]` |
18
+ | Archive a consumed source | `agentwire wiki done <rawfile>` |
19
+
20
+ (All stdlib-only — they run from a source checkout with no rebuild.)
21
+
22
+ ## Subcommands
23
+
24
+ ### `/wiki ingest`
25
+
26
+ **Authoring is in-context and primary.** When you discover something worth keeping, write or update the page *now*, in your own session — `agentwire wiki new <category> <name>` scaffolds the frontmatter, then you fill in the body and add `[[page-name]]` wikilinks. This is how the wiki is maintained; don't wait for a batch job (there isn't one).
27
+
28
+ `raw/` is an **optional verbatim-source inbox** — a place to stash an article, gist, transcript, or findings dump you might author from later. It is **not** the primary path and nothing drains it automatically.
29
+
30
+ **To author from a stranded raw source:**
31
+ 1. Read the file in `raw/`.
32
+ 2. Identify entities (technologies, patterns, APIs, research topics) and, for each, create (`agentwire wiki new …`) or update the matching `wiki/<category>/<name>.md` — in-context, citing the raw file as a source.
33
+ 3. Add `[[page-name]]` wikilinks for cross-references.
34
+ 4. When the source is consumed, archive it: **`agentwire wiki done <rawfile>`** moves `raw/<f>` → `raw/processed/<f>` (content is never edited — only relocated, so immutability holds; "unprocessed = files directly in `raw/`" stays a trivial check, no `.ingested` marker).
35
+
36
+ **Never edit the *content* of files in `raw/`** — they are immutable source material. `wiki done` only relocates them.
37
+
38
+ ### `/wiki query <question>`
39
+
40
+ Answer a question grounded in wiki content.
41
+
42
+ **Steps:**
43
+ 1. **`agentwire wiki query "<question>"`** (or MCP `wiki_query`) — deterministic ranked search (name/title weighted over body), returns top pages with `path + score + snippet`.
44
+ 2. Read the top pages it points at.
45
+ 3. Synthesize an answer citing specific wiki pages. (The CLI does **not** call an LLM — *you* synthesize, in your own context.)
46
+ 4. If the wiki doesn't have enough information, say so clearly — do not hallucinate.
47
+ 5. If you discover new knowledge while answering, write/update the relevant wiki pages (in-context).
48
+
49
+ ### `/wiki lint`
50
+
51
+ Health check the wiki. Two passes: a **structural** pass (links, freshness, frontmatter) and a **ground-truth audit** that verifies concrete claims against the actual codebase. Both run from one command:
52
+
53
+ ```bash
54
+ agentwire wiki lint # structural + ground-truth, report-only
55
+ agentwire wiki lint --json # machine-readable findings
56
+ agentwire wiki lint --strict # exit 1 when issues found (CI)
57
+ ```
58
+
59
+ **Structural pass (implemented as code in `agentwire/wiki.py`):**
60
+ - **Stale pages**: `last_updated` older than 90 days
61
+ - **Orphaned pages**: no other page links to them via `[[wikilink]]`
62
+ - **Broken wikilinks**: `[[page-name]]` pointing to a non-existent page
63
+ - **Missing/invalid frontmatter**: no frontmatter, missing `name`/`last_updated`, or an unparseable date
64
+
65
+ It does NOT auto-fix — review and decide.
66
+
67
+ #### Ground-truth audit
68
+
69
+ The wiki accrues concrete claims about the codebase — `agentwire` subcommands and flags, repo file paths, config keys, qualified Python symbols — that nothing ever verifies. Left unchecked they rot into confident-but-wrong, which is worse than no wiki. This audit extracts the checkable assertions from every page and flags the ones that no longer resolve against the source. **`agentwire wiki lint` folds this pass in automatically** alongside the structural checks; the standalone module below is the same engine, handy for pointing at a different wiki/codebase.
70
+
71
+ **Run it** (from a checkout of the agentwire repo — stdlib only, no build/install needed):
72
+
73
+ ```bash
74
+ agentwire wiki lint # structural + this ground-truth pass
75
+ python -m agentwire.wiki_audit # ground-truth pass only, against this repo
76
+ python -m agentwire.wiki_audit --json # machine-readable findings
77
+ python -m agentwire.wiki_audit --strict # exit 1 when drift is found (CI)
78
+ python -m agentwire.wiki_audit \
79
+ --wiki-dir <dir> --repo-dir <repo> # point at a different wiki / codebase
80
+ ```
81
+
82
+ Each finding is reported as `wiki_file:line [kind] claim → reason`, so you can jump straight to the stale line.
83
+
84
+ **What it checks (precision over recall — it would rather miss a stale claim than cry wolf on a true one):**
85
+
86
+ | Kind | Claim it verifies | How |
87
+ |------|-------------------|-----|
88
+ | `subcommand` | `` `agentwire <cmd>` `` in a code span | `<cmd>` must be a registered `add_parser("<cmd>")` |
89
+ | `flag` | `--flag` inside an `agentwire …` command span | must be a declared `add_argument("--flag")` |
90
+ | `path` | repo-relative paths under `agentwire/ docs/ scripts/ tests/ examples/ .Codex/ .github/` | must exist on disk |
91
+ | `symbol` | `` `module.symbol` `` where `agentwire/<module>.py` exists | `symbol` must be defined in that module |
92
+ | `config-key` | dotted key near a config-file mention | every segment must be a field on a `@dataclass` in `config.py` |
93
+
94
+ Scoping that keeps it quiet: flags/subcommands are only read inside code spans (bare prose mentioning `agentwire` or a flag isn't a claim); paths under the wiki's own `wiki/`/`raw/` trees and `~`/absolute paths are ignored; common method calls (`config.get`), filenames (`__main__.py`), and version strings (`agentwire v1.35.1`) are not mistaken for claims.
95
+
96
+ **Act on it:** treat each finding as "a human renamed/removed/moved something and the wiki didn't follow." Confirm against the code, then update the wiki page (or, if the page is a deliberate historical record — e.g. a retrospective on removed code — leave it and note that in the page). As with the structural pass, the audit **never auto-fixes**.
97
+
98
+ ## Guidelines
99
+
100
+ - Always read `~/.agentwire/wiki/AGENTS.md` first for the current schema
101
+ - One page per entity — check before creating duplicates
102
+ - Practical over theoretical — "how we use it" and "what broke" over textbook definitions
103
+ - Include code snippets, commands, config examples
104
+ - Date your updates in frontmatter `last_updated`
105
+ - Cite sources (URLs, commit hashes, issue numbers)
@@ -0,0 +1,105 @@
1
+ ---
2
+ name: wiki
3
+ description: "Manage the agentwire LLM Wiki knowledge base. Authoring is in-context; mechanical ops (query, lint, status, new, done) run through the deterministic `agentwire wiki` CLI / `wiki_*` MCP tools. Use when recording knowledge, querying it, or health-checking the wiki. Subcommands: /wiki ingest, /wiki query <question>, /wiki lint (incl. ground-truth audit against the codebase)"
4
+ ---
5
+
6
+ # AgentWire Wiki
7
+
8
+ LLM-maintained knowledge base at `~/.agentwire/wiki/`. Read `~/.agentwire/wiki/CLAUDE.md` for the full schema and conventions.
9
+
10
+ **How the loop actually works:** authoring is **in-context** — the session that learns something writes the page itself (`Write`/`Edit` into `wiki/<category>/<name>.md`), with full context, for free. That's the working path; there is **no scheduled batch ingester**. The *mechanical* parts — searching, health-checking, scaffolding, archiving sources — are deterministic and run through the `agentwire wiki` CLI (and the `wiki_query` / `wiki_lint` / `wiki_status` MCP tools), exactly like `/handoff` splits "LLM distills in-context, CLI renders deterministically."
11
+
12
+ | Mechanical op | Command |
13
+ |---|---|
14
+ | Search the wiki | `agentwire wiki query <q> [--limit N] [--json]` / MCP `wiki_query` |
15
+ | Health-check (structural + ground-truth) | `agentwire wiki lint [--strict] [--json]` / MCP `wiki_lint` |
16
+ | Overview (counts, unprocessed raw, health) | `agentwire wiki status [--json]` / MCP `wiki_status` |
17
+ | Scaffold a page with correct frontmatter | `agentwire wiki new <category> <name> [--title T]` |
18
+ | Archive a consumed source | `agentwire wiki done <rawfile>` |
19
+
20
+ (All stdlib-only — they run from a source checkout with no rebuild.)
21
+
22
+ ## Subcommands
23
+
24
+ ### `/wiki ingest`
25
+
26
+ **Authoring is in-context and primary.** When you discover something worth keeping, write or update the page *now*, in your own session — `agentwire wiki new <category> <name>` scaffolds the frontmatter, then you fill in the body and add `[[page-name]]` wikilinks. This is how the wiki is maintained; don't wait for a batch job (there isn't one).
27
+
28
+ `raw/` is an **optional verbatim-source inbox** — a place to stash an article, gist, transcript, or findings dump you might author from later. It is **not** the primary path and nothing drains it automatically.
29
+
30
+ **To author from a stranded raw source:**
31
+ 1. Read the file in `raw/`.
32
+ 2. Identify entities (technologies, patterns, APIs, research topics) and, for each, create (`agentwire wiki new …`) or update the matching `wiki/<category>/<name>.md` — in-context, citing the raw file as a source.
33
+ 3. Add `[[page-name]]` wikilinks for cross-references.
34
+ 4. When the source is consumed, archive it: **`agentwire wiki done <rawfile>`** moves `raw/<f>` → `raw/processed/<f>` (content is never edited — only relocated, so immutability holds; "unprocessed = files directly in `raw/`" stays a trivial check, no `.ingested` marker).
35
+
36
+ **Never edit the *content* of files in `raw/`** — they are immutable source material. `wiki done` only relocates them.
37
+
38
+ ### `/wiki query <question>`
39
+
40
+ Answer a question grounded in wiki content.
41
+
42
+ **Steps:**
43
+ 1. **`agentwire wiki query "<question>"`** (or MCP `wiki_query`) — deterministic ranked search (name/title weighted over body), returns top pages with `path + score + snippet`.
44
+ 2. Read the top pages it points at.
45
+ 3. Synthesize an answer citing specific wiki pages. (The CLI does **not** call an LLM — *you* synthesize, in your own context.)
46
+ 4. If the wiki doesn't have enough information, say so clearly — do not hallucinate.
47
+ 5. If you discover new knowledge while answering, write/update the relevant wiki pages (in-context).
48
+
49
+ ### `/wiki lint`
50
+
51
+ Health check the wiki. Two passes: a **structural** pass (links, freshness, frontmatter) and a **ground-truth audit** that verifies concrete claims against the actual codebase. Both run from one command:
52
+
53
+ ```bash
54
+ agentwire wiki lint # structural + ground-truth, report-only
55
+ agentwire wiki lint --json # machine-readable findings
56
+ agentwire wiki lint --strict # exit 1 when issues found (CI)
57
+ ```
58
+
59
+ **Structural pass (implemented as code in `agentwire/wiki.py`):**
60
+ - **Stale pages**: `last_updated` older than 90 days
61
+ - **Orphaned pages**: no other page links to them via `[[wikilink]]`
62
+ - **Broken wikilinks**: `[[page-name]]` pointing to a non-existent page
63
+ - **Missing/invalid frontmatter**: no frontmatter, missing `name`/`last_updated`, or an unparseable date
64
+
65
+ It does NOT auto-fix — review and decide.
66
+
67
+ #### Ground-truth audit
68
+
69
+ The wiki accrues concrete claims about the codebase — `agentwire` subcommands and flags, repo file paths, config keys, qualified Python symbols — that nothing ever verifies. Left unchecked they rot into confident-but-wrong, which is worse than no wiki. This audit extracts the checkable assertions from every page and flags the ones that no longer resolve against the source. **`agentwire wiki lint` folds this pass in automatically** alongside the structural checks; the standalone module below is the same engine, handy for pointing at a different wiki/codebase.
70
+
71
+ **Run it** (from a checkout of the agentwire repo — stdlib only, no build/install needed):
72
+
73
+ ```bash
74
+ agentwire wiki lint # structural + this ground-truth pass
75
+ python -m agentwire.wiki_audit # ground-truth pass only, against this repo
76
+ python -m agentwire.wiki_audit --json # machine-readable findings
77
+ python -m agentwire.wiki_audit --strict # exit 1 when drift is found (CI)
78
+ python -m agentwire.wiki_audit \
79
+ --wiki-dir <dir> --repo-dir <repo> # point at a different wiki / codebase
80
+ ```
81
+
82
+ Each finding is reported as `wiki_file:line [kind] claim → reason`, so you can jump straight to the stale line.
83
+
84
+ **What it checks (precision over recall — it would rather miss a stale claim than cry wolf on a true one):**
85
+
86
+ | Kind | Claim it verifies | How |
87
+ |------|-------------------|-----|
88
+ | `subcommand` | `` `agentwire <cmd>` `` in a code span | `<cmd>` must be a registered `add_parser("<cmd>")` |
89
+ | `flag` | `--flag` inside an `agentwire …` command span | must be a declared `add_argument("--flag")` |
90
+ | `path` | repo-relative paths under `agentwire/ docs/ scripts/ tests/ examples/ .claude/ .github/` | must exist on disk |
91
+ | `symbol` | `` `module.symbol` `` where `agentwire/<module>.py` exists | `symbol` must be defined in that module |
92
+ | `config-key` | dotted key near a config-file mention | every segment must be a field on a `@dataclass` in `config.py` |
93
+
94
+ Scoping that keeps it quiet: flags/subcommands are only read inside code spans (bare prose mentioning `agentwire` or a flag isn't a claim); paths under the wiki's own `wiki/`/`raw/` trees and `~`/absolute paths are ignored; common method calls (`config.get`), filenames (`__main__.py`), and version strings (`agentwire v1.35.1`) are not mistaken for claims.
95
+
96
+ **Act on it:** treat each finding as "a human renamed/removed/moved something and the wiki didn't follow." Confirm against the code, then update the wiki page (or, if the page is a deliberate historical record — e.g. a retrospective on removed code — leave it and note that in the page). As with the structural pass, the audit **never auto-fixes**.
97
+
98
+ ## Guidelines
99
+
100
+ - Always read `~/.agentwire/wiki/CLAUDE.md` first for the current schema
101
+ - One page per entity — check before creating duplicates
102
+ - Practical over theoretical — "how we use it" and "what broke" over textbook definitions
103
+ - Include code snippets, commands, config examples
104
+ - Date your updates in frontmatter `last_updated`
105
+ - Cite sources (URLs, commit hashes, issue numbers)
@@ -0,0 +1,74 @@
1
+ # Security CI for the damage-control matcher.
2
+ #
3
+ # Three independent signals:
4
+ # 1. bypass-corpus — the load-bearing gate. Asserts the known evasion vectors
5
+ # (quoting/escaping, $VAR, substitution, tilde/$HOME secret
6
+ # reads, non-rm deletion) stay BLOCK/ASK and a corpus of
7
+ # safe everyday commands keeps PASSing. Merges gate on this.
8
+ # 2. bandit — advisory (non-blocking) static scan. There are intentional
9
+ # `shell=True` sites (scheduler gates, service healthchecks),
10
+ # so this informs review rather than blocking it.
11
+ # 3. pip-audit — known-vuln scan over the resolved dependency set, on PRs
12
+ # and a weekly cron.
13
+ name: security
14
+
15
+ on:
16
+ push:
17
+ branches: [main]
18
+ pull_request:
19
+ schedule:
20
+ - cron: "0 7 * * 1" # Mondays 07:00 UTC
21
+
22
+ jobs:
23
+ bypass-corpus:
24
+ name: damage-control bypass corpus (merge gate)
25
+ runs-on: ubuntu-latest
26
+ steps:
27
+ - uses: actions/checkout@v4
28
+ - name: Install uv
29
+ uses: astral-sh/setup-uv@v5
30
+ with:
31
+ python-version: "3.12"
32
+ - name: Sync dependencies
33
+ run: uv sync --extra dev
34
+ - name: Hooks are in sync with _core.py
35
+ run: uv run --no-sync python scripts/regen_damage_control_hooks.py --check
36
+ - name: Run bypass + sync + control-plane corpus
37
+ run: >
38
+ uv run --no-sync pytest -q
39
+ tests/unit/test_damage_control_bypass.py
40
+ tests/unit/test_damage_control_sync.py
41
+ tests/unit/test_control_plane_protection.py
42
+
43
+ bandit:
44
+ name: bandit (advisory)
45
+ runs-on: ubuntu-latest
46
+ continue-on-error: true # intentional shell=True sites — advisory only
47
+ steps:
48
+ - uses: actions/checkout@v4
49
+ - name: Install uv
50
+ uses: astral-sh/setup-uv@v5
51
+ with:
52
+ python-version: "3.12"
53
+ - name: Run bandit
54
+ run: uvx bandit -r agentwire -ll
55
+
56
+ pip-audit:
57
+ name: pip-audit (advisory)
58
+ runs-on: ubuntu-latest
59
+ # Advisory, not a merge gate: most flagged CVEs live in heavy OPTIONAL deps
60
+ # (torch/onnxruntime pulled by kokoro/moonshine) and are transitive, so
61
+ # hard-blocking every PR on them is noise. Keep it running on PRs + the
62
+ # weekly cron for visibility; the damage-control bypass corpus is the hard
63
+ # merge gate. Direct portal-facing deps are bumped explicitly in pyproject.
64
+ continue-on-error: true
65
+ steps:
66
+ - uses: actions/checkout@v4
67
+ - name: Install uv
68
+ uses: astral-sh/setup-uv@v5
69
+ with:
70
+ python-version: "3.12"
71
+ - name: Export locked dependencies
72
+ run: uv export --no-emit-project --format requirements-txt -o requirements.txt
73
+ - name: Audit dependencies
74
+ run: uvx pip-audit -r requirements.txt
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agentwire-dev
3
- Version: 1.44.0
3
+ Version: 1.45.1
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
@@ -685,7 +685,7 @@ Classifier: Programming Language :: Python :: 3.13
685
685
  Classifier: Topic :: Software Development :: User Interfaces
686
686
  Requires-Python: >=3.10
687
687
  Requires-Dist: aiohttp-jinja2>=1.6
688
- Requires-Dist: aiohttp>=3.9.0
688
+ Requires-Dist: aiohttp>=3.13.4
689
689
  Requires-Dist: av>=12.0.0
690
690
  Requires-Dist: jinja2>=3.1.0
691
691
  Requires-Dist: kokoro-onnx>=0.4.9; python_version < '3.14'
@@ -734,7 +734,6 @@ Description-Content-Type: text/markdown
734
734
  <a href="https://github.com/dotdevdotdev/agentwire-dev/stargazers"><img src="https://img.shields.io/github/stars/dotdevdotdev/agentwire-dev?style=flat&logo=github&color=00d4ff" alt="GitHub Stars"></a>
735
735
  <a href="https://pypi.org/project/agentwire-dev/"><img src="https://img.shields.io/pypi/pyversions/agentwire-dev" alt="Python"></a>
736
736
  <a href="https://github.com/dotdevdotdev/agentwire-dev/blob/main/LICENSE"><img src="https://img.shields.io/github/license/dotdevdotdev/agentwire-dev" alt="License"></a>
737
- <a href="https://discord.gg/bspFZNTdUr"><img src="https://img.shields.io/badge/discord-join-5865F2?logo=discord&logoColor=white" alt="Discord"></a>
738
737
  </p>
739
738
 
740
739
  ---
@@ -774,7 +773,6 @@ pip install agentwire-dev
774
773
 
775
774
  # Setup (interactive)
776
775
  agentwire init
777
- agentwire generate-certs
778
776
 
779
777
  # Run
780
778
  agentwire portal start
@@ -785,7 +783,22 @@ agentwire portal start
785
783
 
786
784
  **Honest setup time:** under a minute to a working voice portal with a genuinely good voice — Kokoro-82M runs on CPU out of the box (one-time ~200 MB model download in the background; the browser voice covers the wait). ~15 minutes for the full experience: cloned voices via a self-hosted TTS shim, Whisper-grade transcription, phone-from-anywhere (certs + token).
787
785
 
788
- > **Network & trust model.** The portal binds `127.0.0.1` by default — local only. To use it from your phone, set `server.host: 0.0.0.0` in `~/.agentwire/config.yaml`. Non-loopback binds require an auth token (auto-generated on first start; print it with `agentwire portal token`) — your phone prompts for it once, then remembers it. Origin checks reject cross-site browser requests on every bind. Still: keep it on a trusted LAN. Never port-forward it or run it on a public-facing VPS — for internet access use Cloudflare Tunnel + Zero Trust. Details in [SECURITY.md](SECURITY.md).
786
+ ### Phone / LAN Access
787
+
788
+ The portal binds to loopback (`127.0.0.1`) by default. To access the portal from your phone, tablet, or other devices on your local network:
789
+
790
+ 1. **Generate SSL certificates** (required for microphone access over non-loopback connections):
791
+ ```bash
792
+ agentwire generate-certs
793
+ ```
794
+ 2. **Enable LAN access**: set `server.host: 0.0.0.0` in `~/.agentwire/config.yaml`.
795
+ 3. **Get your auth token**: non-loopback connections require a bearer token. Print it with:
796
+ ```bash
797
+ agentwire portal token
798
+ ```
799
+ 4. **Connect**: Open `https://<your-machine-ip>:8765` on your phone and enter the token when prompted.
800
+
801
+ Origin checks reject cross-site browser requests on every bind. Keep the portal on a trusted LAN — never port-forward it or run it on a public-facing VPS. For internet access, use Cloudflare Tunnel + Zero Trust. See [SECURITY.md](SECURITY.md) for details.
789
802
 
790
803
  <details>
791
804
  <summary><strong>Platform-specific instructions</strong></summary>
@@ -1002,7 +1015,6 @@ Quick links:
1002
1015
 
1003
1016
  ## Community
1004
1017
 
1005
- - [Discord](https://discord.gg/bspFZNTdUr) - Chat, support, feature requests
1006
1018
  - [Issues](https://github.com/dotdevdotdev/agentwire-dev/issues) - Bug reports
1007
1019
  - [Website](https://agentwire.dev) - Docs and demos
1008
1020
 
@@ -12,7 +12,6 @@
12
12
  <a href="https://github.com/dotdevdotdev/agentwire-dev/stargazers"><img src="https://img.shields.io/github/stars/dotdevdotdev/agentwire-dev?style=flat&logo=github&color=00d4ff" alt="GitHub Stars"></a>
13
13
  <a href="https://pypi.org/project/agentwire-dev/"><img src="https://img.shields.io/pypi/pyversions/agentwire-dev" alt="Python"></a>
14
14
  <a href="https://github.com/dotdevdotdev/agentwire-dev/blob/main/LICENSE"><img src="https://img.shields.io/github/license/dotdevdotdev/agentwire-dev" alt="License"></a>
15
- <a href="https://discord.gg/bspFZNTdUr"><img src="https://img.shields.io/badge/discord-join-5865F2?logo=discord&logoColor=white" alt="Discord"></a>
16
15
  </p>
17
16
 
18
17
  ---
@@ -52,7 +51,6 @@ pip install agentwire-dev
52
51
 
53
52
  # Setup (interactive)
54
53
  agentwire init
55
- agentwire generate-certs
56
54
 
57
55
  # Run
58
56
  agentwire portal start
@@ -63,7 +61,22 @@ agentwire portal start
63
61
 
64
62
  **Honest setup time:** under a minute to a working voice portal with a genuinely good voice — Kokoro-82M runs on CPU out of the box (one-time ~200 MB model download in the background; the browser voice covers the wait). ~15 minutes for the full experience: cloned voices via a self-hosted TTS shim, Whisper-grade transcription, phone-from-anywhere (certs + token).
65
63
 
66
- > **Network & trust model.** The portal binds `127.0.0.1` by default — local only. To use it from your phone, set `server.host: 0.0.0.0` in `~/.agentwire/config.yaml`. Non-loopback binds require an auth token (auto-generated on first start; print it with `agentwire portal token`) — your phone prompts for it once, then remembers it. Origin checks reject cross-site browser requests on every bind. Still: keep it on a trusted LAN. Never port-forward it or run it on a public-facing VPS — for internet access use Cloudflare Tunnel + Zero Trust. Details in [SECURITY.md](SECURITY.md).
64
+ ### Phone / LAN Access
65
+
66
+ The portal binds to loopback (`127.0.0.1`) by default. To access the portal from your phone, tablet, or other devices on your local network:
67
+
68
+ 1. **Generate SSL certificates** (required for microphone access over non-loopback connections):
69
+ ```bash
70
+ agentwire generate-certs
71
+ ```
72
+ 2. **Enable LAN access**: set `server.host: 0.0.0.0` in `~/.agentwire/config.yaml`.
73
+ 3. **Get your auth token**: non-loopback connections require a bearer token. Print it with:
74
+ ```bash
75
+ agentwire portal token
76
+ ```
77
+ 4. **Connect**: Open `https://<your-machine-ip>:8765` on your phone and enter the token when prompted.
78
+
79
+ Origin checks reject cross-site browser requests on every bind. Keep the portal on a trusted LAN — never port-forward it or run it on a public-facing VPS. For internet access, use Cloudflare Tunnel + Zero Trust. See [SECURITY.md](SECURITY.md) for details.
67
80
 
68
81
  <details>
69
82
  <summary><strong>Platform-specific instructions</strong></summary>
@@ -280,7 +293,6 @@ Quick links:
280
293
 
281
294
  ## Community
282
295
 
283
- - [Discord](https://discord.gg/bspFZNTdUr) - Chat, support, feature requests
284
296
  - [Issues](https://github.com/dotdevdotdev/agentwire-dev/issues) - Bug reports
285
297
  - [Website](https://agentwire.dev) - Docs and demos
286
298
 
@@ -39,11 +39,25 @@ This security policy applies to:
39
39
 
40
40
  AgentWire includes built-in security features:
41
41
 
42
- - **Damage Control Hooks:** Block 300+ dangerous command patterns
43
- - **Path Protection:** Prevent access to sensitive files (.env, SSH keys, credentials)
42
+ - **Damage Control Hooks:** Block 300+ dangerous command patterns. Commands are
43
+ matched after shell-aware normalization (quote/escape stripping, simple `$VAR`
44
+ resolution); constructs that can't be statically verified (command
45
+ substitution, `eval`, `base64 -d | sh`) fail closed.
46
+ - **Path Protection:** Prevent access to sensitive files (`.env`, SSH keys,
47
+ credentials) across shell, file edits/writes, **and native content reads**
48
+ (Read/Grep/Glob). Committed env templates (`.env.example`, `.sample`,
49
+ `.template`, `.dist`) are treated as secret-free and remain readable.
44
50
  - **Audit Logging:** All blocked operations are logged
45
51
 
46
- See `docs/wiki/internals/damage-control.md` for details.
52
+ See `docs/wiki/internals/damage-control.md` for details, and
53
+ `docs/wiki/security/damage-control-hardening.md` for the 2026-06 matcher
54
+ hardening (control-plane path coverage, tilde/`$HOME` canonicalization, `.env`
55
+ whole-component matching, shell-aware fail-closed matching, read-surface
56
+ policing) and the new fail-closed-when-unattended behavior.
57
+
58
+ ### Redundant Permissions Bypass (`--dangerously-skip-permissions`)
59
+
60
+ By default, AgentWire initializes Claude Code with the `--dangerously-skip-permissions` flag. This is safe because AgentWire implements its own **Damage Control Hooks** at the system shell level (installed via `agentwire hooks install`). Rather than relying on fragile, prompt-based AI dialogs for command approval, AgentWire intercepts and enforces safety rules directly in the shell. Bypassing Claude's built-in prompts prevents unnecessary interruptions and speeds up agent execution while keeping AgentWire's compensating shell-level controls in force.
47
61
 
48
62
  ## Trust Model
49
63
 
@@ -35,11 +35,11 @@ AgentWire is made possible by these generous supporters.
35
35
 
36
36
  | Tier | Amount | What you get |
37
37
  |---|---|---|
38
- | **Supporter** | $5/mo | Name in SPONSORS.md · Supporter role in Discord |
38
+ | **Supporter** | $5/mo | Name in SPONSORS.md |
39
39
  | **Backer** | $15/mo | Everything in Supporter · Priority responses on your GitHub issues · Input on what gets built next |
40
40
  | **Pro** | $35/mo | Everything in Backer · Early access to new features · Vote on roadmap priorities · Beta branch access |
41
41
  | **Team** | $100/mo | Everything in Pro · Logo in README · Monthly 30-minute support call · Priority bug fixes |
42
- | **Enterprise** | $500/mo | Everything in Team · Dedicated Discord channel · 48-hour bug response · Quarterly roadmap review · Featured logo placement |
42
+ | **Enterprise** | $500/mo | Everything in Team · 48-hour bug response · Quarterly roadmap review · Featured logo placement |
43
43
 
44
44
  ### One-Time
45
45
 
@@ -1,3 +1,3 @@
1
1
  """AgentWire - Multi-session voice web interface for AI coding agents."""
2
2
 
3
- __version__ = "1.44.0"
3
+ __version__ = "1.45.1"