AbstractAgent 0.3.13__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.13/src/abstractagent.egg-info → abstractagent-0.3.14}/PKG-INFO +12 -10
- {abstractagent-0.3.13 → abstractagent-0.3.14}/README.md +8 -6
- {abstractagent-0.3.13 → abstractagent-0.3.14}/pyproject.toml +4 -4
- {abstractagent-0.3.13 → abstractagent-0.3.14}/src/abstractagent/adapters/codeact_runtime.py +4 -0
- {abstractagent-0.3.13 → abstractagent-0.3.14}/src/abstractagent/adapters/memact_runtime.py +4 -0
- {abstractagent-0.3.13 → abstractagent-0.3.14}/src/abstractagent/adapters/react_runtime.py +4 -0
- {abstractagent-0.3.13 → abstractagent-0.3.14/src/abstractagent.egg-info}/PKG-INFO +12 -10
- {abstractagent-0.3.13 → abstractagent-0.3.14}/src/abstractagent.egg-info/SOURCES.txt +1 -0
- {abstractagent-0.3.13 → abstractagent-0.3.14}/src/abstractagent.egg-info/requires.txt +3 -3
- abstractagent-0.3.14/tests/test_agent_stream_inheritance.py +56 -0
- {abstractagent-0.3.13 → abstractagent-0.3.14}/tests/test_packaging_profiles.py +3 -3
- {abstractagent-0.3.13 → abstractagent-0.3.14}/LICENSE +0 -0
- {abstractagent-0.3.13 → abstractagent-0.3.14}/setup.cfg +0 -0
- {abstractagent-0.3.13 → abstractagent-0.3.14}/src/abstractagent/__init__.py +0 -0
- {abstractagent-0.3.13 → abstractagent-0.3.14}/src/abstractagent/adapters/__init__.py +0 -0
- {abstractagent-0.3.13 → abstractagent-0.3.14}/src/abstractagent/adapters/emit_inventory.py +0 -0
- {abstractagent-0.3.13 → abstractagent-0.3.14}/src/abstractagent/adapters/generation_params.py +0 -0
- {abstractagent-0.3.13 → abstractagent-0.3.14}/src/abstractagent/adapters/loop_hooks.py +0 -0
- {abstractagent-0.3.13 → abstractagent-0.3.14}/src/abstractagent/adapters/media.py +0 -0
- {abstractagent-0.3.13 → abstractagent-0.3.14}/src/abstractagent/adapters/native_loop_registry.py +0 -0
- {abstractagent-0.3.13 → abstractagent-0.3.14}/src/abstractagent/adapters/progress.py +0 -0
- {abstractagent-0.3.13 → abstractagent-0.3.14}/src/abstractagent/adapters/read_orchestration.py +0 -0
- {abstractagent-0.3.13 → abstractagent-0.3.14}/src/abstractagent/adapters/tool_allowlist.py +0 -0
- {abstractagent-0.3.13 → abstractagent-0.3.14}/src/abstractagent/adapters/tool_failure_hints.py +0 -0
- {abstractagent-0.3.13 → abstractagent-0.3.14}/src/abstractagent/adapters/transcripts.py +0 -0
- {abstractagent-0.3.13 → abstractagent-0.3.14}/src/abstractagent/agents/__init__.py +0 -0
- {abstractagent-0.3.13 → abstractagent-0.3.14}/src/abstractagent/agents/base.py +0 -0
- {abstractagent-0.3.13 → abstractagent-0.3.14}/src/abstractagent/agents/codeact.py +0 -0
- {abstractagent-0.3.13 → abstractagent-0.3.14}/src/abstractagent/agents/defaults.py +0 -0
- {abstractagent-0.3.13 → abstractagent-0.3.14}/src/abstractagent/agents/memact.py +0 -0
- {abstractagent-0.3.13 → abstractagent-0.3.14}/src/abstractagent/agents/react.py +0 -0
- {abstractagent-0.3.13 → abstractagent-0.3.14}/src/abstractagent/agents/task_reset.py +0 -0
- {abstractagent-0.3.13 → abstractagent-0.3.14}/src/abstractagent/agents/unattended.py +0 -0
- {abstractagent-0.3.13 → abstractagent-0.3.14}/src/abstractagent/logic/__init__.py +0 -0
- {abstractagent-0.3.13 → abstractagent-0.3.14}/src/abstractagent/logic/builtins.py +0 -0
- {abstractagent-0.3.13 → abstractagent-0.3.14}/src/abstractagent/logic/codeact.py +0 -0
- {abstractagent-0.3.13 → abstractagent-0.3.14}/src/abstractagent/logic/memact.py +0 -0
- {abstractagent-0.3.13 → abstractagent-0.3.14}/src/abstractagent/logic/react.py +0 -0
- {abstractagent-0.3.13 → abstractagent-0.3.14}/src/abstractagent/logic/types.py +0 -0
- {abstractagent-0.3.13 → abstractagent-0.3.14}/src/abstractagent/metrics/__init__.py +0 -0
- {abstractagent-0.3.13 → abstractagent-0.3.14}/src/abstractagent/metrics/prefix_reuse.py +0 -0
- {abstractagent-0.3.13 → abstractagent-0.3.14}/src/abstractagent/repl.py +0 -0
- {abstractagent-0.3.13 → abstractagent-0.3.14}/src/abstractagent/sandbox/__init__.py +0 -0
- {abstractagent-0.3.13 → abstractagent-0.3.14}/src/abstractagent/sandbox/interface.py +0 -0
- {abstractagent-0.3.13 → abstractagent-0.3.14}/src/abstractagent/sandbox/local.py +0 -0
- {abstractagent-0.3.13 → abstractagent-0.3.14}/src/abstractagent/scripts/__init__.py +0 -0
- {abstractagent-0.3.13 → abstractagent-0.3.14}/src/abstractagent/scripts/lmstudio_tool_eval.py +0 -0
- {abstractagent-0.3.13 → abstractagent-0.3.14}/src/abstractagent/tools/__init__.py +0 -0
- {abstractagent-0.3.13 → abstractagent-0.3.14}/src/abstractagent/tools/code_execution.py +0 -0
- {abstractagent-0.3.13 → abstractagent-0.3.14}/src/abstractagent/tools/self_improve.py +0 -0
- {abstractagent-0.3.13 → abstractagent-0.3.14}/src/abstractagent.egg-info/dependency_links.txt +0 -0
- {abstractagent-0.3.13 → abstractagent-0.3.14}/src/abstractagent.egg-info/entry_points.txt +0 -0
- {abstractagent-0.3.13 → abstractagent-0.3.14}/src/abstractagent.egg-info/top_level.txt +0 -0
- {abstractagent-0.3.13 → abstractagent-0.3.14}/tests/test_active_context_policy_adoption.py +0 -0
- {abstractagent-0.3.13 → abstractagent-0.3.14}/tests/test_adversary_hardening_2026_07_13.py +0 -0
- {abstractagent-0.3.13 → abstractagent-0.3.14}/tests/test_agent_plan_review_modes.py +0 -0
- {abstractagent-0.3.13 → abstractagent-0.3.14}/tests/test_agent_speculation_inheritance.py +0 -0
- {abstractagent-0.3.13 → abstractagent-0.3.14}/tests/test_agents_integration_llm.py +0 -0
- {abstractagent-0.3.13 → abstractagent-0.3.14}/tests/test_base_agent_trace_accessors.py +0 -0
- {abstractagent-0.3.13 → abstractagent-0.3.14}/tests/test_batching_prompt_rule.py +0 -0
- {abstractagent-0.3.13 → abstractagent-0.3.14}/tests/test_budget_triage_tail.py +0 -0
- {abstractagent-0.3.13 → abstractagent-0.3.14}/tests/test_builtin_tool_specs_optional_defaults.py +0 -0
- {abstractagent-0.3.13 → abstractagent-0.3.14}/tests/test_c2447_visit_lane_honesty.py +0 -0
- {abstractagent-0.3.13 → abstractagent-0.3.14}/tests/test_claim_0029_residue_2026_07_14.py +0 -0
- {abstractagent-0.3.13 → abstractagent-0.3.14}/tests/test_codeact_logic.py +0 -0
- {abstractagent-0.3.13 → abstractagent-0.3.14}/tests/test_codeact_runtime_verifier_policy.py +0 -0
- {abstractagent-0.3.13 → abstractagent-0.3.14}/tests/test_delegate_session_route_composition.py +0 -0
- {abstractagent-0.3.13 → abstractagent-0.3.14}/tests/test_emit_inventory_drift.py +0 -0
- {abstractagent-0.3.13 → abstractagent-0.3.14}/tests/test_gated_remainder_wave_2026_07_14.py +0 -0
- {abstractagent-0.3.13 → abstractagent-0.3.14}/tests/test_generation_params_media_policies.py +0 -0
- {abstractagent-0.3.13 → abstractagent-0.3.14}/tests/test_history_monster_clamp.py +0 -0
- {abstractagent-0.3.13 → abstractagent-0.3.14}/tests/test_improvement_wave_2026_07_13.py +0 -0
- {abstractagent-0.3.13 → abstractagent-0.3.14}/tests/test_llm_call_payload_requires_prompt_or_messages.py +0 -0
- {abstractagent-0.3.13 → abstractagent-0.3.14}/tests/test_lmstudio_tool_eval_metrics.py +0 -0
- {abstractagent-0.3.13 → abstractagent-0.3.14}/tests/test_loop_hooks.py +0 -0
- {abstractagent-0.3.13 → abstractagent-0.3.14}/tests/test_loop_hooks_0026_follow_ups.py +0 -0
- {abstractagent-0.3.13 → abstractagent-0.3.14}/tests/test_memact_codeact_guidance_durable_transcript.py +0 -0
- {abstractagent-0.3.13 → abstractagent-0.3.14}/tests/test_memact_session_memory.py +0 -0
- {abstractagent-0.3.13 → abstractagent-0.3.14}/tests/test_memact_workflow.py +0 -0
- {abstractagent-0.3.13 → abstractagent-0.3.14}/tests/test_memory_recall_tool.py +0 -0
- {abstractagent-0.3.13 → abstractagent-0.3.14}/tests/test_native_loop_registry.py +0 -0
- {abstractagent-0.3.13 → abstractagent-0.3.14}/tests/test_open_attachment_tool_available.py +0 -0
- {abstractagent-0.3.13 → abstractagent-0.3.14}/tests/test_operator_conclude.py +0 -0
- {abstractagent-0.3.13 → abstractagent-0.3.14}/tests/test_optimal_wave_batch2_2026_07_13.py +0 -0
- {abstractagent-0.3.13 → abstractagent-0.3.14}/tests/test_parse_prompt_cache_capture.py +0 -0
- {abstractagent-0.3.13 → abstractagent-0.3.14}/tests/test_prefix_reuse_metric.py +0 -0
- {abstractagent-0.3.13 → abstractagent-0.3.14}/tests/test_progress_detection.py +0 -0
- {abstractagent-0.3.13 → abstractagent-0.3.14}/tests/test_react_act_only_observation.py +0 -0
- {abstractagent-0.3.13 → abstractagent-0.3.14}/tests/test_react_active_attachments_disable_tools_first_iteration.py +0 -0
- {abstractagent-0.3.13 → abstractagent-0.3.14}/tests/test_react_adapter_forwards_context_attachments_media.py +0 -0
- {abstractagent-0.3.13 → abstractagent-0.3.14}/tests/test_react_delegate_agent_tool.py +0 -0
- {abstractagent-0.3.13 → abstractagent-0.3.14}/tests/test_react_election_fence_conformance.py +0 -0
- {abstractagent-0.3.13 → abstractagent-0.3.14}/tests/test_react_entity_dress_conformance.py +0 -0
- {abstractagent-0.3.13 → abstractagent-0.3.14}/tests/test_react_guidance_durable_transcript.py +0 -0
- {abstractagent-0.3.13 → abstractagent-0.3.14}/tests/test_react_logic.py +0 -0
- {abstractagent-0.3.13 → abstractagent-0.3.14}/tests/test_react_loop_aborted_generation_retry.py +0 -0
- {abstractagent-0.3.13 → abstractagent-0.3.14}/tests/test_react_loop_context_transcript_levels.py +0 -0
- {abstractagent-0.3.13 → abstractagent-0.3.14}/tests/test_react_loop_followthrough_retry.py +0 -0
- {abstractagent-0.3.13 → abstractagent-0.3.14}/tests/test_react_loop_side_effect_dedupe_comms.py +0 -0
- {abstractagent-0.3.13 → abstractagent-0.3.14}/tests/test_react_loop_truncated_output_retry.py +0 -0
- {abstractagent-0.3.13 → abstractagent-0.3.14}/tests/test_react_max_iterations_concludes.py +0 -0
- {abstractagent-0.3.13 → abstractagent-0.3.14}/tests/test_react_phase_grant_boundary.py +0 -0
- {abstractagent-0.3.13 → abstractagent-0.3.14}/tests/test_react_planish_heuristic.py +0 -0
- {abstractagent-0.3.13 → abstractagent-0.3.14}/tests/test_react_prompt_prefix_stability.py +0 -0
- {abstractagent-0.3.13 → abstractagent-0.3.14}/tests/test_react_sight_lane_media_fold.py +0 -0
- {abstractagent-0.3.13 → abstractagent-0.3.14}/tests/test_react_turn_byte_stability.py +0 -0
- {abstractagent-0.3.13 → abstractagent-0.3.14}/tests/test_react_verifier_and_plan.py +0 -0
- {abstractagent-0.3.13 → abstractagent-0.3.14}/tests/test_react_visit_composition.py +0 -0
- {abstractagent-0.3.13 → abstractagent-0.3.14}/tests/test_react_visit_merge.py +0 -0
- {abstractagent-0.3.13 → abstractagent-0.3.14}/tests/test_react_workflow_system_prompt_and_tools_override.py +0 -0
- {abstractagent-0.3.13 → abstractagent-0.3.14}/tests/test_react_workflow_toolset_refresh.py +0 -0
- {abstractagent-0.3.13 → abstractagent-0.3.14}/tests/test_read_orchestration_guidance.py +0 -0
- {abstractagent-0.3.13 → abstractagent-0.3.14}/tests/test_reasoning_first_citizen_agent.py +0 -0
- {abstractagent-0.3.13 → abstractagent-0.3.14}/tests/test_review_failure_containment.py +0 -0
- {abstractagent-0.3.13 → abstractagent-0.3.14}/tests/test_run_start_seeds_runtime_provider_model.py +0 -0
- {abstractagent-0.3.13 → abstractagent-0.3.14}/tests/test_session_memory.py +0 -0
- {abstractagent-0.3.13 → abstractagent-0.3.14}/tests/test_sibling_loop_defects_batch.py +0 -0
- {abstractagent-0.3.13 → abstractagent-0.3.14}/tests/test_sibling_strict_transcripts_0011.py +0 -0
- {abstractagent-0.3.13 → abstractagent-0.3.14}/tests/test_stuck_streak_termination.py +0 -0
- {abstractagent-0.3.13 → abstractagent-0.3.14}/tests/test_tool_failure_hints.py +0 -0
- {abstractagent-0.3.13 → abstractagent-0.3.14}/tests/test_tool_loop_prefix_extension_a3.py +0 -0
- {abstractagent-0.3.13 → abstractagent-0.3.14}/tests/test_tool_observe_emits_result_for_tui.py +0 -0
- {abstractagent-0.3.13 → abstractagent-0.3.14}/tests/test_tools_editing.py +0 -0
- {abstractagent-0.3.13 → abstractagent-0.3.14}/tests/test_unseeded_render_limits.py +0 -0
- {abstractagent-0.3.13 → abstractagent-0.3.14}/tests/test_verifier_execution_preference.py +0 -0
- {abstractagent-0.3.13 → abstractagent-0.3.14}/tests/test_verifier_schema_strict.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
8
|
Requires-Dist: abstractcore[tools]>=2.13.41
|
|
9
|
-
Requires-Dist: abstractruntime>=0.
|
|
9
|
+
Requires-Dist: abstractruntime>=0.5.0
|
|
10
10
|
Provides-Extra: apple
|
|
11
11
|
Requires-Dist: abstractcore[all-apple]>=2.13.41; extra == "apple"
|
|
12
|
-
Requires-Dist: abstractruntime[apple]>=0.
|
|
12
|
+
Requires-Dist: abstractruntime[apple]>=0.5.0; extra == "apple"
|
|
13
13
|
Provides-Extra: gpu
|
|
14
14
|
Requires-Dist: abstractcore[all-gpu]>=2.13.41; extra == "gpu"
|
|
15
|
-
Requires-Dist: abstractruntime[gpu]>=0.
|
|
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
|
|
@@ -46,12 +46,14 @@ flowchart LR
|
|
|
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
|
|
49
|
+
- FAQ: [`docs/faq.md`](docs/faq.md)
|
|
50
|
+
- Troubleshooting: [`docs/troubleshooting.md`](docs/troubleshooting.md)
|
|
50
51
|
- Architecture (diagrams): [`docs/architecture.md`](docs/architecture.md)
|
|
51
52
|
- Changelog: [`CHANGELOG.md`](CHANGELOG.md)
|
|
52
53
|
- Contributing: [`CONTRIBUTING.md`](CONTRIBUTING.md)
|
|
53
54
|
- Security: [`SECURITY.md`](SECURITY.md)
|
|
54
55
|
- Acknowledgements: [`ACKNOWLEDMENTS.md`](ACKNOWLEDMENTS.md)
|
|
56
|
+
- Code of conduct: [`CODE_OF_CONDUCT.md`](CODE_OF_CONDUCT.md)
|
|
55
57
|
|
|
56
58
|
## What you get
|
|
57
59
|
|
|
@@ -103,9 +105,10 @@ Native Python hardware profile cascades are available for deployment manifests:
|
|
|
103
105
|
AbstractCore and AbstractRuntime profiles; AbstractAgent itself remains
|
|
104
106
|
provider/runtime agnostic.
|
|
105
107
|
|
|
106
|
-
AbstractAgent 0.3.
|
|
107
|
-
`AbstractRuntime>=0.
|
|
108
|
-
in-flight cancellation and speculation
|
|
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.
|
|
109
112
|
|
|
110
113
|
Note: the repository may be ahead of the latest published PyPI release. To verify what you installed:
|
|
111
114
|
|
|
@@ -129,8 +132,7 @@ print(state.output["answer"])
|
|
|
129
132
|
Tip: these loops send the full transcript plus ~19 tool schemas every cycle —
|
|
130
133
|
prefer a tool-capable model. On Ollama, raise the context window to the model's
|
|
131
134
|
maximum available context or the server silently truncates from the oldest
|
|
132
|
-
content first: per-call `llm_kwargs={"num_ctx": <model max>}`
|
|
133
|
-
2026-07-13) or server-side `OLLAMA_CONTEXT_LENGTH=<model max> ollama serve`.
|
|
135
|
+
content first: per-call `llm_kwargs={"num_ctx": <model max>}` or server-side `OLLAMA_CONTEXT_LENGTH=<model max> ollama serve`.
|
|
134
136
|
House rule: maximum available context unless you explicitly choose otherwise —
|
|
135
137
|
a fixed lower number is a hidden ceiling (see [`docs/faq.md`](docs/faq.md)).
|
|
136
138
|
|
|
@@ -25,12 +25,14 @@ flowchart LR
|
|
|
25
25
|
- Getting started: [`docs/getting-started.md`](docs/getting-started.md)
|
|
26
26
|
- API reference: [`docs/api.md`](docs/api.md)
|
|
27
27
|
- Loop hooks (listen/steer/capture): [`docs/hooks.md`](docs/hooks.md)
|
|
28
|
-
- FAQ
|
|
28
|
+
- FAQ: [`docs/faq.md`](docs/faq.md)
|
|
29
|
+
- Troubleshooting: [`docs/troubleshooting.md`](docs/troubleshooting.md)
|
|
29
30
|
- Architecture (diagrams): [`docs/architecture.md`](docs/architecture.md)
|
|
30
31
|
- Changelog: [`CHANGELOG.md`](CHANGELOG.md)
|
|
31
32
|
- Contributing: [`CONTRIBUTING.md`](CONTRIBUTING.md)
|
|
32
33
|
- Security: [`SECURITY.md`](SECURITY.md)
|
|
33
34
|
- Acknowledgements: [`ACKNOWLEDMENTS.md`](ACKNOWLEDMENTS.md)
|
|
35
|
+
- Code of conduct: [`CODE_OF_CONDUCT.md`](CODE_OF_CONDUCT.md)
|
|
34
36
|
|
|
35
37
|
## What you get
|
|
36
38
|
|
|
@@ -82,9 +84,10 @@ Native Python hardware profile cascades are available for deployment manifests:
|
|
|
82
84
|
AbstractCore and AbstractRuntime profiles; AbstractAgent itself remains
|
|
83
85
|
provider/runtime agnostic.
|
|
84
86
|
|
|
85
|
-
AbstractAgent 0.3.
|
|
86
|
-
`AbstractRuntime>=0.
|
|
87
|
-
in-flight cancellation and speculation
|
|
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.
|
|
88
91
|
|
|
89
92
|
Note: the repository may be ahead of the latest published PyPI release. To verify what you installed:
|
|
90
93
|
|
|
@@ -108,8 +111,7 @@ print(state.output["answer"])
|
|
|
108
111
|
Tip: these loops send the full transcript plus ~19 tool schemas every cycle —
|
|
109
112
|
prefer a tool-capable model. On Ollama, raise the context window to the model's
|
|
110
113
|
maximum available context or the server silently truncates from the oldest
|
|
111
|
-
content first: per-call `llm_kwargs={"num_ctx": <model max>}`
|
|
112
|
-
2026-07-13) or server-side `OLLAMA_CONTEXT_LENGTH=<model max> ollama serve`.
|
|
114
|
+
content first: per-call `llm_kwargs={"num_ctx": <model max>}` or server-side `OLLAMA_CONTEXT_LENGTH=<model max> ollama serve`.
|
|
113
115
|
House rule: maximum available context unless you explicitly choose otherwise —
|
|
114
116
|
a fixed lower number is a hidden ceiling (see [`docs/faq.md`](docs/faq.md)).
|
|
115
117
|
|
|
@@ -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
12
|
"abstractcore[tools]>=2.13.41",
|
|
13
|
-
"abstractruntime>=0.
|
|
13
|
+
"abstractruntime>=0.5.0",
|
|
14
14
|
]
|
|
15
15
|
|
|
16
16
|
[project.optional-dependencies]
|
|
17
17
|
apple = [
|
|
18
18
|
"abstractcore[all-apple]>=2.13.41",
|
|
19
|
-
"abstractruntime[apple]>=0.
|
|
19
|
+
"abstractruntime[apple]>=0.5.0",
|
|
20
20
|
]
|
|
21
21
|
gpu = [
|
|
22
22
|
"abstractcore[all-gpu]>=2.13.41",
|
|
23
|
-
"abstractruntime[gpu]>=0.
|
|
23
|
+
"abstractruntime[gpu]>=0.5.0",
|
|
24
24
|
]
|
|
25
25
|
dev = [
|
|
26
26
|
"pytest>=7.0",
|
|
@@ -1094,6 +1094,10 @@ def create_codeact_workflow(
|
|
|
1094
1094
|
# that silently reverts to provider defaults.
|
|
1095
1095
|
"thinking",
|
|
1096
1096
|
"speculation",
|
|
1097
|
+
# Live token streaming (2026-09-26): a delegated child
|
|
1098
|
+
# streams its LLM calls to the same live view as the
|
|
1099
|
+
# parent; False (explicit off) is inherited too.
|
|
1100
|
+
"stream",
|
|
1097
1101
|
"max_output_tokens",
|
|
1098
1102
|
"tool_prompt_examples",
|
|
1099
1103
|
# Approval policy inherits monotonically (tool-tiers adversary
|
|
@@ -915,6 +915,10 @@ def create_memact_workflow(
|
|
|
915
915
|
# that silently reverts to provider defaults.
|
|
916
916
|
"thinking",
|
|
917
917
|
"speculation",
|
|
918
|
+
# Live token streaming (2026-09-26): a delegated child
|
|
919
|
+
# streams its LLM calls to the same live view as the
|
|
920
|
+
# parent; False (explicit off) is inherited too.
|
|
921
|
+
"stream",
|
|
918
922
|
"max_output_tokens",
|
|
919
923
|
"tool_prompt_examples",
|
|
920
924
|
# Approval policy inherits monotonically (tool-tiers adversary
|
|
@@ -2871,6 +2871,10 @@ def create_react_workflow(
|
|
|
2871
2871
|
# that silently reverts to provider defaults.
|
|
2872
2872
|
"thinking",
|
|
2873
2873
|
"speculation",
|
|
2874
|
+
# Live token streaming (2026-09-26): a delegated child
|
|
2875
|
+
# streams its LLM calls to the same live view as the
|
|
2876
|
+
# parent; False (explicit off) is inherited too.
|
|
2877
|
+
"stream",
|
|
2874
2878
|
"max_output_tokens",
|
|
2875
2879
|
"tool_prompt_examples",
|
|
2876
2880
|
# Approval policy inherits MONOTONICALLY (tool-tiers adversary
|
|
@@ -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
8
|
Requires-Dist: abstractcore[tools]>=2.13.41
|
|
9
|
-
Requires-Dist: abstractruntime>=0.
|
|
9
|
+
Requires-Dist: abstractruntime>=0.5.0
|
|
10
10
|
Provides-Extra: apple
|
|
11
11
|
Requires-Dist: abstractcore[all-apple]>=2.13.41; extra == "apple"
|
|
12
|
-
Requires-Dist: abstractruntime[apple]>=0.
|
|
12
|
+
Requires-Dist: abstractruntime[apple]>=0.5.0; extra == "apple"
|
|
13
13
|
Provides-Extra: gpu
|
|
14
14
|
Requires-Dist: abstractcore[all-gpu]>=2.13.41; extra == "gpu"
|
|
15
|
-
Requires-Dist: abstractruntime[gpu]>=0.
|
|
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
|
|
@@ -46,12 +46,14 @@ flowchart LR
|
|
|
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
|
|
49
|
+
- FAQ: [`docs/faq.md`](docs/faq.md)
|
|
50
|
+
- Troubleshooting: [`docs/troubleshooting.md`](docs/troubleshooting.md)
|
|
50
51
|
- Architecture (diagrams): [`docs/architecture.md`](docs/architecture.md)
|
|
51
52
|
- Changelog: [`CHANGELOG.md`](CHANGELOG.md)
|
|
52
53
|
- Contributing: [`CONTRIBUTING.md`](CONTRIBUTING.md)
|
|
53
54
|
- Security: [`SECURITY.md`](SECURITY.md)
|
|
54
55
|
- Acknowledgements: [`ACKNOWLEDMENTS.md`](ACKNOWLEDMENTS.md)
|
|
56
|
+
- Code of conduct: [`CODE_OF_CONDUCT.md`](CODE_OF_CONDUCT.md)
|
|
55
57
|
|
|
56
58
|
## What you get
|
|
57
59
|
|
|
@@ -103,9 +105,10 @@ Native Python hardware profile cascades are available for deployment manifests:
|
|
|
103
105
|
AbstractCore and AbstractRuntime profiles; AbstractAgent itself remains
|
|
104
106
|
provider/runtime agnostic.
|
|
105
107
|
|
|
106
|
-
AbstractAgent 0.3.
|
|
107
|
-
`AbstractRuntime>=0.
|
|
108
|
-
in-flight cancellation and speculation
|
|
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.
|
|
109
112
|
|
|
110
113
|
Note: the repository may be ahead of the latest published PyPI release. To verify what you installed:
|
|
111
114
|
|
|
@@ -129,8 +132,7 @@ print(state.output["answer"])
|
|
|
129
132
|
Tip: these loops send the full transcript plus ~19 tool schemas every cycle —
|
|
130
133
|
prefer a tool-capable model. On Ollama, raise the context window to the model's
|
|
131
134
|
maximum available context or the server silently truncates from the oldest
|
|
132
|
-
content first: per-call `llm_kwargs={"num_ctx": <model max>}`
|
|
133
|
-
2026-07-13) or server-side `OLLAMA_CONTEXT_LENGTH=<model max> ollama serve`.
|
|
135
|
+
content first: per-call `llm_kwargs={"num_ctx": <model max>}` or server-side `OLLAMA_CONTEXT_LENGTH=<model max> ollama serve`.
|
|
134
136
|
House rule: maximum available context unless you explicitly choose otherwise —
|
|
135
137
|
a fixed lower number is a hidden ceiling (see [`docs/faq.md`](docs/faq.md)).
|
|
136
138
|
|
|
@@ -51,6 +51,7 @@ tests/test_active_context_policy_adoption.py
|
|
|
51
51
|
tests/test_adversary_hardening_2026_07_13.py
|
|
52
52
|
tests/test_agent_plan_review_modes.py
|
|
53
53
|
tests/test_agent_speculation_inheritance.py
|
|
54
|
+
tests/test_agent_stream_inheritance.py
|
|
54
55
|
tests/test_agents_integration_llm.py
|
|
55
56
|
tests/test_base_agent_trace_accessors.py
|
|
56
57
|
tests/test_batching_prompt_rule.py
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
abstractcore[tools]>=2.13.41
|
|
2
|
-
abstractruntime>=0.
|
|
2
|
+
abstractruntime>=0.5.0
|
|
3
3
|
|
|
4
4
|
[apple]
|
|
5
5
|
abstractcore[all-apple]>=2.13.41
|
|
6
|
-
abstractruntime[apple]>=0.
|
|
6
|
+
abstractruntime[apple]>=0.5.0
|
|
7
7
|
|
|
8
8
|
[dev]
|
|
9
9
|
pytest>=7.0
|
|
10
10
|
|
|
11
11
|
[gpu]
|
|
12
12
|
abstractcore[all-gpu]>=2.13.41
|
|
13
|
-
abstractruntime[gpu]>=0.
|
|
13
|
+
abstractruntime[gpu]>=0.5.0
|
|
14
14
|
|
|
15
15
|
[test]
|
|
16
16
|
pytest>=7.0
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"""Delegated sub-agents inherit the run's live token-streaming switch.
|
|
2
|
+
|
|
3
|
+
`_runtime.stream: true` asks the runtime to stream every LLM call of the run
|
|
4
|
+
to the host's live view. A `delegate_agent` child is started with an explicit
|
|
5
|
+
`_runtime` rider list; without `stream` in it, the child's calls would silently
|
|
6
|
+
stop streaming mid-tree. False (explicit off) is inherited too; an absent value
|
|
7
|
+
stays absent.
|
|
8
|
+
"""
|
|
9
|
+
from types import SimpleNamespace
|
|
10
|
+
|
|
11
|
+
import pytest
|
|
12
|
+
|
|
13
|
+
from abstractagent.adapters.codeact_runtime import create_codeact_workflow
|
|
14
|
+
from abstractagent.adapters.memact_runtime import create_memact_workflow
|
|
15
|
+
from abstractagent.adapters.react_runtime import create_react_workflow
|
|
16
|
+
from abstractagent.logic.builtins import DELEGATE_AGENT_TOOL
|
|
17
|
+
from abstractagent.logic.codeact import CodeActLogic
|
|
18
|
+
from abstractagent.logic.memact import MemActLogic
|
|
19
|
+
from abstractagent.logic.react import ReActLogic
|
|
20
|
+
from abstractruntime import EffectType, RunState, RunStatus
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
@pytest.mark.parametrize(
|
|
24
|
+
"factory,logic",
|
|
25
|
+
[
|
|
26
|
+
(create_react_workflow, ReActLogic),
|
|
27
|
+
(create_codeact_workflow, CodeActLogic),
|
|
28
|
+
(create_memact_workflow, MemActLogic),
|
|
29
|
+
],
|
|
30
|
+
)
|
|
31
|
+
@pytest.mark.parametrize("stream", [True, False, None])
|
|
32
|
+
def test_every_delegate_loop_inherits_stream(factory, logic, stream):
|
|
33
|
+
workflow = factory(logic=logic(tools=[DELEGATE_AGENT_TOOL]), workflow_id="wf")
|
|
34
|
+
runtime_ns = {"inbox": [], "provider": "stub", "model": "stub", "allowed_tools": ["delegate_agent"]}
|
|
35
|
+
if stream is not None:
|
|
36
|
+
runtime_ns["stream"] = stream
|
|
37
|
+
run = RunState(
|
|
38
|
+
run_id="parent",
|
|
39
|
+
workflow_id="wf",
|
|
40
|
+
status=RunStatus.RUNNING,
|
|
41
|
+
current_node="act",
|
|
42
|
+
vars={
|
|
43
|
+
"context": {"task": "test", "messages": []},
|
|
44
|
+
"scratchpad": {"iteration": 1, "max_iterations": 20, "cycles": []},
|
|
45
|
+
"_runtime": runtime_ns,
|
|
46
|
+
"_temp": {"pending_tool_calls": [{"name": "delegate_agent", "arguments": {"task": "subtask"}, "call_id": "d1"}]},
|
|
47
|
+
"_limits": {"max_iterations": 20},
|
|
48
|
+
},
|
|
49
|
+
)
|
|
50
|
+
plan = workflow.get_node("act")(run, SimpleNamespace(now_iso=lambda: "2026-09-26T00:00:00Z"))
|
|
51
|
+
assert plan.effect is not None and plan.effect.type == EffectType.START_SUBWORKFLOW
|
|
52
|
+
child = plan.effect.payload["vars"]["_runtime"]
|
|
53
|
+
if stream is None:
|
|
54
|
+
assert "stream" not in child
|
|
55
|
+
else:
|
|
56
|
+
assert child["stream"] is stream
|
|
@@ -19,7 +19,7 @@ def test_base_dependency_floors_match_gateway_alignment() -> None:
|
|
|
19
19
|
deps = set(_project()["dependencies"])
|
|
20
20
|
|
|
21
21
|
assert "abstractcore[tools]>=2.13.41" in deps
|
|
22
|
-
assert "abstractruntime>=0.
|
|
22
|
+
assert "abstractruntime>=0.5.0" in deps
|
|
23
23
|
|
|
24
24
|
|
|
25
25
|
def test_hardware_profile_extras_are_core_runtime_cascades() -> None:
|
|
@@ -27,11 +27,11 @@ def test_hardware_profile_extras_are_core_runtime_cascades() -> None:
|
|
|
27
27
|
|
|
28
28
|
assert set(extras["apple"]) == {
|
|
29
29
|
"abstractcore[all-apple]>=2.13.41",
|
|
30
|
-
"abstractruntime[apple]>=0.
|
|
30
|
+
"abstractruntime[apple]>=0.5.0",
|
|
31
31
|
}
|
|
32
32
|
assert set(extras["gpu"]) == {
|
|
33
33
|
"abstractcore[all-gpu]>=2.13.41",
|
|
34
|
-
"abstractruntime[gpu]>=0.
|
|
34
|
+
"abstractruntime[gpu]>=0.5.0",
|
|
35
35
|
}
|
|
36
36
|
assert "all-apple" not in extras
|
|
37
37
|
assert "all-gpu" not in extras
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{abstractagent-0.3.13 → abstractagent-0.3.14}/src/abstractagent/adapters/generation_params.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{abstractagent-0.3.13 → abstractagent-0.3.14}/src/abstractagent/adapters/native_loop_registry.py
RENAMED
|
File without changes
|
|
File without changes
|
{abstractagent-0.3.13 → abstractagent-0.3.14}/src/abstractagent/adapters/read_orchestration.py
RENAMED
|
File without changes
|
|
File without changes
|
{abstractagent-0.3.13 → abstractagent-0.3.14}/src/abstractagent/adapters/tool_failure_hints.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{abstractagent-0.3.13 → abstractagent-0.3.14}/src/abstractagent/scripts/lmstudio_tool_eval.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{abstractagent-0.3.13 → abstractagent-0.3.14}/src/abstractagent.egg-info/dependency_links.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
|
{abstractagent-0.3.13 → abstractagent-0.3.14}/tests/test_builtin_tool_specs_optional_defaults.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{abstractagent-0.3.13 → abstractagent-0.3.14}/tests/test_delegate_session_route_composition.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{abstractagent-0.3.13 → abstractagent-0.3.14}/tests/test_generation_params_media_policies.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{abstractagent-0.3.13 → abstractagent-0.3.14}/tests/test_react_election_fence_conformance.py
RENAMED
|
File without changes
|
|
File without changes
|
{abstractagent-0.3.13 → abstractagent-0.3.14}/tests/test_react_guidance_durable_transcript.py
RENAMED
|
File without changes
|
|
File without changes
|
{abstractagent-0.3.13 → abstractagent-0.3.14}/tests/test_react_loop_aborted_generation_retry.py
RENAMED
|
File without changes
|
{abstractagent-0.3.13 → abstractagent-0.3.14}/tests/test_react_loop_context_transcript_levels.py
RENAMED
|
File without changes
|
|
File without changes
|
{abstractagent-0.3.13 → abstractagent-0.3.14}/tests/test_react_loop_side_effect_dedupe_comms.py
RENAMED
|
File without changes
|
{abstractagent-0.3.13 → abstractagent-0.3.14}/tests/test_react_loop_truncated_output_retry.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{abstractagent-0.3.13 → abstractagent-0.3.14}/tests/test_run_start_seeds_runtime_provider_model.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{abstractagent-0.3.13 → abstractagent-0.3.14}/tests/test_tool_observe_emits_result_for_tui.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|