buildai-cli 0.3.96__tar.gz → 0.3.97__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 (43) hide show
  1. {buildai_cli-0.3.96 → buildai_cli-0.3.97}/PKG-INFO +1 -1
  2. {buildai_cli-0.3.96 → buildai_cli-0.3.97}/cli/commands/ego_frame_search.py +59 -0
  3. {buildai_cli-0.3.96 → buildai_cli-0.3.97}/pyproject.toml +1 -1
  4. {buildai_cli-0.3.96 → buildai_cli-0.3.97}/.gitignore +0 -0
  5. {buildai_cli-0.3.96 → buildai_cli-0.3.97}/AGENTS.md +0 -0
  6. {buildai_cli-0.3.96 → buildai_cli-0.3.97}/CLAUDE.md +0 -0
  7. {buildai_cli-0.3.96 → buildai_cli-0.3.97}/buildai_bootstrap.py +0 -0
  8. {buildai_cli-0.3.96 → buildai_cli-0.3.97}/cli/__init__.py +0 -0
  9. {buildai_cli-0.3.96 → buildai_cli-0.3.97}/cli/_has_core.py +0 -0
  10. {buildai_cli-0.3.96 → buildai_cli-0.3.97}/cli/auth_local.py +0 -0
  11. {buildai_cli-0.3.96 → buildai_cli-0.3.97}/cli/commands/__init__.py +0 -0
  12. {buildai_cli-0.3.96 → buildai_cli-0.3.97}/cli/commands/api_proxy.py +0 -0
  13. {buildai_cli-0.3.96 → buildai_cli-0.3.97}/cli/commands/auth.py +0 -0
  14. {buildai_cli-0.3.96 → buildai_cli-0.3.97}/cli/commands/db/__init__.py +0 -0
  15. {buildai_cli-0.3.96 → buildai_cli-0.3.97}/cli/commands/db/broker.py +0 -0
  16. {buildai_cli-0.3.96 → buildai_cli-0.3.97}/cli/commands/db/common.py +0 -0
  17. {buildai_cli-0.3.96 → buildai_cli-0.3.97}/cli/commands/db/migrate.py +0 -0
  18. {buildai_cli-0.3.96 → buildai_cli-0.3.97}/cli/commands/db/query.py +0 -0
  19. {buildai_cli-0.3.96 → buildai_cli-0.3.97}/cli/commands/db/schema.py +0 -0
  20. {buildai_cli-0.3.96 → buildai_cli-0.3.97}/cli/commands/db/status.py +0 -0
  21. {buildai_cli-0.3.96 → buildai_cli-0.3.97}/cli/commands/db/tunnel.py +0 -0
  22. {buildai_cli-0.3.96 → buildai_cli-0.3.97}/cli/commands/dev.py +0 -0
  23. {buildai_cli-0.3.96 → buildai_cli-0.3.97}/cli/commands/doctor.py +0 -0
  24. {buildai_cli-0.3.96 → buildai_cli-0.3.97}/cli/commands/egoexo.py +0 -0
  25. {buildai_cli-0.3.96 → buildai_cli-0.3.97}/cli/commands/gigcamera.py +0 -0
  26. {buildai_cli-0.3.96 → buildai_cli-0.3.97}/cli/commands/grid.py +0 -0
  27. {buildai_cli-0.3.96 → buildai_cli-0.3.97}/cli/commands/ingest.py +0 -0
  28. {buildai_cli-0.3.96 → buildai_cli-0.3.97}/cli/commands/ingest_docs.py +0 -0
  29. {buildai_cli-0.3.96 → buildai_cli-0.3.97}/cli/commands/processing.py +0 -0
  30. {buildai_cli-0.3.96 → buildai_cli-0.3.97}/cli/commands/spec.py +0 -0
  31. {buildai_cli-0.3.96 → buildai_cli-0.3.97}/cli/commands/spec_pr.py +0 -0
  32. {buildai_cli-0.3.96 → buildai_cli-0.3.97}/cli/config.py +0 -0
  33. {buildai_cli-0.3.96 → buildai_cli-0.3.97}/cli/console.py +0 -0
  34. {buildai_cli-0.3.96 → buildai_cli-0.3.97}/cli/context.py +0 -0
  35. {buildai_cli-0.3.96 → buildai_cli-0.3.97}/cli/db_broker.py +0 -0
  36. {buildai_cli-0.3.96 → buildai_cli-0.3.97}/cli/guard.py +0 -0
  37. {buildai_cli-0.3.96 → buildai_cli-0.3.97}/cli/internal_api.py +0 -0
  38. {buildai_cli-0.3.96 → buildai_cli-0.3.97}/cli/main.py +0 -0
  39. {buildai_cli-0.3.96 → buildai_cli-0.3.97}/cli/nl_query/__init__.py +0 -0
  40. {buildai_cli-0.3.96 → buildai_cli-0.3.97}/cli/nl_query/dataset_tools.py +0 -0
  41. {buildai_cli-0.3.96 → buildai_cli-0.3.97}/cli/ops_init.py +0 -0
  42. {buildai_cli-0.3.96 → buildai_cli-0.3.97}/cli/output.py +0 -0
  43. {buildai_cli-0.3.96 → buildai_cli-0.3.97}/cli/pagination.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: buildai-cli
3
- Version: 0.3.96
3
+ Version: 0.3.97
4
4
  Summary: Build AI CLI (Typer)
5
5
  Requires-Python: >=3.11
6
6
  Requires-Dist: httpx>=0.27.0
@@ -1008,6 +1008,65 @@ def membership_gigcamera(
1008
1008
  asyncio.run(run())
1009
1009
 
1010
1010
 
1011
+ @app.command("sampled-frames-from-vectors")
1012
+ def sampled_frames_from_vectors(
1013
+ ctx: typer.Context,
1014
+ frame_uri_prefix: str = typer.Option(
1015
+ ...,
1016
+ "--frame-uri-prefix",
1017
+ help="Frame-jpg GCS URI prefix to materialize as sampled frames.",
1018
+ ),
1019
+ clip_id: list[UUID] = typer.Option(
1020
+ [],
1021
+ "--clip-id",
1022
+ help="Core clip id to include. Repeatable.",
1023
+ ),
1024
+ clip_id_file: Path | None = typer.Option(
1025
+ None,
1026
+ "--clip-id-file",
1027
+ exists=True,
1028
+ file_okay=True,
1029
+ dir_okay=False,
1030
+ readable=True,
1031
+ help="Newline-delimited core clip ids to include.",
1032
+ ),
1033
+ space_id: int | None = typer.Option(None, "--space-id", help="Target embedding space id."),
1034
+ space_key: str | None = typer.Option(None, "--space-key"),
1035
+ selection_kind: str = typer.Option("near_90s", "--selection-kind"),
1036
+ limit: int | None = typer.Option(None, "--limit", min=1, help="Cap candidate clips."),
1037
+ write: bool = typer.Option(False, "--write", help="Insert missing sampled-frame rows."),
1038
+ format: Format = format_option(),
1039
+ ) -> None:
1040
+ """Dry-run or materialize sampled-frame anchors from existing frame vectors."""
1041
+ _require_internal_admin_for_write(ctx, write=write)
1042
+ settings = _settings_for_command(ctx, write=write)
1043
+
1044
+ async def run() -> None:
1045
+ from dal.embeddings import ego_frame_search as ego_search_dal
1046
+
1047
+ async with get_cli_context(settings, profile=(ctx.obj or {}).get("cli_profile")) as (
1048
+ _db,
1049
+ dal_ctx,
1050
+ ):
1051
+ target_space_id = await _resolve_space_id(
1052
+ dal_ctx,
1053
+ space_id=space_id,
1054
+ space_key=space_key,
1055
+ )
1056
+ summary = await ego_search_dal.materialize_sampled_frames_from_existing_vectors(
1057
+ dal_ctx,
1058
+ target_space_id=target_space_id,
1059
+ frame_uri_prefix=frame_uri_prefix,
1060
+ clip_ids=_clip_ids_from_options(clip_id, clip_id_file, limit=None),
1061
+ selection_kind=selection_kind,
1062
+ limit=limit,
1063
+ write=write,
1064
+ )
1065
+ render(_plain(summary), format=format)
1066
+
1067
+ asyncio.run(run())
1068
+
1069
+
1011
1070
  @app.command("membership-dataset")
1012
1071
  def membership_dataset(
1013
1072
  ctx: typer.Context,
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "buildai-cli"
7
- version = "0.3.96"
7
+ version = "0.3.97"
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