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.
- {buildai_cli-0.3.152 → buildai_cli-0.3.154}/PKG-INFO +1 -1
- {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/commands/egoexo_config.py +4 -2
- {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/commands/processing.py +0 -152
- {buildai_cli-0.3.152 → buildai_cli-0.3.154}/pyproject.toml +1 -1
- {buildai_cli-0.3.152 → buildai_cli-0.3.154}/.gitignore +0 -0
- {buildai_cli-0.3.152 → buildai_cli-0.3.154}/AGENTS.md +0 -0
- {buildai_cli-0.3.152 → buildai_cli-0.3.154}/CLAUDE.md +0 -0
- {buildai_cli-0.3.152 → buildai_cli-0.3.154}/Dockerfile.rescaling-migration-jobs +0 -0
- {buildai_cli-0.3.152 → buildai_cli-0.3.154}/Dockerfile.rescaling-migration-jobs.dockerignore +0 -0
- {buildai_cli-0.3.152 → buildai_cli-0.3.154}/buildai_bootstrap.py +0 -0
- {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/__init__.py +0 -0
- {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/_has_core.py +0 -0
- {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/auth_local.py +0 -0
- {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/commands/__init__.py +0 -0
- {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/commands/api_proxy.py +0 -0
- {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/commands/auth.py +0 -0
- {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/commands/db/__init__.py +0 -0
- {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/commands/db/broker.py +0 -0
- {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/commands/db/common.py +0 -0
- {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/commands/db/migrate.py +0 -0
- {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/commands/db/query.py +0 -0
- {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/commands/db/rescaling.py +0 -0
- {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/commands/db/schema.py +0 -0
- {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/commands/db/status.py +0 -0
- {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/commands/db/tunnel.py +0 -0
- {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/commands/dev.py +0 -0
- {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/commands/doctor.py +0 -0
- {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/commands/ego_frame_search.py +0 -0
- {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/commands/egoexo.py +0 -0
- {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/commands/egoexo_status.py +0 -0
- {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/commands/gigcamera.py +0 -0
- {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/commands/ingest.py +0 -0
- {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/commands/ingest_docs.py +0 -0
- {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/commands/intake.py +0 -0
- {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/commands/label_replay_recovery.py +0 -0
- {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/commands/labeling.py +0 -0
- {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/commands/rescaling.py +0 -0
- {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/commands/spec.py +0 -0
- {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/commands/spec_pr.py +0 -0
- {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/config.py +0 -0
- {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/console.py +0 -0
- {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/context.py +0 -0
- {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/db_broker.py +0 -0
- {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/guard.py +0 -0
- {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/internal_api.py +0 -0
- {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/labeling_onboarding.py +0 -0
- {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/main.py +0 -0
- {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/nl_query/__init__.py +0 -0
- {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/nl_query/dataset_tools.py +0 -0
- {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/ops_init.py +0 -0
- {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/output.py +0 -0
- {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/pagination.py +0 -0
- {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/rescaling_migration/__init__.py +0 -0
- {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/rescaling_migration/canonical.py +0 -0
- {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/rescaling_migration/export.py +0 -0
- {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/rescaling_migration/feed_proofs.py +0 -0
- {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/rescaling_migration/fence.py +0 -0
- {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/rescaling_migration/importer.py +0 -0
- {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/rescaling_migration/jobs.py +0 -0
- {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/rescaling_migration/management.py +0 -0
- {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/rescaling_migration/orchestrator.py +0 -0
- {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/rescaling_migration/probes.py +0 -0
- {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/rescaling_migration/reconcile.py +0 -0
- {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/rescaling_migration/run_record.py +0 -0
- {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/rescaling_migration/runtime.py +0 -0
- {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/rescaling_migration/sql/legacy_export_closeout.sql +0 -0
- {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/rescaling_migration/sql/legacy_export_prepare.sql +0 -0
- {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/rescaling_migration/sql/legacy_fence.sql +0 -0
- {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/rescaling_migration/sql/legacy_unfreeze.sql +0 -0
- {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/rescaling_migration/sql/v2_export_closeout.sql +0 -0
- {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/rescaling_migration/sql/v2_export_prepare.sql +0 -0
- {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/rescaling_migration/sql/v2_fence.sql +0 -0
- {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/rescaling_migration/sql/v2_unfreeze.sql +0 -0
- {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/rescaling_migration/storage.py +0 -0
- {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/rescaling_migration/transform.py +0 -0
- {buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/rls_guard.py +0 -0
- {buildai_cli-0.3.152 → buildai_cli-0.3.154}/rescaling_logical_backup/__init__.py +0 -0
- {buildai_cli-0.3.152 → buildai_cli-0.3.154}/rescaling_logical_backup/__main__.py +0 -0
- {buildai_cli-0.3.152 → buildai_cli-0.3.154}/rescaling_migration_job/__init__.py +0 -0
- {buildai_cli-0.3.152 → buildai_cli-0.3.154}/rescaling_migration_job/__main__.py +0 -0
- {buildai_cli-0.3.152 → buildai_cli-0.3.154}/rescaling_recovery_extractor/__init__.py +0 -0
- {buildai_cli-0.3.152 → buildai_cli-0.3.154}/rescaling_recovery_extractor/__main__.py +0 -0
|
@@ -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(
|
|
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
|
|
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
|
-
)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{buildai_cli-0.3.152 → buildai_cli-0.3.154}/Dockerfile.rescaling-migration-jobs.dockerignore
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/rescaling_migration/sql/legacy_export_closeout.sql
RENAMED
|
File without changes
|
{buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/rescaling_migration/sql/legacy_export_prepare.sql
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/rescaling_migration/sql/v2_export_closeout.sql
RENAMED
|
File without changes
|
{buildai_cli-0.3.152 → buildai_cli-0.3.154}/cli/rescaling_migration/sql/v2_export_prepare.sql
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|