export { shellExecTool } from './shell.js';
export { fileReadTool } from './file-read.js';
export { fileWriteTool } from './file-write.js';
export { fileEditTool } from './file-edit.js';
export { filePatchTool } from './file-patch.js';
export { fileListTool } from './file-list.js';
export { systemInfoTool } from './system-info.js';
export { webFetchTool } from './web-fetch.js';
export { createMediaSendTool } from './media-send.js';
export { createImageAnalyzeTool } from './image-analyze.js';
export { createAudioTranscribeTool } from './audio-transcribe.js';
export { createMemoryReadTool } from './memory-read.js';
export { createMemoryWriteTool } from './memory-write.js';
export { createMemorySearchTool } from './memory-search.js';
export { createWebSearchTool } from './web-search.js';
export { createBraveNewsSearchTool } from './web-search.js';
export type { WebSearchConfig } from './web-search.js';
export { createProcessTools, ProcessManager } from './process/index.js';
export type { ProcessManagerConfig } from './process/index.js';
export { BrowserManager, createBrowserTools } from './browser/index.js';
export type { BrowserManagerConfig } from './browser/index.js';
export { createSessionTools } from './sessions.js';
export { createAgentsListTool } from './agents-list.js';
export { createMessageSendTool } from './message-send.js';
export { createCronTools } from './cron.js';
export { createGmailTools } from './gmail.js';
export { createGcalTools } from './gcal.js';
export { createGdocsTools } from './gdocs.js';
export { createGdriveTools } from './gdrive.js';
export { createGtasksTools } from './gtasks.js';
export { createMinioShareTool } from './minio-share.js';
export { createMinioIngestTool } from './minio-ingest.js';
export { createMinioSyncTool } from './minio-sync.js';
export { createK8sTools } from './k8s.js';
export { screenCaptureTool, cameraCaptureTool } from './capture.js';
export { createAgentDelegateTool } from './agent-delegate.js';
export type { AgentDelegateDeps } from './agent-delegate.js';
export { createCouncilRunTool } from './council-run.js';
export type { CouncilRunDeps } from './council-run.js';

import type { Tool } from '../types.js';
import type { MemoryStore } from '../../memory/store.js';
import type { WebSearchConfig } from './web-search.js';
import type { MemorySearchBackend } from './memory-search.js';
import { shellExecTool } from './shell.js';
import { fileReadTool } from './file-read.js';
import { fileWriteTool } from './file-write.js';
import { fileEditTool } from './file-edit.js';
import { filePatchTool } from './file-patch.js';
import { fileListTool } from './file-list.js';
import { systemInfoTool } from './system-info.js';
import { webFetchTool } from './web-fetch.js';
import { screenCaptureTool, cameraCaptureTool } from './capture.js';
import { createMemoryReadTool } from './memory-read.js';
import { createMemoryWriteTool } from './memory-write.js';
import { createMemorySearchTool } from './memory-search.js';
import { createBraveNewsSearchTool, createWebSearchTool } from './web-search.js';

/** Static builtin tools that don't require runtime dependencies. */
export const allBuiltinTools: Tool[] = [
  shellExecTool,
  fileReadTool,
  fileWriteTool,
  fileEditTool,
  filePatchTool,
  fileListTool,
  systemInfoTool,
  webFetchTool,
  screenCaptureTool,
  cameraCaptureTool,
];

/** Create memory tools that require a MemoryStore instance. */
export function createMemoryTools(store: MemoryStore, searchBackend?: MemorySearchBackend): Tool[] {
  return [
    createMemoryReadTool(store),
    createMemoryWriteTool(store),
    createMemorySearchTool(store, searchBackend),
  ];
}

/** Create the web search tool with provider config. */
export function createWebSearchTools(config: WebSearchConfig): Tool[] {
  const tools: Tool[] = [createWebSearchTool(config)];
  if (config.provider === 'brave') {
    tools.push(createBraveNewsSearchTool(config));
  }
  return tools;
}
