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
@@ -1,54 +0,0 @@
1
- import { describe, it } from "node:test";
2
- import assert from "node:assert/strict";
3
- import path from "node:path";
4
- import { parseEstimateArgs } from "../commands/estimate/EstimateCommands.js";
5
-
6
- describe("estimate argument parsing", () => {
7
- it("parses velocity window and aliases", () => {
8
- const parsed = parseEstimateArgs(["--velocity-window", "20", "--window", "10"]);
9
- // last one wins
10
- assert.equal(parsed.velocityWindow, 10);
11
- });
12
-
13
- it("parses sp-per-hour overrides", () => {
14
- const parsed = parseEstimateArgs([
15
- "--sp-per-hour",
16
- "12",
17
- "--sp-per-hour-review",
18
- "8",
19
- "--sp-per-hour-qa",
20
- "6",
21
- ]);
22
- assert.equal(parsed.spPerHour, 12);
23
- assert.equal(parsed.spPerHourReview, 8);
24
- assert.equal(parsed.spPerHourQa, 6);
25
- });
26
-
27
- it("captures quiet/no-color/no-telemetry flags", () => {
28
- const parsed = parseEstimateArgs(["--quiet", "--no-color", "--no-telemetry"]);
29
- assert.equal(parsed.quiet, true);
30
- assert.equal(parsed.noColor, true);
31
- assert.equal(parsed.noTelemetry, true);
32
- });
33
-
34
- it("parses workspace and scope filters", () => {
35
- const expectedRoot = path.resolve("/tmp/w");
36
- const parsed = parseEstimateArgs([
37
- "--workspace",
38
- "/tmp/w",
39
- "--project",
40
- "PROJ",
41
- "--epic",
42
- "E1",
43
- "--story",
44
- "S1",
45
- "--assignee",
46
- "user",
47
- ]);
48
- assert.equal(parsed.workspaceRoot, expectedRoot);
49
- assert.equal(parsed.project, "PROJ");
50
- assert.equal(parsed.epic, "E1");
51
- assert.equal(parsed.story, "S1");
52
- assert.equal(parsed.assignee, "user");
53
- });
54
- });
@@ -1,311 +0,0 @@
1
- import assert from "node:assert/strict";
2
- import { describe, it } from "node:test";
3
- import { JobsCommands } from "../commands/jobs/JobsCommands.js";
4
- import { JobInsightsService, JobService, JobResumeService } from "@mcoda/core";
5
-
6
- const originalApiBase = process.env.MCODA_API_BASE_URL;
7
- if (!originalApiBase) {
8
- process.env.MCODA_API_BASE_URL = "http://localhost";
9
- }
10
- const originalJobsApiBase = process.env.MCODA_JOBS_API_URL;
11
- if (!originalJobsApiBase) {
12
- process.env.MCODA_JOBS_API_URL = process.env.MCODA_API_BASE_URL;
13
- }
14
-
15
- const withPatched = <T, K extends keyof T>(target: T, key: K, impl: T[K], fn: () => Promise<void> | void) => {
16
- const original = target[key];
17
- // @ts-ignore override for testing
18
- target[key] = impl;
19
- return (async () => {
20
- try {
21
- await fn();
22
- } finally {
23
- // @ts-ignore restore original
24
- target[key] = original;
25
- }
26
- })();
27
- };
28
-
29
- const captureLogs = async (fn: () => Promise<void> | void): Promise<string[]> => {
30
- const logs: string[] = [];
31
- const originalLog = console.log;
32
- // @ts-ignore override
33
- console.log = (...args: any[]) => {
34
- logs.push(args.join(" "));
35
- };
36
- try {
37
- await fn();
38
- } finally {
39
- // @ts-ignore restore
40
- console.log = originalLog;
41
- }
42
- return logs;
43
- };
44
-
45
- describe("job command behavior", () => {
46
- it("returns non-zero exit for failed status", async () => {
47
- const finishCalls: Array<{ status: string; error?: string }> = [];
48
- const getJob = async () => ({ id: "job-1", type: "work", state: "failed", commandName: "work-on-tasks" });
49
- const latestCheckpoint = async () => undefined;
50
- await withPatched(JobInsightsService.prototype as any, "getJob", getJob as any, async () => {
51
- await withPatched(JobInsightsService.prototype as any, "latestCheckpoint", latestCheckpoint as any, async () => {
52
- await withPatched(JobService.prototype as any, "startCommandRun", async () => ({ id: "cmd-1" }), async () => {
53
- await withPatched(JobService.prototype as any, "finishCommandRun", async (_id: string, status: string, error?: string) => {
54
- finishCalls.push({ status, error });
55
- }, async () => {
56
- const originalExit = process.exitCode;
57
- process.exitCode = undefined;
58
- await JobsCommands.run(["status", "job-1"]);
59
- assert.equal(process.exitCode, 1);
60
- assert.equal(finishCalls.at(-1)?.status, "failed");
61
- process.exitCode = originalExit;
62
- });
63
- });
64
- });
65
- });
66
- });
67
-
68
- it("watch exits on completed without error", async () => {
69
- const getJob = async () => ({ id: "job-2", type: "work", state: "completed", commandName: "work-on-tasks" });
70
- const latestCheckpoint = async () => undefined;
71
- const finishes: string[] = [];
72
- await withPatched(JobInsightsService.prototype as any, "getJob", getJob as any, async () => {
73
- await withPatched(JobInsightsService.prototype as any, "latestCheckpoint", latestCheckpoint as any, async () => {
74
- await withPatched(JobService.prototype as any, "startCommandRun", async () => ({ id: "cmd-2" }), async () => {
75
- await withPatched(JobService.prototype as any, "finishCommandRun", async (_id: string, status: string) => {
76
- finishes.push(status);
77
- }, async () => {
78
- const originalExit = process.exitCode;
79
- process.exitCode = undefined;
80
- await JobsCommands.run(["watch", "job-2", "--interval", "1", "--no-logs"]);
81
- assert.equal(process.exitCode ?? 0, 0);
82
- assert.equal(finishes.at(-1), "succeeded");
83
- process.exitCode = originalExit;
84
- });
85
- });
86
- });
87
- });
88
- });
89
-
90
- it("resume fails when no checkpoints exist", async () => {
91
- const finishCalls: Array<{ status: string; error?: string }> = [];
92
- await withPatched(JobResumeService.prototype as any, "resume", async () => {
93
- throw new Error("No checkpoints");
94
- }, async () => {
95
- await withPatched(JobService.prototype as any, "startCommandRun", async () => ({ id: "cmd-3" }), async () => {
96
- await withPatched(JobService.prototype as any, "finishCommandRun", async (_id: string, status: string, error?: string) => {
97
- finishCalls.push({ status, error });
98
- }, async () => {
99
- const originalExit = process.exitCode;
100
- process.exitCode = undefined;
101
- await JobsCommands.run(["resume", "job-3"]);
102
- assert.equal(process.exitCode, 1);
103
- assert.match(finishCalls.at(-1)?.error ?? "", /No checkpoints/);
104
- process.exitCode = originalExit;
105
- });
106
- });
107
- });
108
- });
109
-
110
- it("cancel rejects non-cancellable without --force", async () => {
111
- const getJob = async () => ({ id: "job-4", type: "work", state: "completed", commandName: "work-on-tasks" });
112
- const finishCalls: Array<{ status: string; error?: string }> = [];
113
- await withPatched(JobInsightsService.prototype as any, "getJob", getJob as any, async () => {
114
- await withPatched(JobService.prototype as any, "updateJobStatus", async () => {}, async () => {
115
- await withPatched(JobService.prototype as any, "startCommandRun", async () => ({ id: "cmd-4" }), async () => {
116
- await withPatched(JobService.prototype as any, "finishCommandRun", async (_id: string, status: string, error?: string) => {
117
- finishCalls.push({ status, error });
118
- }, async () => {
119
- const originalExit = process.exitCode;
120
- process.exitCode = undefined;
121
- await JobsCommands.run(["cancel", "job-4"]);
122
- assert.equal(process.exitCode, 1);
123
- assert.match(finishCalls.at(-1)?.error ?? "", /rerun with --force/);
124
- process.exitCode = originalExit;
125
- });
126
- });
127
- });
128
- });
129
- });
130
-
131
- it("list succeeds with rows", async () => {
132
- const finishCalls: Array<{ status: string; error?: string }> = [];
133
- await withPatched(JobInsightsService.prototype as any, "listJobs", async () => [
134
- { id: "job-10", type: "review", jobState: "running", jobStateDetail: "working", totalUnits: 10, completedUnits: 5, commandName: "code-review" },
135
- ], async () => {
136
- await withPatched(JobService.prototype as any, "startCommandRun", async () => ({ id: "cmd-10" }), async () => {
137
- await withPatched(JobService.prototype as any, "finishCommandRun", async (_id: string, status: string, error?: string) => {
138
- finishCalls.push({ status, error });
139
- }, async () => {
140
- await JobsCommands.run(["list"]);
141
- assert.equal(finishCalls.at(-1)?.status, "succeeded");
142
- });
143
- });
144
- });
145
- });
146
-
147
- it("list --json emits SDS-shaped fields", async () => {
148
- const finishes: string[] = [];
149
- await withPatched(JobInsightsService.prototype as any, "listJobs", async () => [
150
- { id: "job-json", type: "review", jobState: "running", jobStateDetail: "detail", totalUnits: 2, completedUnits: 1, commandName: "code-review", createdAt: "now" },
151
- ], async () => {
152
- await withPatched(JobService.prototype as any, "startCommandRun", async () => ({ id: "cmd-10b" }), async () => {
153
- await withPatched(JobService.prototype as any, "finishCommandRun", async (_id: string, status: string) => {
154
- finishes.push(status);
155
- }, async () => {
156
- const logs = await captureLogs(async () => {
157
- await JobsCommands.run(["list", "--json"]);
158
- });
159
- const parsed = JSON.parse(logs.join("\n"));
160
- assert.equal(parsed[0].jobState ?? parsed[0].job_state, "running");
161
- assert.equal(parsed[0].jobStateDetail ?? parsed[0].job_state_detail, "detail");
162
- assert.equal(parsed[0].completedUnits ?? parsed[0].completed_units, 1);
163
- assert.equal(parsed[0].createdAt ?? parsed[0].created_at, "now");
164
- assert.equal(finishes.at(-1), "succeeded");
165
- });
166
- });
167
- });
168
- });
169
-
170
- it("logs prints entries once without follow", async () => {
171
- const finishes: string[] = [];
172
- await withPatched(JobInsightsService.prototype as any, "getJobLogs", async () => ({ entries: [{ timestamp: "t1", message: "m1" }], cursor: undefined }), async () => {
173
- await withPatched(JobService.prototype as any, "startCommandRun", async () => ({ id: "cmd-logs" }), async () => {
174
- await withPatched(JobService.prototype as any, "finishCommandRun", async (_id: string, status: string) => {
175
- finishes.push(status);
176
- }, async () => {
177
- await JobsCommands.run(["logs", "job-logs"]);
178
- assert.equal(finishes.at(-1), "succeeded");
179
- });
180
- });
181
- });
182
- });
183
-
184
- it("logs --follow polls until terminal and sets exit code on failure", async () => {
185
- const finishes: string[] = [];
186
- const logCalls: string[] = [];
187
- let jobPoll = 0;
188
- await withPatched(JobInsightsService.prototype as any, "getJobLogs", async () => {
189
- logCalls.push("logs");
190
- if (logCalls.length === 1) return { entries: [{ timestamp: "t1", message: "m1" }], cursor: { timestamp: "t1" } };
191
- return { entries: [{ timestamp: "t2", message: "m2" }], cursor: { timestamp: "t2" } };
192
- }, async () => {
193
- await withPatched(JobInsightsService.prototype as any, "getJob", async () => {
194
- jobPoll += 1;
195
- return { id: "job-follow", state: jobPoll === 1 ? "running" : "failed" };
196
- }, async () => {
197
- await withPatched(JobService.prototype as any, "startCommandRun", async () => ({ id: "cmd-logs-follow" }), async () => {
198
- await withPatched(JobService.prototype as any, "finishCommandRun", async (_id: string, status: string) => {
199
- finishes.push(status);
200
- }, async () => {
201
- const originalExit = process.exitCode;
202
- process.exitCode = undefined;
203
- const logs = await captureLogs(async () => {
204
- await JobsCommands.run(["logs", "job-follow", "--follow", "--interval", "1"]);
205
- });
206
- assert(logs.some((l) => l.includes("t1")));
207
- assert(logs.some((l) => l.includes("t2")));
208
- assert.equal(process.exitCode, 1);
209
- assert.equal(finishes.at(-1), "succeeded");
210
- process.exitCode = originalExit;
211
- });
212
- });
213
- });
214
- });
215
- });
216
-
217
- it("inspect succeeds with checkpoint/tasks/tokens", async () => {
218
- const finishes: string[] = [];
219
- await withPatched(JobInsightsService.prototype as any, "getJob", async () => ({
220
- id: "job-inspect",
221
- type: "review",
222
- jobState: "completed",
223
- commandName: "code-review",
224
- }), async () => {
225
- await withPatched(JobInsightsService.prototype as any, "latestCheckpoint", async () => ({ stage: "done", timestamp: "now" }), async () => {
226
- await withPatched(JobInsightsService.prototype as any, "summarizeTasks", async () => ({ totals: { completed: 1 }, tasks: [] }), async () => {
227
- await withPatched(JobInsightsService.prototype as any, "summarizeTokenUsage", async () => [{ agentId: "a1", modelName: "m1", tokensTotal: 10 }], async () => {
228
- await withPatched(JobService.prototype as any, "startCommandRun", async () => ({ id: "cmd-inspect" }), async () => {
229
- await withPatched(JobService.prototype as any, "finishCommandRun", async (_id: string, status: string) => {
230
- finishes.push(status);
231
- }, async () => {
232
- await JobsCommands.run(["inspect", "job-inspect"]);
233
- assert.equal(finishes.at(-1), "succeeded");
234
- });
235
- });
236
- });
237
- });
238
- });
239
- });
240
- });
241
-
242
- it("status --json includes job_state detail and checkpoint", async () => {
243
- const finishes: string[] = [];
244
- await withPatched(JobInsightsService.prototype as any, "getJob", async () => ({
245
- id: "job-json-status",
246
- type: "review",
247
- jobState: "running",
248
- jobStateDetail: "working",
249
- totalUnits: 4,
250
- completedUnits: 2,
251
- commandName: "code-review",
252
- }), async () => {
253
- await withPatched(JobInsightsService.prototype as any, "latestCheckpoint", async () => ({ stage: "stage-x", timestamp: "ts" }), async () => {
254
- await withPatched(JobService.prototype as any, "startCommandRun", async () => ({ id: "cmd-status" }), async () => {
255
- await withPatched(JobService.prototype as any, "finishCommandRun", async (_id: string, status: string) => {
256
- finishes.push(status);
257
- }, async () => {
258
- const logs = await captureLogs(async () => {
259
- await JobsCommands.run(["status", "job-json-status", "--json"]);
260
- });
261
- const payload = JSON.parse(logs.join("\n"));
262
- assert.equal(payload.job.job_state, "running");
263
- assert.equal(payload.job.job_state_detail, "working");
264
- assert.equal(payload.job.completed_units, 2);
265
- assert.equal(payload.checkpoint.stage, "stage-x");
266
- assert.equal(finishes.at(-1), "succeeded");
267
- });
268
- });
269
- });
270
- });
271
- });
272
-
273
- it("resume succeeds when manifest matches", async () => {
274
- const finishes: string[] = [];
275
- let resumeCalled = 0;
276
- await withPatched(JobResumeService.prototype as any, "resume", async () => {
277
- resumeCalled += 1;
278
- }, async () => {
279
- await withPatched(JobService.prototype as any, "startCommandRun", async () => ({ id: "cmd-resume" }), async () => {
280
- await withPatched(JobService.prototype as any, "finishCommandRun", async (_id: string, status: string) => {
281
- finishes.push(status);
282
- }, async () => {
283
- await JobsCommands.run(["resume", "job-resume"]);
284
- assert.equal(resumeCalled, 1);
285
- assert.equal(finishes.at(-1), "succeeded");
286
- });
287
- });
288
- });
289
- });
290
-
291
- it("cancel succeeds in running state", async () => {
292
- const finishes: string[] = [];
293
- await withPatched(JobInsightsService.prototype as any, "getJob", async () => ({
294
- id: "job-cancel",
295
- type: "review",
296
- jobState: "running",
297
- commandName: "code-review",
298
- }), async () => {
299
- await withPatched(JobInsightsService.prototype as any, "cancelJob", async () => {}, async () => {
300
- await withPatched(JobService.prototype as any, "startCommandRun", async () => ({ id: "cmd-cancel" }), async () => {
301
- await withPatched(JobService.prototype as any, "finishCommandRun", async (_id: string, status: string) => {
302
- finishes.push(status);
303
- }, async () => {
304
- await JobsCommands.run(["cancel", "job-cancel"]);
305
- assert.equal(finishes.at(-1), "succeeded");
306
- });
307
- });
308
- });
309
- });
310
- });
311
- });
@@ -1,49 +0,0 @@
1
- import assert from "node:assert/strict";
2
- import path from "node:path";
3
- import { describe, it } from "node:test";
4
- import { parseJobArgs } from "../commands/jobs/JobsCommands.js";
5
-
6
- describe("job CLI parsing", () => {
7
- it("parses list filters and json flag", () => {
8
- const parsed = parseJobArgs(["list", "--project", "PROJ", "--status", "running", "--type", "work", "--since", "1h", "--limit", "5", "--json"]);
9
- assert.equal(parsed.subcommand, "list");
10
- assert.equal(parsed.project, "PROJ");
11
- assert.equal(parsed.status, "running");
12
- assert.equal(parsed.type, "work");
13
- assert.equal(parsed.since, "1h");
14
- assert.equal(parsed.limit, 5);
15
- assert.equal(parsed.json, true);
16
- });
17
-
18
- it("accepts positional job id for status/logs/watch", () => {
19
- const parsed = parseJobArgs(["status", "job-123"]);
20
- assert.equal(parsed.subcommand, "status");
21
- assert.equal(parsed.jobId, "job-123");
22
- });
23
-
24
- it("parses watch interval and no-logs with workspace root", () => {
25
- const root = path.resolve("/tmp/demo");
26
- const parsed = parseJobArgs(["watch", "job-5", "--interval", "2", "--no-logs", "--workspace-root", root]);
27
- assert.equal(parsed.subcommand, "watch");
28
- assert.equal(parsed.jobId, "job-5");
29
- assert.equal(parsed.intervalSeconds, 2);
30
- assert.equal(parsed.noLogs, true);
31
- assert.equal(parsed.workspaceRoot, root);
32
- });
33
-
34
- it("captures resume agent flag", () => {
35
- const parsed = parseJobArgs(["resume", "job-9", "--agent", "codex"]);
36
- assert.equal(parsed.subcommand, "resume");
37
- assert.equal(parsed.jobId, "job-9");
38
- assert.equal(parsed.agent, "codex");
39
- });
40
-
41
- it("parses logs follow and since", () => {
42
- const parsed = parseJobArgs(["logs", "job-10", "--since", "2025-01-01T00:00:00Z", "--follow"]);
43
- assert.equal(parsed.subcommand, "logs");
44
- assert.equal(parsed.jobId, "job-10");
45
- assert.equal(parsed.since, "2025-01-01T00:00:00Z");
46
- assert.equal(parsed.follow, true);
47
- });
48
- });
49
-
@@ -1,36 +0,0 @@
1
- import { describe, it } from "node:test";
2
- import assert from "node:assert/strict";
3
- import { parseMigrateTasksArgs } from "../commands/planning/MigrateTasksCommand.js";
4
-
5
- describe("migrate-tasks argument parsing", () => {
6
- it("captures refine plans and flags", () => {
7
- const parsed = parseMigrateTasksArgs([
8
- "--workspace-root",
9
- "/tmp/ws",
10
- "--project-key",
11
- "proj",
12
- "--plan-dir",
13
- "./plans",
14
- "--refine-plan",
15
- "a.json",
16
- "--refine-plan",
17
- "b.json",
18
- "--refine-plans-dir",
19
- "./refines",
20
- "--force",
21
- "--quiet",
22
- ]);
23
- assert.equal(parsed.workspaceRoot, "/tmp/ws");
24
- assert.equal(parsed.projectKey, "proj");
25
- assert.equal(parsed.planDir, "./plans");
26
- assert.deepEqual(parsed.refinePlans, ["a.json", "b.json"]);
27
- assert.equal(parsed.refinePlansDir, "./refines");
28
- assert.equal(parsed.force, true);
29
- assert.equal(parsed.quiet, true);
30
- });
31
-
32
- it("flags help when requested", () => {
33
- const parsed = parseMigrateTasksArgs(["--help"]);
34
- assert.equal(parsed.help, true);
35
- });
36
- });
@@ -1,34 +0,0 @@
1
- import { describe, it } from "node:test";
2
- import assert from "node:assert/strict";
3
- import path from "node:path";
4
- import { parseOpenapiArgs } from "../commands/openapi/OpenapiCommands.js";
5
-
6
- describe("openapi-from-docs argument parsing", () => {
7
- it("defaults agentStream to true", () => {
8
- const parsed = parseOpenapiArgs([]);
9
- assert.equal(parsed.agentStream, true);
10
- });
11
-
12
- it("parses agentStream false", () => {
13
- const parsed = parseOpenapiArgs(["--agent-stream", "false"]);
14
- assert.equal(parsed.agentStream, false);
15
- });
16
-
17
- it("parses agentStream with inline value", () => {
18
- const parsed = parseOpenapiArgs(["--agent-stream=false"]);
19
- assert.equal(parsed.agentStream, false);
20
- });
21
-
22
- it("captures workspace root when provided", () => {
23
- const root = path.resolve("/tmp/my-workspace");
24
- const parsed = parseOpenapiArgs(["--workspace-root", root]);
25
- assert.equal(parsed.workspaceRoot, root);
26
- });
27
-
28
- it("captures force, dry-run, and validate-only flags", () => {
29
- const parsed = parseOpenapiArgs(["--force", "--dry-run", "--validate-only"]);
30
- assert.equal(parsed.force, true);
31
- assert.equal(parsed.dryRun, true);
32
- assert.equal(parsed.validateOnly, true);
33
- });
34
- });
@@ -1,150 +0,0 @@
1
- import assert from "node:assert/strict";
2
- import fs from "node:fs/promises";
3
- import os from "node:os";
4
- import path from "node:path";
5
- import test from "node:test";
6
- import { Connection, WorkspaceMigrations, WorkspaceRepository } from "@mcoda/db";
7
- import { PathHelper } from "@mcoda/shared";
8
- import { parseOrderTasksArgs, OrderTasksCommand } from "../commands/backlog/OrderTasksCommand.js";
9
-
10
- const setupWorkspace = async () => {
11
- const dir = await fs.mkdtemp(path.join(os.tmpdir(), "mcoda-cli-order-"));
12
- const mcodaDir = path.join(dir, ".mcoda");
13
- await fs.mkdir(mcodaDir, { recursive: true });
14
- const dbPath = PathHelper.getWorkspaceDbPath(dir);
15
- const connection = await Connection.open(dbPath);
16
- await WorkspaceMigrations.run(connection.db);
17
- const repo = new WorkspaceRepository(connection.db, connection);
18
-
19
- const project = await repo.createProjectIfMissing({ key: "CLI", name: "CLI" });
20
- const [epic] = await repo.insertEpics(
21
- [
22
- {
23
- projectId: project.id,
24
- key: "cli-01",
25
- title: "Epic",
26
- description: "",
27
- },
28
- ],
29
- true,
30
- );
31
- const [story] = await repo.insertStories(
32
- [
33
- {
34
- projectId: project.id,
35
- epicId: epic.id,
36
- key: "cli-01-us-01",
37
- title: "Story",
38
- description: "",
39
- },
40
- ],
41
- true,
42
- );
43
- const [t1, t2, t3] = await repo.insertTasks(
44
- [
45
- {
46
- projectId: project.id,
47
- epicId: epic.id,
48
- userStoryId: story.id,
49
- key: "CLI-01-T01",
50
- title: "Root complete",
51
- description: "",
52
- status: "completed",
53
- },
54
- {
55
- projectId: project.id,
56
- epicId: epic.id,
57
- userStoryId: story.id,
58
- key: "CLI-01-T02",
59
- title: "Next",
60
- description: "",
61
- status: "not_started",
62
- },
63
- {
64
- projectId: project.id,
65
- epicId: epic.id,
66
- userStoryId: story.id,
67
- key: "CLI-01-T03",
68
- title: "Blocked child",
69
- description: "",
70
- status: "not_started",
71
- },
72
- ],
73
- true,
74
- );
75
- await repo.insertTaskDependencies(
76
- [
77
- { taskId: t2.id, dependsOnTaskId: t1.id, relationType: "blocks" },
78
- { taskId: t3.id, dependsOnTaskId: t2.id, relationType: "blocks" },
79
- ],
80
- true,
81
- );
82
-
83
- return { dir, repo, project };
84
- };
85
-
86
- const cleanupWorkspace = async (dir: string, repo: WorkspaceRepository) => {
87
- try {
88
- await repo.close();
89
- } catch {
90
- /* ignore */
91
- }
92
- await fs.rm(dir, { recursive: true, force: true });
93
- };
94
-
95
- test("parseOrderTasksArgs respects defaults and flags", () => {
96
- const parsed = parseOrderTasksArgs([
97
- "--workspace-root",
98
- "/tmp/ws",
99
- "--project",
100
- "CLI",
101
- "--epic",
102
- "E1",
103
- "--status",
104
- "not_started,in_progress",
105
- "--include-blocked",
106
- "--agent",
107
- "codex",
108
- "--agent-stream",
109
- "false",
110
- "--json",
111
- ]);
112
- assert.equal(parsed.workspaceRoot, path.resolve("/tmp/ws"));
113
- assert.equal(parsed.project, "CLI");
114
- assert.equal(parsed.epic, "E1");
115
- assert.deepEqual(parsed.status, ["not_started", "in_progress"]);
116
- assert.equal(parsed.includeBlocked, true);
117
- assert.equal(parsed.agentName, "codex");
118
- assert.equal(parsed.agentStream, false);
119
- assert.equal(parsed.json, true);
120
- });
121
-
122
- test("order-tasks command prints ordering and records telemetry", async () => {
123
- const ctx = await setupWorkspace();
124
- const logs: string[] = [];
125
- const origLog = console.log;
126
- console.log = (...args: unknown[]) => logs.push(args.join(" "));
127
- try {
128
- await OrderTasksCommand.run([
129
- "--workspace-root",
130
- ctx.dir,
131
- "--project",
132
- ctx.project.key,
133
- "--status",
134
- "not_started,completed",
135
- ]);
136
- } finally {
137
- console.log = origLog;
138
- }
139
-
140
- const output = logs.join("\n");
141
- assert.ok(output.includes("CLI-01-T01"));
142
- assert.ok(output.includes("CLI-01-T02"));
143
-
144
- const commandRuns = await ctx.repo
145
- .getDb()
146
- .all<{ command_name: string }[]>("SELECT command_name FROM command_runs WHERE command_name = 'order-tasks'");
147
- assert.ok(commandRuns.length >= 1);
148
-
149
- await cleanupWorkspace(ctx.dir, ctx.repo);
150
- });
@@ -1,9 +0,0 @@
1
- import { describe, it } from "node:test";
2
- import assert from "node:assert/strict";
3
- import { PlanningCommands } from "../commands/planning/PlanningCommands.js";
4
-
5
- describe("planning commands", () => {
6
- it("exports a planning commands class", () => {
7
- assert.equal(typeof PlanningCommands, "function");
8
- });
9
- });