deepstrike 0.2.42__tar.gz → 0.2.44__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.42 → deepstrike-0.2.44}/Cargo.lock +6 -6
- {deepstrike-0.2.42 → deepstrike-0.2.44}/Cargo.toml +2 -2
- {deepstrike-0.2.42 → deepstrike-0.2.44}/PKG-INFO +1 -1
- {deepstrike-0.2.42 → deepstrike-0.2.44}/crates/deepstrike-core/src/runtime/kernel/protocol.rs +8 -1
- {deepstrike-0.2.42 → deepstrike-0.2.44}/crates/deepstrike-py/src/lib.rs +4 -1
- {deepstrike-0.2.42 → deepstrike-0.2.44}/deepstrike/harness/harness.py +7 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/deepstrike/runtime/kernel_step.py +10 -6
- {deepstrike-0.2.42 → deepstrike-0.2.44}/deepstrike/runtime/large_result_spool.py +12 -5
- {deepstrike-0.2.42 → deepstrike-0.2.44}/deepstrike/runtime/runner.py +19 -2
- {deepstrike-0.2.42 → deepstrike-0.2.44}/pyproject.toml +1 -1
- {deepstrike-0.2.42 → deepstrike-0.2.44}/README.md +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/crates/deepstrike-core/Cargo.toml +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/crates/deepstrike-core/benches/kernel_baseline.rs +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/crates/deepstrike-core/src/benchmark/mod.rs +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/crates/deepstrike-core/src/context/compression.rs +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/crates/deepstrike-core/src/context/config.rs +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/crates/deepstrike-core/src/context/fault.rs +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/crates/deepstrike-core/src/context/manager.rs +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/crates/deepstrike-core/src/context/mod.rs +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/crates/deepstrike-core/src/context/partitions.rs +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/crates/deepstrike-core/src/context/policy.rs +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/crates/deepstrike-core/src/context/pressure.rs +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/crates/deepstrike-core/src/context/renderer.rs +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/crates/deepstrike-core/src/context/renewal.rs +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/crates/deepstrike-core/src/context/skill_catalog.rs +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/crates/deepstrike-core/src/context/summarizer.rs +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/crates/deepstrike-core/src/context/task_state.rs +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/crates/deepstrike-core/src/context/text.rs +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/crates/deepstrike-core/src/context/token_engine.rs +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/crates/deepstrike-core/src/context/units.rs +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/crates/deepstrike-core/src/context/utility.rs +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/crates/deepstrike-core/src/governance/constraint.rs +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/crates/deepstrike-core/src/governance/mod.rs +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/crates/deepstrike-core/src/governance/permission.rs +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/crates/deepstrike-core/src/governance/pipeline.rs +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/crates/deepstrike-core/src/governance/quota.rs +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/crates/deepstrike-core/src/governance/rate_limit.rs +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/crates/deepstrike-core/src/governance/repeat_fuse.rs +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/crates/deepstrike-core/src/governance/veto.rs +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/crates/deepstrike-core/src/harness/eval.rs +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/crates/deepstrike-core/src/harness/mod.rs +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/crates/deepstrike-core/src/lexical.rs +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/crates/deepstrike-core/src/lib.rs +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/crates/deepstrike-core/src/memory/curator.rs +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/crates/deepstrike-core/src/memory/durable.rs +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/crates/deepstrike-core/src/memory/mod.rs +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/crates/deepstrike-core/src/mm/handle.rs +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/crates/deepstrike-core/src/mm/memory.rs +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/crates/deepstrike-core/src/mm/mod.rs +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/crates/deepstrike-core/src/mm/value.rs +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/crates/deepstrike-core/src/orchestration/mod.rs +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/crates/deepstrike-core/src/orchestration/task_graph.rs +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/crates/deepstrike-core/src/orchestration/tournament.rs +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/crates/deepstrike-core/src/orchestration/workflow/mod.rs +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/crates/deepstrike-core/src/orchestration/workflow/run.rs +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/crates/deepstrike-core/src/proc/mod.rs +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/crates/deepstrike-core/src/runtime/event_log.rs +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/crates/deepstrike-core/src/runtime/kernel/runtime.rs +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/crates/deepstrike-core/src/runtime/kernel/tests.rs +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/crates/deepstrike-core/src/runtime/kernel.rs +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/crates/deepstrike-core/src/runtime/mod.rs +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/crates/deepstrike-core/src/runtime/repair.rs +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/crates/deepstrike-core/src/runtime/replay.rs +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/crates/deepstrike-core/src/runtime/session.rs +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/crates/deepstrike-core/src/scheduler/entropy.rs +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/crates/deepstrike-core/src/scheduler/milestone.rs +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/crates/deepstrike-core/src/scheduler/mod.rs +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/crates/deepstrike-core/src/scheduler/policy.rs +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/crates/deepstrike-core/src/scheduler/rollback.rs +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/crates/deepstrike-core/src/scheduler/state_machine/cancellation.rs +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/crates/deepstrike-core/src/scheduler/state_machine/capability.rs +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/crates/deepstrike-core/src/scheduler/state_machine/eviction.rs +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/crates/deepstrike-core/src/scheduler/state_machine/gate.rs +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/crates/deepstrike-core/src/scheduler/state_machine/milestone_exec.rs +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/crates/deepstrike-core/src/scheduler/state_machine/mod.rs +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/crates/deepstrike-core/src/scheduler/state_machine/process.rs +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/crates/deepstrike-core/src/scheduler/state_machine/signal.rs +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/crates/deepstrike-core/src/scheduler/state_machine/tests.rs +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/crates/deepstrike-core/src/scheduler/state_machine/workflow.rs +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/crates/deepstrike-core/src/scheduler/tcb.rs +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/crates/deepstrike-core/src/signals/attention.rs +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/crates/deepstrike-core/src/signals/mod.rs +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/crates/deepstrike-core/src/signals/queue.rs +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/crates/deepstrike-core/src/signals/router.rs +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/crates/deepstrike-core/src/syscall/mod.rs +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/crates/deepstrike-core/src/types/agent.rs +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/crates/deepstrike-core/src/types/capability.rs +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/crates/deepstrike-core/src/types/contract.rs +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/crates/deepstrike-core/src/types/error.rs +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/crates/deepstrike-core/src/types/message.rs +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/crates/deepstrike-core/src/types/milestone.rs +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/crates/deepstrike-core/src/types/mod.rs +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/crates/deepstrike-core/src/types/policy.rs +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/crates/deepstrike-core/src/types/result.rs +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/crates/deepstrike-core/src/types/signal.rs +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/crates/deepstrike-core/src/types/skill.rs +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/crates/deepstrike-core/src/types/task.rs +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/crates/deepstrike-py/Cargo.toml +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/deepstrike/__init__.py +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/deepstrike/collaboration/__init__.py +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/deepstrike/collaboration/contract.py +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/deepstrike/collaboration/handoff.py +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/deepstrike/collaboration/harness.py +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/deepstrike/collaboration/modes.py +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/deepstrike/collaboration/pool.py +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/deepstrike/governance.py +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/deepstrike/harness/__init__.py +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/deepstrike/harness/judge.py +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/deepstrike/kernel/__init__.py +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/deepstrike/knowledge/__init__.py +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/deepstrike/knowledge/source.py +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/deepstrike/memory/__init__.py +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/deepstrike/memory/agent.py +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/deepstrike/memory/extraction.py +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/deepstrike/memory/in_memory_store.py +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/deepstrike/memory/protocols.py +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/deepstrike/memory/ranking.py +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/deepstrike/memory/retention.py +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/deepstrike/memory/working.py +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/deepstrike/providers/__init__.py +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/deepstrike/providers/anthropic.py +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/deepstrike/providers/anthropic_compatible.py +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/deepstrike/providers/base.py +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/deepstrike/providers/deepseek.py +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/deepstrike/providers/factories.py +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/deepstrike/providers/gemini.py +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/deepstrike/providers/glm.py +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/deepstrike/providers/kimi.py +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/deepstrike/providers/minimax.py +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/deepstrike/providers/ollama.py +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/deepstrike/providers/openai.py +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/deepstrike/providers/openai_responses.py +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/deepstrike/providers/qwen.py +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/deepstrike/providers/replay.py +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/deepstrike/providers/replay_validator.py +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/deepstrike/providers/stream.py +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/deepstrike/providers/vendor_profiles.py +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/deepstrike/runtime/__init__.py +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/deepstrike/runtime/archive.py +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/deepstrike/runtime/context_policy.py +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/deepstrike/runtime/credential_vault.py +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/deepstrike/runtime/eval.py +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/deepstrike/runtime/event_stream.py +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/deepstrike/runtime/execution_plane.py +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/deepstrike/runtime/facade.py +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/deepstrike/runtime/filtered_plane.py +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/deepstrike/runtime/kernel_event_log.py +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/deepstrike/runtime/kernel_rebuild.py +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/deepstrike/runtime/kernel_transaction_log.py +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/deepstrike/runtime/loop_driver.py +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/deepstrike/runtime/mcp_proxy_plane.py +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/deepstrike/runtime/os_profile.py +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/deepstrike/runtime/os_snapshot.py +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/deepstrike/runtime/output_schema.py +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/deepstrike/runtime/process_sandbox_plane.py +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/deepstrike/runtime/provider_replay.py +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/deepstrike/runtime/reaction_checkpoint.py +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/deepstrike/runtime/reactive_session.py +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/deepstrike/runtime/reducers.py +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/deepstrike/runtime/reliability.py +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/deepstrike/runtime/remote_vpc_plane.py +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/deepstrike/runtime/replay_fixture.py +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/deepstrike/runtime/replay_provider.py +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/deepstrike/runtime/replay_sanitize.py +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/deepstrike/runtime/run_group.py +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/deepstrike/runtime/session_log.py +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/deepstrike/runtime/session_repair.py +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/deepstrike/runtime/sub_agent_orchestrator.py +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/deepstrike/runtime/turn_policy.py +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/deepstrike/runtime/workflow_control_flow.py +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/deepstrike/runtime/workflow_store.py +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/deepstrike/runtime/worktree_plane.py +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/deepstrike/safety/__init__.py +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/deepstrike/safety/permissions.py +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/deepstrike/signals/__init__.py +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/deepstrike/signals/gateway.py +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/deepstrike/signals/scheduled.py +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/deepstrike/signals/types.py +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/deepstrike/skills/__init__.py +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/deepstrike/skills/loader.py +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/deepstrike/skills/registry.py +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/deepstrike/skills/watcher.py +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/deepstrike/tools/__init__.py +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/deepstrike/tools/builtin/__init__.py +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/deepstrike/tools/builtin/read_file.py +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/deepstrike/tools/errors.py +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/deepstrike/tools/execution.py +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/deepstrike/tools/registry.py +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/deepstrike/types/__init__.py +0 -0
- {deepstrike-0.2.42 → deepstrike-0.2.44}/deepstrike/types/agent.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.44"
|
|
198
198
|
dependencies = [
|
|
199
199
|
"compact_str",
|
|
200
200
|
"pretty_assertions",
|
|
@@ -206,7 +206,7 @@ dependencies = [
|
|
|
206
206
|
|
|
207
207
|
[[package]]
|
|
208
208
|
name = "deepstrike-lab"
|
|
209
|
-
version = "0.2.
|
|
209
|
+
version = "0.2.44"
|
|
210
210
|
dependencies = [
|
|
211
211
|
"deepstrike-core",
|
|
212
212
|
"serde",
|
|
@@ -216,7 +216,7 @@ dependencies = [
|
|
|
216
216
|
|
|
217
217
|
[[package]]
|
|
218
218
|
name = "deepstrike-node"
|
|
219
|
-
version = "0.2.
|
|
219
|
+
version = "0.2.44"
|
|
220
220
|
dependencies = [
|
|
221
221
|
"compact_str",
|
|
222
222
|
"deepstrike-core",
|
|
@@ -228,7 +228,7 @@ dependencies = [
|
|
|
228
228
|
|
|
229
229
|
[[package]]
|
|
230
230
|
name = "deepstrike-py"
|
|
231
|
-
version = "0.2.
|
|
231
|
+
version = "0.2.44"
|
|
232
232
|
dependencies = [
|
|
233
233
|
"compact_str",
|
|
234
234
|
"deepstrike-core",
|
|
@@ -239,7 +239,7 @@ dependencies = [
|
|
|
239
239
|
|
|
240
240
|
[[package]]
|
|
241
241
|
name = "deepstrike-sdk"
|
|
242
|
-
version = "0.2.
|
|
242
|
+
version = "0.2.44"
|
|
243
243
|
dependencies = [
|
|
244
244
|
"async-stream",
|
|
245
245
|
"async-trait",
|
|
@@ -273,7 +273,7 @@ dependencies = [
|
|
|
273
273
|
|
|
274
274
|
[[package]]
|
|
275
275
|
name = "deepstrike-wasm"
|
|
276
|
-
version = "0.2.
|
|
276
|
+
version = "0.2.44"
|
|
277
277
|
dependencies = [
|
|
278
278
|
"compact_str",
|
|
279
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.44"
|
|
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.44" }
|
|
13
13
|
notify = "6"
|
|
14
14
|
serde = { version = "1", features = ["derive"] }
|
|
15
15
|
serde_json = "1"
|
{deepstrike-0.2.42 → deepstrike-0.2.44}/crates/deepstrike-core/src/runtime/kernel/protocol.rs
RENAMED
|
@@ -92,6 +92,13 @@ pub struct KernelInput {
|
|
|
92
92
|
}
|
|
93
93
|
|
|
94
94
|
impl KernelInput {
|
|
95
|
+
/// Operation identity used by [`Self::new`] for in-process callers. Hosts that correlate
|
|
96
|
+
/// against it (e.g. a `cancel_operation` for an operation started via `new`) must use this
|
|
97
|
+
/// constant, never a re-typed literal. NOT for durable wire hosts: anything keyed by
|
|
98
|
+
/// `(session, operation)` in storage that outlives the process needs a unique identity via
|
|
99
|
+
/// [`Self::correlated`].
|
|
100
|
+
pub const LOCAL_OPERATION_ID: &'static str = "local-operation";
|
|
101
|
+
|
|
95
102
|
/// Build an in-process input for callers that do not cross a durable wire boundary.
|
|
96
103
|
/// Wire hosts should use [`Self::correlated`] with their durable identities.
|
|
97
104
|
pub fn new(event: KernelInputEvent) -> Self {
|
|
@@ -99,7 +106,7 @@ impl KernelInput {
|
|
|
99
106
|
static LOCAL_EVENT_SEQUENCE: AtomicU64 = AtomicU64::new(1);
|
|
100
107
|
let event_seq = LOCAL_EVENT_SEQUENCE.fetch_add(1, Ordering::Relaxed);
|
|
101
108
|
Self::correlated(
|
|
102
|
-
|
|
109
|
+
Self::LOCAL_OPERATION_ID,
|
|
103
110
|
format!("local-event-{event_seq}"),
|
|
104
111
|
0,
|
|
105
112
|
event,
|
|
@@ -860,7 +860,10 @@ impl RenderedContext {
|
|
|
860
860
|
|
|
861
861
|
// ──────────────────────────────────────── KernelRuntime ────────────────────────────────────
|
|
862
862
|
|
|
863
|
-
|
|
863
|
+
// `weakref` so the SDK can key per-runtime wire state in a WeakKeyDictionary — a module dict
|
|
864
|
+
// keyed by id() aliases recycled addresses (a new runtime inherits a dead one's operation
|
|
865
|
+
// identity) and leaks an entry per runtime.
|
|
866
|
+
#[pyclass(weakref)]
|
|
864
867
|
struct KernelRuntime {
|
|
865
868
|
inner: RustKernelRuntime,
|
|
866
869
|
}
|
|
@@ -45,6 +45,10 @@ class AttemptRequest:
|
|
|
45
45
|
goal: str
|
|
46
46
|
session_id: str | None = None
|
|
47
47
|
criteria: list[Criterion] = field(default_factory=list)
|
|
48
|
+
# Multimodal inputs (images / audio) attached to the task. Forwarded to every attempt
|
|
49
|
+
# unconditionally; the runner seeds them per session idempotently, so fresh-session
|
|
50
|
+
# carries re-seed while same-session carries do not double.
|
|
51
|
+
attachments: list[dict] | None = None
|
|
48
52
|
extensions: dict[str, Any] | None = None
|
|
49
53
|
inherit_events: list[Any] | None = None
|
|
50
54
|
|
|
@@ -57,6 +61,7 @@ class AttemptBodyContext:
|
|
|
57
61
|
extensions: dict[str, Any] | None
|
|
58
62
|
inherit_events: list[Any] | None
|
|
59
63
|
attempt: int
|
|
64
|
+
attachments: list[dict] | None = None
|
|
60
65
|
context_input: str | None = None
|
|
61
66
|
|
|
62
67
|
|
|
@@ -102,6 +107,7 @@ class RuntimeAttemptBody:
|
|
|
102
107
|
session_id=context.session_id,
|
|
103
108
|
goal=context.goal,
|
|
104
109
|
criteria=[criterion.text for criterion in context.criteria],
|
|
110
|
+
**({"attachments": context.attachments} if context.attachments else {}),
|
|
105
111
|
extensions=context.extensions,
|
|
106
112
|
inherit_events=context.inherit_events if context.attempt == 1 else None,
|
|
107
113
|
)
|
|
@@ -294,6 +300,7 @@ class AttemptLoop:
|
|
|
294
300
|
extensions=request.extensions,
|
|
295
301
|
inherit_events=request.inherit_events,
|
|
296
302
|
attempt=attempt,
|
|
303
|
+
attachments=request.attachments,
|
|
297
304
|
context_input=prepared.context_input,
|
|
298
305
|
)
|
|
299
306
|
):
|
|
@@ -4,6 +4,7 @@ import json
|
|
|
4
4
|
import re
|
|
5
5
|
import time
|
|
6
6
|
import uuid
|
|
7
|
+
import weakref
|
|
7
8
|
from dataclasses import dataclass
|
|
8
9
|
from types import SimpleNamespace
|
|
9
10
|
from typing import Any
|
|
@@ -13,7 +14,11 @@ from deepstrike.providers.base import ContextBudgetOverflow, RenderedContext
|
|
|
13
14
|
|
|
14
15
|
|
|
15
16
|
KERNEL_ABI_VERSION = 2
|
|
16
|
-
|
|
17
|
+
# Keyed by the runtime OBJECT, not id(runtime): a plain dict keyed by id() aliases recycled
|
|
18
|
+
# addresses (a new runtime inherits a dead one's operation identity — fatal once a durable log
|
|
19
|
+
# keys chains by that identity) and leaks an entry per runtime. WeakKeyDictionary mirrors the
|
|
20
|
+
# Node/WASM WeakMap; the pyo3 KernelRuntime declares `weakref` support for exactly this.
|
|
21
|
+
_wire_states: "weakref.WeakKeyDictionary[Any, tuple[str, int]]" = weakref.WeakKeyDictionary()
|
|
17
22
|
|
|
18
23
|
|
|
19
24
|
def snapshot_kernel_runtime(runtime: Any) -> dict[str, Any]:
|
|
@@ -24,14 +29,14 @@ def restore_kernel_runtime(runtime: Any, snapshot: dict[str, Any]) -> None:
|
|
|
24
29
|
runtime.restore(json.dumps(snapshot))
|
|
25
30
|
operation_id = snapshot.get("operation_id")
|
|
26
31
|
if not operation_id:
|
|
27
|
-
_wire_states.pop(
|
|
32
|
+
_wire_states.pop(runtime, None)
|
|
28
33
|
return
|
|
29
34
|
next_sequence = 1
|
|
30
35
|
for accepted in snapshot.get("accepted_inputs") or []:
|
|
31
36
|
match = re.search(r"-event-(\d+)$", str(accepted.get("event_id") or ""))
|
|
32
37
|
if match:
|
|
33
38
|
next_sequence = max(next_sequence, int(match.group(1)) + 1)
|
|
34
|
-
_wire_states[
|
|
39
|
+
_wire_states[runtime] = (str(operation_id), next_sequence)
|
|
35
40
|
|
|
36
41
|
|
|
37
42
|
@dataclass
|
|
@@ -373,12 +378,11 @@ def _action_from_kernel(raw: dict[str, Any]) -> KernelRunnerAction:
|
|
|
373
378
|
|
|
374
379
|
|
|
375
380
|
def _step_input(runtime: Any, event: dict[str, Any]) -> str:
|
|
376
|
-
|
|
377
|
-
state = _wire_states.get(key)
|
|
381
|
+
state = _wire_states.get(runtime)
|
|
378
382
|
if state is None:
|
|
379
383
|
state = (f"python-operation-{uuid.uuid4()}", 1)
|
|
380
384
|
operation_id, sequence = state
|
|
381
|
-
_wire_states[
|
|
385
|
+
_wire_states[runtime] = (operation_id, sequence + 1)
|
|
382
386
|
correlated_event = (
|
|
383
387
|
{**event, "operation_id": operation_id}
|
|
384
388
|
if event.get("kind") == "cancel_operation"
|
|
@@ -16,9 +16,16 @@ class LargeResultSpool:
|
|
|
16
16
|
self._max_age_seconds = max_age_seconds
|
|
17
17
|
self._active_writes: dict[str, asyncio.Lock] = {}
|
|
18
18
|
|
|
19
|
-
|
|
19
|
+
@staticmethod
|
|
20
|
+
def _call_key(session_id: str, call_id: str) -> str:
|
|
21
|
+
# Session-scoped: the spool dir is shared across sessions and outlives runs, while vendor
|
|
22
|
+
# call ids can be index-style ("call_0") and repeat — an unscoped key lets read_result in
|
|
23
|
+
# one session fetch another session's spooled output.
|
|
24
|
+
return hashlib.sha256(f"{session_id}\x00{call_id}".encode("utf-8")).hexdigest()[:32]
|
|
25
|
+
|
|
26
|
+
async def persist_output(self, session_id: str, call_id: str, content: str) -> str:
|
|
20
27
|
digest = hashlib.sha256(content.encode("utf-8")).hexdigest()[:16]
|
|
21
|
-
call_key =
|
|
28
|
+
call_key = self._call_key(session_id, call_id)
|
|
22
29
|
self._spool_dir.mkdir(parents=True, exist_ok=True)
|
|
23
30
|
path = self._spool_dir / f"{call_key}-{digest}.txt"
|
|
24
31
|
path_str = str(path)
|
|
@@ -50,16 +57,16 @@ class LargeResultSpool:
|
|
|
50
57
|
return path.read_text(encoding="utf-8")
|
|
51
58
|
return await asyncio.get_running_loop().run_in_executor(None, _read)
|
|
52
59
|
|
|
53
|
-
async def find_by_call_id(self, call_id: str) -> str | None:
|
|
60
|
+
async def find_by_call_id(self, session_id: str, call_id: str) -> str | None:
|
|
54
61
|
"""O7: locate a spooled output by the tool call's id (the ``read_result`` meta-tool only
|
|
55
62
|
knows ``call_id``, not the content-hashed file name ``persist_output`` chose). Scans the
|
|
56
|
-
spool directory for the hashed call-key prefix; returns ``None`` if nothing
|
|
63
|
+
spool directory for the hashed session-scoped call-key prefix; returns ``None`` if nothing
|
|
57
64
|
was ever spooled for that call."""
|
|
58
65
|
if not self._spool_dir.is_dir():
|
|
59
66
|
return None
|
|
60
67
|
|
|
61
68
|
def _find() -> Path | None:
|
|
62
|
-
call_key =
|
|
69
|
+
call_key = self._call_key(session_id, call_id)
|
|
63
70
|
matches = sorted(self._spool_dir.glob(f"{call_key}-*.txt"))
|
|
64
71
|
return matches[0] if matches else None
|
|
65
72
|
|
|
@@ -1706,6 +1706,11 @@ class RuntimeRunner:
|
|
|
1706
1706
|
mid_run = _is_mid_run(prior)
|
|
1707
1707
|
resumed_start = next((entry for entry in reversed(prior) if entry.event.get("kind") == "run_started"), None)
|
|
1708
1708
|
run_id = resumed_start.event["run_id"] if mid_run and resumed_start is not None else str(uuid.uuid4())
|
|
1709
|
+
# Idempotent per session: an earlier run's `run_started` already carries these attachments
|
|
1710
|
+
# (same-session retry attempt), so replay reconstructs them — recording and seeding again
|
|
1711
|
+
# would double them in history. Deduping at the append keeps live and replay in agreement.
|
|
1712
|
+
if attachments and _attachments_already_seeded(prior, attachments):
|
|
1713
|
+
attachments = None
|
|
1709
1714
|
if not mid_run:
|
|
1710
1715
|
await self._opts.session_log.append(sid, {
|
|
1711
1716
|
"kind": "run_started",
|
|
@@ -1859,7 +1864,7 @@ class RuntimeRunner:
|
|
|
1859
1864
|
from deepstrike.runtime.large_result_spool import LargeResultSpool
|
|
1860
1865
|
spool = self._opts.result_spool or LargeResultSpool()
|
|
1861
1866
|
try:
|
|
1862
|
-
full = await spool.find_by_call_id(call_id)
|
|
1867
|
+
full = await spool.find_by_call_id(session_id, call_id)
|
|
1863
1868
|
except Exception:
|
|
1864
1869
|
full = None
|
|
1865
1870
|
|
|
@@ -2435,7 +2440,7 @@ class RuntimeRunner:
|
|
|
2435
2440
|
spool_ref = None
|
|
2436
2441
|
error = None
|
|
2437
2442
|
try:
|
|
2438
|
-
spool_ref = await spool.persist_output(action.call_id or "", action.output or "")
|
|
2443
|
+
spool_ref = await spool.persist_output(session_id, action.call_id or "", action.output or "")
|
|
2439
2444
|
except Exception as exc:
|
|
2440
2445
|
error = format_tool_error(exc)
|
|
2441
2446
|
action = kernel_action(runtime, self._pending_observations, {
|
|
@@ -3060,6 +3065,18 @@ def _is_mid_run(events: list[SessionEntry]) -> bool:
|
|
|
3060
3065
|
return last_started >= 0 and last_started > last_terminal
|
|
3061
3066
|
|
|
3062
3067
|
|
|
3068
|
+
def _attachments_already_seeded(prior: list[SessionEntry], attachments: list[dict]) -> bool:
|
|
3069
|
+
"""True when an earlier run in this session already seeded the same attachments. Replay
|
|
3070
|
+
reconstructs the attachment message from that run's ``run_started``, so recording and
|
|
3071
|
+
live-seeding them again (a same-session retry attempt) would double them in history."""
|
|
3072
|
+
wanted = json.dumps(attachments, sort_keys=True)
|
|
3073
|
+
return any(
|
|
3074
|
+
entry.event.get("kind") == "run_started"
|
|
3075
|
+
and json.dumps(entry.event.get("attachments") or [], sort_keys=True) == wanted
|
|
3076
|
+
for entry in prior
|
|
3077
|
+
)
|
|
3078
|
+
|
|
3079
|
+
|
|
3063
3080
|
def _normalize_attachment_parts(parts: list[dict]) -> list[dict]:
|
|
3064
3081
|
"""Normalize SDK attachment dicts to kernel serde shape (`media_type`, not `mediaType`)."""
|
|
3065
3082
|
normalized: list[dict] = []
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{deepstrike-0.2.42 → deepstrike-0.2.44}/crates/deepstrike-core/src/governance/repeat_fuse.rs
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
|
{deepstrike-0.2.42 → deepstrike-0.2.44}/crates/deepstrike-core/src/orchestration/task_graph.rs
RENAMED
|
File without changes
|
{deepstrike-0.2.42 → deepstrike-0.2.44}/crates/deepstrike-core/src/orchestration/tournament.rs
RENAMED
|
File without changes
|
{deepstrike-0.2.42 → deepstrike-0.2.44}/crates/deepstrike-core/src/orchestration/workflow/mod.rs
RENAMED
|
File without changes
|
{deepstrike-0.2.42 → deepstrike-0.2.44}/crates/deepstrike-core/src/orchestration/workflow/run.rs
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{deepstrike-0.2.42 → deepstrike-0.2.44}/crates/deepstrike-core/src/runtime/kernel/runtime.rs
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
|
{deepstrike-0.2.42 → deepstrike-0.2.44}/crates/deepstrike-core/src/scheduler/state_machine/gate.rs
RENAMED
|
File without changes
|
|
File without changes
|
{deepstrike-0.2.42 → deepstrike-0.2.44}/crates/deepstrike-core/src/scheduler/state_machine/mod.rs
RENAMED
|
File without changes
|
|
File without changes
|
{deepstrike-0.2.42 → deepstrike-0.2.44}/crates/deepstrike-core/src/scheduler/state_machine/signal.rs
RENAMED
|
File without changes
|
{deepstrike-0.2.42 → deepstrike-0.2.44}/crates/deepstrike-core/src/scheduler/state_machine/tests.rs
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|