deepstrike 0.2.39__tar.gz → 0.2.41__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.
- {deepstrike-0.2.39 → deepstrike-0.2.41}/Cargo.lock +15 -5
- {deepstrike-0.2.39 → deepstrike-0.2.41}/Cargo.toml +2 -2
- {deepstrike-0.2.39 → deepstrike-0.2.41}/PKG-INFO +54 -43
- {deepstrike-0.2.39 → deepstrike-0.2.41}/README.md +53 -42
- {deepstrike-0.2.39 → deepstrike-0.2.41}/crates/deepstrike-core/Cargo.toml +4 -0
- deepstrike-0.2.41/crates/deepstrike-core/benches/kernel_baseline.rs +202 -0
- deepstrike-0.2.41/crates/deepstrike-core/src/benchmark/mod.rs +207 -0
- {deepstrike-0.2.39 → deepstrike-0.2.41}/crates/deepstrike-core/src/context/compression.rs +554 -126
- {deepstrike-0.2.39 → deepstrike-0.2.41}/crates/deepstrike-core/src/context/config.rs +29 -11
- {deepstrike-0.2.39 → deepstrike-0.2.41}/crates/deepstrike-core/src/context/manager.rs +412 -99
- {deepstrike-0.2.39 → deepstrike-0.2.41}/crates/deepstrike-core/src/context/mod.rs +4 -1
- {deepstrike-0.2.39 → deepstrike-0.2.41}/crates/deepstrike-core/src/context/partitions.rs +209 -15
- deepstrike-0.2.41/crates/deepstrike-core/src/context/policy.rs +124 -0
- {deepstrike-0.2.39 → deepstrike-0.2.41}/crates/deepstrike-core/src/context/renderer.rs +472 -113
- {deepstrike-0.2.39 → deepstrike-0.2.41}/crates/deepstrike-core/src/context/renewal.rs +22 -10
- deepstrike-0.2.41/crates/deepstrike-core/src/context/summarizer.rs +312 -0
- {deepstrike-0.2.39 → deepstrike-0.2.41}/crates/deepstrike-core/src/context/task_state.rs +14 -7
- {deepstrike-0.2.39 → deepstrike-0.2.41}/crates/deepstrike-core/src/context/token_engine.rs +34 -3
- deepstrike-0.2.41/crates/deepstrike-core/src/context/units.rs +211 -0
- deepstrike-0.2.41/crates/deepstrike-core/src/context/utility.rs +402 -0
- {deepstrike-0.2.39 → deepstrike-0.2.41}/crates/deepstrike-core/src/governance/constraint.rs +1 -1
- {deepstrike-0.2.39 → deepstrike-0.2.41}/crates/deepstrike-core/src/governance/permission.rs +0 -1
- {deepstrike-0.2.39 → deepstrike-0.2.41}/crates/deepstrike-core/src/governance/pipeline.rs +4 -1
- {deepstrike-0.2.39 → deepstrike-0.2.41}/crates/deepstrike-core/src/governance/quota.rs +1 -1
- {deepstrike-0.2.39 → deepstrike-0.2.41}/crates/deepstrike-core/src/governance/repeat_fuse.rs +9 -3
- {deepstrike-0.2.39 → deepstrike-0.2.41}/crates/deepstrike-core/src/harness/eval.rs +1 -1
- deepstrike-0.2.41/crates/deepstrike-core/src/harness/mod.rs +6 -0
- {deepstrike-0.2.39 → deepstrike-0.2.41}/crates/deepstrike-core/src/lib.rs +11 -9
- deepstrike-0.2.41/crates/deepstrike-core/src/memory/curator.rs +112 -0
- deepstrike-0.2.41/crates/deepstrike-core/src/memory/mod.rs +7 -0
- {deepstrike-0.2.39 → deepstrike-0.2.41}/crates/deepstrike-core/src/mm/handle.rs +74 -17
- deepstrike-0.2.41/crates/deepstrike-core/src/mm/memory.rs +828 -0
- {deepstrike-0.2.39 → deepstrike-0.2.41}/crates/deepstrike-core/src/mm/mod.rs +3 -3
- deepstrike-0.2.41/crates/deepstrike-core/src/mm/value.rs +114 -0
- deepstrike-0.2.41/crates/deepstrike-core/src/orchestration/task_graph.rs +527 -0
- {deepstrike-0.2.39 → deepstrike-0.2.41}/crates/deepstrike-core/src/orchestration/tournament.rs +1 -2
- {deepstrike-0.2.39 → deepstrike-0.2.41}/crates/deepstrike-core/src/orchestration/workflow/mod.rs +64 -36
- {deepstrike-0.2.39 → deepstrike-0.2.41}/crates/deepstrike-core/src/orchestration/workflow/run.rs +1370 -339
- {deepstrike-0.2.39 → deepstrike-0.2.41}/crates/deepstrike-core/src/proc/mod.rs +7 -3
- {deepstrike-0.2.39 → deepstrike-0.2.41}/crates/deepstrike-core/src/runtime/event_log.rs +27 -9
- deepstrike-0.2.41/crates/deepstrike-core/src/runtime/kernel/protocol.rs +1417 -0
- deepstrike-0.2.41/crates/deepstrike-core/src/runtime/kernel/runtime.rs +2507 -0
- deepstrike-0.2.41/crates/deepstrike-core/src/runtime/kernel/tests.rs +4423 -0
- deepstrike-0.2.41/crates/deepstrike-core/src/runtime/kernel.rs +31 -0
- deepstrike-0.2.41/crates/deepstrike-core/src/runtime/mod.rs +27 -0
- {deepstrike-0.2.39 → deepstrike-0.2.41}/crates/deepstrike-core/src/runtime/repair.rs +138 -38
- {deepstrike-0.2.39 → deepstrike-0.2.41}/crates/deepstrike-core/src/runtime/replay.rs +88 -13
- {deepstrike-0.2.39 → deepstrike-0.2.41}/crates/deepstrike-core/src/runtime/session.rs +44 -11
- {deepstrike-0.2.39 → deepstrike-0.2.41}/crates/deepstrike-core/src/scheduler/entropy.rs +97 -17
- {deepstrike-0.2.39 → deepstrike-0.2.41}/crates/deepstrike-core/src/scheduler/mod.rs +1 -3
- deepstrike-0.2.41/crates/deepstrike-core/src/scheduler/policy.rs +99 -0
- {deepstrike-0.2.39 → deepstrike-0.2.41}/crates/deepstrike-core/src/scheduler/rollback.rs +6 -2
- deepstrike-0.2.41/crates/deepstrike-core/src/scheduler/state_machine/cancellation.rs +52 -0
- {deepstrike-0.2.39 → deepstrike-0.2.41}/crates/deepstrike-core/src/scheduler/state_machine/capability.rs +11 -10
- {deepstrike-0.2.39 → deepstrike-0.2.41}/crates/deepstrike-core/src/scheduler/state_machine/eviction.rs +23 -18
- {deepstrike-0.2.39 → deepstrike-0.2.41}/crates/deepstrike-core/src/scheduler/state_machine/gate.rs +146 -68
- {deepstrike-0.2.39 → deepstrike-0.2.41}/crates/deepstrike-core/src/scheduler/state_machine/milestone_exec.rs +10 -6
- {deepstrike-0.2.39 → deepstrike-0.2.41}/crates/deepstrike-core/src/scheduler/state_machine/mod.rs +540 -102
- {deepstrike-0.2.39 → deepstrike-0.2.41}/crates/deepstrike-core/src/scheduler/state_machine/process.rs +25 -28
- deepstrike-0.2.41/crates/deepstrike-core/src/scheduler/state_machine/signal.rs +258 -0
- deepstrike-0.2.41/crates/deepstrike-core/src/scheduler/state_machine/tests.rs +4141 -0
- {deepstrike-0.2.39 → deepstrike-0.2.41}/crates/deepstrike-core/src/scheduler/state_machine/workflow.rs +199 -61
- {deepstrike-0.2.39 → deepstrike-0.2.41}/crates/deepstrike-core/src/scheduler/tcb.rs +41 -9
- deepstrike-0.2.41/crates/deepstrike-core/src/signals/attention.rs +109 -0
- deepstrike-0.2.41/crates/deepstrike-core/src/signals/queue.rs +430 -0
- deepstrike-0.2.41/crates/deepstrike-core/src/signals/router.rs +625 -0
- {deepstrike-0.2.39 → deepstrike-0.2.41}/crates/deepstrike-core/src/syscall/mod.rs +19 -6
- {deepstrike-0.2.39 → deepstrike-0.2.41}/crates/deepstrike-core/src/types/agent.rs +13 -4
- {deepstrike-0.2.39 → deepstrike-0.2.41}/crates/deepstrike-core/src/types/capability.rs +4 -1
- {deepstrike-0.2.39 → deepstrike-0.2.41}/crates/deepstrike-core/src/types/contract.rs +1 -1
- {deepstrike-0.2.39 → deepstrike-0.2.41}/crates/deepstrike-core/src/types/message.rs +70 -39
- {deepstrike-0.2.39 → deepstrike-0.2.41}/crates/deepstrike-core/src/types/milestone.rs +1 -1
- {deepstrike-0.2.39 → deepstrike-0.2.41}/crates/deepstrike-core/src/types/policy.rs +2 -3
- {deepstrike-0.2.39 → deepstrike-0.2.41}/crates/deepstrike-core/src/types/signal.rs +24 -7
- {deepstrike-0.2.39 → deepstrike-0.2.41}/crates/deepstrike-py/src/lib.rs +298 -252
- {deepstrike-0.2.39 → deepstrike-0.2.41}/deepstrike/__init__.py +122 -23
- {deepstrike-0.2.39 → deepstrike-0.2.41}/deepstrike/collaboration/__init__.py +3 -4
- {deepstrike-0.2.39 → deepstrike-0.2.41}/deepstrike/collaboration/contract.py +1 -1
- {deepstrike-0.2.39 → deepstrike-0.2.41}/deepstrike/collaboration/handoff.py +2 -22
- deepstrike-0.2.41/deepstrike/collaboration/harness.py +119 -0
- {deepstrike-0.2.39 → deepstrike-0.2.41}/deepstrike/collaboration/modes.py +56 -9
- {deepstrike-0.2.39 → deepstrike-0.2.41}/deepstrike/collaboration/pool.py +71 -4
- deepstrike-0.2.41/deepstrike/harness/__init__.py +39 -0
- deepstrike-0.2.41/deepstrike/harness/harness.py +371 -0
- {deepstrike-0.2.39 → deepstrike-0.2.41}/deepstrike/harness/judge.py +4 -6
- {deepstrike-0.2.39 → deepstrike-0.2.41}/deepstrike/kernel/__init__.py +0 -2
- deepstrike-0.2.41/deepstrike/memory/__init__.py +18 -0
- deepstrike-0.2.41/deepstrike/memory/agent.py +23 -0
- deepstrike-0.2.41/deepstrike/memory/extraction.py +79 -0
- deepstrike-0.2.41/deepstrike/memory/in_memory_store.py +120 -0
- deepstrike-0.2.41/deepstrike/memory/protocols.py +97 -0
- deepstrike-0.2.41/deepstrike/memory/ranking.py +105 -0
- deepstrike-0.2.41/deepstrike/memory/retention.py +59 -0
- {deepstrike-0.2.39 → deepstrike-0.2.41}/deepstrike/providers/__init__.py +2 -1
- {deepstrike-0.2.39 → deepstrike-0.2.41}/deepstrike/providers/base.py +37 -4
- {deepstrike-0.2.39 → deepstrike-0.2.41}/deepstrike/providers/gemini.py +9 -1
- {deepstrike-0.2.39 → deepstrike-0.2.41}/deepstrike/providers/ollama.py +3 -0
- {deepstrike-0.2.39 → deepstrike-0.2.41}/deepstrike/providers/openai_responses.py +7 -2
- {deepstrike-0.2.39 → deepstrike-0.2.41}/deepstrike/providers/qwen.py +3 -1
- {deepstrike-0.2.39 → deepstrike-0.2.41}/deepstrike/providers/stream.py +0 -1
- {deepstrike-0.2.39 → deepstrike-0.2.41}/deepstrike/runtime/__init__.py +124 -8
- deepstrike-0.2.41/deepstrike/runtime/context_policy.py +105 -0
- {deepstrike-0.2.39 → deepstrike-0.2.41}/deepstrike/runtime/eval.py +1 -1
- {deepstrike-0.2.39 → deepstrike-0.2.41}/deepstrike/runtime/event_stream.py +12 -3
- {deepstrike-0.2.39 → deepstrike-0.2.41}/deepstrike/runtime/execution_plane.py +14 -7
- {deepstrike-0.2.39 → deepstrike-0.2.41}/deepstrike/runtime/facade.py +5 -2
- {deepstrike-0.2.39 → deepstrike-0.2.41}/deepstrike/runtime/kernel_event_log.py +51 -10
- deepstrike-0.2.41/deepstrike/runtime/kernel_rebuild.py +107 -0
- {deepstrike-0.2.39 → deepstrike-0.2.41}/deepstrike/runtime/kernel_step.py +129 -11
- deepstrike-0.2.41/deepstrike/runtime/kernel_transaction_log.py +254 -0
- {deepstrike-0.2.39 → deepstrike-0.2.41}/deepstrike/runtime/large_result_spool.py +16 -4
- {deepstrike-0.2.39 → deepstrike-0.2.41}/deepstrike/runtime/loop_driver.py +1 -5
- {deepstrike-0.2.39 → deepstrike-0.2.41}/deepstrike/runtime/mcp_proxy_plane.py +19 -5
- {deepstrike-0.2.39 → deepstrike-0.2.41}/deepstrike/runtime/os_profile.py +30 -15
- {deepstrike-0.2.39 → deepstrike-0.2.41}/deepstrike/runtime/os_snapshot.py +27 -4
- {deepstrike-0.2.39 → deepstrike-0.2.41}/deepstrike/runtime/process_sandbox_plane.py +39 -11
- deepstrike-0.2.41/deepstrike/runtime/reaction_checkpoint.py +128 -0
- {deepstrike-0.2.39 → deepstrike-0.2.41}/deepstrike/runtime/reactive_session.py +71 -21
- deepstrike-0.2.41/deepstrike/runtime/reliability.py +143 -0
- {deepstrike-0.2.39 → deepstrike-0.2.41}/deepstrike/runtime/remote_vpc_plane.py +16 -4
- deepstrike-0.2.41/deepstrike/runtime/run_group.py +249 -0
- {deepstrike-0.2.39 → deepstrike-0.2.41}/deepstrike/runtime/runner.py +1002 -580
- deepstrike-0.2.41/deepstrike/runtime/session_log.py +792 -0
- {deepstrike-0.2.39 → deepstrike-0.2.41}/deepstrike/runtime/session_repair.py +37 -15
- {deepstrike-0.2.39 → deepstrike-0.2.41}/deepstrike/runtime/sub_agent_orchestrator.py +43 -14
- deepstrike-0.2.41/deepstrike/signals/__init__.py +8 -0
- deepstrike-0.2.41/deepstrike/signals/gateway.py +193 -0
- {deepstrike-0.2.39 → deepstrike-0.2.41}/deepstrike/signals/scheduled.py +1 -3
- deepstrike-0.2.41/deepstrike/signals/types.py +65 -0
- deepstrike-0.2.41/deepstrike/skills/loader.py +22 -0
- {deepstrike-0.2.39 → deepstrike-0.2.41}/deepstrike/types/agent.py +67 -1
- {deepstrike-0.2.39 → deepstrike-0.2.41}/pyproject.toml +1 -1
- deepstrike-0.2.39/crates/deepstrike-core/src/context/summarizer.rs +0 -76
- deepstrike-0.2.39/crates/deepstrike-core/src/harness/mod.rs +0 -6
- deepstrike-0.2.39/crates/deepstrike-core/src/memory/curator.rs +0 -343
- deepstrike-0.2.39/crates/deepstrike-core/src/memory/idle_pipeline.rs +0 -461
- deepstrike-0.2.39/crates/deepstrike-core/src/memory/mod.rs +0 -13
- deepstrike-0.2.39/crates/deepstrike-core/src/memory/semantic.rs +0 -10
- deepstrike-0.2.39/crates/deepstrike-core/src/memory/synthesis.rs +0 -323
- deepstrike-0.2.39/crates/deepstrike-core/src/memory/trace_analyzer.rs +0 -360
- deepstrike-0.2.39/crates/deepstrike-core/src/mm/memory.rs +0 -342
- deepstrike-0.2.39/crates/deepstrike-core/src/orchestration/task_graph.rs +0 -300
- deepstrike-0.2.39/crates/deepstrike-core/src/runtime/kernel.rs +0 -2935
- deepstrike-0.2.39/crates/deepstrike-core/src/runtime/mod.rs +0 -27
- deepstrike-0.2.39/crates/deepstrike-core/src/scheduler/policy.rs +0 -51
- deepstrike-0.2.39/crates/deepstrike-core/src/scheduler/state_machine/signal.rs +0 -155
- deepstrike-0.2.39/crates/deepstrike-core/src/scheduler/state_machine/tests.rs +0 -3117
- deepstrike-0.2.39/crates/deepstrike-core/src/signals/attention.rs +0 -57
- deepstrike-0.2.39/crates/deepstrike-core/src/signals/queue.rs +0 -150
- deepstrike-0.2.39/crates/deepstrike-core/src/signals/router.rs +0 -155
- deepstrike-0.2.39/deepstrike/collaboration/harness.py +0 -225
- deepstrike-0.2.39/deepstrike/harness/__init__.py +0 -17
- deepstrike-0.2.39/deepstrike/harness/harness.py +0 -295
- deepstrike-0.2.39/deepstrike/memory/__init__.py +0 -11
- deepstrike-0.2.39/deepstrike/memory/agent.py +0 -33
- deepstrike-0.2.39/deepstrike/memory/in_memory_store.py +0 -53
- deepstrike-0.2.39/deepstrike/memory/protocols.py +0 -81
- deepstrike-0.2.39/deepstrike/runtime/run_group.py +0 -152
- deepstrike-0.2.39/deepstrike/runtime/session_log.py +0 -516
- deepstrike-0.2.39/deepstrike/signals/__init__.py +0 -5
- deepstrike-0.2.39/deepstrike/signals/gateway.py +0 -106
- deepstrike-0.2.39/deepstrike/signals/types.py +0 -68
- {deepstrike-0.2.39 → deepstrike-0.2.41}/crates/deepstrike-core/src/context/fault.rs +0 -0
- {deepstrike-0.2.39 → deepstrike-0.2.41}/crates/deepstrike-core/src/context/pressure.rs +0 -0
- {deepstrike-0.2.39 → deepstrike-0.2.41}/crates/deepstrike-core/src/context/skill_catalog.rs +0 -0
- {deepstrike-0.2.39 → deepstrike-0.2.41}/crates/deepstrike-core/src/context/text.rs +0 -0
- {deepstrike-0.2.39 → deepstrike-0.2.41}/crates/deepstrike-core/src/governance/mod.rs +0 -0
- {deepstrike-0.2.39 → deepstrike-0.2.41}/crates/deepstrike-core/src/governance/rate_limit.rs +0 -0
- {deepstrike-0.2.39 → deepstrike-0.2.41}/crates/deepstrike-core/src/governance/veto.rs +0 -0
- {deepstrike-0.2.39 → deepstrike-0.2.41}/crates/deepstrike-core/src/memory/durable.rs +0 -0
- {deepstrike-0.2.39 → deepstrike-0.2.41}/crates/deepstrike-core/src/orchestration/mod.rs +0 -0
- {deepstrike-0.2.39 → deepstrike-0.2.41}/crates/deepstrike-core/src/scheduler/milestone.rs +0 -0
- {deepstrike-0.2.39 → deepstrike-0.2.41}/crates/deepstrike-core/src/signals/mod.rs +0 -0
- {deepstrike-0.2.39 → deepstrike-0.2.41}/crates/deepstrike-core/src/types/error.rs +0 -0
- {deepstrike-0.2.39 → deepstrike-0.2.41}/crates/deepstrike-core/src/types/mod.rs +0 -0
- {deepstrike-0.2.39 → deepstrike-0.2.41}/crates/deepstrike-core/src/types/result.rs +0 -0
- {deepstrike-0.2.39 → deepstrike-0.2.41}/crates/deepstrike-core/src/types/skill.rs +0 -0
- {deepstrike-0.2.39 → deepstrike-0.2.41}/crates/deepstrike-core/src/types/task.rs +0 -0
- {deepstrike-0.2.39 → deepstrike-0.2.41}/crates/deepstrike-py/Cargo.toml +0 -0
- {deepstrike-0.2.39 → deepstrike-0.2.41}/deepstrike/governance.py +0 -0
- {deepstrike-0.2.39 → deepstrike-0.2.41}/deepstrike/knowledge/__init__.py +0 -0
- {deepstrike-0.2.39 → deepstrike-0.2.41}/deepstrike/knowledge/source.py +0 -0
- {deepstrike-0.2.39 → deepstrike-0.2.41}/deepstrike/memory/working.py +0 -0
- {deepstrike-0.2.39 → deepstrike-0.2.41}/deepstrike/providers/anthropic.py +0 -0
- {deepstrike-0.2.39 → deepstrike-0.2.41}/deepstrike/providers/anthropic_compatible.py +0 -0
- {deepstrike-0.2.39 → deepstrike-0.2.41}/deepstrike/providers/deepseek.py +0 -0
- {deepstrike-0.2.39 → deepstrike-0.2.41}/deepstrike/providers/factories.py +0 -0
- {deepstrike-0.2.39 → deepstrike-0.2.41}/deepstrike/providers/glm.py +0 -0
- {deepstrike-0.2.39 → deepstrike-0.2.41}/deepstrike/providers/kimi.py +0 -0
- {deepstrike-0.2.39 → deepstrike-0.2.41}/deepstrike/providers/minimax.py +0 -0
- {deepstrike-0.2.39 → deepstrike-0.2.41}/deepstrike/providers/openai.py +0 -0
- {deepstrike-0.2.39 → deepstrike-0.2.41}/deepstrike/providers/replay.py +0 -0
- {deepstrike-0.2.39 → deepstrike-0.2.41}/deepstrike/providers/replay_validator.py +0 -0
- {deepstrike-0.2.39 → deepstrike-0.2.41}/deepstrike/providers/vendor_profiles.py +0 -0
- {deepstrike-0.2.39 → deepstrike-0.2.41}/deepstrike/runtime/archive.py +0 -0
- {deepstrike-0.2.39 → deepstrike-0.2.41}/deepstrike/runtime/credential_vault.py +0 -0
- {deepstrike-0.2.39 → deepstrike-0.2.41}/deepstrike/runtime/filtered_plane.py +0 -0
- {deepstrike-0.2.39 → deepstrike-0.2.41}/deepstrike/runtime/output_schema.py +0 -0
- {deepstrike-0.2.39 → deepstrike-0.2.41}/deepstrike/runtime/provider_replay.py +0 -0
- {deepstrike-0.2.39 → deepstrike-0.2.41}/deepstrike/runtime/reducers.py +0 -0
- {deepstrike-0.2.39 → deepstrike-0.2.41}/deepstrike/runtime/replay_fixture.py +0 -0
- {deepstrike-0.2.39 → deepstrike-0.2.41}/deepstrike/runtime/replay_provider.py +0 -0
- {deepstrike-0.2.39 → deepstrike-0.2.41}/deepstrike/runtime/replay_sanitize.py +0 -0
- {deepstrike-0.2.39 → deepstrike-0.2.41}/deepstrike/runtime/turn_policy.py +0 -0
- {deepstrike-0.2.39 → deepstrike-0.2.41}/deepstrike/runtime/workflow_control_flow.py +0 -0
- {deepstrike-0.2.39 → deepstrike-0.2.41}/deepstrike/runtime/workflow_store.py +0 -0
- {deepstrike-0.2.39 → deepstrike-0.2.41}/deepstrike/runtime/worktree_plane.py +0 -0
- {deepstrike-0.2.39 → deepstrike-0.2.41}/deepstrike/safety/__init__.py +0 -0
- {deepstrike-0.2.39 → deepstrike-0.2.41}/deepstrike/safety/permissions.py +0 -0
- {deepstrike-0.2.39 → deepstrike-0.2.41}/deepstrike/skills/__init__.py +0 -0
- {deepstrike-0.2.39 → deepstrike-0.2.41}/deepstrike/skills/registry.py +0 -0
- {deepstrike-0.2.39 → deepstrike-0.2.41}/deepstrike/skills/watcher.py +0 -0
- {deepstrike-0.2.39 → deepstrike-0.2.41}/deepstrike/tools/__init__.py +0 -0
- {deepstrike-0.2.39 → deepstrike-0.2.41}/deepstrike/tools/builtin/__init__.py +0 -0
- {deepstrike-0.2.39 → deepstrike-0.2.41}/deepstrike/tools/builtin/read_file.py +0 -0
- {deepstrike-0.2.39 → deepstrike-0.2.41}/deepstrike/tools/errors.py +0 -0
- {deepstrike-0.2.39 → deepstrike-0.2.41}/deepstrike/tools/execution.py +0 -0
- {deepstrike-0.2.39 → deepstrike-0.2.41}/deepstrike/tools/registry.py +0 -0
- {deepstrike-0.2.39 → deepstrike-0.2.41}/deepstrike/types/__init__.py +0 -0
|
@@ -194,7 +194,7 @@ dependencies = [
|
|
|
194
194
|
|
|
195
195
|
[[package]]
|
|
196
196
|
name = "deepstrike-core"
|
|
197
|
-
version = "0.2.
|
|
197
|
+
version = "0.2.41"
|
|
198
198
|
dependencies = [
|
|
199
199
|
"compact_str",
|
|
200
200
|
"pretty_assertions",
|
|
@@ -204,9 +204,19 @@ dependencies = [
|
|
|
204
204
|
"uuid",
|
|
205
205
|
]
|
|
206
206
|
|
|
207
|
+
[[package]]
|
|
208
|
+
name = "deepstrike-lab"
|
|
209
|
+
version = "0.2.41"
|
|
210
|
+
dependencies = [
|
|
211
|
+
"deepstrike-core",
|
|
212
|
+
"serde",
|
|
213
|
+
"serde_json",
|
|
214
|
+
"thiserror",
|
|
215
|
+
]
|
|
216
|
+
|
|
207
217
|
[[package]]
|
|
208
218
|
name = "deepstrike-node"
|
|
209
|
-
version = "0.2.
|
|
219
|
+
version = "0.2.41"
|
|
210
220
|
dependencies = [
|
|
211
221
|
"compact_str",
|
|
212
222
|
"deepstrike-core",
|
|
@@ -218,7 +228,7 @@ dependencies = [
|
|
|
218
228
|
|
|
219
229
|
[[package]]
|
|
220
230
|
name = "deepstrike-py"
|
|
221
|
-
version = "0.2.
|
|
231
|
+
version = "0.2.41"
|
|
222
232
|
dependencies = [
|
|
223
233
|
"compact_str",
|
|
224
234
|
"deepstrike-core",
|
|
@@ -229,7 +239,7 @@ dependencies = [
|
|
|
229
239
|
|
|
230
240
|
[[package]]
|
|
231
241
|
name = "deepstrike-sdk"
|
|
232
|
-
version = "0.2.
|
|
242
|
+
version = "0.2.41"
|
|
233
243
|
dependencies = [
|
|
234
244
|
"async-stream",
|
|
235
245
|
"async-trait",
|
|
@@ -263,7 +273,7 @@ dependencies = [
|
|
|
263
273
|
|
|
264
274
|
[[package]]
|
|
265
275
|
name = "deepstrike-wasm"
|
|
266
|
-
version = "0.2.
|
|
276
|
+
version = "0.2.41"
|
|
267
277
|
dependencies = [
|
|
268
278
|
"compact_str",
|
|
269
279
|
"deepstrike-core",
|
|
@@ -3,13 +3,13 @@ resolver = "2"
|
|
|
3
3
|
members = ["crates/deepstrike-core", "crates/deepstrike-py"]
|
|
4
4
|
|
|
5
5
|
[workspace.package]
|
|
6
|
-
version = "0.2.
|
|
6
|
+
version = "0.2.41"
|
|
7
7
|
edition = "2024"
|
|
8
8
|
license = "MIT"
|
|
9
9
|
repository = "https://github.com/kongusen/deepstrike"
|
|
10
10
|
|
|
11
11
|
[workspace.dependencies]
|
|
12
|
-
deepstrike-core = { path = "crates/deepstrike-core", version = "0.2.
|
|
12
|
+
deepstrike-core = { path = "crates/deepstrike-core", version = "0.2.41" }
|
|
13
13
|
notify = "6"
|
|
14
14
|
serde = { version = "1", features = ["derive"] }
|
|
15
15
|
serde_json = "1"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: deepstrike
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.41
|
|
4
4
|
Requires-Dist: httpx>=0.27
|
|
5
5
|
Requires-Dist: pyyaml>=6.0
|
|
6
6
|
Requires-Dist: anyio>=4.0
|
|
@@ -152,7 +152,7 @@ Tool calls, spawns, compression, and signals pass through one kernel gate with a
|
|
|
152
152
|
Oversized tool results (> 50 KB) stay in context as a preview plus a `.spool/` reference — the model reads the full payload on demand via ordinary file tools. When pressure triggers semantic eviction, the SDK summarizes archived content into `DreamStore`. Long tasks survive token pressure instead of failing mid-run.
|
|
153
153
|
|
|
154
154
|
**Safety and governance by default (OS native profile)**
|
|
155
|
-
Every run loads declarative `governance_policy` (deny / ask_user / rate-limit / param rules) and in-kernel signal routing (`
|
|
155
|
+
Every run loads declarative `governance_policy` (deny / ask_user / rate-limit / param rules) and in-kernel signal routing (`signal_policy`, default queue 64). Dangerous tools, external interrupts, and approval flows are policy — not ad-hoc checks in your handlers.
|
|
156
156
|
|
|
157
157
|
**Long-term memory as syscalls (Phase-7)**
|
|
158
158
|
`write_memory` and `query_memory` run outside the main tool loop: kernel validation before `DreamStore.commit`, search → `select_memories` → `memory_retrieval_result` on query. Failed writes emit `memory_validation_failed` for audit; good memory is durable without polluting history.
|
|
@@ -166,7 +166,7 @@ Spool, page-out, signals, processes, budgets, and memory events land in `Session
|
|
|
166
166
|
| You need… | Use… |
|
|
167
167
|
|---|---|
|
|
168
168
|
| Policy before tools run | `governance_policy` (default: allow-all native profile) |
|
|
169
|
-
| External interrupts | `signal_source` + in-kernel `
|
|
169
|
+
| External interrupts | `signal_source` + in-kernel `signal_policy` |
|
|
170
170
|
| Spawn / memory-write quotas | `resource_quota` (`set_resource_quota`) |
|
|
171
171
|
| Huge tool output | Automatic Layer-1 spool; optional custom `result_spool` |
|
|
172
172
|
| Durable recall across runs | `DreamStore` + semantic `page_out` via `dream_summarizer` |
|
|
@@ -290,7 +290,7 @@ from deepstrike import (
|
|
|
290
290
|
AgentIdentity,
|
|
291
291
|
AgentRunSpec,
|
|
292
292
|
)
|
|
293
|
-
from deepstrike.runtime import
|
|
293
|
+
from deepstrike.runtime import DEFAULT_NATIVE_SIGNAL_POLICY, PromptBudget
|
|
294
294
|
from deepstrike.governance import GovernancePolicy, GovernancePolicyRule
|
|
295
295
|
|
|
296
296
|
runner = RuntimeRunner(RuntimeOptions(
|
|
@@ -305,7 +305,12 @@ runner = RuntimeRunner(RuntimeOptions(
|
|
|
305
305
|
|
|
306
306
|
# Agent OS native profile (defaults shown)
|
|
307
307
|
governance_policy=DEFAULT_NATIVE_GOVERNANCE_POLICY,
|
|
308
|
-
|
|
308
|
+
signal_policy=DEFAULT_NATIVE_SIGNAL_POLICY, # SignalRouter queue size 64
|
|
309
|
+
prompt_budget=PromptBudget(
|
|
310
|
+
prompt_overhead_tokens=20,
|
|
311
|
+
output_reserve_tokens=4096,
|
|
312
|
+
safety_margin_tokens=256,
|
|
313
|
+
),
|
|
309
314
|
|
|
310
315
|
# Host I/O
|
|
311
316
|
extensions={"temperature": 0.1},
|
|
@@ -340,7 +345,8 @@ runner = RuntimeRunner(RuntimeOptions(
|
|
|
340
345
|
| Option | Purpose |
|
|
341
346
|
|--------|---------|
|
|
342
347
|
| `governance_policy` | Declarative deny / ask_user / rate-limit / param rules loaded into the kernel before `start_run` |
|
|
343
|
-
| `
|
|
348
|
+
| `signal_policy` | Versioned in-kernel signal queue/TTL policy (default queue 64) |
|
|
349
|
+
| `prompt_budget` | Provider-envelope overhead, output reserve, and safety margin deducted from the context window |
|
|
344
350
|
| `on_permission_request` | Resolves `tool_gated` + `suspended` → kernel `resume` with approved/denied call IDs |
|
|
345
351
|
| `compression_store` | Writes archived messages on `compressed` observations |
|
|
346
352
|
| `dream_summarizer` | Summarizes `page_out { tier_hint: "semantic" }` into `DreamStore` during a run |
|
|
@@ -352,7 +358,7 @@ Validate policies before starting a run:
|
|
|
352
358
|
```python
|
|
353
359
|
result = validate_declarative_policy(
|
|
354
360
|
gov_policy=DEFAULT_SANDBOX_POLICY,
|
|
355
|
-
|
|
361
|
+
signal_policy=DEFAULT_NATIVE_SIGNAL_POLICY,
|
|
356
362
|
)
|
|
357
363
|
assert result["valid"], result["errors"]
|
|
358
364
|
```
|
|
@@ -491,7 +497,7 @@ class MyStore(DreamStore):
|
|
|
491
497
|
async def load_sessions(self, agent_id): ...
|
|
492
498
|
async def load_memories(self, agent_id): ...
|
|
493
499
|
async def commit(self, agent_id, result, existing): ...
|
|
494
|
-
async def search(self, agent_id, query
|
|
500
|
+
async def search(self, agent_id, query): ... # -> list[MemoryRecall]
|
|
495
501
|
async def save_session(self, data): ...
|
|
496
502
|
|
|
497
503
|
runner = RuntimeRunner(RuntimeOptions(
|
|
@@ -538,23 +544,27 @@ runner = RuntimeRunner(RuntimeOptions(
|
|
|
538
544
|
### Phase-7 memory syscalls (`write_memory` / `query_memory`)
|
|
539
545
|
|
|
540
546
|
```python
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
547
|
+
from deepstrike import MemoryProvenance, MemoryQuery, MemoryRecord, MemoryScope
|
|
548
|
+
|
|
549
|
+
scope = MemoryScope(tenant_id="acme", namespace="assistant")
|
|
550
|
+
await runner.write_memory(MemoryRecord(
|
|
551
|
+
record_id="prefers-small-tests-v1",
|
|
552
|
+
scope=scope,
|
|
553
|
+
name="prefers-small-tests",
|
|
554
|
+
kind="feedback",
|
|
555
|
+
content="User prefers focused unit tests for SDK behavior.",
|
|
556
|
+
description="Testing preference",
|
|
557
|
+
provenance=MemoryProvenance(author="host", trust="user_asserted"),
|
|
558
|
+
created_at=1,
|
|
559
|
+
updated_at=1,
|
|
560
|
+
), session_id="my-session")
|
|
561
|
+
|
|
562
|
+
hits = await runner.query_memory(MemoryQuery(
|
|
563
|
+
scope=scope,
|
|
564
|
+
query="Need testing preferences",
|
|
565
|
+
top_k=5,
|
|
566
|
+
kinds=["feedback"],
|
|
567
|
+
), session_id="my-session")
|
|
558
568
|
```
|
|
559
569
|
|
|
560
570
|
Session events: `memory_written`, `memory_queried`, `memory_validation_failed`, `memory_retrieval_result`.
|
|
@@ -633,7 +643,7 @@ Inbound signals are routed by the in-kernel attention policy (default queue size
|
|
|
633
643
|
|
|
634
644
|
```python
|
|
635
645
|
from deepstrike import SignalGateway, ScheduledPrompt, RuntimeSignal
|
|
636
|
-
from deepstrike.runtime import
|
|
646
|
+
from deepstrike.runtime import DEFAULT_NATIVE_SIGNAL_POLICY
|
|
637
647
|
|
|
638
648
|
gw = SignalGateway()
|
|
639
649
|
gw.schedule(ScheduledPrompt(goal="standup", run_at_ms=target_time))
|
|
@@ -644,14 +654,14 @@ runner = RuntimeRunner(RuntimeOptions(
|
|
|
644
654
|
session_log=InMemorySessionLog(),
|
|
645
655
|
execution_plane=plane,
|
|
646
656
|
signal_source=gw,
|
|
647
|
-
|
|
657
|
+
signal_policy=DEFAULT_NATIVE_SIGNAL_POLICY,
|
|
648
658
|
))
|
|
649
659
|
|
|
650
660
|
runner.interrupt() # cooperative abort → kernel timeout path
|
|
651
661
|
gw.destroy()
|
|
652
662
|
```
|
|
653
663
|
|
|
654
|
-
Each routed signal produces a `
|
|
664
|
+
Each routed signal produces a correlated `signal_delivery_disposed` session event (`category: "ipc"`).
|
|
655
665
|
|
|
656
666
|
---
|
|
657
667
|
|
|
@@ -677,23 +687,21 @@ Requires an active parent run (`run()` / `wake()` in progress). The kernel emits
|
|
|
677
687
|
|
|
678
688
|
---
|
|
679
689
|
|
|
680
|
-
##
|
|
690
|
+
## Attempt loop
|
|
681
691
|
|
|
682
692
|
```python
|
|
683
693
|
from deepstrike import (
|
|
684
|
-
|
|
685
|
-
|
|
694
|
+
AttemptLoop, AttemptRequest, RuntimeAttemptBody, StopPolicy,
|
|
695
|
+
LlmEvalJudge, SubAgentHarnessConfig,
|
|
686
696
|
)
|
|
687
697
|
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
outcome
|
|
695
|
-
|
|
696
|
-
loop = HarnessLoop(runner, eval_provider=eval_provider, max_attempts=3, skill_dir="./skills")
|
|
698
|
+
loop = AttemptLoop(
|
|
699
|
+
body=RuntimeAttemptBody(runner),
|
|
700
|
+
judge=LlmEvalJudge(eval_provider),
|
|
701
|
+
stop=StopPolicy(max_attempts=3),
|
|
702
|
+
)
|
|
703
|
+
outcome = await loop.run(AttemptRequest(goal="Write a haiku"))
|
|
704
|
+
print(outcome.run_status, outcome.outcome, outcome.verdict)
|
|
697
705
|
|
|
698
706
|
runner = RuntimeRunner(RuntimeOptions(
|
|
699
707
|
provider=provider,
|
|
@@ -701,11 +709,14 @@ runner = RuntimeRunner(RuntimeOptions(
|
|
|
701
709
|
execution_plane=plane,
|
|
702
710
|
sub_agent_harness=SubAgentHarnessConfig(eval_provider=eval_provider, max_attempts=3),
|
|
703
711
|
))
|
|
704
|
-
async for event in loop.
|
|
705
|
-
if event.type == "
|
|
706
|
-
print(event.
|
|
712
|
+
async for event in loop.stream(AttemptRequest(goal="Write a haiku")):
|
|
713
|
+
if event.type == "completed":
|
|
714
|
+
print(event.outcome.run_status, event.outcome.verdict)
|
|
707
715
|
```
|
|
708
716
|
|
|
717
|
+
The default carry policy keeps one session and injects judge feedback as context. Use
|
|
718
|
+
`fresh_with_feedback` or `fresh_with_digest(...)` only when attempt isolation is intentional.
|
|
719
|
+
|
|
709
720
|
---
|
|
710
721
|
|
|
711
722
|
## Stream events
|
|
@@ -139,7 +139,7 @@ Tool calls, spawns, compression, and signals pass through one kernel gate with a
|
|
|
139
139
|
Oversized tool results (> 50 KB) stay in context as a preview plus a `.spool/` reference — the model reads the full payload on demand via ordinary file tools. When pressure triggers semantic eviction, the SDK summarizes archived content into `DreamStore`. Long tasks survive token pressure instead of failing mid-run.
|
|
140
140
|
|
|
141
141
|
**Safety and governance by default (OS native profile)**
|
|
142
|
-
Every run loads declarative `governance_policy` (deny / ask_user / rate-limit / param rules) and in-kernel signal routing (`
|
|
142
|
+
Every run loads declarative `governance_policy` (deny / ask_user / rate-limit / param rules) and in-kernel signal routing (`signal_policy`, default queue 64). Dangerous tools, external interrupts, and approval flows are policy — not ad-hoc checks in your handlers.
|
|
143
143
|
|
|
144
144
|
**Long-term memory as syscalls (Phase-7)**
|
|
145
145
|
`write_memory` and `query_memory` run outside the main tool loop: kernel validation before `DreamStore.commit`, search → `select_memories` → `memory_retrieval_result` on query. Failed writes emit `memory_validation_failed` for audit; good memory is durable without polluting history.
|
|
@@ -153,7 +153,7 @@ Spool, page-out, signals, processes, budgets, and memory events land in `Session
|
|
|
153
153
|
| You need… | Use… |
|
|
154
154
|
|---|---|
|
|
155
155
|
| Policy before tools run | `governance_policy` (default: allow-all native profile) |
|
|
156
|
-
| External interrupts | `signal_source` + in-kernel `
|
|
156
|
+
| External interrupts | `signal_source` + in-kernel `signal_policy` |
|
|
157
157
|
| Spawn / memory-write quotas | `resource_quota` (`set_resource_quota`) |
|
|
158
158
|
| Huge tool output | Automatic Layer-1 spool; optional custom `result_spool` |
|
|
159
159
|
| Durable recall across runs | `DreamStore` + semantic `page_out` via `dream_summarizer` |
|
|
@@ -277,7 +277,7 @@ from deepstrike import (
|
|
|
277
277
|
AgentIdentity,
|
|
278
278
|
AgentRunSpec,
|
|
279
279
|
)
|
|
280
|
-
from deepstrike.runtime import
|
|
280
|
+
from deepstrike.runtime import DEFAULT_NATIVE_SIGNAL_POLICY, PromptBudget
|
|
281
281
|
from deepstrike.governance import GovernancePolicy, GovernancePolicyRule
|
|
282
282
|
|
|
283
283
|
runner = RuntimeRunner(RuntimeOptions(
|
|
@@ -292,7 +292,12 @@ runner = RuntimeRunner(RuntimeOptions(
|
|
|
292
292
|
|
|
293
293
|
# Agent OS native profile (defaults shown)
|
|
294
294
|
governance_policy=DEFAULT_NATIVE_GOVERNANCE_POLICY,
|
|
295
|
-
|
|
295
|
+
signal_policy=DEFAULT_NATIVE_SIGNAL_POLICY, # SignalRouter queue size 64
|
|
296
|
+
prompt_budget=PromptBudget(
|
|
297
|
+
prompt_overhead_tokens=20,
|
|
298
|
+
output_reserve_tokens=4096,
|
|
299
|
+
safety_margin_tokens=256,
|
|
300
|
+
),
|
|
296
301
|
|
|
297
302
|
# Host I/O
|
|
298
303
|
extensions={"temperature": 0.1},
|
|
@@ -327,7 +332,8 @@ runner = RuntimeRunner(RuntimeOptions(
|
|
|
327
332
|
| Option | Purpose |
|
|
328
333
|
|--------|---------|
|
|
329
334
|
| `governance_policy` | Declarative deny / ask_user / rate-limit / param rules loaded into the kernel before `start_run` |
|
|
330
|
-
| `
|
|
335
|
+
| `signal_policy` | Versioned in-kernel signal queue/TTL policy (default queue 64) |
|
|
336
|
+
| `prompt_budget` | Provider-envelope overhead, output reserve, and safety margin deducted from the context window |
|
|
331
337
|
| `on_permission_request` | Resolves `tool_gated` + `suspended` → kernel `resume` with approved/denied call IDs |
|
|
332
338
|
| `compression_store` | Writes archived messages on `compressed` observations |
|
|
333
339
|
| `dream_summarizer` | Summarizes `page_out { tier_hint: "semantic" }` into `DreamStore` during a run |
|
|
@@ -339,7 +345,7 @@ Validate policies before starting a run:
|
|
|
339
345
|
```python
|
|
340
346
|
result = validate_declarative_policy(
|
|
341
347
|
gov_policy=DEFAULT_SANDBOX_POLICY,
|
|
342
|
-
|
|
348
|
+
signal_policy=DEFAULT_NATIVE_SIGNAL_POLICY,
|
|
343
349
|
)
|
|
344
350
|
assert result["valid"], result["errors"]
|
|
345
351
|
```
|
|
@@ -478,7 +484,7 @@ class MyStore(DreamStore):
|
|
|
478
484
|
async def load_sessions(self, agent_id): ...
|
|
479
485
|
async def load_memories(self, agent_id): ...
|
|
480
486
|
async def commit(self, agent_id, result, existing): ...
|
|
481
|
-
async def search(self, agent_id, query
|
|
487
|
+
async def search(self, agent_id, query): ... # -> list[MemoryRecall]
|
|
482
488
|
async def save_session(self, data): ...
|
|
483
489
|
|
|
484
490
|
runner = RuntimeRunner(RuntimeOptions(
|
|
@@ -525,23 +531,27 @@ runner = RuntimeRunner(RuntimeOptions(
|
|
|
525
531
|
### Phase-7 memory syscalls (`write_memory` / `query_memory`)
|
|
526
532
|
|
|
527
533
|
```python
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
534
|
+
from deepstrike import MemoryProvenance, MemoryQuery, MemoryRecord, MemoryScope
|
|
535
|
+
|
|
536
|
+
scope = MemoryScope(tenant_id="acme", namespace="assistant")
|
|
537
|
+
await runner.write_memory(MemoryRecord(
|
|
538
|
+
record_id="prefers-small-tests-v1",
|
|
539
|
+
scope=scope,
|
|
540
|
+
name="prefers-small-tests",
|
|
541
|
+
kind="feedback",
|
|
542
|
+
content="User prefers focused unit tests for SDK behavior.",
|
|
543
|
+
description="Testing preference",
|
|
544
|
+
provenance=MemoryProvenance(author="host", trust="user_asserted"),
|
|
545
|
+
created_at=1,
|
|
546
|
+
updated_at=1,
|
|
547
|
+
), session_id="my-session")
|
|
548
|
+
|
|
549
|
+
hits = await runner.query_memory(MemoryQuery(
|
|
550
|
+
scope=scope,
|
|
551
|
+
query="Need testing preferences",
|
|
552
|
+
top_k=5,
|
|
553
|
+
kinds=["feedback"],
|
|
554
|
+
), session_id="my-session")
|
|
545
555
|
```
|
|
546
556
|
|
|
547
557
|
Session events: `memory_written`, `memory_queried`, `memory_validation_failed`, `memory_retrieval_result`.
|
|
@@ -620,7 +630,7 @@ Inbound signals are routed by the in-kernel attention policy (default queue size
|
|
|
620
630
|
|
|
621
631
|
```python
|
|
622
632
|
from deepstrike import SignalGateway, ScheduledPrompt, RuntimeSignal
|
|
623
|
-
from deepstrike.runtime import
|
|
633
|
+
from deepstrike.runtime import DEFAULT_NATIVE_SIGNAL_POLICY
|
|
624
634
|
|
|
625
635
|
gw = SignalGateway()
|
|
626
636
|
gw.schedule(ScheduledPrompt(goal="standup", run_at_ms=target_time))
|
|
@@ -631,14 +641,14 @@ runner = RuntimeRunner(RuntimeOptions(
|
|
|
631
641
|
session_log=InMemorySessionLog(),
|
|
632
642
|
execution_plane=plane,
|
|
633
643
|
signal_source=gw,
|
|
634
|
-
|
|
644
|
+
signal_policy=DEFAULT_NATIVE_SIGNAL_POLICY,
|
|
635
645
|
))
|
|
636
646
|
|
|
637
647
|
runner.interrupt() # cooperative abort → kernel timeout path
|
|
638
648
|
gw.destroy()
|
|
639
649
|
```
|
|
640
650
|
|
|
641
|
-
Each routed signal produces a `
|
|
651
|
+
Each routed signal produces a correlated `signal_delivery_disposed` session event (`category: "ipc"`).
|
|
642
652
|
|
|
643
653
|
---
|
|
644
654
|
|
|
@@ -664,23 +674,21 @@ Requires an active parent run (`run()` / `wake()` in progress). The kernel emits
|
|
|
664
674
|
|
|
665
675
|
---
|
|
666
676
|
|
|
667
|
-
##
|
|
677
|
+
## Attempt loop
|
|
668
678
|
|
|
669
679
|
```python
|
|
670
680
|
from deepstrike import (
|
|
671
|
-
|
|
672
|
-
|
|
681
|
+
AttemptLoop, AttemptRequest, RuntimeAttemptBody, StopPolicy,
|
|
682
|
+
LlmEvalJudge, SubAgentHarnessConfig,
|
|
673
683
|
)
|
|
674
684
|
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
outcome
|
|
682
|
-
|
|
683
|
-
loop = HarnessLoop(runner, eval_provider=eval_provider, max_attempts=3, skill_dir="./skills")
|
|
685
|
+
loop = AttemptLoop(
|
|
686
|
+
body=RuntimeAttemptBody(runner),
|
|
687
|
+
judge=LlmEvalJudge(eval_provider),
|
|
688
|
+
stop=StopPolicy(max_attempts=3),
|
|
689
|
+
)
|
|
690
|
+
outcome = await loop.run(AttemptRequest(goal="Write a haiku"))
|
|
691
|
+
print(outcome.run_status, outcome.outcome, outcome.verdict)
|
|
684
692
|
|
|
685
693
|
runner = RuntimeRunner(RuntimeOptions(
|
|
686
694
|
provider=provider,
|
|
@@ -688,11 +696,14 @@ runner = RuntimeRunner(RuntimeOptions(
|
|
|
688
696
|
execution_plane=plane,
|
|
689
697
|
sub_agent_harness=SubAgentHarnessConfig(eval_provider=eval_provider, max_attempts=3),
|
|
690
698
|
))
|
|
691
|
-
async for event in loop.
|
|
692
|
-
if event.type == "
|
|
693
|
-
print(event.
|
|
699
|
+
async for event in loop.stream(AttemptRequest(goal="Write a haiku")):
|
|
700
|
+
if event.type == "completed":
|
|
701
|
+
print(event.outcome.run_status, event.outcome.verdict)
|
|
694
702
|
```
|
|
695
703
|
|
|
704
|
+
The default carry policy keeps one session and injects judge feedback as context. Use
|
|
705
|
+
`fresh_with_feedback` or `fresh_with_digest(...)` only when attempt isolation is intentional.
|
|
706
|
+
|
|
696
707
|
---
|
|
697
708
|
|
|
698
709
|
## Stream events
|
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
use std::alloc::{GlobalAlloc, Layout, System};
|
|
2
|
+
use std::hint::black_box;
|
|
3
|
+
use std::sync::atomic::{AtomicU64, Ordering};
|
|
4
|
+
use std::time::Instant;
|
|
5
|
+
|
|
6
|
+
use deepstrike_core::orchestration::workflow::{WorkflowNode, WorkflowSpec};
|
|
7
|
+
use deepstrike_core::runtime::kernel::{KernelReliabilityConfig, RunConfig};
|
|
8
|
+
use deepstrike_core::runtime::{KernelInput, KernelInputEvent, KernelRuntime};
|
|
9
|
+
use deepstrike_core::scheduler::policy::SchedulerBudget;
|
|
10
|
+
use deepstrike_core::types::agent::AgentRole;
|
|
11
|
+
use deepstrike_core::types::message::Message;
|
|
12
|
+
use deepstrike_core::types::signal::{RuntimeSignal, SignalSource, SignalType, Urgency};
|
|
13
|
+
use deepstrike_core::types::task::RuntimeTask;
|
|
14
|
+
|
|
15
|
+
struct CountingAllocator;
|
|
16
|
+
|
|
17
|
+
static ALLOCATION_COUNT: AtomicU64 = AtomicU64::new(0);
|
|
18
|
+
static ALLOCATED_BYTES: AtomicU64 = AtomicU64::new(0);
|
|
19
|
+
|
|
20
|
+
unsafe impl GlobalAlloc for CountingAllocator {
|
|
21
|
+
unsafe fn alloc(&self, layout: Layout) -> *mut u8 {
|
|
22
|
+
let pointer = unsafe { System.alloc(layout) };
|
|
23
|
+
if !pointer.is_null() {
|
|
24
|
+
ALLOCATION_COUNT.fetch_add(1, Ordering::Relaxed);
|
|
25
|
+
ALLOCATED_BYTES.fetch_add(layout.size() as u64, Ordering::Relaxed);
|
|
26
|
+
}
|
|
27
|
+
pointer
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
unsafe fn dealloc(&self, pointer: *mut u8, layout: Layout) {
|
|
31
|
+
unsafe { System.dealloc(pointer, layout) };
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
unsafe fn realloc(&self, pointer: *mut u8, layout: Layout, new_size: usize) -> *mut u8 {
|
|
35
|
+
let replacement = unsafe { System.realloc(pointer, layout, new_size) };
|
|
36
|
+
if !replacement.is_null() {
|
|
37
|
+
ALLOCATION_COUNT.fetch_add(1, Ordering::Relaxed);
|
|
38
|
+
ALLOCATED_BYTES.fetch_add(new_size as u64, Ordering::Relaxed);
|
|
39
|
+
}
|
|
40
|
+
replacement
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
#[global_allocator]
|
|
45
|
+
static GLOBAL_ALLOCATOR: CountingAllocator = CountingAllocator;
|
|
46
|
+
|
|
47
|
+
fn begin_measurement() -> Instant {
|
|
48
|
+
ALLOCATION_COUNT.store(0, Ordering::Relaxed);
|
|
49
|
+
ALLOCATED_BYTES.store(0, Ordering::Relaxed);
|
|
50
|
+
Instant::now()
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
fn elapsed_ms(label: &str, started: Instant, operations: usize) {
|
|
54
|
+
let elapsed = started.elapsed();
|
|
55
|
+
let allocations = ALLOCATION_COUNT.load(Ordering::Relaxed);
|
|
56
|
+
let allocated_bytes = ALLOCATED_BYTES.load(Ordering::Relaxed);
|
|
57
|
+
println!(
|
|
58
|
+
"{label}: {:.3} ms total, {:.3} us/op ({operations} ops), {allocations} allocations / {allocated_bytes} bytes",
|
|
59
|
+
elapsed.as_secs_f64() * 1_000.0,
|
|
60
|
+
elapsed.as_secs_f64() * 1_000_000.0 / operations.max(1) as f64,
|
|
61
|
+
);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
fn input(operation: &str, index: usize, event: KernelInputEvent) -> KernelInput {
|
|
65
|
+
KernelInput::correlated(
|
|
66
|
+
operation,
|
|
67
|
+
format!("{operation}-event-{index}"),
|
|
68
|
+
index as u64,
|
|
69
|
+
event,
|
|
70
|
+
)
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
fn main() {
|
|
74
|
+
let f1 = deepstrike_core::benchmark::f1_critical_path_skew();
|
|
75
|
+
assert!(f1.policy_makespan < f1.id_order_makespan);
|
|
76
|
+
let f2 = deepstrike_core::benchmark::f2_loop_fairness();
|
|
77
|
+
assert_eq!(f2.waiting_rounds, 0);
|
|
78
|
+
let f3 = deepstrike_core::benchmark::f3_termination_dependency_matrix();
|
|
79
|
+
assert_eq!(f3.cases_checked, 12);
|
|
80
|
+
println!("DAG gates: F1={f1:?}, F2={f2:?}, F3={f3:?}");
|
|
81
|
+
|
|
82
|
+
let mut step_runtime = KernelRuntime::new(SchedulerBudget::default());
|
|
83
|
+
let started = begin_measurement();
|
|
84
|
+
for index in 0..10_000 {
|
|
85
|
+
black_box(step_runtime.step(input(
|
|
86
|
+
"step-baseline",
|
|
87
|
+
index,
|
|
88
|
+
KernelInputEvent::SetMemoryEnabled {
|
|
89
|
+
enabled: index % 2 == 0,
|
|
90
|
+
},
|
|
91
|
+
)));
|
|
92
|
+
}
|
|
93
|
+
elapsed_ms("kernel step", started, 10_000);
|
|
94
|
+
|
|
95
|
+
let mut render_runtime = KernelRuntime::new(SchedulerBudget::default());
|
|
96
|
+
for index in 0..1_000 {
|
|
97
|
+
render_runtime.step(input(
|
|
98
|
+
"render-baseline",
|
|
99
|
+
index,
|
|
100
|
+
KernelInputEvent::AddHistoryMessage {
|
|
101
|
+
message: Message::user(format!("history-{index} {}", "x".repeat(256))),
|
|
102
|
+
tokens: Some(64),
|
|
103
|
+
},
|
|
104
|
+
));
|
|
105
|
+
}
|
|
106
|
+
let started = begin_measurement();
|
|
107
|
+
for _ in 0..100 {
|
|
108
|
+
black_box(render_runtime.render());
|
|
109
|
+
}
|
|
110
|
+
elapsed_ms("large-context render", started, 100);
|
|
111
|
+
|
|
112
|
+
let started = begin_measurement();
|
|
113
|
+
black_box(render_runtime.step(input(
|
|
114
|
+
"render-baseline",
|
|
115
|
+
1_001,
|
|
116
|
+
KernelInputEvent::ForceCompact,
|
|
117
|
+
)));
|
|
118
|
+
elapsed_ms("compression", started, 1);
|
|
119
|
+
|
|
120
|
+
let nodes = (0..100)
|
|
121
|
+
.map(|index| {
|
|
122
|
+
WorkflowNode::new(
|
|
123
|
+
RuntimeTask::new(format!("node-{index}")),
|
|
124
|
+
AgentRole::Implement,
|
|
125
|
+
)
|
|
126
|
+
})
|
|
127
|
+
.collect();
|
|
128
|
+
let mut workflow_runtime = KernelRuntime::new(SchedulerBudget::default());
|
|
129
|
+
workflow_runtime.step(input(
|
|
130
|
+
"workflow-baseline",
|
|
131
|
+
0,
|
|
132
|
+
KernelInputEvent::StartRun {
|
|
133
|
+
task: RuntimeTask::new("parent"),
|
|
134
|
+
run_spec: None,
|
|
135
|
+
},
|
|
136
|
+
));
|
|
137
|
+
let started = begin_measurement();
|
|
138
|
+
black_box(workflow_runtime.step(input(
|
|
139
|
+
"workflow-baseline",
|
|
140
|
+
1,
|
|
141
|
+
KernelInputEvent::SubmitWorkflow {
|
|
142
|
+
spec: WorkflowSpec::new(nodes),
|
|
143
|
+
parent_session_id: "parent".into(),
|
|
144
|
+
submitter_agent_id: None,
|
|
145
|
+
},
|
|
146
|
+
)));
|
|
147
|
+
elapsed_ms("large workflow", started, 1);
|
|
148
|
+
|
|
149
|
+
let mut signal_runtime = KernelRuntime::new(SchedulerBudget::default());
|
|
150
|
+
signal_runtime.step(input(
|
|
151
|
+
"signal-baseline",
|
|
152
|
+
0,
|
|
153
|
+
KernelInputEvent::ConfigureRun {
|
|
154
|
+
config: RunConfig {
|
|
155
|
+
reliability: Some(KernelReliabilityConfig {
|
|
156
|
+
snapshot_input_limit: Some(20_000),
|
|
157
|
+
..KernelReliabilityConfig::default()
|
|
158
|
+
}),
|
|
159
|
+
..RunConfig::default()
|
|
160
|
+
},
|
|
161
|
+
},
|
|
162
|
+
));
|
|
163
|
+
signal_runtime.step(input(
|
|
164
|
+
"signal-baseline",
|
|
165
|
+
1,
|
|
166
|
+
KernelInputEvent::StartRun {
|
|
167
|
+
task: RuntimeTask::new("signals"),
|
|
168
|
+
run_spec: None,
|
|
169
|
+
},
|
|
170
|
+
));
|
|
171
|
+
let started = begin_measurement();
|
|
172
|
+
for index in 2..10_002 {
|
|
173
|
+
let mut signal = RuntimeSignal::new(
|
|
174
|
+
SignalSource::Gateway,
|
|
175
|
+
SignalType::Event,
|
|
176
|
+
Urgency::Normal,
|
|
177
|
+
format!("signal-{index}"),
|
|
178
|
+
);
|
|
179
|
+
signal.id = uuid::Uuid::from_u128(index as u128);
|
|
180
|
+
black_box(signal_runtime.step(input(
|
|
181
|
+
"signal-baseline",
|
|
182
|
+
index,
|
|
183
|
+
KernelInputEvent::DeliverSignal {
|
|
184
|
+
delivery_id: format!("delivery-{index}"),
|
|
185
|
+
attempt: 1,
|
|
186
|
+
signal,
|
|
187
|
+
},
|
|
188
|
+
)));
|
|
189
|
+
}
|
|
190
|
+
elapsed_ms("signal storm", started, 10_000);
|
|
191
|
+
|
|
192
|
+
let started = begin_measurement();
|
|
193
|
+
let encoded = signal_runtime
|
|
194
|
+
.snapshot_json()
|
|
195
|
+
.expect("encode 10k-event snapshot");
|
|
196
|
+
elapsed_ms("snapshot encode", started, 10_002);
|
|
197
|
+
println!("snapshot size: {} bytes", encoded.len());
|
|
198
|
+
|
|
199
|
+
let started = begin_measurement();
|
|
200
|
+
black_box(KernelRuntime::restore_snapshot_json(&encoded).expect("decode/replay snapshot"));
|
|
201
|
+
elapsed_ms("10k-event replay + snapshot decode", started, 10_002);
|
|
202
|
+
}
|