thoughtleaders-cli 0.6.34__tar.gz → 0.6.35__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.
- {thoughtleaders_cli-0.6.34 → thoughtleaders_cli-0.6.35}/.claude-plugin/plugin.json +1 -1
- {thoughtleaders_cli-0.6.34 → thoughtleaders_cli-0.6.35}/PKG-INFO +1 -1
- {thoughtleaders_cli-0.6.34 → thoughtleaders_cli-0.6.35}/pyproject.toml +1 -1
- {thoughtleaders_cli-0.6.34 → thoughtleaders_cli-0.6.35}/src/tl_cli/__init__.py +1 -1
- {thoughtleaders_cli-0.6.34 → thoughtleaders_cli-0.6.35}/src/tl_cli/commands/credits.py +15 -11
- {thoughtleaders_cli-0.6.34 → thoughtleaders_cli-0.6.35}/src/tl_cli/commands/doctor.py +6 -5
- {thoughtleaders_cli-0.6.34 → thoughtleaders_cli-0.6.35}/.claude-plugin/marketplace.json +0 -0
- {thoughtleaders_cli-0.6.34 → thoughtleaders_cli-0.6.35}/.github/workflows/python-publish.yml +0 -0
- {thoughtleaders_cli-0.6.34 → thoughtleaders_cli-0.6.35}/.gitignore +0 -0
- {thoughtleaders_cli-0.6.34 → thoughtleaders_cli-0.6.35}/AGENTS.md +0 -0
- {thoughtleaders_cli-0.6.34 → thoughtleaders_cli-0.6.35}/CLAUDE.md +0 -0
- {thoughtleaders_cli-0.6.34 → thoughtleaders_cli-0.6.35}/LICENSE +0 -0
- {thoughtleaders_cli-0.6.34 → thoughtleaders_cli-0.6.35}/README.md +0 -0
- {thoughtleaders_cli-0.6.34 → thoughtleaders_cli-0.6.35}/agents/tl-analyst.md +0 -0
- {thoughtleaders_cli-0.6.34 → thoughtleaders_cli-0.6.35}/commands/tl-balance.md +0 -0
- {thoughtleaders_cli-0.6.34 → thoughtleaders_cli-0.6.35}/commands/tl-reports.md +0 -0
- {thoughtleaders_cli-0.6.34 → thoughtleaders_cli-0.6.35}/commands/tl-sponsorships.md +0 -0
- {thoughtleaders_cli-0.6.34 → thoughtleaders_cli-0.6.35}/commands/tl.md +0 -0
- {thoughtleaders_cli-0.6.34 → thoughtleaders_cli-0.6.35}/docs/architecture.md +0 -0
- {thoughtleaders_cli-0.6.34 → thoughtleaders_cli-0.6.35}/hooks/hooks.json +0 -0
- {thoughtleaders_cli-0.6.34 → thoughtleaders_cli-0.6.35}/hooks/scripts/post-usage.sh +0 -0
- {thoughtleaders_cli-0.6.34 → thoughtleaders_cli-0.6.35}/hooks/scripts/pre-check.sh +0 -0
- {thoughtleaders_cli-0.6.34 → thoughtleaders_cli-0.6.35}/skills/tl/SKILL.md +0 -0
- {thoughtleaders_cli-0.6.34 → thoughtleaders_cli-0.6.35}/skills/tl/references/business-glossary.md +0 -0
- {thoughtleaders_cli-0.6.34 → thoughtleaders_cli-0.6.35}/skills/tl/references/elasticsearch-schema.md +0 -0
- {thoughtleaders_cli-0.6.34 → thoughtleaders_cli-0.6.35}/skills/tl/references/firebolt-schema.md +0 -0
- {thoughtleaders_cli-0.6.34 → thoughtleaders_cli-0.6.35}/skills/tl/references/postgres-schema.md +0 -0
- {thoughtleaders_cli-0.6.34 → thoughtleaders_cli-0.6.35}/skills/tl-import/SKILL.md +0 -0
- {thoughtleaders_cli-0.6.34 → thoughtleaders_cli-0.6.35}/skills/tl-report-builder/SKILL.md +0 -0
- {thoughtleaders_cli-0.6.34 → thoughtleaders_cli-0.6.35}/skills/tl-report-builder/examples/e2e_findings.md +0 -0
- {thoughtleaders_cli-0.6.34 → thoughtleaders_cli-0.6.35}/skills/tl-report-builder/examples/golden_queries.md +0 -0
- {thoughtleaders_cli-0.6.34 → thoughtleaders_cli-0.6.35}/skills/tl-report-builder/references/columns_brands.md +0 -0
- {thoughtleaders_cli-0.6.34 → thoughtleaders_cli-0.6.35}/skills/tl-report-builder/references/columns_channels.md +0 -0
- {thoughtleaders_cli-0.6.34 → thoughtleaders_cli-0.6.35}/skills/tl-report-builder/references/columns_content.md +0 -0
- {thoughtleaders_cli-0.6.34 → thoughtleaders_cli-0.6.35}/skills/tl-report-builder/references/columns_sponsorships.md +0 -0
- {thoughtleaders_cli-0.6.34 → thoughtleaders_cli-0.6.35}/skills/tl-report-builder/references/intelligence_filterset_schema.json +0 -0
- {thoughtleaders_cli-0.6.34 → thoughtleaders_cli-0.6.35}/skills/tl-report-builder/references/intelligence_widget_schema.json +0 -0
- {thoughtleaders_cli-0.6.34 → thoughtleaders_cli-0.6.35}/skills/tl-report-builder/references/report_glossary.md +0 -0
- {thoughtleaders_cli-0.6.34 → thoughtleaders_cli-0.6.35}/skills/tl-report-builder/references/sortable_columns.json +0 -0
- {thoughtleaders_cli-0.6.34 → thoughtleaders_cli-0.6.35}/skills/tl-report-builder/references/sponsorship_filterset_schema.json +0 -0
- {thoughtleaders_cli-0.6.34 → thoughtleaders_cli-0.6.35}/skills/tl-report-builder/references/sponsorship_widget_schema.json +0 -0
- {thoughtleaders_cli-0.6.34 → thoughtleaders_cli-0.6.35}/skills/tl-report-builder/references/widgets.md +0 -0
- {thoughtleaders_cli-0.6.34 → thoughtleaders_cli-0.6.35}/skills/tl-report-builder/tools/column_builder.md +0 -0
- {thoughtleaders_cli-0.6.34 → thoughtleaders_cli-0.6.35}/skills/tl-report-builder/tools/database_query.md +0 -0
- {thoughtleaders_cli-0.6.34 → thoughtleaders_cli-0.6.35}/skills/tl-report-builder/tools/keyword_research.md +0 -0
- {thoughtleaders_cli-0.6.34 → thoughtleaders_cli-0.6.35}/skills/tl-report-builder/tools/name_resolver.md +0 -0
- {thoughtleaders_cli-0.6.34 → thoughtleaders_cli-0.6.35}/skills/tl-report-builder/tools/sample_judge.md +0 -0
- {thoughtleaders_cli-0.6.34 → thoughtleaders_cli-0.6.35}/skills/tl-report-builder/tools/similar_channels.md +0 -0
- {thoughtleaders_cli-0.6.34 → thoughtleaders_cli-0.6.35}/skills/tl-report-builder/tools/topic_matcher.md +0 -0
- {thoughtleaders_cli-0.6.34 → thoughtleaders_cli-0.6.35}/skills/tl-report-builder/tools/widget_builder.md +0 -0
- {thoughtleaders_cli-0.6.34 → thoughtleaders_cli-0.6.35}/src/tl_cli/_completions.py +0 -0
- {thoughtleaders_cli-0.6.34 → thoughtleaders_cli-0.6.35}/src/tl_cli/auth/__init__.py +0 -0
- {thoughtleaders_cli-0.6.34 → thoughtleaders_cli-0.6.35}/src/tl_cli/auth/commands.py +0 -0
- {thoughtleaders_cli-0.6.34 → thoughtleaders_cli-0.6.35}/src/tl_cli/auth/finalize.py +0 -0
- {thoughtleaders_cli-0.6.34 → thoughtleaders_cli-0.6.35}/src/tl_cli/auth/login.py +0 -0
- {thoughtleaders_cli-0.6.34 → thoughtleaders_cli-0.6.35}/src/tl_cli/auth/pkce.py +0 -0
- {thoughtleaders_cli-0.6.34 → thoughtleaders_cli-0.6.35}/src/tl_cli/auth/token_store.py +0 -0
- {thoughtleaders_cli-0.6.34 → thoughtleaders_cli-0.6.35}/src/tl_cli/client/__init__.py +0 -0
- {thoughtleaders_cli-0.6.34 → thoughtleaders_cli-0.6.35}/src/tl_cli/client/errors.py +0 -0
- {thoughtleaders_cli-0.6.34 → thoughtleaders_cli-0.6.35}/src/tl_cli/client/http.py +0 -0
- {thoughtleaders_cli-0.6.34 → thoughtleaders_cli-0.6.35}/src/tl_cli/commands/__init__.py +0 -0
- {thoughtleaders_cli-0.6.34 → thoughtleaders_cli-0.6.35}/src/tl_cli/commands/_comments_common.py +0 -0
- {thoughtleaders_cli-0.6.34 → thoughtleaders_cli-0.6.35}/src/tl_cli/commands/ask.py +0 -0
- {thoughtleaders_cli-0.6.34 → thoughtleaders_cli-0.6.35}/src/tl_cli/commands/balance.py +0 -0
- {thoughtleaders_cli-0.6.34 → thoughtleaders_cli-0.6.35}/src/tl_cli/commands/brands.py +0 -0
- {thoughtleaders_cli-0.6.34 → thoughtleaders_cli-0.6.35}/src/tl_cli/commands/bulk_import.py +0 -0
- {thoughtleaders_cli-0.6.34 → thoughtleaders_cli-0.6.35}/src/tl_cli/commands/changelog.py +0 -0
- {thoughtleaders_cli-0.6.34 → thoughtleaders_cli-0.6.35}/src/tl_cli/commands/channels.py +0 -0
- {thoughtleaders_cli-0.6.34 → thoughtleaders_cli-0.6.35}/src/tl_cli/commands/db.py +0 -0
- {thoughtleaders_cli-0.6.34 → thoughtleaders_cli-0.6.35}/src/tl_cli/commands/deals.py +0 -0
- {thoughtleaders_cli-0.6.34 → thoughtleaders_cli-0.6.35}/src/tl_cli/commands/describe.py +0 -0
- {thoughtleaders_cli-0.6.34 → thoughtleaders_cli-0.6.35}/src/tl_cli/commands/matches.py +0 -0
- {thoughtleaders_cli-0.6.34 → thoughtleaders_cli-0.6.35}/src/tl_cli/commands/proposals.py +0 -0
- {thoughtleaders_cli-0.6.34 → thoughtleaders_cli-0.6.35}/src/tl_cli/commands/recommender.py +0 -0
- {thoughtleaders_cli-0.6.34 → thoughtleaders_cli-0.6.35}/src/tl_cli/commands/reports.py +0 -0
- {thoughtleaders_cli-0.6.34 → thoughtleaders_cli-0.6.35}/src/tl_cli/commands/schema.py +0 -0
- {thoughtleaders_cli-0.6.34 → thoughtleaders_cli-0.6.35}/src/tl_cli/commands/setup.py +0 -0
- {thoughtleaders_cli-0.6.34 → thoughtleaders_cli-0.6.35}/src/tl_cli/commands/snapshots.py +0 -0
- {thoughtleaders_cli-0.6.34 → thoughtleaders_cli-0.6.35}/src/tl_cli/commands/sponsorships.py +0 -0
- {thoughtleaders_cli-0.6.34 → thoughtleaders_cli-0.6.35}/src/tl_cli/commands/uploads.py +0 -0
- {thoughtleaders_cli-0.6.34 → thoughtleaders_cli-0.6.35}/src/tl_cli/commands/whoami.py +0 -0
- {thoughtleaders_cli-0.6.34 → thoughtleaders_cli-0.6.35}/src/tl_cli/config.py +0 -0
- {thoughtleaders_cli-0.6.34 → thoughtleaders_cli-0.6.35}/src/tl_cli/filters.py +0 -0
- {thoughtleaders_cli-0.6.34 → thoughtleaders_cli-0.6.35}/src/tl_cli/hints.py +0 -0
- {thoughtleaders_cli-0.6.34 → thoughtleaders_cli-0.6.35}/src/tl_cli/main.py +0 -0
- {thoughtleaders_cli-0.6.34 → thoughtleaders_cli-0.6.35}/src/tl_cli/output/__init__.py +0 -0
- {thoughtleaders_cli-0.6.34 → thoughtleaders_cli-0.6.35}/src/tl_cli/output/formatter.py +0 -0
- {thoughtleaders_cli-0.6.34 → thoughtleaders_cli-0.6.35}/src/tl_cli/self_update.py +0 -0
- {thoughtleaders_cli-0.6.34 → thoughtleaders_cli-0.6.35}/tests/__init__.py +0 -0
- {thoughtleaders_cli-0.6.34 → thoughtleaders_cli-0.6.35}/tests/test_auth.py +0 -0
- {thoughtleaders_cli-0.6.34 → thoughtleaders_cli-0.6.35}/tests/test_filters.py +0 -0
- {thoughtleaders_cli-0.6.34 → thoughtleaders_cli-0.6.35}/tests/test_output.py +0 -0
- {thoughtleaders_cli-0.6.34 → thoughtleaders_cli-0.6.35}/tests/test_reports.py +0 -0
- {thoughtleaders_cli-0.6.34 → thoughtleaders_cli-0.6.35}/tests/test_sponsorships.py +0 -0
- {thoughtleaders_cli-0.6.34 → thoughtleaders_cli-0.6.35}/uv.lock +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: thoughtleaders-cli
|
|
3
|
-
Version: 0.6.
|
|
3
|
+
Version: 0.6.35
|
|
4
4
|
Summary: ThoughtLeaders CLI — query sponsorship data, channels, brands, and intelligence
|
|
5
5
|
Project-URL: Homepage, https://thoughtleaders.io
|
|
6
6
|
Project-URL: Repository, https://github.com/ThoughtLeaders-io/thoughtleaders-cli
|
|
@@ -19,6 +19,7 @@ from decimal import Decimal, InvalidOperation
|
|
|
19
19
|
|
|
20
20
|
import typer
|
|
21
21
|
from rich.console import Console
|
|
22
|
+
from rich.prompt import Prompt
|
|
22
23
|
from rich.table import Table
|
|
23
24
|
|
|
24
25
|
from tl_cli.client.errors import ApiError, handle_api_error
|
|
@@ -59,14 +60,13 @@ def pricing_cmd(
|
|
|
59
60
|
@app.command("buy")
|
|
60
61
|
def buy_cmd(
|
|
61
62
|
amount_usd: str = typer.Option(..., "--amount-usd", help="Amount to top up, in USD."),
|
|
62
|
-
no_browser: bool = typer.Option(False, "--no-browser", help="Don't open a browser, just print the checkout URL."),
|
|
63
63
|
poll: bool = typer.Option(True, "--poll/--no-poll", help="Poll balance after opening the checkout page."),
|
|
64
64
|
) -> None:
|
|
65
65
|
"""Start a credit top-up.
|
|
66
66
|
|
|
67
|
-
Calls the server to create a pending purchase,
|
|
68
|
-
|
|
69
|
-
Ctrl-C out.
|
|
67
|
+
Calls the server to create a pending purchase, prints the checkout URL,
|
|
68
|
+
then asks whether to open it in a browser. Polls `tl balance` (unless
|
|
69
|
+
`--no-poll`) until the credits land or you Ctrl-C out.
|
|
70
70
|
"""
|
|
71
71
|
try:
|
|
72
72
|
Decimal(amount_usd)
|
|
@@ -96,13 +96,17 @@ def buy_cmd(
|
|
|
96
96
|
console.print(
|
|
97
97
|
f"\n[bold]Started top-up:[/bold] ${result['usd_amount']} → {credits} credits"
|
|
98
98
|
)
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
99
|
+
if checkout_url:
|
|
100
|
+
console.print(f"[bold]Checkout URL:[/bold] {checkout_url}\n")
|
|
101
|
+
console.print("How would you like to continue?")
|
|
102
|
+
console.print(" [cyan]1[/cyan] — Open the URL in a browser on this machine (default)")
|
|
103
|
+
console.print(" [cyan]2[/cyan] — I'll open it manually")
|
|
104
|
+
choice = Prompt.ask("Choose", choices=["1", "2"], default="1", console=console)
|
|
105
|
+
if choice == "1":
|
|
106
|
+
try:
|
|
107
|
+
webbrowser.open(checkout_url)
|
|
108
|
+
except Exception:
|
|
109
|
+
console.print("[yellow]Could not launch a browser. Open the URL above manually.[/yellow]")
|
|
106
110
|
|
|
107
111
|
if not poll or initial_balance is None:
|
|
108
112
|
console.print("[dim]Run `tl balance` to confirm once payment completes.[/dim]")
|
|
@@ -155,10 +155,10 @@ def doctor(ctx: typer.Context) -> None:
|
|
|
155
155
|
|
|
156
156
|
# Connectivity + balance + latency timing. The first /balance call
|
|
157
157
|
# doubles as the connectivity probe; subsequent calls feed the
|
|
158
|
-
# latency stats table.
|
|
158
|
+
# latency stats table that's printed at the end of the report.
|
|
159
|
+
samples_by_endpoint: dict[str, list[float]] = {}
|
|
159
160
|
if tokens and not tokens.is_expired:
|
|
160
161
|
client = get_client()
|
|
161
|
-
samples_by_endpoint: dict[str, list[float]] = {}
|
|
162
162
|
try:
|
|
163
163
|
try:
|
|
164
164
|
t0 = time.perf_counter()
|
|
@@ -174,11 +174,10 @@ def doctor(ctx: typer.Context) -> None:
|
|
|
174
174
|
console.print(f" API: [red]unreachable[/red]")
|
|
175
175
|
all_ok = False
|
|
176
176
|
|
|
177
|
-
#
|
|
178
|
-
#
|
|
177
|
+
# Pad /balance to N calls and time the remaining free endpoints.
|
|
178
|
+
# The table itself is printed at the bottom, just above the verdict.
|
|
179
179
|
if samples_by_endpoint.get("/balance"):
|
|
180
180
|
_collect_latency_samples(client, samples_by_endpoint)
|
|
181
|
-
_print_latency_table(samples_by_endpoint)
|
|
182
181
|
finally:
|
|
183
182
|
client.close()
|
|
184
183
|
else:
|
|
@@ -214,6 +213,8 @@ def doctor(ctx: typer.Context) -> None:
|
|
|
214
213
|
if hint:
|
|
215
214
|
console.print(f" Install: {hint}")
|
|
216
215
|
|
|
216
|
+
_print_latency_table(samples_by_endpoint)
|
|
217
|
+
|
|
217
218
|
console.print()
|
|
218
219
|
if all_ok:
|
|
219
220
|
console.print("[green]Everything looks good.[/green]")
|
|
File without changes
|
{thoughtleaders_cli-0.6.34 → thoughtleaders_cli-0.6.35}/.github/workflows/python-publish.yml
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
|
{thoughtleaders_cli-0.6.34 → thoughtleaders_cli-0.6.35}/skills/tl/references/business-glossary.md
RENAMED
|
File without changes
|
{thoughtleaders_cli-0.6.34 → thoughtleaders_cli-0.6.35}/skills/tl/references/elasticsearch-schema.md
RENAMED
|
File without changes
|
{thoughtleaders_cli-0.6.34 → thoughtleaders_cli-0.6.35}/skills/tl/references/firebolt-schema.md
RENAMED
|
File without changes
|
{thoughtleaders_cli-0.6.34 → thoughtleaders_cli-0.6.35}/skills/tl/references/postgres-schema.md
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
|
{thoughtleaders_cli-0.6.34 → thoughtleaders_cli-0.6.35}/src/tl_cli/commands/_comments_common.py
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
|