agentwire-dev 1.62.0__tar.gz → 1.63.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.62.0 → agentwire_dev-1.63.0}/PKG-INFO +1 -1
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/__init__.py +1 -1
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/css/desktop.css +106 -9
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/js/command-palette.js +5 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/js/desktop.js +1 -1
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/js/session-hud-controller.js +57 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/js/session-hud.js +21 -9
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/js/shortcuts.js +2 -1
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/js/sidebar/sessions-section.js +6 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/js/topology-render.js +183 -5
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/docs/wiki/internals/session-topology.md +3 -3
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/.agentwire.yml.example +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/.claude/commands/handoff.md +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/.claude/skills/wiki/SKILL.md +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/.github/FUNDING.yml +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/.github/ISSUE_TEMPLATE/question.md +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/.github/workflows/pytest.yml +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/.github/workflows/ruff.yml +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/.github/workflows/security.yml +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/.github/workflows/tts-smoke.yml +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/.gitignore +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/AGENTS.md +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/CODE_OF_CONDUCT.md +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/CONTRIBUTING.md +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/Dockerfile.local +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/LICENSE +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/README.md +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/RELEASING.md +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/SECURITY.md +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/SPONSORS.md +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/__main__.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/agents/__init__.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/agents/base.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/agents/tmux.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/cached_status.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/channels/__init__.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/channels/base.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/channels/email.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/channels/push.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/channels/quo.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/channels_cli.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/chrome_tabs.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/completion.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/config.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/config_cli.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/core.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/council/__init__.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/council/cli.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/council/inbox.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/council/minutes.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/council/state.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/council/view.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/devices.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/diff_cli.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/doctor_cli.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/doctor_voice.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/ensure_cli.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/fetch.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/handoff/__init__.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/handoff/git_state.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/handoff/instructions.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/handoff/parser.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/handoff/renderer.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/handoff/schema.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/handoff_cli.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/history.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/history_cli.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/hooks/__init__.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/hooks/agentwire-permission.sh +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/hooks/damage-control/__init__.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/hooks/damage-control/audit_logger.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/hooks/damage-control/bash-tool-damage-control.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/hooks/damage-control/edit-tool-damage-control.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/hooks/damage-control/mcp-tool-damage-control.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/hooks/damage-control/read-tool-damage-control.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/hooks/damage-control/rules/agentwire.yaml +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/hooks/damage-control/rules/aws.yaml +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/hooks/damage-control/rules/cloud-hosting.yaml +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/hooks/damage-control/rules/containers.yaml +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/hooks/damage-control/rules/control-plane.yaml +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/hooks/damage-control/rules/core.yaml +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/hooks/damage-control/rules/databases.yaml +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/hooks/damage-control/rules/firebase.yaml +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/hooks/damage-control/rules/gcp.yaml +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/hooks/damage-control/rules/git.yaml +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/hooks/damage-control/rules/gws.yaml +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/hooks/damage-control/rules/infrastructure.yaml +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/hooks/damage-control/rules/outbound.yaml +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/hooks/damage-control/rules/publish.yaml +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/hooks/damage-control/rules/remote.yaml +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/hooks/damage-control/write-tool-damage-control.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/hooks/idle-handler.sh +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/hooks/queue-processor.sh +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/hooks_cli.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/inbox.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/limits_cli.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/listen.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/locking.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/machine_cli.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/mcp_channels.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/mcp_chrome.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/mcp_cli.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/mcp_core.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/mcp_council.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/mcp_desktop.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/mcp_handoff.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/mcp_history.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/mcp_listen.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/mcp_lock.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/mcp_machine.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/mcp_msg.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/mcp_notify.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/mcp_pane.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/mcp_projects.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/mcp_scheduler.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/mcp_scratchpad.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/mcp_server.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/mcp_services.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/mcp_session.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/mcp_status.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/mcp_task.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/mcp_tunnels.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/mcp_voice.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/mcp_wiki.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/mcp_worktree.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/msg_cli.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/network.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/notify_cli.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/onboarding.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/palette_cli.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/pane_cli.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/pane_manager.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/portal_cli.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/project_config.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/projects.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/prompt_router.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/prompts_cli.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/push_cli.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/push_store.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/repo_cli.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/research.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/roles/__init__.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/roles/agentwire.md +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/roles/anchor.md +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/roles/chatbot.md +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/roles/contributor.md +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/roles/correspondent.md +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/roles/council-brain.md +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/roles/council-conscience.md +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/roles/council-critic.md +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/roles/council-devils-advocate.md +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/roles/council-gut.md +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/roles/council-historian.md +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/roles/council-member.md +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/roles/council-orchestrator.md +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/roles/init.md +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/roles/notifications.md +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/roles/orchestrator.md +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/roles/soul.md +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/roles/task-runner.md +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/roles/voice.md +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/roles/worker-worktree.md +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/roles/worker.md +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/roles_cli.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/routes/__init__.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/routes/artifacts.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/routes/config.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/routes/council.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/routes/desktop.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/routes/history.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/routes/machines.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/routes/notify.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/routes/palette.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/routes/permission.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/routes/projects.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/routes/push.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/routes/safety.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/routes/scheduler.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/routes/scratchpad.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/routes/sessions.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/routes/sessions_admin.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/routes/voice.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/safety/__init__.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/safety/_core.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/safety_cli.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/safety_commands.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/scheduler/__init__.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/scheduler/dispatch.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/scheduler/gates.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/scheduler/loop.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/scheduler/models.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/scheduler/report.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/scheduler/schedule.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/scheduler/state.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/scheduler/zombie.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/scheduler_cli.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/scratchpad.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/security.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/send_cli.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/server.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/services.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/session_cli.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/session_context.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/session_ready.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/ssh.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/agentwire-splash-logo-layers--agentwire-text.png +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/agentwire-splash-logo-layers--echo-claw-fg.png +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/agentwire-splash-logo-layers--echo.png +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/agentwire-splash-logo-layers--telephone.png +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/agentwire-splash-logo-layers--tree.png +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/announcements.json +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/apple-touch-icon.png +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/css/mobile.css +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/favicon-32.png +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/favicon-64.png +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/icons/sessions/bear.webp +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/icons/sessions/cat.webp +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/icons/sessions/crown.webp +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/icons/sessions/custom/agentwire-portal.webp +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/icons/sessions/custom/agentwire-tts.webp +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/icons/sessions/custom/agentwire.webp +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/icons/sessions/deer.webp +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/icons/sessions/drone.webp +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/icons/sessions/eagle.webp +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/icons/sessions/fox.webp +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/icons/sessions/hawk.webp +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/icons/sessions/horse.webp +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/icons/sessions/lion.webp +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/icons/sessions/rabbit.webp +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/icons/sessions/robot.webp +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/icons/sessions/tiger.webp +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/icons/sessions/wolf.webp +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/img/icon-192.png +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/img/icon-512.png +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/js/.gitkeep +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/js/announcement-modal.js +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/js/api.js +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/js/artifact-window.js +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/js/card-terminal.js +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/js/collage.js +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/js/council-window.js +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/js/dead-key-suppressor.js +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/js/desktop-manager.js +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/js/help-modal.js +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/js/icon-manager.js +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/js/lineage.js +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/js/mobile.js +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/js/notification-prefs.js +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/js/notifications-panel.js +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/js/ptt.js +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/js/push-client.js +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/js/review-window.js +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/js/safety-shared.js +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/js/safety-window.js +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/js/scratchpad.js +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/js/service-classification.js +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/js/session-hud-spawn.js +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/js/session-id.js +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/js/session-window.js +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/js/sidebar/artifacts-section.js +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/js/sidebar/config-section.js +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/js/sidebar/council-section.js +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/js/sidebar/machines-section.js +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/js/sidebar/projects-section.js +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/js/sidebar/safety-section.js +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/js/sidebar/scheduler-section.js +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/js/sidebar/services-section.js +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/js/sidebar.js +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/js/spawn-ghost.js +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/js/terminal-font-prefs.js +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/js/terminal-pane.js +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/js/tile-manager.js +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/js/toast.js +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/js/token-modal.js +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/js/utils/ansi.js +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/js/utils/swipe.js +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/js/voice/autosend-prefs.js +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/js/voice/browser-stt.js +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/js/voice/browser-tts.js +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/js/voice/jargon.js +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/js/voice/prompt.js +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/js/winbox.bundle.min.js +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/js/workspace-window.js +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/manifest.webmanifest +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/service-worker.js +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/topology-harness.html +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/stt/__init__.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/stt/base.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/stt/cloud.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/stt/engine.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/stt/local.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/stt/server_backend.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/stt/stt_server.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/system_cli.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/tabs_cli.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/tasks.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/tasks_cli.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/templates/__init__.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/templates/base.html +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/templates/council/minutes.html.j2 +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/templates/desktop.html +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/templates/email_notification.html +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/templates/handoff/show-the-story.html.j2 +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/templates/handoff/theme.css.j2 +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/templates/mobile.html +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/templates/pair.html +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/templates/tmux.conf +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/templating.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/tooldefs/aws.yaml +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/tooldefs/docker.yaml +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/tooldefs/gcp.yaml +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/tooldefs/gh.yaml +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/tooldefs/git.yaml +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/tooldefs/gws.yaml +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/tooldefs/kubectl.yaml +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/tooldefs/npm.yaml +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/tooldefs/terraform.yaml +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/tooldefs/uv.yaml +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/tts/__init__.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/tts/audio.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/tts/base.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/tts/engines/__init__.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/tts/engines/chatterbox.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/tts/engines/kokoro.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/tts/engines/zonos.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/tts/kokoro_server.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/tts/local.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/tts/registry.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/tts_cli.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/tts_server.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/tunnels.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/tunnels_cli.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/usage_limit.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/utils/__init__.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/utils/chunker.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/utils/event_log.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/utils/file_io.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/utils/paths.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/utils/speech.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/utils/subprocess.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/validation.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/voice_status.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/wiki.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/wiki_audit.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/wiki_cli.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/worktree.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/worktree_registry.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/docs/decisions/obsidian-second-brain.md +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/docs/logo.png +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/docs/wiki/INDEX.md +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/docs/wiki/architecture.md +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/docs/wiki/briefing-mode.md +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/docs/wiki/communication/channels.md +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/docs/wiki/communication/hammerspoon.md +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/docs/wiki/communication/handoff.md +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/docs/wiki/concepts.md +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/docs/wiki/council.md +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/docs/wiki/deployment/remote-access.md +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/docs/wiki/deployment/remote-machines.md +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/docs/wiki/glossary.md +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/docs/wiki/integrations/gws-google-workspace-cli.md +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/docs/wiki/internals/damage-control.md +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/docs/wiki/internals/parallel-refactor.md +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/docs/wiki/internals/portal.md +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/docs/wiki/internals/shell-escaping.md +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/docs/wiki/internals/troubleshooting.md +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/docs/wiki/internals/window-collage.md +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/docs/wiki/quickstart.md +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/docs/wiki/research/briefing-mode-feasibility.md +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/docs/wiki/research/orchestration-transport-alternatives.md +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/docs/wiki/scheduling/scheduled-workloads.md +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/docs/wiki/security/damage-control-hardening.md +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/docs/wiki/security/pip-audit.md +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/docs/wiki/security/remote-access-hardening.md +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/docs/wiki/security/secrets.md +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/docs/wiki/services.md +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/docs/wiki/sessions/claude-code-auto-mode.md +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/docs/wiki/sessions/messaging.md +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/docs/wiki/sessions/prompt-routing.md +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/docs/wiki/sessions/window-sizing.md +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/docs/wiki/sessions/worktree-sessions.md +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/docs/wiki/usage-limit-recovery.md +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/docs/wiki/voice/shim-contract.md +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/docs/wiki/voice/stt-cloud.md +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/docs/wiki/voice/stt-self-hosted.md +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/docs/wiki/voice/tts-self-hosted.md +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/pyproject.toml +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/conftest.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/e2e/test_portal_ui.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/fixtures/sample_agentwire.yml +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/fixtures/sample_config.yaml +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/fixtures/sample_scheduler.yaml +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/integration/test_council_portal.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/integration/test_scheduler_board.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/integration/test_send_verified_tmux.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/integration/test_server_websockets.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/integration/test_worktree_cmd.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_announcements.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_build_agent_command.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_channels.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_chrome_tabs.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_cli_commands.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_cli_output.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_cli_smoke.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_config.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_config_cli.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_control_plane_protection.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_core_created_by_rooting.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_council_cli.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_council_inbox.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_council_minutes.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_council_state.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_council_view.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_damage_control_bypass.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_damage_control_hooks.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_damage_control_sync.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_dangling_worktrees.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_devices.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_diff_cli.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_doctor_task_migration.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_doctor_voice.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_event_log.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_file_io.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_guarded_launch_command.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_handoff_git_state.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_handoff_instructions.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_handoff_parser.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_handoff_renderer.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_history.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_hooks_install.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_idle_handler.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_idle_nag.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_inbox.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_init_command.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_install_parity.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_limits_tick_isolation.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_locking.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_mcp_server.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_mcp_tools_args.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_msg_cli.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_notify_cli.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_onboarding_reinit.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_palette_cli.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_pip_environment.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_portal_api.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_posture_default.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_project_config.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_prompt_router.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_push.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_rebuild_guard.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_repo_cli.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_roles.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_routes_snapshot.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_safety_commands.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_safety_disabled_rules.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_safety_escape_hatch.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_safety_heal.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_safety_kill_switch.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_scheduler.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_scheduler_parsing.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_scheduler_zombie.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_scratchpad.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_security.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_server_async.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_server_pure.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_services.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_session_context.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_session_created_by_env.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_session_ready.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_shared_dir_guard.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_shim_selfheal.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_skill_install.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_speech_tags.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_ssh.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_stt_backend.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_stt_cloud.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_stt_engine.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_task_cli.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_tasks.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_tasks_cli.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_templating.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_terminal_resize.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_tmux_template.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_tts_engine_resolution.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_tts_local.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_tunnels_probe.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_unattended_env_isolation.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_usage_limit.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_validation.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_voice_status.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_wiki.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_wiki_audit.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_window_cycling_binding.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_worktree.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_worktree_branch_cleanup.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_worktree_layout.py +0 -0
- {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_worktree_registry.py +0 -0
|
@@ -6679,6 +6679,102 @@ body.sidebar-pinned { --hud-left: var(--sidebar-width); }
|
|
|
6679
6679
|
text-overflow: ellipsis;
|
|
6680
6680
|
}
|
|
6681
6681
|
|
|
6682
|
+
/* --- per-card ⋯ actions menu (#792) --- the button rides the header row next
|
|
6683
|
+
to the name (flex 0 0 auto so it never steals name width), stays out of the
|
|
6684
|
+
way at rest (opacity 0), and fades in on card hover or while its menu is
|
|
6685
|
+
open. Wired only for live, non-self cards in the HUD (topology-render.js). */
|
|
6686
|
+
.topology-card-menu-btn {
|
|
6687
|
+
flex: 0 0 auto;
|
|
6688
|
+
width: 18px;
|
|
6689
|
+
height: 18px;
|
|
6690
|
+
display: inline-flex;
|
|
6691
|
+
align-items: center;
|
|
6692
|
+
justify-content: center;
|
|
6693
|
+
margin-left: 2px;
|
|
6694
|
+
padding: 0;
|
|
6695
|
+
border: none;
|
|
6696
|
+
border-radius: 4px;
|
|
6697
|
+
background: transparent;
|
|
6698
|
+
color: var(--text-muted);
|
|
6699
|
+
font-size: 15px;
|
|
6700
|
+
line-height: 1;
|
|
6701
|
+
cursor: pointer;
|
|
6702
|
+
opacity: 0;
|
|
6703
|
+
transition: opacity 0.12s ease, color 0.12s ease, background 0.12s ease;
|
|
6704
|
+
}
|
|
6705
|
+
|
|
6706
|
+
.topology-card:hover .topology-card-menu-btn,
|
|
6707
|
+
.topology-card-menu-btn.is-open {
|
|
6708
|
+
opacity: 0.75;
|
|
6709
|
+
}
|
|
6710
|
+
|
|
6711
|
+
.topology-card-menu-btn:hover,
|
|
6712
|
+
.topology-card-menu-btn.is-open {
|
|
6713
|
+
opacity: 1;
|
|
6714
|
+
color: var(--text);
|
|
6715
|
+
background: var(--hover);
|
|
6716
|
+
}
|
|
6717
|
+
|
|
6718
|
+
/* Popover positioned `fixed` (top/left set inline in JS from the ⋯ button's
|
|
6719
|
+
rect) and portaled to <body> (topology-render.js) so it escapes both the
|
|
6720
|
+
HUD canvas's `overflow:auto` clip AND the drawer's backdrop-filter/transform
|
|
6721
|
+
containing block — a collapsed bottom-row card's menu must never render
|
|
6722
|
+
"inside the fold". z above the drawer (9001) + sidebar tab. */
|
|
6723
|
+
.topology-card-menu {
|
|
6724
|
+
position: fixed;
|
|
6725
|
+
z-index: 9050;
|
|
6726
|
+
min-width: 136px;
|
|
6727
|
+
display: flex;
|
|
6728
|
+
flex-direction: column;
|
|
6729
|
+
gap: 1px;
|
|
6730
|
+
padding: 4px;
|
|
6731
|
+
border-radius: 8px;
|
|
6732
|
+
border: 1px solid var(--chrome-border);
|
|
6733
|
+
background: var(--chrome);
|
|
6734
|
+
box-shadow: 0 8px 24px rgba(0, 0, 0, 0.4);
|
|
6735
|
+
}
|
|
6736
|
+
|
|
6737
|
+
.topology-card-menu-item {
|
|
6738
|
+
display: flex;
|
|
6739
|
+
align-items: center;
|
|
6740
|
+
gap: 8px;
|
|
6741
|
+
padding: 6px 8px;
|
|
6742
|
+
border: none;
|
|
6743
|
+
border-radius: 5px;
|
|
6744
|
+
background: transparent;
|
|
6745
|
+
color: var(--text);
|
|
6746
|
+
font-size: 12px;
|
|
6747
|
+
font-family: inherit;
|
|
6748
|
+
text-align: left;
|
|
6749
|
+
white-space: nowrap;
|
|
6750
|
+
cursor: pointer;
|
|
6751
|
+
transition: background 0.12s ease;
|
|
6752
|
+
}
|
|
6753
|
+
|
|
6754
|
+
.topology-card-menu-item:hover {
|
|
6755
|
+
background: var(--hover);
|
|
6756
|
+
}
|
|
6757
|
+
|
|
6758
|
+
.topology-card-menu-icon {
|
|
6759
|
+
flex: 0 0 14px;
|
|
6760
|
+
text-align: center;
|
|
6761
|
+
opacity: 0.8;
|
|
6762
|
+
}
|
|
6763
|
+
|
|
6764
|
+
.topology-card-menu-item--danger {
|
|
6765
|
+
color: var(--error);
|
|
6766
|
+
}
|
|
6767
|
+
|
|
6768
|
+
.topology-card-menu-item--danger:hover,
|
|
6769
|
+
.topology-card-menu-item--danger.is-armed {
|
|
6770
|
+
background: color-mix(in srgb, var(--error) 14%, transparent);
|
|
6771
|
+
}
|
|
6772
|
+
|
|
6773
|
+
.topology-card-menu-item--danger.is-armed {
|
|
6774
|
+
justify-content: center;
|
|
6775
|
+
font-weight: 600;
|
|
6776
|
+
}
|
|
6777
|
+
|
|
6682
6778
|
/* flow (processing/generating/playing) — family-tinted "alive" treatment */
|
|
6683
6779
|
.topology-card--flow .topology-status-dot {
|
|
6684
6780
|
background: var(--card-tint, var(--lineage-tint-1));
|
|
@@ -6832,16 +6928,17 @@ body.sidebar-pinned { --hud-left: var(--sidebar-width); }
|
|
|
6832
6928
|
}
|
|
6833
6929
|
|
|
6834
6930
|
.topology-view--shade .topology-card {
|
|
6835
|
-
flex: 0 0
|
|
6836
|
-
max-width:
|
|
6931
|
+
flex: 0 0 176px;
|
|
6932
|
+
max-width: 176px;
|
|
6837
6933
|
padding: 6px 8px;
|
|
6838
6934
|
gap: 4px;
|
|
6839
6935
|
}
|
|
6840
6936
|
|
|
6841
|
-
/*
|
|
6937
|
+
/* Even widened (176px, #792), a shade card can't fit the session name AND the
|
|
6842
6938
|
role word — "ORCHESTRATOR" (a non-shrinking chip) starves the name to an
|
|
6843
|
-
"age…" ellipsis
|
|
6844
|
-
|
|
6939
|
+
"age…" ellipsis, and the extra room now goes to the un-truncated child
|
|
6940
|
+
branch name + the ⋯ menu. The name is the identifier that matters, so it
|
|
6941
|
+
takes the row; role still shows on the expanded card + the standalone
|
|
6845
6942
|
workspace window (non-shade), where there's room. */
|
|
6846
6943
|
.topology-view--shade .topology-role-chip {
|
|
6847
6944
|
display: none;
|
|
@@ -6852,15 +6949,15 @@ body.sidebar-pinned { --hud-left: var(--sidebar-width); }
|
|
|
6852
6949
|
root, so give its name + mic a little more room than a plain 128px card.
|
|
6853
6950
|
Same two-class specificity trick as the expanded-card override below. */
|
|
6854
6951
|
.topology-view--shade .topology-card--self {
|
|
6855
|
-
flex: 0 0
|
|
6856
|
-
max-width:
|
|
6952
|
+
flex: 0 0 208px;
|
|
6953
|
+
max-width: 208px;
|
|
6857
6954
|
}
|
|
6858
6955
|
|
|
6859
|
-
/* An expanded (mini-terminal open) card must win over the fixed
|
|
6956
|
+
/* An expanded (mini-terminal open) card must win over the fixed 176px shade
|
|
6860
6957
|
card width above — `.topology-view--shade .topology-card` has two class
|
|
6861
6958
|
selectors to `.topology-card--expanded`'s one, so without this override
|
|
6862
6959
|
the higher-specificity shade rule would keep clamping an open mini-terminal
|
|
6863
|
-
to
|
|
6960
|
+
to 176px regardless. Narrow-first: this is still sized for the owner's
|
|
6864
6961
|
~1/3-width portal, not a full desktop canvas. */
|
|
6865
6962
|
.topology-view--shade .topology-card--expanded {
|
|
6866
6963
|
flex: 0 0 340px;
|
|
@@ -45,6 +45,11 @@ const COMMANDS = [
|
|
|
45
45
|
{ id: 'new-session', icon: '▶', label: 'New session', keywords: 'create new session start spawn run project', run: () => setView('new-session') },
|
|
46
46
|
{ id: 'worktree', icon: '⎇', label: 'New worktree', keywords: 'worktree branch quicktask task feat fix base', run: () => setView('worktree') },
|
|
47
47
|
{ id: 'open-session', icon: '👁', label: 'Open session', keywords: 'open attach connect existing session', run: () => setView('open-session') },
|
|
48
|
+
{ id: 'show-all-sessions', icon: '⧉', label: 'Show all sessions', keywords: 'hud session topology tree map lineage parent child master overview show all every global peek', run: async () => {
|
|
49
|
+
closeCommandPalette();
|
|
50
|
+
const { hudController } = await import('./session-hud-controller.js');
|
|
51
|
+
hudController.showAll();
|
|
52
|
+
} },
|
|
48
53
|
{ id: 'collage', icon: '▦', label: 'Window collage', keywords: 'collage cascade grid windows overview show all tile mission', run: async () => {
|
|
49
54
|
closeCommandPalette();
|
|
50
55
|
const { collage } = await import('./collage.js');
|
|
@@ -267,7 +267,7 @@ async function init() {
|
|
|
267
267
|
// Scratch pad drawer (Alt+N, right-edge handle, selection capture)
|
|
268
268
|
scratchpad.init();
|
|
269
269
|
|
|
270
|
-
// Session HUD drawer (Alt+
|
|
270
|
+
// Session HUD drawer (Alt+P, top-center handle) — #776 chrome, #777 shade
|
|
271
271
|
// layout. #778's controller decides what renders (global tree vs
|
|
272
272
|
// re-rooted onto the focused session) and mounts TopologyView itself.
|
|
273
273
|
sessionHud.init();
|
|
@@ -50,6 +50,7 @@ import { subtreeOf } from './lineage.js';
|
|
|
50
50
|
import { mountCardTerminal, mountSelfMic } from './card-terminal.js';
|
|
51
51
|
import { sessionHud } from './session-hud.js';
|
|
52
52
|
import { apiFetch } from './api.js';
|
|
53
|
+
import { normalizeMachine } from './session-id.js';
|
|
53
54
|
import { toastSuccess, toastError } from './toast.js';
|
|
54
55
|
|
|
55
56
|
const GHOST_POLL_MS = 20000;
|
|
@@ -60,6 +61,9 @@ class HudController {
|
|
|
60
61
|
this._resolveWindowSession = null;
|
|
61
62
|
/** @type {string|null} focused session name, or null = global tree */
|
|
62
63
|
this._contextSession = null;
|
|
64
|
+
/** @type {boolean} "master" mode (showAll) — pin the global tree and
|
|
65
|
+
* ignore focus re-rooting until the drawer is closed. */
|
|
66
|
+
this._global = false;
|
|
63
67
|
/** @type {string|null} window id backing _contextSession, for window_unregistered matching */
|
|
64
68
|
this._contextWindowId = null;
|
|
65
69
|
/** @type {Array<object>} pseudo-session records for orphaned worktrees, refreshed via polling */
|
|
@@ -82,6 +86,8 @@ class HudController {
|
|
|
82
86
|
onSelfMount: (name, session, cardEl) => mountSelfMic(name, session, cardEl),
|
|
83
87
|
onGhostCleanup: (name, session) => this._cleanupGhost(name, session),
|
|
84
88
|
onGhostAdopt: (name, session) => this._adoptGhost(name, session),
|
|
89
|
+
onCardOpen: (name, session) => this._openSession(name, session),
|
|
90
|
+
onCardKill: (name, session) => this._killSession(name, session),
|
|
85
91
|
});
|
|
86
92
|
|
|
87
93
|
// Seed from whatever's already focused when the HUD first mounts,
|
|
@@ -95,6 +101,10 @@ class HudController {
|
|
|
95
101
|
this._fetchGhosts();
|
|
96
102
|
this._ghostTimer = setInterval(() => this._fetchGhosts(), GHOST_POLL_MS);
|
|
97
103
|
|
|
104
|
+
// Closing the drawer exits "master" mode, so the next Alt+P open is the
|
|
105
|
+
// normal context-following view again.
|
|
106
|
+
sessionHud.onClose(() => { this._global = false; });
|
|
107
|
+
|
|
98
108
|
desktop.on('active_window_changed', ({ id }) => this._applyFocus(id));
|
|
99
109
|
// Closing the focused session's own window (with nothing else taking
|
|
100
110
|
// focus) falls back to the global tree, rather than leaving the HUD
|
|
@@ -109,6 +119,7 @@ class HudController {
|
|
|
109
119
|
}
|
|
110
120
|
|
|
111
121
|
_applyFocus(id) {
|
|
122
|
+
if (this._global) return; // master mode pins the global tree
|
|
112
123
|
const session = this._resolveWindowSession(id);
|
|
113
124
|
if (!session || session === this._contextSession) return;
|
|
114
125
|
this._contextSession = session;
|
|
@@ -116,6 +127,22 @@ class HudController {
|
|
|
116
127
|
this._render();
|
|
117
128
|
}
|
|
118
129
|
|
|
130
|
+
/**
|
|
131
|
+
* "Master" view — open the HUD showing the full session tree (every family,
|
|
132
|
+
* not the focused session's subtree) and pin it there: focus changes no
|
|
133
|
+
* longer re-root until the drawer closes. Entry points are the Sessions
|
|
134
|
+
* sidebar-header icon and the "Show all sessions" command-palette action
|
|
135
|
+
* (no hotkey — the plain Alt+P peek is the context-following view). Idempotent.
|
|
136
|
+
*/
|
|
137
|
+
showAll() {
|
|
138
|
+
this._global = true;
|
|
139
|
+
this._contextSession = null;
|
|
140
|
+
this._contextWindowId = null;
|
|
141
|
+
if (sessionHud.segment !== 'sessions') sessionHud.setSegment('sessions');
|
|
142
|
+
if (!sessionHud.open) sessionHud.toggle(true);
|
|
143
|
+
this._render();
|
|
144
|
+
}
|
|
145
|
+
|
|
119
146
|
_render() {
|
|
120
147
|
if (!this._view) return;
|
|
121
148
|
const sessions = getAllSessions();
|
|
@@ -144,6 +171,36 @@ class HudController {
|
|
|
144
171
|
};
|
|
145
172
|
}
|
|
146
173
|
|
|
174
|
+
// ⋯ menu "Open window" — pop the session into its own full terminal window.
|
|
175
|
+
// Dynamic-imports desktop.js for the same reason card-terminal.js does: it's
|
|
176
|
+
// the module that boots this controller, so a static import would be circular.
|
|
177
|
+
async _openSession(name, session) {
|
|
178
|
+
try {
|
|
179
|
+
const { openSessionTerminal } = await import('./desktop.js');
|
|
180
|
+
openSessionTerminal(name, 'terminal', normalizeMachine(session?.machine));
|
|
181
|
+
} catch (e) {
|
|
182
|
+
toastError(`Couldn't open ${name}: ${e.message}`);
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
// ⋯ menu "Kill session" — the two-step confirm already happened in-menu
|
|
187
|
+
// (topology-render.js), so this fires straight through. DELETE /api/sessions
|
|
188
|
+
// is the same thin `agentwire kill` wrapper the sidebar close button uses; the
|
|
189
|
+
// resulting lifecycle push re-renders the tree without this card.
|
|
190
|
+
async _killSession(name, session) {
|
|
191
|
+
try {
|
|
192
|
+
const res = await apiFetch(`/api/sessions/${encodeURIComponent(name)}`, { method: 'DELETE' });
|
|
193
|
+
if (!res.ok) {
|
|
194
|
+
const reason = await res.text().catch(() => '') || `HTTP ${res.status}`;
|
|
195
|
+
toastError(`Kill failed for ${name}: ${reason}`);
|
|
196
|
+
return;
|
|
197
|
+
}
|
|
198
|
+
toastSuccess(`Killed ${name}`);
|
|
199
|
+
} catch (e) {
|
|
200
|
+
toastError(`Kill failed for ${name}: ${e.message}`);
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
|
|
147
204
|
// Ghosts (#781) aren't sessions — no WS push tells us when a worktree dir
|
|
148
205
|
// disappears or a dead one reappears — so this is a plain poll, refreshed
|
|
149
206
|
// eagerly right after an action instead of waiting out the interval.
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
* fills with TopologyView. Mirrors scratchpad.js's create-once drawer
|
|
11
11
|
* lifecycle (`.open` class, keyboard toggle, teardown).
|
|
12
12
|
*
|
|
13
|
-
* Toggle: Alt+
|
|
13
|
+
* Toggle: Alt+P ("peek") or the handle. Mutually exclusive with the left sidebar and
|
|
14
14
|
* the right scratchpad drawer — mirrors their existing coordination
|
|
15
15
|
* (sidebar.js:72): opening the HUD closes both, and opening either of them
|
|
16
16
|
* closes the HUD.
|
|
@@ -60,19 +60,30 @@ class SessionHud {
|
|
|
60
60
|
/** @type {'sessions'|'services'} currently active header segment */
|
|
61
61
|
this.segment = 'sessions';
|
|
62
62
|
this._servicesMounted = false;
|
|
63
|
+
/** @type {Array<() => void>} fired when the drawer closes — lets the
|
|
64
|
+
* controller drop its pinned "master/global" view (see showAll). */
|
|
65
|
+
this._closeListeners = [];
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/** Subscribe to drawer-close. */
|
|
69
|
+
onClose(fn) {
|
|
70
|
+
this._closeListeners.push(fn);
|
|
63
71
|
}
|
|
64
72
|
|
|
65
73
|
init() {
|
|
66
74
|
this._buildDrawer();
|
|
67
75
|
|
|
68
|
-
// Alt+
|
|
69
|
-
//
|
|
70
|
-
//
|
|
71
|
-
//
|
|
72
|
-
//
|
|
73
|
-
//
|
|
76
|
+
// Alt+P ("peek") toggles the drawer. Moved off Alt+T once Claude Code
|
|
77
|
+
// claimed Option+T for toggle-thinking — our capture-phase handler would
|
|
78
|
+
// otherwise swallow it before it reached a session running Claude Code.
|
|
79
|
+
// Capture phase + stopPropagation so xterm never sees the keystroke —
|
|
80
|
+
// mirrors scratchpad.js's Alt+N binding. e.code (not e.key):
|
|
81
|
+
// physical-key detection, consistent with every other Alt combo in the
|
|
82
|
+
// portal. Option+P isn't a macOS dead key (it types a literal π rather
|
|
83
|
+
// than composing), so no suppressor arm is needed — same reasoning as
|
|
84
|
+
// the Alt+bracket window-cycle combo.
|
|
74
85
|
window.addEventListener('keydown', (e) => {
|
|
75
|
-
if (e.altKey && !e.metaKey && !e.ctrlKey && e.code === '
|
|
86
|
+
if (e.altKey && !e.metaKey && !e.ctrlKey && e.code === 'KeyP') {
|
|
76
87
|
e.preventDefault();
|
|
77
88
|
e.stopPropagation();
|
|
78
89
|
if (e.repeat) return;
|
|
@@ -109,7 +120,7 @@ class SessionHud {
|
|
|
109
120
|
|
|
110
121
|
const handle = document.createElement('button');
|
|
111
122
|
handle.className = 'session-hud-handle';
|
|
112
|
-
handle.title = 'Session HUD (Alt+
|
|
123
|
+
handle.title = 'Session HUD (Alt+P)';
|
|
113
124
|
handle.innerHTML = '<span class="session-hud-grip" aria-hidden="true"></span>';
|
|
114
125
|
document.body.appendChild(handle);
|
|
115
126
|
this.handle = handle;
|
|
@@ -292,6 +303,7 @@ class SessionHud {
|
|
|
292
303
|
this.open = false;
|
|
293
304
|
this.drawer.classList.remove('open');
|
|
294
305
|
this.handle.classList.remove('drawer-open');
|
|
306
|
+
this._closeListeners.forEach((fn) => fn());
|
|
295
307
|
}
|
|
296
308
|
}
|
|
297
309
|
}
|
|
@@ -60,7 +60,7 @@ export const SHORTCUT_GROUPS = [
|
|
|
60
60
|
title: 'Panels',
|
|
61
61
|
items: [
|
|
62
62
|
{ combo: ['Alt', 'N'], desc: 'Toggle the scratchpad drawer', where: 'scratchpad.js' },
|
|
63
|
-
{ combo: ['Alt', '
|
|
63
|
+
{ combo: ['Alt', 'P'], desc: 'Toggle the Session HUD (peek)', where: 'session-hud.js' },
|
|
64
64
|
],
|
|
65
65
|
},
|
|
66
66
|
{
|
|
@@ -82,6 +82,7 @@ export const FEATURE_TOUR = [
|
|
|
82
82
|
{ icon: '🏛', name: 'Council', desc: 'Ask one question, get six lenses (brain, conscience, …) deliberating in parallel. Command palette → Ask council.' },
|
|
83
83
|
{ icon: '🎙', name: 'Push-to-talk', desc: 'Hold Ctrl/⌘+Space to talk to a session. Or open /mobile to push-to-talk from your phone.' },
|
|
84
84
|
{ icon: '▦', name: 'Window collage', desc: 'F3 fans every window into a grid — click one to dive in. Great for juggling many sessions.' },
|
|
85
|
+
{ icon: '⧉', name: 'Session HUD', desc: 'Alt+P peeks a live map of the session you’re in and its children. "Show all sessions" (command palette, or the Sessions panel ⧉) opens the full tree — every session at once.' },
|
|
85
86
|
{ icon: '💡', name: 'New idea', desc: 'Capture a thought and AgentWire spins up a project with an agent already working on it.' },
|
|
86
87
|
{ icon: '⎇', name: 'Worktrees', desc: 'Branch a session into an isolated git worktree for parallel work, from the palette or the Sessions panel.' },
|
|
87
88
|
{ icon: '📋', name: 'Scratchpad', desc: 'Alt+N opens a quick notes drawer that travels with you across sessions.' },
|
{agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/js/sidebar/sessions-section.js
RENAMED
|
@@ -321,6 +321,7 @@ async function fetchSessions() {
|
|
|
321
321
|
export const sessionsSection = {
|
|
322
322
|
title: 'Sessions',
|
|
323
323
|
actions: [
|
|
324
|
+
{ id: 'showall', label: '⧉', title: 'Show all sessions in the HUD' },
|
|
324
325
|
{ id: 'new', label: '+', title: 'New session' },
|
|
325
326
|
{ id: 'worktree', label: '⎇', title: 'New worktree session' },
|
|
326
327
|
],
|
|
@@ -339,6 +340,11 @@ export const sessionsSection = {
|
|
|
339
340
|
},
|
|
340
341
|
|
|
341
342
|
onAction(actionId, body) {
|
|
343
|
+
// Not a form toggle — pop the master Session HUD (all sessions).
|
|
344
|
+
if (actionId === 'showall') {
|
|
345
|
+
import('../session-hud-controller.js').then(({ hudController }) => hudController.showAll());
|
|
346
|
+
return;
|
|
347
|
+
}
|
|
342
348
|
if (this._formType === actionId) {
|
|
343
349
|
this._formType = null;
|
|
344
350
|
} else {
|