sourcecode 1.32.5__tar.gz → 1.32.6__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 (93) hide show
  1. {sourcecode-1.32.5 → sourcecode-1.32.6}/PKG-INFO +1 -1
  2. {sourcecode-1.32.5 → sourcecode-1.32.6}/pyproject.toml +1 -1
  3. {sourcecode-1.32.5 → sourcecode-1.32.6}/src/sourcecode/__init__.py +1 -1
  4. {sourcecode-1.32.5 → sourcecode-1.32.6}/src/sourcecode/cli.py +33 -1
  5. {sourcecode-1.32.5 → sourcecode-1.32.6}/src/sourcecode/license.py +1 -0
  6. {sourcecode-1.32.5 → sourcecode-1.32.6}/.github/workflows/build-windows.yml +0 -0
  7. {sourcecode-1.32.5 → sourcecode-1.32.6}/.gitignore +0 -0
  8. {sourcecode-1.32.5 → sourcecode-1.32.6}/.ruff.toml +0 -0
  9. {sourcecode-1.32.5 → sourcecode-1.32.6}/CHANGELOG.md +0 -0
  10. {sourcecode-1.32.5 → sourcecode-1.32.6}/CONTRIBUTING.md +0 -0
  11. {sourcecode-1.32.5 → sourcecode-1.32.6}/LICENSE +0 -0
  12. {sourcecode-1.32.5 → sourcecode-1.32.6}/README.md +0 -0
  13. {sourcecode-1.32.5 → sourcecode-1.32.6}/SECURITY.md +0 -0
  14. {sourcecode-1.32.5 → sourcecode-1.32.6}/raw +0 -0
  15. {sourcecode-1.32.5 → sourcecode-1.32.6}/src/sourcecode/adaptive_scanner.py +0 -0
  16. {sourcecode-1.32.5 → sourcecode-1.32.6}/src/sourcecode/architecture_analyzer.py +0 -0
  17. {sourcecode-1.32.5 → sourcecode-1.32.6}/src/sourcecode/architecture_summary.py +0 -0
  18. {sourcecode-1.32.5 → sourcecode-1.32.6}/src/sourcecode/ast_extractor.py +0 -0
  19. {sourcecode-1.32.5 → sourcecode-1.32.6}/src/sourcecode/cache.py +0 -0
  20. {sourcecode-1.32.5 → sourcecode-1.32.6}/src/sourcecode/cache.tmp_new +0 -0
  21. {sourcecode-1.32.5 → sourcecode-1.32.6}/src/sourcecode/canonical_ir.py +0 -0
  22. {sourcecode-1.32.5 → sourcecode-1.32.6}/src/sourcecode/classifier.py +0 -0
  23. {sourcecode-1.32.5 → sourcecode-1.32.6}/src/sourcecode/code_notes_analyzer.py +0 -0
  24. {sourcecode-1.32.5 → sourcecode-1.32.6}/src/sourcecode/confidence_analyzer.py +0 -0
  25. {sourcecode-1.32.5 → sourcecode-1.32.6}/src/sourcecode/context_scorer.py +0 -0
  26. {sourcecode-1.32.5 → sourcecode-1.32.6}/src/sourcecode/context_summarizer.py +0 -0
  27. {sourcecode-1.32.5 → sourcecode-1.32.6}/src/sourcecode/contract_model.py +0 -0
  28. {sourcecode-1.32.5 → sourcecode-1.32.6}/src/sourcecode/contract_pipeline.py +0 -0
  29. {sourcecode-1.32.5 → sourcecode-1.32.6}/src/sourcecode/coverage_parser.py +0 -0
  30. {sourcecode-1.32.5 → sourcecode-1.32.6}/src/sourcecode/dependency_analyzer.py +0 -0
  31. {sourcecode-1.32.5 → sourcecode-1.32.6}/src/sourcecode/detectors/__init__.py +0 -0
  32. {sourcecode-1.32.5 → sourcecode-1.32.6}/src/sourcecode/detectors/base.py +0 -0
  33. {sourcecode-1.32.5 → sourcecode-1.32.6}/src/sourcecode/detectors/csproj_parser.py +0 -0
  34. {sourcecode-1.32.5 → sourcecode-1.32.6}/src/sourcecode/detectors/dart.py +0 -0
  35. {sourcecode-1.32.5 → sourcecode-1.32.6}/src/sourcecode/detectors/dotnet.py +0 -0
  36. {sourcecode-1.32.5 → sourcecode-1.32.6}/src/sourcecode/detectors/elixir.py +0 -0
  37. {sourcecode-1.32.5 → sourcecode-1.32.6}/src/sourcecode/detectors/go.py +0 -0
  38. {sourcecode-1.32.5 → sourcecode-1.32.6}/src/sourcecode/detectors/heuristic.py +0 -0
  39. {sourcecode-1.32.5 → sourcecode-1.32.6}/src/sourcecode/detectors/hybrid.py +0 -0
  40. {sourcecode-1.32.5 → sourcecode-1.32.6}/src/sourcecode/detectors/java.py +0 -0
  41. {sourcecode-1.32.5 → sourcecode-1.32.6}/src/sourcecode/detectors/jvm_ext.py +0 -0
  42. {sourcecode-1.32.5 → sourcecode-1.32.6}/src/sourcecode/detectors/nodejs.py +0 -0
  43. {sourcecode-1.32.5 → sourcecode-1.32.6}/src/sourcecode/detectors/parsers.py +0 -0
  44. {sourcecode-1.32.5 → sourcecode-1.32.6}/src/sourcecode/detectors/php.py +0 -0
  45. {sourcecode-1.32.5 → sourcecode-1.32.6}/src/sourcecode/detectors/project.py +0 -0
  46. {sourcecode-1.32.5 → sourcecode-1.32.6}/src/sourcecode/detectors/python.py +0 -0
  47. {sourcecode-1.32.5 → sourcecode-1.32.6}/src/sourcecode/detectors/ruby.py +0 -0
  48. {sourcecode-1.32.5 → sourcecode-1.32.6}/src/sourcecode/detectors/rust.py +0 -0
  49. {sourcecode-1.32.5 → sourcecode-1.32.6}/src/sourcecode/detectors/systems.py +0 -0
  50. {sourcecode-1.32.5 → sourcecode-1.32.6}/src/sourcecode/detectors/terraform.py +0 -0
  51. {sourcecode-1.32.5 → sourcecode-1.32.6}/src/sourcecode/detectors/tooling.py +0 -0
  52. {sourcecode-1.32.5 → sourcecode-1.32.6}/src/sourcecode/doc_analyzer.py +0 -0
  53. {sourcecode-1.32.5 → sourcecode-1.32.6}/src/sourcecode/entrypoint_classifier.py +0 -0
  54. {sourcecode-1.32.5 → sourcecode-1.32.6}/src/sourcecode/env_analyzer.py +0 -0
  55. {sourcecode-1.32.5 → sourcecode-1.32.6}/src/sourcecode/file_classifier.py +0 -0
  56. {sourcecode-1.32.5 → sourcecode-1.32.6}/src/sourcecode/flow_analyzer.py +0 -0
  57. {sourcecode-1.32.5 → sourcecode-1.32.6}/src/sourcecode/git_analyzer.py +0 -0
  58. {sourcecode-1.32.5 → sourcecode-1.32.6}/src/sourcecode/graph_analyzer.py +0 -0
  59. {sourcecode-1.32.5 → sourcecode-1.32.6}/src/sourcecode/mcp/__init__.py +0 -0
  60. {sourcecode-1.32.5 → sourcecode-1.32.6}/src/sourcecode/mcp/onboarding/__init__.py +0 -0
  61. {sourcecode-1.32.5 → sourcecode-1.32.6}/src/sourcecode/mcp/onboarding/applier.py +0 -0
  62. {sourcecode-1.32.5 → sourcecode-1.32.6}/src/sourcecode/mcp/onboarding/backup.py +0 -0
  63. {sourcecode-1.32.5 → sourcecode-1.32.6}/src/sourcecode/mcp/onboarding/detector.py +0 -0
  64. {sourcecode-1.32.5 → sourcecode-1.32.6}/src/sourcecode/mcp/onboarding/planner.py +0 -0
  65. {sourcecode-1.32.5 → sourcecode-1.32.6}/src/sourcecode/mcp/runner.py +0 -0
  66. {sourcecode-1.32.5 → sourcecode-1.32.6}/src/sourcecode/mcp/server.py +0 -0
  67. {sourcecode-1.32.5 → sourcecode-1.32.6}/src/sourcecode/mcp_nudge.py +0 -0
  68. {sourcecode-1.32.5 → sourcecode-1.32.6}/src/sourcecode/metrics_analyzer.py +0 -0
  69. {sourcecode-1.32.5 → sourcecode-1.32.6}/src/sourcecode/output_budget.py +0 -0
  70. {sourcecode-1.32.5 → sourcecode-1.32.6}/src/sourcecode/path_filters.py +0 -0
  71. {sourcecode-1.32.5 → sourcecode-1.32.6}/src/sourcecode/pr_comment_renderer.py +0 -0
  72. {sourcecode-1.32.5 → sourcecode-1.32.6}/src/sourcecode/prepare_context.py +0 -0
  73. {sourcecode-1.32.5 → sourcecode-1.32.6}/src/sourcecode/progress.py +0 -0
  74. {sourcecode-1.32.5 → sourcecode-1.32.6}/src/sourcecode/ranking_engine.py +0 -0
  75. {sourcecode-1.32.5 → sourcecode-1.32.6}/src/sourcecode/redactor.py +0 -0
  76. {sourcecode-1.32.5 → sourcecode-1.32.6}/src/sourcecode/relevance_scorer.py +0 -0
  77. {sourcecode-1.32.5 → sourcecode-1.32.6}/src/sourcecode/repo_classifier.py +0 -0
  78. {sourcecode-1.32.5 → sourcecode-1.32.6}/src/sourcecode/repository_ir.py +0 -0
  79. {sourcecode-1.32.5 → sourcecode-1.32.6}/src/sourcecode/ris.py +0 -0
  80. {sourcecode-1.32.5 → sourcecode-1.32.6}/src/sourcecode/runtime_classifier.py +0 -0
  81. {sourcecode-1.32.5 → sourcecode-1.32.6}/src/sourcecode/scanner.py +0 -0
  82. {sourcecode-1.32.5 → sourcecode-1.32.6}/src/sourcecode/schema.py +0 -0
  83. {sourcecode-1.32.5 → sourcecode-1.32.6}/src/sourcecode/semantic_analyzer.py +0 -0
  84. {sourcecode-1.32.5 → sourcecode-1.32.6}/src/sourcecode/serializer.py +0 -0
  85. {sourcecode-1.32.5 → sourcecode-1.32.6}/src/sourcecode/summarizer.py +0 -0
  86. {sourcecode-1.32.5 → sourcecode-1.32.6}/src/sourcecode/telemetry/__init__.py +0 -0
  87. {sourcecode-1.32.5 → sourcecode-1.32.6}/src/sourcecode/telemetry/config.py +0 -0
  88. {sourcecode-1.32.5 → sourcecode-1.32.6}/src/sourcecode/telemetry/consent.py +0 -0
  89. {sourcecode-1.32.5 → sourcecode-1.32.6}/src/sourcecode/telemetry/events.py +0 -0
  90. {sourcecode-1.32.5 → sourcecode-1.32.6}/src/sourcecode/telemetry/filters.py +0 -0
  91. {sourcecode-1.32.5 → sourcecode-1.32.6}/src/sourcecode/telemetry/transport.py +0 -0
  92. {sourcecode-1.32.5 → sourcecode-1.32.6}/src/sourcecode/tree_utils.py +0 -0
  93. {sourcecode-1.32.5 → sourcecode-1.32.6}/src/sourcecode/workspace.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sourcecode
3
- Version: 1.32.5
3
+ Version: 1.32.6
4
4
  Summary: Deterministic codebase context for AI coding agents
5
5
  License-File: LICENSE
6
6
  Keywords: agents,ai,codebase,context,developer-tools,llm
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "sourcecode"
7
- version = "1.32.5"
7
+ version = "1.32.6"
8
8
  description = "Deterministic codebase context for AI coding agents"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.9"
@@ -1,3 +1,3 @@
1
1
  """sourcecode — Deterministic codebase context maps for AI coding agents."""
2
2
 
3
- __version__ = "1.32.5"
3
+ __version__ = "1.32.6"
@@ -384,6 +384,18 @@ def _get_command_with_preprocessing(typer_instance: Any) -> Any:
384
384
  # Refresh help text at invocation time so it reflects current license state.
385
385
  cmd.help = _build_help_text()
386
386
 
387
+ # Add [Pro] badge to Pro-gated option help strings for free-tier users.
388
+ try:
389
+ from sourcecode.license import is_pro as _lp_is_pro
390
+ except Exception:
391
+ _lp_is_pro = False
392
+ if not _lp_is_pro:
393
+ _PRO_OPTS = {"full"}
394
+ for _param in cmd.params:
395
+ if getattr(_param, "name", None) in _PRO_OPTS and getattr(_param, "help", None):
396
+ if "[Pro]" not in _param.help:
397
+ _param.help = _param.help + " [dim][Pro][/dim]"
398
+
387
399
  _orig_cmd_main = cmd.main
388
400
 
389
401
  def _cmd_main(args: Optional[list[str]] = None, **kwargs: Any) -> Any:
@@ -1442,12 +1454,23 @@ def main(
1442
1454
  if dependency_analyzer is not None
1443
1455
  else None
1444
1456
  )
1457
+ # Free-tier node cap: limit graph size to 10 nodes unless Pro.
1458
+ _effective_max_nodes = max_nodes
1459
+ try:
1460
+ from sourcecode.license import is_pro as _lp_is_pro_gm
1461
+ except Exception:
1462
+ _lp_is_pro_gm = False
1463
+ _FREE_NODE_CAP = 10
1464
+ if not _lp_is_pro_gm and graph_analyzer is not None:
1465
+ if _effective_max_nodes is None or _effective_max_nodes > _FREE_NODE_CAP:
1466
+ _effective_max_nodes = _FREE_NODE_CAP
1467
+
1445
1468
  module_graph = (
1446
1469
  graph_analyzer.merge_graphs(
1447
1470
  module_graphs,
1448
1471
  detail=graph_detail_typed,
1449
1472
  edge_kinds=parsed_graph_edges,
1450
- max_nodes=max_nodes,
1473
+ max_nodes=_effective_max_nodes,
1451
1474
  entry_points=entry_points,
1452
1475
  )
1453
1476
  if graph_analyzer is not None
@@ -1567,6 +1590,15 @@ def main(
1567
1590
  semantic_summary=sem_sum,
1568
1591
  )
1569
1592
 
1593
+ # Free-tier node cap for --semantics: limit semantic_symbols to 10 unless Pro.
1594
+ if semantic_analyzer is not None and sm.semantic_symbols:
1595
+ try:
1596
+ from sourcecode.license import is_pro as _lp_is_pro_sem
1597
+ except Exception:
1598
+ _lp_is_pro_sem = False
1599
+ if not _lp_is_pro_sem and len(sm.semantic_symbols) > _FREE_NODE_CAP:
1600
+ sm = replace(sm, semantic_symbols=sm.semantic_symbols[:_FREE_NODE_CAP])
1601
+
1570
1602
  # Runtime architecture — classify workspace packages for structural summaries
1571
1603
  if workspace_analysis.workspaces:
1572
1604
  from sourcecode.runtime_classifier import RuntimeClassifier
@@ -248,6 +248,7 @@ def require_feature(feature_name: str) -> None:
248
248
  f"'{display}' requires a Pro license. "
249
249
  "Run: sourcecode activate <license_key>"
250
250
  ),
251
+ "upgrade_hint": "sourcecode activate <license_key>",
251
252
  }
252
253
  sys.stdout.write(json.dumps(payload, ensure_ascii=False) + "\n")
253
254
  sys.stdout.flush()
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes