invar-tools 1.17.17__py3-none-any.whl → 1.17.18__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.
@@ -137,6 +137,10 @@ async function main() {
137
137
  '**/build/**',
138
138
  '**/.cache/**',
139
139
  '**/coverage/**',
140
+ '**/.turbo/**',
141
+ '**/.vercel/**',
142
+ '**/playwright-report/**',
143
+ '**/test-results/**',
140
144
  ],
141
145
  },
142
146
  plugins: {
@@ -374,6 +374,19 @@ def _check_tool_available(tool: str, check_args: list[str]) -> bool:
374
374
  # =============================================================================
375
375
 
376
376
 
377
+ def _is_invar_package_dir(package_dir: Path, package_name: str) -> bool:
378
+ package_json = package_dir / "package.json"
379
+ if not package_json.exists():
380
+ return False
381
+
382
+ try:
383
+ data = json.loads(package_json.read_text(encoding="utf-8"))
384
+ except (OSError, json.JSONDecodeError):
385
+ return False
386
+
387
+ return data.get("name") == f"@invar/{package_name}"
388
+
389
+
377
390
  # @shell_complexity: Path discovery with fallback logic
378
391
  def _get_invar_package_cmd(package_name: str, project_path: Path) -> list[str]:
379
392
  """Get command to run an @invar/* package.
@@ -395,11 +408,11 @@ def _get_invar_package_cmd(package_name: str, project_path: Path) -> list[str]:
395
408
  resolved_path = project_path.resolve()
396
409
 
397
410
  local_cli = resolved_path / "typescript" / "packages" / package_name / "dist" / "cli.js"
398
- if local_cli.exists():
411
+ if local_cli.exists() and _is_invar_package_dir(local_cli.parent.parent, package_name):
399
412
  return ["node", str(local_cli)]
400
413
 
401
414
  local_cli = resolved_path / "packages" / package_name / "dist" / "cli.js"
402
- if local_cli.exists():
415
+ if local_cli.exists() and _is_invar_package_dir(local_cli.parent.parent, package_name):
403
416
  return ["node", str(local_cli)]
404
417
 
405
418
  # Priority 2: Embedded tools (from pip install)
@@ -417,7 +430,7 @@ def _get_invar_package_cmd(package_name: str, project_path: Path) -> list[str]:
417
430
  check_path = resolved_path
418
431
  for _ in range(5): # Max 5 levels up
419
432
  candidate = check_path / f"typescript/packages/{package_name}/dist/cli.js"
420
- if candidate.exists():
433
+ if candidate.exists() and _is_invar_package_dir(candidate.parent.parent, package_name):
421
434
  return ["node", str(candidate)]
422
435
  parent = check_path.parent
423
436
  if parent == check_path:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: invar-tools
3
- Version: 1.17.17
3
+ Version: 1.17.18
4
4
  Summary: AI-native software engineering tools with design-by-contract verification
5
5
  Project-URL: Homepage, https://github.com/tefx/invar
6
6
  Project-URL: Documentation, https://github.com/tefx/invar#readme
@@ -56,7 +56,7 @@ invar/node_tools/.gitignore,sha256=M2kz8Iw7Kzmi44mKo1r7_HOZMh79a7dFDdRrqXyaEhI,5
56
56
  invar/node_tools/MANIFEST,sha256=2Z2at-27MK8K7DSjOjjtR4faTbt6eCiKQuEfvP_lwH8,145
57
57
  invar/node_tools/__init__.py,sha256=HzILh3jtP28Lm2jZwss1SY65ECxbtw2J2uFpXQA6Y94,1740
58
58
  invar/node_tools/ts-query.js,sha256=fEc_f0JT_Mb18dEoA4_vJoazvd7Lqv_rsed4eHSAbCg,13303
59
- invar/node_tools/eslint-plugin/cli.js,sha256=KbqACF8NEB7RRfybDPNqSwjB2KYWI97stdEpkE36kZY,8042
59
+ invar/node_tools/eslint-plugin/cli.js,sha256=nnL-ZiuGON77c_iI5HzcOEOujQZqGHNjaoMWZzRFMhE,8204
60
60
  invar/node_tools/eslint-plugin/cli.js.map,sha256=AZt_DYAD6NnHGjR6oxXfGYaOHc6-vfDs0ENvYsbw5Ro,4489
61
61
  invar/node_tools/eslint-plugin/index.js,sha256=atrI37dn1yDznQrgKY-1xIhLnCdvJQTU53123ZI_9J4,5132
62
62
  invar/node_tools/eslint-plugin/index.js.map,sha256=MlFuNso9sZ4v9ggGJLyMq4Pt_JdEzP1OyouyCCki1wA,2344
@@ -2697,7 +2697,7 @@ invar/shell/prove/__init__.py,sha256=ZqlbmyMFJf6yAle8634jFuPRv8wNvHps8loMlOJyf8A
2697
2697
  invar/shell/prove/accept.py,sha256=cnY_6jzU1EBnpLF8-zWUWcXiSXtCwxPsXEYXsSVPG38,3717
2698
2698
  invar/shell/prove/cache.py,sha256=jbNdrvfLjvK7S0iqugErqeabb4YIbQuwIlcSRyCKbcg,4105
2699
2699
  invar/shell/prove/crosshair.py,sha256=XhJDsQWIriX9SuqeflUYvJgp9gJTDH7I7Uka6zjNzZ0,16734
2700
- invar/shell/prove/guard_ts.py,sha256=mq6_bNLBosVlkHf8KQ3EaWUtLUkh0Jeggh-YKybvD2I,37363
2700
+ invar/shell/prove/guard_ts.py,sha256=8InEWFd6oqFxBUEaAdlqOvPi43p0VZKxJIrAaF0eReU,37936
2701
2701
  invar/shell/prove/hypothesis.py,sha256=QUclOOUg_VB6wbmHw8O2EPiL5qBOeBRqQeM04AVuLw0,9880
2702
2702
  invar/templates/CLAUDE.md.template,sha256=eaGU3SyRO_NEifw5b26k3srgQH4jyeujjCJ-HbM36_w,4913
2703
2703
  invar/templates/__init__.py,sha256=cb3ht8KPK5oBn5oG6HsTznujmo9WriJ_P--fVxJwycc,45
@@ -2778,10 +2778,10 @@ invar/templates/skills/invar-reflect/template.md,sha256=Rr5hvbllvmd8jSLf_0ZjyKt6
2778
2778
  invar/templates/skills/investigate/SKILL.md.jinja,sha256=cp6TBEixBYh1rLeeHOR1yqEnFqv1NZYePORMnavLkQI,3231
2779
2779
  invar/templates/skills/propose/SKILL.md.jinja,sha256=6BuKiCqO1AEu3VtzMHy1QWGqr_xqG9eJlhbsKT4jev4,3463
2780
2780
  invar/templates/skills/review/SKILL.md.jinja,sha256=ET5mbdSe_eKgJbi2LbgFC-z1aviKcHOBw7J5Q28fr4U,14105
2781
- invar_tools-1.17.17.dist-info/METADATA,sha256=8zrGXhNN7aKCrwqXggDn00ZYT10BSUzN2r89ruFtaqw,28596
2782
- invar_tools-1.17.17.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
2783
- invar_tools-1.17.17.dist-info/entry_points.txt,sha256=RwH_EhqgtFPsnO6RcrwrAb70Zyfb8Mh6uUtztWnUxGk,102
2784
- invar_tools-1.17.17.dist-info/licenses/LICENSE,sha256=qeFksp4H4kfTgQxPCIu3OdagXyiZcgBlVfsQ6M5oFyk,10767
2785
- invar_tools-1.17.17.dist-info/licenses/LICENSE-GPL,sha256=IvZfC6ZbP7CLjytoHVzvpDZpD-Z3R_qa1GdMdWlWQ6Q,35157
2786
- invar_tools-1.17.17.dist-info/licenses/NOTICE,sha256=joEyMyFhFY8Vd8tTJ-a3SirI0m2Sd0WjzqYt3sdcglc,2561
2787
- invar_tools-1.17.17.dist-info/RECORD,,
2781
+ invar_tools-1.17.18.dist-info/METADATA,sha256=WbBqPPXAsiwB7rCjrpDjnYYBjGy-a1uEpjWoRdbkHO8,28596
2782
+ invar_tools-1.17.18.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
2783
+ invar_tools-1.17.18.dist-info/entry_points.txt,sha256=RwH_EhqgtFPsnO6RcrwrAb70Zyfb8Mh6uUtztWnUxGk,102
2784
+ invar_tools-1.17.18.dist-info/licenses/LICENSE,sha256=qeFksp4H4kfTgQxPCIu3OdagXyiZcgBlVfsQ6M5oFyk,10767
2785
+ invar_tools-1.17.18.dist-info/licenses/LICENSE-GPL,sha256=IvZfC6ZbP7CLjytoHVzvpDZpD-Z3R_qa1GdMdWlWQ6Q,35157
2786
+ invar_tools-1.17.18.dist-info/licenses/NOTICE,sha256=joEyMyFhFY8Vd8tTJ-a3SirI0m2Sd0WjzqYt3sdcglc,2561
2787
+ invar_tools-1.17.18.dist-info/RECORD,,