mcoda 0.1.2 → 0.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (461) hide show
  1. package/CHANGELOG.md +2 -2
  2. package/README.md +9 -300
  3. package/dist/bin/McodaEntrypoint.d.ts +5 -0
  4. package/dist/bin/McodaEntrypoint.d.ts.map +1 -0
  5. package/dist/bin/McodaEntrypoint.js +175 -0
  6. package/dist/commands/agents/AgentsCommands.d.ts +4 -0
  7. package/dist/commands/agents/AgentsCommands.d.ts.map +1 -0
  8. package/dist/commands/agents/AgentsCommands.js +376 -0
  9. package/dist/commands/agents/GatewayAgentCommand.d.ts +4 -0
  10. package/dist/commands/agents/GatewayAgentCommand.d.ts.map +1 -0
  11. package/dist/commands/agents/GatewayAgentCommand.js +583 -0
  12. package/dist/commands/agents/TestAgentCommand.d.ts +4 -0
  13. package/dist/commands/agents/TestAgentCommand.d.ts.map +1 -0
  14. package/dist/commands/agents/TestAgentCommand.js +57 -0
  15. package/dist/commands/backlog/BacklogCommands.d.ts +17 -0
  16. package/dist/commands/backlog/BacklogCommands.d.ts.map +1 -0
  17. package/dist/commands/backlog/BacklogCommands.js +260 -0
  18. package/dist/commands/backlog/OrderTasksCommand.d.ts +16 -0
  19. package/dist/commands/backlog/OrderTasksCommand.d.ts.map +1 -0
  20. package/dist/commands/backlog/OrderTasksCommand.js +211 -0
  21. package/dist/commands/backlog/TaskShowCommands.d.ts +16 -0
  22. package/dist/commands/backlog/TaskShowCommands.d.ts.map +1 -0
  23. package/dist/commands/backlog/TaskShowCommands.js +275 -0
  24. package/dist/commands/docs/DocsCommands.d.ts +37 -0
  25. package/dist/commands/docs/DocsCommands.d.ts.map +1 -0
  26. package/dist/commands/docs/DocsCommands.js +381 -0
  27. package/dist/commands/estimate/EstimateCommands.d.ts +24 -0
  28. package/dist/commands/estimate/EstimateCommands.d.ts.map +1 -0
  29. package/dist/commands/estimate/EstimateCommands.js +259 -0
  30. package/dist/commands/jobs/JobsCommands.d.ts +24 -0
  31. package/dist/commands/jobs/JobsCommands.d.ts.map +1 -0
  32. package/dist/commands/jobs/JobsCommands.js +535 -0
  33. package/dist/commands/openapi/OpenapiCommands.d.ts +14 -0
  34. package/dist/commands/openapi/OpenapiCommands.d.ts.map +1 -0
  35. package/dist/commands/openapi/OpenapiCommands.js +157 -0
  36. package/dist/commands/planning/CreateTasksCommand.d.ts +17 -0
  37. package/dist/commands/planning/CreateTasksCommand.d.ts.map +1 -0
  38. package/dist/commands/planning/CreateTasksCommand.js +134 -0
  39. package/dist/commands/planning/MigrateTasksCommand.d.ts +15 -0
  40. package/dist/commands/planning/MigrateTasksCommand.d.ts.map +1 -0
  41. package/dist/commands/planning/MigrateTasksCommand.js +95 -0
  42. package/dist/commands/planning/PlanningCommands.d.ts +3 -0
  43. package/dist/commands/planning/PlanningCommands.d.ts.map +1 -0
  44. package/dist/commands/planning/PlanningCommands.js +2 -0
  45. package/dist/commands/planning/QaTasksCommand.d.ts +30 -0
  46. package/dist/commands/planning/QaTasksCommand.d.ts.map +1 -0
  47. package/dist/commands/planning/QaTasksCommand.js +293 -0
  48. package/dist/commands/planning/RefineTasksCommand.d.ts +30 -0
  49. package/dist/commands/planning/RefineTasksCommand.d.ts.map +1 -0
  50. package/dist/commands/planning/RefineTasksCommand.js +365 -0
  51. package/dist/commands/review/CodeReviewCommand.d.ts +21 -0
  52. package/dist/commands/review/CodeReviewCommand.d.ts.map +1 -0
  53. package/dist/commands/review/CodeReviewCommand.js +236 -0
  54. package/dist/commands/routing/RoutingCommands.d.ts +7 -0
  55. package/dist/commands/routing/RoutingCommands.d.ts.map +1 -0
  56. package/dist/commands/routing/RoutingCommands.js +484 -0
  57. package/dist/commands/telemetry/TelemetryCommands.d.ts +26 -0
  58. package/dist/commands/telemetry/TelemetryCommands.d.ts.map +1 -0
  59. package/dist/commands/telemetry/TelemetryCommands.js +313 -0
  60. package/dist/commands/update/UpdateCommands.d.ts +4 -0
  61. package/dist/commands/update/UpdateCommands.d.ts.map +1 -0
  62. package/dist/commands/update/UpdateCommands.js +280 -0
  63. package/dist/commands/work/WorkOnTasksCommand.d.ts +21 -0
  64. package/dist/commands/work/WorkOnTasksCommand.d.ts.map +1 -0
  65. package/dist/commands/work/WorkOnTasksCommand.js +238 -0
  66. package/dist/commands/workspace/SetWorkspaceCommand.d.ts +9 -0
  67. package/dist/commands/workspace/SetWorkspaceCommand.d.ts.map +1 -0
  68. package/dist/commands/workspace/SetWorkspaceCommand.js +128 -0
  69. package/dist/index.d.ts +19 -0
  70. package/dist/index.d.ts.map +1 -0
  71. package/package.json +31 -16
  72. package/.editorconfig +0 -9
  73. package/.eslintrc.cjs +0 -12
  74. package/.github/ISSUE_TEMPLATE/bug_report.md +0 -29
  75. package/.github/ISSUE_TEMPLATE/config.yml +0 -5
  76. package/.github/ISSUE_TEMPLATE/feature_request.md +0 -19
  77. package/.github/workflows/ci.yml +0 -37
  78. package/.github/workflows/nightly.yml +0 -38
  79. package/.github/workflows/release-dry-run.yml +0 -40
  80. package/.github/workflows/release-please.yml +0 -22
  81. package/.github/workflows/release.yml +0 -139
  82. package/.prettierrc +0 -5
  83. package/.release-please-manifest.json +0 -8
  84. package/CLA.md +0 -42
  85. package/CONTRIBUTING.md +0 -38
  86. package/docs/oss_publishing_plan.md +0 -41
  87. package/docs/pdr/.gitkeep +0 -0
  88. package/docs/quality_gates.md +0 -32
  89. package/docs/rfp/.gitkeep +0 -0
  90. package/docs/sds/sds.md +0 -11963
  91. package/docs/usage.md +0 -72
  92. package/openapi/gen-openapi.ts +0 -1
  93. package/openapi/generated/clients/.gitkeep +0 -0
  94. package/openapi/generated/types/.gitkeep +0 -0
  95. package/openapi/generated/types/index.ts +0 -118
  96. package/openapi/mcoda.yaml +0 -2063
  97. package/pack-mcoda.sh +0 -88
  98. package/packages/agents/CHANGELOG.md +0 -7
  99. package/packages/agents/LICENSE +0 -21
  100. package/packages/agents/README.md +0 -9
  101. package/packages/agents/package.json +0 -41
  102. package/packages/agents/src/AgentService/.gitkeep +0 -0
  103. package/packages/agents/src/AgentService/AgentService.d.ts +0 -21
  104. package/packages/agents/src/AgentService/AgentService.d.ts.map +0 -1
  105. package/packages/agents/src/AgentService/AgentService.js +0 -141
  106. package/packages/agents/src/AgentService/AgentService.ts +0 -308
  107. package/packages/agents/src/__tests__/AgentService.test.ts +0 -284
  108. package/packages/agents/src/adapters/AdapterTypes.d.ts +0 -29
  109. package/packages/agents/src/adapters/AdapterTypes.d.ts.map +0 -1
  110. package/packages/agents/src/adapters/AdapterTypes.js +0 -1
  111. package/packages/agents/src/adapters/AdapterTypes.ts +0 -32
  112. package/packages/agents/src/adapters/codex/.gitkeep +0 -0
  113. package/packages/agents/src/adapters/codex/CodexAdapter.d.ts +0 -11
  114. package/packages/agents/src/adapters/codex/CodexAdapter.d.ts.map +0 -1
  115. package/packages/agents/src/adapters/codex/CodexAdapter.js +0 -43
  116. package/packages/agents/src/adapters/codex/CodexAdapter.ts +0 -63
  117. package/packages/agents/src/adapters/codex/CodexCliRunner.ts +0 -154
  118. package/packages/agents/src/adapters/gemini/.gitkeep +0 -0
  119. package/packages/agents/src/adapters/gemini/GeminiAdapter.d.ts +0 -11
  120. package/packages/agents/src/adapters/gemini/GeminiAdapter.d.ts.map +0 -1
  121. package/packages/agents/src/adapters/gemini/GeminiAdapter.js +0 -42
  122. package/packages/agents/src/adapters/gemini/GeminiAdapter.ts +0 -58
  123. package/packages/agents/src/adapters/gemini/GeminiCliRunner.ts +0 -75
  124. package/packages/agents/src/adapters/local/.gitkeep +0 -0
  125. package/packages/agents/src/adapters/local/LocalAdapter.d.ts +0 -11
  126. package/packages/agents/src/adapters/local/LocalAdapter.d.ts.map +0 -1
  127. package/packages/agents/src/adapters/local/LocalAdapter.js +0 -38
  128. package/packages/agents/src/adapters/local/LocalAdapter.ts +0 -43
  129. package/packages/agents/src/adapters/ollama/OllamaCliAdapter.ts +0 -58
  130. package/packages/agents/src/adapters/ollama/OllamaCliRunner.ts +0 -70
  131. package/packages/agents/src/adapters/ollama/OllamaRemoteAdapter.ts +0 -205
  132. package/packages/agents/src/adapters/openai/.gitkeep +0 -0
  133. package/packages/agents/src/adapters/openai/OpenAiAdapter.d.ts +0 -11
  134. package/packages/agents/src/adapters/openai/OpenAiAdapter.d.ts.map +0 -1
  135. package/packages/agents/src/adapters/openai/OpenAiAdapter.js +0 -51
  136. package/packages/agents/src/adapters/openai/OpenAiAdapter.ts +0 -56
  137. package/packages/agents/src/adapters/openai/OpenAiCliAdapter.ts +0 -62
  138. package/packages/agents/src/adapters/qa/.gitkeep +0 -0
  139. package/packages/agents/src/adapters/qa/QaAdapter.d.ts +0 -11
  140. package/packages/agents/src/adapters/qa/QaAdapter.d.ts.map +0 -1
  141. package/packages/agents/src/adapters/qa/QaAdapter.js +0 -37
  142. package/packages/agents/src/adapters/qa/QaAdapter.ts +0 -42
  143. package/packages/agents/src/adapters/zhipu/ZhipuApiAdapter.ts +0 -273
  144. package/packages/agents/src/index.d.ts +0 -8
  145. package/packages/agents/src/index.d.ts.map +0 -1
  146. package/packages/agents/src/index.js +0 -7
  147. package/packages/agents/src/index.ts +0 -11
  148. package/packages/agents/tsconfig.json +0 -14
  149. package/packages/cli/CHANGELOG.md +0 -7
  150. package/packages/cli/LICENSE +0 -21
  151. package/packages/cli/README.md +0 -23
  152. package/packages/cli/package.json +0 -61
  153. package/packages/cli/src/__tests__/AgentsCommands.test.ts +0 -137
  154. package/packages/cli/src/__tests__/BacklogCommands.test.ts +0 -40
  155. package/packages/cli/src/__tests__/CodeReviewCommand.test.ts +0 -594
  156. package/packages/cli/src/__tests__/CreateTasksCommand.test.ts +0 -40
  157. package/packages/cli/src/__tests__/DocsCommands.test.ts +0 -41
  158. package/packages/cli/src/__tests__/EstimateCommands.test.ts +0 -54
  159. package/packages/cli/src/__tests__/JobsCommands.behavior.test.ts +0 -311
  160. package/packages/cli/src/__tests__/JobsCommands.test.ts +0 -49
  161. package/packages/cli/src/__tests__/MigrateTasksCommand.test.ts +0 -36
  162. package/packages/cli/src/__tests__/OpenapiCommands.test.ts +0 -34
  163. package/packages/cli/src/__tests__/OrderTasksCommand.test.ts +0 -150
  164. package/packages/cli/src/__tests__/PlanningCommands.test.ts +0 -9
  165. package/packages/cli/src/__tests__/QaTasksCommand.test.ts +0 -58
  166. package/packages/cli/src/__tests__/RefineTasksCommand.test.ts +0 -63
  167. package/packages/cli/src/__tests__/RoutingCommands.test.ts +0 -302
  168. package/packages/cli/src/__tests__/SetWorkspaceCommand.test.ts +0 -18
  169. package/packages/cli/src/__tests__/TaskShowCommands.test.ts +0 -130
  170. package/packages/cli/src/__tests__/TelemetryCommands.test.ts +0 -35
  171. package/packages/cli/src/__tests__/TestAgentCommand.test.ts +0 -41
  172. package/packages/cli/src/__tests__/UpdateCommands.test.ts +0 -292
  173. package/packages/cli/src/__tests__/WorkOnTasksCommand.test.ts +0 -42
  174. package/packages/cli/src/bin/.gitkeep +0 -0
  175. package/packages/cli/src/bin/McodaEntrypoint.ts +0 -180
  176. package/packages/cli/src/commands/agents/.gitkeep +0 -0
  177. package/packages/cli/src/commands/agents/AgentsCommands.ts +0 -374
  178. package/packages/cli/src/commands/agents/GatewayAgentCommand.ts +0 -621
  179. package/packages/cli/src/commands/agents/TestAgentCommand.ts +0 -63
  180. package/packages/cli/src/commands/backlog/.gitkeep +0 -0
  181. package/packages/cli/src/commands/backlog/BacklogCommands.ts +0 -286
  182. package/packages/cli/src/commands/backlog/OrderTasksCommand.ts +0 -237
  183. package/packages/cli/src/commands/backlog/TaskShowCommands.ts +0 -289
  184. package/packages/cli/src/commands/docs/.gitkeep +0 -0
  185. package/packages/cli/src/commands/docs/DocsCommands.ts +0 -413
  186. package/packages/cli/src/commands/estimate/EstimateCommands.ts +0 -290
  187. package/packages/cli/src/commands/jobs/.gitkeep +0 -0
  188. package/packages/cli/src/commands/jobs/JobsCommands.ts +0 -595
  189. package/packages/cli/src/commands/openapi/OpenapiCommands.ts +0 -167
  190. package/packages/cli/src/commands/planning/.gitkeep +0 -0
  191. package/packages/cli/src/commands/planning/CreateTasksCommand.ts +0 -149
  192. package/packages/cli/src/commands/planning/MigrateTasksCommand.ts +0 -105
  193. package/packages/cli/src/commands/planning/PlanningCommands.ts +0 -1
  194. package/packages/cli/src/commands/planning/QaTasksCommand.ts +0 -320
  195. package/packages/cli/src/commands/planning/RefineTasksCommand.ts +0 -408
  196. package/packages/cli/src/commands/review/CodeReviewCommand.ts +0 -262
  197. package/packages/cli/src/commands/routing/.gitkeep +0 -0
  198. package/packages/cli/src/commands/routing/RoutingCommands.ts +0 -554
  199. package/packages/cli/src/commands/telemetry/.gitkeep +0 -0
  200. package/packages/cli/src/commands/telemetry/TelemetryCommands.ts +0 -348
  201. package/packages/cli/src/commands/update/.gitkeep +0 -0
  202. package/packages/cli/src/commands/update/UpdateCommands.ts +0 -301
  203. package/packages/cli/src/commands/work/WorkOnTasksCommand.ts +0 -264
  204. package/packages/cli/src/commands/workspace/SetWorkspaceCommand.ts +0 -132
  205. package/packages/cli/test/packaging_guardrails.test.js +0 -75
  206. package/packages/cli/tsconfig.json +0 -20
  207. package/packages/core/CHANGELOG.md +0 -7
  208. package/packages/core/LICENSE +0 -21
  209. package/packages/core/README.md +0 -9
  210. package/packages/core/package.json +0 -45
  211. package/packages/core/src/__tests__/SmokeClasses.test.ts +0 -32
  212. package/packages/core/src/api/AgentsApi.ts +0 -219
  213. package/packages/core/src/api/QaTasksApi.ts +0 -38
  214. package/packages/core/src/api/TasksApi.ts +0 -35
  215. package/packages/core/src/api/__tests__/AgentsApi.test.ts +0 -203
  216. package/packages/core/src/api/__tests__/QaTasksApi.test.ts +0 -51
  217. package/packages/core/src/api/__tests__/TasksApi.test.ts +0 -56
  218. package/packages/core/src/config/.gitkeep +0 -0
  219. package/packages/core/src/config/ConfigService.ts +0 -1
  220. package/packages/core/src/domain/dependencies/.gitkeep +0 -0
  221. package/packages/core/src/domain/dependencies/Dependency.ts +0 -1
  222. package/packages/core/src/domain/epics/.gitkeep +0 -0
  223. package/packages/core/src/domain/epics/Epic.ts +0 -1
  224. package/packages/core/src/domain/projects/.gitkeep +0 -0
  225. package/packages/core/src/domain/projects/Project.ts +0 -1
  226. package/packages/core/src/domain/tasks/.gitkeep +0 -0
  227. package/packages/core/src/domain/tasks/Task.ts +0 -1
  228. package/packages/core/src/domain/userStories/.gitkeep +0 -0
  229. package/packages/core/src/domain/userStories/UserStory.ts +0 -1
  230. package/packages/core/src/index.ts +0 -27
  231. package/packages/core/src/prompts/.gitkeep +0 -0
  232. package/packages/core/src/prompts/PdrPrompts.ts +0 -23
  233. package/packages/core/src/prompts/PromptLoader.ts +0 -1
  234. package/packages/core/src/prompts/SdsPrompts.ts +0 -47
  235. package/packages/core/src/services/agents/.gitkeep +0 -0
  236. package/packages/core/src/services/agents/AgentManagementService.ts +0 -1
  237. package/packages/core/src/services/agents/GatewayAgentService.ts +0 -956
  238. package/packages/core/src/services/agents/RoutingService.ts +0 -461
  239. package/packages/core/src/services/agents/__tests__/GatewayAgentService.test.ts +0 -72
  240. package/packages/core/src/services/agents/__tests__/RoutingService.test.ts +0 -267
  241. package/packages/core/src/services/agents/generated/RoutingApiClient.ts +0 -89
  242. package/packages/core/src/services/backlog/.gitkeep +0 -0
  243. package/packages/core/src/services/backlog/BacklogService.ts +0 -580
  244. package/packages/core/src/services/backlog/TaskOrderingService.ts +0 -868
  245. package/packages/core/src/services/backlog/__tests__/BacklogService.test.ts +0 -219
  246. package/packages/core/src/services/backlog/__tests__/TaskOrderingService.test.ts +0 -268
  247. package/packages/core/src/services/docs/.gitkeep +0 -0
  248. package/packages/core/src/services/docs/DocsService.ts +0 -1913
  249. package/packages/core/src/services/docs/__tests__/DocsService.test.ts +0 -350
  250. package/packages/core/src/services/estimate/EstimateService.ts +0 -111
  251. package/packages/core/src/services/estimate/VelocityService.ts +0 -272
  252. package/packages/core/src/services/estimate/__tests__/VelocityAndEstimate.test.ts +0 -209
  253. package/packages/core/src/services/estimate/types.ts +0 -41
  254. package/packages/core/src/services/execution/.gitkeep +0 -0
  255. package/packages/core/src/services/execution/ExecutionService.ts +0 -1
  256. package/packages/core/src/services/execution/QaFollowupService.ts +0 -289
  257. package/packages/core/src/services/execution/QaProfileService.ts +0 -160
  258. package/packages/core/src/services/execution/QaTasksService.ts +0 -1303
  259. package/packages/core/src/services/execution/TaskSelectionService.ts +0 -362
  260. package/packages/core/src/services/execution/TaskStateService.ts +0 -64
  261. package/packages/core/src/services/execution/WorkOnTasksService.ts +0 -2023
  262. package/packages/core/src/services/execution/__tests__/QaFollowupService.test.ts +0 -58
  263. package/packages/core/src/services/execution/__tests__/QaProfileService.test.ts +0 -49
  264. package/packages/core/src/services/execution/__tests__/QaTasksService.test.ts +0 -157
  265. package/packages/core/src/services/execution/__tests__/TaskSelectionService.test.ts +0 -179
  266. package/packages/core/src/services/execution/__tests__/TaskStateService.test.ts +0 -51
  267. package/packages/core/src/services/execution/__tests__/WorkOnTasksService.test.ts +0 -285
  268. package/packages/core/src/services/jobs/.gitkeep +0 -0
  269. package/packages/core/src/services/jobs/JobInsightsService.ts +0 -355
  270. package/packages/core/src/services/jobs/JobResumeService.ts +0 -119
  271. package/packages/core/src/services/jobs/JobService.ts +0 -648
  272. package/packages/core/src/services/jobs/JobsApiClient.ts +0 -113
  273. package/packages/core/src/services/jobs/__tests__/JobInsightsService.test.ts +0 -17
  274. package/packages/core/src/services/jobs/__tests__/JobResumeService.test.ts +0 -45
  275. package/packages/core/src/services/jobs/__tests__/JobService.test.ts +0 -44
  276. package/packages/core/src/services/openapi/OpenApiService.ts +0 -558
  277. package/packages/core/src/services/openapi/__tests__/OpenApiService.test.ts +0 -57
  278. package/packages/core/src/services/planning/.gitkeep +0 -0
  279. package/packages/core/src/services/planning/CreateTasksService.ts +0 -1280
  280. package/packages/core/src/services/planning/KeyHelpers.ts +0 -80
  281. package/packages/core/src/services/planning/PlanningService.ts +0 -1
  282. package/packages/core/src/services/planning/RefineTasksService.ts +0 -1552
  283. package/packages/core/src/services/planning/__tests__/CreateTasksService.test.ts +0 -288
  284. package/packages/core/src/services/planning/__tests__/KeyHelpers.test.ts +0 -16
  285. package/packages/core/src/services/planning/__tests__/RefineTasksService.test.ts +0 -172
  286. package/packages/core/src/services/review/CodeReviewService.ts +0 -1386
  287. package/packages/core/src/services/review/__tests__/CodeReviewService.test.ts +0 -89
  288. package/packages/core/src/services/system/SystemUpdateService.ts +0 -177
  289. package/packages/core/src/services/system/__tests__/SystemUpdateService.test.ts +0 -40
  290. package/packages/core/src/services/tasks/TaskApiResolver.ts +0 -37
  291. package/packages/core/src/services/tasks/TaskDetailService.ts +0 -494
  292. package/packages/core/src/services/tasks/__tests__/TaskApiResolver.test.ts +0 -41
  293. package/packages/core/src/services/tasks/__tests__/TaskDetailService.test.ts +0 -178
  294. package/packages/core/src/services/telemetry/.gitkeep +0 -0
  295. package/packages/core/src/services/telemetry/TelemetryService.ts +0 -515
  296. package/packages/core/src/services/telemetry/__tests__/TelemetryService.test.ts +0 -160
  297. package/packages/core/src/workspace/.gitkeep +0 -0
  298. package/packages/core/src/workspace/WorkspaceManager.ts +0 -234
  299. package/packages/core/tsconfig.json +0 -20
  300. package/packages/db/CHANGELOG.md +0 -7
  301. package/packages/db/LICENSE +0 -21
  302. package/packages/db/README.md +0 -9
  303. package/packages/db/package.json +0 -42
  304. package/packages/db/src/__tests__/GlobalRepository.test.ts +0 -109
  305. package/packages/db/src/__tests__/SchemaAlignment.test.ts +0 -80
  306. package/packages/db/src/__tests__/WorkspaceRepository.test.ts +0 -19
  307. package/packages/db/src/index.d.ts +0 -6
  308. package/packages/db/src/index.d.ts.map +0 -1
  309. package/packages/db/src/index.js +0 -5
  310. package/packages/db/src/index.ts +0 -6
  311. package/packages/db/src/migrations/global/.gitkeep +0 -0
  312. package/packages/db/src/migrations/global/GlobalMigrations.d.ts +0 -9
  313. package/packages/db/src/migrations/global/GlobalMigrations.d.ts.map +0 -1
  314. package/packages/db/src/migrations/global/GlobalMigrations.js +0 -68
  315. package/packages/db/src/migrations/global/GlobalMigrations.ts +0 -336
  316. package/packages/db/src/migrations/workspace/.gitkeep +0 -0
  317. package/packages/db/src/migrations/workspace/WorkspaceMigrations.d.ts +0 -9
  318. package/packages/db/src/migrations/workspace/WorkspaceMigrations.d.ts.map +0 -1
  319. package/packages/db/src/migrations/workspace/WorkspaceMigrations.js +0 -251
  320. package/packages/db/src/migrations/workspace/WorkspaceMigrations.ts +0 -248
  321. package/packages/db/src/repositories/global/.gitkeep +0 -0
  322. package/packages/db/src/repositories/global/GlobalRepository.d.ts +0 -30
  323. package/packages/db/src/repositories/global/GlobalRepository.d.ts.map +0 -1
  324. package/packages/db/src/repositories/global/GlobalRepository.js +0 -209
  325. package/packages/db/src/repositories/global/GlobalRepository.ts +0 -492
  326. package/packages/db/src/repositories/workspace/.gitkeep +0 -0
  327. package/packages/db/src/repositories/workspace/WorkspaceRepository.d.ts +0 -282
  328. package/packages/db/src/repositories/workspace/WorkspaceRepository.d.ts.map +0 -1
  329. package/packages/db/src/repositories/workspace/WorkspaceRepository.js +0 -773
  330. package/packages/db/src/repositories/workspace/WorkspaceRepository.ts +0 -1511
  331. package/packages/db/src/sqlite/connection.d.ts +0 -11
  332. package/packages/db/src/sqlite/connection.d.ts.map +0 -1
  333. package/packages/db/src/sqlite/connection.js +0 -31
  334. package/packages/db/src/sqlite/connection.ts +0 -35
  335. package/packages/db/src/sqlite/pragmas.d.ts +0 -5
  336. package/packages/db/src/sqlite/pragmas.d.ts.map +0 -1
  337. package/packages/db/src/sqlite/pragmas.js +0 -6
  338. package/packages/db/src/sqlite/pragmas.ts +0 -10
  339. package/packages/db/tsconfig.json +0 -13
  340. package/packages/generators/package.json +0 -21
  341. package/packages/generators/src/__tests__/Generators.test.ts +0 -19
  342. package/packages/generators/src/index.ts +0 -1
  343. package/packages/generators/src/openapi/generateTypes.ts +0 -1
  344. package/packages/generators/src/openapi/validateSchema.ts +0 -1
  345. package/packages/generators/src/scaffolding/docs/.gitkeep +0 -0
  346. package/packages/generators/src/scaffolding/docs/DocsScaffolder.ts +0 -1
  347. package/packages/generators/src/scaffolding/global/.gitkeep +0 -0
  348. package/packages/generators/src/scaffolding/global/GlobalScaffolder.ts +0 -1
  349. package/packages/generators/src/scaffolding/workspace/.gitkeep +0 -0
  350. package/packages/generators/src/scaffolding/workspace/WorkspaceScaffolder.ts +0 -1
  351. package/packages/generators/tsconfig.json +0 -10
  352. package/packages/integrations/CHANGELOG.md +0 -7
  353. package/packages/integrations/LICENSE +0 -21
  354. package/packages/integrations/README.md +0 -9
  355. package/packages/integrations/package.json +0 -47
  356. package/packages/integrations/src/docdex/.gitkeep +0 -0
  357. package/packages/integrations/src/docdex/DocdexClient.d.ts +0 -50
  358. package/packages/integrations/src/docdex/DocdexClient.d.ts.map +0 -1
  359. package/packages/integrations/src/docdex/DocdexClient.js +0 -216
  360. package/packages/integrations/src/docdex/DocdexClient.ts +0 -261
  361. package/packages/integrations/src/docdex/__tests__/DocdexClient.test.ts +0 -29
  362. package/packages/integrations/src/index.d.ts +0 -2
  363. package/packages/integrations/src/index.d.ts.map +0 -1
  364. package/packages/integrations/src/index.js +0 -4
  365. package/packages/integrations/src/index.ts +0 -5
  366. package/packages/integrations/src/issues/.gitkeep +0 -0
  367. package/packages/integrations/src/issues/IssuesClient.ts +0 -1
  368. package/packages/integrations/src/issues/__tests__/IssuesClient.test.ts +0 -10
  369. package/packages/integrations/src/qa/.gitkeep +0 -0
  370. package/packages/integrations/src/qa/ChromiumQaAdapter.ts +0 -89
  371. package/packages/integrations/src/qa/CliQaAdapter.ts +0 -95
  372. package/packages/integrations/src/qa/MaestroQaAdapter.ts +0 -91
  373. package/packages/integrations/src/qa/QaAdapter.ts +0 -7
  374. package/packages/integrations/src/qa/QaClient.ts +0 -1
  375. package/packages/integrations/src/qa/QaTypes.ts +0 -26
  376. package/packages/integrations/src/qa/__tests__/ChromiumQaAdapter.test.ts +0 -30
  377. package/packages/integrations/src/qa/__tests__/CliQaAdapter.test.ts +0 -33
  378. package/packages/integrations/src/qa/__tests__/MaestroQaAdapter.test.ts +0 -30
  379. package/packages/integrations/src/qa/index.ts +0 -5
  380. package/packages/integrations/src/system/SystemClient.ts +0 -50
  381. package/packages/integrations/src/system/__tests__/SystemClient.test.ts +0 -40
  382. package/packages/integrations/src/telemetry/TelemetryClient.ts +0 -139
  383. package/packages/integrations/src/telemetry/__tests__/TelemetryClient.test.ts +0 -41
  384. package/packages/integrations/src/vcs/.gitkeep +0 -0
  385. package/packages/integrations/src/vcs/VcsClient.ts +0 -211
  386. package/packages/integrations/src/vcs/__tests__/VcsClient.test.ts +0 -26
  387. package/packages/integrations/tsconfig.json +0 -14
  388. package/packages/shared/CHANGELOG.md +0 -7
  389. package/packages/shared/LICENSE +0 -21
  390. package/packages/shared/README.md +0 -9
  391. package/packages/shared/package.json +0 -40
  392. package/packages/shared/src/__tests__/CommandMetadata.test.ts +0 -15
  393. package/packages/shared/src/__tests__/ServiceShells.test.ts +0 -16
  394. package/packages/shared/src/crypto/.gitkeep +0 -0
  395. package/packages/shared/src/crypto/CryptoHelper.d.ts +0 -15
  396. package/packages/shared/src/crypto/CryptoHelper.d.ts.map +0 -1
  397. package/packages/shared/src/crypto/CryptoHelper.js +0 -54
  398. package/packages/shared/src/crypto/CryptoHelper.ts +0 -57
  399. package/packages/shared/src/errors/.gitkeep +0 -0
  400. package/packages/shared/src/errors/ErrorFactory.ts +0 -1
  401. package/packages/shared/src/index.d.ts +0 -6
  402. package/packages/shared/src/index.d.ts.map +0 -1
  403. package/packages/shared/src/index.js +0 -4
  404. package/packages/shared/src/index.ts +0 -35
  405. package/packages/shared/src/logging/.gitkeep +0 -0
  406. package/packages/shared/src/logging/Logger.ts +0 -1
  407. package/packages/shared/src/metadata/CommandMetadata.ts +0 -165
  408. package/packages/shared/src/openapi/.gitkeep +0 -0
  409. package/packages/shared/src/openapi/OpenApiTypes.d.ts +0 -216
  410. package/packages/shared/src/openapi/OpenApiTypes.d.ts.map +0 -1
  411. package/packages/shared/src/openapi/OpenApiTypes.js +0 -1
  412. package/packages/shared/src/openapi/OpenApiTypes.ts +0 -312
  413. package/packages/shared/src/paths/.gitkeep +0 -0
  414. package/packages/shared/src/paths/PathHelper.d.ts +0 -12
  415. package/packages/shared/src/paths/PathHelper.d.ts.map +0 -1
  416. package/packages/shared/src/paths/PathHelper.js +0 -24
  417. package/packages/shared/src/paths/PathHelper.ts +0 -29
  418. package/packages/shared/src/qa/QaProfile.ts +0 -14
  419. package/packages/shared/src/utils/.gitkeep +0 -0
  420. package/packages/shared/src/utils/UtilityService.ts +0 -1
  421. package/packages/shared/tsconfig.json +0 -10
  422. package/packages/testing/package.json +0 -26
  423. package/packages/testing/src/__tests__/TestingFakes.test.ts +0 -15
  424. package/packages/testing/src/cli/e2e/.gitkeep +0 -0
  425. package/packages/testing/src/cli/e2e/E2eSuite.ts +0 -1
  426. package/packages/testing/src/fakes/agents/.gitkeep +0 -0
  427. package/packages/testing/src/fakes/agents/FakeAgents.ts +0 -1
  428. package/packages/testing/src/fakes/docdex/.gitkeep +0 -0
  429. package/packages/testing/src/fakes/docdex/FakeDocdexClient.ts +0 -1
  430. package/packages/testing/src/fakes/qa/.gitkeep +0 -0
  431. package/packages/testing/src/fakes/qa/FakeQaClient.ts +0 -1
  432. package/packages/testing/src/fakes/vcs/.gitkeep +0 -0
  433. package/packages/testing/src/fakes/vcs/FakeVcsClient.ts +0 -1
  434. package/packages/testing/src/fixtures/db/.gitkeep +0 -0
  435. package/packages/testing/src/fixtures/db/DbFixtures.ts +0 -1
  436. package/packages/testing/src/fixtures/workspaces/.gitkeep +0 -0
  437. package/packages/testing/src/fixtures/workspaces/WorkspaceFixtures.ts +0 -1
  438. package/packages/testing/src/index.ts +0 -1
  439. package/packages/testing/tsconfig.json +0 -10
  440. package/pnpm-workspace.yaml +0 -2
  441. package/prompts/README.md +0 -5
  442. package/prompts/code-reviewer.md +0 -23
  443. package/prompts/code-writer.md +0 -35
  444. package/prompts/gateway-agent.md +0 -27
  445. package/prompts/qa-agent.md +0 -21
  446. package/release-please-config.json +0 -39
  447. package/scripts/build-all.ts +0 -1
  448. package/scripts/dev.ts +0 -1
  449. package/scripts/install-local-cli.sh +0 -28
  450. package/scripts/pack-npm-tarballs.js +0 -63
  451. package/scripts/release.ts +0 -1
  452. package/scripts/run-node-tests.js +0 -37
  453. package/tests/all.js +0 -127
  454. package/tests/api/openapi_spec.test.js +0 -21
  455. package/tests/artifacts.md +0 -31
  456. package/tests/component/cli_version.test.js +0 -38
  457. package/tests/integration/workspace_resolver.test.js +0 -44
  458. package/tests/unit/crypto_helper.test.js +0 -36
  459. package/tests/unit/path_helper.test.js +0 -20
  460. package/tsconfig.base.json +0 -32
  461. /package/{packages/cli/src/index.ts → dist/index.js} +0 -0
@@ -0,0 +1,313 @@
1
+ import path from "node:path";
2
+ import { JobService, TelemetryService, WorkspaceResolver } from "@mcoda/core";
3
+ const tokensUsage = `mcoda tokens \\
4
+ [--workspace-root <PATH>] \\
5
+ [--project <PROJECT_KEY|ID>] \\
6
+ [--agent <NAME|ID>] \\
7
+ [--command <COMMAND_NAME>] \\
8
+ [--job <JOB_ID>] \\
9
+ [--since <ISO_TIMESTAMP|DURATION>] \\
10
+ [--until <ISO_TIMESTAMP>] \\
11
+ [--group-by <project|agent|command|day|model|job|action>] \\
12
+ [--format <table|json>]`;
13
+ const telemetryUsage = `mcoda telemetry <show|opt-out|opt-in> \\
14
+ [--workspace-root <PATH>] \\
15
+ [--format <table|json>] \\
16
+ [--strict] (opt-out only)`;
17
+ const normalizeGroupBy = (input) => {
18
+ const allowed = new Set(["project", "agent", "command", "day", "model", "job", "action"]);
19
+ const selected = (input ?? []).filter((dim) => allowed.has(dim));
20
+ if (selected.length === 0) {
21
+ return ["project", "command", "agent"];
22
+ }
23
+ return Array.from(new Set(selected));
24
+ };
25
+ export const parseTokensArgs = (argv) => {
26
+ const parsed = {
27
+ groupBy: [],
28
+ format: "table",
29
+ };
30
+ for (let i = 0; i < argv.length; i += 1) {
31
+ const arg = argv[i];
32
+ switch (arg) {
33
+ case "--workspace-root":
34
+ case "--workspace":
35
+ parsed.workspaceRoot = argv[i + 1] ? path.resolve(argv[i + 1]) : undefined;
36
+ i += 1;
37
+ break;
38
+ case "--project":
39
+ parsed.project = argv[i + 1];
40
+ i += 1;
41
+ break;
42
+ case "--agent":
43
+ parsed.agent = argv[i + 1];
44
+ i += 1;
45
+ break;
46
+ case "--command":
47
+ parsed.command = argv[i + 1];
48
+ i += 1;
49
+ break;
50
+ case "--job":
51
+ parsed.job = argv[i + 1];
52
+ i += 1;
53
+ break;
54
+ case "--since":
55
+ parsed.since = argv[i + 1];
56
+ i += 1;
57
+ break;
58
+ case "--until":
59
+ parsed.until = argv[i + 1];
60
+ i += 1;
61
+ break;
62
+ case "--group-by":
63
+ parsed.groupBy = (argv[i + 1] ?? "").split(",").map((v) => v.trim()).filter(Boolean);
64
+ i += 1;
65
+ break;
66
+ case "--format":
67
+ parsed.format = argv[i + 1] === "json" ? "json" : "table";
68
+ i += 1;
69
+ break;
70
+ case "--help":
71
+ case "-h":
72
+ // eslint-disable-next-line no-console
73
+ console.log(tokensUsage);
74
+ process.exit(0);
75
+ break;
76
+ default:
77
+ if (arg.startsWith("--group-by=")) {
78
+ parsed.groupBy = arg
79
+ .split("=")[1]
80
+ .split(",")
81
+ .map((v) => v.trim())
82
+ .filter(Boolean);
83
+ }
84
+ else if (arg.startsWith("--format=")) {
85
+ parsed.format = arg.endsWith("json") ? "json" : "table";
86
+ }
87
+ else if (arg.startsWith("--job=")) {
88
+ parsed.job = arg.split("=")[1];
89
+ }
90
+ break;
91
+ }
92
+ }
93
+ parsed.groupBy = normalizeGroupBy(parsed.groupBy);
94
+ return parsed;
95
+ };
96
+ export const parseTelemetryArgs = (argv) => {
97
+ let subcommand = "show";
98
+ const parsed = {
99
+ subcommand,
100
+ format: "table",
101
+ };
102
+ for (let i = 0; i < argv.length; i += 1) {
103
+ const arg = argv[i];
104
+ if (!arg.startsWith("--") && i === 0) {
105
+ subcommand = arg ?? "show";
106
+ parsed.subcommand = subcommand;
107
+ continue;
108
+ }
109
+ switch (arg) {
110
+ case "--workspace-root":
111
+ case "--workspace":
112
+ parsed.workspaceRoot = argv[i + 1] ? path.resolve(argv[i + 1]) : undefined;
113
+ i += 1;
114
+ break;
115
+ case "--format":
116
+ parsed.format = argv[i + 1] === "json" ? "json" : "table";
117
+ i += 1;
118
+ break;
119
+ case "--strict":
120
+ parsed.strict = true;
121
+ break;
122
+ case "--help":
123
+ case "-h":
124
+ // eslint-disable-next-line no-console
125
+ console.log(telemetryUsage);
126
+ process.exit(0);
127
+ break;
128
+ default:
129
+ if (arg.startsWith("--format=")) {
130
+ parsed.format = arg.endsWith("json") ? "json" : "table";
131
+ }
132
+ break;
133
+ }
134
+ }
135
+ return parsed;
136
+ };
137
+ const pad = (value, width) => value.padEnd(width, " ");
138
+ const formatTable = (headers, rows) => {
139
+ const widths = headers.map((header, idx) => Math.max(header.length, ...rows.map((row) => (row[idx] ?? "").length)));
140
+ const headerLine = headers.map((h, idx) => pad(h, widths[idx])).join(" | ");
141
+ const sepLine = widths.map((w) => "-".repeat(w)).join("-+-");
142
+ const body = rows.map((row) => row.map((cell, idx) => pad(cell ?? "", widths[idx])).join(" | ")).join("\n");
143
+ return [headerLine, sepLine, body].filter(Boolean).join("\n");
144
+ };
145
+ const formatNumber = (value, digits = 0) => {
146
+ if (value === null || value === undefined)
147
+ return "-";
148
+ if (digits > 0)
149
+ return value.toFixed(digits);
150
+ return `${value}`;
151
+ };
152
+ const renderTokensTable = (rows, groupBy) => {
153
+ const dims = new Set(groupBy);
154
+ const headers = [];
155
+ const extractors = [];
156
+ if (dims.has("project")) {
157
+ headers.push("PROJECT");
158
+ extractors.push((row) => row.project_id ?? "-");
159
+ }
160
+ if (dims.has("command")) {
161
+ headers.push("COMMAND");
162
+ extractors.push((row) => row.command_name ?? "-");
163
+ }
164
+ if (dims.has("agent")) {
165
+ headers.push("AGENT");
166
+ extractors.push((row) => row.agent_id ?? "-");
167
+ }
168
+ if (dims.has("model")) {
169
+ headers.push("MODEL");
170
+ extractors.push((row) => row.model_name ?? "-");
171
+ }
172
+ if (dims.has("day")) {
173
+ headers.push("DAY");
174
+ extractors.push((row) => row.day ?? "-");
175
+ }
176
+ if (dims.has("job")) {
177
+ headers.push("JOB");
178
+ extractors.push((row) => row.job_id ?? "-");
179
+ }
180
+ if (dims.has("action")) {
181
+ headers.push("ACTION");
182
+ extractors.push((row) => row.action ?? "-");
183
+ }
184
+ headers.push("CALLS", "TOKENS_IN", "TOKENS_OUT", "TOKENS_TOTAL", "COST");
185
+ extractors.push((row) => `${row.calls}`, (row) => formatNumber(row.tokens_prompt), (row) => formatNumber(row.tokens_completion), (row) => formatNumber(row.tokens_total), (row) => formatNumber(row.cost_estimate, 4));
186
+ const tableRows = rows.map((row) => extractors.map((fn) => fn(row)));
187
+ // eslint-disable-next-line no-console
188
+ console.log(formatTable(headers, tableRows));
189
+ };
190
+ const renderTelemetryConfig = (config) => {
191
+ const rows = [
192
+ ["Local recording", config.localRecording ? "enabled" : "disabled"],
193
+ ["Remote export", config.remoteExport ? "enabled" : "disabled"],
194
+ ["Strict mode", config.strict ? "on" : "off"],
195
+ ["Config path", config.configPath],
196
+ ];
197
+ // eslint-disable-next-line no-console
198
+ console.log(formatTable(["SETTING", "VALUE"], rows));
199
+ };
200
+ export class TelemetryCommands {
201
+ static async runTokens(argv) {
202
+ const parsed = parseTokensArgs(argv);
203
+ const workspace = await WorkspaceResolver.resolveWorkspace({
204
+ cwd: process.cwd(),
205
+ explicitWorkspace: parsed.workspaceRoot,
206
+ });
207
+ const jobService = new JobService(workspace, undefined, { noTelemetry: true });
208
+ const commandRun = await jobService.startCommandRun("tokens", parsed.project);
209
+ const telemetry = await TelemetryService.create(workspace);
210
+ try {
211
+ const config = await telemetry.getConfig();
212
+ const summary = await telemetry.getSummary({
213
+ projectKey: parsed.project,
214
+ agent: parsed.agent,
215
+ command: parsed.command,
216
+ jobId: parsed.job,
217
+ since: parsed.since,
218
+ until: parsed.until,
219
+ groupBy: parsed.groupBy,
220
+ });
221
+ if (!config.localRecording && summary.length === 0) {
222
+ // eslint-disable-next-line no-console
223
+ console.log("Local token tracking is disabled; no data available.");
224
+ return;
225
+ }
226
+ if (summary.length === 0) {
227
+ // eslint-disable-next-line no-console
228
+ console.log("No telemetry data for the selected filters/time window.");
229
+ await jobService.finishCommandRun(commandRun.id, "succeeded");
230
+ return;
231
+ }
232
+ if (parsed.format === "json") {
233
+ // eslint-disable-next-line no-console
234
+ console.log(JSON.stringify(summary, null, 2));
235
+ await jobService.finishCommandRun(commandRun.id, "succeeded");
236
+ return;
237
+ }
238
+ renderTokensTable(summary, parsed.groupBy);
239
+ await jobService.finishCommandRun(commandRun.id, "succeeded");
240
+ }
241
+ catch (error) {
242
+ await jobService.finishCommandRun(commandRun.id, "failed", error.message);
243
+ const message = error.message ?? "Unknown error";
244
+ if (message.includes("workspace DB") || message.includes("workspace")) {
245
+ // eslint-disable-next-line no-console
246
+ console.error("No mcoda workspace/DB found. Run mcoda init or create-tasks in this repo first.");
247
+ }
248
+ else {
249
+ // eslint-disable-next-line no-console
250
+ console.error(`tokens failed: ${message}`);
251
+ }
252
+ process.exitCode = 1;
253
+ }
254
+ finally {
255
+ await jobService.close();
256
+ await telemetry.close();
257
+ }
258
+ }
259
+ static async runTelemetry(argv) {
260
+ const parsed = parseTelemetryArgs(argv);
261
+ const workspace = await WorkspaceResolver.resolveWorkspace({
262
+ cwd: process.cwd(),
263
+ explicitWorkspace: parsed.workspaceRoot,
264
+ });
265
+ const jobService = new JobService(workspace, undefined, { noTelemetry: true });
266
+ const commandRun = await jobService.startCommandRun(`telemetry-${parsed.subcommand}`, undefined);
267
+ const telemetry = await TelemetryService.create(workspace, { allowMissingTelemetry: true });
268
+ try {
269
+ if (parsed.subcommand === "show") {
270
+ const config = await telemetry.getConfig();
271
+ if (parsed.format === "json") {
272
+ // eslint-disable-next-line no-console
273
+ console.log(JSON.stringify(config, null, 2));
274
+ }
275
+ else {
276
+ renderTelemetryConfig(config);
277
+ }
278
+ await jobService.finishCommandRun(commandRun.id, "succeeded");
279
+ return;
280
+ }
281
+ if (parsed.subcommand === "opt-out") {
282
+ const config = await telemetry.optOut(parsed.strict ?? false);
283
+ // eslint-disable-next-line no-console
284
+ console.log(`Telemetry opted out.${config.strict ? " Strict mode enabled; local recording disabled." : " Local recording still enabled."}`);
285
+ await jobService.finishCommandRun(commandRun.id, "succeeded");
286
+ return;
287
+ }
288
+ if (parsed.subcommand === "opt-in") {
289
+ const config = await telemetry.optIn();
290
+ // eslint-disable-next-line no-console
291
+ console.log(`Telemetry opted in. Local recording ${config.localRecording ? "enabled" : "disabled"}, remote export ${config.remoteExport ? "enabled" : "disabled"}.`);
292
+ await jobService.finishCommandRun(commandRun.id, "succeeded");
293
+ }
294
+ }
295
+ catch (error) {
296
+ await jobService.finishCommandRun(commandRun.id, "failed", error.message);
297
+ const message = error.message ?? "Unknown error";
298
+ if (message.includes("workspace DB") || message.includes("workspace")) {
299
+ // eslint-disable-next-line no-console
300
+ console.error("No mcoda workspace/DB found. Run mcoda init or create-tasks in this repo first.");
301
+ }
302
+ else {
303
+ // eslint-disable-next-line no-console
304
+ console.error(`telemetry ${parsed.subcommand} failed: ${message}`);
305
+ }
306
+ process.exitCode = 1;
307
+ }
308
+ finally {
309
+ await jobService.close();
310
+ await telemetry.close();
311
+ }
312
+ }
313
+ }
@@ -0,0 +1,4 @@
1
+ export declare class UpdateCommands {
2
+ static run(argv: string[]): Promise<void>;
3
+ }
4
+ //# sourceMappingURL=UpdateCommands.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UpdateCommands.d.ts","sourceRoot":"","sources":["../../../src/commands/update/UpdateCommands.ts"],"names":[],"mappings":"AA6GA,qBAAa,cAAc;WACZ,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;CA8LhD"}
@@ -0,0 +1,280 @@
1
+ import { createRequire } from "node:module";
2
+ import readline from "node:readline/promises";
3
+ import { stdin as input, stdout as output } from "node:process";
4
+ import { SystemUpdateService } from "@mcoda/core";
5
+ const usage = `mcoda update \\
6
+ [--check] \\
7
+ [--channel <stable|beta|nightly>] \\
8
+ [--version <SEMVER>] \\
9
+ [--force] \\
10
+ [--json] \\
11
+ [--quiet]`;
12
+ const readCliVersion = () => {
13
+ const require = createRequire(import.meta.url);
14
+ try {
15
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
16
+ const pkg = require("../../package.json");
17
+ return pkg.version ?? "0.0.0";
18
+ }
19
+ catch {
20
+ return "0.0.0";
21
+ }
22
+ };
23
+ const parseUpdateArgs = (argv) => {
24
+ const parsed = {
25
+ checkOnly: false,
26
+ force: false,
27
+ json: false,
28
+ quiet: false,
29
+ debug: false,
30
+ };
31
+ for (let i = 0; i < argv.length; i += 1) {
32
+ const arg = argv[i];
33
+ switch (arg) {
34
+ case "--check":
35
+ parsed.checkOnly = true;
36
+ break;
37
+ case "--channel":
38
+ parsed.channel = argv[i + 1];
39
+ i += 1;
40
+ break;
41
+ case "--version":
42
+ parsed.version = argv[i + 1];
43
+ i += 1;
44
+ break;
45
+ case "--force":
46
+ parsed.force = true;
47
+ break;
48
+ case "--json":
49
+ parsed.json = true;
50
+ break;
51
+ case "--quiet":
52
+ parsed.quiet = true;
53
+ break;
54
+ case "--debug":
55
+ parsed.debug = true;
56
+ break;
57
+ case "--workspace":
58
+ case "--workspace-root":
59
+ i += 1;
60
+ break;
61
+ case "--help":
62
+ case "-h":
63
+ // eslint-disable-next-line no-console
64
+ console.log(usage);
65
+ process.exit(0);
66
+ break;
67
+ case "--no-color":
68
+ case "--no-telemetry":
69
+ // ignored global flags
70
+ break;
71
+ default:
72
+ if (arg.startsWith("--channel=")) {
73
+ parsed.channel = arg.split("=")[1];
74
+ }
75
+ else if (arg.startsWith("--version=")) {
76
+ parsed.version = arg.split("=")[1];
77
+ }
78
+ else {
79
+ throw new Error(`Unknown flag: ${arg}\n\n${usage}`);
80
+ }
81
+ break;
82
+ }
83
+ }
84
+ return parsed;
85
+ };
86
+ const isValidVersion = (value) => {
87
+ if (!value)
88
+ return true;
89
+ return /^\d+\.\d+\.\d+(-[\w.-]+)?$/.test(value);
90
+ };
91
+ const confirmInteractive = async (prompt) => {
92
+ const rl = readline.createInterface({ input, output });
93
+ const answer = await rl.question(prompt);
94
+ rl.close();
95
+ return /^y(es)?$/i.test(answer.trim());
96
+ };
97
+ export class UpdateCommands {
98
+ static async run(argv) {
99
+ let runId;
100
+ let service;
101
+ let exitCode = 0;
102
+ let errorSummary = null;
103
+ let result;
104
+ const cliVersion = readCliVersion();
105
+ try {
106
+ const parsed = parseUpdateArgs(argv);
107
+ if (!isValidVersion(parsed.version)) {
108
+ throw new Error(`Invalid --version value (expected semver): ${parsed.version}`);
109
+ }
110
+ service = await SystemUpdateService.create();
111
+ runId = await service.startRun({
112
+ cliVersion,
113
+ channel: parsed.channel ?? "stable",
114
+ versionOverride: parsed.version,
115
+ checkOnly: parsed.checkOnly,
116
+ force: parsed.force,
117
+ });
118
+ const channel = await service.resolveChannel(parsed.channel);
119
+ if (parsed.channel) {
120
+ await service.savePreferredChannel(channel);
121
+ }
122
+ let check;
123
+ try {
124
+ check = await service.checkUpdate(channel);
125
+ }
126
+ catch (error) {
127
+ errorSummary = error instanceof Error ? error.message : String(error);
128
+ exitCode = 4;
129
+ if (!parsed.quiet) {
130
+ // eslint-disable-next-line no-console
131
+ console.error(errorSummary);
132
+ }
133
+ return;
134
+ }
135
+ const targetVersion = parsed.version ?? check.info.latestVersion;
136
+ const npmCommand = `npm install -g mcoda@${targetVersion}`;
137
+ result = { check, targetVersion, npmCommand };
138
+ if (parsed.checkOnly) {
139
+ if (parsed.json) {
140
+ // eslint-disable-next-line no-console
141
+ console.log(JSON.stringify({ ...check.info, channel: check.channel, checkedAt: check.checkedAt }, null, 2));
142
+ }
143
+ else if (!parsed.quiet) {
144
+ const summary = `Current: ${check.info.currentVersion}, Latest (channel=${check.channel}): ${check.info.latestVersion}, updateAvailable: ${check.info.updateAvailable}`;
145
+ // eslint-disable-next-line no-console
146
+ console.log(summary);
147
+ if (check.info.notes) {
148
+ // eslint-disable-next-line no-console
149
+ console.log(check.info.notes);
150
+ }
151
+ }
152
+ return;
153
+ }
154
+ const interactive = Boolean(process.stdin.isTTY && process.stdout.isTTY);
155
+ const requiresForce = !interactive || Boolean(process.env.CI);
156
+ if (requiresForce && !parsed.force) {
157
+ exitCode = 2;
158
+ errorSummary = "Non-interactive update requires --force.";
159
+ if (!parsed.quiet) {
160
+ // eslint-disable-next-line no-console
161
+ console.error(`${errorSummary} Planned npm command: ${npmCommand}`);
162
+ }
163
+ return;
164
+ }
165
+ if (interactive && !parsed.force) {
166
+ const proceed = await confirmInteractive(`Update mcoda from ${check.info.currentVersion} -> ${targetVersion} on channel ${channel}? [y/N] `);
167
+ if (!proceed) {
168
+ exitCode = 2;
169
+ errorSummary = "Update cancelled by user.";
170
+ return;
171
+ }
172
+ }
173
+ if (!check.info.updateAvailable && !parsed.version) {
174
+ if (!parsed.quiet) {
175
+ // eslint-disable-next-line no-console
176
+ console.log("Already up to date.");
177
+ }
178
+ await service.recordApplyState(check.info, channel, check.info.currentVersion);
179
+ return;
180
+ }
181
+ if (!parsed.quiet) {
182
+ // eslint-disable-next-line no-console
183
+ console.log(`Applying update via API (npm command: ${npmCommand})...`);
184
+ }
185
+ let applyResponse;
186
+ let npmFallbackSucceeded = false;
187
+ try {
188
+ applyResponse = await service.applyUpdate(channel);
189
+ result = { ...result, applyResponse };
190
+ }
191
+ catch (error) {
192
+ errorSummary = error instanceof Error ? error.message : String(error);
193
+ try {
194
+ const npmResult = await service.runNpmInstall(targetVersion, { quiet: parsed.quiet });
195
+ result = { ...result, npmResult };
196
+ if (npmResult.code !== 0) {
197
+ exitCode = 6;
198
+ errorSummary = `npm install exited with code ${npmResult.code}`;
199
+ }
200
+ else {
201
+ npmFallbackSucceeded = true;
202
+ exitCode = 0;
203
+ errorSummary = null;
204
+ }
205
+ }
206
+ catch (installError) {
207
+ exitCode = 6;
208
+ errorSummary = installError instanceof Error ? installError.message : String(installError);
209
+ }
210
+ }
211
+ if (applyResponse) {
212
+ if (applyResponse.status === "already_up_to_date") {
213
+ if (!parsed.quiet) {
214
+ // eslint-disable-next-line no-console
215
+ console.log("Already up to date.");
216
+ }
217
+ exitCode = 0;
218
+ }
219
+ else if (applyResponse.status === "started") {
220
+ if (!parsed.quiet) {
221
+ // eslint-disable-next-line no-console
222
+ console.log(`Update started. Logs: ${applyResponse.logFile ?? "n/a"}`);
223
+ }
224
+ }
225
+ else if (applyResponse.status === "completed") {
226
+ if (!parsed.quiet) {
227
+ // eslint-disable-next-line no-console
228
+ console.log(`Update completed. Logs: ${applyResponse.logFile ?? "n/a"}`);
229
+ }
230
+ }
231
+ await service.recordApplyState(check.info, channel, targetVersion);
232
+ if (parsed.json) {
233
+ // eslint-disable-next-line no-console
234
+ console.log(JSON.stringify({
235
+ status: applyResponse.status,
236
+ logFile: applyResponse.logFile,
237
+ targetVersion,
238
+ channel,
239
+ npmCommand,
240
+ }, null, 2));
241
+ }
242
+ }
243
+ else if (npmFallbackSucceeded) {
244
+ // npm fallback succeeded
245
+ await service.recordApplyState(check.info, channel, targetVersion);
246
+ if (parsed.json) {
247
+ // eslint-disable-next-line no-console
248
+ console.log(JSON.stringify({ status: "completed", targetVersion, channel, npmCommand }, null, 2));
249
+ }
250
+ }
251
+ else if (exitCode === 4 && !parsed.quiet) {
252
+ // eslint-disable-next-line no-console
253
+ console.error(`Update apply failed; run manually: ${npmCommand}`);
254
+ }
255
+ }
256
+ catch (error) {
257
+ const message = error instanceof Error ? error.message : String(error);
258
+ // eslint-disable-next-line no-console
259
+ console.error(message);
260
+ exitCode = exitCode || 1;
261
+ errorSummary = message;
262
+ }
263
+ finally {
264
+ if (service && runId) {
265
+ await service.finishRun(runId, {
266
+ status: exitCode === 0 ? "succeeded" : "failed",
267
+ exitCode,
268
+ errorSummary,
269
+ result,
270
+ });
271
+ }
272
+ if (service) {
273
+ await service.close();
274
+ }
275
+ if (exitCode) {
276
+ process.exitCode = exitCode;
277
+ }
278
+ }
279
+ }
280
+ }
@@ -0,0 +1,21 @@
1
+ interface ParsedArgs {
2
+ workspaceRoot?: string;
3
+ projectKey?: string;
4
+ epicKey?: string;
5
+ storyKey?: string;
6
+ taskKeys: string[];
7
+ statusFilter: string[];
8
+ limit?: number;
9
+ parallel?: number;
10
+ noCommit: boolean;
11
+ dryRun: boolean;
12
+ agentName?: string;
13
+ agentStream?: boolean;
14
+ json: boolean;
15
+ }
16
+ export declare const parseWorkOnTasksArgs: (argv: string[]) => ParsedArgs;
17
+ export declare class WorkOnTasksCommand {
18
+ static run(argv: string[]): Promise<void>;
19
+ }
20
+ export {};
21
+ //# sourceMappingURL=WorkOnTasksCommand.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WorkOnTasksCommand.d.ts","sourceRoot":"","sources":["../../../src/commands/work/WorkOnTasksCommand.ts"],"names":[],"mappings":"AAGA,UAAU,UAAU;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,IAAI,EAAE,OAAO,CAAC;CACf;AA+BD,eAAO,MAAM,oBAAoB,GAAI,MAAM,MAAM,EAAE,KAAG,UA0HrD,CAAC;AAEF,qBAAa,kBAAkB;WAChB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;CA0FhD"}