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
package/pack-mcoda.sh DELETED
@@ -1,88 +0,0 @@
1
- #!/usr/bin/env bash
2
- set -euo pipefail
3
-
4
- # Simple packer to build a local-installable mcoda CLI tarball from dist/.
5
- # It synthesizes a minimal package.json, a dispatcher bin, copies dist/, and runs npm pack.
6
-
7
- ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
8
- DIST="${ROOT}/dist"
9
- PACKAGE_DIR="${ROOT}/.mcoda-package"
10
- ARTIFACTS="${ROOT}/artifacts"
11
-
12
- if [[ ! -d "${DIST}/cli" ]]; then
13
- echo "dist/cli not found. Build the CLI first (tsc/esbuild) so dist/ is populated." >&2
14
- exit 1
15
- fi
16
-
17
- VERSION="${1:-}"
18
- if [[ -z "${VERSION}" ]]; then
19
- if git -C "${ROOT}" rev-parse --short HEAD >/dev/null 2>&1; then
20
- VERSION="0.0.0-$(git -C "${ROOT}" rev-parse --short HEAD)"
21
- else
22
- VERSION="0.0.0-local"
23
- fi
24
- fi
25
-
26
- rm -rf "${PACKAGE_DIR}"
27
- mkdir -p "${PACKAGE_DIR}/bin" "${PACKAGE_DIR}/cli" "${ARTIFACTS}"
28
-
29
- # Copy compiled CLI/core into the package payload.
30
- rsync -a "${DIST}/" "${PACKAGE_DIR}/"
31
-
32
- # Discover commands from dist/cli/*.js
33
- mapfile -t COMMANDS < <(cd "${DIST}/cli" && ls *.js 2>/dev/null | sed 's/\.js$//')
34
-
35
- # Build dispatcher bin that routes `mcoda <command>` to dist/cli/<command>.js
36
- cat > "${PACKAGE_DIR}/bin/mcoda" <<'EOF'
37
- #!/usr/bin/env node
38
- import { spawn } from "node:child_process";
39
- import { fileURLToPath } from "node:url";
40
- import path from "node:path";
41
-
42
- const __filename = fileURLToPath(import.meta.url);
43
- const __dirname = path.dirname(__filename);
44
- const commands = new Set(JSON.parse(process.env.MCODA_COMMANDS ?? "[]"));
45
-
46
- const cmd = process.argv[2];
47
- if (!cmd || !commands.has(cmd)) {
48
- console.error(`Usage: mcoda <command>\nAvailable: ${Array.from(commands).join(", ")}`);
49
- process.exit(1);
50
- }
51
-
52
- const target = path.join(__dirname, "..", "cli", `${cmd}.js`);
53
- const child = spawn(process.execPath, [target, ...process.argv.slice(3)], {
54
- stdio: "inherit",
55
- env: process.env,
56
- });
57
- child.on("exit", (code) => process.exit(code ?? 0));
58
- child.on("error", (err) => {
59
- console.error(err);
60
- process.exit(1);
61
- });
62
- EOF
63
- chmod +x "${PACKAGE_DIR}/bin/mcoda"
64
-
65
- # Synthesize package.json with a single dispatcher bin.
66
- cat > "${PACKAGE_DIR}/package.json" <<EOF
67
- {
68
- "name": "mcoda-local",
69
- "version": "${VERSION}",
70
- "private": false,
71
- "type": "module",
72
- "bin": {
73
- "mcoda": "bin/mcoda"
74
- }
75
- }
76
- EOF
77
-
78
- # Inject the command list for the dispatcher (avoids external deps like jq).
79
- export MCODA_COMMANDS
80
- MCODA_COMMANDS="$(node -e 'const cmds = process.argv.slice(1); console.log(JSON.stringify(cmds));' "${COMMANDS[@]}")"
81
-
82
- (
83
- cd "${PACKAGE_DIR}"
84
- npm pack --pack-destination "${ARTIFACTS}"
85
- )
86
-
87
- echo "Packaged mcoda-local@${VERSION} → ${ARTIFACTS}"
88
- echo "Install globally: npm install -g ${ARTIFACTS}/mcoda-local-${VERSION}.tgz"
@@ -1,7 +0,0 @@
1
- # Changelog
2
-
3
- ## Unreleased
4
- - Initial public packaging for @mcoda/agents.
5
-
6
- ## 0.1.2
7
- - Initial release.
@@ -1,21 +0,0 @@
1
- MIT License
2
-
3
- Copyright (c) 2025 bekir dag
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
@@ -1,9 +0,0 @@
1
- # @mcoda/agents
2
-
3
- Agent registry and capability definitions for mcoda.
4
-
5
- ## Usage
6
- This package is primarily an internal dependency of `mcoda`.
7
-
8
- ## License
9
- MIT - see `LICENSE`.
@@ -1,41 +0,0 @@
1
- {
2
- "name": "@mcoda/agents",
3
- "version": "0.1.2",
4
- "description": "Agent registry and capabilities for mcoda.",
5
- "type": "module",
6
- "main": "dist/index.js",
7
- "types": "dist/index.d.ts",
8
- "files": [
9
- "dist",
10
- "!dist/**/__tests__/**",
11
- "!dist/**/*.test.*",
12
- "README.md",
13
- "CHANGELOG.md",
14
- "LICENSE"
15
- ],
16
- "scripts": {
17
- "build": "tsc -p tsconfig.json",
18
- "lint": "echo \"lint not configured\"",
19
- "test": "pnpm run build && node ../../scripts/run-node-tests.js dist"
20
- },
21
- "engines": {
22
- "node": ">=20"
23
- },
24
- "repository": {
25
- "type": "git",
26
- "url": "git+https://github.com/bekirdag/mcoda.git"
27
- },
28
- "bugs": {
29
- "url": "https://github.com/bekirdag/mcoda/issues"
30
- },
31
- "homepage": "https://github.com/bekirdag/mcoda#readme",
32
- "license": "MIT",
33
- "author": "bekir dag",
34
- "publishConfig": {
35
- "access": "public"
36
- },
37
- "dependencies": {
38
- "@mcoda/shared": "workspace:*",
39
- "@mcoda/db": "workspace:*"
40
- }
41
- }
File without changes
@@ -1,21 +0,0 @@
1
- import { Agent, AgentAuthMetadata, AgentHealth, AgentPromptManifest } from "@mcoda/shared";
2
- import { GlobalRepository } from "@mcoda/db";
3
- import { AgentAdapter, InvocationRequest, InvocationResult } from "../adapters/AdapterTypes.js";
4
- export declare class AgentService {
5
- private repo;
6
- constructor(repo: GlobalRepository);
7
- static create(): Promise<AgentService>;
8
- close(): Promise<void>;
9
- resolveAgent(identifier: string): Promise<Agent>;
10
- getPrompts(agentId: string): Promise<AgentPromptManifest | undefined>;
11
- getCapabilities(agentId: string): Promise<string[]>;
12
- getAuthMetadata(agentId: string): Promise<AgentAuthMetadata>;
13
- private getDecryptedSecret;
14
- private buildAdapterConfig;
15
- private resolveAdapterType;
16
- getAdapter(agent: Agent): Promise<AgentAdapter>;
17
- healthCheck(agentId: string): Promise<AgentHealth>;
18
- invoke(agentId: string, request: InvocationRequest): Promise<InvocationResult>;
19
- invokeStream(agentId: string, request: InvocationRequest): Promise<AsyncGenerator<InvocationResult>>;
20
- }
21
- //# sourceMappingURL=AgentService.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AgentService.d.ts","sourceRoot":"","sources":["AgentService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACzG,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAM7C,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAUhG,qBAAa,YAAY;IACX,OAAO,CAAC,IAAI;gBAAJ,IAAI,EAAE,gBAAgB;WAE7B,MAAM,IAAI,OAAO,CAAC,YAAY,CAAC;IAKtC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAItB,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;IAUhD,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,GAAG,SAAS,CAAC;IAIrE,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAInD,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;YAIpD,kBAAkB;YAMlB,kBAAkB;IA2BhC,OAAO,CAAC,kBAAkB;IAuBpB,UAAU,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,YAAY,CAAC;IAuB/C,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAQlD,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAS9E,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC;CAQ3G"}
@@ -1,141 +0,0 @@
1
- import { CryptoHelper } from "@mcoda/shared";
2
- import { GlobalRepository } from "@mcoda/db";
3
- import { CodexAdapter } from "../adapters/codex/CodexAdapter.js";
4
- import { GeminiAdapter } from "../adapters/gemini/GeminiAdapter.js";
5
- import { LocalAdapter } from "../adapters/local/LocalAdapter.js";
6
- import { OpenAiAdapter } from "../adapters/openai/OpenAiAdapter.js";
7
- import { QaAdapter } from "../adapters/qa/QaAdapter.js";
8
- const CLI_BASED_ADAPTERS = new Set(["codex-cli", "gemini-cli"]);
9
- const LOCAL_ADAPTERS = new Set(["local-model"]);
10
- const DEFAULT_JOB_PROMPT = "You are an mcoda agent that follows workspace runbooks and responds with actionable, concise output.";
11
- const DEFAULT_CHARACTER_PROMPT = "Write clearly, avoid hallucinations, cite assumptions, and prioritize risk mitigation for the user.";
12
- export class AgentService {
13
- constructor(repo) {
14
- this.repo = repo;
15
- }
16
- static async create() {
17
- const repo = await GlobalRepository.create();
18
- return new AgentService(repo);
19
- }
20
- async close() {
21
- await this.repo.close();
22
- }
23
- async resolveAgent(identifier) {
24
- const byId = await this.repo.getAgentById(identifier);
25
- if (byId)
26
- return byId;
27
- const bySlug = await this.repo.getAgentBySlug(identifier);
28
- if (!bySlug) {
29
- throw new Error(`Agent ${identifier} not found`);
30
- }
31
- return bySlug;
32
- }
33
- async getPrompts(agentId) {
34
- return this.repo.getAgentPrompts(agentId);
35
- }
36
- async getCapabilities(agentId) {
37
- return this.repo.getAgentCapabilities(agentId);
38
- }
39
- async getAuthMetadata(agentId) {
40
- return this.repo.getAgentAuthMetadata(agentId);
41
- }
42
- async getDecryptedSecret(agentId) {
43
- const secret = await this.repo.getAgentAuthSecret(agentId);
44
- if (!secret?.encryptedSecret)
45
- return undefined;
46
- return CryptoHelper.decryptSecret(secret.encryptedSecret);
47
- }
48
- async buildAdapterConfig(agent) {
49
- const [capabilities, prompts, authMetadata] = await Promise.all([
50
- this.getCapabilities(agent.id),
51
- this.getPrompts(agent.id),
52
- this.getAuthMetadata(agent.id),
53
- ]);
54
- const secret = await this.getDecryptedSecret(agent.id);
55
- const mergedPrompts = {
56
- agentId: agent.id,
57
- jobPrompt: prompts?.jobPrompt ?? DEFAULT_JOB_PROMPT,
58
- characterPrompt: prompts?.characterPrompt ?? DEFAULT_CHARACTER_PROMPT,
59
- commandPrompts: prompts?.commandPrompts,
60
- jobPath: prompts?.jobPath,
61
- characterPath: prompts?.characterPath,
62
- };
63
- return {
64
- agent,
65
- capabilities,
66
- model: agent.defaultModel,
67
- apiKey: secret,
68
- prompts: mergedPrompts,
69
- authMetadata,
70
- };
71
- }
72
- resolveAdapterType(agent, apiKey) {
73
- const hasSecret = Boolean(apiKey);
74
- const config = agent.config;
75
- const cliAdapter = config?.cliAdapter;
76
- const localAdapter = config?.localAdapter;
77
- let adapterType = agent.adapter;
78
- if (adapterType.endsWith("-api") && !hasSecret) {
79
- if (adapterType === "codex-api") {
80
- adapterType = "codex-cli";
81
- }
82
- else if (adapterType === "gemini-api") {
83
- adapterType = "gemini-cli";
84
- }
85
- else if (cliAdapter && CLI_BASED_ADAPTERS.has(cliAdapter)) {
86
- adapterType = cliAdapter;
87
- }
88
- else if (localAdapter) {
89
- adapterType = localAdapter;
90
- }
91
- else {
92
- throw new Error(`AUTH_REQUIRED: API credentials missing for adapter ${adapterType}`);
93
- }
94
- }
95
- return adapterType;
96
- }
97
- async getAdapter(agent) {
98
- const config = await this.buildAdapterConfig(agent);
99
- const adapterType = this.resolveAdapterType(agent, config.apiKey);
100
- const configWithAdapter = { ...config, adapter: adapterType };
101
- if (adapterType === "openai-api") {
102
- return new OpenAiAdapter(configWithAdapter);
103
- }
104
- if (adapterType === "codex-cli") {
105
- return new CodexAdapter(configWithAdapter);
106
- }
107
- if (adapterType === "gemini-cli") {
108
- return new GeminiAdapter(configWithAdapter);
109
- }
110
- if (adapterType === "local-model" || LOCAL_ADAPTERS.has(adapterType)) {
111
- return new LocalAdapter(configWithAdapter);
112
- }
113
- if (adapterType === "qa-cli") {
114
- return new QaAdapter(configWithAdapter);
115
- }
116
- throw new Error(`Unsupported adapter type: ${adapterType}`);
117
- }
118
- async healthCheck(agentId) {
119
- const agent = await this.resolveAgent(agentId);
120
- const adapter = await this.getAdapter(agent);
121
- const result = await adapter.healthCheck();
122
- await this.repo.setAgentHealth(result);
123
- return result;
124
- }
125
- async invoke(agentId, request) {
126
- const agent = await this.resolveAgent(agentId);
127
- const adapter = await this.getAdapter(agent);
128
- if (!adapter.invoke) {
129
- throw new Error("Adapter does not support invoke");
130
- }
131
- return adapter.invoke(request);
132
- }
133
- async invokeStream(agentId, request) {
134
- const agent = await this.resolveAgent(agentId);
135
- const adapter = await this.getAdapter(agent);
136
- if (!adapter.invokeStream) {
137
- throw new Error("Adapter does not support streaming");
138
- }
139
- return adapter.invokeStream(request);
140
- }
141
- }
@@ -1,308 +0,0 @@
1
- import { promises as fs } from "node:fs";
2
- import { CryptoHelper, Agent, AgentAuthMetadata, AgentHealth, AgentPromptManifest } from "@mcoda/shared";
3
- import { GlobalRepository } from "@mcoda/db";
4
- import { CodexAdapter } from "../adapters/codex/CodexAdapter.js";
5
- import { GeminiAdapter } from "../adapters/gemini/GeminiAdapter.js";
6
- import { LocalAdapter } from "../adapters/local/LocalAdapter.js";
7
- import { OllamaRemoteAdapter } from "../adapters/ollama/OllamaRemoteAdapter.js";
8
- import { OllamaCliAdapter } from "../adapters/ollama/OllamaCliAdapter.js";
9
- import { OpenAiAdapter } from "../adapters/openai/OpenAiAdapter.js";
10
- import { OpenAiCliAdapter } from "../adapters/openai/OpenAiCliAdapter.js";
11
- import { ZhipuApiAdapter } from "../adapters/zhipu/ZhipuApiAdapter.js";
12
- import { QaAdapter } from "../adapters/qa/QaAdapter.js";
13
- import { AgentAdapter, InvocationRequest, InvocationResult } from "../adapters/AdapterTypes.js";
14
-
15
- const CLI_BASED_ADAPTERS = new Set(["codex-cli", "gemini-cli", "openai-cli", "ollama-cli"]);
16
- const LOCAL_ADAPTERS = new Set(["local-model"]);
17
- const SUPPORTED_ADAPTERS = new Set([
18
- "openai-api",
19
- "codex-cli",
20
- "gemini-cli",
21
- "openai-cli",
22
- "zhipu-api",
23
- "local-model",
24
- "qa-cli",
25
- "ollama-remote",
26
- "ollama-cli",
27
- ]);
28
-
29
- const DEFAULT_JOB_PROMPT =
30
- "You are an mcoda agent that follows workspace runbooks and responds with actionable, concise output.";
31
- const DEFAULT_CHARACTER_PROMPT =
32
- "Write clearly, avoid hallucinations, cite assumptions, and prioritize risk mitigation for the user.";
33
- const HANDOFF_ENV_INLINE = "MCODA_GATEWAY_HANDOFF";
34
- const HANDOFF_ENV_PATH = "MCODA_GATEWAY_HANDOFF_PATH";
35
- const HANDOFF_HEADER = "[Gateway handoff]";
36
- const MAX_HANDOFF_CHARS = 8000;
37
- const IO_ENV = "MCODA_STREAM_IO";
38
- const IO_PROMPT_ENV = "MCODA_STREAM_IO_PROMPT";
39
- const IO_PREFIX = "[agent-io]";
40
-
41
- const isIoEnabled = (): boolean => {
42
- const raw = process.env[IO_ENV];
43
- if (!raw) return false;
44
- const normalized = raw.trim().toLowerCase();
45
- return !["0", "false", "off", "no"].includes(normalized);
46
- };
47
-
48
- const isIoPromptEnabled = (): boolean => {
49
- const raw = process.env[IO_PROMPT_ENV];
50
- if (!raw) return true;
51
- const normalized = raw.trim().toLowerCase();
52
- return !["0", "false", "off", "no"].includes(normalized);
53
- };
54
-
55
- const emitIoLine = (line: string): void => {
56
- const normalized = line.endsWith("\n") ? line : `${line}\n`;
57
- process.stderr.write(normalized);
58
- };
59
-
60
- const renderIoHeader = (agent: Agent, request: InvocationRequest, mode: "invoke" | "stream"): void => {
61
- emitIoLine(`${IO_PREFIX} begin agent=${agent.slug ?? agent.id} adapter=${agent.adapter} model=${agent.defaultModel ?? "default"} mode=${mode}`);
62
- const command = request.metadata?.command ? ` command=${String(request.metadata.command)}` : "";
63
- if (command) emitIoLine(`${IO_PREFIX} meta${command}`);
64
- if (isIoPromptEnabled()) {
65
- emitIoLine(`${IO_PREFIX} input`);
66
- emitIoLine(request.input ?? "");
67
- }
68
- };
69
-
70
- const renderIoChunk = (chunk: InvocationResult): void => {
71
- if (chunk.output) {
72
- emitIoLine(`${IO_PREFIX} output ${chunk.output}`);
73
- }
74
- };
75
-
76
- const renderIoEnd = (): void => {
77
- emitIoLine(`${IO_PREFIX} end`);
78
- };
79
-
80
- const readGatewayHandoff = async (): Promise<string | undefined> => {
81
- const inline = process.env[HANDOFF_ENV_INLINE];
82
- if (inline && inline.trim()) {
83
- return inline.trim().slice(0, MAX_HANDOFF_CHARS);
84
- }
85
- const filePath = process.env[HANDOFF_ENV_PATH];
86
- if (!filePath) return undefined;
87
- try {
88
- const content = await fs.readFile(filePath, "utf8");
89
- const trimmed = content.trim();
90
- if (!trimmed) return undefined;
91
- return trimmed.slice(0, MAX_HANDOFF_CHARS);
92
- } catch {
93
- return undefined;
94
- }
95
- };
96
-
97
- export class AgentService {
98
- constructor(private repo: GlobalRepository) {}
99
-
100
- static async create(): Promise<AgentService> {
101
- const repo = await GlobalRepository.create();
102
- return new AgentService(repo);
103
- }
104
-
105
- async close(): Promise<void> {
106
- await this.repo.close();
107
- }
108
-
109
- async resolveAgent(identifier: string): Promise<Agent> {
110
- const byId = await this.repo.getAgentById(identifier);
111
- if (byId) return byId;
112
- const bySlug = await this.repo.getAgentBySlug(identifier);
113
- if (!bySlug) {
114
- throw new Error(`Agent ${identifier} not found`);
115
- }
116
- return bySlug;
117
- }
118
-
119
- async getPrompts(agentId: string): Promise<AgentPromptManifest | undefined> {
120
- return this.repo.getAgentPrompts(agentId);
121
- }
122
-
123
- async getCapabilities(agentId: string): Promise<string[]> {
124
- return this.repo.getAgentCapabilities(agentId);
125
- }
126
-
127
- async getAuthMetadata(agentId: string): Promise<AgentAuthMetadata> {
128
- return this.repo.getAgentAuthMetadata(agentId);
129
- }
130
-
131
- private async getDecryptedSecret(agentId: string): Promise<string | undefined> {
132
- const secret = await this.repo.getAgentAuthSecret(agentId);
133
- if (!secret?.encryptedSecret) return undefined;
134
- return CryptoHelper.decryptSecret(secret.encryptedSecret);
135
- }
136
-
137
- private async buildAdapterConfig(agent: Agent) {
138
- const [capabilities, prompts, authMetadata] = await Promise.all([
139
- this.getCapabilities(agent.id),
140
- this.getPrompts(agent.id),
141
- this.getAuthMetadata(agent.id),
142
- ]);
143
- const secret = await this.getDecryptedSecret(agent.id);
144
- const adapterConfig = (agent.config ?? {}) as Record<string, unknown>;
145
-
146
- const mergedPrompts: AgentPromptManifest = {
147
- agentId: agent.id,
148
- jobPrompt: prompts?.jobPrompt ?? DEFAULT_JOB_PROMPT,
149
- characterPrompt: prompts?.characterPrompt ?? DEFAULT_CHARACTER_PROMPT,
150
- commandPrompts: prompts?.commandPrompts,
151
- jobPath: prompts?.jobPath,
152
- characterPath: prompts?.characterPath,
153
- };
154
-
155
- return {
156
- ...adapterConfig,
157
- agent,
158
- capabilities,
159
- model: agent.defaultModel,
160
- apiKey: secret,
161
- prompts: mergedPrompts,
162
- authMetadata,
163
- };
164
- }
165
-
166
- private resolveAdapterType(agent: Agent, apiKey?: string): string {
167
- const hasSecret = Boolean(apiKey);
168
- const config = agent.config as any;
169
- const cliAdapter = config?.cliAdapter as string | undefined;
170
- const localAdapter = config?.localAdapter as string | undefined;
171
- let adapterType = agent.adapter;
172
-
173
- if (!SUPPORTED_ADAPTERS.has(adapterType)) {
174
- throw new Error(`Unsupported adapter type: ${adapterType}`);
175
- }
176
-
177
- if (adapterType.endsWith("-api")) {
178
- if (hasSecret) return adapterType;
179
- if (adapterType === "codex-api" || adapterType === "openai-api") {
180
- // Default to the codex CLI when API creds are missing.
181
- adapterType = "codex-cli";
182
- } else if (adapterType === "gemini-api") {
183
- adapterType = "gemini-cli";
184
- } else if (cliAdapter && CLI_BASED_ADAPTERS.has(cliAdapter)) {
185
- adapterType = cliAdapter;
186
- } else if (localAdapter) {
187
- throw new Error(
188
- `AUTH_REQUIRED: API credentials missing for adapter ${adapterType}; configure cliAdapter (${localAdapter}) or provide credentials.`,
189
- );
190
- } else {
191
- throw new Error(`AUTH_REQUIRED: API credentials missing for adapter ${adapterType}`);
192
- }
193
- }
194
- return adapterType;
195
- }
196
-
197
- async getAdapter(agent: Agent): Promise<AgentAdapter> {
198
- const config = await this.buildAdapterConfig(agent);
199
- const adapterType = this.resolveAdapterType(agent, config.apiKey);
200
- const configWithAdapter = { ...config, adapter: adapterType };
201
-
202
- if (adapterType === "openai-api") {
203
- return new OpenAiAdapter(configWithAdapter);
204
- }
205
- if (adapterType === "zhipu-api") {
206
- return new ZhipuApiAdapter(configWithAdapter);
207
- }
208
- if (adapterType === "codex-cli") {
209
- return new CodexAdapter(configWithAdapter);
210
- }
211
- if (adapterType === "gemini-cli") {
212
- return new GeminiAdapter(configWithAdapter);
213
- }
214
- if (adapterType === "openai-cli") {
215
- return new OpenAiCliAdapter(configWithAdapter);
216
- }
217
- if (adapterType === "local-model" || LOCAL_ADAPTERS.has(adapterType)) {
218
- return new LocalAdapter(configWithAdapter);
219
- }
220
- if (adapterType === "ollama-remote") {
221
- return new OllamaRemoteAdapter(configWithAdapter);
222
- }
223
- if (adapterType === "ollama-cli") {
224
- return new OllamaCliAdapter(configWithAdapter);
225
- }
226
- if (adapterType === "gemini-cli") {
227
- return new GeminiAdapter(configWithAdapter);
228
- }
229
- if (adapterType === "qa-cli") {
230
- return new QaAdapter(configWithAdapter);
231
- }
232
- throw new Error(`Unsupported adapter type: ${adapterType}`);
233
- }
234
-
235
- async healthCheck(agentId: string): Promise<AgentHealth> {
236
- const agent = await this.resolveAgent(agentId);
237
- try {
238
- const adapter = await this.getAdapter(agent);
239
- const result = await adapter.healthCheck();
240
- await this.repo.setAgentHealth(result);
241
- return result;
242
- } catch (error) {
243
- const failure: AgentHealth = {
244
- agentId: agent.id,
245
- status: "unreachable",
246
- lastCheckedAt: new Date().toISOString(),
247
- details: { error: (error as Error).message },
248
- };
249
- await this.repo.setAgentHealth(failure);
250
- return failure;
251
- }
252
- }
253
-
254
- async invoke(agentId: string, request: InvocationRequest): Promise<InvocationResult> {
255
- const agent = await this.resolveAgent(agentId);
256
- const adapter = await this.getAdapter(agent);
257
- if (!adapter.invoke) {
258
- throw new Error("Adapter does not support invoke");
259
- }
260
- const enriched = await this.applyGatewayHandoff(request);
261
- const ioEnabled = isIoEnabled();
262
- if (ioEnabled) {
263
- renderIoHeader(agent, enriched, "invoke");
264
- }
265
- const result = await adapter.invoke(enriched);
266
- if (ioEnabled) {
267
- renderIoChunk(result);
268
- renderIoEnd();
269
- }
270
- return result;
271
- }
272
-
273
- async invokeStream(agentId: string, request: InvocationRequest): Promise<AsyncGenerator<InvocationResult>> {
274
- const agent = await this.resolveAgent(agentId);
275
- const adapter = await this.getAdapter(agent);
276
- if (!adapter.invokeStream) {
277
- throw new Error("Adapter does not support streaming");
278
- }
279
- const enriched = await this.applyGatewayHandoff(request);
280
- const ioEnabled = isIoEnabled();
281
- const generator = await adapter.invokeStream(enriched);
282
- async function* wrap(): AsyncGenerator<InvocationResult, void, unknown> {
283
- if (ioEnabled) {
284
- renderIoHeader(agent, enriched, "stream");
285
- }
286
- for await (const chunk of generator) {
287
- if (ioEnabled) {
288
- renderIoChunk(chunk);
289
- }
290
- yield chunk;
291
- }
292
- if (ioEnabled) {
293
- renderIoEnd();
294
- }
295
- }
296
- return wrap();
297
- }
298
-
299
- private async applyGatewayHandoff(request: InvocationRequest): Promise<InvocationRequest> {
300
- if ((request.metadata as any)?.command === "gateway-agent") {
301
- return request;
302
- }
303
- const handoff = await readGatewayHandoff();
304
- if (!handoff) return request;
305
- const suffix = `\n\n${HANDOFF_HEADER}\n${handoff}`;
306
- return { ...request, input: `${request.input ?? ""}${suffix}` };
307
- }
308
- }