@vint.tri/report_gen_mcp 1.7.25 → 1.7.27

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.
@@ -52,12 +52,55 @@
52
52
  3. **`NEURAL_NETWORK_IMAGE_INTEGRATION_FIX_SUMMARY.md`** - Предыдущее исправление интеграции изображений
53
53
  4. **`NEURAL_NETWORK_INSTRUCTIONS_v1.7.1.md`** - Обновленные основные инструкции
54
54
 
55
+ ## ✅ ПРОВЕРКА НА ПРОТИВОРЕЧИЯ
56
+
57
+ После тщательной проверки всех инструкций подтверждено отсутствие противоречий:
58
+
59
+ ### 🔍 АНАЛИЗ СООТВЕТСТВИЯ
60
+
61
+ 1. **`NEURAL_NETWORK_INSTRUCTIONS_v1.7.1.md`** - Основные инструкции:
62
+ - ✅ Требует `"type"` и `"config"` для всех элементов
63
+ - ✅ Поддерживает `"type": "url"` для локальных файлов
64
+ - ✅ Требует `file://` префикс для локальных путей
65
+ - ✅ Запрещает использование `"image"` как типа
66
+
67
+ 2. **`NEURAL_NETWORK_EMERGENCY_FIX.md`** - Аварийные инструкции:
68
+ - ✅ Поддерживает и дополняет основные инструкции
69
+ - ✅ Четко запрещает `"image"` и `"path"` поля
70
+ - ✅ Требует `"type": "url"` и `"config"` структуру
71
+ - ✅ Требует `file://` префикс для путей
72
+
73
+ 3. **`NEURAL_NETWORK_IMAGE_INTEGRATION_FIX_SUMMARY.md`** - Историческое исправление:
74
+ - ✅ Совместимо с текущими инструкциями
75
+ - ✅ Поддерживает те же форматы элементов
76
+ - ✅ Не противоречит аварийным инструкциям
77
+
78
+ ### 🔄 ЕДИНЫЙ СТАНДАРТ ФОРМАТА
79
+
80
+ Все инструкции согласованы по единому стандарту:
81
+ ```json
82
+ {
83
+ "elements": {
84
+ "element_key": {
85
+ "type": "url", // ✅ Единый тип для всех изображений
86
+ "config": { // ✅ Обязательный объект конфигурации
87
+ "url": "file:///path", // ✅ file:// префикс для локальных файлов
88
+ "alt": "Описание", // ✅ Альтернативный текст
89
+ "width": 512, // ✅ Ширина (опционально)
90
+ "height": 512 // ✅ Высота (опционально)
91
+ }
92
+ }
93
+ }
94
+ }
95
+ ```
96
+
55
97
  ## ✅ ПРОВЕРКА РАБОТЫ
56
98
  Тесты подтверждают, что:
57
99
  - ❌ Старый формат больше не работает
58
100
  - ✅ Новый формат проходит валидацию успешно
59
101
  - 🔄 Автоматическая конвертация работает корректно
60
102
  - 📝 Инструкции четко объясняют правильный формат
103
+ - 🆕 Все инструкции согласованы и не противоречат друг другу
61
104
 
62
105
  ## 🎉 РЕЗУЛЬТАТ
63
106
  Нейросеть теперь может правильно генерировать отчеты с изображениями без ошибок валидации параметров. Все форматы соответствуют требованиям инструмента `generate-report`.
@@ -110,7 +110,7 @@
110
110
 
111
111
  Обязательно покажите пользователю содержимое файла, чтобы он мог сразу ознакомиться с результатом без необходимости открывать файл отдельно.
112
112
 
113
- **ВАЖНОЕ ТРЕБОВАНИЕ**: Отчет должен быть максимально красивым и качественным. Содержать изображения, графики, выводы и рассуждения. Отчет должен быть строго в HTML формате!
113
+ **ВАЖНОЕ ТРЕБОВАНИЕ**: Отчет должен быть максимально красивым и качественным. Содержать **как минимум одну диаграмму и одно изображение**, а также выводы и рассуждения. Отчет должен быть строго в HTML формате!
114
114
 
115
115
  **ВАЖНО**: Всегда выводите Web link 2 как кликабельную ссылку в формате `[Web link 2](http://localhost:3000/filename.html)`!
116
116
 
@@ -677,28 +677,32 @@
677
677
 
678
678
  ### 3. ЧИСЛОВЫЕ ДАННЫЕ ДОЛЖНЫ БЫТЬ МАССИВАМИ!
679
679
 
680
- НЕПРАВИЛЬНО:
680
+ НЕПРАВИЛЬНО (это вызовет ошибку валидации):
681
681
  ```json
682
682
  "data": 10
683
683
  ```
684
684
 
685
- ПРАВИЛЬНО:
685
+ ПРАВИЛЬНО (даже для одного значения):
686
686
  ```json
687
687
  "data": [10]
688
688
  ```
689
689
 
690
+ **КРИТИЧЕСКИ ВАЖНО:** Всегда оборачивайте числовые данные для диаграмм в массив. Хотя система теперь пытается исправлять некоторые ошибки, правильный формат гарантирует стабильную работу.
691
+
690
692
  ### 4. ТЕКСТОВЫЕ МЕТКИ ДОЛЖНЫ БЫТЬ МАССИВАМИ!
691
693
 
692
- НЕПРАВИЛЬНО:
694
+ НЕПРАВИЛЬНО (это вызовет ошибку валидации):
693
695
  ```json
694
696
  "labels": "Январь"
695
697
  ```
696
698
 
697
- ПРАВИЛЬНО:
699
+ ПРАВИЛЬНО (даже для одной метки):
698
700
  ```json
699
701
  "labels": ["Январь"]
700
702
  ```
701
703
 
704
+ **КРИТИЧЕСКИ ВАЖНО:** Всегда оборачивайте текстовые метки для диаграмм в массив. Хотя система теперь пытается исправлять некоторые ошибки, правильный формат гарантирует стабильную работу.
705
+
702
706
  ### 5. ЗНАЧЕНИЕ options.title ДОЛЖНО БЫТЬ СТРОКОЙ!
703
707
 
704
708
  ❌ НЕПРАВИЛЬНО (это вызывает ошибку):
@@ -1013,7 +1017,7 @@
1013
1017
  1. Всегда проверяйте успешность выполнения каждой операции перед переходом к следующему шагу
1014
1018
  2. Если какой-либо шаг завершается ошибкой, сообщите пользователю об этом и предложите решение
1015
1019
  3. Убедитесь, что все пути к файлам корректны и файлы действительно существуют
1016
- 4. При работе с Claude Desktop используйте параметр `tempDirectory` при генерации отчетов для избежания проблем с правами доступа
1020
+ 4. **Сохранение файлов**: Все отчеты автоматически сохраняются в системную временную директорию. Вам не нужно указывать путь, просто передайте имя файла в `outputFile`. Инструмент вернет полный путь к сохраненному файлу.
1017
1021
  5. Создавайте отчеты с красивым оформлением, используя заголовки, списки и другие элементы форматирования
1018
1022
  6. Добавляйте в отчеты диаграммы и изображения для лучшей визуализации данных
1019
1023
  7. Всегда после генерации отчета возвращайте пользователю ссылку на файл отчета, путь к файлу отчета и содержимое файла
package/dist/index.js CHANGED
@@ -103,7 +103,7 @@ if (process.argv.length === 2) {
103
103
  // No command specified, run in stdio mode using MCP SDK
104
104
  const mcpServer = new McpServer({
105
105
  name: "report_gen_mcp",
106
- version: "1.7.25"
106
+ version: "1.7.27"
107
107
  }, {
108
108
  // Disable health check to prevent automatic calls
109
109
  capabilities: {
@@ -16,7 +16,7 @@ interface PollinationsImageElement {
16
16
  }
17
17
  type ImageElement = UrlImageElement | PollinationsImageElement;
18
18
  type ReportElement = ChartElement | ImageElement;
19
- export declare function generateReport(document: string, elements: Record<string, ReportElement>, outputFile: string): Promise<{
19
+ export declare function generateReport(document: string, elements: Record<string, ReportElement>, outputFile: string, tempDirectory?: string): Promise<{
20
20
  success: boolean;
21
21
  filePath: string;
22
22
  }>;
@@ -1 +1 @@
1
- {"version":3,"file":"reportGenerator.d.ts","sourceRoot":"","sources":["../../src/utils/reportGenerator.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAOxB,OAAO,EAAE,cAAc,EAAkB,MAAM,wBAAwB,CAAC;AAGxE,KAAK,SAAS,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,UAAU,GAAG,OAAO,GAAG,WAAW,CAAC;AAI7E,UAAU,YAAY;IACpB,IAAI,EAAE,SAAS,CAAC;IAChB,MAAM,EAAE,GAAG,CAAC;CACb;AAED,UAAU,eAAe;IACvB,IAAI,EAAE,KAAK,GAAG,OAAO,CAAC;IACtB,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;IACvC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,UAAU,wBAAwB;IAChC,IAAI,EAAE,cAAc,CAAC;IACrB,MAAM,EAAE,GAAG,CAAC;CACb;AAED,KAAK,YAAY,GAAG,eAAe,GAAG,wBAAwB,CAAC;AAC/D,KAAK,aAAa,GAAG,YAAY,GAAG,YAAY,CAAC;AAqDjD,wBAAsB,cAAc,CAClC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,EACvC,UAAU,EAAE,MAAM;;;GA+HnB"}
1
+ {"version":3,"file":"reportGenerator.d.ts","sourceRoot":"","sources":["../../src/utils/reportGenerator.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAOxB,OAAO,EAAE,cAAc,EAAkB,MAAM,wBAAwB,CAAC;AAGxE,KAAK,SAAS,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,UAAU,GAAG,OAAO,GAAG,WAAW,CAAC;AAI7E,UAAU,YAAY;IACpB,IAAI,EAAE,SAAS,CAAC;IAChB,MAAM,EAAE,GAAG,CAAC;CACb;AAED,UAAU,eAAe;IACvB,IAAI,EAAE,KAAK,GAAG,OAAO,CAAC;IACtB,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;IACvC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,UAAU,wBAAwB;IAChC,IAAI,EAAE,cAAc,CAAC;IACrB,MAAM,EAAE,GAAG,CAAC;CACb;AAED,KAAK,YAAY,GAAG,eAAe,GAAG,wBAAwB,CAAC;AAC/D,KAAK,aAAa,GAAG,YAAY,GAAG,YAAY,CAAC;AA+DjD,wBAAsB,cAAc,CAClC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,EACvC,UAAU,EAAE,MAAM,EAClB,aAAa,CAAC,EAAE,MAAM;;;GAmIvB"}
@@ -1,4 +1,6 @@
1
1
  import fs from 'fs-extra';
2
+ import os from 'os';
3
+ import path from 'path';
2
4
  import ejs from 'ejs';
3
5
  import { marked } from 'marked';
4
6
  import { barSchema, renderBarChart } from '../charts/bar.js';
@@ -30,6 +32,10 @@ function normalizeChartConfig(config) {
30
32
  return config;
31
33
  }
32
34
  const normalizedConfig = { ...config };
35
+ // Normalize labels
36
+ if (normalizedConfig.labels && typeof normalizedConfig.labels === 'string') {
37
+ normalizedConfig.labels = [normalizedConfig.labels];
38
+ }
33
39
  // Normalize datasets
34
40
  if (normalizedConfig.datasets && Array.isArray(normalizedConfig.datasets)) {
35
41
  normalizedConfig.datasets = normalizedConfig.datasets.map((dataset) => {
@@ -44,12 +50,19 @@ function normalizeChartConfig(config) {
44
50
  normalizedDataset[prop] = [normalizedDataset[prop]];
45
51
  }
46
52
  }
53
+ // Normalize data
54
+ if (normalizedDataset.data && !Array.isArray(normalizedDataset.data)) {
55
+ normalizedDataset.data = [normalizedDataset.data];
56
+ }
47
57
  return normalizedDataset;
48
58
  });
49
59
  }
50
60
  return normalizedConfig;
51
61
  }
52
- export async function generateReport(document, elements, outputFile) {
62
+ export async function generateReport(document, elements, outputFile, tempDirectory) {
63
+ const reportsDir = tempDirectory || process.env.REPORTS_DIR || os.tmpdir();
64
+ await fs.ensureDir(reportsDir);
65
+ const finalOutputFile = path.join(reportsDir, outputFile);
53
66
  // Validate elements
54
67
  for (const [id, element] of Object.entries(elements)) {
55
68
  if (element.type in chartRenderers) {
@@ -171,6 +184,6 @@ export async function generateReport(document, elements, outputFile) {
171
184
  `;
172
185
  const fullHtml = ejs.render(template, { htmlContent }, { escape: (str) => str });
173
186
  // Save to file
174
- await fs.writeFile(outputFile, fullHtml);
175
- return { success: true, filePath: outputFile };
187
+ await fs.writeFile(finalOutputFile, fullHtml);
188
+ return { success: true, filePath: finalOutputFile };
176
189
  }
package/dog.png ADDED
Binary file
Binary file
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vint.tri/report_gen_mcp",
3
- "version": "1.7.25",
3
+ "version": "1.7.27",
4
4
  "description": "CLI tool for generating HTML reports with embedded charts and images",
5
5
  "main": "dist/index.js",
6
6
  "bin": {