conductor-oss 0.1.0 → 0.2.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/dist/commands/cleanup.js +1 -1
- package/dist/commands/cleanup.js.map +1 -1
- package/dist/commands/doctor.d.ts +3 -0
- package/dist/commands/doctor.d.ts.map +1 -0
- package/dist/commands/doctor.js +141 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/feedback.d.ts +3 -0
- package/dist/commands/feedback.d.ts.map +1 -0
- package/dist/commands/feedback.js +32 -0
- package/dist/commands/feedback.js.map +1 -0
- package/dist/commands/init.d.ts +34 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +164 -63
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/mcp-server.d.ts +23 -0
- package/dist/commands/mcp-server.d.ts.map +1 -0
- package/dist/commands/mcp-server.js +36 -0
- package/dist/commands/mcp-server.js.map +1 -0
- package/dist/commands/retry.d.ts +3 -0
- package/dist/commands/retry.d.ts.map +1 -0
- package/dist/commands/retry.js +43 -0
- package/dist/commands/retry.js.map +1 -0
- package/dist/commands/setup.d.ts +3 -0
- package/dist/commands/setup.d.ts.map +1 -0
- package/dist/commands/setup.js +413 -0
- package/dist/commands/setup.js.map +1 -0
- package/dist/commands/spawn.d.ts.map +1 -1
- package/dist/commands/spawn.js +1 -1
- package/dist/commands/spawn.js.map +1 -1
- package/dist/commands/start.d.ts.map +1 -1
- package/dist/commands/start.js +82 -24
- package/dist/commands/start.js.map +1 -1
- package/dist/commands/task.d.ts +3 -0
- package/dist/commands/task.d.ts.map +1 -0
- package/dist/commands/task.js +48 -0
- package/dist/commands/task.js.map +1 -0
- package/dist/commands/watch.d.ts.map +1 -1
- package/dist/commands/watch.js +4 -2
- package/dist/commands/watch.js.map +1 -1
- package/dist/commands/webhook.d.ts +12 -0
- package/dist/commands/webhook.d.ts.map +1 -0
- package/dist/commands/webhook.js +59 -0
- package/dist/commands/webhook.js.map +1 -0
- package/dist/index.js +15 -1
- package/dist/index.js.map +1 -1
- package/dist/services.d.ts +7 -5
- package/dist/services.d.ts.map +1 -1
- package/dist/services.js +21 -4
- package/dist/services.js.map +1 -1
- package/package.json +33 -24
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Conductor Contributors
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/dist/commands/cleanup.js
CHANGED
|
@@ -25,7 +25,7 @@ export function registerCleanup(program) {
|
|
|
25
25
|
console.log(chalk.bold("Dry run -- checking for cleanable sessions...\n"));
|
|
26
26
|
}
|
|
27
27
|
const spinner = opts.dryRun ? null : ora("Cleaning up sessions").start();
|
|
28
|
-
const result = await sessionManager.cleanup(project);
|
|
28
|
+
const result = await sessionManager.cleanup(project, { dryRun: Boolean(opts.dryRun) });
|
|
29
29
|
spinner?.stop();
|
|
30
30
|
if (result.killed.length === 0 && result.errors.length === 0) {
|
|
31
31
|
console.log(chalk.dim("No sessions to clean up."));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cleanup.js","sourceRoot":"","sources":["../../src/commands/cleanup.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AAEtB,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE5D,MAAM,UAAU,eAAe,CAAC,OAAgB;IAC9C,OAAO;SACJ,OAAO,CAAC,SAAS,CAAC;SAClB,WAAW,CAAC,0DAA0D,CAAC;SACvE,QAAQ,CAAC,WAAW,EAAE,sBAAsB,CAAC;SAC7C,MAAM,CAAC,WAAW,EAAE,6CAA6C,CAAC;SAClE,MAAM,CAAC,KAAK,EAAE,OAA2B,EAAE,IAA0B,EAAE,EAAE;QACxE,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,UAAU,EAAE,CAAC;YAElC,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;gBACzC,OAAO,CAAC,KAAK,CACX,KAAK,CAAC,GAAG,CAAC,oBAAoB,OAAO,gBAAgB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAChG,CAAC;gBACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YAED,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,cAAc,CAAC,MAAM,CAAC,CAAC;YAExD,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC,CAAC;YAC7E,CAAC;YAED,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC,KAAK,EAAE,CAAC;YAEzE,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"cleanup.js","sourceRoot":"","sources":["../../src/commands/cleanup.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQzC,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAqKrD"}
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
import { existsSync, readFileSync } from "node:fs";
|
|
2
|
+
import chalk from "chalk";
|
|
3
|
+
import { loadConfig } from "../services.js";
|
|
4
|
+
export function registerDoctor(program) {
|
|
5
|
+
program
|
|
6
|
+
.command("doctor")
|
|
7
|
+
.description("Diagnose board watcher parsing/dispatch issues")
|
|
8
|
+
.option("-w, --workspace <path>", "Workspace path (defaults to CONDUCTOR_WORKSPACE)")
|
|
9
|
+
.option("--json", "Output JSON report")
|
|
10
|
+
.action(async (opts) => {
|
|
11
|
+
try {
|
|
12
|
+
const config = await loadConfig();
|
|
13
|
+
const coreModule = await import("@conductor-oss/core");
|
|
14
|
+
const core = coreModule;
|
|
15
|
+
const discoverBoards = core["discoverBoards"];
|
|
16
|
+
const resolveBoardAliasesForPath = core["resolveBoardAliasesForPath"];
|
|
17
|
+
const parseBoardStatus = core["parseBoardStatus"];
|
|
18
|
+
const readRecentWatcherActions = core["readRecentWatcherActions"];
|
|
19
|
+
const defaultAliasMapping = core["defaultAliasMapping"];
|
|
20
|
+
if (!discoverBoards || !parseBoardStatus || !readRecentWatcherActions) {
|
|
21
|
+
throw new Error("Core diagnostics helpers are unavailable. Run pnpm build.");
|
|
22
|
+
}
|
|
23
|
+
const workspace = opts.workspace
|
|
24
|
+
?? process.env["CONDUCTOR_WORKSPACE"]
|
|
25
|
+
?? `${process.env["HOME"]}/.conductor/workspace`;
|
|
26
|
+
const boardPatternsOrConfig = config.boards?.length ? config.boards : config;
|
|
27
|
+
const boards = discoverBoards(workspace, boardPatternsOrConfig);
|
|
28
|
+
const projectIds = new Set(Object.keys(config.projects));
|
|
29
|
+
const aliasMapping = {};
|
|
30
|
+
const boardStatus = [];
|
|
31
|
+
const unresolvedProjectTags = [];
|
|
32
|
+
for (const boardPath of boards) {
|
|
33
|
+
const aliases = resolveBoardAliasesForPath
|
|
34
|
+
? resolveBoardAliasesForPath(config, workspace, boardPath)
|
|
35
|
+
: (defaultAliasMapping ? defaultAliasMapping() : {});
|
|
36
|
+
aliasMapping[boardPath] = aliases;
|
|
37
|
+
if (!existsSync(boardPath)) {
|
|
38
|
+
boardStatus.push({
|
|
39
|
+
boardPath,
|
|
40
|
+
exists: false,
|
|
41
|
+
parseOk: false,
|
|
42
|
+
headingCount: 0,
|
|
43
|
+
headings: [],
|
|
44
|
+
columns: {},
|
|
45
|
+
readyCount: 0,
|
|
46
|
+
unresolvedProjects: [],
|
|
47
|
+
errors: ["Board file does not exist"],
|
|
48
|
+
});
|
|
49
|
+
continue;
|
|
50
|
+
}
|
|
51
|
+
const content = readFileSync(boardPath, "utf-8");
|
|
52
|
+
const status = parseBoardStatus(boardPath, content, aliases, projectIds);
|
|
53
|
+
boardStatus.push(status);
|
|
54
|
+
for (const tag of status.unresolvedProjects) {
|
|
55
|
+
unresolvedProjectTags.push({ boardPath, tag });
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
const recentActions = readRecentWatcherActions(workspace, 20);
|
|
59
|
+
const hints = [];
|
|
60
|
+
if (boards.length === 0) {
|
|
61
|
+
hints.push("No boards discovered. Add explicit boards: entries or verify workspace path.");
|
|
62
|
+
}
|
|
63
|
+
if (unresolvedProjectTags.length > 0) {
|
|
64
|
+
hints.push("Some #project/<id> tags do not exist in conductor.yaml projects.");
|
|
65
|
+
}
|
|
66
|
+
for (const status of boardStatus) {
|
|
67
|
+
for (const error of status.errors) {
|
|
68
|
+
hints.push(`${status.boardPath}: ${error}`);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
if (recentActions.length === 0) {
|
|
72
|
+
hints.push("No watcher actions logged yet. Start `co watch` or `co start` and retry.");
|
|
73
|
+
}
|
|
74
|
+
const report = {
|
|
75
|
+
watchedBoards: boards,
|
|
76
|
+
aliasMapping,
|
|
77
|
+
boardStatus,
|
|
78
|
+
unresolvedProjectTags,
|
|
79
|
+
recentActions,
|
|
80
|
+
hints,
|
|
81
|
+
};
|
|
82
|
+
if (opts.json) {
|
|
83
|
+
console.log(JSON.stringify(report, null, 2));
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
console.log(chalk.bold("Conductor Doctor"));
|
|
87
|
+
console.log(chalk.dim(`Workspace: ${workspace}`));
|
|
88
|
+
console.log();
|
|
89
|
+
console.log(chalk.bold("Watched Boards"));
|
|
90
|
+
if (boards.length === 0) {
|
|
91
|
+
console.log(chalk.yellow(" none"));
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
for (const board of boards) {
|
|
95
|
+
console.log(` ${chalk.cyan(board)}`);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
console.log();
|
|
99
|
+
console.log(chalk.bold("Board Parse Status"));
|
|
100
|
+
for (const status of boardStatus) {
|
|
101
|
+
const label = status.parseOk ? chalk.green("ok") : chalk.red("error");
|
|
102
|
+
console.log(` ${label} ${chalk.cyan(status.boardPath)} ready=${status.readyCount}`);
|
|
103
|
+
if (status.errors.length > 0) {
|
|
104
|
+
for (const error of status.errors) {
|
|
105
|
+
console.log(` ${chalk.red("- " + error)}`);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
if (status.unresolvedProjects.length > 0) {
|
|
109
|
+
console.log(` ${chalk.yellow("unresolved projects:")} ${status.unresolvedProjects.join(", ")}`);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
console.log();
|
|
113
|
+
console.log(chalk.bold("Recent Watcher Actions"));
|
|
114
|
+
if (recentActions.length === 0) {
|
|
115
|
+
console.log(chalk.yellow(" none"));
|
|
116
|
+
}
|
|
117
|
+
else {
|
|
118
|
+
for (const action of recentActions) {
|
|
119
|
+
const lvl = action.level === "error" ? chalk.red(action.level) : action.level === "debug" ? chalk.dim(action.level) : chalk.green(action.level);
|
|
120
|
+
const board = action.boardPath ? ` ${chalk.cyan(action.boardPath)}` : "";
|
|
121
|
+
console.log(` ${chalk.dim(action.ts)} ${lvl}${board} ${action.action}`);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
console.log();
|
|
125
|
+
console.log(chalk.bold("Fix Hints"));
|
|
126
|
+
if (hints.length === 0) {
|
|
127
|
+
console.log(chalk.green(" No issues detected."));
|
|
128
|
+
}
|
|
129
|
+
else {
|
|
130
|
+
for (const hint of hints) {
|
|
131
|
+
console.log(` ${chalk.yellow("-")} ${hint}`);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
catch (err) {
|
|
136
|
+
console.error(chalk.red(String(err)));
|
|
137
|
+
process.exit(1);
|
|
138
|
+
}
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
//# sourceMappingURL=doctor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"feedback.d.ts","sourceRoot":"","sources":["../../src/commands/feedback.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGzC,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA6BvD"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import chalk from "chalk";
|
|
2
|
+
import ora from "ora";
|
|
3
|
+
import { createServices, loadConfig } from "../services.js";
|
|
4
|
+
export function registerFeedback(program) {
|
|
5
|
+
program
|
|
6
|
+
.command("feedback")
|
|
7
|
+
.description("Send reviewer feedback to an active session and requeue it")
|
|
8
|
+
.argument("<sessionId>", "Session ID")
|
|
9
|
+
.argument("<message...>", "Feedback text")
|
|
10
|
+
.action(async (sessionId, message) => {
|
|
11
|
+
const text = message.join(" ").trim();
|
|
12
|
+
if (!text) {
|
|
13
|
+
console.error(chalk.red("Feedback text is required."));
|
|
14
|
+
process.exit(1);
|
|
15
|
+
}
|
|
16
|
+
const spinner = ora("Submitting feedback").start();
|
|
17
|
+
try {
|
|
18
|
+
const config = await loadConfig();
|
|
19
|
+
const { sessionManager } = await createServices(config);
|
|
20
|
+
const manager = sessionManager;
|
|
21
|
+
await manager.submitFeedback(sessionId, text);
|
|
22
|
+
spinner.succeed(`Feedback submitted to ${chalk.green(sessionId)}`);
|
|
23
|
+
console.log(chalk.dim("Session moved back to working state for auto-loop."));
|
|
24
|
+
}
|
|
25
|
+
catch (err) {
|
|
26
|
+
spinner.fail("Failed to submit feedback");
|
|
27
|
+
console.error(chalk.red(String(err)));
|
|
28
|
+
process.exit(1);
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=feedback.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"feedback.js","sourceRoot":"","sources":["../../src/commands/feedback.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AAEtB,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE5D,MAAM,UAAU,gBAAgB,CAAC,OAAgB;IAC/C,OAAO;SACJ,OAAO,CAAC,UAAU,CAAC;SACnB,WAAW,CAAC,4DAA4D,CAAC;SACzE,QAAQ,CAAC,aAAa,EAAE,YAAY,CAAC;SACrC,QAAQ,CAAC,cAAc,EAAE,eAAe,CAAC;SACzC,MAAM,CAAC,KAAK,EAAE,SAAiB,EAAE,OAAiB,EAAE,EAAE;QACrD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;QACtC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC,CAAC;YACvD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,OAAO,GAAG,GAAG,CAAC,qBAAqB,CAAC,CAAC,KAAK,EAAE,CAAC;QACnD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,UAAU,EAAE,CAAC;YAClC,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,cAAc,CAAC,MAAM,CAAC,CAAC;YACxD,MAAM,OAAO,GAAG,cAEf,CAAC;YACF,MAAM,OAAO,CAAC,cAAc,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;YAC9C,OAAO,CAAC,OAAO,CAAC,yBAAyB,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;YACnE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAAC,CAAC;QAC/E,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;YAC1C,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACtC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
|
package/dist/commands/init.d.ts
CHANGED
|
@@ -5,5 +5,39 @@
|
|
|
5
5
|
* and a conductor.yaml config file. Dead-simple onboarding.
|
|
6
6
|
*/
|
|
7
7
|
import type { Command } from "commander";
|
|
8
|
+
export type InitOptions = {
|
|
9
|
+
force?: boolean;
|
|
10
|
+
projectId?: string;
|
|
11
|
+
displayName?: string;
|
|
12
|
+
repo?: string;
|
|
13
|
+
path?: string;
|
|
14
|
+
agent?: string;
|
|
15
|
+
ide?: string;
|
|
16
|
+
markdownEditor?: string;
|
|
17
|
+
defaultBranch?: string;
|
|
18
|
+
defaultWorkingDirectory?: string;
|
|
19
|
+
dashboardUrl?: string;
|
|
20
|
+
};
|
|
21
|
+
export type InitProjectConfig = {
|
|
22
|
+
projectId: string;
|
|
23
|
+
displayName: string;
|
|
24
|
+
repo: string;
|
|
25
|
+
path: string;
|
|
26
|
+
agent: string;
|
|
27
|
+
ide: string;
|
|
28
|
+
markdownEditor: string;
|
|
29
|
+
defaultBranch: string;
|
|
30
|
+
defaultWorkingDirectory: string | null;
|
|
31
|
+
dashboardUrl: string | null;
|
|
32
|
+
};
|
|
33
|
+
export declare function buildConductorBoard(projectId: string, displayName: string): string;
|
|
34
|
+
export declare function buildConductorYaml(config: InitProjectConfig): string;
|
|
35
|
+
export declare function resolveInitProjectConfig(cwd: string, options: InitOptions): InitProjectConfig;
|
|
36
|
+
export declare function runInitScaffold(cwd: string, opts: InitOptions): {
|
|
37
|
+
created: number;
|
|
38
|
+
project: InitProjectConfig;
|
|
39
|
+
boardPath: string;
|
|
40
|
+
configPath: string;
|
|
41
|
+
};
|
|
8
42
|
export declare function registerInit(program: Command): void;
|
|
9
43
|
//# sourceMappingURL=init.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzC,MAAM,MAAM,WAAW,GAAG;IACxB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,uBAAuB,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B,CAAC;AAEF,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CA0BlF;AAoDD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,iBAAiB,GAAG,MAAM,CA4DpE;AAED,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,iBAAiB,CA2B7F;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,GAAG;IAC/D,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,iBAAiB,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACpB,CA4BA;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA2CnD"}
|
package/dist/commands/init.js
CHANGED
|
@@ -4,13 +4,15 @@
|
|
|
4
4
|
* Scaffolds a new Conductor workspace with a CONDUCTOR.md kanban board
|
|
5
5
|
* and a conductor.yaml config file. Dead-simple onboarding.
|
|
6
6
|
*/
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
7
|
+
import { execFileSync } from "node:child_process";
|
|
8
|
+
import { writeFileSync, existsSync, statSync } from "node:fs";
|
|
9
|
+
import { basename, resolve } from "node:path";
|
|
9
10
|
import chalk from "chalk";
|
|
10
|
-
|
|
11
|
+
export function buildConductorBoard(projectId, displayName) {
|
|
12
|
+
return `# ${displayName}
|
|
11
13
|
|
|
12
14
|
> 🤖 Conductor — AI agent orchestrator. Write tasks here, agents do the work.
|
|
13
|
-
> Tags: \`#agent/claude-code\`
|
|
15
|
+
> Tags: \`#agent/claude-code\` · \`#agent/codex\` · \`#agent/gemini\` · \`#agent/amp\` · \`#agent/cursor-cli\` · \`#agent/opencode\` · \`#agent/droid\` · \`#agent/qwen-code\` · \`#agent/ccr\` · \`#agent/github-copilot\` · \`#project/${projectId}\` · \`#type/feature\` · \`#priority/high\`
|
|
14
16
|
|
|
15
17
|
## Inbox
|
|
16
18
|
|
|
@@ -32,72 +34,171 @@ const CONDUCTOR_MD = `# My Project
|
|
|
32
34
|
|
|
33
35
|
## Blocked
|
|
34
36
|
`;
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
37
|
+
}
|
|
38
|
+
function yamlString(value) {
|
|
39
|
+
return JSON.stringify(value);
|
|
40
|
+
}
|
|
41
|
+
function slugifyProjectId(value) {
|
|
42
|
+
const normalized = value
|
|
43
|
+
.trim()
|
|
44
|
+
.toLowerCase()
|
|
45
|
+
.replace(/[^a-z0-9]+/g, "-")
|
|
46
|
+
.replace(/^-+|-+$/g, "");
|
|
47
|
+
return normalized || "my-app";
|
|
48
|
+
}
|
|
49
|
+
function runGit(cwd, args) {
|
|
50
|
+
try {
|
|
51
|
+
const output = execFileSync("git", args, {
|
|
52
|
+
cwd,
|
|
53
|
+
encoding: "utf8",
|
|
54
|
+
stdio: ["ignore", "pipe", "ignore"],
|
|
55
|
+
}).trim();
|
|
56
|
+
return output.length > 0 ? output : null;
|
|
57
|
+
}
|
|
58
|
+
catch {
|
|
59
|
+
return null;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
function parseRepoSlug(remoteUrl) {
|
|
63
|
+
if (!remoteUrl)
|
|
64
|
+
return null;
|
|
65
|
+
const sshMatch = remoteUrl.match(/^git@[^:]+:(.+)$/);
|
|
66
|
+
const candidate = sshMatch ? sshMatch[1] : remoteUrl;
|
|
67
|
+
try {
|
|
68
|
+
const parsed = new URL(candidate);
|
|
69
|
+
return parsed.pathname.replace(/^\/+/, "").replace(/\.git$/i, "") || null;
|
|
70
|
+
}
|
|
71
|
+
catch {
|
|
72
|
+
return candidate.replace(/\.git$/i, "").replace(/^\/+/, "") || null;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
function detectDefaultBranch(repoPath) {
|
|
76
|
+
const remoteHead = runGit(repoPath, ["symbolic-ref", "--short", "refs/remotes/origin/HEAD"]);
|
|
77
|
+
if (remoteHead) {
|
|
78
|
+
return remoteHead.replace(/^origin\//, "");
|
|
79
|
+
}
|
|
80
|
+
return runGit(repoPath, ["branch", "--show-current"]);
|
|
81
|
+
}
|
|
82
|
+
export function buildConductorYaml(config) {
|
|
83
|
+
const lines = [
|
|
84
|
+
"# Conductor Configuration",
|
|
85
|
+
"# Docs: https://github.com/charannyk06/conductor-oss",
|
|
86
|
+
"",
|
|
87
|
+
"port: 4747",
|
|
88
|
+
"",
|
|
89
|
+
"preferences:",
|
|
90
|
+
" onboardingAcknowledged: false",
|
|
91
|
+
` codingAgent: ${yamlString(config.agent)}`,
|
|
92
|
+
` ide: ${yamlString(config.ide)}`,
|
|
93
|
+
` markdownEditor: ${yamlString(config.markdownEditor)}`,
|
|
94
|
+
" notifications:",
|
|
95
|
+
" soundEnabled: true",
|
|
96
|
+
" soundFile: abstract-sound-4",
|
|
97
|
+
];
|
|
98
|
+
if (config.dashboardUrl) {
|
|
99
|
+
lines.push("", `dashboardUrl: ${yamlString(config.dashboardUrl)}`);
|
|
100
|
+
}
|
|
101
|
+
lines.push("", "projects:", ` ${config.projectId}:`, ` name: ${yamlString(config.displayName)}`, ` path: ${yamlString(config.path)}`, ` repo: ${yamlString(config.repo)}`, ` agent: ${yamlString(config.agent)}`, ` defaultBranch: ${yamlString(config.defaultBranch)}`, " agentConfig:", ' model: "claude-sonnet-4-6"', ' permissions: "skip"');
|
|
102
|
+
if (config.defaultWorkingDirectory) {
|
|
103
|
+
lines.push(` defaultWorkingDirectory: ${yamlString(config.defaultWorkingDirectory)}`);
|
|
104
|
+
}
|
|
105
|
+
lines.push(' workspace: "worktree"', ' runtime: "tmux"', ' scm: "github"', "", "# Add more projects below:", "# another-project:", '# path: "~/projects/another"', '# repo: "your-org/another"', '# agent: "codex"', "# agentConfig:", '# model: "o4-mini"', "", "# Optional: Discord notifications", "# plugins:", "# discord:", '# channelId: "YOUR_CHANNEL_ID"', '# tokenEnvVar: "DISCORD_BOT_TOKEN"');
|
|
106
|
+
return `${lines.join("\n")}\n`;
|
|
107
|
+
}
|
|
108
|
+
export function resolveInitProjectConfig(cwd, options) {
|
|
109
|
+
const repoPath = resolve(cwd, options.path?.trim() || ".");
|
|
110
|
+
const detectedRepo = parseRepoSlug(runGit(repoPath, ["remote", "get-url", "origin"]));
|
|
111
|
+
const detectedBranch = detectDefaultBranch(repoPath);
|
|
112
|
+
const detectedName = basename(repoPath);
|
|
113
|
+
const repoSlug = options.repo?.trim() || detectedRepo || `your-org/${detectedName}`;
|
|
114
|
+
const displayName = options.displayName?.trim() || detectedName;
|
|
115
|
+
const projectId = options.projectId?.trim() || slugifyProjectId(repoSlug.split("/").pop() || detectedName);
|
|
116
|
+
const agent = options.agent?.trim() || "claude-code";
|
|
117
|
+
const ide = options.ide?.trim() || "vscode";
|
|
118
|
+
const markdownEditor = options.markdownEditor?.trim() || "obsidian";
|
|
119
|
+
const defaultBranch = options.defaultBranch?.trim() || detectedBranch || "main";
|
|
120
|
+
const defaultWorkingDirectory = options.defaultWorkingDirectory?.trim() || null;
|
|
121
|
+
const dashboardUrl = options.dashboardUrl?.trim() || null;
|
|
122
|
+
return {
|
|
123
|
+
projectId,
|
|
124
|
+
displayName,
|
|
125
|
+
repo: repoSlug,
|
|
126
|
+
path: repoPath,
|
|
127
|
+
agent,
|
|
128
|
+
ide,
|
|
129
|
+
markdownEditor,
|
|
130
|
+
defaultBranch,
|
|
131
|
+
defaultWorkingDirectory,
|
|
132
|
+
dashboardUrl,
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
export function runInitScaffold(cwd, opts) {
|
|
136
|
+
const project = resolveInitProjectConfig(cwd, opts);
|
|
137
|
+
const boardPath = resolve(project.path, "CONDUCTOR.md");
|
|
138
|
+
const configPath = resolve(project.path, "conductor.yaml");
|
|
139
|
+
let created = 0;
|
|
140
|
+
if (!existsSync(project.path) || !statSync(project.path).isDirectory()) {
|
|
141
|
+
throw new Error(`Repository path does not exist: ${project.path}`);
|
|
142
|
+
}
|
|
143
|
+
if (!existsSync(boardPath) || opts.force) {
|
|
144
|
+
writeFileSync(boardPath, buildConductorBoard(project.projectId, project.displayName), "utf-8");
|
|
145
|
+
console.log(chalk.green("✔") + " Created CONDUCTOR.md");
|
|
146
|
+
created++;
|
|
147
|
+
}
|
|
148
|
+
else {
|
|
149
|
+
console.log(chalk.dim(" CONDUCTOR.md already exists (use --force to overwrite)"));
|
|
150
|
+
}
|
|
151
|
+
if (!existsSync(configPath) || opts.force) {
|
|
152
|
+
writeFileSync(configPath, buildConductorYaml(project), "utf-8");
|
|
153
|
+
console.log(chalk.green("✔") + " Created conductor.yaml");
|
|
154
|
+
created++;
|
|
155
|
+
}
|
|
156
|
+
else {
|
|
157
|
+
console.log(chalk.dim(" conductor.yaml already exists (use --force to overwrite)"));
|
|
158
|
+
}
|
|
159
|
+
return { created, project, boardPath, configPath };
|
|
160
|
+
}
|
|
66
161
|
export function registerInit(program) {
|
|
67
162
|
program
|
|
68
163
|
.command("init")
|
|
69
164
|
.description("Scaffold a new Conductor workspace (CONDUCTOR.md + conductor.yaml)")
|
|
70
165
|
.option("-f, --force", "Overwrite existing files")
|
|
166
|
+
.option("--project-id <id>", "Project id written to conductor.yaml")
|
|
167
|
+
.option("--display-name <name>", "Friendly name shown in the dashboard")
|
|
168
|
+
.option("--repo <owner/repo>", "GitHub repository slug. Auto-detected from origin if omitted.")
|
|
169
|
+
.option("--path <path>", "Repository path. Defaults to the current working directory.")
|
|
170
|
+
.option("--agent <agent>", "Default coding agent", "claude-code")
|
|
171
|
+
.option("--ide <editor>", "Preferred code editor", "vscode")
|
|
172
|
+
.option("--markdown-editor <editor>", "Preferred markdown app", "obsidian")
|
|
173
|
+
.option("--default-branch <branch>", "Default target branch. Auto-detected if omitted.")
|
|
174
|
+
.option("--default-working-directory <path>", "Relative directory inside the repository where agents start")
|
|
175
|
+
.option("--dashboard-url <url>", "Public dashboard URL written into conductor.yaml")
|
|
71
176
|
.action((opts) => {
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
177
|
+
try {
|
|
178
|
+
const cwd = process.cwd();
|
|
179
|
+
const { created, project } = runInitScaffold(cwd, opts);
|
|
180
|
+
if (created > 0) {
|
|
181
|
+
console.log();
|
|
182
|
+
console.log(chalk.bold("Detected project defaults:"));
|
|
183
|
+
console.log(chalk.dim(" project id:"), chalk.cyan(project.projectId));
|
|
184
|
+
console.log(chalk.dim(" repo:"), chalk.cyan(project.repo));
|
|
185
|
+
console.log(chalk.dim(" path:"), chalk.cyan(project.path));
|
|
186
|
+
console.log(chalk.dim(" default branch:"), chalk.cyan(project.defaultBranch));
|
|
187
|
+
console.log(chalk.dim(" agent:"), chalk.cyan(project.agent));
|
|
188
|
+
console.log();
|
|
189
|
+
console.log(chalk.bold("Next steps:"));
|
|
190
|
+
console.log(chalk.dim(" 1."), chalk.cyan("co start"), chalk.dim("— start the orchestrator"));
|
|
191
|
+
console.log(chalk.dim(" 2."), chalk.cyan("Open dashboard"), chalk.dim("— review Repository Settings and Preferences"));
|
|
192
|
+
console.log(chalk.dim(" 3."), chalk.cyan("Open CONDUCTOR.md"), chalk.dim("— write a task in 'Ready to Dispatch'"));
|
|
193
|
+
console.log();
|
|
194
|
+
console.log(chalk.dim(" Tip: Running `npx conductor-oss@latest init` from a repo root now auto-detects origin + branch."));
|
|
195
|
+
console.log();
|
|
196
|
+
}
|
|
91
197
|
}
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
console.
|
|
95
|
-
|
|
96
|
-
console.log(chalk.dim(" 2."), chalk.cyan("co start"), chalk.dim(" — start the orchestrator"));
|
|
97
|
-
console.log(chalk.dim(" 3."), chalk.cyan("Open CONDUCTOR.md"), chalk.dim("— write a task in 'Ready to Dispatch'"));
|
|
98
|
-
console.log();
|
|
99
|
-
console.log(chalk.dim(" Tip: Install the Obsidian Kanban plugin for the best board experience."));
|
|
100
|
-
console.log();
|
|
198
|
+
catch (error) {
|
|
199
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
200
|
+
console.error(chalk.red(`Init failed: ${message}`));
|
|
201
|
+
process.exitCode = 1;
|
|
101
202
|
}
|
|
102
203
|
});
|
|
103
204
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC9D,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,KAAK,MAAM,OAAO,CAAC;AA8B1B,MAAM,UAAU,mBAAmB,CAAC,SAAiB,EAAE,WAAmB;IACxE,OAAO,KAAK,WAAW;;;2OAGkN,SAAS;;;;;;;;;;;;;;;;;;;;;CAqBnP,CAAC;AACF,CAAC;AAED,SAAS,UAAU,CAAC,KAAa;IAC/B,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAC/B,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAa;IACrC,MAAM,UAAU,GAAG,KAAK;SACrB,IAAI,EAAE;SACN,WAAW,EAAE;SACb,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC;SAC3B,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IAE3B,OAAO,UAAU,IAAI,QAAQ,CAAC;AAChC,CAAC;AAED,SAAS,MAAM,CAAC,GAAW,EAAE,IAAc;IACzC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,EAAE,IAAI,EAAE;YACvC,GAAG;YACH,QAAQ,EAAE,MAAM;YAChB,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC;SACpC,CAAC,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;IAC3C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CAAC,SAAwB;IAC7C,IAAI,CAAC,SAAS;QAAE,OAAO,IAAI,CAAC;IAE5B,MAAM,QAAQ,GAAG,SAAS,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;IACrD,MAAM,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAErD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC;QAClC,OAAO,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC;IAC5E,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC;IACtE,CAAC;AACH,CAAC;AAED,SAAS,mBAAmB,CAAC,QAAgB;IAC3C,MAAM,UAAU,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC,cAAc,EAAE,SAAS,EAAE,0BAA0B,CAAC,CAAC,CAAC;IAC7F,IAAI,UAAU,EAAE,CAAC;QACf,OAAO,UAAU,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;IAC7C,CAAC;IAED,OAAO,MAAM,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC,CAAC;AACxD,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,MAAyB;IAC1D,MAAM,KAAK,GAAG;QACZ,2BAA2B;QAC3B,sDAAsD;QACtD,EAAE;QACF,YAAY;QACZ,EAAE;QACF,cAAc;QACd,iCAAiC;QACjC,kBAAkB,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;QAC5C,UAAU,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;QAClC,qBAAqB,UAAU,CAAC,MAAM,CAAC,cAAc,CAAC,EAAE;QACxD,kBAAkB;QAClB,wBAAwB;QACxB,iCAAiC;KAClC,CAAC;IAEF,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;QACxB,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,iBAAiB,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;IACrE,CAAC;IAED,KAAK,CAAC,IAAI,CACR,EAAE,EACF,WAAW,EACX,KAAK,MAAM,CAAC,SAAS,GAAG,EACxB,aAAa,UAAU,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,EAC7C,aAAa,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EACtC,aAAa,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EACtC,cAAc,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EACxC,sBAAsB,UAAU,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,EACxD,kBAAkB,EAClB,kCAAkC,EAClC,2BAA2B,CAC5B,CAAC;IAEF,IAAI,MAAM,CAAC,uBAAuB,EAAE,CAAC;QACnC,KAAK,CAAC,IAAI,CAAC,gCAAgC,UAAU,CAAC,MAAM,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;IAC3F,CAAC;IAED,KAAK,CAAC,IAAI,CACR,2BAA2B,EAC3B,qBAAqB,EACrB,mBAAmB,EACnB,EAAE,EACF,4BAA4B,EAC5B,oBAAoB,EACpB,gCAAgC,EAChC,8BAA8B,EAC9B,oBAAoB,EACpB,kBAAkB,EAClB,wBAAwB,EACxB,EAAE,EACF,mCAAmC,EACnC,YAAY,EACZ,cAAc,EACd,oCAAoC,EACpC,wCAAwC,CACzC,CAAC;IAEF,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,GAAW,EAAE,OAAoB;IACxE,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,GAAG,CAAC,CAAC;IAC3D,MAAM,YAAY,GAAG,aAAa,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;IACtF,MAAM,cAAc,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IACrD,MAAM,YAAY,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACxC,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,YAAY,IAAI,YAAY,YAAY,EAAE,CAAC;IACpF,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,YAAY,CAAC;IAChE,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,gBAAgB,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,YAAY,CAAC,CAAC;IAC3G,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,aAAa,CAAC;IACrD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,QAAQ,CAAC;IAC5C,MAAM,cAAc,GAAG,OAAO,CAAC,cAAc,EAAE,IAAI,EAAE,IAAI,UAAU,CAAC;IACpE,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,EAAE,IAAI,EAAE,IAAI,cAAc,IAAI,MAAM,CAAC;IAChF,MAAM,uBAAuB,GAAG,OAAO,CAAC,uBAAuB,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC;IAChF,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC;IAE1D,OAAO;QACL,SAAS;QACT,WAAW;QACX,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,QAAQ;QACd,KAAK;QACL,GAAG;QACH,cAAc;QACd,aAAa;QACb,uBAAuB;QACvB,YAAY;KACb,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,GAAW,EAAE,IAAiB;IAM5D,MAAM,OAAO,GAAG,wBAAwB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACpD,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;IACxD,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;IAE3D,IAAI,OAAO,GAAG,CAAC,CAAC;IAEhB,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;QACvE,MAAM,IAAI,KAAK,CAAC,mCAAmC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IACrE,CAAC;IAED,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QACzC,aAAa,CAAC,SAAS,EAAE,mBAAmB,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC,CAAC;QAC/F,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,wBAAwB,CAAC,CAAC;QACzD,OAAO,EAAE,CAAC;IACZ,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,0DAA0D,CAAC,CAAC,CAAC;IACrF,CAAC;IAED,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QAC1C,aAAa,CAAC,UAAU,EAAE,kBAAkB,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;QAChE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,0BAA0B,CAAC,CAAC;QAC3D,OAAO,EAAE,CAAC;IACZ,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,4DAA4D,CAAC,CAAC,CAAC;IACvF,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,OAAgB;IAC3C,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,oEAAoE,CAAC;SACjF,MAAM,CAAC,aAAa,EAAE,0BAA0B,CAAC;SACjD,MAAM,CAAC,mBAAmB,EAAE,sCAAsC,CAAC;SACnE,MAAM,CAAC,uBAAuB,EAAE,sCAAsC,CAAC;SACvE,MAAM,CAAC,qBAAqB,EAAE,+DAA+D,CAAC;SAC9F,MAAM,CAAC,eAAe,EAAE,6DAA6D,CAAC;SACtF,MAAM,CAAC,iBAAiB,EAAE,sBAAsB,EAAE,aAAa,CAAC;SAChE,MAAM,CAAC,gBAAgB,EAAE,uBAAuB,EAAE,QAAQ,CAAC;SAC3D,MAAM,CAAC,4BAA4B,EAAE,wBAAwB,EAAE,UAAU,CAAC;SAC1E,MAAM,CAAC,2BAA2B,EAAE,kDAAkD,CAAC;SACvF,MAAM,CAAC,oCAAoC,EAAE,6DAA6D,CAAC;SAC3G,MAAM,CAAC,uBAAuB,EAAE,kDAAkD,CAAC;SACnF,MAAM,CAAC,CAAC,IAAiB,EAAE,EAAE;QAC5B,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;YAC1B,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,eAAe,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YAExD,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;gBAChB,OAAO,CAAC,GAAG,EAAE,CAAC;gBACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC,CAAC;gBACtD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;gBACvE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;gBAC5D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;gBAC5D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,mBAAmB,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC;gBAC/E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;gBAC9D,OAAO,CAAC,GAAG,EAAE,CAAC;gBACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;gBACvC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC,CAAC;gBAC9F,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAC,CAAC;gBACxH,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC,CAAC;gBACpH,OAAO,CAAC,GAAG,EAAE,CAAC;gBACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,mGAAmG,CAAC,CAAC,CAAC;gBAC5H,OAAO,CAAC,GAAG,EAAE,CAAC;YAChB,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACvE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,gBAAgB,OAAO,EAAE,CAAC,CAAC,CAAC;YACpD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACvB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `co mcp-server`
|
|
3
|
+
*
|
|
4
|
+
* Starts Conductor as a Model Context Protocol (MCP) server on stdio.
|
|
5
|
+
* AI clients (Cursor, Claude Desktop, Windsurf, etc.) connect via this
|
|
6
|
+
* transport to dispatch tasks and inspect sessions.
|
|
7
|
+
*
|
|
8
|
+
* Usage:
|
|
9
|
+
* co mcp-server
|
|
10
|
+
*
|
|
11
|
+
* MCP client config example (claude_desktop_config.json):
|
|
12
|
+
* {
|
|
13
|
+
* "mcpServers": {
|
|
14
|
+
* "conductor": {
|
|
15
|
+
* "command": "co",
|
|
16
|
+
* "args": ["mcp-server"]
|
|
17
|
+
* }
|
|
18
|
+
* }
|
|
19
|
+
* }
|
|
20
|
+
*/
|
|
21
|
+
import type { Command } from "commander";
|
|
22
|
+
export declare function registerMcpServer(program: Command): void;
|
|
23
|
+
//# sourceMappingURL=mcp-server.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-server.d.ts","sourceRoot":"","sources":["../../src/commands/mcp-server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzC,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAaxD"}
|