lv24-opencode-consilium 0.0.0-stage → 1.4.0

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.
Files changed (106) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +499 -3
  3. package/README.ru.md +500 -0
  4. package/README.zh.md +188 -0
  5. package/bin/cli.js +19 -0
  6. package/bin/mcp.js +24 -0
  7. package/consilium.config.example.json +84 -0
  8. package/dist/agents.d.ts +79 -0
  9. package/dist/agents.d.ts.map +1 -0
  10. package/dist/agents.js +1051 -0
  11. package/dist/agents.js.map +1 -0
  12. package/dist/artifacts.d.ts +75 -0
  13. package/dist/artifacts.d.ts.map +1 -0
  14. package/dist/artifacts.js +464 -0
  15. package/dist/artifacts.js.map +1 -0
  16. package/dist/cli.d.ts +12 -0
  17. package/dist/cli.d.ts.map +1 -0
  18. package/dist/cli.js +1392 -0
  19. package/dist/cli.js.map +1 -0
  20. package/dist/compat.d.ts +160 -0
  21. package/dist/compat.d.ts.map +1 -0
  22. package/dist/compat.js +419 -0
  23. package/dist/compat.js.map +1 -0
  24. package/dist/config.d.ts +112 -0
  25. package/dist/config.d.ts.map +1 -0
  26. package/dist/config.js +728 -0
  27. package/dist/config.js.map +1 -0
  28. package/dist/consensus.d.ts +73 -0
  29. package/dist/consensus.d.ts.map +1 -0
  30. package/dist/consensus.js +273 -0
  31. package/dist/consensus.js.map +1 -0
  32. package/dist/defaults.d.ts +34 -0
  33. package/dist/defaults.d.ts.map +1 -0
  34. package/dist/defaults.js +102 -0
  35. package/dist/defaults.js.map +1 -0
  36. package/dist/doctor.d.ts +27 -0
  37. package/dist/doctor.d.ts.map +1 -0
  38. package/dist/doctor.js +798 -0
  39. package/dist/doctor.js.map +1 -0
  40. package/dist/fallback.d.ts +50 -0
  41. package/dist/fallback.d.ts.map +1 -0
  42. package/dist/fallback.js +134 -0
  43. package/dist/fallback.js.map +1 -0
  44. package/dist/git.d.ts +28 -0
  45. package/dist/git.d.ts.map +1 -0
  46. package/dist/git.js +71 -0
  47. package/dist/git.js.map +1 -0
  48. package/dist/index.d.ts +100 -0
  49. package/dist/index.d.ts.map +1 -0
  50. package/dist/index.js +653 -0
  51. package/dist/index.js.map +1 -0
  52. package/dist/mcp.d.ts +20 -0
  53. package/dist/mcp.d.ts.map +1 -0
  54. package/dist/mcp.js +1215 -0
  55. package/dist/mcp.js.map +1 -0
  56. package/dist/models.d.ts +97 -0
  57. package/dist/models.d.ts.map +1 -0
  58. package/dist/models.js +873 -0
  59. package/dist/models.js.map +1 -0
  60. package/dist/plugin.d.ts +59 -0
  61. package/dist/plugin.d.ts.map +1 -0
  62. package/dist/plugin.js +223 -0
  63. package/dist/plugin.js.map +1 -0
  64. package/dist/presets.d.ts +27 -0
  65. package/dist/presets.d.ts.map +1 -0
  66. package/dist/presets.js +86 -0
  67. package/dist/presets.js.map +1 -0
  68. package/dist/replay.d.ts +37 -0
  69. package/dist/replay.d.ts.map +1 -0
  70. package/dist/replay.js +103 -0
  71. package/dist/replay.js.map +1 -0
  72. package/dist/report.d.ts +28 -0
  73. package/dist/report.d.ts.map +1 -0
  74. package/dist/report.js +300 -0
  75. package/dist/report.js.map +1 -0
  76. package/dist/smart-experts.d.ts +44 -0
  77. package/dist/smart-experts.d.ts.map +1 -0
  78. package/dist/smart-experts.js +242 -0
  79. package/dist/smart-experts.js.map +1 -0
  80. package/dist/stream.d.ts +50 -0
  81. package/dist/stream.d.ts.map +1 -0
  82. package/dist/stream.js +219 -0
  83. package/dist/stream.js.map +1 -0
  84. package/dist/tool-run.d.ts +49 -0
  85. package/dist/tool-run.d.ts.map +1 -0
  86. package/dist/tool-run.js +143 -0
  87. package/dist/tool-run.js.map +1 -0
  88. package/dist/types.d.ts +352 -0
  89. package/dist/types.d.ts.map +1 -0
  90. package/dist/types.js +6 -0
  91. package/dist/types.js.map +1 -0
  92. package/dist/variants.d.ts +30 -0
  93. package/dist/variants.d.ts.map +1 -0
  94. package/dist/variants.js +111 -0
  95. package/dist/variants.js.map +1 -0
  96. package/dist/verify.d.ts +33 -0
  97. package/dist/verify.d.ts.map +1 -0
  98. package/dist/verify.js +80 -0
  99. package/dist/verify.js.map +1 -0
  100. package/dist/watch.d.ts +73 -0
  101. package/dist/watch.d.ts.map +1 -0
  102. package/dist/watch.js +350 -0
  103. package/dist/watch.js.map +1 -0
  104. package/docs/session-and-plugin.md +642 -0
  105. package/package.json +90 -6
  106. package/schema/config.schema.json +100 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agents.js","sourceRoot":"","sources":["../src/agents.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,75 @@
1
+ /**
2
+ * @fileoverview Хранение и сравнение артефактов запусков консилиума
3
+ * @module lv24-opencode-consilium
4
+ */
5
+ import type { AgentUsage } from './types.js';
6
+ /** Ссылка на сохранённый артефакт */
7
+ export interface ArtifactRef {
8
+ id: string;
9
+ dir: string;
10
+ }
11
+ /** Результат одного эксперта внутри артефакта */
12
+ export interface ArtifactExpert {
13
+ agent: string;
14
+ model?: string;
15
+ success: boolean;
16
+ errorCode?: string;
17
+ errorMessage?: string;
18
+ duration?: number;
19
+ text: string;
20
+ usage?: AgentUsage;
21
+ }
22
+ /** Сохранённый запуск консилиума */
23
+ export interface ArtifactRun {
24
+ version: 1;
25
+ id: string;
26
+ createdAt: string;
27
+ task: string;
28
+ success: boolean;
29
+ text: string;
30
+ experts: ArtifactExpert[];
31
+ models: Record<string, string | undefined>;
32
+ /** Агент-председатель, чтобы replay восстановил именно его */
33
+ chairAgent?: string;
34
+ usage?: AgentUsage;
35
+ consensus?: unknown;
36
+ metadata?: Record<string, unknown>;
37
+ }
38
+ /**
39
+ * Создаёт идентификатор артефакта вида `YYYYMMDD-HHMMSS-<4 hex>` (UTC)
40
+ */
41
+ export declare function createArtifactId(now?: Date): string;
42
+ /**
43
+ * Определяет корневой каталог артефактов.
44
+ * `false` запрещает сохранение и бросает ошибку.
45
+ */
46
+ export declare function resolveArtifactRoot(config: {
47
+ artifacts?: string | boolean;
48
+ cwd?: string;
49
+ }): string;
50
+ /**
51
+ * Сохраняет запуск в `<root>/<id>/`.
52
+ * Структура: `run.json`, `report.md`, `experts/<agent>.md`.
53
+ * При коллизии id добавляет суффикс `-2`, `-3`, … и обновляет `run.id`.
54
+ * Возвращает ссылку с абсолютным `dir`.
55
+ */
56
+ export declare function saveArtifact(run: ArtifactRun, options: {
57
+ root?: string;
58
+ }): ArtifactRef;
59
+ /**
60
+ * Перечисляет артефакты в корне (прямые подкаталоги с `run.json`).
61
+ * Битые каталоги молча пропускаются. Сортировка — новые сверху.
62
+ */
63
+ export declare function listArtifacts(root: string): ArtifactRef[];
64
+ /**
65
+ * Загружает артефакт по id или по пути (каталог либо `run.json`).
66
+ * Относительные пути резолвятся против `root`, затем против cwd.
67
+ */
68
+ export declare function loadArtifact(idOrPath: string, root: string): ArtifactRun;
69
+ /**
70
+ * Форматирует артефакт в читаемый русскоязычный markdown-отчёт
71
+ */
72
+ export declare function formatArtifact(run: ArtifactRun): string;
73
+ /** Сравнивает два артефакта и возвращает markdown-отчёт */
74
+ export declare function diffArtifacts(a: ArtifactRun, b: ArtifactRun): string;
75
+ //# sourceMappingURL=artifacts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"artifacts.d.ts","sourceRoot":"","sources":["../src/artifacts.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAaH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,qCAAqC;AACrC,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;CACb;AAED,iDAAiD;AACjD,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,UAAU,CAAC;CACpB;AAED,oCAAoC;AACpC,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,CAAC,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IAC3C,8DAA8D;IAC9D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAaD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,MAAM,CASnD;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAUlG;AAqED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,WAAW,EAAE,OAAO,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,WAAW,CA6CtF;AA6BD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,EAAE,CAoCzD;AAYD;;;GAGG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,WAAW,CAoExE;AAqCD;;GAEG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,WAAW,GAAG,MAAM,CAwDvD;AAED,2DAA2D;AAC3D,wBAAgB,aAAa,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,WAAW,GAAG,MAAM,CA8DpE"}
@@ -0,0 +1,464 @@
1
+ /**
2
+ * @fileoverview Хранение и сравнение артефактов запусков консилиума
3
+ * @module lv24-opencode-consilium
4
+ */
5
+ import { existsSync, mkdirSync, readdirSync, readFileSync, renameSync, statSync, unlinkSync, writeFileSync } from 'node:fs';
6
+ import * as path from 'node:path';
7
+ /** Допустимые символы идентификатора артефакта */
8
+ const ID_PATTERN = /^[A-Za-z0-9._-]+$/;
9
+ /** Максимальная длина текста эксперта в отчёте */
10
+ const MAX_EXPERT_TEXT_CHARS = 4000;
11
+ /** Дополняет число ведущим нулём */
12
+ function pad2(value) {
13
+ return value < 10 ? `0${value}` : String(value);
14
+ }
15
+ /**
16
+ * Создаёт идентификатор артефакта вида `YYYYMMDD-HHMMSS-<4 hex>` (UTC)
17
+ */
18
+ export function createArtifactId(now) {
19
+ const d = now ?? new Date();
20
+ const date = `${d.getUTCFullYear()}${pad2(d.getUTCMonth() + 1)}${pad2(d.getUTCDate())}` +
21
+ `-${pad2(d.getUTCHours())}${pad2(d.getUTCMinutes())}${pad2(d.getUTCSeconds())}`;
22
+ const hex = Math.floor(Math.random() * 0xffff)
23
+ .toString(16)
24
+ .padStart(4, '0');
25
+ return `${date}-${hex}`;
26
+ }
27
+ /**
28
+ * Определяет корневой каталог артефактов.
29
+ * `false` запрещает сохранение и бросает ошибку.
30
+ */
31
+ export function resolveArtifactRoot(config) {
32
+ const cwd = config.cwd ?? process.cwd();
33
+ const artifacts = config.artifacts;
34
+ if (artifacts === false) {
35
+ throw new Error('Сохранение артефактов отключено (artifacts: false)');
36
+ }
37
+ if (typeof artifacts === 'string') {
38
+ return path.resolve(cwd, artifacts);
39
+ }
40
+ return path.resolve(cwd, '.consilium', 'runs');
41
+ }
42
+ /** Очищает имя агента для безопасного имени файла */
43
+ function sanitizeAgentName(name) {
44
+ const clean = name.replace(/[^A-Za-z0-9._-]/g, '_').slice(0, 120);
45
+ if (clean.length === 0 || clean === '.' || clean === '..') {
46
+ return '_';
47
+ }
48
+ return clean;
49
+ }
50
+ /** Атомарно записывает файл (tmp + rename) */
51
+ function writeFileAtomic(target, content) {
52
+ const tmp = `${target}.${process.pid}.${Math.floor(Math.random() * 0xffffffff).toString(16)}.tmp`;
53
+ writeFileSync(tmp, content, 'utf8');
54
+ try {
55
+ renameSync(tmp, target);
56
+ }
57
+ catch (error) {
58
+ try {
59
+ unlinkSync(tmp);
60
+ }
61
+ catch {
62
+ // Уборка tmp не должна маскировать исходную ошибку
63
+ }
64
+ throw new Error(`Не удалось записать ${target}: ${error.message}`);
65
+ }
66
+ }
67
+ /** Проверяет, что значение — plain object */
68
+ function isRecord(value) {
69
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
70
+ }
71
+ /** Проверяет и приводит сырой JSON к ArtifactRun */
72
+ function validateArtifactRun(data, source) {
73
+ if (!isRecord(data)) {
74
+ throw new Error(`Некорректный артефакт ${source}: корень должен быть объектом`);
75
+ }
76
+ if (typeof data['id'] !== 'string' || data['id'].length === 0) {
77
+ throw new Error(`Некорректный артефакт ${source}: поле "id" должно быть непустой строкой`);
78
+ }
79
+ if (typeof data['createdAt'] !== 'string' || data['createdAt'].length === 0) {
80
+ throw new Error(`Некорректный артефакт ${source}: поле "createdAt" должно быть непустой строкой`);
81
+ }
82
+ if (typeof data['task'] !== 'string') {
83
+ throw new Error(`Некорректный артефакт ${source}: поле "task" должно быть строкой`);
84
+ }
85
+ if (typeof data['success'] !== 'boolean') {
86
+ throw new Error(`Некорректный артефакт ${source}: поле "success" должно быть boolean`);
87
+ }
88
+ if (typeof data['text'] !== 'string') {
89
+ throw new Error(`Некорректный артефакт ${source}: поле "text" должно быть строкой`);
90
+ }
91
+ if (!Array.isArray(data['experts'])) {
92
+ throw new Error(`Некорректный артефакт ${source}: поле "experts" должно быть массивом`);
93
+ }
94
+ if (!isRecord(data['models'])) {
95
+ throw new Error(`Некорректный артефакт ${source}: поле "models" должно быть объектом`);
96
+ }
97
+ for (const item of data['experts']) {
98
+ if (!isRecord(item) || typeof item['agent'] !== 'string' || typeof item['text'] !== 'string') {
99
+ throw new Error(`Некорректный артефакт ${source}: каждый эксперт должен иметь строковые "agent" и "text"`);
100
+ }
101
+ if (typeof item['success'] !== 'boolean') {
102
+ throw new Error(`Некорректный артефакт ${source}: поле эксперта "success" должно быть boolean`);
103
+ }
104
+ }
105
+ return data;
106
+ }
107
+ /**
108
+ * Сохраняет запуск в `<root>/<id>/`.
109
+ * Структура: `run.json`, `report.md`, `experts/<agent>.md`.
110
+ * При коллизии id добавляет суффикс `-2`, `-3`, … и обновляет `run.id`.
111
+ * Возвращает ссылку с абсолютным `dir`.
112
+ */
113
+ export function saveArtifact(run, options) {
114
+ const root = path.resolve(options.root ?? resolveArtifactRoot({}));
115
+ if (!ID_PATTERN.test(run.id) || run.id === '.' || run.id === '..') {
116
+ throw new Error(`Некорректный id артефакта: "${run.id}"`);
117
+ }
118
+ let finalId = run.id;
119
+ let counter = 2;
120
+ while (existsSync(path.join(root, finalId))) {
121
+ finalId = `${run.id}-${counter}`;
122
+ counter += 1;
123
+ }
124
+ const stored = finalId === run.id ? run : { ...run, id: finalId };
125
+ const dir = path.join(root, finalId);
126
+ const expertsDir = path.join(dir, 'experts');
127
+ mkdirSync(expertsDir, { recursive: true });
128
+ writeFileAtomic(path.join(dir, 'report.md'), formatArtifact(stored));
129
+ const usedNames = new Set();
130
+ for (const expert of stored.experts) {
131
+ let base = sanitizeAgentName(expert.agent);
132
+ let name = base;
133
+ let dup = 2;
134
+ while (usedNames.has(name)) {
135
+ name = `${base}-${dup}`;
136
+ dup += 1;
137
+ }
138
+ usedNames.add(name);
139
+ const header = `# Эксперт: ${expert.agent}\n\n` +
140
+ `- Модель: ${expert.model ?? '—'}\n` +
141
+ `- Статус: ${expert.success ? 'успех' : 'ошибка'}\n` +
142
+ (expert.errorCode !== undefined ? `- Код ошибки: ${expert.errorCode}\n` : '') +
143
+ (expert.errorMessage !== undefined ? `- Ошибка: ${expert.errorMessage}\n` : '') +
144
+ (expert.duration !== undefined ? `- Длительность: ${expert.duration} мс\n` : '') +
145
+ `\n---\n\n`;
146
+ writeFileAtomic(path.join(expertsDir, `${name}.md`), `${header}${expert.text}\n`);
147
+ }
148
+ // run.json пишем последним: недописанный каталог не должен выглядеть артефактом.
149
+ writeFileAtomic(path.join(dir, 'run.json'), `${JSON.stringify(stored, null, 2)}\n`);
150
+ return { id: finalId, dir: path.resolve(dir) };
151
+ }
152
+ /** Проверяет запись каталога как артефакт (id + createdAt), ошибки гасит */
153
+ function tryReadRef(dir) {
154
+ const runFile = path.join(dir, 'run.json');
155
+ if (!existsSync(runFile)) {
156
+ return null;
157
+ }
158
+ try {
159
+ const st = statSync(runFile);
160
+ if (!st.isFile()) {
161
+ return null;
162
+ }
163
+ const raw = readFileSync(runFile, 'utf8');
164
+ const data = JSON.parse(raw);
165
+ if (!isRecord(data)) {
166
+ return null;
167
+ }
168
+ const { id, createdAt } = data;
169
+ if (typeof id !== 'string' || typeof createdAt !== 'string') {
170
+ return null;
171
+ }
172
+ void createdAt;
173
+ return { id, dir: path.resolve(dir) };
174
+ }
175
+ catch {
176
+ return null;
177
+ }
178
+ }
179
+ /**
180
+ * Перечисляет артефакты в корне (прямые подкаталоги с `run.json`).
181
+ * Битые каталоги молча пропускаются. Сортировка — новые сверху.
182
+ */
183
+ export function listArtifacts(root) {
184
+ const resolved = path.resolve(root);
185
+ let entries;
186
+ try {
187
+ entries = readdirSync(resolved);
188
+ }
189
+ catch {
190
+ return [];
191
+ }
192
+ const refs = [];
193
+ for (const entry of entries) {
194
+ const dir = path.join(resolved, entry);
195
+ try {
196
+ const st = statSync(dir);
197
+ if (!st.isDirectory()) {
198
+ continue;
199
+ }
200
+ }
201
+ catch {
202
+ continue;
203
+ }
204
+ const ref = tryReadRef(dir);
205
+ if (ref === null) {
206
+ continue;
207
+ }
208
+ let createdAt = '';
209
+ try {
210
+ const data = JSON.parse(readFileSync(path.join(dir, 'run.json'), 'utf8'));
211
+ if (isRecord(data) && typeof data['createdAt'] === 'string') {
212
+ createdAt = data['createdAt'];
213
+ }
214
+ }
215
+ catch {
216
+ continue;
217
+ }
218
+ refs.push({ ref, createdAt });
219
+ }
220
+ refs.sort((x, y) => (y.createdAt < x.createdAt ? -1 : y.createdAt > x.createdAt ? 1 : 0));
221
+ return refs.map(item => item.ref);
222
+ }
223
+ /** Проверяет, что строка — безопасный id (без `..` и разделителей) */
224
+ function assertSafeId(id) {
225
+ if (!ID_PATTERN.test(id) || id === '.' || id === '..' || id.includes('..')) {
226
+ throw new Error(`Некорректный идентификатор артефакта: "${id}"`);
227
+ }
228
+ if (id.includes('/') || id.includes('\\') || id.includes('\0')) {
229
+ throw new Error(`Некорректный идентификатор артефакта: "${id}"`);
230
+ }
231
+ }
232
+ /**
233
+ * Загружает артефакт по id или по пути (каталог либо `run.json`).
234
+ * Относительные пути резолвятся против `root`, затем против cwd.
235
+ */
236
+ export function loadArtifact(idOrPath, root) {
237
+ const resolvedRoot = path.resolve(root);
238
+ const looksLikePath = idOrPath.includes('/') ||
239
+ idOrPath.includes('\\') ||
240
+ idOrPath === '.' ||
241
+ idOrPath === '..' ||
242
+ idOrPath.endsWith('.json');
243
+ if (!looksLikePath && ID_PATTERN.test(idOrPath) && idOrPath !== '..' && !idOrPath.includes('..')) {
244
+ const file = path.join(resolvedRoot, idOrPath, 'run.json');
245
+ let raw;
246
+ try {
247
+ raw = readFileSync(file, 'utf8');
248
+ }
249
+ catch {
250
+ throw new Error(`Артефакт не найден: "${idOrPath}" (ожидался ${file})`);
251
+ }
252
+ let data;
253
+ try {
254
+ data = JSON.parse(raw);
255
+ }
256
+ catch {
257
+ throw new Error(`Некорректный JSON артефакта: ${file}`);
258
+ }
259
+ return validateArtifactRun(data, file);
260
+ }
261
+ // Форма пути: сначала проверяем id-подобные без разделителей как traversal-атаку
262
+ if (!looksLikePath) {
263
+ assertSafeId(idOrPath);
264
+ }
265
+ let candidate = idOrPath;
266
+ if (!path.isAbsolute(candidate)) {
267
+ const againstRoot = path.join(resolvedRoot, candidate);
268
+ candidate = existsSync(againstRoot) ? againstRoot : path.resolve(candidate);
269
+ }
270
+ // Читать можно только внутри каталога артефактов: id-форма это уже гарантирует,
271
+ // а форма пути — нет.
272
+ const relative = path.relative(resolvedRoot, path.resolve(candidate));
273
+ if (relative.startsWith('..') || path.isAbsolute(relative)) {
274
+ throw new Error(`Путь вне каталога артефактов: "${idOrPath}" (разрешён только ${resolvedRoot})`);
275
+ }
276
+ let file = candidate;
277
+ try {
278
+ const st = statSync(candidate);
279
+ if (st.isDirectory()) {
280
+ file = path.join(candidate, 'run.json');
281
+ }
282
+ }
283
+ catch {
284
+ throw new Error(`Артефакт не найден: "${idOrPath}"`);
285
+ }
286
+ let raw;
287
+ try {
288
+ raw = readFileSync(file, 'utf8');
289
+ }
290
+ catch {
291
+ throw new Error(`Артефакт не найден: "${idOrPath}" (ожидался ${file})`);
292
+ }
293
+ let data;
294
+ try {
295
+ data = JSON.parse(raw);
296
+ }
297
+ catch {
298
+ throw new Error(`Некорректный JSON артефакта: ${file}`);
299
+ }
300
+ return validateArtifactRun(data, file);
301
+ }
302
+ /** Форматирует расход токенов одной строкой */
303
+ function formatUsageLine(usage) {
304
+ if (usage === undefined) {
305
+ return '—';
306
+ }
307
+ const parts = [];
308
+ if (usage.inputTokens !== undefined) {
309
+ parts.push(`вход: ${usage.inputTokens}`);
310
+ }
311
+ if (usage.outputTokens !== undefined) {
312
+ parts.push(`выход: ${usage.outputTokens}`);
313
+ }
314
+ if (usage.reasoningTokens !== undefined) {
315
+ parts.push(`рассуждения: ${usage.reasoningTokens}`);
316
+ }
317
+ if (usage.cacheReadTokens !== undefined) {
318
+ parts.push(`кэш-чтение: ${usage.cacheReadTokens}`);
319
+ }
320
+ if (usage.cacheWriteTokens !== undefined) {
321
+ parts.push(`кэш-запись: ${usage.cacheWriteTokens}`);
322
+ }
323
+ if (usage.cost !== undefined) {
324
+ parts.push(`стоимость: $${usage.cost}`);
325
+ }
326
+ return parts.length > 0 ? parts.join(', ') : '—';
327
+ }
328
+ /** Обрезает текст до лимита с пометкой */
329
+ function truncateText(text, limit) {
330
+ if (text.length <= limit) {
331
+ return text;
332
+ }
333
+ return `${text.slice(0, limit)}\n\n[… обрезано: ${text.length - limit} символов из ${text.length} …]`;
334
+ }
335
+ /**
336
+ * Форматирует артефакт в читаемый русскоязычный markdown-отчёт
337
+ */
338
+ export function formatArtifact(run) {
339
+ const lines = [];
340
+ lines.push(`# Отчёт консилиума: ${run.id}`);
341
+ lines.push('');
342
+ lines.push(`- Дата: ${run.createdAt}`);
343
+ lines.push(`- Статус: ${run.success ? '✅ успех' : '❌ ошибка'}`);
344
+ lines.push('');
345
+ lines.push('## Задача');
346
+ lines.push('');
347
+ lines.push(run.task);
348
+ lines.push('');
349
+ lines.push('## Модели');
350
+ lines.push('');
351
+ const modelKeys = Object.keys(run.models);
352
+ if (modelKeys.length === 0) {
353
+ lines.push('Модели не указаны.');
354
+ }
355
+ else {
356
+ for (const name of modelKeys) {
357
+ lines.push(`- ${name}: ${run.models[name] ?? '—'}`);
358
+ }
359
+ }
360
+ lines.push('');
361
+ lines.push(`## Эксперты (${run.experts.length})`);
362
+ lines.push('');
363
+ if (run.experts.length === 0) {
364
+ lines.push('Нет ответов экспертов.');
365
+ }
366
+ else {
367
+ for (const expert of run.experts) {
368
+ lines.push(`### ${expert.agent}`);
369
+ lines.push('');
370
+ lines.push(`- Модель: ${expert.model ?? '—'}`);
371
+ lines.push(`- Статус: ${expert.success ? '✅ успех' : '❌ ошибка'}`);
372
+ if (expert.errorCode !== undefined) {
373
+ lines.push(`- Код ошибки: ${expert.errorCode}`);
374
+ }
375
+ if (expert.errorMessage !== undefined) {
376
+ lines.push(`- Ошибка: ${expert.errorMessage}`);
377
+ }
378
+ if (expert.duration !== undefined) {
379
+ lines.push(`- Длительность: ${expert.duration} мс`);
380
+ }
381
+ lines.push(`- Расход: ${formatUsageLine(expert.usage)}`);
382
+ lines.push('');
383
+ lines.push(truncateText(expert.text, MAX_EXPERT_TEXT_CHARS));
384
+ lines.push('');
385
+ }
386
+ }
387
+ lines.push('## Итог');
388
+ lines.push('');
389
+ lines.push(run.text);
390
+ lines.push('');
391
+ lines.push('## Расход');
392
+ lines.push('');
393
+ lines.push(`- Суммарно: ${formatUsageLine(run.usage)}`);
394
+ lines.push('');
395
+ return lines.join('\n');
396
+ }
397
+ /** Сравнивает два артефакта и возвращает markdown-отчёт */
398
+ export function diffArtifacts(a, b) {
399
+ const lines = [];
400
+ lines.push(`# Сравнение запусков: ${a.id} ↔ ${b.id}`);
401
+ lines.push('');
402
+ lines.push(`- Задача: ${a.task === b.task ? 'без изменений' : 'ИЗМЕНИЛАСЬ'}`);
403
+ if (a.task !== b.task) {
404
+ lines.push(` - Было: ${a.task}`);
405
+ lines.push(` - Стало: ${b.task}`);
406
+ }
407
+ lines.push(`- Даты: ${a.createdAt} → ${b.createdAt}`);
408
+ lines.push(`- Статус: ${a.success ? '✅' : '❌'} → ${b.success ? '✅' : '❌'}`);
409
+ lines.push('');
410
+ lines.push('## Модели');
411
+ lines.push('');
412
+ lines.push('| Агент | Было | Стало |');
413
+ lines.push('| --- | --- | --- |');
414
+ const names = new Set([...Object.keys(a.models), ...Object.keys(b.models)]);
415
+ if (names.size === 0) {
416
+ lines.push('| — | — | — |');
417
+ }
418
+ else {
419
+ for (const name of [...names].sort()) {
420
+ const before = a.models[name] ?? '—';
421
+ const after = b.models[name] ?? '—';
422
+ const mark = before === after ? '' : ' ⚠';
423
+ lines.push(`| ${name} | ${before} | ${after}${mark} |`);
424
+ }
425
+ }
426
+ lines.push('');
427
+ lines.push('## Эксперты');
428
+ lines.push('');
429
+ lines.push('| Агент | Статус | Δ символов |');
430
+ lines.push('| --- | --- | --- |');
431
+ const mapA = new Map(a.experts.map(e => [e.agent, e]));
432
+ const mapB = new Map(b.experts.map(e => [e.agent, e]));
433
+ const allAgents = new Set([...mapA.keys(), ...mapB.keys()]);
434
+ if (allAgents.size === 0) {
435
+ lines.push('| — | нет экспертов | — |');
436
+ }
437
+ else {
438
+ for (const name of [...allAgents].sort()) {
439
+ const ea = mapA.get(name);
440
+ const eb = mapB.get(name);
441
+ if (ea !== undefined && eb === undefined) {
442
+ lines.push(`| ${name} | удалён | −${ea.text.length} |`);
443
+ }
444
+ else if (ea === undefined && eb !== undefined) {
445
+ lines.push(`| ${name} | добавлен | +${eb.text.length} |`);
446
+ }
447
+ else if (ea !== undefined && eb !== undefined) {
448
+ const delta = eb.text.length - ea.text.length;
449
+ const status = ea.text === eb.text && ea.success === eb.success ? 'без изменений' : 'изменён';
450
+ const deltaStr = delta === 0 ? '0' : delta > 0 ? `+${delta}` : `${delta}`;
451
+ lines.push(`| ${name} | ${status} | ${deltaStr} |`);
452
+ }
453
+ }
454
+ }
455
+ lines.push('');
456
+ lines.push('## Итоговый текст');
457
+ lines.push('');
458
+ const delta = b.text.length - a.text.length;
459
+ lines.push(`- Длина: ${a.text.length} → ${b.text.length} (Δ ${delta >= 0 ? `+${delta}` : `${delta}`})`);
460
+ lines.push(`- Текст ${a.text === b.text ? 'без изменений' : 'ИЗМЕНИЛСЯ'}`);
461
+ lines.push('');
462
+ return lines.join('\n');
463
+ }
464
+ //# sourceMappingURL=artifacts.js.map