import { agenticLoaders } from "./definitions/agentic.js";
import { coreLoaders } from "./definitions/core.js";
import { networkLoaders, runtimeLoaders } from "./definitions/runtimes.js";
import { textLoaders } from "./definitions/text.js";
import { clearCommandCache, createLazyCommand, getLoadedCommandCount, } from "./lib.js";
// Aggregated loaders
const commandLoaders = [...coreLoaders, ...textLoaders, ...agenticLoaders];
/**
 * Gets all available command names (excludes network commands)
 */
export function getCommandNames() {
    return commandLoaders.map((def) => def.name);
}
/**
 * Gets all network command names
 */
export function getNetworkCommandNames() {
    return networkLoaders.map((def) => def.name);
}
/**
 * Creates all lazy commands for registration
 */
export function createLazyCommands(filter) {
    const loaders = filter
        ? commandLoaders.filter((def) => filter.includes(def.name))
        : commandLoaders;
    return loaders.map(createLazyCommand);
}
/**
 * Creates network commands for registration
 */
export function createNetworkCommands() {
    return networkLoaders.map(createLazyCommand);
}
/**
 * Gets all python command names
 */
export function getPythonCommandNames() {
    return runtimeLoaders
        .filter((l) => l.name === "python" || l.name === "python3")
        .map((def) => def.name);
}
/**
 * Creates python commands
 */
export function createPythonCommands() {
    return runtimeLoaders
        .filter((l) => l.name === "python" || l.name === "python3")
        .map(createLazyCommand);
}
/**
 * Gets all javascript command names
 */
export function getJavaScriptCommandNames() {
    return runtimeLoaders
        .filter((l) => l.name === "js-exec" || l.name === "node")
        .map((def) => def.name);
}
/**
 * Creates javascript commands
 */
export function createJavaScriptCommands() {
    return runtimeLoaders
        .filter((l) => l.name === "js-exec" || l.name === "node")
        .map(createLazyCommand);
}
export { clearCommandCache, getLoadedCommandCount };
