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.
Files changed (83) hide show
  1. {buildai_cli-0.3.154 → buildai_cli-0.3.155}/PKG-INFO +1 -1
  2. buildai_cli-0.3.155/cli/commands/egoexo.py +15 -0
  3. {buildai_cli-0.3.154 → buildai_cli-0.3.155}/pyproject.toml +1 -1
  4. buildai_cli-0.3.154/cli/commands/egoexo.py +0 -159
  5. {buildai_cli-0.3.154 → buildai_cli-0.3.155}/.gitignore +0 -0
  6. {buildai_cli-0.3.154 → buildai_cli-0.3.155}/AGENTS.md +0 -0
  7. {buildai_cli-0.3.154 → buildai_cli-0.3.155}/CLAUDE.md +0 -0
  8. {buildai_cli-0.3.154 → buildai_cli-0.3.155}/Dockerfile.rescaling-migration-jobs +0 -0
  9. {buildai_cli-0.3.154 → buildai_cli-0.3.155}/Dockerfile.rescaling-migration-jobs.dockerignore +0 -0
  10. {buildai_cli-0.3.154 → buildai_cli-0.3.155}/buildai_bootstrap.py +0 -0
  11. {buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/__init__.py +0 -0
  12. {buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/_has_core.py +0 -0
  13. {buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/auth_local.py +0 -0
  14. {buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/commands/__init__.py +0 -0
  15. {buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/commands/api_proxy.py +0 -0
  16. {buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/commands/auth.py +0 -0
  17. {buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/commands/db/__init__.py +0 -0
  18. {buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/commands/db/broker.py +0 -0
  19. {buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/commands/db/common.py +0 -0
  20. {buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/commands/db/migrate.py +0 -0
  21. {buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/commands/db/query.py +0 -0
  22. {buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/commands/db/rescaling.py +0 -0
  23. {buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/commands/db/schema.py +0 -0
  24. {buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/commands/db/status.py +0 -0
  25. {buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/commands/db/tunnel.py +0 -0
  26. {buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/commands/dev.py +0 -0
  27. {buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/commands/doctor.py +0 -0
  28. {buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/commands/ego_frame_search.py +0 -0
  29. {buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/commands/egoexo_config.py +0 -0
  30. {buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/commands/egoexo_status.py +0 -0
  31. {buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/commands/gigcamera.py +0 -0
  32. {buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/commands/ingest.py +0 -0
  33. {buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/commands/ingest_docs.py +0 -0
  34. {buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/commands/intake.py +0 -0
  35. {buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/commands/label_replay_recovery.py +0 -0
  36. {buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/commands/labeling.py +0 -0
  37. {buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/commands/processing.py +0 -0
  38. {buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/commands/rescaling.py +0 -0
  39. {buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/commands/spec.py +0 -0
  40. {buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/commands/spec_pr.py +0 -0
  41. {buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/config.py +0 -0
  42. {buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/console.py +0 -0
  43. {buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/context.py +0 -0
  44. {buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/db_broker.py +0 -0
  45. {buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/guard.py +0 -0
  46. {buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/internal_api.py +0 -0
  47. {buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/labeling_onboarding.py +0 -0
  48. {buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/main.py +0 -0
  49. {buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/nl_query/__init__.py +0 -0
  50. {buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/nl_query/dataset_tools.py +0 -0
  51. {buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/ops_init.py +0 -0
  52. {buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/output.py +0 -0
  53. {buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/pagination.py +0 -0
  54. {buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/rescaling_migration/__init__.py +0 -0
  55. {buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/rescaling_migration/canonical.py +0 -0
  56. {buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/rescaling_migration/export.py +0 -0
  57. {buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/rescaling_migration/feed_proofs.py +0 -0
  58. {buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/rescaling_migration/fence.py +0 -0
  59. {buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/rescaling_migration/importer.py +0 -0
  60. {buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/rescaling_migration/jobs.py +0 -0
  61. {buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/rescaling_migration/management.py +0 -0
  62. {buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/rescaling_migration/orchestrator.py +0 -0
  63. {buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/rescaling_migration/probes.py +0 -0
  64. {buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/rescaling_migration/reconcile.py +0 -0
  65. {buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/rescaling_migration/run_record.py +0 -0
  66. {buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/rescaling_migration/runtime.py +0 -0
  67. {buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/rescaling_migration/sql/legacy_export_closeout.sql +0 -0
  68. {buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/rescaling_migration/sql/legacy_export_prepare.sql +0 -0
  69. {buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/rescaling_migration/sql/legacy_fence.sql +0 -0
  70. {buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/rescaling_migration/sql/legacy_unfreeze.sql +0 -0
  71. {buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/rescaling_migration/sql/v2_export_closeout.sql +0 -0
  72. {buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/rescaling_migration/sql/v2_export_prepare.sql +0 -0
  73. {buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/rescaling_migration/sql/v2_fence.sql +0 -0
  74. {buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/rescaling_migration/sql/v2_unfreeze.sql +0 -0
  75. {buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/rescaling_migration/storage.py +0 -0
  76. {buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/rescaling_migration/transform.py +0 -0
  77. {buildai_cli-0.3.154 → buildai_cli-0.3.155}/cli/rls_guard.py +0 -0
  78. {buildai_cli-0.3.154 → buildai_cli-0.3.155}/rescaling_logical_backup/__init__.py +0 -0
  79. {buildai_cli-0.3.154 → buildai_cli-0.3.155}/rescaling_logical_backup/__main__.py +0 -0
  80. {buildai_cli-0.3.154 → buildai_cli-0.3.155}/rescaling_migration_job/__init__.py +0 -0
  81. {buildai_cli-0.3.154 → buildai_cli-0.3.155}/rescaling_migration_job/__main__.py +0 -0
  82. {buildai_cli-0.3.154 → buildai_cli-0.3.155}/rescaling_recovery_extractor/__init__.py +0 -0
  83. {buildai_cli-0.3.154 → buildai_cli-0.3.155}/rescaling_recovery_extractor/__main__.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: buildai-cli
3
- Version: 0.3.154
3
+ Version: 0.3.155
4
4
  Summary: Build AI CLI (Typer)
5
5
  Requires-Python: >=3.11
6
6
  Requires-Dist: google-crc32c>=1.7.1
@@ -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)
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "buildai-cli"
7
- version = "0.3.154"
7
+ version = "0.3.155"
8
8
  description = "Build AI CLI (Typer)"
9
9
  requires-python = ">=3.11"
10
10
  dependencies = [
@@ -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