invar-tools 1.17.15__py3-none-any.whl → 1.17.16__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.
@@ -98,8 +98,9 @@ async function main() {
98
98
  // This allows ESLint to find embedded node_modules in site-packages
99
99
  const eslint = new ESLint({
100
100
  useEslintrc: false, // Don't load .eslintrc files
101
- cwd: __dirname, // Use CLI location for module resolution (embedded node_modules)
101
+ cwd: projectPath, // Use project directory as working directory (fix for timeout issue)
102
102
  resolvePluginsRelativeTo: __dirname, // Resolve plugins from embedded location
103
+ errorOnUnmatchedPattern: false, // Don't fail if no .tsx files found
103
104
  baseConfig: {
104
105
  parser: '@typescript-eslint/parser', // Will resolve from __dirname/node_modules
105
106
  parserOptions: {
@@ -108,6 +109,15 @@ async function main() {
108
109
  },
109
110
  plugins: ['@invar'],
110
111
  rules: selectedConfig.rules,
112
+ ignorePatterns: [
113
+ // Explicit ignores to prevent scanning generated/cached directories
114
+ '**/node_modules/**',
115
+ '**/.next/**',
116
+ '**/dist/**',
117
+ '**/build/**',
118
+ '**/.cache/**',
119
+ '**/coverage/**',
120
+ ],
111
121
  },
112
122
  plugins: {
113
123
  '@invar': plugin, // Register plugin directly
@@ -125,11 +135,12 @@ async function main() {
125
135
  filesToLint = [projectPath];
126
136
  }
127
137
  else if (stats.isDirectory()) {
128
- // Directory - use glob patterns for TypeScript files primarily
138
+ // Directory - use relative glob patterns for TypeScript files
129
139
  // Note: Focus on TypeScript files as this is a TypeScript Guard tool
140
+ // Use relative patterns (no projectPath prefix) since cwd is set to projectPath
130
141
  filesToLint = [
131
- `${projectPath}/**/*.ts`,
132
- `${projectPath}/**/*.tsx`,
142
+ "**/*.ts",
143
+ "**/*.tsx",
133
144
  ];
134
145
  }
135
146
  else {
@@ -402,7 +402,13 @@ def _get_invar_package_cmd(package_name: str, project_path: Path) -> list[str]:
402
402
  # Resolve to absolute path to avoid path doubling issues
403
403
  resolved_path = project_path.resolve()
404
404
 
405
- # Priority 2: Local development setup (Invar repo itself)
405
+ # Priority 1: Project-local override (for custom/modified tools)
406
+ # Allows projects to override embedded tools with local builds
407
+ local_cli = resolved_path / "typescript" / "packages" / package_name / "dist" / "cli.js"
408
+ if local_cli.exists():
409
+ return ["node", str(local_cli)]
410
+
411
+ # Priority 2: Embedded tools (from pip install)
406
412
  # Check both possible locations:
407
413
  # - resolved_path / "typescript" / "packages" / package_name / "dist" / "cli.js"
408
414
  # - resolved_path / "packages" / package_name / "dist" / "cli.js"
@@ -414,7 +420,9 @@ def _get_invar_package_cmd(package_name: str, project_path: Path) -> list[str]:
414
420
  if local_cli.exists():
415
421
  return ["node", str(local_cli)]
416
422
 
417
- # Priority 2b: Walk up to find the Invar root (monorepo setup)
423
+ # Priority 3b: Walk up to find the Invar root (monorepo setup)
424
+ # This is intentional for monorepo development - allows running from subdirectories
425
+ # Only searches up to 5 levels to limit exposure
418
426
  check_path = resolved_path
419
427
  for _ in range(5): # Max 5 levels up
420
428
  candidate = check_path / f"typescript/packages/{package_name}/dist/cli.js"
@@ -816,7 +824,6 @@ def run_eslint(project_path: Path) -> Result[list[TypeScriptViolation], str]:
816
824
  if result.returncode != 0 and result.stderr:
817
825
  return Failure(f"ESLint error: {result.stderr[:200]}")
818
826
  return Failure("ESLint output parsing failed: JSON decode error")
819
- return Failure("ESLint output parsing failed: JSON decode error")
820
827
 
821
828
  return Success(violations)
822
829
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: invar-tools
3
- Version: 1.17.15
3
+ Version: 1.17.16
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
@@ -60,7 +60,7 @@ invar/node_tools/ts-query.js,sha256=fEc_f0JT_Mb18dEoA4_vJoazvd7Lqv_rsed4eHSAbCg,
60
60
  invar/node_tools/eslint-plugin/bundle.js,sha256=tLtiwps3DtugRPxtp6RQoxEOkMxOQsessh6aCxcdEEA,56144
61
61
  invar/node_tools/eslint-plugin/cli.d.ts,sha256=mWidsJzkCvGtSHF_lykPNP3-w_Kolur7rEbdAI2772k,515
62
62
  invar/node_tools/eslint-plugin/cli.d.ts.map,sha256=DTUMceS-L2533vlJQT_y3p8TsQWPmbmQzqlcdjwnaFc,122
63
- invar/node_tools/eslint-plugin/cli.js,sha256=ImpQUercYO3R8BWkV7k1xxYfWxwqPOBCxyWxZD2K890,6952
63
+ invar/node_tools/eslint-plugin/cli.js,sha256=R-Ny11nkTyGuPD72rcjy23qvkdzaHcCFt-B3jxN2-_k,7467
64
64
  invar/node_tools/eslint-plugin/cli.js.map,sha256=AZt_DYAD6NnHGjR6oxXfGYaOHc6-vfDs0ENvYsbw5Ro,4489
65
65
  invar/node_tools/eslint-plugin/index.d.ts,sha256=Z9XMvdXtx8ajI19283CHQr8XppNHQuvVB73mndSreTc,3250
66
66
  invar/node_tools/eslint-plugin/index.d.ts.map,sha256=rAPcxrQWC5hytkMg1TnIKk99CTMJix3D3PG9OmMTJxQ,443
@@ -5969,7 +5969,7 @@ invar/shell/prove/__init__.py,sha256=ZqlbmyMFJf6yAle8634jFuPRv8wNvHps8loMlOJyf8A
5969
5969
  invar/shell/prove/accept.py,sha256=cnY_6jzU1EBnpLF8-zWUWcXiSXtCwxPsXEYXsSVPG38,3717
5970
5970
  invar/shell/prove/cache.py,sha256=jbNdrvfLjvK7S0iqugErqeabb4YIbQuwIlcSRyCKbcg,4105
5971
5971
  invar/shell/prove/crosshair.py,sha256=XhJDsQWIriX9SuqeflUYvJgp9gJTDH7I7Uka6zjNzZ0,16734
5972
- invar/shell/prove/guard_ts.py,sha256=bz3TsxcBChK9UumvcVMRx8BTyeGiVNM5ZdOkqdzcKmg,37516
5972
+ invar/shell/prove/guard_ts.py,sha256=Ssbkc4h7zVHhg2q3e1yAaE4N7hgT-aRWMPmnwjuoRa0,37866
5973
5973
  invar/shell/prove/hypothesis.py,sha256=QUclOOUg_VB6wbmHw8O2EPiL5qBOeBRqQeM04AVuLw0,9880
5974
5974
  invar/templates/CLAUDE.md.template,sha256=eaGU3SyRO_NEifw5b26k3srgQH4jyeujjCJ-HbM36_w,4913
5975
5975
  invar/templates/__init__.py,sha256=cb3ht8KPK5oBn5oG6HsTznujmo9WriJ_P--fVxJwycc,45
@@ -6050,10 +6050,10 @@ invar/templates/skills/invar-reflect/template.md,sha256=Rr5hvbllvmd8jSLf_0ZjyKt6
6050
6050
  invar/templates/skills/investigate/SKILL.md.jinja,sha256=cp6TBEixBYh1rLeeHOR1yqEnFqv1NZYePORMnavLkQI,3231
6051
6051
  invar/templates/skills/propose/SKILL.md.jinja,sha256=6BuKiCqO1AEu3VtzMHy1QWGqr_xqG9eJlhbsKT4jev4,3463
6052
6052
  invar/templates/skills/review/SKILL.md.jinja,sha256=ET5mbdSe_eKgJbi2LbgFC-z1aviKcHOBw7J5Q28fr4U,14105
6053
- invar_tools-1.17.15.dist-info/METADATA,sha256=a2o6ftCh8fiQTayyOABNnD4kMvWILGfTC1KL_pSJzfQ,28596
6054
- invar_tools-1.17.15.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
6055
- invar_tools-1.17.15.dist-info/entry_points.txt,sha256=RwH_EhqgtFPsnO6RcrwrAb70Zyfb8Mh6uUtztWnUxGk,102
6056
- invar_tools-1.17.15.dist-info/licenses/LICENSE,sha256=qeFksp4H4kfTgQxPCIu3OdagXyiZcgBlVfsQ6M5oFyk,10767
6057
- invar_tools-1.17.15.dist-info/licenses/LICENSE-GPL,sha256=IvZfC6ZbP7CLjytoHVzvpDZpD-Z3R_qa1GdMdWlWQ6Q,35157
6058
- invar_tools-1.17.15.dist-info/licenses/NOTICE,sha256=joEyMyFhFY8Vd8tTJ-a3SirI0m2Sd0WjzqYt3sdcglc,2561
6059
- invar_tools-1.17.15.dist-info/RECORD,,
6053
+ invar_tools-1.17.16.dist-info/METADATA,sha256=nclVxT-j5bTQ38-NXiyMmuNLnwOIwzuFqLF5aESJzbU,28596
6054
+ invar_tools-1.17.16.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
6055
+ invar_tools-1.17.16.dist-info/entry_points.txt,sha256=RwH_EhqgtFPsnO6RcrwrAb70Zyfb8Mh6uUtztWnUxGk,102
6056
+ invar_tools-1.17.16.dist-info/licenses/LICENSE,sha256=qeFksp4H4kfTgQxPCIu3OdagXyiZcgBlVfsQ6M5oFyk,10767
6057
+ invar_tools-1.17.16.dist-info/licenses/LICENSE-GPL,sha256=IvZfC6ZbP7CLjytoHVzvpDZpD-Z3R_qa1GdMdWlWQ6Q,35157
6058
+ invar_tools-1.17.16.dist-info/licenses/NOTICE,sha256=joEyMyFhFY8Vd8tTJ-a3SirI0m2Sd0WjzqYt3sdcglc,2561
6059
+ invar_tools-1.17.16.dist-info/RECORD,,