buildai-cli 0.3.70__tar.gz → 0.3.72__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.70 → buildai_cli-0.3.72}/PKG-INFO +1 -1
- {buildai_cli-0.3.70 → buildai_cli-0.3.72}/cli/commands/processing.py +30 -12
- {buildai_cli-0.3.70 → buildai_cli-0.3.72}/pyproject.toml +1 -1
- {buildai_cli-0.3.70 → buildai_cli-0.3.72}/.gitignore +0 -0
- {buildai_cli-0.3.70 → buildai_cli-0.3.72}/AGENTS.md +0 -0
- {buildai_cli-0.3.70 → buildai_cli-0.3.72}/CLAUDE.md +0 -0
- {buildai_cli-0.3.70 → buildai_cli-0.3.72}/buildai_bootstrap.py +0 -0
- {buildai_cli-0.3.70 → buildai_cli-0.3.72}/cli/__init__.py +0 -0
- {buildai_cli-0.3.70 → buildai_cli-0.3.72}/cli/_has_core.py +0 -0
- {buildai_cli-0.3.70 → buildai_cli-0.3.72}/cli/auth_local.py +0 -0
- {buildai_cli-0.3.70 → buildai_cli-0.3.72}/cli/commands/__init__.py +0 -0
- {buildai_cli-0.3.70 → buildai_cli-0.3.72}/cli/commands/api_proxy.py +0 -0
- {buildai_cli-0.3.70 → buildai_cli-0.3.72}/cli/commands/auth.py +0 -0
- {buildai_cli-0.3.70 → buildai_cli-0.3.72}/cli/commands/db/__init__.py +0 -0
- {buildai_cli-0.3.70 → buildai_cli-0.3.72}/cli/commands/db/broker.py +0 -0
- {buildai_cli-0.3.70 → buildai_cli-0.3.72}/cli/commands/db/common.py +0 -0
- {buildai_cli-0.3.70 → buildai_cli-0.3.72}/cli/commands/db/migrate.py +0 -0
- {buildai_cli-0.3.70 → buildai_cli-0.3.72}/cli/commands/db/query.py +0 -0
- {buildai_cli-0.3.70 → buildai_cli-0.3.72}/cli/commands/db/schema.py +0 -0
- {buildai_cli-0.3.70 → buildai_cli-0.3.72}/cli/commands/db/status.py +0 -0
- {buildai_cli-0.3.70 → buildai_cli-0.3.72}/cli/commands/db/tunnel.py +0 -0
- {buildai_cli-0.3.70 → buildai_cli-0.3.72}/cli/commands/dev.py +0 -0
- {buildai_cli-0.3.70 → buildai_cli-0.3.72}/cli/commands/doctor.py +0 -0
- {buildai_cli-0.3.70 → buildai_cli-0.3.72}/cli/commands/gigcamera.py +0 -0
- {buildai_cli-0.3.70 → buildai_cli-0.3.72}/cli/config.py +0 -0
- {buildai_cli-0.3.70 → buildai_cli-0.3.72}/cli/console.py +0 -0
- {buildai_cli-0.3.70 → buildai_cli-0.3.72}/cli/context.py +0 -0
- {buildai_cli-0.3.70 → buildai_cli-0.3.72}/cli/db_broker.py +0 -0
- {buildai_cli-0.3.70 → buildai_cli-0.3.72}/cli/guard.py +0 -0
- {buildai_cli-0.3.70 → buildai_cli-0.3.72}/cli/internal_api.py +0 -0
- {buildai_cli-0.3.70 → buildai_cli-0.3.72}/cli/main.py +0 -0
- {buildai_cli-0.3.70 → buildai_cli-0.3.72}/cli/nl_query/__init__.py +0 -0
- {buildai_cli-0.3.70 → buildai_cli-0.3.72}/cli/nl_query/dataset_tools.py +0 -0
- {buildai_cli-0.3.70 → buildai_cli-0.3.72}/cli/ops_init.py +0 -0
- {buildai_cli-0.3.70 → buildai_cli-0.3.72}/cli/output.py +0 -0
- {buildai_cli-0.3.70 → buildai_cli-0.3.72}/cli/pagination.py +0 -0
|
@@ -289,9 +289,9 @@ def scheduler_tick(
|
|
|
289
289
|
)
|
|
290
290
|
|
|
291
291
|
|
|
292
|
-
@stage_jobs_app.command("
|
|
293
|
-
def
|
|
294
|
-
run_key: str = typer.Option(
|
|
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
295
|
program_slug: str = typer.Option(
|
|
296
296
|
"build-egoexo-2026",
|
|
297
297
|
"--program-slug",
|
|
@@ -305,21 +305,26 @@ def plan_egoexo_stage_jobs(
|
|
|
305
305
|
stages: str | None = typer.Option(
|
|
306
306
|
None,
|
|
307
307
|
"--stages",
|
|
308
|
-
help="Comma-separated stage keys. Defaults to
|
|
308
|
+
help="Comma-separated canonical stage keys. Defaults to the full recording-scoped pipeline.",
|
|
309
309
|
),
|
|
310
|
-
|
|
310
|
+
plan_limit: int = typer.Option(500, "--plan-limit", min=1, max=5000),
|
|
311
311
|
priority: int = typer.Option(7, "--priority", min=0, max=10),
|
|
312
312
|
skip_existing_pose_3d: bool = typer.Option(
|
|
313
313
|
True,
|
|
314
314
|
"--skip-existing-pose-3d/--include-existing-pose-3d",
|
|
315
315
|
help="Skip Pose3D work for episodes that already have Pose3D outputs.",
|
|
316
316
|
),
|
|
317
|
-
|
|
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
|
+
),
|
|
318
323
|
write: bool = typer.Option(False, "--write", help="Create work items. Omit for dry-run."),
|
|
319
324
|
) -> None:
|
|
320
|
-
"""
|
|
325
|
+
"""Run the canonical recording-scoped EgoExo stage-job tick."""
|
|
321
326
|
_request(
|
|
322
|
-
"/v1/processing/stage-jobs/egoexo/
|
|
327
|
+
"/v1/processing/stage-jobs/egoexo/tick",
|
|
323
328
|
method="POST",
|
|
324
329
|
body={
|
|
325
330
|
"program_slug": program_slug,
|
|
@@ -327,12 +332,15 @@ def plan_egoexo_stage_jobs(
|
|
|
327
332
|
"stages": _parse_csv(
|
|
328
333
|
stages,
|
|
329
334
|
option_name="--stages",
|
|
330
|
-
allowed={"
|
|
335
|
+
allowed={"frame_index", "pose_2d", "pose_3d_definition_run"},
|
|
331
336
|
),
|
|
332
337
|
"run_key": run_key,
|
|
333
|
-
"
|
|
338
|
+
"plan_limit": plan_limit,
|
|
334
339
|
"priority": priority,
|
|
335
340
|
"skip_existing_pose_3d": skip_existing_pose_3d,
|
|
341
|
+
"launch_frame_index": launch,
|
|
342
|
+
"launch_pose_2d": launch,
|
|
343
|
+
"launch_pose_3d": launch,
|
|
336
344
|
"dry_run": dry_run or not write,
|
|
337
345
|
},
|
|
338
346
|
)
|
|
@@ -340,7 +348,7 @@ def plan_egoexo_stage_jobs(
|
|
|
340
348
|
|
|
341
349
|
@stage_jobs_app.command("launch-egoexo-pose-2d-modal")
|
|
342
350
|
def launch_egoexo_pose_2d_modal(
|
|
343
|
-
limit: int = typer.Option(
|
|
351
|
+
limit: int = typer.Option(500, "--limit", min=1, max=1000),
|
|
344
352
|
run_key: str = typer.Option(..., "--run-key", help="Pose2D run key to drain."),
|
|
345
353
|
task_count: int = typer.Option(
|
|
346
354
|
500,
|
|
@@ -359,11 +367,21 @@ def launch_egoexo_pose_2d_modal(
|
|
|
359
367
|
"--store-heatmaps",
|
|
360
368
|
help="Persist pre-decoded Sapiens heatmap logits as optional artifacts.",
|
|
361
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
|
+
),
|
|
362
377
|
lease_seconds: int = typer.Option(24 * 60 * 60, "--lease-seconds", min=600),
|
|
363
378
|
dry_run: bool = typer.Option(False, "--dry-run", help="Preview ready work without leasing."),
|
|
364
379
|
write: bool = typer.Option(False, "--write", help="Launch jobs. Omit for dry-run."),
|
|
365
380
|
) -> None:
|
|
366
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
|
|
367
385
|
_request(
|
|
368
386
|
"/v1/processing/stage-jobs/egoexo/pose-2d/launch-modal",
|
|
369
387
|
method="POST",
|
|
@@ -372,7 +390,7 @@ def launch_egoexo_pose_2d_modal(
|
|
|
372
390
|
"run_key": run_key,
|
|
373
391
|
"task_count": task_count,
|
|
374
392
|
"execution_profile_key": execution_profile_key,
|
|
375
|
-
"config":
|
|
393
|
+
"config": config,
|
|
376
394
|
"lease_seconds": lease_seconds,
|
|
377
395
|
"dry_run": dry_run or not write,
|
|
378
396
|
},
|
|
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
|