mcoda 0.1.2 → 0.1.4

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 (461) hide show
  1. package/CHANGELOG.md +2 -2
  2. package/README.md +9 -300
  3. package/dist/bin/McodaEntrypoint.d.ts +5 -0
  4. package/dist/bin/McodaEntrypoint.d.ts.map +1 -0
  5. package/dist/bin/McodaEntrypoint.js +175 -0
  6. package/dist/commands/agents/AgentsCommands.d.ts +4 -0
  7. package/dist/commands/agents/AgentsCommands.d.ts.map +1 -0
  8. package/dist/commands/agents/AgentsCommands.js +376 -0
  9. package/dist/commands/agents/GatewayAgentCommand.d.ts +4 -0
  10. package/dist/commands/agents/GatewayAgentCommand.d.ts.map +1 -0
  11. package/dist/commands/agents/GatewayAgentCommand.js +583 -0
  12. package/dist/commands/agents/TestAgentCommand.d.ts +4 -0
  13. package/dist/commands/agents/TestAgentCommand.d.ts.map +1 -0
  14. package/dist/commands/agents/TestAgentCommand.js +57 -0
  15. package/dist/commands/backlog/BacklogCommands.d.ts +17 -0
  16. package/dist/commands/backlog/BacklogCommands.d.ts.map +1 -0
  17. package/dist/commands/backlog/BacklogCommands.js +260 -0
  18. package/dist/commands/backlog/OrderTasksCommand.d.ts +16 -0
  19. package/dist/commands/backlog/OrderTasksCommand.d.ts.map +1 -0
  20. package/dist/commands/backlog/OrderTasksCommand.js +211 -0
  21. package/dist/commands/backlog/TaskShowCommands.d.ts +16 -0
  22. package/dist/commands/backlog/TaskShowCommands.d.ts.map +1 -0
  23. package/dist/commands/backlog/TaskShowCommands.js +275 -0
  24. package/dist/commands/docs/DocsCommands.d.ts +37 -0
  25. package/dist/commands/docs/DocsCommands.d.ts.map +1 -0
  26. package/dist/commands/docs/DocsCommands.js +381 -0
  27. package/dist/commands/estimate/EstimateCommands.d.ts +24 -0
  28. package/dist/commands/estimate/EstimateCommands.d.ts.map +1 -0
  29. package/dist/commands/estimate/EstimateCommands.js +259 -0
  30. package/dist/commands/jobs/JobsCommands.d.ts +24 -0
  31. package/dist/commands/jobs/JobsCommands.d.ts.map +1 -0
  32. package/dist/commands/jobs/JobsCommands.js +535 -0
  33. package/dist/commands/openapi/OpenapiCommands.d.ts +14 -0
  34. package/dist/commands/openapi/OpenapiCommands.d.ts.map +1 -0
  35. package/dist/commands/openapi/OpenapiCommands.js +157 -0
  36. package/dist/commands/planning/CreateTasksCommand.d.ts +17 -0
  37. package/dist/commands/planning/CreateTasksCommand.d.ts.map +1 -0
  38. package/dist/commands/planning/CreateTasksCommand.js +134 -0
  39. package/dist/commands/planning/MigrateTasksCommand.d.ts +15 -0
  40. package/dist/commands/planning/MigrateTasksCommand.d.ts.map +1 -0
  41. package/dist/commands/planning/MigrateTasksCommand.js +95 -0
  42. package/dist/commands/planning/PlanningCommands.d.ts +3 -0
  43. package/dist/commands/planning/PlanningCommands.d.ts.map +1 -0
  44. package/dist/commands/planning/PlanningCommands.js +2 -0
  45. package/dist/commands/planning/QaTasksCommand.d.ts +30 -0
  46. package/dist/commands/planning/QaTasksCommand.d.ts.map +1 -0
  47. package/dist/commands/planning/QaTasksCommand.js +293 -0
  48. package/dist/commands/planning/RefineTasksCommand.d.ts +30 -0
  49. package/dist/commands/planning/RefineTasksCommand.d.ts.map +1 -0
  50. package/dist/commands/planning/RefineTasksCommand.js +365 -0
  51. package/dist/commands/review/CodeReviewCommand.d.ts +21 -0
  52. package/dist/commands/review/CodeReviewCommand.d.ts.map +1 -0
  53. package/dist/commands/review/CodeReviewCommand.js +236 -0
  54. package/dist/commands/routing/RoutingCommands.d.ts +7 -0
  55. package/dist/commands/routing/RoutingCommands.d.ts.map +1 -0
  56. package/dist/commands/routing/RoutingCommands.js +484 -0
  57. package/dist/commands/telemetry/TelemetryCommands.d.ts +26 -0
  58. package/dist/commands/telemetry/TelemetryCommands.d.ts.map +1 -0
  59. package/dist/commands/telemetry/TelemetryCommands.js +313 -0
  60. package/dist/commands/update/UpdateCommands.d.ts +4 -0
  61. package/dist/commands/update/UpdateCommands.d.ts.map +1 -0
  62. package/dist/commands/update/UpdateCommands.js +280 -0
  63. package/dist/commands/work/WorkOnTasksCommand.d.ts +21 -0
  64. package/dist/commands/work/WorkOnTasksCommand.d.ts.map +1 -0
  65. package/dist/commands/work/WorkOnTasksCommand.js +238 -0
  66. package/dist/commands/workspace/SetWorkspaceCommand.d.ts +9 -0
  67. package/dist/commands/workspace/SetWorkspaceCommand.d.ts.map +1 -0
  68. package/dist/commands/workspace/SetWorkspaceCommand.js +128 -0
  69. package/dist/index.d.ts +19 -0
  70. package/dist/index.d.ts.map +1 -0
  71. package/package.json +31 -16
  72. package/.editorconfig +0 -9
  73. package/.eslintrc.cjs +0 -12
  74. package/.github/ISSUE_TEMPLATE/bug_report.md +0 -29
  75. package/.github/ISSUE_TEMPLATE/config.yml +0 -5
  76. package/.github/ISSUE_TEMPLATE/feature_request.md +0 -19
  77. package/.github/workflows/ci.yml +0 -37
  78. package/.github/workflows/nightly.yml +0 -38
  79. package/.github/workflows/release-dry-run.yml +0 -40
  80. package/.github/workflows/release-please.yml +0 -22
  81. package/.github/workflows/release.yml +0 -139
  82. package/.prettierrc +0 -5
  83. package/.release-please-manifest.json +0 -8
  84. package/CLA.md +0 -42
  85. package/CONTRIBUTING.md +0 -38
  86. package/docs/oss_publishing_plan.md +0 -41
  87. package/docs/pdr/.gitkeep +0 -0
  88. package/docs/quality_gates.md +0 -32
  89. package/docs/rfp/.gitkeep +0 -0
  90. package/docs/sds/sds.md +0 -11963
  91. package/docs/usage.md +0 -72
  92. package/openapi/gen-openapi.ts +0 -1
  93. package/openapi/generated/clients/.gitkeep +0 -0
  94. package/openapi/generated/types/.gitkeep +0 -0
  95. package/openapi/generated/types/index.ts +0 -118
  96. package/openapi/mcoda.yaml +0 -2063
  97. package/pack-mcoda.sh +0 -88
  98. package/packages/agents/CHANGELOG.md +0 -7
  99. package/packages/agents/LICENSE +0 -21
  100. package/packages/agents/README.md +0 -9
  101. package/packages/agents/package.json +0 -41
  102. package/packages/agents/src/AgentService/.gitkeep +0 -0
  103. package/packages/agents/src/AgentService/AgentService.d.ts +0 -21
  104. package/packages/agents/src/AgentService/AgentService.d.ts.map +0 -1
  105. package/packages/agents/src/AgentService/AgentService.js +0 -141
  106. package/packages/agents/src/AgentService/AgentService.ts +0 -308
  107. package/packages/agents/src/__tests__/AgentService.test.ts +0 -284
  108. package/packages/agents/src/adapters/AdapterTypes.d.ts +0 -29
  109. package/packages/agents/src/adapters/AdapterTypes.d.ts.map +0 -1
  110. package/packages/agents/src/adapters/AdapterTypes.js +0 -1
  111. package/packages/agents/src/adapters/AdapterTypes.ts +0 -32
  112. package/packages/agents/src/adapters/codex/.gitkeep +0 -0
  113. package/packages/agents/src/adapters/codex/CodexAdapter.d.ts +0 -11
  114. package/packages/agents/src/adapters/codex/CodexAdapter.d.ts.map +0 -1
  115. package/packages/agents/src/adapters/codex/CodexAdapter.js +0 -43
  116. package/packages/agents/src/adapters/codex/CodexAdapter.ts +0 -63
  117. package/packages/agents/src/adapters/codex/CodexCliRunner.ts +0 -154
  118. package/packages/agents/src/adapters/gemini/.gitkeep +0 -0
  119. package/packages/agents/src/adapters/gemini/GeminiAdapter.d.ts +0 -11
  120. package/packages/agents/src/adapters/gemini/GeminiAdapter.d.ts.map +0 -1
  121. package/packages/agents/src/adapters/gemini/GeminiAdapter.js +0 -42
  122. package/packages/agents/src/adapters/gemini/GeminiAdapter.ts +0 -58
  123. package/packages/agents/src/adapters/gemini/GeminiCliRunner.ts +0 -75
  124. package/packages/agents/src/adapters/local/.gitkeep +0 -0
  125. package/packages/agents/src/adapters/local/LocalAdapter.d.ts +0 -11
  126. package/packages/agents/src/adapters/local/LocalAdapter.d.ts.map +0 -1
  127. package/packages/agents/src/adapters/local/LocalAdapter.js +0 -38
  128. package/packages/agents/src/adapters/local/LocalAdapter.ts +0 -43
  129. package/packages/agents/src/adapters/ollama/OllamaCliAdapter.ts +0 -58
  130. package/packages/agents/src/adapters/ollama/OllamaCliRunner.ts +0 -70
  131. package/packages/agents/src/adapters/ollama/OllamaRemoteAdapter.ts +0 -205
  132. package/packages/agents/src/adapters/openai/.gitkeep +0 -0
  133. package/packages/agents/src/adapters/openai/OpenAiAdapter.d.ts +0 -11
  134. package/packages/agents/src/adapters/openai/OpenAiAdapter.d.ts.map +0 -1
  135. package/packages/agents/src/adapters/openai/OpenAiAdapter.js +0 -51
  136. package/packages/agents/src/adapters/openai/OpenAiAdapter.ts +0 -56
  137. package/packages/agents/src/adapters/openai/OpenAiCliAdapter.ts +0 -62
  138. package/packages/agents/src/adapters/qa/.gitkeep +0 -0
  139. package/packages/agents/src/adapters/qa/QaAdapter.d.ts +0 -11
  140. package/packages/agents/src/adapters/qa/QaAdapter.d.ts.map +0 -1
  141. package/packages/agents/src/adapters/qa/QaAdapter.js +0 -37
  142. package/packages/agents/src/adapters/qa/QaAdapter.ts +0 -42
  143. package/packages/agents/src/adapters/zhipu/ZhipuApiAdapter.ts +0 -273
  144. package/packages/agents/src/index.d.ts +0 -8
  145. package/packages/agents/src/index.d.ts.map +0 -1
  146. package/packages/agents/src/index.js +0 -7
  147. package/packages/agents/src/index.ts +0 -11
  148. package/packages/agents/tsconfig.json +0 -14
  149. package/packages/cli/CHANGELOG.md +0 -7
  150. package/packages/cli/LICENSE +0 -21
  151. package/packages/cli/README.md +0 -23
  152. package/packages/cli/package.json +0 -61
  153. package/packages/cli/src/__tests__/AgentsCommands.test.ts +0 -137
  154. package/packages/cli/src/__tests__/BacklogCommands.test.ts +0 -40
  155. package/packages/cli/src/__tests__/CodeReviewCommand.test.ts +0 -594
  156. package/packages/cli/src/__tests__/CreateTasksCommand.test.ts +0 -40
  157. package/packages/cli/src/__tests__/DocsCommands.test.ts +0 -41
  158. package/packages/cli/src/__tests__/EstimateCommands.test.ts +0 -54
  159. package/packages/cli/src/__tests__/JobsCommands.behavior.test.ts +0 -311
  160. package/packages/cli/src/__tests__/JobsCommands.test.ts +0 -49
  161. package/packages/cli/src/__tests__/MigrateTasksCommand.test.ts +0 -36
  162. package/packages/cli/src/__tests__/OpenapiCommands.test.ts +0 -34
  163. package/packages/cli/src/__tests__/OrderTasksCommand.test.ts +0 -150
  164. package/packages/cli/src/__tests__/PlanningCommands.test.ts +0 -9
  165. package/packages/cli/src/__tests__/QaTasksCommand.test.ts +0 -58
  166. package/packages/cli/src/__tests__/RefineTasksCommand.test.ts +0 -63
  167. package/packages/cli/src/__tests__/RoutingCommands.test.ts +0 -302
  168. package/packages/cli/src/__tests__/SetWorkspaceCommand.test.ts +0 -18
  169. package/packages/cli/src/__tests__/TaskShowCommands.test.ts +0 -130
  170. package/packages/cli/src/__tests__/TelemetryCommands.test.ts +0 -35
  171. package/packages/cli/src/__tests__/TestAgentCommand.test.ts +0 -41
  172. package/packages/cli/src/__tests__/UpdateCommands.test.ts +0 -292
  173. package/packages/cli/src/__tests__/WorkOnTasksCommand.test.ts +0 -42
  174. package/packages/cli/src/bin/.gitkeep +0 -0
  175. package/packages/cli/src/bin/McodaEntrypoint.ts +0 -180
  176. package/packages/cli/src/commands/agents/.gitkeep +0 -0
  177. package/packages/cli/src/commands/agents/AgentsCommands.ts +0 -374
  178. package/packages/cli/src/commands/agents/GatewayAgentCommand.ts +0 -621
  179. package/packages/cli/src/commands/agents/TestAgentCommand.ts +0 -63
  180. package/packages/cli/src/commands/backlog/.gitkeep +0 -0
  181. package/packages/cli/src/commands/backlog/BacklogCommands.ts +0 -286
  182. package/packages/cli/src/commands/backlog/OrderTasksCommand.ts +0 -237
  183. package/packages/cli/src/commands/backlog/TaskShowCommands.ts +0 -289
  184. package/packages/cli/src/commands/docs/.gitkeep +0 -0
  185. package/packages/cli/src/commands/docs/DocsCommands.ts +0 -413
  186. package/packages/cli/src/commands/estimate/EstimateCommands.ts +0 -290
  187. package/packages/cli/src/commands/jobs/.gitkeep +0 -0
  188. package/packages/cli/src/commands/jobs/JobsCommands.ts +0 -595
  189. package/packages/cli/src/commands/openapi/OpenapiCommands.ts +0 -167
  190. package/packages/cli/src/commands/planning/.gitkeep +0 -0
  191. package/packages/cli/src/commands/planning/CreateTasksCommand.ts +0 -149
  192. package/packages/cli/src/commands/planning/MigrateTasksCommand.ts +0 -105
  193. package/packages/cli/src/commands/planning/PlanningCommands.ts +0 -1
  194. package/packages/cli/src/commands/planning/QaTasksCommand.ts +0 -320
  195. package/packages/cli/src/commands/planning/RefineTasksCommand.ts +0 -408
  196. package/packages/cli/src/commands/review/CodeReviewCommand.ts +0 -262
  197. package/packages/cli/src/commands/routing/.gitkeep +0 -0
  198. package/packages/cli/src/commands/routing/RoutingCommands.ts +0 -554
  199. package/packages/cli/src/commands/telemetry/.gitkeep +0 -0
  200. package/packages/cli/src/commands/telemetry/TelemetryCommands.ts +0 -348
  201. package/packages/cli/src/commands/update/.gitkeep +0 -0
  202. package/packages/cli/src/commands/update/UpdateCommands.ts +0 -301
  203. package/packages/cli/src/commands/work/WorkOnTasksCommand.ts +0 -264
  204. package/packages/cli/src/commands/workspace/SetWorkspaceCommand.ts +0 -132
  205. package/packages/cli/test/packaging_guardrails.test.js +0 -75
  206. package/packages/cli/tsconfig.json +0 -20
  207. package/packages/core/CHANGELOG.md +0 -7
  208. package/packages/core/LICENSE +0 -21
  209. package/packages/core/README.md +0 -9
  210. package/packages/core/package.json +0 -45
  211. package/packages/core/src/__tests__/SmokeClasses.test.ts +0 -32
  212. package/packages/core/src/api/AgentsApi.ts +0 -219
  213. package/packages/core/src/api/QaTasksApi.ts +0 -38
  214. package/packages/core/src/api/TasksApi.ts +0 -35
  215. package/packages/core/src/api/__tests__/AgentsApi.test.ts +0 -203
  216. package/packages/core/src/api/__tests__/QaTasksApi.test.ts +0 -51
  217. package/packages/core/src/api/__tests__/TasksApi.test.ts +0 -56
  218. package/packages/core/src/config/.gitkeep +0 -0
  219. package/packages/core/src/config/ConfigService.ts +0 -1
  220. package/packages/core/src/domain/dependencies/.gitkeep +0 -0
  221. package/packages/core/src/domain/dependencies/Dependency.ts +0 -1
  222. package/packages/core/src/domain/epics/.gitkeep +0 -0
  223. package/packages/core/src/domain/epics/Epic.ts +0 -1
  224. package/packages/core/src/domain/projects/.gitkeep +0 -0
  225. package/packages/core/src/domain/projects/Project.ts +0 -1
  226. package/packages/core/src/domain/tasks/.gitkeep +0 -0
  227. package/packages/core/src/domain/tasks/Task.ts +0 -1
  228. package/packages/core/src/domain/userStories/.gitkeep +0 -0
  229. package/packages/core/src/domain/userStories/UserStory.ts +0 -1
  230. package/packages/core/src/index.ts +0 -27
  231. package/packages/core/src/prompts/.gitkeep +0 -0
  232. package/packages/core/src/prompts/PdrPrompts.ts +0 -23
  233. package/packages/core/src/prompts/PromptLoader.ts +0 -1
  234. package/packages/core/src/prompts/SdsPrompts.ts +0 -47
  235. package/packages/core/src/services/agents/.gitkeep +0 -0
  236. package/packages/core/src/services/agents/AgentManagementService.ts +0 -1
  237. package/packages/core/src/services/agents/GatewayAgentService.ts +0 -956
  238. package/packages/core/src/services/agents/RoutingService.ts +0 -461
  239. package/packages/core/src/services/agents/__tests__/GatewayAgentService.test.ts +0 -72
  240. package/packages/core/src/services/agents/__tests__/RoutingService.test.ts +0 -267
  241. package/packages/core/src/services/agents/generated/RoutingApiClient.ts +0 -89
  242. package/packages/core/src/services/backlog/.gitkeep +0 -0
  243. package/packages/core/src/services/backlog/BacklogService.ts +0 -580
  244. package/packages/core/src/services/backlog/TaskOrderingService.ts +0 -868
  245. package/packages/core/src/services/backlog/__tests__/BacklogService.test.ts +0 -219
  246. package/packages/core/src/services/backlog/__tests__/TaskOrderingService.test.ts +0 -268
  247. package/packages/core/src/services/docs/.gitkeep +0 -0
  248. package/packages/core/src/services/docs/DocsService.ts +0 -1913
  249. package/packages/core/src/services/docs/__tests__/DocsService.test.ts +0 -350
  250. package/packages/core/src/services/estimate/EstimateService.ts +0 -111
  251. package/packages/core/src/services/estimate/VelocityService.ts +0 -272
  252. package/packages/core/src/services/estimate/__tests__/VelocityAndEstimate.test.ts +0 -209
  253. package/packages/core/src/services/estimate/types.ts +0 -41
  254. package/packages/core/src/services/execution/.gitkeep +0 -0
  255. package/packages/core/src/services/execution/ExecutionService.ts +0 -1
  256. package/packages/core/src/services/execution/QaFollowupService.ts +0 -289
  257. package/packages/core/src/services/execution/QaProfileService.ts +0 -160
  258. package/packages/core/src/services/execution/QaTasksService.ts +0 -1303
  259. package/packages/core/src/services/execution/TaskSelectionService.ts +0 -362
  260. package/packages/core/src/services/execution/TaskStateService.ts +0 -64
  261. package/packages/core/src/services/execution/WorkOnTasksService.ts +0 -2023
  262. package/packages/core/src/services/execution/__tests__/QaFollowupService.test.ts +0 -58
  263. package/packages/core/src/services/execution/__tests__/QaProfileService.test.ts +0 -49
  264. package/packages/core/src/services/execution/__tests__/QaTasksService.test.ts +0 -157
  265. package/packages/core/src/services/execution/__tests__/TaskSelectionService.test.ts +0 -179
  266. package/packages/core/src/services/execution/__tests__/TaskStateService.test.ts +0 -51
  267. package/packages/core/src/services/execution/__tests__/WorkOnTasksService.test.ts +0 -285
  268. package/packages/core/src/services/jobs/.gitkeep +0 -0
  269. package/packages/core/src/services/jobs/JobInsightsService.ts +0 -355
  270. package/packages/core/src/services/jobs/JobResumeService.ts +0 -119
  271. package/packages/core/src/services/jobs/JobService.ts +0 -648
  272. package/packages/core/src/services/jobs/JobsApiClient.ts +0 -113
  273. package/packages/core/src/services/jobs/__tests__/JobInsightsService.test.ts +0 -17
  274. package/packages/core/src/services/jobs/__tests__/JobResumeService.test.ts +0 -45
  275. package/packages/core/src/services/jobs/__tests__/JobService.test.ts +0 -44
  276. package/packages/core/src/services/openapi/OpenApiService.ts +0 -558
  277. package/packages/core/src/services/openapi/__tests__/OpenApiService.test.ts +0 -57
  278. package/packages/core/src/services/planning/.gitkeep +0 -0
  279. package/packages/core/src/services/planning/CreateTasksService.ts +0 -1280
  280. package/packages/core/src/services/planning/KeyHelpers.ts +0 -80
  281. package/packages/core/src/services/planning/PlanningService.ts +0 -1
  282. package/packages/core/src/services/planning/RefineTasksService.ts +0 -1552
  283. package/packages/core/src/services/planning/__tests__/CreateTasksService.test.ts +0 -288
  284. package/packages/core/src/services/planning/__tests__/KeyHelpers.test.ts +0 -16
  285. package/packages/core/src/services/planning/__tests__/RefineTasksService.test.ts +0 -172
  286. package/packages/core/src/services/review/CodeReviewService.ts +0 -1386
  287. package/packages/core/src/services/review/__tests__/CodeReviewService.test.ts +0 -89
  288. package/packages/core/src/services/system/SystemUpdateService.ts +0 -177
  289. package/packages/core/src/services/system/__tests__/SystemUpdateService.test.ts +0 -40
  290. package/packages/core/src/services/tasks/TaskApiResolver.ts +0 -37
  291. package/packages/core/src/services/tasks/TaskDetailService.ts +0 -494
  292. package/packages/core/src/services/tasks/__tests__/TaskApiResolver.test.ts +0 -41
  293. package/packages/core/src/services/tasks/__tests__/TaskDetailService.test.ts +0 -178
  294. package/packages/core/src/services/telemetry/.gitkeep +0 -0
  295. package/packages/core/src/services/telemetry/TelemetryService.ts +0 -515
  296. package/packages/core/src/services/telemetry/__tests__/TelemetryService.test.ts +0 -160
  297. package/packages/core/src/workspace/.gitkeep +0 -0
  298. package/packages/core/src/workspace/WorkspaceManager.ts +0 -234
  299. package/packages/core/tsconfig.json +0 -20
  300. package/packages/db/CHANGELOG.md +0 -7
  301. package/packages/db/LICENSE +0 -21
  302. package/packages/db/README.md +0 -9
  303. package/packages/db/package.json +0 -42
  304. package/packages/db/src/__tests__/GlobalRepository.test.ts +0 -109
  305. package/packages/db/src/__tests__/SchemaAlignment.test.ts +0 -80
  306. package/packages/db/src/__tests__/WorkspaceRepository.test.ts +0 -19
  307. package/packages/db/src/index.d.ts +0 -6
  308. package/packages/db/src/index.d.ts.map +0 -1
  309. package/packages/db/src/index.js +0 -5
  310. package/packages/db/src/index.ts +0 -6
  311. package/packages/db/src/migrations/global/.gitkeep +0 -0
  312. package/packages/db/src/migrations/global/GlobalMigrations.d.ts +0 -9
  313. package/packages/db/src/migrations/global/GlobalMigrations.d.ts.map +0 -1
  314. package/packages/db/src/migrations/global/GlobalMigrations.js +0 -68
  315. package/packages/db/src/migrations/global/GlobalMigrations.ts +0 -336
  316. package/packages/db/src/migrations/workspace/.gitkeep +0 -0
  317. package/packages/db/src/migrations/workspace/WorkspaceMigrations.d.ts +0 -9
  318. package/packages/db/src/migrations/workspace/WorkspaceMigrations.d.ts.map +0 -1
  319. package/packages/db/src/migrations/workspace/WorkspaceMigrations.js +0 -251
  320. package/packages/db/src/migrations/workspace/WorkspaceMigrations.ts +0 -248
  321. package/packages/db/src/repositories/global/.gitkeep +0 -0
  322. package/packages/db/src/repositories/global/GlobalRepository.d.ts +0 -30
  323. package/packages/db/src/repositories/global/GlobalRepository.d.ts.map +0 -1
  324. package/packages/db/src/repositories/global/GlobalRepository.js +0 -209
  325. package/packages/db/src/repositories/global/GlobalRepository.ts +0 -492
  326. package/packages/db/src/repositories/workspace/.gitkeep +0 -0
  327. package/packages/db/src/repositories/workspace/WorkspaceRepository.d.ts +0 -282
  328. package/packages/db/src/repositories/workspace/WorkspaceRepository.d.ts.map +0 -1
  329. package/packages/db/src/repositories/workspace/WorkspaceRepository.js +0 -773
  330. package/packages/db/src/repositories/workspace/WorkspaceRepository.ts +0 -1511
  331. package/packages/db/src/sqlite/connection.d.ts +0 -11
  332. package/packages/db/src/sqlite/connection.d.ts.map +0 -1
  333. package/packages/db/src/sqlite/connection.js +0 -31
  334. package/packages/db/src/sqlite/connection.ts +0 -35
  335. package/packages/db/src/sqlite/pragmas.d.ts +0 -5
  336. package/packages/db/src/sqlite/pragmas.d.ts.map +0 -1
  337. package/packages/db/src/sqlite/pragmas.js +0 -6
  338. package/packages/db/src/sqlite/pragmas.ts +0 -10
  339. package/packages/db/tsconfig.json +0 -13
  340. package/packages/generators/package.json +0 -21
  341. package/packages/generators/src/__tests__/Generators.test.ts +0 -19
  342. package/packages/generators/src/index.ts +0 -1
  343. package/packages/generators/src/openapi/generateTypes.ts +0 -1
  344. package/packages/generators/src/openapi/validateSchema.ts +0 -1
  345. package/packages/generators/src/scaffolding/docs/.gitkeep +0 -0
  346. package/packages/generators/src/scaffolding/docs/DocsScaffolder.ts +0 -1
  347. package/packages/generators/src/scaffolding/global/.gitkeep +0 -0
  348. package/packages/generators/src/scaffolding/global/GlobalScaffolder.ts +0 -1
  349. package/packages/generators/src/scaffolding/workspace/.gitkeep +0 -0
  350. package/packages/generators/src/scaffolding/workspace/WorkspaceScaffolder.ts +0 -1
  351. package/packages/generators/tsconfig.json +0 -10
  352. package/packages/integrations/CHANGELOG.md +0 -7
  353. package/packages/integrations/LICENSE +0 -21
  354. package/packages/integrations/README.md +0 -9
  355. package/packages/integrations/package.json +0 -47
  356. package/packages/integrations/src/docdex/.gitkeep +0 -0
  357. package/packages/integrations/src/docdex/DocdexClient.d.ts +0 -50
  358. package/packages/integrations/src/docdex/DocdexClient.d.ts.map +0 -1
  359. package/packages/integrations/src/docdex/DocdexClient.js +0 -216
  360. package/packages/integrations/src/docdex/DocdexClient.ts +0 -261
  361. package/packages/integrations/src/docdex/__tests__/DocdexClient.test.ts +0 -29
  362. package/packages/integrations/src/index.d.ts +0 -2
  363. package/packages/integrations/src/index.d.ts.map +0 -1
  364. package/packages/integrations/src/index.js +0 -4
  365. package/packages/integrations/src/index.ts +0 -5
  366. package/packages/integrations/src/issues/.gitkeep +0 -0
  367. package/packages/integrations/src/issues/IssuesClient.ts +0 -1
  368. package/packages/integrations/src/issues/__tests__/IssuesClient.test.ts +0 -10
  369. package/packages/integrations/src/qa/.gitkeep +0 -0
  370. package/packages/integrations/src/qa/ChromiumQaAdapter.ts +0 -89
  371. package/packages/integrations/src/qa/CliQaAdapter.ts +0 -95
  372. package/packages/integrations/src/qa/MaestroQaAdapter.ts +0 -91
  373. package/packages/integrations/src/qa/QaAdapter.ts +0 -7
  374. package/packages/integrations/src/qa/QaClient.ts +0 -1
  375. package/packages/integrations/src/qa/QaTypes.ts +0 -26
  376. package/packages/integrations/src/qa/__tests__/ChromiumQaAdapter.test.ts +0 -30
  377. package/packages/integrations/src/qa/__tests__/CliQaAdapter.test.ts +0 -33
  378. package/packages/integrations/src/qa/__tests__/MaestroQaAdapter.test.ts +0 -30
  379. package/packages/integrations/src/qa/index.ts +0 -5
  380. package/packages/integrations/src/system/SystemClient.ts +0 -50
  381. package/packages/integrations/src/system/__tests__/SystemClient.test.ts +0 -40
  382. package/packages/integrations/src/telemetry/TelemetryClient.ts +0 -139
  383. package/packages/integrations/src/telemetry/__tests__/TelemetryClient.test.ts +0 -41
  384. package/packages/integrations/src/vcs/.gitkeep +0 -0
  385. package/packages/integrations/src/vcs/VcsClient.ts +0 -211
  386. package/packages/integrations/src/vcs/__tests__/VcsClient.test.ts +0 -26
  387. package/packages/integrations/tsconfig.json +0 -14
  388. package/packages/shared/CHANGELOG.md +0 -7
  389. package/packages/shared/LICENSE +0 -21
  390. package/packages/shared/README.md +0 -9
  391. package/packages/shared/package.json +0 -40
  392. package/packages/shared/src/__tests__/CommandMetadata.test.ts +0 -15
  393. package/packages/shared/src/__tests__/ServiceShells.test.ts +0 -16
  394. package/packages/shared/src/crypto/.gitkeep +0 -0
  395. package/packages/shared/src/crypto/CryptoHelper.d.ts +0 -15
  396. package/packages/shared/src/crypto/CryptoHelper.d.ts.map +0 -1
  397. package/packages/shared/src/crypto/CryptoHelper.js +0 -54
  398. package/packages/shared/src/crypto/CryptoHelper.ts +0 -57
  399. package/packages/shared/src/errors/.gitkeep +0 -0
  400. package/packages/shared/src/errors/ErrorFactory.ts +0 -1
  401. package/packages/shared/src/index.d.ts +0 -6
  402. package/packages/shared/src/index.d.ts.map +0 -1
  403. package/packages/shared/src/index.js +0 -4
  404. package/packages/shared/src/index.ts +0 -35
  405. package/packages/shared/src/logging/.gitkeep +0 -0
  406. package/packages/shared/src/logging/Logger.ts +0 -1
  407. package/packages/shared/src/metadata/CommandMetadata.ts +0 -165
  408. package/packages/shared/src/openapi/.gitkeep +0 -0
  409. package/packages/shared/src/openapi/OpenApiTypes.d.ts +0 -216
  410. package/packages/shared/src/openapi/OpenApiTypes.d.ts.map +0 -1
  411. package/packages/shared/src/openapi/OpenApiTypes.js +0 -1
  412. package/packages/shared/src/openapi/OpenApiTypes.ts +0 -312
  413. package/packages/shared/src/paths/.gitkeep +0 -0
  414. package/packages/shared/src/paths/PathHelper.d.ts +0 -12
  415. package/packages/shared/src/paths/PathHelper.d.ts.map +0 -1
  416. package/packages/shared/src/paths/PathHelper.js +0 -24
  417. package/packages/shared/src/paths/PathHelper.ts +0 -29
  418. package/packages/shared/src/qa/QaProfile.ts +0 -14
  419. package/packages/shared/src/utils/.gitkeep +0 -0
  420. package/packages/shared/src/utils/UtilityService.ts +0 -1
  421. package/packages/shared/tsconfig.json +0 -10
  422. package/packages/testing/package.json +0 -26
  423. package/packages/testing/src/__tests__/TestingFakes.test.ts +0 -15
  424. package/packages/testing/src/cli/e2e/.gitkeep +0 -0
  425. package/packages/testing/src/cli/e2e/E2eSuite.ts +0 -1
  426. package/packages/testing/src/fakes/agents/.gitkeep +0 -0
  427. package/packages/testing/src/fakes/agents/FakeAgents.ts +0 -1
  428. package/packages/testing/src/fakes/docdex/.gitkeep +0 -0
  429. package/packages/testing/src/fakes/docdex/FakeDocdexClient.ts +0 -1
  430. package/packages/testing/src/fakes/qa/.gitkeep +0 -0
  431. package/packages/testing/src/fakes/qa/FakeQaClient.ts +0 -1
  432. package/packages/testing/src/fakes/vcs/.gitkeep +0 -0
  433. package/packages/testing/src/fakes/vcs/FakeVcsClient.ts +0 -1
  434. package/packages/testing/src/fixtures/db/.gitkeep +0 -0
  435. package/packages/testing/src/fixtures/db/DbFixtures.ts +0 -1
  436. package/packages/testing/src/fixtures/workspaces/.gitkeep +0 -0
  437. package/packages/testing/src/fixtures/workspaces/WorkspaceFixtures.ts +0 -1
  438. package/packages/testing/src/index.ts +0 -1
  439. package/packages/testing/tsconfig.json +0 -10
  440. package/pnpm-workspace.yaml +0 -2
  441. package/prompts/README.md +0 -5
  442. package/prompts/code-reviewer.md +0 -23
  443. package/prompts/code-writer.md +0 -35
  444. package/prompts/gateway-agent.md +0 -27
  445. package/prompts/qa-agent.md +0 -21
  446. package/release-please-config.json +0 -39
  447. package/scripts/build-all.ts +0 -1
  448. package/scripts/dev.ts +0 -1
  449. package/scripts/install-local-cli.sh +0 -28
  450. package/scripts/pack-npm-tarballs.js +0 -63
  451. package/scripts/release.ts +0 -1
  452. package/scripts/run-node-tests.js +0 -37
  453. package/tests/all.js +0 -127
  454. package/tests/api/openapi_spec.test.js +0 -21
  455. package/tests/artifacts.md +0 -31
  456. package/tests/component/cli_version.test.js +0 -38
  457. package/tests/integration/workspace_resolver.test.js +0 -44
  458. package/tests/unit/crypto_helper.test.js +0 -36
  459. package/tests/unit/path_helper.test.js +0 -20
  460. package/tsconfig.base.json +0 -32
  461. /package/{packages/cli/src/index.ts → dist/index.js} +0 -0
@@ -0,0 +1,535 @@
1
+ import path from "node:path";
2
+ import { JobInsightsService, JobResumeService, JobService, TelemetryService, WorkspaceResolver } from "@mcoda/core";
3
+ const usage = `mcoda job <list|status|watch|logs|inspect|resume|cancel|tokens> ...
4
+
5
+ Commands:
6
+ mcoda job list [--project <KEY>] [--status <STATE>] [--type <TYPE>] [--since <DURATION|TIMESTAMP>] [--limit <N>] [--json]
7
+ mcoda job status <JOB_ID> [--json]
8
+ mcoda job watch <JOB_ID> [--interval <SECONDS>] [--no-logs]
9
+ mcoda job logs <JOB_ID> [--since <TIMESTAMP|DURATION>] [--follow]
10
+ mcoda job inspect <JOB_ID> [--json]
11
+ mcoda job resume <JOB_ID> [--agent <NAME>] [--no-telemetry]
12
+ mcoda job cancel <JOB_ID> [--force]
13
+ mcoda job tokens <JOB_ID> [--since <TIMESTAMP|DURATION>] [--format table|json]
14
+
15
+ Flags:
16
+ --workspace-root <PATH> Override workspace root (defaults to cwd)
17
+ --project <KEY> Filter jobs by project key (when available in payload)
18
+ --status <STATE> Filter by job state (queued|running|checkpointing|paused|completed|failed|cancelled)
19
+ --type <TYPE> Filter by job type (task_creation|task_refinement|work|review|qa|pdr_generate|sds_generate|openapi_change|other)
20
+ --since <DURATION|TS> Time filter (e.g. 1h, 24h, 2025-01-01T00:00:00Z)
21
+ --limit <N> Max rows for list (default 50)
22
+ --json JSON output for list/status/inspect
23
+ Jobs API required Set MCODA_API_BASE_URL/MCODA_JOBS_API_URL or workspace api.baseUrl for all job commands
24
+
25
+ Examples:
26
+ mcoda job list --status running
27
+ mcoda job status <JOB_ID> --json
28
+ mcoda job watch <JOB_ID> --interval 2 --no-logs
29
+ mcoda job logs <JOB_ID> --since 10m --follow
30
+ mcoda job inspect <JOB_ID>
31
+ mcoda job resume <JOB_ID> --agent codex
32
+ mcoda job cancel <JOB_ID>
33
+ mcoda job tokens <JOB_ID> --since 24h
34
+
35
+ Exit codes:
36
+ status/watch/logs return non-zero when a job is failed or cancelled.
37
+
38
+ Run "mcoda job --help" to see all flags and usage details for job management.`;
39
+ export const parseJobArgs = (argv) => {
40
+ if (argv.length === 0 || argv.includes("--help") || argv.includes("-h")) {
41
+ // eslint-disable-next-line no-console
42
+ console.log(usage);
43
+ process.exit(0);
44
+ }
45
+ let subcommand;
46
+ let workspaceRoot;
47
+ let jobId;
48
+ let project;
49
+ let status;
50
+ let type;
51
+ let since;
52
+ let limit;
53
+ let json = false;
54
+ let intervalSeconds;
55
+ let noLogs = false;
56
+ let follow = false;
57
+ let agent;
58
+ let noTelemetry = false;
59
+ let force = false;
60
+ const [first, ...rest] = argv;
61
+ if (first && !first.startsWith("--")) {
62
+ subcommand = first;
63
+ }
64
+ const args = subcommand ? rest : argv;
65
+ for (let i = 0; i < args.length; i += 1) {
66
+ const arg = args[i];
67
+ if (!arg.startsWith("--") && !jobId) {
68
+ jobId = arg;
69
+ continue;
70
+ }
71
+ switch (arg) {
72
+ case "--workspace-root":
73
+ case "--workspace":
74
+ workspaceRoot = args[i + 1] ? path.resolve(args[i + 1]) : undefined;
75
+ i += 1;
76
+ break;
77
+ case "--project":
78
+ project = args[i + 1];
79
+ i += 1;
80
+ break;
81
+ case "--status":
82
+ status = args[i + 1];
83
+ i += 1;
84
+ break;
85
+ case "--type":
86
+ type = args[i + 1];
87
+ i += 1;
88
+ break;
89
+ case "--since":
90
+ since = args[i + 1];
91
+ i += 1;
92
+ break;
93
+ case "--limit":
94
+ limit = Number(args[i + 1]);
95
+ i += 1;
96
+ break;
97
+ case "--interval":
98
+ intervalSeconds = Number(args[i + 1]);
99
+ i += 1;
100
+ break;
101
+ case "--no-logs":
102
+ noLogs = true;
103
+ break;
104
+ case "--follow":
105
+ follow = true;
106
+ break;
107
+ case "--agent":
108
+ agent = args[i + 1];
109
+ i += 1;
110
+ break;
111
+ case "--no-telemetry":
112
+ noTelemetry = true;
113
+ break;
114
+ case "--force":
115
+ force = true;
116
+ break;
117
+ case "--json":
118
+ json = true;
119
+ break;
120
+ case "--format":
121
+ json = args[i + 1] === "json";
122
+ i += 1;
123
+ break;
124
+ case "--id":
125
+ jobId = args[i + 1];
126
+ i += 1;
127
+ break;
128
+ default:
129
+ break;
130
+ }
131
+ }
132
+ if (!subcommand || !["list", "status", "watch", "logs", "inspect", "resume", "cancel", "tokens"].includes(subcommand)) {
133
+ throw new Error(`Unknown job subcommand.\n\n${usage}`);
134
+ }
135
+ if (["status", "watch", "logs", "inspect", "resume", "cancel", "tokens"].includes(subcommand) && !jobId) {
136
+ throw new Error(`${subcommand} requires a JOB_ID.\n\n${usage}`);
137
+ }
138
+ return {
139
+ subcommand,
140
+ jobId,
141
+ workspaceRoot,
142
+ project,
143
+ status,
144
+ type,
145
+ since,
146
+ limit: Number.isFinite(limit) ? limit : undefined,
147
+ json,
148
+ intervalSeconds: Number.isFinite(intervalSeconds) ? intervalSeconds : undefined,
149
+ noLogs,
150
+ follow,
151
+ agent,
152
+ noTelemetry,
153
+ force,
154
+ };
155
+ };
156
+ const pad = (value, width) => value.padEnd(width, " ");
157
+ const formatTable = (headers, rows) => {
158
+ if (rows.length === 0)
159
+ return headers.join(" | ");
160
+ const widths = headers.map((header, idx) => Math.max(header.length, ...rows.map((row) => (row[idx] ?? "").length)));
161
+ const headerLine = headers.map((h, idx) => pad(h, widths[idx])).join(" | ");
162
+ const sepLine = widths.map((w) => "-".repeat(w)).join("-+-");
163
+ const body = rows.map((row) => row.map((cell, idx) => pad(cell ?? "", widths[idx])).join(" | ")).join("\n");
164
+ return [headerLine, sepLine, body].filter(Boolean).join("\n");
165
+ };
166
+ const formatProgress = (total, completed) => {
167
+ if (!total || total <= 0)
168
+ return "-";
169
+ const pct = Math.round(((completed ?? 0) / total) * 100);
170
+ return `${pct}% (${completed ?? 0}/${total})`;
171
+ };
172
+ const isTerminalState = (state) => {
173
+ if (!state)
174
+ return false;
175
+ return ["completed", "failed", "cancelled", "paused"].includes(state);
176
+ };
177
+ const statusExitCode = (state) => {
178
+ if (!state)
179
+ return 1;
180
+ if (["failed", "cancelled"].includes(state))
181
+ return 1;
182
+ return 0;
183
+ };
184
+ const renderJobTokens = (rows) => {
185
+ if (rows.length === 0) {
186
+ // eslint-disable-next-line no-console
187
+ console.log("No telemetry data for this job.");
188
+ return;
189
+ }
190
+ const headers = [
191
+ "TIME",
192
+ "ACTION",
193
+ "COMMAND",
194
+ "CMD_RUN",
195
+ "TASK",
196
+ "AGENT",
197
+ "MODEL",
198
+ "TOKENS_IN",
199
+ "TOKENS_OUT",
200
+ "TOKENS_TOTAL",
201
+ "DURATION_MS",
202
+ "ERROR_KIND",
203
+ ];
204
+ const tableRows = rows.map((row) => [
205
+ row.timestamp,
206
+ row.action ?? "-",
207
+ row.command_name ?? "-",
208
+ row.command_run_id ?? "-",
209
+ row.task_id ?? row.task_run_id ?? "-",
210
+ row.agent_id ?? "-",
211
+ row.model_name ?? "-",
212
+ row.tokens_prompt != null ? `${row.tokens_prompt}` : "-",
213
+ row.tokens_completion != null ? `${row.tokens_completion}` : "-",
214
+ row.tokens_total != null ? `${row.tokens_total}` : "-",
215
+ row.duration_seconds != null ? `${Math.round(row.duration_seconds * 1000)}` : "-",
216
+ row.error_kind ?? "-",
217
+ ]);
218
+ // eslint-disable-next-line no-console
219
+ console.log(formatTable(headers, tableRows));
220
+ };
221
+ const printLogs = (entries) => {
222
+ for (const entry of entries) {
223
+ const parts = [entry.timestamp];
224
+ if (entry.taskKey)
225
+ parts.push(`[${entry.taskKey}]`);
226
+ if (entry.phase)
227
+ parts.push(entry.phase);
228
+ if (entry.source)
229
+ parts.push(entry.source);
230
+ const prefix = parts.join(" ");
231
+ // eslint-disable-next-line no-console
232
+ console.log(`${prefix}: ${entry.message ?? ""}`.trim());
233
+ }
234
+ };
235
+ const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
236
+ const printJobStatus = (job, checkpoint) => {
237
+ // eslint-disable-next-line no-console
238
+ console.log(`Job ${job.id} (${job.commandName ?? job.type})`);
239
+ if (job.commandRunId) {
240
+ // eslint-disable-next-line no-console
241
+ console.log(`Command Run: ${job.commandRunId}`);
242
+ }
243
+ // eslint-disable-next-line no-console
244
+ console.log(`State: ${job.jobState ?? job.state ?? "unknown"}${job.jobStateDetail ? ` (${job.jobStateDetail})` : job.stateDetail ? ` (${job.stateDetail})` : ""}${job.errorSummary ? ` [${job.errorSummary}]` : ""}`);
245
+ // eslint-disable-next-line no-console
246
+ console.log(`Progress: ${formatProgress(job.totalUnits ?? job.totalItems, job.completedUnits ?? job.processedItems)}`);
247
+ if (job.createdAt) {
248
+ // eslint-disable-next-line no-console
249
+ console.log(`Created: ${job.createdAt}`);
250
+ }
251
+ if (job.updatedAt) {
252
+ // eslint-disable-next-line no-console
253
+ console.log(`Updated: ${job.updatedAt}`);
254
+ }
255
+ if (job.completedAt) {
256
+ // eslint-disable-next-line no-console
257
+ console.log(`Completed: ${job.completedAt}`);
258
+ }
259
+ if (checkpoint?.stage || checkpoint?.timestamp) {
260
+ // eslint-disable-next-line no-console
261
+ console.log(`Last checkpoint: ${checkpoint?.stage ?? ""}${checkpoint?.timestamp ? ` @ ${checkpoint.timestamp}` : ""}`.trim());
262
+ }
263
+ };
264
+ const handleResume = async (parsed, workspace, resumeService) => {
265
+ if (!parsed.jobId)
266
+ throw new Error("resume requires a job id");
267
+ await resumeService.resume(parsed.jobId, { agentName: parsed.agent, noTelemetry: parsed.noTelemetry });
268
+ };
269
+ const handleCancel = async (parsed, jobService, insights) => {
270
+ if (!parsed.jobId)
271
+ throw new Error("cancel requires a job id");
272
+ const existing = await insights.getJob(parsed.jobId);
273
+ if (!existing) {
274
+ throw new Error(`Job not found: ${parsed.jobId}`);
275
+ }
276
+ const currentState = existing.jobState ?? existing.state ?? "unknown";
277
+ const cancellableStates = new Set(["queued", "running", "checkpointing", "paused"]);
278
+ const terminalStates = new Set(["completed", "failed", "cancelled"]);
279
+ if (terminalStates.has(currentState) && !parsed.force) {
280
+ throw new Error(`Job ${existing.id} is ${currentState}; rerun with --force to mark cancelled.`);
281
+ }
282
+ if (!cancellableStates.has(currentState) && !parsed.force) {
283
+ throw new Error(`Job ${existing.id} is ${currentState}; rerun with --force to mark cancelled.`);
284
+ }
285
+ const reason = parsed.force ? "force" : "user";
286
+ await insights.cancelJob(parsed.jobId, { force: parsed.force, reason });
287
+ const updated = await insights.getJob(parsed.jobId);
288
+ if (updated) {
289
+ // eslint-disable-next-line no-console
290
+ console.log(`Job ${updated.id} is now ${updated.state ?? updated.jobState ?? "cancelled"}`);
291
+ }
292
+ };
293
+ const handleTokens = async (parsed, workspace) => {
294
+ if (!parsed.jobId)
295
+ throw new Error("tokens requires a job id");
296
+ const telemetry = await TelemetryService.create(workspace, { allowMissingTelemetry: false, requireApi: true });
297
+ try {
298
+ const usage = await telemetry.getTokenUsage({ jobId: parsed.jobId, since: parsed.since });
299
+ if (parsed.json) {
300
+ // eslint-disable-next-line no-console
301
+ console.log(JSON.stringify(usage, null, 2));
302
+ }
303
+ else {
304
+ renderJobTokens(usage);
305
+ if (usage.length === 0) {
306
+ // eslint-disable-next-line no-console
307
+ console.log("No telemetry data for the selected filters/time window.");
308
+ }
309
+ }
310
+ }
311
+ finally {
312
+ await telemetry.close();
313
+ }
314
+ };
315
+ export class JobsCommands {
316
+ static async run(argv) {
317
+ const parsed = parseJobArgs(argv);
318
+ const workspace = await WorkspaceResolver.resolveWorkspace({
319
+ cwd: process.cwd(),
320
+ explicitWorkspace: parsed.workspaceRoot,
321
+ });
322
+ const jobService = new JobService(workspace, undefined, {
323
+ noTelemetry: parsed.noTelemetry,
324
+ requireRepo: true,
325
+ });
326
+ const apiBaseUrl = workspace.config?.api?.baseUrl ??
327
+ process.env.MCODA_API_BASE_URL ??
328
+ process.env.MCODA_JOBS_API_URL ??
329
+ undefined;
330
+ if (!apiBaseUrl) {
331
+ throw new Error("Jobs API is not configured. Set MCODA_API_BASE_URL/MCODA_JOBS_API_URL or configure workspace api.baseUrl to use job commands.");
332
+ }
333
+ const insights = new JobInsightsService(workspace, jobService, apiBaseUrl);
334
+ const resumeService = new JobResumeService(workspace, jobService);
335
+ const commandRun = await jobService.startCommandRun(`job ${parsed.subcommand}`, undefined, { jobId: parsed.jobId });
336
+ try {
337
+ if (parsed.subcommand === "list") {
338
+ const jobs = await insights.listJobs({
339
+ projectKey: parsed.project,
340
+ status: parsed.status,
341
+ type: parsed.type,
342
+ since: parsed.since,
343
+ limit: parsed.limit,
344
+ });
345
+ if (parsed.json) {
346
+ // eslint-disable-next-line no-console
347
+ console.log(JSON.stringify(jobs, null, 2));
348
+ }
349
+ else if (jobs.length === 0) {
350
+ // eslint-disable-next-line no-console
351
+ console.log("No jobs found.");
352
+ }
353
+ else {
354
+ const headers = ["ID", "TYPE", "COMMAND", "STATE", "DETAIL", "PROGRESS", "CREATED", "UPDATED"];
355
+ const rows = jobs.map((job) => [
356
+ job.id,
357
+ job.type,
358
+ job.commandName ?? "-",
359
+ job.jobState ?? job.state ?? "-",
360
+ job.jobStateDetail ?? job.stateDetail ?? job.errorSummary ?? "-",
361
+ formatProgress(job.totalUnits ?? job.totalItems, job.completedUnits ?? job.processedItems),
362
+ job.createdAt ?? "-",
363
+ job.updatedAt ?? "-",
364
+ ]);
365
+ // eslint-disable-next-line no-console
366
+ console.log(formatTable(headers, rows));
367
+ }
368
+ await jobService.finishCommandRun(commandRun.id, "succeeded");
369
+ return;
370
+ }
371
+ if (parsed.subcommand === "status") {
372
+ const job = parsed.jobId ? await insights.getJob(parsed.jobId) : undefined;
373
+ if (!job)
374
+ throw new Error(`Job not found: ${parsed.jobId}`);
375
+ const checkpoint = parsed.jobId ? await insights.latestCheckpoint(parsed.jobId) : undefined;
376
+ if (parsed.json) {
377
+ const payload = {
378
+ job: {
379
+ ...job,
380
+ job_state: job.jobState ?? job.state,
381
+ job_state_detail: job.jobStateDetail ?? job.stateDetail ?? job.errorSummary,
382
+ total_units: job.totalUnits ?? job.totalItems,
383
+ completed_units: job.completedUnits ?? job.processedItems,
384
+ },
385
+ checkpoint,
386
+ };
387
+ // eslint-disable-next-line no-console
388
+ console.log(JSON.stringify(payload, null, 2));
389
+ }
390
+ else {
391
+ printJobStatus({ ...job, stateDetail: job.stateDetail ?? job.errorSummary }, checkpoint);
392
+ }
393
+ const exit = statusExitCode(job.jobState ?? job.state);
394
+ if (exit !== 0)
395
+ process.exitCode = exit;
396
+ await jobService.finishCommandRun(commandRun.id, exit === 0 ? "succeeded" : "failed", job.errorSummary);
397
+ return;
398
+ }
399
+ if (parsed.subcommand === "watch") {
400
+ const intervalMs = Math.max(1, parsed.intervalSeconds ?? 3) * 1000;
401
+ let stop = false;
402
+ let logCursor;
403
+ const onSigint = () => {
404
+ stop = true;
405
+ };
406
+ process.once("SIGINT", onSigint);
407
+ while (!stop) {
408
+ const job = parsed.jobId ? await insights.getJob(parsed.jobId) : undefined;
409
+ if (!job)
410
+ throw new Error(`Job not found: ${parsed.jobId}`);
411
+ const checkpoint = parsed.jobId ? await insights.latestCheckpoint(parsed.jobId) : undefined;
412
+ printJobStatus(job, checkpoint);
413
+ if (!parsed.noLogs) {
414
+ const logs = await insights.getJobLogs(parsed.jobId, { since: logCursor ? undefined : parsed.since, after: logCursor });
415
+ printLogs(logs.entries);
416
+ logCursor = logs.cursor;
417
+ }
418
+ if (isTerminalState(job.state)) {
419
+ const exit = statusExitCode(job.state);
420
+ if (exit !== 0)
421
+ process.exitCode = exit;
422
+ // eslint-disable-next-line no-console
423
+ console.log(`Job reached terminal state: ${job.state}`);
424
+ break;
425
+ }
426
+ await sleep(intervalMs);
427
+ }
428
+ process.removeListener("SIGINT", onSigint);
429
+ await jobService.finishCommandRun(commandRun.id, process.exitCode ? "failed" : "succeeded");
430
+ return;
431
+ }
432
+ if (parsed.subcommand === "logs") {
433
+ let logCursor;
434
+ const intervalMs = Math.max(1, parsed.intervalSeconds ?? 3) * 1000;
435
+ let done = false;
436
+ const onSigint = () => {
437
+ done = true;
438
+ };
439
+ process.once("SIGINT", onSigint);
440
+ while (!done) {
441
+ const logs = await insights.getJobLogs(parsed.jobId, { since: logCursor ? undefined : parsed.since, after: logCursor });
442
+ printLogs(logs.entries);
443
+ logCursor = logs.cursor;
444
+ if (!parsed.follow)
445
+ break;
446
+ const job = await insights.getJob(parsed.jobId);
447
+ if (job && isTerminalState(job.state)) {
448
+ const exit = statusExitCode(job.state);
449
+ if (exit !== 0)
450
+ process.exitCode = exit;
451
+ break;
452
+ }
453
+ await sleep(intervalMs);
454
+ }
455
+ process.removeListener("SIGINT", onSigint);
456
+ await jobService.finishCommandRun(commandRun.id, "succeeded");
457
+ return;
458
+ }
459
+ if (parsed.subcommand === "inspect") {
460
+ const job = parsed.jobId ? await insights.getJob(parsed.jobId) : undefined;
461
+ if (!job)
462
+ throw new Error(`Job not found: ${parsed.jobId}`);
463
+ const checkpoint = await insights.latestCheckpoint(parsed.jobId);
464
+ const tasks = await insights.summarizeTasks(parsed.jobId);
465
+ const tokens = await insights.summarizeTokenUsage(parsed.jobId);
466
+ const payload = { job, checkpoint, tasks, tokens };
467
+ if (parsed.json) {
468
+ // eslint-disable-next-line no-console
469
+ console.log(JSON.stringify(payload, null, 2));
470
+ }
471
+ else {
472
+ printJobStatus(job, checkpoint);
473
+ if (job.commandRunId) {
474
+ // eslint-disable-next-line no-console
475
+ console.log(`Command run: ${job.commandRunId}`);
476
+ }
477
+ // eslint-disable-next-line no-console
478
+ console.log("\nTasks:");
479
+ const totalsLine = Object.entries(tasks.totals)
480
+ .map(([key, value]) => `${key}=${value}`)
481
+ .join(" ");
482
+ // eslint-disable-next-line no-console
483
+ console.log(totalsLine || "(no task runs)");
484
+ tasks.tasks.forEach((task) => {
485
+ const parts = [task.taskKey ?? task.taskId ?? "(unknown)", task.status ?? "unknown"];
486
+ if (task.startedAt)
487
+ parts.push(`started ${task.startedAt}`);
488
+ if (task.finishedAt)
489
+ parts.push(`finished ${task.finishedAt}`);
490
+ // eslint-disable-next-line no-console
491
+ console.log(`- ${parts.join(" | ")}`);
492
+ });
493
+ if (tokens.length) {
494
+ // eslint-disable-next-line no-console
495
+ console.log("\nToken usage:");
496
+ tokens.forEach((row) => {
497
+ const r = row;
498
+ // eslint-disable-next-line no-console
499
+ console.log(`- command=${r.commandName ?? job.commandName ?? "-"} agent=${row.agentId ?? "-"} model=${row.modelName ?? "-"} tokens=${row.tokensTotal ?? row.tokensPrompt ?? 0}` +
500
+ (row.cost != null ? ` cost=${row.cost}` : "") +
501
+ (r.commandRunId ? ` cmd_run=${r.commandRunId}` : "") +
502
+ (r.taskId ? ` task=${r.taskId}` : ""));
503
+ });
504
+ }
505
+ }
506
+ await jobService.finishCommandRun(commandRun.id, "succeeded");
507
+ return;
508
+ }
509
+ if (parsed.subcommand === "resume") {
510
+ await handleResume(parsed, workspace, resumeService);
511
+ await jobService.finishCommandRun(commandRun.id, process.exitCode ? "failed" : "succeeded");
512
+ return;
513
+ }
514
+ if (parsed.subcommand === "cancel") {
515
+ await handleCancel(parsed, jobService, insights);
516
+ await jobService.finishCommandRun(commandRun.id, "succeeded");
517
+ return;
518
+ }
519
+ if (parsed.subcommand === "tokens") {
520
+ await handleTokens(parsed, workspace);
521
+ await jobService.finishCommandRun(commandRun.id, "succeeded");
522
+ }
523
+ }
524
+ catch (error) {
525
+ const message = error instanceof Error ? error.message : String(error);
526
+ // eslint-disable-next-line no-console
527
+ console.error(message);
528
+ process.exitCode = process.exitCode ?? 1;
529
+ await jobService.finishCommandRun(commandRun.id, "failed", message);
530
+ }
531
+ finally {
532
+ await insights.close();
533
+ }
534
+ }
535
+ }
@@ -0,0 +1,14 @@
1
+ export interface ParsedOpenapiArgs {
2
+ workspaceRoot?: string;
3
+ agentName?: string;
4
+ agentStream: boolean;
5
+ force: boolean;
6
+ dryRun: boolean;
7
+ validateOnly: boolean;
8
+ noTelemetry: boolean;
9
+ }
10
+ export declare const parseOpenapiArgs: (argv: string[]) => ParsedOpenapiArgs;
11
+ export declare class OpenapiCommands {
12
+ static run(argv: string[]): Promise<void>;
13
+ }
14
+ //# sourceMappingURL=OpenapiCommands.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OpenapiCommands.d.ts","sourceRoot":"","sources":["../../../src/commands/openapi/OpenapiCommands.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,iBAAiB;IAChC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,OAAO,CAAC;IACrB,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;IAChB,YAAY,EAAE,OAAO,CAAC;IACtB,WAAW,EAAE,OAAO,CAAC;CACtB;AAUD,eAAO,MAAM,gBAAgB,GAAI,MAAM,MAAM,EAAE,KAAG,iBAmEjD,CAAC;AAcF,qBAAa,eAAe;WACb,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;CA2DhD"}