// Copyright (C) 2026 Rob Colbert <rob.colbert@openplatform.us>
// Licensed under the Apache License, Version 2.0

import type {
  IAiLogger,
  IAiTool,
  IToolArguments,
  IToolDefinition,
} from "@gadget/ai";
import type { AiToolbox } from "./toolbox.ts";

export abstract class DroneTool implements IAiTool {
  protected _toolbox: AiToolbox;

  constructor(toolbox: AiToolbox) {
    this._toolbox = toolbox;
  }

  get toolbox(): AiToolbox {
    return this._toolbox;
  }

  abstract get name(): string;
  abstract get category(): string;
  abstract get definition(): IToolDefinition;

  abstract execute(args: IToolArguments, logger: IAiLogger): Promise<string>;
}
