1#![warn(missing_docs)]
46
47#[cfg(feature = "adapter-acp")]
48pub use supercode_interchange::ontology;
51pub use supercode_interchange::orchestration;
53
54#[cfg(feature = "adapter-acp")]
55pub mod acp_frontend;
56#[cfg(feature = "adapter-acp")]
57pub mod acp_server;
58mod agent;
59pub mod agent_package;
60pub mod approvals;
61pub mod audit;
62pub mod channels;
63pub mod checkpoint;
64pub mod claude_compat;
65pub mod claude_peer;
66pub mod claude_relay;
67pub mod claude_runtime_state;
68pub mod codex_peer;
69mod config;
70pub mod config_schema;
71pub mod configfile;
72pub mod context_injection;
73mod error;
74pub mod formatters;
75#[cfg(feature = "adapter-api")]
76pub mod frontend;
77#[cfg(not(feature = "adapter-api"))]
78#[allow(dead_code)]
79mod frontend;
80#[allow(missing_docs)]
81mod frontend_contract_generated;
82pub mod git_metadata;
83pub mod goals;
84pub mod harness_auth;
85pub mod harness_command;
86#[cfg(feature = "adapter-api")]
87pub mod harness_service;
88#[cfg(not(feature = "adapter-api"))]
89#[allow(dead_code)]
90mod harness_service;
91pub mod hermes_import;
92pub mod human_export;
93pub mod interop_settings;
94pub mod jobs;
95pub mod jobs_control;
96pub mod jobs_notepad;
97pub mod launch_agent;
98pub mod live_runtime;
99pub mod lsp;
100#[cfg(feature = "adapter-api")]
101pub mod mail_agent;
102#[cfg(feature = "adapter-api")]
103pub mod mail_mcp;
104pub mod mail_question;
105#[cfg(feature = "adapter-api")]
106pub mod mail_route;
107#[cfg(feature = "adapter-api")]
108pub mod mail_send;
109pub mod mail_transcript;
110#[cfg(feature = "adapter-api")]
111pub mod mail_watch;
112pub mod mailbox;
113pub mod mcp;
114pub mod mcp_oauth;
115pub mod memory;
116pub mod model_catalog;
117pub mod model_change;
118pub mod modules;
119mod native_materialize;
120pub mod orchestration_doors;
121pub mod orchestrator;
122pub mod orchestrator_door;
123pub mod output_style;
124pub mod parity;
125pub mod path_rules;
126pub mod permissions;
127pub mod plugins;
128pub mod presets;
129pub mod pricing;
130pub mod pricing_ref;
131pub mod profiles;
132pub mod profiles_control;
133mod provider;
134pub mod reduce;
135#[cfg(feature = "adapter-api")]
136pub mod relay_endpoint;
137mod residue_store;
138pub mod routes;
139pub mod runs;
140pub mod runtime;
141pub mod runtime_lease;
142#[cfg(feature = "adapter-api")]
143pub mod runtime_mail;
144#[cfg(feature = "adapter-api")]
145pub mod runtime_registry;
146mod safe_path;
147pub mod sandbox;
148pub mod schema;
149pub mod sdk;
150#[cfg(feature = "adapter-api")]
151pub mod server;
152#[cfg(not(feature = "adapter-api"))]
153#[allow(dead_code, unused_imports)]
154mod server;
155pub mod session_activity;
156pub mod session_index;
157pub mod session_journal;
158pub mod session_title;
159pub mod sessions_control;
160pub mod skills;
161pub mod skills_control;
162pub mod slow_log;
163pub mod startup_prompts;
164pub mod store;
165pub mod subagents;
166pub mod support;
167pub mod teams;
168pub mod tools;
169pub mod triggers;
170pub mod trust;
171pub mod tui;
172pub mod turn_record;
173pub mod usage_log;
174pub mod workflow_doors;
175
176#[cfg(feature = "adapter-acp")]
177pub use acp_frontend::{AcpFrontendCheckpoint, AcpFrontendConnectOptions, AcpFrontendRuntime};
178pub use agent::{Agent, ContextUsage};
179pub use approvals::{
180 approval_harnesses, lists_approvals, plan_reply, ApprovalChoice, ApprovalDecision,
181 ApprovalDoor, ApprovalKind, ApprovalOption, ApprovalRegistry, ApprovalResolution,
182 ApprovalResolveError, ApprovalRow, ApprovalStatus, ApprovalsQuery, ApprovalsResolveParams,
183};
184pub use channels::{
185 channel_status, list_channels, ChannelError, ChannelRow, ChannelStatus, CHANNELS_SCHEMA,
186 CHANNEL_HARNESSES,
187};
188pub use claude_peer::{
189 read_claude_peer_settings, read_registry as read_claude_peer_registry, resolve_live_session,
190 update_claude_peer_settings, user_settings_path as claude_user_settings_path,
191 write_claude_peer_settings, ClaudeCrossSessionInbound, ClaudePeerRefusal,
192 ClaudePeerRefusalError, ClaudePeerSession, ClaudePeerSettings, ClaudePeerSettingsError,
193 ClaudePeerStatus,
194};
195pub use claude_runtime_state::{
196 ClaudeBackgroundChild, ClaudeBackgroundState, ClaudeCronJob, ClaudeQueueState,
197 ClaudeRuntimeManifest, ClaudeRuntimePosture, ClaudeRuntimeResidue, ClaudeWakeup,
198 CLAUDE_RUNTIME_MANIFEST_VERSION,
199};
200pub use config::{
201 project_root_for, ApprovalPolicy, CachePlan, Config, ConfigBuilder, ConfigFile, ConfigProfile,
202 ContextInjectionBlock, HookDecision, LifecycleEvent, LifecycleHook, PreToolOutcome,
203 SteeringMode, StopGateHook, ToolAdvertising, ToolOverride, ToolOverrideProfile,
204 DEFAULT_SYSTEM_PROMPT,
205};
206pub use configfile::HarnessConfig;
207pub use interop_settings::{
208 configure_harness_interop_settings, inspect_harness_interop_settings, HarnessAdvisorySeverity,
209 HarnessInteropAdvisory, HarnessInteropControl, HarnessInteropSettingsError,
210 HarnessInteropSettingsReport, HarnessSettingChange, HarnessSettingChoice,
211 HarnessSettingRecommendation, HarnessSettingScope, CLAUDE_CROSS_SESSION_INBOUND_KEY,
212 HARNESS_INTEROP_SETTINGS_SCHEMA,
213};
214pub use jobs::{
215 get_job, list_jobs, supports_jobs, JobDeliver, JobPayload, JobSchedule, JobScope, JobSource,
216 JobsListing, JobsQuery, ScheduledJob, CLAUDE_SESSION_SCAN_LIMIT, JOB_HARNESSES,
217};
218pub use jobs_control::{
219 harness_program, mutate, supports_job_control, JobControlError, JobDeliverSpec, JobMutation,
220 JobMutationOutcome, JobPayloadSpec, JobScheduleSpec, JobVerb, CONTROLLED_JOB_HARNESSES,
221};
222pub use jobs_notepad::{JobNotepad, JobNotepadEntry, JobNotepadRequest};
223pub use live_runtime::{
224 discover_live_runtime, find_live_runtime, forget_live_runtime, list_live_runtimes,
225 register_live_runtime, register_live_runtime_with_metadata, resolve_live_runtime,
226 LiveRuntimeEndpoint, LiveRuntimeMetadata, LiveRuntimeReceiptError, LiveRuntimeRecord,
227 LiveRuntimeRegistration, LiveRuntimeSource, LiveRuntimeSupervisor, ResolvedLiveRuntime,
228};
229pub use memory::{
230 search_memory, show_memory, supports_memory, MemoryDocument, MemoryError, MemoryMatch,
231 MemoryQuery, MemoryScope, MemorySearchQuery, MEMORY_HARNESSES, MEMORY_SCHEMA,
232};
233pub use modules::{ModuleActivation, ModuleId};
234pub use orchestrator::{
235 clear_lease, daemon_entry, install_service, live_lease, lock_path, read_lease, resolve_program,
236 service_name, service_status, service_unit, uninstall_service, write_lease, write_unit, Lease,
237 OrchestratorError, ServiceState, ServiceUnit, DAEMON_ENTRY, LOCK_FILE, SERVICE_DIR,
238 SERVICE_NAME,
239};
240pub use orchestrator_door::{
241 daemon_is_live, socket_path, Door, DoorAnswer, DoorError, NODE_BIN_ENV, SOCKET_FILE,
242};
243pub use profiles::{
244 get_profile, list_profiles, ProfileError, ProfileKind, ProfileRow, HERMES_DEFAULT_PROFILE,
245 PROFILES_SCHEMA, PROFILE_HARNESSES,
246};
247pub use profiles_control::{
248 supports_profile_control, ProfileControlError, ProfileMutation, ProfileMutationOutcome,
249 ProfileVerb, CONTROLLED_PROFILE_HARNESSES,
250};
251pub use routes::{list_routes, RouteError, RouteMatch, RouteRow, ROUTES_SCHEMA, ROUTE_HARNESSES};
252pub use runs::{
253 get_run, list_runs, supports_runs, HarnessRun, RunDelivery, RunSource, RunsListing, RunsQuery,
254 RUN_HARNESSES,
255};
256pub use sessions_control::{
257 controlled_verbs, supports_session_control, SessionControlError, SessionDoor, SessionMutation,
258 SessionMutationOutcome, SessionVerb, CONTROLLED_SESSION_HARNESSES,
259};
260pub use supercode_interchange::catalog::{
261 orchestrator_profile_dirs, DiscoveryPage, DiscoveryQuery, HarnessCatalog, HarnessHomes,
262 HarnessId, SessionDescriptor, SessionLocator, StorageLocator,
263};
264pub use teams::{
265 connector_service_binary as teams_connector_service_binary,
266 connector_service_name as teams_connector_service_name,
267 connector_service_status as teams_connector_service_status,
268 connector_service_unit as teams_connector_service_unit,
269 install_connector_service as install_teams_connector_service,
270 install_service as install_teams_service, service_status as teams_service_status,
271 service_unit as teams_service_unit, teams_entry, teams_home,
272 uninstall_connector_service as uninstall_teams_connector_service,
273 uninstall_service as uninstall_teams_service, write_unit as write_teams_unit, TeamsError,
274 SERVICE_DIR as TEAMS_SERVICE_DIR, SERVICE_NAME as TEAMS_SERVICE_NAME, TEAMS_ENTRY,
275 TEAMS_PACKAGE,
276};
277pub use triggers::{
278 list_triggers, TriggerError, TriggerKind, TriggerRow, TRIGGERS_SCHEMA, TRIGGER_HARNESSES,
279};
280
281pub fn format_reply(reply: &str, json: bool) -> String {
285 if json {
286 serde_json::json!({ "result": reply }).to_string()
287 } else {
288 reply.to_string()
289 }
290}
291pub use error::{Error, Result};
292#[cfg(feature = "adapter-api")]
293pub use frontend::HttpFrontendRuntime;
294pub use frontend::{
295 FrontendActions, FrontendApprovalDecision, FrontendAttachSnapshot, FrontendAttachment,
296 FrontendCommandDescriptor, FrontendConnectionState, FrontendDisplayCapabilities,
297 FrontendElicitationAction, FrontendEvent, FrontendOperationDescriptor,
298 FrontendOperationInvocation, FrontendOperationKind, FrontendOperationResult, FrontendRequest,
299 FrontendRequestKind, FrontendResponse, FrontendRuntime, FrontendRuntimeDescriptor,
300 FrontendRuntimeError, FrontendRuntimeMetadata, FrontendTurnState, FRONTEND_REPLAY_CAPACITY,
301 FRONTEND_RUNTIME_SCHEMA_VERSION,
302};
303pub use frontend_contract_generated::{
304 FrontendFacadeMethod, FrontendFacadeTransport, GeneratedFrontendClient,
305};
306pub use harness_auth::{
307 harness_authentication_methods, harness_authentication_plan, inspect_harness_authentication,
308 HarnessAuthenticationEnvironment, HarnessAuthenticationError, HarnessAuthenticationInteraction,
309 HarnessAuthenticationLaunch, HarnessAuthenticationMethod, HarnessAuthenticationMethodId,
310 HarnessAuthenticationPlan, HarnessAuthenticationReport, HarnessAuthenticationState,
311 HarnessBrowserBehavior, HARNESS_AUTHENTICATION_SCHEMA,
312};
313pub use harness_service::{
314 DetachedAnswer, DetachedCall, HarnessSessionService, OpenedRuntime, ReturnedRuntime,
315 RuntimeOpen, DETACHED_CALL_DEADLINE, DETACHED_METHODS, HARNESS_SERVICE_VERSION,
316 RUNTIME_CONTROL_DEADLINE, RUNTIME_EVENT_METHOD, RUNTIME_OPEN_DEADLINE, RUNTIME_OPEN_METHODS,
317 SESSION_ACTIVITY_EVENT_METHOD, SESSION_DISCOVER_DEADLINE, SESSION_EVENT_METHOD,
318 SESSION_INDEX_EVENT_METHOD,
319};
320pub use provider::{
321 model_context_limit, ChatRequest, OpenAiProvider, PromptTokensDetails, Provider, RetryLog,
322 RetryNotice, ToolSchema, Usage, SERVED_MODEL_KEY, UNKNOWN_MODEL_CONTEXT_FLOOR,
323};
324#[cfg(feature = "adapter-api")]
325pub use runtime::SupercodeHttpRuntimeBackend;
326pub use runtime::{
327 AcpRuntimeBackend, BearerToken, ClaudeCodeRuntimeBackend, CodexRuntimeBackend, HarnessEvent,
328 McpServerLaunch, OpenCodeRuntimeBackend, PiRuntimeBackend, ResolvedRuntimeConnection,
329 RuntimeAttachRequest, RuntimeBackend, RuntimeCapabilities, RuntimeConnectLaunch,
330 RuntimeConnection, RuntimeEndpoint, RuntimeHandle, RuntimeInput, RuntimeLaunch,
331 RuntimeStartRequest,
332};
333pub use runtime_lease::{
334 CoordinatedRuntime, CoordinatedRuntimeClient, RuntimeAuthorization, RuntimeClientId,
335 RuntimeControllerLease, RuntimeLeaseCoordinator, RuntimeLeaseError, RuntimeLeaseSnapshot,
336 RuntimeObserverLease, RuntimePermission, DEFAULT_RUNTIME_LEASE_TTL_MS,
337};
338#[cfg(feature = "adapter-api")]
339pub use runtime_registry::{
340 LocalRuntimeRegistry, RuntimeRegistryEntry, RuntimeRegistryEvent, RuntimeRegistryOwner,
341 RuntimeRegistryQuery, RuntimeRegistryState, RuntimeRegistryWatch,
342};
343pub use sandbox::{landlock_available, netns_available, SandboxEnvPolicy, SandboxEscalation};
344pub use sdk::{
345 create_agent, discover_session_page, discover_sessions, load_session, load_session_path,
346 resume_agent, show_model_input, submit_agent, submit_agent_with_images, RuntimeSubmitError,
347 SdkAgent, SdkCapabilities, SdkError, SdkErrorCode, SdkEvent, SdkOperation, SdkPromptSource,
348 SdkRequest, SdkRuntime, SdkRuntimeEvent, SdkService, SDK_SCHEMA_VERSION,
349};
350pub use server::RpcEngine;
351pub use session_activity::{
352 SessionActivity, SessionActivityEvidence, SessionPresence, SessionTurnState,
353};
354pub use session_index::{SessionIndexChange, SessionIndexDelta, SessionIndexKey};
355pub use skills::{
356 declared_skill_name, list_skills, skill_roots, writable_skill_roots, SkillHomes, SkillRow,
357 SkillScope, SkillsQuery, SKILL_HARNESSES,
358};
359pub use skills_control::{
360 mutate_skill, supports_skill_control, SkillControlError, SkillMutation, SkillMutationOutcome,
361 SkillVerb, CONTROLLED_SKILL_HARNESSES,
362};
363pub use store::{SessionInfo, SessionStore};
364pub use supercode_interchange::session::{
365 CrossSurface, OrchestrationNouns, Recurrence, Session, SessionFormat, SessionMeta,
366 SessionSource, SurfaceKey, Trigger, WorkspaceKind, WorkspaceRef,
367};
368pub use supercode_interchange::watch::{SessionFollower, SessionSnapshotReason, SessionWatchEvent};
369pub use supercode_interchange::{
370 core_messages, measure_fidelity, messages_equal, messages_equal_multimodal, replay_eligible,
371 Fidelity, FidelityMetric, FidelityResidue,
372};
373pub use supercode_interchange::{
374 is_tool_error, mark_tool_error, mark_tool_outcome_unknown, tool_outcome, ChatMessage,
375 FunctionCall, Role, ToolCall, ToolOutcome, TOOL_ERROR_METADATA_KEY,
376 TOOL_OUTCOME_UNKNOWN_METADATA_KEY,
377};
378pub use supercode_runtime::{AgentEvent, EventSink};
379pub use support::{
380 harness_support, harness_support_registry, HarnessSupportDescriptor, ImplementationKind,
381 NativeSupport, RuntimeSupport, SupportRegistryReport, SUPPORT_REGISTRY_SCHEMA,
382};
383pub use tools::{
384 shell_sandbox_unenforceable, SandboxPolicy, SchemaTier, Tool, ToolContext, ToolRegistry,
385 WriteObserver,
386};
387
388pub fn build_checkout() -> Option<std::path::PathBuf> {
392 let exe = std::env::current_exe().ok()?;
393 if exe
394 .ancestors()
395 .any(|dir| dir.file_name().is_some_and(|name| name == "node_modules"))
396 {
397 return None;
398 }
399 std::path::Path::new(env!("CARGO_MANIFEST_DIR"))
400 .ancestors()
401 .nth(2)
402 .map(std::path::Path::to_path_buf)
403}