deeploop 0.1.0__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.
- deeploop-0.1.0/LICENSE +21 -0
- deeploop-0.1.0/PKG-INFO +210 -0
- deeploop-0.1.0/README.md +171 -0
- deeploop-0.1.0/pyproject.toml +67 -0
- deeploop-0.1.0/setup.cfg +4 -0
- deeploop-0.1.0/src/deeploop/__init__.py +1 -0
- deeploop-0.1.0/src/deeploop/artifacts/__init__.py +2 -0
- deeploop-0.1.0/src/deeploop/artifacts/artifact_packager.py +1046 -0
- deeploop-0.1.0/src/deeploop/artifacts/mission_package.py +121 -0
- deeploop-0.1.0/src/deeploop/artifacts/release_automation.py +444 -0
- deeploop-0.1.0/src/deeploop/autonomy/__init__.py +2 -0
- deeploop-0.1.0/src/deeploop/autonomy/gate_taxonomy.py +312 -0
- deeploop-0.1.0/src/deeploop/autonomy/mission_autonomy.py +238 -0
- deeploop-0.1.0/src/deeploop/autonomy/mission_contract_snapshot.py +146 -0
- deeploop-0.1.0/src/deeploop/autonomy/operating_modes.py +53 -0
- deeploop-0.1.0/src/deeploop/autonomy/operator_inbox.py +198 -0
- deeploop-0.1.0/src/deeploop/cli/__init__.py +1 -0
- deeploop-0.1.0/src/deeploop/cli/analyze.py +235 -0
- deeploop-0.1.0/src/deeploop/cli/init_mission.py +49 -0
- deeploop-0.1.0/src/deeploop/cli/package_mission.py +34 -0
- deeploop-0.1.0/src/deeploop/cli/run_project.py +59 -0
- deeploop-0.1.0/src/deeploop/core/__init__.py +2 -0
- deeploop-0.1.0/src/deeploop/core/config_paths.py +22 -0
- deeploop-0.1.0/src/deeploop/core/dotted.py +16 -0
- deeploop-0.1.0/src/deeploop/core/ledger.py +39 -0
- deeploop-0.1.0/src/deeploop/core/paths.py +66 -0
- deeploop-0.1.0/src/deeploop/core/structured_io.py +96 -0
- deeploop-0.1.0/src/deeploop/fresh_context_redteam.py +382 -0
- deeploop-0.1.0/src/deeploop/mission/__init__.py +2 -0
- deeploop-0.1.0/src/deeploop/mission/_autonomy_gap_telemetry.py +287 -0
- deeploop-0.1.0/src/deeploop/mission/_constants.py +19 -0
- deeploop-0.1.0/src/deeploop/mission/_monitor_classification.py +1071 -0
- deeploop-0.1.0/src/deeploop/mission/_monitor_render.py +574 -0
- deeploop-0.1.0/src/deeploop/mission/_monitor_snapshot.py +266 -0
- deeploop-0.1.0/src/deeploop/mission/_operator_surface.py +475 -0
- deeploop-0.1.0/src/deeploop/mission/_runtime_contract.py +76 -0
- deeploop-0.1.0/src/deeploop/mission/_runtime_persistence.py +360 -0
- deeploop-0.1.0/src/deeploop/mission/mission_decision_engine.py +1582 -0
- deeploop-0.1.0/src/deeploop/mission/mission_management.py +1468 -0
- deeploop-0.1.0/src/deeploop/mission/mission_memory.py +732 -0
- deeploop-0.1.0/src/deeploop/mission/mission_monitor.py +6 -0
- deeploop-0.1.0/src/deeploop/mission/mission_progress.py +9 -0
- deeploop-0.1.0/src/deeploop/mission/mission_runtime.py +2028 -0
- deeploop-0.1.0/src/deeploop/mission/mission_scheduler.py +880 -0
- deeploop-0.1.0/src/deeploop/mission/mission_state.py +47 -0
- deeploop-0.1.0/src/deeploop/mission/orchestrator.py +472 -0
- deeploop-0.1.0/src/deeploop/mission/plain_folder_followup.py +227 -0
- deeploop-0.1.0/src/deeploop/mission/project_bootstrap.py +173 -0
- deeploop-0.1.0/src/deeploop/mission/project_runner.py +208 -0
- deeploop-0.1.0/src/deeploop/platform/__init__.py +13 -0
- deeploop-0.1.0/src/deeploop/platform/contracts.py +549 -0
- deeploop-0.1.0/src/deeploop/project_contract.py +256 -0
- deeploop-0.1.0/src/deeploop/research/__init__.py +2 -0
- deeploop-0.1.0/src/deeploop/research/confound_guard.py +1005 -0
- deeploop-0.1.0/src/deeploop/research/indexed_memory.py +553 -0
- deeploop-0.1.0/src/deeploop/research/novelty_refresh.py +529 -0
- deeploop-0.1.0/src/deeploop/research/sanity_gates.py +694 -0
- deeploop-0.1.0/src/deeploop/research/self_correction.py +624 -0
- deeploop-0.1.0/src/deeploop/research/self_optimization.py +480 -0
- deeploop-0.1.0/src/deeploop/research/statistical_rigor.py +728 -0
- deeploop-0.1.0/src/deeploop/research/utility_scorer.py +852 -0
- deeploop-0.1.0/src/deeploop/runtime/__init__.py +2 -0
- deeploop-0.1.0/src/deeploop/runtime/_prompt_renderer.py +306 -0
- deeploop-0.1.0/src/deeploop/runtime/_stage_kernel_registry.py +43 -0
- deeploop-0.1.0/src/deeploop/runtime/_stage_kernel_reporting.py +224 -0
- deeploop-0.1.0/src/deeploop/runtime/_stage_kernel_resolution.py +99 -0
- deeploop-0.1.0/src/deeploop/runtime/adaptation_training_runtime.py +646 -0
- deeploop-0.1.0/src/deeploop/runtime/copilot_adapter.py +30 -0
- deeploop-0.1.0/src/deeploop/runtime/metric_ratchets.py +169 -0
- deeploop-0.1.0/src/deeploop/runtime/mission_executor_registry.py +424 -0
- deeploop-0.1.0/src/deeploop/runtime/plain_folder_adapter.py +125 -0
- deeploop-0.1.0/src/deeploop/runtime/provider_launcher.py +800 -0
- deeploop-0.1.0/src/deeploop/runtime/recursive_agent_runtime.py +1320 -0
- deeploop-0.1.0/src/deeploop/runtime/runtime_recovery.py +289 -0
- deeploop-0.1.0/src/deeploop/runtime/sandbox.py +51 -0
- deeploop-0.1.0/src/deeploop/runtime/self_healing_runtime.py +871 -0
- deeploop-0.1.0/src/deeploop/runtime/stage_kernels.py +3715 -0
- deeploop-0.1.0/src/deeploop/testing/__init__.py +19 -0
- deeploop-0.1.0/src/deeploop/testing/acceptance_campaigns.py +198 -0
- deeploop-0.1.0/src/deeploop/testing/plain_folder_proof_matrix.py +132 -0
- deeploop-0.1.0/src/deeploop/testing/proof_matrix_reviews.py +305 -0
- deeploop-0.1.0/src/deeploop/testing/test_tiers.py +114 -0
- deeploop-0.1.0/src/deeploop.egg-info/PKG-INFO +210 -0
- deeploop-0.1.0/src/deeploop.egg-info/SOURCES.txt +126 -0
- deeploop-0.1.0/src/deeploop.egg-info/dependency_links.txt +1 -0
- deeploop-0.1.0/src/deeploop.egg-info/entry_points.txt +6 -0
- deeploop-0.1.0/src/deeploop.egg-info/requires.txt +20 -0
- deeploop-0.1.0/src/deeploop.egg-info/top_level.txt +1 -0
- deeploop-0.1.0/tests/test_acceptance_campaigns.py +104 -0
- deeploop-0.1.0/tests/test_adaptation_training_runtime.py +192 -0
- deeploop-0.1.0/tests/test_artifact_packager.py +491 -0
- deeploop-0.1.0/tests/test_confound_guard.py +155 -0
- deeploop-0.1.0/tests/test_core_paths.py +39 -0
- deeploop-0.1.0/tests/test_end_to_end_smoke.py +135 -0
- deeploop-0.1.0/tests/test_fresh_context_redteam.py +267 -0
- deeploop-0.1.0/tests/test_indexed_research_memory.py +156 -0
- deeploop-0.1.0/tests/test_metric_ratchets.py +71 -0
- deeploop-0.1.0/tests/test_mission_autonomy.py +108 -0
- deeploop-0.1.0/tests/test_mission_decision_engine.py +443 -0
- deeploop-0.1.0/tests/test_mission_executor_registry.py +258 -0
- deeploop-0.1.0/tests/test_mission_management.py +840 -0
- deeploop-0.1.0/tests/test_mission_monitor.py +921 -0
- deeploop-0.1.0/tests/test_mission_package.py +80 -0
- deeploop-0.1.0/tests/test_mission_runtime.py +2249 -0
- deeploop-0.1.0/tests/test_mission_scheduler.py +186 -0
- deeploop-0.1.0/tests/test_mission_state.py +103 -0
- deeploop-0.1.0/tests/test_novelty_refresh.py +314 -0
- deeploop-0.1.0/tests/test_package_structure.py +143 -0
- deeploop-0.1.0/tests/test_plain_folder_proof_matrix.py +87 -0
- deeploop-0.1.0/tests/test_platform_integration.py +233 -0
- deeploop-0.1.0/tests/test_project_contract.py +353 -0
- deeploop-0.1.0/tests/test_project_runner.py +539 -0
- deeploop-0.1.0/tests/test_proof_matrix_reviews.py +193 -0
- deeploop-0.1.0/tests/test_provider_launcher.py +357 -0
- deeploop-0.1.0/tests/test_public_bootstrap.py +219 -0
- deeploop-0.1.0/tests/test_record_finding.py +97 -0
- deeploop-0.1.0/tests/test_recursive_agent_runtime.py +1143 -0
- deeploop-0.1.0/tests/test_release_automation.py +177 -0
- deeploop-0.1.0/tests/test_repo_contract.py +516 -0
- deeploop-0.1.0/tests/test_runtime_recovery.py +217 -0
- deeploop-0.1.0/tests/test_sandbox.py +38 -0
- deeploop-0.1.0/tests/test_self_correction.py +214 -0
- deeploop-0.1.0/tests/test_self_healing_runtime.py +481 -0
- deeploop-0.1.0/tests/test_self_optimization.py +468 -0
- deeploop-0.1.0/tests/test_stage_kernels.py +1373 -0
- deeploop-0.1.0/tests/test_statistical_rigor.py +426 -0
- deeploop-0.1.0/tests/test_test_tiers.py +52 -0
- deeploop-0.1.0/tests/test_utility_scorer.py +599 -0
deeploop-0.1.0/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 DeepLoop contributors
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
deeploop-0.1.0/PKG-INFO
ADDED
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: deeploop
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: DeepLoop autonomous research autopilot control plane.
|
|
5
|
+
Author: DeepLoop maintainers
|
|
6
|
+
License-Expression: MIT
|
|
7
|
+
Project-URL: Homepage, https://deeplooplabs.com/
|
|
8
|
+
Project-URL: Documentation, https://github.com/tnetal/DeepLoop/tree/main/docs
|
|
9
|
+
Project-URL: Issues, https://github.com/tnetal/DeepLoop/issues
|
|
10
|
+
Project-URL: Source, https://github.com/tnetal/DeepLoop
|
|
11
|
+
Project-URL: Changelog, https://github.com/tnetal/DeepLoop/blob/main/CHANGELOG.md
|
|
12
|
+
Classifier: Development Status :: 3 - Alpha
|
|
13
|
+
Classifier: Intended Audience :: Science/Research
|
|
14
|
+
Classifier: Operating System :: POSIX :: Linux
|
|
15
|
+
Classifier: Programming Language :: Python :: 3
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
17
|
+
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
|
|
18
|
+
Requires-Python: >=3.11
|
|
19
|
+
Description-Content-Type: text/markdown
|
|
20
|
+
License-File: LICENSE
|
|
21
|
+
Requires-Dist: jsonschema
|
|
22
|
+
Requires-Dist: pandas
|
|
23
|
+
Requires-Dist: pyyaml
|
|
24
|
+
Requires-Dist: rich
|
|
25
|
+
Requires-Dist: typer
|
|
26
|
+
Provides-Extra: docs
|
|
27
|
+
Requires-Dist: mkdocs; extra == "docs"
|
|
28
|
+
Requires-Dist: mkdocs-material; extra == "docs"
|
|
29
|
+
Requires-Dist: pymdown-extensions; extra == "docs"
|
|
30
|
+
Provides-Extra: llm
|
|
31
|
+
Requires-Dist: accelerate; extra == "llm"
|
|
32
|
+
Requires-Dist: safetensors; extra == "llm"
|
|
33
|
+
Requires-Dist: sentencepiece; extra == "llm"
|
|
34
|
+
Requires-Dist: torch; extra == "llm"
|
|
35
|
+
Requires-Dist: transformers; extra == "llm"
|
|
36
|
+
Provides-Extra: dev
|
|
37
|
+
Requires-Dist: deeploop[docs]; extra == "dev"
|
|
38
|
+
Dynamic: license-file
|
|
39
|
+
|
|
40
|
+
# DeepLoop
|
|
41
|
+
|
|
42
|
+
> Structured research missions from a local project folder — with visible autonomy boundaries, durable mission state, and an explicit operator inbox.
|
|
43
|
+
|
|
44
|
+
DeepLoop helps researchers and operators run structured work from the artifacts already on disk instead of rebuilding everything around one long chat. It keeps the loop moving, pauses only at real safety, authority, or support boundaries, and makes the path legible when you need to inspect or redirect it.
|
|
45
|
+
|
|
46
|
+
DeepLoop **owns behavior** and orchestration; substrate repos own reusable domain or science rules.
|
|
47
|
+
|
|
48
|
+
## Why it matters
|
|
49
|
+
|
|
50
|
+
- **Start from real project artifacts:** bootstrap from a plain project folder, not just a prompt.
|
|
51
|
+
- **Keep control visible:** `status`, `inbox`, and `resume` make the operator inbox explicit when DeepLoop needs a real decision.
|
|
52
|
+
- **Inspect the loop:** operator-facing summaries expose runtime telemetry, inner-loop progress, stage-kernel activity, reroutes, and temporary gaps instead of hiding them in raw JSON.
|
|
53
|
+
- **Keep evidence close to the work:** your project folder stays focused on facts, docs, and outputs while DeepLoop keeps durable mission state.
|
|
54
|
+
- **Use autonomy with governance:** the shipped path includes explicit release boundaries, autonomy governance, and reviewed promotion surfaces.
|
|
55
|
+
- **Separate platform from domain logic:** DeepLoop runs the loop; substrate repos keep reusable methods, constraints, and science rules.
|
|
56
|
+
|
|
57
|
+
## Getting started
|
|
58
|
+
|
|
59
|
+
1. **Install DeepLoop**
|
|
60
|
+
|
|
61
|
+
Choose the installation path that matches your use case:
|
|
62
|
+
|
|
63
|
+
- **Standard user** — install from PyPI (no local checkout required):
|
|
64
|
+
|
|
65
|
+
```text
|
|
66
|
+
pip install deeploop
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
For the latest unreleased commit without a local checkout, use the
|
|
70
|
+
GitHub URL directly:
|
|
71
|
+
|
|
72
|
+
```text
|
|
73
|
+
pip install git+https://github.com/tnetal/DeepLoop.git
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
Both paths copy the library into `site-packages`, fully isolating running
|
|
77
|
+
missions from any local source changes.
|
|
78
|
+
|
|
79
|
+
- **Contributor** — clone the repo and install in editable mode with dev
|
|
80
|
+
extras:
|
|
81
|
+
|
|
82
|
+
```text
|
|
83
|
+
git clone https://github.com/tnetal/DeepLoop.git
|
|
84
|
+
cd DeepLoop
|
|
85
|
+
pip install -e ".[dev]"
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
> **Warning:** Editable installs tie every spawned Python subprocess
|
|
89
|
+
> directly to the live source tree. `deeploop start` automatically
|
|
90
|
+
> snapshots the package into `~/.deeploop/runtime_cache/` before launching
|
|
91
|
+
> the daemon, insulating the background mission from subsequent source
|
|
92
|
+
> edits. It also warns if the working tree is dirty at launch time. Even
|
|
93
|
+
> so, avoid switching Git branches or introducing syntax errors during a
|
|
94
|
+
> live mission run.
|
|
95
|
+
|
|
96
|
+
- **Hybrid user** (running long missions *and* developing features
|
|
97
|
+
simultaneously): maintain **two separate clones** — one stable clone
|
|
98
|
+
installed with `pip install git+…` or `pip install .` for running missions,
|
|
99
|
+
and one development clone with `pip install -e ".[dev]"` for writing PRs.
|
|
100
|
+
Never run a background mission from the development clone.
|
|
101
|
+
|
|
102
|
+
Or use the documented Conda path (installs in non-editable mode by default):
|
|
103
|
+
|
|
104
|
+
```text
|
|
105
|
+
conda env create -n deeploop -f environment.yml
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
2. **Prepare the workspace and validate the supported path**
|
|
109
|
+
|
|
110
|
+
```text
|
|
111
|
+
make setup
|
|
112
|
+
make public-bootstrap-check
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
3. **Prepare a provider**
|
|
116
|
+
- [Provider setup](docs/reference/provider-setup.md)
|
|
117
|
+
- [Provider selection](docs/reference/provider-selection.md)
|
|
118
|
+
|
|
119
|
+
4. **Run the canonical example or your own plain-folder project**
|
|
120
|
+
- canonical example: [`examples/translation-budget-ladder/`](examples/translation-budget-ladder/)
|
|
121
|
+
- optional copy step:
|
|
122
|
+
|
|
123
|
+
```text
|
|
124
|
+
cp -R examples/translation-budget-ladder PROJECT_FOLDER
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
- fastest path:
|
|
128
|
+
|
|
129
|
+
```text
|
|
130
|
+
deeploop run --project-root examples/translation-budget-ladder --until-complete
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
> **Note:** If `<project-folder>/.deeploop/missions/*.yaml` files exist, `deeploop run`
|
|
134
|
+
> automatically uses the first one instead of bootstrapping a blank mission.
|
|
135
|
+
> For a plain folder with no existing config, it bootstraps from the folder's facts.
|
|
136
|
+
> To target a specific explicit config directly, use
|
|
137
|
+
> `deeploop init --config <mission-config.yaml>` followed by
|
|
138
|
+
> `deeploop start --mission-state <mission-state.json>`.
|
|
139
|
+
|
|
140
|
+
- explicit operator path:
|
|
141
|
+
|
|
142
|
+
```text
|
|
143
|
+
deeploop init --project-root examples/translation-budget-ladder --force
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
On a copied folder, substitute `PROJECT_FOLDER` in the commands above.
|
|
147
|
+
|
|
148
|
+
5. **Use the operator CLI when a run pauses**
|
|
149
|
+
|
|
150
|
+
```text
|
|
151
|
+
deeploop status --mission-state MISSION_STATE_PATH
|
|
152
|
+
deeploop inbox --mission-state MISSION_STATE_PATH
|
|
153
|
+
deeploop resume --mission-state MISSION_STATE_PATH
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
The `deeploop` CLI is the single entry point — `run`, `init`, `status`, `inbox`, `resume`, and more are all subcommands.
|
|
157
|
+
|
|
158
|
+
## Best fit today
|
|
159
|
+
|
|
160
|
+
DeepLoop is best when you already have:
|
|
161
|
+
|
|
162
|
+
- a project folder on disk
|
|
163
|
+
- a clear mission or question
|
|
164
|
+
- an operator who can check `status` and respond when the operator inbox opens
|
|
165
|
+
- a need for bounded autonomy, durable state, and evidence-aware summaries
|
|
166
|
+
|
|
167
|
+
> **Public alpha** — best on Linux with Python 3.11; not claiming a fully automatic experience for everyone. See the [roadmap](docs/release/public-autonomy-roadmap.md) for current scope.
|
|
168
|
+
|
|
169
|
+
## Key capabilities
|
|
170
|
+
|
|
171
|
+
### Operating modes
|
|
172
|
+
|
|
173
|
+
- **`sandboxed-yolo`** for the fastest bounded path when you want DeepLoop to keep moving inside the supported guardrails
|
|
174
|
+
- **`managed`** when you want intervention hooks before DeepLoop continues; managed mode can surface a bounded retry, reroute, or downscope step for review
|
|
175
|
+
- **`human-directed`** when you want to approve important choices yourself
|
|
176
|
+
|
|
177
|
+
### What you can inspect
|
|
178
|
+
|
|
179
|
+
- operator-facing status surfaces runtime telemetry, inner-loop progress, ratchets, reroutes, and temporary-gap recovery hints
|
|
180
|
+
- stage-kernel execution stays visible instead of disappearing behind one opaque agent loop
|
|
181
|
+
- the operator inbox keeps handoffs explicit when DeepLoop reaches a real decision or support boundary
|
|
182
|
+
|
|
183
|
+
### Reusable methods and governance
|
|
184
|
+
|
|
185
|
+
- keep skills for reusable methods and domain/science rules in substrate repos
|
|
186
|
+
- use [Release posture](docs/release/README.md) for the current claim and [Autonomy governance](docs/release/autonomy-governance.md) for current boundaries
|
|
187
|
+
- review the current [multi-substrate proof](docs/release/multi-substrate-proof.md) as proof of a bounded contract, not a claim of broad portability
|
|
188
|
+
|
|
189
|
+
## Documentation
|
|
190
|
+
|
|
191
|
+
- [Docs home](docs/index.md)
|
|
192
|
+
- [Getting started](docs/getting-started.md)
|
|
193
|
+
- [Examples](docs/how-to/examples.md)
|
|
194
|
+
- [Plain-folder starter](docs/how-to/plain-folder-starter.md)
|
|
195
|
+
- [Release posture](docs/release/README.md)
|
|
196
|
+
- [Portable bootstrap](docs/release/portable-bootstrap.md)
|
|
197
|
+
- [Provider setup](docs/reference/provider-setup.md)
|
|
198
|
+
- [Provider selection](docs/reference/provider-selection.md)
|
|
199
|
+
- [Autonomy governance](docs/release/autonomy-governance.md)
|
|
200
|
+
- [Multi-substrate proof](docs/release/multi-substrate-proof.md)
|
|
201
|
+
- [Technical reference](docs/reference/index.md)
|
|
202
|
+
|
|
203
|
+
## Contributing
|
|
204
|
+
|
|
205
|
+
Contributions, bug reports, and discussion are welcome.
|
|
206
|
+
|
|
207
|
+
- [Contributing guide](CONTRIBUTING.md)
|
|
208
|
+
- [Code of conduct](CODE_OF_CONDUCT.md)
|
|
209
|
+
- [Security policy](SECURITY.md)
|
|
210
|
+
- [Changelog](CHANGELOG.md)
|
deeploop-0.1.0/README.md
ADDED
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
# DeepLoop
|
|
2
|
+
|
|
3
|
+
> Structured research missions from a local project folder — with visible autonomy boundaries, durable mission state, and an explicit operator inbox.
|
|
4
|
+
|
|
5
|
+
DeepLoop helps researchers and operators run structured work from the artifacts already on disk instead of rebuilding everything around one long chat. It keeps the loop moving, pauses only at real safety, authority, or support boundaries, and makes the path legible when you need to inspect or redirect it.
|
|
6
|
+
|
|
7
|
+
DeepLoop **owns behavior** and orchestration; substrate repos own reusable domain or science rules.
|
|
8
|
+
|
|
9
|
+
## Why it matters
|
|
10
|
+
|
|
11
|
+
- **Start from real project artifacts:** bootstrap from a plain project folder, not just a prompt.
|
|
12
|
+
- **Keep control visible:** `status`, `inbox`, and `resume` make the operator inbox explicit when DeepLoop needs a real decision.
|
|
13
|
+
- **Inspect the loop:** operator-facing summaries expose runtime telemetry, inner-loop progress, stage-kernel activity, reroutes, and temporary gaps instead of hiding them in raw JSON.
|
|
14
|
+
- **Keep evidence close to the work:** your project folder stays focused on facts, docs, and outputs while DeepLoop keeps durable mission state.
|
|
15
|
+
- **Use autonomy with governance:** the shipped path includes explicit release boundaries, autonomy governance, and reviewed promotion surfaces.
|
|
16
|
+
- **Separate platform from domain logic:** DeepLoop runs the loop; substrate repos keep reusable methods, constraints, and science rules.
|
|
17
|
+
|
|
18
|
+
## Getting started
|
|
19
|
+
|
|
20
|
+
1. **Install DeepLoop**
|
|
21
|
+
|
|
22
|
+
Choose the installation path that matches your use case:
|
|
23
|
+
|
|
24
|
+
- **Standard user** — install from PyPI (no local checkout required):
|
|
25
|
+
|
|
26
|
+
```text
|
|
27
|
+
pip install deeploop
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
For the latest unreleased commit without a local checkout, use the
|
|
31
|
+
GitHub URL directly:
|
|
32
|
+
|
|
33
|
+
```text
|
|
34
|
+
pip install git+https://github.com/tnetal/DeepLoop.git
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
Both paths copy the library into `site-packages`, fully isolating running
|
|
38
|
+
missions from any local source changes.
|
|
39
|
+
|
|
40
|
+
- **Contributor** — clone the repo and install in editable mode with dev
|
|
41
|
+
extras:
|
|
42
|
+
|
|
43
|
+
```text
|
|
44
|
+
git clone https://github.com/tnetal/DeepLoop.git
|
|
45
|
+
cd DeepLoop
|
|
46
|
+
pip install -e ".[dev]"
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
> **Warning:** Editable installs tie every spawned Python subprocess
|
|
50
|
+
> directly to the live source tree. `deeploop start` automatically
|
|
51
|
+
> snapshots the package into `~/.deeploop/runtime_cache/` before launching
|
|
52
|
+
> the daemon, insulating the background mission from subsequent source
|
|
53
|
+
> edits. It also warns if the working tree is dirty at launch time. Even
|
|
54
|
+
> so, avoid switching Git branches or introducing syntax errors during a
|
|
55
|
+
> live mission run.
|
|
56
|
+
|
|
57
|
+
- **Hybrid user** (running long missions *and* developing features
|
|
58
|
+
simultaneously): maintain **two separate clones** — one stable clone
|
|
59
|
+
installed with `pip install git+…` or `pip install .` for running missions,
|
|
60
|
+
and one development clone with `pip install -e ".[dev]"` for writing PRs.
|
|
61
|
+
Never run a background mission from the development clone.
|
|
62
|
+
|
|
63
|
+
Or use the documented Conda path (installs in non-editable mode by default):
|
|
64
|
+
|
|
65
|
+
```text
|
|
66
|
+
conda env create -n deeploop -f environment.yml
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
2. **Prepare the workspace and validate the supported path**
|
|
70
|
+
|
|
71
|
+
```text
|
|
72
|
+
make setup
|
|
73
|
+
make public-bootstrap-check
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
3. **Prepare a provider**
|
|
77
|
+
- [Provider setup](docs/reference/provider-setup.md)
|
|
78
|
+
- [Provider selection](docs/reference/provider-selection.md)
|
|
79
|
+
|
|
80
|
+
4. **Run the canonical example or your own plain-folder project**
|
|
81
|
+
- canonical example: [`examples/translation-budget-ladder/`](examples/translation-budget-ladder/)
|
|
82
|
+
- optional copy step:
|
|
83
|
+
|
|
84
|
+
```text
|
|
85
|
+
cp -R examples/translation-budget-ladder PROJECT_FOLDER
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
- fastest path:
|
|
89
|
+
|
|
90
|
+
```text
|
|
91
|
+
deeploop run --project-root examples/translation-budget-ladder --until-complete
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
> **Note:** If `<project-folder>/.deeploop/missions/*.yaml` files exist, `deeploop run`
|
|
95
|
+
> automatically uses the first one instead of bootstrapping a blank mission.
|
|
96
|
+
> For a plain folder with no existing config, it bootstraps from the folder's facts.
|
|
97
|
+
> To target a specific explicit config directly, use
|
|
98
|
+
> `deeploop init --config <mission-config.yaml>` followed by
|
|
99
|
+
> `deeploop start --mission-state <mission-state.json>`.
|
|
100
|
+
|
|
101
|
+
- explicit operator path:
|
|
102
|
+
|
|
103
|
+
```text
|
|
104
|
+
deeploop init --project-root examples/translation-budget-ladder --force
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
On a copied folder, substitute `PROJECT_FOLDER` in the commands above.
|
|
108
|
+
|
|
109
|
+
5. **Use the operator CLI when a run pauses**
|
|
110
|
+
|
|
111
|
+
```text
|
|
112
|
+
deeploop status --mission-state MISSION_STATE_PATH
|
|
113
|
+
deeploop inbox --mission-state MISSION_STATE_PATH
|
|
114
|
+
deeploop resume --mission-state MISSION_STATE_PATH
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
The `deeploop` CLI is the single entry point — `run`, `init`, `status`, `inbox`, `resume`, and more are all subcommands.
|
|
118
|
+
|
|
119
|
+
## Best fit today
|
|
120
|
+
|
|
121
|
+
DeepLoop is best when you already have:
|
|
122
|
+
|
|
123
|
+
- a project folder on disk
|
|
124
|
+
- a clear mission or question
|
|
125
|
+
- an operator who can check `status` and respond when the operator inbox opens
|
|
126
|
+
- a need for bounded autonomy, durable state, and evidence-aware summaries
|
|
127
|
+
|
|
128
|
+
> **Public alpha** — best on Linux with Python 3.11; not claiming a fully automatic experience for everyone. See the [roadmap](docs/release/public-autonomy-roadmap.md) for current scope.
|
|
129
|
+
|
|
130
|
+
## Key capabilities
|
|
131
|
+
|
|
132
|
+
### Operating modes
|
|
133
|
+
|
|
134
|
+
- **`sandboxed-yolo`** for the fastest bounded path when you want DeepLoop to keep moving inside the supported guardrails
|
|
135
|
+
- **`managed`** when you want intervention hooks before DeepLoop continues; managed mode can surface a bounded retry, reroute, or downscope step for review
|
|
136
|
+
- **`human-directed`** when you want to approve important choices yourself
|
|
137
|
+
|
|
138
|
+
### What you can inspect
|
|
139
|
+
|
|
140
|
+
- operator-facing status surfaces runtime telemetry, inner-loop progress, ratchets, reroutes, and temporary-gap recovery hints
|
|
141
|
+
- stage-kernel execution stays visible instead of disappearing behind one opaque agent loop
|
|
142
|
+
- the operator inbox keeps handoffs explicit when DeepLoop reaches a real decision or support boundary
|
|
143
|
+
|
|
144
|
+
### Reusable methods and governance
|
|
145
|
+
|
|
146
|
+
- keep skills for reusable methods and domain/science rules in substrate repos
|
|
147
|
+
- use [Release posture](docs/release/README.md) for the current claim and [Autonomy governance](docs/release/autonomy-governance.md) for current boundaries
|
|
148
|
+
- review the current [multi-substrate proof](docs/release/multi-substrate-proof.md) as proof of a bounded contract, not a claim of broad portability
|
|
149
|
+
|
|
150
|
+
## Documentation
|
|
151
|
+
|
|
152
|
+
- [Docs home](docs/index.md)
|
|
153
|
+
- [Getting started](docs/getting-started.md)
|
|
154
|
+
- [Examples](docs/how-to/examples.md)
|
|
155
|
+
- [Plain-folder starter](docs/how-to/plain-folder-starter.md)
|
|
156
|
+
- [Release posture](docs/release/README.md)
|
|
157
|
+
- [Portable bootstrap](docs/release/portable-bootstrap.md)
|
|
158
|
+
- [Provider setup](docs/reference/provider-setup.md)
|
|
159
|
+
- [Provider selection](docs/reference/provider-selection.md)
|
|
160
|
+
- [Autonomy governance](docs/release/autonomy-governance.md)
|
|
161
|
+
- [Multi-substrate proof](docs/release/multi-substrate-proof.md)
|
|
162
|
+
- [Technical reference](docs/reference/index.md)
|
|
163
|
+
|
|
164
|
+
## Contributing
|
|
165
|
+
|
|
166
|
+
Contributions, bug reports, and discussion are welcome.
|
|
167
|
+
|
|
168
|
+
- [Contributing guide](CONTRIBUTING.md)
|
|
169
|
+
- [Code of conduct](CODE_OF_CONDUCT.md)
|
|
170
|
+
- [Security policy](SECURITY.md)
|
|
171
|
+
- [Changelog](CHANGELOG.md)
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["setuptools>=68", "wheel"]
|
|
3
|
+
build-backend = "setuptools.build_meta"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "deeploop"
|
|
7
|
+
version = "0.1.0"
|
|
8
|
+
description = "DeepLoop autonomous research autopilot control plane."
|
|
9
|
+
readme = "README.md"
|
|
10
|
+
requires-python = ">=3.11"
|
|
11
|
+
license = "MIT"
|
|
12
|
+
license-files = ["LICENSE"]
|
|
13
|
+
authors = [
|
|
14
|
+
{ name = "DeepLoop maintainers" },
|
|
15
|
+
]
|
|
16
|
+
dependencies = [
|
|
17
|
+
"jsonschema",
|
|
18
|
+
"pandas",
|
|
19
|
+
"pyyaml",
|
|
20
|
+
"rich",
|
|
21
|
+
"typer",
|
|
22
|
+
]
|
|
23
|
+
classifiers = [
|
|
24
|
+
"Development Status :: 3 - Alpha",
|
|
25
|
+
"Intended Audience :: Science/Research",
|
|
26
|
+
"Operating System :: POSIX :: Linux",
|
|
27
|
+
"Programming Language :: Python :: 3",
|
|
28
|
+
"Programming Language :: Python :: 3.11",
|
|
29
|
+
"Topic :: Scientific/Engineering :: Artificial Intelligence",
|
|
30
|
+
]
|
|
31
|
+
|
|
32
|
+
[project.urls]
|
|
33
|
+
Homepage = "https://deeplooplabs.com/"
|
|
34
|
+
Documentation = "https://github.com/tnetal/DeepLoop/tree/main/docs"
|
|
35
|
+
Issues = "https://github.com/tnetal/DeepLoop/issues"
|
|
36
|
+
Source = "https://github.com/tnetal/DeepLoop"
|
|
37
|
+
Changelog = "https://github.com/tnetal/DeepLoop/blob/main/CHANGELOG.md"
|
|
38
|
+
|
|
39
|
+
[project.scripts]
|
|
40
|
+
deeploop = "deeploop.mission.mission_management:main"
|
|
41
|
+
deeploop-init-mission = "deeploop.cli.init_mission:main"
|
|
42
|
+
deeploop-run-project = "deeploop.cli.run_project:main"
|
|
43
|
+
deeploop-package-mission = "deeploop.cli.package_mission:main"
|
|
44
|
+
deeploop-analyze = "deeploop.cli.analyze:main"
|
|
45
|
+
|
|
46
|
+
[project.optional-dependencies]
|
|
47
|
+
docs = [
|
|
48
|
+
"mkdocs",
|
|
49
|
+
"mkdocs-material",
|
|
50
|
+
"pymdown-extensions",
|
|
51
|
+
]
|
|
52
|
+
llm = [
|
|
53
|
+
"accelerate",
|
|
54
|
+
"safetensors",
|
|
55
|
+
"sentencepiece",
|
|
56
|
+
"torch",
|
|
57
|
+
"transformers",
|
|
58
|
+
]
|
|
59
|
+
dev = [
|
|
60
|
+
"deeploop[docs]",
|
|
61
|
+
]
|
|
62
|
+
|
|
63
|
+
[tool.setuptools]
|
|
64
|
+
package-dir = {"" = "src"}
|
|
65
|
+
|
|
66
|
+
[tool.setuptools.packages.find]
|
|
67
|
+
where = ["src"]
|
deeploop-0.1.0/setup.cfg
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "0.1.0"
|