Provides normalization and conversion utilities for mapping tool name variants (aliases, case variations, separator styles) to canonical `ToolType` values used across the OpenFrame platform. ## Key Components | Export | Description | |---|---| | `normalizeToolType(input?)` | Converts any tool name variant to a canonical `ToolType`; returns `undefined` if no match | | `normalizeToolTypeWithFallback(input?)` | Same as above but defaults to `'SYSTEM'` when no match is found | | `toToolLabel(input?)` | Converts any tool name variant to its human-readable display label | | `isValidToolType(input?)` | Returns `true` if the input resolves to a known `ToolType` | | `getToolTypeAliases(toolType)` | Returns all alias strings that map to a given canonical `ToolType` | | `getToolLabel(toolType)` | Returns the display label for a canonical `ToolType` | | `toolAliasMap` | Internal lookup table covering all supported tools: `FLEET_MDM`, `MESHCENTRAL`, `AUTHENTIK`, `OPENFRAME`, `OPENFRAME_CHAT`, `OPENFRAME_CLIENT`, `OPENFRAME_RMM`, `OSQUERY`, `SYSTEM` | ## Usage Example ```typescript import { normalizeToolType, normalizeToolTypeWithFallback, toToolLabel, isValidToolType, getToolTypeAliases, } from './tool-utils' // Normalize various input formats normalizeToolType('rmm') // => 'OPENFRAME_RMM' normalizeToolType('FLEET-MDM') // => 'FLEET_MDM' normalizeToolType('unknown') // => undefined // Safe fallback for unknown inputs normalizeToolTypeWithFallback('unknown') // => 'SYSTEM' // Human-readable labels toToolLabel('fleet-mdm') // => 'Fleet' toToolLabel('rmm') // => 'RMM' // Validation guard if (isValidToolType(userInput)) { // safe to use as ToolType } // Enumerate all aliases for a tool (e.g. docs or validation UI) getToolTypeAliases('FLEET_MDM') // => ['FLEET', 'FLEET_MDM', 'FLEET-MDM', 'FLEETMDM', 'fleet', ...] ``` ## Notes - Resolution order: exact match → uppercase → lowercase - All separator styles are supported: underscores (`FLEET_MDM`), hyphens (`fleet-mdm`), and concatenated (`fleetmdm`) - Agent suffixes like `fleetmdm-agent` and `openframe-rmm-agent` are included in the alias map **Source:** [`tool-utils.ts`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/tool-utils.ts)