agentic-dev-loop 1.0.0a21__tar.gz → 1.0.0a22__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.

Potentially problematic release.


This version of agentic-dev-loop might be problematic. Click here for more details.

Files changed (88) hide show
  1. {agentic_dev_loop-1.0.0a21/src/agentic_dev_loop.egg-info → agentic_dev_loop-1.0.0a22}/PKG-INFO +1 -1
  2. {agentic_dev_loop-1.0.0a21 → agentic_dev_loop-1.0.0a22}/pyproject.toml +1 -1
  3. {agentic_dev_loop-1.0.0a21 → agentic_dev_loop-1.0.0a22}/src/agentic_dev_loop/engine/isolation.py +2 -2
  4. {agentic_dev_loop-1.0.0a21 → agentic_dev_loop-1.0.0a22/src/agentic_dev_loop.egg-info}/PKG-INFO +1 -1
  5. {agentic_dev_loop-1.0.0a21 → agentic_dev_loop-1.0.0a22}/tests/test_028_declared_caches.py +18 -0
  6. {agentic_dev_loop-1.0.0a21 → agentic_dev_loop-1.0.0a22}/tests/test_isolation.py +1 -1
  7. {agentic_dev_loop-1.0.0a21 → agentic_dev_loop-1.0.0a22}/LICENSE +0 -0
  8. {agentic_dev_loop-1.0.0a21 → agentic_dev_loop-1.0.0a22}/README.md +0 -0
  9. {agentic_dev_loop-1.0.0a21 → agentic_dev_loop-1.0.0a22}/setup.cfg +0 -0
  10. {agentic_dev_loop-1.0.0a21 → agentic_dev_loop-1.0.0a22}/src/agentic_dev_loop/__init__.py +0 -0
  11. {agentic_dev_loop-1.0.0a21 → agentic_dev_loop-1.0.0a22}/src/agentic_dev_loop/core/__init__.py +0 -0
  12. {agentic_dev_loop-1.0.0a21 → agentic_dev_loop-1.0.0a22}/src/agentic_dev_loop/core/config.py +0 -0
  13. {agentic_dev_loop-1.0.0a21 → agentic_dev_loop-1.0.0a22}/src/agentic_dev_loop/core/paths.py +0 -0
  14. {agentic_dev_loop-1.0.0a21 → agentic_dev_loop-1.0.0a22}/src/agentic_dev_loop/core/results.py +0 -0
  15. {agentic_dev_loop-1.0.0a21 → agentic_dev_loop-1.0.0a22}/src/agentic_dev_loop/core/verdict.py +0 -0
  16. {agentic_dev_loop-1.0.0a21 → agentic_dev_loop-1.0.0a22}/src/agentic_dev_loop/engine/__init__.py +0 -0
  17. {agentic_dev_loop-1.0.0a21 → agentic_dev_loop-1.0.0a22}/src/agentic_dev_loop/engine/actions.py +0 -0
  18. {agentic_dev_loop-1.0.0a21 → agentic_dev_loop-1.0.0a22}/src/agentic_dev_loop/engine/agents.py +0 -0
  19. {agentic_dev_loop-1.0.0a21 → agentic_dev_loop-1.0.0a22}/src/agentic_dev_loop/engine/cli.py +0 -0
  20. {agentic_dev_loop-1.0.0a21 → agentic_dev_loop-1.0.0a22}/src/agentic_dev_loop/engine/deps.py +0 -0
  21. {agentic_dev_loop-1.0.0a21 → agentic_dev_loop-1.0.0a22}/src/agentic_dev_loop/engine/dryrun.py +0 -0
  22. {agentic_dev_loop-1.0.0a21 → agentic_dev_loop-1.0.0a22}/src/agentic_dev_loop/engine/egress_policy.py +0 -0
  23. {agentic_dev_loop-1.0.0a21 → agentic_dev_loop-1.0.0a22}/src/agentic_dev_loop/engine/egress_proxy.py +0 -0
  24. {agentic_dev_loop-1.0.0a21 → agentic_dev_loop-1.0.0a22}/src/agentic_dev_loop/engine/extensions/__init__.py +0 -0
  25. {agentic_dev_loop-1.0.0a21 → agentic_dev_loop-1.0.0a22}/src/agentic_dev_loop/engine/extensions/aidlc.py +0 -0
  26. {agentic_dev_loop-1.0.0a21 → agentic_dev_loop-1.0.0a22}/src/agentic_dev_loop/engine/graph.py +0 -0
  27. {agentic_dev_loop-1.0.0a21 → agentic_dev_loop-1.0.0a22}/src/agentic_dev_loop/engine/hostboundary.py +0 -0
  28. {agentic_dev_loop-1.0.0a21 → agentic_dev_loop-1.0.0a22}/src/agentic_dev_loop/engine/llm.py +0 -0
  29. {agentic_dev_loop-1.0.0a21 → agentic_dev_loop-1.0.0a22}/src/agentic_dev_loop/engine/loaders.py +0 -0
  30. {agentic_dev_loop-1.0.0a21 → agentic_dev_loop-1.0.0a22}/src/agentic_dev_loop/engine/mounts.py +0 -0
  31. {agentic_dev_loop-1.0.0a21 → agentic_dev_loop-1.0.0a22}/src/agentic_dev_loop/engine/outputs.py +0 -0
  32. {agentic_dev_loop-1.0.0a21 → agentic_dev_loop-1.0.0a22}/src/agentic_dev_loop/engine/presets.py +0 -0
  33. {agentic_dev_loop-1.0.0a21 → agentic_dev_loop-1.0.0a22}/src/agentic_dev_loop/engine/proc.py +0 -0
  34. {agentic_dev_loop-1.0.0a21 → agentic_dev_loop-1.0.0a22}/src/agentic_dev_loop/engine/registry.py +0 -0
  35. {agentic_dev_loop-1.0.0a21 → agentic_dev_loop-1.0.0a22}/src/agentic_dev_loop/engine/seccomp/__init__.py +0 -0
  36. {agentic_dev_loop-1.0.0a21 → agentic_dev_loop-1.0.0a22}/src/agentic_dev_loop/engine/seccomp/chromium-userns.json +0 -0
  37. {agentic_dev_loop-1.0.0a21 → agentic_dev_loop-1.0.0a22}/src/agentic_dev_loop/engine/secrets.py +0 -0
  38. {agentic_dev_loop-1.0.0a21 → agentic_dev_loop-1.0.0a22}/src/agentic_dev_loop/engine/stages.py +0 -0
  39. {agentic_dev_loop-1.0.0a21 → agentic_dev_loop-1.0.0a22}/src/agentic_dev_loop/engine/step_workspace.py +0 -0
  40. {agentic_dev_loop-1.0.0a21 → agentic_dev_loop-1.0.0a22}/src/agentic_dev_loop/engine/sync_back.py +0 -0
  41. {agentic_dev_loop-1.0.0a21 → agentic_dev_loop-1.0.0a22}/src/agentic_dev_loop/py.typed +0 -0
  42. {agentic_dev_loop-1.0.0a21 → agentic_dev_loop-1.0.0a22}/src/agentic_dev_loop/viz/__init__.py +0 -0
  43. {agentic_dev_loop-1.0.0a21 → agentic_dev_loop-1.0.0a22}/src/agentic_dev_loop/viz/__main__.py +0 -0
  44. {agentic_dev_loop-1.0.0a21 → agentic_dev_loop-1.0.0a22}/src/agentic_dev_loop/viz/server.py +0 -0
  45. {agentic_dev_loop-1.0.0a21 → agentic_dev_loop-1.0.0a22}/src/agentic_dev_loop.egg-info/SOURCES.txt +0 -0
  46. {agentic_dev_loop-1.0.0a21 → agentic_dev_loop-1.0.0a22}/src/agentic_dev_loop.egg-info/dependency_links.txt +0 -0
  47. {agentic_dev_loop-1.0.0a21 → agentic_dev_loop-1.0.0a22}/src/agentic_dev_loop.egg-info/entry_points.txt +0 -0
  48. {agentic_dev_loop-1.0.0a21 → agentic_dev_loop-1.0.0a22}/src/agentic_dev_loop.egg-info/requires.txt +0 -0
  49. {agentic_dev_loop-1.0.0a21 → agentic_dev_loop-1.0.0a22}/src/agentic_dev_loop.egg-info/top_level.txt +0 -0
  50. {agentic_dev_loop-1.0.0a21 → agentic_dev_loop-1.0.0a22}/tests/test_actions.py +0 -0
  51. {agentic_dev_loop-1.0.0a21 → agentic_dev_loop-1.0.0a22}/tests/test_agents.py +0 -0
  52. {agentic_dev_loop-1.0.0a21 → agentic_dev_loop-1.0.0a22}/tests/test_aidlc.py +0 -0
  53. {agentic_dev_loop-1.0.0a21 → agentic_dev_loop-1.0.0a22}/tests/test_cli.py +0 -0
  54. {agentic_dev_loop-1.0.0a21 → agentic_dev_loop-1.0.0a22}/tests/test_config.py +0 -0
  55. {agentic_dev_loop-1.0.0a21 → agentic_dev_loop-1.0.0a22}/tests/test_deps.py +0 -0
  56. {agentic_dev_loop-1.0.0a21 → agentic_dev_loop-1.0.0a22}/tests/test_dry_run.py +0 -0
  57. {agentic_dev_loop-1.0.0a21 → agentic_dev_loop-1.0.0a22}/tests/test_e2e_fixtures.py +0 -0
  58. {agentic_dev_loop-1.0.0a21 → agentic_dev_loop-1.0.0a22}/tests/test_egress_proxy.py +0 -0
  59. {agentic_dev_loop-1.0.0a21 → agentic_dev_loop-1.0.0a22}/tests/test_graph.py +0 -0
  60. {agentic_dev_loop-1.0.0a21 → agentic_dev_loop-1.0.0a22}/tests/test_hostboundary.py +0 -0
  61. {agentic_dev_loop-1.0.0a21 → agentic_dev_loop-1.0.0a22}/tests/test_hostboundary_integration.py +0 -0
  62. {agentic_dev_loop-1.0.0a21 → agentic_dev_loop-1.0.0a22}/tests/test_isolation_integration.py +0 -0
  63. {agentic_dev_loop-1.0.0a21 → agentic_dev_loop-1.0.0a22}/tests/test_isolation_pbt.py +0 -0
  64. {agentic_dev_loop-1.0.0a21 → agentic_dev_loop-1.0.0a22}/tests/test_llm.py +0 -0
  65. {agentic_dev_loop-1.0.0a21 → agentic_dev_loop-1.0.0a22}/tests/test_loaders.py +0 -0
  66. {agentic_dev_loop-1.0.0a21 → agentic_dev_loop-1.0.0a22}/tests/test_module_contract.py +0 -0
  67. {agentic_dev_loop-1.0.0a21 → agentic_dev_loop-1.0.0a22}/tests/test_outputs.py +0 -0
  68. {agentic_dev_loop-1.0.0a21 → agentic_dev_loop-1.0.0a22}/tests/test_outputs_pbt.py +0 -0
  69. {agentic_dev_loop-1.0.0a21 → agentic_dev_loop-1.0.0a22}/tests/test_proc.py +0 -0
  70. {agentic_dev_loop-1.0.0a21 → agentic_dev_loop-1.0.0a22}/tests/test_publish.py +0 -0
  71. {agentic_dev_loop-1.0.0a21 → agentic_dev_loop-1.0.0a22}/tests/test_qa_prompt.py +0 -0
  72. {agentic_dev_loop-1.0.0a21 → agentic_dev_loop-1.0.0a22}/tests/test_registry.py +0 -0
  73. {agentic_dev_loop-1.0.0a21 → agentic_dev_loop-1.0.0a22}/tests/test_repo_ascii.py +0 -0
  74. {agentic_dev_loop-1.0.0a21 → agentic_dev_loop-1.0.0a22}/tests/test_results.py +0 -0
  75. {agentic_dev_loop-1.0.0a21 → agentic_dev_loop-1.0.0a22}/tests/test_sdk_compat.py +0 -0
  76. {agentic_dev_loop-1.0.0a21 → agentic_dev_loop-1.0.0a22}/tests/test_secrets.py +0 -0
  77. {agentic_dev_loop-1.0.0a21 → agentic_dev_loop-1.0.0a22}/tests/test_secrets_integration.py +0 -0
  78. {agentic_dev_loop-1.0.0a21 → agentic_dev_loop-1.0.0a22}/tests/test_secrets_pipeline.py +0 -0
  79. {agentic_dev_loop-1.0.0a21 → agentic_dev_loop-1.0.0a22}/tests/test_source_resolution.py +0 -0
  80. {agentic_dev_loop-1.0.0a21 → agentic_dev_loop-1.0.0a22}/tests/test_stages.py +0 -0
  81. {agentic_dev_loop-1.0.0a21 → agentic_dev_loop-1.0.0a22}/tests/test_step_workspace.py +0 -0
  82. {agentic_dev_loop-1.0.0a21 → agentic_dev_loop-1.0.0a22}/tests/test_sync_back.py +0 -0
  83. {agentic_dev_loop-1.0.0a21 → agentic_dev_loop-1.0.0a22}/tests/test_trigger_script.py +0 -0
  84. {agentic_dev_loop-1.0.0a21 → agentic_dev_loop-1.0.0a22}/tests/test_unit5_config.py +0 -0
  85. {agentic_dev_loop-1.0.0a21 → agentic_dev_loop-1.0.0a22}/tests/test_unit5_pbt.py +0 -0
  86. {agentic_dev_loop-1.0.0a21 → agentic_dev_loop-1.0.0a22}/tests/test_unit5_pure.py +0 -0
  87. {agentic_dev_loop-1.0.0a21 → agentic_dev_loop-1.0.0a22}/tests/test_verdict.py +0 -0
  88. {agentic_dev_loop-1.0.0a21 → agentic_dev_loop-1.0.0a22}/tests/test_viz.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agentic-dev-loop
3
- Version: 1.0.0a21
3
+ Version: 1.0.0a22
4
4
  Summary: Turn an LLM into a gated, sandboxed, resumable construction loop over your codebase.
5
5
  Author: Luke Wilson
6
6
  License-Expression: Apache-2.0
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "agentic-dev-loop"
7
- version = "1.0.0a21"
7
+ version = "1.0.0a22"
8
8
  description = "Turn an LLM into a gated, sandboxed, resumable construction loop over your codebase."
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.12"
@@ -524,7 +524,7 @@ def repair_venv_shebangs(venv_dir: str | Path, *,
524
524
  if not bin_dir.is_dir():
525
525
  return
526
526
  target = str(Path(export_root) / SANDBOX_VENV_DIR / "bin" / "python")
527
- stale_prefix = str(Path(state_dir) / "exports").rstrip("/\\") + "/"
527
+ stale_prefix = (Path(state_dir) / "exports").as_posix() + "/"
528
528
  for entry in sorted(bin_dir.iterdir()):
529
529
  if entry.is_symlink() or not entry.is_file():
530
530
  continue
@@ -539,7 +539,7 @@ def repair_venv_shebangs(venv_dir: str | Path, *,
539
539
  interpreter = line[2:].strip()
540
540
  if not interpreter or interpreter == target:
541
541
  continue
542
- if not interpreter.startswith(stale_prefix):
542
+ if not interpreter.replace("\\", "/").startswith(stale_prefix):
543
543
  continue
544
544
  _rewrite_shebang(entry, target)
545
545
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agentic-dev-loop
3
- Version: 1.0.0a21
3
+ Version: 1.0.0a22
4
4
  Summary: Turn an LLM into a gated, sandboxed, resumable construction loop over your codebase.
5
5
  Author: Luke Wilson
6
6
  License-Expression: Apache-2.0
@@ -239,3 +239,21 @@ class TestRepairVenvShebangs:
239
239
 
240
240
  repair_venv_shebangs(venv, state_dir=state, export_root=new_export)
241
241
  assert script.read_text().splitlines()[0] == f"#!{new_python}"
242
+
243
+ def test_repair_detects_backslash_separated_stale_shebangs(self, tmp_path):
244
+ """Windows-written venv shebangs (backslash separators) must be
245
+ detected as stale and repaired, never silently skipped (a21 CI)."""
246
+ venv = tmp_path / "venv"
247
+ (venv / "bin").mkdir(parents=True)
248
+ state = tmp_path / "state"
249
+ new_export = state / "exports" / "bbbb"
250
+ new_python = new_export / ".venv-sandbox" / "bin" / "python"
251
+ new_python.parent.mkdir(parents=True)
252
+ new_python.write_text("#!/bin/sh\n")
253
+ stale = str(state / "exports" / "aaaa" / ".venv-sandbox"
254
+ / "bin" / "python").replace("/", "\\")
255
+ (venv / "bin" / "pip").write_text(f"#!{stale}\nprint('hi')\n")
256
+
257
+ repair_venv_shebangs(venv, state_dir=state, export_root=new_export)
258
+
259
+ assert (venv / "bin" / "pip").read_text().splitlines()[0] == f"#!{new_python}"
@@ -1646,7 +1646,7 @@ class TestDeclaredCachesAndSyncExcludes:
1646
1646
  cfg.isolation.sandbox_venv_dir = str(venv_dir)
1647
1647
  ws, _runner, sandbox = self._startup(tmp_path, monkeypatch, cfg)
1648
1648
  try:
1649
- target = f"#!{sandbox.export_root}/.venv-sandbox/bin/python"
1649
+ target = f"#!{Path(sandbox.export_root) / '.venv-sandbox' / 'bin' / 'python'}"
1650
1650
  first = (venv_dir / "bin" / "pip").read_text().splitlines()[0]
1651
1651
  assert first == target
1652
1652
  finally: