buildai-cli 0.3.152__tar.gz → 0.3.154__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 (82) hide show
  1. {buildai_cli-0.3.152 → buildai_cli-0.3.154}/PKG-INFO +1 -1
  2. {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/commands/egoexo_config.py +4 -2
  3. {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/commands/processing.py +0 -152
  4. {buildai_cli-0.3.152 → buildai_cli-0.3.154}/pyproject.toml +1 -1
  5. {buildai_cli-0.3.152 → buildai_cli-0.3.154}/.gitignore +0 -0
  6. {buildai_cli-0.3.152 → buildai_cli-0.3.154}/AGENTS.md +0 -0
  7. {buildai_cli-0.3.152 → buildai_cli-0.3.154}/CLAUDE.md +0 -0
  8. {buildai_cli-0.3.152 → buildai_cli-0.3.154}/Dockerfile.rescaling-migration-jobs +0 -0
  9. {buildai_cli-0.3.152 → buildai_cli-0.3.154}/Dockerfile.rescaling-migration-jobs.dockerignore +0 -0
  10. {buildai_cli-0.3.152 → buildai_cli-0.3.154}/buildai_bootstrap.py +0 -0
  11. {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/__init__.py +0 -0
  12. {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/_has_core.py +0 -0
  13. {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/auth_local.py +0 -0
  14. {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/commands/__init__.py +0 -0
  15. {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/commands/api_proxy.py +0 -0
  16. {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/commands/auth.py +0 -0
  17. {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/commands/db/__init__.py +0 -0
  18. {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/commands/db/broker.py +0 -0
  19. {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/commands/db/common.py +0 -0
  20. {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/commands/db/migrate.py +0 -0
  21. {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/commands/db/query.py +0 -0
  22. {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/commands/db/rescaling.py +0 -0
  23. {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/commands/db/schema.py +0 -0
  24. {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/commands/db/status.py +0 -0
  25. {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/commands/db/tunnel.py +0 -0
  26. {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/commands/dev.py +0 -0
  27. {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/commands/doctor.py +0 -0
  28. {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/commands/ego_frame_search.py +0 -0
  29. {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/commands/egoexo.py +0 -0
  30. {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/commands/egoexo_status.py +0 -0
  31. {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/commands/gigcamera.py +0 -0
  32. {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/commands/ingest.py +0 -0
  33. {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/commands/ingest_docs.py +0 -0
  34. {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/commands/intake.py +0 -0
  35. {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/commands/label_replay_recovery.py +0 -0
  36. {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/commands/labeling.py +0 -0
  37. {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/commands/rescaling.py +0 -0
  38. {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/commands/spec.py +0 -0
  39. {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/commands/spec_pr.py +0 -0
  40. {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/config.py +0 -0
  41. {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/console.py +0 -0
  42. {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/context.py +0 -0
  43. {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/db_broker.py +0 -0
  44. {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/guard.py +0 -0
  45. {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/internal_api.py +0 -0
  46. {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/labeling_onboarding.py +0 -0
  47. {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/main.py +0 -0
  48. {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/nl_query/__init__.py +0 -0
  49. {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/nl_query/dataset_tools.py +0 -0
  50. {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/ops_init.py +0 -0
  51. {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/output.py +0 -0
  52. {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/pagination.py +0 -0
  53. {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/rescaling_migration/__init__.py +0 -0
  54. {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/rescaling_migration/canonical.py +0 -0
  55. {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/rescaling_migration/export.py +0 -0
  56. {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/rescaling_migration/feed_proofs.py +0 -0
  57. {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/rescaling_migration/fence.py +0 -0
  58. {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/rescaling_migration/importer.py +0 -0
  59. {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/rescaling_migration/jobs.py +0 -0
  60. {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/rescaling_migration/management.py +0 -0
  61. {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/rescaling_migration/orchestrator.py +0 -0
  62. {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/rescaling_migration/probes.py +0 -0
  63. {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/rescaling_migration/reconcile.py +0 -0
  64. {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/rescaling_migration/run_record.py +0 -0
  65. {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/rescaling_migration/runtime.py +0 -0
  66. {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/rescaling_migration/sql/legacy_export_closeout.sql +0 -0
  67. {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/rescaling_migration/sql/legacy_export_prepare.sql +0 -0
  68. {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/rescaling_migration/sql/legacy_fence.sql +0 -0
  69. {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/rescaling_migration/sql/legacy_unfreeze.sql +0 -0
  70. {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/rescaling_migration/sql/v2_export_closeout.sql +0 -0
  71. {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/rescaling_migration/sql/v2_export_prepare.sql +0 -0
  72. {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/rescaling_migration/sql/v2_fence.sql +0 -0
  73. {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/rescaling_migration/sql/v2_unfreeze.sql +0 -0
  74. {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/rescaling_migration/storage.py +0 -0
  75. {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/rescaling_migration/transform.py +0 -0
  76. {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/rls_guard.py +0 -0
  77. {buildai_cli-0.3.152 → buildai_cli-0.3.154}/rescaling_logical_backup/__init__.py +0 -0
  78. {buildai_cli-0.3.152 → buildai_cli-0.3.154}/rescaling_logical_backup/__main__.py +0 -0
  79. {buildai_cli-0.3.152 → buildai_cli-0.3.154}/rescaling_migration_job/__init__.py +0 -0
  80. {buildai_cli-0.3.152 → buildai_cli-0.3.154}/rescaling_migration_job/__main__.py +0 -0
  81. {buildai_cli-0.3.152 → buildai_cli-0.3.154}/rescaling_recovery_extractor/__init__.py +0 -0
  82. {buildai_cli-0.3.152 → buildai_cli-0.3.154}/rescaling_recovery_extractor/__main__.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: buildai-cli
3
- Version: 0.3.152
3
+ Version: 0.3.154
4
4
  Summary: Build AI CLI (Typer)
5
5
  Requires-Python: >=3.11
6
6
  Requires-Dist: google-crc32c>=1.7.1
@@ -333,12 +333,14 @@ def set_recipe(
333
333
 
334
334
  @app.command("set-task-classes")
335
335
  def set_task_classes(
336
- file: Path = typer.Argument(..., help="Task class list JSON, one to three classes."),
336
+ file: Path = typer.Argument(
337
+ ..., help="Per-class overlays keyed by name, for example limits; images stay in env."
338
+ ),
337
339
  uri: str | None = URI_OPTION,
338
340
  write: bool = WRITE_OPTION,
339
341
  reason: str | None = REASON_OPTION,
340
342
  ) -> None:
341
- """Store task classes that override BUILDAI_EGOEXO_ASSIGNED_TASK_CLASSES_JSON."""
343
+ """Store per-class field overlays applied on top of the environment task classes."""
342
344
  classes = _load_json_file(file)
343
345
  _revise(
344
346
  _store(uri),
@@ -16,10 +16,8 @@ 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)
20
19
  app.add_typer(queue_app, name="queue")
21
20
  app.add_typer(scheduler_app, name="scheduler")
22
- app.add_typer(stage_jobs_app, name="stage-jobs")
23
21
 
24
22
 
25
23
  def _request(
@@ -287,153 +285,3 @@ def scheduler_tick(
287
285
  ),
288
286
  },
289
287
  )
290
-
291
-
292
- @stage_jobs_app.command("tick-egoexo")
293
- def tick_egoexo_stage_jobs(
294
- run_key: str | None = typer.Option(None, "--run-key", help="Stage-job run key to tick."),
295
- program_slug: str = typer.Option(
296
- "build-egoexo-2026",
297
- "--program-slug",
298
- help="Program slug whose active episodes should be planned.",
299
- ),
300
- recording_batch_id: str | None = typer.Option(
301
- None,
302
- "--recording-batch-id",
303
- help="Optional recording batch id to plan exactly one finalized ingest batch.",
304
- ),
305
- stages: str | None = typer.Option(
306
- None,
307
- "--stages",
308
- help="Comma-separated canonical stage keys. Defaults to the full recording-scoped pipeline.",
309
- ),
310
- plan_limit: int = typer.Option(500, "--plan-limit", min=1, max=5000),
311
- priority: int = typer.Option(7, "--priority", min=0, max=10),
312
- skip_existing_pose_3d: bool = typer.Option(
313
- True,
314
- "--skip-existing-pose-3d/--include-existing-pose-3d",
315
- help="Skip Pose3D work for episodes that already have Pose3D outputs.",
316
- ),
317
- launch: bool = typer.Option(
318
- False, "--launch/--no-launch", help="Launch ready workers after planning."
319
- ),
320
- dry_run: bool = typer.Option(
321
- False, "--dry-run", help="Preview the tick without writes or launches."
322
- ),
323
- write: bool = typer.Option(False, "--write", help="Create work items. Omit for dry-run."),
324
- ) -> None:
325
- """Run the canonical recording-scoped EgoExo stage-job tick."""
326
- _request(
327
- "/v1/processing/stage-jobs/egoexo/tick",
328
- method="POST",
329
- body={
330
- "program_slug": program_slug,
331
- "recording_batch_id": recording_batch_id,
332
- "stages": _parse_csv(
333
- stages,
334
- option_name="--stages",
335
- allowed={"frame_extract", "pose_2d", "pose_3d_definition_run"},
336
- ),
337
- "run_key": run_key,
338
- "plan_limit": plan_limit,
339
- "priority": priority,
340
- "skip_existing_pose_3d": skip_existing_pose_3d,
341
- "launch_frame_extract": launch,
342
- "launch_pose_2d": launch,
343
- "launch_pose_3d": launch,
344
- "dry_run": dry_run or not write,
345
- },
346
- )
347
-
348
-
349
- @stage_jobs_app.command("launch-egoexo-pose-2d-modal")
350
- def launch_egoexo_pose_2d_modal(
351
- limit: int = typer.Option(500, "--limit", min=1, max=1000),
352
- run_key: str = typer.Option(..., "--run-key", help="Pose2D run key to drain."),
353
- task_count: int = typer.Option(
354
- 500,
355
- "--task-count",
356
- min=1,
357
- max=1000,
358
- help="Maximum Modal workers per episode work item.",
359
- ),
360
- execution_profile_key: str = typer.Option(
361
- "modal.h100.500",
362
- "--execution-profile-key",
363
- help="Modal execution profile used for each episode job.",
364
- ),
365
- store_heatmaps: bool = typer.Option(
366
- False,
367
- "--store-heatmaps",
368
- help="Persist pre-decoded Sapiens heatmap logits as optional artifacts.",
369
- ),
370
- modal_spawn_parallelism: int | None = typer.Option(
371
- None,
372
- "--modal-spawn-parallelism",
373
- min=1,
374
- max=1000,
375
- help="Maximum concurrent Modal spawn calls for this launcher request.",
376
- ),
377
- lease_seconds: int = typer.Option(24 * 60 * 60, "--lease-seconds", min=600),
378
- dry_run: bool = typer.Option(False, "--dry-run", help="Preview ready work without leasing."),
379
- write: bool = typer.Option(False, "--write", help="Launch jobs. Omit for dry-run."),
380
- ) -> None:
381
- """Launch Modal-backed Sapiens Pose2D workers for ready EgoExo episodes."""
382
- config: dict[str, object] = {"store_heatmaps": store_heatmaps}
383
- if modal_spawn_parallelism is not None:
384
- config["modal_spawn_parallelism"] = modal_spawn_parallelism
385
- _request(
386
- "/v1/processing/stage-jobs/egoexo/pose-2d/launch-modal",
387
- method="POST",
388
- body={
389
- "limit": limit,
390
- "run_key": run_key,
391
- "task_count": task_count,
392
- "execution_profile_key": execution_profile_key,
393
- "config": config,
394
- "lease_seconds": lease_seconds,
395
- "dry_run": dry_run or not write,
396
- },
397
- )
398
-
399
-
400
- @stage_jobs_app.command("launch-egoexo-pose-3d-batch")
401
- def launch_egoexo_pose_3d_batch(
402
- limit: int = typer.Option(10, "--limit", min=1, max=200),
403
- run_key: str = typer.Option(..., "--run-key", help="Pose3D run key to drain."),
404
- execution_profile_key: str = typer.Option(
405
- "gcp.us.pose_3d_cpu",
406
- "--execution-profile-key",
407
- help="Cloud Batch execution profile used for each episode triangulation job.",
408
- ),
409
- provisioning_model: str = typer.Option(
410
- "standard",
411
- "--provisioning-model",
412
- help="Cloud Batch provisioning model: standard or spot.",
413
- ),
414
- config_json: str | None = typer.Option(
415
- None,
416
- "--config-json",
417
- help="Optional Pose3D processor config JSON object.",
418
- ),
419
- lease_seconds: int = typer.Option(24 * 60 * 60, "--lease-seconds", min=600),
420
- dry_run: bool = typer.Option(False, "--dry-run", help="Preview ready work without leasing."),
421
- write: bool = typer.Option(False, "--write", help="Launch jobs. Omit for dry-run."),
422
- ) -> None:
423
- """Launch optimized receipt-backed Pose3D triangulation jobs for ready episodes."""
424
- if provisioning_model not in {"standard", "spot"}:
425
- error("--provisioning-model must be one of: standard, spot")
426
- raise typer.Exit(1)
427
- _request(
428
- "/v1/processing/stage-jobs/egoexo/pose-3d/launch-batch",
429
- method="POST",
430
- body={
431
- "limit": limit,
432
- "run_key": run_key,
433
- "execution_profile_key": execution_profile_key,
434
- "provisioning_model": provisioning_model,
435
- "config": _parse_json_object(config_json, option_name="--config-json"),
436
- "lease_seconds": lease_seconds,
437
- "dry_run": dry_run or not write,
438
- },
439
- )
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "buildai-cli"
7
- version = "0.3.152"
7
+ version = "0.3.154"
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