utim-cli 1.45.1__tar.gz → 1.45.5__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 (67) hide show
  1. {utim_cli-1.45.1/utim_cli.egg-info → utim_cli-1.45.5}/PKG-INFO +10 -5
  2. {utim_cli-1.45.1 → utim_cli-1.45.5}/pyproject.toml +11 -5
  3. {utim_cli-1.45.1 → utim_cli-1.45.5}/utim_cli/bootstrap.py +1 -1
  4. {utim_cli-1.45.1 → utim_cli-1.45.5}/utim_cli/doctor.py +2 -1
  5. {utim_cli-1.45.1 → utim_cli-1.45.5}/utim_cli/server/db.py +19 -15
  6. {utim_cli-1.45.1 → utim_cli-1.45.5}/utim_cli/server/history.py +1 -1
  7. {utim_cli-1.45.1 → utim_cli-1.45.5}/utim_cli/server/router.py +1 -1
  8. {utim_cli-1.45.1 → utim_cli-1.45.5}/utim_cli/server/routes/completion_routes.py +4 -0
  9. {utim_cli-1.45.1 → utim_cli-1.45.5}/utim_cli/utim.py +4 -4
  10. {utim_cli-1.45.1 → utim_cli-1.45.5/utim_cli.egg-info}/PKG-INFO +10 -5
  11. {utim_cli-1.45.1 → utim_cli-1.45.5}/utim_cli.egg-info/requires.txt +10 -4
  12. {utim_cli-1.45.1 → utim_cli-1.45.5}/CHANGELOG.md +0 -0
  13. {utim_cli-1.45.1 → utim_cli-1.45.5}/LICENSE +0 -0
  14. {utim_cli-1.45.1 → utim_cli-1.45.5}/MANIFEST.in +0 -0
  15. {utim_cli-1.45.1 → utim_cli-1.45.5}/README.md +0 -0
  16. {utim_cli-1.45.1 → utim_cli-1.45.5}/setup.cfg +0 -0
  17. {utim_cli-1.45.1 → utim_cli-1.45.5}/setup.py +0 -0
  18. {utim_cli-1.45.1 → utim_cli-1.45.5}/utim_cli/__init__.py +0 -0
  19. {utim_cli-1.45.1 → utim_cli-1.45.5}/utim_cli/agent.py +0 -0
  20. {utim_cli-1.45.1 → utim_cli-1.45.5}/utim_cli/auth.py +0 -0
  21. {utim_cli-1.45.1 → utim_cli-1.45.5}/utim_cli/backup.py +0 -0
  22. {utim_cli-1.45.1 → utim_cli-1.45.5}/utim_cli/blender_agent.py +0 -0
  23. {utim_cli-1.45.1 → utim_cli-1.45.5}/utim_cli/client_utils.py +0 -0
  24. {utim_cli-1.45.1 → utim_cli-1.45.5}/utim_cli/config.py +0 -0
  25. {utim_cli-1.45.1 → utim_cli-1.45.5}/utim_cli/constants.py +0 -0
  26. {utim_cli-1.45.1 → utim_cli-1.45.5}/utim_cli/context_pruner.py +0 -0
  27. {utim_cli-1.45.1 → utim_cli-1.45.5}/utim_cli/knowledge_graph.py +0 -0
  28. {utim_cli-1.45.1 → utim_cli-1.45.5}/utim_cli/logger.py +0 -0
  29. {utim_cli-1.45.1 → utim_cli-1.45.5}/utim_cli/mcp_clean_wrapper.py +0 -0
  30. {utim_cli-1.45.1 → utim_cli-1.45.5}/utim_cli/mcp_client.py +0 -0
  31. {utim_cli-1.45.1 → utim_cli-1.45.5}/utim_cli/mcp_registry.json +0 -0
  32. {utim_cli-1.45.1 → utim_cli-1.45.5}/utim_cli/orchestrator.py +0 -0
  33. {utim_cli-1.45.1 → utim_cli-1.45.5}/utim_cli/reflection.py +0 -0
  34. {utim_cli-1.45.1 → utim_cli-1.45.5}/utim_cli/report.py +0 -0
  35. {utim_cli-1.45.1 → utim_cli-1.45.5}/utim_cli/scrapy_search.py +0 -0
  36. {utim_cli-1.45.1 → utim_cli-1.45.5}/utim_cli/server/__init__.py +0 -0
  37. {utim_cli-1.45.1 → utim_cli-1.45.5}/utim_cli/server/auth.py +0 -0
  38. {utim_cli-1.45.1 → utim_cli-1.45.5}/utim_cli/server/email_utils.py +0 -0
  39. {utim_cli-1.45.1 → utim_cli-1.45.5}/utim_cli/server/firebase.py +0 -0
  40. {utim_cli-1.45.1 → utim_cli-1.45.5}/utim_cli/server/logging_config.py +0 -0
  41. {utim_cli-1.45.1 → utim_cli-1.45.5}/utim_cli/server/models.py +0 -0
  42. {utim_cli-1.45.1 → utim_cli-1.45.5}/utim_cli/server/rate_limit.py +0 -0
  43. {utim_cli-1.45.1 → utim_cli-1.45.5}/utim_cli/server/routes/__init__.py +0 -0
  44. {utim_cli-1.45.1 → utim_cli-1.45.5}/utim_cli/server/routes/auth_routes.py +0 -0
  45. {utim_cli-1.45.1 → utim_cli-1.45.5}/utim_cli/server/routes/credit_routes.py +0 -0
  46. {utim_cli-1.45.1 → utim_cli-1.45.5}/utim_cli/server/routes/quota_routes.py +0 -0
  47. {utim_cli-1.45.1 → utim_cli-1.45.5}/utim_cli/server/routes/session_routes.py +0 -0
  48. {utim_cli-1.45.1 → utim_cli-1.45.5}/utim_cli/server/routes/share_routes.py +0 -0
  49. {utim_cli-1.45.1 → utim_cli-1.45.5}/utim_cli/server/server.py +0 -0
  50. {utim_cli-1.45.1 → utim_cli-1.45.5}/utim_cli/share.py +0 -0
  51. {utim_cli-1.45.1 → utim_cli-1.45.5}/utim_cli/share_tui.py +0 -0
  52. {utim_cli-1.45.1 → utim_cli-1.45.5}/utim_cli/situational_scoring.py +0 -0
  53. {utim_cli-1.45.1 → utim_cli-1.45.5}/utim_cli/state.py +0 -0
  54. {utim_cli-1.45.1 → utim_cli-1.45.5}/utim_cli/tools.py +0 -0
  55. {utim_cli-1.45.1 → utim_cli-1.45.5}/utim_cli/tui/__init__.py +0 -0
  56. {utim_cli-1.45.1 → utim_cli-1.45.5}/utim_cli/tui/history_dialog.py +0 -0
  57. {utim_cli-1.45.1 → utim_cli-1.45.5}/utim_cli/tui/mcp_dialog.py +0 -0
  58. {utim_cli-1.45.1 → utim_cli-1.45.5}/utim_cli/tui/model_dialog.py +0 -0
  59. {utim_cli-1.45.1 → utim_cli-1.45.5}/utim_cli/tui/resume_dialog.py +0 -0
  60. {utim_cli-1.45.1 → utim_cli-1.45.5}/utim_cli/tui/tools_dialog.py +0 -0
  61. {utim_cli-1.45.1 → utim_cli-1.45.5}/utim_cli/tui/update_dialog.py +0 -0
  62. {utim_cli-1.45.1 → utim_cli-1.45.5}/utim_cli/vector_memory.py +0 -0
  63. {utim_cli-1.45.1 → utim_cli-1.45.5}/utim_cli/workspace.py +0 -0
  64. {utim_cli-1.45.1 → utim_cli-1.45.5}/utim_cli.egg-info/SOURCES.txt +0 -0
  65. {utim_cli-1.45.1 → utim_cli-1.45.5}/utim_cli.egg-info/dependency_links.txt +0 -0
  66. {utim_cli-1.45.1 → utim_cli-1.45.5}/utim_cli.egg-info/entry_points.txt +0 -0
  67. {utim_cli-1.45.1 → utim_cli-1.45.5}/utim_cli.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: utim-cli
3
- Version: 1.45.1
3
+ Version: 1.45.5
4
4
  Summary: UTIM – Universal Terminal Intelligence Manager. A powerful agentic AI coding assistant for your terminal.
5
5
  License: MIT
6
6
  Project-URL: Homepage, https://utim.dev
@@ -30,10 +30,6 @@ Requires-Dist: chardet==4.0.0
30
30
  Requires-Dist: typer>=0.9.0
31
31
  Requires-Dist: rich>=13.0.0
32
32
  Requires-Dist: prompt_toolkit>=3.0.0
33
- Requires-Dist: tree-sitter>=0.21.0
34
- Requires-Dist: tree-sitter-python>=0.21.0
35
- Requires-Dist: tree-sitter-javascript>=0.21.0
36
- Requires-Dist: tree-sitter-typescript>=0.21.0
37
33
  Requires-Dist: mcp>=0.1.0
38
34
  Requires-Dist: nest-asyncio>=1.5.0
39
35
  Requires-Dist: python-multipart>=0.0.7
@@ -45,11 +41,20 @@ Requires-Dist: scrapy-playwright>=0.0.34; extra == "search"
45
41
  Requires-Dist: beautifulsoup4>=4.12.0; extra == "search"
46
42
  Provides-Extra: images
47
43
  Requires-Dist: pillow>=9.0.0; extra == "images"
44
+ Provides-Extra: parsers
45
+ Requires-Dist: tree-sitter>=0.21.0; extra == "parsers"
46
+ Requires-Dist: tree-sitter-python>=0.21.0; extra == "parsers"
47
+ Requires-Dist: tree-sitter-javascript>=0.21.0; extra == "parsers"
48
+ Requires-Dist: tree-sitter-typescript>=0.21.0; extra == "parsers"
48
49
  Provides-Extra: full
49
50
  Requires-Dist: scrapy>=2.11.0; extra == "full"
50
51
  Requires-Dist: scrapy-playwright>=0.0.34; extra == "full"
51
52
  Requires-Dist: beautifulsoup4>=4.12.0; extra == "full"
52
53
  Requires-Dist: pillow>=9.0.0; extra == "full"
54
+ Requires-Dist: tree-sitter>=0.21.0; extra == "full"
55
+ Requires-Dist: tree-sitter-python>=0.21.0; extra == "full"
56
+ Requires-Dist: tree-sitter-javascript>=0.21.0; extra == "full"
57
+ Requires-Dist: tree-sitter-typescript>=0.21.0; extra == "full"
53
58
  Dynamic: license-file
54
59
 
55
60
  # UTIM CLI Agent: Enterprise Coder Assistant
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "utim-cli"
7
- version = "1.45.1"
7
+ version = "1.45.5"
8
8
  description = "UTIM – Universal Terminal Intelligence Manager. A powerful agentic AI coding assistant for your terminal."
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.9"
@@ -32,10 +32,6 @@ dependencies = [
32
32
  "typer>=0.9.0",
33
33
  "rich>=13.0.0",
34
34
  "prompt_toolkit>=3.0.0",
35
- "tree-sitter>=0.21.0",
36
- "tree-sitter-python>=0.21.0",
37
- "tree-sitter-javascript>=0.21.0",
38
- "tree-sitter-typescript>=0.21.0",
39
35
  "mcp>=0.1.0",
40
36
  "nest-asyncio>=1.5.0",
41
37
  "python-multipart>=0.0.7",
@@ -59,11 +55,21 @@ search = [
59
55
  images = [
60
56
  "pillow>=9.0.0",
61
57
  ]
58
+ parsers = [
59
+ "tree-sitter>=0.21.0",
60
+ "tree-sitter-python>=0.21.0",
61
+ "tree-sitter-javascript>=0.21.0",
62
+ "tree-sitter-typescript>=0.21.0",
63
+ ]
62
64
  full = [
63
65
  "scrapy>=2.11.0",
64
66
  "scrapy-playwright>=0.0.34",
65
67
  "beautifulsoup4>=4.12.0",
66
68
  "pillow>=9.0.0",
69
+ "tree-sitter>=0.21.0",
70
+ "tree-sitter-python>=0.21.0",
71
+ "tree-sitter-javascript>=0.21.0",
72
+ "tree-sitter-typescript>=0.21.0",
67
73
  ]
68
74
 
69
75
  [project.scripts]
@@ -127,7 +127,7 @@ def initialize_utim() -> str:
127
127
  # 1. Initialize local_utim database using SQLAlchemy init_db
128
128
  try:
129
129
  from utim_cli.server.db import init_db
130
- init_db()
130
+ init_db(silent=True)
131
131
  except Exception as e:
132
132
  from utim_cli.logger import log_error
133
133
  log_error("bootstrap", "Failed to initialize SQLite local database", e)
@@ -22,7 +22,7 @@ def run_diagnostics(console: Console = None):
22
22
  console.print("\n [bold #42bcf5]Core Dependencies:[/bold #42bcf5]")
23
23
  core_dependencies = [
24
24
  "openai", "requests", "aiohttp", "typer", "rich",
25
- "prompt_toolkit", "tree_sitter", "mcp", "nest_asyncio"
25
+ "prompt_toolkit", "mcp", "nest_asyncio"
26
26
  ]
27
27
  for dep in core_dependencies:
28
28
  try:
@@ -34,6 +34,7 @@ def run_diagnostics(console: Console = None):
34
34
 
35
35
  console.print("\n [bold #42bcf5]Optional Feature Dependencies:[/bold #42bcf5]")
36
36
  optional_dependencies = {
37
+ "tree_sitter": "AST-based Knowledge Graph / dependency mapping",
37
38
  "chromadb": "RAG Vector DB feature",
38
39
  "sentence_transformers": "Dynamic embedding extraction",
39
40
  "scrapy": "Scrapy search crawler",
@@ -396,18 +396,22 @@ class EmailTracking(Base):
396
396
 
397
397
  # ── Bootstrap ─────────────────────────────────────────────────────────────────
398
398
 
399
- def init_db() -> None:
399
+ def init_db(silent: bool = True) -> None:
400
400
  """Create all tables and ensure the schema is up to date."""
401
401
  import logging as _logging
402
402
  _mig_log = _logging.getLogger("utim.db.migration")
403
+
404
+ def _print(msg: str):
405
+ if not silent:
406
+ print(msg)
403
407
 
404
- print("[DB INIT] init_db() starting...")
408
+ _print("[DB INIT] init_db() starting...")
405
409
  try:
406
- print(f"[DB INIT] Connecting to DB: {engine.url.drivername} (host: {engine.url.host})")
410
+ _print(f"[DB INIT] Connecting to DB: {engine.url.drivername} (host: {engine.url.host})")
407
411
  Base.metadata.create_all(bind=engine)
408
- print("[DB INIT] create_all() completed.")
412
+ _print("[DB INIT] create_all() completed.")
409
413
  except Exception as exc:
410
- print(f"[DB INIT] create_all() failed: {exc}")
414
+ _print(f"[DB INIT] create_all() failed: {exc}")
411
415
  _mig_log.warning(f"Skipping table creation (database might be unavailable): {exc}")
412
416
  return
413
417
 
@@ -420,7 +424,7 @@ def init_db() -> None:
420
424
  inspector = sa_inspect(engine)
421
425
  existing_tables = inspector.get_table_names()
422
426
  except Exception as inspect_exc:
423
- print(f"[DB INIT] DB inspection failed (might be normal on new DB): {inspect_exc}")
427
+ _print(f"[DB INIT] DB inspection failed (might be normal on new DB): {inspect_exc}")
424
428
  existing_tables = []
425
429
 
426
430
  def _col_exists(table_name: str, col_name: str) -> bool:
@@ -434,24 +438,24 @@ def init_db() -> None:
434
438
 
435
439
  def _run_migration(table_name: str, col_name: str, sql: str, label: str):
436
440
  if _col_exists(table_name, col_name):
437
- print(f"[DB INIT] Column {table_name}.{col_name} already exists. Skipping.")
441
+ _print(f"[DB INIT] Column {table_name}.{col_name} already exists. Skipping.")
438
442
  return
439
443
 
440
- print(f"[DB INIT] Running migration: {label}")
444
+ _print(f"[DB INIT] Running migration: {label}")
441
445
  try:
442
446
  with engine.begin() as _conn:
443
447
  if is_postgres:
444
448
  # Never hang startup for lock queues: fail fast if blocked for > 3s
445
449
  _conn.execute(text("SET lock_timeout = 3000"))
446
450
  _conn.execute(text(sql))
447
- print(f"[DB INIT] Migration OK: {label}")
451
+ _print(f"[DB INIT] Migration OK: {label}")
448
452
  _mig_log.info(f"Migration OK: {label}")
449
453
  except Exception as _exc:
450
- print(f"[DB INIT] Migration skipped/failed ({label}): {_exc}")
454
+ _print(f"[DB INIT] Migration skipped/failed ({label}): {_exc}")
451
455
  _mig_log.debug(f"Migration skipped ({label}): {_exc}")
452
456
 
453
457
  if is_postgres:
454
- print("[DB INIT] Postgres detected. Bypassing ALTER TABLE migrations (already applied in production).")
458
+ _print("[DB INIT] Postgres detected. Bypassing ALTER TABLE migrations (already applied in production).")
455
459
  else:
456
460
  # SQLite: no IF NOT EXISTS on ADD COLUMN, swallow duplicate errors
457
461
  _run_migration("user_subscriptions", "refills_processed", "ALTER TABLE user_subscriptions ADD COLUMN refills_processed INTEGER DEFAULT 0 NOT NULL", "sqlite add refills_processed")
@@ -465,13 +469,13 @@ def init_db() -> None:
465
469
  _run_migration("users", "last_project_folder", "ALTER TABLE users ADD COLUMN last_project_folder TEXT", "sqlite add last_project_folder")
466
470
 
467
471
  # Seed the plans if they don't exist
468
- print("[DB INIT] Seeding plans checking...")
472
+ _print("[DB INIT] Seeding plans checking...")
469
473
  db = SessionLocal()
470
474
  try:
471
475
  free_plan = db.query(Plan).filter(Plan.name == "free").first()
472
- print(f"[DB INIT] Free plan query done. Exists: {bool(free_plan)}")
476
+ _print(f"[DB INIT] Free plan query done. Exists: {bool(free_plan)}")
473
477
  if not free_plan:
474
- print("[DB INIT] Creating new plans...")
478
+ _print("[DB INIT] Creating new plans...")
475
479
  plans = [
476
480
  Plan(
477
481
  id="free",
@@ -590,7 +594,7 @@ def init_db() -> None:
590
594
  pass
591
595
  finally:
592
596
  db.close()
593
- print("[DB INIT] init_db() completed successfully.")
597
+ _print("[DB INIT] init_db() completed successfully.")
594
598
 
595
599
 
596
600
  def get_db():
@@ -6,7 +6,7 @@ from typing import List, Dict, Any, Optional
6
6
  from .db import SessionLocal, Conversation, User, init_db
7
7
 
8
8
  # Initialize database on module load for local mode
9
- init_db()
9
+ init_db(silent=True)
10
10
 
11
11
  # Default local user for fully local operation
12
12
  LOCAL_EMAIL = os.getenv("UTIM_EMAIL", "local@utim.dev")
@@ -37,7 +37,7 @@ logger = logging.getLogger("utim.server")
37
37
 
38
38
  # ── Database init ─────────────────────────────────────────────────────────────
39
39
 
40
- init_db()
40
+ init_db(silent=False)
41
41
 
42
42
  # ── App ───────────────────────────────────────────────────────────────────────
43
43
 
@@ -178,6 +178,10 @@ async def completions(
178
178
 
179
179
  client = _get_client()
180
180
 
181
+ # Commit transaction to release all with_for_update locks on UserSubscription
182
+ # before returning the StreamingResponse, preventing deadlocks in the generator's SessionLocal updates.
183
+ db.commit()
184
+
181
185
  async def _stream() -> AsyncGenerator[str, None]:
182
186
  content_buf = ""
183
187
  tool_calls_map: Dict[int, Dict[str, Any]] = {}
@@ -585,7 +585,7 @@ def _print_animated_banner():
585
585
  # Speed up for spaces to make it feel more like typing
586
586
  time.sleep(0.002 if char == " " else 0.005)
587
587
 
588
- console.print(f"\n [bold white]U Think I Make[/bold white] [dim]v1.45.1[/dim]")
588
+ console.print(f"\n [bold white]U Think I Make[/bold white] [dim]v1.45.5[/dim]")
589
589
  user_email = config.email
590
590
  user_type = "UTIM Community"
591
591
  api_key = config.get("api_key")
@@ -603,7 +603,7 @@ def _print_animated_banner():
603
603
  resp = requests.get(
604
604
  f"{SERVER_URL}/api/user-plan",
605
605
  headers={"X-API-Key": api_key},
606
- timeout=1.0,
606
+ timeout=5.0,
607
607
  )
608
608
  if resp.ok:
609
609
  plan_name = resp.json().get("plan", "free")
@@ -2691,7 +2691,7 @@ def check_and_update_background():
2691
2691
  return
2692
2692
 
2693
2693
  latest_ver = resp.json().get("version", "")
2694
- current_ver = "1.45.1"
2694
+ current_ver = "1.45.5"
2695
2695
 
2696
2696
  def parse_ver(v):
2697
2697
  return [int(x) for x in v.split(".") if x.isdigit()]
@@ -2887,7 +2887,7 @@ app = typer.Typer()
2887
2887
  def version_callback(value: bool):
2888
2888
  if value:
2889
2889
  import typer
2890
- print("U Think I Make v1.45.1")
2890
+ print("U Think I Make v1.45.5")
2891
2891
  raise typer.Exit()
2892
2892
 
2893
2893
  @app.callback(invoke_without_command=True)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: utim-cli
3
- Version: 1.45.1
3
+ Version: 1.45.5
4
4
  Summary: UTIM – Universal Terminal Intelligence Manager. A powerful agentic AI coding assistant for your terminal.
5
5
  License: MIT
6
6
  Project-URL: Homepage, https://utim.dev
@@ -30,10 +30,6 @@ Requires-Dist: chardet==4.0.0
30
30
  Requires-Dist: typer>=0.9.0
31
31
  Requires-Dist: rich>=13.0.0
32
32
  Requires-Dist: prompt_toolkit>=3.0.0
33
- Requires-Dist: tree-sitter>=0.21.0
34
- Requires-Dist: tree-sitter-python>=0.21.0
35
- Requires-Dist: tree-sitter-javascript>=0.21.0
36
- Requires-Dist: tree-sitter-typescript>=0.21.0
37
33
  Requires-Dist: mcp>=0.1.0
38
34
  Requires-Dist: nest-asyncio>=1.5.0
39
35
  Requires-Dist: python-multipart>=0.0.7
@@ -45,11 +41,20 @@ Requires-Dist: scrapy-playwright>=0.0.34; extra == "search"
45
41
  Requires-Dist: beautifulsoup4>=4.12.0; extra == "search"
46
42
  Provides-Extra: images
47
43
  Requires-Dist: pillow>=9.0.0; extra == "images"
44
+ Provides-Extra: parsers
45
+ Requires-Dist: tree-sitter>=0.21.0; extra == "parsers"
46
+ Requires-Dist: tree-sitter-python>=0.21.0; extra == "parsers"
47
+ Requires-Dist: tree-sitter-javascript>=0.21.0; extra == "parsers"
48
+ Requires-Dist: tree-sitter-typescript>=0.21.0; extra == "parsers"
48
49
  Provides-Extra: full
49
50
  Requires-Dist: scrapy>=2.11.0; extra == "full"
50
51
  Requires-Dist: scrapy-playwright>=0.0.34; extra == "full"
51
52
  Requires-Dist: beautifulsoup4>=4.12.0; extra == "full"
52
53
  Requires-Dist: pillow>=9.0.0; extra == "full"
54
+ Requires-Dist: tree-sitter>=0.21.0; extra == "full"
55
+ Requires-Dist: tree-sitter-python>=0.21.0; extra == "full"
56
+ Requires-Dist: tree-sitter-javascript>=0.21.0; extra == "full"
57
+ Requires-Dist: tree-sitter-typescript>=0.21.0; extra == "full"
53
58
  Dynamic: license-file
54
59
 
55
60
  # UTIM CLI Agent: Enterprise Coder Assistant
@@ -8,10 +8,6 @@ chardet==4.0.0
8
8
  typer>=0.9.0
9
9
  rich>=13.0.0
10
10
  prompt_toolkit>=3.0.0
11
- tree-sitter>=0.21.0
12
- tree-sitter-python>=0.21.0
13
- tree-sitter-javascript>=0.21.0
14
- tree-sitter-typescript>=0.21.0
15
11
  mcp>=0.1.0
16
12
  nest-asyncio>=1.5.0
17
13
  python-multipart>=0.0.7
@@ -23,10 +19,20 @@ scrapy>=2.11.0
23
19
  scrapy-playwright>=0.0.34
24
20
  beautifulsoup4>=4.12.0
25
21
  pillow>=9.0.0
22
+ tree-sitter>=0.21.0
23
+ tree-sitter-python>=0.21.0
24
+ tree-sitter-javascript>=0.21.0
25
+ tree-sitter-typescript>=0.21.0
26
26
 
27
27
  [images]
28
28
  pillow>=9.0.0
29
29
 
30
+ [parsers]
31
+ tree-sitter>=0.21.0
32
+ tree-sitter-python>=0.21.0
33
+ tree-sitter-javascript>=0.21.0
34
+ tree-sitter-typescript>=0.21.0
35
+
30
36
  [search]
31
37
  scrapy>=2.11.0
32
38
  scrapy-playwright>=0.0.34
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