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.
- agentwire_dev-1.43.0/.agents/skills/agentwire-cli/SKILL.md +260 -0
- agentwire_dev-1.43.0/.agents/skills/agentwire-config/SKILL.md +236 -0
- agentwire_dev-1.43.0/.agents/skills/agentwire-desktop-ui/SKILL.md +76 -0
- agentwire_dev-1.43.0/.agents/skills/agentwire-mcp-tools/SKILL.md +176 -0
- agentwire_dev-1.43.0/.agents/skills/agentwire-pi/SKILL.md +205 -0
- agentwire_dev-1.43.0/.agents/skills/agentwire-project-config/SKILL.md +195 -0
- agentwire_dev-1.43.0/.agents/skills/agentwire-scheduler/SKILL.md +133 -0
- agentwire_dev-1.43.0/.agents/skills/wiki/SKILL.md +89 -0
- agentwire_dev-1.43.0/AGENTS.md +155 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/PKG-INFO +1 -1
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/__init__.py +1 -1
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/__main__.py +383 -313
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/config.py +28 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/council/cli.py +1 -1
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/doctor_voice.py +28 -48
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/inbox.py +64 -5
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/mcp_server.py +548 -80
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/msg_cli.py +66 -8
- agentwire_dev-1.43.0/agentwire/research.py +27 -0
- agentwire_dev-1.43.0/agentwire/roles/anchor.md +60 -0
- agentwire_dev-1.43.0/agentwire/roles/correspondent.md +49 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/roles/notifications.md +9 -9
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/server.py +25 -2
- agentwire_dev-1.43.0/agentwire/session_context.py +196 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/session_ready.py +10 -7
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/css/desktop.css +27 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/js/desktop.js +7 -3
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/js/notifications-panel.js +22 -5
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/js/sidebar/sessions-section.js +41 -0
- agentwire_dev-1.43.0/agentwire/voice_status.py +243 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/worktree.py +66 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/docs/wiki/INDEX.md +2 -1
- agentwire_dev-1.43.0/docs/wiki/briefing-mode.md +80 -0
- agentwire_dev-1.43.0/docs/wiki/research/briefing-mode-feasibility.md +267 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/docs/wiki/sessions/messaging.md +34 -7
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/tests/unit/test_doctor_voice.py +13 -13
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/tests/unit/test_mcp_tools_args.py +30 -22
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/tests/unit/test_portal_api.py +27 -0
- agentwire_dev-1.43.0/tests/unit/test_session_context.py +96 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/tests/unit/test_session_ready.py +20 -10
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/tests/unit/test_tts_local.py +5 -4
- agentwire_dev-1.43.0/tests/unit/test_voice_status.py +104 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/.github/FUNDING.yml +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/.github/ISSUE_TEMPLATE/question.md +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/.github/workflows/pytest.yml +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/.github/workflows/tts-smoke.yml +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/.gitignore +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/CLA.md +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/CODE_OF_CONDUCT.md +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/CONTRIBUTING.md +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/Dockerfile.local +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/Dockerfile.runpod +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/LICENSE +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/README.md +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/RELEASING.md +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/SECURITY.md +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/SPONSORS.md +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/agents/__init__.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/agents/base.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/agents/tmux.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/cached_status.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/channels/__init__.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/channels/base.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/channels/email.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/channels/quo.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/cli_safety.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/completion.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/council/__init__.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/council/inbox.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/council/state.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/council/view.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/fetch.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/handoff/__init__.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/handoff/git_state.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/handoff/instructions.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/handoff/parser.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/handoff/renderer.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/handoff/schema.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/history.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/hooks/__init__.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/hooks/agentwire-permission.sh +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/hooks/damage-control/__init__.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/hooks/damage-control/audit_logger.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/hooks/damage-control/bash-tool-damage-control.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/hooks/damage-control/edit-tool-damage-control.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/hooks/damage-control/rules/agentwire.yaml +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/hooks/damage-control/rules/aws.yaml +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/hooks/damage-control/rules/cloud-hosting.yaml +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/hooks/damage-control/rules/containers.yaml +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/hooks/damage-control/rules/core.yaml +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/hooks/damage-control/rules/databases.yaml +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/hooks/damage-control/rules/firebase.yaml +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/hooks/damage-control/rules/gcp.yaml +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/hooks/damage-control/rules/git.yaml +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/hooks/damage-control/rules/gws.yaml +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/hooks/damage-control/rules/infrastructure.yaml +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/hooks/damage-control/rules/remote.yaml +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/hooks/damage-control/write-tool-damage-control.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/hooks/idle-handler.sh +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/hooks/queue-processor.sh +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/limits_cli.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/listen.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/locking.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/network.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/onboarding.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/pane_manager.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/project_config.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/projects.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/prompt_router.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/prompts/__init__.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/prompts/init.md +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/prompts_cli.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/roles/__init__.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/roles/agentwire.md +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/roles/chatbot.md +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/roles/council-brain.md +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/roles/council-conscience.md +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/roles/council-critic.md +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/roles/council-devils-advocate.md +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/roles/council-gut.md +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/roles/council-historian.md +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/roles/council-member.md +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/roles/council-orchestrator.md +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/roles/init.md +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/roles/orchestrator.md +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/roles/soul.md +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/roles/task-runner.md +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/roles/voice.md +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/roles/worker.md +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/roles/worktree-session.md +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/safety/__init__.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/safety/_core.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/scheduler.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/scratchpad.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/security.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/services.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/ssh.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/agentwire-Echo--black.png +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/agentwire-Echo--transparent.png +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/agentwire-Echo.png +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/agentwire-email-banner.png +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/agentwire-splash-logo-layers--agentwire-text.png +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/agentwire-splash-logo-layers--echo-claw-fg.png +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/agentwire-splash-logo-layers--echo.png +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/agentwire-splash-logo-layers--full--transparent-top.png +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/agentwire-splash-logo-layers--full-black.png +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/agentwire-splash-logo-layers--telephone-fg.png +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/agentwire-splash-logo-layers--telephone.png +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/agentwire-splash-logo-layers--transparent-top.png +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/agentwire-splash-logo-layers--transparent.png +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/agentwire-splash-logo-layers--tree.png +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/agentwire-splash-logo-layers.png +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/announcements.json +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/css/mobile.css +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/favicon.png +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/icons/machines/android.jpeg +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/icons/machines/automaton.jpeg +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/icons/machines/bot.jpeg +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/icons/machines/cyborg.jpeg +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/icons/machines/droid.jpeg +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/icons/machines/drone.jpeg +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/icons/machines/guardian.jpeg +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/icons/machines/mech.jpeg +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/icons/machines/probe.jpeg +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/icons/machines/robot.jpeg +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/icons/machines/sentinel.jpeg +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/icons/machines/unit.jpeg +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/icons/projects/blob.jpeg +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/icons/projects/cloud.jpeg +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/icons/projects/crystal.jpeg +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/icons/projects/cyclops.jpeg +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/icons/projects/flame.jpeg +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/icons/projects/fuzzy.jpeg +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/icons/projects/horned.jpeg +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/icons/projects/moon.jpeg +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/icons/projects/slime.jpeg +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/icons/projects/star.jpeg +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/icons/projects/tentacle.jpeg +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/icons/projects/winged.jpeg +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/icons/sessions/bear.jpeg +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/icons/sessions/cat.jpeg +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/icons/sessions/crown.jpeg +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/icons/sessions/custom/agentwire-portal.png +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/icons/sessions/custom/agentwire-tts.png +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/icons/sessions/custom/agentwire.png +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/icons/sessions/deer.jpeg +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/icons/sessions/drone.jpeg +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/icons/sessions/eagle.jpeg +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/icons/sessions/fox.jpeg +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/icons/sessions/hawk.jpeg +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/icons/sessions/horse.jpeg +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/icons/sessions/lion.jpeg +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/icons/sessions/rabbit.jpeg +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/icons/sessions/robot.jpeg +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/icons/sessions/tiger.jpeg +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/icons/sessions/wolf.jpeg +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/js/.gitkeep +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/js/announcement-modal.js +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/js/api.js +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/js/artifact-window.js +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/js/collage.js +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/js/command-palette.js +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/js/components/icon-picker.js +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/js/components/list-card.js +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/js/components/type-tag.js +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/js/council-window.js +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/js/dead-key-suppressor.js +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/js/desktop-manager.js +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/js/icon-manager.js +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/js/mobile.js +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/js/notification-prefs.js +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/js/safety-shared.js +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/js/safety-window.js +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/js/scratchpad.js +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/js/service-classification.js +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/js/session-id.js +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/js/session-window.js +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/js/sidebar/artifacts-section.js +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/js/sidebar/config-section.js +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/js/sidebar/council-section.js +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/js/sidebar/machines-section.js +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/js/sidebar/projects-section.js +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/js/sidebar/safety-section.js +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/js/sidebar/scheduler-section.js +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/js/sidebar/services-section.js +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/js/sidebar.js +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/js/terminal-font-prefs.js +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/js/tile-manager.js +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/js/toast.js +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/js/token-modal.js +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/js/utils/ansi.js +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/js/utils/auto-refresh.js +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/js/utils/swipe.js +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/js/voice/autosend-prefs.js +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/js/voice/browser-stt.js +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/js/voice/browser-tts.js +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/js/voice/jargon.js +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/js/voice/prompt.js +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/static/js/winbox.bundle.min.js +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/stt/__init__.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/stt/base.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/stt/cloud.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/stt/engine.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/stt/local.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/stt/server_backend.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/stt/stt_server.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/tasks.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/templates/__init__.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/templates/base.html +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/templates/desktop.html +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/templates/email_notification.html +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/templates/handoff/show-the-story.html.j2 +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/templates/handoff/theme.css.j2 +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/templates/mobile.html +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/templates/tmux.conf +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/templating.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/tooldefs/aws.yaml +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/tooldefs/docker.yaml +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/tooldefs/gcp.yaml +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/tooldefs/gh.yaml +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/tooldefs/git.yaml +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/tooldefs/gws.yaml +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/tooldefs/kubectl.yaml +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/tooldefs/npm.yaml +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/tooldefs/terraform.yaml +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/tooldefs/uv.yaml +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/tts/__init__.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/tts/audio.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/tts/base.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/tts/engines/__init__.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/tts/engines/chatterbox.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/tts/engines/kokoro.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/tts/engines/qwen_base.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/tts/engines/qwen_custom.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/tts/engines/qwen_design.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/tts/engines/zonos.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/tts/kokoro_server.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/tts/local.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/tts/registry.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/tts_server.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/tunnels.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/usage_limit.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/utils/__init__.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/utils/chunker.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/utils/file_io.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/utils/paths.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/utils/speech.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/utils/subprocess.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/validation.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/voiceclone.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/voices/darren.wav +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/voices/default.wav +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/voices/jessica.wav +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/voices/lisa.wav +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/voices/may.wav +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/wiki_audit.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/agentwire/worktree_registry.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/docs/decisions/obsidian-second-brain.md +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/docs/logo.png +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/docs/wiki/architecture.md +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/docs/wiki/communication/channels.md +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/docs/wiki/communication/hammerspoon.md +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/docs/wiki/communication/handoff.md +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/docs/wiki/concepts.md +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/docs/wiki/council.md +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/docs/wiki/deployment/remote-access.md +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/docs/wiki/deployment/remote-machines.md +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/docs/wiki/glossary.md +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/docs/wiki/integrations/gws-google-workspace-cli.md +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/docs/wiki/internals/damage-control.md +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/docs/wiki/internals/portal.md +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/docs/wiki/internals/shell-escaping.md +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/docs/wiki/internals/troubleshooting.md +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/docs/wiki/internals/window-collage.md +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/docs/wiki/quickstart.md +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/docs/wiki/research/orchestration-transport-alternatives.md +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/docs/wiki/scheduling/scheduled-workloads.md +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/docs/wiki/security/secrets.md +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/docs/wiki/services.md +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/docs/wiki/sessions/claude-code-auto-mode.md +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/docs/wiki/sessions/pi.md +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/docs/wiki/sessions/prompt-routing.md +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/docs/wiki/sessions/window-sizing.md +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/docs/wiki/sessions/worktree-sessions.md +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/docs/wiki/usage-limit-recovery.md +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/docs/wiki/voice/shim-contract.md +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/docs/wiki/voice/stt-cloud.md +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/docs/wiki/voice/stt-self-hosted.md +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/docs/wiki/voice/tts-self-hosted.md +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/pyproject.toml +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/requirements-tts.txt +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/tests/conftest.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/tests/e2e/test_portal_ui.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/tests/fixtures/sample_agentwire.yml +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/tests/fixtures/sample_config.yaml +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/tests/fixtures/sample_scheduler.yaml +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/tests/integration/test_council_portal.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/tests/integration/test_scheduler_board.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/tests/integration/test_server_websockets.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/tests/integration/test_worktree_cmd.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/tests/unit/test_announcements.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/tests/unit/test_build_agent_command.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/tests/unit/test_channels.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/tests/unit/test_cli_commands.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/tests/unit/test_cli_output.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/tests/unit/test_cli_safety.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/tests/unit/test_config.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/tests/unit/test_council_cli.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/tests/unit/test_council_inbox.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/tests/unit/test_council_state.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/tests/unit/test_council_view.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/tests/unit/test_damage_control_hooks.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/tests/unit/test_damage_control_sync.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/tests/unit/test_file_io.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/tests/unit/test_handoff_git_state.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/tests/unit/test_handoff_instructions.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/tests/unit/test_handoff_parser.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/tests/unit/test_handoff_renderer.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/tests/unit/test_history.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/tests/unit/test_hooks_install.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/tests/unit/test_idle_handler.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/tests/unit/test_inbox.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/tests/unit/test_locking.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/tests/unit/test_mcp_server.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/tests/unit/test_msg_cli.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/tests/unit/test_project_config.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/tests/unit/test_prompt_router.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/tests/unit/test_roles.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/tests/unit/test_safety_disabled_rules.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/tests/unit/test_safety_escape_hatch.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/tests/unit/test_safety_kill_switch.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/tests/unit/test_scheduler.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/tests/unit/test_scheduler_parsing.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/tests/unit/test_scratchpad.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/tests/unit/test_security.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/tests/unit/test_server_async.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/tests/unit/test_server_pure.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/tests/unit/test_services.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/tests/unit/test_speech_tags.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/tests/unit/test_ssh.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/tests/unit/test_stt_backend.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/tests/unit/test_stt_cloud.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/tests/unit/test_stt_engine.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/tests/unit/test_task_cli.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/tests/unit/test_tasks.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/tests/unit/test_templating.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/tests/unit/test_terminal_resize.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/tests/unit/test_tmux_template.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/tests/unit/test_tts_engine_resolution.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/tests/unit/test_usage_limit.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/tests/unit/test_validation.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/tests/unit/test_wiki_audit.py +0 -0
- {agentwire_dev-1.42.0 → agentwire_dev-1.43.0}/tests/unit/test_worktree.py +0 -0
- {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).
|