pub mod governance;
pub mod harness;
pub mod harness_loop;
pub mod knowledge;
pub mod memory;
pub mod providers;
pub mod run_event;
pub mod runtime;
pub mod safety;
pub mod signals;
pub mod tools;
#[cfg(test)]
mod tests;
pub use deepstrike_core::context::measurement::{MeasurementConfidence, MeasurementSource};
pub use deepstrike_core::context::renderer::RenderedContext;
pub use deepstrike_core::governance::permission::PermissionAction;
pub use deepstrike_core::governance::quota::ResourceQuota;
pub use deepstrike_core::mm::memory::{
MemoryAuthor, MemoryKind, MemoryProvenance, MemoryQuery, MemoryRecall, MemoryRecord,
MemoryScope, MemoryTrustLevel,
};
pub use deepstrike_core::runtime::kernel::wire::MemoryPolicy;
pub use deepstrike_core::{EntropySample, EntropyTracker, EntropyWatchConfig};
pub use deepstrike_core::orchestration::workflow::{JudgeMatch, WorkflowRun, WorkflowSpawnInfo};
pub use deepstrike_core::orchestration::workflow::{
WorkflowNode, WorkflowSpec, fanout_synthesize, gen_eval, generate_and_filter, verify_rules,
};
pub use governance::{Governance, GovernanceVerdict};
pub use harness::{Criterion, CriterionResult, Verdict};
pub use harness_loop::{
AttemptBody, AttemptBodyContext, AttemptBodyEvent, AttemptBodyStream, AttemptJudge,
AttemptLoop, AttemptLoopEvent, AttemptLoopStream, AttemptOutcome, AttemptOutcomeKind,
AttemptRequest, CarryContext, CarryPolicy, ContinueSession, DigestFn, DigestFuture,
FreshWithDigest, FreshWithFeedback, HybridJudge, JudgeContext, JudgeResult, LlmEvalJudge,
PassHook, PassHookFuture, PreparedAttempt, RuntimeAttemptBody, StopPolicy, VerdictFn,
VerdictFnJudge,
};
pub use knowledge::KnowledgeSource;
pub use memory::{
DurableMemory, InMemoryMemoryStore, MemorySearchOptions, MemoryStore, WorkingMemory,
};
pub use providers::RuntimePolicy;
pub use providers::anthropic::AnthropicProvider;
pub use providers::openai::{OpenAIProvider, deepseek, kimi, minimax, ollama, qwen};
pub use providers::request_plan::{
CostObservation, NormalizedProviderUsage, PricingRates, PricingSnapshot,
ProviderRequestEndpoint, ProviderRequestPlan, ProviderUsage, RecordedPromptMeasurement,
RequestPlanError, UnpricedReason, measurement_for_plan, normalize_provider_usage,
price_provider_usage, record_prompt_measurement,
};
pub use providers::{
LLMProvider, ProviderError, ProviderErrorKind, ProviderRunState, ProviderToolSpec, StreamEvent,
TokenUsage,
};
pub use run_event::RunEvent;
pub use runtime::eval::{Criterion as EvalCriterion, Verdict as EvalVerdict};
pub use runtime::eval::{build_eval_messages, judge, parse_verdict, verdict_output_schema};
pub use runtime::replay_fixture::{
extract_recorded_messages, extract_recorded_messages_from_entries,
};
pub use runtime::replay_provider::{ReplayProvider, ReplayProviderOpts};
pub use runtime::{
CanonicalCheckpoint, CanonicalCheckpointCandidate, CanonicalCommit, CanonicalKernel,
CanonicalPreparation,
};
pub use runtime::{
ChainedCredentialVault, CredentialVault, EnvCredentialVault, InMemoryCredentialVault,
};
pub use runtime::{
DEFAULT_NATIVE_SIGNAL_POLICY, GovernancePolicy, MemoryWriteRateLimit, NativeOsProfile,
OsProfile, SchedulerPolicyConfig, SignalPolicy, assert_native_profile,
default_native_governance_policy, os_profile,
};
pub use runtime::{ExecutionPlane, LocalExecutionPlane};
pub use runtime::{FilePayloadStore, PayloadStore};
pub use runtime::{FileSessionLog, InMemorySessionLog, SessionEntry, SessionLog};
pub use runtime::{
KernelReliability, MilestoneEvaluationContext, MilestoneEvaluationHandler, MilestonePolicy,
RuntimeOptions, RuntimeRunner, collect_text,
};
pub use runtime::{
CheckpointCandidate, FileKernelJournal, InMemoryKernelJournal, InstalledCheckpoint,
JournalAppendReceipt, JournalEntry, JournalError, JournalHead, JournalPruneReceipt,
JournalRecordInput, JournalResult, KernelJournal,
};
pub use runtime::{McpProxyPlane, McpServerConfig};
pub use runtime::{
PermissionRequest, PermissionRequestHandler, PermissionResponse, RunContext,
ToolSuspendHandler, ToolSuspendRequest,
};
pub use runtime::{ProcessSandboxPlane, SandboxOptions};
pub use runtime::{RemoteVpcOptions, RemoteVpcPlane};
pub use safety::{Permission, PermissionDecision, PermissionManager, PermissionMode};
pub use signals::{
GatewayReceiver, RuntimeSignal, ScheduledPrompt, SignalClaim, SignalDeliveryReceipt,
SignalGateway, SignalSource,
};
pub use tools::{
RegisteredTool, SafeToolResult, TextToolSession, ToolChunk, ToolEnvelope, ToolEnvelopeFail,
ToolEnvelopeOk, ToolSession, ToolStep, execute_tools, fail, ok, read_file_tool, safe_tool,
tool_fail, validate_tool_arguments,
};
#[derive(Debug, thiserror::Error)]
pub enum Error {
#[error("provider error: {0}")]
Provider(String),
#[error(transparent)]
ProviderFailure(#[from] providers::ProviderError),
#[error("tool error: {0}")]
Tool(String),
#[error("io error: {0}")]
Io(#[from] std::io::Error),
#[error("tool execution failed: {output}")]
ToolExecutionFailed {
output: String,
is_fatal: bool,
error_kind: Option<deepstrike_core::types::message::ToolErrorKind>,
},
#[error("{output}")]
ToolFail {
output: String,
code: Option<String>,
hint: Option<String>,
is_fatal: bool,
error_kind: Option<deepstrike_core::types::message::ToolErrorKind>,
},
#[error("{0}")]
Other(String),
}
pub fn format_tool_error(e: &Error) -> String {
match e {
Error::Tool(s) => s.clone(),
Error::ToolExecutionFailed { output, .. } => output.clone(),
Error::ToolFail {
output, code, hint, ..
} => {
if code.is_none() && hint.is_none() {
return output.clone();
}
let mut obj = serde_json::Map::with_capacity(3);
obj.insert(
"message".to_string(),
serde_json::Value::String(output.clone()),
);
if let Some(c) = code {
obj.insert("code".to_string(), serde_json::Value::String(c.clone()));
}
if let Some(h) = hint {
obj.insert("hint".to_string(), serde_json::Value::String(h.clone()));
}
serde_json::to_string(&serde_json::Value::Object(obj))
.unwrap_or_else(|_| output.clone())
}
_ => e.to_string(),
}
}
pub type Result<T> = std::result::Result<T, Error>;