sourcecode 1.56.0__py3-none-any.whl → 1.57.0__py3-none-any.whl
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.
- sourcecode/__init__.py +1 -1
- sourcecode/license.py +15 -2
- {sourcecode-1.56.0.dist-info → sourcecode-1.57.0.dist-info}/METADATA +6 -2
- {sourcecode-1.56.0.dist-info → sourcecode-1.57.0.dist-info}/RECORD +7 -7
- {sourcecode-1.56.0.dist-info → sourcecode-1.57.0.dist-info}/WHEEL +0 -0
- {sourcecode-1.56.0.dist-info → sourcecode-1.57.0.dist-info}/entry_points.txt +0 -0
- {sourcecode-1.56.0.dist-info → sourcecode-1.57.0.dist-info}/licenses/LICENSE +0 -0
sourcecode/__init__.py
CHANGED
sourcecode/license.py
CHANGED
|
@@ -177,6 +177,17 @@ _FEATURE_INFO: dict[str, dict[str, str]] = {
|
|
|
177
177
|
_license_data: Optional[dict] = None
|
|
178
178
|
is_pro: bool = False
|
|
179
179
|
|
|
180
|
+
# ---------------------------------------------------------------------------
|
|
181
|
+
# TEMPORARY PRO UNLOCK (early-adoption phase)
|
|
182
|
+
# ---------------------------------------------------------------------------
|
|
183
|
+
# Floors `is_pro` to True at init so every gate passes — anyone who installs
|
|
184
|
+
# gets Pro from the start (remove onboarding friction, maximize adoption).
|
|
185
|
+
# The gate LOGIC below (require_feature / require_repo_or_pro / require_pro) is
|
|
186
|
+
# left fully intact; this only raises the entitlement floor. To resume the
|
|
187
|
+
# paywall: set _PRO_UNLOCK_ALL = False (or SOURCECODE_PRO_UNLOCK=0), no other
|
|
188
|
+
# change needed. Tests of the gated paths set SOURCECODE_PRO_UNLOCK=0.
|
|
189
|
+
_PRO_UNLOCK_ALL = os.environ.get("SOURCECODE_PRO_UNLOCK", "1") != "0"
|
|
190
|
+
|
|
180
191
|
|
|
181
192
|
def _secure_dir() -> None:
|
|
182
193
|
"""Create ~/.sourcecode owner-only (0700). Holds the license secret.
|
|
@@ -323,7 +334,7 @@ def _maybe_revalidate() -> None:
|
|
|
323
334
|
|
|
324
335
|
if not result.get("valid"):
|
|
325
336
|
_license_data = None
|
|
326
|
-
is_pro =
|
|
337
|
+
is_pro = _PRO_UNLOCK_ALL # TEMPORARY: keep Pro floor during unlock
|
|
327
338
|
try:
|
|
328
339
|
if _LICENSE_FILE.exists():
|
|
329
340
|
_LICENSE_FILE.unlink()
|
|
@@ -334,7 +345,7 @@ def _maybe_revalidate() -> None:
|
|
|
334
345
|
_license_data["plan"] = result.get("plan", "pro")
|
|
335
346
|
_license_data["features"] = result.get("features", [])
|
|
336
347
|
_license_data["validated_at"] = datetime.now(timezone.utc).isoformat()
|
|
337
|
-
is_pro = _license_data.get("plan") == "pro"
|
|
348
|
+
is_pro = _PRO_UNLOCK_ALL or _license_data.get("plan") == "pro"
|
|
338
349
|
try:
|
|
339
350
|
_write_license_file(_license_data)
|
|
340
351
|
except Exception:
|
|
@@ -349,6 +360,8 @@ def _init() -> None:
|
|
|
349
360
|
and _license_data.get("plan") == "pro"
|
|
350
361
|
and _license_data.get("status", "active") != "inactive"
|
|
351
362
|
)
|
|
363
|
+
if _PRO_UNLOCK_ALL:
|
|
364
|
+
is_pro = True # TEMPORARY: early-adoption Pro unlock (see _PRO_UNLOCK_ALL)
|
|
352
365
|
|
|
353
366
|
|
|
354
367
|
_init()
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: sourcecode
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.57.0
|
|
4
4
|
Summary: Persistent structural context and ultra-fast repeated analysis for AI coding agents
|
|
5
5
|
License-File: LICENSE
|
|
6
6
|
Keywords: agents,ai,codebase,context,developer-tools,llm
|
|
@@ -40,7 +40,7 @@ Description-Content-Type: text/markdown
|
|
|
40
40
|
|
|
41
41
|
**Persistent structural context and ultra-fast repeated analysis for AI coding agents.**
|
|
42
42
|
|
|
43
|
-

|
|
44
44
|

|
|
45
45
|
|
|
46
46
|
---
|
|
@@ -295,6 +295,10 @@ Specifically:
|
|
|
295
295
|
|
|
296
296
|
## Pricing
|
|
297
297
|
|
|
298
|
+
> **🎉 Early-adoption: Pro is currently unlocked for everyone.** During this phase
|
|
299
|
+
> every install runs with full Pro entitlements — no size gate, no key required. The
|
|
300
|
+
> tiers below describe the model the paywall will return to later.
|
|
301
|
+
|
|
298
302
|
Two tiers. **Gating is by repo size and automation — never by command.** Every
|
|
299
303
|
command runs at full power on Free for small and mid-size repos. You upgrade
|
|
300
304
|
when the work gets bigger or automated.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
sourcecode/__init__.py,sha256=
|
|
1
|
+
sourcecode/__init__.py,sha256=TrDqUl3QPap22po5ZZVSMV_lWRZibeQ0Vv3MgrCN2Wk,103
|
|
2
2
|
sourcecode/adaptive_scanner.py,sha256=XffluXKzJUXrMtjEiAOnSNPZnztdIcts17T9ouHeID0,10521
|
|
3
3
|
sourcecode/architecture_analyzer.py,sha256=liCwQmLgb5vplohy8arjYxs_HOIv5C9MjLh_gY6bc5Q,44115
|
|
4
4
|
sourcecode/architecture_summary.py,sha256=z34_6v7cSwy98cof2UVciGho7SCrZ93tiqMmq5WNzRQ,20405
|
|
@@ -29,7 +29,7 @@ sourcecode/fqn_utils.py,sha256=XLU7zDkNBXz_RZkIUNfpPmp1nekWtqP-fxV92tDV1vg,2158
|
|
|
29
29
|
sourcecode/git_analyzer.py,sha256=JStxTQXNjBWi_wLdwhsZs9mT-v50cSJIz4Agzn6Kh9I,13362
|
|
30
30
|
sourcecode/graph_analyzer.py,sha256=DHR8fY69oU_Pi4SYaWboX6EoEFrctQKB9dsjpqwGMzw,62403
|
|
31
31
|
sourcecode/integration_detector.py,sha256=ZJqrGwvZ4ee2JTGhlazKk67aZi173HxkhNpl8Yntpd8,6503
|
|
32
|
-
sourcecode/license.py,sha256=
|
|
32
|
+
sourcecode/license.py,sha256=vN7XQb0IY2rxkdsn7LC-Uz2m5f9tNPiJ9JlSVdhpwus,23488
|
|
33
33
|
sourcecode/mcp_nudge.py,sha256=5ELU_ixzh6uA83NXLOZT8h00OhL53okfQdji3jyKOjg,2917
|
|
34
34
|
sourcecode/metrics_analyzer.py,sha256=m0ENgtqKeBL17kUIK3fmGkgo7UfXBNHxCMj0H_Y5K7c,22750
|
|
35
35
|
sourcecode/migrate_check.py,sha256=H8iy7Vk8cGL0dnR3ZkFPS20CtfF5LJWuzQVQE4awQ9s,56192
|
|
@@ -102,8 +102,8 @@ sourcecode/telemetry/consent.py,sha256=wLMvGNJeSSyZoNkQXpoUioY6mMv4Qdvuw7S9jAEWn
|
|
|
102
102
|
sourcecode/telemetry/events.py,sha256=LtzYfaX9Ilckj5PTvAcTpDa9mLqDsYPDUiDkRa58piY,2580
|
|
103
103
|
sourcecode/telemetry/filters.py,sha256=NHa5T-6DaZduQPFuC34jOqHWQgSizM-Ygq8aZ4j19ng,5834
|
|
104
104
|
sourcecode/telemetry/transport.py,sha256=4gGHsq0WeY9VywEZXA3vUxykfiYnw9uuqfjAAec7F8o,1681
|
|
105
|
-
sourcecode-1.
|
|
106
|
-
sourcecode-1.
|
|
107
|
-
sourcecode-1.
|
|
108
|
-
sourcecode-1.
|
|
109
|
-
sourcecode-1.
|
|
105
|
+
sourcecode-1.57.0.dist-info/METADATA,sha256=MllfgzFIxub5-5P1bTKKkF0ifSPQVoCD3XNMqS5V4-U,38704
|
|
106
|
+
sourcecode-1.57.0.dist-info/WHEEL,sha256=QccIxa26bgl1E6uMy58deGWi-0aeIkkangHcxk2kWfw,87
|
|
107
|
+
sourcecode-1.57.0.dist-info/entry_points.txt,sha256=ex3F9rmbXeyDIoFQHtkEqTsKSaJow8F0LrVu8XfIktQ,57
|
|
108
|
+
sourcecode-1.57.0.dist-info/licenses/LICENSE,sha256=7DdHrU9Z_3e7dSvq4ISijZNjnuHo5NIHNiHDouMQ9JU,10491
|
|
109
|
+
sourcecode-1.57.0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|