Skip to content
This repository was archived by the owner on Jun 16, 2026. It is now read-only.

Commit fada1d7

Browse files
mcp-tool-shopclaude
andcommitted
release: v1.4.3 — refresh translations for publish
Pre-publish translation refresh via TranslateGemma 12B (concurrency=1, cold cache). All 7 languages succeeded on first pass: - ja: ~88s (cold load) - zh: cache-hit - es, fr, hi, it, pt-BR: 46-87s each Nav bar verified — all 7 entries present. README.md content byte-identical (only line-ending normalization). Translations now reflect: - v1.4.0 agent runtime contract (planLoad/recordLoad/manualLookup) - v1.4.1 hyphen-splitting tokenizer fix - v1.4.2 README overhaul documenting full API surface - v1.4.3 validate CLI command + loadIndex structured error Ships v1.4.3 to npm with the PR #8 CI fix and brace-expansion audit bump already committed (bec6cd1). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent bec6cd1 commit fada1d7

7 files changed

Lines changed: 916 additions & 379 deletions

File tree

README.es.md

Lines changed: 127 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -16,19 +16,20 @@
1616

1717
Enrutador de conocimiento contextual para agentes de IA.
1818

19-
`ai-loadout` es el formato de la tabla de distribución y el motor de coincidencia que permite a los agentes de IA cargar el conocimiento adecuado para la tarea en cuestión. En lugar de incluir todo en el contexto, se mantiene un índice pequeño y se cargan los datos según sea necesario.
19+
`ai-loadout` es el núcleo de la pila Knowledge OS: formato de tabla de despacho, motor de coincidencia, resolutor jerárquico y contrato de tiempo de ejecución del agente. En lugar de incluir todo en el contexto, se mantiene un índice pequeño y se cargan los datos según sea necesario.
2020

2121
Piénselo como la configuración de un juego: se equipa al agente con exactamente el conocimiento que necesita antes de cada misión.
2222

2323
## Instalación
2424

2525
```bash
26-
npm install @mcptoolshop/ai-loadout
26+
npm install -g @mcptoolshop/ai-loadout # CLI
27+
npm install @mcptoolshop/ai-loadout # library
2728
```
2829

29-
## Conceptos básicos
30+
## Conceptos clave
3031

31-
### La tabla de distribución
32+
### La tabla de despacho
3233

3334
Un `LoadoutIndex` es un índice estructurado de datos de conocimiento:
3435

@@ -64,11 +65,11 @@ Un `LoadoutIndex` es un índice estructurado de datos de conocimiento:
6465
|------|----------|---------|
6566
| `core` | Cargado siempre | "nunca omitir pruebas para que la integración continua sea exitosa" |
6667
| `domain` | Cargado cuando las palabras clave de la tarea coinciden | Reglas de integración continua al editar flujos de trabajo |
67-
| `manual` | Nunca se carga automáticamente, solo búsqueda explícita | Aspectos técnicos de la plataforma que pueden ser difíciles de entender |
68+
| `manual` | Nunca cargado automáticamente, solo búsqueda explícita | Aspectos técnicos oscuros de la plataforma |
6869

69-
### Metadatos del archivo de datos
70+
### Metadatos del dato
7071

71-
Cada archivo de datos contiene sus propios metadatos de enrutamiento:
72+
Cada archivo de dato contiene sus propios metadatos de enrutamiento:
7273

7374
```markdown
7475
---
@@ -88,76 +89,133 @@ CI minutes are finite...
8889

8990
El metadato es la fuente de la verdad. El índice se deriva de él.
9091

91-
## API
92+
## Tiempo de ejecución del agente (API principal)
93+
94+
El tiempo de ejecución es la forma canónica en que los agentes consumen una configuración. Envuelve toda la secuencia: resolver capas → coincidir con la tarea → decidir qué cargar → registrar el uso.
95+
96+
### `planLoad(tarea, opciones?)`
97+
98+
Planifica qué cargar para una tarea determinada. Esta es la función principal que utiliza el agente.
99+
100+
```typescript
101+
import { planLoad } from "@mcptoolshop/ai-loadout";
102+
103+
const plan = planLoad("fix the CI workflow");
104+
// plan.preload — core entries, load immediately
105+
// plan.onDemand — domain matches, load when needed
106+
// plan.manual — available via explicit lookup only
107+
```
108+
109+
Devuelve un `LoadPlan` con:
110+
- `preload` / `onDemand` / `manual` — entradas separadas por modo de carga
111+
- `provenance` — de qué capa proviene cada entrada
112+
- `budget` — presupuesto de tokens para el índice resuelto
113+
- `preloadTokens` / `onDemandTokens` — costos totales de tokens
114+
- `layerNames` / `conflicts` — metadatos de la capa
115+
116+
### `recordLoad(idEntrada, disparador, modo, tokensEstimados, opciones?)`
117+
118+
Registra que un agente cargó una entrada. Permite la observabilidad (entradas no utilizadas, desviación del presupuesto, seguimiento de la frecuencia). Opcional: solo escribe cuando `usagePath` está configurado en las opciones.
119+
120+
### `manualLookup(id, opciones?)`
121+
122+
Carga explícitamente una entrada manual por ID del índice resuelto.
123+
124+
## Resolutor
125+
126+
Descubre y combina índices de configuración de una pila de capas canónica:
127+
128+
1. **global**`~/.ai-loadout/index.json`
129+
2. **org** — ruta explícita o `$AI_LOADOUT_ORG`
130+
3. **project**`<cwd>/.claude/loadout/index.json`
131+
4. **session** — ruta explícita o `$AI_LOADOUT_SESSION`
132+
133+
Las capas posteriores tienen prioridad. Las capas faltantes son normales.
134+
135+
```typescript
136+
import { resolveLoadout, explainEntry } from "@mcptoolshop/ai-loadout";
137+
138+
const { merged, layers, searched } = resolveLoadout();
139+
// merged.entries — deduplicated entries from all layers
140+
// merged.provenance — entryId → source layer name
141+
142+
const why = explainEntry("github-actions", layers);
143+
// why.finalLayer, why.overrideChain, why.definitions
144+
```
145+
146+
## Coincidencia
92147

93148
### `matchLoadout(tarea, índice)`
94149

95-
Compara una descripción de la tarea con un índice de configuración. Devuelve las entradas que deben cargarse, clasificadas por la fuerza de la coincidencia.
150+
Coincide una descripción de la tarea con un índice de configuración. Devuelve entradas clasificadas por la fuerza de la coincidencia.
96151

97152
```typescript
98153
import { matchLoadout } from "@mcptoolshop/ai-loadout";
99154

100155
const results = matchLoadout("fix the CI workflow", index);
101-
// [{ entry: { id: "github-actions", ... }, score: 0.67, matchedKeywords: ["ci", "workflow"] }]
156+
// [{ entry, score: 0.67, matchedKeywords: ["ci", "workflow"], reason, mode }]
102157
```
103158

104159
- Las entradas principales siempre se incluyen (puntuación 1.0)
105160
- Las entradas manuales nunca se incluyen automáticamente
106-
- Las entradas de dominio se puntúan según la superposición de palabras clave + bonificación de patrones
107-
- Los resultados se ordenan por puntuación descendente
161+
- Las entradas de dominio se puntúan por la superposición de palabras clave + bono de patrón
162+
- Los resultados se ordenan por puntuación descendente, luego por costo de token ascendente
108163

109164
### `lookupEntry(id, índice)`
110165

111166
Busca una entrada específica por ID. Para entradas manuales o acceso explícito.
112167

113-
```typescript
114-
import { lookupEntry } from "@mcptoolshop/ai-loadout";
168+
## Observabilidad
115169

116-
const entry = lookupEntry("github-actions", index);
117-
```
170+
### `recordUsage()` / `readUsage()` / `summarizeUsage()`
118171

119-
### `parseFrontmatter(contenido)`
172+
Registro de uso JSONL de solo anexión. Nunca se conecta a la red, nunca es intrusivo.
120173

121-
Analiza el metadato en formato YAML de un archivo de datos.
174+
### `findDeadEntries(índice, eventos)`
122175

123-
```typescript
124-
import { parseFrontmatter } from "@mcptoolshop/ai-loadout";
176+
Encuentra entradas que nunca se han cargado.
125177

126-
const { frontmatter, body } = parseFrontmatter(fileContent);
127-
if (frontmatter) {
128-
console.log(frontmatter.id, frontmatter.keywords);
129-
}
130-
```
178+
### `findKeywordOverlaps(índice)`
131179

132-
### `serializeFrontmatter(fm)`
180+
Encuentra palabras clave compartidas entre entradas (ambigüedades de enrutamiento).
133181

134-
Serializa un objeto `Frontmatter` de nuevo a una cadena.
182+
### `analyzeBudget(índice, uso?)`
135183

136-
### `validateIndex(índice)`
184+
Desglose del presupuesto de tokens con comparación entre lo observado y lo estimado.
137185

138-
Valida la integridad estructural de un `LoadoutIndex`. Devuelve un array de problemas.
186+
## Combinar
139187

140-
```typescript
141-
import { validateIndex } from "@mcptoolshop/ai-loadout";
188+
### `mergeIndexes(capas)`
142189

143-
const issues = validateIndex(index);
144-
const errors = issues.filter(i => i.severity === "error");
145-
if (errors.length > 0) {
146-
console.error("Index has errors:", errors);
147-
}
148-
```
190+
Fusión determinista para configuraciones jerárquicas. Devuelve un `MergedIndex` con seguimiento de origen y reporte de conflictos.
149191

150-
Comprobaciones: campos obligatorios, IDs únicos, formato kebab-case, límites del resumen, presencia de palabras clave para entradas de dominio, prioridades válidas, presupuestos no negativos.
192+
## Utilidades
151193

152-
### `estimateTokens(texto)`
194+
### `parseFrontmatter(content)` / `serializeFrontmatter(fm)`
153195

154-
Estima el número de tokens a partir de un texto. Utiliza la heurística de chars/4.
196+
Analiza y serializa la información de encabezado en formato YAML de los archivos de carga.
155197

156-
```typescript
157-
import { estimateTokens } from "@mcptoolshop/ai-loadout";
198+
### `validateIndex(index)`
199+
200+
Valida la integridad estructural de un `LoadoutIndex`. Verifica: campos obligatorios, IDs únicos, formato kebab-case, límites del resumen, presencia de palabras clave para las entradas de dominio, prioridades válidas, presupuestos no negativos.
201+
202+
### `estimateTokens(text)`
203+
204+
Estima el número de tokens a partir del texto. Utiliza la heurística de caracteres/4.
205+
206+
## Interfaz de línea de comandos (CLI)
158207

159-
const tokens = estimateTokens(fileContent); // ~250
160208
```
209+
ai-loadout resolve Resolve layered loadouts
210+
ai-loadout explain <entry-id> Explain why an entry resolved to its current state
211+
ai-loadout validate <index> Validate index structure
212+
ai-loadout usage <jsonl> Usage summary from event log
213+
ai-loadout dead <index> <jsonl> Find entries never loaded
214+
ai-loadout overlaps <index> Find keyword routing ambiguities
215+
ai-loadout budget <index> [jsonl] Token budget breakdown
216+
```
217+
218+
Todos los comandos admiten `--json` para la automatización. Los comandos de resolución aceptan `--project`, `--global`, `--org`, `--session`.
161219

162220
## Tipos
163221

@@ -168,31 +226,49 @@ import type {
168226
Frontmatter,
169227
MatchResult,
170228
ValidationIssue,
171-
Priority, // "core" | "domain" | "manual"
172-
Triggers, // { task, plan, edit }
229+
Priority, // "core" | "domain" | "manual"
230+
Triggers, // { task, plan, edit }
231+
LoadMode, // "eager" | "lazy" | "manual"
173232
Budget,
233+
UsageEvent,
234+
MergeConflict,
235+
MergedIndex,
236+
LoadPlan, // returned by planLoad()
237+
ResolvedLoadout, // returned by resolveLoadout()
238+
EntryExplanation, // returned by explainEntry()
239+
IssueSeverity, // "error" | "warning"
240+
RuntimeOptions, // options for planLoad / recordLoad / manualLookup
241+
ResolveOptions, // options for resolveLoadout / discoverLayers
242+
UsageSummary, // returned by summarizeUsage()
243+
DeadEntry, // returned by findDeadEntries()
244+
KeywordOverlap, // returned by findKeywordOverlaps()
245+
BudgetBreakdown, // returned by analyzeBudget()
246+
DiscoveredLayer, // a layer found and loaded by the resolver
247+
SearchedLayer, // a layer search location and its result
248+
EntryDefinition, // one layer's version of a specific entry
174249
} from "@mcptoolshop/ai-loadout";
175250
```
176251

177252
## Consumidores
178253

179254
- **[@mcptoolshop/claude-rules](https://github.com/mcp-tool-shop-org/claude-rules)** — Optimizador de CLAUDE.md para Claude Code. Utiliza ai-loadout para la tabla de distribución y la coincidencia.
255+
- **[@mcptoolshop/claude-memories](https://github.com/mcp-tool-shop-org/claude-memories)** — Optimizador de MEMORY.md para Claude Code. Genera tablas de distribución a partir de archivos de temas de memoria.
180256

181257
## Seguridad
182258

183-
Este paquete es una biblioteca de datos pura. No accede al sistema de archivos, realiza solicitudes de red ni recopila datos de telemetría. Toda la entrada/salida es responsabilidad del consumidor.
259+
Los módulos principales de coincidencia, fusión y validación son funciones puras sin efectos secundarios. El módulo de uso (`recordUsage` / `readUsage`) realiza operaciones de entrada/salida en el sistema de archivos local para un registro JSONL de solo escritura. El resolvedor lee los archivos de índice de rutas de capa canónicas. No hay solicitudes de red, ni telemetría, ni dependencias nativas.
184260

185-
### Modelo de amenazas
261+
### Modelo de Amenazas
186262

187263
| Amenaza | Mitigación |
188264
|--------|------------|
189-
| Metadato de entrada con formato incorrecto | `parseFrontmatter()` devuelve `null` en caso de entrada no válida; no se generan excepciones ni se utiliza `eval` |
190-
| Contaminación de prototipos | El analizador personalizado utiliza literales de objetos simples, no `JSON.parse` de estructuras anidadas no confiables. |
265+
| Información de encabezado incorrecta | `parseFrontmatter()` devuelve `null` en caso de entrada inválida; no se generan excepciones ni se utiliza `eval`. |
266+
| Contaminación de prototipos | El analizador personalizado utiliza literales de objetos simples; no se realiza una fusión recursiva de entradas no confiables. |
191267
| Índice con datos incorrectos | `validateIndex()` detecta problemas estructurales antes de que se propaguen. |
192-
| Ataque de denegación de servicio con expresiones regulares | No se utilizan expresiones regulares proporcionadas por el usuario; los patrones se comparan como búsquedas de cadenas simples. |
268+
| Ataque de denegación de servicio (DoS) con expresiones regulares | No se utilizan expresiones regulares proporcionadas por el usuario; los patrones se comparan como búsquedas de cadenas simples. |
193269

194270
Consulte [SECURITY.md](SECURITY.md) para obtener la política de seguridad completa.
195271

196272
---
197273

198-
Creado por [MCP Tool Shop](https://mcp-tool-shop.github.io/)
274+
Desarrollado por [MCP Tool Shop](https://mcp-tool-shop.github.io/)

0 commit comments

Comments
 (0)