vidbyte-cli 0.1.0__py3-none-any.whl

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 (269) hide show
  1. vidbyte_cli/__init__.py +11 -0
  2. vidbyte_cli/__main__.py +6 -0
  3. vidbyte_cli/cli.py +18 -0
  4. vidbyte_cli/commands/__init__.py +86 -0
  5. vidbyte_cli/commands/agent_options.py +53 -0
  6. vidbyte_cli/commands/agents/__init__.py +31 -0
  7. vidbyte_cli/commands/agents/suggestion/__init__.py +38 -0
  8. vidbyte_cli/commands/agents/suggestion/prompts/__init__.py +3 -0
  9. vidbyte_cli/commands/agents/suggestion/prompts/all_categories.md +5 -0
  10. vidbyte_cli/commands/agents/suggestion/prompts/approaches.md +100 -0
  11. vidbyte_cli/commands/agents/suggestion/prompts/avoid.md +100 -0
  12. vidbyte_cli/commands/agents/suggestion/prompts/blockers.md +100 -0
  13. vidbyte_cli/commands/agents/suggestion/prompts/capability.md +100 -0
  14. vidbyte_cli/commands/agents/suggestion/prompts/categories.md +5 -0
  15. vidbyte_cli/commands/agents/suggestion/prompts/category.md +5 -0
  16. vidbyte_cli/commands/agents/suggestion/prompts/completed.md +100 -0
  17. vidbyte_cli/commands/agents/suggestion/prompts/constraint.md +100 -0
  18. vidbyte_cli/commands/agents/suggestion/prompts/context.md +100 -0
  19. vidbyte_cli/commands/agents/suggestion/prompts/count.md +5 -0
  20. vidbyte_cli/commands/agents/suggestion/prompts/critic_model.md +100 -0
  21. vidbyte_cli/commands/agents/suggestion/prompts/decision.md +100 -0
  22. vidbyte_cli/commands/agents/suggestion/prompts/dry_run.md +5 -0
  23. vidbyte_cli/commands/agents/suggestion/prompts/extra_compute.md +5 -0
  24. vidbyte_cli/commands/agents/suggestion/prompts/feedback_accept.md +7 -0
  25. vidbyte_cli/commands/agents/suggestion/prompts/feedback_group.md +7 -0
  26. vidbyte_cli/commands/agents/suggestion/prompts/feedback_project.md +100 -0
  27. vidbyte_cli/commands/agents/suggestion/prompts/feedback_reason.md +98 -0
  28. vidbyte_cli/commands/agents/suggestion/prompts/feedback_reject.md +7 -0
  29. vidbyte_cli/commands/agents/suggestion/prompts/feedback_suggestion.md +101 -0
  30. vidbyte_cli/commands/agents/suggestion/prompts/files.md +100 -0
  31. vidbyte_cli/commands/agents/suggestion/prompts/forbidden.md +100 -0
  32. vidbyte_cli/commands/agents/suggestion/prompts/goal.md +100 -0
  33. vidbyte_cli/commands/agents/suggestion/prompts/handoff.md +7 -0
  34. vidbyte_cli/commands/agents/suggestion/prompts/horizon.md +5 -0
  35. vidbyte_cli/commands/agents/suggestion/prompts/hypotheses.md +100 -0
  36. vidbyte_cli/commands/agents/suggestion/prompts/idea.md +100 -0
  37. vidbyte_cli/commands/agents/suggestion/prompts/in_progress.md +100 -0
  38. vidbyte_cli/commands/agents/suggestion/prompts/input.md +100 -0
  39. vidbyte_cli/commands/agents/suggestion/prompts/library.py +29 -0
  40. vidbyte_cli/commands/agents/suggestion/prompts/max_messages.md +5 -0
  41. vidbyte_cli/commands/agents/suggestion/prompts/max_output_tokens.md +5 -0
  42. vidbyte_cli/commands/agents/suggestion/prompts/max_total_tokens.md +5 -0
  43. vidbyte_cli/commands/agents/suggestion/prompts/mistakes.md +100 -0
  44. vidbyte_cli/commands/agents/suggestion/prompts/outcomes.md +100 -0
  45. vidbyte_cli/commands/agents/suggestion/prompts/project.md +100 -0
  46. vidbyte_cli/commands/agents/suggestion/prompts/project_create.md +7 -0
  47. vidbyte_cli/commands/agents/suggestion/prompts/project_description.md +98 -0
  48. vidbyte_cli/commands/agents/suggestion/prompts/project_group.md +7 -0
  49. vidbyte_cli/commands/agents/suggestion/prompts/project_key.md +96 -0
  50. vidbyte_cli/commands/agents/suggestion/prompts/project_list.md +7 -0
  51. vidbyte_cli/commands/agents/suggestion/prompts/project_title.md +99 -0
  52. vidbyte_cli/commands/agents/suggestion/prompts/provider.md +5 -0
  53. vidbyte_cli/commands/agents/suggestion/prompts/question.md +100 -0
  54. vidbyte_cli/commands/agents/suggestion/prompts/risks.md +100 -0
  55. vidbyte_cli/commands/agents/suggestion/prompts/rounds.md +5 -0
  56. vidbyte_cli/commands/agents/suggestion/prompts/run.md +5 -0
  57. vidbyte_cli/commands/agents/suggestion/prompts/success.md +100 -0
  58. vidbyte_cli/commands/agents/suggestion/prompts/timeout.md +5 -0
  59. vidbyte_cli/commands/agents/suggestion/prompts/trajectory.md +100 -0
  60. vidbyte_cli/commands/agents/suggestion/prompts/view.md +5 -0
  61. vidbyte_cli/commands/agents/suggestion/prompts/view_all.md +5 -0
  62. vidbyte_cli/commands/agents/suggestion/render.py +77 -0
  63. vidbyte_cli/commands/agents/suggestion/request_builder.py +240 -0
  64. vidbyte_cli/commands/agents/suggestion/suggest.py +154 -0
  65. vidbyte_cli/commands/agents/suggestion/suggestion_categories.py +77 -0
  66. vidbyte_cli/commands/agents/suggestion/suggestion_feedback.py +85 -0
  67. vidbyte_cli/commands/agents/suggestion/suggestion_handoff.py +67 -0
  68. vidbyte_cli/commands/agents/suggestion/suggestion_projects.py +95 -0
  69. vidbyte_cli/commands/auth/__init__.py +0 -0
  70. vidbyte_cli/commands/auth/login.py +100 -0
  71. vidbyte_cli/commands/auth/logout.py +41 -0
  72. vidbyte_cli/commands/auth/whoami.py +51 -0
  73. vidbyte_cli/commands/billing/__init__.py +20 -0
  74. vidbyte_cli/commands/billing/prompts/__init__.py +1 -0
  75. vidbyte_cli/commands/billing/prompts/confirm.md +16 -0
  76. vidbyte_cli/commands/billing/prompts/group.md +13 -0
  77. vidbyte_cli/commands/billing/prompts/idempotency_key.md +16 -0
  78. vidbyte_cli/commands/billing/prompts/library.py +18 -0
  79. vidbyte_cli/commands/billing/prompts/top_up.md +16 -0
  80. vidbyte_cli/commands/billing/top_up.py +65 -0
  81. vidbyte_cli/commands/config/__init__.py +0 -0
  82. vidbyte_cli/commands/config/get.py +45 -0
  83. vidbyte_cli/commands/config/set.py +39 -0
  84. vidbyte_cli/commands/provider/__init__.py +9 -0
  85. vidbyte_cli/commands/provider/login.py +102 -0
  86. vidbyte_cli/commands/provider/logout.py +45 -0
  87. vidbyte_cli/commands/provider/whoami.py +49 -0
  88. vidbyte_cli/commands/research/__init__.py +5 -0
  89. vidbyte_cli/commands/research/add.py +41 -0
  90. vidbyte_cli/commands/research/options.py +134 -0
  91. vidbyte_cli/commands/research/render.py +157 -0
  92. vidbyte_cli/commands/research/resume.py +37 -0
  93. vidbyte_cli/commands/research/start.py +37 -0
  94. vidbyte_cli/commands/research/status.py +32 -0
  95. vidbyte_cli/commands/research/thread.py +30 -0
  96. vidbyte_cli/commands/research/threads.py +35 -0
  97. vidbyte_cli/commands/research/watch.py +93 -0
  98. vidbyte_cli/commands/runtime/__init__.py +23 -0
  99. vidbyte_cli/commands/runtime/adversarial_team.py +41 -0
  100. vidbyte_cli/commands/runtime/doctor.py +44 -0
  101. vidbyte_cli/commands/runtime/list.py +47 -0
  102. vidbyte_cli/commands/runtime/persistence.py +141 -0
  103. vidbyte_cli/commands/runtime/same_host_ensemble.py +221 -0
  104. vidbyte_cli/commands/runtime/stages.py +553 -0
  105. vidbyte_cli/commands/runtime/task_board.py +1342 -0
  106. vidbyte_cli/commands/setup/__init__.py +0 -0
  107. vidbyte_cli/commands/setup/doctor.py +64 -0
  108. vidbyte_cli/commands/setup/prompts/__init__.py +1 -0
  109. vidbyte_cli/commands/setup/prompts/browser.md +7 -0
  110. vidbyte_cli/commands/setup/prompts/library.py +18 -0
  111. vidbyte_cli/commands/setup/prompts/star.md +13 -0
  112. vidbyte_cli/commands/setup/star.py +132 -0
  113. vidbyte_cli/lib/__init__.py +0 -0
  114. vidbyte_cli/lib/api/__init__.py +0 -0
  115. vidbyte_cli/lib/api/client.py +236 -0
  116. vidbyte_cli/lib/api/endpoints/__init__.py +0 -0
  117. vidbyte_cli/lib/api/endpoints/auth.py +24 -0
  118. vidbyte_cli/lib/api/endpoints/billing.py +36 -0
  119. vidbyte_cli/lib/api/endpoints/research.py +103 -0
  120. vidbyte_cli/lib/api/endpoints/runtime.py +113 -0
  121. vidbyte_cli/lib/api/problem.py +86 -0
  122. vidbyte_cli/lib/api/response.py +101 -0
  123. vidbyte_cli/lib/api/retry.py +116 -0
  124. vidbyte_cli/lib/api/runtime_payment.py +89 -0
  125. vidbyte_cli/lib/auth/__init__.py +16 -0
  126. vidbyte_cli/lib/auth/credentials.py +223 -0
  127. vidbyte_cli/lib/auth/input.py +59 -0
  128. vidbyte_cli/lib/auth/keyring_store.py +126 -0
  129. vidbyte_cli/lib/auth/provider_credentials.py +157 -0
  130. vidbyte_cli/lib/auth/provider_input.py +54 -0
  131. vidbyte_cli/lib/auth/provider_resolver.py +89 -0
  132. vidbyte_cli/lib/auth/provider_store.py +149 -0
  133. vidbyte_cli/lib/auth/provider_verifier.py +219 -0
  134. vidbyte_cli/lib/auth/resolver.py +63 -0
  135. vidbyte_cli/lib/auth/verifier.py +38 -0
  136. vidbyte_cli/lib/config/__init__.py +25 -0
  137. vidbyte_cli/lib/config/atomic.py +47 -0
  138. vidbyte_cli/lib/config/config.py +141 -0
  139. vidbyte_cli/lib/config/migration.py +81 -0
  140. vidbyte_cli/lib/config/models.py +145 -0
  141. vidbyte_cli/lib/config/paths.py +66 -0
  142. vidbyte_cli/lib/config/resolver.py +137 -0
  143. vidbyte_cli/lib/constants/__init__.py +1 -0
  144. vidbyte_cli/lib/constants/runtime.py +186 -0
  145. vidbyte_cli/lib/errors/__init__.py +12 -0
  146. vidbyte_cli/lib/errors/cli_error.py +86 -0
  147. vidbyte_cli/lib/errors/codes.py +43 -0
  148. vidbyte_cli/lib/errors/failures.py +2910 -0
  149. vidbyte_cli/lib/errors/handler.py +72 -0
  150. vidbyte_cli/lib/files/__init__.py +6 -0
  151. vidbyte_cli/lib/files/documents.py +94 -0
  152. vidbyte_cli/lib/files/store.py +156 -0
  153. vidbyte_cli/lib/io/__init__.py +16 -0
  154. vidbyte_cli/lib/io/attachments.py +129 -0
  155. vidbyte_cli/lib/io/codex_attachments.py +47 -0
  156. vidbyte_cli/lib/io/prompt.py +71 -0
  157. vidbyte_cli/lib/io/streams.py +37 -0
  158. vidbyte_cli/lib/io/terminal.py +66 -0
  159. vidbyte_cli/lib/output/__init__.py +7 -0
  160. vidbyte_cli/lib/output/formats.py +29 -0
  161. vidbyte_cli/lib/output/manager.py +95 -0
  162. vidbyte_cli/lib/output/models.py +49 -0
  163. vidbyte_cli/lib/runtime/__init__.py +9 -0
  164. vidbyte_cli/lib/runtime/application.py +134 -0
  165. vidbyte_cli/lib/runtime/context.py +250 -0
  166. vidbyte_cli/lib/runtime/options.py +159 -0
  167. vidbyte_cli/lib/runtime/version.py +30 -0
  168. vidbyte_cli/lib/runtime_primitives/__init__.py +28 -0
  169. vidbyte_cli/lib/runtime_primitives/executor.py +54 -0
  170. vidbyte_cli/lib/runtime_primitives/gate.py +105 -0
  171. vidbyte_cli/lib/runtime_primitives/hosts.py +45 -0
  172. vidbyte_cli/lib/runtime_primitives/planner.py +79 -0
  173. vidbyte_cli/lib/runtime_primitives/stages.py +338 -0
  174. vidbyte_cli/lib/runtime_primitives/task_board.py +982 -0
  175. vidbyte_cli/lib/runtime_primitives/task_board_checkpoints.py +473 -0
  176. vidbyte_cli/lib/runtime_primitives/task_board_system.md +33 -0
  177. vidbyte_cli/lib/runtime_primitives/task_board_tasks.py +111 -0
  178. vidbyte_cli/lib/runtime_primitives/verification.py +68 -0
  179. vidbyte_cli/services/__init__.py +5 -0
  180. vidbyte_cli/services/ensemble/__init__.py +7 -0
  181. vidbyte_cli/services/ensemble/prompts/__init__.py +6 -0
  182. vidbyte_cli/services/ensemble/prompts/implementer_system.md +546 -0
  183. vidbyte_cli/services/ensemble/prompts/implementer_turn.md +49 -0
  184. vidbyte_cli/services/ensemble/prompts/library.py +188 -0
  185. vidbyte_cli/services/ensemble/prompts/planner_system.md +728 -0
  186. vidbyte_cli/services/ensemble/prompts/planner_turn.md +6 -0
  187. vidbyte_cli/services/ensemble/prompts/role_system.md +104 -0
  188. vidbyte_cli/services/ensemble/prompts/role_turn.md +19 -0
  189. vidbyte_cli/services/ensemble/prompts/selector_final_turn.md +19 -0
  190. vidbyte_cli/services/ensemble/prompts/selector_round_turn.md +17 -0
  191. vidbyte_cli/services/ensemble/prompts/selector_system.md +89 -0
  192. vidbyte_cli/services/ensemble/runner.py +30 -0
  193. vidbyte_cli/services/ensemble/sdk.py +134 -0
  194. vidbyte_cli/services/ensemble/service.py +233 -0
  195. vidbyte_cli/services/ensemble/settings.py +60 -0
  196. vidbyte_cli/services/persistence/__init__.py +6 -0
  197. vidbyte_cli/services/persistence/prompts/__init__.py +6 -0
  198. vidbyte_cli/services/persistence/prompts/library.py +46 -0
  199. vidbyte_cli/services/persistence/prompts/persistence_system.md +1 -0
  200. vidbyte_cli/services/persistence/prompts/persistence_turn.md +3 -0
  201. vidbyte_cli/services/persistence/runner.py +35 -0
  202. vidbyte_cli/services/persistence/session.py +116 -0
  203. vidbyte_cli/services/suggestions/__init__.py +7 -0
  204. vidbyte_cli/services/suggestions/categories.py +270 -0
  205. vidbyte_cli/services/suggestions/context.py +222 -0
  206. vidbyte_cli/services/suggestions/extra_compute.py +53 -0
  207. vidbyte_cli/services/suggestions/handoff.py +173 -0
  208. vidbyte_cli/services/suggestions/message_tools.py +47 -0
  209. vidbyte_cli/services/suggestions/project.py +253 -0
  210. vidbyte_cli/services/suggestions/prompts/__init__.py +1 -0
  211. vidbyte_cli/services/suggestions/prompts/categories/__init__.py +3 -0
  212. vidbyte_cli/services/suggestions/prompts/categories/adjacent_opportunity.md +37 -0
  213. vidbyte_cli/services/suggestions/prompts/categories/alternative.md +38 -0
  214. vidbyte_cli/services/suggestions/prompts/categories/big_bets.md +37 -0
  215. vidbyte_cli/services/suggestions/prompts/categories/bottleneck.md +38 -0
  216. vidbyte_cli/services/suggestions/prompts/categories/business_growth.md +38 -0
  217. vidbyte_cli/services/suggestions/prompts/categories/completion.md +37 -0
  218. vidbyte_cli/services/suggestions/prompts/categories/continuation.md +37 -0
  219. vidbyte_cli/services/suggestions/prompts/categories/coordination.md +37 -0
  220. vidbyte_cli/services/suggestions/prompts/categories/creative_exploration.md +37 -0
  221. vidbyte_cli/services/suggestions/prompts/categories/cross_domain.md +37 -0
  222. vidbyte_cli/services/suggestions/prompts/categories/delegation.md +37 -0
  223. vidbyte_cli/services/suggestions/prompts/categories/experiment.md +37 -0
  224. vidbyte_cli/services/suggestions/prompts/categories/feedback.md +37 -0
  225. vidbyte_cli/services/suggestions/prompts/categories/goal_clarification.md +37 -0
  226. vidbyte_cli/services/suggestions/prompts/categories/immediate_next_steps.md +37 -0
  227. vidbyte_cli/services/suggestions/prompts/categories/investigation.md +37 -0
  228. vidbyte_cli/services/suggestions/prompts/categories/learning.md +37 -0
  229. vidbyte_cli/services/suggestions/prompts/categories/leverage.md +37 -0
  230. vidbyte_cli/services/suggestions/prompts/categories/long_term_directions.md +37 -0
  231. vidbyte_cli/services/suggestions/prompts/categories/preparation.md +37 -0
  232. vidbyte_cli/services/suggestions/prompts/categories/prerequisite.md +37 -0
  233. vidbyte_cli/services/suggestions/prompts/categories/prioritization.md +37 -0
  234. vidbyte_cli/services/suggestions/prompts/categories/product_experience.md +37 -0
  235. vidbyte_cli/services/suggestions/prompts/categories/quick_wins.md +37 -0
  236. vidbyte_cli/services/suggestions/prompts/categories/reframing.md +37 -0
  237. vidbyte_cli/services/suggestions/prompts/categories/risk_prevention.md +37 -0
  238. vidbyte_cli/services/suggestions/prompts/categories/simplification.md +37 -0
  239. vidbyte_cli/services/suggestions/prompts/categories/stop_or_defer.md +37 -0
  240. vidbyte_cli/services/suggestions/prompts/categories/strategy.md +37 -0
  241. vidbyte_cli/services/suggestions/prompts/categories/technical_possibilities.md +37 -0
  242. vidbyte_cli/services/suggestions/prompts/categories/verification.md +37 -0
  243. vidbyte_cli/services/suggestions/prompts/critic.md +209 -0
  244. vidbyte_cli/services/suggestions/prompts/critic_message.md +8 -0
  245. vidbyte_cli/services/suggestions/prompts/generator.md +64 -0
  246. vidbyte_cli/services/suggestions/prompts/library.py +72 -0
  247. vidbyte_cli/services/suggestions/prompts/message_generator_argument.md +1 -0
  248. vidbyte_cli/services/suggestions/prompts/message_generator_tool.md +1 -0
  249. vidbyte_cli/services/suggestions/prompts/message_parent_argument.md +1 -0
  250. vidbyte_cli/services/suggestions/prompts/message_parent_tool.md +1 -0
  251. vidbyte_cli/services/suggestions/prompts/message_receipt.md +1 -0
  252. vidbyte_cli/services/suggestions/prompts/revision.md +8 -0
  253. vidbyte_cli/services/suggestions/sdk.py +228 -0
  254. vidbyte_cli/services/suggestions/selection.py +78 -0
  255. vidbyte_cli/services/suggestions/service.py +540 -0
  256. vidbyte_cli/types/__init__.py +0 -0
  257. vidbyte_cli/types/api.py +101 -0
  258. vidbyte_cli/types/attachments.py +79 -0
  259. vidbyte_cli/types/ensemble.py +189 -0
  260. vidbyte_cli/types/provider.py +62 -0
  261. vidbyte_cli/types/research.py +260 -0
  262. vidbyte_cli/types/runtime.py +1098 -0
  263. vidbyte_cli/types/suggestions.py +518 -0
  264. vidbyte_cli-0.1.0.dist-info/METADATA +335 -0
  265. vidbyte_cli-0.1.0.dist-info/RECORD +269 -0
  266. vidbyte_cli-0.1.0.dist-info/WHEEL +5 -0
  267. vidbyte_cli-0.1.0.dist-info/entry_points.txt +2 -0
  268. vidbyte_cli-0.1.0.dist-info/licenses/LICENSE +21 -0
  269. vidbyte_cli-0.1.0.dist-info/top_level.txt +1 -0
@@ -0,0 +1,11 @@
1
+ """Universal Vidbyte CLI.
2
+
3
+ Import-side-effect free on purpose: importing this package must not build commands, read
4
+ credentials, or touch the network.
5
+ """
6
+
7
+ from .lib.runtime.version import current_version
8
+
9
+ __version__ = current_version()
10
+
11
+ __all__ = ["__version__"]
@@ -0,0 +1,6 @@
1
+ """Enables `python -m vidbyte_cli`. The only job here is turning a status into SystemExit."""
2
+
3
+ from .cli import main
4
+
5
+ if __name__ == "__main__":
6
+ raise SystemExit(main())
vidbyte_cli/cli.py ADDED
@@ -0,0 +1,18 @@
1
+ """The callable behind the `vidbyte-cli` console script.
2
+
3
+ Deliberately thin: lifecycle and the error trap live in `lib/runtime/application.py`, and
4
+ process termination lives in `__main__.py` and the generated console wrapper. `main()`
5
+ returns a status rather than calling `sys.exit`, so an embedding caller can run the CLI
6
+ without having its own process killed.
7
+ """
8
+
9
+ from __future__ import annotations
10
+
11
+ from collections.abc import Sequence
12
+
13
+ from .lib.runtime.application import CliApplication
14
+
15
+
16
+ def main(argv: Sequence[str] | None = None) -> int:
17
+ # Returns the status; only an executable wrapper may terminate the process.
18
+ return CliApplication().run(argv)
@@ -0,0 +1,86 @@
1
+ """Single registration point for the CLI's whole command surface.
2
+
3
+ Every command is static and known at release time — there is no manifest-driven or otherwise
4
+ dynamic subtree, so this file is the complete list of what `--help` can show. A command
5
+ belongs here only when a shipped backend route can answer it.
6
+
7
+ Registration must stay side-effect free: every help and version invocation executes it.
8
+ """
9
+
10
+ from __future__ import annotations
11
+
12
+ import click
13
+
14
+ from .agents import AgentsGroup
15
+ from .auth.login import LoginCommand
16
+ from .auth.logout import LogoutCommand
17
+ from .auth.whoami import WhoamiCommand
18
+ from .billing import BillingCommandGroup
19
+ from .config.get import ConfigGetCommand
20
+ from .config.set import ConfigSetCommand
21
+ from .provider.login import ProviderLoginCommand
22
+ from .provider.logout import ProviderLogoutCommand
23
+ from .provider.whoami import ProviderWhoamiCommand
24
+ from .research.add import ResearchAddCommand
25
+ from .research.resume import ResearchResumeCommand
26
+ from .research.start import ResearchStartCommand
27
+ from .research.status import ResearchStatusCommand
28
+ from .research.thread import ResearchThreadCommand
29
+ from .research.threads import ResearchThreadsCommand
30
+ from .research.watch import ResearchWatchCommand
31
+ from .runtime import (
32
+ AdversarialTeamCommand,
33
+ PersistenceCommand,
34
+ RuntimeDoctorCommand,
35
+ RuntimeListCommand,
36
+ SameHostEnsembleCommand,
37
+ StagesCommand,
38
+ TaskBoardCommand,
39
+ )
40
+ from .setup.doctor import DoctorCommand
41
+ from .setup.star import StarCommand
42
+
43
+
44
+ def register_all_commands(program: click.Group) -> None:
45
+ # Attaches every command group to the root program; the surface is entirely static.
46
+ LoginCommand().register(program)
47
+ LogoutCommand().register(program)
48
+ WhoamiCommand().register(program)
49
+ DoctorCommand().register(program)
50
+ # Local and explicit-only: it has no backend route; see docs/design/pypi-release-and-star.md.
51
+ StarCommand().register(program)
52
+ AgentsGroup().register(program)
53
+
54
+ BillingCommandGroup().register(program)
55
+
56
+ # The whole public API-key research surface: start, add, resume, read, watch, list.
57
+ research = click.Group(name="research", help="Run and inspect Vidbyte research threads")
58
+ ResearchStartCommand().register(research)
59
+ ResearchAddCommand().register(research)
60
+ ResearchResumeCommand().register(research)
61
+ ResearchStatusCommand().register(research)
62
+ ResearchWatchCommand().register(research)
63
+ ResearchThreadsCommand().register(research)
64
+ ResearchThreadCommand().register(research)
65
+ program.add_command(research)
66
+
67
+ runtime = click.Group(name="runtime", help="Run Vidbyte primitives on this machine")
68
+ RuntimeListCommand().register(runtime)
69
+ RuntimeDoctorCommand().register(runtime)
70
+ AdversarialTeamCommand().register(runtime)
71
+ PersistenceCommand().register(runtime)
72
+ SameHostEnsembleCommand().register(runtime)
73
+ TaskBoardCommand().register(runtime)
74
+ StagesCommand().register(runtime)
75
+ program.add_command(runtime)
76
+
77
+ config = click.Group(name="config", help="Manage CLI configuration")
78
+ ConfigGetCommand().register(config)
79
+ ConfigSetCommand().register(config)
80
+ program.add_command(config)
81
+
82
+ provider = click.Group(name="provider", help="Manage BYOK provider API keys")
83
+ ProviderLoginCommand().register(provider)
84
+ ProviderLogoutCommand().register(provider)
85
+ ProviderWhoamiCommand().register(provider)
86
+ program.add_command(provider)
@@ -0,0 +1,53 @@
1
+ """Reusable Click options for future commands that invoke local agents.
2
+
3
+ The option declaration stays separate from attachment resolution so command parsing remains
4
+ cheap and the same validated bundle can be reused by every future agent service.
5
+ """
6
+
7
+ from __future__ import annotations
8
+
9
+ from collections.abc import Callable, Mapping
10
+ from pathlib import Path
11
+
12
+ import click
13
+
14
+ from ..lib.io.attachments import AttachmentResolver
15
+ from ..types.attachments import AttachmentBundle
16
+
17
+ CommandCallback = Callable[..., None]
18
+ OptionDecorator = Callable[[CommandCallback], CommandCallback]
19
+
20
+ _ATTACH_HELP = (
21
+ "Attach one explicit local file as context for the future agent invocation. "
22
+ "Repeat this option once per file; occurrence order is preserved in the resolved bundle. "
23
+ "Text files are captured as UTF-8 snapshots and supported images remain native "
24
+ "local-image inputs. "
25
+ "Missing, duplicate, empty, unsupported, or oversized files fail before credentials, "
26
+ "payment, or model execution."
27
+ )
28
+
29
+
30
+ class AgentAttachmentOptions:
31
+ """Declares and resolves the shared repeatable `--attach PATH` option."""
32
+
33
+ def apply(self, callback: CommandCallback) -> CommandCallback:
34
+ # Keeps Click syntax in commands while delegating all validation to the shared resolver.
35
+ return click.option(
36
+ "--attach",
37
+ "attachments",
38
+ multiple=True,
39
+ type=click.Path(path_type=Path),
40
+ help=_ATTACH_HELP,
41
+ )(callback)
42
+
43
+ def resolve(self, values: Mapping[str, object]) -> AttachmentBundle:
44
+ # Extracts Click's tuple value and resolves it exactly once for the invocation.
45
+ raw = values.get("attachments", ())
46
+ if not isinstance(raw, tuple) or any(not isinstance(path, Path) for path in raw):
47
+ from ..lib.errors.failures import AttachmentInputInvalid
48
+
49
+ raise AttachmentInputInvalid()
50
+ return AttachmentResolver().resolve(raw)
51
+
52
+
53
+ __all__ = ["AgentAttachmentOptions"]
@@ -0,0 +1,31 @@
1
+ """Registers the agents command family for locally run specialized agents.
2
+
3
+ The `agents` group is distinct from `runtime` primitives because its commands
4
+ are free, local, and return suggestions without executing them. This module
5
+ owns the group and its `suggest` subgroup so the three verbs share one home.
6
+ """
7
+
8
+ from __future__ import annotations
9
+
10
+ import click
11
+
12
+
13
+ class AgentsGroup:
14
+ """Attaches agents/suggest with run, categories, and handoff verbs."""
15
+
16
+ def register(self, parent: click.Group) -> None:
17
+ # Builds nested groups here so commands/__init__.py stays declarative.
18
+ from .suggestion import SuggestionAgentGroup
19
+
20
+ agents = click.Group(name="agents", help=_AGENTS_HELP)
21
+ SuggestionAgentGroup().register(agents)
22
+ parent.add_command(agents)
23
+
24
+
25
+ _AGENTS_HELP = (
26
+ "Vidbyte specialized agents focus on a defined reasoning role and produce a structured "
27
+ "work product for a person or another agent. Each agent interprets the supplied goal "
28
+ "and context through the perspective needed for its specialty. The resulting analysis "
29
+ "makes its conclusions, supporting context, and recommended follow-up explicit. Choose "
30
+ "a specialized agent when a general response would leave the next decision underspecified."
31
+ )
@@ -0,0 +1,38 @@
1
+ """Registers the suggestion agent, its run-side operations, and its project memory.
2
+
3
+ The package keeps one specialized agent's command adapters together beneath
4
+ the broader agents namespace. Registration remains side-effect free so every
5
+ help path works without credentials, provider access, or model imports.
6
+ """
7
+
8
+ from __future__ import annotations
9
+
10
+ import click
11
+
12
+
13
+ class SuggestionAgentGroup:
14
+ """Attaches run, categories, handoff, and the project and feedback memory groups."""
15
+
16
+ def register(self, parent: click.Group) -> None:
17
+ from .suggest import SuggestRunCommand
18
+ from .suggestion_categories import SuggestionCategoriesCommand
19
+ from .suggestion_feedback import SuggestionFeedbackGroup
20
+ from .suggestion_handoff import SuggestionHandoffCommand
21
+ from .suggestion_projects import SuggestionProjectGroup
22
+
23
+ suggest = click.Group(name="suggest", help=_SUGGEST_HELP)
24
+ SuggestRunCommand().register(suggest)
25
+ SuggestionCategoriesCommand().register(suggest)
26
+ SuggestionHandoffCommand().register(suggest)
27
+ SuggestionProjectGroup().register(suggest)
28
+ SuggestionFeedbackGroup().register(suggest)
29
+ parent.add_command(suggest)
30
+
31
+
32
+ _SUGGEST_HELP = (
33
+ "The suggestion agent develops concrete next actions for a stated goal and ranks the "
34
+ "ones most worth pursuing. It grounds each idea in the available context, distinguishes "
35
+ "among different kinds of opportunity, and challenges weak or redundant candidates. "
36
+ "Every surviving idea explains why it matters now and carries the structure another "
37
+ "agent needs to evaluate decisions, evidence, considerations, and the proposed action."
38
+ )
@@ -0,0 +1,3 @@
1
+ """Packaged help prose for the suggestion agent command surface."""
2
+
3
+ from __future__ import annotations
@@ -0,0 +1,5 @@
1
+ Whole-registry consideration makes breadth an explicit part of the suggestion request. It invites every documented opportunity type without demanding one result from each type.
2
+
3
+ This is already the natural behavior when no narrower category set is supplied. Making the intent explicit helps agents preserve it in durable request records.
4
+
5
+ The result limit and relevance threshold still govern the final slate. Temporal focus may narrow candidates independently of category breadth.
@@ -0,0 +1,100 @@
1
+ **Approach History**
2
+ Approach History is the named previous direction value that this command accepts for one suggestion workflow.
3
+ It gives the parent agent a stable way to state a direction that was tried, considered, accepted, or rejected.
4
+ This value is completely optional. Supplying it is helpful when the additional signal can change the next action.
5
+ The command keeps this value as caller task data and does not treat it as an instruction to execute work.
6
+ The value is carried into the bounded request with its source and semantic identity intact.
7
+ A precise value gives the generator and independent critic more signal than a broad label or an unstated assumption.
8
+
9
+ **Purpose of Approach History**
10
+ The purpose of Approach History is to make a direction that was tried, considered, accepted, or rejected explicit before candidate generation starts.
11
+ That explicit record lets the workflow compare ideas against the situation the caller actually described.
12
+ It also lets the critic explain whether a candidate is supported, missing evidence, or in conflict.
13
+ The field is most valuable when its content changes feasibility, novelty, timing, risk, or the definition of progress.
14
+ A short accurate statement is more useful than a long narrative that hides the decision-relevant fact.
15
+ The resulting ideas should refer to this signal only when the connection is material and explain why it matters.
16
+
17
+ **When not to use Approach History**
18
+ Do not provide Approach History merely because the option exists or because an empty value would look complete.
19
+ Omit it when the caller has no reliable signal of this kind and let the workflow mark the context as missing.
20
+ Do not use this field to smuggle execution instructions, credentials, private data, or a second command configuration.
21
+ Use a narrower context option when the statement has a clearly different meaning such as a risk, decision, or prohibition.
22
+ Avoid repeating the goal or copying an entire unrelated transcript because repetition lowers the signal available to the critic.
23
+ If the caller is unsure whether the record is current, state that uncertainty in the value rather than presenting it as a fact.
24
+
25
+ **Approach History inputs**
26
+ The value is one nonempty text statement per repeated option.
27
+ Repeated occurrences remain separate records so the agent can cite and compare them without parsing a delimiter.
28
+ Whitespace around a value is trimmed at the request boundary, while an empty value is rejected before provider work.
29
+ The command does not reinterpret the content as an identifier unless the option contract explicitly says it is one.
30
+ Use plain caller-readable text and keep each record focused on one fact, choice, boundary, or result.
31
+ The input is bounded before it enters the agent context so oversized content becomes an explicit truncation or omission.
32
+ A caller should keep related facts separate when their provenance, confidence, or expected effect differs enough to influence review.
33
+
34
+ **Defaults and precedence for Approach History**
35
+ When it is omitted, the default is no supplied previous direction..
36
+ Command-line values are the only source for this field, and the run does not read a separate configuration document.
37
+ Environment variables do not silently populate this context value, which keeps an invocation reproducible.
38
+ When multiple values are supplied, their command-line order becomes their stable context order.
39
+ Explicit caller input therefore takes precedence over absence, while other settings such as count and rounds remain independent.
40
+ The result manifest records what was supplied and whether the bounded value was included, truncated, or omitted.
41
+ Use the manifest and warnings to distinguish absence from an explicitly bounded value when a downstream agent needs to explain why a suggestion changed.
42
+
43
+ **Approach History output contract**
44
+ Approach History is not printed as a separate progress message because stdout is reserved for the command result.
45
+ For a model-backed run, the value appears inside the fresh managed context window used by the relevant agent.
46
+ For dry-run output, the manifest exposes source identity and bounded character information without exposing file bodies by default.
47
+ Human output summarizes the resulting suggestions, while JSON and JSONL output preserve stable machine-readable fields.
48
+ Errors go to the CLI error channel as typed envelopes with a repair-oriented description and no secret echo.
49
+ The field influences ideas and handoffs but never grants authority, starts work, or changes the caller's permissions.
50
+
51
+ **How to use Approach History**
52
+ Use the command below as the smallest valid invocation shape for this value.
53
+ Replace each brace-delimited placeholder with the caller's actual text while preserving shell quoting around spaces.
54
+ Repeat the option when more than one independent record should be supplied.
55
+ Combine the option with a precise goal because the field is evidence or context rather than a standalone task.
56
+ Add category and budget options only when they answer a real selection or resource question.
57
+ The command remains a single argv-built request and does not require a temporary configuration file.
58
+ Keep the invocation close to the caller's actual decision so another agent can reproduce the request without guessing omitted context, quoting, or precedence.
59
+
60
+ ```text
61
+ vidbyte-cli agents suggest run --goal "{goal}" --approaches "{previous direction}"
62
+ ```
63
+
64
+ **Examples for Approach History**
65
+ A minimal example supplies only the required goal and leaves this optional signal absent when it has no value.
66
+ A normal example adds one focused record that directly changes how the next action should be judged.
67
+ An advanced example repeats the option for several independent records and combines it with a selected category.
68
+ Piping is appropriate only for a caller that captures the emitted result document, because input itself is passed through argv.
69
+ JSON output is the stable choice when another agent will inspect identifiers, manifests, warnings, and handoffs.
70
+ If an example fails, preserve the same goal and correct the named input or path before changing the reasoning settings.
71
+
72
+ ```text
73
+ vidbyte-cli agents suggest run --goal "{goal}" --approaches "{previous direction}"
74
+ vidbyte-cli --json agents suggest run --goal "{goal}" --approaches "{value}"
75
+ ```
76
+
77
+ **Related commands for Approach History**
78
+ Use agents suggest categories --view-all when the caller needs to choose a reasoning lens before running.
79
+ Use agents suggest categories --view {category-id} when one category needs a fuller conceptual definition.
80
+ Use the other context options when the signal is more accurately a decision, constraint, risk, or current commitment.
81
+ Use agents suggest handoff only after a result document exists and a specific idea identifier has been selected.
82
+ Use dry-run when the request shape and file manifest need inspection without credentials or model usage.
83
+ These commands share the same result conventions but do not imply that one command can authorize another.
84
+ Choose the narrowest neighboring command that answers the immediate question, then return to this option when the run itself needs the signal.
85
+
86
+ **Failure modes for Approach History**
87
+ A missing required value fails before the provider is loaded because the request dataclass requires a meaningful boundary.
88
+ An empty repeated value fails as invalid input instead of becoming a misleading blank context record.
89
+ An unsupported path, malformed JSON file, directory, or unreadable file fails with a typed context error.
90
+ An oversized value is truncated only within the documented bound and the result records that status as a warning.
91
+ A provider or schema failure is reported as a provider failure and is never converted into a false no-suggestions result.
92
+ Recover by correcting the specific value named by the error, rerunning dry-run when useful, and preserving the same intent.
93
+
94
+ **Authentication and permissions for Approach History**
95
+ This input itself does not grant access to files, providers, accounts, repositories, or execution tools.
96
+ Text values are available to local validation without credentials, while model-backed runs still require the configured provider.
97
+ The --files option reads only paths explicitly named by the caller and does not scan a workspace or agent history.
98
+ Read-only deny-all settings apply to generator and critic agents so suggestions cannot mutate the host through this workflow.
99
+ Provider credentials are used only when a real model-backed run is requested and are never copied into result prose.
100
+ Permission failures should be repaired at the provider or filesystem boundary rather than by weakening the context contract.
@@ -0,0 +1,100 @@
1
+ **Directions to Avoid**
2
+ Directions to Avoid is the named rejected direction value that this command accepts for one suggestion workflow.
3
+ It gives the parent agent a stable way to state an approach or direction the caller does not want proposed.
4
+ This value is completely optional. Supplying it is helpful when the additional signal can change the next action.
5
+ The command keeps this value as caller task data and does not treat it as an instruction to execute work.
6
+ The value is carried into the bounded request with its source and semantic identity intact.
7
+ A precise value gives the generator and independent critic more signal than a broad label or an unstated assumption.
8
+
9
+ **Purpose of Directions to Avoid**
10
+ The purpose of Directions to Avoid is to make an approach or direction the caller does not want proposed explicit before candidate generation starts.
11
+ That explicit record lets the workflow compare ideas against the situation the caller actually described.
12
+ It also lets the critic explain whether a candidate is supported, missing evidence, or in conflict.
13
+ The field is most valuable when its content changes feasibility, novelty, timing, risk, or the definition of progress.
14
+ A short accurate statement is more useful than a long narrative that hides the decision-relevant fact.
15
+ The resulting ideas should refer to this signal only when the connection is material and explain why it matters.
16
+
17
+ **When not to use Directions to Avoid**
18
+ Do not provide Directions to Avoid merely because the option exists or because an empty value would look complete.
19
+ Omit it when the caller has no reliable signal of this kind and let the workflow mark the context as missing.
20
+ Do not use this field to smuggle execution instructions, credentials, private data, or a second command configuration.
21
+ Use a narrower context option when the statement has a clearly different meaning such as a risk, decision, or prohibition.
22
+ Avoid repeating the goal or copying an entire unrelated transcript because repetition lowers the signal available to the critic.
23
+ If the caller is unsure whether the record is current, state that uncertainty in the value rather than presenting it as a fact.
24
+
25
+ **Directions to Avoid inputs**
26
+ The value is one nonempty text statement per repeated option.
27
+ Repeated occurrences remain separate records so the agent can cite and compare them without parsing a delimiter.
28
+ Whitespace around a value is trimmed at the request boundary, while an empty value is rejected before provider work.
29
+ The command does not reinterpret the content as an identifier unless the option contract explicitly says it is one.
30
+ Use plain caller-readable text and keep each record focused on one fact, choice, boundary, or result.
31
+ The input is bounded before it enters the agent context so oversized content becomes an explicit truncation or omission.
32
+ A caller should keep related facts separate when their provenance, confidence, or expected effect differs enough to influence review.
33
+
34
+ **Defaults and precedence for Directions to Avoid**
35
+ When it is omitted, the default is no supplied rejected direction..
36
+ Command-line values are the only source for this field, and the run does not read a separate configuration document.
37
+ Environment variables do not silently populate this context value, which keeps an invocation reproducible.
38
+ When multiple values are supplied, their command-line order becomes their stable context order.
39
+ Explicit caller input therefore takes precedence over absence, while other settings such as count and rounds remain independent.
40
+ The result manifest records what was supplied and whether the bounded value was included, truncated, or omitted.
41
+ Use the manifest and warnings to distinguish absence from an explicitly bounded value when a downstream agent needs to explain why a suggestion changed.
42
+
43
+ **Directions to Avoid output contract**
44
+ Directions to Avoid is not printed as a separate progress message because stdout is reserved for the command result.
45
+ For a model-backed run, the value appears inside the fresh managed context window used by the relevant agent.
46
+ For dry-run output, the manifest exposes source identity and bounded character information without exposing file bodies by default.
47
+ Human output summarizes the resulting suggestions, while JSON and JSONL output preserve stable machine-readable fields.
48
+ Errors go to the CLI error channel as typed envelopes with a repair-oriented description and no secret echo.
49
+ The field influences ideas and handoffs but never grants authority, starts work, or changes the caller's permissions.
50
+
51
+ **How to use Directions to Avoid**
52
+ Use the command below as the smallest valid invocation shape for this value.
53
+ Replace each brace-delimited placeholder with the caller's actual text while preserving shell quoting around spaces.
54
+ Repeat the option when more than one independent record should be supplied.
55
+ Combine the option with a precise goal because the field is evidence or context rather than a standalone task.
56
+ Add category and budget options only when they answer a real selection or resource question.
57
+ The command remains a single argv-built request and does not require a temporary configuration file.
58
+ Keep the invocation close to the caller's actual decision so another agent can reproduce the request without guessing omitted context, quoting, or precedence.
59
+
60
+ ```text
61
+ vidbyte-cli agents suggest run --goal "{goal}" --avoid "{direction to avoid}"
62
+ ```
63
+
64
+ **Examples for Directions to Avoid**
65
+ A minimal example supplies only the required goal and leaves this optional signal absent when it has no value.
66
+ A normal example adds one focused record that directly changes how the next action should be judged.
67
+ An advanced example repeats the option for several independent records and combines it with a selected category.
68
+ Piping is appropriate only for a caller that captures the emitted result document, because input itself is passed through argv.
69
+ JSON output is the stable choice when another agent will inspect identifiers, manifests, warnings, and handoffs.
70
+ If an example fails, preserve the same goal and correct the named input or path before changing the reasoning settings.
71
+
72
+ ```text
73
+ vidbyte-cli agents suggest run --goal "{goal}" --avoid "{direction to avoid}"
74
+ vidbyte-cli --json agents suggest run --goal "{goal}" --avoid "{value}"
75
+ ```
76
+
77
+ **Related commands for Directions to Avoid**
78
+ Use agents suggest categories --view-all when the caller needs to choose a reasoning lens before running.
79
+ Use agents suggest categories --view {category-id} when one category needs a fuller conceptual definition.
80
+ Use the other context options when the signal is more accurately a decision, constraint, risk, or current commitment.
81
+ Use agents suggest handoff only after a result document exists and a specific idea identifier has been selected.
82
+ Use dry-run when the request shape and file manifest need inspection without credentials or model usage.
83
+ These commands share the same result conventions but do not imply that one command can authorize another.
84
+ Choose the narrowest neighboring command that answers the immediate question, then return to this option when the run itself needs the signal.
85
+
86
+ **Failure modes for Directions to Avoid**
87
+ A missing required value fails before the provider is loaded because the request dataclass requires a meaningful boundary.
88
+ An empty repeated value fails as invalid input instead of becoming a misleading blank context record.
89
+ An unsupported path, malformed JSON file, directory, or unreadable file fails with a typed context error.
90
+ An oversized value is truncated only within the documented bound and the result records that status as a warning.
91
+ A provider or schema failure is reported as a provider failure and is never converted into a false no-suggestions result.
92
+ Recover by correcting the specific value named by the error, rerunning dry-run when useful, and preserving the same intent.
93
+
94
+ **Authentication and permissions for Directions to Avoid**
95
+ This input itself does not grant access to files, providers, accounts, repositories, or execution tools.
96
+ Text values are available to local validation without credentials, while model-backed runs still require the configured provider.
97
+ The --files option reads only paths explicitly named by the caller and does not scan a workspace or agent history.
98
+ Read-only deny-all settings apply to generator and critic agents so suggestions cannot mutate the host through this workflow.
99
+ Provider credentials are used only when a real model-backed run is requested and are never copied into result prose.
100
+ Permission failures should be repaired at the provider or filesystem boundary rather than by weakening the context contract.
@@ -0,0 +1,100 @@
1
+ **Blockers**
2
+ Blockers is the named blocking condition value that this command accepts for one suggestion workflow.
3
+ It gives the parent agent a stable way to state a condition that currently prevents or delays useful progress.
4
+ This value is completely optional. Supplying it is helpful when the additional signal can change the next action.
5
+ The command keeps this value as caller task data and does not treat it as an instruction to execute work.
6
+ The value is carried into the bounded request with its source and semantic identity intact.
7
+ A precise value gives the generator and independent critic more signal than a broad label or an unstated assumption.
8
+
9
+ **Purpose of Blockers**
10
+ The purpose of Blockers is to make a condition that currently prevents or delays useful progress explicit before candidate generation starts.
11
+ That explicit record lets the workflow compare ideas against the situation the caller actually described.
12
+ It also lets the critic explain whether a candidate is supported, missing evidence, or in conflict.
13
+ The field is most valuable when its content changes feasibility, novelty, timing, risk, or the definition of progress.
14
+ A short accurate statement is more useful than a long narrative that hides the decision-relevant fact.
15
+ The resulting ideas should refer to this signal only when the connection is material and explain why it matters.
16
+
17
+ **When not to use Blockers**
18
+ Do not provide Blockers merely because the option exists or because an empty value would look complete.
19
+ Omit it when the caller has no reliable signal of this kind and let the workflow mark the context as missing.
20
+ Do not use this field to smuggle execution instructions, credentials, private data, or a second command configuration.
21
+ Use a narrower context option when the statement has a clearly different meaning such as a risk, decision, or prohibition.
22
+ Avoid repeating the goal or copying an entire unrelated transcript because repetition lowers the signal available to the critic.
23
+ If the caller is unsure whether the record is current, state that uncertainty in the value rather than presenting it as a fact.
24
+
25
+ **Blockers inputs**
26
+ The value is one nonempty text statement per repeated option.
27
+ Repeated occurrences remain separate records so the agent can cite and compare them without parsing a delimiter.
28
+ Whitespace around a value is trimmed at the request boundary, while an empty value is rejected before provider work.
29
+ The command does not reinterpret the content as an identifier unless the option contract explicitly says it is one.
30
+ Use plain caller-readable text and keep each record focused on one fact, choice, boundary, or result.
31
+ The input is bounded before it enters the agent context so oversized content becomes an explicit truncation or omission.
32
+ A caller should keep related facts separate when their provenance, confidence, or expected effect differs enough to influence review.
33
+
34
+ **Defaults and precedence for Blockers**
35
+ When it is omitted, the default is no supplied blocking condition..
36
+ Command-line values are the only source for this field, and the run does not read a separate configuration document.
37
+ Environment variables do not silently populate this context value, which keeps an invocation reproducible.
38
+ When multiple values are supplied, their command-line order becomes their stable context order.
39
+ Explicit caller input therefore takes precedence over absence, while other settings such as count and rounds remain independent.
40
+ The result manifest records what was supplied and whether the bounded value was included, truncated, or omitted.
41
+ Use the manifest and warnings to distinguish absence from an explicitly bounded value when a downstream agent needs to explain why a suggestion changed.
42
+
43
+ **Blockers output contract**
44
+ Blockers is not printed as a separate progress message because stdout is reserved for the command result.
45
+ For a model-backed run, the value appears inside the fresh managed context window used by the relevant agent.
46
+ For dry-run output, the manifest exposes source identity and bounded character information without exposing file bodies by default.
47
+ Human output summarizes the resulting suggestions, while JSON and JSONL output preserve stable machine-readable fields.
48
+ Errors go to the CLI error channel as typed envelopes with a repair-oriented description and no secret echo.
49
+ The field influences ideas and handoffs but never grants authority, starts work, or changes the caller's permissions.
50
+
51
+ **How to use Blockers**
52
+ Use the command below as the smallest valid invocation shape for this value.
53
+ Replace each brace-delimited placeholder with the caller's actual text while preserving shell quoting around spaces.
54
+ Repeat the option when more than one independent record should be supplied.
55
+ Combine the option with a precise goal because the field is evidence or context rather than a standalone task.
56
+ Add category and budget options only when they answer a real selection or resource question.
57
+ The command remains a single argv-built request and does not require a temporary configuration file.
58
+ Keep the invocation close to the caller's actual decision so another agent can reproduce the request without guessing omitted context, quoting, or precedence.
59
+
60
+ ```text
61
+ vidbyte-cli agents suggest run --goal "{goal}" --blockers "{blocking condition}"
62
+ ```
63
+
64
+ **Examples for Blockers**
65
+ A minimal example supplies only the required goal and leaves this optional signal absent when it has no value.
66
+ A normal example adds one focused record that directly changes how the next action should be judged.
67
+ An advanced example repeats the option for several independent records and combines it with a selected category.
68
+ Piping is appropriate only for a caller that captures the emitted result document, because input itself is passed through argv.
69
+ JSON output is the stable choice when another agent will inspect identifiers, manifests, warnings, and handoffs.
70
+ If an example fails, preserve the same goal and correct the named input or path before changing the reasoning settings.
71
+
72
+ ```text
73
+ vidbyte-cli agents suggest run --goal "{goal}" --blockers "{blocking condition}"
74
+ vidbyte-cli --json agents suggest run --goal "{goal}" --blockers "{value}"
75
+ ```
76
+
77
+ **Related commands for Blockers**
78
+ Use agents suggest categories --view-all when the caller needs to choose a reasoning lens before running.
79
+ Use agents suggest categories --view {category-id} when one category needs a fuller conceptual definition.
80
+ Use the other context options when the signal is more accurately a decision, constraint, risk, or current commitment.
81
+ Use agents suggest handoff only after a result document exists and a specific idea identifier has been selected.
82
+ Use dry-run when the request shape and file manifest need inspection without credentials or model usage.
83
+ These commands share the same result conventions but do not imply that one command can authorize another.
84
+ Choose the narrowest neighboring command that answers the immediate question, then return to this option when the run itself needs the signal.
85
+
86
+ **Failure modes for Blockers**
87
+ A missing required value fails before the provider is loaded because the request dataclass requires a meaningful boundary.
88
+ An empty repeated value fails as invalid input instead of becoming a misleading blank context record.
89
+ An unsupported path, malformed JSON file, directory, or unreadable file fails with a typed context error.
90
+ An oversized value is truncated only within the documented bound and the result records that status as a warning.
91
+ A provider or schema failure is reported as a provider failure and is never converted into a false no-suggestions result.
92
+ Recover by correcting the specific value named by the error, rerunning dry-run when useful, and preserving the same intent.
93
+
94
+ **Authentication and permissions for Blockers**
95
+ This input itself does not grant access to files, providers, accounts, repositories, or execution tools.
96
+ Text values are available to local validation without credentials, while model-backed runs still require the configured provider.
97
+ The --files option reads only paths explicitly named by the caller and does not scan a workspace or agent history.
98
+ Read-only deny-all settings apply to generator and critic agents so suggestions cannot mutate the host through this workflow.
99
+ Provider credentials are used only when a real model-backed run is requested and are never copied into result prose.
100
+ Permission failures should be repaired at the provider or filesystem boundary rather than by weakening the context contract.