conductor-oss 0.2.18 → 0.2.20

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 (187) hide show
  1. package/dist/commands/dashboard.js +2 -2
  2. package/dist/commands/start.d.ts +3 -6
  3. package/dist/commands/start.d.ts.map +1 -1
  4. package/dist/commands/start.js +450 -220
  5. package/dist/commands/start.js.map +1 -1
  6. package/dist/index.js +0 -4
  7. package/dist/index.js.map +1 -1
  8. package/native/conductor +0 -0
  9. package/node_modules/@conductor-oss/core/dist/session-manager.js +1 -1
  10. package/node_modules/@conductor-oss/core/dist/session-manager.js.map +1 -1
  11. package/node_modules/@conductor-oss/plugin-agent-amp/package.json +1 -1
  12. package/node_modules/@conductor-oss/plugin-agent-ccr/package.json +1 -1
  13. package/node_modules/@conductor-oss/plugin-agent-claude-code/package.json +1 -1
  14. package/node_modules/@conductor-oss/plugin-agent-codex/package.json +1 -1
  15. package/node_modules/@conductor-oss/plugin-agent-cursor-cli/package.json +1 -1
  16. package/node_modules/@conductor-oss/plugin-agent-droid/package.json +1 -1
  17. package/node_modules/@conductor-oss/plugin-agent-gemini/package.json +1 -1
  18. package/node_modules/@conductor-oss/plugin-agent-github-copilot/package.json +1 -1
  19. package/node_modules/@conductor-oss/plugin-agent-opencode/package.json +1 -1
  20. package/node_modules/@conductor-oss/plugin-agent-qwen-code/package.json +1 -1
  21. package/node_modules/@conductor-oss/plugin-mcp-server/package.json +1 -1
  22. package/node_modules/@conductor-oss/plugin-notifier-desktop/package.json +1 -1
  23. package/node_modules/@conductor-oss/plugin-notifier-discord/package.json +1 -1
  24. package/node_modules/@conductor-oss/plugin-runtime-tmux/package.json +1 -1
  25. package/node_modules/@conductor-oss/plugin-scm-github/package.json +1 -1
  26. package/node_modules/@conductor-oss/plugin-terminal-web/package.json +1 -1
  27. package/node_modules/@conductor-oss/plugin-tracker-github/package.json +1 -1
  28. package/node_modules/@conductor-oss/plugin-workspace-worktree/package.json +1 -1
  29. package/package.json +21 -22
  30. package/web/.next/standalone/packages/web/.next/BUILD_ID +1 -1
  31. package/web/.next/standalone/packages/web/.next/app-path-routes-manifest.json +0 -1
  32. package/web/.next/standalone/packages/web/.next/build-manifest.json +2 -2
  33. package/web/.next/standalone/packages/web/.next/prerender-manifest.json +3 -3
  34. package/web/.next/standalone/packages/web/.next/routes-manifest.json +0 -6
  35. package/web/.next/standalone/packages/web/.next/server/app/_global-error.html +2 -2
  36. package/web/.next/standalone/packages/web/.next/server/app/_global-error.rsc +1 -1
  37. package/web/.next/standalone/packages/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  38. package/web/.next/standalone/packages/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  39. package/web/.next/standalone/packages/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  40. package/web/.next/standalone/packages/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  41. package/web/.next/standalone/packages/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  42. package/web/.next/standalone/packages/web/.next/server/app/_not-found/page/server-reference-manifest.json +7 -7
  43. package/web/.next/standalone/packages/web/.next/server/app/_not-found/page.js.nft.json +1 -1
  44. package/web/.next/standalone/packages/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  45. package/web/.next/standalone/packages/web/.next/server/app/_not-found.html +1 -1
  46. package/web/.next/standalone/packages/web/.next/server/app/_not-found.rsc +3 -3
  47. package/web/.next/standalone/packages/web/.next/server/app/_not-found.segments/_full.segment.rsc +3 -3
  48. package/web/.next/standalone/packages/web/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  49. package/web/.next/standalone/packages/web/.next/server/app/_not-found.segments/_index.segment.rsc +3 -3
  50. package/web/.next/standalone/packages/web/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  51. package/web/.next/standalone/packages/web/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  52. package/web/.next/standalone/packages/web/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  53. package/web/.next/standalone/packages/web/.next/server/app/api/access/route.js.nft.json +1 -1
  54. package/web/.next/standalone/packages/web/.next/server/app/api/attachments/route.js.nft.json +1 -1
  55. package/web/.next/standalone/packages/web/.next/server/app/api/boards/route.js.nft.json +1 -1
  56. package/web/.next/standalone/packages/web/.next/server/app/api/config/route.js.nft.json +1 -1
  57. package/web/.next/standalone/packages/web/.next/server/app/api/context-files/route.js.nft.json +1 -1
  58. package/web/.next/standalone/packages/web/.next/server/app/api/events/route.js.nft.json +1 -1
  59. package/web/.next/standalone/packages/web/.next/server/app/api/filesystem/directory/route.js.nft.json +1 -1
  60. package/web/.next/standalone/packages/web/.next/server/app/api/github/repos/route.js.nft.json +1 -1
  61. package/web/.next/standalone/packages/web/.next/server/app/api/health/boards/route.js.nft.json +1 -1
  62. package/web/.next/standalone/packages/web/.next/server/app/api/health/sessions/route.js.nft.json +1 -1
  63. package/web/.next/standalone/packages/web/.next/server/app/api/notifications/route.js.nft.json +1 -1
  64. package/web/.next/standalone/packages/web/.next/server/app/api/preferences/route.js.nft.json +1 -1
  65. package/web/.next/standalone/packages/web/.next/server/app/api/repositories/route.js.nft.json +1 -1
  66. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/actions/route.js.nft.json +1 -1
  67. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/checks/route.js.nft.json +1 -1
  68. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/diff/route.js.nft.json +1 -1
  69. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/feed/route.js.nft.json +1 -1
  70. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/feedback/route.js.nft.json +1 -1
  71. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/files/route.js.nft.json +1 -1
  72. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/keys/route.js.nft.json +1 -1
  73. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/kill/route.js.nft.json +1 -1
  74. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/output/route.js.nft.json +1 -1
  75. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/output/stream/route.js.nft.json +1 -1
  76. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/restore/route.js.nft.json +1 -1
  77. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/route.js.nft.json +1 -1
  78. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/send/route.js.nft.json +1 -1
  79. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/route.js.nft.json +1 -1
  80. package/web/.next/standalone/packages/web/.next/server/app/api/spawn/route.js.nft.json +1 -1
  81. package/web/.next/standalone/packages/web/.next/server/app/api/workspaces/branches/route.js.nft.json +1 -1
  82. package/web/.next/standalone/packages/web/.next/server/app/api/workspaces/route.js +4 -4
  83. package/web/.next/standalone/packages/web/.next/server/app/api/workspaces/route.js.nft.json +1 -1
  84. package/web/.next/standalone/packages/web/.next/server/app/index.html +1 -1
  85. package/web/.next/standalone/packages/web/.next/server/app/index.rsc +4 -4
  86. package/web/.next/standalone/packages/web/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  87. package/web/.next/standalone/packages/web/.next/server/app/index.segments/_full.segment.rsc +4 -4
  88. package/web/.next/standalone/packages/web/.next/server/app/index.segments/_head.segment.rsc +1 -1
  89. package/web/.next/standalone/packages/web/.next/server/app/index.segments/_index.segment.rsc +3 -3
  90. package/web/.next/standalone/packages/web/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  91. package/web/.next/standalone/packages/web/.next/server/app/page/server-reference-manifest.json +7 -7
  92. package/web/.next/standalone/packages/web/.next/server/app/page.js.nft.json +1 -1
  93. package/web/.next/standalone/packages/web/.next/server/app/page_client-reference-manifest.js +1 -1
  94. package/web/.next/standalone/packages/web/.next/server/app/sessions/[id]/page/server-reference-manifest.json +7 -7
  95. package/web/.next/standalone/packages/web/.next/server/app/sessions/[id]/page.js.nft.json +1 -1
  96. package/web/.next/standalone/packages/web/.next/server/app/sessions/[id]/page_client-reference-manifest.js +1 -1
  97. package/web/.next/standalone/packages/web/.next/server/app/sign-in/[[...sign-in]]/page/server-reference-manifest.json +7 -7
  98. package/web/.next/standalone/packages/web/.next/server/app/sign-in/[[...sign-in]]/page.js.nft.json +1 -1
  99. package/web/.next/standalone/packages/web/.next/server/app/sign-in/[[...sign-in]]/page_client-reference-manifest.js +1 -1
  100. package/web/.next/standalone/packages/web/.next/server/app/unlock/page/server-reference-manifest.json +7 -7
  101. package/web/.next/standalone/packages/web/.next/server/app/unlock/page.js.nft.json +1 -1
  102. package/web/.next/standalone/packages/web/.next/server/app/unlock/page_client-reference-manifest.js +1 -1
  103. package/web/.next/standalone/packages/web/.next/server/app-paths-manifest.json +0 -1
  104. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__1ed2e6c1._.js +1 -1
  105. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__3d6b30a3._.js +1 -1
  106. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__a0b6570d._.js +3 -0
  107. package/web/.next/standalone/packages/web/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_0e4dc4f7.js +2 -1
  108. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/{[root-of-the-server]__12eb9005._.js → [root-of-the-server]__48817f02._.js} +2 -2
  109. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/[root-of-the-server]__6622b514._.js +1 -1
  110. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/[root-of-the-server]__869d9ac0._.js +1 -1
  111. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/[root-of-the-server]__9dc23e5a._.js +1 -1
  112. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/_0e1412de._.js +1 -1
  113. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/_69e05fca._.js +1 -1
  114. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/_80efe193._.js +1 -1
  115. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/_b6d31783._.js +1 -1
  116. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/_c0f0e227._.js +1 -1
  117. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/_f36ddaa9._.js +1 -1
  118. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/node_modules_@clerk_nextjs_dist_esm_app-router_38e7b35d._.js +3 -0
  119. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/node_modules_@clerk_nextjs_dist_esm_app-router_f665760b._.js +3 -0
  120. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/node_modules_f2ebd7a9._.js +1 -1
  121. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/packages_web_src_79316445._.js +1 -1
  122. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/packages_web_src_a078c137._.js +1 -1
  123. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/packages_web_src_app_page_tsx_cd282e82._.js +1 -1
  124. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/{packages_web_src_components_3809c507._.js → packages_web_src_components_6cab1c8c._.js} +1 -1
  125. package/web/.next/standalone/packages/web/.next/server/functions-config-manifest.json +1 -2
  126. package/web/.next/standalone/packages/web/.next/server/pages/404.html +1 -1
  127. package/web/.next/standalone/packages/web/.next/server/pages/500.html +2 -2
  128. package/web/.next/standalone/packages/web/.next/server/server-reference-manifest.js +1 -1
  129. package/web/.next/standalone/packages/web/.next/server/server-reference-manifest.json +8 -8
  130. package/web/.next/standalone/packages/web/.next/static/chunks/062888342200567f.js +1 -0
  131. package/web/.next/{static/chunks/28dd6ef2af62b509.js → standalone/packages/web/.next/static/chunks/3b757dce050133c8.js} +2 -2
  132. package/web/.next/standalone/packages/web/.next/static/chunks/{c959976264f14eba.js → 5c7e8425945ad682.js} +1 -1
  133. package/web/.next/standalone/packages/web/.next/static/chunks/6c9a11faed9daf4d.js +1 -0
  134. package/web/.next/standalone/packages/web/.next/static/chunks/8221b78965a50858.js +1 -0
  135. package/web/.next/standalone/packages/web/.next/static/chunks/8de84e208e201d72.css +3 -0
  136. package/web/.next/standalone/packages/web/.next/static/chunks/{e862e73b22fe29c2.js → c4ea57fb949fb623.js} +1 -1
  137. package/web/.next/standalone/packages/web/src/components/layout/TopBar.tsx +8 -10
  138. package/web/.next/standalone/packages/web/src/features/dashboard/DashboardClient.tsx +32 -16
  139. package/web/.next/standalone/packages/web/src/features/sessions/SessionPageClient.tsx +12 -2
  140. package/web/.next/standalone/packages/web/src/proxy.ts +1 -0
  141. package/web/.next/static/chunks/062888342200567f.js +1 -0
  142. package/web/.next/{standalone/packages/web/.next/static/chunks/28dd6ef2af62b509.js → static/chunks/3b757dce050133c8.js} +2 -2
  143. package/web/.next/static/chunks/{c959976264f14eba.js → 5c7e8425945ad682.js} +1 -1
  144. package/web/.next/static/chunks/6c9a11faed9daf4d.js +1 -0
  145. package/web/.next/static/chunks/8221b78965a50858.js +1 -0
  146. package/web/.next/static/chunks/8de84e208e201d72.css +3 -0
  147. package/web/.next/static/chunks/{e862e73b22fe29c2.js → c4ea57fb949fb623.js} +1 -1
  148. package/dist/commands/watch.d.ts +0 -12
  149. package/dist/commands/watch.d.ts.map +0 -1
  150. package/dist/commands/watch.js +0 -84
  151. package/dist/commands/watch.js.map +0 -1
  152. package/dist/commands/webhook.d.ts +0 -12
  153. package/dist/commands/webhook.d.ts.map +0 -1
  154. package/dist/commands/webhook.js +0 -59
  155. package/dist/commands/webhook.js.map +0 -1
  156. package/node_modules/@conductor-oss/plugin-webhook/dist/index.d.ts +0 -28
  157. package/node_modules/@conductor-oss/plugin-webhook/dist/index.d.ts.map +0 -1
  158. package/node_modules/@conductor-oss/plugin-webhook/dist/index.js +0 -295
  159. package/node_modules/@conductor-oss/plugin-webhook/dist/index.js.map +0 -1
  160. package/node_modules/@conductor-oss/plugin-webhook/package.json +0 -11
  161. package/web/.next/standalone/packages/web/.next/server/app/api/agents/route/app-paths-manifest.json +0 -3
  162. package/web/.next/standalone/packages/web/.next/server/app/api/agents/route/build-manifest.json +0 -11
  163. package/web/.next/standalone/packages/web/.next/server/app/api/agents/route/server-reference-manifest.json +0 -4
  164. package/web/.next/standalone/packages/web/.next/server/app/api/agents/route.js +0 -8
  165. package/web/.next/standalone/packages/web/.next/server/app/api/agents/route.js.map +0 -5
  166. package/web/.next/standalone/packages/web/.next/server/app/api/agents/route.js.nft.json +0 -1
  167. package/web/.next/standalone/packages/web/.next/server/app/api/agents/route_client-reference-manifest.js +0 -2
  168. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__7633d324._.js +0 -4
  169. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__bf8faac8._.js +0 -4
  170. package/web/.next/standalone/packages/web/.next/server/chunks/packages_web__next-internal_server_app_api_agents_route_actions_29063d1a.js +0 -3
  171. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/node_modules_@clerk_nextjs_dist_esm_app-router_78af9fdf._.js +0 -3
  172. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/node_modules_@clerk_nextjs_dist_esm_app-router_c4bad84a._.js +0 -3
  173. package/web/.next/standalone/packages/web/.next/static/chunks/1e67fbc3874d3f51.js +0 -1
  174. package/web/.next/standalone/packages/web/.next/static/chunks/2b2a24dff50e7dc9.js +0 -1
  175. package/web/.next/standalone/packages/web/.next/static/chunks/483eb2824f5282c7.js +0 -1
  176. package/web/.next/standalone/packages/web/.next/static/chunks/860d84e1f09476a4.css +0 -3
  177. package/web/.next/standalone/packages/web/src/app/api/agents/route.ts +0 -223
  178. package/web/.next/static/chunks/1e67fbc3874d3f51.js +0 -1
  179. package/web/.next/static/chunks/2b2a24dff50e7dc9.js +0 -1
  180. package/web/.next/static/chunks/483eb2824f5282c7.js +0 -1
  181. package/web/.next/static/chunks/860d84e1f09476a4.css +0 -3
  182. /package/web/.next/standalone/packages/web/.next/static/{eSF3qxz6RT8UXiwr-uibJ → P8IBAo_woCzrGXJiYCZto}/_buildManifest.js +0 -0
  183. /package/web/.next/standalone/packages/web/.next/static/{eSF3qxz6RT8UXiwr-uibJ → P8IBAo_woCzrGXJiYCZto}/_clientMiddlewareManifest.json +0 -0
  184. /package/web/.next/standalone/packages/web/.next/static/{eSF3qxz6RT8UXiwr-uibJ → P8IBAo_woCzrGXJiYCZto}/_ssgManifest.js +0 -0
  185. /package/web/.next/static/{eSF3qxz6RT8UXiwr-uibJ → P8IBAo_woCzrGXJiYCZto}/_buildManifest.js +0 -0
  186. /package/web/.next/static/{eSF3qxz6RT8UXiwr-uibJ → P8IBAo_woCzrGXJiYCZto}/_clientMiddlewareManifest.json +0 -0
  187. /package/web/.next/static/{eSF3qxz6RT8UXiwr-uibJ → P8IBAo_woCzrGXJiYCZto}/_ssgManifest.js +0 -0
@@ -1,84 +0,0 @@
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(opts.workspace);
24
- const { sessionManager, registry } = await createServices(config);
25
- const core = await import("@conductor-oss/core");
26
- const spinner = ora("Discovering boards").start();
27
- const boardPatternsOrConfig = config.boards?.length ? config.boards : config;
28
- const boards = core.discoverBoards(opts.workspace, boardPatternsOrConfig);
29
- if (boards.length === 0) {
30
- spinner.fail("No CONDUCTOR.md boards found");
31
- console.log(chalk.dim(`Searched in: ${opts.workspace}`));
32
- process.exit(1);
33
- }
34
- spinner.succeed(`Found ${boards.length} board(s)`);
35
- const boardProjectMap = core.buildBoardProjectMap(boards, config);
36
- // Show board -> project mapping
37
- for (const board of boards) {
38
- const project = boardProjectMap.get(board);
39
- if (project) {
40
- console.log(chalk.dim(` ${board} -> ${chalk.cyan(project)}`));
41
- }
42
- else {
43
- console.log(chalk.dim(` ${board} -> ${chalk.yellow("workspace (needs #project/ tag)")}`));
44
- }
45
- }
46
- const watcher = core.createBoardWatcher({
47
- config,
48
- sessionManager,
49
- boardPaths: boards,
50
- agentNames: registry.list("agent").map((agent) => agent.name),
51
- boardProjectMap,
52
- pollIntervalMs: parseInt(opts.poll, 10),
53
- onDispatch: (projectId, sessionId, task) => {
54
- console.log(chalk.green(` Dispatched: `) +
55
- chalk.cyan(sessionId) +
56
- chalk.dim(` -> ${projectId}: "${task}"`));
57
- },
58
- onError: (err, context) => {
59
- console.error(chalk.red(` Error [${context}]: ${err.message}`));
60
- },
61
- });
62
- watcher.start();
63
- console.log();
64
- console.log(chalk.bold.green("Board watcher running."));
65
- console.log(chalk.dim(" Move tasks to 'Ready to Dispatch' in Obsidian to auto-spawn agents."));
66
- console.log(chalk.dim(" Press Ctrl-C to stop.\n"));
67
- // Graceful shutdown
68
- const shutdown = () => {
69
- console.log(chalk.dim("\nStopping board watcher..."));
70
- watcher.stop();
71
- process.exit(0);
72
- };
73
- process.on("SIGINT", shutdown);
74
- process.on("SIGTERM", shutdown);
75
- // Keep alive
76
- setInterval(() => { }, 60_000);
77
- }
78
- catch (err) {
79
- console.error(chalk.red(`Failed to start watcher: ${err}`));
80
- process.exit(1);
81
- }
82
- });
83
- }
84
- //# sourceMappingURL=watch.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"watch.js","sourceRoot":"","sources":["../../src/commands/watch.ts"],"names":[],"mappings":"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"}
@@ -1,12 +0,0 @@
1
- /**
2
- * `co webhook`
3
- *
4
- * Starts the webhook server standalone — useful for testing without the full
5
- * lifecycle manager and board watcher.
6
- *
7
- * Usage:
8
- * co webhook [--port 4748]
9
- */
10
- import type { Command } from "commander";
11
- export declare function registerWebhook(program: Command): void;
12
- //# sourceMappingURL=webhook.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"webhook.d.ts","sourceRoot":"","sources":["../../src/commands/webhook.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGzC,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA2DtD"}
@@ -1,59 +0,0 @@
1
- /**
2
- * `co webhook`
3
- *
4
- * Starts the webhook server standalone — useful for testing without the full
5
- * lifecycle manager and board watcher.
6
- *
7
- * Usage:
8
- * co webhook [--port 4748]
9
- */
10
- import chalk from "chalk";
11
- import { loadConfig } from "../services.js";
12
- export function registerWebhook(program) {
13
- program
14
- .command("webhook")
15
- .description("Start webhook server standalone (HTTP + GitHub webhook → kanban task creation)")
16
- .option("-p, --port <port>", "Port to listen on (default: 4748)")
17
- .action(async (opts) => {
18
- try {
19
- const config = await loadConfig();
20
- const port = opts.port
21
- ? parseInt(opts.port, 10)
22
- : (config.webhook?.port ?? 4748);
23
- const { createWebhookServer } = await import("@conductor-oss/plugin-webhook");
24
- const webhookConfig = {
25
- enabled: true,
26
- port,
27
- secret: config.webhook?.secret,
28
- };
29
- const server = createWebhookServer(config, webhookConfig);
30
- await server.start();
31
- const line = "=".repeat(50);
32
- console.log(chalk.dim(line));
33
- console.log(chalk.bold.cyan(" Conductor Webhook Server"));
34
- console.log(chalk.dim(line));
35
- console.log();
36
- console.log(chalk.bold.green(`Webhook server running on http://localhost:${port}`));
37
- console.log();
38
- console.log(chalk.dim(" POST /api/webhook/task — create task from any source"));
39
- console.log(chalk.dim(" POST /api/webhook/github — handle GitHub webhook events"));
40
- console.log(chalk.dim(" GET /api/webhook/health — health check"));
41
- console.log(chalk.dim(" GET /api/webhook/status — stats"));
42
- console.log();
43
- console.log(chalk.dim(" Press Ctrl-C to stop.\n"));
44
- const shutdown = () => {
45
- server.stop();
46
- process.exit(0);
47
- };
48
- process.on("SIGINT", shutdown);
49
- process.on("SIGTERM", shutdown);
50
- // Keep process alive
51
- setInterval(() => { }, 60_000);
52
- }
53
- catch (err) {
54
- console.error(chalk.red(`Failed to start webhook server: ${err}`));
55
- process.exit(1);
56
- }
57
- });
58
- }
59
- //# sourceMappingURL=webhook.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"webhook.js","sourceRoot":"","sources":["../../src/commands/webhook.ts"],"names":[],"mappings":"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"}
@@ -1,28 +0,0 @@
1
- /**
2
- * Conductor Webhook Plugin
3
- *
4
- * HTTP server that listens for external events and creates tasks on
5
- * Obsidian CONDUCTOR.md kanban boards automatically.
6
- *
7
- * Endpoints:
8
- * POST /api/webhook/task — Create a task from any source
9
- * POST /api/webhook/github — Handle GitHub webhook events
10
- * GET /api/webhook/health — Health check
11
- * GET /api/webhook/status — Stats (tasks created, uptime)
12
- */
13
- import type { OrchestratorConfig } from "@conductor-oss/core";
14
- export interface WebhookConfig {
15
- enabled: boolean;
16
- port: number;
17
- secret?: string;
18
- }
19
- export interface WebhookServer {
20
- start(): Promise<void>;
21
- stop(): void;
22
- getStats(): {
23
- tasksCreated: number;
24
- startedAt: Date;
25
- };
26
- }
27
- export declare function createWebhookServer(config: OrchestratorConfig, webhookConfig: WebhookConfig): WebhookServer;
28
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAMH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAM9D,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,IAAI,IAAI,IAAI,CAAC;IACb,QAAQ,IAAI;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,IAAI,CAAA;KAAE,CAAC;CACvD;AAqID,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,kBAAkB,EAC1B,aAAa,EAAE,aAAa,GAC3B,aAAa,CAsMf"}
@@ -1,295 +0,0 @@
1
- /**
2
- * Conductor Webhook Plugin
3
- *
4
- * HTTP server that listens for external events and creates tasks on
5
- * Obsidian CONDUCTOR.md kanban boards automatically.
6
- *
7
- * Endpoints:
8
- * POST /api/webhook/task — Create a task from any source
9
- * POST /api/webhook/github — Handle GitHub webhook events
10
- * GET /api/webhook/health — Health check
11
- * GET /api/webhook/status — Stats (tasks created, uptime)
12
- */
13
- import { createServer } from "node:http";
14
- import { createHmac } from "node:crypto";
15
- import { readFileSync, writeFileSync, appendFileSync, existsSync, mkdirSync } from "node:fs";
16
- import { join } from "node:path";
17
- // =============================================================================
18
- // Helpers
19
- // =============================================================================
20
- function readBody(req) {
21
- return new Promise((resolve, reject) => {
22
- const chunks = [];
23
- req.on("data", (chunk) => chunks.push(chunk));
24
- req.on("end", () => resolve(Buffer.concat(chunks).toString("utf-8")));
25
- req.on("error", reject);
26
- });
27
- }
28
- /** Constant-time HMAC-SHA256 signature verification for GitHub webhooks. */
29
- function verifyGitHubSignature(body, signature, secret) {
30
- if (!signature)
31
- return false;
32
- const expected = "sha256=" + createHmac("sha256", secret).update(body).digest("hex");
33
- if (expected.length !== signature.length)
34
- return false;
35
- let diff = 0;
36
- for (let i = 0; i < expected.length; i++) {
37
- diff |= expected.charCodeAt(i) ^ signature.charCodeAt(i);
38
- }
39
- return diff === 0;
40
- }
41
- /** Resolve the default workspace path. */
42
- function defaultWorkspacePath() {
43
- return (process.env["CONDUCTOR_WORKSPACE"] ??
44
- join(process.env["HOME"] ?? "~", ".conductor", "workspace"));
45
- }
46
- /**
47
- * Find the best CONDUCTOR.md board path for a given project key.
48
- * Falls back to the first available board, then the default workspace board.
49
- */
50
- function findBoardPath(config, projectKey) {
51
- const workspacePath = defaultWorkspacePath();
52
- if (projectKey) {
53
- const project = config.projects[projectKey];
54
- if (project) {
55
- const boardDir = project.boardDir ?? projectKey;
56
- const candidate = join(workspacePath, boardDir, "CONDUCTOR.md");
57
- if (existsSync(candidate))
58
- return candidate;
59
- }
60
- }
61
- // First available project board
62
- for (const [key, project] of Object.entries(config.projects)) {
63
- const boardDir = project.boardDir ?? key;
64
- const candidate = join(workspacePath, boardDir, "CONDUCTOR.md");
65
- if (existsSync(candidate))
66
- return candidate;
67
- }
68
- // Top-level workspace board
69
- const defaultBoard = join(workspacePath, "CONDUCTOR.md");
70
- if (existsSync(defaultBoard))
71
- return defaultBoard;
72
- return null;
73
- }
74
- /**
75
- * Insert a task line into the Inbox section of a CONDUCTOR.md board.
76
- * If no "## Inbox" heading exists, one is appended.
77
- */
78
- function addTaskToInbox(boardPath, task) {
79
- const content = readFileSync(boardPath, "utf-8");
80
- const inboxIdx = content.indexOf("## Inbox");
81
- if (inboxIdx === -1) {
82
- writeFileSync(boardPath, content + `\n## Inbox\n\n- ${task}\n`);
83
- return;
84
- }
85
- // Insert immediately after the "## Inbox\n" line
86
- const insertAt = content.indexOf("\n", inboxIdx) + 1;
87
- const newContent = content.slice(0, insertAt) + `- ${task}\n` + content.slice(insertAt);
88
- writeFileSync(boardPath, newContent);
89
- }
90
- /** Append a line to conductor.log and echo to stdout. */
91
- function logWebhook(message) {
92
- const logDir = join(process.env["HOME"] ?? ".", ".conductor");
93
- const logPath = join(logDir, "conductor.log");
94
- const timestamp = new Date().toISOString();
95
- try {
96
- mkdirSync(logDir, { recursive: true });
97
- appendFileSync(logPath, `[${timestamp}] [webhook] ${message}\n`);
98
- }
99
- catch {
100
- /* ignore log write failures */
101
- }
102
- console.log(`[webhook] ${message}`);
103
- }
104
- function sendJson(res, status, data) {
105
- const body = JSON.stringify(data);
106
- res.writeHead(status, { "Content-Type": "application/json" });
107
- res.end(body);
108
- }
109
- /** Find a project key whose repo name matches the GitHub repository name. */
110
- function matchProject(config, repoName) {
111
- for (const [key, proj] of Object.entries(config.projects)) {
112
- if (proj.repo === repoName ||
113
- proj.repo.endsWith(`/${repoName}`)) {
114
- return key;
115
- }
116
- }
117
- return undefined;
118
- }
119
- // =============================================================================
120
- // Server factory
121
- // =============================================================================
122
- export function createWebhookServer(config, webhookConfig) {
123
- let tasksCreated = 0;
124
- const startedAt = new Date();
125
- const server = createServer(async (req, res) => {
126
- const url = req.url ?? "/";
127
- const method = req.method ?? "GET";
128
- try {
129
- // ------------------------------------------------------------------
130
- // GET /api/webhook/health
131
- // ------------------------------------------------------------------
132
- if (method === "GET" && url === "/api/webhook/health") {
133
- sendJson(res, 200, { ok: true });
134
- return;
135
- }
136
- // ------------------------------------------------------------------
137
- // GET /api/webhook/status
138
- // ------------------------------------------------------------------
139
- if (method === "GET" && url === "/api/webhook/status") {
140
- sendJson(res, 200, {
141
- ok: true,
142
- tasksCreated,
143
- uptime: Math.floor((Date.now() - startedAt.getTime()) / 1000),
144
- startedAt: startedAt.toISOString(),
145
- });
146
- return;
147
- }
148
- // ------------------------------------------------------------------
149
- // POST /api/webhook/task — generic task creation
150
- // ------------------------------------------------------------------
151
- if (method === "POST" && url === "/api/webhook/task") {
152
- const raw = await readBody(req);
153
- let payload;
154
- try {
155
- payload = JSON.parse(raw);
156
- }
157
- catch {
158
- sendJson(res, 400, { ok: false, error: "Invalid JSON body" });
159
- return;
160
- }
161
- if (!payload.task) {
162
- sendJson(res, 400, { ok: false, error: "task field is required" });
163
- return;
164
- }
165
- let taskLine = payload.task;
166
- if (payload.agent)
167
- taskLine += ` #agent/${payload.agent}`;
168
- if (payload.project)
169
- taskLine += ` #project/${payload.project}`;
170
- if (payload.priority)
171
- taskLine += ` #priority/${payload.priority}`;
172
- const boardPath = payload.board ?? findBoardPath(config, payload.project);
173
- if (!boardPath) {
174
- sendJson(res, 500, {
175
- ok: false,
176
- error: "No CONDUCTOR.md board found",
177
- });
178
- return;
179
- }
180
- addTaskToInbox(boardPath, taskLine);
181
- tasksCreated++;
182
- logWebhook(`Task created: "${taskLine}" -> ${boardPath}`);
183
- sendJson(res, 200, { ok: true, task: taskLine, board: boardPath });
184
- return;
185
- }
186
- // ------------------------------------------------------------------
187
- // POST /api/webhook/github — GitHub webhook events
188
- // ------------------------------------------------------------------
189
- if (method === "POST" && url === "/api/webhook/github") {
190
- const raw = await readBody(req);
191
- // Verify HMAC signature when a secret is configured
192
- if (webhookConfig.secret) {
193
- const sig = req.headers["x-hub-signature-256"];
194
- if (!verifyGitHubSignature(raw, sig, webhookConfig.secret)) {
195
- sendJson(res, 401, { ok: false, error: "Invalid signature" });
196
- return;
197
- }
198
- }
199
- const event = req.headers["x-github-event"];
200
- let payload;
201
- try {
202
- payload = JSON.parse(raw);
203
- }
204
- catch {
205
- sendJson(res, 400, { ok: false, error: "Invalid JSON body" });
206
- return;
207
- }
208
- const action = payload["action"];
209
- let taskLine = null;
210
- let projectKey;
211
- const repoObj = payload["repository"];
212
- const repoName = repoObj?.["name"] ?? "";
213
- if (repoName) {
214
- projectKey = matchProject(config, repoName);
215
- }
216
- const projectTag = projectKey ? ` #project/${projectKey}` : "";
217
- // ---- issues.opened ----
218
- if (event === "issues" && action === "opened") {
219
- const issue = payload["issue"];
220
- const issueNum = issue?.["number"];
221
- const title = issue?.["title"] ?? "New issue";
222
- const body = issue?.["body"] ?? "";
223
- const issueTag = issueNum ? ` #issue/${issueNum}` : "";
224
- taskLine = `${title}${issueTag}${projectTag}`;
225
- if (body.trim()) {
226
- const preview = body.slice(0, 200).replace(/\n+/g, " ").trim();
227
- taskLine += ` — ${preview}`;
228
- }
229
- }
230
- // ---- issue_comment.created with /conductor command ----
231
- if (event === "issue_comment" && action === "created") {
232
- const comment = payload["comment"];
233
- const commentBody = comment?.["body"] ?? "";
234
- if (commentBody.trim().startsWith("/conductor")) {
235
- const taskText = commentBody
236
- .replace(/^\/conductor\s*/m, "")
237
- .trim();
238
- if (taskText) {
239
- taskLine = `${taskText}${projectTag}`;
240
- }
241
- }
242
- }
243
- // ---- pull_request_review with changes_requested ----
244
- if (event === "pull_request_review" && action === "submitted") {
245
- const review = payload["review"];
246
- const state = review?.["state"]?.toLowerCase();
247
- if (state === "changes_requested") {
248
- const pr = payload["pull_request"];
249
- const prNum = pr?.["number"];
250
- taskLine = `Address PR review for #${prNum}${projectTag}`;
251
- }
252
- }
253
- if (!taskLine) {
254
- sendJson(res, 200, { ok: true, skipped: true, event, action });
255
- return;
256
- }
257
- const boardPath = findBoardPath(config, projectKey);
258
- if (!boardPath) {
259
- sendJson(res, 500, { ok: false, error: "No CONDUCTOR.md board found" });
260
- return;
261
- }
262
- addTaskToInbox(boardPath, taskLine);
263
- tasksCreated++;
264
- logWebhook(`GitHub ${event}/${action}: "${taskLine}" -> ${boardPath}`);
265
- sendJson(res, 200, { ok: true, task: taskLine, board: boardPath });
266
- return;
267
- }
268
- // 404
269
- sendJson(res, 404, { ok: false, error: "Not found" });
270
- }
271
- catch (err) {
272
- console.error("[webhook] Unhandled error:", err);
273
- sendJson(res, 500, { ok: false, error: "Internal server error" });
274
- }
275
- });
276
- return {
277
- start() {
278
- return new Promise((resolve, reject) => {
279
- server.listen(webhookConfig.port, () => {
280
- logWebhook(`Listening on port ${webhookConfig.port}`);
281
- resolve();
282
- });
283
- server.on("error", reject);
284
- });
285
- },
286
- stop() {
287
- server.close();
288
- logWebhook("Server stopped");
289
- },
290
- getStats() {
291
- return { tasksCreated, startedAt };
292
- },
293
- };
294
- }
295
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1,11 +0,0 @@
1
- {
2
- "name": "@conductor-oss/plugin-webhook",
3
- "version": "0.2.6",
4
- "license": "MIT",
5
- "type": "module",
6
- "main": "dist/index.js",
7
- "dependencies": {
8
- "@conductor-oss/core": "0.2.18"
9
- },
10
- "types": "dist/index.d.ts"
11
- }
@@ -1,3 +0,0 @@
1
- {
2
- "/api/agents/route": "app/api/agents/route.js"
3
- }
@@ -1,11 +0,0 @@
1
- {
2
- "devFiles": [],
3
- "ampDevFiles": [],
4
- "polyfillFiles": [
5
- "static/chunks/a6dad97d9634a72d.js"
6
- ],
7
- "lowPriorityFiles": [],
8
- "rootMainFiles": [],
9
- "pages": {},
10
- "ampFirstPages": []
11
- }
@@ -1,8 +0,0 @@
1
- var R=require("../../../chunks/[turbopack]_runtime.js")("server/app/api/agents/route.js")
2
- R.c("server/chunks/[root-of-the-server]__bf8faac8._.js")
3
- R.c("server/chunks/node_modules_next_dist_79f1aee4._.js")
4
- R.c("server/chunks/[root-of-the-server]__09c3bdaf._.js")
5
- R.c("server/chunks/node_modules_next_f2da0d3e._.js")
6
- R.c("server/chunks/packages_web__next-internal_server_app_api_agents_route_actions_29063d1a.js")
7
- R.m(59396)
8
- module.exports=R.m(59396).exports
@@ -1,5 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": [],
4
- "sections": []
5
- }
@@ -1 +0,0 @@
1
- {"version":1,"files":["../../../../../../../node_modules/next/dist/client/components/app-router-headers.js","../../../../../../../node_modules/next/dist/compiled/@opentelemetry/api/index.js","../../../../../../../node_modules/next/dist/compiled/@opentelemetry/api/package.json","../../../../../../../node_modules/next/dist/compiled/jsonwebtoken/index.js","../../../../../../../node_modules/next/dist/compiled/jsonwebtoken/package.json","../../../../../../../node_modules/next/dist/compiled/next-server/app-page-turbo.runtime.prod.js","../../../../../../../node_modules/next/dist/compiled/next-server/app-route-turbo.runtime.prod.js","../../../../../../../node_modules/next/dist/lib/client-and-server-references.js","../../../../../../../node_modules/next/dist/lib/constants.js","../../../../../../../node_modules/next/dist/lib/interop-default.js","../../../../../../../node_modules/next/dist/lib/is-error.js","../../../../../../../node_modules/next/dist/lib/semver-noop.js","../../../../../../../node_modules/next/dist/server/app-render/action-async-storage-instance.js","../../../../../../../node_modules/next/dist/server/app-render/action-async-storage.external.js","../../../../../../../node_modules/next/dist/server/app-render/after-task-async-storage-instance.js","../../../../../../../node_modules/next/dist/server/app-render/after-task-async-storage.external.js","../../../../../../../node_modules/next/dist/server/app-render/async-local-storage.js","../../../../../../../node_modules/next/dist/server/app-render/cache-signal.js","../../../../../../../node_modules/next/dist/server/app-render/console-async-storage-instance.js","../../../../../../../node_modules/next/dist/server/app-render/console-async-storage.external.js","../../../../../../../node_modules/next/dist/server/app-render/dynamic-access-async-storage-instance.js","../../../../../../../node_modules/next/dist/server/app-render/dynamic-access-async-storage.external.js","../../../../../../../node_modules/next/dist/server/app-render/module-loading/track-module-loading.external.js","../../../../../../../node_modules/next/dist/server/app-render/module-loading/track-module-loading.instance.js","../../../../../../../node_modules/next/dist/server/app-render/work-async-storage-instance.js","../../../../../../../node_modules/next/dist/server/app-render/work-async-storage.external.js","../../../../../../../node_modules/next/dist/server/app-render/work-unit-async-storage-instance.js","../../../../../../../node_modules/next/dist/server/app-render/work-unit-async-storage.external.js","../../../../../../../node_modules/next/dist/server/lib/incremental-cache/memory-cache.external.js","../../../../../../../node_modules/next/dist/server/lib/incremental-cache/shared-cache-controls.external.js","../../../../../../../node_modules/next/dist/server/lib/incremental-cache/tags-manifest.external.js","../../../../../../../node_modules/next/dist/server/lib/lru-cache.js","../../../../../../../node_modules/next/dist/server/lib/router-utils/instrumentation-globals.external.js","../../../../../../../node_modules/next/dist/server/lib/router-utils/instrumentation-node-extensions.js","../../../../../../../node_modules/next/dist/server/lib/trace/constants.js","../../../../../../../node_modules/next/dist/server/lib/trace/tracer.js","../../../../../../../node_modules/next/dist/server/load-manifest.external.js","../../../../../../../node_modules/next/dist/server/node-environment-extensions/fast-set-immediate.external.js","../../../../../../../node_modules/next/dist/server/response-cache/types.js","../../../../../../../node_modules/next/dist/server/runtime-reacts.external.js","../../../../../../../node_modules/next/dist/shared/lib/deep-freeze.js","../../../../../../../node_modules/next/dist/shared/lib/invariant-error.js","../../../../../../../node_modules/next/dist/shared/lib/is-plain-object.js","../../../../../../../node_modules/next/dist/shared/lib/is-thenable.js","../../../../../../../node_modules/next/dist/shared/lib/no-fallback-error.external.js","../../../../../../../node_modules/next/dist/shared/lib/server-reference-info.js","../../../../../../../node_modules/next/package.json","../../../chunks/[root-of-the-server]__09c3bdaf._.js","../../../chunks/[root-of-the-server]__bf8faac8._.js","../../../chunks/[turbopack]_runtime.js","../../../chunks/node_modules_next_dist_79f1aee4._.js","../../../chunks/node_modules_next_f2da0d3e._.js","../../../chunks/packages_web__next-internal_server_app_api_agents_route_actions_29063d1a.js","./route_client-reference-manifest.js"]}
@@ -1,2 +0,0 @@
1
- globalThis.__RSC_MANIFEST = globalThis.__RSC_MANIFEST || {};
2
- globalThis.__RSC_MANIFEST["/api/agents/route"] = {"moduleLoading":{"prefix":"","crossOrigin":null},"clientModules":{},"ssrModuleMapping":{},"edgeSSRModuleMapping":{},"rscModuleMapping":{},"edgeRscModuleMapping":{},"entryCSSFiles":{},"entryJSFiles":{}}