/**
 * Reload Runtime Extension
 *
 * Demonstrates ctx.reload() from ExtensionCommandContext and an LLM-callable
 * tool that queues a follow-up command to trigger reload.
 */

import { Type } from '@sinclair/typebox';
import type { ExtensionAPI } from 'shortcutxl/app';

export default function (shortcut: ExtensionAPI) {
  // Command entrypoint for reload.
  // Treat reload as terminal for this handler.
  shortcut.registerCommand('reload-runtime', {
    description: 'Reload extensions, skills, prompts, and themes',
    handler: async (_args, ctx) => {
      await ctx.reload();
      return;
    }
  });

  // LLM-callable tool. Tools get ExtensionContext, so they cannot call ctx.reload() directly.
  // Instead, queue a follow-up user command that executes the command above.
  shortcut.registerTool({
    name: 'reload_runtime',
    label: 'Reload Runtime',
    description: 'Reload extensions, skills, prompts, and themes',
    parameters: Type.Object({}),
    async execute() {
      shortcut.sendUserMessage('/reload-runtime', { deliverAs: 'followUp' });
      return {
        content: [{ type: 'text', text: 'Queued /reload-runtime as a follow-up command.' }],
        details: {}
      };
    }
  });
}
