thoughtleaders-cli 0.6.17__tar.gz → 0.6.18__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 (91) hide show
  1. {thoughtleaders_cli-0.6.17 → thoughtleaders_cli-0.6.18}/.claude-plugin/plugin.json +1 -1
  2. {thoughtleaders_cli-0.6.17 → thoughtleaders_cli-0.6.18}/PKG-INFO +1 -1
  3. {thoughtleaders_cli-0.6.17 → thoughtleaders_cli-0.6.18}/pyproject.toml +1 -1
  4. {thoughtleaders_cli-0.6.17 → thoughtleaders_cli-0.6.18}/src/tl_cli/__init__.py +1 -1
  5. {thoughtleaders_cli-0.6.17 → thoughtleaders_cli-0.6.18}/src/tl_cli/self_update.py +40 -2
  6. {thoughtleaders_cli-0.6.17 → thoughtleaders_cli-0.6.18}/.claude-plugin/marketplace.json +0 -0
  7. {thoughtleaders_cli-0.6.17 → thoughtleaders_cli-0.6.18}/.github/workflows/python-publish.yml +0 -0
  8. {thoughtleaders_cli-0.6.17 → thoughtleaders_cli-0.6.18}/.gitignore +0 -0
  9. {thoughtleaders_cli-0.6.17 → thoughtleaders_cli-0.6.18}/AGENTS.md +0 -0
  10. {thoughtleaders_cli-0.6.17 → thoughtleaders_cli-0.6.18}/CLAUDE.md +0 -0
  11. {thoughtleaders_cli-0.6.17 → thoughtleaders_cli-0.6.18}/LICENSE +0 -0
  12. {thoughtleaders_cli-0.6.17 → thoughtleaders_cli-0.6.18}/README.md +0 -0
  13. {thoughtleaders_cli-0.6.17 → thoughtleaders_cli-0.6.18}/agents/tl-analyst.md +0 -0
  14. {thoughtleaders_cli-0.6.17 → thoughtleaders_cli-0.6.18}/commands/tl-balance.md +0 -0
  15. {thoughtleaders_cli-0.6.17 → thoughtleaders_cli-0.6.18}/commands/tl-reports.md +0 -0
  16. {thoughtleaders_cli-0.6.17 → thoughtleaders_cli-0.6.18}/commands/tl-sponsorships.md +0 -0
  17. {thoughtleaders_cli-0.6.17 → thoughtleaders_cli-0.6.18}/commands/tl.md +0 -0
  18. {thoughtleaders_cli-0.6.17 → thoughtleaders_cli-0.6.18}/docs/architecture.md +0 -0
  19. {thoughtleaders_cli-0.6.17 → thoughtleaders_cli-0.6.18}/hooks/hooks.json +0 -0
  20. {thoughtleaders_cli-0.6.17 → thoughtleaders_cli-0.6.18}/hooks/scripts/post-usage.sh +0 -0
  21. {thoughtleaders_cli-0.6.17 → thoughtleaders_cli-0.6.18}/hooks/scripts/pre-check.sh +0 -0
  22. {thoughtleaders_cli-0.6.17 → thoughtleaders_cli-0.6.18}/skills/tl/SKILL.md +0 -0
  23. {thoughtleaders_cli-0.6.17 → thoughtleaders_cli-0.6.18}/skills/tl/references/business-glossary.md +0 -0
  24. {thoughtleaders_cli-0.6.17 → thoughtleaders_cli-0.6.18}/skills/tl/references/elasticsearch-schema.md +0 -0
  25. {thoughtleaders_cli-0.6.17 → thoughtleaders_cli-0.6.18}/skills/tl/references/firebolt-schema.md +0 -0
  26. {thoughtleaders_cli-0.6.17 → thoughtleaders_cli-0.6.18}/skills/tl/references/postgres-schema.md +0 -0
  27. {thoughtleaders_cli-0.6.17 → thoughtleaders_cli-0.6.18}/skills/tl-report-builder/SKILL.md +0 -0
  28. {thoughtleaders_cli-0.6.17 → thoughtleaders_cli-0.6.18}/skills/tl-report-builder/examples/e2e_findings.md +0 -0
  29. {thoughtleaders_cli-0.6.17 → thoughtleaders_cli-0.6.18}/skills/tl-report-builder/examples/golden_queries.md +0 -0
  30. {thoughtleaders_cli-0.6.17 → thoughtleaders_cli-0.6.18}/skills/tl-report-builder/references/columns_brands.md +0 -0
  31. {thoughtleaders_cli-0.6.17 → thoughtleaders_cli-0.6.18}/skills/tl-report-builder/references/columns_channels.md +0 -0
  32. {thoughtleaders_cli-0.6.17 → thoughtleaders_cli-0.6.18}/skills/tl-report-builder/references/columns_content.md +0 -0
  33. {thoughtleaders_cli-0.6.17 → thoughtleaders_cli-0.6.18}/skills/tl-report-builder/references/columns_sponsorships.md +0 -0
  34. {thoughtleaders_cli-0.6.17 → thoughtleaders_cli-0.6.18}/skills/tl-report-builder/references/intelligence_filterset_schema.json +0 -0
  35. {thoughtleaders_cli-0.6.17 → thoughtleaders_cli-0.6.18}/skills/tl-report-builder/references/intelligence_widget_schema.json +0 -0
  36. {thoughtleaders_cli-0.6.17 → thoughtleaders_cli-0.6.18}/skills/tl-report-builder/references/report_glossary.md +0 -0
  37. {thoughtleaders_cli-0.6.17 → thoughtleaders_cli-0.6.18}/skills/tl-report-builder/references/sortable_columns.json +0 -0
  38. {thoughtleaders_cli-0.6.17 → thoughtleaders_cli-0.6.18}/skills/tl-report-builder/references/sponsorship_filterset_schema.json +0 -0
  39. {thoughtleaders_cli-0.6.17 → thoughtleaders_cli-0.6.18}/skills/tl-report-builder/references/sponsorship_widget_schema.json +0 -0
  40. {thoughtleaders_cli-0.6.17 → thoughtleaders_cli-0.6.18}/skills/tl-report-builder/references/widgets.md +0 -0
  41. {thoughtleaders_cli-0.6.17 → thoughtleaders_cli-0.6.18}/skills/tl-report-builder/tools/column_builder.md +0 -0
  42. {thoughtleaders_cli-0.6.17 → thoughtleaders_cli-0.6.18}/skills/tl-report-builder/tools/database_query.md +0 -0
  43. {thoughtleaders_cli-0.6.17 → thoughtleaders_cli-0.6.18}/skills/tl-report-builder/tools/keyword_research.md +0 -0
  44. {thoughtleaders_cli-0.6.17 → thoughtleaders_cli-0.6.18}/skills/tl-report-builder/tools/name_resolver.md +0 -0
  45. {thoughtleaders_cli-0.6.17 → thoughtleaders_cli-0.6.18}/skills/tl-report-builder/tools/sample_judge.md +0 -0
  46. {thoughtleaders_cli-0.6.17 → thoughtleaders_cli-0.6.18}/skills/tl-report-builder/tools/similar_channels.md +0 -0
  47. {thoughtleaders_cli-0.6.17 → thoughtleaders_cli-0.6.18}/skills/tl-report-builder/tools/topic_matcher.md +0 -0
  48. {thoughtleaders_cli-0.6.17 → thoughtleaders_cli-0.6.18}/skills/tl-report-builder/tools/widget_builder.md +0 -0
  49. {thoughtleaders_cli-0.6.17 → thoughtleaders_cli-0.6.18}/src/tl_cli/_completions.py +0 -0
  50. {thoughtleaders_cli-0.6.17 → thoughtleaders_cli-0.6.18}/src/tl_cli/auth/__init__.py +0 -0
  51. {thoughtleaders_cli-0.6.17 → thoughtleaders_cli-0.6.18}/src/tl_cli/auth/commands.py +0 -0
  52. {thoughtleaders_cli-0.6.17 → thoughtleaders_cli-0.6.18}/src/tl_cli/auth/login.py +0 -0
  53. {thoughtleaders_cli-0.6.17 → thoughtleaders_cli-0.6.18}/src/tl_cli/auth/pkce.py +0 -0
  54. {thoughtleaders_cli-0.6.17 → thoughtleaders_cli-0.6.18}/src/tl_cli/auth/token_store.py +0 -0
  55. {thoughtleaders_cli-0.6.17 → thoughtleaders_cli-0.6.18}/src/tl_cli/client/__init__.py +0 -0
  56. {thoughtleaders_cli-0.6.17 → thoughtleaders_cli-0.6.18}/src/tl_cli/client/errors.py +0 -0
  57. {thoughtleaders_cli-0.6.17 → thoughtleaders_cli-0.6.18}/src/tl_cli/client/http.py +0 -0
  58. {thoughtleaders_cli-0.6.17 → thoughtleaders_cli-0.6.18}/src/tl_cli/commands/__init__.py +0 -0
  59. {thoughtleaders_cli-0.6.17 → thoughtleaders_cli-0.6.18}/src/tl_cli/commands/_comments_common.py +0 -0
  60. {thoughtleaders_cli-0.6.17 → thoughtleaders_cli-0.6.18}/src/tl_cli/commands/ask.py +0 -0
  61. {thoughtleaders_cli-0.6.17 → thoughtleaders_cli-0.6.18}/src/tl_cli/commands/balance.py +0 -0
  62. {thoughtleaders_cli-0.6.17 → thoughtleaders_cli-0.6.18}/src/tl_cli/commands/brands.py +0 -0
  63. {thoughtleaders_cli-0.6.17 → thoughtleaders_cli-0.6.18}/src/tl_cli/commands/changelog.py +0 -0
  64. {thoughtleaders_cli-0.6.17 → thoughtleaders_cli-0.6.18}/src/tl_cli/commands/channels.py +0 -0
  65. {thoughtleaders_cli-0.6.17 → thoughtleaders_cli-0.6.18}/src/tl_cli/commands/db.py +0 -0
  66. {thoughtleaders_cli-0.6.17 → thoughtleaders_cli-0.6.18}/src/tl_cli/commands/deals.py +0 -0
  67. {thoughtleaders_cli-0.6.17 → thoughtleaders_cli-0.6.18}/src/tl_cli/commands/describe.py +0 -0
  68. {thoughtleaders_cli-0.6.17 → thoughtleaders_cli-0.6.18}/src/tl_cli/commands/doctor.py +0 -0
  69. {thoughtleaders_cli-0.6.17 → thoughtleaders_cli-0.6.18}/src/tl_cli/commands/matches.py +0 -0
  70. {thoughtleaders_cli-0.6.17 → thoughtleaders_cli-0.6.18}/src/tl_cli/commands/proposals.py +0 -0
  71. {thoughtleaders_cli-0.6.17 → thoughtleaders_cli-0.6.18}/src/tl_cli/commands/recommender.py +0 -0
  72. {thoughtleaders_cli-0.6.17 → thoughtleaders_cli-0.6.18}/src/tl_cli/commands/reports.py +0 -0
  73. {thoughtleaders_cli-0.6.17 → thoughtleaders_cli-0.6.18}/src/tl_cli/commands/schema.py +0 -0
  74. {thoughtleaders_cli-0.6.17 → thoughtleaders_cli-0.6.18}/src/tl_cli/commands/setup.py +0 -0
  75. {thoughtleaders_cli-0.6.17 → thoughtleaders_cli-0.6.18}/src/tl_cli/commands/snapshots.py +0 -0
  76. {thoughtleaders_cli-0.6.17 → thoughtleaders_cli-0.6.18}/src/tl_cli/commands/sponsorships.py +0 -0
  77. {thoughtleaders_cli-0.6.17 → thoughtleaders_cli-0.6.18}/src/tl_cli/commands/uploads.py +0 -0
  78. {thoughtleaders_cli-0.6.17 → thoughtleaders_cli-0.6.18}/src/tl_cli/commands/whoami.py +0 -0
  79. {thoughtleaders_cli-0.6.17 → thoughtleaders_cli-0.6.18}/src/tl_cli/config.py +0 -0
  80. {thoughtleaders_cli-0.6.17 → thoughtleaders_cli-0.6.18}/src/tl_cli/filters.py +0 -0
  81. {thoughtleaders_cli-0.6.17 → thoughtleaders_cli-0.6.18}/src/tl_cli/hints.py +0 -0
  82. {thoughtleaders_cli-0.6.17 → thoughtleaders_cli-0.6.18}/src/tl_cli/main.py +0 -0
  83. {thoughtleaders_cli-0.6.17 → thoughtleaders_cli-0.6.18}/src/tl_cli/output/__init__.py +0 -0
  84. {thoughtleaders_cli-0.6.17 → thoughtleaders_cli-0.6.18}/src/tl_cli/output/formatter.py +0 -0
  85. {thoughtleaders_cli-0.6.17 → thoughtleaders_cli-0.6.18}/tests/__init__.py +0 -0
  86. {thoughtleaders_cli-0.6.17 → thoughtleaders_cli-0.6.18}/tests/test_auth.py +0 -0
  87. {thoughtleaders_cli-0.6.17 → thoughtleaders_cli-0.6.18}/tests/test_filters.py +0 -0
  88. {thoughtleaders_cli-0.6.17 → thoughtleaders_cli-0.6.18}/tests/test_output.py +0 -0
  89. {thoughtleaders_cli-0.6.17 → thoughtleaders_cli-0.6.18}/tests/test_reports.py +0 -0
  90. {thoughtleaders_cli-0.6.17 → thoughtleaders_cli-0.6.18}/tests/test_sponsorships.py +0 -0
  91. {thoughtleaders_cli-0.6.17 → thoughtleaders_cli-0.6.18}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tl-cli",
3
- "version": "0.6.17",
3
+ "version": "0.6.18",
4
4
  "description": "ThoughtLeaders CLI — query sponsorship deals, channels, brands, uploads, and intelligence from the terminal",
5
5
  "author": {
6
6
  "name": "ThoughtLeaders",
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: thoughtleaders-cli
3
- Version: 0.6.17
3
+ Version: 0.6.18
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
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "thoughtleaders-cli"
7
- version = "0.6.17"
7
+ version = "0.6.18"
8
8
  description = "ThoughtLeaders CLI — query sponsorship data, channels, brands, and intelligence"
9
9
  readme = "README.md"
10
10
  license = "MIT"
@@ -1,3 +1,3 @@
1
1
  """ThoughtLeaders CLI — query sponsorship data, channels, brands, and intelligence."""
2
2
 
3
- __version__ = "0.6.17"
3
+ __version__ = "0.6.18"
@@ -13,6 +13,7 @@ user's actual command output.
13
13
  from __future__ import annotations
14
14
 
15
15
  import json
16
+ import shutil
16
17
  import subprocess
17
18
  import sys
18
19
  import time
@@ -96,6 +97,11 @@ def _run_upgrade(method: str, latest: str) -> None:
96
97
  Uses `install --force` with the new tag URL. pipx/uv pin the original
97
98
  install spec including the git tag, so a plain `upgrade` re-installs
98
99
  the same version — `--force` is the only way to advance the pinned tag.
100
+
101
+ On a successful upgrade, re-syncs Claude Code and OpenCode skills if
102
+ their respective binaries are on PATH, so the new version's skills
103
+ land in ~/.claude/ and ~/.config/opencode/ without the user having
104
+ to remember to run `tl setup ...`.
99
105
  """
100
106
  tagged_url = f"git+{REPO_URL}@v{latest}"
101
107
  cmd = {
@@ -109,9 +115,41 @@ def _run_upgrade(method: str, latest: str) -> None:
109
115
  file=sys.stderr,
110
116
  )
111
117
  try:
112
- subprocess.run(cmd, check=False, timeout=60)
118
+ result = subprocess.run(cmd, check=False, timeout=60)
113
119
  except (OSError, subprocess.TimeoutExpired):
114
- pass
120
+ return
121
+ if result.returncode == 0:
122
+ _resync_integrations()
123
+
124
+
125
+ def _resync_integrations() -> None:
126
+ """Re-sync Claude Code and OpenCode skills after a self-upgrade.
127
+
128
+ Spawned as a subprocess against the freshly-installed `tl` binary —
129
+ the running process holds the OLD code in memory, so calling the
130
+ setup functions in-process would (depending on import caching) copy
131
+ the wrong assets. Subprocess re-execs the new code from disk.
132
+
133
+ Conditional on each tool's binary being on PATH; everything is
134
+ silent on failure (a skill resync issue must never fail the
135
+ upgrade itself).
136
+ """
137
+ tl_bin = shutil.which("tl")
138
+ if not tl_bin:
139
+ return
140
+ for tool, binary in (("claude", "claude"), ("opencode", "opencode")):
141
+ if not shutil.which(binary):
142
+ continue
143
+ print(f"[tl-cli] re-syncing {tool} skills…", file=sys.stderr)
144
+ try:
145
+ subprocess.run(
146
+ [tl_bin, "setup", tool, "--json"],
147
+ capture_output=True,
148
+ timeout=120,
149
+ check=False,
150
+ )
151
+ except (OSError, subprocess.TimeoutExpired):
152
+ pass
115
153
 
116
154
 
117
155
  def check_and_upgrade() -> None: