@useconductor/conductor 1.0.0 → 1.0.1
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/.github/README.md +374 -7
- package/.github/workflows/ci.yml +3 -1
- package/.github/workflows/claude-code-review.yml +1 -15
- package/.github/workflows/publish.yml +43 -0
- package/README.md +290 -121
- package/dist/cli/commands/audit.d.ts +40 -0
- package/dist/cli/commands/audit.d.ts.map +1 -0
- package/dist/cli/commands/audit.js +272 -0
- package/dist/cli/commands/audit.js.map +1 -0
- package/dist/cli/commands/circuit.d.ts +13 -0
- package/dist/cli/commands/circuit.d.ts.map +1 -0
- package/dist/cli/commands/circuit.js +53 -0
- package/dist/cli/commands/circuit.js.map +1 -0
- package/dist/cli/commands/config.d.ts +31 -0
- package/dist/cli/commands/config.d.ts.map +1 -0
- package/dist/cli/commands/config.js +152 -0
- package/dist/cli/commands/config.js.map +1 -0
- package/dist/cli/commands/init.d.ts +5 -8
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +86 -123
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/marketplace.js +1 -1
- package/dist/cli/commands/onboard.d.ts.map +1 -1
- package/dist/cli/commands/onboard.js +33 -11
- package/dist/cli/commands/onboard.js.map +1 -1
- package/dist/cli/commands/release.d.ts.map +1 -1
- package/dist/cli/commands/release.js +1 -1
- package/dist/cli/commands/release.js.map +1 -1
- package/dist/cli/index.js +146 -10
- package/dist/cli/index.js.map +1 -1
- package/dist/core/audit.d.ts.map +1 -1
- package/dist/core/audit.js +5 -2
- package/dist/core/audit.js.map +1 -1
- package/dist/core/conductor.d.ts.map +1 -1
- package/dist/core/conductor.js +12 -0
- package/dist/core/conductor.js.map +1 -1
- package/dist/core/config.d.ts +3 -0
- package/dist/core/config.d.ts.map +1 -1
- package/dist/core/config.js +46 -2
- package/dist/core/config.js.map +1 -1
- package/dist/core/database.d.ts +3 -0
- package/dist/core/database.d.ts.map +1 -1
- package/dist/core/database.js +26 -0
- package/dist/core/database.js.map +1 -1
- package/dist/core/encryption.d.ts +34 -0
- package/dist/core/encryption.d.ts.map +1 -0
- package/dist/core/encryption.js +96 -0
- package/dist/core/encryption.js.map +1 -0
- package/dist/core/zero-config.d.ts.map +1 -1
- package/dist/core/zero-config.js +1 -4
- package/dist/core/zero-config.js.map +1 -1
- package/dist/dashboard/server.d.ts.map +1 -1
- package/dist/dashboard/server.js +112 -16
- package/dist/dashboard/server.js.map +1 -1
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +30 -2
- package/dist/mcp/server.js.map +1 -1
- package/dist/plugins/builtin/aws.d.ts +31 -0
- package/dist/plugins/builtin/aws.d.ts.map +1 -0
- package/dist/plugins/builtin/aws.js +149 -0
- package/dist/plugins/builtin/aws.js.map +1 -0
- package/dist/plugins/builtin/database.d.ts +1 -0
- package/dist/plugins/builtin/database.d.ts.map +1 -1
- package/dist/plugins/builtin/database.js +26 -1
- package/dist/plugins/builtin/database.js.map +1 -1
- package/dist/plugins/builtin/docker.d.ts +4 -0
- package/dist/plugins/builtin/docker.d.ts.map +1 -1
- package/dist/plugins/builtin/docker.js +20 -1
- package/dist/plugins/builtin/docker.js.map +1 -1
- package/dist/plugins/builtin/gcp.d.ts +28 -0
- package/dist/plugins/builtin/gcp.d.ts.map +1 -0
- package/dist/plugins/builtin/gcp.js +135 -0
- package/dist/plugins/builtin/gcp.js.map +1 -0
- package/dist/plugins/builtin/index.d.ts.map +1 -1
- package/dist/plugins/builtin/index.js +4 -0
- package/dist/plugins/builtin/index.js.map +1 -1
- package/dist/plugins/builtin/jira.d.ts.map +1 -1
- package/dist/plugins/builtin/jira.js +4 -2
- package/dist/plugins/builtin/jira.js.map +1 -1
- package/dist/plugins/builtin/linear.js +1 -1
- package/dist/plugins/builtin/linear.js.map +1 -1
- package/dist/plugins/builtin/shell.js +1 -1
- package/dist/plugins/builtin/shell.js.map +1 -1
- package/dist/plugins/builtin/slack.d.ts +1 -0
- package/dist/plugins/builtin/slack.d.ts.map +1 -1
- package/dist/plugins/builtin/slack.js +9 -1
- package/dist/plugins/builtin/slack.js.map +1 -1
- package/dist/plugins/builtin/spotify.js +1 -1
- package/dist/plugins/builtin/spotify.js.map +1 -1
- package/dist/plugins/builtin/vercel.d.ts.map +1 -1
- package/dist/plugins/builtin/vercel.js +3 -1
- package/dist/plugins/builtin/vercel.js.map +1 -1
- package/dist/security/sso.d.ts +37 -0
- package/dist/security/sso.d.ts.map +1 -0
- package/dist/security/sso.js +92 -0
- package/dist/security/sso.js.map +1 -0
- package/docs/deployment.md +201 -0
- package/docs/plugin-sdk.md +212 -0
- package/package.json +11 -8
- package/src/cli/commands/audit.ts +318 -0
- package/src/cli/commands/circuit.ts +63 -0
- package/src/cli/commands/config.ts +176 -0
- package/src/cli/commands/init.ts +87 -145
- package/src/cli/commands/marketplace.ts +1 -1
- package/src/cli/commands/onboard.ts +33 -11
- package/src/cli/commands/release.ts +13 -6
- package/src/cli/index.ts +165 -11
- package/src/core/audit.ts +5 -2
- package/src/core/conductor.ts +11 -0
- package/src/core/config.ts +47 -2
- package/src/core/database.ts +32 -0
- package/src/core/encryption.ts +110 -0
- package/src/core/zero-config.ts +1 -5
- package/src/dashboard/server.ts +135 -16
- package/src/mcp/server.ts +40 -2
- package/src/plugins/builtin/aws.ts +162 -0
- package/src/plugins/builtin/database.ts +19 -1
- package/src/plugins/builtin/docker.ts +17 -1
- package/src/plugins/builtin/gcp.ts +145 -0
- package/src/plugins/builtin/index.ts +4 -0
- package/src/plugins/builtin/jira.ts +23 -19
- package/src/plugins/builtin/linear.ts +1 -1
- package/src/plugins/builtin/shell.ts +1 -1
- package/src/plugins/builtin/slack.ts +6 -1
- package/src/plugins/builtin/spotify.ts +1 -1
- package/src/plugins/builtin/vercel.ts +3 -1
- package/src/security/sso.ts +124 -0
- package/tests/audit.test.ts +185 -0
- package/tests/circuit-breaker.test.ts +125 -0
- package/tests/docker.test.ts +244 -39
- package/tests/errors.test.ts +122 -0
- package/tests/github.test.ts.skip +392 -0
- package/tests/jira.test.ts +310 -0
- package/tests/linear.test.ts +366 -0
- package/tests/mcp.test.ts.skip +243 -0
- package/tests/notion.test.ts +257 -0
- package/tests/retry.test.ts +104 -0
- package/tests/shell.test.ts +262 -30
- package/tests/slack.test.ts +250 -0
- package/tests/stripe.test.ts +272 -0
- package/tests/validation.test.ts +173 -0
- package/tests/vercel.test.ts +368 -0
- package/tests/zero-config.test.ts +566 -0
- package/C.png +0 -0
- package/tests/mcp.test.ts +0 -14
|
@@ -0,0 +1,272 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* conductor audit — query and verify the tamper-evident audit log.
|
|
3
|
+
*
|
|
4
|
+
* Commands:
|
|
5
|
+
* conductor audit list — filter and display log entries
|
|
6
|
+
* conductor audit verify — verify SHA-256 chain integrity
|
|
7
|
+
* conductor audit tail — stream the log in real time
|
|
8
|
+
* conductor audit export — export entries to JSON or NDJSON
|
|
9
|
+
* conductor audit stats — show summary statistics
|
|
10
|
+
* conductor audit rotate — manually rotate the current log file
|
|
11
|
+
*/
|
|
12
|
+
import fs from 'fs/promises';
|
|
13
|
+
import { createReadStream } from 'fs';
|
|
14
|
+
import path from 'path';
|
|
15
|
+
import readline from 'readline';
|
|
16
|
+
import { AuditLogger } from '../../core/audit.js';
|
|
17
|
+
function getAuditDir(conductor) {
|
|
18
|
+
return path.join(conductor.getConfig().getConfigDir(), 'audit');
|
|
19
|
+
}
|
|
20
|
+
function getAuditFile(conductor) {
|
|
21
|
+
return path.join(getAuditDir(conductor), 'audit.log');
|
|
22
|
+
}
|
|
23
|
+
/** Read all entries from all audit log files, newest files last. */
|
|
24
|
+
async function readAllEntries(conductor) {
|
|
25
|
+
const dir = getAuditDir(conductor);
|
|
26
|
+
const entries = [];
|
|
27
|
+
let files;
|
|
28
|
+
try {
|
|
29
|
+
files = await fs.readdir(dir);
|
|
30
|
+
}
|
|
31
|
+
catch {
|
|
32
|
+
return [];
|
|
33
|
+
}
|
|
34
|
+
const logFiles = files.filter((f) => f.endsWith('.log')).sort();
|
|
35
|
+
for (const file of logFiles) {
|
|
36
|
+
const content = await fs.readFile(path.join(dir, file), 'utf-8').catch(() => '');
|
|
37
|
+
for (const line of content.split('\n').filter((l) => l.trim())) {
|
|
38
|
+
try {
|
|
39
|
+
entries.push(JSON.parse(line));
|
|
40
|
+
}
|
|
41
|
+
catch {
|
|
42
|
+
// skip malformed lines
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
return entries;
|
|
47
|
+
}
|
|
48
|
+
function formatEntry(e) {
|
|
49
|
+
const time = e.timestamp.replace('T', ' ').replace(/\.\d+Z$/, '');
|
|
50
|
+
const icon = e.result === 'success' ? '✓' : e.result === 'failure' ? '✗' : e.result === 'denied' ? '⊘' : '⏱';
|
|
51
|
+
return ` ${icon} ${time} ${e.actor.padEnd(12)} ${e.action.padEnd(16)} ${e.resource}`;
|
|
52
|
+
}
|
|
53
|
+
// ── list ──────────────────────────────────────────────────────────────────────
|
|
54
|
+
export async function auditList(conductor, opts) {
|
|
55
|
+
let entries = await readAllEntries(conductor);
|
|
56
|
+
if (opts.actor)
|
|
57
|
+
entries = entries.filter((e) => e.actor === opts.actor);
|
|
58
|
+
if (opts.action)
|
|
59
|
+
entries = entries.filter((e) => e.action === opts.action);
|
|
60
|
+
if (opts.tool)
|
|
61
|
+
entries = entries.filter((e) => e.resource === opts.tool);
|
|
62
|
+
if (opts.result)
|
|
63
|
+
entries = entries.filter((e) => e.result === opts.result);
|
|
64
|
+
if (opts.since)
|
|
65
|
+
entries = entries.filter((e) => e.timestamp >= opts.since);
|
|
66
|
+
if (opts.until)
|
|
67
|
+
entries = entries.filter((e) => e.timestamp <= opts.until);
|
|
68
|
+
const limit = opts.limit ? parseInt(opts.limit, 10) : 100;
|
|
69
|
+
entries = entries.slice(-limit);
|
|
70
|
+
if (entries.length === 0) {
|
|
71
|
+
console.log('\n No audit entries found.\n');
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
if (opts.json) {
|
|
75
|
+
console.log(JSON.stringify(entries, null, 2));
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
console.log('');
|
|
79
|
+
console.log(` 📋 Audit Log (${entries.length} entries)\n`);
|
|
80
|
+
console.log(` ${'RESULT'.padEnd(3)} ${'TIMESTAMP'.padEnd(19)} ${'ACTOR'.padEnd(12)} ${'ACTION'.padEnd(16)} RESOURCE`);
|
|
81
|
+
console.log(' ' + '─'.repeat(80));
|
|
82
|
+
for (const e of entries) {
|
|
83
|
+
console.log(formatEntry(e));
|
|
84
|
+
}
|
|
85
|
+
console.log('');
|
|
86
|
+
}
|
|
87
|
+
// ── verify ────────────────────────────────────────────────────────────────────
|
|
88
|
+
export async function auditVerify(conductor, opts) {
|
|
89
|
+
const logger = new AuditLogger(conductor.getConfig().getConfigDir(), { flushIntervalMs: 50000 });
|
|
90
|
+
try {
|
|
91
|
+
const { valid, brokenAt } = await logger.verifyIntegrity();
|
|
92
|
+
if (opts.json) {
|
|
93
|
+
console.log(JSON.stringify({ valid, brokenAt }));
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
console.log('');
|
|
97
|
+
if (valid) {
|
|
98
|
+
console.log(' ✅ Audit log integrity verified — no tampering detected.\n');
|
|
99
|
+
}
|
|
100
|
+
else {
|
|
101
|
+
console.log(` ❌ Integrity check FAILED — chain broken at: ${brokenAt}\n`);
|
|
102
|
+
console.log(' The audit log may have been tampered with. Contact your security team.\n');
|
|
103
|
+
process.exit(1);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
finally {
|
|
107
|
+
await logger.close();
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
// ── tail ──────────────────────────────────────────────────────────────────────
|
|
111
|
+
export async function auditTail(conductor, opts) {
|
|
112
|
+
const logFile = getAuditFile(conductor);
|
|
113
|
+
const initialLines = parseInt(opts.lines || '20', 10);
|
|
114
|
+
// Show last N lines from existing file
|
|
115
|
+
try {
|
|
116
|
+
const content = await fs.readFile(logFile, 'utf-8');
|
|
117
|
+
const lines = content.split('\n').filter((l) => l.trim());
|
|
118
|
+
const recent = lines.slice(-initialLines);
|
|
119
|
+
console.log('');
|
|
120
|
+
for (const line of recent) {
|
|
121
|
+
try {
|
|
122
|
+
const e = JSON.parse(line);
|
|
123
|
+
if (opts.json) {
|
|
124
|
+
console.log(JSON.stringify(e));
|
|
125
|
+
}
|
|
126
|
+
else {
|
|
127
|
+
console.log(formatEntry(e));
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
catch {
|
|
131
|
+
// skip
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
catch {
|
|
136
|
+
console.log('\n No audit log found yet.\n');
|
|
137
|
+
}
|
|
138
|
+
// Watch for new lines
|
|
139
|
+
console.log('\n Watching for new entries (Ctrl+C to stop)...\n');
|
|
140
|
+
let fileSize = 0;
|
|
141
|
+
try {
|
|
142
|
+
const stat = await fs.stat(logFile);
|
|
143
|
+
fileSize = stat.size;
|
|
144
|
+
}
|
|
145
|
+
catch {
|
|
146
|
+
fileSize = 0;
|
|
147
|
+
}
|
|
148
|
+
const watcher = setInterval(async () => {
|
|
149
|
+
try {
|
|
150
|
+
const stat = await fs.stat(logFile);
|
|
151
|
+
if (stat.size > fileSize) {
|
|
152
|
+
const stream = createReadStream(logFile, { start: fileSize });
|
|
153
|
+
const rl = readline.createInterface({ input: stream });
|
|
154
|
+
rl.on('line', (line) => {
|
|
155
|
+
if (!line.trim())
|
|
156
|
+
return;
|
|
157
|
+
try {
|
|
158
|
+
const e = JSON.parse(line);
|
|
159
|
+
if (opts.json) {
|
|
160
|
+
console.log(JSON.stringify(e));
|
|
161
|
+
}
|
|
162
|
+
else {
|
|
163
|
+
console.log(formatEntry(e));
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
catch {
|
|
167
|
+
// skip
|
|
168
|
+
}
|
|
169
|
+
});
|
|
170
|
+
fileSize = stat.size;
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
catch {
|
|
174
|
+
// file not yet created
|
|
175
|
+
}
|
|
176
|
+
}, 500);
|
|
177
|
+
process.on('SIGINT', () => {
|
|
178
|
+
clearInterval(watcher);
|
|
179
|
+
console.log('\n');
|
|
180
|
+
process.exit(0);
|
|
181
|
+
});
|
|
182
|
+
// Keep alive
|
|
183
|
+
await new Promise(() => { });
|
|
184
|
+
}
|
|
185
|
+
// ── export ────────────────────────────────────────────────────────────────────
|
|
186
|
+
export async function auditExport(conductor, opts) {
|
|
187
|
+
let entries = await readAllEntries(conductor);
|
|
188
|
+
if (opts.since)
|
|
189
|
+
entries = entries.filter((e) => e.timestamp >= opts.since);
|
|
190
|
+
if (opts.until)
|
|
191
|
+
entries = entries.filter((e) => e.timestamp <= opts.until);
|
|
192
|
+
const format = opts.format || 'json';
|
|
193
|
+
const output = opts.output || `-`;
|
|
194
|
+
let content;
|
|
195
|
+
if (format === 'ndjson') {
|
|
196
|
+
content = entries.map((e) => JSON.stringify(e)).join('\n') + '\n';
|
|
197
|
+
}
|
|
198
|
+
else {
|
|
199
|
+
content = JSON.stringify(entries, null, 2) + '\n';
|
|
200
|
+
}
|
|
201
|
+
if (output === '-') {
|
|
202
|
+
process.stdout.write(content);
|
|
203
|
+
}
|
|
204
|
+
else {
|
|
205
|
+
await fs.writeFile(output, content, 'utf-8');
|
|
206
|
+
console.log(`\n ✅ Exported ${entries.length} entries to: ${output}\n`);
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
// ── stats ─────────────────────────────────────────────────────────────────────
|
|
210
|
+
export async function auditStats(conductor, opts) {
|
|
211
|
+
const entries = await readAllEntries(conductor);
|
|
212
|
+
if (entries.length === 0) {
|
|
213
|
+
console.log('\n No audit entries found.\n');
|
|
214
|
+
return;
|
|
215
|
+
}
|
|
216
|
+
const byAction = {};
|
|
217
|
+
const byActor = {};
|
|
218
|
+
const byResult = {};
|
|
219
|
+
for (const e of entries) {
|
|
220
|
+
byAction[e.action] = (byAction[e.action] || 0) + 1;
|
|
221
|
+
byActor[e.actor] = (byActor[e.actor] || 0) + 1;
|
|
222
|
+
byResult[e.result] = (byResult[e.result] || 0) + 1;
|
|
223
|
+
}
|
|
224
|
+
const stats = {
|
|
225
|
+
total: entries.length,
|
|
226
|
+
first: entries[0]?.timestamp,
|
|
227
|
+
last: entries[entries.length - 1]?.timestamp,
|
|
228
|
+
by_action: byAction,
|
|
229
|
+
by_actor: byActor,
|
|
230
|
+
by_result: byResult,
|
|
231
|
+
};
|
|
232
|
+
if (opts.json) {
|
|
233
|
+
console.log(JSON.stringify(stats, null, 2));
|
|
234
|
+
return;
|
|
235
|
+
}
|
|
236
|
+
console.log('');
|
|
237
|
+
console.log(` 📊 Audit Log Statistics\n`);
|
|
238
|
+
console.log(` Total entries: ${stats.total}`);
|
|
239
|
+
console.log(` First entry: ${stats.first}`);
|
|
240
|
+
console.log(` Last entry: ${stats.last}`);
|
|
241
|
+
console.log('');
|
|
242
|
+
console.log(' By result:');
|
|
243
|
+
for (const [k, v] of Object.entries(byResult).sort((a, b) => b[1] - a[1])) {
|
|
244
|
+
console.log(` ${k.padEnd(12)} ${v}`);
|
|
245
|
+
}
|
|
246
|
+
console.log('');
|
|
247
|
+
console.log(' By action (top 10):');
|
|
248
|
+
for (const [k, v] of Object.entries(byAction)
|
|
249
|
+
.sort((a, b) => b[1] - a[1])
|
|
250
|
+
.slice(0, 10)) {
|
|
251
|
+
console.log(` ${k.padEnd(20)} ${v}`);
|
|
252
|
+
}
|
|
253
|
+
console.log('');
|
|
254
|
+
}
|
|
255
|
+
// ── rotate ────────────────────────────────────────────────────────────────────
|
|
256
|
+
export async function auditRotate(conductor) {
|
|
257
|
+
const logFile = getAuditFile(conductor);
|
|
258
|
+
try {
|
|
259
|
+
const stat = await fs.stat(logFile);
|
|
260
|
+
if (stat.size === 0) {
|
|
261
|
+
console.log('\n Log file is empty — nothing to rotate.\n');
|
|
262
|
+
return;
|
|
263
|
+
}
|
|
264
|
+
const rotated = `${logFile}.${Date.now()}.bak`;
|
|
265
|
+
await fs.rename(logFile, rotated);
|
|
266
|
+
console.log(`\n ✅ Rotated audit log to: ${path.basename(rotated)}\n`);
|
|
267
|
+
}
|
|
268
|
+
catch {
|
|
269
|
+
console.log('\n No audit log to rotate.\n');
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
//# sourceMappingURL=audit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audit.js","sourceRoot":"","sources":["../../../src/cli/commands/audit.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* conductor circuit — view and manage circuit breaker state.
|
|
3
|
+
*
|
|
4
|
+
* Commands:
|
|
5
|
+
* conductor circuit list — show state of all circuit breakers
|
|
6
|
+
* conductor circuit reset — reset a specific circuit to closed state
|
|
7
|
+
*/
|
|
8
|
+
import type { Conductor } from '../../core/conductor.js';
|
|
9
|
+
export declare function circuitList(conductor: Conductor, opts: {
|
|
10
|
+
json?: boolean;
|
|
11
|
+
}): Promise<void>;
|
|
12
|
+
export declare function circuitReset(conductor: Conductor, tool: string): Promise<void>;
|
|
13
|
+
//# sourceMappingURL=circuit.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"circuit.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/circuit.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAEzD,wBAAsB,WAAW,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAuC/F;AAED,wBAAsB,YAAY,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAWpF"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* conductor circuit — view and manage circuit breaker state.
|
|
3
|
+
*
|
|
4
|
+
* Commands:
|
|
5
|
+
* conductor circuit list — show state of all circuit breakers
|
|
6
|
+
* conductor circuit reset — reset a specific circuit to closed state
|
|
7
|
+
*/
|
|
8
|
+
export async function circuitList(conductor, opts) {
|
|
9
|
+
await conductor.initialize();
|
|
10
|
+
// Circuit breaker state is held in the running MCP server's memory.
|
|
11
|
+
// If we're not in the server process, we read the persisted health state
|
|
12
|
+
// from the health check endpoint instead.
|
|
13
|
+
try {
|
|
14
|
+
const { HealthChecker } = await import('../../core/health.js');
|
|
15
|
+
const checker = new HealthChecker();
|
|
16
|
+
const report = await checker.detailed('0');
|
|
17
|
+
const metrics = report.metrics;
|
|
18
|
+
if (opts.json) {
|
|
19
|
+
console.log(JSON.stringify({ open_circuits: metrics?.openCircuits ?? 0 }, null, 2));
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
console.log('');
|
|
23
|
+
console.log(' ⚡ Circuit Breaker Status\n');
|
|
24
|
+
if (!metrics || metrics.openCircuits === 0) {
|
|
25
|
+
console.log(' All circuits are CLOSED (healthy).\n');
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
console.log(` ⚠️ ${metrics.openCircuits} circuit(s) OPEN — tools unavailable until recovery timeout expires.\n`);
|
|
29
|
+
console.log(' Run: conductor health --json for per-tool details.\n');
|
|
30
|
+
}
|
|
31
|
+
console.log(` Total tool calls: ${metrics?.totalToolCalls ?? 0}`);
|
|
32
|
+
console.log(` Failed calls: ${metrics?.failedToolCalls ?? 0}`);
|
|
33
|
+
console.log(` Avg latency: ${metrics?.avgLatencyMs ?? 0}ms`);
|
|
34
|
+
console.log('');
|
|
35
|
+
console.log(' To reset a specific circuit: conductor circuit reset <tool>\n');
|
|
36
|
+
}
|
|
37
|
+
catch (e) {
|
|
38
|
+
const msg = e instanceof Error ? e.message : String(e);
|
|
39
|
+
console.error(` ❌ ${msg}\n`);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
export async function circuitReset(conductor, tool) {
|
|
43
|
+
await conductor.initialize();
|
|
44
|
+
// Circuit breaker reset requires the server process. We emit a signal file
|
|
45
|
+
// that the running server will pick up, or print guidance if no server is running.
|
|
46
|
+
console.log('');
|
|
47
|
+
console.log(` ℹ️ Circuit breaker state lives in the running MCP server process.`);
|
|
48
|
+
console.log(` To reset "${tool}":`);
|
|
49
|
+
console.log(` 1. Restart the MCP server: conductor mcp start`);
|
|
50
|
+
console.log(` 2. Or wait for the recovery timeout to expire (default: 30s)`);
|
|
51
|
+
console.log('');
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=circuit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"circuit.js","sourceRoot":"","sources":["../../../src/cli/commands/circuit.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,SAAoB,EAAE,IAAwB;IAC9E,MAAM,SAAS,CAAC,UAAU,EAAE,CAAC;IAE7B,oEAAoE;IACpE,yEAAyE;IACzE,0CAA0C;IAC1C,IAAI,CAAC;QACH,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAC;QAC/D,MAAM,OAAO,GAAG,IAAI,aAAa,EAAE,CAAC;QACpC,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAE3C,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;QAE/B,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,aAAa,EAAE,OAAO,EAAE,YAAY,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YACpF,OAAO;QACT,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;QAE5C,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,YAAY,KAAK,CAAC,EAAE,CAAC;YAC3C,OAAO,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC;QACxD,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CACT,SAAS,OAAO,CAAC,YAAY,wEAAwE,CACtG,CAAC;YACF,OAAO,CAAC,GAAG,CAAC,wDAAwD,CAAC,CAAC;QACxE,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,uBAAuB,OAAO,EAAE,cAAc,IAAI,CAAC,EAAE,CAAC,CAAC;QACnE,OAAO,CAAC,GAAG,CAAC,uBAAuB,OAAO,EAAE,eAAe,IAAI,CAAC,EAAE,CAAC,CAAC;QACpE,OAAO,CAAC,GAAG,CAAC,uBAAuB,OAAO,EAAE,YAAY,IAAI,CAAC,IAAI,CAAC,CAAC;QACnE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,iEAAiE,CAAC,CAAC;IACjF,CAAC;IAAC,OAAO,CAAU,EAAE,CAAC;QACpB,MAAM,GAAG,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACvD,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;IAChC,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,SAAoB,EAAE,IAAY;IACnE,MAAM,SAAS,CAAC,UAAU,EAAE,CAAC;IAE7B,2EAA2E;IAC3E,mFAAmF;IACnF,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,sEAAsE,CAAC,CAAC;IACpF,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,IAAI,CAAC,CAAC;IACrC,OAAO,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAC;IACnE,OAAO,CAAC,GAAG,CAAC,kEAAkE,CAAC,CAAC;IAChF,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAClB,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* conductor config — read and write configuration keys.
|
|
3
|
+
*
|
|
4
|
+
* Commands:
|
|
5
|
+
* conductor config list — show all config keys and values
|
|
6
|
+
* conductor config get <key> — get a specific key
|
|
7
|
+
* conductor config set <key> <val> — set a key
|
|
8
|
+
* conductor config path — print config file path
|
|
9
|
+
* conductor config export — dump config as JSON
|
|
10
|
+
* conductor config reset — reset to defaults (with confirmation)
|
|
11
|
+
* conductor config validate — validate config structure
|
|
12
|
+
*/
|
|
13
|
+
import type { Conductor } from '../../core/conductor.js';
|
|
14
|
+
export declare function configList(conductor: Conductor, opts: {
|
|
15
|
+
json?: boolean;
|
|
16
|
+
show_secrets?: boolean;
|
|
17
|
+
}): Promise<void>;
|
|
18
|
+
export declare function configGet(conductor: Conductor, key: string, opts: {
|
|
19
|
+
json?: boolean;
|
|
20
|
+
}): Promise<void>;
|
|
21
|
+
export declare function configSet(conductor: Conductor, key: string, value: string): Promise<void>;
|
|
22
|
+
export declare function configPath(conductor: Conductor): Promise<void>;
|
|
23
|
+
export declare function configExport(conductor: Conductor, opts: {
|
|
24
|
+
output?: string;
|
|
25
|
+
pretty?: boolean;
|
|
26
|
+
}): Promise<void>;
|
|
27
|
+
export declare function configReset(conductor: Conductor, opts: {
|
|
28
|
+
yes?: boolean;
|
|
29
|
+
}): Promise<void>;
|
|
30
|
+
export declare function configValidate(conductor: Conductor): Promise<void>;
|
|
31
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAyBzD,wBAAsB,UAAU,CAC9B,SAAS,EAAE,SAAS,EACpB,IAAI,EAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,YAAY,CAAC,EAAE,OAAO,CAAA;CAAE,GAC/C,OAAO,CAAC,IAAI,CAAC,CAsBf;AAED,wBAAsB,SAAS,CAAC,SAAS,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAgB1G;AAED,wBAAsB,SAAS,CAAC,SAAS,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAa/F;AAED,wBAAsB,UAAU,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAIpE;AAED,wBAAsB,YAAY,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAYnH;AAED,wBAAsB,WAAW,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE;IAAE,GAAG,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA0B9F;AAED,wBAAsB,cAAc,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CA6BxE"}
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* conductor config — read and write configuration keys.
|
|
3
|
+
*
|
|
4
|
+
* Commands:
|
|
5
|
+
* conductor config list — show all config keys and values
|
|
6
|
+
* conductor config get <key> — get a specific key
|
|
7
|
+
* conductor config set <key> <val> — set a key
|
|
8
|
+
* conductor config path — print config file path
|
|
9
|
+
* conductor config export — dump config as JSON
|
|
10
|
+
* conductor config reset — reset to defaults (with confirmation)
|
|
11
|
+
* conductor config validate — validate config structure
|
|
12
|
+
*/
|
|
13
|
+
function flattenConfig(obj, prefix = '') {
|
|
14
|
+
if (typeof obj !== 'object' || obj === null) {
|
|
15
|
+
return [[prefix, obj]];
|
|
16
|
+
}
|
|
17
|
+
const result = [];
|
|
18
|
+
for (const [key, val] of Object.entries(obj)) {
|
|
19
|
+
const fullKey = prefix ? `${prefix}.${key}` : key;
|
|
20
|
+
if (typeof val === 'object' && val !== null && !Array.isArray(val)) {
|
|
21
|
+
result.push(...flattenConfig(val, fullKey));
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
24
|
+
result.push([fullKey, val]);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
return result;
|
|
28
|
+
}
|
|
29
|
+
function maskSecret(key, value) {
|
|
30
|
+
if (/token|secret|password|api_key|key_stored/i.test(key)) {
|
|
31
|
+
if (typeof value === 'string' && value.length > 0)
|
|
32
|
+
return '***';
|
|
33
|
+
}
|
|
34
|
+
return value;
|
|
35
|
+
}
|
|
36
|
+
export async function configList(conductor, opts) {
|
|
37
|
+
await conductor.initialize();
|
|
38
|
+
const config = conductor.getConfig().getConfig();
|
|
39
|
+
if (opts.json) {
|
|
40
|
+
console.log(JSON.stringify(config, null, 2));
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
const pairs = flattenConfig(config);
|
|
44
|
+
console.log('');
|
|
45
|
+
console.log(' ⚙️ Configuration\n');
|
|
46
|
+
console.log(` ${'KEY'.padEnd(40)} VALUE`);
|
|
47
|
+
console.log(' ' + '─'.repeat(70));
|
|
48
|
+
for (const [key, val] of pairs) {
|
|
49
|
+
const display = opts.show_secrets ? val : maskSecret(key, val);
|
|
50
|
+
const str = Array.isArray(val) ? `[${val.join(', ')}]` : String(display ?? '');
|
|
51
|
+
console.log(` ${key.padEnd(40)} ${str}`);
|
|
52
|
+
}
|
|
53
|
+
console.log('');
|
|
54
|
+
console.log(` Config file: ${conductor.getConfig().getConfigDir()}/config.json\n`);
|
|
55
|
+
}
|
|
56
|
+
export async function configGet(conductor, key, opts) {
|
|
57
|
+
await conductor.initialize();
|
|
58
|
+
const value = conductor.getConfig().get(key);
|
|
59
|
+
if (value === undefined) {
|
|
60
|
+
console.error(`\n ❌ Key "${key}" not found.\n`);
|
|
61
|
+
console.log(' Run: conductor config list to see all keys.\n');
|
|
62
|
+
process.exit(1);
|
|
63
|
+
}
|
|
64
|
+
if (opts.json) {
|
|
65
|
+
console.log(JSON.stringify({ key, value }));
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
console.log(`\n ${key}: ${JSON.stringify(value)}\n`);
|
|
69
|
+
}
|
|
70
|
+
export async function configSet(conductor, key, value) {
|
|
71
|
+
await conductor.initialize();
|
|
72
|
+
// Try to parse as JSON, fall back to string
|
|
73
|
+
let parsed;
|
|
74
|
+
try {
|
|
75
|
+
parsed = JSON.parse(value);
|
|
76
|
+
}
|
|
77
|
+
catch {
|
|
78
|
+
parsed = value;
|
|
79
|
+
}
|
|
80
|
+
await conductor.getConfig().set(key, parsed);
|
|
81
|
+
console.log(`\n ✅ Set ${key} = ${JSON.stringify(parsed)}\n`);
|
|
82
|
+
}
|
|
83
|
+
export async function configPath(conductor) {
|
|
84
|
+
await conductor.initialize();
|
|
85
|
+
const dir = conductor.getConfig().getConfigDir();
|
|
86
|
+
console.log(`\n ${dir}/config.json\n`);
|
|
87
|
+
}
|
|
88
|
+
export async function configExport(conductor, opts) {
|
|
89
|
+
await conductor.initialize();
|
|
90
|
+
const config = conductor.getConfig().getConfig();
|
|
91
|
+
const content = opts.pretty === false ? JSON.stringify(config) : JSON.stringify(config, null, 2);
|
|
92
|
+
if (opts.output) {
|
|
93
|
+
const { writeFile } = await import('fs/promises');
|
|
94
|
+
await writeFile(opts.output, content + '\n', 'utf-8');
|
|
95
|
+
console.log(`\n ✅ Config exported to: ${opts.output}\n`);
|
|
96
|
+
}
|
|
97
|
+
else {
|
|
98
|
+
console.log(content);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
export async function configReset(conductor, opts) {
|
|
102
|
+
if (!opts.yes) {
|
|
103
|
+
const { default: inquirer } = await import('inquirer');
|
|
104
|
+
const { confirm } = await inquirer.prompt([
|
|
105
|
+
{
|
|
106
|
+
type: 'confirm',
|
|
107
|
+
name: 'confirm',
|
|
108
|
+
message: 'Reset configuration to defaults? This cannot be undone.',
|
|
109
|
+
default: false,
|
|
110
|
+
},
|
|
111
|
+
]);
|
|
112
|
+
if (!confirm) {
|
|
113
|
+
console.log('\n Cancelled.\n');
|
|
114
|
+
return;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
await conductor.initialize();
|
|
118
|
+
const dir = conductor.getConfig().getConfigDir();
|
|
119
|
+
// Write an empty config to trigger re-initialization to defaults
|
|
120
|
+
const { writeFile } = await import('fs/promises');
|
|
121
|
+
await writeFile(`${dir}/config.json`, '{}', 'utf-8');
|
|
122
|
+
console.log('\n ✅ Configuration reset to defaults.\n');
|
|
123
|
+
console.log(' Run: conductor init to set up from scratch.\n');
|
|
124
|
+
}
|
|
125
|
+
export async function configValidate(conductor) {
|
|
126
|
+
await conductor.initialize();
|
|
127
|
+
const config = conductor.getConfig().getConfig();
|
|
128
|
+
const issues = [];
|
|
129
|
+
// Basic structural checks
|
|
130
|
+
if (config.ai?.provider && !['claude', 'openai', 'gemini', 'ollama'].includes(config.ai.provider)) {
|
|
131
|
+
issues.push(`ai.provider "${config.ai.provider}" is not a recognized provider`);
|
|
132
|
+
}
|
|
133
|
+
if (config.plugins?.enabled && !Array.isArray(config.plugins.enabled)) {
|
|
134
|
+
issues.push('plugins.enabled must be an array');
|
|
135
|
+
}
|
|
136
|
+
if (config.plugins?.installed && !Array.isArray(config.plugins.installed)) {
|
|
137
|
+
issues.push('plugins.installed must be an array');
|
|
138
|
+
}
|
|
139
|
+
console.log('');
|
|
140
|
+
if (issues.length === 0) {
|
|
141
|
+
console.log(' ✅ Configuration is valid.\n');
|
|
142
|
+
}
|
|
143
|
+
else {
|
|
144
|
+
console.log(' ❌ Configuration issues found:\n');
|
|
145
|
+
for (const issue of issues) {
|
|
146
|
+
console.log(` • ${issue}`);
|
|
147
|
+
}
|
|
148
|
+
console.log('');
|
|
149
|
+
process.exit(1);
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/cli/commands/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* conductor init — First-run setup wizard
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
* 3. Plugin onboard TUI (calls the existing onboard() function)
|
|
10
|
-
* 4. MCP client config (Claude Desktop / Cursor / Cline / skip)
|
|
11
|
-
* 5. Final instructions
|
|
4
|
+
* Gets a new user to a working MCP server in under 2 minutes:
|
|
5
|
+
* 1. AI provider setup (Claude / OpenAI / Gemini / Ollama / skip)
|
|
6
|
+
* 2. Plugin onboard TUI
|
|
7
|
+
* 3. MCP client config (Claude Desktop / Cursor / Cline / skip)
|
|
8
|
+
* 4. Final instructions
|
|
12
9
|
*/
|
|
13
10
|
import { Conductor } from '../../core/conductor.js';
|
|
14
11
|
export declare function init(conductor: Conductor): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AA4QpD,wBAAsB,IAAI,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAU9D"}
|