remo-cli 2.2.0rc4__tar.gz → 2.2.0rc5__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.
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/PKG-INFO +1 -1
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/frontend/src/api/client.ts +85 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/pyproject.toml +1 -1
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/uv.lock +1 -1
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/.claude/skills/speckit-analyze/SKILL.md +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/.claude/skills/speckit-checklist/SKILL.md +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/.claude/skills/speckit-clarify/SKILL.md +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/.claude/skills/speckit-constitution/SKILL.md +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/.claude/skills/speckit-converge/SKILL.md +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/.claude/skills/speckit-git-commit/SKILL.md +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/.claude/skills/speckit-git-feature/SKILL.md +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/.claude/skills/speckit-git-initialize/SKILL.md +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/.claude/skills/speckit-git-remote/SKILL.md +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/.claude/skills/speckit-git-validate/SKILL.md +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/.claude/skills/speckit-implement/SKILL.md +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/.claude/skills/speckit-plan/SKILL.md +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/.claude/skills/speckit-specify/SKILL.md +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/.claude/skills/speckit-tasks/SKILL.md +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/.claude/skills/speckit-taskstoissues/SKILL.md +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/.devcontainer/devcontainer.json +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/.dockerignore +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/.github/dependabot.yml +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/.github/workflows/ci.yml +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/.github/workflows/provision.yml +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/.github/workflows/release.yml +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/.github/workflows/smoke-test-cleanup.yml +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/.github/workflows/smoke-test.yml +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/.github/workflows/teardown.yml +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/.gitignore +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/.maverick/checkpoints/feature/implementation_complete.json +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/.maverick/checkpoints/feature/phase_${{ index }}_complete.json +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/.maverick/checkpoints/feature/validation_complete.json +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/.specify/extensions/.registry +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/.specify/extensions/git/README.md +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/.specify/extensions/git/commands/speckit.git.commit.md +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/.specify/extensions/git/commands/speckit.git.feature.md +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/.specify/extensions/git/commands/speckit.git.initialize.md +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/.specify/extensions/git/commands/speckit.git.remote.md +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/.specify/extensions/git/commands/speckit.git.validate.md +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/.specify/extensions/git/config-template.yml +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/.specify/extensions/git/extension.yml +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/.specify/extensions/git/git-config.yml +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/.specify/extensions/git/scripts/bash/auto-commit.sh +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/.specify/extensions/git/scripts/bash/create-new-feature.sh +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/.specify/extensions/git/scripts/bash/git-common.sh +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/.specify/extensions/git/scripts/bash/initialize-repo.sh +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/.specify/extensions/git/scripts/powershell/auto-commit.ps1 +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/.specify/extensions/git/scripts/powershell/create-new-feature.ps1 +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/.specify/extensions/git/scripts/powershell/git-common.ps1 +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/.specify/extensions/git/scripts/powershell/initialize-repo.ps1 +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/.specify/extensions.yml +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/.specify/feature.json +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/.specify/init-options.json +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/.specify/integration.json +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/.specify/integrations/claude.manifest.json +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/.specify/integrations/speckit.manifest.json +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/.specify/memory/constitution.md +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/.specify/scripts/bash/check-prerequisites.sh +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/.specify/scripts/bash/common.sh +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/.specify/scripts/bash/create-new-feature.sh +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/.specify/scripts/bash/setup-plan.sh +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/.specify/scripts/bash/setup-tasks.sh +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/.specify/scripts/bash/update-agent-context.sh +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/.specify/templates/agent-file-template.md +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/.specify/templates/checklist-template.md +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/.specify/templates/constitution-template.md +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/.specify/templates/plan-template.md +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/.specify/templates/spec-template.md +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/.specify/templates/tasks-template.md +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/.specify/workflows/speckit/workflow.yml +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/.specify/workflows/workflow-registry.json +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/AGENTS.md +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/CLAUDE.md +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/CONTRIBUTING.md +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/Dockerfile +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/LICENSE +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/README.md +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/ansible/.ansible-lint +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/ansible/README.md +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/ansible/ansible.cfg +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/ansible/aws_configure.yml +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/ansible/aws_resize.yml +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/ansible/aws_site.yml +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/ansible/aws_teardown.yml +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/ansible/group_vars/all.yml +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/ansible/group_vars/incus_containers.yml +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/ansible/group_vars/proxmox_containers.yml +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/ansible/hetzner_configure.yml +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/ansible/hetzner_provision.yml +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/ansible/hetzner_resize.yml +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/ansible/hetzner_site.yml +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/ansible/hetzner_teardown.yml +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/ansible/incus_bootstrap.yml +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/ansible/incus_configure.yml +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/ansible/incus_provision.yml +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/ansible/incus_resize.yml +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/ansible/incus_site.yml +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/ansible/incus_teardown.yml +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/ansible/inventory/hosts.yml +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/ansible/inventory/incus_containers.yml +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/ansible/proxmox_bootstrap.yml +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/ansible/proxmox_configure.yml +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/ansible/proxmox_provision.yml +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/ansible/proxmox_resize.yml +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/ansible/proxmox_site.yml +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/ansible/proxmox_teardown.yml +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/ansible/requirements.yml +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/ansible/roles/aws_server/defaults/main.yml +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/ansible/roles/aws_server/tasks/ebs.yml +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/ansible/roles/aws_server/tasks/ec2.yml +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/ansible/roles/aws_server/tasks/main.yml +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/ansible/roles/aws_server/tasks/patch_manager.yml +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/ansible/roles/aws_server/tasks/preflight.yml +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/ansible/roles/aws_server/tasks/security_group.yml +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/ansible/roles/deacon/defaults/main.yml +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/ansible/roles/deacon/tasks/main.yml +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/ansible/roles/devcontainers/tasks/main.yml +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/ansible/roles/docker/handlers/main.yml +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/ansible/roles/docker/tasks/main.yml +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/ansible/roles/fzf/tasks/main.yml +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/ansible/roles/github_cli/tasks/main.yml +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/ansible/roles/hetzner_server/defaults/main.yml +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/ansible/roles/hetzner_server/tasks/main.yml +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/ansible/roles/incus_bootstrap/defaults/main.yml +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/ansible/roles/incus_bootstrap/handlers/main.yml +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/ansible/roles/incus_bootstrap/tasks/main.yml +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/ansible/roles/incus_container/defaults/main.yml +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/ansible/roles/incus_container/handlers/main.yml +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/ansible/roles/incus_container/meta/main.yml +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/ansible/roles/incus_container/tasks/main.yml +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/ansible/roles/incus_container/tasks/preflight.yml +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/ansible/roles/incus_container_teardown/defaults/main.yml +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/ansible/roles/incus_container_teardown/meta/main.yml +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/ansible/roles/incus_container_teardown/tasks/main.yml +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/ansible/roles/nodejs/defaults/main.yml +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/ansible/roles/nodejs/tasks/main.yml +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/ansible/roles/proxmox_bootstrap/defaults/main.yml +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/ansible/roles/proxmox_bootstrap/meta/main.yml +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/ansible/roles/proxmox_bootstrap/tasks/main.yml +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/ansible/roles/proxmox_container/defaults/main.yml +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/ansible/roles/proxmox_container/handlers/main.yml +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/ansible/roles/proxmox_container/meta/main.yml +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/ansible/roles/proxmox_container/tasks/main.yml +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/ansible/roles/proxmox_container/tasks/preflight.yml +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/ansible/roles/proxmox_container_teardown/defaults/main.yml +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/ansible/roles/proxmox_container_teardown/meta/main.yml +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/ansible/roles/proxmox_container_teardown/tasks/main.yml +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/ansible/roles/user_setup/defaults/main.yml +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/ansible/roles/user_setup/tasks/main.yml +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/ansible/roles/user_setup/templates/devshell.sh.j2 +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/ansible/roles/user_setup/templates/project-launch.sh.j2 +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/ansible/roles/user_setup/templates/project-menu.sh.j2 +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/ansible/roles/user_setup/templates/remo-host.sh.j2 +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/ansible/roles/zellij/defaults/main.yml +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/ansible/roles/zellij/tasks/main.yml +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/ansible/roles/zellij/templates/config.kdl.j2 +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/ansible/roles/zellij/templates/layouts/minimal.kdl.j2 +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/ansible/tasks/configure_dev_tools.yml +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/docker/Dockerfile +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/docker/compose.example.yml +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/docker/entrypoint.sh +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/docs/aws.md +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/docs/hetzner.md +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/docs/incus.md +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/docs/install.sh +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/docs/proxmox.md +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/docs/remo-web-speckit-input.md +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/docs/remo-web.html +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/docs/web-session-interface.md +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/frontend/index.html +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/frontend/package-lock.json +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/frontend/package.json +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/frontend/public/README.md +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/frontend/public/dist__ghostty-vt.wasm +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/frontend/public/ghostty-vt.wasm +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/frontend/scripts/copy-ghostty-wasm.mjs +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/frontend/src/components/AppRoot.tsx +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/frontend/src/components/AppShell.css +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/frontend/src/components/AppShell.tsx +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/frontend/src/components/AwaitingAdoption.css +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/frontend/src/components/AwaitingAdoption.tsx +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/frontend/src/components/OfflineOverlay.css +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/frontend/src/components/OfflineOverlay.tsx +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/frontend/src/components/PairToSync.css +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/frontend/src/components/PairToSync.tsx +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/frontend/src/components/SessionRail.css +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/frontend/src/components/SessionRail.tsx +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/frontend/src/components/SettingsPage.css +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/frontend/src/components/SettingsPage.tsx +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/frontend/src/components/ShortcutsModal.css +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/frontend/src/components/ShortcutsModal.tsx +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/frontend/src/components/TerminalCard.css +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/frontend/src/components/TerminalCard.tsx +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/frontend/src/components/TopBar.css +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/frontend/src/components/TopBar.tsx +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/frontend/src/components/WorkspacePane.css +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/frontend/src/components/WorkspacePane.tsx +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/frontend/src/components/providerMeta.ts +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/frontend/src/components/railModel.ts +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/frontend/src/lib/clipboard.ts +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/frontend/src/main.tsx +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/frontend/src/state/discovery.ts +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/frontend/src/state/fonts.ts +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/frontend/src/state/health.ts +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/frontend/src/state/settings.ts +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/frontend/src/state/useConsoleKeyboard.ts +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/frontend/src/state/workspace.ts +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/frontend/src/terminal/.gitkeep +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/frontend/src/terminal/GhosttyRenderer.ts +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/frontend/src/terminal/RendererAdapter.ts +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/frontend/src/terminal/TerminalConnection.ts +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/frontend/src/terminal/XtermRenderer.ts +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/frontend/src/terminal/defaultRenderer.ts +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/frontend/src/theme/fonts.ts +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/frontend/src/theme/tokens.css +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/frontend/tsconfig.json +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/frontend/vite.config.ts +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/install.sh +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/maverick.yaml +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/playwright.config.ts +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/project-menu.sh +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/remo +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/run.sh +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/scripts/setup-aws-oidc.sh +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/specs/001-bootstrap-incus-host/checklists/requirements.md +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/specs/001-bootstrap-incus-host/checklists/validation.md +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/specs/001-bootstrap-incus-host/contracts/playbook-interface.yaml +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/specs/001-bootstrap-incus-host/contracts/role-interface.yaml +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/specs/001-bootstrap-incus-host/data-model.md +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/specs/001-bootstrap-incus-host/plan.md +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/specs/001-bootstrap-incus-host/quickstart.md +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/specs/001-bootstrap-incus-host/research.md +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/specs/001-bootstrap-incus-host/spec.md +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/specs/001-bootstrap-incus-host/tasks.md +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/specs/002-incus-container-support/checklists/requirements.md +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/specs/002-incus-container-support/contracts/playbook-interface.yaml +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/specs/002-incus-container-support/contracts/role-interface.yaml +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/specs/002-incus-container-support/data-model.md +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/specs/002-incus-container-support/plan.md +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/specs/002-incus-container-support/quickstart.md +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/specs/002-incus-container-support/research.md +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/specs/002-incus-container-support/spec.md +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/specs/002-incus-container-support/tasks.md +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/specs/003-python-cli-rewrite/checklists/requirements.md +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/specs/003-python-cli-rewrite/data-model.md +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/specs/003-python-cli-rewrite/plan.md +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/specs/003-python-cli-rewrite/quickstart.md +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/specs/003-python-cli-rewrite/research.md +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/specs/003-python-cli-rewrite/spec.md +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/specs/003-python-cli-rewrite/tasks.md +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/specs/004-proxmox-container-support/spec.md +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/specs/005-provider-snapshots/checklists/requirements.md +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/specs/005-provider-snapshots/contracts/cli-surface.md +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/specs/005-provider-snapshots/data-model.md +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/specs/005-provider-snapshots/plan.md +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/specs/005-provider-snapshots/quickstart.md +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/specs/005-provider-snapshots/research.md +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/specs/005-provider-snapshots/spec.md +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/specs/005-provider-snapshots/tasks.md +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/specs/010-web-session-interface/checklists/requirements.md +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/specs/010-web-session-interface/contracts/remo-host-protocol.md +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/specs/010-web-session-interface/contracts/rest-api.md +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/specs/010-web-session-interface/contracts/terminal-websocket.md +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/specs/010-web-session-interface/data-model.md +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/specs/010-web-session-interface/plan.md +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/specs/010-web-session-interface/quickstart.md +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/specs/010-web-session-interface/research.md +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/specs/010-web-session-interface/spec.md +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/specs/010-web-session-interface/tasks.md +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/specs/011-web-adopt/checklists/requirements.md +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/specs/011-web-adopt/contracts/cli-web-adopt.md +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/specs/011-web-adopt/contracts/setup-api.md +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/specs/011-web-adopt/data-model.md +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/specs/011-web-adopt/plan.md +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/specs/011-web-adopt/quickstart-results.md +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/specs/011-web-adopt/quickstart.md +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/specs/011-web-adopt/research.md +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/specs/011-web-adopt/spec.md +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/specs/011-web-adopt/tasks.md +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/specs/012-web-adopt-pairing/contracts/cli-web-adopt.md +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/specs/012-web-adopt-pairing/contracts/pairing-api.md +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/specs/012-web-adopt-pairing/contracts/setup-api.md +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/specs/012-web-adopt-pairing/data-model.md +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/specs/012-web-adopt-pairing/plan.md +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/specs/012-web-adopt-pairing/quickstart.md +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/specs/012-web-adopt-pairing/research.md +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/specs/012-web-adopt-pairing/spec.md +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/specs/012-web-adopt-pairing/tasks.md +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/src/remo_cli/__init__.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/src/remo_cli/__main__.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/src/remo_cli/cli/__init__.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/src/remo_cli/cli/cp.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/src/remo_cli/cli/main.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/src/remo_cli/cli/providers/__init__.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/src/remo_cli/cli/providers/aws.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/src/remo_cli/cli/providers/hetzner.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/src/remo_cli/cli/providers/incus.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/src/remo_cli/cli/providers/proxmox.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/src/remo_cli/cli/shell.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/src/remo_cli/cli/web.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/src/remo_cli/core/__init__.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/src/remo_cli/core/ansible_runner.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/src/remo_cli/core/completion.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/src/remo_cli/core/config.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/src/remo_cli/core/known_hosts.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/src/remo_cli/core/output.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/src/remo_cli/core/picker.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/src/remo_cli/core/remo_host_client.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/src/remo_cli/core/rsync.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/src/remo_cli/core/snapshot.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/src/remo_cli/core/ssh.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/src/remo_cli/core/validation.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/src/remo_cli/core/version.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/src/remo_cli/core/web_adopt.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/src/remo_cli/models/__init__.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/src/remo_cli/models/capability.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/src/remo_cli/models/discovery.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/src/remo_cli/models/host.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/src/remo_cli/models/session_target.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/src/remo_cli/models/snapshot.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/src/remo_cli/providers/__init__.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/src/remo_cli/providers/aws.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/src/remo_cli/providers/hetzner.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/src/remo_cli/providers/incus.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/src/remo_cli/providers/proxmox.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/src/remo_cli/web/__init__.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/src/remo_cli/web/api/__init__.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/src/remo_cli/web/api/hosts.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/src/remo_cli/web/api/pairing.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/src/remo_cli/web/api/setup.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/src/remo_cli/web/api/terminals.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/src/remo_cli/web/app.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/src/remo_cli/web/check.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/src/remo_cli/web/config.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/src/remo_cli/web/discovery.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/src/remo_cli/web/health.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/src/remo_cli/web/logging_config.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/src/remo_cli/web/models.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/src/remo_cli/web/operator_auth.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/src/remo_cli/web/pairing.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/src/remo_cli/web/ssh_master.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/src/remo_cli/web/state.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/src/remo_cli/web/terminal.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/src/remo_cli/web/terminal_registry.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/src/remo_cli/web/tokens.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/tests/__init__.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/tests/ansible/__init__.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/tests/ansible/test_remo_host_idempotency.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/tests/conftest.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/tests/e2e/fixtures.ts +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/tests/e2e/ghostty-shell-io.spec.ts +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/tests/e2e/ghostty-tui-compatibility.spec.ts +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/tests/e2e/keyboard-routing.spec.ts +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/tests/e2e/mobile.spec.ts +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/tests/e2e/reconnect.spec.ts +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/tests/e2e/workspace-layout.spec.ts +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/tests/image/__init__.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/tests/image/test_docker_image.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/tests/integration/__init__.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/tests/integration/_nine_terminal_fixture.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/tests/integration/orbstack-cloud-init.yml +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/tests/integration/orbstack.sh +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/tests/integration/test_nine_terminals.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/tests/integration/test_nine_terminals_soak.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/tests/integration/test_remo_host_e2e.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/tests/integration/test_security_rejections.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/tests/integration/test_terminal_attach.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/tests/integration/test_web_adopt_e2e.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/tests/integration/test_web_cli_parity.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/tests/perf/__init__.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/tests/perf/test_latency.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/tests/unit/__init__.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/tests/unit/cli/__init__.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/tests/unit/cli/providers/test_aws_snapshot.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/tests/unit/cli/providers/test_hetzner_snapshot.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/tests/unit/cli/providers/test_incus_snapshot.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/tests/unit/cli/providers/test_proxmox_snapshot.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/tests/unit/cli/test_cp.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/tests/unit/cli/test_main.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/tests/unit/cli/test_shell.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/tests/unit/cli/test_web_adopt_cmd.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/tests/unit/core/__init__.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/tests/unit/core/test_ansible_runner.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/tests/unit/core/test_config.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/tests/unit/core/test_known_hosts.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/tests/unit/core/test_output.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/tests/unit/core/test_picker.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/tests/unit/core/test_remo_host_client.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/tests/unit/core/test_rsync.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/tests/unit/core/test_snapshot.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/tests/unit/core/test_ssh.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/tests/unit/core/test_ssh_controlpath.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/tests/unit/core/test_ssh_identity_opts.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/tests/unit/core/test_validation.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/tests/unit/core/test_version.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/tests/unit/core/test_web_adopt_authorize.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/tests/unit/core/test_web_adopt_code.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/tests/unit/core/test_web_adopt_payload.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/tests/unit/core/test_web_adopt_trust.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/tests/unit/core/test_web_push.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/tests/unit/models/__init__.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/tests/unit/models/test_capability.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/tests/unit/models/test_discovery.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/tests/unit/models/test_session_target.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/tests/unit/providers/__init__.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/tests/unit/providers/test_aws_snapshot.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/tests/unit/providers/test_hetzner_snapshot.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/tests/unit/providers/test_incus_snapshot.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/tests/unit/providers/test_proxmox_devcontainer_runtime.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/tests/unit/providers/test_proxmox_snapshot.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/tests/unit/test_ansible_templates.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/tests/unit/test_host_model.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/tests/unit/web/__init__.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/tests/unit/web/_pairing_support.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/tests/unit/web/conftest.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/tests/unit/web/test_backpressure.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/tests/unit/web/test_check.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/tests/unit/web/test_csp.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/tests/unit/web/test_discovery.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/tests/unit/web/test_health_states.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/tests/unit/web/test_hosts_mapping.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/tests/unit/web/test_lazy_import.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/tests/unit/web/test_log_redaction.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/tests/unit/web/test_mint_gating.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/tests/unit/web/test_operator_auth.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/tests/unit/web/test_pairing.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/tests/unit/web/test_pairing_origin.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/tests/unit/web/test_setup_api.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/tests/unit/web/test_setup_auth.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/tests/unit/web/test_setup_dormancy.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/tests/unit/web/test_state.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/tests/unit/web/test_terminal_resize.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/tests/unit/web/test_terminals_api.py +0 -0
- {remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/tests/unit/web/test_tokens.py +0 -0
|
@@ -101,11 +101,82 @@ interface ErrorEnvelope {
|
|
|
101
101
|
error: TypedError;
|
|
102
102
|
}
|
|
103
103
|
|
|
104
|
+
// ---- Forward-auth (SSO proxy) re-authentication ----
|
|
105
|
+
//
|
|
106
|
+
// When remo-web is deployed behind a whole-app forward-auth proxy (Traefik
|
|
107
|
+
// ForwardAuth + an OIDC IdP such as Authentik — e.g. a Hola app), an
|
|
108
|
+
// unauthenticated or expired-session request is answered with a 302 to the
|
|
109
|
+
// cross-origin IdP (`https://auth.example.com/application/o/authorize/...`). A
|
|
110
|
+
// same-origin `fetch()` cannot complete that SSO round-trip, and remo-web's
|
|
111
|
+
// strict `connect-src 'self'` CSP blocks following the redirect at all — so the
|
|
112
|
+
// only way to restore the session is a TOP-LEVEL navigation, which re-triggers
|
|
113
|
+
// the proxy's SSO flow (the browser CAN follow it through the IdP and back).
|
|
114
|
+
//
|
|
115
|
+
// `request()` uses `redirect: "manual"` so such a redirect surfaces as an opaque
|
|
116
|
+
// response (`response.type === "opaqueredirect"`, status 0) instead of throwing
|
|
117
|
+
// on the blocked cross-origin follow; we then reload the document to re-auth. A
|
|
118
|
+
// sessionStorage cooldown prevents a reload loop when auth genuinely can't
|
|
119
|
+
// complete. With no proxy (REMO_WEB_OPERATOR_AUTH=none) there are no redirects,
|
|
120
|
+
// so this path never fires.
|
|
121
|
+
|
|
122
|
+
const _REAUTH_KEY = "remo:last-reauth";
|
|
123
|
+
const _REAUTH_COOLDOWN_MS = 10_000;
|
|
124
|
+
|
|
125
|
+
/**
|
|
126
|
+
* Handle a forward-auth challenge on an XHR by re-authenticating through a
|
|
127
|
+
* top-level navigation. Never returns normally: it either navigates the whole
|
|
128
|
+
* document (throwing to halt the caller before the navigation lands) or, if we
|
|
129
|
+
* already tried to re-auth within the cooldown, throws a clear `auth_required`
|
|
130
|
+
* ApiError instead of looping.
|
|
131
|
+
*/
|
|
132
|
+
function reauthenticate(): never {
|
|
133
|
+
let last = 0;
|
|
134
|
+
try {
|
|
135
|
+
last = Number(sessionStorage.getItem(_REAUTH_KEY) ?? 0) || 0;
|
|
136
|
+
} catch {
|
|
137
|
+
last = 0;
|
|
138
|
+
}
|
|
139
|
+
const now = Date.now();
|
|
140
|
+
if (now - last < _REAUTH_COOLDOWN_MS) {
|
|
141
|
+
// We just reloaded to re-auth and are being challenged again — the SSO
|
|
142
|
+
// round-trip isn't restoring a usable session. Stop reloading; surface a
|
|
143
|
+
// clear error rather than looping.
|
|
144
|
+
throw new ApiError({
|
|
145
|
+
code: "auth_required",
|
|
146
|
+
message: "Sign-in is required, but the access proxy did not restore a session.",
|
|
147
|
+
retryable: false,
|
|
148
|
+
remediation:
|
|
149
|
+
"Sign in through your access proxy and reload. If this repeats, the " +
|
|
150
|
+
"forward-auth proxy may be misconfigured (its session cookie is not reaching this app).",
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
try {
|
|
154
|
+
sessionStorage.setItem(_REAUTH_KEY, String(now));
|
|
155
|
+
} catch {
|
|
156
|
+
// sessionStorage unavailable — navigate anyway.
|
|
157
|
+
}
|
|
158
|
+
// A full document request re-runs the proxy's SSO redirect chain (IdP round
|
|
159
|
+
// trip), unlike a fetch which cannot. The SPA reloads authenticated and
|
|
160
|
+
// subsequent XHRs return 200.
|
|
161
|
+
window.location.assign(window.location.href);
|
|
162
|
+
// location.assign() schedules the navigation asynchronously and lets sync
|
|
163
|
+
// code keep running; throw so the caller never treats this as data.
|
|
164
|
+
throw new ApiError({
|
|
165
|
+
code: "auth_challenge",
|
|
166
|
+
message: "Re-authenticating…",
|
|
167
|
+
retryable: false,
|
|
168
|
+
remediation: "",
|
|
169
|
+
});
|
|
170
|
+
}
|
|
171
|
+
|
|
104
172
|
async function request<T>(path: string, init?: RequestInit): Promise<T> {
|
|
105
173
|
let response: Response;
|
|
106
174
|
try {
|
|
107
175
|
response = await fetch(path, {
|
|
108
176
|
...init,
|
|
177
|
+
// Catch a forward-auth proxy's cross-origin SSO redirect as an opaque
|
|
178
|
+
// response instead of a thrown CSP-blocked follow (see reauthenticate()).
|
|
179
|
+
redirect: "manual",
|
|
109
180
|
headers: {
|
|
110
181
|
"Content-Type": "application/json",
|
|
111
182
|
...(init?.headers ?? {}),
|
|
@@ -123,6 +194,14 @@ async function request<T>(path: string, init?: RequestInit): Promise<T> {
|
|
|
123
194
|
});
|
|
124
195
|
}
|
|
125
196
|
|
|
197
|
+
// A forward-auth session lapse: the proxy answered with a cross-origin 3xx,
|
|
198
|
+
// now an opaque redirect. Re-authenticate via a top-level navigation rather
|
|
199
|
+
// than surfacing a bogus "network_error"/CSP failure. The API itself never
|
|
200
|
+
// issues same-origin redirects, so this is unambiguously a proxy challenge.
|
|
201
|
+
if (response.type === "opaqueredirect") {
|
|
202
|
+
reauthenticate();
|
|
203
|
+
}
|
|
204
|
+
|
|
126
205
|
if (!response.ok) {
|
|
127
206
|
let envelope: ErrorEnvelope | undefined;
|
|
128
207
|
try {
|
|
@@ -355,6 +434,12 @@ export async function closeTerminal(terminalId: string): Promise<void> {
|
|
|
355
434
|
*
|
|
356
435
|
* This function only constructs and returns the socket; connection-lifecycle
|
|
357
436
|
* and control-frame handling live in `terminal/TerminalConnection.ts`.
|
|
437
|
+
*
|
|
438
|
+
* Forward-auth note: a raw WebSocket upgrade cannot itself distinguish a proxy
|
|
439
|
+
* SSO redirect/401 from an ordinary failure. It does not need to — every attach
|
|
440
|
+
* (and reconnect) first calls `createTerminal()`, which goes through
|
|
441
|
+
* `request()` and so triggers the top-level SSO re-auth (see `reauthenticate`)
|
|
442
|
+
* whenever the session has lapsed, before/at the point the socket is opened.
|
|
358
443
|
*/
|
|
359
444
|
export function openTerminalSocket(terminalId: string, token: string): WebSocket {
|
|
360
445
|
const wsProtocol = window.location.protocol === "https:" ? "wss:" : "ws:";
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/.maverick/checkpoints/feature/implementation_complete.json
RENAMED
|
File without changes
|
|
File without changes
|
{remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/.maverick/checkpoints/feature/validation_complete.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/.specify/extensions/git/commands/speckit.git.commit.md
RENAMED
|
File without changes
|
{remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/.specify/extensions/git/commands/speckit.git.feature.md
RENAMED
|
File without changes
|
{remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/.specify/extensions/git/commands/speckit.git.initialize.md
RENAMED
|
File without changes
|
{remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/.specify/extensions/git/commands/speckit.git.remote.md
RENAMED
|
File without changes
|
{remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/.specify/extensions/git/commands/speckit.git.validate.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/.specify/extensions/git/scripts/bash/create-new-feature.sh
RENAMED
|
File without changes
|
|
File without changes
|
{remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/.specify/extensions/git/scripts/bash/initialize-repo.sh
RENAMED
|
File without changes
|
{remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/.specify/extensions/git/scripts/powershell/auto-commit.ps1
RENAMED
|
File without changes
|
|
File without changes
|
{remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/.specify/extensions/git/scripts/powershell/git-common.ps1
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/ansible/roles/incus_container_teardown/defaults/main.yml
RENAMED
|
File without changes
|
{remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/ansible/roles/incus_container_teardown/meta/main.yml
RENAMED
|
File without changes
|
{remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/ansible/roles/incus_container_teardown/tasks/main.yml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/ansible/roles/proxmox_container_teardown/defaults/main.yml
RENAMED
|
File without changes
|
{remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/ansible/roles/proxmox_container_teardown/meta/main.yml
RENAMED
|
File without changes
|
{remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/ansible/roles/proxmox_container_teardown/tasks/main.yml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/ansible/roles/user_setup/templates/project-launch.sh.j2
RENAMED
|
File without changes
|
{remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/ansible/roles/user_setup/templates/project-menu.sh.j2
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{remo_cli-2.2.0rc4 → remo_cli-2.2.0rc5}/ansible/roles/zellij/templates/layouts/minimal.kdl.j2
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|