@kodus/cli 0.4.7 → 0.4.9

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 (316) hide show
  1. package/README.md +77 -0
  2. package/dist/cli.d.ts.map +1 -1
  3. package/dist/cli.js +2 -1
  4. package/dist/cli.js.map +1 -1
  5. package/dist/commands/config.d.ts +1 -5
  6. package/dist/commands/config.d.ts.map +1 -1
  7. package/dist/commands/config.js +10 -71
  8. package/dist/commands/config.js.map +1 -1
  9. package/dist/commands/hook/install.d.ts +1 -1
  10. package/dist/commands/hook/install.d.ts.map +1 -1
  11. package/dist/commands/hook/uninstall.d.ts +1 -1
  12. package/dist/commands/hook/uninstall.d.ts.map +1 -1
  13. package/dist/commands/memory/disable.d.ts +1 -1
  14. package/dist/commands/memory/disable.d.ts.map +1 -1
  15. package/dist/commands/pr.d.ts +1 -2
  16. package/dist/commands/pr.d.ts.map +1 -1
  17. package/dist/commands/pr.js +1 -243
  18. package/dist/commands/pr.js.map +1 -1
  19. package/dist/commands/review.d.ts +1 -2
  20. package/dist/commands/review.d.ts.map +1 -1
  21. package/dist/commands/review.js +1 -314
  22. package/dist/commands/review.js.map +1 -1
  23. package/dist/commands/status.d.ts.map +1 -1
  24. package/dist/commands/status.js +2 -14
  25. package/dist/commands/status.js.map +1 -1
  26. package/dist/commands/update.d.ts +1 -0
  27. package/dist/commands/update.d.ts.map +1 -1
  28. package/dist/commands/update.js +24 -1
  29. package/dist/commands/update.js.map +1 -1
  30. package/dist/features/pr/command.d.ts +4 -0
  31. package/dist/features/pr/command.d.ts.map +1 -0
  32. package/dist/features/pr/command.js +222 -0
  33. package/dist/features/pr/command.js.map +1 -0
  34. package/dist/features/repo-config/actions.d.ts +33 -0
  35. package/dist/features/repo-config/actions.d.ts.map +1 -0
  36. package/dist/features/repo-config/actions.js +260 -0
  37. package/dist/features/repo-config/actions.js.map +1 -0
  38. package/dist/features/repo-config/command.d.ts +15 -0
  39. package/dist/features/repo-config/command.d.ts.map +1 -0
  40. package/dist/features/repo-config/command.js +135 -0
  41. package/dist/features/repo-config/command.js.map +1 -0
  42. package/dist/features/review/command.d.ts +4 -0
  43. package/dist/features/review/command.d.ts.map +1 -0
  44. package/dist/features/review/command.js +248 -0
  45. package/dist/features/review/command.js.map +1 -0
  46. package/dist/features/review/diff.d.ts +23 -0
  47. package/dist/features/review/diff.d.ts.map +1 -0
  48. package/dist/features/review/diff.js +47 -0
  49. package/dist/features/review/diff.js.map +1 -0
  50. package/dist/features/review/errors.d.ts +3 -0
  51. package/dist/features/review/errors.d.ts.map +1 -0
  52. package/dist/features/review/errors.js +26 -0
  53. package/dist/features/review/errors.js.map +1 -0
  54. package/dist/features/review/no-changes.d.ts +6 -0
  55. package/dist/features/review/no-changes.d.ts.map +1 -0
  56. package/dist/features/review/no-changes.js +31 -0
  57. package/dist/features/review/no-changes.js.map +1 -0
  58. package/dist/features/review/options.d.ts +7 -0
  59. package/dist/features/review/options.d.ts.map +1 -0
  60. package/dist/features/review/options.js +18 -0
  61. package/dist/features/review/options.js.map +1 -0
  62. package/dist/features/review/result.d.ts +11 -0
  63. package/dist/features/review/result.d.ts.map +1 -0
  64. package/dist/features/review/result.js +49 -0
  65. package/dist/features/review/result.js.map +1 -0
  66. package/dist/formatters/json.d.ts +1 -1
  67. package/dist/formatters/json.d.ts.map +1 -1
  68. package/dist/formatters/markdown.d.ts +1 -1
  69. package/dist/formatters/markdown.d.ts.map +1 -1
  70. package/dist/formatters/markdown.js.map +1 -1
  71. package/dist/formatters/prompt.d.ts +1 -1
  72. package/dist/formatters/prompt.d.ts.map +1 -1
  73. package/dist/formatters/repo-config.d.ts +7 -0
  74. package/dist/formatters/repo-config.d.ts.map +1 -0
  75. package/dist/formatters/repo-config.js +99 -0
  76. package/dist/formatters/repo-config.js.map +1 -0
  77. package/dist/formatters/terminal.d.ts +1 -1
  78. package/dist/formatters/terminal.d.ts.map +1 -1
  79. package/dist/formatters/terminal.js.map +1 -1
  80. package/dist/index.js +2 -0
  81. package/dist/index.js.map +1 -1
  82. package/dist/services/api/api-core.d.ts +15 -0
  83. package/dist/services/api/api-core.d.ts.map +1 -0
  84. package/dist/services/api/api-core.js +292 -0
  85. package/dist/services/api/api-core.js.map +1 -0
  86. package/dist/services/api/api.interface.d.ts +16 -1
  87. package/dist/services/api/api.interface.d.ts.map +1 -1
  88. package/dist/services/api/api.real.d.ts +12 -20
  89. package/dist/services/api/api.real.d.ts.map +1 -1
  90. package/dist/services/api/api.real.js +8 -545
  91. package/dist/services/api/api.real.js.map +1 -1
  92. package/dist/services/api/auth.api.d.ts +17 -0
  93. package/dist/services/api/auth.api.d.ts.map +1 -0
  94. package/dist/services/api/auth.api.js +73 -0
  95. package/dist/services/api/auth.api.js.map +1 -0
  96. package/dist/services/api/config.api.d.ts +24 -0
  97. package/dist/services/api/config.api.d.ts.map +1 -0
  98. package/dist/services/api/config.api.js +78 -0
  99. package/dist/services/api/config.api.js.map +1 -0
  100. package/dist/services/api/memory.api.d.ts +10 -0
  101. package/dist/services/api/memory.api.d.ts.map +1 -0
  102. package/dist/services/api/memory.api.js +19 -0
  103. package/dist/services/api/memory.api.js.map +1 -0
  104. package/dist/services/api/review.api.d.ts +26 -0
  105. package/dist/services/api/review.api.d.ts.map +1 -0
  106. package/dist/services/api/review.api.js +117 -0
  107. package/dist/services/api/review.api.js.map +1 -0
  108. package/dist/services/api/sessions.api.js +1 -1
  109. package/dist/services/api/sessions.api.js.map +1 -1
  110. package/dist/services/api/trial.api.d.ts +10 -0
  111. package/dist/services/api/trial.api.d.ts.map +1 -0
  112. package/dist/services/api/trial.api.js +11 -0
  113. package/dist/services/api/trial.api.js.map +1 -0
  114. package/dist/services/auth.service.d.ts +1 -1
  115. package/dist/services/auth.service.d.ts.map +1 -1
  116. package/dist/services/auth.service.js +1 -1
  117. package/dist/services/auth.service.js.map +1 -1
  118. package/dist/services/context.service.d.ts +1 -1
  119. package/dist/services/context.service.d.ts.map +1 -1
  120. package/dist/services/fix.service.d.ts +1 -1
  121. package/dist/services/fix.service.d.ts.map +1 -1
  122. package/dist/services/git.service.d.ts +2 -2
  123. package/dist/services/git.service.d.ts.map +1 -1
  124. package/dist/services/git.service.js +25 -172
  125. package/dist/services/git.service.js.map +1 -1
  126. package/dist/services/lifecycle-events.d.ts +49 -0
  127. package/dist/services/lifecycle-events.d.ts.map +1 -0
  128. package/dist/services/lifecycle-events.js +86 -0
  129. package/dist/services/lifecycle-events.js.map +1 -0
  130. package/dist/services/lifecycle-git-context.d.ts +15 -0
  131. package/dist/services/lifecycle-git-context.d.ts.map +1 -0
  132. package/dist/services/lifecycle-git-context.js +23 -0
  133. package/dist/services/lifecycle-git-context.js.map +1 -0
  134. package/dist/services/lifecycle-local-turn-state.d.ts +14 -0
  135. package/dist/services/lifecycle-local-turn-state.d.ts.map +1 -0
  136. package/dist/services/lifecycle-local-turn-state.js +18 -0
  137. package/dist/services/lifecycle-local-turn-state.js.map +1 -0
  138. package/dist/services/lifecycle-transcript.d.ts +25 -0
  139. package/dist/services/lifecycle-transcript.d.ts.map +1 -0
  140. package/dist/services/lifecycle-transcript.js +29 -0
  141. package/dist/services/lifecycle-transcript.js.map +1 -0
  142. package/dist/services/lifecycle-turn-data.d.ts +11 -0
  143. package/dist/services/lifecycle-turn-data.d.ts.map +1 -0
  144. package/dist/services/lifecycle-turn-data.js +23 -0
  145. package/dist/services/lifecycle-turn-data.js.map +1 -0
  146. package/dist/services/lifecycle.service.d.ts.map +1 -1
  147. package/dist/services/lifecycle.service.js +63 -132
  148. package/dist/services/lifecycle.service.js.map +1 -1
  149. package/dist/services/repo-config.service.d.ts.map +1 -1
  150. package/dist/services/repo-config.service.js +2 -8
  151. package/dist/services/repo-config.service.js.map +1 -1
  152. package/dist/services/repo-settings-wizard.service.d.ts +19 -0
  153. package/dist/services/repo-settings-wizard.service.d.ts.map +1 -0
  154. package/dist/services/repo-settings-wizard.service.js +260 -0
  155. package/dist/services/repo-settings-wizard.service.js.map +1 -0
  156. package/dist/services/repo-settings.service.d.ts +20 -0
  157. package/dist/services/repo-settings.service.d.ts.map +1 -0
  158. package/dist/services/repo-settings.service.js +86 -0
  159. package/dist/services/repo-settings.service.js.map +1 -0
  160. package/dist/services/review-auth-fallback.d.ts +7 -0
  161. package/dist/services/review-auth-fallback.d.ts.map +1 -0
  162. package/dist/services/review-auth-fallback.js +25 -0
  163. package/dist/services/review-auth-fallback.js.map +1 -0
  164. package/dist/services/review-config-builder.d.ts +19 -0
  165. package/dist/services/review-config-builder.d.ts.map +1 -0
  166. package/dist/services/review-config-builder.js +17 -0
  167. package/dist/services/review-config-builder.js.map +1 -0
  168. package/dist/services/review-file-filter.d.ts +3 -0
  169. package/dist/services/review-file-filter.d.ts.map +1 -0
  170. package/dist/services/review-file-filter.js +35 -0
  171. package/dist/services/review-file-filter.js.map +1 -0
  172. package/dist/services/review-normalizer.d.ts +6 -0
  173. package/dist/services/review-normalizer.d.ts.map +1 -0
  174. package/dist/services/review-normalizer.js +62 -0
  175. package/dist/services/review-normalizer.js.map +1 -0
  176. package/dist/services/review-verbose.d.ts +28 -0
  177. package/dist/services/review-verbose.d.ts.map +1 -0
  178. package/dist/services/review-verbose.js +52 -0
  179. package/dist/services/review-verbose.js.map +1 -0
  180. package/dist/services/review.service.d.ts +1 -5
  181. package/dist/services/review.service.d.ts.map +1 -1
  182. package/dist/services/review.service.js +55 -182
  183. package/dist/services/review.service.js.map +1 -1
  184. package/dist/types/auth.d.ts +18 -0
  185. package/dist/types/auth.d.ts.map +1 -0
  186. package/dist/types/auth.js +2 -0
  187. package/dist/types/auth.js.map +1 -0
  188. package/dist/types/cli.d.ts +33 -0
  189. package/dist/types/cli.d.ts.map +1 -0
  190. package/dist/types/cli.js +2 -0
  191. package/dist/types/cli.js.map +1 -0
  192. package/dist/types/config.d.ts +47 -0
  193. package/dist/types/config.d.ts.map +1 -0
  194. package/dist/types/config.js +2 -0
  195. package/dist/types/config.js.map +1 -0
  196. package/dist/types/errors.d.ts +8 -0
  197. package/dist/types/errors.d.ts.map +1 -0
  198. package/dist/types/errors.js +15 -0
  199. package/dist/types/errors.js.map +1 -0
  200. package/dist/types/index.d.ts +8 -191
  201. package/dist/types/index.d.ts.map +1 -1
  202. package/dist/types/index.js +1 -14
  203. package/dist/types/index.js.map +1 -1
  204. package/dist/types/repo-config.d.ts +24 -0
  205. package/dist/types/repo-config.d.ts.map +1 -0
  206. package/dist/types/repo-config.js +2 -0
  207. package/dist/types/repo-config.js.map +1 -0
  208. package/dist/types/review.d.ts +112 -0
  209. package/dist/types/review.d.ts.map +1 -0
  210. package/dist/types/review.js +2 -0
  211. package/dist/types/review.js.map +1 -0
  212. package/dist/types/trial.d.ts +10 -0
  213. package/dist/types/trial.d.ts.map +1 -0
  214. package/dist/types/trial.js +2 -0
  215. package/dist/types/trial.js.map +1 -0
  216. package/dist/ui/interactive-formatters.d.ts +6 -0
  217. package/dist/ui/interactive-formatters.d.ts.map +1 -0
  218. package/dist/ui/interactive-formatters.js +61 -0
  219. package/dist/ui/interactive-formatters.js.map +1 -0
  220. package/dist/ui/interactive-helpers.d.ts +12 -0
  221. package/dist/ui/interactive-helpers.d.ts.map +1 -0
  222. package/dist/ui/interactive-helpers.js +51 -0
  223. package/dist/ui/interactive-helpers.js.map +1 -0
  224. package/dist/ui/interactive-renderers.d.ts +6 -0
  225. package/dist/ui/interactive-renderers.d.ts.map +1 -0
  226. package/dist/ui/interactive-renderers.js +82 -0
  227. package/dist/ui/interactive-renderers.js.map +1 -0
  228. package/dist/ui/interactive.d.ts +1 -9
  229. package/dist/ui/interactive.d.ts.map +1 -1
  230. package/dist/ui/interactive.js +11 -187
  231. package/dist/ui/interactive.js.map +1 -1
  232. package/dist/utils/auth-mode.d.ts +7 -0
  233. package/dist/utils/auth-mode.d.ts.map +1 -0
  234. package/dist/utils/auth-mode.js +42 -0
  235. package/dist/utils/auth-mode.js.map +1 -0
  236. package/dist/utils/banner.d.ts.map +1 -1
  237. package/dist/utils/banner.js +2 -14
  238. package/dist/utils/banner.js.map +1 -1
  239. package/dist/utils/command-context.d.ts +1 -1
  240. package/dist/utils/command-context.d.ts.map +1 -1
  241. package/dist/utils/command-errors.d.ts.map +1 -1
  242. package/dist/utils/command-errors.js +25 -1
  243. package/dist/utils/command-errors.js.map +1 -1
  244. package/dist/utils/commander-errors.d.ts +8 -0
  245. package/dist/utils/commander-errors.d.ts.map +1 -0
  246. package/dist/utils/commander-errors.js +79 -0
  247. package/dist/utils/commander-errors.js.map +1 -0
  248. package/dist/utils/commander-setup.d.ts +3 -0
  249. package/dist/utils/commander-setup.d.ts.map +1 -0
  250. package/dist/utils/commander-setup.js +10 -0
  251. package/dist/utils/commander-setup.js.map +1 -0
  252. package/dist/utils/credentials.d.ts +1 -1
  253. package/dist/utils/credentials.d.ts.map +1 -1
  254. package/dist/utils/git-diff.d.ts +5 -0
  255. package/dist/utils/git-diff.d.ts.map +1 -0
  256. package/dist/utils/git-diff.js +14 -0
  257. package/dist/utils/git-diff.js.map +1 -0
  258. package/dist/utils/git-file-reader.d.ts +22 -0
  259. package/dist/utils/git-file-reader.d.ts.map +1 -0
  260. package/dist/utils/git-file-reader.js +45 -0
  261. package/dist/utils/git-file-reader.js.map +1 -0
  262. package/dist/utils/git-file-selection.d.ts +14 -0
  263. package/dist/utils/git-file-selection.d.ts.map +1 -0
  264. package/dist/utils/git-file-selection.js +20 -0
  265. package/dist/utils/git-file-selection.js.map +1 -0
  266. package/dist/utils/git-file-targets.d.ts +4 -0
  267. package/dist/utils/git-file-targets.d.ts.map +1 -0
  268. package/dist/utils/git-file-targets.js +11 -0
  269. package/dist/utils/git-file-targets.js.map +1 -0
  270. package/dist/utils/git-remote.d.ts +7 -0
  271. package/dist/utils/git-remote.d.ts.map +1 -0
  272. package/dist/utils/git-remote.js +60 -0
  273. package/dist/utils/git-remote.js.map +1 -0
  274. package/dist/utils/git-status.d.ts +7 -0
  275. package/dist/utils/git-status.d.ts.map +1 -0
  276. package/dist/utils/git-status.js +36 -0
  277. package/dist/utils/git-status.js.map +1 -0
  278. package/dist/utils/input-validation.d.ts +1 -1
  279. package/dist/utils/input-validation.d.ts.map +1 -1
  280. package/dist/utils/rate-limit.d.ts +1 -1
  281. package/dist/utils/repo-settings-dashboard.d.ts +6 -0
  282. package/dist/utils/repo-settings-dashboard.d.ts.map +1 -0
  283. package/dist/utils/repo-settings-dashboard.js +36 -0
  284. package/dist/utils/repo-settings-dashboard.js.map +1 -0
  285. package/dist/utils/repo-settings-patterns.d.ts +7 -0
  286. package/dist/utils/repo-settings-patterns.d.ts.map +1 -0
  287. package/dist/utils/repo-settings-patterns.js +66 -0
  288. package/dist/utils/repo-settings-patterns.js.map +1 -0
  289. package/dist/utils/repo-settings-schema.d.ts +6 -0
  290. package/dist/utils/repo-settings-schema.d.ts.map +1 -0
  291. package/dist/utils/repo-settings-schema.js +70 -0
  292. package/dist/utils/repo-settings-schema.js.map +1 -0
  293. package/dist/utils/review-output.d.ts +4 -0
  294. package/dist/utils/review-output.d.ts.map +1 -0
  295. package/dist/utils/review-output.js +18 -0
  296. package/dist/utils/review-output.js.map +1 -0
  297. package/dist/utils/skills-sync-manifest.d.ts +5 -0
  298. package/dist/utils/skills-sync-manifest.d.ts.map +1 -0
  299. package/dist/utils/skills-sync-manifest.js +39 -0
  300. package/dist/utils/skills-sync-manifest.js.map +1 -0
  301. package/dist/utils/skills-sync-paths.d.ts +5 -0
  302. package/dist/utils/skills-sync-paths.d.ts.map +1 -0
  303. package/dist/utils/skills-sync-paths.js +60 -0
  304. package/dist/utils/skills-sync-paths.js.map +1 -0
  305. package/dist/utils/skills-sync-targets.d.ts +3 -0
  306. package/dist/utils/skills-sync-targets.d.ts.map +1 -0
  307. package/dist/utils/skills-sync-targets.js +211 -0
  308. package/dist/utils/skills-sync-targets.js.map +1 -0
  309. package/dist/utils/skills-sync.d.ts.map +1 -1
  310. package/dist/utils/skills-sync.js +4 -241
  311. package/dist/utils/skills-sync.js.map +1 -1
  312. package/dist/utils/team-key-auth.d.ts +5 -0
  313. package/dist/utils/team-key-auth.d.ts.map +1 -0
  314. package/dist/utils/team-key-auth.js +14 -0
  315. package/dist/utils/team-key-auth.js.map +1 -0
  316. package/package.json +4 -4
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-core.js","sourceRoot":"","sources":["../../../src/services/api/api-core.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAkB,MAAM,uBAAuB,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC7E,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAE7E;;GAEG;AACH,IAAI,WAAyC,CAAC;AAE9C,KAAK,UAAU,eAAe;IAC1B,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;QAC5B,WAAW,GAAG,MAAM,UAAU,EAAE,CAAC;IACrC,CAAC;IACD,OAAO,WAAW,CAAC;AACvB,CAAC;AAED,2CAA2C;AAC3C,MAAM,UAAU,mBAAmB;IAC/B,WAAW,GAAG,SAAS,CAAC;AAC5B,CAAC;AAED;;GAEG;AACH,SAAS,cAAc,CAAC,SAAiB;IACrC,MAAM,UAAU,GAAG,sBAAsB,CAAC;IAE1C,IAAI,CAAC;QACD,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC;QAE/B,MAAM,WAAW,GACb,GAAG,CAAC,QAAQ,KAAK,WAAW,IAAI,GAAG,CAAC,QAAQ,KAAK,WAAW,CAAC;QACjE,IAAI,GAAG,CAAC,QAAQ,KAAK,QAAQ,IAAI,CAAC,WAAW,EAAE,CAAC;YAC5C,QAAQ,CAAC,iDAAiD,CAAC,CAAC;YAC5D,QAAQ,CAAC,4BAA4B,UAAU,EAAE,CAAC,CAAC;YACnD,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,MAAM,eAAe,GAAG,CAAC,cAAc,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;QACnE,MAAM,UAAU,GAAG,eAAe,CAAC,IAAI,CACnC,CAAC,MAAM,EAAE,EAAE,CACP,GAAG,CAAC,QAAQ,KAAK,MAAM,IAAI,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,MAAM,EAAE,CAAC,CACrE,CAAC;QAEF,IAAI,CAAC,UAAU,IAAI,gBAAgB,EAAE,EAAE,CAAC;YACpC,QAAQ,CAAC,wCAAwC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;QACrE,CAAC;QAED,OAAO,SAAS,CAAC;IACrB,CAAC;IAAC,MAAM,CAAC;QACL,QAAQ,CAAC,yBAAyB,EAAE,SAAS,CAAC,CAAC;QAC/C,QAAQ,CAAC,4BAA4B,UAAU,EAAE,CAAC,CAAC;QACnD,OAAO,IAAI,CAAC;IAChB,CAAC;AACL,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB;IACnC,MAAM,UAAU,GAAG,sBAAsB,CAAC;IAE1C,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;QAC5B,OAAO,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,UAAU,CAAC;IACnE,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,eAAe,EAAE,CAAC;IACvC,IAAI,MAAM,EAAE,MAAM,EAAE,CAAC;QACjB,OAAO,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,UAAU,CAAC;IACvD,CAAC;IAED,OAAO,UAAU,CAAC;AACtB,CAAC;AAED,MAAM,kBAAkB,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAE1C;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,0BAA0B;IAG5C,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;IACjD,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC;IAEzD,IAAI,QAAQ,IAAI,YAAY,EAAE,CAAC;QAC3B,OAAO;YACH,qBAAqB,EAAE,QAAQ;YAC/B,yBAAyB,EAAE,YAAY;SAC1C,CAAC;IACN,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,eAAe,EAAE,CAAC;IACvC,IAAI,MAAM,EAAE,gBAAgB,IAAI,MAAM,EAAE,oBAAoB,EAAE,CAAC;QAC3D,OAAO;YACH,qBAAqB,EAAE,MAAM,CAAC,gBAAgB;YAC9C,yBAAyB,EAAE,MAAM,CAAC,oBAAoB;SACzD,CAAC;IACN,CAAC;IAED,OAAO,EAAE,CAAC;AACd,CAAC;AAYD,SAAS,yBAAyB,CAC9B,UAAkB,EAClB,QAAgB;IAEhB,MAAM,YAAY,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC;IAExD,IAAI,UAAU,KAAK,GAAG,EAAE,CAAC;QACrB,OAAO,sCAAsC,YAAY,IAAI,CAAC;IAClE,CAAC;IAED,IAAI,UAAU,KAAK,GAAG,EAAE,CAAC;QACrB,IAAI,YAAY,CAAC,UAAU,CAAC,0BAA0B,CAAC,EAAE,CAAC;YACtD,OAAO,6FAA6F,CAAC;QACzG,CAAC;QACD,IAAI,YAAY,KAAK,4BAA4B,EAAE,CAAC;YAChD,OAAO,qHAAqH,CAAC;QACjI,CAAC;QACD,OAAO,6EAA6E,CAAC;IACzF,CAAC;IAED,IAAI,UAAU,KAAK,GAAG,EAAE,CAAC;QACrB,OAAO,yCAAyC,YAAY,IAAI,CAAC;IACrE,CAAC;IAED,IAAI,UAAU,KAAK,GAAG,EAAE,CAAC;QACrB,OAAO,iCAAiC,YAAY,IAAI,CAAC;IAC7D,CAAC;IAED,IAAI,UAAU,KAAK,GAAG,EAAE,CAAC;QACrB,OAAO,4CAA4C,YAAY,IAAI,CAAC;IACxE,CAAC;IAED,IAAI,UAAU,KAAK,GAAG,EAAE,CAAC;QACrB,OAAO,8CAA8C,CAAC;IAC1D,CAAC;IAED,IAAI,UAAU,IAAI,GAAG,EAAE,CAAC;QACpB,OAAO,uDAAuD,CAAC;IACnE,CAAC;IAED,OAAO,8BAA8B,UAAU,EAAE,CAAC;AACtD,CAAC;AAED,SAAS,wBAAwB,CAC7B,UAAkB,EAClB,QAAgB,EAChB,SAA0B;IAE1B,IAAI,SAAS,CAAC,IAAI,KAAK,sBAAsB,EAAE,CAAC;QAC5C,MAAM,KAAK,GAAG,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC;QACvC,MAAM,aAAa,GACf,SAAS,CAAC,OAAO,EAAE,OAAO,IAAI,SAAS,CAAC,OAAO,EAAE,aAAa,CAAC;QACnE,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,aAAa,KAAK,QAAQ,EAAE,CAAC;YACjE,OAAO,yBAAyB,aAAa,IAAI,KAAK,gDAAgD,CAAC;QAC3G,CAAC;QACD,OAAO,yFAAyF,CAAC;IACrG,CAAC;IAED,MAAM,eAAe,GAAG,yBAAyB,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IACxE,IAAI,CAAC,SAAS,CAAC,OAAO,IAAI,OAAO,SAAS,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;QAC9D,OAAO,eAAe,CAAC;IAC3B,CAAC;IAED,MAAM,YAAY,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC;IACxD,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;IACzC,MAAM,WAAW,GAAG,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAElD,IACI,UAAU,KAAK,GAAG;QAClB,YAAY,CAAC,UAAU,CAAC,2BAA2B,CAAC;QACpD,YAAY,CAAC,QAAQ,CAAC,WAAW,CAAC;QAClC,OAAO,KAAK,cAAc,YAAY,EAAE,EAC1C,CAAC;QACC,OAAO,yJAAyJ,CAAC;IACrK,CAAC;IAED,IACI,UAAU,KAAK,GAAG;QAClB,YAAY,CAAC,UAAU,CAAC,0BAA0B,CAAC,EACrD,CAAC;QACC,IAAI,CAAC,OAAO,IAAI,WAAW,EAAE,CAAC;YAC1B,OAAO,eAAe,CAAC;QAC3B,CAAC;QAED,OAAO,2CAA2C,OAAO,EAAE,CAAC;IAChE,CAAC;IAED,IACI,UAAU,KAAK,GAAG;QAClB,UAAU,KAAK,GAAG;QAClB,UAAU,IAAI,GAAG,EACnB,CAAC;QACC,OAAO,eAAe,CAAC;IAC3B,CAAC;IAED,IAAI,UAAU,KAAK,GAAG,EAAE,CAAC;QACrB,OAAO,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;IAC/D,CAAC;IAED,OAAO,OAAO,CAAC;AACnB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,OAAO,CACzB,QAAgB,EAChB,UAAuB,EAAE;IAEzB,MAAM,OAAO,GAAG,MAAM,iBAAiB,EAAE,CAAC;IAC1C,MAAM,GAAG,GAAG,GAAG,OAAO,GAAG,QAAQ,EAAE,CAAC;IACpC,IAAI,cAAsE,CAAC;IAE3E,IAAI,gBAAgB,EAAE,EAAE,CAAC;QACrB,QAAQ,CAAC,SAAS,OAAO,CAAC,MAAM,IAAI,KAAK,IAAI,GAAG,EAAE,CAAC,CAAC;IACxD,CAAC;IAED,IAAI,CAAC;QACD,cAAc,GAAG,MAAM,iBAAiB,EAAE,CAAC;IAC/C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,IAAI,gBAAgB,EAAE,EAAE,CAAC;YACrB,QAAQ,CAAC,oCAAoC,EAAE,KAAK,CAAC,CAAC;QAC1D,CAAC;IACL,CAAC;IAED,MAAM,SAAS,GAAG,MAAM,0BAA0B,EAAE,CAAC;IACrD,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,kBAAkB,CAAC,CAAC;IAEzE,IAAI,QAAkB,CAAC;IACvB,IAAI,CAAC;QACD,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YACxB,GAAG,OAAO;YACV,MAAM,EAAE,UAAU,CAAC,MAAM;YACzB,OAAO,EAAE;gBACL,cAAc,EAAE,kBAAkB;gBAClC,GAAG,SAAS;gBACZ,GAAG,CAAC,cAAc,EAAE,QAAQ;oBACxB,CAAC,CAAC,EAAE,mBAAmB,EAAE,cAAc,CAAC,QAAQ,EAAE;oBAClD,CAAC,CAAC,EAAE,CAAC;gBACT,GAAG,CAAC,cAAc,EAAE,WAAW;oBAC3B,CAAC,CAAC,EAAE,sBAAsB,EAAE,cAAc,CAAC,WAAW,EAAE;oBACxD,CAAC,CAAC,EAAE,CAAC;gBACT,GAAG,OAAO,CAAC,OAAO;aACrB;SACJ,CAAC,CAAC;IACP,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,YAAY,CAAC,OAAO,CAAC,CAAC;QACtB,IAAI,KAAK,YAAY,YAAY,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;YAC/D,MAAM,IAAI,QAAQ,CACd,GAAG,EACH,2EAA2E,CAC9E,CAAC;QACN,CAAC;QACD,MAAM,KAAK,CAAC;IAChB,CAAC;IAED,YAAY,CAAC,OAAO,CAAC,CAAC;IAEtB,MAAM,mBAAmB,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;IACzE,IAAI,mBAAmB,EAAE,CAAC;QACtB,MAAM,iBAAiB,CAAC,mBAAmB,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IACjE,CAAC;IAED,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;IAC/D,MAAM,MAAM,GAAG,WAAW,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC;IAExD,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACf,MAAM,QAAQ,GAAG,MAAM;YACnB,CAAC,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,gBAAgB,EAAE,CAAC,CAAC;YACpE,CAAC,CAAC,EAAE,OAAO,EAAE,8BAA8B,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;QACnE,MAAM,SAAS,GACX,QAAQ;YACR,OAAO,QAAQ,KAAK,QAAQ;YAC5B,MAAM,IAAI,QAAQ;YAClB,QAAQ,CAAC,IAAI;YACb,OAAO,QAAQ,CAAC,IAAI,KAAK,QAAQ;YACjC,CAAC,CAAC,SAAS,IAAI,QAAQ,CAAC;YACxB,CAAC,CAAC,MAAM,IAAI,QAAQ,CAAC;YACjB,CAAC,CAAE,QAAQ,CAAC,IAAwB;YACpC,CAAC,CAAE,QAA4B,CAAC;QACxC,MAAM,YAAY,GAAG,wBAAwB,CACzC,QAAQ,CAAC,MAAM,EACf,QAAQ,EACR,SAAS,CACZ,CAAC;QAEF,IAAI,gBAAgB,EAAE,EAAE,CAAC;YACrB,QAAQ,CAAC,cAAc,EAAE;gBACrB,MAAM,EAAE,QAAQ,CAAC,MAAM;gBACvB,GAAG;gBACH,WAAW;gBACX,SAAS;gBACT,iBAAiB,EAAE,YAAY;aAClC,CAAC,CAAC;QACP,CAAC;QAED,MAAM,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACtD,CAAC;IAED,IAAI,CAAC,MAAM,EAAE,CAAC;QACV,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACnC,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QACvC,QAAQ,CACJ,oCAAoC,WAAW,IAAI,sBAAsB,EAAE,CAC9E,CAAC;QACF,QAAQ,CAAC,cAAc,GAAG,EAAE,CAAC,CAAC;QAC9B,QAAQ,CAAC,2BAA2B,OAAO,KAAK,CAAC,CAAC;QAClD,MAAM,IAAI,QAAQ,CACd,GAAG,EACH,qDAAqD,WAAW,IAAI,MAAM,GAAG,CAChF,CAAC;IACN,CAAC;IAED,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAQ,CAAC;IAE5C,IAAI,gBAAgB,EAAE,EAAE,CAAC;QACrB,QAAQ,CAAC,+BAA+B,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC7D,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YACnC,MAAM,OAAO,GAA4B,EAAE,CAAC;YAC5C,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBAClC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;gBACtB,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;oBAC9C,OAAO,CAAC,GAAG,CAAC,GAAG,YAAY,GAAG,CAAC,MAAM,SAAS,CAAC;gBACnD,CAAC;qBAAM,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;oBAC5B,OAAO,CAAC,GAAG,CAAC,GAAG,WAAW,GAAG,CAAC,MAAM,SAAS,CAAC;gBAClD,CAAC;qBAAM,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;oBACjD,OAAO,CAAC,GAAG,CAAC,GAAG,YAAY,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;gBAC9D,CAAC;qBAAM,CAAC;oBACJ,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;gBACvB,CAAC;YACL,CAAC;YACD,QAAQ,CACJ,yBAAyB,EACzB,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CACnC,CAAC;QACN,CAAC;IACL,CAAC;IAED,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;QACrD,OAAO,IAAI,CAAC,IAAS,CAAC;IAC1B,CAAC;IAED,OAAO,IAAS,CAAC;AACrB,CAAC;AAED,MAAM,gBAAgB,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACtC,MAAM,sBAAsB,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;AAElE,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAClC,QAAgB,EAChB,UAAuB,EAAE;IAEzB,IAAI,SAAkB,CAAC;IAEvB,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,gBAAgB,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,CAAC;QAClE,IAAI,CAAC;YACD,OAAO,MAAM,OAAO,CAAI,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC/C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,SAAS,GAAG,KAAK,CAAC;YAElB,MAAM,aAAa,GAAG,OAAO,IAAI,gBAAgB,CAAC,MAAM,CAAC;YACzD,IAAI,aAAa,EAAE,CAAC;gBAChB,MAAM;YACV,CAAC;YAED,MAAM,WAAW,GACb,CAAC,KAAK,YAAY,QAAQ;gBACtB,sBAAsB,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;gBACjD,CAAC,CAAC,CAAC,KAAK,YAAY,QAAQ,CAAC,IAAI,KAAK,YAAY,KAAK,CAAC,CAAC;YAE7D,IAAI,CAAC,WAAW,EAAE,CAAC;gBACf,MAAM;YACV,CAAC;YAED,IAAI,gBAAgB,EAAE,EAAE,CAAC;gBACrB,QAAQ,CACJ,eAAe,OAAO,GAAG,CAAC,IAAI,gBAAgB,CAAC,MAAM,UAAU,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAC/F,CAAC;YACN,CAAC;YAED,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAC1B,UAAU,CAAC,OAAO,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAC,CACjD,CAAC;QACN,CAAC;IACL,CAAC;IAED,MAAM,SAAS,CAAC;AACpB,CAAC"}
@@ -1,4 +1,9 @@
1
- import type { AuthResponse, ConfigAddRepositoriesResponse, ConfigRepository, ReviewConfig, ReviewResult, PullRequestSuggestionsResponse, BusinessValidationResponse, TrialReviewResult, TrialStatus, UserInfo, MemoryCaptureApiRequest, MemoryCaptureApiResponse } from '../../types/index.js';
1
+ import type { AuthResponse, UserInfo } from '../../types/auth.js';
2
+ import type { CodeReviewParameter, ConfigAddRepositoriesResponse, ConfigRepository, ConfigTeam } from '../../types/config.js';
3
+ import type { MemoryCaptureApiRequest, MemoryCaptureApiResponse } from '../../types/memory.js';
4
+ import type { RepositorySettings } from '../../types/repo-config.js';
5
+ import type { BusinessValidationResponse, PullRequestSuggestionsResponse, ReviewConfig, ReviewResult, TrialReviewResult } from '../../types/review.js';
6
+ import type { TrialStatus } from '../../types/trial.js';
2
7
  import type { SessionApiEvent } from '../../types/session-events.js';
3
8
  export interface IAuthApi {
4
9
  login(email: string, password: string): Promise<AuthResponse>;
@@ -46,7 +51,17 @@ export interface IMemoryApi {
46
51
  export interface IConfigApi {
47
52
  getAvailableRepositories(accessToken: string): Promise<ConfigRepository[]>;
48
53
  getSelectedRepositories(accessToken: string): Promise<ConfigRepository[]>;
54
+ getTeams(accessToken: string): Promise<ConfigTeam[]>;
49
55
  addRepositories(accessToken: string, repositoryIds: string[]): Promise<ConfigAddRepositoriesResponse>;
56
+ getCodeReviewParameter(accessToken: string, teamId: string): Promise<CodeReviewParameter>;
57
+ createOrUpdateCodeReviewParameter(accessToken: string, params: {
58
+ teamId: string;
59
+ repositoryId?: string;
60
+ configValue: Record<string, unknown>;
61
+ }): Promise<CodeReviewParameter>;
62
+ updateCodeReviewParameterRepositories(accessToken: string, teamId: string): Promise<unknown>;
63
+ getRepositorySettings(accessToken: string, repositoryId: string): Promise<RepositorySettings>;
64
+ updateRepositorySettings(accessToken: string, repositoryId: string, settings: RepositorySettings): Promise<RepositorySettings>;
50
65
  }
51
66
  export interface ISessionsApi {
52
67
  sendEvent(event: SessionApiEvent, repoRoot: string): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"api.interface.d.ts","sourceRoot":"","sources":["../../../src/services/api/api.interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACR,YAAY,EACZ,6BAA6B,EAC7B,gBAAgB,EAChB,YAAY,EACZ,YAAY,EACZ,8BAA8B,EAC9B,0BAA0B,EAC1B,iBAAiB,EACjB,WAAW,EACX,QAAQ,EACR,uBAAuB,EACvB,wBAAwB,EAC3B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAErE,MAAM,WAAW,QAAQ;IACrB,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IAC9D,OAAO,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IACrD,MAAM,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3C,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACtD,MAAM,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,IAAI,CAAC,EAAE,QAAQ,CAAA;KAAE,CAAC,CAAC;CAC7E;AAED,MAAM,WAAW,UAAU;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,WAAW,GAAG,aAAa,CAAC;IACrE,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,UAAU;IACvB,OAAO,CACH,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,EACnB,MAAM,CAAC,EAAE,YAAY,GACtB,OAAO,CAAC,YAAY,CAAC,CAAC;IACzB,kBAAkB,CACd,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,EACnB,MAAM,CAAC,EAAE,YAAY,EACrB,OAAO,CAAC,EAAE,UAAU,GACrB,OAAO,CAAC,YAAY,CAAC,CAAC;IACzB,yBAAyB,CACrB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE;QACJ,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,MAAM,CAAC,EAAE,UAAU,CAAC;QACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACrB,GACF,OAAO,CAAC,8BAA8B,CAAC,CAAC;IAC3C,yBAAyB,CACrB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE;QACJ,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,IAAI,CAAC,EAAE,MAAM,CAAC;KACjB,GACF,OAAO,CAAC,0BAA0B,CAAC,CAAC;IACvC,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;CAC/E;AAED,MAAM,WAAW,SAAS;IACtB,SAAS,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;CACxD;AAED,MAAM,WAAW,UAAU;IACvB,aAAa,CACT,OAAO,EAAE,uBAAuB,EAChC,WAAW,EAAE,MAAM,GACpB,OAAO,CAAC,wBAAwB,CAAC,CAAC;CACxC;AAED,MAAM,WAAW,UAAU;IACvB,wBAAwB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC;IAC3E,uBAAuB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC;IAC1E,eAAe,CACX,WAAW,EAAE,MAAM,EACnB,aAAa,EAAE,MAAM,EAAE,GACxB,OAAO,CAAC,6BAA6B,CAAC,CAAC;CAC7C;AAED,MAAM,WAAW,YAAY;IACzB,SAAS,CAAC,KAAK,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACtE;AAED,MAAM,WAAW,SAAS;IACtB,IAAI,EAAE,QAAQ,CAAC;IACf,MAAM,EAAE,UAAU,CAAC;IACnB,MAAM,EAAE,UAAU,CAAC;IACnB,KAAK,EAAE,SAAS,CAAC;IACjB,MAAM,EAAE,UAAU,CAAC;IACnB,QAAQ,EAAE,YAAY,CAAC;CAC1B"}
1
+ {"version":3,"file":"api.interface.d.ts","sourceRoot":"","sources":["../../../src/services/api/api.interface.ts"],"names":[],"mappings":"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"}
@@ -1,25 +1,17 @@
1
- import type { IKodusApi, IAuthApi, IReviewApi, ITrialApi, IMemoryApi, ISessionsApi, IConfigApi } from './api.interface.js';
2
- /** @internal Exported for testing only. */
3
- export declare function _resetConfigCache(): void;
4
- /**
5
- * Returns the API base URL.
6
- * Priority: KODUS_API_URL env var > config.json apiUrl > default
7
- */
8
- export declare function resolveApiBaseUrl(): Promise<string>;
9
- /**
10
- * Returns Cloudflare Access headers when configured.
11
- * Priority: env vars > config.json
12
- *
13
- * Required when the API is behind Cloudflare Access (zero-trust proxy).
14
- */
15
- export declare function getCloudflareAccessHeaders(): Promise<Record<string, string>>;
16
- export declare function request<T>(endpoint: string, options?: RequestInit): Promise<T>;
1
+ import type { IKodusApi, ITrialApi, ISessionsApi } from './api.interface.js';
2
+ import { request, resetApiConfigCache, resolveApiBaseUrl, getCloudflareAccessHeaders } from './api-core.js';
3
+ import { RealConfigApi } from './config.api.js';
4
+ import { RealReviewApi } from './review.api.js';
5
+ import { RealAuthApi } from './auth.api.js';
6
+ import { RealMemoryApi } from './memory.api.js';
7
+ export declare const _resetConfigCache: typeof resetApiConfigCache;
8
+ export { request, resolveApiBaseUrl, getCloudflareAccessHeaders };
17
9
  export declare class RealApi implements IKodusApi {
18
- auth: IAuthApi;
19
- config: IConfigApi;
20
- review: IReviewApi;
10
+ auth: RealAuthApi;
11
+ config: RealConfigApi;
12
+ review: RealReviewApi;
21
13
  trial: ITrialApi;
22
- memory: IMemoryApi;
14
+ memory: RealMemoryApi;
23
15
  sessions: ISessionsApi;
24
16
  }
25
17
  //# sourceMappingURL=api.real.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"api.real.d.ts","sourceRoot":"","sources":["../../../src/services/api/api.real.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EACR,SAAS,EACT,QAAQ,EACR,UAAU,EACV,SAAS,EACT,UAAU,EACV,YAAY,EAEZ,UAAU,EACb,MAAM,oBAAoB,CAAC;AAkB5B,2CAA2C;AAC3C,wBAAgB,iBAAiB,IAAI,IAAI,CAExC;AAqCD;;;GAGG;AACH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,MAAM,CAAC,CAezD;AAID;;;;;GAKG;AACH,wBAAsB,0BAA0B,IAAI,OAAO,CACvD,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CACzB,CAoBA;AAiGD,wBAAsB,OAAO,CAAC,CAAC,EAC3B,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,WAAgB,GAC1B,OAAO,CAAC,CAAC,CAAC,CA6IZ;AAqZD,qBAAa,OAAQ,YAAW,SAAS;IACrC,IAAI,EAAE,QAAQ,CAAqB;IACnC,MAAM,EAAE,UAAU,CAAuB;IACzC,MAAM,EAAE,UAAU,CAAuB;IACzC,KAAK,EAAE,SAAS,CAAsB;IACtC,MAAM,EAAE,UAAU,CAAuB;IACzC,QAAQ,EAAE,YAAY,CAAyB;CAClD"}
1
+ {"version":3,"file":"api.real.d.ts","sourceRoot":"","sources":["../../../src/services/api/api.real.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACR,SAAS,EACT,SAAS,EACT,YAAY,EACf,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACH,OAAO,EACP,mBAAmB,EACnB,iBAAiB,EACjB,0BAA0B,EAC7B,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,eAAO,MAAM,iBAAiB,4BAAsB,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,iBAAiB,EAAE,0BAA0B,EAAE,CAAC;AAElE,qBAAa,OAAQ,YAAW,SAAS;IACrC,IAAI,cAAqB;IACzB,MAAM,gBAAuB;IAC7B,MAAM,gBAAuB;IAC7B,KAAK,EAAE,SAAS,CAAsB;IACtC,MAAM,gBAAuB;IAC7B,QAAQ,EAAE,YAAY,CAAyB;CAClD"}
@@ -1,549 +1,12 @@
1
- import { ApiError } from '../../types/index.js';
2
1
  import { RealSessionsApi } from './sessions.api.js';
3
- import { loadConfig } from '../../utils/config.js';
4
- import { getDeviceIdentity, updateDeviceToken } from '../../utils/device.js';
5
- import { cliDebug, cliError, isCliVerboseMode } from '../../utils/logger.js';
6
- /**
7
- * Cached config loaded once at first request.
8
- */
9
- let _configCache;
10
- async function getCachedConfig() {
11
- if (_configCache === undefined) {
12
- _configCache = await loadConfig();
13
- }
14
- return _configCache;
15
- }
16
- /** @internal Exported for testing only. */
17
- export function _resetConfigCache() {
18
- _configCache = undefined;
19
- }
20
- /**
21
- * Validates a custom API URL. Returns it if valid, or null if invalid.
22
- */
23
- function validateApiUrl(customUrl) {
24
- const defaultUrl = 'https://api.kodus.io';
25
- try {
26
- const url = new URL(customUrl);
27
- const isLocalhost = url.hostname === 'localhost' || url.hostname === '127.0.0.1';
28
- if (url.protocol !== 'https:' && !isLocalhost) {
29
- cliError('Security Error: API URL must use HTTPS protocol');
30
- cliError(`Falling back to default: ${defaultUrl}`);
31
- return null;
32
- }
33
- const standardDomains = ['api.kodus.io', 'localhost', '127.0.0.1'];
34
- const isStandard = standardDomains.some((domain) => url.hostname === domain || url.hostname.endsWith(`.${domain}`));
35
- if (!isStandard && isCliVerboseMode()) {
36
- cliDebug(`Warning: Using non-standard API URL: ${url.hostname}`);
37
- }
38
- return customUrl;
39
- }
40
- catch {
41
- cliError('Invalid API URL format:', customUrl);
42
- cliError(`Falling back to default: ${defaultUrl}`);
43
- return null;
44
- }
45
- }
46
- /**
47
- * Returns the API base URL.
48
- * Priority: KODUS_API_URL env var > config.json apiUrl > default
49
- */
50
- export async function resolveApiBaseUrl() {
51
- const defaultUrl = 'https://api.kodus.io';
52
- // Env var takes priority
53
- if (process.env.KODUS_API_URL) {
54
- return validateApiUrl(process.env.KODUS_API_URL) ?? defaultUrl;
55
- }
56
- // Then config file
57
- const config = await getCachedConfig();
58
- if (config?.apiUrl) {
59
- return validateApiUrl(config.apiUrl) ?? defaultUrl;
60
- }
61
- return defaultUrl;
62
- }
63
- const REQUEST_TIMEOUT_MS = 20 * 60 * 1000; // 20 minutes
64
- /**
65
- * Returns Cloudflare Access headers when configured.
66
- * Priority: env vars > config.json
67
- *
68
- * Required when the API is behind Cloudflare Access (zero-trust proxy).
69
- */
70
- export async function getCloudflareAccessHeaders() {
71
- const clientId = process.env.CF_ACCESS_CLIENT_ID;
72
- const clientSecret = process.env.CF_ACCESS_CLIENT_SECRET;
73
- if (clientId && clientSecret) {
74
- return {
75
- 'CF-Access-Client-Id': clientId,
76
- 'CF-Access-Client-Secret': clientSecret,
77
- };
78
- }
79
- const config = await getCachedConfig();
80
- if (config?.cfAccessClientId && config?.cfAccessClientSecret) {
81
- return {
82
- 'CF-Access-Client-Id': config.cfAccessClientId,
83
- 'CF-Access-Client-Secret': config.cfAccessClientSecret,
84
- };
85
- }
86
- return {};
87
- }
88
- function getDefaultApiErrorMessage(statusCode, endpoint) {
89
- const endpointPath = endpoint.split('?')[0] || endpoint;
90
- if (statusCode === 400) {
91
- return `Invalid request sent to Kodus API (${endpointPath}).`;
92
- }
93
- if (statusCode === 401) {
94
- if (endpointPath === '/pull-requests/suggestions') {
95
- return 'Authentication failed while fetching pull request suggestions. Run: kodus auth login or configure a valid team key.';
96
- }
97
- return 'Authentication failed. Run: kodus auth login or configure a valid team key.';
98
- }
99
- if (statusCode === 403) {
100
- return `Access denied for Kodus API endpoint (${endpointPath}).`;
101
- }
102
- if (statusCode === 404) {
103
- return `Kodus API endpoint not found (${endpointPath}).`;
104
- }
105
- if (statusCode === 422) {
106
- return `Kodus API could not process the request (${endpointPath}).`;
107
- }
108
- if (statusCode === 429) {
109
- return 'Rate limit exceeded. Please try again later.';
110
- }
111
- if (statusCode >= 500) {
112
- return 'Kodus API is currently unavailable. Please try again.';
113
- }
114
- return `Request failed with status ${statusCode}`;
115
- }
116
- function normalizeApiErrorMessage(statusCode, endpoint, errorData) {
117
- if (errorData.code === 'DEVICE_LIMIT_REACHED') {
118
- const limit = errorData.details?.limit;
119
- const activeDevices = errorData.details?.current ?? errorData.details?.activeDevices;
120
- if (typeof limit === 'number' && typeof activeDevices === 'number') {
121
- return `Device limit reached (${activeDevices}/${limit}). Remove an old device or contact your admin.`;
122
- }
123
- return 'Device limit reached for this organization. Remove an old device or contact your admin.';
124
- }
125
- const fallbackMessage = getDefaultApiErrorMessage(statusCode, endpoint);
126
- if (!errorData.message || typeof errorData.message !== 'string') {
127
- return fallbackMessage;
128
- }
129
- // Keep auth/permission/server errors deterministic and always in CLI English.
130
- // 404 is excluded: the backend may return meaningful "not found" details
131
- // (e.g. "Pull request not found") that are more useful than the generic message.
132
- if (statusCode === 401 ||
133
- statusCode === 403 ||
134
- statusCode === 429 ||
135
- statusCode >= 500) {
136
- return fallbackMessage;
137
- }
138
- const trimmed = errorData.message.trim();
139
- if (!trimmed) {
140
- return fallbackMessage;
141
- }
142
- const hasNonAscii = /[^\p{ASCII}]/u.test(trimmed);
143
- if (hasNonAscii) {
144
- return fallbackMessage;
145
- }
146
- return trimmed;
147
- }
148
- export async function request(endpoint, options = {}) {
149
- const baseUrl = await resolveApiBaseUrl();
150
- const url = `${baseUrl}${endpoint}`;
151
- let deviceIdentity;
152
- if (isCliVerboseMode()) {
153
- cliDebug(`[API] ${options.method || 'GET'} ${url}`);
154
- }
155
- try {
156
- deviceIdentity = await getDeviceIdentity();
157
- }
158
- catch (error) {
159
- if (isCliVerboseMode()) {
160
- cliDebug('[API] Unable to resolve device id:', error);
161
- }
162
- }
163
- const cfHeaders = await getCloudflareAccessHeaders();
164
- const controller = new AbortController();
165
- const timeout = setTimeout(() => controller.abort(), REQUEST_TIMEOUT_MS);
166
- let response;
167
- try {
168
- response = await fetch(url, {
169
- ...options,
170
- signal: controller.signal,
171
- headers: {
172
- 'Content-Type': 'application/json',
173
- ...cfHeaders,
174
- ...(deviceIdentity?.deviceId
175
- ? { 'X-Kodus-Device-Id': deviceIdentity.deviceId }
176
- : {}),
177
- ...(deviceIdentity?.deviceToken
178
- ? { 'X-Kodus-Device-Token': deviceIdentity.deviceToken }
179
- : {}),
180
- ...options.headers,
181
- },
182
- });
183
- }
184
- catch (error) {
185
- clearTimeout(timeout);
186
- if (error instanceof DOMException && error.name === 'AbortError') {
187
- throw new ApiError(408, 'Request timed out. The server took too long to respond. Please try again.');
188
- }
189
- throw error;
190
- }
191
- clearTimeout(timeout);
192
- const responseDeviceToken = response.headers.get('x-kodus-device-token');
193
- if (responseDeviceToken) {
194
- await updateDeviceToken(responseDeviceToken).catch(() => { });
195
- }
196
- const contentType = response.headers.get('content-type') || '';
197
- const isJson = contentType.includes('application/json');
198
- if (!response.ok) {
199
- const rawError = isJson
200
- ? await response.json().catch(() => ({ message: 'Request failed' }))
201
- : { message: `Request failed with status ${response.status}` };
202
- // Unwrap API envelope: errors may arrive as { data: { code, message, ... } }
203
- // Only unwrap if the top-level object has no message/code of its own.
204
- const errorData = rawError &&
205
- typeof rawError === 'object' &&
206
- 'data' in rawError &&
207
- rawError.data &&
208
- typeof rawError.data === 'object' &&
209
- !('message' in rawError) &&
210
- !('code' in rawError)
211
- ? rawError.data
212
- : rawError;
213
- const errorMessage = normalizeApiErrorMessage(response.status, endpoint, errorData);
214
- if (isCliVerboseMode()) {
215
- cliDebug('[API] Error:', {
216
- status: response.status,
217
- url,
218
- contentType,
219
- errorData,
220
- normalizedMessage: errorMessage,
221
- });
222
- }
223
- throw new ApiError(response.status, errorMessage);
224
- }
225
- if (!isJson) {
226
- const text = await response.text();
227
- const preview = text.substring(0, 100);
228
- cliError(`[API] Expected JSON but received ${contentType || 'unknown content-type'}`);
229
- cliError(`[API] URL: ${url}`);
230
- cliError(`[API] Response preview: ${preview}...`);
231
- throw new ApiError(500, `API returned invalid response (expected JSON, got ${contentType || 'HTML'})`);
232
- }
233
- const json = (await response.json());
234
- if (isCliVerboseMode()) {
235
- cliDebug('[API] Raw response structure:', Object.keys(json));
236
- if (json && typeof json === 'object') {
237
- // Log key fields without logging full content (could be huge)
238
- const preview = {};
239
- for (const key of Object.keys(json)) {
240
- const val = json[key];
241
- if (typeof val === 'string' && val.length > 100) {
242
- preview[key] = `[string: ${val.length} chars]`;
243
- }
244
- else if (Array.isArray(val)) {
245
- preview[key] = `[array: ${val.length} items]`;
246
- }
247
- else if (typeof val === 'object' && val !== null) {
248
- preview[key] = `[object: ${Object.keys(val).join(', ')}]`;
249
- }
250
- else {
251
- preview[key] = val;
252
- }
253
- }
254
- cliDebug('[API] Response preview:', JSON.stringify(preview, null, 2));
255
- }
256
- }
257
- // API usually returns { data: {...}, statusCode, type }
258
- // Return only .data when present.
259
- if (json && typeof json === 'object' && 'data' in json) {
260
- return json.data;
261
- }
262
- return json;
263
- }
264
- const RETRY_BACKOFF_MS = [1000, 3000];
265
- const RETRYABLE_STATUS_CODES = new Set([429, 500, 502, 503, 504]);
266
- async function requestWithRetry(endpoint, options = {}) {
267
- let lastError;
268
- for (let attempt = 0; attempt <= RETRY_BACKOFF_MS.length; attempt++) {
269
- try {
270
- return await request(endpoint, options);
271
- }
272
- catch (error) {
273
- lastError = error;
274
- const isLastAttempt = attempt >= RETRY_BACKOFF_MS.length;
275
- if (isLastAttempt) {
276
- break;
277
- }
278
- // Only retry on network errors or retryable status codes
279
- const isRetryable = (error instanceof ApiError &&
280
- RETRYABLE_STATUS_CODES.has(error.statusCode)) ||
281
- (!(error instanceof ApiError) && error instanceof Error);
282
- if (!isRetryable) {
283
- break;
284
- }
285
- if (isCliVerboseMode()) {
286
- cliDebug(`[API] Retry ${attempt + 1}/${RETRY_BACKOFF_MS.length} after ${RETRY_BACKOFF_MS[attempt]}ms`);
287
- }
288
- await new Promise((resolve) => setTimeout(resolve, RETRY_BACKOFF_MS[attempt]));
289
- }
290
- }
291
- throw lastError;
292
- }
293
- class RealAuthApi {
294
- async login(email, password) {
295
- const response = await requestWithRetry('/auth/login', {
296
- method: 'POST',
297
- body: JSON.stringify({ email, password }),
298
- });
299
- // Map API response into the CLI auth shape.
300
- return {
301
- accessToken: response.accessToken,
302
- refreshToken: response.refreshToken,
303
- expiresIn: 3600, // Default: 1 hour
304
- user: {
305
- id: 'unknown', // Login response does not include user profile fields.
306
- email,
307
- orgs: [],
308
- },
309
- };
310
- }
311
- async refresh(refreshToken) {
312
- return requestWithRetry('/auth/refresh', {
313
- method: 'POST',
314
- body: JSON.stringify({ refreshToken }),
315
- });
316
- }
317
- async logout(accessToken) {
318
- await requestWithRetry('/auth/logout', {
319
- method: 'POST',
320
- headers: {
321
- Authorization: `Bearer ${accessToken}`,
322
- },
323
- });
324
- }
325
- async generateCIToken(accessToken) {
326
- const response = await requestWithRetry('/auth/ci-token', {
327
- method: 'POST',
328
- headers: {
329
- Authorization: `Bearer ${accessToken}`,
330
- },
331
- });
332
- return response.token;
333
- }
334
- async verify(accessToken) {
335
- // SECURITY NOTE: This performs basic client-side JWT validation without signature verification.
336
- // This is acceptable for a CLI client where:
337
- // 1. The token is securely stored locally and only accessed by the user
338
- // 2. The API validates the token signature on every request
339
- // 3. We only check format and expiration to avoid unnecessary API calls
340
- //
341
- // For production security, all authorization decisions MUST be made by the API
342
- // after validating the token signature.
343
- if (!accessToken || !accessToken.startsWith('eyJ')) {
344
- return { valid: false };
345
- }
346
- try {
347
- // Decode JWT payload (without signature validation)
348
- const parts = accessToken.split('.');
349
- if (parts.length !== 3) {
350
- return { valid: false };
351
- }
352
- const payload = JSON.parse(Buffer.from(parts[1], 'base64').toString());
353
- // Check expiration
354
- if (payload.exp && payload.exp * 1000 < Date.now()) {
355
- return { valid: false };
356
- }
357
- return {
358
- valid: true,
359
- user: {
360
- id: payload.sub || 'unknown',
361
- email: payload.email || 'unknown',
362
- orgs: [],
363
- },
364
- };
365
- }
366
- catch (error) {
367
- if (isCliVerboseMode()) {
368
- cliDebug('Token verification failed:', error);
369
- }
370
- return { valid: false };
371
- }
372
- }
373
- }
374
- class RealReviewApi {
375
- async analyze(diff, accessToken, config) {
376
- const isTeamKey = accessToken.startsWith('kodus_');
377
- if (isCliVerboseMode()) {
378
- cliDebug('[API] analyze() called');
379
- cliDebug(`[API] - diff length: ${diff.length} chars`);
380
- cliDebug(`[API] - isTeamKey: ${isTeamKey}`);
381
- cliDebug(`[API] - config files: ${config?.files?.length ?? 0}`);
382
- }
383
- if (isTeamKey) {
384
- return requestWithRetry('/cli/review', {
385
- method: 'POST',
386
- headers: {
387
- 'X-Team-Key': accessToken,
388
- },
389
- body: JSON.stringify({ diff, config }),
390
- });
391
- }
392
- let teamId;
393
- try {
394
- const payload = JSON.parse(Buffer.from(accessToken.split('.')[1], 'base64').toString());
395
- teamId = payload.organizationId;
396
- }
397
- catch {
398
- // Ignore if cannot decode
399
- }
400
- const endpoint = teamId
401
- ? `/cli/review?teamId=${encodeURIComponent(teamId)}`
402
- : '/cli/review';
403
- return requestWithRetry(endpoint, {
404
- method: 'POST',
405
- headers: {
406
- Authorization: `Bearer ${accessToken}`,
407
- },
408
- body: JSON.stringify({ diff, config }),
409
- });
410
- }
411
- async analyzeWithMetrics(diff, accessToken, config, metrics) {
412
- const isTeamKey = accessToken.startsWith('kodus_');
413
- if (isTeamKey) {
414
- return requestWithRetry('/cli/review', {
415
- method: 'POST',
416
- headers: {
417
- 'X-Team-Key': accessToken,
418
- },
419
- body: JSON.stringify({
420
- diff,
421
- config,
422
- ...metrics,
423
- }),
424
- });
425
- }
426
- return this.analyze(diff, accessToken, config);
427
- }
428
- async getPullRequestSuggestions(accessToken, params) {
429
- const query = new URLSearchParams();
430
- if (params.prUrl) {
431
- query.set('prUrl', params.prUrl);
432
- }
433
- if (params.prNumber !== undefined) {
434
- query.set('prNumber', params.prNumber.toString());
435
- }
436
- if (params.repositoryId) {
437
- query.set('repositoryId', params.repositoryId);
438
- }
439
- if (params.format) {
440
- query.set('format', params.format);
441
- }
442
- if (params.severity) {
443
- query.set('severity', params.severity);
444
- }
445
- if (params.category) {
446
- query.set('category', params.category);
447
- }
448
- const queryString = query.toString();
449
- const endpoint = `/pull-requests/suggestions${queryString ? `?${queryString}` : ''}`;
450
- const isTeamKey = accessToken.startsWith('kodus_');
451
- return requestWithRetry(endpoint, {
452
- headers: {
453
- ...(isTeamKey
454
- ? { 'X-Team-Key': accessToken }
455
- : { Authorization: `Bearer ${accessToken}` }),
456
- },
457
- });
458
- }
459
- async triggerBusinessValidation(accessToken, params) {
460
- const isTeamKey = accessToken.startsWith('kodus_');
461
- const body = {};
462
- if (params.repository) {
463
- body.repository = params.repository;
464
- }
465
- if (params.taskUrl) {
466
- body.taskUrl = params.taskUrl;
467
- }
468
- if (params.taskId) {
469
- body.taskId = params.taskId;
470
- }
471
- if (params.diff) {
472
- body.diff = params.diff;
473
- }
474
- return requestWithRetry('/cli/business-validation', {
475
- method: 'POST',
476
- headers: {
477
- ...(isTeamKey
478
- ? { 'X-Team-Key': accessToken }
479
- : { Authorization: `Bearer ${accessToken}` }),
480
- },
481
- body: JSON.stringify(body),
482
- });
483
- }
484
- async trialAnalyze(diff, fingerprint) {
485
- if (isCliVerboseMode()) {
486
- cliDebug('[API] trialAnalyze() called');
487
- cliDebug(`[API] - diff length: ${diff.length} chars`);
488
- cliDebug(`[API] - fingerprint: ${fingerprint.substring(0, 8)}...`);
489
- }
490
- return requestWithRetry('/cli/trial/review', {
491
- method: 'POST',
492
- body: JSON.stringify({ diff, fingerprint }),
493
- });
494
- }
495
- }
496
- class RealTrialApi {
497
- async getStatus(fingerprint) {
498
- return requestWithRetry(`/cli/trial/status?fingerprint=${fingerprint}`);
499
- }
500
- }
501
- class RealMemoryApi {
502
- async submitCapture(payload, accessToken) {
503
- const isTeamKey = accessToken.startsWith('kodus_');
504
- const headers = isTeamKey
505
- ? { 'X-Team-Key': accessToken }
506
- : { Authorization: `Bearer ${accessToken}` };
507
- return request('/cli/memory/captures', {
508
- method: 'POST',
509
- headers,
510
- body: JSON.stringify(payload),
511
- });
512
- }
513
- }
514
- class RealConfigApi {
515
- async getAvailableRepositories(accessToken) {
516
- return requestWithRetry('/cli/config/repositories/available', {
517
- headers: {
518
- ...(accessToken.startsWith('kodus_')
519
- ? { 'X-Team-Key': accessToken }
520
- : { Authorization: `Bearer ${accessToken}` }),
521
- },
522
- });
523
- }
524
- async getSelectedRepositories(accessToken) {
525
- return requestWithRetry('/cli/config/repositories/selected', {
526
- headers: {
527
- ...(accessToken.startsWith('kodus_')
528
- ? { 'X-Team-Key': accessToken }
529
- : { Authorization: `Bearer ${accessToken}` }),
530
- },
531
- });
532
- }
533
- async addRepositories(accessToken, repositoryIds) {
534
- return requestWithRetry('/cli/config/repositories', {
535
- method: 'POST',
536
- headers: {
537
- ...(accessToken.startsWith('kodus_')
538
- ? { 'X-Team-Key': accessToken }
539
- : { Authorization: `Bearer ${accessToken}` }),
540
- },
541
- body: JSON.stringify({
542
- repositoryIds,
543
- }),
544
- });
545
- }
546
- }
2
+ import { request, resetApiConfigCache, resolveApiBaseUrl, getCloudflareAccessHeaders, } from './api-core.js';
3
+ import { RealConfigApi } from './config.api.js';
4
+ import { RealReviewApi } from './review.api.js';
5
+ import { RealAuthApi } from './auth.api.js';
6
+ import { RealTrialApi } from './trial.api.js';
7
+ import { RealMemoryApi } from './memory.api.js';
8
+ export const _resetConfigCache = resetApiConfigCache;
9
+ export { request, resolveApiBaseUrl, getCloudflareAccessHeaders };
547
10
  export class RealApi {
548
11
  auth = new RealAuthApi();
549
12
  config = new RealConfigApi();