refactorai-cli 0.7.23__tar.gz → 0.7.24__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.
- {refactorai_cli-0.7.23 → refactorai_cli-0.7.24}/PKG-INFO +1 -1
- {refactorai_cli-0.7.23 → refactorai_cli-0.7.24}/pyproject.toml +1 -1
- {refactorai_cli-0.7.23 → refactorai_cli-0.7.24}/refactorai_cli/__init__.py +1 -1
- {refactorai_cli-0.7.23 → refactorai_cli-0.7.24}/refactorai_cli/cloud_rr.py +56 -0
- {refactorai_cli-0.7.23 → refactorai_cli-0.7.24}/refactorai_cli/commands/run_cmds.py +141 -37
- {refactorai_cli-0.7.23 → refactorai_cli-0.7.24}/refactorai_cli.egg-info/PKG-INFO +1 -1
- {refactorai_cli-0.7.23 → refactorai_cli-0.7.24}/README.md +0 -0
- {refactorai_cli-0.7.23 → refactorai_cli-0.7.24}/refactorai_cli/auth.py +0 -0
- {refactorai_cli-0.7.23 → refactorai_cli-0.7.24}/refactorai_cli/client.py +0 -0
- {refactorai_cli-0.7.23 → refactorai_cli-0.7.24}/refactorai_cli/commands/__init__.py +0 -0
- {refactorai_cli-0.7.23 → refactorai_cli-0.7.24}/refactorai_cli/commands/account_cmds.py +0 -0
- {refactorai_cli-0.7.23 → refactorai_cli-0.7.24}/refactorai_cli/commands/auth_cmds.py +0 -0
- {refactorai_cli-0.7.23 → refactorai_cli-0.7.24}/refactorai_cli/commands/branch_cmds.py +0 -0
- {refactorai_cli-0.7.23 → refactorai_cli-0.7.24}/refactorai_cli/commands/cloud_cmds.py +0 -0
- {refactorai_cli-0.7.23 → refactorai_cli-0.7.24}/refactorai_cli/commands/engine_cmds.py +0 -0
- {refactorai_cli-0.7.23 → refactorai_cli-0.7.24}/refactorai_cli/commands/hook_cmds.py +0 -0
- {refactorai_cli-0.7.23 → refactorai_cli-0.7.24}/refactorai_cli/commands/model_cmds.py +0 -0
- {refactorai_cli-0.7.23 → refactorai_cli-0.7.24}/refactorai_cli/commands/policy_cmds.py +0 -0
- {refactorai_cli-0.7.23 → refactorai_cli-0.7.24}/refactorai_cli/commands/pre_push_cmds.py +0 -0
- {refactorai_cli-0.7.23 → refactorai_cli-0.7.24}/refactorai_cli/commands/request_cmds.py +0 -0
- {refactorai_cli-0.7.23 → refactorai_cli-0.7.24}/refactorai_cli/commands/rules_cmds.py +0 -0
- {refactorai_cli-0.7.23 → refactorai_cli-0.7.24}/refactorai_cli/commands/runtime_cmds.py +0 -0
- {refactorai_cli-0.7.23 → refactorai_cli-0.7.24}/refactorai_cli/commands/runtime_proxy_cmds.py +0 -0
- {refactorai_cli-0.7.23 → refactorai_cli-0.7.24}/refactorai_cli/commands/setup_cmds.py +0 -0
- {refactorai_cli-0.7.23 → refactorai_cli-0.7.24}/refactorai_cli/commands/toolchains_cmds.py +0 -0
- {refactorai_cli-0.7.23 → refactorai_cli-0.7.24}/refactorai_cli/commands/watch_cmds.py +0 -0
- {refactorai_cli-0.7.23 → refactorai_cli-0.7.24}/refactorai_cli/commands/workspace_cmds.py +0 -0
- {refactorai_cli-0.7.23 → refactorai_cli-0.7.24}/refactorai_cli/commit_queue.py +0 -0
- {refactorai_cli-0.7.23 → refactorai_cli-0.7.24}/refactorai_cli/commit_telemetry.py +0 -0
- {refactorai_cli-0.7.23 → refactorai_cli-0.7.24}/refactorai_cli/control_plane.py +0 -0
- {refactorai_cli-0.7.23 → refactorai_cli-0.7.24}/refactorai_cli/credentials.py +0 -0
- {refactorai_cli-0.7.23 → refactorai_cli-0.7.24}/refactorai_cli/dotenv_loader.py +0 -0
- {refactorai_cli-0.7.23 → refactorai_cli-0.7.24}/refactorai_cli/git_scope.py +0 -0
- {refactorai_cli-0.7.23 → refactorai_cli-0.7.24}/refactorai_cli/local_constitution.py +0 -0
- {refactorai_cli-0.7.23 → refactorai_cli-0.7.24}/refactorai_cli/local_engine_runtime.py +0 -0
- {refactorai_cli-0.7.23 → refactorai_cli-0.7.24}/refactorai_cli/local_paths.py +0 -0
- {refactorai_cli-0.7.23 → refactorai_cli-0.7.24}/refactorai_cli/main.py +0 -0
- {refactorai_cli-0.7.23 → refactorai_cli-0.7.24}/refactorai_cli/mode_sync.py +0 -0
- {refactorai_cli-0.7.23 → refactorai_cli-0.7.24}/refactorai_cli/model_policy.py +0 -0
- {refactorai_cli-0.7.23 → refactorai_cli-0.7.24}/refactorai_cli/pre_push_gate.py +0 -0
- {refactorai_cli-0.7.23 → refactorai_cli-0.7.24}/refactorai_cli/refactor_branch_store.py +0 -0
- {refactorai_cli-0.7.23 → refactorai_cli-0.7.24}/refactorai_cli/review_runner.py +0 -0
- {refactorai_cli-0.7.23 → refactorai_cli-0.7.24}/refactorai_cli/runtime_manager.py +0 -0
- {refactorai_cli-0.7.23 → refactorai_cli-0.7.24}/refactorai_cli/settings.py +0 -0
- {refactorai_cli-0.7.23 → refactorai_cli-0.7.24}/refactorai_cli/setup_flow.py +0 -0
- {refactorai_cli-0.7.23 → refactorai_cli-0.7.24}/refactorai_cli/watch_ledger.py +0 -0
- {refactorai_cli-0.7.23 → refactorai_cli-0.7.24}/refactorai_cli/watch_state.py +0 -0
- {refactorai_cli-0.7.23 → refactorai_cli-0.7.24}/refactorai_cli/watch_supervisor.py +0 -0
- {refactorai_cli-0.7.23 → refactorai_cli-0.7.24}/refactorai_cli.egg-info/SOURCES.txt +0 -0
- {refactorai_cli-0.7.23 → refactorai_cli-0.7.24}/refactorai_cli.egg-info/dependency_links.txt +0 -0
- {refactorai_cli-0.7.23 → refactorai_cli-0.7.24}/refactorai_cli.egg-info/entry_points.txt +0 -0
- {refactorai_cli-0.7.23 → refactorai_cli-0.7.24}/refactorai_cli.egg-info/requires.txt +0 -0
- {refactorai_cli-0.7.23 → refactorai_cli-0.7.24}/refactorai_cli.egg-info/top_level.txt +0 -0
- {refactorai_cli-0.7.23 → refactorai_cli-0.7.24}/setup.cfg +0 -0
|
@@ -769,6 +769,62 @@ def _python_restore_commands(project_root: Path, config: dict) -> list[tuple[str
|
|
|
769
769
|
return cmds
|
|
770
770
|
|
|
771
771
|
|
|
772
|
+
def resolve_dependency_commands(
|
|
773
|
+
project_root: Path,
|
|
774
|
+
*,
|
|
775
|
+
config: dict,
|
|
776
|
+
runtimes: tuple[str, ...] | None = None,
|
|
777
|
+
dep_locator_cb: Callable[[Path], list[tuple[str, str]]] | None = None,
|
|
778
|
+
) -> list[tuple[str, str]]:
|
|
779
|
+
"""Ordered ``(label, shell-command)`` dependency-install steps for a project.
|
|
780
|
+
|
|
781
|
+
Single source of truth shared by the managed-host restore
|
|
782
|
+
(:func:`_restore_dependencies`) and the container sandbox preflight, so both
|
|
783
|
+
resolve dependencies identically instead of re-implementing per-ecosystem
|
|
784
|
+
heuristics. Resolution tiers (docs/35):
|
|
785
|
+
|
|
786
|
+
1. **Escape hatch** -- ``verification.deps_install`` is honored verbatim and
|
|
787
|
+
overrides everything, so nonstandard layouts have a deterministic path.
|
|
788
|
+
2. **Deterministic detection** -- lockfile-aware node install
|
|
789
|
+
(:func:`_node_install_command`) and the python manifest family
|
|
790
|
+
(:func:`_python_restore_commands`: requirements*, ``requirements/``,
|
|
791
|
+
Poetry/uv/PDM, PEP 621 extras).
|
|
792
|
+
3. **Validated agentic fallback** -- when python detection finds nothing and
|
|
793
|
+
``dep_locator_cb`` is supplied (and not disabled via
|
|
794
|
+
``verification.llm_dep_discovery``), the locator points at *where* deps are
|
|
795
|
+
declared; the callback re-validates every path/kind on disk before
|
|
796
|
+
returning a command (never a fabricated package or raw LLM command).
|
|
797
|
+
|
|
798
|
+
``runtimes`` scopes detection (e.g. ``("node",)`` for an ``npm`` test
|
|
799
|
+
command); ``None`` considers both node and python.
|
|
800
|
+
"""
|
|
801
|
+
configured = _configured_deps_install(config)
|
|
802
|
+
if configured:
|
|
803
|
+
return [(f"deps_install[{i}]", cmd) for i, cmd in enumerate(configured, start=1)]
|
|
804
|
+
|
|
805
|
+
selected = runtimes if runtimes is not None else ("node", "python")
|
|
806
|
+
out: list[tuple[str, str]] = []
|
|
807
|
+
seen: set[str] = set()
|
|
808
|
+
|
|
809
|
+
def _add(label: str, command: str) -> None:
|
|
810
|
+
if command not in seen:
|
|
811
|
+
seen.add(command)
|
|
812
|
+
out.append((label, command))
|
|
813
|
+
|
|
814
|
+
if "node" in selected and (project_root / "package.json").is_file():
|
|
815
|
+
_, node_command = _node_install_command(project_root)
|
|
816
|
+
_add("node", node_command)
|
|
817
|
+
|
|
818
|
+
if "python" in selected:
|
|
819
|
+
steps = _python_restore_commands(project_root, config)
|
|
820
|
+
if not steps and dep_locator_cb is not None and _llm_dep_discovery_enabled(config):
|
|
821
|
+
steps = dep_locator_cb(project_root)
|
|
822
|
+
for label, command in steps:
|
|
823
|
+
_add(label, command)
|
|
824
|
+
|
|
825
|
+
return out
|
|
826
|
+
|
|
827
|
+
|
|
772
828
|
# --- LLM locator fallback (find WHERE deps are declared; never WHAT) --------- #
|
|
773
829
|
# The model only points at existing files/dirs + a kind label; deterministic code
|
|
774
830
|
# maps kind -> install command and re-verifies the path on disk. The model can
|
|
@@ -1770,48 +1770,95 @@ def _command_binary(command: str) -> str | None:
|
|
|
1770
1770
|
return tokens[0] if tokens else None
|
|
1771
1771
|
|
|
1772
1772
|
|
|
1773
|
-
def
|
|
1774
|
-
|
|
1775
|
-
|
|
1776
|
-
|
|
1773
|
+
def _binary_runtimes(binary: str) -> tuple[str, ...]:
|
|
1774
|
+
"""Map a test-command binary to the language runtime(s) whose dependencies it
|
|
1775
|
+
needs, so dependency resolution is scoped to the relevant ecosystem."""
|
|
1776
|
+
b = (binary or "").strip().lower()
|
|
1777
|
+
if b in {"npm", "node", "npx", "yarn", "pnpm", "corepack"}:
|
|
1778
|
+
return ("node",)
|
|
1779
|
+
if b in {"python", "python3", "pip", "pip3", "pytest"}:
|
|
1780
|
+
return ("python",)
|
|
1781
|
+
return ()
|
|
1782
|
+
|
|
1783
|
+
|
|
1784
|
+
def _toolchain_pkg_command(*, binary: str, installer: str | None) -> str:
|
|
1785
|
+
"""Finite, bounded language-runtime provisioning for the sandbox image.
|
|
1786
|
+
|
|
1787
|
+
This is the one place that legitimately enumerates (a small, closed set of
|
|
1788
|
+
language runtimes) -- installing the interpreter/toolchain the test command
|
|
1789
|
+
needs. Dependency *resolution* is NOT done here; it is delegated to the shared
|
|
1790
|
+
``cloud_rr`` resolver so no per-project dependency logic is hardcoded.
|
|
1791
|
+
"""
|
|
1777
1792
|
if not installer:
|
|
1778
|
-
return
|
|
1779
|
-
|
|
1793
|
+
return ""
|
|
1794
|
+
is_node = binary in {"npm", "node", "npx", "yarn", "pnpm"}
|
|
1795
|
+
is_python = binary in {"python", "python3", "pip", "pip3", "pytest"}
|
|
1780
1796
|
if installer == "apk":
|
|
1781
|
-
if
|
|
1782
|
-
|
|
1783
|
-
|
|
1784
|
-
|
|
1797
|
+
if is_node:
|
|
1798
|
+
return "apk add --no-cache nodejs npm"
|
|
1799
|
+
if is_python:
|
|
1800
|
+
return "apk add --no-cache python3 py3-pip"
|
|
1785
1801
|
elif installer == "apt-get":
|
|
1786
|
-
if
|
|
1787
|
-
|
|
1788
|
-
|
|
1789
|
-
|
|
1802
|
+
if is_node:
|
|
1803
|
+
return "apt-get update && apt-get install -y nodejs npm"
|
|
1804
|
+
if is_python:
|
|
1805
|
+
return "apt-get update && apt-get install -y python3 python3-pip"
|
|
1790
1806
|
elif installer in {"dnf", "yum"}:
|
|
1791
|
-
if
|
|
1792
|
-
|
|
1793
|
-
|
|
1794
|
-
|
|
1807
|
+
if is_node:
|
|
1808
|
+
return f"{installer} install -y nodejs npm"
|
|
1809
|
+
if is_python:
|
|
1810
|
+
return f"{installer} install -y python3 python3-pip"
|
|
1811
|
+
return ""
|
|
1812
|
+
|
|
1813
|
+
|
|
1814
|
+
def _install_plan_for_missing_binary(
|
|
1815
|
+
*,
|
|
1816
|
+
project_root: Path,
|
|
1817
|
+
binary: str,
|
|
1818
|
+
installer: str | None,
|
|
1819
|
+
config: dict | None = None,
|
|
1820
|
+
dep_locator_cb: Callable[[Path], list[tuple[str, str]]] | None = None,
|
|
1821
|
+
) -> list[str]:
|
|
1822
|
+
"""Install plan for a missing test-command binary: provision the language
|
|
1823
|
+
runtime, then restore dependencies via the shared resolver.
|
|
1824
|
+
|
|
1825
|
+
Two clearly separated concerns:
|
|
1826
|
+
|
|
1827
|
+
* **Toolchain provisioning** (:func:`_toolchain_pkg_command`) -- a small,
|
|
1828
|
+
finite map of language -> package-manager install for the container image.
|
|
1829
|
+
* **Dependency restore** (:func:`cloud_rr.resolve_dependency_commands`) -- the
|
|
1830
|
+
SAME resolver the cloud/managed-host path uses, so the sandbox honors the
|
|
1831
|
+
``verification.deps_install`` escape hatch, lockfile-aware node installs,
|
|
1832
|
+
the full python manifest family (requirements*/Poetry/uv/PDM/PEP 621
|
|
1833
|
+
extras), and the validated agentic fallback. Previously this path hardcoded
|
|
1834
|
+
``npm install`` / ``pip install -r requirements.txt``, which both rewrote
|
|
1835
|
+
committed lockfiles and failed to scale to other ecosystems.
|
|
1836
|
+
"""
|
|
1837
|
+
if not installer:
|
|
1838
|
+
return []
|
|
1839
|
+
from refactorai_cli.cloud_rr import resolve_dependency_commands
|
|
1840
|
+
|
|
1795
1841
|
plan: list[str] = []
|
|
1842
|
+
pkg_cmd = _toolchain_pkg_command(binary=binary, installer=installer)
|
|
1796
1843
|
if pkg_cmd:
|
|
1797
1844
|
plan.append(pkg_cmd)
|
|
1798
|
-
# Dependency restore after toolchain install. Use the SAME lockfile-aware
|
|
1799
|
-
# installer as the cloud/managed path (single source of truth in
|
|
1800
|
-
# ``cloud_rr._node_install_command``) so sandbox preflight never rewrites a
|
|
1801
|
-
# committed lockfile: ``npm ci`` / ``yarn install --immutable`` /
|
|
1802
|
-
# ``pnpm install --frozen-lockfile`` when a lockfile is present, falling back
|
|
1803
|
-
# to ``npm install`` only for a lockfile-less project. Historically this path
|
|
1804
|
-
# hardcoded ``npm install``, which regenerated ``package-lock.json`` /
|
|
1805
|
-
# ``yarn.lock`` in the mounted tree and left the working tree dirty (blocking
|
|
1806
|
-
# the refactor-branch flow); unifying on the lockfile-aware command removes
|
|
1807
|
-
# that divergence at the source.
|
|
1808
|
-
if (project_root / "package.json").is_file():
|
|
1809
|
-
from refactorai_cli.cloud_rr import _node_install_command
|
|
1810
1845
|
|
|
1811
|
-
|
|
1812
|
-
|
|
1813
|
-
|
|
1814
|
-
|
|
1846
|
+
dep_commands = [
|
|
1847
|
+
cmd
|
|
1848
|
+
for _label, cmd in resolve_dependency_commands(
|
|
1849
|
+
project_root,
|
|
1850
|
+
config=config or {},
|
|
1851
|
+
runtimes=_binary_runtimes(binary),
|
|
1852
|
+
dep_locator_cb=dep_locator_cb,
|
|
1853
|
+
)
|
|
1854
|
+
]
|
|
1855
|
+
# yarn/pnpm run through Corepack (the modern, version-pinned launcher). Minimal
|
|
1856
|
+
# base images ship Node + npm but omit the corepack shim, so provision it on
|
|
1857
|
+
# demand before any corepack command -- else the step dies with
|
|
1858
|
+
# ``sh: corepack: not found``. Idempotent: skipped when already on PATH.
|
|
1859
|
+
if any(cmd.startswith("corepack") for cmd in dep_commands):
|
|
1860
|
+
plan.append("command -v corepack >/dev/null 2>&1 || npm install -g corepack")
|
|
1861
|
+
plan.extend(dep_commands)
|
|
1815
1862
|
return plan
|
|
1816
1863
|
|
|
1817
1864
|
|
|
@@ -2017,8 +2064,14 @@ def _sandbox_preflight(
|
|
|
2017
2064
|
runtime: str | None = None,
|
|
2018
2065
|
container_name: str | None = None,
|
|
2019
2066
|
workdir: str | None = None,
|
|
2067
|
+
dep_locator_cb: Callable[[Path], list[tuple[str, str]]] | None = None,
|
|
2020
2068
|
) -> tuple[bool, str]:
|
|
2021
|
-
"""Run sandbox preflight and optionally perform approved install plan.
|
|
2069
|
+
"""Run sandbox preflight and optionally perform approved install plan.
|
|
2070
|
+
|
|
2071
|
+
``dep_locator_cb`` is the optional validated agentic dependency-file locator
|
|
2072
|
+
(see :func:`cloud_rr.resolve_dependency_commands`); when omitted, dependency
|
|
2073
|
+
resolution uses the escape hatch + deterministic detection only.
|
|
2074
|
+
"""
|
|
2022
2075
|
_sr = _sandbox_runtime()
|
|
2023
2076
|
command_exists_in_container = _sr.command_exists_in_container
|
|
2024
2077
|
command_exists_in_sandbox = _sr.command_exists_in_sandbox
|
|
@@ -2121,7 +2174,11 @@ def _sandbox_preflight(
|
|
|
2121
2174
|
if missing_binary:
|
|
2122
2175
|
plan.extend(
|
|
2123
2176
|
_install_plan_for_missing_binary(
|
|
2124
|
-
project_root=project_root,
|
|
2177
|
+
project_root=project_root,
|
|
2178
|
+
binary=missing_binary,
|
|
2179
|
+
installer=installer,
|
|
2180
|
+
config=config_settings,
|
|
2181
|
+
dep_locator_cb=dep_locator_cb,
|
|
2125
2182
|
)
|
|
2126
2183
|
)
|
|
2127
2184
|
lsp_plan, unsupported_lsp = _install_plan_for_missing_lsp(
|
|
@@ -2317,6 +2374,44 @@ def _sandbox_lifecycle(project_config) -> str:
|
|
|
2317
2374
|
return lifecycle if lifecycle in {"per_project", "per_run"} else "per_project"
|
|
2318
2375
|
|
|
2319
2376
|
|
|
2377
|
+
def _build_sandbox_dep_locator(
|
|
2378
|
+
project_root: Path, constitution, provider: str | None
|
|
2379
|
+
) -> Callable[[Path], list[tuple[str, str]]] | None:
|
|
2380
|
+
"""Best-effort validated agentic dependency-file locator for sandbox preflight.
|
|
2381
|
+
|
|
2382
|
+
Returns a ``callback(root) -> [(label, command)]`` that asks the platform
|
|
2383
|
+
*where* dependencies are declared (nonstandard layouts), re-validating every
|
|
2384
|
+
path/kind on disk before use -- the same locator the cloud RR loop uses
|
|
2385
|
+
(docs/35). Returns ``None`` when a locator cannot be built (e.g. auth/context
|
|
2386
|
+
unavailable), in which case preflight silently uses the escape hatch +
|
|
2387
|
+
deterministic detection only. Never raises.
|
|
2388
|
+
"""
|
|
2389
|
+
try:
|
|
2390
|
+
from refactorai_cli.cloud_rr import _located_restore_commands
|
|
2391
|
+
|
|
2392
|
+
variant = _execution_variant(constitution)
|
|
2393
|
+
execution_mode = platform_inference_mode(variant) or variant or "cloud_managed"
|
|
2394
|
+
auth_ctx = ensure_authenticated(project_root)
|
|
2395
|
+
model_hint = provider or str(constitution.get_setting("model_id", "") or "") or None
|
|
2396
|
+
|
|
2397
|
+
def _locator(root: Path) -> list[tuple[str, str]]:
|
|
2398
|
+
try:
|
|
2399
|
+
return _located_restore_commands(
|
|
2400
|
+
root,
|
|
2401
|
+
constitution=constitution,
|
|
2402
|
+
execution_mode=execution_mode,
|
|
2403
|
+
auth_ctx=auth_ctx,
|
|
2404
|
+
model_hint=model_hint,
|
|
2405
|
+
apply_byok_payload=_apply_byok_payload,
|
|
2406
|
+
)
|
|
2407
|
+
except Exception:
|
|
2408
|
+
return []
|
|
2409
|
+
|
|
2410
|
+
return _locator
|
|
2411
|
+
except Exception:
|
|
2412
|
+
return None
|
|
2413
|
+
|
|
2414
|
+
|
|
2320
2415
|
def _ensure_sandbox_ready(
|
|
2321
2416
|
*,
|
|
2322
2417
|
project_root: Path,
|
|
@@ -2325,8 +2420,13 @@ def _ensure_sandbox_ready(
|
|
|
2325
2420
|
auto_approve_install: bool = False,
|
|
2326
2421
|
no_install: bool = False,
|
|
2327
2422
|
continue_on_preflight_failure: bool = False,
|
|
2423
|
+
dep_locator_cb: Callable[[Path], list[tuple[str, str]]] | None = None,
|
|
2328
2424
|
) -> dict | None:
|
|
2329
|
-
"""Ensure sandbox lifecycle + preflight for stage execution.
|
|
2425
|
+
"""Ensure sandbox lifecycle + preflight for stage execution.
|
|
2426
|
+
|
|
2427
|
+
``dep_locator_cb`` is forwarded to preflight as the validated agentic
|
|
2428
|
+
dependency-file locator (best-effort; ``None`` disables that fallback tier).
|
|
2429
|
+
"""
|
|
2330
2430
|
_sr = _sandbox_runtime()
|
|
2331
2431
|
resolve_runtime = _sr.resolve_runtime
|
|
2332
2432
|
sandbox_name = _sr.sandbox_name
|
|
@@ -2379,6 +2479,7 @@ def _ensure_sandbox_ready(
|
|
|
2379
2479
|
runtime=resolved_runtime,
|
|
2380
2480
|
container_name=str(state.get("container_name", "") or ""),
|
|
2381
2481
|
workdir=str(state.get("workdir") or workdir),
|
|
2482
|
+
dep_locator_cb=dep_locator_cb,
|
|
2382
2483
|
)
|
|
2383
2484
|
if not preflight_ok:
|
|
2384
2485
|
if continue_on_preflight_failure:
|
|
@@ -3728,6 +3829,9 @@ def code(
|
|
|
3728
3829
|
stage="code",
|
|
3729
3830
|
auto_approve_install=auto_approve,
|
|
3730
3831
|
no_install=False,
|
|
3832
|
+
dep_locator_cb=_build_sandbox_dep_locator(
|
|
3833
|
+
project_root, constitution, provider
|
|
3834
|
+
),
|
|
3731
3835
|
)
|
|
3732
3836
|
else:
|
|
3733
3837
|
variant = _execution_variant(constitution)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{refactorai_cli-0.7.23 → refactorai_cli-0.7.24}/refactorai_cli/commands/runtime_proxy_cmds.py
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
|
{refactorai_cli-0.7.23 → refactorai_cli-0.7.24}/refactorai_cli.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|