buildai-cli 0.3.154__tar.gz → 0.3.155__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.154 → buildai_cli-0.3.155}/PKG-INFO +1 -1
- buildai_cli-0.3.155/cli/commands/egoexo.py +15 -0
- {buildai_cli-0.3.154 → buildai_cli-0.3.155}/pyproject.toml +1 -1
- buildai_cli-0.3.154/cli/commands/egoexo.py +0 -159
- {buildai_cli-0.3.154 → buildai_cli-0.3.155}/.gitignore +0 -0
- {buildai_cli-0.3.154 → buildai_cli-0.3.155}/AGENTS.md +0 -0
- {buildai_cli-0.3.154 → buildai_cli-0.3.155}/CLAUDE.md +0 -0
- {buildai_cli-0.3.154 → buildai_cli-0.3.155}/Dockerfile.rescaling-migration-jobs +0 -0
- {buildai_cli-0.3.154 → buildai_cli-0.3.155}/Dockerfile.rescaling-migration-jobs.dockerignore +0 -0
- {buildai_cli-0.3.154 → buildai_cli-0.3.155}/buildai_bootstrap.py +0 -0
- {buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/__init__.py +0 -0
- {buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/_has_core.py +0 -0
- {buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/auth_local.py +0 -0
- {buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/commands/__init__.py +0 -0
- {buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/commands/api_proxy.py +0 -0
- {buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/commands/auth.py +0 -0
- {buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/commands/db/__init__.py +0 -0
- {buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/commands/db/broker.py +0 -0
- {buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/commands/db/common.py +0 -0
- {buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/commands/db/migrate.py +0 -0
- {buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/commands/db/query.py +0 -0
- {buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/commands/db/rescaling.py +0 -0
- {buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/commands/db/schema.py +0 -0
- {buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/commands/db/status.py +0 -0
- {buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/commands/db/tunnel.py +0 -0
- {buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/commands/dev.py +0 -0
- {buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/commands/doctor.py +0 -0
- {buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/commands/ego_frame_search.py +0 -0
- {buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/commands/egoexo_config.py +0 -0
- {buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/commands/egoexo_status.py +0 -0
- {buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/commands/gigcamera.py +0 -0
- {buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/commands/ingest.py +0 -0
- {buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/commands/ingest_docs.py +0 -0
- {buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/commands/intake.py +0 -0
- {buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/commands/label_replay_recovery.py +0 -0
- {buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/commands/labeling.py +0 -0
- {buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/commands/processing.py +0 -0
- {buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/commands/rescaling.py +0 -0
- {buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/commands/spec.py +0 -0
- {buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/commands/spec_pr.py +0 -0
- {buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/config.py +0 -0
- {buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/console.py +0 -0
- {buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/context.py +0 -0
- {buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/db_broker.py +0 -0
- {buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/guard.py +0 -0
- {buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/internal_api.py +0 -0
- {buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/labeling_onboarding.py +0 -0
- {buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/main.py +0 -0
- {buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/nl_query/__init__.py +0 -0
- {buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/nl_query/dataset_tools.py +0 -0
- {buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/ops_init.py +0 -0
- {buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/output.py +0 -0
- {buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/pagination.py +0 -0
- {buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/rescaling_migration/__init__.py +0 -0
- {buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/rescaling_migration/canonical.py +0 -0
- {buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/rescaling_migration/export.py +0 -0
- {buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/rescaling_migration/feed_proofs.py +0 -0
- {buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/rescaling_migration/fence.py +0 -0
- {buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/rescaling_migration/importer.py +0 -0
- {buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/rescaling_migration/jobs.py +0 -0
- {buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/rescaling_migration/management.py +0 -0
- {buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/rescaling_migration/orchestrator.py +0 -0
- {buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/rescaling_migration/probes.py +0 -0
- {buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/rescaling_migration/reconcile.py +0 -0
- {buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/rescaling_migration/run_record.py +0 -0
- {buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/rescaling_migration/runtime.py +0 -0
- {buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/rescaling_migration/sql/legacy_export_closeout.sql +0 -0
- {buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/rescaling_migration/sql/legacy_export_prepare.sql +0 -0
- {buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/rescaling_migration/sql/legacy_fence.sql +0 -0
- {buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/rescaling_migration/sql/legacy_unfreeze.sql +0 -0
- {buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/rescaling_migration/sql/v2_export_closeout.sql +0 -0
- {buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/rescaling_migration/sql/v2_export_prepare.sql +0 -0
- {buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/rescaling_migration/sql/v2_fence.sql +0 -0
- {buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/rescaling_migration/sql/v2_unfreeze.sql +0 -0
- {buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/rescaling_migration/storage.py +0 -0
- {buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/rescaling_migration/transform.py +0 -0
- {buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/rls_guard.py +0 -0
- {buildai_cli-0.3.154 → buildai_cli-0.3.155}/rescaling_logical_backup/__init__.py +0 -0
- {buildai_cli-0.3.154 → buildai_cli-0.3.155}/rescaling_logical_backup/__main__.py +0 -0
- {buildai_cli-0.3.154 → buildai_cli-0.3.155}/rescaling_migration_job/__init__.py +0 -0
- {buildai_cli-0.3.154 → buildai_cli-0.3.155}/rescaling_migration_job/__main__.py +0 -0
- {buildai_cli-0.3.154 → buildai_cli-0.3.155}/rescaling_recovery_extractor/__init__.py +0 -0
- {buildai_cli-0.3.154 → buildai_cli-0.3.155}/rescaling_recovery_extractor/__main__.py +0 -0
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"""Operator commands for the live EgoExo pipeline: status reads and runtime configuration."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
import typer
|
|
6
|
+
|
|
7
|
+
from cli.commands.egoexo_config import app as config_app
|
|
8
|
+
from cli.commands.egoexo_status import status
|
|
9
|
+
|
|
10
|
+
app = typer.Typer(
|
|
11
|
+
help="Inspect EgoExo pipeline status and manage its runtime configuration.",
|
|
12
|
+
no_args_is_help=True,
|
|
13
|
+
)
|
|
14
|
+
app.add_typer(config_app, name="config")
|
|
15
|
+
app.command("status")(status)
|
|
@@ -1,159 +0,0 @@
|
|
|
1
|
-
"""Operator commands for EgoExo verdict-plane reads."""
|
|
2
|
-
|
|
3
|
-
from __future__ import annotations
|
|
4
|
-
|
|
5
|
-
import json
|
|
6
|
-
import sys
|
|
7
|
-
from typing import Any
|
|
8
|
-
|
|
9
|
-
import httpx
|
|
10
|
-
import typer
|
|
11
|
-
|
|
12
|
-
from cli.commands.api_proxy import _build_url
|
|
13
|
-
from cli.commands.egoexo_config import app as config_app
|
|
14
|
-
from cli.commands.egoexo_status import status
|
|
15
|
-
from cli.config import resolve_api_url, resolve_credential
|
|
16
|
-
from cli.console import error
|
|
17
|
-
|
|
18
|
-
app = typer.Typer(help="Inspect EgoExo verdict-plane outcomes.", no_args_is_help=True)
|
|
19
|
-
app.add_typer(config_app, name="config")
|
|
20
|
-
app.command("status")(status)
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
def _request(path: str, *, query_params: list[str] | None = None) -> None:
|
|
24
|
-
"""Call the Build AI API with stored CLI credentials and print JSON."""
|
|
25
|
-
try:
|
|
26
|
-
token = resolve_credential()
|
|
27
|
-
except RuntimeError as exc:
|
|
28
|
-
error(str(exc))
|
|
29
|
-
raise typer.Exit(1) from exc
|
|
30
|
-
|
|
31
|
-
url = _build_url(resolve_api_url(), path, query_params)
|
|
32
|
-
headers = {
|
|
33
|
-
"Authorization": f"Bearer {token}",
|
|
34
|
-
"Accept": "application/json",
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
try:
|
|
38
|
-
with httpx.Client(timeout=60.0) as client:
|
|
39
|
-
response = client.get(url, headers=headers)
|
|
40
|
-
except httpx.ConnectError:
|
|
41
|
-
error("Could not connect to the Build AI API. Check your network or BUILDAI_API_URL.")
|
|
42
|
-
raise typer.Exit(1)
|
|
43
|
-
except httpx.TimeoutException:
|
|
44
|
-
error("Request timed out. Try again with a narrower EgoExo identifier.")
|
|
45
|
-
raise typer.Exit(1)
|
|
46
|
-
|
|
47
|
-
try:
|
|
48
|
-
payload: Any = response.json()
|
|
49
|
-
except ValueError:
|
|
50
|
-
payload = {"status_code": response.status_code, "text": response.text}
|
|
51
|
-
sys.stdout.write(json.dumps(payload, indent=2, default=str) + "\n")
|
|
52
|
-
if response.status_code >= 400:
|
|
53
|
-
raise typer.Exit(1)
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
@app.command("recording-disposition")
|
|
57
|
-
def recording_disposition(
|
|
58
|
-
recording_id: str = typer.Argument(..., help="media.recordings id."),
|
|
59
|
-
limit: int = typer.Option(50, "--limit", min=1, max=100, help="Maximum rows."),
|
|
60
|
-
) -> None:
|
|
61
|
-
"""Show why a recording did or did not land in an EgoExo episode."""
|
|
62
|
-
_request(
|
|
63
|
-
f"/v1/dashboard/egoexo/recordings/{recording_id}/disposition",
|
|
64
|
-
query_params=[f"limit={limit}"],
|
|
65
|
-
)
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
@app.command("overview")
|
|
69
|
-
def overview() -> None:
|
|
70
|
-
"""Show verdict-plane row counts and current coverage gaps."""
|
|
71
|
-
_request("/v1/dashboard/egoexo/verdict/overview")
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
@app.command("recording-history")
|
|
75
|
-
def recording_history(
|
|
76
|
-
recording_id: str = typer.Argument(..., help="media.recordings id."),
|
|
77
|
-
limit: int = typer.Option(100, "--limit", min=1, max=200, help="Maximum outcome rows."),
|
|
78
|
-
) -> None:
|
|
79
|
-
"""Show disposition plus recording-grain verdict outcomes for one recording."""
|
|
80
|
-
_request(
|
|
81
|
-
f"/v1/dashboard/egoexo/recordings/{recording_id}/history",
|
|
82
|
-
query_params=[f"limit={limit}"],
|
|
83
|
-
)
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
@app.command("batch-history")
|
|
87
|
-
def batch_history(
|
|
88
|
-
batch_id: str = typer.Argument(..., help="ingest.recording_batches id."),
|
|
89
|
-
limit: int = typer.Option(100, "--limit", min=1, max=200, help="Maximum outcome rows."),
|
|
90
|
-
) -> None:
|
|
91
|
-
"""Show disposition and batch-grain verdict outcomes for one batch."""
|
|
92
|
-
_request(
|
|
93
|
-
f"/v1/dashboard/egoexo/batches/{batch_id}/history",
|
|
94
|
-
query_params=[f"limit={limit}"],
|
|
95
|
-
)
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
@app.command("episode-history")
|
|
99
|
-
def episode_history(
|
|
100
|
-
episode_id: str = typer.Argument(..., help="media.episodes id."),
|
|
101
|
-
limit: int = typer.Option(100, "--limit", min=1, max=200, help="Maximum outcome rows."),
|
|
102
|
-
) -> None:
|
|
103
|
-
"""Show episode-grain verdict outcomes plus final dispositions."""
|
|
104
|
-
_request(
|
|
105
|
-
f"/v1/dashboard/egoexo/episodes/{episode_id}/verdict-history",
|
|
106
|
-
query_params=[f"limit={limit}"],
|
|
107
|
-
)
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
@app.command("events")
|
|
111
|
-
def events(
|
|
112
|
-
limit: int = typer.Option(50, "--limit", min=1, max=200, help="Maximum outcome rows."),
|
|
113
|
-
table_name: str | None = typer.Option(None, "--table", help="Outcome table filter."),
|
|
114
|
-
stage: str | None = typer.Option(None, "--stage", help="Stage filter."),
|
|
115
|
-
status: str | None = typer.Option(None, "--status", help="Status filter."),
|
|
116
|
-
reason: str | None = typer.Option(None, "--reason", help="Reason or failure-class filter."),
|
|
117
|
-
batch_id: str | None = typer.Option(None, "--batch-id", help="Batch id filter."),
|
|
118
|
-
episode_id: str | None = typer.Option(None, "--episode-id", help="Episode id filter."),
|
|
119
|
-
recording_id: str | None = typer.Option(None, "--recording-id", help="Recording id filter."),
|
|
120
|
-
) -> None:
|
|
121
|
-
"""Show a bounded verdict-plane event log for investigation."""
|
|
122
|
-
query_params = [f"limit={limit}"]
|
|
123
|
-
for key, value in [
|
|
124
|
-
("table_name", table_name),
|
|
125
|
-
("stage", stage),
|
|
126
|
-
("status", status),
|
|
127
|
-
("reason", reason),
|
|
128
|
-
("batch_id", batch_id),
|
|
129
|
-
("episode_id", episode_id),
|
|
130
|
-
("recording_id", recording_id),
|
|
131
|
-
]:
|
|
132
|
-
if value:
|
|
133
|
-
query_params.append(f"{key}={value}")
|
|
134
|
-
_request("/v1/dashboard/egoexo/verdict/events", query_params=query_params)
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
@app.command("runtime-errors")
|
|
138
|
-
def runtime_errors(
|
|
139
|
-
limit: int = typer.Option(100, "--limit", min=1, max=500, help="Maximum archive rows."),
|
|
140
|
-
) -> None:
|
|
141
|
-
"""Show recent historical runtime failures from the Q9 archive view."""
|
|
142
|
-
_request(
|
|
143
|
-
"/v1/dashboard/egoexo/verdict/runtime-archive",
|
|
144
|
-
query_params=[f"limit={limit}"],
|
|
145
|
-
)
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
@app.command("failure-chain")
|
|
149
|
-
def failure_chain(
|
|
150
|
-
outcome_id: str = typer.Argument(..., help="EgoExo outcome row id."),
|
|
151
|
-
table_name: str = typer.Option(
|
|
152
|
-
...,
|
|
153
|
-
"--table",
|
|
154
|
-
help="Outcome table name for the root id.",
|
|
155
|
-
),
|
|
156
|
-
) -> None:
|
|
157
|
-
"""Trace upstream caused-by verdict links for one outcome row."""
|
|
158
|
-
query_params = [f"table_name={table_name}"]
|
|
159
|
-
_request(f"/v1/dashboard/egoexo/verdict/failure-chain/{outcome_id}", query_params=query_params)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{buildai_cli-0.3.154 → buildai_cli-0.3.155}/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
|
|
File without changes
|
{buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/rescaling_migration/sql/legacy_export_closeout.sql
RENAMED
|
File without changes
|
{buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/rescaling_migration/sql/legacy_export_prepare.sql
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/rescaling_migration/sql/v2_export_closeout.sql
RENAMED
|
File without changes
|
{buildai_cli-0.3.154 → buildai_cli-0.3.155}/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
|