agentwire-dev 1.42.0__tar.gz → 1.43.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 (397) hide show
  1. agentwire_dev-1.43.0/.agents/skills/agentwire-cli/SKILL.md +260 -0
  2. agentwire_dev-1.43.0/.agents/skills/agentwire-config/SKILL.md +236 -0
  3. agentwire_dev-1.43.0/.agents/skills/agentwire-desktop-ui/SKILL.md +76 -0
  4. agentwire_dev-1.43.0/.agents/skills/agentwire-mcp-tools/SKILL.md +176 -0
  5. agentwire_dev-1.43.0/.agents/skills/agentwire-pi/SKILL.md +205 -0
  6. agentwire_dev-1.43.0/.agents/skills/agentwire-project-config/SKILL.md +195 -0
  7. agentwire_dev-1.43.0/.agents/skills/agentwire-scheduler/SKILL.md +133 -0
  8. agentwire_dev-1.43.0/.agents/skills/wiki/SKILL.md +89 -0
  9. agentwire_dev-1.43.0/AGENTS.md +155 -0
  10. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/PKG-INFO +1 -1
  11. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/__init__.py +1 -1
  12. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/__main__.py +383 -313
  13. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/config.py +28 -0
  14. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/council/cli.py +1 -1
  15. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/doctor_voice.py +28 -48
  16. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/inbox.py +64 -5
  17. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/mcp_server.py +548 -80
  18. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/msg_cli.py +66 -8
  19. agentwire_dev-1.43.0/agentwire/research.py +27 -0
  20. agentwire_dev-1.43.0/agentwire/roles/anchor.md +60 -0
  21. agentwire_dev-1.43.0/agentwire/roles/correspondent.md +49 -0
  22. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/roles/notifications.md +9 -9
  23. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/server.py +25 -2
  24. agentwire_dev-1.43.0/agentwire/session_context.py +196 -0
  25. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/session_ready.py +10 -7
  26. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/css/desktop.css +27 -0
  27. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/js/desktop.js +7 -3
  28. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/js/notifications-panel.js +22 -5
  29. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/js/sidebar/sessions-section.js +41 -0
  30. agentwire_dev-1.43.0/agentwire/voice_status.py +243 -0
  31. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/worktree.py +66 -0
  32. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/docs/wiki/INDEX.md +2 -1
  33. agentwire_dev-1.43.0/docs/wiki/briefing-mode.md +80 -0
  34. agentwire_dev-1.43.0/docs/wiki/research/briefing-mode-feasibility.md +267 -0
  35. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/docs/wiki/sessions/messaging.md +34 -7
  36. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/tests/unit/test_doctor_voice.py +13 -13
  37. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/tests/unit/test_mcp_tools_args.py +30 -22
  38. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/tests/unit/test_portal_api.py +27 -0
  39. agentwire_dev-1.43.0/tests/unit/test_session_context.py +96 -0
  40. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/tests/unit/test_session_ready.py +20 -10
  41. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/tests/unit/test_tts_local.py +5 -4
  42. agentwire_dev-1.43.0/tests/unit/test_voice_status.py +104 -0
  43. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/.github/FUNDING.yml +0 -0
  44. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  45. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  46. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/.github/ISSUE_TEMPLATE/question.md +0 -0
  47. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  48. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/.github/workflows/pytest.yml +0 -0
  49. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/.github/workflows/tts-smoke.yml +0 -0
  50. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/.gitignore +0 -0
  51. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/CLA.md +0 -0
  52. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/CODE_OF_CONDUCT.md +0 -0
  53. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/CONTRIBUTING.md +0 -0
  54. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/Dockerfile.local +0 -0
  55. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/Dockerfile.runpod +0 -0
  56. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/LICENSE +0 -0
  57. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/README.md +0 -0
  58. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/RELEASING.md +0 -0
  59. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/SECURITY.md +0 -0
  60. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/SPONSORS.md +0 -0
  61. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/agents/__init__.py +0 -0
  62. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/agents/base.py +0 -0
  63. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/agents/tmux.py +0 -0
  64. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/cached_status.py +0 -0
  65. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/channels/__init__.py +0 -0
  66. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/channels/base.py +0 -0
  67. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/channels/email.py +0 -0
  68. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/channels/quo.py +0 -0
  69. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/cli_safety.py +0 -0
  70. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/completion.py +0 -0
  71. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/council/__init__.py +0 -0
  72. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/council/inbox.py +0 -0
  73. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/council/state.py +0 -0
  74. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/council/view.py +0 -0
  75. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/fetch.py +0 -0
  76. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/handoff/__init__.py +0 -0
  77. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/handoff/git_state.py +0 -0
  78. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/handoff/instructions.py +0 -0
  79. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/handoff/parser.py +0 -0
  80. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/handoff/renderer.py +0 -0
  81. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/handoff/schema.py +0 -0
  82. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/history.py +0 -0
  83. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/hooks/__init__.py +0 -0
  84. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/hooks/agentwire-permission.sh +0 -0
  85. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/hooks/damage-control/__init__.py +0 -0
  86. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/hooks/damage-control/audit_logger.py +0 -0
  87. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/hooks/damage-control/bash-tool-damage-control.py +0 -0
  88. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/hooks/damage-control/edit-tool-damage-control.py +0 -0
  89. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/hooks/damage-control/rules/agentwire.yaml +0 -0
  90. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/hooks/damage-control/rules/aws.yaml +0 -0
  91. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/hooks/damage-control/rules/cloud-hosting.yaml +0 -0
  92. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/hooks/damage-control/rules/containers.yaml +0 -0
  93. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/hooks/damage-control/rules/core.yaml +0 -0
  94. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/hooks/damage-control/rules/databases.yaml +0 -0
  95. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/hooks/damage-control/rules/firebase.yaml +0 -0
  96. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/hooks/damage-control/rules/gcp.yaml +0 -0
  97. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/hooks/damage-control/rules/git.yaml +0 -0
  98. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/hooks/damage-control/rules/gws.yaml +0 -0
  99. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/hooks/damage-control/rules/infrastructure.yaml +0 -0
  100. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/hooks/damage-control/rules/remote.yaml +0 -0
  101. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/hooks/damage-control/write-tool-damage-control.py +0 -0
  102. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/hooks/idle-handler.sh +0 -0
  103. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/hooks/queue-processor.sh +0 -0
  104. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/limits_cli.py +0 -0
  105. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/listen.py +0 -0
  106. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/locking.py +0 -0
  107. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/network.py +0 -0
  108. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/onboarding.py +0 -0
  109. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/pane_manager.py +0 -0
  110. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/project_config.py +0 -0
  111. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/projects.py +0 -0
  112. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/prompt_router.py +0 -0
  113. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/prompts/__init__.py +0 -0
  114. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/prompts/init.md +0 -0
  115. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/prompts_cli.py +0 -0
  116. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/roles/__init__.py +0 -0
  117. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/roles/agentwire.md +0 -0
  118. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/roles/chatbot.md +0 -0
  119. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/roles/council-brain.md +0 -0
  120. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/roles/council-conscience.md +0 -0
  121. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/roles/council-critic.md +0 -0
  122. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/roles/council-devils-advocate.md +0 -0
  123. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/roles/council-gut.md +0 -0
  124. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/roles/council-historian.md +0 -0
  125. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/roles/council-member.md +0 -0
  126. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/roles/council-orchestrator.md +0 -0
  127. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/roles/init.md +0 -0
  128. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/roles/orchestrator.md +0 -0
  129. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/roles/soul.md +0 -0
  130. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/roles/task-runner.md +0 -0
  131. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/roles/voice.md +0 -0
  132. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/roles/worker.md +0 -0
  133. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/roles/worktree-session.md +0 -0
  134. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/safety/__init__.py +0 -0
  135. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/safety/_core.py +0 -0
  136. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/scheduler.py +0 -0
  137. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/scratchpad.py +0 -0
  138. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/security.py +0 -0
  139. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/services.py +0 -0
  140. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/ssh.py +0 -0
  141. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/agentwire-Echo--black.png +0 -0
  142. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/agentwire-Echo--transparent.png +0 -0
  143. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/agentwire-Echo.png +0 -0
  144. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/agentwire-email-banner.png +0 -0
  145. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/agentwire-splash-logo-layers--agentwire-text.png +0 -0
  146. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/agentwire-splash-logo-layers--echo-claw-fg.png +0 -0
  147. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/agentwire-splash-logo-layers--echo.png +0 -0
  148. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/agentwire-splash-logo-layers--full--transparent-top.png +0 -0
  149. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/agentwire-splash-logo-layers--full-black.png +0 -0
  150. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/agentwire-splash-logo-layers--telephone-fg.png +0 -0
  151. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/agentwire-splash-logo-layers--telephone.png +0 -0
  152. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/agentwire-splash-logo-layers--transparent-top.png +0 -0
  153. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/agentwire-splash-logo-layers--transparent.png +0 -0
  154. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/agentwire-splash-logo-layers--tree.png +0 -0
  155. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/agentwire-splash-logo-layers.png +0 -0
  156. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/announcements.json +0 -0
  157. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/css/mobile.css +0 -0
  158. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/favicon.png +0 -0
  159. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/icons/machines/android.jpeg +0 -0
  160. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/icons/machines/automaton.jpeg +0 -0
  161. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/icons/machines/bot.jpeg +0 -0
  162. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/icons/machines/cyborg.jpeg +0 -0
  163. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/icons/machines/droid.jpeg +0 -0
  164. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/icons/machines/drone.jpeg +0 -0
  165. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/icons/machines/guardian.jpeg +0 -0
  166. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/icons/machines/mech.jpeg +0 -0
  167. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/icons/machines/probe.jpeg +0 -0
  168. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/icons/machines/robot.jpeg +0 -0
  169. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/icons/machines/sentinel.jpeg +0 -0
  170. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/icons/machines/unit.jpeg +0 -0
  171. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/icons/projects/blob.jpeg +0 -0
  172. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/icons/projects/cloud.jpeg +0 -0
  173. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/icons/projects/crystal.jpeg +0 -0
  174. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/icons/projects/cyclops.jpeg +0 -0
  175. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/icons/projects/flame.jpeg +0 -0
  176. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/icons/projects/fuzzy.jpeg +0 -0
  177. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/icons/projects/horned.jpeg +0 -0
  178. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/icons/projects/moon.jpeg +0 -0
  179. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/icons/projects/slime.jpeg +0 -0
  180. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/icons/projects/star.jpeg +0 -0
  181. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/icons/projects/tentacle.jpeg +0 -0
  182. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/icons/projects/winged.jpeg +0 -0
  183. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/icons/sessions/bear.jpeg +0 -0
  184. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/icons/sessions/cat.jpeg +0 -0
  185. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/icons/sessions/crown.jpeg +0 -0
  186. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/icons/sessions/custom/agentwire-portal.png +0 -0
  187. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/icons/sessions/custom/agentwire-tts.png +0 -0
  188. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/icons/sessions/custom/agentwire.png +0 -0
  189. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/icons/sessions/deer.jpeg +0 -0
  190. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/icons/sessions/drone.jpeg +0 -0
  191. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/icons/sessions/eagle.jpeg +0 -0
  192. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/icons/sessions/fox.jpeg +0 -0
  193. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/icons/sessions/hawk.jpeg +0 -0
  194. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/icons/sessions/horse.jpeg +0 -0
  195. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/icons/sessions/lion.jpeg +0 -0
  196. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/icons/sessions/rabbit.jpeg +0 -0
  197. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/icons/sessions/robot.jpeg +0 -0
  198. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/icons/sessions/tiger.jpeg +0 -0
  199. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/icons/sessions/wolf.jpeg +0 -0
  200. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/js/.gitkeep +0 -0
  201. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/js/announcement-modal.js +0 -0
  202. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/js/api.js +0 -0
  203. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/js/artifact-window.js +0 -0
  204. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/js/collage.js +0 -0
  205. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/js/command-palette.js +0 -0
  206. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/js/components/icon-picker.js +0 -0
  207. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/js/components/list-card.js +0 -0
  208. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/js/components/type-tag.js +0 -0
  209. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/js/council-window.js +0 -0
  210. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/js/dead-key-suppressor.js +0 -0
  211. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/js/desktop-manager.js +0 -0
  212. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/js/icon-manager.js +0 -0
  213. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/js/mobile.js +0 -0
  214. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/js/notification-prefs.js +0 -0
  215. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/js/safety-shared.js +0 -0
  216. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/js/safety-window.js +0 -0
  217. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/js/scratchpad.js +0 -0
  218. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/js/service-classification.js +0 -0
  219. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/js/session-id.js +0 -0
  220. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/js/session-window.js +0 -0
  221. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/js/sidebar/artifacts-section.js +0 -0
  222. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/js/sidebar/config-section.js +0 -0
  223. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/js/sidebar/council-section.js +0 -0
  224. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/js/sidebar/machines-section.js +0 -0
  225. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/js/sidebar/projects-section.js +0 -0
  226. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/js/sidebar/safety-section.js +0 -0
  227. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/js/sidebar/scheduler-section.js +0 -0
  228. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/js/sidebar/services-section.js +0 -0
  229. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/js/sidebar.js +0 -0
  230. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/js/terminal-font-prefs.js +0 -0
  231. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/js/tile-manager.js +0 -0
  232. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/js/toast.js +0 -0
  233. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/js/token-modal.js +0 -0
  234. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/js/utils/ansi.js +0 -0
  235. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/js/utils/auto-refresh.js +0 -0
  236. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/js/utils/swipe.js +0 -0
  237. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/js/voice/autosend-prefs.js +0 -0
  238. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/js/voice/browser-stt.js +0 -0
  239. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/js/voice/browser-tts.js +0 -0
  240. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/js/voice/jargon.js +0 -0
  241. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/js/voice/prompt.js +0 -0
  242. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/js/winbox.bundle.min.js +0 -0
  243. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/stt/__init__.py +0 -0
  244. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/stt/base.py +0 -0
  245. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/stt/cloud.py +0 -0
  246. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/stt/engine.py +0 -0
  247. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/stt/local.py +0 -0
  248. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/stt/server_backend.py +0 -0
  249. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/stt/stt_server.py +0 -0
  250. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/tasks.py +0 -0
  251. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/templates/__init__.py +0 -0
  252. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/templates/base.html +0 -0
  253. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/templates/desktop.html +0 -0
  254. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/templates/email_notification.html +0 -0
  255. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/templates/handoff/show-the-story.html.j2 +0 -0
  256. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/templates/handoff/theme.css.j2 +0 -0
  257. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/templates/mobile.html +0 -0
  258. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/templates/tmux.conf +0 -0
  259. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/templating.py +0 -0
  260. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/tooldefs/aws.yaml +0 -0
  261. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/tooldefs/docker.yaml +0 -0
  262. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/tooldefs/gcp.yaml +0 -0
  263. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/tooldefs/gh.yaml +0 -0
  264. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/tooldefs/git.yaml +0 -0
  265. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/tooldefs/gws.yaml +0 -0
  266. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/tooldefs/kubectl.yaml +0 -0
  267. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/tooldefs/npm.yaml +0 -0
  268. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/tooldefs/terraform.yaml +0 -0
  269. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/tooldefs/uv.yaml +0 -0
  270. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/tts/__init__.py +0 -0
  271. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/tts/audio.py +0 -0
  272. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/tts/base.py +0 -0
  273. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/tts/engines/__init__.py +0 -0
  274. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/tts/engines/chatterbox.py +0 -0
  275. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/tts/engines/kokoro.py +0 -0
  276. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/tts/engines/qwen_base.py +0 -0
  277. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/tts/engines/qwen_custom.py +0 -0
  278. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/tts/engines/qwen_design.py +0 -0
  279. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/tts/engines/zonos.py +0 -0
  280. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/tts/kokoro_server.py +0 -0
  281. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/tts/local.py +0 -0
  282. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/tts/registry.py +0 -0
  283. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/tts_server.py +0 -0
  284. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/tunnels.py +0 -0
  285. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/usage_limit.py +0 -0
  286. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/utils/__init__.py +0 -0
  287. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/utils/chunker.py +0 -0
  288. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/utils/file_io.py +0 -0
  289. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/utils/paths.py +0 -0
  290. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/utils/speech.py +0 -0
  291. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/utils/subprocess.py +0 -0
  292. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/validation.py +0 -0
  293. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/voiceclone.py +0 -0
  294. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/voices/darren.wav +0 -0
  295. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/voices/default.wav +0 -0
  296. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/voices/jessica.wav +0 -0
  297. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/voices/lisa.wav +0 -0
  298. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/voices/may.wav +0 -0
  299. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/wiki_audit.py +0 -0
  300. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/worktree_registry.py +0 -0
  301. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/docs/decisions/obsidian-second-brain.md +0 -0
  302. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/docs/logo.png +0 -0
  303. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/docs/wiki/architecture.md +0 -0
  304. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/docs/wiki/communication/channels.md +0 -0
  305. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/docs/wiki/communication/hammerspoon.md +0 -0
  306. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/docs/wiki/communication/handoff.md +0 -0
  307. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/docs/wiki/concepts.md +0 -0
  308. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/docs/wiki/council.md +0 -0
  309. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/docs/wiki/deployment/remote-access.md +0 -0
  310. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/docs/wiki/deployment/remote-machines.md +0 -0
  311. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/docs/wiki/glossary.md +0 -0
  312. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/docs/wiki/integrations/gws-google-workspace-cli.md +0 -0
  313. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/docs/wiki/internals/damage-control.md +0 -0
  314. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/docs/wiki/internals/portal.md +0 -0
  315. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/docs/wiki/internals/shell-escaping.md +0 -0
  316. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/docs/wiki/internals/troubleshooting.md +0 -0
  317. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/docs/wiki/internals/window-collage.md +0 -0
  318. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/docs/wiki/quickstart.md +0 -0
  319. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/docs/wiki/research/orchestration-transport-alternatives.md +0 -0
  320. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/docs/wiki/scheduling/scheduled-workloads.md +0 -0
  321. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/docs/wiki/security/secrets.md +0 -0
  322. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/docs/wiki/services.md +0 -0
  323. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/docs/wiki/sessions/claude-code-auto-mode.md +0 -0
  324. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/docs/wiki/sessions/pi.md +0 -0
  325. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/docs/wiki/sessions/prompt-routing.md +0 -0
  326. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/docs/wiki/sessions/window-sizing.md +0 -0
  327. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/docs/wiki/sessions/worktree-sessions.md +0 -0
  328. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/docs/wiki/usage-limit-recovery.md +0 -0
  329. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/docs/wiki/voice/shim-contract.md +0 -0
  330. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/docs/wiki/voice/stt-cloud.md +0 -0
  331. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/docs/wiki/voice/stt-self-hosted.md +0 -0
  332. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/docs/wiki/voice/tts-self-hosted.md +0 -0
  333. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/pyproject.toml +0 -0
  334. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/requirements-tts.txt +0 -0
  335. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/tests/conftest.py +0 -0
  336. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/tests/e2e/test_portal_ui.py +0 -0
  337. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/tests/fixtures/sample_agentwire.yml +0 -0
  338. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/tests/fixtures/sample_config.yaml +0 -0
  339. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/tests/fixtures/sample_scheduler.yaml +0 -0
  340. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/tests/integration/test_council_portal.py +0 -0
  341. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/tests/integration/test_scheduler_board.py +0 -0
  342. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/tests/integration/test_server_websockets.py +0 -0
  343. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/tests/integration/test_worktree_cmd.py +0 -0
  344. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/tests/unit/test_announcements.py +0 -0
  345. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/tests/unit/test_build_agent_command.py +0 -0
  346. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/tests/unit/test_channels.py +0 -0
  347. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/tests/unit/test_cli_commands.py +0 -0
  348. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/tests/unit/test_cli_output.py +0 -0
  349. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/tests/unit/test_cli_safety.py +0 -0
  350. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/tests/unit/test_config.py +0 -0
  351. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/tests/unit/test_council_cli.py +0 -0
  352. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/tests/unit/test_council_inbox.py +0 -0
  353. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/tests/unit/test_council_state.py +0 -0
  354. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/tests/unit/test_council_view.py +0 -0
  355. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/tests/unit/test_damage_control_hooks.py +0 -0
  356. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/tests/unit/test_damage_control_sync.py +0 -0
  357. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/tests/unit/test_file_io.py +0 -0
  358. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/tests/unit/test_handoff_git_state.py +0 -0
  359. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/tests/unit/test_handoff_instructions.py +0 -0
  360. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/tests/unit/test_handoff_parser.py +0 -0
  361. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/tests/unit/test_handoff_renderer.py +0 -0
  362. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/tests/unit/test_history.py +0 -0
  363. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/tests/unit/test_hooks_install.py +0 -0
  364. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/tests/unit/test_idle_handler.py +0 -0
  365. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/tests/unit/test_inbox.py +0 -0
  366. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/tests/unit/test_locking.py +0 -0
  367. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/tests/unit/test_mcp_server.py +0 -0
  368. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/tests/unit/test_msg_cli.py +0 -0
  369. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/tests/unit/test_project_config.py +0 -0
  370. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/tests/unit/test_prompt_router.py +0 -0
  371. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/tests/unit/test_roles.py +0 -0
  372. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/tests/unit/test_safety_disabled_rules.py +0 -0
  373. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/tests/unit/test_safety_escape_hatch.py +0 -0
  374. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/tests/unit/test_safety_kill_switch.py +0 -0
  375. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/tests/unit/test_scheduler.py +0 -0
  376. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/tests/unit/test_scheduler_parsing.py +0 -0
  377. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/tests/unit/test_scratchpad.py +0 -0
  378. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/tests/unit/test_security.py +0 -0
  379. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/tests/unit/test_server_async.py +0 -0
  380. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/tests/unit/test_server_pure.py +0 -0
  381. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/tests/unit/test_services.py +0 -0
  382. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/tests/unit/test_speech_tags.py +0 -0
  383. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/tests/unit/test_ssh.py +0 -0
  384. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/tests/unit/test_stt_backend.py +0 -0
  385. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/tests/unit/test_stt_cloud.py +0 -0
  386. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/tests/unit/test_stt_engine.py +0 -0
  387. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/tests/unit/test_task_cli.py +0 -0
  388. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/tests/unit/test_tasks.py +0 -0
  389. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/tests/unit/test_templating.py +0 -0
  390. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/tests/unit/test_terminal_resize.py +0 -0
  391. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/tests/unit/test_tmux_template.py +0 -0
  392. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/tests/unit/test_tts_engine_resolution.py +0 -0
  393. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/tests/unit/test_usage_limit.py +0 -0
  394. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/tests/unit/test_validation.py +0 -0
  395. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/tests/unit/test_wiki_audit.py +0 -0
  396. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/tests/unit/test_worktree.py +0 -0
  397. {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/tests/unit/test_worktree_registry.py +0 -0
@@ -0,0 +1,260 @@
1
+ ---
2
+ name: agentwire-cli
3
+ description: Full `agentwire` CLI command reference — session/pane management, portal, TTS/STT, voice, channels (email + quo, outbound-only), machine/tunnel/lock management, projects/history/roles, scheduler, web helper (fetch), safety/diagnostics. Use when running or composing `agentwire ...` shell commands, building automation scripts, or answering "how do I X from the CLI".
4
+ ---
5
+
6
+ # AgentWire CLI Reference
7
+
8
+ ```bash
9
+ # Session management
10
+ agentwire new -s name # not: tmux new-session
11
+ agentwire new -s name --no-soul # skip the always-injected soul personality role
12
+ agentwire new -s name --first-message "idea" # deliver first prompt once agent boots
13
+ # (verified paste, local only; failure ≠ command failure)
14
+ agentwire send -s name "prompt" # not: tmux send-keys
15
+ agentwire send -s name --wait-ready --timeout 60 -- "prompt"
16
+ # wait for agent boot (banner + screen-stable +
17
+ # trust-prompt auto-accept), verified delivery,
18
+ # exit 1 if unverified; local only
19
+ agentwire send-keys -s name key1 key2 # raw keys with pauses
20
+ agentwire send-keys -s name --pane 2 key # target a specific pane
21
+ agentwire new -s name --created-by orch # record creator (prompt-routing parent);
22
+ # default: calling tmux session; '' opts out
23
+ agentwire output -s name # not: tmux capture-pane
24
+ agentwire info -s name # session metadata (cwd, panes) as JSON
25
+ agentwire kill -s name # not: tmux kill-session
26
+ agentwire list # not: tmux list-sessions
27
+ agentwire recreate -s name # destroy and recreate with fresh worktree
28
+ agentwire worktree name # new branch + worktree + STANDALONE session
29
+ # "worktree session" ALWAYS means this command — never
30
+ # `spawn --branch` (that makes a pane). Defaults to the
31
+ # bypass posture (autonomous); override with --posture.
32
+ # The worktree-session etiquette role is intrinsic to
33
+ # the verb (isolation, no rebuild/restart, verify
34
+ # in-worktree, draft PR + notify-back) — first prompts
35
+ # only need the task itself
36
+ # Base branch (default mode): --base wins, else config
37
+ # worktree.default_base, else the repo's actual default
38
+ # branch (origin/HEAD, fallback current) — no hardcoded 'main'.
39
+ # --project defaults to the git root of cwd (monorepo-safe:
40
+ # many sessions can target one repo from different branches).
41
+ # config worktree.naming can template the NEW branch name.
42
+ agentwire worktree name -b develop # from specific base branch
43
+ agentwire worktree name -c # from repo's current branch
44
+ agentwire worktree name -e # checkout existing branch (no new branch)
45
+ agentwire worktree name --ref v2.0 # detached at tag/commit
46
+ agentwire worktree --list # list this repo's worktree sessions (registry); --all = every repo
47
+ agentwire worktree --remove name # kill session + remove worktree + unregister (cleanup/recovery)
48
+ agentwire worktree --prune # drop registry entries whose worktree is gone + git worktree prune
49
+ agentwire fork -s name # fork session into new worktree
50
+ agentwire fork -s name -t project/branch --commit abc123 # fork from specific commit
51
+
52
+ # Pane commands (worker PANES inside the current session — NOT worktree
53
+ # sessions; for parallel autonomous work use `agentwire worktree` above)
54
+ agentwire spawn --roles worker # spawn worker pane
55
+ agentwire spawn --branch name # worker pane on an isolated worktree (still a pane)
56
+ agentwire send --pane 1 "task" # send to pane
57
+ agentwire output --pane 1 # read pane output
58
+ agentwire kill --pane 1 # kill pane
59
+ agentwire jump --pane 1 # focus pane
60
+ agentwire split -s name # add terminal pane(s)
61
+ agentwire detach -s name # move pane to its own session
62
+ agentwire resize -s name # resize window to fit largest client
63
+
64
+ # Boot everything
65
+ agentwire up # boot all services (portal, TTS, STT, scheduler,
66
+ # custom) then start/attach the dev session
67
+ agentwire up --no-tts --no-stt # skip optional voice services
68
+ agentwire up --dev # run portal from source (uv run)
69
+
70
+ # Portal management
71
+ agentwire portal start # start in tmux
72
+ agentwire portal stop # stop portal
73
+ agentwire portal restart # stop + start
74
+ agentwire portal status # check health
75
+ agentwire portal token # print the auth token (devices enter it once)
76
+ agentwire portal token --rotate # generate a new token (re-enter on devices)
77
+
78
+ # Scratch pad (shared notes — portal drawer Alt+N; file: ~/.agentwire/scratchpad.json)
79
+ agentwire scratchpad list # list notes (newest first)
80
+ agentwire scratchpad add "text" --source mysession # add a note (drawer refreshes live)
81
+ agentwire scratchpad remove <id> # delete a note
82
+ agentwire scratchpad clear # delete all notes
83
+
84
+ # Custom services (registered long-running sessions — services.custom in config;
85
+ # autostart on portal launch, health-checked + restarted by the portal watchdog)
86
+ agentwire services list # registry: autostart/restart/healthcheck per service
87
+ agentwire services status # run healthchecks now (exit 1 if something's down)
88
+ agentwire services status name # one service
89
+ agentwire services up <name> # start (also clears 'down' state)
90
+ agentwire services up --all # start all autostart services (skips downed)
91
+ agentwire services down <name> # stop AND keep stopped (watchdog won't respawn)
92
+
93
+ # TTS/STT servers
94
+ agentwire tts start|stop|status # TTS server management
95
+ agentwire stt start|stop|status # STT server management (host shim on :8101)
96
+ agentwire stt start # engine from stt.engine (auto|moonshine|whisper); moonshine = fast CPU
97
+ agentwire stt start --backend moonshine --model moonshine/base --port 8101 # ad-hoc overrides
98
+
99
+ # Voice
100
+ agentwire say "text" # speak (auto-routes to browser or local)
101
+ agentwire say -s name "text" # speak to specific session
102
+ agentwire notify-parent "text" # notify parent session (worker→orchestrator)
103
+ agentwire notify-parent --to name "text" # notify specific session
104
+ agentwire notify-parent --raw --to name "text" # verbatim, no [NOTIFY ...] prefix
105
+ # (delivery is safety-gated: refuses targets showing a
106
+ # live dialog / bare shells / parked sessions, verified paste)
107
+
108
+ # Prompt routing (interactive prompts → parent session; see wiki sessions/prompt-routing.md)
109
+ agentwire prompts status # pending prompt markers
110
+ agentwire prompts tick # run one sweep now (watchdog does this every 60s)
111
+ agentwire prompts answer -s name --pane 0 --expect <hash> 2 # guarded answer:
112
+ # re-detects + hash-compares before sending keys —
113
+ # NEVER answer dialogs with raw send-keys
114
+ agentwire prompts clear -s name --pane 1 # drop a marker
115
+
116
+ # Polite messaging (non-interrupting agent-to-agent inbox; see wiki sessions/messaging.md)
117
+ agentwire msg send --to name "text" # queue a message (delivers when their box is clear)
118
+ agentwire msg send --to name --kind done "PR #312 drafted" # kinds: note|done|request|escalation
119
+ agentwire msg send --to @all "team update" # broadcast to live agent sessions except sender
120
+ agentwire msg inbox -s name # peek pending (does not drain)
121
+ agentwire msg dead -s name # list dropped (dead-lettered) msgs + reason/timestamp
122
+ agentwire msg flush -s name # attempt a drain now (still gated on empty box + safe target)
123
+ # `msg` NEVER clobbers a human's draft — unlike `send`, which
124
+ # pastes + Enter immediately. Use `send` only to forcibly drive a session now.
125
+
126
+ agentwire listen start|stop|cancel # host voice recording (needs stt.backend: custom + the :8101 shim)
127
+ agentwire listen stop -s name # transcribe + send to a tmux session (default)
128
+ agentwire listen stop --type # transcribe + type at cursor (Hammerspoon paste)
129
+ agentwire listen stop --stdout # transcribe + print raw transcript to stdout, no paste/send
130
+ # (scripting hook — Hammerspoon etc. capture $())
131
+
132
+ # Voice cloning
133
+ agentwire voiceclone start # start recording voice sample
134
+ agentwire voiceclone stop name # stop and save as voice clone
135
+ agentwire voiceclone list # list available voices
136
+ agentwire voiceclone delete name # delete a voice clone
137
+
138
+ # Artifact windows (agent visual canvas)
139
+ agentwire open <url> --title "T" # open URL or local file as artifact window
140
+ agentwire open dashboard.html # open from ~/.agentwire/artifacts/
141
+
142
+ # Channels (outbound notification integrations — email + quo)
143
+ agentwire channels list # list all registered channels
144
+ agentwire channels list --json # JSON output
145
+
146
+ # Email (send-only channel)
147
+ agentwire email --to addr --subject "Subject" --body "Body"
148
+ agentwire email --body "msg" # uses default_to from config
149
+ agentwire email --attach file.pdf --body "See attached"
150
+
151
+ # Quo SMS (send-only channel, no deps)
152
+ agentwire quo --body "msg" --to "+1234567890"
153
+
154
+ # Machine management
155
+ agentwire machine list
156
+ agentwire machine add <id> --host <host> --user <user>
157
+ agentwire machine remove <id>
158
+
159
+ # SSH tunnels (for remote services)
160
+ agentwire tunnels up # create all required tunnels
161
+ agentwire tunnels down # tear down all tunnels
162
+ agentwire tunnels status # show tunnel health
163
+ agentwire tunnels check # verify tunnels are working
164
+
165
+ # Lock management (for scheduled tasks)
166
+ agentwire lock list # list all locks
167
+ agentwire lock clean # remove stale locks
168
+ agentwire lock remove <session> # force-remove a specific lock
169
+
170
+ # Project discovery
171
+ agentwire projects list # discover projects from projects_dir
172
+ agentwire projects list --json # JSON output for scripting
173
+ agentwire projects create name # mkdir + minimal .agentwire.yml (Codex-bypass)
174
+ # (in git repos, .agentwire.yml is auto-added to
175
+ # .gitignore — personal config, keep it untracked)
176
+ agentwire projects create name --git-init # also run `git init`
177
+ agentwire projects create name --from URL # git clone URL instead of mkdir
178
+
179
+ # Session history
180
+ agentwire history list # list conversation history
181
+ agentwire history show <id> # show session details
182
+ agentwire history resume <id> # resume session (always forks)
183
+
184
+ # Shareable conversation handoffs (issue #157)
185
+ agentwire handoff init [--title hint] # create bundle dir + pre-filled ai-handoff.md template
186
+ agentwire handoff render <bundle-dir> # render show-the-story.html from ai-handoff.md
187
+ agentwire handoff list # list past bundles
188
+ # Inside a Codex session, prefer the /handoff slash command — it walks the
189
+ # agent through filling the template using full conversation context (free, no
190
+ # fresh LLM call). Outputs land in ~/.agentwire/artifacts/handoff-<slug>/.
191
+
192
+ # Roles management
193
+ agentwire roles list # list available roles
194
+ agentwire roles show <name> # show role details
195
+
196
+ # Scheduled workloads
197
+ agentwire ensure -s name --task task # run named task reliably
198
+ agentwire task list [session] # list tasks for session/project
199
+ agentwire task show session/task # show task definition
200
+ agentwire task validate session/task # validate task syntax
201
+
202
+ # URL fetch (helper usable from any session, including pi)
203
+ agentwire fetch <url> # fetch a page via Jina Reader (markdown, JS-rendered)
204
+ agentwire fetch <url> --limit 4000 # cap chars (default 8000, 0 = no limit)
205
+
206
+ # Safety & diagnostics
207
+ agentwire safety check "cmd" # test if command would be blocked
208
+ agentwire safety status # show pattern counts and recent blocks
209
+ agentwire safety logs # query audit logs
210
+ agentwire safety install # install damage control hooks
211
+ agentwire hooks install # install permission hook (Codex only)
212
+ agentwire hooks uninstall # remove permission hook (Codex only)
213
+ agentwire hooks status # check hook installation status
214
+ agentwire network status # complete network health check
215
+ agentwire doctor # auto-diagnose and fix issues
216
+ agentwire doctor --voice # only the push-to-talk path: mic, STT shim, portal/tunnel, tmux+PTT (pass/fail + fix)
217
+
218
+ # Notifications
219
+ agentwire notify event # notify portal of state changes (session/pane events)
220
+
221
+ # MCP Server
222
+ agentwire mcp # expose agentwire as MCP server
223
+
224
+ # Scheduler
225
+ agentwire scheduler start|serve|stop|status # manage scheduler daemon
226
+ agentwire scheduler board # show task board with overdue scores
227
+ agentwire scheduler live # show live scheduler state
228
+ agentwire scheduler events # show recent scheduler events
229
+ agentwire scheduler history # show recent run history
230
+ agentwire scheduler run task # force-run a task now
231
+ agentwire scheduler enable|disable task # enable/disable a task
232
+ agentwire scheduler report [--since 8h] [--artifact] # generate morning report HTML
233
+ agentwire scheduler dashboard # open scheduler dashboard
234
+
235
+ # Usage-limit recovery (deterministic watchdog, see docs/wiki/usage-limit-recovery.md)
236
+ agentwire limits tick # one watchdog pass: sweep panes, resume what's due
237
+ agentwire limits status # show sessions parked on usage limits
238
+ agentwire limits resume -s name [--force] # manually resume a parked session now
239
+ agentwire limits install # install + load the launchd watchdog (60s tick)
240
+ agentwire limits uninstall # unload + remove the watchdog
241
+
242
+ # Setup & Development
243
+ agentwire init # interactive setup wizard
244
+ agentwire generate-certs # generate SSL certificates
245
+ agentwire up # boot all services + dev session (see "Boot everything")
246
+ agentwire dev # start/attach to dev session ONLY (no services)
247
+ agentwire rebuild # clear uv cache and reinstall
248
+ agentwire uninstall # uninstall the tool
249
+ ```
250
+
251
+ `agentwire dev` only spawns the `agentwire` agent session — it does NOT start
252
+ the portal or any service. Use `agentwire up` after a reboot to bring up the
253
+ full stack. `up` brings up portal → TTS → STT → autostart custom services, then
254
+ runs `dev`; the scheduler rides along via the portal's `scheduler.autostart`.
255
+ TTS is skipped for `none`/`runpod` backends; STT is skipped without `stt.url`.
256
+
257
+ Session formats: `name`, `project/branch` (worktree), `name@machine` (remote)
258
+ Pane targeting: `--pane N` auto-detects session from `$TMUX_PANE`
259
+
260
+ For CLI details: `agentwire --help` or `agentwire <cmd> --help`
@@ -0,0 +1,236 @@
1
+ ---
2
+ name: agentwire-config
3
+ description: Reference for `~/.agentwire/config.yaml` — main config structure including server/portal/SSL, projects, TTS/STT, agent, dev, services, executables, pi (binary/system_prompt/extra_env/providers), uploads/artifacts/wiki, channels (email + quo, outbound-only), scheduler, worktree, session defaults. Use when editing or debugging agentwire config, setting up TTS/STT backends, configuring pi providers, or explaining config fields to the user.
4
+ ---
5
+
6
+ # AgentWire Config (`~/.agentwire/config.yaml`)
7
+
8
+ ## Layout of `~/.agentwire/`
9
+
10
+ | File | Purpose |
11
+ |------|---------|
12
+ | `config.yaml` | Main config (see structure below) |
13
+ | `machines.json` | Remote machines registry |
14
+ | `scripts/` | Machine-specific helper scripts (TTS management, startup, etc.) |
15
+ | `voices/` | Custom TTS voice samples |
16
+ | `uploads/` | Uploaded images for cross-machine sharing |
17
+ | `artifacts/` | Agent-generated HTML for artifact windows |
18
+ | `wiki/` | LLM-maintained knowledge base (Karpathy LLM Wiki pattern) |
19
+ | `logs/` | Audit logs for damage-control |
20
+
21
+ Per-session config (type, roles, voice) lives in `.agentwire.yml` in each project directory (see `agentwire-project-config` skill).
22
+
23
+ ## Machine Scripts (`~/.agentwire/scripts/`)
24
+
25
+ Each machine has a `~/.agentwire/scripts/` directory for machine-specific helper scripts (TTS management, startup hooks, service wrappers, etc.). This is the standard location — agents should look here first and put new scripts here.
26
+
27
+ Scripts in `~/bin/` should symlink to `~/.agentwire/scripts/` so they're callable from PATH but the source of truth is in one place.
28
+
29
+ These scripts are **not** managed by agentwire — they're local to each machine and not version controlled. They exist because different machines have different roles (GPU server runs TTS, Mac runs the portal, etc.) and need different glue scripts.
30
+
31
+ ## config.yaml Structure
32
+
33
+ ```yaml
34
+ server:
35
+ host: "127.0.0.1" # default; "0.0.0.0" allows LAN/phone access and requires the auth token (see SECURITY.md)
36
+ port: 8765
37
+ activity_threshold_seconds: 3 # Seconds before session considered idle
38
+ ssl:
39
+ cert: "~/.agentwire/cert.pem"
40
+ key: "~/.agentwire/key.pem"
41
+ # Auth token: unset = use ~/.agentwire/portal.token (auto-generated on first
42
+ # non-loopback start; print/rotate with `agentwire portal token [--rotate]`).
43
+ # Set a string to override the file; "" disables auth (loopback binds only —
44
+ # the portal refuses to start on 0.0.0.0 with auth disabled).
45
+ # auth_token: ""
46
+ # Extra browser origins allowed on state-changing requests (exact
47
+ # scheme://host[:port]). The portal's own origin and localhost always pass.
48
+ # Needed when fronting with Cloudflare Tunnel:
49
+ allowed_origins: [] # e.g. ["https://portal.example.com"]
50
+
51
+ projects:
52
+ dir: "~/projects"
53
+ worktrees:
54
+ enabled: true
55
+ suffix: "-worktrees"
56
+ auto_create_branch: true
57
+ copy_files: [".env", ".agentwire.yml"] # gitignored files seeded into each new worktree
58
+ # (git worktree add only checks out tracked files,
59
+ # so .env/secrets/local config don't carry over —
60
+ # add ".env.local", ".envrc", etc. as needed).
61
+ # Keep .agentwire.yml gitignored: a TRACKED copy means
62
+ # worktree runs use the committed version (HEAD) and
63
+ # silently ignore live edits — see agentwire-project-config skill.
64
+
65
+ tts:
66
+ backend: "default" # tier: default (in-process Kokoro, zero setup — ~200MB model
67
+ # auto-downloads on first portal start; speechSynthesis covers
68
+ # the wait) | custom (self-hosted shim at url)
69
+ url: "http://localhost:8100" # custom tier only — shim endpoint
70
+ default_voice: "dotdev"
71
+ voices_dir: "~/.agentwire/voices" # Custom voice samples for cloning
72
+ instructions: "" # free-text prompt passed through to the shim
73
+ options: # opaque JSON passed to the shim; the bundled shim reads:
74
+ backend: kokoro # engine: kokoro | chatterbox | chatterbox-streaming | qwen-base-0.6b | qwen-base-1.7b | qwen-custom | qwen-design | zonos-transformer | zonos-hybrid
75
+ exaggeration: 0.5 # Voice expressiveness (0-1, Chatterbox)
76
+ cfg_weight: 0.5 # CFG weight (0-1, Chatterbox)
77
+ timeout: 60
78
+
79
+ stt:
80
+ backend: "default" # TIER (where transcription happens): default (portal-owned
81
+ # in-process Moonshine — bundled, auto-downloads on first boot,
82
+ # no setup; falls back to browser SpeechRecognition while it
83
+ # warms up or on py3.14+) | cloud (portal → hosted OpenAI-
84
+ # compatible transcription API, no shim daemon) | custom
85
+ # (self-hosted shim at url)
86
+ engine: "auto" # ENGINE (which model the self-hosted shim loads): auto | moonshine |
87
+ # whisper. Orthogonal to backend — used only by `agentwire stt start/serve`.
88
+ # `{backend: custom, engine: whisper}` = boot shim AND run faster-whisper.
89
+ moonshine_model: "moonshine/base" # moonshine engine only — ONNX model id (moonshine/tiny | moonshine/base)
90
+ model: "base" # whisper engine only — faster-whisper/openai-whisper model (tiny → large-v3)
91
+ url: "http://localhost:8101" # custom tier only — shim endpoint (also the `agentwire stt` port)
92
+ cloud: # cloud tier only — all fields optional, defaults shown
93
+ base_url: "https://api.openai.com/v1" # any OpenAI-compatible endpoint (Groq, Mistral, speaches, ...)
94
+ model: "gpt-4o-mini-transcribe"
95
+ api_key_env: "OPENAI_API_KEY" # NAME of the env var holding the key — the key itself
96
+ # never lives in config and never reaches the browser;
97
+ # portal refuses to start if the var is unset
98
+ language: "" # optional ISO-639-1 hint
99
+ timeout: 30
100
+ silence_prepend_ms: 0 # prepend silence if your backend clips the first syllable
101
+ instructions: "" # free-text hint passed through to the shim
102
+ options: {} # opaque JSON passed to the shim (language hints, vocab biasing, ...)
103
+ corrections: {} # post-transcription find/replace, e.g. {"agent wire": "agentwire"}
104
+
105
+ agent:
106
+ command: "Codex --dangerously-skip-permissions"
107
+
108
+ dev:
109
+ source_dir: "~/projects/agentwire-dev" # agentwire source for TTS/STT venv
110
+
111
+ services: # Where services run (for multi-machine setups)
112
+ portal:
113
+ machine: null # null = local
114
+ port: 8765
115
+ session_name: "agentwire-portal" # tmux session name
116
+ tts:
117
+ machine: "gpu-server" # or null for local
118
+ port: 8100
119
+ session_name: "agentwire-tts"
120
+ stt:
121
+ session_name: "agentwire-stt"
122
+ custom: # User-defined service sessions — autostart on portal launch AND
123
+ # `agentwire up`, health-checked by the portal watchdog, shown in
124
+ # the portal's Services column. Manage with `agentwire services ...`.
125
+ # The notifications bridge is a built-in registry entry (override
126
+ # by defining a service with its name).
127
+ - name: "agent-brain" # tmux session name (required)
128
+ project: "~/projects/brain" # project dir; defaults to dev source dir
129
+ autostart: true # boot on portal launch / `agentwire up` (default true)
130
+ roles: "brain" # optional; overrides project .agentwire.yml
131
+ type: "Codex-bypass" # optional; session type override
132
+ restart: on-failure # never | on-failure | always (watchdog respawn
133
+ # with 30s..10m exponential backoff; default on-failure;
134
+ # `agentwire services down` always sticks)
135
+ healthcheck: # optional; defaults to tmux_session/60s
136
+ kind: tmux_session # tmux_session | http | command
137
+ url: "http://..." # for http (2xx = healthy)
138
+ command: "curl -sf ..." # for command (exit 0 = healthy)
139
+ interval: 60 # seconds between watchdog checks
140
+ - "simple-service" # string shorthand = name only, all defaults
141
+
142
+ executables: # Override executable paths (optional, auto-detected by default)
143
+ ffmpeg: "/opt/homebrew/bin/ffmpeg"
144
+ whisperkit-cli: "/opt/homebrew/bin/whisperkit-cli"
145
+ hs: "/opt/homebrew/bin/hs"
146
+ agentwire: "~/.local/bin/agentwire"
147
+
148
+ pi: # Pi coding agent — drives all `pi-<provider>` session types. See `agentwire-pi` skill.
149
+ binary: "pi" # path override if pi isn't on PATH (e.g., nvm-installed)
150
+
151
+ # Appended via --append-system-prompt to every non-restricted pi-* session.
152
+ # Use to teach pi about local helpers — agentwire fetch, etc.
153
+ system_prompt: |
154
+ ## Fetching URLs
155
+ Use `agentwire fetch <url>` to fetch a page as clean markdown (Jina Reader).
156
+
157
+ # Env vars injected into every pi-* session, in addition to the provider key.
158
+ # Values are stored in plaintext here — non-secrets only. Secrets belong in
159
+ # ~/.agentwire/.env (docs/wiki/security/secrets.md).
160
+ extra_env:
161
+ MY_SERVICE_URL: "https://internal.example.com"
162
+
163
+ # Per-provider config. Session type `pi-<name>` resolves the provider here.
164
+ # Adding a new provider is config-only — no code changes needed. For non-built-in
165
+ # providers (e.g. DeepSeek), also register them in `~/.pi/agent/models.json`.
166
+ # env_var is the NAME of the env var holding the key — the key itself lives
167
+ # in ~/.agentwire/.env (e.g. ZAI_API_KEY=...), never here.
168
+ providers:
169
+ zai:
170
+ env_var: ZAI_API_KEY
171
+ default_model: glm-5.1
172
+ deepseek:
173
+ env_var: DEEPSEEK_API_KEY
174
+ default_model: deepseek-chat
175
+
176
+ uploads:
177
+ dir: "~/.agentwire/uploads"
178
+ max_size_mb: 10
179
+ cleanup_days: 7
180
+
181
+ artifacts:
182
+ dir: "~/.agentwire/artifacts"
183
+ max_size_mb: 10
184
+
185
+ wiki:
186
+ dir: "~/.agentwire/wiki" # Wiki vault location
187
+
188
+ portal:
189
+ url: "https://localhost:8765"
190
+
191
+ channels: # Outbound-only notifications. Only email + quo ship.
192
+ # Keys are env-only: RESEND_API_KEY / QUO_API_KEY in ~/.agentwire/.env
193
+ # (docs/wiki/security/secrets.md) — never in config.yaml.
194
+ email:
195
+ from_address: "Echo <echo@yourdomain.com>"
196
+ default_to: "user@example.com"
197
+ banner_image_url: "https://yourdomain.com/images/banner.png"
198
+ echo_image_url: "https://yourdomain.com/images/echo.png"
199
+ echo_small_url: "https://yourdomain.com/images/echo-small.png"
200
+ logo_image_url: "https://yourdomain.com/images/logo.png"
201
+ quo:
202
+ from_number: "+1234567890" # E.164 or phone number ID (PNxxx)
203
+ default_to: "+0987654321"
204
+
205
+ scheduler:
206
+ autostart: true # Start the scheduler daemon when the portal boots (default: true)
207
+ dispatch_cooldown: 60 # Seconds between task dispatches (default: 60)
208
+
209
+ usage_limit: # Usage-limit recovery watchdog (docs/wiki/usage-limit-recovery.md)
210
+ enabled: true # Master switch for dialog detection/parking (default: true)
211
+ exclude_sessions: [] # Session names never auto-parked (gates NEW parks only)
212
+
213
+ worktree: # `agentwire worktree <name>` orchestration (WorktreeConfig).
214
+ # Distinct from projects.worktrees above (the legacy
215
+ # project/branch layout). `quicktask:` is a legacy alias for
216
+ # this key — prefer `worktree:`.
217
+ worktree_dir: ~/worktrees # Where worktrees are created (one dir per session)
218
+ default_base: develop # Base branch new worktrees fork from. OMIT to derive from
219
+ # the repo's actual default branch (origin/HEAD, fallback to
220
+ # current branch) — no hardcoded 'main'. --base always wins.
221
+ default_project: ~/projects/my-repo # Repo used when --project is omitted AND cwd isn't in a
222
+ # git repo. Otherwise --project / the git root of cwd is used.
223
+ naming: "{user}/{slug}" # Optional branch-name template for NEW branches. Placeholders:
224
+ # {name} (verbatim), {slug} (slugified), {user} (OS login).
225
+ # Omit → branch == name verbatim. Only the git branch is
226
+ # templated; the tmux session name stays {project}-{name}.
227
+
228
+ session:
229
+ # No global default-role: a session's etiquette is derived from its spawn
230
+ # verb (new → orchestrator, worktree → worktree-session, spawn → worker),
231
+ # then any --roles / .agentwire.yml roles: replace it. See resolve_roles.
232
+ inject_soul: true # Append the bundled 'soul' personality role to every human-facing
233
+ # session (appended last for recency weight). Headless roles
234
+ # (worker, task-runner, notifications) and soul/soul-* sessions
235
+ # are excluded automatically; per-session opt-out: --no-soul on new/dev
236
+ ```
@@ -0,0 +1,76 @@
1
+ ---
2
+ name: agentwire-desktop-ui
3
+ description: Portal desktop UI patterns — left sidebar (click-toggle tab handle, accordion sections, session grouping into Sessions/Services via explicit allowlist, keyboard nav), session window modes (Monitor `<pre>` vs Terminal xterm.js — Monitor MUST NOT use xterm), artifact windows (sandboxed iframes from `~/.agentwire/artifacts/`), window collage (preview overlay — NEVER mutate real WinBox windows). Use when editing portal static files (`static/js/sidebar/*`, `desktop.js`, `desktop.css`), changing window behavior, or adding sidebar sections.
4
+ ---
5
+
6
+ # Portal Desktop UI Patterns
7
+
8
+ ## Left Sidebar (click-toggle tab handle)
9
+
10
+ The portal uses a left sidebar with a floating tab handle instead of hover hotzone. A small tab (›) peeks from the left edge — click to slide sidebar open, click again to close. Click outside or press Escape to dismiss. Pin to keep visible (reflows desktop area).
11
+
12
+ **Structure:**
13
+ - **Tab handle**: floating 20×40px button on left edge, rides sidebar when open, chevron flips direction
14
+ - **Header**: connection status dot, session count, clock, pin toggle
15
+ - **Open Windows section**: lists currently-open windows (drag to reorder, click to focus, × to close). Persisted in `localStorage['taskbar-state']` — restores on refresh.
16
+ - **Accordion sections**: Sessions, Services, Machines, Projects, Artifacts, Scheduler, Safety, Config. Click header to expand/collapse. Data fetched on first expand.
17
+ - **Footer**: global PTT button, voice indicator
18
+
19
+ **Session grouping:** Sessions are split into two accordion sections based on the name:
20
+ - **Services**: infrastructure sessions. The built-in allowlist in `service-classification.js` (`agentwire-portal`, `agentwire-tts`, `agentwire-stt`, `agentwire-scheduler`, `agentwire-notifications`) is merged at load time with config-defined custom services fetched from `/api/services/custom` (driven by `services.custom` in `config.yaml`). When the fetch resolves, `notifyListeners()` re-renders so flagged sessions hop into this column.
21
+ - **Sessions**: everything else (working sessions, worktrees, remote sessions)
22
+
23
+ Both share session data from `sessions-section.js` (single fetch, shared activity state, pub-sub via `onSessionsChanged`).
24
+
25
+ **Keyboard:** Tab cycles forward through open windows, Shift+Tab cycles backward. Works inside terminals (captured on `window` in capture phase before xterm).
26
+
27
+ **Files:** `static/js/sidebar.js` (shell + click-toggle), `static/js/sidebar/<name>-section.js` (per-section modules), `static/css/desktop.css` (sidebar-* classes).
28
+
29
+ ## Command Palette & Idea-First Capture
30
+
31
+ `Cmd/Ctrl+K` opens the command palette (`static/js/command-palette.js`) **straight into the `new-idea` view** — Esc reaches the root menu (New idea / New session / New worktree / Open session / Window collage). The full-width 💡 **New idea** sidebar button (between header and sections) and the Projects section `+` route to the same view.
32
+
33
+ **New-idea flow (issue #253):** idea textarea (Enter submits, Shift+Enter newline, 🎤 dictation via `voice/browser-stt.js`) → kebab-case project name derived client-side (`deriveProjectName`, stopword-stripped; stops auto-updating once the user edits it) → submit POSTs `/api/projects/create` then `/api/create` with `first_message` → window opens immediately while the idea is delivered to the booting agent in the background (server calls `agentwire send --wait-ready`; failure posts a toast). There is no name-first modal anymore — `new-project-modal.js` was deleted.
34
+
35
+ ## Session Window Modes
36
+
37
+ | Mode | Element | Use Case |
38
+ |------|---------|----------|
39
+ | **Monitor** | `<pre>` with ANSI-to-HTML | Read-only output viewing, polls `tmux capture-pane` |
40
+ | **Terminal** | xterm.js | Interactive terminal, attaches via `tmux attach` |
41
+
42
+ **Important:** Monitor mode must use a simple `<pre>` element, NOT xterm.js. xterm.js requires precise container dimensions for its fit addon to work correctly. Since monitor mode just displays captured text output, a `<pre>` element with `white-space: pre-wrap` and ANSI-to-HTML conversion is simpler and more reliable.
43
+
44
+ **Per-session PTT** lives in the WinBox titlebar (next to the activity indicator), not as a floating button.
45
+
46
+ ## Window Collage (Mission Control)
47
+
48
+ F3 or Alt/Option+` / `desktop_collage` MCP / command palette → grid of live previews of every open window; click a tile to focus, Esc to exit.
49
+
50
+ **The one rule: tiles are overlay-local previews — NEVER mutate the real WinBox windows.** Session tiles stream pane content over a second monitor WS (`/ws/{sessionId}`, rendered via shared `utils/ansi.js`); artifact tiles are cloned iframes. Real windows are never moved/resized/transformed/un-minimized, so exit has nothing to restore.
51
+
52
+ Why this is load-bearing (each broke a previous implementation — full autopsy in `docs/wiki/internals/window-collage.md`):
53
+ - Faking `winbox.min` corrupts WinBox's internal min-stack → later minimizes re-lay windows out as 250×35px bars, with duplicate entries compounding per cycle.
54
+ - WinBox animates geometry over 300ms → `getBoundingClientRect` right after a write returns mid-transition garbage.
55
+ - Resizing a terminal window fires ResizeObserver → `fitAddon.fit()` + PTY resize per frame → resizes the real tmux session and corrupts the xterm WebGL layer (transparent windows).
56
+ - `registerWindow`/`setActiveWindow` auto-minimize all others (single-window mode) → any window event mid-overlay fights manual layouts.
57
+
58
+ **Z-index landscape:** WinBox windows (inline, grows from 10) < collage overlay (1400) < toasts (1500) < modals (2000) < command palette (3000) < sidebar (9001) < tile drag overlay (99999).
59
+
60
+ ## Artifact Windows
61
+
62
+ Agents can display HTML content in sandboxed iframe windows on the portal desktop.
63
+
64
+ **Agent workflow (MCP):**
65
+ ```python
66
+ # Write HTML and open in one step
67
+ desktop_write_artifact(filename="dashboard.html", html_content="<h1>Hello</h1>", title="Dashboard")
68
+
69
+ # Or open an existing file or external URL
70
+ desktop_open_artifact(url="dashboard.html", title="Dashboard")
71
+ desktop_open_artifact(url="https://example.com", title="External")
72
+ ```
73
+
74
+ **Files served from:** `~/.agentwire/artifacts/` via `/artifacts/` route.
75
+
76
+ **Sandboxing:** Local files get `allow-scripts allow-same-origin`. External URLs get `allow-scripts allow-forms allow-popups` (no same-origin).