agentic-dev-loop 0.12.0__tar.gz → 0.12.1__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.
- {agentic_dev_loop-0.12.0/src/agentic_dev_loop.egg-info → agentic_dev_loop-0.12.1}/PKG-INFO +40 -2
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/README.md +39 -1
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/pyproject.toml +1 -1
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1/src/agentic_dev_loop.egg-info}/PKG-INFO +40 -2
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/LICENSE +0 -0
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/setup.cfg +0 -0
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/src/agentic_dev_loop/__init__.py +0 -0
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/src/agentic_dev_loop/core/__init__.py +0 -0
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/src/agentic_dev_loop/core/config.py +0 -0
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/src/agentic_dev_loop/core/paths.py +0 -0
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/src/agentic_dev_loop/core/profiles/__init__.py +0 -0
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/src/agentic_dev_loop/core/profiles/data/dotnet-node.yaml +0 -0
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/src/agentic_dev_loop/core/profiles/data/python.yaml +0 -0
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/src/agentic_dev_loop/core/results.py +0 -0
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/src/agentic_dev_loop/core/verdict.py +0 -0
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/src/agentic_dev_loop/engine/__init__.py +0 -0
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/src/agentic_dev_loop/engine/actions.py +0 -0
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/src/agentic_dev_loop/engine/agent_error_guide.md +0 -0
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/src/agentic_dev_loop/engine/agent_error_guide.py +0 -0
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/src/agentic_dev_loop/engine/agents.py +0 -0
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/src/agentic_dev_loop/engine/allowlist.py +0 -0
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/src/agentic_dev_loop/engine/brief_coverage.py +0 -0
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/src/agentic_dev_loop/engine/brief_prompt.md +0 -0
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/src/agentic_dev_loop/engine/brief_prompt.py +0 -0
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/src/agentic_dev_loop/engine/cli.py +0 -0
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/src/agentic_dev_loop/engine/containers.py +0 -0
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/src/agentic_dev_loop/engine/copilot_auth.py +0 -0
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/src/agentic_dev_loop/engine/deps.py +0 -0
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/src/agentic_dev_loop/engine/dryrun.py +0 -0
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/src/agentic_dev_loop/engine/egress_policy.py +0 -0
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/src/agentic_dev_loop/engine/egress_proxy.py +0 -0
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/src/agentic_dev_loop/engine/extensions/__init__.py +0 -0
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/src/agentic_dev_loop/engine/extensions/aidlc.py +0 -0
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/src/agentic_dev_loop/engine/forbidden.py +0 -0
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/src/agentic_dev_loop/engine/graph.py +0 -0
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/src/agentic_dev_loop/engine/hostboundary.py +0 -0
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/src/agentic_dev_loop/engine/isolation.py +0 -0
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/src/agentic_dev_loop/engine/llm.py +0 -0
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/src/agentic_dev_loop/engine/loaders.py +0 -0
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/src/agentic_dev_loop/engine/mounts.py +0 -0
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/src/agentic_dev_loop/engine/onboarding/__init__.py +0 -0
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/src/agentic_dev_loop/engine/onboarding/checks.py +0 -0
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/src/agentic_dev_loop/engine/onboarding/doctor.py +0 -0
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/src/agentic_dev_loop/engine/onboarding/init.py +0 -0
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/src/agentic_dev_loop/engine/onboarding/recipes/dotnet-node.yaml +0 -0
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/src/agentic_dev_loop/engine/onboarding/recipes/python.yaml +0 -0
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/src/agentic_dev_loop/engine/onboarding/recipes.py +0 -0
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/src/agentic_dev_loop/engine/onboarding/templates/dev.agent.md +0 -0
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/src/agentic_dev_loop/engine/onboarding/templates/env.example +0 -0
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/src/agentic_dev_loop/engine/onboarding/templates/qa.agent.md +0 -0
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/src/agentic_dev_loop/engine/onboarding/templates/review.agent.md +0 -0
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/src/agentic_dev_loop/engine/onboarding/templates/trigger-agentic-dev-loop.sh +0 -0
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/src/agentic_dev_loop/engine/onboarding/templates.py +0 -0
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/src/agentic_dev_loop/engine/onboarding/upgrade.py +0 -0
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/src/agentic_dev_loop/engine/outputs.py +0 -0
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/src/agentic_dev_loop/engine/presets.py +0 -0
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/src/agentic_dev_loop/engine/proc.py +0 -0
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/src/agentic_dev_loop/engine/provider_wire.py +0 -0
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/src/agentic_dev_loop/engine/registry.py +0 -0
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/src/agentic_dev_loop/engine/seccomp/__init__.py +0 -0
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/src/agentic_dev_loop/engine/seccomp/chromium-userns.json +0 -0
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/src/agentic_dev_loop/engine/secrets.py +0 -0
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/src/agentic_dev_loop/engine/stages.py +0 -0
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/src/agentic_dev_loop/engine/step_workspace.py +0 -0
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/src/agentic_dev_loop/engine/sync_back.py +0 -0
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/src/agentic_dev_loop/py.typed +0 -0
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/src/agentic_dev_loop/viz/__init__.py +0 -0
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/src/agentic_dev_loop/viz/__main__.py +0 -0
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/src/agentic_dev_loop/viz/layout.py +0 -0
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/src/agentic_dev_loop/viz/page.py +0 -0
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/src/agentic_dev_loop/viz/server.py +0 -0
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/src/agentic_dev_loop.egg-info/SOURCES.txt +0 -0
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/src/agentic_dev_loop.egg-info/dependency_links.txt +0 -0
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/src/agentic_dev_loop.egg-info/entry_points.txt +0 -0
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/src/agentic_dev_loop.egg-info/requires.txt +0 -0
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/src/agentic_dev_loop.egg-info/top_level.txt +0 -0
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/tests/test_029_merge_on_conflict.py +0 -0
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/tests/test_033_brief_step.py +0 -0
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/tests/test_035_finalize_nudge.py +0 -0
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/tests/test_036_banned_commands_and_lane_boundary.py +0 -0
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/tests/test_041_brief_coverage.py +0 -0
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/tests/test_046_brief_prompt.py +0 -0
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/tests/test_055_cli.py +0 -0
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/tests/test_055_doctor.py +0 -0
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/tests/test_055_init.py +0 -0
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/tests/test_055_profile_loading.py +0 -0
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/tests/test_055_profiles.py +0 -0
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/tests/test_055_recipes.py +0 -0
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/tests/test_055_schema_lock.py +0 -0
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/tests/test_055_templates.py +0 -0
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/tests/test_055_upgrade.py +0 -0
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/tests/test_actions.py +0 -0
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/tests/test_agent_error_guide.py +0 -0
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/tests/test_agents.py +0 -0
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/tests/test_aidlc.py +0 -0
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/tests/test_build_viz_page.py +0 -0
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/tests/test_cli.py +0 -0
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/tests/test_config.py +0 -0
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/tests/test_containers.py +0 -0
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/tests/test_copilot_auth.py +0 -0
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/tests/test_copilot_cli.py +0 -0
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/tests/test_deps.py +0 -0
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/tests/test_dry_run.py +0 -0
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/tests/test_e2e_fixtures.py +0 -0
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/tests/test_egress_proxy.py +0 -0
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/tests/test_graph.py +0 -0
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/tests/test_hostboundary.py +0 -0
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/tests/test_hostboundary_integration.py +0 -0
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/tests/test_isolation.py +0 -0
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/tests/test_isolation_integration.py +0 -0
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/tests/test_isolation_pbt.py +0 -0
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/tests/test_llm.py +0 -0
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/tests/test_loaders.py +0 -0
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/tests/test_module_contract.py +0 -0
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/tests/test_outputs.py +0 -0
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/tests/test_outputs_pbt.py +0 -0
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/tests/test_proc.py +0 -0
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/tests/test_provider_wire.py +0 -0
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/tests/test_publish.py +0 -0
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/tests/test_qa_prompt.py +0 -0
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/tests/test_registry.py +0 -0
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/tests/test_repo_ascii.py +0 -0
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/tests/test_results.py +0 -0
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/tests/test_sdk_compat.py +0 -0
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/tests/test_secrets.py +0 -0
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/tests/test_secrets_integration.py +0 -0
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/tests/test_secrets_pipeline.py +0 -0
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/tests/test_source_resolution.py +0 -0
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/tests/test_stages.py +0 -0
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/tests/test_step_workspace.py +0 -0
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/tests/test_sync_back.py +0 -0
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/tests/test_trigger_script.py +0 -0
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/tests/test_unit5_config.py +0 -0
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/tests/test_unit5_pbt.py +0 -0
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/tests/test_unit5_pure.py +0 -0
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/tests/test_verdict.py +0 -0
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/tests/test_viz.py +0 -0
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/tests/test_viz_demo.py +0 -0
- {agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/tests/test_viz_layout.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: agentic-dev-loop
|
|
3
|
-
Version: 0.12.
|
|
3
|
+
Version: 0.12.1
|
|
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
|
|
@@ -60,6 +60,10 @@ checkpointed, and nothing gets committed until every gate passes.
|
|
|
60
60
|
parsed from files, retries are bounded, nothing is best-effort.
|
|
61
61
|
- **Sandboxed by default.** The agent's shell and every command step run inside
|
|
62
62
|
an always-on Docker sandbox. There is no opt-out.
|
|
63
|
+
- **Any OpenAI-compatible model, or your Copilot subscription.** Point
|
|
64
|
+
`llm.base_url` at any OpenAI-compatible endpoint with an API key, or log in
|
|
65
|
+
with `agentic-dev-loop copilot-login` and run on Copilot models. See
|
|
66
|
+
[LLM providers](#llm-providers).
|
|
63
67
|
|
|
64
68
|
---
|
|
65
69
|
|
|
@@ -94,6 +98,40 @@ Docker engine does:
|
|
|
94
98
|
Native Windows (outside WSL2) is not supported: every Windows-specific code
|
|
95
99
|
path and test was removed, and CI runs on Ubuntu only.
|
|
96
100
|
|
|
101
|
+
## LLM providers
|
|
102
|
+
|
|
103
|
+
Two ways to run the same pipeline. The engine speaks OpenAI-compatible wire
|
|
104
|
+
format throughout, so every step, profile, and gate works identically on
|
|
105
|
+
either provider style:
|
|
106
|
+
|
|
107
|
+
| Provider | Setup |
|
|
108
|
+
| --- | --- |
|
|
109
|
+
| **Any OpenAI-compatible endpoint** | API key via `api_key_env` + `base_url` in the `llm:` block: DeepSeek, OpenAI, or any OpenAI-compatible API. Full reference: [pipeline.yaml reference](#pipelineyaml-reference). |
|
|
110
|
+
| **GitHub Copilot subscription** | `agentic-dev-loop copilot-login` once, then point the `llm:` block at `https://api.githubcopilot.com` with the file-backed token. Probe-validated pins: `openai/gpt-5.6-luna` (pro) and `openai/gpt-4.1` (lite). Full config and known limitations: [Copilot subscription endpoint](#copilot-subscription-endpoint). |
|
|
111
|
+
|
|
112
|
+
```yaml
|
|
113
|
+
# OpenAI-compatible endpoint (any provider)
|
|
114
|
+
llm:
|
|
115
|
+
model: openai/deepseek-v4-pro
|
|
116
|
+
base_url: https://api.deepseek.com
|
|
117
|
+
api_key_env: OPENAI_API_KEY
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
```yaml
|
|
121
|
+
# GitHub Copilot subscription
|
|
122
|
+
llm:
|
|
123
|
+
model: openai/gpt-5.6-luna # pro; probe-validated pin
|
|
124
|
+
base_url: https://api.githubcopilot.com
|
|
125
|
+
api_key_secret:
|
|
126
|
+
from: file
|
|
127
|
+
key: ~/.agentic-dev-loop/auth/copilot.json
|
|
128
|
+
json_key: access_token
|
|
129
|
+
headers:
|
|
130
|
+
Copilot-Integration-Id: vscode-chat
|
|
131
|
+
Editor-Version: vscode/1.94.0
|
|
132
|
+
Openai-Intent: conversation-panel
|
|
133
|
+
```
|
|
134
|
+
|
|
97
135
|
## Installation
|
|
98
136
|
|
|
99
137
|
**Prerequisites**
|
|
@@ -102,7 +140,7 @@ path and test was removed, and CI runs on Ubuntu only.
|
|
|
102
140
|
| --- | --- |
|
|
103
141
|
| Python | ≥ 3.12 |
|
|
104
142
|
| Docker engine | Engine API ≥ 1.43 (Engine 24). Any compliant engine works - Docker Desktop, OrbStack, Colima, Rancher Desktop, podman docker-compat. On Windows, run under WSL2: the repo must live on the WSL filesystem, not /mnt/c. |
|
|
105
|
-
| LLM API key | The env var named by your pipeline's `api_key_env` (e.g. `OPENAI_API_KEY`) must be set - a missing key fails fast, naming it. |
|
|
143
|
+
| LLM API key | The env var named by your pipeline's `api_key_env` (e.g. `OPENAI_API_KEY`) must be set - a missing key fails fast, naming it. Alternatively, `agentic-dev-loop copilot-login` authenticates a Copilot subscription (see [LLM providers](#llm-providers)). |
|
|
106
144
|
|
|
107
145
|
```bash
|
|
108
146
|
pip install "agentic-dev-loop==1.0.0a17"
|
|
@@ -16,6 +16,10 @@ checkpointed, and nothing gets committed until every gate passes.
|
|
|
16
16
|
parsed from files, retries are bounded, nothing is best-effort.
|
|
17
17
|
- **Sandboxed by default.** The agent's shell and every command step run inside
|
|
18
18
|
an always-on Docker sandbox. There is no opt-out.
|
|
19
|
+
- **Any OpenAI-compatible model, or your Copilot subscription.** Point
|
|
20
|
+
`llm.base_url` at any OpenAI-compatible endpoint with an API key, or log in
|
|
21
|
+
with `agentic-dev-loop copilot-login` and run on Copilot models. See
|
|
22
|
+
[LLM providers](#llm-providers).
|
|
19
23
|
|
|
20
24
|
---
|
|
21
25
|
|
|
@@ -50,6 +54,40 @@ Docker engine does:
|
|
|
50
54
|
Native Windows (outside WSL2) is not supported: every Windows-specific code
|
|
51
55
|
path and test was removed, and CI runs on Ubuntu only.
|
|
52
56
|
|
|
57
|
+
## LLM providers
|
|
58
|
+
|
|
59
|
+
Two ways to run the same pipeline. The engine speaks OpenAI-compatible wire
|
|
60
|
+
format throughout, so every step, profile, and gate works identically on
|
|
61
|
+
either provider style:
|
|
62
|
+
|
|
63
|
+
| Provider | Setup |
|
|
64
|
+
| --- | --- |
|
|
65
|
+
| **Any OpenAI-compatible endpoint** | API key via `api_key_env` + `base_url` in the `llm:` block: DeepSeek, OpenAI, or any OpenAI-compatible API. Full reference: [pipeline.yaml reference](#pipelineyaml-reference). |
|
|
66
|
+
| **GitHub Copilot subscription** | `agentic-dev-loop copilot-login` once, then point the `llm:` block at `https://api.githubcopilot.com` with the file-backed token. Probe-validated pins: `openai/gpt-5.6-luna` (pro) and `openai/gpt-4.1` (lite). Full config and known limitations: [Copilot subscription endpoint](#copilot-subscription-endpoint). |
|
|
67
|
+
|
|
68
|
+
```yaml
|
|
69
|
+
# OpenAI-compatible endpoint (any provider)
|
|
70
|
+
llm:
|
|
71
|
+
model: openai/deepseek-v4-pro
|
|
72
|
+
base_url: https://api.deepseek.com
|
|
73
|
+
api_key_env: OPENAI_API_KEY
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
```yaml
|
|
77
|
+
# GitHub Copilot subscription
|
|
78
|
+
llm:
|
|
79
|
+
model: openai/gpt-5.6-luna # pro; probe-validated pin
|
|
80
|
+
base_url: https://api.githubcopilot.com
|
|
81
|
+
api_key_secret:
|
|
82
|
+
from: file
|
|
83
|
+
key: ~/.agentic-dev-loop/auth/copilot.json
|
|
84
|
+
json_key: access_token
|
|
85
|
+
headers:
|
|
86
|
+
Copilot-Integration-Id: vscode-chat
|
|
87
|
+
Editor-Version: vscode/1.94.0
|
|
88
|
+
Openai-Intent: conversation-panel
|
|
89
|
+
```
|
|
90
|
+
|
|
53
91
|
## Installation
|
|
54
92
|
|
|
55
93
|
**Prerequisites**
|
|
@@ -58,7 +96,7 @@ path and test was removed, and CI runs on Ubuntu only.
|
|
|
58
96
|
| --- | --- |
|
|
59
97
|
| Python | ≥ 3.12 |
|
|
60
98
|
| Docker engine | Engine API ≥ 1.43 (Engine 24). Any compliant engine works - Docker Desktop, OrbStack, Colima, Rancher Desktop, podman docker-compat. On Windows, run under WSL2: the repo must live on the WSL filesystem, not /mnt/c. |
|
|
61
|
-
| LLM API key | The env var named by your pipeline's `api_key_env` (e.g. `OPENAI_API_KEY`) must be set - a missing key fails fast, naming it. |
|
|
99
|
+
| LLM API key | The env var named by your pipeline's `api_key_env` (e.g. `OPENAI_API_KEY`) must be set - a missing key fails fast, naming it. Alternatively, `agentic-dev-loop copilot-login` authenticates a Copilot subscription (see [LLM providers](#llm-providers)). |
|
|
62
100
|
|
|
63
101
|
```bash
|
|
64
102
|
pip install "agentic-dev-loop==1.0.0a17"
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "agentic-dev-loop"
|
|
7
|
-
version = "0.12.
|
|
7
|
+
version = "0.12.1"
|
|
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"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: agentic-dev-loop
|
|
3
|
-
Version: 0.12.
|
|
3
|
+
Version: 0.12.1
|
|
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
|
|
@@ -60,6 +60,10 @@ checkpointed, and nothing gets committed until every gate passes.
|
|
|
60
60
|
parsed from files, retries are bounded, nothing is best-effort.
|
|
61
61
|
- **Sandboxed by default.** The agent's shell and every command step run inside
|
|
62
62
|
an always-on Docker sandbox. There is no opt-out.
|
|
63
|
+
- **Any OpenAI-compatible model, or your Copilot subscription.** Point
|
|
64
|
+
`llm.base_url` at any OpenAI-compatible endpoint with an API key, or log in
|
|
65
|
+
with `agentic-dev-loop copilot-login` and run on Copilot models. See
|
|
66
|
+
[LLM providers](#llm-providers).
|
|
63
67
|
|
|
64
68
|
---
|
|
65
69
|
|
|
@@ -94,6 +98,40 @@ Docker engine does:
|
|
|
94
98
|
Native Windows (outside WSL2) is not supported: every Windows-specific code
|
|
95
99
|
path and test was removed, and CI runs on Ubuntu only.
|
|
96
100
|
|
|
101
|
+
## LLM providers
|
|
102
|
+
|
|
103
|
+
Two ways to run the same pipeline. The engine speaks OpenAI-compatible wire
|
|
104
|
+
format throughout, so every step, profile, and gate works identically on
|
|
105
|
+
either provider style:
|
|
106
|
+
|
|
107
|
+
| Provider | Setup |
|
|
108
|
+
| --- | --- |
|
|
109
|
+
| **Any OpenAI-compatible endpoint** | API key via `api_key_env` + `base_url` in the `llm:` block: DeepSeek, OpenAI, or any OpenAI-compatible API. Full reference: [pipeline.yaml reference](#pipelineyaml-reference). |
|
|
110
|
+
| **GitHub Copilot subscription** | `agentic-dev-loop copilot-login` once, then point the `llm:` block at `https://api.githubcopilot.com` with the file-backed token. Probe-validated pins: `openai/gpt-5.6-luna` (pro) and `openai/gpt-4.1` (lite). Full config and known limitations: [Copilot subscription endpoint](#copilot-subscription-endpoint). |
|
|
111
|
+
|
|
112
|
+
```yaml
|
|
113
|
+
# OpenAI-compatible endpoint (any provider)
|
|
114
|
+
llm:
|
|
115
|
+
model: openai/deepseek-v4-pro
|
|
116
|
+
base_url: https://api.deepseek.com
|
|
117
|
+
api_key_env: OPENAI_API_KEY
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
```yaml
|
|
121
|
+
# GitHub Copilot subscription
|
|
122
|
+
llm:
|
|
123
|
+
model: openai/gpt-5.6-luna # pro; probe-validated pin
|
|
124
|
+
base_url: https://api.githubcopilot.com
|
|
125
|
+
api_key_secret:
|
|
126
|
+
from: file
|
|
127
|
+
key: ~/.agentic-dev-loop/auth/copilot.json
|
|
128
|
+
json_key: access_token
|
|
129
|
+
headers:
|
|
130
|
+
Copilot-Integration-Id: vscode-chat
|
|
131
|
+
Editor-Version: vscode/1.94.0
|
|
132
|
+
Openai-Intent: conversation-panel
|
|
133
|
+
```
|
|
134
|
+
|
|
97
135
|
## Installation
|
|
98
136
|
|
|
99
137
|
**Prerequisites**
|
|
@@ -102,7 +140,7 @@ path and test was removed, and CI runs on Ubuntu only.
|
|
|
102
140
|
| --- | --- |
|
|
103
141
|
| Python | ≥ 3.12 |
|
|
104
142
|
| Docker engine | Engine API ≥ 1.43 (Engine 24). Any compliant engine works - Docker Desktop, OrbStack, Colima, Rancher Desktop, podman docker-compat. On Windows, run under WSL2: the repo must live on the WSL filesystem, not /mnt/c. |
|
|
105
|
-
| LLM API key | The env var named by your pipeline's `api_key_env` (e.g. `OPENAI_API_KEY`) must be set - a missing key fails fast, naming it. |
|
|
143
|
+
| LLM API key | The env var named by your pipeline's `api_key_env` (e.g. `OPENAI_API_KEY`) must be set - a missing key fails fast, naming it. Alternatively, `agentic-dev-loop copilot-login` authenticates a Copilot subscription (see [LLM providers](#llm-providers)). |
|
|
106
144
|
|
|
107
145
|
```bash
|
|
108
146
|
pip install "agentic-dev-loop==1.0.0a17"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/src/agentic_dev_loop/core/profiles/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/src/agentic_dev_loop/engine/agent_error_guide.md
RENAMED
|
File without changes
|
{agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/src/agentic_dev_loop/engine/agent_error_guide.py
RENAMED
|
File without changes
|
|
File without changes
|
{agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/src/agentic_dev_loop/engine/allowlist.py
RENAMED
|
File without changes
|
{agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/src/agentic_dev_loop/engine/brief_coverage.py
RENAMED
|
File without changes
|
{agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/src/agentic_dev_loop/engine/brief_prompt.md
RENAMED
|
File without changes
|
{agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/src/agentic_dev_loop/engine/brief_prompt.py
RENAMED
|
File without changes
|
|
File without changes
|
{agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/src/agentic_dev_loop/engine/containers.py
RENAMED
|
File without changes
|
{agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/src/agentic_dev_loop/engine/copilot_auth.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/src/agentic_dev_loop/engine/egress_policy.py
RENAMED
|
File without changes
|
{agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/src/agentic_dev_loop/engine/egress_proxy.py
RENAMED
|
File without changes
|
|
File without changes
|
{agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/src/agentic_dev_loop/engine/extensions/aidlc.py
RENAMED
|
File without changes
|
{agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/src/agentic_dev_loop/engine/forbidden.py
RENAMED
|
File without changes
|
|
File without changes
|
{agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/src/agentic_dev_loop/engine/hostboundary.py
RENAMED
|
File without changes
|
{agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/src/agentic_dev_loop/engine/isolation.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/src/agentic_dev_loop/engine/onboarding/checks.py
RENAMED
|
File without changes
|
{agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/src/agentic_dev_loop/engine/onboarding/doctor.py
RENAMED
|
File without changes
|
{agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/src/agentic_dev_loop/engine/onboarding/init.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
|
{agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/src/agentic_dev_loop/engine/provider_wire.py
RENAMED
|
File without changes
|
|
File without changes
|
{agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/src/agentic_dev_loop/engine/seccomp/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/src/agentic_dev_loop/engine/step_workspace.py
RENAMED
|
File without changes
|
{agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/src/agentic_dev_loop/engine/sync_back.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/src/agentic_dev_loop.egg-info/SOURCES.txt
RENAMED
|
File without changes
|
|
File without changes
|
{agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/src/agentic_dev_loop.egg-info/entry_points.txt
RENAMED
|
File without changes
|
{agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/src/agentic_dev_loop.egg-info/requires.txt
RENAMED
|
File without changes
|
{agentic_dev_loop-0.12.0 → agentic_dev_loop-0.12.1}/src/agentic_dev_loop.egg-info/top_level.txt
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
|