invar-tools 1.17.2__py3-none-any.whl → 1.17.5__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.
Files changed (63) hide show
  1. invar/mcp/server.py +9 -5
  2. invar/node_tools/.gitignore +10 -6
  3. invar/node_tools/eslint-plugin/rules/__tests__/behavior.test.js +1321 -0
  4. invar/node_tools/eslint-plugin/rules/__tests__/behavior.test.js.map +1 -0
  5. invar/node_tools/eslint-plugin/rules/__tests__/e2e-scenarios.test.js +414 -0
  6. invar/node_tools/eslint-plugin/rules/__tests__/e2e-scenarios.test.js.map +1 -0
  7. invar/node_tools/eslint-plugin/rules/__tests__/fixtures/core/function-lengths.js +142 -0
  8. invar/node_tools/eslint-plugin/rules/__tests__/fixtures/core/function-lengths.js.map +1 -0
  9. invar/node_tools/eslint-plugin/rules/__tests__/fixtures/core/has-io-imports.js +15 -0
  10. invar/node_tools/eslint-plugin/rules/__tests__/fixtures/core/has-io-imports.js.map +1 -0
  11. invar/node_tools/eslint-plugin/rules/__tests__/fixtures/core/valid-small.js +27 -0
  12. invar/node_tools/eslint-plugin/rules/__tests__/fixtures/core/valid-small.js.map +1 -0
  13. invar/node_tools/eslint-plugin/rules/__tests__/fixtures/exported-functions.js +43 -0
  14. invar/node_tools/eslint-plugin/rules/__tests__/fixtures/exported-functions.js.map +1 -0
  15. invar/node_tools/eslint-plugin/rules/__tests__/fixtures/shell/with-io.js +27 -0
  16. invar/node_tools/eslint-plugin/rules/__tests__/fixtures/shell/with-io.js.map +1 -0
  17. invar/node_tools/eslint-plugin/rules/__tests__/fixtures/tests/large.test.js +260 -0
  18. invar/node_tools/eslint-plugin/rules/__tests__/fixtures/tests/large.test.js.map +1 -0
  19. invar/node_tools/eslint-plugin/rules/max-file-lines.js +105 -0
  20. invar/node_tools/eslint-plugin/rules/max-file-lines.js.map +1 -0
  21. invar/node_tools/eslint-plugin/rules/max-function-lines.js +133 -0
  22. invar/node_tools/eslint-plugin/rules/max-function-lines.js.map +1 -0
  23. invar/node_tools/eslint-plugin/rules/no-any-in-schema.js +39 -0
  24. invar/node_tools/eslint-plugin/rules/no-any-in-schema.js.map +1 -0
  25. invar/node_tools/eslint-plugin/rules/no-empty-schema.js +69 -0
  26. invar/node_tools/eslint-plugin/rules/no-empty-schema.js.map +1 -0
  27. invar/node_tools/eslint-plugin/rules/no-impure-calls-in-core.js +52 -0
  28. invar/node_tools/eslint-plugin/rules/no-impure-calls-in-core.js.map +1 -0
  29. invar/node_tools/eslint-plugin/rules/no-io-in-core.js +99 -0
  30. invar/node_tools/eslint-plugin/rules/no-io-in-core.js.map +1 -0
  31. invar/node_tools/eslint-plugin/rules/no-pure-logic-in-shell.js +197 -0
  32. invar/node_tools/eslint-plugin/rules/no-pure-logic-in-shell.js.map +1 -0
  33. invar/node_tools/eslint-plugin/rules/no-redundant-type-schema.js +99 -0
  34. invar/node_tools/eslint-plugin/rules/no-redundant-type-schema.js.map +1 -0
  35. invar/node_tools/eslint-plugin/rules/no-runtime-imports.js +66 -0
  36. invar/node_tools/eslint-plugin/rules/no-runtime-imports.js.map +1 -0
  37. invar/node_tools/eslint-plugin/rules/require-complete-validation.js +104 -0
  38. invar/node_tools/eslint-plugin/rules/require-complete-validation.js.map +1 -0
  39. invar/node_tools/eslint-plugin/rules/require-jsdoc-example.js +81 -0
  40. invar/node_tools/eslint-plugin/rules/require-jsdoc-example.js.map +1 -0
  41. invar/node_tools/eslint-plugin/rules/require-schema-validation.js +308 -0
  42. invar/node_tools/eslint-plugin/rules/require-schema-validation.js.map +1 -0
  43. invar/node_tools/eslint-plugin/rules/shell-complexity.js +273 -0
  44. invar/node_tools/eslint-plugin/rules/shell-complexity.js.map +1 -0
  45. invar/node_tools/eslint-plugin/rules/shell-result-type.js +138 -0
  46. invar/node_tools/eslint-plugin/rules/shell-result-type.js.map +1 -0
  47. invar/node_tools/eslint-plugin/rules/thin-entry-points.js +174 -0
  48. invar/node_tools/eslint-plugin/rules/thin-entry-points.js.map +1 -0
  49. invar/node_tools/eslint-plugin/utils/layer-detection.js +91 -0
  50. invar/node_tools/eslint-plugin/utils/layer-detection.js.map +1 -0
  51. invar/node_tools/eslint-plugin/utils/math-example.js +31 -0
  52. invar/node_tools/eslint-plugin/utils/math-example.js.map +1 -0
  53. invar/shell/commands/guard.py +1 -1
  54. invar/shell/commands/perception.py +40 -25
  55. invar/shell/commands/test.py +2 -2
  56. invar/shell/prove/guard_ts.py +47 -22
  57. {invar_tools-1.17.2.dist-info → invar_tools-1.17.5.dist-info}/METADATA +1 -1
  58. {invar_tools-1.17.2.dist-info → invar_tools-1.17.5.dist-info}/RECORD +63 -13
  59. {invar_tools-1.17.2.dist-info → invar_tools-1.17.5.dist-info}/WHEEL +0 -0
  60. {invar_tools-1.17.2.dist-info → invar_tools-1.17.5.dist-info}/entry_points.txt +0 -0
  61. {invar_tools-1.17.2.dist-info → invar_tools-1.17.5.dist-info}/licenses/LICENSE +0 -0
  62. {invar_tools-1.17.2.dist-info → invar_tools-1.17.5.dist-info}/licenses/LICENSE-GPL +0 -0
  63. {invar_tools-1.17.2.dist-info → invar_tools-1.17.5.dist-info}/licenses/NOTICE +0 -0
invar/mcp/server.py CHANGED
@@ -154,9 +154,11 @@ def _get_guard_tool() -> Tool:
154
154
  name="invar_guard",
155
155
  title="Smart Guard",
156
156
  description=(
157
- "Smart Guard: Verify code quality with static analysis + doctests. "
158
- "Use this INSTEAD of Bash('pytest ...') or Bash('crosshair ...'). "
159
- "Default runs static + doctests + CrossHair + Hypothesis."
157
+ "Smart Guard: Verify code quality with static analysis + tests. "
158
+ "Supports Python (pytest + doctest + CrossHair + Hypothesis) "
159
+ "and TypeScript (tsc + eslint + vitest). "
160
+ "Auto-detects project language from marker files (pyproject.toml, tsconfig.json). "
161
+ "Use this INSTEAD of Bash('pytest ...') or Bash('npm test ...')."
160
162
  ),
161
163
  inputSchema={
162
164
  "type": "object",
@@ -180,7 +182,8 @@ def _get_sig_tool() -> Tool:
180
182
  title="Show Signatures",
181
183
  description=(
182
184
  "Show function signatures and contracts (@pre/@post). "
183
- "Use this INSTEAD of Read('file.py') when you want to understand structure."
185
+ "Supports Python and TypeScript (via TS Compiler API). "
186
+ "Use this INSTEAD of Read('file.py'/'file.ts') when you want to understand structure."
184
187
  ),
185
188
  inputSchema={
186
189
  "type": "object",
@@ -201,7 +204,8 @@ def _get_map_tool() -> Tool:
201
204
  title="Symbol Map",
202
205
  description=(
203
206
  "Symbol map with reference counts. "
204
- "Use this INSTEAD of Grep for 'def ' to find functions."
207
+ "Supports Python and TypeScript projects. "
208
+ "Use this INSTEAD of Grep for 'def ' or 'function ' to find symbols."
205
209
  ),
206
210
  inputSchema={
207
211
  "type": "object",
@@ -1,13 +1,17 @@
1
1
  # Embedded Node.js tools - runtime dependencies
2
- # These are installed by scripts/embed_node_tools.py
3
- # Run that script before building or testing
2
+ # node_modules are added during GitHub Actions build (see .github/workflows/publish.yml)
4
3
 
5
- */node_modules/
4
+ # Ignore node_modules everywhere
5
+ **/node_modules/
6
+
7
+ # Ignore package.json/package-lock.json (not needed in git, copied during build)
6
8
  */package.json
9
+ */package-lock.json
7
10
 
8
- # eslint-plugin is unbundled (entire dist/ directory)
9
- # All other tools are bundled (single cli.js file)
10
- eslint-plugin/
11
+ # eslint-plugin: Ignore TypeScript definition files and bundle (not needed at runtime)
12
+ **/*.d.ts
13
+ **/*.d.ts.map
14
+ eslint-plugin/bundle.js
11
15
 
12
16
  # Common generated/temp files
13
17
  *.log