buildai-cli 0.3.51__tar.gz → 0.3.52__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.51 → buildai_cli-0.3.52}/PKG-INFO +1 -1
- {buildai_cli-0.3.51 → buildai_cli-0.3.52}/cli/commands/gigcamera.py +34 -125
- {buildai_cli-0.3.51 → buildai_cli-0.3.52}/pyproject.toml +1 -1
- {buildai_cli-0.3.51 → buildai_cli-0.3.52}/.gitignore +0 -0
- {buildai_cli-0.3.51 → buildai_cli-0.3.52}/AGENTS.md +0 -0
- {buildai_cli-0.3.51 → buildai_cli-0.3.52}/CLAUDE.md +0 -0
- {buildai_cli-0.3.51 → buildai_cli-0.3.52}/buildai_bootstrap.py +0 -0
- {buildai_cli-0.3.51 → buildai_cli-0.3.52}/cli/__init__.py +0 -0
- {buildai_cli-0.3.51 → buildai_cli-0.3.52}/cli/_has_core.py +0 -0
- {buildai_cli-0.3.51 → buildai_cli-0.3.52}/cli/auth_local.py +0 -0
- {buildai_cli-0.3.51 → buildai_cli-0.3.52}/cli/auth_proxy.py +0 -0
- {buildai_cli-0.3.51 → buildai_cli-0.3.52}/cli/commands/__init__.py +0 -0
- {buildai_cli-0.3.51 → buildai_cli-0.3.52}/cli/commands/api_proxy.py +0 -0
- {buildai_cli-0.3.51 → buildai_cli-0.3.52}/cli/commands/auth.py +0 -0
- {buildai_cli-0.3.51 → buildai_cli-0.3.52}/cli/commands/db/__init__.py +0 -0
- {buildai_cli-0.3.51 → buildai_cli-0.3.52}/cli/commands/db/common.py +0 -0
- {buildai_cli-0.3.51 → buildai_cli-0.3.52}/cli/commands/db/migrate.py +0 -0
- {buildai_cli-0.3.51 → buildai_cli-0.3.52}/cli/commands/db/query.py +0 -0
- {buildai_cli-0.3.51 → buildai_cli-0.3.52}/cli/commands/db/schema.py +0 -0
- {buildai_cli-0.3.51 → buildai_cli-0.3.52}/cli/commands/db/status.py +0 -0
- {buildai_cli-0.3.51 → buildai_cli-0.3.52}/cli/commands/dev.py +0 -0
- {buildai_cli-0.3.51 → buildai_cli-0.3.52}/cli/commands/doctor.py +0 -0
- {buildai_cli-0.3.51 → buildai_cli-0.3.52}/cli/config.py +0 -0
- {buildai_cli-0.3.51 → buildai_cli-0.3.52}/cli/console.py +0 -0
- {buildai_cli-0.3.51 → buildai_cli-0.3.52}/cli/context.py +0 -0
- {buildai_cli-0.3.51 → buildai_cli-0.3.52}/cli/guard.py +0 -0
- {buildai_cli-0.3.51 → buildai_cli-0.3.52}/cli/internal_api.py +0 -0
- {buildai_cli-0.3.51 → buildai_cli-0.3.52}/cli/main.py +0 -0
- {buildai_cli-0.3.51 → buildai_cli-0.3.52}/cli/nl_query/__init__.py +0 -0
- {buildai_cli-0.3.51 → buildai_cli-0.3.52}/cli/nl_query/dataset_tools.py +0 -0
- {buildai_cli-0.3.51 → buildai_cli-0.3.52}/cli/ops_init.py +0 -0
- {buildai_cli-0.3.51 → buildai_cli-0.3.52}/cli/output.py +0 -0
- {buildai_cli-0.3.51 → buildai_cli-0.3.52}/cli/pagination.py +0 -0
|
@@ -659,125 +659,34 @@ def vlm_drain_pending_recaps(
|
|
|
659
659
|
limit=limit,
|
|
660
660
|
upload_session_ids=upload_session_ids,
|
|
661
661
|
)
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
"
|
|
665
|
-
"
|
|
666
|
-
"
|
|
667
|
-
"
|
|
668
|
-
"
|
|
662
|
+
drain_summary: dict[str, object] = {
|
|
663
|
+
"claimed_count": 0,
|
|
664
|
+
"missing_frame_session_count": 0,
|
|
665
|
+
"ready_recap_session_count": 0,
|
|
666
|
+
"completed_session_count": 0,
|
|
667
|
+
"skipped_session_count": 0,
|
|
668
|
+
"deferred_session_count": 0,
|
|
669
|
+
"quarantined_count": 0,
|
|
670
|
+
"max_attempts": _RECAP_QUEUE_MAX_ATTEMPTS,
|
|
671
|
+
"manifest_count": 0,
|
|
672
|
+
"manifests": [],
|
|
669
673
|
}
|
|
670
|
-
manifests: list[dict[str, object]] = []
|
|
671
|
-
quarantined_count = 0
|
|
672
674
|
|
|
673
675
|
if write:
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
)
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
missing_ids = [str(value) for value in drain_plan["missing_frame_session_ids"]]
|
|
689
|
-
ready_ids = [str(value) for value in drain_plan["ready_recap_session_ids"]]
|
|
690
|
-
if missing_ids or ready_ids:
|
|
691
|
-
async with get_cli_context(
|
|
692
|
-
settings,
|
|
693
|
-
profile=ctx.obj.get("cli_profile"),
|
|
694
|
-
) as (_db, dal_ctx):
|
|
695
|
-
if missing_ids:
|
|
696
|
-
manifest = await media_jobs.queue_processor_job(
|
|
697
|
-
dal_ctx,
|
|
698
|
-
processor_ref=(
|
|
699
|
-
media_jobs.GIGCAMERA_NORMALIZE_EXTRACT_PROCESSOR_REF
|
|
700
|
-
),
|
|
701
|
-
selection_spec={
|
|
702
|
-
"kind": "gigcamera_uploads",
|
|
703
|
-
"upload_session_ids": missing_ids,
|
|
704
|
-
"only_missing_frames": True,
|
|
705
|
-
},
|
|
706
|
-
sink_overrides=None,
|
|
707
|
-
resource_overrides=None,
|
|
708
|
-
submitted_by_principal=_SUBMITTED_BY,
|
|
709
|
-
idempotency_key=_stable_idempotency_key(
|
|
710
|
-
prefix=(
|
|
711
|
-
f"gigcamera-vlm-pending-extract:{program_version_label}"
|
|
712
|
-
),
|
|
713
|
-
parts=missing_ids,
|
|
714
|
-
),
|
|
715
|
-
)
|
|
716
|
-
manifests.append(
|
|
717
|
-
{"phase": "extract", "manifest_id": manifest["id"]}
|
|
718
|
-
)
|
|
719
|
-
await _mark_pending_recap_rows(
|
|
720
|
-
conn,
|
|
721
|
-
upload_session_ids=drain_plan["missing_frame_session_ids"],
|
|
722
|
-
status="extract_enqueued",
|
|
723
|
-
manifest_id=str(manifest["id"]),
|
|
724
|
-
deferred_reason="extract_manifest_enqueued",
|
|
725
|
-
)
|
|
726
|
-
if ready_ids:
|
|
727
|
-
manifest = await media_jobs.queue_processor_job(
|
|
728
|
-
dal_ctx,
|
|
729
|
-
processor_ref=media_jobs.GIGCAMERA_DAILY_RECAP_PROCESSOR_REF,
|
|
730
|
-
selection_spec={
|
|
731
|
-
"kind": "gigcamera_sessions",
|
|
732
|
-
"upload_session_ids": ready_ids,
|
|
733
|
-
"selection_kind": "near_90s",
|
|
734
|
-
"exclude_completed": True,
|
|
735
|
-
},
|
|
736
|
-
sink_overrides=None,
|
|
737
|
-
resource_overrides=None,
|
|
738
|
-
submitted_by_principal=_SUBMITTED_BY,
|
|
739
|
-
idempotency_key=_stable_idempotency_key(
|
|
740
|
-
prefix=(
|
|
741
|
-
f"gigcamera-vlm-pending-recap:{program_version_label}"
|
|
742
|
-
),
|
|
743
|
-
parts=ready_ids,
|
|
744
|
-
),
|
|
745
|
-
)
|
|
746
|
-
manifests.append({"phase": "recap", "manifest_id": manifest["id"]})
|
|
747
|
-
await _mark_pending_recap_rows(
|
|
748
|
-
conn,
|
|
749
|
-
upload_session_ids=drain_plan["ready_recap_session_ids"],
|
|
750
|
-
status="recap_enqueued",
|
|
751
|
-
manifest_id=str(manifest["id"]),
|
|
752
|
-
deferred_reason="recap_manifest_enqueued",
|
|
753
|
-
)
|
|
754
|
-
await _mark_pending_recap_rows(
|
|
755
|
-
conn,
|
|
756
|
-
upload_session_ids=drain_plan["deferred_session_ids"],
|
|
757
|
-
status="extract_enqueued",
|
|
758
|
-
deferred_reason="extract_already_inflight",
|
|
759
|
-
)
|
|
760
|
-
await _mark_pending_recap_rows(
|
|
761
|
-
conn,
|
|
762
|
-
upload_session_ids=drain_plan["completed_session_ids"],
|
|
763
|
-
status="completed",
|
|
764
|
-
deferred_reason="already_completed",
|
|
765
|
-
)
|
|
766
|
-
await _mark_pending_recap_rows(
|
|
767
|
-
conn,
|
|
768
|
-
upload_session_ids=drain_plan["skipped_session_ids"],
|
|
769
|
-
status="skipped",
|
|
770
|
-
deferred_reason="no_core_claims",
|
|
771
|
-
)
|
|
772
|
-
except Exception as exc:
|
|
773
|
-
await _mark_pending_recap_rows(
|
|
774
|
-
conn,
|
|
775
|
-
upload_session_ids=claimed_session_ids,
|
|
776
|
-
status="failed",
|
|
777
|
-
deferred_reason="drain_failed",
|
|
778
|
-
error=str(exc)[:2048],
|
|
676
|
+
from dal.processing import recap_drain
|
|
677
|
+
|
|
678
|
+
async with get_cli_context(
|
|
679
|
+
settings,
|
|
680
|
+
profile=ctx.obj.get("cli_profile"),
|
|
681
|
+
) as (_db, dal_ctx):
|
|
682
|
+
drain_summary = await recap_drain.run_drain_pass(
|
|
683
|
+
dal_ctx,
|
|
684
|
+
program_version_label=program_version_label,
|
|
685
|
+
limit=limit,
|
|
686
|
+
upload_session_ids=upload_session_ids,
|
|
687
|
+
submitted_by_principal=_SUBMITTED_BY,
|
|
688
|
+
max_attempts=_RECAP_QUEUE_MAX_ATTEMPTS,
|
|
779
689
|
)
|
|
780
|
-
raise
|
|
781
690
|
|
|
782
691
|
render(
|
|
783
692
|
{
|
|
@@ -789,17 +698,17 @@ def vlm_drain_pending_recaps(
|
|
|
789
698
|
str(upload_session_id) for upload_session_id in upload_session_ids or []
|
|
790
699
|
],
|
|
791
700
|
"claimable_count": claimable_count,
|
|
792
|
-
"claimed_count":
|
|
701
|
+
"claimed_count": drain_summary["claimed_count"],
|
|
793
702
|
"status_counts": status_counts,
|
|
794
|
-
"missing_frame_session_count":
|
|
795
|
-
"ready_recap_session_count":
|
|
796
|
-
"completed_session_count":
|
|
797
|
-
"skipped_session_count":
|
|
798
|
-
"deferred_session_count":
|
|
799
|
-
"quarantined_count": quarantined_count,
|
|
800
|
-
"max_attempts":
|
|
801
|
-
"manifest_count":
|
|
802
|
-
"manifests": manifests,
|
|
703
|
+
"missing_frame_session_count": drain_summary["missing_frame_session_count"],
|
|
704
|
+
"ready_recap_session_count": drain_summary["ready_recap_session_count"],
|
|
705
|
+
"completed_session_count": drain_summary["completed_session_count"],
|
|
706
|
+
"skipped_session_count": drain_summary["skipped_session_count"],
|
|
707
|
+
"deferred_session_count": drain_summary["deferred_session_count"],
|
|
708
|
+
"quarantined_count": drain_summary["quarantined_count"],
|
|
709
|
+
"max_attempts": drain_summary["max_attempts"],
|
|
710
|
+
"manifest_count": drain_summary["manifest_count"],
|
|
711
|
+
"manifests": drain_summary["manifests"],
|
|
803
712
|
},
|
|
804
713
|
format=format,
|
|
805
714
|
)
|
|
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
|