1#![cfg_attr(test, allow(clippy::unwrap_used, clippy::expect_used))]
2#[cfg(target_arch = "wasm32")]
33pub mod tokio {
34 pub use tokio_with_wasm::alias::*;
35}
36
37#[cfg(not(target_arch = "wasm32"))]
38pub mod builder;
39pub mod builtin;
40pub mod control_plane;
41pub mod dispatcher;
42pub mod error;
43pub mod registry;
44pub mod schema;
45pub mod timeout;
46
47#[cfg(all(feature = "comms", not(target_arch = "wasm32")))]
48pub use builder::CommsDispatcherConfig;
49#[cfg(all(feature = "mcp", not(target_arch = "wasm32")))]
50pub use builder::McpDispatcherConfig;
51#[cfg(not(target_arch = "wasm32"))]
52pub use builder::{BuiltinDispatcherConfig, ToolDispatcherBuilder, build_builtin_dispatcher};
53#[cfg(feature = "comms")]
54pub use builtin::CommsToolSurface;
55pub use builtin::{
56 BuiltinTool, BuiltinToolConfig, BuiltinToolEntry, BuiltinToolError, CompositeDispatcher,
57 CompositeDispatcherError, EnforcedToolPolicy, MemoryTaskStore, ResolvedToolPolicy, TaskStore,
58 ToolMode, ToolPolicyLayer,
59};
60#[cfg(not(target_arch = "wasm32"))]
61pub use builtin::{FileTaskStore, ensure_rkat_dir, ensure_rkat_dir_async, find_project_root};
62pub use control_plane::{CatalogControlDispatcher, CatalogControlVisibilityProvider};
63#[cfg(not(target_arch = "wasm32"))]
64pub use dispatcher::ToolDispatcher;
65pub use dispatcher::{EmptyToolDispatcher, FilteredDispatcher};
66pub use error::{DispatchError, ToolError, ToolValidationError};
67#[cfg(feature = "comms")]
68pub use meerkat_comms::agent::{CommsToolDispatcher, DynCommsToolDispatcher, NoOpDispatcher};
69pub use registry::validate_tool_def;
70pub use schema::{empty_object_schema, schema_for};
71pub use timeout::ToolTimeoutPolicy;
72
73inventory::submit! {
75 meerkat_capabilities::CapabilityRegistration {
76 id: meerkat_capabilities::CapabilityId::Builtins,
77 description: "Built-in tools: task_list, task_create, task_get, task_update, datetime, apply_patch, view_image, generate_image, blob_save_file, blob_load_file, blob_inspect",
78 scope: meerkat_capabilities::CapabilityScope::Universal,
79 requires_feature: None,
80 prerequisites: &[],
81 status_resolver: Some(|config| {
82 if config.tools.builtins_enabled {
83 meerkat_capabilities::CapabilityStatus::Available
84 } else {
85 meerkat_capabilities::CapabilityStatus::DisabledByPolicy {
86 description: std::borrow::Cow::Borrowed("tools.builtins_enabled = false"),
87 }
88 }
89 }),
90 }
91}
92
93#[cfg(not(target_arch = "wasm32"))]
94inventory::submit! {
95 meerkat_capabilities::CapabilityRegistration {
96 id: meerkat_capabilities::CapabilityId::Shell,
97 description: "Shell tool with job management: shell, shell_jobs, shell_job_status, shell_job_cancel",
98 scope: meerkat_capabilities::CapabilityScope::Universal,
99 requires_feature: None,
100 prerequisites: &[],
101 status_resolver: Some(|config| {
102 if config.tools.shell_enabled {
103 meerkat_capabilities::CapabilityStatus::Available
104 } else {
105 meerkat_capabilities::CapabilityStatus::DisabledByPolicy {
106 description: std::borrow::Cow::Borrowed("tools.shell_enabled = false"),
107 }
108 }
109 }),
110 }
111}
112
113inventory::submit! {
115 meerkat_skills::SkillRegistration {
116 id: "task-workflow",
117 name: "Task Workflow",
118 description: "How to use task_create/task_update/task_list for structured work tracking",
119 scope: meerkat_core::skills::SkillScope::Builtin,
120 requires_capabilities: &["builtins"],
121 body: include_str!("../skills/task-workflow/SKILL.md"),
122 extensions: &[],
123 }
124}
125
126inventory::submit! {
127 meerkat_skills::SkillRegistration {
128 id: "skill-discovery-workflow",
129 name: "Skill Discovery Workflow",
130 description: "How to browse, load, and use Meerkat skills during a session",
131 scope: meerkat_core::skills::SkillScope::Builtin,
132 requires_capabilities: &["skills"],
133 body: include_str!("../skills/skill-discovery-workflow/SKILL.md"),
134 extensions: &[],
135 }
136}
137
138inventory::submit! {
139 meerkat_skills::SkillRegistration {
140 id: "builtin-utilities-workflow",
141 name: "Builtin Utilities Workflow",
142 description: "How to use Meerkat built-in utility tools safely and productively",
143 scope: meerkat_core::skills::SkillScope::Builtin,
144 requires_capabilities: &["builtins"],
145 body: include_str!("../skills/builtin-utilities-workflow/SKILL.md"),
146 extensions: &[],
147 }
148}
149
150#[cfg(not(target_arch = "wasm32"))]
151inventory::submit! {
152 meerkat_skills::SkillRegistration {
153 id: "shell-patterns",
154 name: "Shell Patterns",
155 description: "Background job patterns with shell and job management tools",
156 scope: meerkat_core::skills::SkillScope::Builtin,
157 requires_capabilities: &["builtins", "shell"],
158 body: include_str!("../skills/shell-patterns/SKILL.md"),
159 extensions: &[],
160 }
161}