@mcptoolshop/ai-loadout 1.0.1 → 1.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +14 -0
- package/README.es.md +198 -0
- package/README.fr.md +198 -0
- package/README.hi.md +198 -0
- package/README.it.md +198 -0
- package/README.ja.md +198 -0
- package/README.md +7 -1
- package/README.pt-BR.md +198 -0
- package/README.zh.md +198 -0
- package/package.json +3 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,19 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 1.0.3 — 2026-03-06
|
|
4
|
+
|
|
5
|
+
- Brand logo URL (mcp-tool-shop-org/brand)
|
|
6
|
+
- Code coverage via c8 + Codecov badge
|
|
7
|
+
- Translations re-done via polyglot-mcp (TranslateGemma 12B)
|
|
8
|
+
- SHIP_GATE.md and SCORECARD.md (shipcheck audit: 100% pass)
|
|
9
|
+
- dependabot.yml (monthly, grouped)
|
|
10
|
+
- .gitignore: site/.astro/, site/dist/, .polyglot-cache.json
|
|
11
|
+
|
|
12
|
+
## 1.0.2 — 2026-03-06
|
|
13
|
+
|
|
14
|
+
- Shipcheck gates added (SHIP_GATE.md, SCORECARD.md)
|
|
15
|
+
- dependabot.yml
|
|
16
|
+
|
|
3
17
|
## 1.0.1 — 2026-03-06
|
|
4
18
|
|
|
5
19
|
- Add `hint` field to `ValidationIssue` (Tier 1 error shape compliance)
|
package/README.es.md
ADDED
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
<p align="center">
|
|
2
|
+
<a href="README.ja.md">日本語</a> | <a href="README.zh.md">中文</a> | <a href="README.md">English</a> | <a href="README.fr.md">Français</a> | <a href="README.hi.md">हिन्दी</a> | <a href="README.it.md">Italiano</a> | <a href="README.pt-BR.md">Português (BR)</a>
|
|
3
|
+
</p>
|
|
4
|
+
|
|
5
|
+
<p align="center">
|
|
6
|
+
<img src="https://raw.githubusercontent.com/mcp-tool-shop-org/brand/main/logos/ai-loadout/readme.png" width="400" alt="ai-loadout">
|
|
7
|
+
</p>
|
|
8
|
+
|
|
9
|
+
<p align="center">
|
|
10
|
+
<a href="https://github.com/mcp-tool-shop-org/ai-loadout/actions/workflows/ci.yml"><img src="https://github.com/mcp-tool-shop-org/ai-loadout/actions/workflows/ci.yml/badge.svg" alt="CI"></a>
|
|
11
|
+
<a href="https://codecov.io/gh/mcp-tool-shop-org/ai-loadout"><img src="https://codecov.io/gh/mcp-tool-shop-org/ai-loadout/graph/badge.svg" alt="Coverage"></a>
|
|
12
|
+
<a href="https://www.npmjs.com/package/@mcptoolshop/ai-loadout"><img src="https://img.shields.io/npm/v/@mcptoolshop/ai-loadout" alt="npm"></a>
|
|
13
|
+
<a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-blue" alt="MIT License"></a>
|
|
14
|
+
<a href="https://mcp-tool-shop-org.github.io/ai-loadout/"><img src="https://img.shields.io/badge/Landing_Page-live-blue" alt="Landing Page"></a>
|
|
15
|
+
</p>
|
|
16
|
+
|
|
17
|
+
Enrutador de conocimiento contextual para agentes de IA.
|
|
18
|
+
|
|
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.
|
|
20
|
+
|
|
21
|
+
Piénselo como la configuración de un juego: se equipa al agente con exactamente el conocimiento que necesita antes de cada misión.
|
|
22
|
+
|
|
23
|
+
## Instalación
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
npm install @mcptoolshop/ai-loadout
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## Conceptos básicos
|
|
30
|
+
|
|
31
|
+
### La tabla de distribución
|
|
32
|
+
|
|
33
|
+
Un `LoadoutIndex` es un índice estructurado de datos de conocimiento:
|
|
34
|
+
|
|
35
|
+
```json
|
|
36
|
+
{
|
|
37
|
+
"version": "1.0.0",
|
|
38
|
+
"generated": "2026-03-06T12:00:00Z",
|
|
39
|
+
"entries": [
|
|
40
|
+
{
|
|
41
|
+
"id": "github-actions",
|
|
42
|
+
"path": ".rules/github-actions.md",
|
|
43
|
+
"keywords": ["ci", "workflow", "runner"],
|
|
44
|
+
"patterns": ["ci_pipeline"],
|
|
45
|
+
"priority": "domain",
|
|
46
|
+
"summary": "CI triggers, path gating, runner cost control",
|
|
47
|
+
"triggers": { "task": true, "plan": true, "edit": false },
|
|
48
|
+
"tokens_est": 680,
|
|
49
|
+
"lines": 56
|
|
50
|
+
}
|
|
51
|
+
],
|
|
52
|
+
"budget": {
|
|
53
|
+
"always_loaded_est": 320,
|
|
54
|
+
"on_demand_total_est": 8100,
|
|
55
|
+
"avg_task_load_est": 520,
|
|
56
|
+
"avg_task_load_observed": null
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
### Niveles de prioridad
|
|
62
|
+
|
|
63
|
+
| Nivel | Comportamiento | Ejemplo |
|
|
64
|
+
|------|----------|---------|
|
|
65
|
+
| `core` | Cargado siempre | "nunca omitir pruebas para que la integración continua sea exitosa" |
|
|
66
|
+
| `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
|
+
|
|
69
|
+
### Metadatos del archivo de datos
|
|
70
|
+
|
|
71
|
+
Cada archivo de datos contiene sus propios metadatos de enrutamiento:
|
|
72
|
+
|
|
73
|
+
```markdown
|
|
74
|
+
---
|
|
75
|
+
id: github-actions
|
|
76
|
+
keywords: [ci, workflow, runner, dependabot]
|
|
77
|
+
patterns: [ci_pipeline]
|
|
78
|
+
priority: domain
|
|
79
|
+
triggers:
|
|
80
|
+
task: true
|
|
81
|
+
plan: true
|
|
82
|
+
edit: false
|
|
83
|
+
---
|
|
84
|
+
|
|
85
|
+
# GitHub Actions Rules
|
|
86
|
+
CI minutes are finite...
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
El metadato es la fuente de la verdad. El índice se deriva de él.
|
|
90
|
+
|
|
91
|
+
## API
|
|
92
|
+
|
|
93
|
+
### `matchLoadout(tarea, índice)`
|
|
94
|
+
|
|
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.
|
|
96
|
+
|
|
97
|
+
```typescript
|
|
98
|
+
import { matchLoadout } from "@mcptoolshop/ai-loadout";
|
|
99
|
+
|
|
100
|
+
const results = matchLoadout("fix the CI workflow", index);
|
|
101
|
+
// [{ entry: { id: "github-actions", ... }, score: 0.67, matchedKeywords: ["ci", "workflow"] }]
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
- Las entradas principales siempre se incluyen (puntuación 1.0)
|
|
105
|
+
- 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
|
|
108
|
+
|
|
109
|
+
### `lookupEntry(id, índice)`
|
|
110
|
+
|
|
111
|
+
Busca una entrada específica por ID. Para entradas manuales o acceso explícito.
|
|
112
|
+
|
|
113
|
+
```typescript
|
|
114
|
+
import { lookupEntry } from "@mcptoolshop/ai-loadout";
|
|
115
|
+
|
|
116
|
+
const entry = lookupEntry("github-actions", index);
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
### `parseFrontmatter(contenido)`
|
|
120
|
+
|
|
121
|
+
Analiza el metadato en formato YAML de un archivo de datos.
|
|
122
|
+
|
|
123
|
+
```typescript
|
|
124
|
+
import { parseFrontmatter } from "@mcptoolshop/ai-loadout";
|
|
125
|
+
|
|
126
|
+
const { frontmatter, body } = parseFrontmatter(fileContent);
|
|
127
|
+
if (frontmatter) {
|
|
128
|
+
console.log(frontmatter.id, frontmatter.keywords);
|
|
129
|
+
}
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
### `serializeFrontmatter(fm)`
|
|
133
|
+
|
|
134
|
+
Serializa un objeto `Frontmatter` de nuevo a una cadena.
|
|
135
|
+
|
|
136
|
+
### `validateIndex(índice)`
|
|
137
|
+
|
|
138
|
+
Valida la integridad estructural de un `LoadoutIndex`. Devuelve un array de problemas.
|
|
139
|
+
|
|
140
|
+
```typescript
|
|
141
|
+
import { validateIndex } from "@mcptoolshop/ai-loadout";
|
|
142
|
+
|
|
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
|
+
```
|
|
149
|
+
|
|
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.
|
|
151
|
+
|
|
152
|
+
### `estimateTokens(texto)`
|
|
153
|
+
|
|
154
|
+
Estima el número de tokens a partir de un texto. Utiliza la heurística de chars/4.
|
|
155
|
+
|
|
156
|
+
```typescript
|
|
157
|
+
import { estimateTokens } from "@mcptoolshop/ai-loadout";
|
|
158
|
+
|
|
159
|
+
const tokens = estimateTokens(fileContent); // ~250
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
## Tipos
|
|
163
|
+
|
|
164
|
+
```typescript
|
|
165
|
+
import type {
|
|
166
|
+
LoadoutEntry,
|
|
167
|
+
LoadoutIndex,
|
|
168
|
+
Frontmatter,
|
|
169
|
+
MatchResult,
|
|
170
|
+
ValidationIssue,
|
|
171
|
+
Priority, // "core" | "domain" | "manual"
|
|
172
|
+
Triggers, // { task, plan, edit }
|
|
173
|
+
Budget,
|
|
174
|
+
} from "@mcptoolshop/ai-loadout";
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
## Consumidores
|
|
178
|
+
|
|
179
|
+
- **[@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.
|
|
180
|
+
|
|
181
|
+
## Seguridad
|
|
182
|
+
|
|
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.
|
|
184
|
+
|
|
185
|
+
### Modelo de amenazas
|
|
186
|
+
|
|
187
|
+
| Amenaza | Mitigación |
|
|
188
|
+
|--------|------------|
|
|
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. |
|
|
191
|
+
| Í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. |
|
|
193
|
+
|
|
194
|
+
Consulte [SECURITY.md](SECURITY.md) para obtener la política de seguridad completa.
|
|
195
|
+
|
|
196
|
+
---
|
|
197
|
+
|
|
198
|
+
Creado por [MCP Tool Shop](https://mcp-tool-shop.github.io/)
|
package/README.fr.md
ADDED
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
<p align="center">
|
|
2
|
+
<a href="README.ja.md">日本語</a> | <a href="README.zh.md">中文</a> | <a href="README.es.md">Español</a> | <a href="README.md">English</a> | <a href="README.hi.md">हिन्दी</a> | <a href="README.it.md">Italiano</a> | <a href="README.pt-BR.md">Português (BR)</a>
|
|
3
|
+
</p>
|
|
4
|
+
|
|
5
|
+
<p align="center">
|
|
6
|
+
<img src="https://raw.githubusercontent.com/mcp-tool-shop-org/brand/main/logos/ai-loadout/readme.png" width="400" alt="ai-loadout">
|
|
7
|
+
</p>
|
|
8
|
+
|
|
9
|
+
<p align="center">
|
|
10
|
+
<a href="https://github.com/mcp-tool-shop-org/ai-loadout/actions/workflows/ci.yml"><img src="https://github.com/mcp-tool-shop-org/ai-loadout/actions/workflows/ci.yml/badge.svg" alt="CI"></a>
|
|
11
|
+
<a href="https://codecov.io/gh/mcp-tool-shop-org/ai-loadout"><img src="https://codecov.io/gh/mcp-tool-shop-org/ai-loadout/graph/badge.svg" alt="Coverage"></a>
|
|
12
|
+
<a href="https://www.npmjs.com/package/@mcptoolshop/ai-loadout"><img src="https://img.shields.io/npm/v/@mcptoolshop/ai-loadout" alt="npm"></a>
|
|
13
|
+
<a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-blue" alt="MIT License"></a>
|
|
14
|
+
<a href="https://mcp-tool-shop-org.github.io/ai-loadout/"><img src="https://img.shields.io/badge/Landing_Page-live-blue" alt="Landing Page"></a>
|
|
15
|
+
</p>
|
|
16
|
+
|
|
17
|
+
Routeur de connaissances contextuel pour les agents d'IA.
|
|
18
|
+
|
|
19
|
+
`ai-loadout` est le format de table de répartition et le moteur de correspondance qui permet aux agents d'IA de charger les connaissances appropriées pour la tâche en cours. Au lieu de tout inclure dans le contexte, vous conservez un index minimal et chargez les données à la demande.
|
|
20
|
+
|
|
21
|
+
Considérez cela comme une configuration de jeu : vous équipez l'agent des connaissances dont il a strictement besoin avant chaque mission.
|
|
22
|
+
|
|
23
|
+
## Installation
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
npm install @mcptoolshop/ai-loadout
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## Concepts clés
|
|
30
|
+
|
|
31
|
+
### La table de répartition
|
|
32
|
+
|
|
33
|
+
Un `LoadoutIndex` est un index structuré des données de connaissances :
|
|
34
|
+
|
|
35
|
+
```json
|
|
36
|
+
{
|
|
37
|
+
"version": "1.0.0",
|
|
38
|
+
"generated": "2026-03-06T12:00:00Z",
|
|
39
|
+
"entries": [
|
|
40
|
+
{
|
|
41
|
+
"id": "github-actions",
|
|
42
|
+
"path": ".rules/github-actions.md",
|
|
43
|
+
"keywords": ["ci", "workflow", "runner"],
|
|
44
|
+
"patterns": ["ci_pipeline"],
|
|
45
|
+
"priority": "domain",
|
|
46
|
+
"summary": "CI triggers, path gating, runner cost control",
|
|
47
|
+
"triggers": { "task": true, "plan": true, "edit": false },
|
|
48
|
+
"tokens_est": 680,
|
|
49
|
+
"lines": 56
|
|
50
|
+
}
|
|
51
|
+
],
|
|
52
|
+
"budget": {
|
|
53
|
+
"always_loaded_est": 320,
|
|
54
|
+
"on_demand_total_est": 8100,
|
|
55
|
+
"avg_task_load_est": 520,
|
|
56
|
+
"avg_task_load_observed": null
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
### Niveaux de priorité
|
|
62
|
+
|
|
63
|
+
| Niveau | Comportement | Exemple |
|
|
64
|
+
|------|----------|---------|
|
|
65
|
+
| `core` | Toujours chargé | "Ne jamais ignorer les tests pour que l'intégration continue soit réussie" |
|
|
66
|
+
| `domain` | Chargé lorsque les mots-clés de la tâche correspondent | Règles d'intégration continue lors de la modification des flux de travail |
|
|
67
|
+
| `manual` | Jamais chargé automatiquement, recherche explicite uniquement | Détails spécifiques à certaines plateformes |
|
|
68
|
+
|
|
69
|
+
### Métadonnées du fichier de données
|
|
70
|
+
|
|
71
|
+
Chaque fichier de données contient ses propres métadonnées de routage :
|
|
72
|
+
|
|
73
|
+
```markdown
|
|
74
|
+
---
|
|
75
|
+
id: github-actions
|
|
76
|
+
keywords: [ci, workflow, runner, dependabot]
|
|
77
|
+
patterns: [ci_pipeline]
|
|
78
|
+
priority: domain
|
|
79
|
+
triggers:
|
|
80
|
+
task: true
|
|
81
|
+
plan: true
|
|
82
|
+
edit: false
|
|
83
|
+
---
|
|
84
|
+
|
|
85
|
+
# GitHub Actions Rules
|
|
86
|
+
CI minutes are finite...
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
Les métadonnées sont la source de vérité. L'index est dérivé de celles-ci.
|
|
90
|
+
|
|
91
|
+
## API
|
|
92
|
+
|
|
93
|
+
### `matchLoadout(tâche, index)`
|
|
94
|
+
|
|
95
|
+
Fait correspondre une description de tâche à un index de configuration. Renvoie les entrées qui doivent être chargées, classées par force de correspondance.
|
|
96
|
+
|
|
97
|
+
```typescript
|
|
98
|
+
import { matchLoadout } from "@mcptoolshop/ai-loadout";
|
|
99
|
+
|
|
100
|
+
const results = matchLoadout("fix the CI workflow", index);
|
|
101
|
+
// [{ entry: { id: "github-actions", ... }, score: 0.67, matchedKeywords: ["ci", "workflow"] }]
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
- Les entrées principales sont toujours incluses (score de 1,0)
|
|
105
|
+
- Les entrées manuelles ne sont jamais incluses automatiquement
|
|
106
|
+
- Les entrées spécifiques à un domaine sont notées en fonction du chevauchement des mots-clés et d'un bonus de motif
|
|
107
|
+
- Les résultats sont triés par score décroissant
|
|
108
|
+
|
|
109
|
+
### `lookupEntry(id, index)`
|
|
110
|
+
|
|
111
|
+
Recherche une entrée spécifique par ID. Pour les entrées manuelles ou l'accès explicite.
|
|
112
|
+
|
|
113
|
+
```typescript
|
|
114
|
+
import { lookupEntry } from "@mcptoolshop/ai-loadout";
|
|
115
|
+
|
|
116
|
+
const entry = lookupEntry("github-actions", index);
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
### `parseFrontmatter(contenu)`
|
|
120
|
+
|
|
121
|
+
Analyse les métadonnées au format YAML d'un fichier de données.
|
|
122
|
+
|
|
123
|
+
```typescript
|
|
124
|
+
import { parseFrontmatter } from "@mcptoolshop/ai-loadout";
|
|
125
|
+
|
|
126
|
+
const { frontmatter, body } = parseFrontmatter(fileContent);
|
|
127
|
+
if (frontmatter) {
|
|
128
|
+
console.log(frontmatter.id, frontmatter.keywords);
|
|
129
|
+
}
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
### `serializeFrontmatter(fm)`
|
|
133
|
+
|
|
134
|
+
Série les métadonnées d'un objet `Frontmatter` en une chaîne de caractères.
|
|
135
|
+
|
|
136
|
+
### `validateIndex(index)`
|
|
137
|
+
|
|
138
|
+
Valide l'intégrité structurelle d'un `LoadoutIndex`. Renvoie un tableau de problèmes.
|
|
139
|
+
|
|
140
|
+
```typescript
|
|
141
|
+
import { validateIndex } from "@mcptoolshop/ai-loadout";
|
|
142
|
+
|
|
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
|
+
```
|
|
149
|
+
|
|
150
|
+
Vérifications : champs obligatoires, ID uniques, format kebab-case, limites du résumé, présence de mots-clés pour les entrées de domaine, priorités valides, budgets non négatifs.
|
|
151
|
+
|
|
152
|
+
### `estimateTokens(texte)`
|
|
153
|
+
|
|
154
|
+
Estime le nombre de jetons à partir d'un texte. Utilise l'heuristique chars/4.
|
|
155
|
+
|
|
156
|
+
```typescript
|
|
157
|
+
import { estimateTokens } from "@mcptoolshop/ai-loadout";
|
|
158
|
+
|
|
159
|
+
const tokens = estimateTokens(fileContent); // ~250
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
## Types
|
|
163
|
+
|
|
164
|
+
```typescript
|
|
165
|
+
import type {
|
|
166
|
+
LoadoutEntry,
|
|
167
|
+
LoadoutIndex,
|
|
168
|
+
Frontmatter,
|
|
169
|
+
MatchResult,
|
|
170
|
+
ValidationIssue,
|
|
171
|
+
Priority, // "core" | "domain" | "manual"
|
|
172
|
+
Triggers, // { task, plan, edit }
|
|
173
|
+
Budget,
|
|
174
|
+
} from "@mcptoolshop/ai-loadout";
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
## Consommateurs
|
|
178
|
+
|
|
179
|
+
- **[@mcptoolshop/claude-rules](https://github.com/mcp-tool-shop-org/claude-rules)** — Optimiseur CLAUDE.md pour Claude Code. Utilise ai-loadout pour la table de répartition et la correspondance.
|
|
180
|
+
|
|
181
|
+
## Sécurité
|
|
182
|
+
|
|
183
|
+
Ce paquet est une bibliothèque de données pure. Il n'accède pas au système de fichiers, ne fait pas de requêtes réseau ni ne collecte de données télémétriques. Toutes les opérations d'entrée/sortie sont de la responsabilité du consommateur.
|
|
184
|
+
|
|
185
|
+
### Modèle de menace
|
|
186
|
+
|
|
187
|
+
| Menace | Atténuation |
|
|
188
|
+
|--------|------------|
|
|
189
|
+
| Métadonnées corrompues | `parseFrontmatter()` renvoie `null` en cas d'entrée invalide, sans exceptions ni évaluation de code. |
|
|
190
|
+
| Pollution de prototype | L'analyseur personnalisé utilise des littéraux d'objets simples, sans `JSON.parse` de structures imbriquées non fiables. |
|
|
191
|
+
| Index avec des données incorrectes | `validateIndex()` détecte les problèmes structurels avant qu'ils ne se propagent. |
|
|
192
|
+
| Attaque par regex DoS | Aucune expression régulière fournie par l'utilisateur, les motifs sont correspondés comme des recherches de chaînes simples. |
|
|
193
|
+
|
|
194
|
+
Consultez [SECURITY.md](SECURITY.md) pour la politique de sécurité complète.
|
|
195
|
+
|
|
196
|
+
---
|
|
197
|
+
|
|
198
|
+
Développé par [MCP Tool Shop](https://mcp-tool-shop.github.io/)
|
package/README.hi.md
ADDED
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
<p align="center">
|
|
2
|
+
<a href="README.ja.md">日本語</a> | <a href="README.zh.md">中文</a> | <a href="README.es.md">Español</a> | <a href="README.fr.md">Français</a> | <a href="README.md">English</a> | <a href="README.it.md">Italiano</a> | <a href="README.pt-BR.md">Português (BR)</a>
|
|
3
|
+
</p>
|
|
4
|
+
|
|
5
|
+
<p align="center">
|
|
6
|
+
<img src="https://raw.githubusercontent.com/mcp-tool-shop-org/brand/main/logos/ai-loadout/readme.png" width="400" alt="ai-loadout">
|
|
7
|
+
</p>
|
|
8
|
+
|
|
9
|
+
<p align="center">
|
|
10
|
+
<a href="https://github.com/mcp-tool-shop-org/ai-loadout/actions/workflows/ci.yml"><img src="https://github.com/mcp-tool-shop-org/ai-loadout/actions/workflows/ci.yml/badge.svg" alt="CI"></a>
|
|
11
|
+
<a href="https://codecov.io/gh/mcp-tool-shop-org/ai-loadout"><img src="https://codecov.io/gh/mcp-tool-shop-org/ai-loadout/graph/badge.svg" alt="Coverage"></a>
|
|
12
|
+
<a href="https://www.npmjs.com/package/@mcptoolshop/ai-loadout"><img src="https://img.shields.io/npm/v/@mcptoolshop/ai-loadout" alt="npm"></a>
|
|
13
|
+
<a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-blue" alt="MIT License"></a>
|
|
14
|
+
<a href="https://mcp-tool-shop-org.github.io/ai-loadout/"><img src="https://img.shields.io/badge/Landing_Page-live-blue" alt="Landing Page"></a>
|
|
15
|
+
</p>
|
|
16
|
+
|
|
17
|
+
संदर्भ-जागरूक ज्ञान राउटर जो एआई एजेंटों के लिए है।
|
|
18
|
+
|
|
19
|
+
`ai-loadout` एक डिस्पैच टेबल फॉर्मेट और मिलान इंजन है जो एआई एजेंटों को उस कार्य के लिए सही ज्ञान लोड करने की अनुमति देता है। संदर्भ में सब कुछ डालने के बजाय, आप एक छोटा इंडेक्स रखते हैं और आवश्यकतानुसार डेटा लोड करते हैं।
|
|
20
|
+
|
|
21
|
+
इसे एक गेम लोडआउट की तरह सोचें - आप एजेंट को प्रत्येक मिशन से पहले आवश्यक ज्ञान से लैस करते हैं।
|
|
22
|
+
|
|
23
|
+
## इंस्टॉल करें
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
npm install @mcptoolshop/ai-loadout
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## मुख्य अवधारणाएं
|
|
30
|
+
|
|
31
|
+
### डिस्पैच टेबल
|
|
32
|
+
|
|
33
|
+
`LoadoutIndex` ज्ञान डेटा के एक संरचित इंडेक्स है:
|
|
34
|
+
|
|
35
|
+
```json
|
|
36
|
+
{
|
|
37
|
+
"version": "1.0.0",
|
|
38
|
+
"generated": "2026-03-06T12:00:00Z",
|
|
39
|
+
"entries": [
|
|
40
|
+
{
|
|
41
|
+
"id": "github-actions",
|
|
42
|
+
"path": ".rules/github-actions.md",
|
|
43
|
+
"keywords": ["ci", "workflow", "runner"],
|
|
44
|
+
"patterns": ["ci_pipeline"],
|
|
45
|
+
"priority": "domain",
|
|
46
|
+
"summary": "CI triggers, path gating, runner cost control",
|
|
47
|
+
"triggers": { "task": true, "plan": true, "edit": false },
|
|
48
|
+
"tokens_est": 680,
|
|
49
|
+
"lines": 56
|
|
50
|
+
}
|
|
51
|
+
],
|
|
52
|
+
"budget": {
|
|
53
|
+
"always_loaded_est": 320,
|
|
54
|
+
"on_demand_total_est": 8100,
|
|
55
|
+
"avg_task_load_est": 520,
|
|
56
|
+
"avg_task_load_observed": null
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
### प्राथमिकता स्तर
|
|
62
|
+
|
|
63
|
+
| स्तर | व्यवहार | उदाहरण |
|
|
64
|
+
|------|----------|---------|
|
|
65
|
+
| `core` | हमेशा लोड किया जाता है | "CI को हरा करने के लिए कभी भी परीक्षणों को छोड़ें नहीं" |
|
|
66
|
+
| `domain` | जब कार्य कीवर्ड मेल खाते हैं तो लोड किया जाता है | वर्कफ़्लो संपादित करते समय CI नियम |
|
|
67
|
+
| `manual` | कभी भी स्वचालित रूप से लोड नहीं किया जाता है, केवल स्पष्ट खोज | अस्पष्ट प्लेटफ़ॉर्म संबंधी समस्याएं |
|
|
68
|
+
|
|
69
|
+
### डेटा का प्रारंभिक भाग
|
|
70
|
+
|
|
71
|
+
प्रत्येक डेटा फ़ाइल में अपना रूटिंग मेटाडेटा होता है:
|
|
72
|
+
|
|
73
|
+
```markdown
|
|
74
|
+
---
|
|
75
|
+
id: github-actions
|
|
76
|
+
keywords: [ci, workflow, runner, dependabot]
|
|
77
|
+
patterns: [ci_pipeline]
|
|
78
|
+
priority: domain
|
|
79
|
+
triggers:
|
|
80
|
+
task: true
|
|
81
|
+
plan: true
|
|
82
|
+
edit: false
|
|
83
|
+
---
|
|
84
|
+
|
|
85
|
+
# GitHub Actions Rules
|
|
86
|
+
CI minutes are finite...
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
प्रारंभिक भाग सत्य का स्रोत है। इंडेक्स इससे प्राप्त होता है।
|
|
90
|
+
|
|
91
|
+
## एपीआई
|
|
92
|
+
|
|
93
|
+
### `matchLoadout(task, index)`
|
|
94
|
+
|
|
95
|
+
एक कार्य विवरण को लोडआउट इंडेक्स के खिलाफ मिलाएं। उन प्रविष्टियों को लौटाता है जिन्हें लोड किया जाना चाहिए, जो मिलान की शक्ति के आधार पर क्रमबद्ध हैं।
|
|
96
|
+
|
|
97
|
+
```typescript
|
|
98
|
+
import { matchLoadout } from "@mcptoolshop/ai-loadout";
|
|
99
|
+
|
|
100
|
+
const results = matchLoadout("fix the CI workflow", index);
|
|
101
|
+
// [{ entry: { id: "github-actions", ... }, score: 0.67, matchedKeywords: ["ci", "workflow"] }]
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
- मुख्य प्रविष्टियाँ हमेशा शामिल होती हैं (स्कोर 1.0)
|
|
105
|
+
- मैन्युअल प्रविष्टियाँ कभी भी स्वचालित रूप से शामिल नहीं होती हैं
|
|
106
|
+
- डोमेन प्रविष्टियों को कीवर्ड ओवरलैप + पैटर्न बोनस से स्कोर किया जाता है
|
|
107
|
+
- परिणाम स्कोर के अवरोही क्रम में क्रमबद्ध होते हैं
|
|
108
|
+
|
|
109
|
+
### `lookupEntry(id, index)`
|
|
110
|
+
|
|
111
|
+
आईडी द्वारा एक विशिष्ट प्रविष्टि खोजें। मैन्युअल प्रविष्टियों या स्पष्ट पहुंच के लिए।
|
|
112
|
+
|
|
113
|
+
```typescript
|
|
114
|
+
import { lookupEntry } from "@mcptoolshop/ai-loadout";
|
|
115
|
+
|
|
116
|
+
const entry = lookupEntry("github-actions", index);
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
### `parseFrontmatter(content)`
|
|
120
|
+
|
|
121
|
+
एक डेटा फ़ाइल से YAML-जैसे प्रारंभिक भाग को पार्स करें।
|
|
122
|
+
|
|
123
|
+
```typescript
|
|
124
|
+
import { parseFrontmatter } from "@mcptoolshop/ai-loadout";
|
|
125
|
+
|
|
126
|
+
const { frontmatter, body } = parseFrontmatter(fileContent);
|
|
127
|
+
if (frontmatter) {
|
|
128
|
+
console.log(frontmatter.id, frontmatter.keywords);
|
|
129
|
+
}
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
### `serializeFrontmatter(fm)`
|
|
133
|
+
|
|
134
|
+
एक `Frontmatter` ऑब्जेक्ट को वापस एक स्ट्रिंग में क्रमबद्ध करें।
|
|
135
|
+
|
|
136
|
+
### `validateIndex(index)`
|
|
137
|
+
|
|
138
|
+
एक `LoadoutIndex` की संरचनात्मक अखंडता को मान्य करें। मुद्दों का एक सरणी लौटाता है।
|
|
139
|
+
|
|
140
|
+
```typescript
|
|
141
|
+
import { validateIndex } from "@mcptoolshop/ai-loadout";
|
|
142
|
+
|
|
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
|
+
```
|
|
149
|
+
|
|
150
|
+
जांच: आवश्यक फ़ील्ड, अद्वितीय आईडी, केबाब-केस प्रारूप, सारांश सीमाएं, डोमेन प्रविष्टियों के लिए कीवर्ड की उपस्थिति, मान्य प्राथमिकताएं, गैर-नकारात्मक बजट।
|
|
151
|
+
|
|
152
|
+
### `estimateTokens(text)`
|
|
153
|
+
|
|
154
|
+
पाठ से टोकन की संख्या का अनुमान लगाएं। chars/4 अनुमान का उपयोग करता है।
|
|
155
|
+
|
|
156
|
+
```typescript
|
|
157
|
+
import { estimateTokens } from "@mcptoolshop/ai-loadout";
|
|
158
|
+
|
|
159
|
+
const tokens = estimateTokens(fileContent); // ~250
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
## प्रकार
|
|
163
|
+
|
|
164
|
+
```typescript
|
|
165
|
+
import type {
|
|
166
|
+
LoadoutEntry,
|
|
167
|
+
LoadoutIndex,
|
|
168
|
+
Frontmatter,
|
|
169
|
+
MatchResult,
|
|
170
|
+
ValidationIssue,
|
|
171
|
+
Priority, // "core" | "domain" | "manual"
|
|
172
|
+
Triggers, // { task, plan, edit }
|
|
173
|
+
Budget,
|
|
174
|
+
} from "@mcptoolshop/ai-loadout";
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
## उपभोक्ता
|
|
178
|
+
|
|
179
|
+
- **[@mcptoolshop/claude-rules](https://github.com/mcp-tool-shop-org/claude-rules)** — क्लाउड कोड के लिए CLAUDE.md ऑप्टिमाइज़र। डिस्पैच टेबल और मिलान के लिए ai-loadout का उपयोग करता है।
|
|
180
|
+
|
|
181
|
+
## सुरक्षा
|
|
182
|
+
|
|
183
|
+
यह पैकेज एक शुद्ध डेटा लाइब्रेरी है। यह फ़ाइल सिस्टम तक नहीं पहुंचता है, नेटवर्क अनुरोध नहीं करता है, या टेलीमेट्री एकत्र नहीं करता है। सभी इनपुट/आउटपुट उपभोक्ता की जिम्मेदारी है।
|
|
184
|
+
|
|
185
|
+
### खतरे का मॉडल
|
|
186
|
+
|
|
187
|
+
| खतरा | शमन |
|
|
188
|
+
|--------|------------|
|
|
189
|
+
| खराब प्रारूप वाला प्रारंभिक भाग इनपुट | `parseFrontmatter()` अमान्य इनपुट पर `null` लौटाता है - कोई अपवाद नहीं, कोई eval नहीं |
|
|
190
|
+
| प्रोटोकॉल प्रदूषण | हाथ से बनाया गया पार्सर केवल साधारण ऑब्जेक्ट लिटरल का उपयोग करता है, अविश्वसनीय नेस्टेड संरचनाओं का `JSON.parse` नहीं करता है |
|
|
191
|
+
| खराब डेटा वाला इंडेक्स | `validateIndex()` संरचनात्मक मुद्दों को फैलने से पहले पकड़ लेता है |
|
|
192
|
+
| रेगेक्स DoS | कोई उपयोगकर्ता-प्रदत्त रेगेक्स नहीं - पैटर्न को साधारण स्ट्रिंग लुकअप के रूप में मिलान किया जाता है |
|
|
193
|
+
|
|
194
|
+
पूर्ण सुरक्षा नीति के लिए [SECURITY.md](SECURITY.md) देखें।
|
|
195
|
+
|
|
196
|
+
---
|
|
197
|
+
|
|
198
|
+
[MCP Tool Shop](https://mcp-tool-shop.github.io/) द्वारा बनाया गया
|