This commit is contained in:
Jordan Diaz
2026-04-25 10:27:51 +00:00
parent e84a36c83d
commit 6881d64a08
42 changed files with 3207 additions and 3413 deletions

View File

@@ -0,0 +1,68 @@
import { z } from "zod";
import { handleToolError, validateRequired } from "../helpers/errorHandler.js";
import { readDoc } from "./_docsReader.js";
export function registerReadDocTool(server) {
server.tool(
"read_doc",
`Lee un documento del knowledge base de Acai bajo demanda.
Cuándo usarlo:
- El doc no se cargó completo en el contexto (aparece en "Other Available Docs" del knowledge_base).
- Necesitas una sección concreta con detalle sin cargar todo el doc.
- Vas a hacer una operación delicada y quieres releer las reglas exactas (e.g. crear una tabla, escribir un hook, editar el header).
Parámetros:
- name: id del doc (sin extensión). Ejemplos: '01-builder-fields', '05-tables-and-fields', '09-mcp-tools-reference'. Usa 'list_docs' si dudas del id.
- section: opcional. Match case-insensitive y parcial sobre headings H2 ('## ...'). Devuelve desde el heading hasta el siguiente H2.
Si la sección no existe, la respuesta incluye 'available_sections' para que reintentes con un nombre válido.
Docs disponibles (resumen):
- 01-builder-fields — Campos editables (data-field-type), atributos Acai (c-if, c-for, c-class), c-form, componentes built-in.
- 02-twig — Filtros Twig (get, queryDB, hook, module, imagec, translate, raw).
- 03-modules-and-sections — Módulos vs secciones generales, thisrecord, multiv2, custom-{tableName}.
- 04-pages-and-records — Builder vs Standard, menuType, apartados, reglas sobre enlace/controlador.
- 05-tables-and-fields — Schema, create_table, create_field, tipos de campo, casos destructivos.
- 06-hooks-and-cmsapi — Hooks PHP, CmsApi/CocoDB, hook middleware.
- 07-css-js-conventions — Tailwind+BEM, scoping, Vue 3, componentes nativos.
- 08-layout-and-libraries — get/set_layout_field, librerías globales, regla de no editar layout.json.
- 09-mcp-tools-reference — Inventario completo + workflows canónicos.
- 10-production-patterns — Patrones reales (cabecera, zigzag, FAQ, formulario, detalle).
- 11-quick-reference — Cheat sheet con todas las reglas y formatos.`,
{
name: z.string().describe("ID del doc sin extensión (e.g. '05-tables-and-fields')"),
section: z.string().optional().describe("Heading H2 a extraer (case-insensitive, parcial). Omitir para leer el doc completo."),
},
{ readOnlyHint: true, destructiveHint: false },
async ({ name, section }) => {
try {
const validationError = validateRequired({ name }, ["name"], "read_doc");
if (validationError) return validationError;
const data = await readDoc(name, section);
return {
content: [{
type: "text",
text: JSON.stringify(data, null, 2),
}],
};
} catch (error) {
if (error?.code === "DOC_NOT_FOUND") {
return {
content: [{
type: "text",
text: JSON.stringify({
success: false,
error: error.message,
hint: "Usa 'list_docs' para ver los ids disponibles. Los ids tienen prefijo numérico (e.g. '05-tables-and-fields').",
}, null, 2),
}],
isError: true,
};
}
return handleToolError(error, "read_doc", { name, section });
}
}
);
}