conductor-oss 0.1.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/dist/commands/attach.d.ts +8 -0
- package/dist/commands/attach.d.ts.map +1 -0
- package/dist/commands/attach.js +65 -0
- package/dist/commands/attach.js.map +1 -0
- package/dist/commands/cleanup.d.ts +9 -0
- package/dist/commands/cleanup.d.ts.map +1 -0
- package/dist/commands/cleanup.js +68 -0
- package/dist/commands/cleanup.js.map +1 -0
- package/dist/commands/dashboard.d.ts +8 -0
- package/dist/commands/dashboard.d.ts.map +1 -0
- package/dist/commands/dashboard.js +40 -0
- package/dist/commands/dashboard.js.map +1 -0
- package/dist/commands/init.d.ts +9 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +104 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/kill.d.ts +8 -0
- package/dist/commands/kill.d.ts.map +1 -0
- package/dist/commands/kill.js +65 -0
- package/dist/commands/kill.js.map +1 -0
- package/dist/commands/list.d.ts +9 -0
- package/dist/commands/list.d.ts.map +1 -0
- package/dist/commands/list.js +172 -0
- package/dist/commands/list.js.map +1 -0
- package/dist/commands/restore.d.ts +9 -0
- package/dist/commands/restore.d.ts.map +1 -0
- package/dist/commands/restore.js +44 -0
- package/dist/commands/restore.js.map +1 -0
- package/dist/commands/send.d.ts +8 -0
- package/dist/commands/send.d.ts.map +1 -0
- package/dist/commands/send.js +42 -0
- package/dist/commands/send.js.map +1 -0
- package/dist/commands/spawn.d.ts +9 -0
- package/dist/commands/spawn.d.ts.map +1 -0
- package/dist/commands/spawn.js +64 -0
- package/dist/commands/spawn.js.map +1 -0
- package/dist/commands/start.d.ts +13 -0
- package/dist/commands/start.d.ts.map +1 -0
- package/dist/commands/start.js +224 -0
- package/dist/commands/start.js.map +1 -0
- package/dist/commands/status.d.ts +10 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +132 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/watch.d.ts +12 -0
- package/dist/commands/watch.d.ts.map +1 -0
- package/dist/commands/watch.js +82 -0
- package/dist/commands/watch.js.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +39 -0
- package/dist/index.js.map +1 -0
- package/dist/services.d.ts +31 -0
- package/dist/services.d.ts.map +1 -0
- package/dist/services.js +78 -0
- package/dist/services.js.map +1 -0
- package/package.json +59 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"watch.d.ts","sourceRoot":"","sources":["../../src/commands/watch.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMzC,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA4EpD"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `co watch`
|
|
3
|
+
*
|
|
4
|
+
* Watches Obsidian CONDUCTOR.md kanban boards for tasks moved to "Ready to Dispatch".
|
|
5
|
+
* When a task is detected, spawns an agent session via `co spawn`.
|
|
6
|
+
*
|
|
7
|
+
* Supports project-specific boards (auto-detected from path) and the workspace-level
|
|
8
|
+
* board (requires #project/ tag on the card).
|
|
9
|
+
*/
|
|
10
|
+
import chalk from "chalk";
|
|
11
|
+
import ora from "ora";
|
|
12
|
+
import { createServices, loadConfig } from "../services.js";
|
|
13
|
+
const WORKSPACE = process.env["CONDUCTOR_WORKSPACE"]
|
|
14
|
+
?? `${process.env["HOME"]}/.conductor/workspace`;
|
|
15
|
+
export function registerWatch(program) {
|
|
16
|
+
program
|
|
17
|
+
.command("watch")
|
|
18
|
+
.description("Watch Obsidian CONDUCTOR.md boards and auto-dispatch tasks")
|
|
19
|
+
.option("-w, --workspace <path>", "Obsidian workspace path", WORKSPACE)
|
|
20
|
+
.option("--poll <ms>", "Polling interval in milliseconds", "5000")
|
|
21
|
+
.action(async (opts) => {
|
|
22
|
+
try {
|
|
23
|
+
const config = await loadConfig();
|
|
24
|
+
const { sessionManager } = await createServices(config);
|
|
25
|
+
const core = await import("@conductor-oss/core");
|
|
26
|
+
const spinner = ora("Discovering boards").start();
|
|
27
|
+
const boards = core.discoverBoards(opts.workspace);
|
|
28
|
+
if (boards.length === 0) {
|
|
29
|
+
spinner.fail("No CONDUCTOR.md boards found");
|
|
30
|
+
console.log(chalk.dim(`Searched in: ${opts.workspace}`));
|
|
31
|
+
process.exit(1);
|
|
32
|
+
}
|
|
33
|
+
spinner.succeed(`Found ${boards.length} board(s)`);
|
|
34
|
+
const boardProjectMap = core.buildBoardProjectMap(boards, config);
|
|
35
|
+
// Show board -> project mapping
|
|
36
|
+
for (const board of boards) {
|
|
37
|
+
const project = boardProjectMap.get(board);
|
|
38
|
+
if (project) {
|
|
39
|
+
console.log(chalk.dim(` ${board} -> ${chalk.cyan(project)}`));
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
console.log(chalk.dim(` ${board} -> ${chalk.yellow("workspace (needs #project/ tag)")}`));
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
const watcher = core.createBoardWatcher({
|
|
46
|
+
config,
|
|
47
|
+
sessionManager,
|
|
48
|
+
boardPaths: boards,
|
|
49
|
+
boardProjectMap,
|
|
50
|
+
pollIntervalMs: parseInt(opts.poll, 10),
|
|
51
|
+
onDispatch: (projectId, sessionId, task) => {
|
|
52
|
+
console.log(chalk.green(` Dispatched: `) +
|
|
53
|
+
chalk.cyan(sessionId) +
|
|
54
|
+
chalk.dim(` -> ${projectId}: "${task}"`));
|
|
55
|
+
},
|
|
56
|
+
onError: (err, context) => {
|
|
57
|
+
console.error(chalk.red(` Error [${context}]: ${err.message}`));
|
|
58
|
+
},
|
|
59
|
+
});
|
|
60
|
+
watcher.start();
|
|
61
|
+
console.log();
|
|
62
|
+
console.log(chalk.bold.green("Board watcher running."));
|
|
63
|
+
console.log(chalk.dim(" Move tasks to 'Ready to Dispatch' in Obsidian to auto-spawn agents."));
|
|
64
|
+
console.log(chalk.dim(" Press Ctrl-C to stop.\n"));
|
|
65
|
+
// Graceful shutdown
|
|
66
|
+
const shutdown = () => {
|
|
67
|
+
console.log(chalk.dim("\nStopping board watcher..."));
|
|
68
|
+
watcher.stop();
|
|
69
|
+
process.exit(0);
|
|
70
|
+
};
|
|
71
|
+
process.on("SIGINT", shutdown);
|
|
72
|
+
process.on("SIGTERM", shutdown);
|
|
73
|
+
// Keep alive
|
|
74
|
+
setInterval(() => { }, 60_000);
|
|
75
|
+
}
|
|
76
|
+
catch (err) {
|
|
77
|
+
console.error(chalk.red(`Failed to start watcher: ${err}`));
|
|
78
|
+
process.exit(1);
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=watch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"watch.js","sourceRoot":"","sources":["../../src/commands/watch.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;;;GAKG"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Conductor CLI — `co`
|
|
4
|
+
*
|
|
5
|
+
* Markdown-native AI agent orchestrator.
|
|
6
|
+
* Dispatch tasks from a kanban board, track PRs, CI, and reviews.
|
|
7
|
+
*/
|
|
8
|
+
import { Command } from "commander";
|
|
9
|
+
import { registerSpawn } from "./commands/spawn.js";
|
|
10
|
+
import { registerList } from "./commands/list.js";
|
|
11
|
+
import { registerStatus } from "./commands/status.js";
|
|
12
|
+
import { registerSend } from "./commands/send.js";
|
|
13
|
+
import { registerKill } from "./commands/kill.js";
|
|
14
|
+
import { registerAttach } from "./commands/attach.js";
|
|
15
|
+
import { registerCleanup } from "./commands/cleanup.js";
|
|
16
|
+
import { registerRestore } from "./commands/restore.js";
|
|
17
|
+
import { registerDashboard } from "./commands/dashboard.js";
|
|
18
|
+
import { registerStart } from "./commands/start.js";
|
|
19
|
+
import { registerWatch } from "./commands/watch.js";
|
|
20
|
+
import { registerInit } from "./commands/init.js";
|
|
21
|
+
const program = new Command();
|
|
22
|
+
program
|
|
23
|
+
.name("co")
|
|
24
|
+
.description("Conductor — markdown-native AI agent orchestrator")
|
|
25
|
+
.version("0.1.0");
|
|
26
|
+
registerSpawn(program);
|
|
27
|
+
registerList(program);
|
|
28
|
+
registerStatus(program);
|
|
29
|
+
registerSend(program);
|
|
30
|
+
registerKill(program);
|
|
31
|
+
registerAttach(program);
|
|
32
|
+
registerCleanup(program);
|
|
33
|
+
registerRestore(program);
|
|
34
|
+
registerDashboard(program);
|
|
35
|
+
registerStart(program);
|
|
36
|
+
registerWatch(program);
|
|
37
|
+
registerInit(program);
|
|
38
|
+
program.parse();
|
|
39
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,IAAI,CAAC;KACV,WAAW,CAAC,mDAAmD,CAAC;KAChE,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,aAAa,CAAC,OAAO,CAAC,CAAC;AACvB,YAAY,CAAC,OAAO,CAAC,CAAC;AACtB,cAAc,CAAC,OAAO,CAAC,CAAC;AACxB,YAAY,CAAC,OAAO,CAAC,CAAC;AACtB,YAAY,CAAC,OAAO,CAAC,CAAC;AACtB,cAAc,CAAC,OAAO,CAAC,CAAC;AACxB,eAAe,CAAC,OAAO,CAAC,CAAC;AACzB,eAAe,CAAC,OAAO,CAAC,CAAC;AACzB,iBAAiB,CAAC,OAAO,CAAC,CAAC;AAC3B,aAAa,CAAC,OAAO,CAAC,CAAC;AACvB,aAAa,CAAC,OAAO,CAAC,CAAC;AACvB,YAAY,CAAC,OAAO,CAAC,CAAC;AAEtB,OAAO,CAAC,KAAK,EAAE,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared service factory for CLI commands.
|
|
3
|
+
*
|
|
4
|
+
* Loads the conductor config (YAML), registers all plugin packages,
|
|
5
|
+
* and creates a SessionManager backed by the core implementation.
|
|
6
|
+
*
|
|
7
|
+
* Every command that needs a SessionManager calls `createServices()` once.
|
|
8
|
+
*/
|
|
9
|
+
import type { OrchestratorConfig, SessionManager, PluginRegistry } from "@conductor-oss/core";
|
|
10
|
+
/** Re-export for convenience. */
|
|
11
|
+
export type { OrchestratorConfig, SessionManager };
|
|
12
|
+
/**
|
|
13
|
+
* Load config from the standard YAML file.
|
|
14
|
+
* Imported lazily from @conductor-oss/core.
|
|
15
|
+
*/
|
|
16
|
+
export declare function loadConfig(): Promise<OrchestratorConfig>;
|
|
17
|
+
/**
|
|
18
|
+
* Create a PluginRegistry with all built-in plugins registered.
|
|
19
|
+
*/
|
|
20
|
+
export declare function createRegistry(): Promise<PluginRegistry>;
|
|
21
|
+
/**
|
|
22
|
+
* Create a fully-wired SessionManager.
|
|
23
|
+
*
|
|
24
|
+
* Loads config, registers plugins, and creates the manager in one call.
|
|
25
|
+
* If you already have the config, pass it to avoid a second file read.
|
|
26
|
+
*/
|
|
27
|
+
export declare function createServices(existingConfig?: OrchestratorConfig): Promise<{
|
|
28
|
+
config: OrchestratorConfig;
|
|
29
|
+
sessionManager: SessionManager;
|
|
30
|
+
}>;
|
|
31
|
+
//# sourceMappingURL=services.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"services.d.ts","sourceRoot":"","sources":["../src/services.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EACV,kBAAkB,EAClB,cAAc,EACd,cAAc,EAEf,MAAM,qBAAqB,CAAC;AA6B7B,iCAAiC;AACjC,YAAY,EAAE,kBAAkB,EAAE,cAAc,EAAE,CAAC;AAEnD;;;GAGG;AACH,wBAAsB,UAAU,IAAI,OAAO,CAAC,kBAAkB,CAAC,CAM9D;AAED;;GAEG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,cAAc,CAAC,CAU9D;AAED;;;;;GAKG;AACH,wBAAsB,cAAc,CAClC,cAAc,CAAC,EAAE,kBAAkB,GAClC,OAAO,CAAC;IAAE,MAAM,EAAE,kBAAkB,CAAC;IAAC,cAAc,EAAE,cAAc,CAAA;CAAE,CAAC,CAezE"}
|
package/dist/services.js
ADDED
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared service factory for CLI commands.
|
|
3
|
+
*
|
|
4
|
+
* Loads the conductor config (YAML), registers all plugin packages,
|
|
5
|
+
* and creates a SessionManager backed by the core implementation.
|
|
6
|
+
*
|
|
7
|
+
* Every command that needs a SessionManager calls `createServices()` once.
|
|
8
|
+
*/
|
|
9
|
+
// ---- Plugin packages (workspace:* deps in package.json) ----
|
|
10
|
+
import runtimeTmux from "@conductor-oss/plugin-runtime-tmux";
|
|
11
|
+
import agentClaudeCode from "@conductor-oss/plugin-agent-claude-code";
|
|
12
|
+
import agentCodex from "@conductor-oss/plugin-agent-codex";
|
|
13
|
+
import workspaceWorktree from "@conductor-oss/plugin-workspace-worktree";
|
|
14
|
+
import trackerGithub from "@conductor-oss/plugin-tracker-github";
|
|
15
|
+
import scmGithub from "@conductor-oss/plugin-scm-github";
|
|
16
|
+
import notifierDiscord from "@conductor-oss/plugin-notifier-discord";
|
|
17
|
+
import notifierDesktop from "@conductor-oss/plugin-notifier-desktop";
|
|
18
|
+
import agentGemini from "@conductor-oss/plugin-agent-gemini";
|
|
19
|
+
/**
|
|
20
|
+
* All known plugin modules.
|
|
21
|
+
* Each is registered into the PluginRegistry at startup.
|
|
22
|
+
*/
|
|
23
|
+
const ALL_PLUGINS = [
|
|
24
|
+
runtimeTmux,
|
|
25
|
+
agentClaudeCode,
|
|
26
|
+
agentCodex,
|
|
27
|
+
agentGemini,
|
|
28
|
+
workspaceWorktree,
|
|
29
|
+
trackerGithub,
|
|
30
|
+
scmGithub,
|
|
31
|
+
notifierDiscord,
|
|
32
|
+
notifierDesktop,
|
|
33
|
+
];
|
|
34
|
+
/**
|
|
35
|
+
* Load config from the standard YAML file.
|
|
36
|
+
* Imported lazily from @conductor-oss/core.
|
|
37
|
+
*/
|
|
38
|
+
export async function loadConfig() {
|
|
39
|
+
const core = await import("@conductor-oss/core");
|
|
40
|
+
if (typeof core.loadConfig !== "function") {
|
|
41
|
+
throw new Error("@conductor-oss/core does not export loadConfig");
|
|
42
|
+
}
|
|
43
|
+
return core.loadConfig();
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Create a PluginRegistry with all built-in plugins registered.
|
|
47
|
+
*/
|
|
48
|
+
export async function createRegistry() {
|
|
49
|
+
const core = await import("@conductor-oss/core");
|
|
50
|
+
if (typeof core.createPluginRegistry !== "function") {
|
|
51
|
+
throw new Error("@conductor-oss/core does not export createPluginRegistry");
|
|
52
|
+
}
|
|
53
|
+
const registry = core.createPluginRegistry();
|
|
54
|
+
for (const plugin of ALL_PLUGINS) {
|
|
55
|
+
registry.register(plugin);
|
|
56
|
+
}
|
|
57
|
+
return registry;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Create a fully-wired SessionManager.
|
|
61
|
+
*
|
|
62
|
+
* Loads config, registers plugins, and creates the manager in one call.
|
|
63
|
+
* If you already have the config, pass it to avoid a second file read.
|
|
64
|
+
*/
|
|
65
|
+
export async function createServices(existingConfig) {
|
|
66
|
+
const config = existingConfig ?? (await loadConfig());
|
|
67
|
+
const registry = await createRegistry();
|
|
68
|
+
const core = await import("@conductor-oss/core");
|
|
69
|
+
if (typeof core.createSessionManager !== "function") {
|
|
70
|
+
throw new Error("@conductor-oss/core does not export createSessionManager");
|
|
71
|
+
}
|
|
72
|
+
const sessionManager = core.createSessionManager({
|
|
73
|
+
config,
|
|
74
|
+
registry,
|
|
75
|
+
});
|
|
76
|
+
return { config, sessionManager };
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=services.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"services.js","sourceRoot":"","sources":["../src/services.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AASH,+DAA+D;AAC/D,OAAO,WAAW,MAAM,oCAAoC,CAAC;AAC7D,OAAO,eAAe,MAAM,yCAAyC,CAAC;AACtE,OAAO,UAAU,MAAM,mCAAmC,CAAC;AAC3D,OAAO,iBAAiB,MAAM,0CAA0C,CAAC;AACzE,OAAO,aAAa,MAAM,sCAAsC,CAAC;AACjE,OAAO,SAAS,MAAM,kCAAkC,CAAC;AACzD,OAAO,eAAe,MAAM,wCAAwC,CAAC;AACrE,OAAO,eAAe,MAAM,wCAAwC,CAAC;AACrE,OAAO,WAAW,MAAM,oCAAoC,CAAC;AAE7D;;;GAGG;AACH,MAAM,WAAW,GAAmB;IAClC,WAA2B;IAC3B,eAA+B;IAC/B,UAA0B;IAC1B,WAA2B;IAC3B,iBAAiC;IACjC,aAA6B;IAC7B,SAAyB;IACzB,eAA+B;IAC/B,eAA+B;CAChC,CAAC;AAKF;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU;IAC9B,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,qBAAqB,CAAC,CAAC;IACjD,IAAI,OAAO,IAAI,CAAC,UAAU,KAAK,UAAU,EAAE,CAAC;QAC1C,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;IACpE,CAAC;IACD,OAAO,IAAI,CAAC,UAAU,EAAwB,CAAC;AACjD,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc;IAClC,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,qBAAqB,CAAC,CAAC;IACjD,IAAI,OAAO,IAAI,CAAC,oBAAoB,KAAK,UAAU,EAAE,CAAC;QACpD,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;IAC9E,CAAC;IACD,MAAM,QAAQ,GAAmB,IAAI,CAAC,oBAAoB,EAAE,CAAC;IAC7D,KAAK,MAAM,MAAM,IAAI,WAAW,EAAE,CAAC;QACjC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,cAAmC;IAEnC,MAAM,MAAM,GAAG,cAAc,IAAI,CAAC,MAAM,UAAU,EAAE,CAAC,CAAC;IACtD,MAAM,QAAQ,GAAG,MAAM,cAAc,EAAE,CAAC;IACxC,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,qBAAqB,CAAC,CAAC;IAEjD,IAAI,OAAO,IAAI,CAAC,oBAAoB,KAAK,UAAU,EAAE,CAAC;QACpD,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;IAC9E,CAAC;IAED,MAAM,cAAc,GAAmB,IAAI,CAAC,oBAAoB,CAAC;QAC/D,MAAM;QACN,QAAQ;KACT,CAAC,CAAC;IAEH,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC;AACpC,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "conductor-oss",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"license": "MIT",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"bin": {
|
|
7
|
+
"conductor": "dist/index.js",
|
|
8
|
+
"co": "dist/index.js"
|
|
9
|
+
},
|
|
10
|
+
"main": "dist/index.js",
|
|
11
|
+
"scripts": {
|
|
12
|
+
"build": "tsc",
|
|
13
|
+
"dev": "tsx src/index.ts",
|
|
14
|
+
"typecheck": "tsc --noEmit",
|
|
15
|
+
"clean": "rm -rf dist"
|
|
16
|
+
},
|
|
17
|
+
"dependencies": {
|
|
18
|
+
"@conductor-oss/core": "workspace:*",
|
|
19
|
+
"@conductor-oss/plugin-runtime-tmux": "workspace:*",
|
|
20
|
+
"@conductor-oss/plugin-agent-claude-code": "workspace:*",
|
|
21
|
+
"@conductor-oss/plugin-agent-codex": "workspace:*",
|
|
22
|
+
"@conductor-oss/plugin-workspace-worktree": "workspace:*",
|
|
23
|
+
"@conductor-oss/plugin-tracker-github": "workspace:*",
|
|
24
|
+
"@conductor-oss/plugin-scm-github": "workspace:*",
|
|
25
|
+
"@conductor-oss/plugin-notifier-discord": "workspace:*",
|
|
26
|
+
"@conductor-oss/plugin-notifier-desktop": "workspace:*",
|
|
27
|
+
"chalk": "^5.4.0",
|
|
28
|
+
"commander": "^13.0.0",
|
|
29
|
+
"ora": "^8.1.0",
|
|
30
|
+
"@conductor-oss/plugin-agent-gemini": "workspace:*"
|
|
31
|
+
},
|
|
32
|
+
"devDependencies": {
|
|
33
|
+
"typescript": "^5.7.0",
|
|
34
|
+
"@types/node": "^22.0.0",
|
|
35
|
+
"tsx": "^4.19.0"
|
|
36
|
+
},
|
|
37
|
+
"files": [
|
|
38
|
+
"dist/",
|
|
39
|
+
"README.md"
|
|
40
|
+
],
|
|
41
|
+
"engines": {
|
|
42
|
+
"node": ">=18"
|
|
43
|
+
},
|
|
44
|
+
"description": "Markdown-native AI agent orchestrator. Write tasks in a kanban board, agents do the work.",
|
|
45
|
+
"keywords": [
|
|
46
|
+
"ai",
|
|
47
|
+
"agent",
|
|
48
|
+
"orchestrator",
|
|
49
|
+
"kanban",
|
|
50
|
+
"claude",
|
|
51
|
+
"codex",
|
|
52
|
+
"automation",
|
|
53
|
+
"devtools"
|
|
54
|
+
],
|
|
55
|
+
"homepage": "https://github.com/charannyk06/conductor-oss",
|
|
56
|
+
"bugs": {
|
|
57
|
+
"url": "https://github.com/charannyk06/conductor-oss/issues"
|
|
58
|
+
}
|
|
59
|
+
}
|