vidbyte-cli 0.1.0__tar.gz

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 (274) hide show
  1. vidbyte_cli-0.1.0/LICENSE +21 -0
  2. vidbyte_cli-0.1.0/PKG-INFO +335 -0
  3. vidbyte_cli-0.1.0/README.md +293 -0
  4. vidbyte_cli-0.1.0/pyproject.toml +107 -0
  5. vidbyte_cli-0.1.0/setup.cfg +4 -0
  6. vidbyte_cli-0.1.0/src/vidbyte_cli/__init__.py +11 -0
  7. vidbyte_cli-0.1.0/src/vidbyte_cli/__main__.py +6 -0
  8. vidbyte_cli-0.1.0/src/vidbyte_cli/cli.py +18 -0
  9. vidbyte_cli-0.1.0/src/vidbyte_cli/commands/__init__.py +86 -0
  10. vidbyte_cli-0.1.0/src/vidbyte_cli/commands/agent_options.py +53 -0
  11. vidbyte_cli-0.1.0/src/vidbyte_cli/commands/agents/__init__.py +31 -0
  12. vidbyte_cli-0.1.0/src/vidbyte_cli/commands/agents/suggestion/__init__.py +38 -0
  13. vidbyte_cli-0.1.0/src/vidbyte_cli/commands/agents/suggestion/prompts/__init__.py +3 -0
  14. vidbyte_cli-0.1.0/src/vidbyte_cli/commands/agents/suggestion/prompts/all_categories.md +5 -0
  15. vidbyte_cli-0.1.0/src/vidbyte_cli/commands/agents/suggestion/prompts/approaches.md +100 -0
  16. vidbyte_cli-0.1.0/src/vidbyte_cli/commands/agents/suggestion/prompts/avoid.md +100 -0
  17. vidbyte_cli-0.1.0/src/vidbyte_cli/commands/agents/suggestion/prompts/blockers.md +100 -0
  18. vidbyte_cli-0.1.0/src/vidbyte_cli/commands/agents/suggestion/prompts/capability.md +100 -0
  19. vidbyte_cli-0.1.0/src/vidbyte_cli/commands/agents/suggestion/prompts/categories.md +5 -0
  20. vidbyte_cli-0.1.0/src/vidbyte_cli/commands/agents/suggestion/prompts/category.md +5 -0
  21. vidbyte_cli-0.1.0/src/vidbyte_cli/commands/agents/suggestion/prompts/completed.md +100 -0
  22. vidbyte_cli-0.1.0/src/vidbyte_cli/commands/agents/suggestion/prompts/constraint.md +100 -0
  23. vidbyte_cli-0.1.0/src/vidbyte_cli/commands/agents/suggestion/prompts/context.md +100 -0
  24. vidbyte_cli-0.1.0/src/vidbyte_cli/commands/agents/suggestion/prompts/count.md +5 -0
  25. vidbyte_cli-0.1.0/src/vidbyte_cli/commands/agents/suggestion/prompts/critic_model.md +100 -0
  26. vidbyte_cli-0.1.0/src/vidbyte_cli/commands/agents/suggestion/prompts/decision.md +100 -0
  27. vidbyte_cli-0.1.0/src/vidbyte_cli/commands/agents/suggestion/prompts/dry_run.md +5 -0
  28. vidbyte_cli-0.1.0/src/vidbyte_cli/commands/agents/suggestion/prompts/extra_compute.md +5 -0
  29. vidbyte_cli-0.1.0/src/vidbyte_cli/commands/agents/suggestion/prompts/feedback_accept.md +7 -0
  30. vidbyte_cli-0.1.0/src/vidbyte_cli/commands/agents/suggestion/prompts/feedback_group.md +7 -0
  31. vidbyte_cli-0.1.0/src/vidbyte_cli/commands/agents/suggestion/prompts/feedback_project.md +100 -0
  32. vidbyte_cli-0.1.0/src/vidbyte_cli/commands/agents/suggestion/prompts/feedback_reason.md +98 -0
  33. vidbyte_cli-0.1.0/src/vidbyte_cli/commands/agents/suggestion/prompts/feedback_reject.md +7 -0
  34. vidbyte_cli-0.1.0/src/vidbyte_cli/commands/agents/suggestion/prompts/feedback_suggestion.md +101 -0
  35. vidbyte_cli-0.1.0/src/vidbyte_cli/commands/agents/suggestion/prompts/files.md +100 -0
  36. vidbyte_cli-0.1.0/src/vidbyte_cli/commands/agents/suggestion/prompts/forbidden.md +100 -0
  37. vidbyte_cli-0.1.0/src/vidbyte_cli/commands/agents/suggestion/prompts/goal.md +100 -0
  38. vidbyte_cli-0.1.0/src/vidbyte_cli/commands/agents/suggestion/prompts/handoff.md +7 -0
  39. vidbyte_cli-0.1.0/src/vidbyte_cli/commands/agents/suggestion/prompts/horizon.md +5 -0
  40. vidbyte_cli-0.1.0/src/vidbyte_cli/commands/agents/suggestion/prompts/hypotheses.md +100 -0
  41. vidbyte_cli-0.1.0/src/vidbyte_cli/commands/agents/suggestion/prompts/idea.md +100 -0
  42. vidbyte_cli-0.1.0/src/vidbyte_cli/commands/agents/suggestion/prompts/in_progress.md +100 -0
  43. vidbyte_cli-0.1.0/src/vidbyte_cli/commands/agents/suggestion/prompts/input.md +100 -0
  44. vidbyte_cli-0.1.0/src/vidbyte_cli/commands/agents/suggestion/prompts/library.py +29 -0
  45. vidbyte_cli-0.1.0/src/vidbyte_cli/commands/agents/suggestion/prompts/max_messages.md +5 -0
  46. vidbyte_cli-0.1.0/src/vidbyte_cli/commands/agents/suggestion/prompts/max_output_tokens.md +5 -0
  47. vidbyte_cli-0.1.0/src/vidbyte_cli/commands/agents/suggestion/prompts/max_total_tokens.md +5 -0
  48. vidbyte_cli-0.1.0/src/vidbyte_cli/commands/agents/suggestion/prompts/mistakes.md +100 -0
  49. vidbyte_cli-0.1.0/src/vidbyte_cli/commands/agents/suggestion/prompts/outcomes.md +100 -0
  50. vidbyte_cli-0.1.0/src/vidbyte_cli/commands/agents/suggestion/prompts/project.md +100 -0
  51. vidbyte_cli-0.1.0/src/vidbyte_cli/commands/agents/suggestion/prompts/project_create.md +7 -0
  52. vidbyte_cli-0.1.0/src/vidbyte_cli/commands/agents/suggestion/prompts/project_description.md +98 -0
  53. vidbyte_cli-0.1.0/src/vidbyte_cli/commands/agents/suggestion/prompts/project_group.md +7 -0
  54. vidbyte_cli-0.1.0/src/vidbyte_cli/commands/agents/suggestion/prompts/project_key.md +96 -0
  55. vidbyte_cli-0.1.0/src/vidbyte_cli/commands/agents/suggestion/prompts/project_list.md +7 -0
  56. vidbyte_cli-0.1.0/src/vidbyte_cli/commands/agents/suggestion/prompts/project_title.md +99 -0
  57. vidbyte_cli-0.1.0/src/vidbyte_cli/commands/agents/suggestion/prompts/provider.md +5 -0
  58. vidbyte_cli-0.1.0/src/vidbyte_cli/commands/agents/suggestion/prompts/question.md +100 -0
  59. vidbyte_cli-0.1.0/src/vidbyte_cli/commands/agents/suggestion/prompts/risks.md +100 -0
  60. vidbyte_cli-0.1.0/src/vidbyte_cli/commands/agents/suggestion/prompts/rounds.md +5 -0
  61. vidbyte_cli-0.1.0/src/vidbyte_cli/commands/agents/suggestion/prompts/run.md +5 -0
  62. vidbyte_cli-0.1.0/src/vidbyte_cli/commands/agents/suggestion/prompts/success.md +100 -0
  63. vidbyte_cli-0.1.0/src/vidbyte_cli/commands/agents/suggestion/prompts/timeout.md +5 -0
  64. vidbyte_cli-0.1.0/src/vidbyte_cli/commands/agents/suggestion/prompts/trajectory.md +100 -0
  65. vidbyte_cli-0.1.0/src/vidbyte_cli/commands/agents/suggestion/prompts/view.md +5 -0
  66. vidbyte_cli-0.1.0/src/vidbyte_cli/commands/agents/suggestion/prompts/view_all.md +5 -0
  67. vidbyte_cli-0.1.0/src/vidbyte_cli/commands/agents/suggestion/render.py +77 -0
  68. vidbyte_cli-0.1.0/src/vidbyte_cli/commands/agents/suggestion/request_builder.py +240 -0
  69. vidbyte_cli-0.1.0/src/vidbyte_cli/commands/agents/suggestion/suggest.py +154 -0
  70. vidbyte_cli-0.1.0/src/vidbyte_cli/commands/agents/suggestion/suggestion_categories.py +77 -0
  71. vidbyte_cli-0.1.0/src/vidbyte_cli/commands/agents/suggestion/suggestion_feedback.py +85 -0
  72. vidbyte_cli-0.1.0/src/vidbyte_cli/commands/agents/suggestion/suggestion_handoff.py +67 -0
  73. vidbyte_cli-0.1.0/src/vidbyte_cli/commands/agents/suggestion/suggestion_projects.py +95 -0
  74. vidbyte_cli-0.1.0/src/vidbyte_cli/commands/auth/__init__.py +0 -0
  75. vidbyte_cli-0.1.0/src/vidbyte_cli/commands/auth/login.py +100 -0
  76. vidbyte_cli-0.1.0/src/vidbyte_cli/commands/auth/logout.py +41 -0
  77. vidbyte_cli-0.1.0/src/vidbyte_cli/commands/auth/whoami.py +51 -0
  78. vidbyte_cli-0.1.0/src/vidbyte_cli/commands/billing/__init__.py +20 -0
  79. vidbyte_cli-0.1.0/src/vidbyte_cli/commands/billing/prompts/__init__.py +1 -0
  80. vidbyte_cli-0.1.0/src/vidbyte_cli/commands/billing/prompts/confirm.md +16 -0
  81. vidbyte_cli-0.1.0/src/vidbyte_cli/commands/billing/prompts/group.md +13 -0
  82. vidbyte_cli-0.1.0/src/vidbyte_cli/commands/billing/prompts/idempotency_key.md +16 -0
  83. vidbyte_cli-0.1.0/src/vidbyte_cli/commands/billing/prompts/library.py +18 -0
  84. vidbyte_cli-0.1.0/src/vidbyte_cli/commands/billing/prompts/top_up.md +16 -0
  85. vidbyte_cli-0.1.0/src/vidbyte_cli/commands/billing/top_up.py +65 -0
  86. vidbyte_cli-0.1.0/src/vidbyte_cli/commands/config/__init__.py +0 -0
  87. vidbyte_cli-0.1.0/src/vidbyte_cli/commands/config/get.py +45 -0
  88. vidbyte_cli-0.1.0/src/vidbyte_cli/commands/config/set.py +39 -0
  89. vidbyte_cli-0.1.0/src/vidbyte_cli/commands/provider/__init__.py +9 -0
  90. vidbyte_cli-0.1.0/src/vidbyte_cli/commands/provider/login.py +102 -0
  91. vidbyte_cli-0.1.0/src/vidbyte_cli/commands/provider/logout.py +45 -0
  92. vidbyte_cli-0.1.0/src/vidbyte_cli/commands/provider/whoami.py +49 -0
  93. vidbyte_cli-0.1.0/src/vidbyte_cli/commands/research/__init__.py +5 -0
  94. vidbyte_cli-0.1.0/src/vidbyte_cli/commands/research/add.py +41 -0
  95. vidbyte_cli-0.1.0/src/vidbyte_cli/commands/research/options.py +134 -0
  96. vidbyte_cli-0.1.0/src/vidbyte_cli/commands/research/render.py +157 -0
  97. vidbyte_cli-0.1.0/src/vidbyte_cli/commands/research/resume.py +37 -0
  98. vidbyte_cli-0.1.0/src/vidbyte_cli/commands/research/start.py +37 -0
  99. vidbyte_cli-0.1.0/src/vidbyte_cli/commands/research/status.py +32 -0
  100. vidbyte_cli-0.1.0/src/vidbyte_cli/commands/research/thread.py +30 -0
  101. vidbyte_cli-0.1.0/src/vidbyte_cli/commands/research/threads.py +35 -0
  102. vidbyte_cli-0.1.0/src/vidbyte_cli/commands/research/watch.py +93 -0
  103. vidbyte_cli-0.1.0/src/vidbyte_cli/commands/runtime/__init__.py +23 -0
  104. vidbyte_cli-0.1.0/src/vidbyte_cli/commands/runtime/adversarial_team.py +41 -0
  105. vidbyte_cli-0.1.0/src/vidbyte_cli/commands/runtime/doctor.py +44 -0
  106. vidbyte_cli-0.1.0/src/vidbyte_cli/commands/runtime/list.py +47 -0
  107. vidbyte_cli-0.1.0/src/vidbyte_cli/commands/runtime/persistence.py +141 -0
  108. vidbyte_cli-0.1.0/src/vidbyte_cli/commands/runtime/same_host_ensemble.py +221 -0
  109. vidbyte_cli-0.1.0/src/vidbyte_cli/commands/runtime/stages.py +553 -0
  110. vidbyte_cli-0.1.0/src/vidbyte_cli/commands/runtime/task_board.py +1342 -0
  111. vidbyte_cli-0.1.0/src/vidbyte_cli/commands/setup/__init__.py +0 -0
  112. vidbyte_cli-0.1.0/src/vidbyte_cli/commands/setup/doctor.py +64 -0
  113. vidbyte_cli-0.1.0/src/vidbyte_cli/commands/setup/prompts/__init__.py +1 -0
  114. vidbyte_cli-0.1.0/src/vidbyte_cli/commands/setup/prompts/browser.md +7 -0
  115. vidbyte_cli-0.1.0/src/vidbyte_cli/commands/setup/prompts/library.py +18 -0
  116. vidbyte_cli-0.1.0/src/vidbyte_cli/commands/setup/prompts/star.md +13 -0
  117. vidbyte_cli-0.1.0/src/vidbyte_cli/commands/setup/star.py +132 -0
  118. vidbyte_cli-0.1.0/src/vidbyte_cli/lib/__init__.py +0 -0
  119. vidbyte_cli-0.1.0/src/vidbyte_cli/lib/api/__init__.py +0 -0
  120. vidbyte_cli-0.1.0/src/vidbyte_cli/lib/api/client.py +236 -0
  121. vidbyte_cli-0.1.0/src/vidbyte_cli/lib/api/endpoints/__init__.py +0 -0
  122. vidbyte_cli-0.1.0/src/vidbyte_cli/lib/api/endpoints/auth.py +24 -0
  123. vidbyte_cli-0.1.0/src/vidbyte_cli/lib/api/endpoints/billing.py +36 -0
  124. vidbyte_cli-0.1.0/src/vidbyte_cli/lib/api/endpoints/research.py +103 -0
  125. vidbyte_cli-0.1.0/src/vidbyte_cli/lib/api/endpoints/runtime.py +113 -0
  126. vidbyte_cli-0.1.0/src/vidbyte_cli/lib/api/problem.py +86 -0
  127. vidbyte_cli-0.1.0/src/vidbyte_cli/lib/api/response.py +101 -0
  128. vidbyte_cli-0.1.0/src/vidbyte_cli/lib/api/retry.py +116 -0
  129. vidbyte_cli-0.1.0/src/vidbyte_cli/lib/api/runtime_payment.py +89 -0
  130. vidbyte_cli-0.1.0/src/vidbyte_cli/lib/auth/__init__.py +16 -0
  131. vidbyte_cli-0.1.0/src/vidbyte_cli/lib/auth/credentials.py +223 -0
  132. vidbyte_cli-0.1.0/src/vidbyte_cli/lib/auth/input.py +59 -0
  133. vidbyte_cli-0.1.0/src/vidbyte_cli/lib/auth/keyring_store.py +126 -0
  134. vidbyte_cli-0.1.0/src/vidbyte_cli/lib/auth/provider_credentials.py +157 -0
  135. vidbyte_cli-0.1.0/src/vidbyte_cli/lib/auth/provider_input.py +54 -0
  136. vidbyte_cli-0.1.0/src/vidbyte_cli/lib/auth/provider_resolver.py +89 -0
  137. vidbyte_cli-0.1.0/src/vidbyte_cli/lib/auth/provider_store.py +149 -0
  138. vidbyte_cli-0.1.0/src/vidbyte_cli/lib/auth/provider_verifier.py +219 -0
  139. vidbyte_cli-0.1.0/src/vidbyte_cli/lib/auth/resolver.py +63 -0
  140. vidbyte_cli-0.1.0/src/vidbyte_cli/lib/auth/verifier.py +38 -0
  141. vidbyte_cli-0.1.0/src/vidbyte_cli/lib/config/__init__.py +25 -0
  142. vidbyte_cli-0.1.0/src/vidbyte_cli/lib/config/atomic.py +47 -0
  143. vidbyte_cli-0.1.0/src/vidbyte_cli/lib/config/config.py +141 -0
  144. vidbyte_cli-0.1.0/src/vidbyte_cli/lib/config/migration.py +81 -0
  145. vidbyte_cli-0.1.0/src/vidbyte_cli/lib/config/models.py +145 -0
  146. vidbyte_cli-0.1.0/src/vidbyte_cli/lib/config/paths.py +66 -0
  147. vidbyte_cli-0.1.0/src/vidbyte_cli/lib/config/resolver.py +137 -0
  148. vidbyte_cli-0.1.0/src/vidbyte_cli/lib/constants/__init__.py +1 -0
  149. vidbyte_cli-0.1.0/src/vidbyte_cli/lib/constants/runtime.py +186 -0
  150. vidbyte_cli-0.1.0/src/vidbyte_cli/lib/errors/__init__.py +12 -0
  151. vidbyte_cli-0.1.0/src/vidbyte_cli/lib/errors/cli_error.py +86 -0
  152. vidbyte_cli-0.1.0/src/vidbyte_cli/lib/errors/codes.py +43 -0
  153. vidbyte_cli-0.1.0/src/vidbyte_cli/lib/errors/failures.py +2910 -0
  154. vidbyte_cli-0.1.0/src/vidbyte_cli/lib/errors/handler.py +72 -0
  155. vidbyte_cli-0.1.0/src/vidbyte_cli/lib/files/__init__.py +6 -0
  156. vidbyte_cli-0.1.0/src/vidbyte_cli/lib/files/documents.py +94 -0
  157. vidbyte_cli-0.1.0/src/vidbyte_cli/lib/files/store.py +156 -0
  158. vidbyte_cli-0.1.0/src/vidbyte_cli/lib/io/__init__.py +16 -0
  159. vidbyte_cli-0.1.0/src/vidbyte_cli/lib/io/attachments.py +129 -0
  160. vidbyte_cli-0.1.0/src/vidbyte_cli/lib/io/codex_attachments.py +47 -0
  161. vidbyte_cli-0.1.0/src/vidbyte_cli/lib/io/prompt.py +71 -0
  162. vidbyte_cli-0.1.0/src/vidbyte_cli/lib/io/streams.py +37 -0
  163. vidbyte_cli-0.1.0/src/vidbyte_cli/lib/io/terminal.py +66 -0
  164. vidbyte_cli-0.1.0/src/vidbyte_cli/lib/output/__init__.py +7 -0
  165. vidbyte_cli-0.1.0/src/vidbyte_cli/lib/output/formats.py +29 -0
  166. vidbyte_cli-0.1.0/src/vidbyte_cli/lib/output/manager.py +95 -0
  167. vidbyte_cli-0.1.0/src/vidbyte_cli/lib/output/models.py +49 -0
  168. vidbyte_cli-0.1.0/src/vidbyte_cli/lib/runtime/__init__.py +9 -0
  169. vidbyte_cli-0.1.0/src/vidbyte_cli/lib/runtime/application.py +134 -0
  170. vidbyte_cli-0.1.0/src/vidbyte_cli/lib/runtime/context.py +250 -0
  171. vidbyte_cli-0.1.0/src/vidbyte_cli/lib/runtime/options.py +159 -0
  172. vidbyte_cli-0.1.0/src/vidbyte_cli/lib/runtime/version.py +30 -0
  173. vidbyte_cli-0.1.0/src/vidbyte_cli/lib/runtime_primitives/__init__.py +28 -0
  174. vidbyte_cli-0.1.0/src/vidbyte_cli/lib/runtime_primitives/executor.py +54 -0
  175. vidbyte_cli-0.1.0/src/vidbyte_cli/lib/runtime_primitives/gate.py +105 -0
  176. vidbyte_cli-0.1.0/src/vidbyte_cli/lib/runtime_primitives/hosts.py +45 -0
  177. vidbyte_cli-0.1.0/src/vidbyte_cli/lib/runtime_primitives/planner.py +79 -0
  178. vidbyte_cli-0.1.0/src/vidbyte_cli/lib/runtime_primitives/stages.py +338 -0
  179. vidbyte_cli-0.1.0/src/vidbyte_cli/lib/runtime_primitives/task_board.py +982 -0
  180. vidbyte_cli-0.1.0/src/vidbyte_cli/lib/runtime_primitives/task_board_checkpoints.py +473 -0
  181. vidbyte_cli-0.1.0/src/vidbyte_cli/lib/runtime_primitives/task_board_system.md +33 -0
  182. vidbyte_cli-0.1.0/src/vidbyte_cli/lib/runtime_primitives/task_board_tasks.py +111 -0
  183. vidbyte_cli-0.1.0/src/vidbyte_cli/lib/runtime_primitives/verification.py +68 -0
  184. vidbyte_cli-0.1.0/src/vidbyte_cli/services/__init__.py +5 -0
  185. vidbyte_cli-0.1.0/src/vidbyte_cli/services/ensemble/__init__.py +7 -0
  186. vidbyte_cli-0.1.0/src/vidbyte_cli/services/ensemble/prompts/__init__.py +6 -0
  187. vidbyte_cli-0.1.0/src/vidbyte_cli/services/ensemble/prompts/implementer_system.md +546 -0
  188. vidbyte_cli-0.1.0/src/vidbyte_cli/services/ensemble/prompts/implementer_turn.md +49 -0
  189. vidbyte_cli-0.1.0/src/vidbyte_cli/services/ensemble/prompts/library.py +188 -0
  190. vidbyte_cli-0.1.0/src/vidbyte_cli/services/ensemble/prompts/planner_system.md +728 -0
  191. vidbyte_cli-0.1.0/src/vidbyte_cli/services/ensemble/prompts/planner_turn.md +6 -0
  192. vidbyte_cli-0.1.0/src/vidbyte_cli/services/ensemble/prompts/role_system.md +104 -0
  193. vidbyte_cli-0.1.0/src/vidbyte_cli/services/ensemble/prompts/role_turn.md +19 -0
  194. vidbyte_cli-0.1.0/src/vidbyte_cli/services/ensemble/prompts/selector_final_turn.md +19 -0
  195. vidbyte_cli-0.1.0/src/vidbyte_cli/services/ensemble/prompts/selector_round_turn.md +17 -0
  196. vidbyte_cli-0.1.0/src/vidbyte_cli/services/ensemble/prompts/selector_system.md +89 -0
  197. vidbyte_cli-0.1.0/src/vidbyte_cli/services/ensemble/runner.py +30 -0
  198. vidbyte_cli-0.1.0/src/vidbyte_cli/services/ensemble/sdk.py +134 -0
  199. vidbyte_cli-0.1.0/src/vidbyte_cli/services/ensemble/service.py +233 -0
  200. vidbyte_cli-0.1.0/src/vidbyte_cli/services/ensemble/settings.py +60 -0
  201. vidbyte_cli-0.1.0/src/vidbyte_cli/services/persistence/__init__.py +6 -0
  202. vidbyte_cli-0.1.0/src/vidbyte_cli/services/persistence/prompts/__init__.py +6 -0
  203. vidbyte_cli-0.1.0/src/vidbyte_cli/services/persistence/prompts/library.py +46 -0
  204. vidbyte_cli-0.1.0/src/vidbyte_cli/services/persistence/prompts/persistence_system.md +1 -0
  205. vidbyte_cli-0.1.0/src/vidbyte_cli/services/persistence/prompts/persistence_turn.md +3 -0
  206. vidbyte_cli-0.1.0/src/vidbyte_cli/services/persistence/runner.py +35 -0
  207. vidbyte_cli-0.1.0/src/vidbyte_cli/services/persistence/session.py +116 -0
  208. vidbyte_cli-0.1.0/src/vidbyte_cli/services/suggestions/__init__.py +7 -0
  209. vidbyte_cli-0.1.0/src/vidbyte_cli/services/suggestions/categories.py +270 -0
  210. vidbyte_cli-0.1.0/src/vidbyte_cli/services/suggestions/context.py +222 -0
  211. vidbyte_cli-0.1.0/src/vidbyte_cli/services/suggestions/extra_compute.py +53 -0
  212. vidbyte_cli-0.1.0/src/vidbyte_cli/services/suggestions/handoff.py +173 -0
  213. vidbyte_cli-0.1.0/src/vidbyte_cli/services/suggestions/message_tools.py +47 -0
  214. vidbyte_cli-0.1.0/src/vidbyte_cli/services/suggestions/project.py +253 -0
  215. vidbyte_cli-0.1.0/src/vidbyte_cli/services/suggestions/prompts/__init__.py +1 -0
  216. vidbyte_cli-0.1.0/src/vidbyte_cli/services/suggestions/prompts/categories/__init__.py +3 -0
  217. vidbyte_cli-0.1.0/src/vidbyte_cli/services/suggestions/prompts/categories/adjacent_opportunity.md +37 -0
  218. vidbyte_cli-0.1.0/src/vidbyte_cli/services/suggestions/prompts/categories/alternative.md +38 -0
  219. vidbyte_cli-0.1.0/src/vidbyte_cli/services/suggestions/prompts/categories/big_bets.md +37 -0
  220. vidbyte_cli-0.1.0/src/vidbyte_cli/services/suggestions/prompts/categories/bottleneck.md +38 -0
  221. vidbyte_cli-0.1.0/src/vidbyte_cli/services/suggestions/prompts/categories/business_growth.md +38 -0
  222. vidbyte_cli-0.1.0/src/vidbyte_cli/services/suggestions/prompts/categories/completion.md +37 -0
  223. vidbyte_cli-0.1.0/src/vidbyte_cli/services/suggestions/prompts/categories/continuation.md +37 -0
  224. vidbyte_cli-0.1.0/src/vidbyte_cli/services/suggestions/prompts/categories/coordination.md +37 -0
  225. vidbyte_cli-0.1.0/src/vidbyte_cli/services/suggestions/prompts/categories/creative_exploration.md +37 -0
  226. vidbyte_cli-0.1.0/src/vidbyte_cli/services/suggestions/prompts/categories/cross_domain.md +37 -0
  227. vidbyte_cli-0.1.0/src/vidbyte_cli/services/suggestions/prompts/categories/delegation.md +37 -0
  228. vidbyte_cli-0.1.0/src/vidbyte_cli/services/suggestions/prompts/categories/experiment.md +37 -0
  229. vidbyte_cli-0.1.0/src/vidbyte_cli/services/suggestions/prompts/categories/feedback.md +37 -0
  230. vidbyte_cli-0.1.0/src/vidbyte_cli/services/suggestions/prompts/categories/goal_clarification.md +37 -0
  231. vidbyte_cli-0.1.0/src/vidbyte_cli/services/suggestions/prompts/categories/immediate_next_steps.md +37 -0
  232. vidbyte_cli-0.1.0/src/vidbyte_cli/services/suggestions/prompts/categories/investigation.md +37 -0
  233. vidbyte_cli-0.1.0/src/vidbyte_cli/services/suggestions/prompts/categories/learning.md +37 -0
  234. vidbyte_cli-0.1.0/src/vidbyte_cli/services/suggestions/prompts/categories/leverage.md +37 -0
  235. vidbyte_cli-0.1.0/src/vidbyte_cli/services/suggestions/prompts/categories/long_term_directions.md +37 -0
  236. vidbyte_cli-0.1.0/src/vidbyte_cli/services/suggestions/prompts/categories/preparation.md +37 -0
  237. vidbyte_cli-0.1.0/src/vidbyte_cli/services/suggestions/prompts/categories/prerequisite.md +37 -0
  238. vidbyte_cli-0.1.0/src/vidbyte_cli/services/suggestions/prompts/categories/prioritization.md +37 -0
  239. vidbyte_cli-0.1.0/src/vidbyte_cli/services/suggestions/prompts/categories/product_experience.md +37 -0
  240. vidbyte_cli-0.1.0/src/vidbyte_cli/services/suggestions/prompts/categories/quick_wins.md +37 -0
  241. vidbyte_cli-0.1.0/src/vidbyte_cli/services/suggestions/prompts/categories/reframing.md +37 -0
  242. vidbyte_cli-0.1.0/src/vidbyte_cli/services/suggestions/prompts/categories/risk_prevention.md +37 -0
  243. vidbyte_cli-0.1.0/src/vidbyte_cli/services/suggestions/prompts/categories/simplification.md +37 -0
  244. vidbyte_cli-0.1.0/src/vidbyte_cli/services/suggestions/prompts/categories/stop_or_defer.md +37 -0
  245. vidbyte_cli-0.1.0/src/vidbyte_cli/services/suggestions/prompts/categories/strategy.md +37 -0
  246. vidbyte_cli-0.1.0/src/vidbyte_cli/services/suggestions/prompts/categories/technical_possibilities.md +37 -0
  247. vidbyte_cli-0.1.0/src/vidbyte_cli/services/suggestions/prompts/categories/verification.md +37 -0
  248. vidbyte_cli-0.1.0/src/vidbyte_cli/services/suggestions/prompts/critic.md +209 -0
  249. vidbyte_cli-0.1.0/src/vidbyte_cli/services/suggestions/prompts/critic_message.md +8 -0
  250. vidbyte_cli-0.1.0/src/vidbyte_cli/services/suggestions/prompts/generator.md +64 -0
  251. vidbyte_cli-0.1.0/src/vidbyte_cli/services/suggestions/prompts/library.py +72 -0
  252. vidbyte_cli-0.1.0/src/vidbyte_cli/services/suggestions/prompts/message_generator_argument.md +1 -0
  253. vidbyte_cli-0.1.0/src/vidbyte_cli/services/suggestions/prompts/message_generator_tool.md +1 -0
  254. vidbyte_cli-0.1.0/src/vidbyte_cli/services/suggestions/prompts/message_parent_argument.md +1 -0
  255. vidbyte_cli-0.1.0/src/vidbyte_cli/services/suggestions/prompts/message_parent_tool.md +1 -0
  256. vidbyte_cli-0.1.0/src/vidbyte_cli/services/suggestions/prompts/message_receipt.md +1 -0
  257. vidbyte_cli-0.1.0/src/vidbyte_cli/services/suggestions/prompts/revision.md +8 -0
  258. vidbyte_cli-0.1.0/src/vidbyte_cli/services/suggestions/sdk.py +228 -0
  259. vidbyte_cli-0.1.0/src/vidbyte_cli/services/suggestions/selection.py +78 -0
  260. vidbyte_cli-0.1.0/src/vidbyte_cli/services/suggestions/service.py +540 -0
  261. vidbyte_cli-0.1.0/src/vidbyte_cli/types/__init__.py +0 -0
  262. vidbyte_cli-0.1.0/src/vidbyte_cli/types/api.py +101 -0
  263. vidbyte_cli-0.1.0/src/vidbyte_cli/types/attachments.py +79 -0
  264. vidbyte_cli-0.1.0/src/vidbyte_cli/types/ensemble.py +189 -0
  265. vidbyte_cli-0.1.0/src/vidbyte_cli/types/provider.py +62 -0
  266. vidbyte_cli-0.1.0/src/vidbyte_cli/types/research.py +260 -0
  267. vidbyte_cli-0.1.0/src/vidbyte_cli/types/runtime.py +1098 -0
  268. vidbyte_cli-0.1.0/src/vidbyte_cli/types/suggestions.py +518 -0
  269. vidbyte_cli-0.1.0/src/vidbyte_cli.egg-info/PKG-INFO +335 -0
  270. vidbyte_cli-0.1.0/src/vidbyte_cli.egg-info/SOURCES.txt +272 -0
  271. vidbyte_cli-0.1.0/src/vidbyte_cli.egg-info/dependency_links.txt +1 -0
  272. vidbyte_cli-0.1.0/src/vidbyte_cli.egg-info/entry_points.txt +2 -0
  273. vidbyte_cli-0.1.0/src/vidbyte_cli.egg-info/requires.txt +16 -0
  274. vidbyte_cli-0.1.0/src/vidbyte_cli.egg-info/top_level.txt +1 -0
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Vidbyte
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,335 @@
1
+ Metadata-Version: 2.4
2
+ Name: vidbyte-cli
3
+ Version: 0.1.0
4
+ Summary: Vidbyte CLI: authentication, research threads, and configuration
5
+ Author-email: Vidbyte <hello@vidbyte.ai>
6
+ License-Expression: MIT
7
+ Project-URL: Homepage, https://vidbyte.pro
8
+ Project-URL: Documentation, https://vidbyte.pro/docs/cli
9
+ Project-URL: Repository, https://github.com/cerredz/vidbyte-cli
10
+ Project-URL: Issues, https://github.com/cerredz/vidbyte-cli/issues
11
+ Keywords: vidbyte,cli,research,ai-agents,codex,terminal
12
+ Classifier: Development Status :: 3 - Alpha
13
+ Classifier: Environment :: Console
14
+ Classifier: Intended Audience :: Developers
15
+ Classifier: Operating System :: OS Independent
16
+ Classifier: Programming Language :: Python :: 3
17
+ Classifier: Programming Language :: Python :: 3 :: Only
18
+ Classifier: Programming Language :: Python :: 3.11
19
+ Classifier: Programming Language :: Python :: 3.12
20
+ Classifier: Programming Language :: Python :: 3.13
21
+ Classifier: Programming Language :: Python :: 3.14
22
+ Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
23
+ Classifier: Topic :: Utilities
24
+ Requires-Python: >=3.11
25
+ Description-Content-Type: text/markdown
26
+ License-File: LICENSE
27
+ Requires-Dist: click<9,>=8.1
28
+ Requires-Dist: httpx<1,>=0.27
29
+ Requires-Dist: keyring<26,>=25.2
30
+ Requires-Dist: platformdirs<5,>=4.4
31
+ Requires-Dist: pydantic<3,>=2.6
32
+ Requires-Dist: x402[evm]==2.8.0
33
+ Requires-Dist: vidbyte-sdk[codex]<0.3,>=0.2.0
34
+ Provides-Extra: codex
35
+ Requires-Dist: vidbyte-sdk[codex]<0.3,>=0.2.0; extra == "codex"
36
+ Provides-Extra: dev
37
+ Requires-Dist: build==1.5.0; extra == "dev"
38
+ Requires-Dist: mypy==2.3.0; extra == "dev"
39
+ Requires-Dist: ruff==0.16.0; extra == "dev"
40
+ Requires-Dist: twine==6.2.0; extra == "dev"
41
+ Dynamic: license-file
42
+
43
+ # Vidbyte CLI
44
+
45
+ Vidbyte persistence runs one session through the installed Codex CLI, using an OpenAI
46
+ BYOK key and the current working directory. It verifies a two-cent Vidbyte admission
47
+ before starting the agent. Other runtime executors remain scaffolds.
48
+
49
+ The Vidbyte CLI: authenticate, run Vidbyte research threads, and manage configuration.
50
+ Research executes entirely on the Vidbyte backend — this CLI admits runs, reads their durable
51
+ status, and lists the threads you own.
52
+
53
+ > **Status:** persistence requires a backend deployment with persistence activation and
54
+ > grant verification. Adversarial-team still has no executor. Deep dives, artifact bodies,
55
+ > sources, and exports remain website-only.
56
+
57
+ ## Install
58
+
59
+ `vidbyte-cli` is published on PyPI and requires Python 3.11 or newer.
60
+
61
+ ```bash
62
+ python -m pip install vidbyte-cli # into an activated virtual environment
63
+ pipx install vidbyte-cli # or: a global command in its own environment
64
+ python -m pip install "vidbyte-cli[codex]" # add local runtime primitives
65
+ vidbyte-cli --help
66
+ ```
67
+
68
+ The step-by-step guide lives at <https://vidbyte.pro/docs/cli/quickstart>.
69
+
70
+ If the CLI is useful to you, star it on GitHub from your terminal:
71
+
72
+ ```bash
73
+ vidbyte-cli star # stars through the GitHub CLI (gh) when it is logged in
74
+ vidbyte-cli star --browser # or open https://github.com/cerredz/vidbyte-cli and click Star
75
+ ```
76
+
77
+ Bugs and feature requests go to <https://github.com/cerredz/vidbyte-cli/issues>.
78
+
79
+ ## Install (development)
80
+
81
+ ```bash
82
+ python -m venv .venv
83
+ source .venv/bin/activate # Windows: .venv\Scripts\activate
84
+ python -m pip install -e ".[dev]"
85
+ vidbyte-cli --help
86
+ ```
87
+
88
+ The console command is `vidbyte-cli`. The reusable Python entry function returns an integer
89
+ status; only the generated console wrapper and `python -m vidbyte_cli` terminate a process.
90
+
91
+ ## Global options
92
+
93
+ Root options precede the command: `vidbyte-cli --format json --profile work research threads`.
94
+
95
+ | Option | Behavior |
96
+ | --- | --- |
97
+ | `--format human\|json\|jsonl\|none` | Human, one-document, streaming, or suppressed results |
98
+ | `--json` | Alias for `--format json`; conflicts with any other `--format` value |
99
+ | `--profile NAME` | Select a configuration and credential scope |
100
+ | `--no-input` | Never prompt for interactive input |
101
+ | `--color auto\|always\|never` | Color preference, subject to terminal safety |
102
+ | `--debug` | Show redacted stack frames — never exception values, causes, or locals |
103
+
104
+ Results are the only thing written to stdout; progress, warnings, diagnostics, and errors go
105
+ to stderr. JSON and JSONL records carry `schema_version` and `kind`, and machine errors use
106
+ that same envelope.
107
+
108
+ Every error also carries `description`, `trace`, and `file_path` — non-sensitive fields that
109
+ let an agent calling this CLI diagnose and correct its own invocation.
110
+
111
+ ## Commands
112
+
113
+ | Command | Purpose |
114
+ | --- | --- |
115
+ | `vidbyte-cli login` / `logout` / `whoami` | Manage the stored Vidbyte API key |
116
+ | `vidbyte-cli research start <prompt>` | Open a research thread and admit its first run |
117
+ | `vidbyte-cli research add <thread_id> <prompt>` | Add another run to an existing thread |
118
+ | `vidbyte-cli research resume <run_id>` | Continue a partial, failed, or out-of-credit run |
119
+ | `vidbyte-cli research status <run_id>` | Show one run's current status |
120
+ | `vidbyte-cli research watch <run_id>` | Follow one run until it settles |
121
+ | `vidbyte-cli research threads` | List your research threads |
122
+ | `vidbyte-cli research thread <thread_id>` | Show one thread and its rollup counters |
123
+ | `vidbyte-cli runtime list` | List local runtime primitives and admission prices |
124
+ | `vidbyte-cli runtime doctor` | Detect supported native coding-agent hosts |
125
+ | `vidbyte-cli runtime adversarial-team <task>` | Validate the first local primitive launch (executor not yet implemented) |
126
+ | `vidbyte-cli runtime same-host-ensemble <task>` | Run a role-differentiated agent ensemble on this machine |
127
+ | `vidbyte-cli runtime persistence <task> [--strength 1-6]` | Run one Codex session with 6–100 additional improvement turns |
128
+ | `vidbyte-cli config get\|set` | Manage CLI configuration |
129
+ | `vidbyte-cli doctor` | Diagnose CLI setup |
130
+ | `vidbyte-cli star [--browser]` | Star the public repository on GitHub (only when you ask) |
131
+ | `vidbyte-cli agents suggest run --goal "..." [--count 5]` | Generate and independently critique ranked next-action ideas with handoffs |
132
+ | `vidbyte-cli agents suggest categories [--view-all|--view ID]` | Inspect the 31 suggestion categories (no model, no credentials) |
133
+ | `vidbyte-cli agents suggest handoff --input result.json --idea idea-003` | Extract one handoff packet (no model) |
134
+ | `vidbyte-cli agents suggest project create --key KEY --title TITLE --description TEXT` | Create a local suggestion-memory project (no model) |
135
+ | `vidbyte-cli agents suggest project list` | List local suggestion-memory projects (no model) |
136
+ | `vidbyte-cli agents suggest feedback accept\|reject --project KEY --suggestion TEXT [--reason TEXT]` | Record explicit user feedback for a project (no model) |
137
+
138
+ ### Suggestion agent
139
+
140
+ `agents suggest run` takes one nonempty `--goal` plus optional repeated context and `--files`
141
+ values. It does not accept a run-level JSON input file: callers pass argv values into one strict
142
+ request dataclass, which keeps defaults and validation in one place. The generator always uses
143
+ the configured provider default, while `--critic-model` is the only model override and applies
144
+ only to independent review. `--count` accepts 2–15, `--rounds` accepts 1–8, and
145
+ `--extra-compute` runs one focused generator context per selected category before critique.
146
+ The default run uses the configured provider through `vidbyte-sdk`; `--dry-run`, `categories`,
147
+ and `handoff` are credential-free.
148
+
149
+ Context is limited to 5,000,000 characters per item and in aggregate, with truncation or
150
+ omission recorded in the result manifest. Category prompts are high-level guidance, and each
151
+ surviving idea carries one primary category, evidence references, decisions, eight-to-ten
152
+ considerations, completion checks, and a deterministic handoff whose authority is not granted
153
+ by the handoff itself. Every dynamic text or path option has a named, long-form help asset with
154
+ usage placeholders, boundaries, defaults, output behavior, failure recovery, and permission
155
+ guidance; that caller-facing prose is not copied into the model context.
156
+
157
+ Suggestion projects are optional local JSON memory. The catalog is stored in the platform-native
158
+ Vidbyte data directory as `suggestions/projects.json`, and each project links to one file under
159
+ `suggestions/projects/` holding its ordered accepted and rejected feedback. Create a project
160
+ once, pass `--project KEY` to a run to load its title, description, and feedback as context,
161
+ then record the user's explicit reactions with the feedback commands the run prints. Silence,
162
+ ambiguity, and unrelated implementation are never acceptance or rejection. Without
163
+ `--project`, a run reads no project file.
164
+
165
+ ```bash
166
+ vidbyte-cli agents suggest project create \n --key vidbyte-cli \n --title "Vidbyte CLI" \n --description "The local CLI and agent runtime."
167
+ vidbyte-cli agents suggest run --project vidbyte-cli --goal "Choose the next CLI improvement."
168
+ vidbyte-cli agents suggest feedback reject \n --project vidbyte-cli \n --suggestion "Use MongoDB for project memory" \n --reason "It adds unnecessary backend infrastructure."
169
+ ```
170
+
171
+ ### Research threads
172
+
173
+ A thread is addressed only by the public ID that `research start` and `research threads`
174
+ print. That is the value to pass back to `research add` and `research thread`; the internal
175
+ identifier some other tools show is rejected before a request is sent.
176
+
177
+ `research status` and `research watch` report state, phase, continuation count, and a
178
+ timestamp — the whole of what the API publishes for a run. Neither prints a thread ID,
179
+ because the status route does not carry a usable one.
180
+
181
+ Starting, adding, and resuming are priced and idempotent. Each sends a generated
182
+ `Idempotency-Key` and reports it, so `--idempotency-key <that value>` retries a mutation
183
+ whose outcome you did not see without paying for it twice. `research watch` polls every ten
184
+ seconds and backs off from there: API keys are metered on a weighted per-minute budget, and
185
+ polling harder can exhaust the budget you need to start the next run.
186
+
187
+ ### Local runtime primitives
188
+
189
+ `runtime` commands execute on your machine, driving a native coding agent you already
190
+ installed. Vidbyte charges a small flat admission fee for the orchestration; the model usage
191
+ runs against your own provider subscription, not ours.
192
+
193
+ Install the extra first — it is not part of the base package:
194
+
195
+ ```bash
196
+ pip install "vidbyte-cli[codex]"
197
+ ```
198
+
199
+ `runtime same-host-ensemble <task>` runs four stages on one machine. A planner agent reads
200
+ your task and generates the ensemble's roles, writing each role's complete system prompt
201
+ rather than picking from a fixed list, so the perspectives match the task. Each role then runs
202
+ concurrently in its own read-only fork and returns 5 to 10 distinct approaches, each with its
203
+ pros, cons, risks, and the files it would touch. A role cannot edit anything — the sandbox
204
+ forbids it, not just the prompt. A selector fork then narrows every approach from every role
205
+ down to one, in rounds: each round keeps a fifth of what it was given, weighs the pros and
206
+ cons of every candidate it keeps, and records why the rest were dropped. Finally one
207
+ write-enabled fork receives the selected approach and the selector's brief, and does the work.
208
+ That last fork is the only agent in the topology permitted to modify your workspace.
209
+
210
+ | Option | Default | Meaning |
211
+ |--------|---------|---------|
212
+ | `--host` | `codex` | Which installed coding agent hosts the ensemble. Codex is the only host with verified thread-fork and per-fork sandbox support, so it is the only accepted value. |
213
+ | `--roles` | `3` | How many specialist roles the planner invents for this task (3-100). More roles widen the approach slate the selector narrows; every role runs concurrently in its own read-only fork against your subscription. |
214
+ | `--model` | provider default | Model override forwarded to every Codex turn and fork in the run. Omit to use the provider default. |
215
+ | `--reasoning-effort` | provider default | Reasoning effort forwarded to every Codex turn in the run (`none`, `minimal`, `low`, `medium`, `high`, `xhigh`). Omit to use the provider default. |
216
+ | `--idempotency-key` | generated | Reuse a key to retry a priced admission without being charged twice. Omit to generate one per invocation. |
217
+
218
+ A role that times out (after a fixed 300-second bound) or fails is reported in the result
219
+ and the run continues, because a partial ensemble still beats a single agent. The run
220
+ stops only when every role failed.
221
+
222
+ Two costs are worth separating. Admission is two cents, charged once, after the CLI has
223
+ confirmed your input, the SDK, and the host — so a missing Codex never costs you anything.
224
+ The grant is then verified through the layered runtime gate before any agent starts; a
225
+ rejected grant fails the run without starting a single fork. The larger cost is your own
226
+ provider usage: the SDK opens a fresh Codex app-server per turn
227
+ and per fork, so a three-role run is roughly a dozen of them against your subscription, and
228
+ `--roles 100` is a thousand approaches for the selector to read. Raise it deliberately.
229
+
230
+ ### Persistent Codex agent
231
+
232
+ ```bash
233
+ vidbyte-cli login
234
+ vidbyte-cli provider login openai
235
+ vidbyte-cli runtime persistence "Your exact task" --strength 1
236
+ ```
237
+
238
+ Install Codex on PATH first. Persistence uses the Vidbyte SDK's `CodexHarnessAgent`;
239
+ installation pins the SDK source revision with the required Codex integration and
240
+ requires Git to fetch it. OpenAI credentials resolve from `OPENAI_API_KEY`, then the
241
+ selected profile's keyring or approved file fallback. They are passed only to the Codex
242
+ child, using its Responses API provider configuration; native Codex login is unchanged.
243
+ The configured Codex model must be available to that OpenAI API key.
244
+
245
+ Strength tiers 1–6 send **6, 8, 20, 40, 70, 100 additional turns**, after the exact original
246
+ task. Every follow-up includes encouragement and the exact original task. All turns resume
247
+ the same explicit session ID. `--host auto` selects Codex; other hosts are unsupported.
248
+ Codex runs with workspace-write sandboxing, without a sandbox bypass.
249
+
250
+ Each invocation costs two cents from the Vidbyte API wallet, plus your OpenAI usage.
251
+ Grant verification is authenticated and checks signature, caller identity, request binding,
252
+ capability, price and expiry. No signing secret is distributed to the CLI. Task text and
253
+ provider credentials never enter Vidbyte admission requests.
254
+
255
+ Use a caller-chosen `--idempotency-key` (8–128 allowed characters) to recover an uncertain
256
+ admission request without another debit. Reusing it does not resume local work: a new CLI
257
+ invocation starts a new Codex session, so do not rerun a completed task with a recovery key.
258
+ Ctrl+C cancels the active SDK turn and closes its Codex connection.
259
+ A failed or hour-long turn stops the loop;
260
+ completed local work remains, and the flat admission fee is not automatically refunded.
261
+ This is a foreground loop, not a daemon that survives terminal closure.
262
+
263
+ Only the final response is written to stdout; progress goes to stderr. Updates explain
264
+ preparation, admission, the initial task, and subsequent improvement phases without
265
+ displaying loop indices. JSON output includes
266
+ `session_id`, `continuation_turns`, and `text` in the standard result envelope.
267
+
268
+ ## Configuration
269
+
270
+ | Variable | Meaning |
271
+ | --- | --- |
272
+ | `VIDBYTE_API_URL` | API host (default `https://vidbyte-backend.onrender.com`) |
273
+ | `VIDBYTE_API_KEY` | API key; overrides the stored credential for the current shell |
274
+ | `VIDBYTE_PROFILE` | Profile name; the lower-precedence equivalent of `--profile` |
275
+ | `VIDBYTE_OUTPUT_FORMAT` / `VIDBYTE_COLOR` | Presentation defaults |
276
+ | `VIDBYTE_REQUEST_TIMEOUT_SECONDS` | Per-request timeout |
277
+
278
+ Non-secret settings resolve command option → environment → selected profile → default
279
+ profile → built-in, and `vidbyte-cli config get <key>` reports both the effective value and
280
+ which layer supplied it. `config set` accepts `api_url`, `output_format`, `color`, and
281
+ `request_timeout_seconds`.
282
+
283
+ API keys resolve separately: environment → OS keyring → permission-restricted file. An
284
+ environment key is never persisted, and the restricted file is used only with explicit
285
+ consent. Configuration, cache, state, and data live in the platform's standard application
286
+ directories; `~/.vidbyte/` is still read, and is copied across by a verified migration that
287
+ leaves the originals in place.
288
+
289
+ ## Architecture
290
+
291
+ Local runtimes are separate from hosted harnesses. Vidbyte authenticates a launch and
292
+ charges a flat admission fee from the API-key wallet, while persistence executes in Codex
293
+ using the caller's OpenAI API key. x402 funds that wallet through the backend's
294
+ `POST /agent/topup` route; machine environment and repository contents are never uploaded
295
+ for admission.
296
+
297
+ Every command is static and known at release time. Runtime discovery adds one authenticated
298
+ catalog route. Persistence calls activation and authenticated grant verification before
299
+ launching Codex. The layering rules and the full backend contract live in the source
300
+ repository's `docs/architecture.md`.
301
+
302
+ The application composition root lives in `src/vidbyte_cli/lib/runtime`. It constructs one
303
+ invocation context, binds stdin/stdout/stderr through `lib/io`, resolves output and error
304
+ policy, and builds the Click tree.
305
+
306
+ ## Verify
307
+
308
+ ```bash
309
+ python -m pip install -e ".[dev]"
310
+ python scripts/run_ci.py
311
+ ```
312
+
313
+ The canonical gate runs Ruff lint/format checks, strict mypy, byte compilation, offline
314
+ command smoke checks, sdist/wheel build, Twine metadata validation, and an installed-wheel
315
+ smoke check. GitHub Actions invokes the same script on Linux, Windows, and macOS.
316
+
317
+ ## Runtime admission payments
318
+
319
+ `vidbyte-cli runtime persistence "your task"` uses your authenticated Vidbyte API
320
+ balance by default. The flat $0.02 admission is recorded as ordinary API usage.
321
+ Local Codex model usage is still paid through your OpenAI credentials.
322
+
323
+ To pay the admission directly with x402, set `VIDBYTE_X402_PRIVATE_KEY` in your
324
+ shell and run `vidbyte-cli runtime persistence "your task" --with-x402-payment`.
325
+ A Vidbyte API key with `runtime:write` is required for ownership in both modes.
326
+ `VIDBYTE_X402_NETWORK` defaults to Base (`eip155:8453`); Base Sepolia
327
+ (`eip155:84532`) is supported for testing. Keep private keys out of command arguments.
328
+ The wallet must already hold the network's USDC; the CLI does not fund it.
329
+
330
+ Both modes verify the signed receipt against Vidbyte's database before launching
331
+ Codex. The API-balance path also verifies the exact usage-ledger debit. Payment
332
+ credentials are not passed to Codex. The CLI never switches payment methods automatically.
333
+ Recover a failed admission with the same `--idempotency-key`; a retry preserves the
334
+ original grant and expiry. An uncertain payment outcome must be reconciled before
335
+ starting another purchase. Verification does not refund a failed local execution.
@@ -0,0 +1,293 @@
1
+ # Vidbyte CLI
2
+
3
+ Vidbyte persistence runs one session through the installed Codex CLI, using an OpenAI
4
+ BYOK key and the current working directory. It verifies a two-cent Vidbyte admission
5
+ before starting the agent. Other runtime executors remain scaffolds.
6
+
7
+ The Vidbyte CLI: authenticate, run Vidbyte research threads, and manage configuration.
8
+ Research executes entirely on the Vidbyte backend — this CLI admits runs, reads their durable
9
+ status, and lists the threads you own.
10
+
11
+ > **Status:** persistence requires a backend deployment with persistence activation and
12
+ > grant verification. Adversarial-team still has no executor. Deep dives, artifact bodies,
13
+ > sources, and exports remain website-only.
14
+
15
+ ## Install
16
+
17
+ `vidbyte-cli` is published on PyPI and requires Python 3.11 or newer.
18
+
19
+ ```bash
20
+ python -m pip install vidbyte-cli # into an activated virtual environment
21
+ pipx install vidbyte-cli # or: a global command in its own environment
22
+ python -m pip install "vidbyte-cli[codex]" # add local runtime primitives
23
+ vidbyte-cli --help
24
+ ```
25
+
26
+ The step-by-step guide lives at <https://vidbyte.pro/docs/cli/quickstart>.
27
+
28
+ If the CLI is useful to you, star it on GitHub from your terminal:
29
+
30
+ ```bash
31
+ vidbyte-cli star # stars through the GitHub CLI (gh) when it is logged in
32
+ vidbyte-cli star --browser # or open https://github.com/cerredz/vidbyte-cli and click Star
33
+ ```
34
+
35
+ Bugs and feature requests go to <https://github.com/cerredz/vidbyte-cli/issues>.
36
+
37
+ ## Install (development)
38
+
39
+ ```bash
40
+ python -m venv .venv
41
+ source .venv/bin/activate # Windows: .venv\Scripts\activate
42
+ python -m pip install -e ".[dev]"
43
+ vidbyte-cli --help
44
+ ```
45
+
46
+ The console command is `vidbyte-cli`. The reusable Python entry function returns an integer
47
+ status; only the generated console wrapper and `python -m vidbyte_cli` terminate a process.
48
+
49
+ ## Global options
50
+
51
+ Root options precede the command: `vidbyte-cli --format json --profile work research threads`.
52
+
53
+ | Option | Behavior |
54
+ | --- | --- |
55
+ | `--format human\|json\|jsonl\|none` | Human, one-document, streaming, or suppressed results |
56
+ | `--json` | Alias for `--format json`; conflicts with any other `--format` value |
57
+ | `--profile NAME` | Select a configuration and credential scope |
58
+ | `--no-input` | Never prompt for interactive input |
59
+ | `--color auto\|always\|never` | Color preference, subject to terminal safety |
60
+ | `--debug` | Show redacted stack frames — never exception values, causes, or locals |
61
+
62
+ Results are the only thing written to stdout; progress, warnings, diagnostics, and errors go
63
+ to stderr. JSON and JSONL records carry `schema_version` and `kind`, and machine errors use
64
+ that same envelope.
65
+
66
+ Every error also carries `description`, `trace`, and `file_path` — non-sensitive fields that
67
+ let an agent calling this CLI diagnose and correct its own invocation.
68
+
69
+ ## Commands
70
+
71
+ | Command | Purpose |
72
+ | --- | --- |
73
+ | `vidbyte-cli login` / `logout` / `whoami` | Manage the stored Vidbyte API key |
74
+ | `vidbyte-cli research start <prompt>` | Open a research thread and admit its first run |
75
+ | `vidbyte-cli research add <thread_id> <prompt>` | Add another run to an existing thread |
76
+ | `vidbyte-cli research resume <run_id>` | Continue a partial, failed, or out-of-credit run |
77
+ | `vidbyte-cli research status <run_id>` | Show one run's current status |
78
+ | `vidbyte-cli research watch <run_id>` | Follow one run until it settles |
79
+ | `vidbyte-cli research threads` | List your research threads |
80
+ | `vidbyte-cli research thread <thread_id>` | Show one thread and its rollup counters |
81
+ | `vidbyte-cli runtime list` | List local runtime primitives and admission prices |
82
+ | `vidbyte-cli runtime doctor` | Detect supported native coding-agent hosts |
83
+ | `vidbyte-cli runtime adversarial-team <task>` | Validate the first local primitive launch (executor not yet implemented) |
84
+ | `vidbyte-cli runtime same-host-ensemble <task>` | Run a role-differentiated agent ensemble on this machine |
85
+ | `vidbyte-cli runtime persistence <task> [--strength 1-6]` | Run one Codex session with 6–100 additional improvement turns |
86
+ | `vidbyte-cli config get\|set` | Manage CLI configuration |
87
+ | `vidbyte-cli doctor` | Diagnose CLI setup |
88
+ | `vidbyte-cli star [--browser]` | Star the public repository on GitHub (only when you ask) |
89
+ | `vidbyte-cli agents suggest run --goal "..." [--count 5]` | Generate and independently critique ranked next-action ideas with handoffs |
90
+ | `vidbyte-cli agents suggest categories [--view-all|--view ID]` | Inspect the 31 suggestion categories (no model, no credentials) |
91
+ | `vidbyte-cli agents suggest handoff --input result.json --idea idea-003` | Extract one handoff packet (no model) |
92
+ | `vidbyte-cli agents suggest project create --key KEY --title TITLE --description TEXT` | Create a local suggestion-memory project (no model) |
93
+ | `vidbyte-cli agents suggest project list` | List local suggestion-memory projects (no model) |
94
+ | `vidbyte-cli agents suggest feedback accept\|reject --project KEY --suggestion TEXT [--reason TEXT]` | Record explicit user feedback for a project (no model) |
95
+
96
+ ### Suggestion agent
97
+
98
+ `agents suggest run` takes one nonempty `--goal` plus optional repeated context and `--files`
99
+ values. It does not accept a run-level JSON input file: callers pass argv values into one strict
100
+ request dataclass, which keeps defaults and validation in one place. The generator always uses
101
+ the configured provider default, while `--critic-model` is the only model override and applies
102
+ only to independent review. `--count` accepts 2–15, `--rounds` accepts 1–8, and
103
+ `--extra-compute` runs one focused generator context per selected category before critique.
104
+ The default run uses the configured provider through `vidbyte-sdk`; `--dry-run`, `categories`,
105
+ and `handoff` are credential-free.
106
+
107
+ Context is limited to 5,000,000 characters per item and in aggregate, with truncation or
108
+ omission recorded in the result manifest. Category prompts are high-level guidance, and each
109
+ surviving idea carries one primary category, evidence references, decisions, eight-to-ten
110
+ considerations, completion checks, and a deterministic handoff whose authority is not granted
111
+ by the handoff itself. Every dynamic text or path option has a named, long-form help asset with
112
+ usage placeholders, boundaries, defaults, output behavior, failure recovery, and permission
113
+ guidance; that caller-facing prose is not copied into the model context.
114
+
115
+ Suggestion projects are optional local JSON memory. The catalog is stored in the platform-native
116
+ Vidbyte data directory as `suggestions/projects.json`, and each project links to one file under
117
+ `suggestions/projects/` holding its ordered accepted and rejected feedback. Create a project
118
+ once, pass `--project KEY` to a run to load its title, description, and feedback as context,
119
+ then record the user's explicit reactions with the feedback commands the run prints. Silence,
120
+ ambiguity, and unrelated implementation are never acceptance or rejection. Without
121
+ `--project`, a run reads no project file.
122
+
123
+ ```bash
124
+ vidbyte-cli agents suggest project create \n --key vidbyte-cli \n --title "Vidbyte CLI" \n --description "The local CLI and agent runtime."
125
+ vidbyte-cli agents suggest run --project vidbyte-cli --goal "Choose the next CLI improvement."
126
+ vidbyte-cli agents suggest feedback reject \n --project vidbyte-cli \n --suggestion "Use MongoDB for project memory" \n --reason "It adds unnecessary backend infrastructure."
127
+ ```
128
+
129
+ ### Research threads
130
+
131
+ A thread is addressed only by the public ID that `research start` and `research threads`
132
+ print. That is the value to pass back to `research add` and `research thread`; the internal
133
+ identifier some other tools show is rejected before a request is sent.
134
+
135
+ `research status` and `research watch` report state, phase, continuation count, and a
136
+ timestamp — the whole of what the API publishes for a run. Neither prints a thread ID,
137
+ because the status route does not carry a usable one.
138
+
139
+ Starting, adding, and resuming are priced and idempotent. Each sends a generated
140
+ `Idempotency-Key` and reports it, so `--idempotency-key <that value>` retries a mutation
141
+ whose outcome you did not see without paying for it twice. `research watch` polls every ten
142
+ seconds and backs off from there: API keys are metered on a weighted per-minute budget, and
143
+ polling harder can exhaust the budget you need to start the next run.
144
+
145
+ ### Local runtime primitives
146
+
147
+ `runtime` commands execute on your machine, driving a native coding agent you already
148
+ installed. Vidbyte charges a small flat admission fee for the orchestration; the model usage
149
+ runs against your own provider subscription, not ours.
150
+
151
+ Install the extra first — it is not part of the base package:
152
+
153
+ ```bash
154
+ pip install "vidbyte-cli[codex]"
155
+ ```
156
+
157
+ `runtime same-host-ensemble <task>` runs four stages on one machine. A planner agent reads
158
+ your task and generates the ensemble's roles, writing each role's complete system prompt
159
+ rather than picking from a fixed list, so the perspectives match the task. Each role then runs
160
+ concurrently in its own read-only fork and returns 5 to 10 distinct approaches, each with its
161
+ pros, cons, risks, and the files it would touch. A role cannot edit anything — the sandbox
162
+ forbids it, not just the prompt. A selector fork then narrows every approach from every role
163
+ down to one, in rounds: each round keeps a fifth of what it was given, weighs the pros and
164
+ cons of every candidate it keeps, and records why the rest were dropped. Finally one
165
+ write-enabled fork receives the selected approach and the selector's brief, and does the work.
166
+ That last fork is the only agent in the topology permitted to modify your workspace.
167
+
168
+ | Option | Default | Meaning |
169
+ |--------|---------|---------|
170
+ | `--host` | `codex` | Which installed coding agent hosts the ensemble. Codex is the only host with verified thread-fork and per-fork sandbox support, so it is the only accepted value. |
171
+ | `--roles` | `3` | How many specialist roles the planner invents for this task (3-100). More roles widen the approach slate the selector narrows; every role runs concurrently in its own read-only fork against your subscription. |
172
+ | `--model` | provider default | Model override forwarded to every Codex turn and fork in the run. Omit to use the provider default. |
173
+ | `--reasoning-effort` | provider default | Reasoning effort forwarded to every Codex turn in the run (`none`, `minimal`, `low`, `medium`, `high`, `xhigh`). Omit to use the provider default. |
174
+ | `--idempotency-key` | generated | Reuse a key to retry a priced admission without being charged twice. Omit to generate one per invocation. |
175
+
176
+ A role that times out (after a fixed 300-second bound) or fails is reported in the result
177
+ and the run continues, because a partial ensemble still beats a single agent. The run
178
+ stops only when every role failed.
179
+
180
+ Two costs are worth separating. Admission is two cents, charged once, after the CLI has
181
+ confirmed your input, the SDK, and the host — so a missing Codex never costs you anything.
182
+ The grant is then verified through the layered runtime gate before any agent starts; a
183
+ rejected grant fails the run without starting a single fork. The larger cost is your own
184
+ provider usage: the SDK opens a fresh Codex app-server per turn
185
+ and per fork, so a three-role run is roughly a dozen of them against your subscription, and
186
+ `--roles 100` is a thousand approaches for the selector to read. Raise it deliberately.
187
+
188
+ ### Persistent Codex agent
189
+
190
+ ```bash
191
+ vidbyte-cli login
192
+ vidbyte-cli provider login openai
193
+ vidbyte-cli runtime persistence "Your exact task" --strength 1
194
+ ```
195
+
196
+ Install Codex on PATH first. Persistence uses the Vidbyte SDK's `CodexHarnessAgent`;
197
+ installation pins the SDK source revision with the required Codex integration and
198
+ requires Git to fetch it. OpenAI credentials resolve from `OPENAI_API_KEY`, then the
199
+ selected profile's keyring or approved file fallback. They are passed only to the Codex
200
+ child, using its Responses API provider configuration; native Codex login is unchanged.
201
+ The configured Codex model must be available to that OpenAI API key.
202
+
203
+ Strength tiers 1–6 send **6, 8, 20, 40, 70, 100 additional turns**, after the exact original
204
+ task. Every follow-up includes encouragement and the exact original task. All turns resume
205
+ the same explicit session ID. `--host auto` selects Codex; other hosts are unsupported.
206
+ Codex runs with workspace-write sandboxing, without a sandbox bypass.
207
+
208
+ Each invocation costs two cents from the Vidbyte API wallet, plus your OpenAI usage.
209
+ Grant verification is authenticated and checks signature, caller identity, request binding,
210
+ capability, price and expiry. No signing secret is distributed to the CLI. Task text and
211
+ provider credentials never enter Vidbyte admission requests.
212
+
213
+ Use a caller-chosen `--idempotency-key` (8–128 allowed characters) to recover an uncertain
214
+ admission request without another debit. Reusing it does not resume local work: a new CLI
215
+ invocation starts a new Codex session, so do not rerun a completed task with a recovery key.
216
+ Ctrl+C cancels the active SDK turn and closes its Codex connection.
217
+ A failed or hour-long turn stops the loop;
218
+ completed local work remains, and the flat admission fee is not automatically refunded.
219
+ This is a foreground loop, not a daemon that survives terminal closure.
220
+
221
+ Only the final response is written to stdout; progress goes to stderr. Updates explain
222
+ preparation, admission, the initial task, and subsequent improvement phases without
223
+ displaying loop indices. JSON output includes
224
+ `session_id`, `continuation_turns`, and `text` in the standard result envelope.
225
+
226
+ ## Configuration
227
+
228
+ | Variable | Meaning |
229
+ | --- | --- |
230
+ | `VIDBYTE_API_URL` | API host (default `https://vidbyte-backend.onrender.com`) |
231
+ | `VIDBYTE_API_KEY` | API key; overrides the stored credential for the current shell |
232
+ | `VIDBYTE_PROFILE` | Profile name; the lower-precedence equivalent of `--profile` |
233
+ | `VIDBYTE_OUTPUT_FORMAT` / `VIDBYTE_COLOR` | Presentation defaults |
234
+ | `VIDBYTE_REQUEST_TIMEOUT_SECONDS` | Per-request timeout |
235
+
236
+ Non-secret settings resolve command option → environment → selected profile → default
237
+ profile → built-in, and `vidbyte-cli config get <key>` reports both the effective value and
238
+ which layer supplied it. `config set` accepts `api_url`, `output_format`, `color`, and
239
+ `request_timeout_seconds`.
240
+
241
+ API keys resolve separately: environment → OS keyring → permission-restricted file. An
242
+ environment key is never persisted, and the restricted file is used only with explicit
243
+ consent. Configuration, cache, state, and data live in the platform's standard application
244
+ directories; `~/.vidbyte/` is still read, and is copied across by a verified migration that
245
+ leaves the originals in place.
246
+
247
+ ## Architecture
248
+
249
+ Local runtimes are separate from hosted harnesses. Vidbyte authenticates a launch and
250
+ charges a flat admission fee from the API-key wallet, while persistence executes in Codex
251
+ using the caller's OpenAI API key. x402 funds that wallet through the backend's
252
+ `POST /agent/topup` route; machine environment and repository contents are never uploaded
253
+ for admission.
254
+
255
+ Every command is static and known at release time. Runtime discovery adds one authenticated
256
+ catalog route. Persistence calls activation and authenticated grant verification before
257
+ launching Codex. The layering rules and the full backend contract live in the source
258
+ repository's `docs/architecture.md`.
259
+
260
+ The application composition root lives in `src/vidbyte_cli/lib/runtime`. It constructs one
261
+ invocation context, binds stdin/stdout/stderr through `lib/io`, resolves output and error
262
+ policy, and builds the Click tree.
263
+
264
+ ## Verify
265
+
266
+ ```bash
267
+ python -m pip install -e ".[dev]"
268
+ python scripts/run_ci.py
269
+ ```
270
+
271
+ The canonical gate runs Ruff lint/format checks, strict mypy, byte compilation, offline
272
+ command smoke checks, sdist/wheel build, Twine metadata validation, and an installed-wheel
273
+ smoke check. GitHub Actions invokes the same script on Linux, Windows, and macOS.
274
+
275
+ ## Runtime admission payments
276
+
277
+ `vidbyte-cli runtime persistence "your task"` uses your authenticated Vidbyte API
278
+ balance by default. The flat $0.02 admission is recorded as ordinary API usage.
279
+ Local Codex model usage is still paid through your OpenAI credentials.
280
+
281
+ To pay the admission directly with x402, set `VIDBYTE_X402_PRIVATE_KEY` in your
282
+ shell and run `vidbyte-cli runtime persistence "your task" --with-x402-payment`.
283
+ A Vidbyte API key with `runtime:write` is required for ownership in both modes.
284
+ `VIDBYTE_X402_NETWORK` defaults to Base (`eip155:8453`); Base Sepolia
285
+ (`eip155:84532`) is supported for testing. Keep private keys out of command arguments.
286
+ The wallet must already hold the network's USDC; the CLI does not fund it.
287
+
288
+ Both modes verify the signed receipt against Vidbyte's database before launching
289
+ Codex. The API-balance path also verifies the exact usage-ledger debit. Payment
290
+ credentials are not passed to Codex. The CLI never switches payment methods automatically.
291
+ Recover a failed admission with the same `--idempotency-key`; a retry preserves the
292
+ original grant and expiry. An uncertain payment outcome must be reconciled before
293
+ starting another purchase. Verification does not refund a failed local execution.