deepstrike 0.2.72__tar.gz → 0.2.73__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.72 → deepstrike-0.2.73}/Cargo.lock +6 -6
- {deepstrike-0.2.72 → deepstrike-0.2.73}/Cargo.toml +3 -3
- {deepstrike-0.2.72 → deepstrike-0.2.73}/PKG-INFO +11 -23
- {deepstrike-0.2.72 → deepstrike-0.2.73}/README.md +10 -22
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-core/src/context/measurement.rs +1 -2
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-core/src/runtime/kernel/wire/config.rs +3 -8
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-core/src/runtime/kernel/wire/driver/effects.rs +0 -8
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-core/src/runtime/kernel/wire/effect.rs +6 -67
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-core/src/runtime/kernel/wire/projection.rs +1 -11
- {deepstrike-0.2.72 → deepstrike-0.2.73}/deepstrike/__init__.py +2 -2
- deepstrike-0.2.73/deepstrike/agent.py +125 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/deepstrike/providers/base.py +2 -3
- {deepstrike-0.2.72 → deepstrike-0.2.73}/deepstrike/providers/model_registry.py +1 -7
- deepstrike-0.2.73/deepstrike/providers/protocols.py +18 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/pyproject.toml +1 -1
- deepstrike-0.2.72/deepstrike/agent.py +0 -69
- {deepstrike-0.2.72 → deepstrike-0.2.73}/LICENSE +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-core/Cargo.toml +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-core/LICENSE +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-core/benches/kernel_baseline.rs +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-core/benches/verifiable_baseline.rs +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-core/benches/wait_index_baseline.rs +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-core/src/benchmark/mod.rs +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-core/src/bin/deepstrike.rs +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-core/src/bin/support/evidence_io.rs +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-core/src/context/compression.rs +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-core/src/context/config.rs +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-core/src/context/execution.rs +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-core/src/context/fault.rs +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-core/src/context/manager.rs +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-core/src/context/mod.rs +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-core/src/context/partitions.rs +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-core/src/context/policy.rs +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-core/src/context/pressure.rs +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-core/src/context/renderer.rs +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-core/src/context/renewal.rs +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-core/src/context/skill_catalog.rs +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-core/src/context/summarizer.rs +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-core/src/context/task_state.rs +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-core/src/context/text.rs +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-core/src/context/token_engine.rs +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-core/src/context/units.rs +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-core/src/context/utility.rs +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-core/src/evolution.rs +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-core/src/governance/constraint.rs +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-core/src/governance/mod.rs +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-core/src/governance/permission.rs +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-core/src/governance/pipeline.rs +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-core/src/governance/quota.rs +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-core/src/governance/rate_limit.rs +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-core/src/governance/repeat_fuse.rs +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-core/src/governance/veto.rs +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-core/src/harness/eval.rs +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-core/src/harness/mod.rs +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-core/src/lexical.rs +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-core/src/lib.rs +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-core/src/memory/curator.rs +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-core/src/memory/durable.rs +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-core/src/memory/mod.rs +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-core/src/mm/handle.rs +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-core/src/mm/memory.rs +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-core/src/mm/mod.rs +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-core/src/mm/value.rs +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-core/src/orchestration/mod.rs +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-core/src/orchestration/task_graph.rs +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-core/src/orchestration/tournament.rs +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-core/src/orchestration/workflow/mod.rs +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-core/src/orchestration/workflow/run.rs +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-core/src/proc/mod.rs +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-core/src/projection_pairs.rs +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-core/src/runtime/chain_validator/mod.rs +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-core/src/runtime/event_log.rs +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-core/src/runtime/kernel/observation.rs +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-core/src/runtime/kernel/wire/binding.rs +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-core/src/runtime/kernel/wire/checkpoint.rs +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-core/src/runtime/kernel/wire/command.rs +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-core/src/runtime/kernel/wire/crash_point.rs +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-core/src/runtime/kernel/wire/driver/continuation.rs +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-core/src/runtime/kernel/wire/driver/events.rs +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-core/src/runtime/kernel/wire/driver/planning.rs +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-core/src/runtime/kernel/wire/driver/projection.rs +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-core/src/runtime/kernel/wire/driver/provider.rs +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-core/src/runtime/kernel/wire/driver/syscall.rs +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-core/src/runtime/kernel/wire/driver/tests.rs +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-core/src/runtime/kernel/wire/driver.rs +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-core/src/runtime/kernel/wire/envelope.rs +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-core/src/runtime/kernel/wire/event.rs +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-core/src/runtime/kernel/wire/fault.rs +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-core/src/runtime/kernel/wire/record.rs +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-core/src/runtime/kernel/wire/restore.rs +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-core/src/runtime/kernel/wire/root.rs +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-core/src/runtime/kernel/wire/scalar.rs +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-core/src/runtime/kernel/wire/syscall.rs +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-core/src/runtime/kernel/wire/terminal.rs +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-core/src/runtime/kernel/wire/tests.rs +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-core/src/runtime/kernel/wire/transaction.rs +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-core/src/runtime/kernel/wire.rs +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-core/src/runtime/kernel.rs +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-core/src/runtime/mod.rs +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-core/src/runtime/repair.rs +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-core/src/runtime/replay.rs +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-core/src/runtime/session.rs +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-core/src/runtime/verifiable.rs +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-core/src/scheduler/budget_grant.rs +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-core/src/scheduler/cross_operation.rs +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-core/src/scheduler/entropy.rs +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-core/src/scheduler/mailbox.rs +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-core/src/scheduler/milestone.rs +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-core/src/scheduler/mod.rs +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-core/src/scheduler/policy.rs +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-core/src/scheduler/rollback.rs +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-core/src/scheduler/runnable.rs +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-core/src/scheduler/state_machine/cancellation.rs +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-core/src/scheduler/state_machine/capability.rs +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-core/src/scheduler/state_machine/eviction.rs +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-core/src/scheduler/state_machine/gate.rs +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-core/src/scheduler/state_machine/milestone_exec.rs +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-core/src/scheduler/state_machine/mod.rs +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-core/src/scheduler/state_machine/process.rs +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-core/src/scheduler/state_machine/signal.rs +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-core/src/scheduler/state_machine/tests.rs +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-core/src/scheduler/state_machine/workflow.rs +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-core/src/scheduler/tcb.rs +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-core/src/scheduler/wait_index.rs +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-core/src/signals/attention.rs +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-core/src/signals/mod.rs +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-core/src/signals/queue.rs +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-core/src/signals/router.rs +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-core/src/syscall/mod.rs +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-core/src/types/agent.rs +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-core/src/types/capability.rs +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-core/src/types/contract.rs +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-core/src/types/durable_content.rs +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-core/src/types/error.rs +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-core/src/types/message.rs +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-core/src/types/milestone.rs +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-core/src/types/mod.rs +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-core/src/types/policy.rs +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-core/src/types/result.rs +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-core/src/types/signal.rs +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-core/src/types/skill.rs +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-core/src/types/task.rs +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-py/Cargo.toml +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-py/LICENSE +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-py/src/lib.rs +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-tokenizer/Cargo.toml +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-tokenizer/LICENSE +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-tokenizer/src/lib.rs +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/deepstrike/agent_ir.py +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/deepstrike/collaboration/__init__.py +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/deepstrike/collaboration/contract.py +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/deepstrike/collaboration/handoff.py +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/deepstrike/collaboration/harness.py +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/deepstrike/collaboration/modes.py +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/deepstrike/collaboration/pool.py +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/deepstrike/governance.py +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/deepstrike/harness/__init__.py +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/deepstrike/harness/harness.py +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/deepstrike/harness/judge.py +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/deepstrike/kernel/__init__.py +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/deepstrike/kernel/canonical.py +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/deepstrike/knowledge/__init__.py +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/deepstrike/knowledge/source.py +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/deepstrike/memory/__init__.py +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/deepstrike/memory/agent.py +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/deepstrike/memory/durable.py +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/deepstrike/memory/extraction.py +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/deepstrike/memory/in_memory_store.py +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/deepstrike/memory/protocols.py +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/deepstrike/memory/ranking.py +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/deepstrike/memory/retention.py +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/deepstrike/memory/working.py +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/deepstrike/providers/__init__.py +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/deepstrike/providers/anthropic.py +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/deepstrike/providers/anthropic_adapter.py +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/deepstrike/providers/anthropic_compatible.py +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/deepstrike/providers/capability_router.py +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/deepstrike/providers/credentials.py +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/deepstrike/providers/embedding.py +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/deepstrike/providers/factories.py +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/deepstrike/providers/gemini.py +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/deepstrike/providers/gemini_adapter.py +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/deepstrike/providers/model_catalog.py +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/deepstrike/providers/ollama.py +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/deepstrike/providers/ollama_adapter.py +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/deepstrike/providers/openai.py +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/deepstrike/providers/openai_chat_adapter.py +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/deepstrike/providers/openai_responses.py +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/deepstrike/providers/prepared_request.py +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/deepstrike/providers/protocol_adapter.py +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/deepstrike/providers/provider_error.py +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/deepstrike/providers/qwen.py +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/deepstrike/providers/replay.py +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/deepstrike/providers/replay_validator.py +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/deepstrike/providers/request_plan.py +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/deepstrike/providers/runtime_registry.py +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/deepstrike/providers/stop_reason.py +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/deepstrike/providers/stream.py +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/deepstrike/providers/usage.py +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/deepstrike/providers/vendor_profiles.py +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/deepstrike/runtime/__init__.py +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/deepstrike/runtime/archive.py +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/deepstrike/runtime/canonical_kernel_step.py +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/deepstrike/runtime/context.py +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/deepstrike/runtime/context_policy.py +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/deepstrike/runtime/credential_vault.py +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/deepstrike/runtime/durable_content.py +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/deepstrike/runtime/eval.py +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/deepstrike/runtime/event_stream.py +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/deepstrike/runtime/evolution.py +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/deepstrike/runtime/execution_evidence.py +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/deepstrike/runtime/execution_plane.py +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/deepstrike/runtime/facade.py +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/deepstrike/runtime/filtered_plane.py +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/deepstrike/runtime/kernel_event_log.py +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/deepstrike/runtime/kernel_journal.py +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/deepstrike/runtime/kernel_step.py +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/deepstrike/runtime/loop_driver.py +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/deepstrike/runtime/mcp_proxy_plane.py +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/deepstrike/runtime/os_profile.py +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/deepstrike/runtime/os_snapshot.py +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/deepstrike/runtime/output_schema.py +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/deepstrike/runtime/payload_store.py +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/deepstrike/runtime/process_sandbox_plane.py +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/deepstrike/runtime/provider_replay.py +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/deepstrike/runtime/reaction_checkpoint.py +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/deepstrike/runtime/reactive_session.py +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/deepstrike/runtime/reducers.py +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/deepstrike/runtime/reliability.py +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/deepstrike/runtime/remote_vpc_plane.py +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/deepstrike/runtime/replay_fixture.py +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/deepstrike/runtime/replay_provider.py +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/deepstrike/runtime/replay_sanitize.py +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/deepstrike/runtime/run_group.py +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/deepstrike/runtime/runner.py +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/deepstrike/runtime/session_log.py +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/deepstrike/runtime/session_repair.py +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/deepstrike/runtime/sub_agent_orchestrator.py +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/deepstrike/runtime/turn_policy.py +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/deepstrike/runtime/verifiable_report.py +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/deepstrike/runtime/workflow_control_flow.py +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/deepstrike/runtime/workflow_store.py +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/deepstrike/runtime/worktree_plane.py +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/deepstrike/safety/__init__.py +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/deepstrike/safety/permissions.py +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/deepstrike/signals/__init__.py +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/deepstrike/signals/gateway.py +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/deepstrike/signals/scheduled.py +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/deepstrike/signals/types.py +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/deepstrike/skills/__init__.py +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/deepstrike/skills/loader.py +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/deepstrike/skills/registry.py +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/deepstrike/skills/watcher.py +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/deepstrike/tools/__init__.py +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/deepstrike/tools/builtin/__init__.py +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/deepstrike/tools/builtin/read_file.py +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/deepstrike/tools/errors.py +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/deepstrike/tools/execution.py +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/deepstrike/tools/registry.py +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/deepstrike/types/__init__.py +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/deepstrike/types/agent.py +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/deepstrike/types/content.py +0 -0
- {deepstrike-0.2.72 → deepstrike-0.2.73}/deepstrike/types/content_policy.py +0 -0
|
@@ -254,7 +254,7 @@ dependencies = [
|
|
|
254
254
|
|
|
255
255
|
[[package]]
|
|
256
256
|
name = "deepstrike-core"
|
|
257
|
-
version = "0.2.
|
|
257
|
+
version = "0.2.73"
|
|
258
258
|
dependencies = [
|
|
259
259
|
"compact_str",
|
|
260
260
|
"deepstrike-tokenizer",
|
|
@@ -268,7 +268,7 @@ dependencies = [
|
|
|
268
268
|
|
|
269
269
|
[[package]]
|
|
270
270
|
name = "deepstrike-node"
|
|
271
|
-
version = "0.2.
|
|
271
|
+
version = "0.2.73"
|
|
272
272
|
dependencies = [
|
|
273
273
|
"compact_str",
|
|
274
274
|
"deepstrike-core",
|
|
@@ -280,7 +280,7 @@ dependencies = [
|
|
|
280
280
|
|
|
281
281
|
[[package]]
|
|
282
282
|
name = "deepstrike-py"
|
|
283
|
-
version = "0.2.
|
|
283
|
+
version = "0.2.73"
|
|
284
284
|
dependencies = [
|
|
285
285
|
"compact_str",
|
|
286
286
|
"deepstrike-core",
|
|
@@ -291,7 +291,7 @@ dependencies = [
|
|
|
291
291
|
|
|
292
292
|
[[package]]
|
|
293
293
|
name = "deepstrike-sdk"
|
|
294
|
-
version = "0.2.
|
|
294
|
+
version = "0.2.73"
|
|
295
295
|
dependencies = [
|
|
296
296
|
"async-stream",
|
|
297
297
|
"async-trait",
|
|
@@ -327,7 +327,7 @@ dependencies = [
|
|
|
327
327
|
|
|
328
328
|
[[package]]
|
|
329
329
|
name = "deepstrike-tokenizer"
|
|
330
|
-
version = "0.2.
|
|
330
|
+
version = "0.2.73"
|
|
331
331
|
dependencies = [
|
|
332
332
|
"pretty_assertions",
|
|
333
333
|
"tiktoken-rs",
|
|
@@ -335,7 +335,7 @@ dependencies = [
|
|
|
335
335
|
|
|
336
336
|
[[package]]
|
|
337
337
|
name = "deepstrike-wasm"
|
|
338
|
-
version = "0.2.
|
|
338
|
+
version = "0.2.73"
|
|
339
339
|
dependencies = [
|
|
340
340
|
"compact_str",
|
|
341
341
|
"deepstrike-core",
|
|
@@ -3,13 +3,13 @@ resolver = "2"
|
|
|
3
3
|
members = ["crates/deepstrike-core", "crates/deepstrike-tokenizer", "crates/deepstrike-py"]
|
|
4
4
|
|
|
5
5
|
[workspace.package]
|
|
6
|
-
version = "0.2.
|
|
6
|
+
version = "0.2.73"
|
|
7
7
|
edition = "2024"
|
|
8
8
|
repository = "https://github.com/kongusen/deepstrike"
|
|
9
9
|
|
|
10
10
|
[workspace.dependencies]
|
|
11
|
-
deepstrike-core = { path = "crates/deepstrike-core", version = "0.2.
|
|
12
|
-
deepstrike-tokenizer = { path = "crates/deepstrike-tokenizer", version = "0.2.
|
|
11
|
+
deepstrike-core = { path = "crates/deepstrike-core", version = "0.2.73" }
|
|
12
|
+
deepstrike-tokenizer = { path = "crates/deepstrike-tokenizer", version = "0.2.73" }
|
|
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.73
|
|
4
4
|
Requires-Dist: httpx>=0.27
|
|
5
5
|
Requires-Dist: pyyaml>=6.0
|
|
6
6
|
Requires-Dist: anyio>=4.0
|
|
@@ -42,40 +42,28 @@ maturin develop --manifest-path crates/deepstrike-py/Cargo.toml
|
|
|
42
42
|
|
|
43
43
|
```python
|
|
44
44
|
import asyncio
|
|
45
|
-
from deepstrike import
|
|
46
|
-
FileSessionLog,
|
|
47
|
-
InMemorySessionLog,
|
|
48
|
-
LocalExecutionPlane,
|
|
49
|
-
OpenAIProvider,
|
|
50
|
-
RuntimeOptions,
|
|
51
|
-
RuntimeRunner,
|
|
52
|
-
collect_text,
|
|
53
|
-
tool,
|
|
54
|
-
)
|
|
45
|
+
from deepstrike import OpenAIProvider, create_agent, tool
|
|
55
46
|
|
|
56
47
|
@tool
|
|
57
48
|
async def add(x: int, y: int) -> str:
|
|
58
49
|
"""Add two numbers."""
|
|
59
50
|
return str(x + y)
|
|
60
51
|
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
))
|
|
52
|
+
agent = create_agent(
|
|
53
|
+
"math",
|
|
54
|
+
model="openai/gpt-5-mini",
|
|
55
|
+
runtime_binding={"provider": OpenAIProvider(api_key="sk-...", model="gpt-5-mini")},
|
|
56
|
+
tools=[add],
|
|
57
|
+
)
|
|
68
58
|
|
|
69
|
-
asyncio.run(
|
|
70
|
-
|
|
71
|
-
goal="What is 17 + 28?",
|
|
72
|
-
)))
|
|
59
|
+
result = asyncio.run(agent.run("What is 17 + 28?", session_id="math-1"))
|
|
60
|
+
print(result["output"])
|
|
73
61
|
# => "45"
|
|
74
62
|
```
|
|
75
63
|
|
|
76
64
|
### Recipes — the canonical entry points
|
|
77
65
|
|
|
78
|
-
Most apps
|
|
66
|
+
Most apps start with `Agent`; use `RuntimeRunner` from the runtime submodule only for custom host control.
|
|
79
67
|
|
|
80
68
|
```python
|
|
81
69
|
from deepstrike import run_agent, run_fanout
|
|
@@ -28,40 +28,28 @@ maturin develop --manifest-path crates/deepstrike-py/Cargo.toml
|
|
|
28
28
|
|
|
29
29
|
```python
|
|
30
30
|
import asyncio
|
|
31
|
-
from deepstrike import
|
|
32
|
-
FileSessionLog,
|
|
33
|
-
InMemorySessionLog,
|
|
34
|
-
LocalExecutionPlane,
|
|
35
|
-
OpenAIProvider,
|
|
36
|
-
RuntimeOptions,
|
|
37
|
-
RuntimeRunner,
|
|
38
|
-
collect_text,
|
|
39
|
-
tool,
|
|
40
|
-
)
|
|
31
|
+
from deepstrike import OpenAIProvider, create_agent, tool
|
|
41
32
|
|
|
42
33
|
@tool
|
|
43
34
|
async def add(x: int, y: int) -> str:
|
|
44
35
|
"""Add two numbers."""
|
|
45
36
|
return str(x + y)
|
|
46
37
|
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
))
|
|
38
|
+
agent = create_agent(
|
|
39
|
+
"math",
|
|
40
|
+
model="openai/gpt-5-mini",
|
|
41
|
+
runtime_binding={"provider": OpenAIProvider(api_key="sk-...", model="gpt-5-mini")},
|
|
42
|
+
tools=[add],
|
|
43
|
+
)
|
|
54
44
|
|
|
55
|
-
asyncio.run(
|
|
56
|
-
|
|
57
|
-
goal="What is 17 + 28?",
|
|
58
|
-
)))
|
|
45
|
+
result = asyncio.run(agent.run("What is 17 + 28?", session_id="math-1"))
|
|
46
|
+
print(result["output"])
|
|
59
47
|
# => "45"
|
|
60
48
|
```
|
|
61
49
|
|
|
62
50
|
### Recipes — the canonical entry points
|
|
63
51
|
|
|
64
|
-
Most apps
|
|
52
|
+
Most apps start with `Agent`; use `RuntimeRunner` from the runtime submodule only for custom host control.
|
|
65
53
|
|
|
66
54
|
```python
|
|
67
55
|
from deepstrike import run_agent, run_fanout
|
|
@@ -2,8 +2,7 @@
|
|
|
2
2
|
//! ("measure provider-visible input, never underestimate") requires between what a request is
|
|
3
3
|
//! *estimated* to cost before it is sent (`PromptMeasurement`, this module), what the provider
|
|
4
4
|
//! actually reports back (`ProviderUsage`, Node/Python Host layer — not this crate). This module
|
|
5
|
-
//! only defines a preflight fact
|
|
6
|
-
//! scheduler producer until request fingerprinting and durable replay semantics are defined.
|
|
5
|
+
//! only defines a host-side preflight fact for provider-visible request preparation.
|
|
7
6
|
|
|
8
7
|
use serde::{Deserialize, Serialize};
|
|
9
8
|
|
{deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-core/src/runtime/kernel/wire/config.rs
RENAMED
|
@@ -2557,7 +2557,7 @@ mod tests {
|
|
|
2557
2557
|
serde_json::from_value::<HostEffectSupport>(json!({ "supported": ["load_payload"] }))
|
|
2558
2558
|
.is_ok()
|
|
2559
2559
|
);
|
|
2560
|
-
assert_eq!(EffectKindTag::ALL.len(),
|
|
2560
|
+
assert_eq!(EffectKindTag::ALL.len(), 10);
|
|
2561
2561
|
}
|
|
2562
2562
|
|
|
2563
2563
|
// -----------------------------------------------------------------------------------------
|
|
@@ -2926,17 +2926,12 @@ mod tests {
|
|
|
2926
2926
|
// required kind from the
|
|
2927
2927
|
// support declaration must be refused — and the rejection must name the kind, because a
|
|
2928
2928
|
// host reading it has to know which declaration to fix. Iterating `ALL` also means a new
|
|
2929
|
-
// effect kind cannot be added without deciding what switches it on.
|
|
2930
|
-
// reserved wire shape with no scheduler producer after SPC-013 A-00R, so it deliberately
|
|
2931
|
-
// imposes no host-support requirement.
|
|
2929
|
+
// effect kind cannot be added without deciding what switches it on.
|
|
2932
2930
|
let full = fully_populated_config();
|
|
2933
2931
|
full.resolve(&defaults())
|
|
2934
2932
|
.expect("declaring every kind satisfies every trigger");
|
|
2935
2933
|
|
|
2936
|
-
for dropped in EffectKindTag::ALL
|
|
2937
|
-
.into_iter()
|
|
2938
|
-
.filter(|kind| *kind != EffectKindTag::MeasurePrompt)
|
|
2939
|
-
{
|
|
2934
|
+
for dropped in EffectKindTag::ALL {
|
|
2940
2935
|
let mut config = full.clone();
|
|
2941
2936
|
config.host_effect_support = HostEffectSupport::new(
|
|
2942
2937
|
EffectKindTag::ALL
|
|
@@ -220,10 +220,6 @@ impl CanonicalOperationDriver {
|
|
|
220
220
|
EffectSuccess::PayloadLoaded(loaded) => {
|
|
221
221
|
self.commit_payload_load(context, effect_id, loaded)
|
|
222
222
|
}
|
|
223
|
-
EffectSuccess::PromptMeasured(_) => Err(KernelFault::new(
|
|
224
|
-
KernelFaultCode::UnexpectedEffectOutcome,
|
|
225
|
-
"prompt measurement outcomes are reserved but adaptive measurement has no scheduler producer",
|
|
226
|
-
)),
|
|
227
223
|
}
|
|
228
224
|
}
|
|
229
225
|
|
|
@@ -462,10 +458,6 @@ impl CanonicalOperationDriver {
|
|
|
462
458
|
step.focus = self.focus.clone();
|
|
463
459
|
Ok(step)
|
|
464
460
|
}
|
|
465
|
-
EffectKindTag::MeasurePrompt => Err(KernelFault::new(
|
|
466
|
-
KernelFaultCode::UnexpectedEffectOutcome,
|
|
467
|
-
"prompt measurement failures are reserved but adaptive measurement has no scheduler producer",
|
|
468
|
-
)),
|
|
469
461
|
}
|
|
470
462
|
}
|
|
471
463
|
|
{deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-core/src/runtime/kernel/wire/effect.rs
RENAMED
|
@@ -26,7 +26,7 @@ use serde::de::{self, Deserializer, Visitor};
|
|
|
26
26
|
use serde::{Deserialize, Serialize, Serializer};
|
|
27
27
|
|
|
28
28
|
use crate::context::execution::ContextCandidate;
|
|
29
|
-
use crate::context::measurement::
|
|
29
|
+
use crate::context::measurement::ToolMeasurement;
|
|
30
30
|
use crate::types::durable_content::DurableContent;
|
|
31
31
|
|
|
32
32
|
use super::root::{LogicalAgentSpec, MessageRole};
|
|
@@ -260,8 +260,6 @@ pub enum EffectKind {
|
|
|
260
260
|
/// to it instead of scanning a session log for the original bytes (§7.10 rule 4).
|
|
261
261
|
LoadPayload(LoadPayloadEffect),
|
|
262
262
|
EvaluateMilestone(EvaluateMilestoneEffect),
|
|
263
|
-
/// spc_011-C-02: preflight prompt-token measurement — see [`MeasurePromptEffect`].
|
|
264
|
-
MeasurePrompt(MeasurePromptEffect),
|
|
265
263
|
}
|
|
266
264
|
|
|
267
265
|
impl EffectKind {
|
|
@@ -277,7 +275,6 @@ impl EffectKind {
|
|
|
277
275
|
Self::ArchivePageOut(_) => EffectKindTag::ArchivePageOut,
|
|
278
276
|
Self::LoadPayload(_) => EffectKindTag::LoadPayload,
|
|
279
277
|
Self::EvaluateMilestone(_) => EffectKindTag::EvaluateMilestone,
|
|
280
|
-
Self::MeasurePrompt(_) => EffectKindTag::MeasurePrompt,
|
|
281
278
|
}
|
|
282
279
|
}
|
|
283
280
|
}
|
|
@@ -301,12 +298,10 @@ pub enum EffectKindTag {
|
|
|
301
298
|
ArchivePageOut,
|
|
302
299
|
LoadPayload,
|
|
303
300
|
EvaluateMilestone,
|
|
304
|
-
/// spc_011-C-02.
|
|
305
|
-
MeasurePrompt,
|
|
306
301
|
}
|
|
307
302
|
|
|
308
303
|
impl EffectKindTag {
|
|
309
|
-
pub const ALL: [Self;
|
|
304
|
+
pub const ALL: [Self; 10] = [
|
|
310
305
|
Self::CallProvider,
|
|
311
306
|
Self::ExecuteTools,
|
|
312
307
|
Self::RequestApproval,
|
|
@@ -317,7 +312,6 @@ impl EffectKindTag {
|
|
|
317
312
|
Self::ArchivePageOut,
|
|
318
313
|
Self::LoadPayload,
|
|
319
314
|
Self::EvaluateMilestone,
|
|
320
|
-
Self::MeasurePrompt,
|
|
321
315
|
];
|
|
322
316
|
|
|
323
317
|
pub fn as_str(self) -> &'static str {
|
|
@@ -332,7 +326,6 @@ impl EffectKindTag {
|
|
|
332
326
|
Self::ArchivePageOut => "archive_page_out",
|
|
333
327
|
Self::LoadPayload => "load_payload",
|
|
334
328
|
Self::EvaluateMilestone => "evaluate_milestone",
|
|
335
|
-
Self::MeasurePrompt => "measure_prompt",
|
|
336
329
|
}
|
|
337
330
|
}
|
|
338
331
|
|
|
@@ -349,7 +342,6 @@ impl EffectKindTag {
|
|
|
349
342
|
Self::ArchivePageOut => EffectSuccessTag::PageOutArchived,
|
|
350
343
|
Self::LoadPayload => EffectSuccessTag::PayloadLoaded,
|
|
351
344
|
Self::EvaluateMilestone => EffectSuccessTag::MilestoneEvaluated,
|
|
352
|
-
Self::MeasurePrompt => EffectSuccessTag::PromptMeasured,
|
|
353
345
|
}
|
|
354
346
|
}
|
|
355
347
|
}
|
|
@@ -375,27 +367,6 @@ pub struct CallProviderEffect {
|
|
|
375
367
|
pub tools: Vec<ToolSchema>,
|
|
376
368
|
}
|
|
377
369
|
|
|
378
|
-
/// spc_011-C-02: a preflight token-count request. Reuses the same `RenderedContext`/`ToolSchema`
|
|
379
|
-
/// shape `CallProviderEffect` already carries, rather than inventing a parallel candidate-request
|
|
380
|
-
/// type — the kernel is asking "how many tokens would *this* request cost", the same request it
|
|
381
|
-
/// would otherwise hand to `CallProvider`.
|
|
382
|
-
///
|
|
383
|
-
/// spc_011-C-06: no `provider`/`model` fields, matching `CallProviderEffect` exactly. An earlier
|
|
384
|
-
/// draft of this struct carried both, reasoning that "the answer is meaningless without knowing
|
|
385
|
-
/// which vendor should answer it" — but the kernel has no provider/model identity to put there:
|
|
386
|
-
/// `OperationConfig` carries no such field, vendor selection is entirely a Host-side concern (the
|
|
387
|
-
/// same Host that will execute `CallProvider` for this operation already knows which provider it
|
|
388
|
-
/// dispatches to, the same way it already resolves that for `CallProviderEffect`, which has never
|
|
389
|
-
/// carried these fields). This surfaced only when 011-C-06 tried to actually construct one inside
|
|
390
|
-
/// the kernel and found nothing to put in `provider`/`model`.
|
|
391
|
-
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
|
|
392
|
-
#[serde(deny_unknown_fields)]
|
|
393
|
-
pub struct MeasurePromptEffect {
|
|
394
|
-
pub context: RenderedContext,
|
|
395
|
-
#[serde(default, skip_serializing_if = "Vec::is_empty")]
|
|
396
|
-
pub tools: Vec<ToolSchema>,
|
|
397
|
-
}
|
|
398
|
-
|
|
399
370
|
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
|
|
400
371
|
#[serde(deny_unknown_fields)]
|
|
401
372
|
pub struct ExecuteToolsEffect {
|
|
@@ -777,8 +748,6 @@ pub enum EffectSuccess {
|
|
|
777
748
|
PageOutArchived(PageOutArchivedSuccess),
|
|
778
749
|
PayloadLoaded(PayloadLoadedSuccess),
|
|
779
750
|
MilestoneEvaluated(MilestoneEvaluatedSuccess),
|
|
780
|
-
/// spc_011-C-02.
|
|
781
|
-
PromptMeasured(PromptMeasuredSuccess),
|
|
782
751
|
}
|
|
783
752
|
|
|
784
753
|
impl EffectSuccess {
|
|
@@ -794,7 +763,6 @@ impl EffectSuccess {
|
|
|
794
763
|
Self::PageOutArchived(_) => EffectSuccessTag::PageOutArchived,
|
|
795
764
|
Self::PayloadLoaded(_) => EffectSuccessTag::PayloadLoaded,
|
|
796
765
|
Self::MilestoneEvaluated(_) => EffectSuccessTag::MilestoneEvaluated,
|
|
797
|
-
Self::PromptMeasured(_) => EffectSuccessTag::PromptMeasured,
|
|
798
766
|
}
|
|
799
767
|
}
|
|
800
768
|
}
|
|
@@ -813,12 +781,10 @@ pub enum EffectSuccessTag {
|
|
|
813
781
|
PageOutArchived,
|
|
814
782
|
PayloadLoaded,
|
|
815
783
|
MilestoneEvaluated,
|
|
816
|
-
/// spc_011-C-02.
|
|
817
|
-
PromptMeasured,
|
|
818
784
|
}
|
|
819
785
|
|
|
820
786
|
impl EffectSuccessTag {
|
|
821
|
-
pub const ALL: [Self;
|
|
787
|
+
pub const ALL: [Self; 10] = [
|
|
822
788
|
Self::Provider,
|
|
823
789
|
Self::Tools,
|
|
824
790
|
Self::Approval,
|
|
@@ -829,7 +795,6 @@ impl EffectSuccessTag {
|
|
|
829
795
|
Self::PageOutArchived,
|
|
830
796
|
Self::PayloadLoaded,
|
|
831
797
|
Self::MilestoneEvaluated,
|
|
832
|
-
Self::PromptMeasured,
|
|
833
798
|
];
|
|
834
799
|
|
|
835
800
|
pub fn as_str(self) -> &'static str {
|
|
@@ -844,7 +809,6 @@ impl EffectSuccessTag {
|
|
|
844
809
|
Self::PageOutArchived => "page_out_archived",
|
|
845
810
|
Self::PayloadLoaded => "payload_loaded",
|
|
846
811
|
Self::MilestoneEvaluated => "milestone_evaluated",
|
|
847
|
-
Self::PromptMeasured => "prompt_measured",
|
|
848
812
|
}
|
|
849
813
|
}
|
|
850
814
|
|
|
@@ -862,7 +826,6 @@ impl EffectSuccessTag {
|
|
|
862
826
|
Self::PageOutArchived => EffectKindTag::ArchivePageOut,
|
|
863
827
|
Self::PayloadLoaded => EffectKindTag::LoadPayload,
|
|
864
828
|
Self::MilestoneEvaluated => EffectKindTag::EvaluateMilestone,
|
|
865
|
-
Self::PromptMeasured => EffectKindTag::MeasurePrompt,
|
|
866
829
|
}
|
|
867
830
|
}
|
|
868
831
|
}
|
|
@@ -1153,14 +1116,6 @@ pub struct MilestoneCheckResult {
|
|
|
1153
1116
|
pub notes: String,
|
|
1154
1117
|
}
|
|
1155
1118
|
|
|
1156
|
-
/// spc_011-C-02: the answer to a `MeasurePrompt` effect — one [`PromptMeasurement`] fact, wrapped
|
|
1157
|
-
/// the same way every other effect wraps its one matching success payload.
|
|
1158
|
-
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
|
|
1159
|
-
#[serde(deny_unknown_fields)]
|
|
1160
|
-
pub struct PromptMeasuredSuccess {
|
|
1161
|
-
pub measurement: PromptMeasurement,
|
|
1162
|
-
}
|
|
1163
|
-
|
|
1164
1119
|
// ---------------------------------------------------------------------------------------------
|
|
1165
1120
|
// §7.10 · inline / external payload
|
|
1166
1121
|
// ---------------------------------------------------------------------------------------------
|
|
@@ -1354,9 +1309,7 @@ mod tests {
|
|
|
1354
1309
|
|
|
1355
1310
|
use serde_json::{Value, json};
|
|
1356
1311
|
|
|
1357
|
-
use crate::context::measurement::
|
|
1358
|
-
MeasurementConfidence, MeasurementSource, PromptMeasurement, ToolMeasurement,
|
|
1359
|
-
};
|
|
1312
|
+
use crate::context::measurement::ToolMeasurement;
|
|
1360
1313
|
|
|
1361
1314
|
use super::super::*;
|
|
1362
1315
|
|
|
@@ -1551,10 +1504,6 @@ mod tests {
|
|
|
1551
1504
|
phase_id: "phase-2".to_string(),
|
|
1552
1505
|
},
|
|
1553
1506
|
}),
|
|
1554
|
-
EffectKind::MeasurePrompt(MeasurePromptEffect {
|
|
1555
|
-
context: RenderedContext::default(),
|
|
1556
|
-
tools: Vec::new(),
|
|
1557
|
-
}),
|
|
1558
1507
|
]
|
|
1559
1508
|
}
|
|
1560
1509
|
|
|
@@ -1657,15 +1606,6 @@ mod tests {
|
|
|
1657
1606
|
notes: String::new(),
|
|
1658
1607
|
},
|
|
1659
1608
|
}),
|
|
1660
|
-
EffectSuccess::PromptMeasured(PromptMeasuredSuccess {
|
|
1661
|
-
measurement: PromptMeasurement {
|
|
1662
|
-
input_tokens: 4200,
|
|
1663
|
-
source: MeasurementSource::Native {
|
|
1664
|
-
provider: "anthropic".to_string(),
|
|
1665
|
-
},
|
|
1666
|
-
confidence: MeasurementConfidence::Exact,
|
|
1667
|
-
},
|
|
1668
|
-
}),
|
|
1669
1609
|
]
|
|
1670
1610
|
}
|
|
1671
1611
|
|
|
@@ -1682,7 +1622,7 @@ mod tests {
|
|
|
1682
1622
|
// -----------------------------------------------------------------------------------------
|
|
1683
1623
|
|
|
1684
1624
|
#[test]
|
|
1685
|
-
fn
|
|
1625
|
+
fn the_effect_union_is_exactly_the_ten_host_executable_actions() {
|
|
1686
1626
|
let tags: BTreeSet<&str> = EffectKindTag::ALL.iter().map(|tag| tag.as_str()).collect();
|
|
1687
1627
|
assert_eq!(
|
|
1688
1628
|
tags,
|
|
@@ -1697,10 +1637,9 @@ mod tests {
|
|
|
1697
1637
|
"archive_page_out",
|
|
1698
1638
|
"load_payload",
|
|
1699
1639
|
"evaluate_milestone",
|
|
1700
|
-
"measure_prompt",
|
|
1701
1640
|
])
|
|
1702
1641
|
);
|
|
1703
|
-
assert_eq!(EffectKindTag::ALL.len(),
|
|
1642
|
+
assert_eq!(EffectKindTag::ALL.len(), 10);
|
|
1704
1643
|
|
|
1705
1644
|
let sampled: Vec<EffectKindTag> = effect_samples().iter().map(EffectKind::tag).collect();
|
|
1706
1645
|
assert_eq!(
|
{deepstrike-0.2.72 → deepstrike-0.2.73}/crates/deepstrike-core/src/runtime/kernel/wire/projection.rs
RENAMED
|
@@ -9,7 +9,7 @@ use serde::{Deserialize, Serialize};
|
|
|
9
9
|
use super::driver::PlannedStep;
|
|
10
10
|
use super::effect::{
|
|
11
11
|
ArchivePageOutEffect, CallProviderEffect, EffectKind, EffectKindTag, EvaluateMilestoneEffect,
|
|
12
|
-
ExecuteToolsEffect, KernelEffect, LoadPayloadEffect,
|
|
12
|
+
ExecuteToolsEffect, KernelEffect, LoadPayloadEffect, PersistMemoryEffect,
|
|
13
13
|
PreemptTasksEffect, QueryMemoryEffect, RequestApprovalEffect, SpawnTasksEffect,
|
|
14
14
|
};
|
|
15
15
|
use super::scalar::EffectId;
|
|
@@ -77,11 +77,6 @@ pub enum CanonicalHostAction {
|
|
|
77
77
|
causation_input_id: super::scalar::InputId,
|
|
78
78
|
payload: EvaluateMilestoneEffect,
|
|
79
79
|
},
|
|
80
|
-
MeasurePrompt {
|
|
81
|
-
effect_id: EffectId,
|
|
82
|
-
causation_input_id: super::scalar::InputId,
|
|
83
|
-
payload: MeasurePromptEffect,
|
|
84
|
-
},
|
|
85
80
|
}
|
|
86
81
|
|
|
87
82
|
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
|
|
@@ -152,11 +147,6 @@ pub fn project_effect(effect: &KernelEffect) -> CanonicalHostAction {
|
|
|
152
147
|
causation_input_id,
|
|
153
148
|
payload: payload.clone(),
|
|
154
149
|
},
|
|
155
|
-
EffectKind::MeasurePrompt(payload) => CanonicalHostAction::MeasurePrompt {
|
|
156
|
-
effect_id,
|
|
157
|
-
causation_input_id,
|
|
158
|
-
payload: payload.clone(),
|
|
159
|
-
},
|
|
160
150
|
}
|
|
161
151
|
}
|
|
162
152
|
|
|
@@ -201,7 +201,7 @@ from deepstrike.types.agent import (
|
|
|
201
201
|
workflow_budget_note,
|
|
202
202
|
fanout_synthesize, generate_and_filter, verify_rules, gen_eval,
|
|
203
203
|
)
|
|
204
|
-
from deepstrike.agent import Agent, AgentDefinition, AgentMemory, MemoryReference, ModelRef
|
|
204
|
+
from deepstrike.agent import Agent, AgentDefinition, AgentMemory, MemoryReference, ModelRef, create_agent
|
|
205
205
|
from deepstrike.agent_ir import lower_agent, normalize_agent
|
|
206
206
|
from deepstrike.runtime.durable_content import (
|
|
207
207
|
DurableContentError,
|
|
@@ -382,7 +382,7 @@ __all__ = [
|
|
|
382
382
|
"SkillMetadata",
|
|
383
383
|
# Sub-agent isolation
|
|
384
384
|
"AgentIdentity", "AgentCapabilityFilter", "AgentRunSpec",
|
|
385
|
-
"Agent", "AgentDefinition", "AgentMemory", "MemoryReference", "ModelRef", "lower_agent", "normalize_agent",
|
|
385
|
+
"Agent", "create_agent", "AgentDefinition", "AgentMemory", "MemoryReference", "ModelRef", "lower_agent", "normalize_agent",
|
|
386
386
|
"AgentProcessChangedObservation", "SubAgentResult", "LoopResult",
|
|
387
387
|
"KernelAgentRole", "AgentIsolation", "ContextInheritance",
|
|
388
388
|
"MilestoneContract", "MilestonePhase", "MilestoneCheckResult", "MilestonePolicy",
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
"""Public executable Agent contract.
|
|
2
|
+
|
|
3
|
+
This surface describes an agent before a host chooses a provider, execution plane, or Kernel run.
|
|
4
|
+
The declaration stays provider-neutral; execution resolves a provider through the explicit
|
|
5
|
+
``runtime_binding`` supplied by the host.
|
|
6
|
+
"""
|
|
7
|
+
from __future__ import annotations
|
|
8
|
+
|
|
9
|
+
from dataclasses import dataclass
|
|
10
|
+
from typing import Any, Literal, Mapping, Sequence, TypeAlias
|
|
11
|
+
|
|
12
|
+
from deepstrike.types.agent import AgentCapabilityFilter
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
ModelRef: TypeAlias = str | dict[str, Any]
|
|
16
|
+
AgentDefinition: TypeAlias = Mapping[str, Any]
|
|
17
|
+
AgentMemory: TypeAlias = Any
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
@dataclass(frozen=True)
|
|
21
|
+
class MemoryReference:
|
|
22
|
+
"""Serializable durable-memory binding for an agent declared before a host store exists."""
|
|
23
|
+
|
|
24
|
+
namespace: str | None = None
|
|
25
|
+
kind: Literal["durable"] = "durable"
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
class Agent:
|
|
29
|
+
"""Provider-neutral declaration and executable public Agent handle.
|
|
30
|
+
|
|
31
|
+
``tools`` may contain executable ``RegisteredTool`` instances or JSON-safe tool descriptors.
|
|
32
|
+
The latter carry schema only and do not create executable capabilities.
|
|
33
|
+
"""
|
|
34
|
+
|
|
35
|
+
def __init__(
|
|
36
|
+
self,
|
|
37
|
+
name: str,
|
|
38
|
+
*,
|
|
39
|
+
description: str | None = None,
|
|
40
|
+
instructions: str | None = None,
|
|
41
|
+
model: ModelRef | None = None,
|
|
42
|
+
capability_filter: AgentCapabilityFilter | Mapping[str, Any] | None = None,
|
|
43
|
+
tools: Sequence[Any] | None = None,
|
|
44
|
+
mcp_servers: Sequence[Mapping[str, Any]] | None = None,
|
|
45
|
+
skills: Sequence[Mapping[str, Any]] | None = None,
|
|
46
|
+
memory: AgentMemory | None = None,
|
|
47
|
+
knowledge: Sequence[Mapping[str, Any]] | None = None,
|
|
48
|
+
handoffs: Sequence[Mapping[str, Any]] | None = None,
|
|
49
|
+
provider_options: Mapping[str, Any] | None = None,
|
|
50
|
+
output_schema: Mapping[str, Any] | None = None,
|
|
51
|
+
metadata: Mapping[str, Any] | None = None,
|
|
52
|
+
guardrails: Sequence[Mapping[str, Any]] | None = None,
|
|
53
|
+
runtime_binding: Mapping[str, Any] | None = None,
|
|
54
|
+
) -> None:
|
|
55
|
+
if not name:
|
|
56
|
+
raise ValueError("agent name is required")
|
|
57
|
+
self.name = name
|
|
58
|
+
self.description = description
|
|
59
|
+
self.instructions = instructions
|
|
60
|
+
self.model = model
|
|
61
|
+
self.capability_filter = capability_filter
|
|
62
|
+
self.tools = list(tools) if tools is not None else None
|
|
63
|
+
self.mcp_servers = list(mcp_servers) if mcp_servers is not None else None
|
|
64
|
+
self.skills = list(skills) if skills is not None else None
|
|
65
|
+
self.memory = memory
|
|
66
|
+
self.knowledge = list(knowledge) if knowledge is not None else None
|
|
67
|
+
self.handoffs = list(handoffs) if handoffs is not None else None
|
|
68
|
+
self.provider_options = dict(provider_options) if provider_options is not None else None
|
|
69
|
+
self.output_schema = dict(output_schema) if output_schema is not None else None
|
|
70
|
+
self.metadata = dict(metadata) if metadata is not None else None
|
|
71
|
+
self.guardrails = list(guardrails) if guardrails is not None else None
|
|
72
|
+
self.runtime_binding = dict(runtime_binding) if runtime_binding is not None else None
|
|
73
|
+
|
|
74
|
+
async def run(self, goal: str, *, session_id: str | None = None, max_turns: int | None = None) -> dict[str, Any]:
|
|
75
|
+
"""Execute one goal through the host binding and return a structured run result."""
|
|
76
|
+
if not self.runtime_binding:
|
|
77
|
+
raise RuntimeError(f'agent "{self.name}" has no runtime binding')
|
|
78
|
+
provider = self.runtime_binding.get("provider")
|
|
79
|
+
if provider is None:
|
|
80
|
+
provider_for = self.runtime_binding.get("provider_for")
|
|
81
|
+
provider = provider_for(self.model) if callable(provider_for) else None
|
|
82
|
+
if provider is None:
|
|
83
|
+
raise RuntimeError(f'agent "{self.name}" has no runtime provider binding')
|
|
84
|
+
from deepstrike.runtime.facade import run_agent
|
|
85
|
+
output = await run_agent(
|
|
86
|
+
provider=provider,
|
|
87
|
+
goal=goal,
|
|
88
|
+
system_prompt=self.instructions,
|
|
89
|
+
tools=list(self.tools or []),
|
|
90
|
+
session_id=session_id,
|
|
91
|
+
max_turns=max_turns,
|
|
92
|
+
)
|
|
93
|
+
return {"output": output, "status": "completed", "session_id": session_id}
|
|
94
|
+
|
|
95
|
+
async def stream(self, goal: str, *, session_id: str | None = None, max_turns: int | None = None):
|
|
96
|
+
"""Stream host events for the same public Agent contract."""
|
|
97
|
+
if not self.runtime_binding:
|
|
98
|
+
raise RuntimeError(f'agent "{self.name}" has no runtime binding')
|
|
99
|
+
provider = self.runtime_binding.get("provider")
|
|
100
|
+
if provider is None:
|
|
101
|
+
provider_for = self.runtime_binding.get("provider_for")
|
|
102
|
+
provider = provider_for(self.model) if callable(provider_for) else None
|
|
103
|
+
if provider is None:
|
|
104
|
+
raise RuntimeError(f'agent "{self.name}" has no runtime provider binding')
|
|
105
|
+
from deepstrike.runtime.execution_plane import LocalExecutionPlane
|
|
106
|
+
from deepstrike.runtime.runner import RuntimeOptions, RuntimeRunner
|
|
107
|
+
from deepstrike.runtime.session_log import InMemorySessionLog
|
|
108
|
+
options = self.runtime_binding.get("runtime_options", {})
|
|
109
|
+
runner = RuntimeRunner(RuntimeOptions(
|
|
110
|
+
provider=provider,
|
|
111
|
+
execution_plane=LocalExecutionPlane(),
|
|
112
|
+
session_log=InMemorySessionLog(),
|
|
113
|
+
max_tokens=32_000,
|
|
114
|
+
agent_id=self.name,
|
|
115
|
+
**({"system_prompt": self.instructions} if self.instructions else {}),
|
|
116
|
+
**({"max_turns": max_turns} if max_turns is not None else {}),
|
|
117
|
+
**options,
|
|
118
|
+
))
|
|
119
|
+
async for event in runner.run(goal=goal, session_id=session_id or f"agent-{uuid.uuid4()}"):
|
|
120
|
+
yield event
|
|
121
|
+
|
|
122
|
+
|
|
123
|
+
def create_agent(name: str, **kwargs: Any) -> Agent:
|
|
124
|
+
"""Create the executable public Agent handle."""
|
|
125
|
+
return Agent(name, **kwargs)
|
|
@@ -433,8 +433,7 @@ class RuntimePolicy:
|
|
|
433
433
|
self.timeout_ms = timeout_ms
|
|
434
434
|
|
|
435
435
|
|
|
436
|
-
|
|
437
|
-
ProviderProtocol = str # "anthropic-messages" | "openai-chat" | "openai-responses" | "gemini"
|
|
436
|
+
from .protocols import GenerationProtocol
|
|
438
437
|
|
|
439
438
|
|
|
440
439
|
@dataclass
|
|
@@ -442,7 +441,7 @@ class ProviderDescriptor:
|
|
|
442
441
|
"""Stable identity advertised by a provider so the recovery layer can decide
|
|
443
442
|
whether a stored replay envelope may be seeded into it."""
|
|
444
443
|
provider: str
|
|
445
|
-
protocol:
|
|
444
|
+
protocol: GenerationProtocol
|
|
446
445
|
model: str
|
|
447
446
|
reasoning: dict[str, Any] = field(default_factory=dict)
|
|
448
447
|
tool_calls: dict[str, Any] = field(default_factory=dict)
|