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.
Files changed (51) hide show
  1. package/LICENSE +21 -0
  2. package/dist/commands/cleanup.js +1 -1
  3. package/dist/commands/cleanup.js.map +1 -1
  4. package/dist/commands/doctor.d.ts +3 -0
  5. package/dist/commands/doctor.d.ts.map +1 -0
  6. package/dist/commands/doctor.js +141 -0
  7. package/dist/commands/doctor.js.map +1 -0
  8. package/dist/commands/feedback.d.ts +3 -0
  9. package/dist/commands/feedback.d.ts.map +1 -0
  10. package/dist/commands/feedback.js +32 -0
  11. package/dist/commands/feedback.js.map +1 -0
  12. package/dist/commands/init.d.ts +34 -0
  13. package/dist/commands/init.d.ts.map +1 -1
  14. package/dist/commands/init.js +164 -63
  15. package/dist/commands/init.js.map +1 -1
  16. package/dist/commands/mcp-server.d.ts +23 -0
  17. package/dist/commands/mcp-server.d.ts.map +1 -0
  18. package/dist/commands/mcp-server.js +36 -0
  19. package/dist/commands/mcp-server.js.map +1 -0
  20. package/dist/commands/retry.d.ts +3 -0
  21. package/dist/commands/retry.d.ts.map +1 -0
  22. package/dist/commands/retry.js +43 -0
  23. package/dist/commands/retry.js.map +1 -0
  24. package/dist/commands/setup.d.ts +3 -0
  25. package/dist/commands/setup.d.ts.map +1 -0
  26. package/dist/commands/setup.js +413 -0
  27. package/dist/commands/setup.js.map +1 -0
  28. package/dist/commands/spawn.d.ts.map +1 -1
  29. package/dist/commands/spawn.js +1 -1
  30. package/dist/commands/spawn.js.map +1 -1
  31. package/dist/commands/start.d.ts.map +1 -1
  32. package/dist/commands/start.js +82 -24
  33. package/dist/commands/start.js.map +1 -1
  34. package/dist/commands/task.d.ts +3 -0
  35. package/dist/commands/task.d.ts.map +1 -0
  36. package/dist/commands/task.js +48 -0
  37. package/dist/commands/task.js.map +1 -0
  38. package/dist/commands/watch.d.ts.map +1 -1
  39. package/dist/commands/watch.js +4 -2
  40. package/dist/commands/watch.js.map +1 -1
  41. package/dist/commands/webhook.d.ts +12 -0
  42. package/dist/commands/webhook.d.ts.map +1 -0
  43. package/dist/commands/webhook.js +59 -0
  44. package/dist/commands/webhook.js.map +1 -0
  45. package/dist/index.js +15 -1
  46. package/dist/index.js.map +1 -1
  47. package/dist/services.d.ts +7 -5
  48. package/dist/services.d.ts.map +1 -1
  49. package/dist/services.js +21 -4
  50. package/dist/services.js.map +1 -1
  51. 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.
@@ -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":"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"}
1
+ {"version":3,"file":"cleanup.js","sourceRoot":"","sources":["../../src/commands/cleanup.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { Command } from "commander";
2
+ export declare function registerDoctor(program: Command): void;
3
+ //# sourceMappingURL=doctor.d.ts.map
@@ -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,3 @@
1
+ import type { Command } from "commander";
2
+ export declare function registerFeedback(program: Command): void;
3
+ //# sourceMappingURL=feedback.d.ts.map
@@ -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"}
@@ -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;AAKH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA4DzC,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAwCnD"}
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"}
@@ -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 { writeFileSync, existsSync } from "node:fs";
8
- import { resolve } from "node:path";
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
- const CONDUCTOR_MD = `# My Project
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\` or \`#agent/codex\` · \`#project/my-app\` · \`#type/feature\` · \`#priority/high\`
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
- const CONDUCTOR_YAML = `# Conductor Configuration
36
- # Docs: https://github.com/conductor-oss/conductor
37
-
38
- port: 4747
39
-
40
- projects:
41
- my-app:
42
- path: ~/projects/my-app # Path to your project
43
- repo: your-org/my-app # GitHub org/repo for PR tracking
44
- agent: claude-code # "claude-code", "codex", or "gemini"
45
- agentConfig:
46
- model: claude-sonnet-4-6
47
- permissions: skip # Fully autonomous (no prompts)
48
- workspace: worktree # Git worktree isolation per task
49
- runtime: tmux
50
- scm: github
51
-
52
- # Add more projects below:
53
- # another-project:
54
- # path: ~/projects/another
55
- # repo: your-org/another
56
- # agent: codex
57
- # agentConfig:
58
- # model: o4-mini
59
-
60
- # Optional: Discord notifications
61
- # plugins:
62
- # discord:
63
- # channelId: "YOUR_CHANNEL_ID"
64
- # tokenEnvVar: DISCORD_BOT_TOKEN
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
- const cwd = process.cwd();
73
- const boardPath = resolve(cwd, "CONDUCTOR.md");
74
- const configPath = resolve(cwd, "conductor.yaml");
75
- let created = 0;
76
- if (!existsSync(boardPath) || opts.force) {
77
- writeFileSync(boardPath, CONDUCTOR_MD, "utf-8");
78
- console.log(chalk.green("") + " Created CONDUCTOR.md");
79
- created++;
80
- }
81
- else {
82
- console.log(chalk.dim(" CONDUCTOR.md already exists (use --force to overwrite)"));
83
- }
84
- if (!existsSync(configPath) || opts.force) {
85
- writeFileSync(configPath, CONDUCTOR_YAML, "utf-8");
86
- console.log(chalk.green("") + " Created conductor.yaml");
87
- created++;
88
- }
89
- else {
90
- console.log(chalk.dim(" conductor.yaml already exists (use --force to overwrite)"));
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
- if (created > 0) {
93
- console.log();
94
- console.log(chalk.bold("Next steps:"));
95
- console.log(chalk.dim(" 1."), chalk.cyan("Edit conductor.yaml"), chalk.dim("— set your project path, repo, and agent"));
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;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,MAAM,YAAY,GAAG;;;;;;;;;;;;;;;;;;;;;;;;CAwBpB,CAAC;AAEF,MAAM,cAAc,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8BtB,CAAC;AAEF,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,CAAC,IAAyB,EAAE,EAAE;QACpC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QAE1B,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;QAC/C,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC;QAElD,IAAI,OAAO,GAAG,CAAC,CAAC;QAEhB,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACzC,aAAa,CAAC,SAAS,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;YAChD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,wBAAwB,CAAC,CAAC;YACzD,OAAO,EAAE,CAAC;QACZ,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,0DAA0D,CAAC,CAAC,CAAC;QACrF,CAAC;QAED,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAC1C,aAAa,CAAC,UAAU,EAAE,cAAc,EAAE,OAAO,CAAC,CAAC;YACnD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,0BAA0B,CAAC,CAAC;YAC3D,OAAO,EAAE,CAAC;QACZ,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,4DAA4D,CAAC,CAAC,CAAC;QACvF,CAAC;QAED,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;YAChB,OAAO,CAAC,GAAG,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;YACvC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC,CAAC;YACzH,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC,CAAC;YACvG,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;YACpH,OAAO,CAAC,GAAG,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,0EAA0E,CAAC,CAAC,CAAC;YACnG,OAAO,CAAC,GAAG,EAAE,CAAC;QAChB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
@@ -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"}