redeploy 0.2.62__tar.gz → 0.2.63__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.
- {redeploy-0.2.62 → redeploy-0.2.63}/PKG-INFO +6 -6
- {redeploy-0.2.62 → redeploy-0.2.63}/README.md +5 -5
- {redeploy-0.2.62 → redeploy-0.2.63}/pyproject.toml +1 -1
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/__init__.py +1 -1
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/analyze/spec_analyzer.py +7 -3
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/apply/handlers.py +1 -1
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/cli/commands/lint.py +1 -1
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/cli/commands/plan_apply.py +1 -1
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy.egg-info/PKG-INFO +6 -6
- {redeploy-0.2.62 → redeploy-0.2.63}/tests/test_prompt_llm.py +13 -4
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/analyze/__init__.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/analyze/checkers/__init__.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/apply/__init__.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/apply/exceptions.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/apply/executor.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/apply/progress.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/apply/rollback.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/apply/state.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/apply/state_apply.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/apply/utils/__init__.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/apply/utils/run_container_build.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/audit.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/blueprint/__init__.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/blueprint/extractor.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/blueprint/generators/__init__.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/blueprint/generators/docker_compose.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/blueprint/generators/migration.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/blueprint/sources/__init__.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/blueprint/sources/compose.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/blueprint/sources/hardware.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/blueprint/sources/infra.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/blueprint/sources/migration.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/cli/__init__.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/cli/commands/__init__.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/cli/commands/audit.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/cli/commands/blueprint.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/cli/commands/bump_fix.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/cli/commands/detect.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/cli/commands/device_map.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/cli/commands/device_map_renderers.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/cli/commands/devices.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/cli/commands/diagnose.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/cli/commands/diff.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/cli/commands/exec_.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/cli/commands/export.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/cli/commands/hardware.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/cli/commands/import_.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/cli/commands/init.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/cli/commands/inspect.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/cli/commands/mcp_cmd.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/cli/commands/patterns.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/cli/commands/plugin.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/cli/commands/probe.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/cli/commands/prompt_cmd.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/cli/commands/push.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/cli/commands/state.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/cli/commands/status.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/cli/commands/target.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/cli/commands/version/__init__.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/cli/commands/version/commands.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/cli/commands/version/helpers.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/cli/commands/version/monorepo.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/cli/commands/version/release.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/cli/commands/version/scanner.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/cli/commands/version/utils/__init__.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/cli/commands/version/utils/changelog_config.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/cli/commands/version/utils/git_config.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/cli/commands/workflow.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/cli/core.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/cli/display.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/cli/query.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/cli.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/config_apply/__init__.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/config_apply/applier.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/config_apply/loader.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/data_sync.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/detect/__init__.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/detect/builtin/__init__.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/detect/detector.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/detect/hardware.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/detect/hardware_rules.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/detect/probes.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/detect/remote.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/detect/templates.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/detect/workflow.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/discovery.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/dsl/__init__.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/dsl/loader.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/dsl/parser.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/dsl_python/__init__.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/dsl_python/context.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/dsl_python/decorators.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/dsl_python/docker_steps.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/dsl_python/exceptions.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/dsl_python/runner.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/dsl_python/steps.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/fleet.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/hardware/__init__.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/hardware/config_txt.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/hardware/data/__init__.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/hardware/data/hyperpixel.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/hardware/data/official.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/hardware/data/waveshare.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/hardware/fixes.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/hardware/kiosk/__init__.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/hardware/kiosk/autostart.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/hardware/kiosk/browsers.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/hardware/kiosk/compositors.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/hardware/kiosk/output_profiles.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/hardware/panels.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/hardware/raspi_config.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/heal/__init__.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/heal/decider.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/heal/hint_provider.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/heal/log_writer.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/heal/loop_detector.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/heal/runner.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/heal.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/iac/__init__.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/iac/base.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/iac/config_hints.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/iac/docker_compose.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/iac/parsers/__init__.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/iac/parsers/compose.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/iac/registry.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/integrations/__init__.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/integrations/op3_bridge.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/markpact/__init__.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/markpact/compiler.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/markpact/models.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/markpact/parser.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/mcp_server.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/models/__init__.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/models/blueprint.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/models/devices.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/models/enums.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/models/hardware.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/models/infra.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/models/manifest.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/models/persisted.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/models/pipeline.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/models/plan.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/models/spec.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/observe.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/parse.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/patterns.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/plan/__init__.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/plan/planner.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/plugins/__init__.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/plugins/builtin/__init__.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/plugins/builtin/browser_reload.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/plugins/builtin/hardware_diagnostic.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/plugins/builtin/notify.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/plugins/builtin/process_control.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/plugins/builtin/systemd_reload.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/schema.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/spec_loader.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/ssh.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/steps/__init__.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/steps/builtins.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/steps/kiosk.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/tests/__init__.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/tests/test_audit.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/tests/test_cli.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/tests/test_data_sync.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/tests/test_discovery.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/tests/test_dsl.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/tests/test_examples.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/tests/test_executor.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/tests/test_fleet.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/tests/test_git_integration.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/tests/test_heal.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/tests/test_heal_decider.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/tests/test_hooks.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/tests/test_iac.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/tests/test_iac_compose_contract.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/tests/test_iac_docker_compose_contract.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/tests/test_manifest.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/tests/test_markpact_compiler.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/tests/test_markpact_parser.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/tests/test_models.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/tests/test_observe.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/tests/test_parse.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/tests/test_patterns.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/tests/test_planner_edge.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/tests/test_plugins.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/tests/test_probes.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/tests/test_public_api.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/tests/test_resume.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/tests/test_spec_loader.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/tests/test_ssh.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/tests/test_templates.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/tests/test_verify.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/tests/test_version.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/tests/test_version_changelog.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/tests/test_version_cli.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/tests/test_version_manifest.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/tests/test_version_sources.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/tests/test_workflow.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/verify.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/version/__init__.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/version/bump.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/version/changelog.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/version/commits.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/version/diff.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/version/git_integration.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/version/git_transaction.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/version/manifest.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/version/sources/__init__.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/version/sources/base.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/version/sources/json_.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/version/sources/plain.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/version/sources/regex.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/version/sources/toml_.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/version/sources/yaml_.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/version/transaction.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy/version.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy.egg-info/SOURCES.txt +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy.egg-info/dependency_links.txt +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy.egg-info/entry_points.txt +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy.egg-info/requires.txt +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/redeploy.egg-info/top_level.txt +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/setup.cfg +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/tests/test_blueprint_sources.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/tests/test_blueprint_sources_compose.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/tests/test_cli_query.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/tests/test_example_argocd_flux_plugin.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/tests/test_example_gitops_ci_plugin.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/tests/test_example_helm_kustomize_plugin.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/tests/test_hardware_config.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/tests/test_hardware_kiosk.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/tests/test_hardware_rules.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/tests/test_heal_decider.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/tests/test_heal_loop_detector.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/tests/test_iac.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/tests/test_iac_config_hints.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/tests/test_iac_plugin_loading.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/tests/test_import_plugin_template.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/tests/test_parse.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/tests/test_redeploy.py +0 -0
- {redeploy-0.2.62 → redeploy-0.2.63}/tests/test_steps_kiosk.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: redeploy
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.63
|
|
4
4
|
Summary: Infrastructure migration toolkit: detect → plan → apply
|
|
5
5
|
Requires-Python: >=3.11
|
|
6
6
|
Description-Content-Type: text/markdown
|
|
@@ -32,17 +32,17 @@ Requires-Dist: mcp>=1.0; extra == "mcp"
|
|
|
32
32
|
|
|
33
33
|
## AI Cost Tracking
|
|
34
34
|
|
|
35
|
-
     
|
|
36
|
+
  
|
|
37
37
|
|
|
38
|
-
- 🤖 **LLM usage:** $7.5000 (
|
|
39
|
-
- 👤 **Human dev:** ~$
|
|
38
|
+
- 🤖 **LLM usage:** $7.5000 (83 commits)
|
|
39
|
+
- 👤 **Human dev:** ~$3183 (31.8h @ $100/h, 30min dedup)
|
|
40
40
|
|
|
41
41
|
Generated on 2026-04-23 using [openrouter/qwen/qwen3-coder-next](https://openrouter.ai/qwen/qwen3-coder-next)
|
|
42
42
|
|
|
43
43
|
---
|
|
44
44
|
|
|
45
|
-
    
|
|
46
46
|
|
|
47
47
|
Infrastructure migration and device deploy toolkit — VPS, Raspberry Pi kiosk, Podman Quadlet, k3s.
|
|
48
48
|
|
|
@@ -3,17 +3,17 @@
|
|
|
3
3
|
|
|
4
4
|
## AI Cost Tracking
|
|
5
5
|
|
|
6
|
-
     
|
|
7
|
+
  
|
|
8
8
|
|
|
9
|
-
- 🤖 **LLM usage:** $7.5000 (
|
|
10
|
-
- 👤 **Human dev:** ~$
|
|
9
|
+
- 🤖 **LLM usage:** $7.5000 (83 commits)
|
|
10
|
+
- 👤 **Human dev:** ~$3183 (31.8h @ $100/h, 30min dedup)
|
|
11
11
|
|
|
12
12
|
Generated on 2026-04-23 using [openrouter/qwen/qwen3-coder-next](https://openrouter.ai/qwen/qwen3-coder-next)
|
|
13
13
|
|
|
14
14
|
---
|
|
15
15
|
|
|
16
|
-
    
|
|
17
17
|
|
|
18
18
|
Infrastructure migration and device deploy toolkit — VPS, Raspberry Pi kiosk, Podman Quadlet, k3s.
|
|
19
19
|
|
|
@@ -7,7 +7,7 @@ Public API (stable from 0.2.0, semver guaranteed)::
|
|
|
7
7
|
|
|
8
8
|
Everything not listed in ``__all__`` is internal and may change without notice.
|
|
9
9
|
"""
|
|
10
|
-
__version__ = "0.2.
|
|
10
|
+
__version__ = "0.2.63"
|
|
11
11
|
|
|
12
12
|
# ── Core models ───────────────────────────────────────────────────────────────
|
|
13
13
|
from .models import ( # noqa: F401
|
|
@@ -119,6 +119,9 @@ class _CommandPathChecker(_Checker):
|
|
|
119
119
|
cmd = step.get("command") or ""
|
|
120
120
|
for match in self.EXTERNAL_RE.finditer(cmd):
|
|
121
121
|
path_str = match.group(1)
|
|
122
|
+
# Skip remote target paths (ssh_cmd / inline_script running remotely)
|
|
123
|
+
if path_str.startswith("~/"):
|
|
124
|
+
continue
|
|
122
125
|
# Ignore paths inside the project tree
|
|
123
126
|
resolved = self._resolve(path_str, base_dir)
|
|
124
127
|
if resolved and self._is_inside(resolved, base_dir):
|
|
@@ -161,7 +164,9 @@ class _ReferenceChecker(_Checker):
|
|
|
161
164
|
"""Ensure command_ref and insert_before point to existing things."""
|
|
162
165
|
|
|
163
166
|
def check(self, spec, document, base_dir, result):
|
|
167
|
+
from redeploy.steps import StepLibrary
|
|
164
168
|
step_ids = {s.get("id") for s in spec.extra_steps if s.get("id")}
|
|
169
|
+
step_ids |= set(StepLibrary.list())
|
|
165
170
|
ref_ids = set()
|
|
166
171
|
if document:
|
|
167
172
|
for block in document.blocks:
|
|
@@ -181,10 +186,10 @@ class _ReferenceChecker(_Checker):
|
|
|
181
186
|
ib = step.get("insert_before")
|
|
182
187
|
if ib and ib not in step_ids:
|
|
183
188
|
result.add(
|
|
184
|
-
IssueSeverity.
|
|
189
|
+
IssueSeverity.WARNING, "references",
|
|
185
190
|
f"Step '{sid}' insert_before points to unknown step '{ib}'",
|
|
186
191
|
sid,
|
|
187
|
-
suggestion=
|
|
192
|
+
suggestion="This may be a runtime-generated step; verify the generated plan."
|
|
188
193
|
)
|
|
189
194
|
|
|
190
195
|
|
|
@@ -374,6 +379,5 @@ class SpecAnalyzer:
|
|
|
374
379
|
return None, result
|
|
375
380
|
|
|
376
381
|
if spec:
|
|
377
|
-
self.base_dir = spec_path.parent
|
|
378
382
|
result = self.analyze(spec, document)
|
|
379
383
|
return spec, result
|
|
@@ -112,7 +112,7 @@ def run_docker_health_wait(
|
|
|
112
112
|
status_str = ", ".join(f"{n}:{s}" for n, s in statuses)
|
|
113
113
|
|
|
114
114
|
if status_str != last_status:
|
|
115
|
-
logger.
|
|
115
|
+
logger.info(f" [{elapsed}s] containers: {status_str}")
|
|
116
116
|
last_status = status_str
|
|
117
117
|
|
|
118
118
|
if _all_containers_healthy(statuses):
|
|
@@ -41,7 +41,7 @@ def lint(ctx, spec_file, env_name, as_json, exit_zero):
|
|
|
41
41
|
console.print(f"[yellow]⚠ env '{env_name}' not in redeploy.yaml[/yellow]")
|
|
42
42
|
manifest.apply_to_spec(spec, env_name=env_name)
|
|
43
43
|
|
|
44
|
-
analyzer = SpecAnalyzer(base_dir=Path(
|
|
44
|
+
analyzer = SpecAnalyzer(base_dir=Path.cwd())
|
|
45
45
|
_, result = analyzer.analyze_file(Path(resolved))
|
|
46
46
|
|
|
47
47
|
if as_json:
|
|
@@ -312,7 +312,7 @@ def run(ctx, spec_file, dry_run, plan_only, do_detect, plan_out, output,
|
|
|
312
312
|
# Static analysis (lint)
|
|
313
313
|
if lint:
|
|
314
314
|
from ...analyze import SpecAnalyzer, IssueSeverity
|
|
315
|
-
analyzer = SpecAnalyzer(base_dir=Path(
|
|
315
|
+
analyzer = SpecAnalyzer(base_dir=Path.cwd())
|
|
316
316
|
_, lint_result = analyzer.analyze_file(Path(resolved_spec))
|
|
317
317
|
if lint_result.issues:
|
|
318
318
|
console.print(f"\n[bold]lint[/bold]")
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: redeploy
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.63
|
|
4
4
|
Summary: Infrastructure migration toolkit: detect → plan → apply
|
|
5
5
|
Requires-Python: >=3.11
|
|
6
6
|
Description-Content-Type: text/markdown
|
|
@@ -32,17 +32,17 @@ Requires-Dist: mcp>=1.0; extra == "mcp"
|
|
|
32
32
|
|
|
33
33
|
## AI Cost Tracking
|
|
34
34
|
|
|
35
|
-
     
|
|
36
|
+
  
|
|
37
37
|
|
|
38
|
-
- 🤖 **LLM usage:** $7.5000 (
|
|
39
|
-
- 👤 **Human dev:** ~$
|
|
38
|
+
- 🤖 **LLM usage:** $7.5000 (83 commits)
|
|
39
|
+
- 👤 **Human dev:** ~$3183 (31.8h @ $100/h, 30min dedup)
|
|
40
40
|
|
|
41
41
|
Generated on 2026-04-23 using [openrouter/qwen/qwen3-coder-next](https://openrouter.ai/qwen/qwen3-coder-next)
|
|
42
42
|
|
|
43
43
|
---
|
|
44
44
|
|
|
45
|
-
    
|
|
46
46
|
|
|
47
47
|
Infrastructure migration and device deploy toolkit — VPS, Raspberry Pi kiosk, Podman Quadlet, k3s.
|
|
48
48
|
|
|
@@ -59,8 +59,15 @@ def call_llm(instruction: str, schema: dict | None = None) -> dict:
|
|
|
59
59
|
schema = build_c2004_schema()
|
|
60
60
|
|
|
61
61
|
from redeploy.cli.commands.prompt_cmd import _call_llm, _parse_llm_response
|
|
62
|
-
|
|
63
|
-
|
|
62
|
+
last_err = None
|
|
63
|
+
for _ in range(3):
|
|
64
|
+
raw = _call_llm(schema, instruction)
|
|
65
|
+
try:
|
|
66
|
+
return _parse_llm_response(raw)
|
|
67
|
+
except (json.JSONDecodeError, ValueError) as e:
|
|
68
|
+
last_err = e
|
|
69
|
+
continue
|
|
70
|
+
raise last_err
|
|
64
71
|
|
|
65
72
|
|
|
66
73
|
# ---------------------------------------------------------------------------
|
|
@@ -177,8 +184,10 @@ def test_prompt_fix_with_hint():
|
|
|
177
184
|
result = call_llm("napraw błąd braku ikon SVG w aplikacji")
|
|
178
185
|
argv = result["argv"]
|
|
179
186
|
assert argv[0] == "redeploy"
|
|
180
|
-
|
|
181
|
-
assert
|
|
187
|
+
# LLM may route to inspect/plan when no exact fix spec exists
|
|
188
|
+
assert argv[1] in ("fix", "run", "inspect", "plan"), f"Unexpected command: {argv}"
|
|
189
|
+
if argv[1] in ("fix", "run"):
|
|
190
|
+
assert result.get("confirm") is True
|
|
182
191
|
|
|
183
192
|
|
|
184
193
|
@NEEDS_LLM
|
|
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
|
|
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
|
|
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
|