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
|
@@ -0,0 +1,36 @@
|
|
|
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
|
+
export function registerMcpServer(program) {
|
|
22
|
+
program
|
|
23
|
+
.command("mcp-server")
|
|
24
|
+
.description("Start Conductor as an MCP server on stdio (for Cursor, Claude Desktop, etc.)")
|
|
25
|
+
.action(async () => {
|
|
26
|
+
try {
|
|
27
|
+
const { startMcpServer } = await import("@conductor-oss/plugin-mcp-server");
|
|
28
|
+
await startMcpServer();
|
|
29
|
+
}
|
|
30
|
+
catch (err) {
|
|
31
|
+
process.stderr.write(`Failed to start MCP server: ${String(err)}\n`);
|
|
32
|
+
process.exit(1);
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=mcp-server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-server.js","sourceRoot":"","sources":["../../src/commands/mcp-server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAIH,MAAM,UAAU,iBAAiB,CAAC,OAAgB;IAChD,OAAO;SACJ,OAAO,CAAC,YAAY,CAAC;SACrB,WAAW,CAAC,8EAA8E,CAAC;SAC3F,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,IAAI,CAAC;YACH,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,kCAAkC,CAAC,CAAC;YAC5E,MAAM,cAAc,EAAE,CAAC;QACzB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,+BAA+B,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACrE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"retry.d.ts","sourceRoot":"","sources":["../../src/commands/retry.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAUzC,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA4CpD"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import chalk from "chalk";
|
|
2
|
+
import ora from "ora";
|
|
3
|
+
import { createServices, loadConfig } from "../services.js";
|
|
4
|
+
export function registerRetry(program) {
|
|
5
|
+
program
|
|
6
|
+
.command("retry")
|
|
7
|
+
.description("Retry an existing task/session attempt with optional overrides")
|
|
8
|
+
.argument("<sessionOrTask>", "Session ID (pp-foo-1) or task ID (t-xxxx)")
|
|
9
|
+
.option("--agent <name>", "Override agent plugin for the new attempt")
|
|
10
|
+
.option("--model <name>", "Override model for the new attempt")
|
|
11
|
+
.option("--base-branch <name>", "Override base branch for the new attempt")
|
|
12
|
+
.option("--profile <name>", "Use a named project profile (fast/deep/safe/auto)")
|
|
13
|
+
.action(async (sessionOrTask, opts) => {
|
|
14
|
+
const spinner = ora("Creating retry attempt").start();
|
|
15
|
+
try {
|
|
16
|
+
const config = await loadConfig();
|
|
17
|
+
const { sessionManager } = await createServices(config);
|
|
18
|
+
const manager = sessionManager;
|
|
19
|
+
const next = await manager.retry(sessionOrTask, {
|
|
20
|
+
agent: opts.agent,
|
|
21
|
+
model: opts.model,
|
|
22
|
+
baseBranch: opts.baseBranch,
|
|
23
|
+
profile: opts.profile,
|
|
24
|
+
});
|
|
25
|
+
spinner.succeed(`New attempt started: ${chalk.green(next.id)}`);
|
|
26
|
+
console.log(` Project: ${chalk.dim(next.projectId)}`);
|
|
27
|
+
if (next.branch) {
|
|
28
|
+
console.log(` Branch: ${chalk.dim(next.branch)}`);
|
|
29
|
+
}
|
|
30
|
+
console.log(` Task: ${chalk.dim(next.metadata["taskId"] ?? "-")}`);
|
|
31
|
+
console.log(` Attempt: ${chalk.dim(next.metadata["attemptId"] ?? "-")}`);
|
|
32
|
+
console.log(` Retry Of: ${chalk.dim(next.metadata["retryOfSessionId"] ?? "-")}`);
|
|
33
|
+
console.log();
|
|
34
|
+
console.log(`SESSION=${next.id}`);
|
|
35
|
+
}
|
|
36
|
+
catch (err) {
|
|
37
|
+
spinner.fail("Retry failed");
|
|
38
|
+
console.error(chalk.red(String(err)));
|
|
39
|
+
process.exit(1);
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=retry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"retry.js","sourceRoot":"","sources":["../../src/commands/retry.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;AAS5D,MAAM,UAAU,aAAa,CAAC,OAAgB;IAC5C,OAAO;SACJ,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,gEAAgE,CAAC;SAC7E,QAAQ,CAAC,iBAAiB,EAAE,2CAA2C,CAAC;SACxE,MAAM,CAAC,gBAAgB,EAAE,2CAA2C,CAAC;SACrE,MAAM,CAAC,gBAAgB,EAAE,oCAAoC,CAAC;SAC9D,MAAM,CAAC,sBAAsB,EAAE,0CAA0C,CAAC;SAC1E,MAAM,CAAC,kBAAkB,EAAE,mDAAmD,CAAC;SAC/E,MAAM,CAAC,KAAK,EAAE,aAAqB,EAAE,IAAkB,EAAE,EAAE;QAC1D,MAAM,OAAO,GAAG,GAAG,CAAC,wBAAwB,CAAC,CAAC,KAAK,EAAE,CAAC;QACtD,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,cAKf,CAAC;YAEF,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,aAAa,EAAE;gBAC9C,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,UAAU,EAAE,IAAI,CAAC,UAAU;gBAC3B,OAAO,EAAE,IAAI,CAAC,OAAO;aACtB,CAAC,CAAC;YAEH,OAAO,CAAC,OAAO,CAAC,wBAAwB,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YAChE,OAAO,CAAC,GAAG,CAAC,eAAe,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;YACxD,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBAChB,OAAO,CAAC,GAAG,CAAC,eAAe,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACvD,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,eAAe,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC;YACxE,OAAO,CAAC,GAAG,CAAC,eAAe,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC;YAC3E,OAAO,CAAC,GAAG,CAAC,eAAe,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC;YAClF,OAAO,CAAC,GAAG,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;QACpC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YAC7B,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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAkXzC,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA+FpD"}
|
|
@@ -0,0 +1,413 @@
|
|
|
1
|
+
import { execFileSync, spawnSync } from "node:child_process";
|
|
2
|
+
import { createInterface } from "node:readline/promises";
|
|
3
|
+
import { homedir } from "node:os";
|
|
4
|
+
import process from "node:process";
|
|
5
|
+
import chalk from "chalk";
|
|
6
|
+
import { runInitScaffold } from "./init.js";
|
|
7
|
+
const AGENT_OPTIONS = [
|
|
8
|
+
{ value: "claude-code", label: "Claude Code" },
|
|
9
|
+
{ value: "codex", label: "OpenAI Codex" },
|
|
10
|
+
{ value: "gemini", label: "Gemini CLI" },
|
|
11
|
+
{ value: "github-copilot", label: "GitHub Copilot" },
|
|
12
|
+
{ value: "cursor-cli", label: "Cursor Agent" },
|
|
13
|
+
{ value: "amp", label: "Amp" },
|
|
14
|
+
{ value: "opencode", label: "OpenCode" },
|
|
15
|
+
{ value: "droid", label: "Droid" },
|
|
16
|
+
{ value: "qwen-code", label: "Qwen Code" },
|
|
17
|
+
{ value: "ccr", label: "CCR" },
|
|
18
|
+
];
|
|
19
|
+
const IDE_OPTIONS = [
|
|
20
|
+
{ value: "vscode", label: "VS Code" },
|
|
21
|
+
{ value: "vscode-insiders", label: "VS Code Insiders" },
|
|
22
|
+
{ value: "cursor", label: "Cursor" },
|
|
23
|
+
{ value: "zed", label: "Zed" },
|
|
24
|
+
{ value: "custom", label: "I already have something else" },
|
|
25
|
+
];
|
|
26
|
+
const MARKDOWN_EDITOR_OPTIONS = [
|
|
27
|
+
{ value: "obsidian", label: "Obsidian" },
|
|
28
|
+
{ value: "notion", label: "Notion" },
|
|
29
|
+
{ value: "logseq", label: "Logseq" },
|
|
30
|
+
{ value: "typora", label: "Typora" },
|
|
31
|
+
{ value: "custom", label: "I already have something else" },
|
|
32
|
+
];
|
|
33
|
+
function commandExists(command) {
|
|
34
|
+
const result = spawnSync("sh", ["-lc", `command -v ${command}`], { stdio: "ignore" });
|
|
35
|
+
return result.status === 0;
|
|
36
|
+
}
|
|
37
|
+
function appExists(appName) {
|
|
38
|
+
if (process.platform !== "darwin")
|
|
39
|
+
return false;
|
|
40
|
+
const candidates = [
|
|
41
|
+
`/Applications/${appName}.app`,
|
|
42
|
+
`${homedir()}/Applications/${appName}.app`,
|
|
43
|
+
];
|
|
44
|
+
return candidates.some((candidate) => spawnSync("test", ["-d", candidate], { stdio: "ignore" }).status === 0);
|
|
45
|
+
}
|
|
46
|
+
function runCommand(command) {
|
|
47
|
+
const result = spawnSync(command.cmd, command.args, { stdio: "inherit" });
|
|
48
|
+
if (result.status !== 0) {
|
|
49
|
+
throw new Error(`Command failed: ${command.label}`);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
function getPackageInstaller() {
|
|
53
|
+
if (commandExists("brew"))
|
|
54
|
+
return "brew";
|
|
55
|
+
if (commandExists("apt-get"))
|
|
56
|
+
return "apt";
|
|
57
|
+
return null;
|
|
58
|
+
}
|
|
59
|
+
function buildPackageInstall(label, brewFormula, aptFormula) {
|
|
60
|
+
const installer = getPackageInstaller();
|
|
61
|
+
if (installer === "brew") {
|
|
62
|
+
return { label, cmd: "brew", args: ["install", brewFormula] };
|
|
63
|
+
}
|
|
64
|
+
if (installer === "apt" && aptFormula) {
|
|
65
|
+
return { label, cmd: "sudo", args: ["apt-get", "install", "-y", aptFormula] };
|
|
66
|
+
}
|
|
67
|
+
return undefined;
|
|
68
|
+
}
|
|
69
|
+
function buildCaskInstall(label, cask) {
|
|
70
|
+
if (getPackageInstaller() !== "brew")
|
|
71
|
+
return undefined;
|
|
72
|
+
return { label, cmd: "brew", args: ["install", "--cask", cask] };
|
|
73
|
+
}
|
|
74
|
+
function buildNpmInstall(label, pkg) {
|
|
75
|
+
if (!commandExists("npm"))
|
|
76
|
+
return undefined;
|
|
77
|
+
return { label, cmd: "npm", args: ["install", "-g", pkg] };
|
|
78
|
+
}
|
|
79
|
+
function detectGitHubAuth() {
|
|
80
|
+
if (!commandExists("gh"))
|
|
81
|
+
return false;
|
|
82
|
+
const result = spawnSync("gh", ["auth", "status", "--hostname", "github.com"], { stdio: "ignore" });
|
|
83
|
+
return result.status === 0;
|
|
84
|
+
}
|
|
85
|
+
function buildAgentCheck(agent) {
|
|
86
|
+
const normalized = agent.trim();
|
|
87
|
+
const byAgent = {
|
|
88
|
+
"claude-code": {
|
|
89
|
+
commands: ["claude-code", "claude", "cc"],
|
|
90
|
+
install: buildNpmInstall("Install Claude Code", "@anthropic-ai/claude-code"),
|
|
91
|
+
},
|
|
92
|
+
codex: {
|
|
93
|
+
commands: ["codex"],
|
|
94
|
+
install: buildNpmInstall("Install OpenAI Codex", "@openai/codex-cli"),
|
|
95
|
+
},
|
|
96
|
+
gemini: {
|
|
97
|
+
commands: ["gemini"],
|
|
98
|
+
install: buildNpmInstall("Install Gemini CLI", "@google/gemini-cli"),
|
|
99
|
+
},
|
|
100
|
+
"github-copilot": {
|
|
101
|
+
commands: ["github-copilot", "copilot", "gh-copilot"],
|
|
102
|
+
install: buildNpmInstall("Install GitHub Copilot CLI", "@githubnext/github-copilot-cli"),
|
|
103
|
+
},
|
|
104
|
+
"cursor-cli": {
|
|
105
|
+
commands: ["cursor-cli", "cursor"],
|
|
106
|
+
},
|
|
107
|
+
amp: {
|
|
108
|
+
commands: ["amp"],
|
|
109
|
+
},
|
|
110
|
+
opencode: {
|
|
111
|
+
commands: ["opencode"],
|
|
112
|
+
},
|
|
113
|
+
droid: {
|
|
114
|
+
commands: ["droid"],
|
|
115
|
+
},
|
|
116
|
+
"qwen-code": {
|
|
117
|
+
commands: ["qwen-code"],
|
|
118
|
+
},
|
|
119
|
+
ccr: {
|
|
120
|
+
commands: ["ccr"],
|
|
121
|
+
},
|
|
122
|
+
};
|
|
123
|
+
const config = byAgent[normalized] ?? { commands: [normalized] };
|
|
124
|
+
const installed = config.commands.some((command) => commandExists(command));
|
|
125
|
+
return {
|
|
126
|
+
id: `agent:${normalized}`,
|
|
127
|
+
label: `AI assistant: ${normalized}`,
|
|
128
|
+
description: "Used to handle product and engineering tasks inside Conductor.",
|
|
129
|
+
installed,
|
|
130
|
+
detail: installed
|
|
131
|
+
? "Ready"
|
|
132
|
+
: config.install
|
|
133
|
+
? "Missing. Conductor can install it for you."
|
|
134
|
+
: "Missing. Automatic installation is not available yet for this tool.",
|
|
135
|
+
install: !installed ? config.install : undefined,
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
function buildIdeCheck(ide) {
|
|
139
|
+
const normalized = ide.trim();
|
|
140
|
+
const byIde = {
|
|
141
|
+
vscode: {
|
|
142
|
+
commands: ["code"],
|
|
143
|
+
apps: ["Visual Studio Code"],
|
|
144
|
+
install: buildCaskInstall("Install VS Code", "visual-studio-code"),
|
|
145
|
+
},
|
|
146
|
+
"vscode-insiders": {
|
|
147
|
+
commands: ["code-insiders"],
|
|
148
|
+
apps: ["Visual Studio Code - Insiders"],
|
|
149
|
+
install: buildCaskInstall("Install VS Code Insiders", "visual-studio-code-insiders"),
|
|
150
|
+
},
|
|
151
|
+
cursor: {
|
|
152
|
+
commands: ["cursor"],
|
|
153
|
+
apps: ["Cursor"],
|
|
154
|
+
install: buildCaskInstall("Install Cursor", "cursor"),
|
|
155
|
+
},
|
|
156
|
+
zed: {
|
|
157
|
+
commands: ["zed"],
|
|
158
|
+
apps: ["Zed"],
|
|
159
|
+
install: buildCaskInstall("Install Zed", "zed"),
|
|
160
|
+
},
|
|
161
|
+
};
|
|
162
|
+
const config = byIde[normalized];
|
|
163
|
+
if (!config)
|
|
164
|
+
return null;
|
|
165
|
+
const installed = config.commands.some((command) => commandExists(command))
|
|
166
|
+
|| config.apps.some((appName) => appExists(appName));
|
|
167
|
+
return {
|
|
168
|
+
id: `ide:${normalized}`,
|
|
169
|
+
label: `Code editor: ${normalized}`,
|
|
170
|
+
description: "Used when opening files or jumping into a remote workspace.",
|
|
171
|
+
installed,
|
|
172
|
+
detail: installed
|
|
173
|
+
? "Ready"
|
|
174
|
+
: config.install
|
|
175
|
+
? "Missing. Conductor can install it for you on macOS with Homebrew."
|
|
176
|
+
: "Missing. Install this editor manually on your machine.",
|
|
177
|
+
install: !installed ? config.install : undefined,
|
|
178
|
+
};
|
|
179
|
+
}
|
|
180
|
+
function buildMarkdownCheck(editor) {
|
|
181
|
+
const normalized = editor.trim();
|
|
182
|
+
const byEditor = {
|
|
183
|
+
obsidian: {
|
|
184
|
+
apps: ["Obsidian"],
|
|
185
|
+
install: buildCaskInstall("Install Obsidian", "obsidian"),
|
|
186
|
+
},
|
|
187
|
+
notion: {
|
|
188
|
+
apps: ["Notion"],
|
|
189
|
+
install: buildCaskInstall("Install Notion", "notion"),
|
|
190
|
+
},
|
|
191
|
+
logseq: {
|
|
192
|
+
apps: ["Logseq"],
|
|
193
|
+
install: buildCaskInstall("Install Logseq", "logseq"),
|
|
194
|
+
},
|
|
195
|
+
typora: {
|
|
196
|
+
apps: ["Typora"],
|
|
197
|
+
install: buildCaskInstall("Install Typora", "typora"),
|
|
198
|
+
},
|
|
199
|
+
};
|
|
200
|
+
const config = byEditor[normalized];
|
|
201
|
+
if (!config)
|
|
202
|
+
return null;
|
|
203
|
+
const installed = config.apps.some((appName) => appExists(appName));
|
|
204
|
+
return {
|
|
205
|
+
id: `markdown:${normalized}`,
|
|
206
|
+
label: `Notes app: ${normalized}`,
|
|
207
|
+
description: "Used as the product team's context and documentation source.",
|
|
208
|
+
installed,
|
|
209
|
+
detail: installed
|
|
210
|
+
? "Ready"
|
|
211
|
+
: config.install
|
|
212
|
+
? "Missing. Conductor can install it for you on macOS with Homebrew."
|
|
213
|
+
: "Missing. Install this app manually on your machine.",
|
|
214
|
+
install: !installed ? config.install : undefined,
|
|
215
|
+
};
|
|
216
|
+
}
|
|
217
|
+
function buildBaseChecks(agent, ide, markdownEditor) {
|
|
218
|
+
const checks = [
|
|
219
|
+
{
|
|
220
|
+
id: "git",
|
|
221
|
+
label: "Git",
|
|
222
|
+
description: "Required to create isolated workspaces and branches.",
|
|
223
|
+
installed: commandExists("git"),
|
|
224
|
+
detail: commandExists("git") ? "Ready" : "Missing. Conductor can install it for you.",
|
|
225
|
+
install: !commandExists("git") ? buildPackageInstall("Install Git", "git", "git") : undefined,
|
|
226
|
+
},
|
|
227
|
+
{
|
|
228
|
+
id: "tmux",
|
|
229
|
+
label: "tmux",
|
|
230
|
+
description: "Keeps long-running work alive even if the dashboard closes.",
|
|
231
|
+
installed: commandExists("tmux"),
|
|
232
|
+
detail: commandExists("tmux") ? "Ready" : "Missing. Conductor can install it for you.",
|
|
233
|
+
install: !commandExists("tmux") ? buildPackageInstall("Install tmux", "tmux", "tmux") : undefined,
|
|
234
|
+
},
|
|
235
|
+
{
|
|
236
|
+
id: "gh",
|
|
237
|
+
label: "GitHub CLI",
|
|
238
|
+
description: "Needed for repository discovery, pull requests, and CI integration.",
|
|
239
|
+
installed: commandExists("gh"),
|
|
240
|
+
detail: commandExists("gh") ? "Installed" : "Missing. Conductor can install it for you.",
|
|
241
|
+
install: !commandExists("gh") ? buildPackageInstall("Install GitHub CLI", "gh", "gh") : undefined,
|
|
242
|
+
},
|
|
243
|
+
{
|
|
244
|
+
id: "gh-auth",
|
|
245
|
+
label: "GitHub connection",
|
|
246
|
+
description: "Lets Conductor see repos and open pull requests for you.",
|
|
247
|
+
installed: detectGitHubAuth(),
|
|
248
|
+
detail: detectGitHubAuth() ? "Connected" : "Not connected yet. Conductor can guide you through browser sign-in.",
|
|
249
|
+
authCommand: !detectGitHubAuth() && commandExists("gh")
|
|
250
|
+
? {
|
|
251
|
+
label: "Connect GitHub",
|
|
252
|
+
cmd: "gh",
|
|
253
|
+
args: ["auth", "login", "--hostname", "github.com", "--web", "--git-protocol", "https", "--skip-ssh-key"],
|
|
254
|
+
}
|
|
255
|
+
: undefined,
|
|
256
|
+
},
|
|
257
|
+
buildAgentCheck(agent),
|
|
258
|
+
];
|
|
259
|
+
const ideCheck = buildIdeCheck(ide);
|
|
260
|
+
if (ideCheck)
|
|
261
|
+
checks.push(ideCheck);
|
|
262
|
+
const markdownCheck = buildMarkdownCheck(markdownEditor);
|
|
263
|
+
if (markdownCheck)
|
|
264
|
+
checks.push(markdownCheck);
|
|
265
|
+
return checks;
|
|
266
|
+
}
|
|
267
|
+
async function askYesNo(question, defaultValue = true) {
|
|
268
|
+
const rl = createInterface({ input: process.stdin, output: process.stdout });
|
|
269
|
+
const suffix = defaultValue ? "[Y/n]" : "[y/N]";
|
|
270
|
+
const answer = (await rl.question(`${question} ${suffix} `)).trim().toLowerCase();
|
|
271
|
+
rl.close();
|
|
272
|
+
if (!answer)
|
|
273
|
+
return defaultValue;
|
|
274
|
+
return answer === "y" || answer === "yes";
|
|
275
|
+
}
|
|
276
|
+
async function selectOption(question, options, fallback) {
|
|
277
|
+
const rl = createInterface({ input: process.stdin, output: process.stdout });
|
|
278
|
+
console.log();
|
|
279
|
+
console.log(chalk.bold(question));
|
|
280
|
+
options.forEach((option, index) => {
|
|
281
|
+
const isDefault = option.value === fallback;
|
|
282
|
+
console.log(` ${index + 1}. ${option.label}${isDefault ? chalk.dim(" (recommended)") : ""}`);
|
|
283
|
+
});
|
|
284
|
+
const answer = (await rl.question("Choose a number and press Enter: ")).trim();
|
|
285
|
+
rl.close();
|
|
286
|
+
const selected = Number.parseInt(answer, 10);
|
|
287
|
+
if (Number.isFinite(selected) && selected >= 1 && selected <= options.length) {
|
|
288
|
+
return options[selected - 1]?.value ?? fallback;
|
|
289
|
+
}
|
|
290
|
+
return fallback;
|
|
291
|
+
}
|
|
292
|
+
function printChecks(checks) {
|
|
293
|
+
console.log();
|
|
294
|
+
console.log(chalk.bold("Machine readiness"));
|
|
295
|
+
for (const check of checks) {
|
|
296
|
+
const marker = check.installed ? chalk.green("●") : chalk.yellow("●");
|
|
297
|
+
console.log(` ${marker} ${check.label}`);
|
|
298
|
+
console.log(chalk.dim(` ${check.detail}`));
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
function rerunChecks(agent, ide, markdownEditor) {
|
|
302
|
+
return buildBaseChecks(agent, ide, markdownEditor);
|
|
303
|
+
}
|
|
304
|
+
function startConductor(projectPath, configPath) {
|
|
305
|
+
const cliEntrypoint = process.argv[1];
|
|
306
|
+
if (!cliEntrypoint || cliEntrypoint.endsWith(".ts")) {
|
|
307
|
+
console.log();
|
|
308
|
+
console.log(chalk.yellow("Setup finished. Run `co start` to launch Conductor."));
|
|
309
|
+
return;
|
|
310
|
+
}
|
|
311
|
+
console.log();
|
|
312
|
+
console.log(chalk.bold("Launching Conductor..."));
|
|
313
|
+
execFileSync(process.execPath, [cliEntrypoint, "start", "--workspace", projectPath], {
|
|
314
|
+
cwd: projectPath,
|
|
315
|
+
stdio: "inherit",
|
|
316
|
+
env: {
|
|
317
|
+
...process.env,
|
|
318
|
+
CONDUCTOR_WORKSPACE: projectPath,
|
|
319
|
+
CO_CONFIG_PATH: configPath,
|
|
320
|
+
},
|
|
321
|
+
});
|
|
322
|
+
}
|
|
323
|
+
export function registerSetup(program) {
|
|
324
|
+
program
|
|
325
|
+
.command("setup")
|
|
326
|
+
.description("Guided first-run setup for non-technical users")
|
|
327
|
+
.option("-f, --force", "Overwrite existing files")
|
|
328
|
+
.option("--project-id <id>", "Project id written to conductor.yaml")
|
|
329
|
+
.option("--display-name <name>", "Friendly name shown in the dashboard")
|
|
330
|
+
.option("--repo <owner/repo>", "GitHub repository slug. Auto-detected from origin if omitted.")
|
|
331
|
+
.option("--path <path>", "Repository path. Defaults to the current working directory.")
|
|
332
|
+
.option("--agent <agent>", "Default coding agent")
|
|
333
|
+
.option("--default-branch <branch>", "Default target branch. Auto-detected if omitted.")
|
|
334
|
+
.option("--default-working-directory <path>", "Relative directory inside the repository where agents start")
|
|
335
|
+
.option("--dashboard-url <url>", "Public dashboard URL written into conductor.yaml")
|
|
336
|
+
.option("--ide <editor>", "Preferred code editor")
|
|
337
|
+
.option("--markdown-editor <editor>", "Preferred markdown app")
|
|
338
|
+
.option("--yes", "Install what is missing without asking for confirmation")
|
|
339
|
+
.option("--no-start", "Do not start Conductor after setup completes")
|
|
340
|
+
.action(async (opts) => {
|
|
341
|
+
try {
|
|
342
|
+
const cwd = process.cwd();
|
|
343
|
+
const agent = opts.agent?.trim() || await selectOption("Which AI assistant should Conductor use by default?", AGENT_OPTIONS, "claude-code");
|
|
344
|
+
const ide = opts.ide?.trim() || await selectOption("Which code editor should open when someone reviews work?", IDE_OPTIONS, "vscode");
|
|
345
|
+
const markdownEditor = opts.markdownEditor?.trim() || await selectOption("Which notes app should Conductor expect for docs and context?", MARKDOWN_EDITOR_OPTIONS, "obsidian");
|
|
346
|
+
console.log();
|
|
347
|
+
console.log(chalk.bold("Conductor Setup"));
|
|
348
|
+
console.log(chalk.dim("We’ll check your machine, install what is missing, scaffold the workspace, and start Conductor."));
|
|
349
|
+
let checks = rerunChecks(agent, ide, markdownEditor);
|
|
350
|
+
printChecks(checks);
|
|
351
|
+
const installableChecks = checks.filter((check) => !check.installed && check.install);
|
|
352
|
+
if (installableChecks.length > 0) {
|
|
353
|
+
const shouldInstall = opts.yes || await askYesNo("Install the missing tools automatically?", true);
|
|
354
|
+
if (shouldInstall) {
|
|
355
|
+
for (const check of installableChecks) {
|
|
356
|
+
if (!check.install)
|
|
357
|
+
continue;
|
|
358
|
+
console.log();
|
|
359
|
+
console.log(chalk.bold(check.install.label));
|
|
360
|
+
runCommand(check.install);
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
checks = rerunChecks(agent, ide, markdownEditor);
|
|
365
|
+
const pendingAuth = checks.filter((check) => !check.installed && check.authCommand);
|
|
366
|
+
if (pendingAuth.length > 0) {
|
|
367
|
+
const shouldConnect = opts.yes || await askYesNo("Connect GitHub in your browser now?", true);
|
|
368
|
+
if (shouldConnect) {
|
|
369
|
+
for (const check of pendingAuth) {
|
|
370
|
+
if (!check.authCommand)
|
|
371
|
+
continue;
|
|
372
|
+
console.log();
|
|
373
|
+
console.log(chalk.bold(check.authCommand.label));
|
|
374
|
+
runCommand(check.authCommand);
|
|
375
|
+
}
|
|
376
|
+
}
|
|
377
|
+
}
|
|
378
|
+
checks = rerunChecks(agent, ide, markdownEditor);
|
|
379
|
+
printChecks(checks);
|
|
380
|
+
console.log();
|
|
381
|
+
const remainingManual = checks.filter((check) => !check.installed && !check.install && !check.authCommand);
|
|
382
|
+
if (remainingManual.length > 0) {
|
|
383
|
+
console.log(chalk.yellow("A few selections still need manual install:"));
|
|
384
|
+
for (const check of remainingManual) {
|
|
385
|
+
console.log(` - ${check.label}: ${check.detail}`);
|
|
386
|
+
}
|
|
387
|
+
}
|
|
388
|
+
console.log();
|
|
389
|
+
console.log(chalk.bold("Scaffolding this repository..."));
|
|
390
|
+
const { project, created, configPath } = runInitScaffold(cwd, {
|
|
391
|
+
...opts,
|
|
392
|
+
agent,
|
|
393
|
+
ide,
|
|
394
|
+
markdownEditor,
|
|
395
|
+
});
|
|
396
|
+
if (created > 0) {
|
|
397
|
+
console.log();
|
|
398
|
+
console.log(chalk.green("Everything is configured for this workspace."));
|
|
399
|
+
console.log(chalk.dim(`Project: ${project.displayName} (${project.projectId})`));
|
|
400
|
+
console.log(chalk.dim(`Repository: ${project.repo}`));
|
|
401
|
+
}
|
|
402
|
+
if (opts.start !== false) {
|
|
403
|
+
startConductor(project.path, configPath);
|
|
404
|
+
}
|
|
405
|
+
}
|
|
406
|
+
catch (error) {
|
|
407
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
408
|
+
console.error(chalk.red(`Setup failed: ${message}`));
|
|
409
|
+
process.exitCode = 1;
|
|
410
|
+
}
|
|
411
|
+
});
|
|
412
|
+
}
|
|
413
|
+
//# sourceMappingURL=setup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spawn.d.ts","sourceRoot":"","sources":["../../src/commands/spawn.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAWzC,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"spawn.d.ts","sourceRoot":"","sources":["../../src/commands/spawn.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAWzC,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAmEpD"}
|
package/dist/commands/spawn.js
CHANGED
|
@@ -13,7 +13,7 @@ export function registerSpawn(program) {
|
|
|
13
13
|
.description("Spawn a new agent session for a project")
|
|
14
14
|
.argument("<project>", "Project ID from conductor config")
|
|
15
15
|
.argument("[issueOrPrompt]", "Issue identifier (#42, INT-123) or inline prompt")
|
|
16
|
-
.option("--agent <name>", "Override agent plugin (e.g. claude-code, codex)")
|
|
16
|
+
.option("--agent <name>", "Override agent plugin (e.g. claude-code, codex, gemini, amp, cursor-cli, opencode, droid, qwen-code, ccr, github-copilot, openai-codex, google-gemini, open-code)")
|
|
17
17
|
.option("--model <name>", "Override model (e.g. o4-mini, claude-opus-4-6)")
|
|
18
18
|
.option("--branch <name>", "Override branch name")
|
|
19
19
|
.option("--prompt <text>", "Explicit prompt (if issueOrPrompt is an issue)")
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spawn.js","sourceRoot":"","sources":["../../src/commands/spawn.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AAGtB,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAS5D,MAAM,UAAU,aAAa,CAAC,OAAgB;IAC5C,OAAO;SACJ,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,yCAAyC,CAAC;SACtD,QAAQ,CAAC,WAAW,EAAE,kCAAkC,CAAC;SACzD,QAAQ,CAAC,iBAAiB,EAAE,kDAAkD,CAAC;SAC/E,MAAM,
|
|
1
|
+
{"version":3,"file":"spawn.js","sourceRoot":"","sources":["../../src/commands/spawn.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../../src/commands/start.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAKH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGzC,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../../src/commands/start.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAKH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGzC,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAsSpD"}
|