byterover-cli 2.6.0 → 3.0.1

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/.env.production +1 -0
  2. package/README.md +240 -14
  3. package/dist/agent/core/domain/knowledge/conflict-detector.d.ts +38 -0
  4. package/dist/agent/core/domain/knowledge/conflict-detector.js +71 -0
  5. package/dist/agent/core/domain/knowledge/conflict-resolver.d.ts +17 -0
  6. package/dist/agent/core/domain/knowledge/conflict-resolver.js +118 -0
  7. package/dist/agent/core/domain/knowledge/utils.d.ts +4 -0
  8. package/dist/agent/core/domain/knowledge/utils.js +6 -0
  9. package/dist/agent/core/interfaces/i-curate-service.d.ts +6 -0
  10. package/dist/agent/infra/tools/implementations/curate-tool.d.ts +67 -34
  11. package/dist/agent/infra/tools/implementations/curate-tool.js +294 -47
  12. package/dist/agent/resources/prompts/system-prompt.yml +15 -8
  13. package/dist/agent/resources/tools/code_exec.txt +3 -0
  14. package/dist/agent/resources/tools/curate.txt +12 -3
  15. package/dist/oclif/commands/connectors/install.d.ts +2 -1
  16. package/dist/oclif/commands/connectors/install.js +38 -3
  17. package/dist/oclif/commands/curate/index.d.ts +18 -0
  18. package/dist/oclif/commands/curate/index.js +78 -1
  19. package/dist/oclif/commands/init.d.ts +12 -0
  20. package/dist/oclif/commands/init.js +75 -0
  21. package/dist/oclif/commands/locations.js +1 -1
  22. package/dist/oclif/commands/providers/connect.d.ts +31 -1
  23. package/dist/oclif/commands/providers/connect.js +307 -27
  24. package/dist/oclif/commands/pull.d.ts +1 -0
  25. package/dist/oclif/commands/pull.js +7 -0
  26. package/dist/oclif/commands/push.d.ts +1 -0
  27. package/dist/oclif/commands/push.js +8 -0
  28. package/dist/oclif/commands/review/approve.d.ts +17 -0
  29. package/dist/oclif/commands/review/approve.js +37 -0
  30. package/dist/oclif/commands/review/base-review-decision.d.ts +18 -0
  31. package/dist/oclif/commands/review/base-review-decision.js +71 -0
  32. package/dist/oclif/commands/review/pending.d.ts +13 -0
  33. package/dist/oclif/commands/review/pending.js +94 -0
  34. package/dist/oclif/commands/review/reject.d.ts +17 -0
  35. package/dist/oclif/commands/review/reject.js +38 -0
  36. package/dist/oclif/commands/space/list.d.ts +2 -2
  37. package/dist/oclif/commands/space/list.js +13 -35
  38. package/dist/oclif/commands/space/switch.d.ts +2 -7
  39. package/dist/oclif/commands/space/switch.js +13 -56
  40. package/dist/oclif/commands/status.d.ts +1 -0
  41. package/dist/oclif/commands/status.js +11 -1
  42. package/dist/oclif/commands/vc/add.d.ts +7 -0
  43. package/dist/oclif/commands/vc/add.js +29 -0
  44. package/dist/oclif/commands/vc/branch.d.ts +15 -0
  45. package/dist/oclif/commands/vc/branch.js +70 -0
  46. package/dist/oclif/commands/vc/checkout.d.ts +14 -0
  47. package/dist/oclif/commands/vc/checkout.js +47 -0
  48. package/dist/oclif/commands/vc/clone.d.ts +9 -0
  49. package/dist/oclif/commands/vc/clone.js +61 -0
  50. package/dist/oclif/commands/vc/commit.d.ts +10 -0
  51. package/dist/oclif/commands/vc/commit.js +32 -0
  52. package/dist/oclif/commands/vc/config.d.ts +10 -0
  53. package/dist/oclif/commands/vc/config.js +30 -0
  54. package/dist/oclif/commands/vc/fetch.d.ts +10 -0
  55. package/dist/oclif/commands/vc/fetch.js +42 -0
  56. package/dist/oclif/commands/vc/index.d.ts +6 -0
  57. package/dist/oclif/commands/vc/index.js +8 -0
  58. package/dist/oclif/commands/vc/init.d.ts +6 -0
  59. package/dist/oclif/commands/vc/init.js +25 -0
  60. package/dist/oclif/commands/vc/log.d.ts +13 -0
  61. package/dist/oclif/commands/vc/log.js +48 -0
  62. package/dist/oclif/commands/vc/merge.d.ts +19 -0
  63. package/dist/oclif/commands/vc/merge.js +130 -0
  64. package/dist/oclif/commands/vc/pull.d.ts +13 -0
  65. package/dist/oclif/commands/vc/pull.js +60 -0
  66. package/dist/oclif/commands/vc/push.d.ts +13 -0
  67. package/dist/oclif/commands/vc/push.js +60 -0
  68. package/dist/oclif/commands/vc/remote/add.d.ts +10 -0
  69. package/dist/oclif/commands/vc/remote/add.js +30 -0
  70. package/dist/oclif/commands/vc/remote/index.d.ts +6 -0
  71. package/dist/oclif/commands/vc/remote/index.js +16 -0
  72. package/dist/oclif/commands/vc/remote/set-url.d.ts +10 -0
  73. package/dist/oclif/commands/vc/remote/set-url.js +30 -0
  74. package/dist/oclif/commands/vc/reset.d.ts +13 -0
  75. package/dist/oclif/commands/vc/reset.js +62 -0
  76. package/dist/oclif/commands/vc/status.d.ts +8 -0
  77. package/dist/oclif/commands/vc/status.js +106 -0
  78. package/dist/oclif/hooks/init/validate-brv-config.d.ts +26 -0
  79. package/dist/oclif/hooks/init/validate-brv-config.js +62 -0
  80. package/dist/oclif/lib/daemon-client.d.ts +2 -0
  81. package/dist/oclif/lib/daemon-client.js +36 -10
  82. package/dist/oclif/lib/prompt-utils.d.ts +43 -0
  83. package/dist/oclif/lib/prompt-utils.js +84 -0
  84. package/dist/oclif/lib/spinner.d.ts +8 -0
  85. package/dist/oclif/lib/spinner.js +23 -0
  86. package/dist/oclif/lib/task-client.d.ts +5 -0
  87. package/dist/oclif/lib/task-client.js +15 -2
  88. package/dist/server/config/environment.d.ts +2 -0
  89. package/dist/server/config/environment.js +2 -0
  90. package/dist/server/constants.d.ts +3 -0
  91. package/dist/server/constants.js +9 -0
  92. package/dist/server/core/domain/entities/auth-token.d.ts +2 -0
  93. package/dist/server/core/domain/entities/auth-token.js +7 -1
  94. package/dist/server/core/domain/entities/curate-log-entry.d.ts +11 -0
  95. package/dist/server/core/domain/entities/space.d.ts +4 -0
  96. package/dist/server/core/domain/entities/space.js +8 -0
  97. package/dist/server/core/domain/entities/team.d.ts +2 -0
  98. package/dist/server/core/domain/entities/team.js +4 -0
  99. package/dist/server/core/domain/errors/git-error.d.ts +6 -0
  100. package/dist/server/core/domain/errors/git-error.js +12 -0
  101. package/dist/server/core/domain/errors/task-error.d.ts +4 -0
  102. package/dist/server/core/domain/errors/task-error.js +8 -0
  103. package/dist/server/core/domain/errors/vc-error.d.ts +5 -0
  104. package/dist/server/core/domain/errors/vc-error.js +8 -0
  105. package/dist/server/core/domain/knowledge/markdown-writer.d.ts +4 -1
  106. package/dist/server/core/domain/knowledge/markdown-writer.js +37 -7
  107. package/dist/server/core/domain/transport/schemas.d.ts +6 -6
  108. package/dist/server/core/interfaces/context-tree/i-context-tree-service.d.ts +11 -0
  109. package/dist/server/core/interfaces/process/i-task-lifecycle-hook.d.ts +6 -0
  110. package/dist/server/core/interfaces/services/i-git-service.d.ts +234 -0
  111. package/dist/server/core/interfaces/services/i-git-service.js +1 -0
  112. package/dist/server/core/interfaces/storage/i-curate-log-store.d.ts +5 -0
  113. package/dist/server/core/interfaces/storage/i-review-backup-store.d.ts +19 -0
  114. package/dist/server/core/interfaces/storage/i-review-backup-store.js +1 -0
  115. package/dist/server/core/interfaces/vc/i-vc-git-config-store.d.ts +8 -0
  116. package/dist/server/core/interfaces/vc/i-vc-git-config-store.js +1 -0
  117. package/dist/server/infra/config/auto-init.d.ts +0 -2
  118. package/dist/server/infra/config/auto-init.js +0 -1
  119. package/dist/server/infra/context-tree/file-context-tree-service.d.ts +2 -0
  120. package/dist/server/infra/context-tree/file-context-tree-service.js +13 -0
  121. package/dist/server/infra/daemon/brv-server.js +23 -3
  122. package/dist/server/infra/git/cogit-url.d.ts +17 -0
  123. package/dist/server/infra/git/cogit-url.js +39 -0
  124. package/dist/server/infra/git/git-http-wrapper.d.ts +20 -0
  125. package/dist/server/infra/git/git-http-wrapper.js +334 -0
  126. package/dist/server/infra/git/isomorphic-git-service.d.ts +78 -0
  127. package/dist/server/infra/git/isomorphic-git-service.js +983 -0
  128. package/dist/server/infra/http/review-api-handler.d.ts +13 -0
  129. package/dist/server/infra/http/review-api-handler.js +286 -0
  130. package/dist/server/infra/http/review-ui.d.ts +7 -0
  131. package/dist/server/infra/http/review-ui.js +606 -0
  132. package/dist/server/infra/mcp/tools/brv-curate-tool.d.ts +2 -2
  133. package/dist/server/infra/process/curate-log-handler.d.ts +18 -2
  134. package/dist/server/infra/process/curate-log-handler.js +50 -13
  135. package/dist/server/infra/process/feature-handlers.js +41 -1
  136. package/dist/server/infra/process/task-router.js +16 -0
  137. package/dist/server/infra/space/http-space-service.js +2 -0
  138. package/dist/server/infra/storage/file-curate-log-store.d.ts +10 -0
  139. package/dist/server/infra/storage/file-curate-log-store.js +35 -0
  140. package/dist/server/infra/storage/file-review-backup-store.d.ts +29 -0
  141. package/dist/server/infra/storage/file-review-backup-store.js +121 -0
  142. package/dist/server/infra/transport/handlers/auth-handler.js +9 -5
  143. package/dist/server/infra/transport/handlers/handler-types.d.ts +9 -0
  144. package/dist/server/infra/transport/handlers/handler-types.js +11 -0
  145. package/dist/server/infra/transport/handlers/index.d.ts +4 -0
  146. package/dist/server/infra/transport/handlers/index.js +2 -0
  147. package/dist/server/infra/transport/handlers/init-handler.d.ts +1 -0
  148. package/dist/server/infra/transport/handlers/init-handler.js +13 -1
  149. package/dist/server/infra/transport/handlers/pull-handler.d.ts +3 -0
  150. package/dist/server/infra/transport/handlers/pull-handler.js +5 -1
  151. package/dist/server/infra/transport/handlers/push-handler.d.ts +20 -0
  152. package/dist/server/infra/transport/handlers/push-handler.js +116 -14
  153. package/dist/server/infra/transport/handlers/reset-handler.d.ts +11 -0
  154. package/dist/server/infra/transport/handlers/reset-handler.js +37 -1
  155. package/dist/server/infra/transport/handlers/review-handler.d.ts +35 -0
  156. package/dist/server/infra/transport/handlers/review-handler.js +162 -0
  157. package/dist/server/infra/transport/handlers/space-handler.d.ts +3 -0
  158. package/dist/server/infra/transport/handlers/space-handler.js +4 -1
  159. package/dist/server/infra/transport/handlers/status-handler.d.ts +5 -0
  160. package/dist/server/infra/transport/handlers/status-handler.js +51 -16
  161. package/dist/server/infra/transport/handlers/vc-handler.d.ts +100 -0
  162. package/dist/server/infra/transport/handlers/vc-handler.js +1050 -0
  163. package/dist/server/infra/transport/socket-io-transport-server.d.ts +7 -0
  164. package/dist/server/infra/transport/socket-io-transport-server.js +12 -1
  165. package/dist/server/infra/transport/transport-connector.d.ts +1 -1
  166. package/dist/server/infra/transport/transport-connector.js +2 -1
  167. package/dist/server/infra/vc/file-vc-git-config-store.d.ts +11 -0
  168. package/dist/server/infra/vc/file-vc-git-config-store.js +43 -0
  169. package/dist/server/templates/skill/SKILL.md +167 -33
  170. package/dist/server/utils/curate-result-parser.d.ts +64 -0
  171. package/dist/server/utils/curate-result-parser.js +8 -0
  172. package/dist/server/utils/gitignore.d.ts +9 -0
  173. package/dist/server/utils/gitignore.js +47 -0
  174. package/dist/shared/transport/events/index.d.ts +6 -0
  175. package/dist/shared/transport/events/index.js +3 -0
  176. package/dist/shared/transport/events/init-events.d.ts +8 -0
  177. package/dist/shared/transport/events/init-events.js +1 -0
  178. package/dist/shared/transport/events/push-events.d.ts +6 -0
  179. package/dist/shared/transport/events/review-events.d.ts +41 -0
  180. package/dist/shared/transport/events/review-events.js +5 -0
  181. package/dist/shared/transport/events/vc-events.d.ts +257 -0
  182. package/dist/shared/transport/events/vc-events.js +67 -0
  183. package/dist/shared/transport/types/dto.d.ts +6 -1
  184. package/dist/tui/app/pages/init-project-page.d.ts +9 -0
  185. package/dist/tui/app/pages/init-project-page.js +54 -0
  186. package/dist/tui/app/pages/protected-routes.js +14 -6
  187. package/dist/tui/components/index.d.ts +0 -2
  188. package/dist/tui/components/index.js +0 -1
  189. package/dist/tui/features/activity/hooks/use-activity-logs.js +7 -1
  190. package/dist/tui/features/commands/definitions/index.js +3 -0
  191. package/dist/tui/features/commands/definitions/space-list.js +9 -18
  192. package/dist/tui/features/commands/definitions/space-switch.js +10 -6
  193. package/dist/tui/features/commands/definitions/vc-add.d.ts +2 -0
  194. package/dist/tui/features/commands/definitions/vc-add.js +15 -0
  195. package/dist/tui/features/commands/definitions/vc-branch.d.ts +2 -0
  196. package/dist/tui/features/commands/definitions/vc-branch.js +33 -0
  197. package/dist/tui/features/commands/definitions/vc-checkout.d.ts +2 -0
  198. package/dist/tui/features/commands/definitions/vc-checkout.js +32 -0
  199. package/dist/tui/features/commands/definitions/vc-clone.d.ts +2 -0
  200. package/dist/tui/features/commands/definitions/vc-clone.js +18 -0
  201. package/dist/tui/features/commands/definitions/vc-commit.d.ts +2 -0
  202. package/dist/tui/features/commands/definitions/vc-commit.js +32 -0
  203. package/dist/tui/features/commands/definitions/vc-config.d.ts +2 -0
  204. package/dist/tui/features/commands/definitions/vc-config.js +40 -0
  205. package/dist/tui/features/commands/definitions/vc-fetch.d.ts +2 -0
  206. package/dist/tui/features/commands/definitions/vc-fetch.js +37 -0
  207. package/dist/tui/features/commands/definitions/vc-init.d.ts +2 -0
  208. package/dist/tui/features/commands/definitions/vc-init.js +11 -0
  209. package/dist/tui/features/commands/definitions/vc-log.d.ts +2 -0
  210. package/dist/tui/features/commands/definitions/vc-log.js +25 -0
  211. package/dist/tui/features/commands/definitions/vc-merge.d.ts +2 -0
  212. package/dist/tui/features/commands/definitions/vc-merge.js +48 -0
  213. package/dist/tui/features/commands/definitions/vc-pull.d.ts +2 -0
  214. package/dist/tui/features/commands/definitions/vc-pull.js +42 -0
  215. package/dist/tui/features/commands/definitions/vc-push.d.ts +2 -0
  216. package/dist/tui/features/commands/definitions/vc-push.js +38 -0
  217. package/dist/tui/features/commands/definitions/vc-remote.d.ts +2 -0
  218. package/dist/tui/features/commands/definitions/vc-remote.js +57 -0
  219. package/dist/tui/features/commands/definitions/vc-reset.d.ts +2 -0
  220. package/dist/tui/features/commands/definitions/vc-reset.js +35 -0
  221. package/dist/tui/features/commands/definitions/vc-status.d.ts +2 -0
  222. package/dist/tui/features/commands/definitions/vc-status.js +11 -0
  223. package/dist/tui/features/commands/definitions/vc.d.ts +2 -0
  224. package/dist/tui/features/commands/definitions/vc.js +36 -0
  225. package/dist/tui/features/commands/hooks/use-slash-command-processor.js +5 -5
  226. package/dist/tui/features/log/api/execute-log.d.ts +8 -0
  227. package/dist/tui/features/log/api/execute-log.js +13 -0
  228. package/dist/tui/features/log/components/log-flow.d.ts +14 -0
  229. package/dist/tui/features/log/components/log-flow.js +29 -0
  230. package/dist/tui/features/log/utils/format-log.d.ts +3 -0
  231. package/dist/tui/features/log/utils/format-log.js +42 -0
  232. package/dist/tui/features/onboarding/hooks/use-app-view-mode.d.ts +9 -5
  233. package/dist/tui/features/onboarding/hooks/use-app-view-mode.js +12 -5
  234. package/dist/tui/features/push/components/push-flow.js +9 -2
  235. package/dist/tui/features/reset/components/reset-flow.js +2 -1
  236. package/dist/tui/features/status/components/status-view.js +2 -1
  237. package/dist/tui/features/status/utils/format-status.js +9 -0
  238. package/dist/tui/features/tasks/hooks/use-task-subscriptions.js +11 -0
  239. package/dist/tui/features/tasks/stores/tasks-store.d.ts +10 -0
  240. package/dist/tui/features/tasks/stores/tasks-store.js +16 -0
  241. package/dist/tui/features/vc/add/api/execute-vc-add.d.ts +8 -0
  242. package/dist/tui/features/vc/add/api/execute-vc-add.js +13 -0
  243. package/dist/tui/features/vc/add/components/vc-add-flow.d.ts +7 -0
  244. package/dist/tui/features/vc/add/components/vc-add-flow.js +35 -0
  245. package/dist/tui/features/vc/branch/api/execute-vc-branch.d.ts +8 -0
  246. package/dist/tui/features/vc/branch/api/execute-vc-branch.js +13 -0
  247. package/dist/tui/features/vc/branch/components/vc-branch-flow.d.ts +8 -0
  248. package/dist/tui/features/vc/branch/components/vc-branch-flow.js +53 -0
  249. package/dist/tui/features/vc/branch/utils/format-branch.d.ts +4 -0
  250. package/dist/tui/features/vc/branch/utils/format-branch.js +12 -0
  251. package/dist/tui/features/vc/checkout/api/execute-vc-checkout.d.ts +8 -0
  252. package/dist/tui/features/vc/checkout/api/execute-vc-checkout.js +13 -0
  253. package/dist/tui/features/vc/checkout/components/vc-checkout-flow.d.ts +8 -0
  254. package/dist/tui/features/vc/checkout/components/vc-checkout-flow.js +33 -0
  255. package/dist/tui/features/vc/clone/api/execute-vc-clone.d.ts +8 -0
  256. package/dist/tui/features/vc/clone/api/execute-vc-clone.js +13 -0
  257. package/dist/tui/features/vc/clone/components/vc-clone-flow.d.ts +7 -0
  258. package/dist/tui/features/vc/clone/components/vc-clone-flow.js +79 -0
  259. package/dist/tui/features/vc/commit/api/execute-vc-commit.d.ts +8 -0
  260. package/dist/tui/features/vc/commit/api/execute-vc-commit.js +13 -0
  261. package/dist/tui/features/vc/commit/components/vc-commit-flow.d.ts +7 -0
  262. package/dist/tui/features/vc/commit/components/vc-commit-flow.js +29 -0
  263. package/dist/tui/features/vc/config/api/execute-vc-config.d.ts +8 -0
  264. package/dist/tui/features/vc/config/api/execute-vc-config.js +13 -0
  265. package/dist/tui/features/vc/config/components/vc-config-flow.d.ts +9 -0
  266. package/dist/tui/features/vc/config/components/vc-config-flow.js +30 -0
  267. package/dist/tui/features/vc/fetch/api/execute-vc-fetch.d.ts +8 -0
  268. package/dist/tui/features/vc/fetch/api/execute-vc-fetch.js +13 -0
  269. package/dist/tui/features/vc/fetch/components/vc-fetch-flow.d.ts +8 -0
  270. package/dist/tui/features/vc/fetch/components/vc-fetch-flow.js +75 -0
  271. package/dist/tui/features/vc/init/api/execute-vc-init.d.ts +8 -0
  272. package/dist/tui/features/vc/init/api/execute-vc-init.js +13 -0
  273. package/dist/tui/features/vc/init/components/vc-init-flow.d.ts +10 -0
  274. package/dist/tui/features/vc/init/components/vc-init-flow.js +37 -0
  275. package/dist/tui/features/vc/merge/api/execute-vc-merge.d.ts +8 -0
  276. package/dist/tui/features/vc/merge/api/execute-vc-merge.js +13 -0
  277. package/dist/tui/features/vc/merge/components/vc-merge-flow.d.ts +11 -0
  278. package/dist/tui/features/vc/merge/components/vc-merge-flow.js +72 -0
  279. package/dist/tui/features/vc/pull/api/execute-vc-pull.d.ts +8 -0
  280. package/dist/tui/features/vc/pull/api/execute-vc-pull.js +13 -0
  281. package/dist/tui/features/vc/pull/components/vc-pull-flow.d.ts +9 -0
  282. package/dist/tui/features/vc/pull/components/vc-pull-flow.js +83 -0
  283. package/dist/tui/features/vc/push/api/execute-vc-push.d.ts +8 -0
  284. package/dist/tui/features/vc/push/api/execute-vc-push.js +13 -0
  285. package/dist/tui/features/vc/push/components/vc-push-flow.d.ts +8 -0
  286. package/dist/tui/features/vc/push/components/vc-push-flow.js +83 -0
  287. package/dist/tui/features/vc/remote/api/execute-vc-remote.d.ts +8 -0
  288. package/dist/tui/features/vc/remote/api/execute-vc-remote.js +13 -0
  289. package/dist/tui/features/vc/remote/components/vc-remote-flow.d.ts +9 -0
  290. package/dist/tui/features/vc/remote/components/vc-remote-flow.js +42 -0
  291. package/dist/tui/features/vc/reset/api/execute-vc-reset.d.ts +8 -0
  292. package/dist/tui/features/vc/reset/api/execute-vc-reset.js +13 -0
  293. package/dist/tui/features/vc/reset/components/vc-reset-flow.d.ts +10 -0
  294. package/dist/tui/features/vc/reset/components/vc-reset-flow.js +63 -0
  295. package/dist/tui/features/vc/status/api/execute-vc-status.d.ts +8 -0
  296. package/dist/tui/features/vc/status/api/execute-vc-status.js +13 -0
  297. package/dist/tui/features/vc/status/components/vc-status-flow.d.ts +10 -0
  298. package/dist/tui/features/vc/status/components/vc-status-flow.js +133 -0
  299. package/dist/tui/lib/environment.d.ts +8 -0
  300. package/dist/tui/lib/environment.js +8 -0
  301. package/dist/tui/utils/error-messages.d.ts +5 -1
  302. package/dist/tui/utils/error-messages.js +32 -3
  303. package/oclif.manifest.json +1018 -98
  304. package/package.json +9 -3
  305. package/dist/oclif/hooks/prerun/validate-brv-config-version.d.ts +0 -33
  306. package/dist/oclif/hooks/prerun/validate-brv-config-version.js +0 -86
  307. package/dist/tui/components/init.d.ts +0 -33
  308. package/dist/tui/components/init.js +0 -234
  309. package/dist/tui/features/space/api/get-spaces.d.ts +0 -16
  310. package/dist/tui/features/space/api/get-spaces.js +0 -17
  311. package/dist/tui/features/space/api/switch-space.d.ts +0 -11
  312. package/dist/tui/features/space/api/switch-space.js +0 -24
  313. package/dist/tui/features/space/components/space-list-view.d.ts +0 -12
  314. package/dist/tui/features/space/components/space-list-view.js +0 -56
  315. package/dist/tui/features/space/components/space-switch-flow.d.ts +0 -13
  316. package/dist/tui/features/space/components/space-switch-flow.js +0 -97
@@ -112,6 +112,7 @@ prompt: |
112
112
  path: 'design/alert_engine',
113
113
  title: 'Alert Engine',
114
114
  reason: 'Document alert engine architecture',
115
+ summary: 'Alert Engine consuming events with dedup and SLA-based routing',
115
116
  content: {
116
117
  rawConcept: { task: 'Document Alert Engine', flow: 'Events -> Router -> Routing' },
117
118
  narrative: { structure: 'Consumes events and routes alerts.', highlights: 'Deduplication, SLAs' }
@@ -318,7 +319,8 @@ prompt: |
318
319
  const result = await tools.curate([{
319
320
  type: 'UPSERT', path: '<domain>/<topic>', title: '<title>',
320
321
  content: { rawConcept: { task: '...', /* ... */ }, narrative: { /* ... */ } },
321
- reason: 'Curate from RLM context'
322
+ reason: 'Curate from RLM context',
323
+ summary: 'One-line semantic summary of what this knowledge file contains'
322
324
  }]);
323
325
  // Verify inline — CurateResult.applied[].filePath already has paths
324
326
  const created = result.applied.filter(r => r.status === 'success').map(r => r.filePath);
@@ -379,12 +381,14 @@ prompt: |
379
381
 
380
382
  | Operation | When to Use | Required Fields |
381
383
  |-----------|-------------|-----------------|
382
- | **UPSERT** | **PREFERRED** - Creates or updates automatically | path, title, content, reason |
383
- | **ADD** | Only when you're certain file doesn't exist | path, title, content, reason |
384
- | **UPDATE** | Only when you're certain file exists | path, title, content, reason |
385
- | **MERGE** | Combining TWO EXISTING files | path, title, mergeTarget, mergeTargetTitle, reason |
384
+ | **UPSERT** | **PREFERRED** - Creates or updates automatically | path, title, content, reason, summary |
385
+ | **ADD** | Only when you're certain file doesn't exist | path, title, content, reason, summary |
386
+ | **UPDATE** | Only when you're certain file exists | path, title, content, reason, summary |
387
+ | **MERGE** | Combining TWO EXISTING files | path, title, mergeTarget, mergeTargetTitle, reason, summary |
386
388
  | **DELETE** | Removing file or folder | path, reason (title optional) |
387
389
 
390
+ **summary** — One-line semantic summary of what the knowledge file contains after this operation. Required for ADD/UPDATE/UPSERT/MERGE. Helps reviewers quickly grasp the content without reading the full document.
391
+
388
392
  **UPSERT is the recommended default:**
389
393
  - Automatically checks if file exists
390
394
  - Creates new file (ADD) if missing
@@ -427,6 +431,8 @@ prompt: |
427
431
  type: 'UPSERT', // Auto-detects ADD vs UPDATE
428
432
  path: 'authentication/jwt',
429
433
  title: 'Token Handling',
434
+ reason: 'Documenting JWT authentication',
435
+ summary: 'JWT authentication with 15-min access tokens and refresh token rotation',
430
436
  content: {
431
437
  rawConcept: {
432
438
  task: 'Implement JWT authentication',
@@ -440,7 +446,6 @@ prompt: |
440
446
  },
441
447
  domainContext: { /* only for new domains */ },
442
448
  topicContext: { /* only for new topics */ },
443
- reason: 'Documenting JWT authentication'
444
449
  }
445
450
  ]);
446
451
 
@@ -523,6 +528,8 @@ prompt: |
523
528
  type: 'UPSERT', // Preferred - auto-detects ADD vs UPDATE
524
529
  path: 'structure/authentication',
525
530
  title: 'JWT Token Handling',
531
+ reason: 'Documenting new JWT authentication system',
532
+ summary: 'JWT auth with 15-min access tokens, 7-day refresh tokens, Redis blacklist, and token rotation',
526
533
  content: {
527
534
  rawConcept: {
528
535
  task: 'Implement JWT-based authentication with refresh tokens',
@@ -552,7 +559,6 @@ prompt: |
552
559
  },
553
560
  relations: ['@structure/redis/overview.md', '@design/security/token-validation.md']
554
561
  },
555
- reason: 'Documenting new JWT authentication system'
556
562
  }
557
563
  ]);
558
564
  ```
@@ -564,6 +570,8 @@ prompt: |
564
570
  type: 'UPSERT',
565
571
  path: 'project_management/retrospectives',
566
572
  title: 'Sprint 13 Retro',
573
+ reason: 'Documenting Sprint 13 retrospective findings and action items',
574
+ summary: 'Sprint 13 retro: 34/35 points delivered, adopted mob programming and day-3 change cutoff',
567
575
  content: {
568
576
  rawConcept: {
569
577
  task: 'Sprint 13 Retrospective - Jan 22 to Feb 5, 2026',
@@ -585,7 +593,6 @@ prompt: |
585
593
  },
586
594
  relations: ['@project_management/sprints/sprint_14_review.md']
587
595
  },
588
- reason: 'Documenting Sprint 13 retrospective findings and action items'
589
596
  }
590
597
  ]);
591
598
  ```
@@ -88,6 +88,9 @@ When calling `tools.*` methods, you **MUST** wrap code in an async IIFE:
88
88
  path: 'design/alert_engine',
89
89
  title: 'Alert Engine',
90
90
  reason: 'Document alert engine architecture',
91
+ summary: 'Alert Engine consuming events with dedup, escalation, and SLA-based routing to PagerDuty/Slack/Email',
92
+ confidence: 'high',
93
+ impact: 'low',
91
94
  content: {
92
95
  rawConcept: {
93
96
  task: 'Document the Alert Engine component',
@@ -21,9 +21,15 @@ Curate knowledge topics with atomic operations. This tool manages the knowledge
21
21
  - **snippets**: Code/text snippets (legacy support, optional)
22
22
  - **relations**: Related topics using @domain/topic notation
23
23
 
24
+ **Per-Operation Metadata (required for all operations):**
25
+ - **reason**: WHY this knowledge is being curated — the motivation for a human reviewer
26
+ - **summary**: One-line semantic summary of what the knowledge file contains after this operation. Written for a human reviewer to quickly grasp the content. Example: "Caching strategy using Redis with 5-min TTL and write-through invalidation". Required for ADD/UPDATE/UPSERT/MERGE, not needed for DELETE.
27
+ - **confidence**: "high" or "low" — your confidence in accuracy/completeness
28
+ - **impact**: "high" or "low" — scope of change (see tool schema for details)
29
+
24
30
  **Operations:**
25
31
  1. **ADD** - Create new titled context file in domain/topic/subtopic
26
- - Requires: path, title, content, reason
32
+ - Requires: path, title, content, reason, summary
27
33
  - Example with Raw Concept + Narrative:
28
34
  {
29
35
  type: "ADD",
@@ -46,12 +52,15 @@ Curate knowledge topics with atomic operations. This tool manages the knowledge
46
52
  },
47
53
  relations: ["@structure/database"]
48
54
  },
49
- reason: "New caching pattern"
55
+ reason: "New caching pattern",
56
+ summary: "Redis caching layer for getUserPermissions with 300s TTL and singleton client pattern",
57
+ confidence: "high",
58
+ impact: "low"
50
59
  }
51
60
  - Creates: structure/caching/redis_user_permissions.md
52
61
 
53
62
  2. **UPDATE** - Modify existing titled context file (full replacement)
54
- - Requires: path, title, content, reason
63
+ - Requires: path, title, content, reason, summary
55
64
  - Supports same content structure as ADD
56
65
 
57
66
  3. **MERGE** - Combine source file into target file, delete source
@@ -3,7 +3,7 @@ import { type ConnectorInstallResponse } from '../../../shared/transport/events/
3
3
  import { type DaemonClientOptions } from '../../lib/daemon-client.js';
4
4
  export default class ConnectorsInstall extends Command {
5
5
  static args: {
6
- agent: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
6
+ agent: import("@oclif/core/interfaces").Arg<string | undefined, Record<string, unknown>>;
7
7
  };
8
8
  static description: string;
9
9
  static examples: string[];
@@ -27,5 +27,6 @@ export default class ConnectorsInstall extends Command {
27
27
  fromType: "rules" | "hook" | "mcp" | "skill" | undefined;
28
28
  result: ConnectorInstallResponse;
29
29
  }>;
30
+ protected promptForAgent(options?: DaemonClientOptions): Promise<string>;
30
31
  run(): Promise<void>;
31
32
  }
@@ -1,3 +1,4 @@
1
+ import { select } from '@inquirer/prompts';
1
2
  import { Args, Command, Flags } from '@oclif/core';
2
3
  import { AGENT_CONNECTOR_CONFIG } from '../../../server/core/domain/entities/agent.js';
3
4
  import { ConnectorEvents, } from '../../../shared/transport/events/connector-events.js';
@@ -6,6 +7,7 @@ import { isConnectorType, requiresAgentRestart } from '../../../shared/types/con
6
7
  import { getConnectorName } from '../../../tui/features/connectors/utils/get-connector-name.js';
7
8
  import { withDaemonRetry } from '../../lib/daemon-client.js';
8
9
  import { writeJsonResponse } from '../../lib/json-response.js';
10
+ import { isPromptCancelled } from '../../lib/prompt-utils.js';
9
11
  const agentTable = AGENT_VALUES.map((agent) => {
10
12
  const config = AGENT_CONNECTOR_CONFIG[agent];
11
13
  const supported = config.supported.map((type) => getConnectorName(type)).join(', ');
@@ -14,8 +16,8 @@ const agentTable = AGENT_VALUES.map((agent) => {
14
16
  export default class ConnectorsInstall extends Command {
15
17
  static args = {
16
18
  agent: Args.string({
17
- description: 'Agent name to install connector for (e.g., "Claude Code", "Cursor")',
18
- required: true,
19
+ description: 'Agent name to install connector for (e.g., "Claude Code", "Cursor"). Omit for interactive selection.',
20
+ required: false,
19
21
  }),
20
22
  };
21
23
  static description = `Install or switch a connector for an agent
@@ -81,12 +83,45 @@ ${agentTable}`;
81
83
  };
82
84
  }, options);
83
85
  }
86
+ async promptForAgent(options) {
87
+ const { agents } = await withDaemonRetry(async (client) => client.requestWithAck(ConnectorEvents.GET_AGENTS), options);
88
+ // Add a blank line before the prompt
89
+ this.log('');
90
+ return select({
91
+ choices: agents.map((a) => ({
92
+ description: `Connector type: ${getConnectorName(a.defaultConnectorType)}`,
93
+ name: a.name,
94
+ value: a.id,
95
+ })),
96
+ loop: false,
97
+ message: 'Select your coding agent to install the connector (type to search):',
98
+ });
99
+ }
84
100
  async run() {
85
101
  const { args, flags } = await this.parse(ConnectorsInstall);
102
+ let agentId = args.agent;
86
103
  const format = flags.format;
104
+ if (!agentId) {
105
+ if (format === 'json') {
106
+ writeJsonResponse({
107
+ command: 'connectors install',
108
+ data: { error: 'Agent argument is required for JSON output' },
109
+ success: false,
110
+ });
111
+ return;
112
+ }
113
+ try {
114
+ agentId = await this.promptForAgent();
115
+ }
116
+ catch (error) {
117
+ if (!isPromptCancelled(error))
118
+ throw error;
119
+ return; // user cancelled agent selection
120
+ }
121
+ }
87
122
  try {
88
123
  const installResult = await this.installConnector({
89
- agentId: args.agent,
124
+ agentId,
90
125
  connectorType: flags.type,
91
126
  });
92
127
  if (format === 'json') {
@@ -14,11 +14,29 @@ export default class Curate extends Command {
14
14
  };
15
15
  protected getDaemonClientOptions(): DaemonClientOptions;
16
16
  run(): Promise<void>;
17
+ /**
18
+ * Build the pendingReview JSON payload for --format json output.
19
+ * Uses server-authoritative count; files list is best-effort enrichment from tool results.
20
+ */
21
+ private buildPendingReviewJson;
22
+ /**
23
+ * Collect all operations requiring review from the completed tool calls.
24
+ * Best-effort enrichment: returns per-file detail when tool results include needsReview.
25
+ * The authoritative signal for whether review is required comes from ReviewEvents.NOTIFY.
26
+ */
27
+ private collectPendingReviewOps;
17
28
  /**
18
29
  * Extract file changes from collected tool calls (same logic as TUI useActivityLogs).
19
30
  */
20
31
  private composeChangesFromToolCalls;
21
32
  private extractChangesFromApplied;
33
+ private extractContextTreeRelativePath;
34
+ /**
35
+ * Print a human-readable pending review summary to stdout.
36
+ * Called after successful curate completion when review is required.
37
+ * pendingCount is server-authoritative; pendingOps provides best-effort per-file detail.
38
+ */
39
+ private printPendingReviewSummary;
22
40
  private reportError;
23
41
  private submitTask;
24
42
  private validateInput;
@@ -1,5 +1,6 @@
1
1
  import { Args, Command, Flags } from '@oclif/core';
2
2
  import { randomUUID } from 'node:crypto';
3
+ import { BRV_DIR, CONTEXT_TREE_DIR } from '../../../server/constants.js';
3
4
  import { TransportStateEventNames } from '../../../server/core/domain/transport/index.js';
4
5
  import { extractCurateOperations } from '../../../server/utils/curate-result-parser.js';
5
6
  import { TaskEvents } from '../../../shared/transport/events/index.js';
@@ -105,6 +106,43 @@ Bad examples:
105
106
  this.reportError(error, format, providerContext);
106
107
  }
107
108
  }
109
+ /**
110
+ * Build the pendingReview JSON payload for --format json output.
111
+ * Uses server-authoritative count; files list is best-effort enrichment from tool results.
112
+ */
113
+ buildPendingReviewJson(pendingCount, pendingOps, taskId) {
114
+ return {
115
+ count: pendingCount,
116
+ files: pendingOps.map((op) => ({
117
+ after: op.summary,
118
+ before: op.previousSummary,
119
+ filePath: this.extractContextTreeRelativePath(op.filePath) ?? op.path,
120
+ impact: op.impact,
121
+ path: op.path,
122
+ reason: op.reason,
123
+ type: op.type,
124
+ })),
125
+ taskId,
126
+ };
127
+ }
128
+ /**
129
+ * Collect all operations requiring review from the completed tool calls.
130
+ * Best-effort enrichment: returns per-file detail when tool results include needsReview.
131
+ * The authoritative signal for whether review is required comes from ReviewEvents.NOTIFY.
132
+ */
133
+ collectPendingReviewOps(toolCalls) {
134
+ const pending = [];
135
+ for (const tc of toolCalls) {
136
+ if (tc.status !== 'completed')
137
+ continue;
138
+ const ops = extractCurateOperations({ result: tc.result, toolName: tc.toolName });
139
+ for (const op of ops) {
140
+ if (op.needsReview === true)
141
+ pending.push(op);
142
+ }
143
+ }
144
+ return pending;
145
+ }
108
146
  /**
109
147
  * Extract file changes from collected tool calls (same logic as TUI useActivityLogs).
110
148
  */
@@ -138,6 +176,37 @@ Bad examples:
138
176
  }
139
177
  }
140
178
  }
179
+ extractContextTreeRelativePath(filePath) {
180
+ if (!filePath)
181
+ return undefined;
182
+ const marker = `${BRV_DIR}/${CONTEXT_TREE_DIR}/`;
183
+ const idx = filePath.indexOf(marker);
184
+ if (idx === -1)
185
+ return undefined;
186
+ return filePath.slice(idx + marker.length);
187
+ }
188
+ /**
189
+ * Print a human-readable pending review summary to stdout.
190
+ * Called after successful curate completion when review is required.
191
+ * pendingCount is server-authoritative; pendingOps provides best-effort per-file detail.
192
+ */
193
+ printPendingReviewSummary(pendingCount, pendingOps, taskId) {
194
+ this.log(`\n⚠ ${pendingCount} operation${pendingCount === 1 ? '' : 's'} require${pendingCount === 1 ? 's' : ''} review (task: ${taskId})`);
195
+ for (const op of pendingOps) {
196
+ const impact = op.impact === 'high' ? ' · HIGH IMPACT' : '';
197
+ const displayPath = this.extractContextTreeRelativePath(op.filePath) ?? op.path;
198
+ this.log(`\n [${op.type}${impact}] - path: ${displayPath}`);
199
+ if (op.reason)
200
+ this.log(` Why: ${op.reason}`);
201
+ if (op.previousSummary)
202
+ this.log(` Before: ${op.previousSummary.replaceAll('\n', '\n ')}`);
203
+ if (op.summary)
204
+ this.log(` After: ${op.summary.replaceAll('\n', '\n ')}`);
205
+ }
206
+ this.log(`\n To approve all: brv review approve ${taskId}`);
207
+ this.log(` To reject all: brv review reject ${taskId}`);
208
+ this.log(` Per file: brv review approve/reject ${taskId} --file <path> [--file <path>]`);
209
+ }
141
210
  reportError(error, format, providerContext) {
142
211
  const errorMessage = error instanceof Error ? error.message : 'Curate failed';
143
212
  if (format === 'json') {
@@ -184,8 +253,10 @@ Bad examples:
184
253
  client,
185
254
  command: 'curate',
186
255
  format,
187
- onCompleted: ({ logId, taskId: tid, toolCalls }) => {
256
+ onCompleted: ({ logId, pendingReview, taskId: tid, toolCalls }) => {
188
257
  const changes = this.composeChangesFromToolCalls(toolCalls);
258
+ // Per-file detail is best-effort enrichment; server notify is authoritative
259
+ const pendingOps = pendingReview ? this.collectPendingReviewOps(toolCalls) : [];
189
260
  if (format === 'text') {
190
261
  for (const file of changes.created) {
191
262
  this.log(` add ${file}`);
@@ -195,6 +266,9 @@ Bad examples:
195
266
  }
196
267
  const logSuffix = logId ? ` (Log: ${logId})` : '';
197
268
  this.log(`✓ Context curated successfully.${logSuffix}`);
269
+ if (pendingReview) {
270
+ this.printPendingReviewSummary(pendingReview.pendingCount, pendingOps, tid);
271
+ }
198
272
  }
199
273
  else {
200
274
  writeJsonResponse({
@@ -204,6 +278,9 @@ Bad examples:
204
278
  event: 'completed',
205
279
  logId,
206
280
  message: 'Context curated successfully',
281
+ ...(pendingReview
282
+ ? { pendingReview: this.buildPendingReviewJson(pendingReview.pendingCount, pendingOps, tid) }
283
+ : {}),
207
284
  status: 'completed',
208
285
  taskId: tid,
209
286
  },
@@ -0,0 +1,12 @@
1
+ import { Command } from '@oclif/core';
2
+ import { type DaemonClientOptions } from '../lib/daemon-client.js';
3
+ export default class Init extends Command {
4
+ static description: string;
5
+ static examples: string[];
6
+ static flags: {
7
+ force: import("@oclif/core/interfaces").BooleanFlag<boolean>;
8
+ };
9
+ static hidden: boolean;
10
+ protected getDaemonOptions(): DaemonClientOptions;
11
+ run(): Promise<void>;
12
+ }
@@ -0,0 +1,75 @@
1
+ /* eslint-disable no-unreachable */
2
+ import { Command, Flags } from '@oclif/core';
3
+ import { InitEvents } from '../../shared/transport/events/init-events.js';
4
+ import { ProviderEvents } from '../../shared/transport/events/provider-events.js';
5
+ import { formatConnectionError, withDaemonRetry } from '../lib/daemon-client.js';
6
+ export default class Init extends Command {
7
+ static description = 'Initialize a ByteRover project in the current directory';
8
+ static examples = ['<%= config.bin %> <%= command.id %>', '<%= config.bin %> <%= command.id %> --force'];
9
+ static flags = {
10
+ force: Flags.boolean({
11
+ char: 'f',
12
+ default: false,
13
+ description: 'Force re-initialization even if already initialized',
14
+ }),
15
+ };
16
+ static hidden = true;
17
+ getDaemonOptions() {
18
+ return { projectPath: process.cwd() };
19
+ }
20
+ async run() {
21
+ this.log('The init command is not available. Use: brv vc init');
22
+ return;
23
+ const { flags } = await this.parse(Init);
24
+ const daemonOptions = this.getDaemonOptions();
25
+ // Step 1: Local init (.brv/config.json + context tree)
26
+ try {
27
+ const response = await withDaemonRetry(async (client) => client.requestWithAck(InitEvents.LOCAL, { force: flags.force }), daemonOptions);
28
+ if (response.alreadyInitialized) {
29
+ this.log('ByteRover project already initialized.');
30
+ return;
31
+ }
32
+ }
33
+ catch (error) {
34
+ this.log(formatConnectionError(error));
35
+ return;
36
+ }
37
+ // Step 2: Version control init
38
+ try {
39
+ await this.config.runCommand('vc:init');
40
+ }
41
+ catch {
42
+ // vc:init logs its own errors
43
+ return;
44
+ }
45
+ // Step 3: Provider setup — only if no provider connected yet
46
+ let activeProviderId;
47
+ try {
48
+ const result = await withDaemonRetry(async (client) => client.requestWithAck(ProviderEvents.GET_ACTIVE), daemonOptions);
49
+ activeProviderId = result.activeProviderId;
50
+ }
51
+ catch (error) {
52
+ this.log(formatConnectionError(error));
53
+ return;
54
+ }
55
+ if (!activeProviderId) {
56
+ try {
57
+ await this.config.runCommand('providers:connect');
58
+ }
59
+ catch {
60
+ // providers:connect logs its own errors
61
+ return;
62
+ }
63
+ }
64
+ // Step 4: Connector setup — interactive agent selection + default connector
65
+ try {
66
+ await this.config.runCommand('connectors:install');
67
+ }
68
+ catch {
69
+ // connector setup is optional
70
+ }
71
+ this.log(`\nByteRover is ready in ${process.cwd()}`);
72
+ this.log(' Ask your coding agent to curate your project —');
73
+ this.log(' try "hey, curate the context for this project"');
74
+ }
75
+ }
@@ -24,7 +24,7 @@ export default class Locations extends Command {
24
24
  const { flags } = await this.parse(Locations);
25
25
  const isJson = flags.format === 'json';
26
26
  try {
27
- const locations = await this.fetchLocations();
27
+ const locations = await this.fetchLocations({ projectPath: process.cwd() });
28
28
  if (isJson) {
29
29
  writeJsonResponse({ command: 'locations', data: { locations }, success: true });
30
30
  }
@@ -1,8 +1,10 @@
1
1
  import { Command } from '@oclif/core';
2
+ import type { ProviderDTO } from '../../../shared/transport/types/dto.js';
3
+ import { type ModelListResponse } from '../../../shared/transport/events/model-events.js';
2
4
  import { type DaemonClientOptions } from '../../lib/daemon-client.js';
3
5
  export default class ProviderConnect extends Command {
4
6
  static args: {
5
- provider: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
7
+ provider: import("@oclif/core/interfaces").Arg<string | undefined, Record<string, unknown>>;
6
8
  };
7
9
  static description: string;
8
10
  static examples: string[];
@@ -31,5 +33,33 @@ export default class ProviderConnect extends Command {
31
33
  providerName: string;
32
34
  showInstructions: boolean;
33
35
  }>;
36
+ protected disconnectProvider(providerId: string, options?: DaemonClientOptions): Promise<void>;
37
+ protected fetchModels(providerId: string, options?: DaemonClientOptions): Promise<ModelListResponse>;
38
+ protected fetchProviders(options?: DaemonClientOptions): Promise<ProviderDTO[]>;
39
+ protected promptForApiKey(providerName: string, apiKeyUrl?: string, signal?: AbortSignal): Promise<string>;
40
+ protected promptForAuthMethod(provider: ProviderDTO, signal?: AbortSignal): Promise<'api-key' | 'oauth'>;
41
+ protected promptForBaseUrl(signal?: AbortSignal): Promise<string>;
42
+ protected promptForConnectedAction(provider: ProviderDTO, signal?: AbortSignal): Promise<'activate' | 'disconnect' | 'reconfigure'>;
43
+ protected promptForModel(models: {
44
+ id: string;
45
+ name: string;
46
+ }[], signal?: AbortSignal): Promise<string | undefined>;
47
+ protected promptForOptionalApiKey(providerName: string, signal?: AbortSignal): Promise<string | undefined>;
48
+ protected promptForProvider(providers: ProviderDTO[], signal?: AbortSignal): Promise<string>;
34
49
  run(): Promise<void>;
50
+ /**
51
+ * Interactive flow with cancel-to-go-back navigation.
52
+ * Step 1 (provider) ← Step 2 (auth) ← Step 3 (model)
53
+ */
54
+ protected runInteractive(): Promise<void>;
55
+ protected runNonInteractive(providerId: string, flags: {
56
+ apiKey: string | undefined;
57
+ baseUrl: string | undefined;
58
+ code: string | undefined;
59
+ model: string | undefined;
60
+ oauth: boolean;
61
+ }, format: 'json' | 'text'): Promise<void>;
62
+ /** Returns true when wizard should end (skip model step), false to continue to model step. */
63
+ private runAuthStep;
64
+ private runModelStep;
35
65
  }