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,58 +0,0 @@
1
- import { describe, it } from "node:test";
2
- import assert from "node:assert/strict";
3
- import path from "node:path";
4
- import { parseQaTasksArgs } from "../commands/planning/QaTasksCommand.js";
5
-
6
- describe("qa-tasks argument parsing", () => {
7
- it("defaults to auto mode, ready_to_qa status, and streaming", () => {
8
- const parsed = parseQaTasksArgs([]);
9
- assert.equal(parsed.mode, "auto");
10
- assert.deepEqual(parsed.statusFilter, ["ready_to_qa"]);
11
- assert.equal(parsed.agentStream, true);
12
- assert.equal(parsed.dryRun, false);
13
- assert.equal(parsed.createFollowupTasks, "auto");
14
- });
15
-
16
- it("parses manual flags, statuses, and overrides", () => {
17
- const parsed = parseQaTasksArgs([
18
- "--mode",
19
- "manual",
20
- "--result",
21
- "fail",
22
- "--status",
23
- "ready_to_qa,in_progress",
24
- "--agent-stream",
25
- "false",
26
- "--profile",
27
- "ui",
28
- "--level",
29
- "integration",
30
- "--test-command",
31
- "npm test",
32
- "--create-followup-tasks",
33
- "none",
34
- "--notes",
35
- "needs fix",
36
- "--evidence-url",
37
- "https://ci.example",
38
- ]);
39
- assert.equal(parsed.mode, "manual");
40
- assert.equal(parsed.result, "fail");
41
- assert.deepEqual(parsed.statusFilter, ["ready_to_qa", "in_progress"]);
42
- assert.equal(parsed.agentStream, false);
43
- assert.equal(parsed.profileName, "ui");
44
- assert.equal(parsed.level, "integration");
45
- assert.equal(parsed.testCommand, "npm test");
46
- assert.equal(parsed.createFollowupTasks, "none");
47
- assert.equal(parsed.notes, "needs fix");
48
- assert.equal(parsed.evidenceUrl, "https://ci.example");
49
- });
50
-
51
- it("captures task selection and workspace metadata", () => {
52
- const root = path.resolve("/tmp/demo-workspace");
53
- const parsed = parseQaTasksArgs(["--workspace-root", root, "--project", "proj", "--task", "T1", "--task", "T2"]);
54
- assert.equal(parsed.workspaceRoot, root);
55
- assert.equal(parsed.projectKey, "proj");
56
- assert.deepEqual(parsed.taskKeys, ["T1", "T2"]);
57
- });
58
- });
@@ -1,63 +0,0 @@
1
- import { describe, it } from "node:test";
2
- import assert from "node:assert/strict";
3
- import path from "node:path";
4
- import { parseRefineTasksArgs } from "../commands/planning/RefineTasksCommand.js";
5
-
6
- describe("refine-tasks argument parsing", () => {
7
- it("defaults booleans correctly", () => {
8
- const parsed = parseRefineTasksArgs([]);
9
- assert.equal(parsed.agentStream, true);
10
- assert.equal(parsed.fromDb, true);
11
- assert.equal(parsed.dryRun, false);
12
- assert.equal(parsed.apply, false);
13
- assert.equal(parsed.resume, false);
14
- assert.equal(parsed.runAll, false);
15
- assert.equal(parsed.json, false);
16
- });
17
-
18
- it("captures repeated tasks and statuses", () => {
19
- const parsed = parseRefineTasksArgs([
20
- "--task",
21
- "alpha",
22
- "--task=beta",
23
- "--status",
24
- "not_started,in_progress",
25
- "--status=blocked",
26
- ]);
27
- assert.deepEqual(parsed.taskKeys, ["alpha", "beta"]);
28
- assert.deepEqual(parsed.statusFilter, ["not_started", "in_progress", "blocked"]);
29
- });
30
-
31
- it("parses boolean flags from inline values", () => {
32
- const parsed = parseRefineTasksArgs(["--agent-stream=false", "--from-db", "false"]);
33
- assert.equal(parsed.agentStream, false);
34
- assert.equal(parsed.fromDb, false);
35
- });
36
-
37
- it("captures workspace root, strategy, and numeric flags", () => {
38
- const root = path.resolve("/tmp/work");
39
- const parsed = parseRefineTasksArgs([
40
- "--workspace-root",
41
- root,
42
- "--project",
43
- "demo",
44
- "--strategy",
45
- "estimate",
46
- "--max-tasks",
47
- "5",
48
- ]);
49
- assert.equal(parsed.workspaceRoot, root);
50
- assert.equal(parsed.projectKey, "demo");
51
- assert.equal(parsed.strategy, "estimate");
52
- assert.equal(parsed.maxTasks, 5);
53
- });
54
-
55
- it("parses apply/resume/run-all controls", () => {
56
- const parsed = parseRefineTasksArgs(["--apply", "--resume", "--run-all", "--batch-size", "50", "--max-batches", "3"]);
57
- assert.equal(parsed.apply, true);
58
- assert.equal(parsed.resume, true);
59
- assert.equal(parsed.runAll, true);
60
- assert.equal(parsed.batchSize, 50);
61
- assert.equal(parsed.maxBatches, 3);
62
- });
63
- });
@@ -1,302 +0,0 @@
1
- import { describe, it } from "node:test";
2
- import assert from "node:assert/strict";
3
- import { RoutingCommands } from "../commands/routing/RoutingCommands.js";
4
- import { RoutingService, WorkspaceResolver, JobService } from "@mcoda/core";
5
-
6
- const withPatched = async <T, K extends keyof T>(
7
- target: T,
8
- key: K,
9
- impl: T[K],
10
- fn: () => Promise<void>,
11
- ) => {
12
- const original = target[key];
13
- (target as any)[key] = impl;
14
- try {
15
- await fn();
16
- } finally {
17
- (target as any)[key] = original;
18
- }
19
- };
20
-
21
- const captureLogs = async (fn: () => Promise<void>): Promise<string[]> => {
22
- const logs: string[] = [];
23
- const original = console.log;
24
- (console as any).log = (...args: any[]) => {
25
- logs.push(args.join(" "));
26
- };
27
- try {
28
- await fn();
29
- } finally {
30
- (console as any).log = original;
31
- }
32
- return logs;
33
- };
34
-
35
- const workspace = {
36
- workspaceRoot: "/tmp/ws-routing",
37
- workspaceId: "ws-routing",
38
- id: "ws-routing",
39
- legacyWorkspaceIds: [],
40
- mcodaDir: "/tmp/ws-routing/.mcoda",
41
- workspaceDbPath: "/tmp/ws-routing/.mcoda/mcoda.db",
42
- globalDbPath: "/tmp/global/mcoda.db",
43
- };
44
-
45
- describe("RoutingCommands", () => {
46
- it("shows help for defaults", async () => {
47
- const logs = await captureLogs(async () => RoutingCommands.run(["defaults", "--help"]));
48
- assert.ok(logs.join("\n").includes("Manage per-workspace routing defaults"));
49
- });
50
-
51
- it("lists defaults in json", async () => {
52
- const stubRouting: any = {
53
- normalizeCommand: (c: string) => c,
54
- getWorkspaceDefaults: async (id: string) =>
55
- id === "__GLOBAL__"
56
- ? [{ workspaceId: "__GLOBAL__", commandName: "default", agentId: "agent-global", updatedAt: "t1" }]
57
- : [{ workspaceId: workspace.workspaceId, commandName: "create-tasks", agentId: "agent-local", updatedAt: "t2" }],
58
- getAgentSummary: async (agentId: string) => ({
59
- id: agentId,
60
- slug: agentId,
61
- adapter: "local-model",
62
- createdAt: "t",
63
- updatedAt: "t",
64
- }),
65
- close: async () => {},
66
- };
67
-
68
- await withPatched(RoutingService as any, "create", async () => stubRouting, async () => {
69
- await withPatched(WorkspaceResolver as any, "resolveWorkspace", async () => workspace, async () => {
70
- await withPatched(JobService.prototype as any, "startCommandRun", async () => ({ id: "cmd-1" }), async () => {
71
- await withPatched(JobService.prototype as any, "finishCommandRun", async () => {}, async () => {
72
- await withPatched(JobService.prototype as any, "close", async () => {}, async () => {
73
- const logs = await captureLogs(async () => RoutingCommands.run(["defaults", "--json"]));
74
- const parsed = JSON.parse(logs.join("\n"));
75
- assert.equal(parsed.defaults.length, 1);
76
- assert.equal(parsed.globalDefaults.length, 1);
77
- });
78
- });
79
- });
80
- });
81
- });
82
- });
83
-
84
- it("updates defaults with set-command", async () => {
85
- const calls: any[] = [];
86
- const stubRouting: any = {
87
- normalizeCommand: (c: string) => c,
88
- updateWorkspaceDefaults: async (workspaceId: string, update: any) => {
89
- calls.push({ workspaceId, update });
90
- return [{ workspaceId, commandName: "create-tasks", agentId: "codex", updatedAt: "now" }];
91
- },
92
- getAgentSummary: async () => ({ id: "codex", slug: "codex", adapter: "local", createdAt: "t", updatedAt: "t" }),
93
- close: async () => {},
94
- };
95
- await withPatched(RoutingService as any, "create", async () => stubRouting, async () => {
96
- await withPatched(WorkspaceResolver as any, "resolveWorkspace", async () => workspace, async () => {
97
- await withPatched(JobService.prototype as any, "startCommandRun", async () => ({ id: "cmd-2" }), async () => {
98
- await withPatched(JobService.prototype as any, "finishCommandRun", async () => {}, async () => {
99
- await withPatched(JobService.prototype as any, "close", async () => {}, async () => {
100
- await RoutingCommands.run(["defaults", "--set-command", "create-tasks=codex", "--json"]);
101
- assert.equal(calls[0]?.workspaceId, workspace.workspaceId);
102
- assert.deepEqual(calls[0]?.update?.set, { "create-tasks": "codex" });
103
- });
104
- });
105
- });
106
- });
107
- });
108
- });
109
-
110
- it("updates qa/doc defaults", async () => {
111
- const calls: any[] = [];
112
- const stubRouting: any = {
113
- normalizeCommand: (c: string) => c,
114
- updateWorkspaceDefaults: async (workspaceId: string, update: any) => {
115
- calls.push({ workspaceId, update });
116
- return [];
117
- },
118
- getAgentSummary: async () => undefined,
119
- close: async () => {},
120
- };
121
- await withPatched(RoutingService as any, "create", async () => stubRouting, async () => {
122
- await withPatched(WorkspaceResolver as any, "resolveWorkspace", async () => workspace, async () => {
123
- await withPatched(JobService.prototype as any, "startCommandRun", async () => ({ id: "cmd-qa" }), async () => {
124
- await withPatched(JobService.prototype as any, "finishCommandRun", async () => {}, async () => {
125
- await withPatched(JobService.prototype as any, "close", async () => {}, async () => {
126
- await RoutingCommands.run(["defaults", "--set-qa-profile", "integration", "--set-docdex-scope", "sds"]);
127
- assert.equal(calls[0]?.update?.qaProfile, "integration");
128
- assert.equal(calls[0]?.update?.docdexScope, "sds");
129
- });
130
- });
131
- });
132
- });
133
- });
134
- });
135
-
136
- it("shows preview output", async () => {
137
- const stubRouting: any = {
138
- normalizeCommand: (c: string) => c,
139
- resolveAgentForCommand: async () => ({
140
- agentId: "a1",
141
- agentSlug: "agent-one",
142
- agent: { id: "a1", slug: "agent-one" },
143
- model: "stub",
144
- capabilities: ["code_write"],
145
- healthStatus: "healthy",
146
- source: "workspace_default",
147
- routingPreview: { workspaceId: workspace.workspaceId, commandName: "work-on-tasks" },
148
- requiredCapabilities: ["code_write"],
149
- }),
150
- close: async () => {},
151
- };
152
- const tokenCalls: any[] = [];
153
- await withPatched(RoutingService as any, "create", async () => stubRouting, async () => {
154
- await withPatched(WorkspaceResolver as any, "resolveWorkspace", async () => workspace, async () => {
155
- await withPatched(JobService.prototype as any, "startCommandRun", async () => ({ id: "cmd-3" }), async () => {
156
- await withPatched(JobService.prototype as any, "finishCommandRun", async () => {}, async () => {
157
- await withPatched(JobService.prototype as any, "recordTokenUsage", async (...args: any[]) => {
158
- tokenCalls.push(args);
159
- }, async () => {
160
- await withPatched(JobService.prototype as any, "close", async () => {}, async () => {
161
- const logs = await captureLogs(async () =>
162
- RoutingCommands.run(["preview", "--command", "work-on-tasks"]),
163
- );
164
- assert.ok(logs.join("\n").includes("agent-one"));
165
- assert.equal(tokenCalls.length, 1);
166
- });
167
- });
168
- });
169
- });
170
- });
171
- });
172
- });
173
-
174
- it("prints explain json", async () => {
175
- const stubRouting: any = {
176
- normalizeCommand: (c: string) => c,
177
- resolveAgentForCommand: async () => ({
178
- agentId: "a1",
179
- agentSlug: "agent-one",
180
- agent: { id: "a1", slug: "agent-one" },
181
- model: "stub",
182
- capabilities: ["code_review"],
183
- healthStatus: "healthy",
184
- source: "workspace_default",
185
- routingPreview: {
186
- workspaceId: workspace.workspaceId,
187
- commandName: "code-review",
188
- resolvedAgent: { id: "a1" },
189
- candidates: [{ agentId: "a1", agentSlug: "agent-one", source: "workspace_default" }],
190
- provenance: "workspace_default",
191
- },
192
- requiredCapabilities: ["code_review"],
193
- }),
194
- close: async () => {},
195
- };
196
- await withPatched(RoutingService as any, "create", async () => stubRouting, async () => {
197
- await withPatched(WorkspaceResolver as any, "resolveWorkspace", async () => workspace, async () => {
198
- await withPatched(JobService.prototype as any, "startCommandRun", async () => ({ id: "cmd-4" }), async () => {
199
- await withPatched(JobService.prototype as any, "finishCommandRun", async () => {}, async () => {
200
- await withPatched(JobService.prototype as any, "recordTokenUsage", async () => {}, async () => {
201
- await withPatched(JobService.prototype as any, "close", async () => {}, async () => {
202
- const logs = await captureLogs(async () =>
203
- RoutingCommands.run(["explain", "--command", "code-review", "--json"]),
204
- );
205
- const parsed = JSON.parse(logs.join("\n"));
206
- assert.equal(parsed.commandName ?? parsed.command_name, "code-review");
207
- });
208
- });
209
- });
210
- });
211
- });
212
- });
213
- });
214
-
215
- it("prints preview json with provenance", async () => {
216
- const stubRouting: any = {
217
- normalizeCommand: (c: string) => c,
218
- resolveAgentForCommand: async () => ({
219
- agentId: "a2",
220
- agentSlug: "agent-two",
221
- agent: { id: "a2", slug: "agent-two" },
222
- model: "stub",
223
- capabilities: ["plan"],
224
- healthStatus: "healthy",
225
- source: "global_default",
226
- routingPreview: {
227
- workspaceId: workspace.workspaceId,
228
- commandName: "create-tasks",
229
- resolvedAgent: { id: "a2" },
230
- provenance: "global_default",
231
- },
232
- requiredCapabilities: ["plan"],
233
- }),
234
- close: async () => {},
235
- };
236
- await withPatched(RoutingService as any, "create", async () => stubRouting, async () => {
237
- await withPatched(WorkspaceResolver as any, "resolveWorkspace", async () => workspace, async () => {
238
- await withPatched(JobService.prototype as any, "startCommandRun", async () => ({ id: "cmd-5" }), async () => {
239
- await withPatched(JobService.prototype as any, "finishCommandRun", async () => {}, async () => {
240
- await withPatched(JobService.prototype as any, "recordTokenUsage", async () => {}, async () => {
241
- await withPatched(JobService.prototype as any, "close", async () => {}, async () => {
242
- const logs = await captureLogs(async () =>
243
- RoutingCommands.run(["preview", "--command", "create-tasks", "--json"]),
244
- );
245
- const parsed = JSON.parse(logs.join("\n"));
246
- assert.equal(parsed.provenance, "global_default");
247
- assert.equal(parsed.commandName ?? parsed.command_name, "create-tasks");
248
- });
249
- });
250
- });
251
- });
252
- });
253
- });
254
- });
255
-
256
- it("prints explain table with provenance", async () => {
257
- const stubRouting: any = {
258
- normalizeCommand: (c: string) => c,
259
- resolveAgentForCommand: async () => ({
260
- agentId: "a3",
261
- agentSlug: "agent-three",
262
- agent: { id: "a3", slug: "agent-three" },
263
- model: "stub",
264
- capabilities: ["plan"],
265
- healthStatus: "degraded",
266
- source: "override",
267
- routingPreview: {
268
- workspaceId: workspace.workspaceId,
269
- commandName: "create-tasks",
270
- resolvedAgent: { id: "a3" },
271
- provenance: "override",
272
- candidates: [
273
- { agentId: "a3", agentSlug: "agent-three", source: "override", health: { status: "degraded" } as any },
274
- ],
275
- notes: "override used",
276
- },
277
- requiredCapabilities: ["plan"],
278
- }),
279
- close: async () => {},
280
- };
281
- await withPatched(RoutingService as any, "create", async () => stubRouting, async () => {
282
- await withPatched(WorkspaceResolver as any, "resolveWorkspace", async () => workspace, async () => {
283
- await withPatched(JobService.prototype as any, "startCommandRun", async () => ({ id: "cmd-6" }), async () => {
284
- await withPatched(JobService.prototype as any, "finishCommandRun", async () => {}, async () => {
285
- await withPatched(JobService.prototype as any, "recordTokenUsage", async () => {}, async () => {
286
- await withPatched(JobService.prototype as any, "close", async () => {}, async () => {
287
- const logs = await captureLogs(async () =>
288
- RoutingCommands.run(["explain", "--command", "create-tasks", "--agent", "agent-three"]),
289
- );
290
- const output = logs.join("\n");
291
- assert.ok(output.includes("override"));
292
- assert.ok(output.includes("agent-three"));
293
- assert.ok(output.includes("degraded"));
294
- assert.ok(output.includes("Required capabilities: plan"));
295
- });
296
- });
297
- });
298
- });
299
- });
300
- });
301
- });
302
- });
@@ -1,18 +0,0 @@
1
- import { describe, it } from "node:test";
2
- import assert from "node:assert/strict";
3
- import { parseSetWorkspaceArgs } from "../commands/workspace/SetWorkspaceCommand.js";
4
-
5
- describe("set-workspace argument parsing", () => {
6
- it("defaults to git and docdex enabled", () => {
7
- const parsed = parseSetWorkspaceArgs([]);
8
- assert.equal(parsed.git, true);
9
- assert.equal(parsed.docdex, true);
10
- });
11
-
12
- it("parses workspace root and disables features", () => {
13
- const parsed = parseSetWorkspaceArgs(["--workspace-root", "/tmp/ws", "--no-git", "--no-docdex"]);
14
- assert.equal(parsed.workspaceRoot, "/tmp/ws");
15
- assert.equal(parsed.git, false);
16
- assert.equal(parsed.docdex, false);
17
- });
18
- });
@@ -1,130 +0,0 @@
1
- import assert from "node:assert/strict";
2
- import { describe, it, beforeEach, afterEach } from "node:test";
3
- import fs from "node:fs/promises";
4
- import os from "node:os";
5
- import path from "node:path";
6
- import { Connection, WorkspaceMigrations, WorkspaceRepository } from "@mcoda/db";
7
- import { PathHelper } from "@mcoda/shared";
8
- import { parseTaskShowArgs, TaskShowCommands } from "../commands/backlog/TaskShowCommands.js";
9
-
10
- describe("task show arg parsing", () => {
11
- it("parses positional task key with options", () => {
12
- const parsed = parseTaskShowArgs([
13
- "show",
14
- "web-01-us-01-t01",
15
- "--project",
16
- "WEB",
17
- "--include-logs",
18
- "--include-history",
19
- "--format",
20
- "json",
21
- ]);
22
- assert.equal(parsed.taskKey, "web-01-us-01-t01");
23
- assert.equal(parsed.project, "WEB");
24
- assert.equal(parsed.includeLogs, true);
25
- assert.equal(parsed.includeHistory, true);
26
- assert.equal(parsed.format, "json");
27
- });
28
-
29
- it("parses task-detail alias", () => {
30
- const parsed = parseTaskShowArgs(["--project", "WEB", "--task", "web-01-us-01-t01"]);
31
- assert.equal(parsed.taskKey, "web-01-us-01-t01");
32
- assert.equal(parsed.project, "WEB");
33
- assert.equal(parsed.format, "table");
34
- });
35
- });
36
-
37
- describe("task show rendering", () => {
38
- let workspaceRoot: string;
39
- let taskKey: string;
40
-
41
- beforeEach(async () => {
42
- workspaceRoot = await fs.mkdtemp(path.join(os.tmpdir(), "mcoda-cli-task-"));
43
- await fs.mkdir(path.join(workspaceRoot, ".mcoda"), { recursive: true });
44
- const dbPath = PathHelper.getWorkspaceDbPath(workspaceRoot);
45
- const connection = await Connection.open(dbPath);
46
- await WorkspaceMigrations.run(connection.db);
47
- const repo = new WorkspaceRepository(connection.db, connection);
48
-
49
- const project = await repo.createProjectIfMissing({ key: "WEB", name: "Web" });
50
- const [epic] = await repo.insertEpics(
51
- [
52
- {
53
- projectId: project.id,
54
- key: "web-01",
55
- title: "Auth",
56
- description: "Authentication work",
57
- },
58
- ],
59
- true,
60
- );
61
- const [story] = await repo.insertStories(
62
- [
63
- {
64
- projectId: project.id,
65
- epicId: epic.id,
66
- key: "web-01-us-01",
67
- title: "Login",
68
- description: "Login feature",
69
- },
70
- ],
71
- true,
72
- );
73
- const [task] = await repo.insertTasks(
74
- [
75
- {
76
- projectId: project.id,
77
- epicId: epic.id,
78
- userStoryId: story.id,
79
- key: "web-01-us-01-t01",
80
- title: "Implement login",
81
- description: "Implement UI and API wiring",
82
- status: "in_progress",
83
- storyPoints: 5,
84
- priority: 1,
85
- vcsBranch: "mcoda/task/web-01-us-01-t01",
86
- },
87
- ],
88
- true,
89
- );
90
- taskKey = task.key;
91
-
92
- const now = new Date().toISOString();
93
- await repo.createTaskComment({
94
- taskId: task.id,
95
- sourceCommand: "work-on-tasks",
96
- authorType: "agent",
97
- body: "Initial work started.",
98
- createdAt: now,
99
- });
100
-
101
- await repo.close();
102
- });
103
-
104
- afterEach(async () => {
105
- await fs.rm(workspaceRoot, { recursive: true, force: true });
106
- });
107
-
108
- it("prints key fields in table mode", async () => {
109
- const logs: string[] = [];
110
- const originalLog = console.log;
111
- console.log = (...args: unknown[]) => {
112
- logs.push(args.join(" "));
113
- };
114
- try {
115
- await TaskShowCommands.run(["--workspace-root", workspaceRoot, taskKey]);
116
- } finally {
117
- console.log = originalLog;
118
- }
119
-
120
- const output = logs.join("\n");
121
- assert.ok(output.includes(taskKey));
122
- assert.ok(output.includes("Implement login"));
123
- assert.ok(output.includes("SP: 5"));
124
- assert.ok(output.includes("Project: WEB"));
125
- assert.ok(output.includes("Epic: web-01"));
126
- assert.ok(output.includes("Story: web-01-us-01"));
127
- assert.ok(output.includes("Branch: mcoda/task/web-01-us-01-t01"));
128
- assert.ok(output.includes("Initial work started."));
129
- });
130
- });
@@ -1,35 +0,0 @@
1
- import assert from "node:assert/strict";
2
- import { describe, it } from "node:test";
3
- import { parseTelemetryArgs, parseTokensArgs } from "../commands/telemetry/TelemetryCommands.js";
4
-
5
- describe("telemetry CLI parsing", () => {
6
- it("parses tokens args with explicit group-by and format", () => {
7
- const parsed = parseTokensArgs([
8
- "--project",
9
- "PROJ",
10
- "--agent",
11
- "agent-1",
12
- "--group-by",
13
- "project,day,model",
14
- "--format",
15
- "json",
16
- ]);
17
- assert.equal(parsed.project, "PROJ");
18
- assert.equal(parsed.agent, "agent-1");
19
- assert.deepEqual(parsed.groupBy, ["project", "day", "model"]);
20
- assert.equal(parsed.format, "json");
21
- });
22
-
23
- it("defaults tokens args when omitted", () => {
24
- const parsed = parseTokensArgs([]);
25
- assert.deepEqual(parsed.groupBy, ["project", "command", "agent"]);
26
- assert.equal(parsed.format, "table");
27
- });
28
-
29
- it("parses telemetry opt-out strict flag", () => {
30
- const parsed = parseTelemetryArgs(["opt-out", "--strict", "--format", "json"]);
31
- assert.equal(parsed.subcommand, "opt-out");
32
- assert.equal(parsed.strict, true);
33
- assert.equal(parsed.format, "json");
34
- });
35
- });
@@ -1,41 +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 { AgentsCommands } from "../commands/agents/AgentsCommands.js";
7
- import { TestAgentCommand } from "../commands/agents/TestAgentCommand.js";
8
- import { GlobalRepository } from "@mcoda/db";
9
-
10
- const withTempHome = async (fn: (home: string) => Promise<void>): Promise<void> => {
11
- const originalHome = process.env.HOME;
12
- const tempHome = await fs.mkdtemp(path.join(os.tmpdir(), "mcoda-test-agent-"));
13
- const originalSkip = process.env.MCODA_SKIP_CLI_CHECKS;
14
- process.env.HOME = tempHome;
15
- process.env.MCODA_SKIP_CLI_CHECKS = "1";
16
- try {
17
- await fn(tempHome);
18
- } finally {
19
- process.env.HOME = originalHome;
20
- process.env.MCODA_SKIP_CLI_CHECKS = originalSkip;
21
- await fs.rm(tempHome, { recursive: true, force: true });
22
- }
23
- };
24
-
25
- test("mcoda test-agent records health, command_runs, and token_usage", { concurrency: false }, async () => {
26
- await withTempHome(async () => {
27
- await AgentsCommands.run(["add", "qa", "--adapter", "qa-cli", "--capability", "chat"]);
28
- await TestAgentCommand.run(["qa"]);
29
-
30
- const repo = await GlobalRepository.create();
31
- const agent = await repo.getAgentBySlug("qa");
32
- assert.ok(agent);
33
- const health = await repo.getAgentHealth(agent.id);
34
- assert.equal(health?.status, "healthy");
35
- const runs = await repo["db"].all("SELECT command_name FROM command_runs WHERE command_name = 'agent.test'");
36
- assert.ok(runs.length >= 1);
37
- const tokens = await repo["db"].all("SELECT agent_id FROM token_usage WHERE command_run_id IS NOT NULL");
38
- assert.ok(tokens.length >= 1);
39
- await repo.close();
40
- });
41
- });