buildai-cli 0.3.63__tar.gz → 0.3.65__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 (35) hide show
  1. {buildai_cli-0.3.63 → buildai_cli-0.3.65}/PKG-INFO +1 -1
  2. {buildai_cli-0.3.63 → buildai_cli-0.3.65}/cli/commands/processing.py +82 -0
  3. {buildai_cli-0.3.63 → buildai_cli-0.3.65}/pyproject.toml +1 -1
  4. {buildai_cli-0.3.63 → buildai_cli-0.3.65}/.gitignore +0 -0
  5. {buildai_cli-0.3.63 → buildai_cli-0.3.65}/AGENTS.md +0 -0
  6. {buildai_cli-0.3.63 → buildai_cli-0.3.65}/CLAUDE.md +0 -0
  7. {buildai_cli-0.3.63 → buildai_cli-0.3.65}/buildai_bootstrap.py +0 -0
  8. {buildai_cli-0.3.63 → buildai_cli-0.3.65}/cli/__init__.py +0 -0
  9. {buildai_cli-0.3.63 → buildai_cli-0.3.65}/cli/_has_core.py +0 -0
  10. {buildai_cli-0.3.63 → buildai_cli-0.3.65}/cli/auth_local.py +0 -0
  11. {buildai_cli-0.3.63 → buildai_cli-0.3.65}/cli/commands/__init__.py +0 -0
  12. {buildai_cli-0.3.63 → buildai_cli-0.3.65}/cli/commands/api_proxy.py +0 -0
  13. {buildai_cli-0.3.63 → buildai_cli-0.3.65}/cli/commands/auth.py +0 -0
  14. {buildai_cli-0.3.63 → buildai_cli-0.3.65}/cli/commands/db/__init__.py +0 -0
  15. {buildai_cli-0.3.63 → buildai_cli-0.3.65}/cli/commands/db/broker.py +0 -0
  16. {buildai_cli-0.3.63 → buildai_cli-0.3.65}/cli/commands/db/common.py +0 -0
  17. {buildai_cli-0.3.63 → buildai_cli-0.3.65}/cli/commands/db/migrate.py +0 -0
  18. {buildai_cli-0.3.63 → buildai_cli-0.3.65}/cli/commands/db/query.py +0 -0
  19. {buildai_cli-0.3.63 → buildai_cli-0.3.65}/cli/commands/db/schema.py +0 -0
  20. {buildai_cli-0.3.63 → buildai_cli-0.3.65}/cli/commands/db/status.py +0 -0
  21. {buildai_cli-0.3.63 → buildai_cli-0.3.65}/cli/commands/dev.py +0 -0
  22. {buildai_cli-0.3.63 → buildai_cli-0.3.65}/cli/commands/doctor.py +0 -0
  23. {buildai_cli-0.3.63 → buildai_cli-0.3.65}/cli/commands/gigcamera.py +0 -0
  24. {buildai_cli-0.3.63 → buildai_cli-0.3.65}/cli/config.py +0 -0
  25. {buildai_cli-0.3.63 → buildai_cli-0.3.65}/cli/console.py +0 -0
  26. {buildai_cli-0.3.63 → buildai_cli-0.3.65}/cli/context.py +0 -0
  27. {buildai_cli-0.3.63 → buildai_cli-0.3.65}/cli/db_broker.py +0 -0
  28. {buildai_cli-0.3.63 → buildai_cli-0.3.65}/cli/guard.py +0 -0
  29. {buildai_cli-0.3.63 → buildai_cli-0.3.65}/cli/internal_api.py +0 -0
  30. {buildai_cli-0.3.63 → buildai_cli-0.3.65}/cli/main.py +0 -0
  31. {buildai_cli-0.3.63 → buildai_cli-0.3.65}/cli/nl_query/__init__.py +0 -0
  32. {buildai_cli-0.3.63 → buildai_cli-0.3.65}/cli/nl_query/dataset_tools.py +0 -0
  33. {buildai_cli-0.3.63 → buildai_cli-0.3.65}/cli/ops_init.py +0 -0
  34. {buildai_cli-0.3.63 → buildai_cli-0.3.65}/cli/output.py +0 -0
  35. {buildai_cli-0.3.63 → buildai_cli-0.3.65}/cli/pagination.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: buildai-cli
3
- Version: 0.3.63
3
+ Version: 0.3.65
4
4
  Summary: Build AI CLI (Typer)
5
5
  Requires-Python: >=3.11
6
6
  Requires-Dist: httpx>=0.27.0
@@ -16,8 +16,10 @@ from cli.console import error
16
16
  app = typer.Typer(help="Inspect and adjust processing manifests.", no_args_is_help=True)
17
17
  queue_app = typer.Typer(help="Inspect and adjust manifest batch queues.", no_args_is_help=True)
18
18
  scheduler_app = typer.Typer(help="Run bounded processing scheduler passes.", no_args_is_help=True)
19
+ stage_jobs_app = typer.Typer(help="Operate episode-scoped stage jobs.", no_args_is_help=True)
19
20
  app.add_typer(queue_app, name="queue")
20
21
  app.add_typer(scheduler_app, name="scheduler")
22
+ app.add_typer(stage_jobs_app, name="stage-jobs")
21
23
 
22
24
 
23
25
  def _request(
@@ -285,3 +287,83 @@ def scheduler_tick(
285
287
  ),
286
288
  },
287
289
  )
290
+
291
+
292
+ @stage_jobs_app.command("launch-egoexo-prepare-batch")
293
+ def launch_egoexo_prepare_batch(
294
+ limit: int = typer.Option(10, "--limit", min=1, max=200),
295
+ run_key: str = typer.Option("aligned-v1", "--run-key", help="Prepare run key to drain."),
296
+ execution_profile_key: str = typer.Option(
297
+ "gcp.us.media_l4",
298
+ "--execution-profile-key",
299
+ help="Cloud Batch execution profile used for each episode job.",
300
+ ),
301
+ provisioning_model: str = typer.Option(
302
+ "standard",
303
+ "--provisioning-model",
304
+ help="Cloud Batch provisioning model: standard or spot.",
305
+ ),
306
+ lease_seconds: int = typer.Option(24 * 60 * 60, "--lease-seconds", min=600),
307
+ dry_run: bool = typer.Option(False, "--dry-run", help="Preview ready work without leasing."),
308
+ write: bool = typer.Option(False, "--write", help="Launch jobs. Omit for dry-run."),
309
+ ) -> None:
310
+ """Launch one Cloud Batch prepare job per ready EgoExo episode."""
311
+ if provisioning_model not in {"standard", "spot"}:
312
+ error("--provisioning-model must be one of: standard, spot")
313
+ raise typer.Exit(1)
314
+ _request(
315
+ "/v1/processing/stage-jobs/egoexo/prepare/launch-batch",
316
+ method="POST",
317
+ body={
318
+ "limit": limit,
319
+ "run_key": run_key,
320
+ "execution_profile_key": execution_profile_key,
321
+ "provisioning_model": provisioning_model,
322
+ "lease_seconds": lease_seconds,
323
+ "dry_run": dry_run or not write,
324
+ },
325
+ )
326
+
327
+
328
+ @stage_jobs_app.command("launch-egoexo-pose-2d-batch")
329
+ def launch_egoexo_pose_2d_batch(
330
+ limit: int = typer.Option(10, "--limit", min=1, max=200),
331
+ run_key: str = typer.Option("aligned-v1", "--run-key", help="Pose2D run key to drain."),
332
+ task_count: int = typer.Option(
333
+ 8,
334
+ "--task-count",
335
+ min=1,
336
+ max=1000,
337
+ help="Cloud Batch tasks per episode job.",
338
+ ),
339
+ execution_profile_key: str = typer.Option(
340
+ "gcp.us.gpu_a100",
341
+ "--execution-profile-key",
342
+ help="Cloud Batch execution profile used for each episode job.",
343
+ ),
344
+ provisioning_model: str = typer.Option(
345
+ "standard",
346
+ "--provisioning-model",
347
+ help="Cloud Batch provisioning model: standard or spot.",
348
+ ),
349
+ lease_seconds: int = typer.Option(24 * 60 * 60, "--lease-seconds", min=600),
350
+ dry_run: bool = typer.Option(False, "--dry-run", help="Preview ready work without leasing."),
351
+ write: bool = typer.Option(False, "--write", help="Launch jobs. Omit for dry-run."),
352
+ ) -> None:
353
+ """Launch one episode-owned Cloud Batch Pose2D job per ready EgoExo episode."""
354
+ if provisioning_model not in {"standard", "spot"}:
355
+ error("--provisioning-model must be one of: standard, spot")
356
+ raise typer.Exit(1)
357
+ _request(
358
+ "/v1/processing/stage-jobs/egoexo/pose-2d/launch-batch",
359
+ method="POST",
360
+ body={
361
+ "limit": limit,
362
+ "run_key": run_key,
363
+ "task_count": task_count,
364
+ "execution_profile_key": execution_profile_key,
365
+ "provisioning_model": provisioning_model,
366
+ "lease_seconds": lease_seconds,
367
+ "dry_run": dry_run or not write,
368
+ },
369
+ )
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "buildai-cli"
7
- version = "0.3.63"
7
+ version = "0.3.65"
8
8
  description = "Build AI CLI (Typer)"
9
9
  requires-python = ">=3.11"
10
10
  dependencies = [
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes