// Tool registry barrel. The implementation was split into focused modules
// under ./tools/ (Sketch 4) while this file stays the stable public surface:
// every import of './tools.js' and the @boocode/server/tools subpath (consumed
// by apps/coder) resolves through here unchanged. The exports-map path
// (dist/services/tools.js) is preserved.
//
//   ./tools/types.ts     — ToolDef / ToolJsonSchema / ToolExecCtx
//   ./tools/fs-tools.ts  — filesystem ToolDefs (view_file/list_dir/grep/
//                          find_files/view_truncated_output)
//   ./tools/misc-tools.ts— git_status/skill_*/ask_user_input ToolDefs
//   ./tools/registry.ts  — ALL_TOOLS/TOOLS_BY_NAME (register-through let
//                          bindings), appendMcpTools, toolJsonSchemas
//   ./tools/tiers.ts     — CORE/STANDARD names + module-load validation +
//                          resolveToolTier
//
// Re-exporting the `let`-bound ALL_TOOLS / TOOLS_BY_NAME preserves the
// register-through MCP-discovery contract: appendMcpTools() reassigns the
// bindings in registry.ts and ESM live bindings make the mutation visible
// through this barrel to every consumer (incl. apps/coder).

export type { ToolDef, ToolJsonSchema, ToolExecCtx } from './tools/types.js';
export {
  viewFile,
  listDir,
  grep,
  findFiles,
  viewTruncatedOutput,
} from './tools/fs-tools.js';
export {
  gitStatus,
  skillFind,
  skillUse,
  skillResource,
  askUserInput,
} from './tools/misc-tools.js';
export {
  ALL_TOOLS,
  TOOLS_BY_NAME,
  appendMcpTools,
  toolJsonSchemas,
} from './tools/registry.js';
export {
  CORE_TOOL_NAMES,
  STANDARD_TOOL_NAMES,
  resolveToolTier,
} from './tools/tiers.js';
