AbstractAgent 0.3.12__tar.gz → 0.3.14__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.
- {abstractagent-0.3.12 → abstractagent-0.3.14}/PKG-INFO +35 -14
- abstractagent-0.3.12/src/abstractagent.egg-info/PKG-INFO → abstractagent-0.3.14/README.md +28 -28
- {abstractagent-0.3.12 → abstractagent-0.3.14}/pyproject.toml +7 -7
- {abstractagent-0.3.12 → abstractagent-0.3.14}/src/abstractagent/__init__.py +15 -0
- abstractagent-0.3.14/src/abstractagent/adapters/__init__.py +21 -0
- {abstractagent-0.3.12 → abstractagent-0.3.14}/src/abstractagent/adapters/codeact_runtime.py +771 -145
- abstractagent-0.3.14/src/abstractagent/adapters/emit_inventory.py +170 -0
- abstractagent-0.3.14/src/abstractagent/adapters/generation_params.py +661 -0
- abstractagent-0.3.14/src/abstractagent/adapters/loop_hooks.py +384 -0
- abstractagent-0.3.14/src/abstractagent/adapters/media.py +180 -0
- {abstractagent-0.3.12 → abstractagent-0.3.14}/src/abstractagent/adapters/memact_runtime.py +516 -64
- abstractagent-0.3.14/src/abstractagent/adapters/native_loop_registry.py +325 -0
- abstractagent-0.3.14/src/abstractagent/adapters/progress.py +182 -0
- abstractagent-0.3.14/src/abstractagent/adapters/react_runtime.py +3983 -0
- abstractagent-0.3.14/src/abstractagent/adapters/read_orchestration.py +261 -0
- abstractagent-0.3.14/src/abstractagent/adapters/tool_allowlist.py +59 -0
- abstractagent-0.3.14/src/abstractagent/adapters/tool_failure_hints.py +320 -0
- abstractagent-0.3.14/src/abstractagent/adapters/transcripts.py +434 -0
- {abstractagent-0.3.12 → abstractagent-0.3.14}/src/abstractagent/agents/base.py +33 -1
- {abstractagent-0.3.12 → abstractagent-0.3.14}/src/abstractagent/agents/codeact.py +75 -20
- abstractagent-0.3.14/src/abstractagent/agents/defaults.py +131 -0
- {abstractagent-0.3.12 → abstractagent-0.3.14}/src/abstractagent/agents/memact.py +65 -32
- {abstractagent-0.3.12 → abstractagent-0.3.14}/src/abstractagent/agents/react.py +69 -20
- abstractagent-0.3.14/src/abstractagent/agents/task_reset.py +134 -0
- abstractagent-0.3.14/src/abstractagent/agents/unattended.py +68 -0
- {abstractagent-0.3.12 → abstractagent-0.3.14}/src/abstractagent/logic/builtins.py +72 -0
- abstractagent-0.3.14/src/abstractagent/logic/codeact.py +273 -0
- {abstractagent-0.3.12 → abstractagent-0.3.14}/src/abstractagent/logic/memact.py +35 -6
- {abstractagent-0.3.12 → abstractagent-0.3.14}/src/abstractagent/logic/react.py +45 -10
- abstractagent-0.3.14/src/abstractagent/metrics/__init__.py +5 -0
- abstractagent-0.3.14/src/abstractagent/metrics/prefix_reuse.py +123 -0
- {abstractagent-0.3.12 → abstractagent-0.3.14}/src/abstractagent/repl.py +6 -3
- {abstractagent-0.3.12 → abstractagent-0.3.14}/src/abstractagent/sandbox/interface.py +3 -1
- {abstractagent-0.3.12 → abstractagent-0.3.14}/src/abstractagent/sandbox/local.py +20 -4
- {abstractagent-0.3.12 → abstractagent-0.3.14}/src/abstractagent/scripts/lmstudio_tool_eval.py +57 -1
- abstractagent-0.3.14/src/abstractagent/tools/code_execution.py +66 -0
- abstractagent-0.3.12/README.md → abstractagent-0.3.14/src/abstractagent.egg-info/PKG-INFO +49 -7
- {abstractagent-0.3.12 → abstractagent-0.3.14}/src/abstractagent.egg-info/SOURCES.txt +59 -1
- abstractagent-0.3.14/src/abstractagent.egg-info/requires.txt +16 -0
- {abstractagent-0.3.12 → abstractagent-0.3.14}/tests/test_active_context_policy_adoption.py +7 -2
- abstractagent-0.3.14/tests/test_adversary_hardening_2026_07_13.py +230 -0
- {abstractagent-0.3.12 → abstractagent-0.3.14}/tests/test_agent_plan_review_modes.py +35 -19
- abstractagent-0.3.14/tests/test_agent_speculation_inheritance.py +59 -0
- abstractagent-0.3.14/tests/test_agent_stream_inheritance.py +56 -0
- abstractagent-0.3.14/tests/test_batching_prompt_rule.py +58 -0
- abstractagent-0.3.14/tests/test_budget_triage_tail.py +147 -0
- abstractagent-0.3.14/tests/test_c2447_visit_lane_honesty.py +495 -0
- abstractagent-0.3.14/tests/test_claim_0029_residue_2026_07_14.py +303 -0
- {abstractagent-0.3.12 → abstractagent-0.3.14}/tests/test_codeact_logic.py +1 -1
- abstractagent-0.3.14/tests/test_delegate_session_route_composition.py +253 -0
- abstractagent-0.3.14/tests/test_emit_inventory_drift.py +50 -0
- abstractagent-0.3.14/tests/test_gated_remainder_wave_2026_07_14.py +364 -0
- abstractagent-0.3.14/tests/test_generation_params_media_policies.py +207 -0
- abstractagent-0.3.14/tests/test_history_monster_clamp.py +335 -0
- abstractagent-0.3.14/tests/test_improvement_wave_2026_07_13.py +228 -0
- abstractagent-0.3.14/tests/test_lmstudio_tool_eval_metrics.py +40 -0
- abstractagent-0.3.14/tests/test_loop_hooks.py +460 -0
- abstractagent-0.3.14/tests/test_loop_hooks_0026_follow_ups.py +287 -0
- abstractagent-0.3.14/tests/test_memact_codeact_guidance_durable_transcript.py +134 -0
- abstractagent-0.3.14/tests/test_native_loop_registry.py +275 -0
- abstractagent-0.3.14/tests/test_operator_conclude.py +163 -0
- abstractagent-0.3.14/tests/test_optimal_wave_batch2_2026_07_13.py +210 -0
- {abstractagent-0.3.12 → abstractagent-0.3.14}/tests/test_packaging_profiles.py +6 -6
- abstractagent-0.3.14/tests/test_parse_prompt_cache_capture.py +102 -0
- abstractagent-0.3.14/tests/test_prefix_reuse_metric.py +135 -0
- abstractagent-0.3.14/tests/test_progress_detection.py +169 -0
- abstractagent-0.3.14/tests/test_react_act_only_observation.py +174 -0
- abstractagent-0.3.14/tests/test_react_delegate_agent_tool.py +269 -0
- abstractagent-0.3.14/tests/test_react_election_fence_conformance.py +181 -0
- abstractagent-0.3.14/tests/test_react_entity_dress_conformance.py +233 -0
- abstractagent-0.3.14/tests/test_react_guidance_durable_transcript.py +179 -0
- {abstractagent-0.3.12 → abstractagent-0.3.14}/tests/test_react_logic.py +5 -3
- abstractagent-0.3.14/tests/test_react_loop_aborted_generation_retry.py +224 -0
- {abstractagent-0.3.12 → abstractagent-0.3.14}/tests/test_react_loop_context_transcript_levels.py +148 -5
- {abstractagent-0.3.12 → abstractagent-0.3.14}/tests/test_react_loop_followthrough_retry.py +5 -2
- {abstractagent-0.3.12 → abstractagent-0.3.14}/tests/test_react_loop_truncated_output_retry.py +8 -3
- {abstractagent-0.3.12 → abstractagent-0.3.14}/tests/test_react_max_iterations_concludes.py +8 -2
- abstractagent-0.3.14/tests/test_react_phase_grant_boundary.py +274 -0
- abstractagent-0.3.14/tests/test_react_prompt_prefix_stability.py +288 -0
- abstractagent-0.3.14/tests/test_react_sight_lane_media_fold.py +381 -0
- abstractagent-0.3.14/tests/test_react_turn_byte_stability.py +221 -0
- abstractagent-0.3.14/tests/test_react_verifier_and_plan.py +167 -0
- abstractagent-0.3.14/tests/test_react_visit_composition.py +334 -0
- abstractagent-0.3.14/tests/test_react_visit_merge.py +282 -0
- abstractagent-0.3.14/tests/test_read_orchestration_guidance.py +409 -0
- abstractagent-0.3.14/tests/test_reasoning_first_citizen_agent.py +284 -0
- abstractagent-0.3.14/tests/test_review_failure_containment.py +259 -0
- abstractagent-0.3.14/tests/test_sibling_loop_defects_batch.py +328 -0
- abstractagent-0.3.14/tests/test_sibling_strict_transcripts_0011.py +166 -0
- abstractagent-0.3.14/tests/test_stuck_streak_termination.py +525 -0
- abstractagent-0.3.14/tests/test_tool_failure_hints.py +244 -0
- abstractagent-0.3.14/tests/test_tool_loop_prefix_extension_a3.py +202 -0
- abstractagent-0.3.14/tests/test_unseeded_render_limits.py +116 -0
- abstractagent-0.3.14/tests/test_verifier_execution_preference.py +462 -0
- abstractagent-0.3.14/tests/test_verifier_schema_strict.py +197 -0
- abstractagent-0.3.12/src/abstractagent/adapters/__init__.py +0 -7
- abstractagent-0.3.12/src/abstractagent/adapters/generation_params.py +0 -115
- abstractagent-0.3.12/src/abstractagent/adapters/media.py +0 -45
- abstractagent-0.3.12/src/abstractagent/adapters/react_runtime.py +0 -1612
- abstractagent-0.3.12/src/abstractagent/logic/codeact.py +0 -176
- abstractagent-0.3.12/src/abstractagent/tools/code_execution.py +0 -45
- abstractagent-0.3.12/src/abstractagent.egg-info/requires.txt +0 -16
- abstractagent-0.3.12/tests/test_generation_params_media_policies.py +0 -78
- abstractagent-0.3.12/tests/test_react_delegate_agent_tool.py +0 -85
- {abstractagent-0.3.12 → abstractagent-0.3.14}/LICENSE +0 -0
- {abstractagent-0.3.12 → abstractagent-0.3.14}/setup.cfg +0 -0
- {abstractagent-0.3.12 → abstractagent-0.3.14}/src/abstractagent/agents/__init__.py +0 -0
- {abstractagent-0.3.12 → abstractagent-0.3.14}/src/abstractagent/logic/__init__.py +0 -0
- {abstractagent-0.3.12 → abstractagent-0.3.14}/src/abstractagent/logic/types.py +0 -0
- {abstractagent-0.3.12 → abstractagent-0.3.14}/src/abstractagent/sandbox/__init__.py +0 -0
- {abstractagent-0.3.12 → abstractagent-0.3.14}/src/abstractagent/scripts/__init__.py +0 -0
- {abstractagent-0.3.12 → abstractagent-0.3.14}/src/abstractagent/tools/__init__.py +0 -0
- {abstractagent-0.3.12 → abstractagent-0.3.14}/src/abstractagent/tools/self_improve.py +0 -0
- {abstractagent-0.3.12 → abstractagent-0.3.14}/src/abstractagent.egg-info/dependency_links.txt +0 -0
- {abstractagent-0.3.12 → abstractagent-0.3.14}/src/abstractagent.egg-info/entry_points.txt +0 -0
- {abstractagent-0.3.12 → abstractagent-0.3.14}/src/abstractagent.egg-info/top_level.txt +0 -0
- {abstractagent-0.3.12 → abstractagent-0.3.14}/tests/test_agents_integration_llm.py +0 -0
- {abstractagent-0.3.12 → abstractagent-0.3.14}/tests/test_base_agent_trace_accessors.py +0 -0
- {abstractagent-0.3.12 → abstractagent-0.3.14}/tests/test_builtin_tool_specs_optional_defaults.py +0 -0
- {abstractagent-0.3.12 → abstractagent-0.3.14}/tests/test_codeact_runtime_verifier_policy.py +0 -0
- {abstractagent-0.3.12 → abstractagent-0.3.14}/tests/test_llm_call_payload_requires_prompt_or_messages.py +0 -0
- {abstractagent-0.3.12 → abstractagent-0.3.14}/tests/test_memact_session_memory.py +0 -0
- {abstractagent-0.3.12 → abstractagent-0.3.14}/tests/test_memact_workflow.py +0 -0
- {abstractagent-0.3.12 → abstractagent-0.3.14}/tests/test_memory_recall_tool.py +0 -0
- {abstractagent-0.3.12 → abstractagent-0.3.14}/tests/test_open_attachment_tool_available.py +0 -0
- {abstractagent-0.3.12 → abstractagent-0.3.14}/tests/test_react_active_attachments_disable_tools_first_iteration.py +0 -0
- {abstractagent-0.3.12 → abstractagent-0.3.14}/tests/test_react_adapter_forwards_context_attachments_media.py +0 -0
- {abstractagent-0.3.12 → abstractagent-0.3.14}/tests/test_react_loop_side_effect_dedupe_comms.py +0 -0
- {abstractagent-0.3.12 → abstractagent-0.3.14}/tests/test_react_planish_heuristic.py +0 -0
- {abstractagent-0.3.12 → abstractagent-0.3.14}/tests/test_react_workflow_system_prompt_and_tools_override.py +0 -0
- {abstractagent-0.3.12 → abstractagent-0.3.14}/tests/test_react_workflow_toolset_refresh.py +0 -0
- {abstractagent-0.3.12 → abstractagent-0.3.14}/tests/test_run_start_seeds_runtime_provider_model.py +0 -0
- {abstractagent-0.3.12 → abstractagent-0.3.14}/tests/test_session_memory.py +0 -0
- {abstractagent-0.3.12 → abstractagent-0.3.14}/tests/test_tool_observe_emits_result_for_tui.py +0 -0
- {abstractagent-0.3.12 → abstractagent-0.3.14}/tests/test_tools_editing.py +0 -0
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: abstractagent
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.14
|
|
4
4
|
Summary: Agent implementations using AbstractRuntime and AbstractCore
|
|
5
5
|
Requires-Python: >=3.10
|
|
6
6
|
Description-Content-Type: text/markdown
|
|
7
7
|
License-File: LICENSE
|
|
8
|
-
Requires-Dist: abstractcore[tools]>=2.13.
|
|
9
|
-
Requires-Dist: abstractruntime>=0.
|
|
8
|
+
Requires-Dist: abstractcore[tools]>=2.13.41
|
|
9
|
+
Requires-Dist: abstractruntime>=0.5.0
|
|
10
10
|
Provides-Extra: apple
|
|
11
|
-
Requires-Dist: abstractcore[all-apple]>=2.13.
|
|
12
|
-
Requires-Dist: abstractruntime[apple]>=0.
|
|
11
|
+
Requires-Dist: abstractcore[all-apple]>=2.13.41; extra == "apple"
|
|
12
|
+
Requires-Dist: abstractruntime[apple]>=0.5.0; extra == "apple"
|
|
13
13
|
Provides-Extra: gpu
|
|
14
|
-
Requires-Dist: abstractcore[all-gpu]>=2.13.
|
|
15
|
-
Requires-Dist: abstractruntime[gpu]>=0.
|
|
14
|
+
Requires-Dist: abstractcore[all-gpu]>=2.13.41; extra == "gpu"
|
|
15
|
+
Requires-Dist: abstractruntime[gpu]>=0.5.0; extra == "gpu"
|
|
16
16
|
Provides-Extra: dev
|
|
17
17
|
Requires-Dist: pytest>=7.0; extra == "dev"
|
|
18
18
|
Provides-Extra: test
|
|
@@ -45,22 +45,29 @@ flowchart LR
|
|
|
45
45
|
|
|
46
46
|
- Getting started: [`docs/getting-started.md`](docs/getting-started.md)
|
|
47
47
|
- API reference: [`docs/api.md`](docs/api.md)
|
|
48
|
-
-
|
|
48
|
+
- Loop hooks (listen/steer/capture): [`docs/hooks.md`](docs/hooks.md)
|
|
49
|
+
- FAQ: [`docs/faq.md`](docs/faq.md)
|
|
50
|
+
- Troubleshooting: [`docs/troubleshooting.md`](docs/troubleshooting.md)
|
|
49
51
|
- Architecture (diagrams): [`docs/architecture.md`](docs/architecture.md)
|
|
50
52
|
- Changelog: [`CHANGELOG.md`](CHANGELOG.md)
|
|
51
53
|
- Contributing: [`CONTRIBUTING.md`](CONTRIBUTING.md)
|
|
52
54
|
- Security: [`SECURITY.md`](SECURITY.md)
|
|
53
55
|
- Acknowledgements: [`ACKNOWLEDMENTS.md`](ACKNOWLEDMENTS.md)
|
|
56
|
+
- Code of conduct: [`CODE_OF_CONDUCT.md`](CODE_OF_CONDUCT.md)
|
|
54
57
|
|
|
55
58
|
## What you get
|
|
56
59
|
|
|
57
60
|
- **ReAct**: tool-first Reason → Act → Observe loop
|
|
58
|
-
- **CodeAct**: executes Python (tool
|
|
59
|
-
- **MemAct
|
|
61
|
+
- **CodeAct**: executes Python (tool calls; on prompted-tools models also fenced ` ```python``` ` blocks)
|
|
62
|
+
- **MemAct** (experimental): memory-enhanced agent using runtime-owned Active Memory — distinct architecture, less production mileage; import from `abstractagent.agents.memact` (deliberately not top-level)
|
|
60
63
|
- **Durable runs**: pause/resume via `run_id` + runtime stores
|
|
61
|
-
- **Tool control**: explicit tool bundles + per-run allowlists
|
|
62
|
-
|
|
63
|
-
|
|
64
|
+
- **Tool control**: explicit tool bundles + per-run allowlists (unresolvable
|
|
65
|
+
grant names are recorded loudly, never dropped silently)
|
|
66
|
+
- **Loop hooks**: listen/steer/capture on the running loop via `LoopHooks`
|
|
67
|
+
(see [`docs/hooks.md`](docs/hooks.md)); the flat `on_step` callback remains
|
|
68
|
+
- **Generation controls**: temperature, seed, media policy, prompt-cache
|
|
69
|
+
identity, streaming, Core `thinking` and `speculation` (MTP) are normalized
|
|
70
|
+
before LLM calls and inherited by delegated children
|
|
64
71
|
- **Observability**: durable ledger of LLM calls, tool calls, and waits
|
|
65
72
|
|
|
66
73
|
Where this lives in code (source of truth):
|
|
@@ -98,6 +105,11 @@ Native Python hardware profile cascades are available for deployment manifests:
|
|
|
98
105
|
AbstractCore and AbstractRuntime profiles; AbstractAgent itself remains
|
|
99
106
|
provider/runtime agnostic.
|
|
100
107
|
|
|
108
|
+
AbstractAgent 0.3.14 requires `abstractcore[tools]>=2.13.41` and
|
|
109
|
+
`AbstractRuntime>=0.5.0` (the runtime release that provides live token
|
|
110
|
+
streaming, on top of turn grounding, in-flight cancellation and speculation
|
|
111
|
+
inheritance). AbstractRuntime 0.5.0 itself requires AbstractCore 2.16.0 or newer.
|
|
112
|
+
|
|
101
113
|
Note: the repository may be ahead of the latest published PyPI release. To verify what you installed:
|
|
102
114
|
|
|
103
115
|
```bash
|
|
@@ -109,12 +121,21 @@ python -c "import importlib.metadata as md; print(md.version('abstractagent'))"
|
|
|
109
121
|
```python
|
|
110
122
|
from abstractagent import create_react_agent
|
|
111
123
|
|
|
112
|
-
|
|
124
|
+
# provider/model resolve from your AbstractCore config defaults
|
|
125
|
+
# (`abstractcore --config`) when omitted; pass them explicitly to pin.
|
|
126
|
+
agent = create_react_agent(provider="ollama", model="qwen3:4b")
|
|
113
127
|
agent.start("List the files in the current directory")
|
|
114
128
|
state = agent.run_to_completion()
|
|
115
129
|
print(state.output["answer"])
|
|
116
130
|
```
|
|
117
131
|
|
|
132
|
+
Tip: these loops send the full transcript plus ~19 tool schemas every cycle —
|
|
133
|
+
prefer a tool-capable model. On Ollama, raise the context window to the model's
|
|
134
|
+
maximum available context or the server silently truncates from the oldest
|
|
135
|
+
content first: per-call `llm_kwargs={"num_ctx": <model max>}` or server-side `OLLAMA_CONTEXT_LENGTH=<model max> ollama serve`.
|
|
136
|
+
House rule: maximum available context unless you explicitly choose otherwise —
|
|
137
|
+
a fixed lower number is a hidden ceiling (see [`docs/faq.md`](docs/faq.md)).
|
|
138
|
+
|
|
118
139
|
## Persistence (resume across restarts)
|
|
119
140
|
|
|
120
141
|
By default, the factory helpers use an in-memory runtime store. For resume across process restarts,
|
|
@@ -1,24 +1,3 @@
|
|
|
1
|
-
Metadata-Version: 2.4
|
|
2
|
-
Name: abstractagent
|
|
3
|
-
Version: 0.3.12
|
|
4
|
-
Summary: Agent implementations using AbstractRuntime and AbstractCore
|
|
5
|
-
Requires-Python: >=3.10
|
|
6
|
-
Description-Content-Type: text/markdown
|
|
7
|
-
License-File: LICENSE
|
|
8
|
-
Requires-Dist: abstractcore[tools]>=2.13.38
|
|
9
|
-
Requires-Dist: abstractruntime>=0.4.29
|
|
10
|
-
Provides-Extra: apple
|
|
11
|
-
Requires-Dist: abstractcore[all-apple]>=2.13.38; extra == "apple"
|
|
12
|
-
Requires-Dist: abstractruntime[apple]>=0.4.29; extra == "apple"
|
|
13
|
-
Provides-Extra: gpu
|
|
14
|
-
Requires-Dist: abstractcore[all-gpu]>=2.13.38; extra == "gpu"
|
|
15
|
-
Requires-Dist: abstractruntime[gpu]>=0.4.29; extra == "gpu"
|
|
16
|
-
Provides-Extra: dev
|
|
17
|
-
Requires-Dist: pytest>=7.0; extra == "dev"
|
|
18
|
-
Provides-Extra: test
|
|
19
|
-
Requires-Dist: pytest>=7.0; extra == "test"
|
|
20
|
-
Dynamic: license-file
|
|
21
|
-
|
|
22
1
|
# AbstractAgent
|
|
23
2
|
|
|
24
3
|
Agent patterns (ReAct / CodeAct / MemAct) built on **AbstractRuntime** (durable execution) and **AbstractCore** (tools + LLM integration).
|
|
@@ -45,22 +24,29 @@ flowchart LR
|
|
|
45
24
|
|
|
46
25
|
- Getting started: [`docs/getting-started.md`](docs/getting-started.md)
|
|
47
26
|
- API reference: [`docs/api.md`](docs/api.md)
|
|
48
|
-
-
|
|
27
|
+
- Loop hooks (listen/steer/capture): [`docs/hooks.md`](docs/hooks.md)
|
|
28
|
+
- FAQ: [`docs/faq.md`](docs/faq.md)
|
|
29
|
+
- Troubleshooting: [`docs/troubleshooting.md`](docs/troubleshooting.md)
|
|
49
30
|
- Architecture (diagrams): [`docs/architecture.md`](docs/architecture.md)
|
|
50
31
|
- Changelog: [`CHANGELOG.md`](CHANGELOG.md)
|
|
51
32
|
- Contributing: [`CONTRIBUTING.md`](CONTRIBUTING.md)
|
|
52
33
|
- Security: [`SECURITY.md`](SECURITY.md)
|
|
53
34
|
- Acknowledgements: [`ACKNOWLEDMENTS.md`](ACKNOWLEDMENTS.md)
|
|
35
|
+
- Code of conduct: [`CODE_OF_CONDUCT.md`](CODE_OF_CONDUCT.md)
|
|
54
36
|
|
|
55
37
|
## What you get
|
|
56
38
|
|
|
57
39
|
- **ReAct**: tool-first Reason → Act → Observe loop
|
|
58
|
-
- **CodeAct**: executes Python (tool
|
|
59
|
-
- **MemAct
|
|
40
|
+
- **CodeAct**: executes Python (tool calls; on prompted-tools models also fenced ` ```python``` ` blocks)
|
|
41
|
+
- **MemAct** (experimental): memory-enhanced agent using runtime-owned Active Memory — distinct architecture, less production mileage; import from `abstractagent.agents.memact` (deliberately not top-level)
|
|
60
42
|
- **Durable runs**: pause/resume via `run_id` + runtime stores
|
|
61
|
-
- **Tool control**: explicit tool bundles + per-run allowlists
|
|
62
|
-
|
|
63
|
-
|
|
43
|
+
- **Tool control**: explicit tool bundles + per-run allowlists (unresolvable
|
|
44
|
+
grant names are recorded loudly, never dropped silently)
|
|
45
|
+
- **Loop hooks**: listen/steer/capture on the running loop via `LoopHooks`
|
|
46
|
+
(see [`docs/hooks.md`](docs/hooks.md)); the flat `on_step` callback remains
|
|
47
|
+
- **Generation controls**: temperature, seed, media policy, prompt-cache
|
|
48
|
+
identity, streaming, Core `thinking` and `speculation` (MTP) are normalized
|
|
49
|
+
before LLM calls and inherited by delegated children
|
|
64
50
|
- **Observability**: durable ledger of LLM calls, tool calls, and waits
|
|
65
51
|
|
|
66
52
|
Where this lives in code (source of truth):
|
|
@@ -98,6 +84,11 @@ Native Python hardware profile cascades are available for deployment manifests:
|
|
|
98
84
|
AbstractCore and AbstractRuntime profiles; AbstractAgent itself remains
|
|
99
85
|
provider/runtime agnostic.
|
|
100
86
|
|
|
87
|
+
AbstractAgent 0.3.14 requires `abstractcore[tools]>=2.13.41` and
|
|
88
|
+
`AbstractRuntime>=0.5.0` (the runtime release that provides live token
|
|
89
|
+
streaming, on top of turn grounding, in-flight cancellation and speculation
|
|
90
|
+
inheritance). AbstractRuntime 0.5.0 itself requires AbstractCore 2.16.0 or newer.
|
|
91
|
+
|
|
101
92
|
Note: the repository may be ahead of the latest published PyPI release. To verify what you installed:
|
|
102
93
|
|
|
103
94
|
```bash
|
|
@@ -109,12 +100,21 @@ python -c "import importlib.metadata as md; print(md.version('abstractagent'))"
|
|
|
109
100
|
```python
|
|
110
101
|
from abstractagent import create_react_agent
|
|
111
102
|
|
|
112
|
-
|
|
103
|
+
# provider/model resolve from your AbstractCore config defaults
|
|
104
|
+
# (`abstractcore --config`) when omitted; pass them explicitly to pin.
|
|
105
|
+
agent = create_react_agent(provider="ollama", model="qwen3:4b")
|
|
113
106
|
agent.start("List the files in the current directory")
|
|
114
107
|
state = agent.run_to_completion()
|
|
115
108
|
print(state.output["answer"])
|
|
116
109
|
```
|
|
117
110
|
|
|
111
|
+
Tip: these loops send the full transcript plus ~19 tool schemas every cycle —
|
|
112
|
+
prefer a tool-capable model. On Ollama, raise the context window to the model's
|
|
113
|
+
maximum available context or the server silently truncates from the oldest
|
|
114
|
+
content first: per-call `llm_kwargs={"num_ctx": <model max>}` or server-side `OLLAMA_CONTEXT_LENGTH=<model max> ollama serve`.
|
|
115
|
+
House rule: maximum available context unless you explicitly choose otherwise —
|
|
116
|
+
a fixed lower number is a hidden ceiling (see [`docs/faq.md`](docs/faq.md)).
|
|
117
|
+
|
|
118
118
|
## Persistence (resume across restarts)
|
|
119
119
|
|
|
120
120
|
By default, the factory helpers use an in-memory runtime store. For resume across process restarts,
|
|
@@ -4,23 +4,23 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "abstractagent"
|
|
7
|
-
version = "0.3.
|
|
7
|
+
version = "0.3.14"
|
|
8
8
|
description = "Agent implementations using AbstractRuntime and AbstractCore"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.10"
|
|
11
11
|
dependencies = [
|
|
12
|
-
"abstractcore[tools]>=2.13.
|
|
13
|
-
"abstractruntime>=0.
|
|
12
|
+
"abstractcore[tools]>=2.13.41",
|
|
13
|
+
"abstractruntime>=0.5.0",
|
|
14
14
|
]
|
|
15
15
|
|
|
16
16
|
[project.optional-dependencies]
|
|
17
17
|
apple = [
|
|
18
|
-
"abstractcore[all-apple]>=2.13.
|
|
19
|
-
"abstractruntime[apple]>=0.
|
|
18
|
+
"abstractcore[all-apple]>=2.13.41",
|
|
19
|
+
"abstractruntime[apple]>=0.5.0",
|
|
20
20
|
]
|
|
21
21
|
gpu = [
|
|
22
|
-
"abstractcore[all-gpu]>=2.13.
|
|
23
|
-
"abstractruntime[gpu]>=0.
|
|
22
|
+
"abstractcore[all-gpu]>=2.13.41",
|
|
23
|
+
"abstractruntime[gpu]>=0.5.0",
|
|
24
24
|
]
|
|
25
25
|
dev = [
|
|
26
26
|
"pytest>=7.0",
|
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
"""AbstractAgent - Agent implementations using AbstractRuntime and AbstractCore."""
|
|
2
2
|
|
|
3
|
+
from .adapters.loop_hooks import DEFAULT_EVENT_MAP, HookEvent, LoopHooks
|
|
4
|
+
from .adapters.native_loop_registry import (
|
|
5
|
+
audit_native_loop_manifest,
|
|
6
|
+
build_native_loop_manifest,
|
|
7
|
+
materialize_native_loop_spec,
|
|
8
|
+
pack_native_loop_bundle,
|
|
9
|
+
)
|
|
3
10
|
from .agents import (
|
|
4
11
|
BaseAgent,
|
|
5
12
|
ReactAgent,
|
|
@@ -26,6 +33,14 @@ from .tools import (
|
|
|
26
33
|
__all__ = [
|
|
27
34
|
# Base class for custom agents
|
|
28
35
|
"BaseAgent",
|
|
36
|
+
# First-class loop hooks (listen + steer + capture)
|
|
37
|
+
"DEFAULT_EVENT_MAP",
|
|
38
|
+
"HookEvent",
|
|
39
|
+
"LoopHooks",
|
|
40
|
+
"audit_native_loop_manifest",
|
|
41
|
+
"materialize_native_loop_spec",
|
|
42
|
+
"build_native_loop_manifest",
|
|
43
|
+
"pack_native_loop_bundle",
|
|
29
44
|
# ReAct agent
|
|
30
45
|
"ReactAgent",
|
|
31
46
|
"create_react_workflow",
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"""Runtime adapters for agent logic."""
|
|
2
|
+
|
|
3
|
+
from .codeact_runtime import create_codeact_workflow
|
|
4
|
+
from .native_loop_registry import (
|
|
5
|
+
audit_native_loop_manifest,
|
|
6
|
+
build_native_loop_manifest,
|
|
7
|
+
materialize_native_loop_spec,
|
|
8
|
+
pack_native_loop_bundle,
|
|
9
|
+
)
|
|
10
|
+
from .react_runtime import create_react_workflow
|
|
11
|
+
from .memact_runtime import create_memact_workflow
|
|
12
|
+
|
|
13
|
+
__all__ = [
|
|
14
|
+
"create_react_workflow",
|
|
15
|
+
"create_codeact_workflow",
|
|
16
|
+
"create_memact_workflow",
|
|
17
|
+
"audit_native_loop_manifest",
|
|
18
|
+
"materialize_native_loop_spec",
|
|
19
|
+
"build_native_loop_manifest",
|
|
20
|
+
"pack_native_loop_bundle",
|
|
21
|
+
]
|