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.
- package/LICENSE +21 -0
- package/README.md +499 -3
- package/README.ru.md +500 -0
- package/README.zh.md +188 -0
- package/bin/cli.js +19 -0
- package/bin/mcp.js +24 -0
- package/consilium.config.example.json +84 -0
- package/dist/agents.d.ts +79 -0
- package/dist/agents.d.ts.map +1 -0
- package/dist/agents.js +1051 -0
- package/dist/agents.js.map +1 -0
- package/dist/artifacts.d.ts +75 -0
- package/dist/artifacts.d.ts.map +1 -0
- package/dist/artifacts.js +464 -0
- package/dist/artifacts.js.map +1 -0
- package/dist/cli.d.ts +12 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +1392 -0
- package/dist/cli.js.map +1 -0
- package/dist/compat.d.ts +160 -0
- package/dist/compat.d.ts.map +1 -0
- package/dist/compat.js +419 -0
- package/dist/compat.js.map +1 -0
- package/dist/config.d.ts +112 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +728 -0
- package/dist/config.js.map +1 -0
- package/dist/consensus.d.ts +73 -0
- package/dist/consensus.d.ts.map +1 -0
- package/dist/consensus.js +273 -0
- package/dist/consensus.js.map +1 -0
- package/dist/defaults.d.ts +34 -0
- package/dist/defaults.d.ts.map +1 -0
- package/dist/defaults.js +102 -0
- package/dist/defaults.js.map +1 -0
- package/dist/doctor.d.ts +27 -0
- package/dist/doctor.d.ts.map +1 -0
- package/dist/doctor.js +798 -0
- package/dist/doctor.js.map +1 -0
- package/dist/fallback.d.ts +50 -0
- package/dist/fallback.d.ts.map +1 -0
- package/dist/fallback.js +134 -0
- package/dist/fallback.js.map +1 -0
- package/dist/git.d.ts +28 -0
- package/dist/git.d.ts.map +1 -0
- package/dist/git.js +71 -0
- package/dist/git.js.map +1 -0
- package/dist/index.d.ts +100 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +653 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp.d.ts +20 -0
- package/dist/mcp.d.ts.map +1 -0
- package/dist/mcp.js +1215 -0
- package/dist/mcp.js.map +1 -0
- package/dist/models.d.ts +97 -0
- package/dist/models.d.ts.map +1 -0
- package/dist/models.js +873 -0
- package/dist/models.js.map +1 -0
- package/dist/plugin.d.ts +59 -0
- package/dist/plugin.d.ts.map +1 -0
- package/dist/plugin.js +223 -0
- package/dist/plugin.js.map +1 -0
- package/dist/presets.d.ts +27 -0
- package/dist/presets.d.ts.map +1 -0
- package/dist/presets.js +86 -0
- package/dist/presets.js.map +1 -0
- package/dist/replay.d.ts +37 -0
- package/dist/replay.d.ts.map +1 -0
- package/dist/replay.js +103 -0
- package/dist/replay.js.map +1 -0
- package/dist/report.d.ts +28 -0
- package/dist/report.d.ts.map +1 -0
- package/dist/report.js +300 -0
- package/dist/report.js.map +1 -0
- package/dist/smart-experts.d.ts +44 -0
- package/dist/smart-experts.d.ts.map +1 -0
- package/dist/smart-experts.js +242 -0
- package/dist/smart-experts.js.map +1 -0
- package/dist/stream.d.ts +50 -0
- package/dist/stream.d.ts.map +1 -0
- package/dist/stream.js +219 -0
- package/dist/stream.js.map +1 -0
- package/dist/tool-run.d.ts +49 -0
- package/dist/tool-run.d.ts.map +1 -0
- package/dist/tool-run.js +143 -0
- package/dist/tool-run.js.map +1 -0
- package/dist/types.d.ts +352 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +6 -0
- package/dist/types.js.map +1 -0
- package/dist/variants.d.ts +30 -0
- package/dist/variants.d.ts.map +1 -0
- package/dist/variants.js +111 -0
- package/dist/variants.js.map +1 -0
- package/dist/verify.d.ts +33 -0
- package/dist/verify.d.ts.map +1 -0
- package/dist/verify.js +80 -0
- package/dist/verify.js.map +1 -0
- package/dist/watch.d.ts +73 -0
- package/dist/watch.d.ts.map +1 -0
- package/dist/watch.js +350 -0
- package/dist/watch.js.map +1 -0
- package/docs/session-and-plugin.md +642 -0
- package/package.json +90 -6
- package/schema/config.schema.json +100 -0
package/dist/tool-run.js
ADDED
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Shared use-case for running the Consilium council as a tool.
|
|
3
|
+
* Used by the native OpenCode V2 plugin (and, later, other hosts).
|
|
4
|
+
* No MCP or `@opencode/plugin` imports here — pure library orchestration.
|
|
5
|
+
* @module lv24-opencode-consilium/tool-run
|
|
6
|
+
*/
|
|
7
|
+
import { existsSync } from 'node:fs';
|
|
8
|
+
import { isAbsolute, relative, resolve } from 'node:path';
|
|
9
|
+
import { Consilium, cloneConfig, loadConfig } from './index.js';
|
|
10
|
+
import { CONFIG_FILE_NAMES } from './defaults.js';
|
|
11
|
+
import { applyPreset } from './presets.js';
|
|
12
|
+
/** Загружает конфиг из workspace активного проекта, если он там есть */
|
|
13
|
+
function loadConfigForWorkspace(workspace) {
|
|
14
|
+
if (workspace !== undefined) {
|
|
15
|
+
for (const name of CONFIG_FILE_NAMES) {
|
|
16
|
+
const candidate = resolve(workspace, name);
|
|
17
|
+
if (existsSync(candidate)) {
|
|
18
|
+
return loadConfig(candidate).config;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
return loadConfig().config;
|
|
23
|
+
}
|
|
24
|
+
function truncateText(text, maxLength) {
|
|
25
|
+
return text.length > maxLength ? `${text.slice(0, maxLength)}…` : text;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Formats a council result for chat display: chair text, expert opinions
|
|
29
|
+
* (truncated to 4000 chars each) and a JSON summary block.
|
|
30
|
+
*/
|
|
31
|
+
export function formatToolResult(result) {
|
|
32
|
+
const sections = [result.text, '---', '## Мнения экспертов'];
|
|
33
|
+
for (const expert of result.experts) {
|
|
34
|
+
sections.push(`### ${expert.agent} (${expert.model ?? 'default'})`);
|
|
35
|
+
sections.push(truncateText(expert.text, 4000));
|
|
36
|
+
}
|
|
37
|
+
const consensusSource = result.metadata?.consensus;
|
|
38
|
+
let consensus;
|
|
39
|
+
if (consensusSource !== null &&
|
|
40
|
+
typeof consensusSource === 'object' &&
|
|
41
|
+
!Array.isArray(consensusSource)) {
|
|
42
|
+
const report = consensusSource;
|
|
43
|
+
consensus = {
|
|
44
|
+
agreement: report.agreement,
|
|
45
|
+
averageSimilarity: report.averageSimilarity
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
const models = {};
|
|
49
|
+
for (const expert of result.experts) {
|
|
50
|
+
if (expert.model)
|
|
51
|
+
models[expert.agent] = expert.model;
|
|
52
|
+
}
|
|
53
|
+
const summary = {
|
|
54
|
+
success: result.success,
|
|
55
|
+
totalTime: result.totalTime,
|
|
56
|
+
usage: result.usage,
|
|
57
|
+
cost: result.metadata?.cost,
|
|
58
|
+
consensus,
|
|
59
|
+
models
|
|
60
|
+
};
|
|
61
|
+
sections.push('```json');
|
|
62
|
+
sections.push(JSON.stringify(summary, null, 2));
|
|
63
|
+
sections.push('```');
|
|
64
|
+
const artifacts = result.metadata?.artifacts;
|
|
65
|
+
if (artifacts !== null && typeof artifacts === 'object' && !Array.isArray(artifacts)) {
|
|
66
|
+
const dir = artifacts.dir;
|
|
67
|
+
if (typeof dir === 'string') {
|
|
68
|
+
sections.push(`**Artifacts:** \`${dir}\``);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
return sections.join('\n\n');
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Runs the council with the given tool arguments.
|
|
75
|
+
* Throws on empty task or unknown preset; never catches run errors
|
|
76
|
+
* (the caller maps them to a visible tool result).
|
|
77
|
+
*/
|
|
78
|
+
export async function runConsiliumTool(args, baseConfig, options = {}) {
|
|
79
|
+
const task = args.task;
|
|
80
|
+
if (typeof task !== 'string' || task.trim().length === 0) {
|
|
81
|
+
throw new Error('"task" is required and must be a non-empty string');
|
|
82
|
+
}
|
|
83
|
+
if (options.signal?.aborted === true) {
|
|
84
|
+
throw new Error('Consilium run aborted');
|
|
85
|
+
}
|
|
86
|
+
const workspace = options.workspace?.trim();
|
|
87
|
+
let config = baseConfig !== undefined
|
|
88
|
+
? cloneConfig(baseConfig)
|
|
89
|
+
: loadConfigForWorkspace(workspace);
|
|
90
|
+
if (config.cwd === undefined && workspace !== undefined && workspace.length > 0) {
|
|
91
|
+
config.cwd = workspace;
|
|
92
|
+
}
|
|
93
|
+
if (args.preset !== undefined) {
|
|
94
|
+
// applyPreset throws on unknown preset names — surfaced to the caller.
|
|
95
|
+
config = applyPreset(config, args.preset);
|
|
96
|
+
}
|
|
97
|
+
if (args.consensus !== undefined)
|
|
98
|
+
config.consensus = args.consensus;
|
|
99
|
+
if (args.smartExperts !== undefined)
|
|
100
|
+
config.smartExperts = args.smartExperts;
|
|
101
|
+
if (args.maxCost !== undefined)
|
|
102
|
+
config.maxCost = args.maxCost;
|
|
103
|
+
if (args.fallbackModels !== undefined)
|
|
104
|
+
config.fallbackModels = args.fallbackModels;
|
|
105
|
+
if (args.session !== undefined)
|
|
106
|
+
config.session = args.session;
|
|
107
|
+
if (typeof args.artifacts === 'string') {
|
|
108
|
+
const workspace = resolve(config.cwd ?? process.cwd());
|
|
109
|
+
const target = resolve(workspace, args.artifacts);
|
|
110
|
+
const rel = relative(workspace, target);
|
|
111
|
+
if (rel.startsWith('..') || isAbsolute(rel)) {
|
|
112
|
+
throw new Error('"artifacts" must stay inside the workspace');
|
|
113
|
+
}
|
|
114
|
+
config.artifacts = target;
|
|
115
|
+
}
|
|
116
|
+
else if (args.artifacts !== undefined) {
|
|
117
|
+
config.artifacts = args.artifacts;
|
|
118
|
+
}
|
|
119
|
+
const runOptions = {};
|
|
120
|
+
if (args.experts !== undefined)
|
|
121
|
+
runOptions.experts = args.experts;
|
|
122
|
+
if (args.chair !== undefined)
|
|
123
|
+
runOptions.chair = args.chair;
|
|
124
|
+
if (args.timeoutMs !== undefined)
|
|
125
|
+
runOptions.timeout = args.timeoutMs;
|
|
126
|
+
const consilium = new Consilium(config);
|
|
127
|
+
const onAbort = () => {
|
|
128
|
+
consilium.cancel();
|
|
129
|
+
};
|
|
130
|
+
options.signal?.addEventListener('abort', onAbort, { once: true });
|
|
131
|
+
try {
|
|
132
|
+
const result = await consilium.run(task, runOptions);
|
|
133
|
+
return {
|
|
134
|
+
text: formatToolResult(result),
|
|
135
|
+
isError: !result.success,
|
|
136
|
+
metadata: result.metadata
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
finally {
|
|
140
|
+
options.signal?.removeEventListener('abort', onAbort);
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
//# sourceMappingURL=tool-run.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-run.js","sourceRoot":"","sources":["../src/tool-run.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,352 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Типы публичного API Consilium
|
|
3
|
+
* @module lv24-opencode-consilium
|
|
4
|
+
*/
|
|
5
|
+
/** Код ошибки агента */
|
|
6
|
+
export type AgentErrorCode = 'TIMEOUT' | 'EMPTY_RESPONSE' | 'SPAWN_ERROR' | 'PARSE_ERROR' | 'EXIT_ERROR' | 'CANCELLED' | 'AGENT_NOT_FOUND' | 'MODEL_UNAVAILABLE' | 'RATE_LIMITED' | 'COST_LIMIT';
|
|
7
|
+
/** Расход токенов и стоимость одного вызова */
|
|
8
|
+
export interface AgentUsage {
|
|
9
|
+
inputTokens?: number;
|
|
10
|
+
outputTokens?: number;
|
|
11
|
+
reasoningTokens?: number;
|
|
12
|
+
cacheReadTokens?: number;
|
|
13
|
+
cacheWriteTokens?: number;
|
|
14
|
+
cost?: number;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Результат одного агента
|
|
18
|
+
*/
|
|
19
|
+
export interface AgentResult {
|
|
20
|
+
/** Имя агента */
|
|
21
|
+
agent: string;
|
|
22
|
+
/** Фактически использованная модель (provider/model) */
|
|
23
|
+
model?: string;
|
|
24
|
+
/** Текст ответа */
|
|
25
|
+
text: string;
|
|
26
|
+
/** Успешность выполнения */
|
|
27
|
+
success: boolean;
|
|
28
|
+
/** Длительность в мс (включая retry) */
|
|
29
|
+
duration?: number;
|
|
30
|
+
/** Код ошибки (если есть) */
|
|
31
|
+
errorCode?: AgentErrorCode;
|
|
32
|
+
/** Человекочитаемое сообщение об ошибке */
|
|
33
|
+
errorMessage?: string;
|
|
34
|
+
/** Номер попытки */
|
|
35
|
+
attempt?: number;
|
|
36
|
+
/** Код выхода процесса OpenCode */
|
|
37
|
+
exitCode?: number | null;
|
|
38
|
+
/** Задержка до повтора, которую сообщил провайдер (мс) */
|
|
39
|
+
retryAfterMs?: number;
|
|
40
|
+
/** Идентификатор сессии OpenCode, в которой выполнялся агент */
|
|
41
|
+
sessionId?: string;
|
|
42
|
+
/** Токены и стоимость */
|
|
43
|
+
usage?: AgentUsage;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Результат консилиума
|
|
47
|
+
*/
|
|
48
|
+
export interface ConsiliumResult {
|
|
49
|
+
/** Итоговый текст председателя */
|
|
50
|
+
text: string;
|
|
51
|
+
/** Результаты экспертов */
|
|
52
|
+
experts: AgentResult[];
|
|
53
|
+
/** Результат председателя */
|
|
54
|
+
chair: AgentResult;
|
|
55
|
+
/** Общее время выполнения, мс */
|
|
56
|
+
totalTime: number;
|
|
57
|
+
/** Реальное wall-clock время параллельной фазы экспертов, мс */
|
|
58
|
+
parallelTime: number;
|
|
59
|
+
/** Успешность */
|
|
60
|
+
success: boolean;
|
|
61
|
+
/** Суммарный расход токенов и стоимость */
|
|
62
|
+
usage?: AgentUsage;
|
|
63
|
+
/** Дополнительные данные */
|
|
64
|
+
metadata?: Record<string, unknown>;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Конфигурация эксперта
|
|
68
|
+
*/
|
|
69
|
+
export interface ExpertConfig {
|
|
70
|
+
/** Имя агента */
|
|
71
|
+
name: string;
|
|
72
|
+
/** Модель в формате provider/model (передаётся как --model) */
|
|
73
|
+
model?: string;
|
|
74
|
+
/** Промпт эксперта (${task} заменяется на задачу) */
|
|
75
|
+
prompt?: string | ((task: string) => string);
|
|
76
|
+
/** Таймаут в мс */
|
|
77
|
+
timeout?: number;
|
|
78
|
+
/** Количество повторных попыток */
|
|
79
|
+
retries?: number;
|
|
80
|
+
/** Приоритет (для сортировки) */
|
|
81
|
+
priority?: number;
|
|
82
|
+
/** Включён ли эксперт */
|
|
83
|
+
enabled?: boolean;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Конфигурация председателя
|
|
87
|
+
*/
|
|
88
|
+
export interface ChairConfig {
|
|
89
|
+
/** Имя агента-председателя */
|
|
90
|
+
agent: string;
|
|
91
|
+
/** Модель в формате provider/model */
|
|
92
|
+
model?: string;
|
|
93
|
+
/** Таймаут в мс */
|
|
94
|
+
timeout?: number;
|
|
95
|
+
/** Кастомный шаблон промпта */
|
|
96
|
+
promptTemplate?: (task: string, experts: AgentResult[]) => string;
|
|
97
|
+
/** Максимальная длина текста одного эксперта в промпте */
|
|
98
|
+
maxExpertTextLength?: number;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Хуки жизненного цикла
|
|
102
|
+
*/
|
|
103
|
+
export interface ConsiliumHooks {
|
|
104
|
+
onStart?: (task: string, config: ConsiliumConfig) => void | Promise<void>;
|
|
105
|
+
onExpertStart?: (expert: string, task: string) => void | Promise<void>;
|
|
106
|
+
onExpertEnd?: (result: AgentResult) => void | Promise<void>;
|
|
107
|
+
onExpertError?: (result: AgentResult) => void | Promise<void>;
|
|
108
|
+
onChairStart?: (task: string, experts: AgentResult[]) => void | Promise<void>;
|
|
109
|
+
onChairEnd?: (result: AgentResult) => void | Promise<void>;
|
|
110
|
+
onChairError?: (result: AgentResult) => void | Promise<void>;
|
|
111
|
+
onEnd?: (result: ConsiliumResult) => void | Promise<void>;
|
|
112
|
+
onError?: (error: Error, context?: unknown) => void | Promise<void>;
|
|
113
|
+
onLog?: (level: 'info' | 'warn' | 'error', message: string, data?: unknown) => void;
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Настройки таймаутов
|
|
117
|
+
*/
|
|
118
|
+
export interface TimeoutConfig {
|
|
119
|
+
/** Таймаут эксперта, мс */
|
|
120
|
+
expert: number;
|
|
121
|
+
/** Таймаут председателя, мс */
|
|
122
|
+
chair: number;
|
|
123
|
+
/** Таймаут graceful shutdown, мс */
|
|
124
|
+
shutdown: number;
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Настройки retry
|
|
128
|
+
*/
|
|
129
|
+
export interface RetryConfig {
|
|
130
|
+
expertRetries: number;
|
|
131
|
+
chairRetries: number;
|
|
132
|
+
delay: number;
|
|
133
|
+
exponentialBackoff: boolean;
|
|
134
|
+
/** Максимальное число одновременно работающих агентов */
|
|
135
|
+
maxConcurrency: number;
|
|
136
|
+
/** Добавлять джиттер к задержке повторов */
|
|
137
|
+
jitter?: boolean;
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Настройки вывода
|
|
141
|
+
*/
|
|
142
|
+
export interface OutputConfig {
|
|
143
|
+
/** Файл для сохранения результата (false — не сохранять) */
|
|
144
|
+
file: string | false;
|
|
145
|
+
/** Формат файла: text, markdown, json */
|
|
146
|
+
format: 'text' | 'markdown' | 'json';
|
|
147
|
+
/** Показывать прогресс */
|
|
148
|
+
progress: boolean;
|
|
149
|
+
/** Уровень логирования */
|
|
150
|
+
logLevel: 'silent' | 'error' | 'warn' | 'info' | 'debug';
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Полная конфигурация
|
|
154
|
+
*/
|
|
155
|
+
export interface ConsiliumConfig {
|
|
156
|
+
version?: string;
|
|
157
|
+
experts: ExpertConfig[];
|
|
158
|
+
chair: ChairConfig;
|
|
159
|
+
excludedAgents?: string[];
|
|
160
|
+
timeouts: TimeoutConfig;
|
|
161
|
+
retry: RetryConfig;
|
|
162
|
+
output: OutputConfig;
|
|
163
|
+
hooks?: ConsiliumHooks;
|
|
164
|
+
/** Рабочая директория для запуска opencode */
|
|
165
|
+
cwd?: string;
|
|
166
|
+
/** Путь к opencode CLI */
|
|
167
|
+
opencodePath?: string;
|
|
168
|
+
/** Дополнительные аргументы opencode */
|
|
169
|
+
opencodeArgs?: string[];
|
|
170
|
+
/** Автоопределение агентов из opencode.json */
|
|
171
|
+
autoDiscoverAgents?: boolean;
|
|
172
|
+
/** Путь к opencode.json */
|
|
173
|
+
opencodeConfigPath?: string;
|
|
174
|
+
/** Использовать приватный сервер (--standalone), чтобы не конфликтовать с запущенным OpenCode */
|
|
175
|
+
standalone?: boolean;
|
|
176
|
+
/** Авто-подтверждение разрешений (--auto) */
|
|
177
|
+
autoApprove?: boolean;
|
|
178
|
+
/** Плагины (инициализируются перед запуском) */
|
|
179
|
+
plugins?: ConsiliumPlugin[];
|
|
180
|
+
/** Сохранять артефакты запусков (true → .consilium/runs, строка → путь) */
|
|
181
|
+
artifacts?: boolean | string;
|
|
182
|
+
/** Добавлять анализ согласия экспертов в промпт председателя и метаданные */
|
|
183
|
+
consensus?: boolean;
|
|
184
|
+
/** Автоматически выбирать экспертов по задаче/диффу */
|
|
185
|
+
smartExperts?: boolean;
|
|
186
|
+
/** Лимит стоимости запуска в USD; при превышении председатель не запускается */
|
|
187
|
+
maxCost?: number;
|
|
188
|
+
/** Запасные модели для RATE_LIMITED/MODEL_UNAVAILABLE (в порядке приоритета) */
|
|
189
|
+
fallbackModels?: string[];
|
|
190
|
+
/** Переиспользовать сессию OpenCode (`run --session`) между запусками */
|
|
191
|
+
session?: string;
|
|
192
|
+
/** Формат отчёта после запуска */
|
|
193
|
+
report?: 'html' | 'pr' | 'markdown';
|
|
194
|
+
/** Файл отчёта (по умолчанию stdout) */
|
|
195
|
+
reportFile?: string;
|
|
196
|
+
/** Вариант модели (`provider/model#variant`) для всех агентов */
|
|
197
|
+
variant?: string;
|
|
198
|
+
/** Задержка watch-режима, мс */
|
|
199
|
+
debounceMs?: number;
|
|
200
|
+
}
|
|
201
|
+
/**
|
|
202
|
+
* Плагин
|
|
203
|
+
*/
|
|
204
|
+
export interface ConsiliumPlugin {
|
|
205
|
+
name: string;
|
|
206
|
+
version?: string;
|
|
207
|
+
init?: (config: ConsiliumConfig) => ConsiliumConfig | Promise<ConsiliumConfig>;
|
|
208
|
+
hooks?: Partial<ConsiliumHooks>;
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* Опции запуска
|
|
212
|
+
*/
|
|
213
|
+
export interface RunOptions {
|
|
214
|
+
/** Имена экспертов */
|
|
215
|
+
experts?: string[];
|
|
216
|
+
/** Имя председателя */
|
|
217
|
+
chair?: string;
|
|
218
|
+
/** Общий таймаут (переопределяет expert timeout) */
|
|
219
|
+
timeout?: number;
|
|
220
|
+
/** Файл для сохранения */
|
|
221
|
+
outputFile?: string;
|
|
222
|
+
/** Тихий режим */
|
|
223
|
+
silent?: boolean;
|
|
224
|
+
/** Дополнительные хуки */
|
|
225
|
+
hooks?: Partial<ConsiliumHooks>;
|
|
226
|
+
/** Метаданные */
|
|
227
|
+
metadata?: Record<string, unknown>;
|
|
228
|
+
/** Пресет (fast, deep, security, review) */
|
|
229
|
+
preset?: string;
|
|
230
|
+
/** Сохранять артефакт запуска */
|
|
231
|
+
artifacts?: boolean | string;
|
|
232
|
+
/** Переопределить анализ согласия */
|
|
233
|
+
consensus?: boolean;
|
|
234
|
+
/** Переопределить умный выбор экспертов */
|
|
235
|
+
smartExperts?: boolean;
|
|
236
|
+
/** Лимит стоимости запуска в USD */
|
|
237
|
+
maxCost?: number;
|
|
238
|
+
/** Запасные модели для RATE_LIMITED/MODEL_UNAVAILABLE */
|
|
239
|
+
fallbackModels?: string[];
|
|
240
|
+
/** Сессия OpenCode для продолжения контекста */
|
|
241
|
+
session?: string;
|
|
242
|
+
}
|
|
243
|
+
/**
|
|
244
|
+
* Статус консилиума
|
|
245
|
+
*/
|
|
246
|
+
export type ConsiliumStatus = 'idle' | 'running_experts' | 'running_chair' | 'completed' | 'failed' | 'cancelled';
|
|
247
|
+
/**
|
|
248
|
+
* Событие прогресса
|
|
249
|
+
*/
|
|
250
|
+
export interface ProgressEvent {
|
|
251
|
+
type: 'expert_start' | 'expert_end' | 'chair_start' | 'chair_end' | 'error';
|
|
252
|
+
agent?: string;
|
|
253
|
+
status: ConsiliumStatus;
|
|
254
|
+
progress: number;
|
|
255
|
+
timestamp: number;
|
|
256
|
+
data?: unknown;
|
|
257
|
+
}
|
|
258
|
+
export type ProgressCallback = (event: ProgressEvent) => void;
|
|
259
|
+
/**
|
|
260
|
+
* Опции CLI
|
|
261
|
+
*/
|
|
262
|
+
export interface CLIOptions {
|
|
263
|
+
task: string;
|
|
264
|
+
command?: 'run' | 'init' | 'models' | 'doctor' | 'mcp' | 'watch' | 'hooks' | 'help' | 'version';
|
|
265
|
+
config?: string;
|
|
266
|
+
experts?: string;
|
|
267
|
+
chair?: string;
|
|
268
|
+
expertTimeout?: number;
|
|
269
|
+
chairTimeout?: number;
|
|
270
|
+
output?: string;
|
|
271
|
+
format?: 'text' | 'markdown' | 'json';
|
|
272
|
+
logLevel?: 'silent' | 'error' | 'warn' | 'info' | 'debug';
|
|
273
|
+
retries?: number;
|
|
274
|
+
silent?: boolean;
|
|
275
|
+
help?: boolean;
|
|
276
|
+
version?: boolean;
|
|
277
|
+
verbose?: boolean;
|
|
278
|
+
listAgents?: boolean;
|
|
279
|
+
init?: boolean;
|
|
280
|
+
dryRun?: boolean;
|
|
281
|
+
/** Пресет */
|
|
282
|
+
preset?: string;
|
|
283
|
+
/** Скачать/использовать бесплатные модели */
|
|
284
|
+
free?: boolean;
|
|
285
|
+
/** Обновить кэш каталога моделей */
|
|
286
|
+
refresh?: boolean;
|
|
287
|
+
/** Лимит вывода моделей */
|
|
288
|
+
limit?: number;
|
|
289
|
+
/** Только доступные (есть ключ) модели */
|
|
290
|
+
available?: boolean;
|
|
291
|
+
/** JSON-вывод */
|
|
292
|
+
json?: boolean;
|
|
293
|
+
/** Применить изменения (init --free) */
|
|
294
|
+
apply?: boolean;
|
|
295
|
+
/** Перезаписать существующие модели агентов */
|
|
296
|
+
force?: boolean;
|
|
297
|
+
/** Файл с задачей */
|
|
298
|
+
taskFile?: string;
|
|
299
|
+
/** Добавить git diff к задаче */
|
|
300
|
+
diff?: boolean;
|
|
301
|
+
/** git diff --staged */
|
|
302
|
+
diffStaged?: boolean;
|
|
303
|
+
/** git diff <base> */
|
|
304
|
+
diffBase?: string;
|
|
305
|
+
/** Не сохранять результат */
|
|
306
|
+
noSave?: boolean;
|
|
307
|
+
/** Проверить модели реальным коротким запросом */
|
|
308
|
+
verify?: boolean;
|
|
309
|
+
/** Пропустить проверку моделей */
|
|
310
|
+
noVerify?: boolean;
|
|
311
|
+
/** Путь/каталог артефактов (true → .consilium/runs) */
|
|
312
|
+
artifacts?: string | boolean;
|
|
313
|
+
/** Не сохранять артефакты */
|
|
314
|
+
noArtifacts?: boolean;
|
|
315
|
+
/** Умный выбор экспертов по задаче/диффу */
|
|
316
|
+
smartExperts?: boolean;
|
|
317
|
+
/** Отключить анализ согласия */
|
|
318
|
+
noConsensus?: boolean;
|
|
319
|
+
/** Отключить джиттер retry */
|
|
320
|
+
noJitter?: boolean;
|
|
321
|
+
/** Повторить сохранённый запуск (файл артефакта) */
|
|
322
|
+
replay?: string;
|
|
323
|
+
/** Сравнить два артефакта */
|
|
324
|
+
diffRuns?: [string, string];
|
|
325
|
+
/** Каталог артефактов (переопределяет .consilium/runs) */
|
|
326
|
+
artifactsDir?: string;
|
|
327
|
+
/** Включить анализ согласия */
|
|
328
|
+
consensus?: boolean;
|
|
329
|
+
/** Лимит стоимости запуска в USD */
|
|
330
|
+
maxCost?: number;
|
|
331
|
+
/** Запасные модели при RATE_LIMITED/MODEL_UNAVAILABLE */
|
|
332
|
+
fallbackModels?: string[];
|
|
333
|
+
/** Сессия OpenCode для продолжения контекста */
|
|
334
|
+
session?: string;
|
|
335
|
+
/** Формат отчёта после запуска */
|
|
336
|
+
report?: 'html' | 'pr' | 'markdown';
|
|
337
|
+
/** Файл отчёта (по умолчанию stdout) */
|
|
338
|
+
reportFile?: string;
|
|
339
|
+
/** Вариант модели (`provider/model#variant`) для всех агентов */
|
|
340
|
+
variant?: string;
|
|
341
|
+
/** Задержка watch-режима, мс */
|
|
342
|
+
debounceMs?: number;
|
|
343
|
+
/** Действие команды hooks */
|
|
344
|
+
hookAction?: 'install' | 'uninstall';
|
|
345
|
+
/** Писать нативный V2-формат конфигурации OpenCode */
|
|
346
|
+
nativeV2?: boolean;
|
|
347
|
+
/** Зарегистрировать MCP-сервер в конфигурации OpenCode */
|
|
348
|
+
mcpInstall?: boolean;
|
|
349
|
+
/** Использовать глобальную конфигурацию OpenCode */
|
|
350
|
+
globalConfig?: boolean;
|
|
351
|
+
}
|
|
352
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Варианты моделей OpenCode (`provider/model#variant`).
|
|
3
|
+
* @module lv24-opencode-consilium
|
|
4
|
+
*
|
|
5
|
+
* Ссылка на модель: `provider/model` с необязательным `#variant`.
|
|
6
|
+
* Провайдер заканчивается на первом `/`; в имени модели `/` допустим;
|
|
7
|
+
* вариант следует за первым `#`; в `provider/model` символа `#` нет.
|
|
8
|
+
*/
|
|
9
|
+
/** Допустимый вариант модели: латиница/цифры, далее латиница/цифры/`._-` */
|
|
10
|
+
export declare const VARIANT_PATTERN: RegExp;
|
|
11
|
+
/** Проверяет вариант (с триммингом); пустой/некорректный — `false` */
|
|
12
|
+
export declare function isValidVariant(variant: string): boolean;
|
|
13
|
+
/** Возвращает часть после первого `#` (пустая — `undefined`); без `#` — `undefined` */
|
|
14
|
+
export declare function variantOf(ref: string): string | undefined;
|
|
15
|
+
/** Убирает `#...` с конца; остальной текст сохраняет как есть (без трима) */
|
|
16
|
+
export declare function stripVariant(ref: string): string;
|
|
17
|
+
/**
|
|
18
|
+
* Ставит вариант на ссылку: `undefined`/`''` — снять вариант,
|
|
19
|
+
* иначе заменить/добавить `#variant`. База обязана содержать `/`.
|
|
20
|
+
*/
|
|
21
|
+
export declare function withVariant(ref: string, variant: string | undefined): string;
|
|
22
|
+
/**
|
|
23
|
+
* Применяет вариант ко всем моделям: у кого вариант уже есть — оставить,
|
|
24
|
+
* корректным `provider/model` без варианта — добавить `#variant`,
|
|
25
|
+
* некорректные id — оставить без изменений. Новый объект, вход не мутирует.
|
|
26
|
+
*/
|
|
27
|
+
export declare function applyVariant(models: Record<string, string | undefined>, variant: string): Record<string, string>;
|
|
28
|
+
/** То же для массива; дедупликация с сохранением порядка */
|
|
29
|
+
export declare function applyVariantList(models: string[], variant: string): string[];
|
|
30
|
+
//# sourceMappingURL=variants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"variants.d.ts","sourceRoot":"","sources":["../src/variants.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,4EAA4E;AAC5E,eAAO,MAAM,eAAe,EAAE,MAAuC,CAAC;AAEtE,sEAAsE;AACtE,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAIvD;AAED,uFAAuF;AACvF,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAEzD;AAED,6EAA6E;AAC7E,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEhD;AASD;;;GAGG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAa5E;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,EAC1C,OAAO,EAAE,MAAM,GACd,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CA2BxB;AAED,4DAA4D;AAC5D,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAuB5E"}
|