conductor-oss 0.5.0 → 0.6.1

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 (325) hide show
  1. package/dist/backend.d.ts +112 -0
  2. package/dist/backend.d.ts.map +1 -0
  3. package/dist/backend.js +101 -0
  4. package/dist/backend.js.map +1 -0
  5. package/dist/commands/cleanup.d.ts.map +1 -1
  6. package/dist/commands/cleanup.js +8 -6
  7. package/dist/commands/cleanup.js.map +1 -1
  8. package/dist/commands/doctor.d.ts.map +1 -1
  9. package/dist/commands/doctor.js +84 -147
  10. package/dist/commands/doctor.js.map +1 -1
  11. package/dist/commands/init.d.ts +3 -8
  12. package/dist/commands/init.d.ts.map +1 -1
  13. package/dist/commands/init.js +56 -128
  14. package/dist/commands/init.js.map +1 -1
  15. package/dist/commands/kill.d.ts.map +1 -1
  16. package/dist/commands/kill.js +6 -11
  17. package/dist/commands/kill.js.map +1 -1
  18. package/dist/commands/list.d.ts.map +1 -1
  19. package/dist/commands/list.js +12 -10
  20. package/dist/commands/list.js.map +1 -1
  21. package/dist/commands/mcp-server.d.ts +0 -20
  22. package/dist/commands/mcp-server.d.ts.map +1 -1
  23. package/dist/commands/mcp-server.js +18 -22
  24. package/dist/commands/mcp-server.js.map +1 -1
  25. package/dist/commands/restore.d.ts.map +1 -1
  26. package/dist/commands/restore.js +7 -12
  27. package/dist/commands/restore.js.map +1 -1
  28. package/dist/commands/retry.d.ts.map +1 -1
  29. package/dist/commands/retry.js +2 -5
  30. package/dist/commands/retry.js.map +1 -1
  31. package/dist/commands/send.d.ts.map +1 -1
  32. package/dist/commands/send.js +5 -9
  33. package/dist/commands/send.js.map +1 -1
  34. package/dist/commands/spawn.d.ts.map +1 -1
  35. package/dist/commands/spawn.js +16 -17
  36. package/dist/commands/spawn.js.map +1 -1
  37. package/dist/commands/status.d.ts.map +1 -1
  38. package/dist/commands/status.js +7 -7
  39. package/dist/commands/status.js.map +1 -1
  40. package/dist/commands/task.d.ts.map +1 -1
  41. package/dist/commands/task.js +3 -5
  42. package/dist/commands/task.js.map +1 -1
  43. package/dist/rust-cli.d.ts +9 -0
  44. package/dist/rust-cli.d.ts.map +1 -0
  45. package/dist/rust-cli.js +75 -0
  46. package/dist/rust-cli.js.map +1 -0
  47. package/node_modules/@conductor-oss/plugin-agent-amp/package.json +1 -1
  48. package/node_modules/@conductor-oss/plugin-agent-ccr/package.json +1 -1
  49. package/node_modules/@conductor-oss/plugin-agent-claude-code/package.json +1 -1
  50. package/node_modules/@conductor-oss/plugin-agent-codex/package.json +1 -1
  51. package/node_modules/@conductor-oss/plugin-agent-cursor-cli/package.json +1 -1
  52. package/node_modules/@conductor-oss/plugin-agent-droid/package.json +1 -1
  53. package/node_modules/@conductor-oss/plugin-agent-gemini/package.json +1 -1
  54. package/node_modules/@conductor-oss/plugin-agent-github-copilot/package.json +1 -1
  55. package/node_modules/@conductor-oss/plugin-agent-opencode/package.json +1 -1
  56. package/node_modules/@conductor-oss/plugin-agent-qwen-code/package.json +1 -1
  57. package/node_modules/@conductor-oss/plugin-mcp-server/package.json +1 -1
  58. package/node_modules/@conductor-oss/plugin-notifier-desktop/package.json +1 -1
  59. package/node_modules/@conductor-oss/plugin-notifier-discord/package.json +1 -1
  60. package/node_modules/@conductor-oss/plugin-runtime-tmux/package.json +1 -1
  61. package/node_modules/@conductor-oss/plugin-scm-github/package.json +1 -1
  62. package/node_modules/@conductor-oss/plugin-terminal-web/package.json +1 -1
  63. package/node_modules/@conductor-oss/plugin-tracker-github/package.json +1 -1
  64. package/node_modules/@conductor-oss/plugin-workspace-worktree/package.json +1 -1
  65. package/package.json +23 -23
  66. package/web/.next/standalone/packages/web/.next/BUILD_ID +1 -1
  67. package/web/.next/standalone/packages/web/.next/build-manifest.json +2 -2
  68. package/web/.next/standalone/packages/web/.next/prerender-manifest.json +3 -3
  69. package/web/.next/standalone/packages/web/.next/server/app/_global-error.html +2 -2
  70. package/web/.next/standalone/packages/web/.next/server/app/_global-error.rsc +1 -1
  71. package/web/.next/standalone/packages/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  72. package/web/.next/standalone/packages/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  73. package/web/.next/standalone/packages/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  74. package/web/.next/standalone/packages/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  75. package/web/.next/standalone/packages/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  76. package/web/.next/standalone/packages/web/.next/server/app/_not-found/page/server-reference-manifest.json +7 -7
  77. package/web/.next/standalone/packages/web/.next/server/app/_not-found/page.js.nft.json +1 -1
  78. package/web/.next/standalone/packages/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  79. package/web/.next/standalone/packages/web/.next/server/app/_not-found.html +1 -1
  80. package/web/.next/standalone/packages/web/.next/server/app/_not-found.rsc +3 -3
  81. package/web/.next/standalone/packages/web/.next/server/app/_not-found.segments/_full.segment.rsc +3 -3
  82. package/web/.next/standalone/packages/web/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  83. package/web/.next/standalone/packages/web/.next/server/app/_not-found.segments/_index.segment.rsc +3 -3
  84. package/web/.next/standalone/packages/web/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  85. package/web/.next/standalone/packages/web/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  86. package/web/.next/standalone/packages/web/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  87. package/web/.next/standalone/packages/web/.next/server/app/api/access/route.js +3 -3
  88. package/web/.next/standalone/packages/web/.next/server/app/api/access/route.js.nft.json +1 -1
  89. package/web/.next/standalone/packages/web/.next/server/app/api/agents/route.js +3 -4
  90. package/web/.next/standalone/packages/web/.next/server/app/api/agents/route.js.nft.json +1 -1
  91. package/web/.next/standalone/packages/web/.next/server/app/api/app-update/route.js +3 -3
  92. package/web/.next/standalone/packages/web/.next/server/app/api/app-update/route.js.nft.json +1 -1
  93. package/web/.next/standalone/packages/web/.next/server/app/api/attachments/route.js +3 -3
  94. package/web/.next/standalone/packages/web/.next/server/app/api/attachments/route.js.nft.json +1 -1
  95. package/web/.next/standalone/packages/web/.next/server/app/api/auth/session/route.js +1 -1
  96. package/web/.next/standalone/packages/web/.next/server/app/api/auth/session/route.js.nft.json +1 -1
  97. package/web/.next/standalone/packages/web/.next/server/app/api/boards/comments/route.js +3 -3
  98. package/web/.next/standalone/packages/web/.next/server/app/api/boards/comments/route.js.nft.json +1 -1
  99. package/web/.next/standalone/packages/web/.next/server/app/api/boards/route.js +3 -3
  100. package/web/.next/standalone/packages/web/.next/server/app/api/boards/route.js.nft.json +1 -1
  101. package/web/.next/standalone/packages/web/.next/server/app/api/config/route.js +3 -3
  102. package/web/.next/standalone/packages/web/.next/server/app/api/config/route.js.nft.json +1 -1
  103. package/web/.next/standalone/packages/web/.next/server/app/api/context-files/open/route.js +3 -3
  104. package/web/.next/standalone/packages/web/.next/server/app/api/context-files/open/route.js.nft.json +1 -1
  105. package/web/.next/standalone/packages/web/.next/server/app/api/context-files/route.js +3 -3
  106. package/web/.next/standalone/packages/web/.next/server/app/api/context-files/route.js.nft.json +1 -1
  107. package/web/.next/standalone/packages/web/.next/server/app/api/events/route.js +2 -2
  108. package/web/.next/standalone/packages/web/.next/server/app/api/events/route.js.nft.json +1 -1
  109. package/web/.next/standalone/packages/web/.next/server/app/api/executor/health/route.js +3 -3
  110. package/web/.next/standalone/packages/web/.next/server/app/api/executor/health/route.js.nft.json +1 -1
  111. package/web/.next/standalone/packages/web/.next/server/app/api/filesystem/directory/route.js +3 -3
  112. package/web/.next/standalone/packages/web/.next/server/app/api/filesystem/directory/route.js.nft.json +1 -1
  113. package/web/.next/standalone/packages/web/.next/server/app/api/filesystem/pick-directory/route.js +3 -3
  114. package/web/.next/standalone/packages/web/.next/server/app/api/filesystem/pick-directory/route.js.nft.json +1 -1
  115. package/web/.next/standalone/packages/web/.next/server/app/api/github/repos/route.js +3 -3
  116. package/web/.next/standalone/packages/web/.next/server/app/api/github/repos/route.js.nft.json +1 -1
  117. package/web/.next/standalone/packages/web/.next/server/app/api/github/webhook/route.js +3 -3
  118. package/web/.next/standalone/packages/web/.next/server/app/api/github/webhook/route.js.nft.json +1 -1
  119. package/web/.next/standalone/packages/web/.next/server/app/api/health/boards/route.js +3 -3
  120. package/web/.next/standalone/packages/web/.next/server/app/api/health/boards/route.js.nft.json +1 -1
  121. package/web/.next/standalone/packages/web/.next/server/app/api/health/sessions/route.js +3 -3
  122. package/web/.next/standalone/packages/web/.next/server/app/api/health/sessions/route.js.nft.json +1 -1
  123. package/web/.next/standalone/packages/web/.next/server/app/api/notifications/route.js +3 -3
  124. package/web/.next/standalone/packages/web/.next/server/app/api/notifications/route.js.nft.json +1 -1
  125. package/web/.next/standalone/packages/web/.next/server/app/api/preferences/route.js +3 -3
  126. package/web/.next/standalone/packages/web/.next/server/app/api/preferences/route.js.nft.json +1 -1
  127. package/web/.next/standalone/packages/web/.next/server/app/api/repositories/[id]/route.js +3 -3
  128. package/web/.next/standalone/packages/web/.next/server/app/api/repositories/[id]/route.js.nft.json +1 -1
  129. package/web/.next/standalone/packages/web/.next/server/app/api/repositories/route.js +3 -3
  130. package/web/.next/standalone/packages/web/.next/server/app/api/repositories/route.js.nft.json +1 -1
  131. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/actions/route.js +3 -3
  132. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/actions/route.js.nft.json +1 -1
  133. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/archive/route.js +3 -3
  134. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/archive/route.js.nft.json +1 -1
  135. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/checks/route.js +3 -3
  136. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/checks/route.js.nft.json +1 -1
  137. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/diff/route.js +3 -3
  138. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/diff/route.js.nft.json +1 -1
  139. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/feed/route.js +3 -3
  140. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/feed/route.js.nft.json +1 -1
  141. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/feed/stream/route.js +2 -2
  142. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/feed/stream/route.js.nft.json +1 -1
  143. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/feedback/route.js +3 -3
  144. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/feedback/route.js.nft.json +1 -1
  145. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/files/route.js +3 -3
  146. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/files/route.js.nft.json +1 -1
  147. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/interrupt/route.js +3 -3
  148. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/interrupt/route.js.nft.json +1 -1
  149. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/keys/route.js +3 -3
  150. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/keys/route.js.nft.json +1 -1
  151. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/kill/route.js +3 -3
  152. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/kill/route.js.nft.json +1 -1
  153. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/output/route.js +3 -3
  154. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/output/route.js.nft.json +1 -1
  155. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/output/stream/route.js +2 -2
  156. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/output/stream/route.js.nft.json +1 -1
  157. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/preview/dom/route.js +2 -2
  158. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/preview/dom/route.js.nft.json +1 -1
  159. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/preview/route.js +2 -2
  160. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/preview/route.js.nft.json +1 -1
  161. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/preview/screenshot/route.js +2 -2
  162. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/preview/screenshot/route.js.nft.json +1 -1
  163. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/restore/route.js +3 -3
  164. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/restore/route.js.nft.json +1 -1
  165. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/route.js +3 -3
  166. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/route.js.nft.json +1 -1
  167. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/send/route.js +3 -3
  168. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/send/route.js.nft.json +1 -1
  169. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/route.js +3 -3
  170. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/route.js.nft.json +1 -1
  171. package/web/.next/standalone/packages/web/.next/server/app/api/spawn/route.js +3 -3
  172. package/web/.next/standalone/packages/web/.next/server/app/api/spawn/route.js.nft.json +1 -1
  173. package/web/.next/standalone/packages/web/.next/server/app/api/workspaces/branches/route.js +3 -3
  174. package/web/.next/standalone/packages/web/.next/server/app/api/workspaces/branches/route.js.nft.json +1 -1
  175. package/web/.next/standalone/packages/web/.next/server/app/api/workspaces/route.js +3 -3
  176. package/web/.next/standalone/packages/web/.next/server/app/api/workspaces/route.js.nft.json +1 -1
  177. package/web/.next/standalone/packages/web/.next/server/app/page/server-reference-manifest.json +7 -7
  178. package/web/.next/standalone/packages/web/.next/server/app/page.js.nft.json +1 -1
  179. package/web/.next/standalone/packages/web/.next/server/app/page_client-reference-manifest.js +1 -1
  180. package/web/.next/standalone/packages/web/.next/server/app/sessions/[id]/page/server-reference-manifest.json +7 -7
  181. package/web/.next/standalone/packages/web/.next/server/app/sessions/[id]/page.js.nft.json +1 -1
  182. package/web/.next/standalone/packages/web/.next/server/app/sessions/[id]/page_client-reference-manifest.js +1 -1
  183. package/web/.next/standalone/packages/web/.next/server/app/sign-in/[[...sign-in]]/page/server-reference-manifest.json +7 -7
  184. package/web/.next/standalone/packages/web/.next/server/app/sign-in/[[...sign-in]]/page.js.nft.json +1 -1
  185. package/web/.next/standalone/packages/web/.next/server/app/sign-in/[[...sign-in]]/page_client-reference-manifest.js +1 -1
  186. package/web/.next/standalone/packages/web/.next/server/app/unlock/page/server-reference-manifest.json +7 -7
  187. package/web/.next/standalone/packages/web/.next/server/app/unlock/page.js.nft.json +1 -1
  188. package/web/.next/standalone/packages/web/.next/server/app/unlock/page_client-reference-manifest.js +1 -1
  189. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__02aa69a2._.js +3 -0
  190. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__06b6b4e9._.js +3 -0
  191. package/web/.next/standalone/packages/web/.next/server/chunks/{[root-of-the-server]__025155ac._.js → [root-of-the-server]__0cdc32e7._.js} +1 -1
  192. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__105e4f26._.js +3 -0
  193. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__119c6b92._.js +3 -0
  194. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__137fab33._.js +3 -0
  195. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__15c7d025._.js +3 -0
  196. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__1be57288._.js +3 -0
  197. package/web/.next/standalone/packages/web/.next/server/chunks/{[root-of-the-server]__66e8ccce._.js → [root-of-the-server]__1d2f280d._.js} +1 -1
  198. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__1e450a04._.js +3 -0
  199. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__2ce39d51._.js +1 -1
  200. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__30055cf3._.js +3 -0
  201. package/web/.next/standalone/packages/web/.next/server/chunks/{[root-of-the-server]__85b114a2._.js → [root-of-the-server]__308f1548._.js} +1 -1
  202. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__30e803d7._.js +3 -0
  203. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__3cfb9abc._.js +3 -0
  204. package/web/.next/standalone/packages/web/.next/server/chunks/{[root-of-the-server]__a45d3a1d._.js → [root-of-the-server]__3d4382ac._.js} +1 -1
  205. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__41e0efdc._.js +3 -0
  206. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__42e88695._.js +3 -0
  207. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__45147dc5._.js +3 -0
  208. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__46573554._.js +3 -0
  209. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__47b9cd43._.js +3 -0
  210. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__4c56df8f._.js +3 -0
  211. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__5064824d._.js +3 -0
  212. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__57113ab2._.js +3 -0
  213. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__5b1a6733._.js +3 -0
  214. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__64061a84._.js +3 -0
  215. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__668ff2cd._.js +1 -1
  216. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__6a1b89e2._.js +3 -0
  217. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__7ddba7a1._.js +3 -0
  218. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__87674bea._.js +3 -0
  219. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__89cafbb6._.js +3 -0
  220. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__8baf1991._.js +3 -0
  221. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__92efd41b._.js +3 -0
  222. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__97b2fe24._.js +3 -0
  223. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__a2cdc6d9._.js +3 -0
  224. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__a80a6abe._.js +3 -0
  225. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__ac588927._.js +3 -0
  226. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__b03e9dba._.js +3 -0
  227. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__b0bc3324._.js +3 -0
  228. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__b39c66d6._.js +3 -0
  229. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__c207ffb8._.js +3 -0
  230. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__c24a825f._.js +3 -0
  231. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__c27d443a._.js +3 -0
  232. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__d0fc233f._.js +3 -0
  233. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__d35c3ac2._.js +3 -0
  234. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__d3d0e4a1._.js +3 -0
  235. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__e2d46590._.js +3 -0
  236. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__e7aa992a._.js +3 -0
  237. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__ec231481._.js +3 -0
  238. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__ef43f682._.js +3 -0
  239. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__f134e517._.js +3 -0
  240. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__f7e5d8de._.js +3 -0
  241. package/web/.next/standalone/packages/web/.next/server/chunks/_2c837d66._.js +5 -5
  242. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/[root-of-the-server]__000b8c99._.js +1 -1
  243. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/[root-of-the-server]__29d8d063._.js +1 -1
  244. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/{[root-of-the-server]__a004344a._.js → [root-of-the-server]__d6a85a2a._.js} +2 -2
  245. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/_0e1412de._.js +1 -1
  246. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/_69e05fca._.js +1 -1
  247. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/_80efe193._.js +1 -1
  248. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/{_23584339._.js → _87c238e4._.js} +1 -1
  249. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/_b6d31783._.js +1 -1
  250. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/_c0f0e227._.js +1 -1
  251. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/_f36ddaa9._.js +1 -1
  252. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/{node_modules_@clerk_nextjs_dist_esm_app-router_c4893a23._.js → node_modules_@clerk_nextjs_dist_esm_app-router_71976a8c._.js} +2 -2
  253. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/node_modules_@clerk_nextjs_dist_esm_app-router_9c37ff5b._.js +3 -0
  254. package/web/.next/standalone/packages/web/.next/server/functions-config-manifest.json +3 -2
  255. package/web/.next/standalone/packages/web/.next/server/pages/404.html +1 -1
  256. package/web/.next/standalone/packages/web/.next/server/pages/500.html +2 -2
  257. package/web/.next/standalone/packages/web/.next/server/server-reference-manifest.js +1 -1
  258. package/web/.next/standalone/packages/web/.next/server/server-reference-manifest.json +8 -8
  259. package/web/.next/standalone/packages/web/.next/static/chunks/628b214c158615e0.js +1 -0
  260. package/web/.next/standalone/packages/web/.next/static/chunks/{5887c6e7b41bfd4b.js → c27c6871e5d6001a.js} +2 -2
  261. package/web/.next/standalone/packages/web/.next/static/chunks/{d60c73bb353f26d3.js → f5b37e94d4139e0b.js} +1 -1
  262. package/web/.next/standalone/packages/web/src/app/api/agents/route.ts +2 -196
  263. package/web/.next/standalone/packages/web/src/app/api/auth/session/route.ts +3 -38
  264. package/web/.next/standalone/packages/web/src/app/api/events/route.ts +61 -2
  265. package/web/.next/standalone/packages/web/src/app/api/sessions/[id]/feed/stream/route.ts +75 -5
  266. package/web/.next/standalone/packages/web/src/app/api/sessions/[id]/output/stream/route.ts +75 -5
  267. package/web/.next/static/chunks/628b214c158615e0.js +1 -0
  268. package/web/.next/static/chunks/{5887c6e7b41bfd4b.js → c27c6871e5d6001a.js} +2 -2
  269. package/web/.next/static/chunks/{d60c73bb353f26d3.js → f5b37e94d4139e0b.js} +1 -1
  270. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__07d320fc._.js +0 -3
  271. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__0d3270b2._.js +0 -3
  272. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__186317eb._.js +0 -3
  273. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__1888a793._.js +0 -3
  274. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__1ae07be2._.js +0 -3
  275. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__1c1c0e68._.js +0 -3
  276. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__1ce34a21._.js +0 -3
  277. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__31703e2b._.js +0 -3
  278. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__394943dc._.js +0 -3
  279. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__3bab2cf7._.js +0 -3
  280. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__3f48e8a2._.js +0 -3
  281. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__405fc5bc._.js +0 -3
  282. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__428f1837._.js +0 -3
  283. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__49e358a8._.js +0 -3
  284. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__5dc7cf0d._.js +0 -3
  285. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__5fd67791._.js +0 -3
  286. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__61a55b93._.js +0 -3
  287. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__621d9bca._.js +0 -3
  288. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__65fcccc8._.js +0 -3
  289. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__6b163dd7._.js +0 -3
  290. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__6c5a5852._.js +0 -3
  291. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__78d6e137._.js +0 -3
  292. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__7dac9015._.js +0 -3
  293. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__7fcfdb86._.js +0 -3
  294. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__90d02df4._.js +0 -3
  295. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__95440fe8._.js +0 -3
  296. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__968aabbd._.js +0 -3
  297. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__97658502._.js +0 -3
  298. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__b5c89bad._.js +0 -3
  299. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__b73a3118._.js +0 -3
  300. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__c06cb06b._.js +0 -3
  301. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__c9626ece._.js +0 -3
  302. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__cb1e2942._.js +0 -3
  303. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__cc4964a5._.js +0 -3
  304. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__cdcdbbe3._.js +0 -3
  305. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__ce529f57._.js +0 -3
  306. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__cfaae401._.js +0 -3
  307. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__d2afbd4e._.js +0 -3
  308. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__e0d759be._.js +0 -3
  309. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__eabdec9e._.js +0 -3
  310. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__ececfccf._.js +0 -3
  311. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__eda7b9ea._.js +0 -3
  312. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__ef38eeb2._.js +0 -3
  313. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__efd26bfc._.js +0 -3
  314. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__f4d63c18._.js +0 -3
  315. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__f8ebc9db._.js +0 -3
  316. package/web/.next/standalone/packages/web/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_5eb57175.js +0 -6
  317. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/node_modules_@clerk_nextjs_dist_esm_app-router_2d57befe._.js +0 -3
  318. package/web/.next/standalone/packages/web/.next/static/chunks/e6e3c4fe9248dbee.js +0 -1
  319. package/web/.next/static/chunks/e6e3c4fe9248dbee.js +0 -1
  320. /package/web/.next/standalone/packages/web/.next/static/{s8P8PtiSDD1N4unj4vBuY → 2lhdQwB1wlTUMSN3oN2DP}/_buildManifest.js +0 -0
  321. /package/web/.next/standalone/packages/web/.next/static/{s8P8PtiSDD1N4unj4vBuY → 2lhdQwB1wlTUMSN3oN2DP}/_clientMiddlewareManifest.json +0 -0
  322. /package/web/.next/standalone/packages/web/.next/static/{s8P8PtiSDD1N4unj4vBuY → 2lhdQwB1wlTUMSN3oN2DP}/_ssgManifest.js +0 -0
  323. /package/web/.next/static/{s8P8PtiSDD1N4unj4vBuY → 2lhdQwB1wlTUMSN3oN2DP}/_buildManifest.js +0 -0
  324. /package/web/.next/static/{s8P8PtiSDD1N4unj4vBuY → 2lhdQwB1wlTUMSN3oN2DP}/_clientMiddlewareManifest.json +0 -0
  325. /package/web/.next/static/{s8P8PtiSDD1N4unj4vBuY → 2lhdQwB1wlTUMSN3oN2DP}/_ssgManifest.js +0 -0
@@ -0,0 +1,112 @@
1
+ type JsonPrimitive = string | number | boolean | null;
2
+ type JsonValue = JsonPrimitive | JsonValue[] | {
3
+ [key: string]: JsonValue;
4
+ };
5
+ export interface BackendSession {
6
+ id: string;
7
+ projectId: string;
8
+ status: string;
9
+ activity: string | null;
10
+ branch: string | null;
11
+ issueId: string | null;
12
+ summary?: string | null;
13
+ createdAt: string;
14
+ lastActivityAt: string;
15
+ metadata: Record<string, string>;
16
+ workspacePath?: string | null;
17
+ agent?: string;
18
+ model?: string | null;
19
+ reasoningEffort?: string | null;
20
+ }
21
+ export interface BackendProject {
22
+ id: string;
23
+ name?: string | null;
24
+ path?: string;
25
+ }
26
+ export interface ConfigProject {
27
+ id: string;
28
+ description?: string | null;
29
+ path?: string;
30
+ repo?: string | null;
31
+ defaultBranch?: string | null;
32
+ agent?: string | null;
33
+ }
34
+ export interface ConfigResponse {
35
+ projects: ConfigProject[];
36
+ }
37
+ export interface SessionsResponse {
38
+ sessions: BackendSession[];
39
+ stats: {
40
+ totalSessions: number;
41
+ workingSessions: number;
42
+ openPRs: number;
43
+ needsAttention: number;
44
+ };
45
+ }
46
+ export interface SessionResponse {
47
+ session: BackendSession;
48
+ }
49
+ export interface HealthResponse {
50
+ status: string;
51
+ version: string;
52
+ uptime_secs: number;
53
+ executors: number;
54
+ event_subscribers: number;
55
+ queue_depth: number;
56
+ launching_sessions: number;
57
+ recovering_sessions: number;
58
+ detached_sessions: number;
59
+ }
60
+ export interface SessionHealthMetric {
61
+ id: string;
62
+ projectId: string;
63
+ status: string;
64
+ activity: string | null;
65
+ health: string;
66
+ ageMs: number;
67
+ idleMs: number;
68
+ createdAt: string;
69
+ lastActivityAt: string;
70
+ hasRuntime: boolean;
71
+ recoveryState?: string | null;
72
+ detachedPid?: string | null;
73
+ hasPR: boolean;
74
+ }
75
+ export interface SessionHealthResponse {
76
+ metrics: SessionHealthMetric[];
77
+ summary: {
78
+ total: number;
79
+ healthy: number;
80
+ pending: number;
81
+ warning: number;
82
+ critical: number;
83
+ };
84
+ }
85
+ export interface CleanupResponse {
86
+ killed: string[];
87
+ skipped: string[];
88
+ errors: Array<{
89
+ sessionId: string;
90
+ error: string;
91
+ }>;
92
+ }
93
+ export interface TaskGraphResponse {
94
+ taskId: string;
95
+ parentTaskId: string | null;
96
+ childrenTaskIds: string[];
97
+ attempts: Array<{
98
+ attemptId: string;
99
+ sessionId: string;
100
+ status: string;
101
+ agent?: string;
102
+ model?: string;
103
+ branch?: string | null;
104
+ }>;
105
+ }
106
+ export declare function apiCall<T = JsonValue>(method: string, path: string, body?: unknown): Promise<T>;
107
+ export declare function fetchConfiguredProjects(): Promise<Map<string, ConfigProject>>;
108
+ export declare function fetchProjects(): Promise<Map<string, BackendProject>>;
109
+ export declare function sessionWorktree(session: BackendSession): string | null;
110
+ export declare function sessionTmuxTarget(session: BackendSession): string;
111
+ export {};
112
+ //# sourceMappingURL=backend.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backend.d.ts","sourceRoot":"","sources":["../src/backend.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,101 @@
1
+ let cachedBackendBaseUrl = null;
2
+ function getConfiguredBackendUrl() {
3
+ const explicitUrl = process.env["CONDUCTOR_BACKEND_URL"]?.trim();
4
+ if (explicitUrl) {
5
+ return explicitUrl.replace(/\/+$/, "");
6
+ }
7
+ const configuredPort = process.env["CONDUCTOR_BACKEND_PORT"]?.trim();
8
+ if (configuredPort) {
9
+ return `http://127.0.0.1:${configuredPort}`;
10
+ }
11
+ return null;
12
+ }
13
+ async function isHealthy(baseUrl) {
14
+ try {
15
+ const response = await fetch(`${baseUrl}/api/health`, {
16
+ signal: AbortSignal.timeout(1_500),
17
+ });
18
+ return response.ok;
19
+ }
20
+ catch {
21
+ return false;
22
+ }
23
+ }
24
+ async function resolveBackendBaseUrl() {
25
+ if (cachedBackendBaseUrl) {
26
+ return cachedBackendBaseUrl;
27
+ }
28
+ const configured = getConfiguredBackendUrl();
29
+ if (configured) {
30
+ cachedBackendBaseUrl = configured;
31
+ return configured;
32
+ }
33
+ for (const candidate of ["http://127.0.0.1:4747", "http://127.0.0.1:4748"]) {
34
+ if (await isHealthy(candidate)) {
35
+ cachedBackendBaseUrl = candidate;
36
+ return candidate;
37
+ }
38
+ }
39
+ cachedBackendBaseUrl = "http://127.0.0.1:4747";
40
+ return cachedBackendBaseUrl;
41
+ }
42
+ async function readErrorMessage(response) {
43
+ const text = await response.text();
44
+ if (!text.trim()) {
45
+ return `${response.status} ${response.statusText}`.trim();
46
+ }
47
+ try {
48
+ const payload = JSON.parse(text);
49
+ if (typeof payload.error === "string" && payload.error.trim()) {
50
+ return payload.error;
51
+ }
52
+ if (typeof payload.detail === "string" && payload.detail.trim()) {
53
+ return payload.detail;
54
+ }
55
+ }
56
+ catch {
57
+ // Fall back to the raw response body.
58
+ }
59
+ return text;
60
+ }
61
+ export async function apiCall(method, path, body) {
62
+ const baseUrl = await resolveBackendBaseUrl();
63
+ let response;
64
+ try {
65
+ response = await fetch(`${baseUrl}${path}`, {
66
+ method,
67
+ headers: body ? { "Content-Type": "application/json" } : undefined,
68
+ body: body ? JSON.stringify(body) : undefined,
69
+ });
70
+ }
71
+ catch (error) {
72
+ const message = error instanceof Error ? error.message : String(error);
73
+ throw new Error(`Failed to reach Conductor backend at ${baseUrl}: ${message}. Run \`co start\`.`);
74
+ }
75
+ if (!response.ok) {
76
+ throw new Error(await readErrorMessage(response));
77
+ }
78
+ if (response.status === 204) {
79
+ return undefined;
80
+ }
81
+ const text = await response.text();
82
+ if (!text.trim()) {
83
+ return undefined;
84
+ }
85
+ return JSON.parse(text);
86
+ }
87
+ export async function fetchConfiguredProjects() {
88
+ const response = await apiCall("GET", "/api/config");
89
+ return new Map(response.projects.map((project) => [project.id, project]));
90
+ }
91
+ export async function fetchProjects() {
92
+ const projects = await apiCall("GET", "/api/projects");
93
+ return new Map(projects.map((project) => [project.id, project]));
94
+ }
95
+ export function sessionWorktree(session) {
96
+ return session.workspacePath ?? session.metadata["worktree"] ?? null;
97
+ }
98
+ export function sessionTmuxTarget(session) {
99
+ return session.metadata["tmuxSession"] ?? session.id;
100
+ }
101
+ //# sourceMappingURL=backend.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backend.js","sourceRoot":"","sources":["../src/backend.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"cleanup.d.ts","sourceRoot":"","sources":["../../src/commands/cleanup.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGzC,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA2EtD"}
1
+ {"version":3,"file":"cleanup.d.ts","sourceRoot":"","sources":["../../src/commands/cleanup.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOzC,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA4EtD"}
@@ -6,7 +6,7 @@
6
6
  */
7
7
  import chalk from "chalk";
8
8
  import ora from "ora";
9
- import { createServices, loadConfig } from "../services.js";
9
+ import { apiCall, fetchConfiguredProjects, } from "../backend.js";
10
10
  export function registerCleanup(program) {
11
11
  program
12
12
  .command("cleanup")
@@ -15,17 +15,19 @@ export function registerCleanup(program) {
15
15
  .option("--dry-run", "Show what would be cleaned without doing it")
16
16
  .action(async (project, opts) => {
17
17
  try {
18
- const config = await loadConfig();
19
- if (project && !config.projects[project]) {
20
- console.error(chalk.red(`Unknown project: ${project}\nAvailable: ${Object.keys(config.projects).join(", ")}`));
18
+ const configuredProjects = await fetchConfiguredProjects();
19
+ if (project && !configuredProjects.has(project)) {
20
+ console.error(chalk.red(`Unknown project: ${project}\nAvailable: ${[...configuredProjects.keys()].join(", ")}`));
21
21
  process.exit(1);
22
22
  }
23
- const { sessionManager } = await createServices(config);
24
23
  if (opts.dryRun) {
25
24
  console.log(chalk.bold("Dry run -- checking for cleanable sessions...\n"));
26
25
  }
27
26
  const spinner = opts.dryRun ? null : ora("Cleaning up sessions").start();
28
- const result = await sessionManager.cleanup(project, { dryRun: Boolean(opts.dryRun) });
27
+ const result = await apiCall("POST", "/api/sessions/cleanup", {
28
+ projectId: project,
29
+ dryRun: Boolean(opts.dryRun),
30
+ });
29
31
  spinner?.stop();
30
32
  if (result.killed.length === 0 && result.errors.length === 0) {
31
33
  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":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AAEtB,OAAO,EACL,OAAO,EACP,uBAAuB,GAExB,MAAM,eAAe,CAAC;AAEvB,MAAM,UAAU,eAAe,CAAC,OAAgB;IAC9C,OAAO;SACJ,OAAO,CAAC,SAAS,CAAC;SAClB,WAAW,CAAC,0DAA0D,CAAC;SACvE,QAAQ,CAAC,WAAW,EAAE,sBAAsB,CAAC;SAC7C,MAAM,CAAC,WAAW,EAAE,6CAA6C,CAAC;SAClE,MAAM,CAAC,KAAK,EAAE,OAA2B,EAAE,IAA0B,EAAE,EAAE;QACxE,IAAI,CAAC;YACH,MAAM,kBAAkB,GAAG,MAAM,uBAAuB,EAAE,CAAC;YAE3D,IAAI,OAAO,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;gBAChD,OAAO,CAAC,KAAK,CACX,KAAK,CAAC,GAAG,CAAC,oBAAoB,OAAO,gBAAgB,CAAC,GAAG,kBAAkB,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAClG,CAAC;gBACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YAED,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC,CAAC;YAC7E,CAAC;YAED,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC,KAAK,EAAE,CAAC;YAEzE,MAAM,MAAM,GAAG,MAAM,OAAO,CAAkB,MAAM,EAAE,uBAAuB,EAAE;gBAC7E,SAAS,EAAE,OAAO;gBAClB,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;aAC7B,CAAC,CAAC;YAEH,OAAO,EAAE,IAAI,EAAE,CAAC;YAEhB,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC7D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC,CAAC;gBACnD,OAAO;YACT,CAAC;YAED,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC7B,KAAK,MAAM,EAAE,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;oBAC/B,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;wBAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC,CAAC;oBACpD,CAAC;yBAAM,CAAC;wBACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC,CAAC;oBAC/C,CAAC;gBACH,CAAC;YACH,CAAC;YAED,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC9B,KAAK,MAAM,EAAE,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;oBAChC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC,CAAC;gBAC7C,CAAC;YACH,CAAC;YAED,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC7B,KAAK,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;oBACjD,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,SAAS,MAAM,KAAK,EAAE,CAAC,CAAC,CAAC;gBAC/D,CAAC;YACH,CAAC;YAED,OAAO,CAAC,GAAG,EAAE,CAAC;YACd,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBAChB,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,GAAG,CACP,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,WAAW,MAAM,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,oBAAoB,CAC5F,CACF,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,KAAK,CACT,qBAAqB,MAAM,CAAC,MAAM,CAAC,MAAM,WAAW,MAAM,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,WAAW,CACrG,CACF,CAAC;YACJ,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,GAAG,EAAE,CAAC,CAAC,CAAC;YAC1C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -1 +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;AASzC,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA2NrD"}
1
+ {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAkDzC,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA4FrD"}
@@ -1,180 +1,117 @@
1
- import { existsSync, readFileSync } from "node:fs";
2
1
  import chalk from "chalk";
3
- import { loadConfig } from "../services.js";
2
+ import { apiCall, } from "../backend.js";
3
+ function formatDuration(seconds) {
4
+ if (seconds < 60)
5
+ return `${seconds}s`;
6
+ if (seconds < 3600)
7
+ return `${Math.floor(seconds / 60)}m`;
8
+ if (seconds < 86400)
9
+ return `${Math.floor(seconds / 3600)}h`;
10
+ return `${Math.floor(seconds / 86400)}d`;
11
+ }
12
+ function formatMs(milliseconds) {
13
+ if (milliseconds < 60_000)
14
+ return `${Math.floor(milliseconds / 1_000)}s`;
15
+ if (milliseconds < 3_600_000)
16
+ return `${Math.floor(milliseconds / 60_000)}m`;
17
+ if (milliseconds < 86_400_000)
18
+ return `${Math.floor(milliseconds / 3_600_000)}h`;
19
+ return `${Math.floor(milliseconds / 86_400_000)}d`;
20
+ }
21
+ function healthColor(value) {
22
+ switch (value) {
23
+ case "healthy":
24
+ return chalk.green(value);
25
+ case "pending":
26
+ return chalk.blue(value);
27
+ case "warning":
28
+ return chalk.yellow(value);
29
+ case "critical":
30
+ return chalk.red(value);
31
+ default:
32
+ return chalk.dim(value);
33
+ }
34
+ }
35
+ function printMetric(metric) {
36
+ console.log(` ${healthColor(metric.health)} ${chalk.green(metric.id)} ${chalk.dim(metric.projectId)} ` +
37
+ `${chalk.yellow(metric.status)} idle=${chalk.dim(formatMs(metric.idleMs))} age=${chalk.dim(formatMs(metric.ageMs))}`);
38
+ }
4
39
  export function registerDoctor(program) {
5
40
  program
6
41
  .command("doctor")
7
- .description("Diagnose board watcher parsing/dispatch issues")
8
- .option("-w, --workspace <path>", "Workspace path (defaults to CONDUCTOR_WORKSPACE)")
42
+ .description("Diagnose Rust backend health and session runtime issues")
43
+ .option("-w, --workspace <path>", "Workspace path (reported for context only)")
9
44
  .option("--json", "Output JSON report")
10
- .option("--fix-config", "Regenerate drifted project-local conductor.yaml files")
45
+ .option("--fix-config", "Deprecated. Config sync now happens through the Rust backend")
11
46
  .action(async (opts) => {
12
47
  try {
13
- const config = await loadConfig(opts.workspace);
14
- const coreModule = await import("@conductor-oss/core");
15
- const core = coreModule;
16
- const discoverBoards = core["discoverBoards"];
17
- const resolveBoardAliasesForPath = core["resolveBoardAliasesForPath"];
18
- const parseBoardStatus = core["parseBoardStatus"];
19
- const readRecentWatcherActions = core["readRecentWatcherActions"];
20
- const defaultAliasMapping = core["defaultAliasMapping"];
21
- if (!discoverBoards || !parseBoardStatus || !readRecentWatcherActions) {
22
- throw new Error("Core diagnostics helpers are unavailable. Run pnpm build.");
23
- }
24
- const workspace = opts.workspace
25
- ?? process.env["CONDUCTOR_WORKSPACE"]
26
- ?? `${process.env["HOME"]}/.conductor/workspace`;
27
- const boardPatternsOrConfig = config.boards?.length ? config.boards : config;
28
- const boards = discoverBoards(workspace, boardPatternsOrConfig);
29
- const projectIds = new Set(Object.keys(config.projects));
30
- const aliasMapping = {};
31
- const boardStatus = [];
32
- const unresolvedProjectTags = [];
33
- for (const boardPath of boards) {
34
- const aliases = resolveBoardAliasesForPath
35
- ? resolveBoardAliasesForPath(config, workspace, boardPath)
36
- : (defaultAliasMapping ? defaultAliasMapping() : {});
37
- aliasMapping[boardPath] = aliases;
38
- if (!existsSync(boardPath)) {
39
- boardStatus.push({
40
- boardPath,
41
- exists: false,
42
- parseOk: false,
43
- headingCount: 0,
44
- headings: [],
45
- columns: {},
46
- readyCount: 0,
47
- unresolvedProjects: [],
48
- errors: ["Board file does not exist"],
49
- });
50
- continue;
51
- }
52
- const content = readFileSync(boardPath, "utf-8");
53
- const status = parseBoardStatus(boardPath, content, aliases, projectIds);
54
- boardStatus.push(status);
55
- for (const tag of status.unresolvedProjects) {
56
- unresolvedProjectTags.push({ boardPath, tag });
57
- }
58
- }
59
- const recentActions = readRecentWatcherActions(workspace, 20);
48
+ const [health, sessionHealth] = await Promise.all([
49
+ apiCall("GET", "/api/health"),
50
+ apiCall("GET", "/api/health/sessions"),
51
+ ]);
52
+ const unhealthyMetrics = sessionHealth.metrics.filter((metric) => metric.health !== "healthy");
60
53
  const hints = [];
61
- if (boards.length === 0) {
62
- hints.push("No boards discovered. Add explicit boards: entries or verify workspace path.");
54
+ if (health.queue_depth > 0) {
55
+ hints.push(`${health.queue_depth} session${health.queue_depth !== 1 ? "s are" : " is"} queued waiting for launch capacity.`);
63
56
  }
64
- if (unresolvedProjectTags.length > 0) {
65
- hints.push("Some #project/<id> tags do not exist in conductor.yaml projects.");
57
+ if (health.recovering_sessions > 0) {
58
+ hints.push(`${health.recovering_sessions} session${health.recovering_sessions !== 1 ? "s are" : " is"} currently in recovery.`);
66
59
  }
67
- for (const status of boardStatus) {
68
- for (const error of status.errors) {
69
- hints.push(`${status.boardPath}: ${error}`);
70
- }
60
+ if (sessionHealth.summary.critical > 0) {
61
+ hints.push(`${sessionHealth.summary.critical} session${sessionHealth.summary.critical !== 1 ? "s are" : " is"} in a critical state. Review \`co status\` and session output.`);
62
+ }
63
+ if (opts.fixConfig) {
64
+ hints.push("`--fix-config` moved out of the JS CLI path. Restart the Rust backend to rerun config/support-file sync.");
71
65
  }
72
- if (recentActions.length === 0) {
73
- hints.push("No watcher actions logged yet. Start `co watch` or `co start` and retry.");
66
+ if (hints.length === 0) {
67
+ hints.push("No backend health issues detected.");
74
68
  }
75
69
  const report = {
76
- watchedBoards: boards,
77
- aliasMapping,
78
- boardStatus,
79
- unresolvedProjectTags,
80
- recentActions,
70
+ backend: health,
71
+ sessions: sessionHealth,
81
72
  hints,
73
+ workspace: opts.workspace ?? process.env["CONDUCTOR_WORKSPACE"] ?? null,
82
74
  };
83
75
  if (opts.json) {
84
76
  console.log(JSON.stringify(report, null, 2));
85
77
  return;
86
78
  }
87
79
  console.log(chalk.bold("Conductor Doctor"));
88
- console.log(chalk.dim(`Workspace: ${workspace}`));
89
- console.log();
90
- console.log(chalk.bold("Watched Boards"));
91
- if (boards.length === 0) {
92
- console.log(chalk.yellow(" none"));
93
- }
94
- else {
95
- for (const board of boards) {
96
- console.log(` ${chalk.cyan(board)}`);
97
- }
80
+ if (report.workspace) {
81
+ console.log(chalk.dim(`Workspace: ${report.workspace}`));
98
82
  }
99
83
  console.log();
100
- console.log(chalk.bold("Board Parse Status"));
101
- for (const status of boardStatus) {
102
- const label = status.parseOk ? chalk.green("ok") : chalk.red("error");
103
- console.log(` ${label} ${chalk.cyan(status.boardPath)} ready=${status.readyCount}`);
104
- if (status.errors.length > 0) {
105
- for (const error of status.errors) {
106
- console.log(` ${chalk.red("- " + error)}`);
107
- }
108
- }
109
- if (status.unresolvedProjects.length > 0) {
110
- console.log(` ${chalk.yellow("unresolved projects:")} ${status.unresolvedProjects.join(", ")}`);
111
- }
112
- }
84
+ console.log(chalk.bold("Backend Health"));
85
+ console.log(` Status: ${health.status === "ok" ? chalk.green(health.status) : chalk.red(health.status)}`);
86
+ console.log(` Version: ${chalk.cyan(health.version)}`);
87
+ console.log(` Uptime: ${chalk.dim(formatDuration(health.uptime_secs))}`);
88
+ console.log(` Executors: ${chalk.dim(String(health.executors))}`);
89
+ console.log(` Subscribers: ${chalk.dim(String(health.event_subscribers))}`);
90
+ console.log(` Queue depth: ${chalk.dim(String(health.queue_depth))}`);
91
+ console.log(` Launching: ${chalk.dim(String(health.launching_sessions))}`);
92
+ console.log(` Recovering: ${chalk.dim(String(health.recovering_sessions))}`);
93
+ console.log(` Detached: ${chalk.dim(String(health.detached_sessions))}`);
113
94
  console.log();
114
- console.log(chalk.bold("Recent Watcher Actions"));
115
- if (recentActions.length === 0) {
116
- console.log(chalk.yellow(" none"));
117
- }
118
- else {
119
- for (const action of recentActions) {
120
- const lvl = action.level === "error" ? chalk.red(action.level) : action.level === "debug" ? chalk.dim(action.level) : chalk.green(action.level);
121
- const board = action.boardPath ? ` ${chalk.cyan(action.boardPath)}` : "";
122
- console.log(` ${chalk.dim(action.ts)} ${lvl}${board} ${action.action}`);
123
- }
124
- }
125
- // Config drift detection
126
- const detectConfigDrift = core["detectConfigDrift"];
127
- const syncAllProjectConfigs = core["syncAllProjectConfigs"];
128
- let configDriftReports = [];
129
- if (detectConfigDrift) {
130
- configDriftReports = detectConfigDrift(config);
131
- if (opts.fixConfig && syncAllProjectConfigs) {
132
- const syncResult = syncAllProjectConfigs(config);
133
- console.log();
134
- console.log(chalk.bold("Config Sync"));
135
- if (syncResult.fixed > 0) {
136
- console.log(chalk.green(` Fixed ${syncResult.fixed} project-local config(s)`));
137
- }
138
- else {
139
- console.log(chalk.green(" All project-local configs are in sync"));
140
- }
141
- // Re-detect after fix
142
- configDriftReports = detectConfigDrift(config);
143
- }
144
- }
95
+ console.log(chalk.bold("Session Health"));
96
+ console.log(` total=${chalk.dim(String(sessionHealth.summary.total))} ` +
97
+ `healthy=${chalk.green(String(sessionHealth.summary.healthy))} ` +
98
+ `pending=${chalk.blue(String(sessionHealth.summary.pending))} ` +
99
+ `warning=${chalk.yellow(String(sessionHealth.summary.warning))} ` +
100
+ `critical=${chalk.red(String(sessionHealth.summary.critical))}`);
145
101
  console.log();
146
- console.log(chalk.bold("Project Config Drift"));
147
- if (configDriftReports.length === 0) {
148
- console.log(chalk.yellow(" Config drift detection unavailable. Run pnpm build."));
102
+ console.log(chalk.bold("Sessions Needing Attention"));
103
+ if (unhealthyMetrics.length === 0) {
104
+ console.log(chalk.green(" None"));
149
105
  }
150
106
  else {
151
- for (const drift of configDriftReports) {
152
- const statusLabel = drift.status === "ok" ? chalk.green("ok") :
153
- drift.status === "missing" ? chalk.yellow("missing") :
154
- drift.status === "unmanaged" ? chalk.blue("unmanaged") :
155
- chalk.red("drifted");
156
- console.log(` ${statusLabel} ${chalk.cyan(drift.projectId)}`);
157
- if (drift.reason) {
158
- console.log(` ${chalk.dim(drift.reason)}`);
159
- }
160
- if (drift.driftedFields && drift.driftedFields.length > 0) {
161
- console.log(` ${chalk.yellow("changed:")} ${drift.driftedFields.join(", ")}`);
162
- }
163
- }
164
- const driftCount = configDriftReports.filter((r) => r.status === "drifted" || r.status === "missing").length;
165
- if (driftCount > 0 && !opts.fixConfig) {
166
- hints.push(`${driftCount} project config(s) are drifted or missing. Run \`co doctor --fix-config\` to repair.`);
107
+ for (const metric of unhealthyMetrics) {
108
+ printMetric(metric);
167
109
  }
168
110
  }
169
111
  console.log();
170
112
  console.log(chalk.bold("Fix Hints"));
171
- if (hints.length === 0) {
172
- console.log(chalk.green(" No issues detected."));
173
- }
174
- else {
175
- for (const hint of hints) {
176
- console.log(` ${chalk.yellow("-")} ${hint}`);
177
- }
113
+ for (const hint of hints) {
114
+ console.log(` ${chalk.yellow("-")} ${hint}`);
178
115
  }
179
116
  }
180
117
  catch (err) {
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAQ5C,MAAM,UAAU,cAAc,CAAC,OAAgB;IAC7C,OAAO;SACJ,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,gDAAgD,CAAC;SAC7D,MAAM,CAAC,wBAAwB,EAAE,kDAAkD,CAAC;SACpF,MAAM,CAAC,QAAQ,EAAE,oBAAoB,CAAC;SACtC,MAAM,CAAC,cAAc,EAAE,uDAAuD,CAAC;SAC/E,MAAM,CAAC,KAAK,EAAE,IAAmB,EAAE,EAAE;QACpC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAChD,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,qBAAqB,CAAC,CAAC;YACvD,MAAM,IAAI,GAAG,UAAqC,CAAC;YACnD,MAAM,cAAc,GAAG,IAAI,CAAC,gBAAgB,CAE/B,CAAC;YACd,MAAM,0BAA0B,GAAG,IAAI,CAAC,4BAA4B,CAEvD,CAAC;YACd,MAAM,gBAAgB,GAAG,IAAI,CAAC,kBAAkB,CAOnC,CAAC;YACd,MAAM,wBAAwB,GAAG,IAAI,CAAC,0BAA0B,CAEnD,CAAC;YACd,MAAM,mBAAmB,GAAG,IAAI,CAAC,qBAAqB,CAAiD,CAAC;YACxG,IAAI,CAAC,cAAc,IAAI,CAAC,gBAAgB,IAAI,CAAC,wBAAwB,EAAE,CAAC;gBACtE,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAC;YAC/E,CAAC;YACD,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS;mBAC3B,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC;mBAClC,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,uBAAuB,CAAC;YAEnD,MAAM,qBAAqB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;YAC7E,MAAM,MAAM,GAAG,cAAc,CAAC,SAAS,EAAE,qBAAqB,CAAC,CAAC;YAChE,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;YAEzD,MAAM,YAAY,GAA6C,EAAE,CAAC;YAClE,MAAM,WAAW,GAAiJ,EAAE,CAAC;YACrK,MAAM,qBAAqB,GAA8C,EAAE,CAAC;YAE5E,KAAK,MAAM,SAAS,IAAI,MAAM,EAAE,CAAC;gBAC/B,MAAM,OAAO,GAAG,0BAA0B;oBACxC,CAAC,CAAC,0BAA0B,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,CAAC;oBAC1D,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBACvD,YAAY,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC;gBAElC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;oBAC3B,WAAW,CAAC,IAAI,CAAC;wBACf,SAAS;wBACT,MAAM,EAAE,KAAK;wBACb,OAAO,EAAE,KAAK;wBACd,YAAY,EAAE,CAAC;wBACf,QAAQ,EAAE,EAAE;wBACZ,OAAO,EAAE,EAAE;wBACX,UAAU,EAAE,CAAC;wBACb,kBAAkB,EAAE,EAAE;wBACtB,MAAM,EAAE,CAAC,2BAA2B,CAAC;qBACtC,CAAC,CAAC;oBACH,SAAS;gBACX,CAAC;gBAED,MAAM,OAAO,GAAG,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;gBACjD,MAAM,MAAM,GAAG,gBAAgB,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,CAM5C,CAAC;gBAC5B,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACzB,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,kBAAkB,EAAE,CAAC;oBAC5C,qBAAqB,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;gBACjD,CAAC;YACH,CAAC;YAED,MAAM,aAAa,GAAG,wBAAwB,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;YAE9D,MAAM,KAAK,GAAa,EAAE,CAAC;YAC3B,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACxB,KAAK,CAAC,IAAI,CAAC,8EAA8E,CAAC,CAAC;YAC7F,CAAC;YACD,IAAI,qBAAqB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACrC,KAAK,CAAC,IAAI,CAAC,kEAAkE,CAAC,CAAC;YACjF,CAAC;YACD,KAAK,MAAM,MAAM,IAAI,WAAW,EAAE,CAAC;gBACjC,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;oBAClC,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,SAAS,KAAK,KAAK,EAAE,CAAC,CAAC;gBAC9C,CAAC;YACH,CAAC;YACD,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC/B,KAAK,CAAC,IAAI,CAAC,0EAA0E,CAAC,CAAC;YACzF,CAAC;YAED,MAAM,MAAM,GAAG;gBACb,aAAa,EAAE,MAAM;gBACrB,YAAY;gBACZ,WAAW;gBACX,qBAAqB;gBACrB,aAAa;gBACb,KAAK;aACN,CAAC;YAEF,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gBACd,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;gBAC7C,OAAO;YACT,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC;YAC5C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,cAAc,SAAS,EAAE,CAAC,CAAC,CAAC;YAClD,OAAO,CAAC,GAAG,EAAE,CAAC;YAEd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC;YAC1C,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACxB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;YACtC,CAAC;iBAAM,CAAC;gBACN,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;oBAC3B,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBACxC,CAAC;YACH,CAAC;YAED,OAAO,CAAC,GAAG,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC;YAC9C,KAAK,MAAM,MAAM,IAAI,WAAW,EAAE,CAAC;gBACjC,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBACtE,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;gBACrF,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC7B,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;wBAClC,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,GAAC,KAAK,CAAC,EAAE,CAAC,CAAC;oBAC9C,CAAC;gBACH,CAAC;gBACD,IAAI,MAAM,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACzC,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,MAAM,CAAC,sBAAsB,CAAC,IAAI,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACrG,CAAC;YACH,CAAC;YAED,OAAO,CAAC,GAAG,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC;YAClD,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC/B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;YACtC,CAAC;iBAAM,CAAC;gBACN,KAAK,MAAM,MAAM,IAAI,aAAa,EAAE,CAAC;oBACnC,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oBAChJ,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACzE,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,GAAG,GAAG,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;gBAC3E,CAAC;YACH,CAAC;YAED,yBAAyB;YACzB,MAAM,iBAAiB,GAAG,IAAI,CAAC,mBAAmB,CAErC,CAAC;YACd,MAAM,qBAAqB,GAAG,IAAI,CAAC,uBAAuB,CAE7C,CAAC;YAEd,IAAI,kBAAkB,GAA0I,EAAE,CAAC;YAEnK,IAAI,iBAAiB,EAAE,CAAC;gBACtB,kBAAkB,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;gBAE/C,IAAI,IAAI,CAAC,SAAS,IAAI,qBAAqB,EAAE,CAAC;oBAC5C,MAAM,UAAU,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;oBACjD,OAAO,CAAC,GAAG,EAAE,CAAC;oBACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;oBACvC,IAAI,UAAU,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC;wBACzB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,UAAU,CAAC,KAAK,0BAA0B,CAAC,CAAC,CAAC;oBAClF,CAAC;yBAAM,CAAC;wBACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAC,CAAC;oBACtE,CAAC;oBACD,sBAAsB;oBACtB,kBAAkB,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;gBACjD,CAAC;YACH,CAAC;YAED,OAAO,CAAC,GAAG,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC;YAChD,IAAI,kBAAkB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACpC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,uDAAuD,CAAC,CAAC,CAAC;YACrF,CAAC;iBAAM,CAAC;gBACN,KAAK,MAAM,KAAK,IAAI,kBAAkB,EAAE,CAAC;oBACvC,MAAM,WAAW,GACf,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;wBAC3C,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;4BACtD,KAAK,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;gCACxD,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;oBACvB,OAAO,CAAC,GAAG,CAAC,KAAK,WAAW,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;oBAC/D,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;wBACjB,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;oBAChD,CAAC;oBACD,IAAI,KAAK,CAAC,aAAa,IAAI,KAAK,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBAC1D,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBACnF,CAAC;gBACH,CAAC;gBAED,MAAM,UAAU,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,MAAM,CAAC;gBAC7G,IAAI,UAAU,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;oBACtC,KAAK,CAAC,IAAI,CAAC,GAAG,UAAU,sFAAsF,CAAC,CAAC;gBAClH,CAAC;YACH,CAAC;YAED,OAAO,CAAC,GAAG,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;YACrC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACvB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC,CAAC;YACpD,CAAC;iBAAM,CAAC;gBACN,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;oBACzB,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;gBAChD,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,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"}
1
+ {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}