@mcptoolshop/ai-loadout 1.0.2 → 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/README.hi.md CHANGED
@@ -1,35 +1,37 @@
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
+
1
5
  <p align="center">
2
- <a href="README.md">English</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.hi.md">हिन्दी</a> | <a href="README.it.md">Italiano</a> | <a href="README.pt-BR.md">Português (BR)</a> | <a href="README.ja.md">日本語</a>
6
+ <img src="https://raw.githubusercontent.com/mcp-tool-shop-org/brand/main/logos/ai-loadout/readme.png" width="400" alt="ai-loadout">
3
7
  </p>
4
-
5
- <p align="center">
6
- <img src="logo.png" width="400" alt="ai-loadout">
7
- </p>
8
-
8
+
9
9
  <p align="center">
10
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>
11
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>
12
- <a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-blue" alt="MIT लाइसेंस"></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>
13
15
  </p>
14
-
15
- AI एजेंटों के लिए संदर्भ-जागरूक ज्ञान राउटर।
16
-
17
- `ai-loadout` एक डिस्पैच टेबल फॉर्मैट और मैचिंग इंजन है जो AI एजेंटों को कार्य के अनुसार सही ज्ञान लोड करने देता है। सब कुछ संदर्भ में डालने के बजाय, आप एक छोटा इंडेक्स रखते हैं और आवश्यकतानुसार पेलोड लोड करते हैं।
18
-
19
- इसे एक वीडियो गेम लोडआउट की तरह समझें आप हर मिशन से पहले एजेंट को ठीक उतना ज्ञान देते हैं जितना उसे चाहिए।
20
-
21
- ## इंस्टॉलेशन
22
-
16
+
17
+ संदर्भ-जागरूक ज्ञान राउटर जो एआई एजेंटों के लिए है।
18
+
19
+ `ai-loadout` एक डिस्पैच टेबल फॉर्मेट और मिलान इंजन है जो एआई एजेंटों को उस कार्य के लिए सही ज्ञान लोड करने की अनुमति देता है। संदर्भ में सब कुछ डालने के बजाय, आप एक छोटा इंडेक्स रखते हैं और आवश्यकतानुसार डेटा लोड करते हैं।
20
+
21
+ इसे एक गेम लोडआउट की तरह सोचें - आप एजेंट को प्रत्येक मिशन से पहले आवश्यक ज्ञान से लैस करते हैं।
22
+
23
+ ## इंस्टॉल करें
24
+
23
25
  ```bash
24
26
  npm install @mcptoolshop/ai-loadout
25
27
  ```
26
-
27
- ## मूल अवधारणाएं
28
-
29
- ### डिस्पैच टेबल
30
-
31
- एक `LoadoutIndex` ज्ञान पेलोड का एक संरचित इंडेक्स है:
32
-
28
+
29
+ ## मुख्य अवधारणाएं
30
+
31
+ ### डिस्पैच टेबल
32
+
33
+ `LoadoutIndex` ज्ञान डेटा के एक संरचित इंडेक्स है:
34
+
33
35
  ```json
34
36
  {
35
37
  "version": "1.0.0",
@@ -55,19 +57,19 @@ npm install @mcptoolshop/ai-loadout
55
57
  }
56
58
  }
57
59
  ```
58
-
59
- ### प्राथमिकता स्तर
60
-
61
- | स्तर | व्यवहार | उदाहरण |
62
- |------|---------|--------|
63
- | `core` | हमेशा लोड | "CI पास करने के लिए कभी टेस्ट छोड़ें" |
64
- | `domain` | कार्य के कीवर्ड मैच होने पर लोड | workflows संपादित करते समय CI नियम |
65
- | `manual` | कभी स्वचालित लोड नहीं, केवल स्पष्ट लुकअप | अस्पष्ट प्लेटफॉर्म समस्याएं |
66
-
67
- ### पेलोड Frontmatter
68
-
69
- प्रत्येक पेलोड फ़ाइल अपने स्वयं के राउटिंग मेटाडेटा रखती है:
70
-
60
+
61
+ ### प्राथमिकता स्तर
62
+
63
+ | स्तर | व्यवहार | उदाहरण |
64
+ |------|----------|---------|
65
+ | `core` | हमेशा लोड किया जाता है | "CI को हरा करने के लिए कभी भी परीक्षणों को छोड़ें नहीं" |
66
+ | `domain` | जब कार्य कीवर्ड मेल खाते हैं तो लोड किया जाता है | वर्कफ़्लो संपादित करते समय CI नियम |
67
+ | `manual` | कभी भी स्वचालित रूप से लोड नहीं किया जाता है, केवल स्पष्ट खोज | अस्पष्ट प्लेटफ़ॉर्म संबंधी समस्याएं |
68
+
69
+ ### डेटा का प्रारंभिक भाग
70
+
71
+ प्रत्येक डेटा फ़ाइल में अपना रूटिंग मेटाडेटा होता है:
72
+
71
73
  ```markdown
72
74
  ---
73
75
  id: github-actions
@@ -83,41 +85,41 @@ triggers:
83
85
  # GitHub Actions Rules
84
86
  CI minutes are finite...
85
87
  ```
86
-
87
- Frontmatter सत्य का स्रोत है। इंडेक्स इससे व्युत्पन्न होता है।
88
-
89
- ## API
90
-
91
- ### `matchLoadout(task, index)`
92
-
93
- एक कार्य विवरण को loadout इंडेक्स से मिलाता है। वे प्रविष्टियां लौटाता है जो लोड होनी चाहिए, मैच शक्ति के अनुसार क्रमबद्ध।
94
-
88
+
89
+ प्रारंभिक भाग सत्य का स्रोत है। इंडेक्स इससे प्राप्त होता है।
90
+
91
+ ## एपीआई
92
+
93
+ ### `matchLoadout(task, index)`
94
+
95
+ एक कार्य विवरण को लोडआउट इंडेक्स के खिलाफ मिलाएं। उन प्रविष्टियों को लौटाता है जिन्हें लोड किया जाना चाहिए, जो मिलान की शक्ति के आधार पर क्रमबद्ध हैं।
96
+
95
97
  ```typescript
96
98
  import { matchLoadout } from "@mcptoolshop/ai-loadout";
97
99
 
98
100
  const results = matchLoadout("fix the CI workflow", index);
99
101
  // [{ entry: { id: "github-actions", ... }, score: 0.67, matchedKeywords: ["ci", "workflow"] }]
100
102
  ```
101
-
102
- - Core प्रविष्टियां हमेशा शामिल (स्कोर 1.0)
103
- - Manual प्रविष्टियां कभी स्वचालित रूप से शामिल नहीं
104
- - Domain प्रविष्टियां कीवर्ड ओवरलैप + पैटर्न बोनस द्वारा स्कोर
105
- - परिणाम स्कोर के अनुसार अवरोही क्रम में
106
-
107
- ### `lookupEntry(id, index)`
108
-
109
- ID द्वारा एक विशिष्ट प्रविष्टि खोजता है। मैनुअल प्रविष्टियों या स्पष्ट पहुंच के लिए।
110
-
103
+
104
+ - मुख्य प्रविष्टियाँ हमेशा शामिल होती हैं (स्कोर 1.0)
105
+ - मैन्युअल प्रविष्टियाँ कभी भी स्वचालित रूप से शामिल नहीं होती हैं
106
+ - डोमेन प्रविष्टियों को कीवर्ड ओवरलैप + पैटर्न बोनस से स्कोर किया जाता है
107
+ - परिणाम स्कोर के अवरोही क्रम में क्रमबद्ध होते हैं
108
+
109
+ ### `lookupEntry(id, index)`
110
+
111
+ आईडी द्वारा एक विशिष्ट प्रविष्टि खोजें। मैन्युअल प्रविष्टियों या स्पष्ट पहुंच के लिए।
112
+
111
113
  ```typescript
112
114
  import { lookupEntry } from "@mcptoolshop/ai-loadout";
113
115
 
114
116
  const entry = lookupEntry("github-actions", index);
115
117
  ```
116
-
117
- ### `parseFrontmatter(content)`
118
-
119
- एक पेलोड फ़ाइल से YAML-जैसा frontmatter पार्स करता है।
120
-
118
+
119
+ ### `parseFrontmatter(content)`
120
+
121
+ एक डेटा फ़ाइल से YAML-जैसे प्रारंभिक भाग को पार्स करें।
122
+
121
123
  ```typescript
122
124
  import { parseFrontmatter } from "@mcptoolshop/ai-loadout";
123
125
 
@@ -126,15 +128,15 @@ if (frontmatter) {
126
128
  console.log(frontmatter.id, frontmatter.keywords);
127
129
  }
128
130
  ```
129
-
130
- ### `serializeFrontmatter(fm)`
131
-
132
- एक `Frontmatter` ऑब्जेक्ट को वापस स्ट्रिंग में सीरियलाइज़ करता है।
133
-
134
- ### `validateIndex(index)`
135
-
136
- एक `LoadoutIndex` की संरचनात्मक अखंडता की जांच करता है। समस्याओं की एक सूची लौटाता है।
137
-
131
+
132
+ ### `serializeFrontmatter(fm)`
133
+
134
+ एक `Frontmatter` ऑब्जेक्ट को वापस एक स्ट्रिंग में क्रमबद्ध करें।
135
+
136
+ ### `validateIndex(index)`
137
+
138
+ एक `LoadoutIndex` की संरचनात्मक अखंडता को मान्य करें। मुद्दों का एक सरणी लौटाता है।
139
+
138
140
  ```typescript
139
141
  import { validateIndex } from "@mcptoolshop/ai-loadout";
140
142
 
@@ -144,21 +146,21 @@ if (errors.length > 0) {
144
146
  console.error("Index has errors:", errors);
145
147
  }
146
148
  ```
147
-
148
- जांचता है: आवश्यक फ़ील्ड, अद्वितीय ID, kebab-case प्रारूप, सारांश सीमाएं, domain प्रविष्टियों के लिए कीवर्ड उपस्थिति, मान्य प्राथमिकताएं, गैर-नकारात्मक बजट।
149
-
150
- ### `estimateTokens(text)`
151
-
152
- टेक्स्ट से टोकन गणना का अनुमान लगाता है। अक्षर/4 ह्यूरिस्टिक का उपयोग करता है।
153
-
149
+
150
+ जांच: आवश्यक फ़ील्ड, अद्वितीय आईडी, केबाब-केस प्रारूप, सारांश सीमाएं, डोमेन प्रविष्टियों के लिए कीवर्ड की उपस्थिति, मान्य प्राथमिकताएं, गैर-नकारात्मक बजट।
151
+
152
+ ### `estimateTokens(text)`
153
+
154
+ पाठ से टोकन की संख्या का अनुमान लगाएं। chars/4 अनुमान का उपयोग करता है।
155
+
154
156
  ```typescript
155
157
  import { estimateTokens } from "@mcptoolshop/ai-loadout";
156
158
 
157
159
  const tokens = estimateTokens(fileContent); // ~250
158
160
  ```
159
-
160
- ## टाइप्स
161
-
161
+
162
+ ## प्रकार
163
+
162
164
  ```typescript
163
165
  import type {
164
166
  LoadoutEntry,
@@ -171,26 +173,26 @@ import type {
171
173
  Budget,
172
174
  } from "@mcptoolshop/ai-loadout";
173
175
  ```
174
-
175
- ## उपभोक्ता
176
-
177
- - **[@mcptoolshop/claude-rules](https://github.com/mcp-tool-shop-org/claude-rules)** — Claude Code के लिए CLAUDE.md ऑप्टिमाइज़र। डिस्पैच टेबल और मैचिंग के लिए ai-loadout का उपयोग करता है।
178
-
179
- ## सुरक्षा
180
-
181
- यह पैकेज एक शुद्ध डेटा लाइब्रेरी है। यह फ़ाइल सिस्टम तक नहीं पहुंचता, नेटवर्क अनुरोध नहीं करता और टेलीमेट्री एकत्र नहीं करता। सभी I/O उपभोक्ता की जिम्मेदारी है।
182
-
183
- ### खतरा मॉडल
184
-
185
- | खतरा | शमन |
186
- |------|------|
187
- | विकृत frontmatter इनपुट | `parseFrontmatter()` अमान्य इनपुट पर `null` लौटाता है कोई अपवाद नहीं, कोई eval नहीं |
188
- | प्रोटोटाइप प्रदूषण | मैनुअल पार्सर सादे ऑब्जेक्ट लिटरल का उपयोग करता है, अविश्वसनीय नेस्टेड संरचनाओं का `JSON.parse` नहीं |
189
- | खराब डेटा वाला इंडेक्स | `validateIndex()` संरचनात्मक समस्याओं को फैलने से पहले पकड़ता है |
190
- | Regex DoS | कोई उपयोगकर्ता-प्रदत्त regex नहीं पैटर्न सादे स्ट्रिंग लुकअप के रूप में मिलाए जाते हैं |
191
-
192
- पूर्ण सुरक्षा नीति के लिए [SECURITY.md](SECURITY.md) देखें।
193
-
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
+
194
196
  ---
195
-
196
- [MCP Tool Shop](https://mcp-tool-shop.github.io/) द्वारा निर्मित
197
+
198
+ [MCP Tool Shop](https://mcp-tool-shop.github.io/) द्वारा बनाया गया
package/README.it.md CHANGED
@@ -1,35 +1,37 @@
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.hi.md">हिन्दी</a> | <a href="README.md">English</a> | <a href="README.pt-BR.md">Português (BR)</a>
3
+ </p>
4
+
1
5
  <p align="center">
2
- <a href="README.md">English</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.hi.md">हिन्दी</a> | <a href="README.it.md">Italiano</a> | <a href="README.pt-BR.md">Português (BR)</a> | <a href="README.ja.md">日本語</a>
6
+ <img src="https://raw.githubusercontent.com/mcp-tool-shop-org/brand/main/logos/ai-loadout/readme.png" width="400" alt="ai-loadout">
3
7
  </p>
4
-
5
- <p align="center">
6
- <img src="logo.png" width="400" alt="ai-loadout">
7
- </p>
8
-
8
+
9
9
  <p align="center">
10
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>
11
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>
12
- <a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-blue" alt="Licenza MIT"></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>
13
15
  </p>
14
-
15
- Router di conoscenza contestuale per agenti IA.
16
-
17
- `ai-loadout` e il formato della tabella di dispatch e il motore di corrispondenza che permette agli agenti IA di caricare la conoscenza giusta per il compito in questione. Invece di scaricare tutto nel contesto, mantieni un piccolo indice e carichi i contenuti su richiesta.
18
-
19
- Pensalo come un equipaggiamento da videogioco equipaggi l'agente con esattamente la conoscenza di cui ha bisogno prima di ogni missione.
20
-
21
- ## Installazione
22
-
16
+
17
+ Router di conoscenza contestuale per agenti di intelligenza artificiale.
18
+
19
+ `ai-loadout` è il formato della tabella di dispatch e il motore di matching che consente agli agenti di intelligenza artificiale di caricare le conoscenze appropriate per il compito in questione. Invece di caricare tutto nel contesto, si mantiene un indice ridotto e si caricano i dati su richiesta.
20
+
21
+ Immaginate che sia come la configurazione di un gioco: si fornisce all'agente esattamente le conoscenze di cui ha bisogno prima di ogni missione.
22
+
23
+ ## Installazione
24
+
23
25
  ```bash
24
26
  npm install @mcptoolshop/ai-loadout
25
27
  ```
26
-
27
- ## Concetti Fondamentali
28
-
29
- ### La Tabella di Dispatch
30
-
31
- Un `LoadoutIndex` e un indice strutturato di contenuti di conoscenza:
32
-
28
+
29
+ ## Concetti fondamentali
30
+
31
+ ### La tabella di dispatch
32
+
33
+ Un `LoadoutIndex` è un indice strutturato di dati di conoscenza:
34
+
33
35
  ```json
34
36
  {
35
37
  "version": "1.0.0",
@@ -55,19 +57,19 @@ Un `LoadoutIndex` e un indice strutturato di contenuti di conoscenza:
55
57
  }
56
58
  }
57
59
  ```
58
-
59
- ### Livelli di Priorita
60
-
61
- | Livello | Comportamento | Esempio |
62
- |---------|--------------|---------|
63
- | `core` | Sempre caricato | "non saltare mai i test per far passare la CI" |
64
- | `domain` | Caricato quando le parole chiave del compito corrispondono | Regole CI durante la modifica dei workflow |
65
- | `manual` | Mai caricato automaticamente, solo consultazione esplicita | Problemi oscuri della piattaforma |
66
-
67
- ### Frontmatter del Contenuto
68
-
69
- Ogni file di contenuto porta i propri metadati di routing:
70
-
60
+
61
+ ### Livelli di priorità
62
+
63
+ | Livello | Comportamento | Esempio |
64
+ |------|----------|---------|
65
+ | `core` | Caricato sempre | "non saltare mai i test per rendere verde il CI" |
66
+ | `domain` | Caricato quando le parole chiave del compito corrispondono | Regole del CI durante la modifica dei workflow |
67
+ | `manual` | Non caricato automaticamente, solo ricerca esplicita | Problemi specifici della piattaforma |
68
+
69
+ ### Metadati del payload
70
+
71
+ Ogni file di payload contiene i propri metadati di routing:
72
+
71
73
  ```markdown
72
74
  ---
73
75
  id: github-actions
@@ -83,41 +85,41 @@ triggers:
83
85
  # GitHub Actions Rules
84
86
  CI minutes are finite...
85
87
  ```
86
-
87
- Il frontmatter e la fonte di verita. L'indice ne e derivato.
88
-
89
- ## API
90
-
91
- ### `matchLoadout(task, index)`
92
-
93
- Confronta una descrizione del compito con un indice di loadout. Restituisce le voci che devono essere caricate, ordinate per forza di corrispondenza.
94
-
88
+
89
+ Il frontmatter è la fonte di verità. L'indice è derivato da esso.
90
+
91
+ ## API
92
+
93
+ ### `matchLoadout(task, index)`
94
+
95
+ Confronta una descrizione del compito con un indice di loadout. Restituisce le voci che devono essere caricate, ordinate in base alla forza della corrispondenza.
96
+
95
97
  ```typescript
96
98
  import { matchLoadout } from "@mcptoolshop/ai-loadout";
97
99
 
98
100
  const results = matchLoadout("fix the CI workflow", index);
99
101
  // [{ entry: { id: "github-actions", ... }, score: 0.67, matchedKeywords: ["ci", "workflow"] }]
100
102
  ```
101
-
102
- - Le voci core sono sempre incluse (punteggio 1.0)
103
- - Le voci manual non sono mai incluse automaticamente
104
- - Le voci domain sono valutate per sovrapposizione di parole chiave + bonus di pattern
105
- - I risultati sono ordinati per punteggio decrescente
106
-
107
- ### `lookupEntry(id, index)`
108
-
109
- Cerca una voce specifica per ID. Per voci manuali o accesso esplicito.
110
-
103
+
104
+ - Le voci principali sono sempre incluse (punteggio 1.0)
105
+ - Le voci manuali non sono mai incluse automaticamente
106
+ - Le voci relative al dominio sono valutate in base alla sovrapposizione delle parole chiave + bonus per i pattern
107
+ - I risultati sono ordinati per punteggio decrescente
108
+
109
+ ### `lookupEntry(id, index)`
110
+
111
+ Cerca una voce specifica per ID. Per le voci manuali o per l'accesso esplicito.
112
+
111
113
  ```typescript
112
114
  import { lookupEntry } from "@mcptoolshop/ai-loadout";
113
115
 
114
116
  const entry = lookupEntry("github-actions", index);
115
117
  ```
116
-
117
- ### `parseFrontmatter(content)`
118
-
119
- Analizza il frontmatter di tipo YAML da un file di contenuto.
120
-
118
+
119
+ ### `parseFrontmatter(content)`
120
+
121
+ Analizza il frontmatter simile a YAML da un file di payload.
122
+
121
123
  ```typescript
122
124
  import { parseFrontmatter } from "@mcptoolshop/ai-loadout";
123
125
 
@@ -126,15 +128,15 @@ if (frontmatter) {
126
128
  console.log(frontmatter.id, frontmatter.keywords);
127
129
  }
128
130
  ```
129
-
130
- ### `serializeFrontmatter(fm)`
131
-
132
- Serializza un oggetto `Frontmatter` di nuovo in stringa.
133
-
134
- ### `validateIndex(index)`
135
-
136
- Valida l'integrita strutturale di un `LoadoutIndex`. Restituisce un array di problemi.
137
-
131
+
132
+ ### `serializeFrontmatter(fm)`
133
+
134
+ Serializza un oggetto `Frontmatter` in una stringa.
135
+
136
+ ### `validateIndex(index)`
137
+
138
+ Verifica l'integrità strutturale di un `LoadoutIndex`. Restituisce un array di problemi.
139
+
138
140
  ```typescript
139
141
  import { validateIndex } from "@mcptoolshop/ai-loadout";
140
142
 
@@ -144,21 +146,21 @@ if (errors.length > 0) {
144
146
  console.error("Index has errors:", errors);
145
147
  }
146
148
  ```
147
-
148
- Verifica: campi obbligatori, ID univoci, formato kebab-case, limiti del riepilogo, presenza di parole chiave per voci domain, priorita valide, budget non negativi.
149
-
150
- ### `estimateTokens(text)`
151
-
152
- Stima il conteggio dei token da un testo. Usa l'euristica caratteri/4.
153
-
149
+
150
+ Controlli: campi obbligatori, ID univoci, formato kebab-case, limiti del riepilogo, presenza di parole chiave per le voci del dominio, priorità valide, budget non negativi.
151
+
152
+ ### `estimateTokens(text)`
153
+
154
+ Stima il numero di token da un testo. Utilizza l'euristica chars/4.
155
+
154
156
  ```typescript
155
157
  import { estimateTokens } from "@mcptoolshop/ai-loadout";
156
158
 
157
159
  const tokens = estimateTokens(fileContent); // ~250
158
160
  ```
159
-
160
- ## Tipi
161
-
161
+
162
+ ## Tipi
163
+
162
164
  ```typescript
163
165
  import type {
164
166
  LoadoutEntry,
@@ -171,26 +173,26 @@ import type {
171
173
  Budget,
172
174
  } from "@mcptoolshop/ai-loadout";
173
175
  ```
174
-
175
- ## Consumatori
176
-
177
- - **[@mcptoolshop/claude-rules](https://github.com/mcp-tool-shop-org/claude-rules)** — Ottimizzatore di CLAUDE.md per Claude Code. Usa ai-loadout per la tabella di dispatch e la corrispondenza.
178
-
179
- ## Sicurezza
180
-
181
- Questo pacchetto e una libreria di dati pura. Non accede al filesystem, non effettua richieste di rete e non raccoglie telemetria. Tutto l'I/O e responsabilita del consumatore.
182
-
183
- ### Modello di Minaccia
184
-
185
- | Minaccia | Mitigazione |
186
- |----------|-------------|
187
- | Input frontmatter malformato | `parseFrontmatter()` restituisce `null` su input non valido nessuna eccezione, nessun eval |
188
- | Inquinamento del prototipo | Il parser manuale usa letterali di oggetto semplici, nessun `JSON.parse` di strutture annidate non fidate |
189
- | Indice con dati errati | `validateIndex()` rileva problemi strutturali prima che si propaghino |
190
- | DoS da Regex | Nessuna regex fornita dall'utente i pattern vengono confrontati come ricerche di testo semplice |
191
-
192
- Consulta [SECURITY.md](SECURITY.md) per la politica di sicurezza completa.
193
-
176
+
177
+ ## Consumatori
178
+
179
+ - **[@mcptoolshop/claude-rules](https://github.com/mcp-tool-shop-org/claude-rules)** — Ottimizzatore CLAUDE.md per Claude Code. Utilizza ai-loadout per la tabella di dispatch e il matching.
180
+
181
+ ## Sicurezza
182
+
183
+ Questo pacchetto è una pura libreria di dati. Non accede al file system, non effettua richieste di rete raccoglie dati di telemetria. Tutte le operazioni di I/O sono responsabilità del consumatore.
184
+
185
+ ### Modello delle minacce
186
+
187
+ | Minaccia | Mitigazione |
188
+ |--------|------------|
189
+ | Input di frontmatter non valido | `parseFrontmatter()` restituisce `null` in caso di input non valido: nessuna eccezione, nessuna valutazione. |
190
+ | Inquinamento del prototipo | Il parser personalizzato utilizza solo letterali di oggetti semplici, senza `JSON.parse` di strutture nidificate non attendibili. |
191
+ | Indice con dati errati | `validateIndex()` rileva i problemi strutturali prima che si propaghino. |
192
+ | DoS con espressioni regolari | Nessuna espressione regolare fornita dall'utente: i pattern vengono confrontati come ricerche di stringhe semplici. |
193
+
194
+ Consultare [SECURITY.md](SECURITY.md) per la politica di sicurezza completa.
195
+
194
196
  ---
195
-
196
- Creato da [MCP Tool Shop](https://mcp-tool-shop.github.io/)
197
+
198
+ Creato da [MCP Tool Shop](https://mcp-tool-shop.github.io/)