addPrompt method

  1. @override
void addPrompt({
  1. required String name,
  2. required String description,
  3. required List<KernelPromptArgument> arguments,
  4. required KernelPromptHandler handler,
})
override

Register an MCP prompt. The handler returns a KernelGetPromptResult (description + list of messages); the host translates to the wire shape (mcp.GetPromptResult for the reference impl, host-specific for custom transports).

Mirrors the addTool / addResource surface so builtin / bundle-app callers stay on the kernel envelope and never need package:mcp_server directly — the "OS api vs app" boundary vibe_studio/builtin_api.dart enforces.

Implementation

@override
void addPrompt({
  required String name,
  required String description,
  required List<KernelPromptArgument> arguments,
  required KernelPromptHandler handler,
}) {
  _promptDefs[name] = KernelPromptDef(
    name: name,
    description: description,
    arguments: List<KernelPromptArgument>.unmodifiable(arguments),
  );
  server.addPrompt(
    name: name,
    description: description,
    arguments: <mcp.PromptArgument>[
      for (final a in arguments)
        mcp.PromptArgument(
          name: a.name,
          description: a.description ?? '',
          required: a.required,
        ),
    ],
    handler: (Map<String, dynamic> args) async {
      final result = await handler(args);
      return _toMcpGetPromptResult(result);
    },
  );
}