invar-tools 1.11.0__tar.gz → 1.12.0__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 (482) hide show
  1. {invar_tools-1.11.0 → invar_tools-1.12.0}/.claude/skills/develop/SKILL.md +1 -2
  2. {invar_tools-1.11.0 → invar_tools-1.12.0}/.claude/skills/investigate/SKILL.md +0 -55
  3. {invar_tools-1.11.0 → invar_tools-1.12.0}/.invar/context.md +53 -3
  4. {invar_tools-1.11.0 → invar_tools-1.12.0}/CLAUDE.md +31 -11
  5. {invar_tools-1.11.0 → invar_tools-1.12.0}/PKG-INFO +25 -7
  6. {invar_tools-1.11.0 → invar_tools-1.12.0}/README.md +23 -6
  7. invar_tools-1.12.0/docs/proposals/DX-78-mcp-protocol-sync.md +575 -0
  8. invar_tools-1.12.0/docs/proposals/LX-09-legacy-onboarding.md +387 -0
  9. {invar_tools-1.11.0 → invar_tools-1.12.0}/docs/proposals/index.md +5 -3
  10. {invar_tools-1.11.0 → invar_tools-1.12.0}/pyproject.toml +3 -1
  11. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/mcp/handlers.py +28 -0
  12. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/mcp/server.py +64 -14
  13. invar_tools-1.12.0/src/invar/node_tools/ts-query.js +396 -0
  14. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/shell/commands/guard.py +24 -0
  15. invar_tools-1.12.0/src/invar/shell/commands/perception.py +547 -0
  16. invar_tools-1.12.0/src/invar/shell/py_refs.py +156 -0
  17. invar_tools-1.12.0/src/invar/shell/ts_compiler.py +238 -0
  18. invar_tools-1.12.0/src/invar/templates/examples/typescript/patterns.md +193 -0
  19. {invar_tools-1.11.0 → invar_tools-1.12.0}/tests/conftest.py +2 -1
  20. {invar_tools-1.11.0 → invar_tools-1.12.0}/tests/experiments/dx74_attention_drift/scenario/api_client.py +0 -1
  21. {invar_tools-1.11.0 → invar_tools-1.12.0}/tests/experiments/dx74_attention_drift/scenario/auth_service.py +0 -2
  22. {invar_tools-1.11.0 → invar_tools-1.12.0}/tests/experiments/dx74_attention_drift/scenario/data_processor.py +0 -1
  23. {invar_tools-1.11.0 → invar_tools-1.12.0}/tests/experiments/dx74_attention_drift/scenario/file_handler.py +0 -2
  24. {invar_tools-1.11.0 → invar_tools-1.12.0}/tests/experiments/dx74_attention_drift/scenario_v2/analytics_engine.py +2 -6
  25. {invar_tools-1.11.0 → invar_tools-1.12.0}/tests/experiments/dx74_attention_drift/scenario_v2/inventory_manager.py +3 -4
  26. {invar_tools-1.11.0 → invar_tools-1.12.0}/tests/experiments/dx74_attention_drift/scenario_v2/notification_service.py +1 -2
  27. {invar_tools-1.11.0 → invar_tools-1.12.0}/tests/experiments/dx74_attention_drift/scenario_v2/payment_gateway.py +1 -3
  28. {invar_tools-1.11.0 → invar_tools-1.12.0}/tests/experiments/dx74_attention_drift/scenario_v2/user_service.py +0 -1
  29. {invar_tools-1.11.0 → invar_tools-1.12.0}/tests/experiments/dx74_attention_drift/scenario_v3/cache_service.py +6 -7
  30. {invar_tools-1.11.0 → invar_tools-1.12.0}/tests/experiments/dx74_attention_drift/scenario_v3/calculator.py +3 -4
  31. {invar_tools-1.11.0 → invar_tools-1.12.0}/tests/experiments/dx74_attention_drift/scenario_v3/data_processor.py +3 -4
  32. {invar_tools-1.11.0 → invar_tools-1.12.0}/tests/experiments/dx74_attention_drift/scenario_v3/user_manager.py +4 -5
  33. {invar_tools-1.11.0 → invar_tools-1.12.0}/tests/experiments/dx74_attention_drift/scenario_v3/validator.py +4 -4
  34. {invar_tools-1.11.0 → invar_tools-1.12.0}/tests/experiments/dx74_attention_drift/scenario_v4/config_manager.py +15 -16
  35. {invar_tools-1.11.0 → invar_tools-1.12.0}/tests/experiments/dx74_attention_drift/scenario_v4/data_service.py +21 -21
  36. {invar_tools-1.11.0 → invar_tools-1.12.0}/tests/experiments/dx74_attention_drift/scenario_v4/math_utils.py +9 -12
  37. {invar_tools-1.11.0 → invar_tools-1.12.0}/tests/experiments/dx74_attention_drift/scenario_v4/report_generator.py +18 -18
  38. {invar_tools-1.11.0 → invar_tools-1.12.0}/tests/experiments/dx74_attention_drift/scenario_v4/user_auth.py +13 -13
  39. {invar_tools-1.11.0 → invar_tools-1.12.0}/tests/experiments/dx74_attention_drift/scenario_v5/api_gateway.py +16 -15
  40. {invar_tools-1.11.0 → invar_tools-1.12.0}/tests/experiments/dx74_attention_drift/scenario_v5/auth_service.py +11 -11
  41. {invar_tools-1.11.0 → invar_tools-1.12.0}/tests/experiments/dx74_attention_drift/scenario_v5/cache_handler.py +12 -12
  42. {invar_tools-1.11.0 → invar_tools-1.12.0}/tests/experiments/dx74_attention_drift/scenario_v5/config_loader.py +23 -22
  43. {invar_tools-1.11.0 → invar_tools-1.12.0}/tests/experiments/dx74_attention_drift/scenario_v5/data_validator.py +12 -12
  44. {invar_tools-1.11.0 → invar_tools-1.12.0}/tests/experiments/dx74_attention_drift/scenario_v5/metrics_collector.py +23 -23
  45. {invar_tools-1.11.0 → invar_tools-1.12.0}/tests/experiments/dx74_attention_drift/scenario_v5/notification_service.py +10 -10
  46. {invar_tools-1.11.0 → invar_tools-1.12.0}/tests/experiments/dx74_attention_drift/scenario_v5/payment_processor.py +15 -16
  47. {invar_tools-1.11.0 → invar_tools-1.12.0}/tests/experiments/dx74_attention_drift/scenario_v5/report_builder.py +22 -22
  48. {invar_tools-1.11.0 → invar_tools-1.12.0}/tests/experiments/dx74_attention_drift/scenario_v5/task_scheduler.py +10 -9
  49. {invar_tools-1.11.0 → invar_tools-1.12.0}/tests/experiments/dx74_attention_drift/scenario_v5/user_manager.py +14 -18
  50. {invar_tools-1.11.0 → invar_tools-1.12.0}/tests/experiments/dx74_attention_drift/scenario_v5/utils.py +9 -9
  51. {invar_tools-1.11.0 → invar_tools-1.12.0}/tests/experiments/dx74_attention_drift/scenario_v6/api_gateway.py +16 -15
  52. {invar_tools-1.11.0 → invar_tools-1.12.0}/tests/experiments/dx74_attention_drift/scenario_v6/auth_service.py +11 -11
  53. {invar_tools-1.11.0 → invar_tools-1.12.0}/tests/experiments/dx74_attention_drift/scenario_v6/cache_handler.py +12 -12
  54. {invar_tools-1.11.0 → invar_tools-1.12.0}/tests/experiments/dx74_attention_drift/scenario_v6/config_loader.py +23 -22
  55. {invar_tools-1.11.0 → invar_tools-1.12.0}/tests/experiments/dx74_attention_drift/scenario_v6/data_validator.py +12 -12
  56. {invar_tools-1.11.0 → invar_tools-1.12.0}/tests/experiments/dx74_attention_drift/scenario_v6/metrics_collector.py +23 -23
  57. {invar_tools-1.11.0 → invar_tools-1.12.0}/tests/experiments/dx74_attention_drift/scenario_v6/notification_service.py +10 -10
  58. {invar_tools-1.11.0 → invar_tools-1.12.0}/tests/experiments/dx74_attention_drift/scenario_v6/payment_processor.py +15 -16
  59. {invar_tools-1.11.0 → invar_tools-1.12.0}/tests/experiments/dx74_attention_drift/scenario_v6/report_builder.py +22 -22
  60. {invar_tools-1.11.0 → invar_tools-1.12.0}/tests/experiments/dx74_attention_drift/scenario_v6/task_scheduler.py +10 -9
  61. {invar_tools-1.11.0 → invar_tools-1.12.0}/tests/experiments/dx74_attention_drift/scenario_v6/user_manager.py +14 -18
  62. {invar_tools-1.11.0 → invar_tools-1.12.0}/tests/experiments/dx74_attention_drift/scenario_v6/utils.py +9 -9
  63. {invar_tools-1.11.0 → invar_tools-1.12.0}/tests/experiments/dx74_attention_drift/scenario_v7/api_service.py +29 -29
  64. {invar_tools-1.11.0 → invar_tools-1.12.0}/tests/experiments/dx74_attention_drift/scenario_v7/auth_manager.py +40 -42
  65. {invar_tools-1.11.0 → invar_tools-1.12.0}/tests/experiments/dx74_attention_drift/scenario_v7/data_processor.py +42 -41
  66. {invar_tools-1.11.0 → invar_tools-1.12.0}/tests/experiments/dx74_attention_drift/scenario_v7/report_engine.py +37 -37
  67. {invar_tools-1.11.0 → invar_tools-1.12.0}/tests/experiments/dx74_attention_drift/scenario_v7/storage_handler.py +21 -22
  68. {invar_tools-1.11.0 → invar_tools-1.12.0}/tests/experiments/dx74_attention_drift/scenario_v7/utils.py +11 -11
  69. {invar_tools-1.11.0 → invar_tools-1.12.0}/tests/integration/test_cli_flags.py +0 -2
  70. {invar_tools-1.11.0 → invar_tools-1.12.0}/tests/integration/test_dx55_regression.py +0 -3
  71. {invar_tools-1.11.0 → invar_tools-1.12.0}/tests/integration/test_dx56_sync.py +0 -3
  72. invar_tools-1.12.0/tests/integration/test_dx78_ts_compiler.py +572 -0
  73. {invar_tools-1.11.0 → invar_tools-1.12.0}/tests/integration/test_lx05_detection.py +0 -1
  74. {invar_tools-1.11.0 → invar_tools-1.12.0}/tests/integration/test_lx05_integration.py +0 -1
  75. {invar_tools-1.11.0 → invar_tools-1.12.0}/tests/integration/test_lx05_templates.py +0 -1
  76. {invar_tools-1.11.0 → invar_tools-1.12.0}/tests/integration/test_lx06_typescript.py +0 -3
  77. {invar_tools-1.11.0 → invar_tools-1.12.0}/tests/integration/test_lx07_skills.py +0 -3
  78. {invar_tools-1.11.0 → invar_tools-1.12.0}/tests/integration/test_mcp_doc_tools.py +15 -16
  79. {invar_tools-1.11.0 → invar_tools-1.12.0}/tests/test_subprocess_env.py +0 -3
  80. invar_tools-1.11.0/src/invar/shell/commands/perception.py +0 -251
  81. {invar_tools-1.11.0 → invar_tools-1.12.0}/.aider.conf.yml +0 -0
  82. {invar_tools-1.11.0 → invar_tools-1.12.0}/.claude/commands/audit.md +0 -0
  83. {invar_tools-1.11.0 → invar_tools-1.12.0}/.claude/commands/guard.md +0 -0
  84. {invar_tools-1.11.0 → invar_tools-1.12.0}/.claude/hooks/PostToolUse.sh +0 -0
  85. {invar_tools-1.11.0 → invar_tools-1.12.0}/.claude/hooks/PreToolUse.sh +0 -0
  86. {invar_tools-1.11.0 → invar_tools-1.12.0}/.claude/hooks/Stop.sh +0 -0
  87. {invar_tools-1.11.0 → invar_tools-1.12.0}/.claude/hooks/UserPromptSubmit.sh +0 -0
  88. {invar_tools-1.11.0 → invar_tools-1.12.0}/.claude/hooks/invar.PostToolUse.sh +0 -0
  89. {invar_tools-1.11.0 → invar_tools-1.12.0}/.claude/hooks/invar.PreToolUse.sh +0 -0
  90. {invar_tools-1.11.0 → invar_tools-1.12.0}/.claude/hooks/invar.Stop.sh +0 -0
  91. {invar_tools-1.11.0 → invar_tools-1.12.0}/.claude/hooks/invar.UserPromptSubmit.sh +0 -0
  92. {invar_tools-1.11.0 → invar_tools-1.12.0}/.claude/skills/acceptance/SKILL.md +0 -0
  93. {invar_tools-1.11.0 → invar_tools-1.12.0}/.claude/skills/invar-onboard/SKILL.md +0 -0
  94. {invar_tools-1.11.0 → invar_tools-1.12.0}/.claude/skills/invar-onboard/patterns/python.md +0 -0
  95. {invar_tools-1.11.0 → invar_tools-1.12.0}/.claude/skills/invar-onboard/patterns/typescript.md +0 -0
  96. {invar_tools-1.11.0 → invar_tools-1.12.0}/.claude/skills/invar-onboard/templates/assessment.md.jinja +0 -0
  97. {invar_tools-1.11.0 → invar_tools-1.12.0}/.claude/skills/invar-onboard/templates/roadmap.md.jinja +0 -0
  98. {invar_tools-1.11.0 → invar_tools-1.12.0}/.claude/skills/propose/SKILL.md +0 -0
  99. {invar_tools-1.11.0 → invar_tools-1.12.0}/.claude/skills/review/SKILL.md +0 -0
  100. {invar_tools-1.11.0 → invar_tools-1.12.0}/.claude/skills/security/SKILL.md +0 -0
  101. {invar_tools-1.11.0 → invar_tools-1.12.0}/.claude/skills/security/patterns/_common.yaml +0 -0
  102. {invar_tools-1.11.0 → invar_tools-1.12.0}/.claude/skills/security/patterns/python.yaml +0 -0
  103. {invar_tools-1.11.0 → invar_tools-1.12.0}/.claude/skills/security/patterns/typescript.yaml +0 -0
  104. {invar_tools-1.11.0 → invar_tools-1.12.0}/.cursorrules +0 -0
  105. {invar_tools-1.11.0 → invar_tools-1.12.0}/.github/workflows/ci.yml +0 -0
  106. {invar_tools-1.11.0 → invar_tools-1.12.0}/.github/workflows/publish.yml +0 -0
  107. {invar_tools-1.11.0 → invar_tools-1.12.0}/.gitignore +0 -0
  108. {invar_tools-1.11.0 → invar_tools-1.12.0}/.invar/archive/sessions-2025-12.md +0 -0
  109. {invar_tools-1.11.0 → invar_tools-1.12.0}/.invar/examples/README.md +0 -0
  110. {invar_tools-1.11.0 → invar_tools-1.12.0}/.invar/examples/conftest.py +0 -0
  111. {invar_tools-1.11.0 → invar_tools-1.12.0}/.invar/examples/contracts.py +0 -0
  112. {invar_tools-1.11.0 → invar_tools-1.12.0}/.invar/examples/core_shell.py +0 -0
  113. {invar_tools-1.11.0 → invar_tools-1.12.0}/.invar/examples/functional.py +0 -0
  114. {invar_tools-1.11.0 → invar_tools-1.12.0}/.invar/examples/workflow.md +0 -0
  115. {invar_tools-1.11.0 → invar_tools-1.12.0}/.invar/mcp-setup.md +0 -0
  116. {invar_tools-1.11.0 → invar_tools-1.12.0}/.invar/project-additions.md +0 -0
  117. {invar_tools-1.11.0 → invar_tools-1.12.0}/.invar/proposals/TEMPLATE.md +0 -0
  118. {invar_tools-1.11.0 → invar_tools-1.12.0}/.mcp.json +0 -0
  119. {invar_tools-1.11.0 → invar_tools-1.12.0}/.pre-commit-config.yaml +0 -0
  120. {invar_tools-1.11.0 → invar_tools-1.12.0}/.serena/.gitignore +0 -0
  121. {invar_tools-1.11.0 → invar_tools-1.12.0}/.serena/project.yml +0 -0
  122. {invar_tools-1.11.0 → invar_tools-1.12.0}/INVAR.md +0 -0
  123. {invar_tools-1.11.0 → invar_tools-1.12.0}/LICENSE +0 -0
  124. {invar_tools-1.11.0 → invar_tools-1.12.0}/LICENSE-GPL +0 -0
  125. {invar_tools-1.11.0 → invar_tools-1.12.0}/NOTICE +0 -0
  126. {invar_tools-1.11.0 → invar_tools-1.12.0}/docs/.nojekyll +0 -0
  127. {invar_tools-1.11.0 → invar_tools-1.12.0}/docs/agents.md +0 -0
  128. {invar_tools-1.11.0 → invar_tools-1.12.0}/docs/design.md +0 -0
  129. {invar_tools-1.11.0 → invar_tools-1.12.0}/docs/diagrams.md +0 -0
  130. {invar_tools-1.11.0 → invar_tools-1.12.0}/docs/guide.md +0 -0
  131. {invar_tools-1.11.0 → invar_tools-1.12.0}/docs/guides/aider.md +0 -0
  132. {invar_tools-1.11.0 → invar_tools-1.12.0}/docs/guides/cline.md +0 -0
  133. {invar_tools-1.11.0 → invar_tools-1.12.0}/docs/guides/continue.md +0 -0
  134. {invar_tools-1.11.0 → invar_tools-1.12.0}/docs/guides/cursor.md +0 -0
  135. {invar_tools-1.11.0 → invar_tools-1.12.0}/docs/guides/multi-agent.md +0 -0
  136. {invar_tools-1.11.0 → invar_tools-1.12.0}/docs/guides/pi.md +0 -0
  137. {invar_tools-1.11.0 → invar_tools-1.12.0}/docs/history/decisions-2024.md +0 -0
  138. {invar_tools-1.11.0 → invar_tools-1.12.0}/docs/history/feedback/compliance-analysis.md +0 -0
  139. {invar_tools-1.11.0 → invar_tools-1.12.0}/docs/history/feedback/feedback-memo.md +0 -0
  140. {invar_tools-1.11.0 → invar_tools-1.12.0}/docs/history/feedback/index.md +0 -0
  141. {invar_tools-1.11.0 → invar_tools-1.12.0}/docs/history/index.md +0 -0
  142. {invar_tools-1.11.0 → invar_tools-1.12.0}/docs/history/original-vision.md +0 -0
  143. {invar_tools-1.11.0 → invar_tools-1.12.0}/docs/history/protocol-evolution.md +0 -0
  144. {invar_tools-1.11.0 → invar_tools-1.12.0}/docs/history/research/cruxeval-quick-validation.md +0 -0
  145. {invar_tools-1.11.0 → invar_tools-1.12.0}/docs/index.html +0 -0
  146. {invar_tools-1.11.0 → invar_tools-1.12.0}/docs/logo.svg +0 -0
  147. {invar_tools-1.11.0 → invar_tools-1.12.0}/docs/proposals/DX-23-entry-point-detection.md +0 -0
  148. {invar_tools-1.11.0 → invar_tools-1.12.0}/docs/proposals/DX-25-functional-patterns.md +0 -0
  149. {invar_tools-1.11.0 → invar_tools-1.12.0}/docs/proposals/DX-29-pure-content-detection.md +0 -0
  150. {invar_tools-1.11.0 → invar_tools-1.12.0}/docs/proposals/DX-38-contract-quality-rules.md +0 -0
  151. {invar_tools-1.11.0 → invar_tools-1.12.0}/docs/proposals/DX-60-structured-rules-ssot.md +0 -0
  152. {invar_tools-1.11.0 → invar_tools-1.12.0}/docs/proposals/DX-61-functional-pattern-guidance.md +0 -0
  153. {invar_tools-1.11.0 → invar_tools-1.12.0}/docs/proposals/DX-61-implementation-design.md +0 -0
  154. {invar_tools-1.11.0 → invar_tools-1.12.0}/docs/proposals/DX-62-proactive-reference-reading.md +0 -0
  155. {invar_tools-1.11.0 → invar_tools-1.12.0}/docs/proposals/DX-68-agent-behavior-optimization.md +0 -0
  156. {invar_tools-1.11.0 → invar_tools-1.12.0}/docs/proposals/DX-74-experiment-report.md +0 -0
  157. {invar_tools-1.11.0 → invar_tools-1.12.0}/docs/proposals/DX-75-attention-aware-framework.md +0 -0
  158. {invar_tools-1.11.0 → invar_tools-1.12.0}/docs/proposals/LX-01-multi-language-feasibility.md +0 -0
  159. {invar_tools-1.11.0 → invar_tools-1.12.0}/docs/proposals/LX-04-pi-agent-support.md +0 -0
  160. {invar_tools-1.11.0 → invar_tools-1.12.0}/docs/proposals/LX-07-extension-skills.md +0 -0
  161. {invar_tools-1.11.0 → invar_tools-1.12.0}/docs/proposals/LX-08-extension-skills-future.md +0 -0
  162. {invar_tools-1.11.0 → invar_tools-1.12.0}/docs/proposals/completed/2024-12-21-guard-enhancements.md +0 -0
  163. {invar_tools-1.11.0 → invar_tools-1.12.0}/docs/proposals/completed/2024-12-21-language-inspired-enhancements.md +0 -0
  164. {invar_tools-1.11.0 → invar_tools-1.12.0}/docs/proposals/completed/2024-12-21-test-first-enhancement.md +0 -0
  165. {invar_tools-1.11.0 → invar_tools-1.12.0}/docs/proposals/completed/2025-12-21-dx-improvements.md +0 -0
  166. {invar_tools-1.11.0 → invar_tools-1.12.0}/docs/proposals/completed/2025-12-23-dx-20-property-testing-enhancements.md +0 -0
  167. {invar_tools-1.11.0 → invar_tools-1.12.0}/docs/proposals/completed/2025-12-23-dx-21-package-and-init.md +0 -0
  168. {invar_tools-1.11.0 → invar_tools-1.12.0}/docs/proposals/completed/AGENT-IMPROVEMENTS.md +0 -0
  169. {invar_tools-1.11.0 → invar_tools-1.12.0}/docs/proposals/completed/DX-11-documentation-restructure.md +0 -0
  170. {invar_tools-1.11.0 → invar_tools-1.12.0}/docs/proposals/completed/DX-12-hypothesis-fallback.md +0 -0
  171. {invar_tools-1.11.0 → invar_tools-1.12.0}/docs/proposals/completed/DX-13-incremental-prove.md +0 -0
  172. {invar_tools-1.11.0 → invar_tools-1.12.0}/docs/proposals/completed/DX-14-expanded-prove-usage.md +0 -0
  173. {invar_tools-1.11.0 → invar_tools-1.12.0}/docs/proposals/completed/DX-16-agent-tool-enforcement.md +0 -0
  174. {invar_tools-1.11.0 → invar_tools-1.12.0}/docs/proposals/completed/DX-17-workflow-enforcement.md +0 -0
  175. {invar_tools-1.11.0 → invar_tools-1.12.0}/docs/proposals/completed/DX-22-verification-strategy.md +0 -0
  176. {invar_tools-1.11.0 → invar_tools-1.12.0}/docs/proposals/completed/DX-24-mechanism-documentation.md +0 -0
  177. {invar_tools-1.11.0 → invar_tools-1.12.0}/docs/proposals/completed/DX-26-guard-simplification.md +0 -0
  178. {invar_tools-1.11.0 → invar_tools-1.12.0}/docs/proposals/completed/DX-27-system-prompt-protocol.md +0 -0
  179. {invar_tools-1.11.0 → invar_tools-1.12.0}/docs/proposals/completed/DX-28-semantic-verification.md +0 -0
  180. {invar_tools-1.11.0 → invar_tools-1.12.0}/docs/proposals/completed/DX-30-visible-workflow.md +0 -0
  181. {invar_tools-1.11.0 → invar_tools-1.12.0}/docs/proposals/completed/DX-31-adversarial-reviewer.md +0 -0
  182. {invar_tools-1.11.0 → invar_tools-1.12.0}/docs/proposals/completed/DX-32-workflow-iteration.md +0 -0
  183. {invar_tools-1.11.0 → invar_tools-1.12.0}/docs/proposals/completed/DX-33-verification-blind-spots.md +0 -0
  184. {invar_tools-1.11.0 → invar_tools-1.12.0}/docs/proposals/completed/DX-34-review-cycle.md +0 -0
  185. {invar_tools-1.11.0 → invar_tools-1.12.0}/docs/proposals/completed/DX-35-workflow-phase-separation.md +0 -0
  186. {invar_tools-1.11.0 → invar_tools-1.12.0}/docs/proposals/completed/DX-36-documentation-restructuring.md +0 -0
  187. {invar_tools-1.11.0 → invar_tools-1.12.0}/docs/proposals/completed/DX-37-coverage-integration.md +0 -0
  188. {invar_tools-1.11.0 → invar_tools-1.12.0}/docs/proposals/completed/DX-39-workflow-efficiency.md +0 -0
  189. {invar_tools-1.11.0 → invar_tools-1.12.0}/docs/proposals/completed/DX-40-smart-tool-redirect-hook.md +0 -0
  190. {invar_tools-1.11.0 → invar_tools-1.12.0}/docs/proposals/completed/DX-41-automatic-review-orchestration.md +0 -0
  191. {invar_tools-1.11.0 → invar_tools-1.12.0}/docs/proposals/completed/DX-42-workflow-auto-routing.md +0 -0
  192. {invar_tools-1.11.0 → invar_tools-1.12.0}/docs/proposals/completed/DX-43-cross-platform-distribution.md +0 -0
  193. {invar_tools-1.11.0 → invar_tools-1.12.0}/docs/proposals/completed/DX-45-template-consistency.md +0 -0
  194. {invar_tools-1.11.0 → invar_tools-1.12.0}/docs/proposals/completed/DX-46-documentation-audit.md +0 -0
  195. {invar_tools-1.11.0 → invar_tools-1.12.0}/docs/proposals/completed/DX-47-command-skill-naming.md +0 -0
  196. {invar_tools-1.11.0 → invar_tools-1.12.0}/docs/proposals/completed/DX-48-code-structure-reorganization.md +0 -0
  197. {invar_tools-1.11.0 → invar_tools-1.12.0}/docs/proposals/completed/DX-49-protocol-distribution-unification.md +0 -0
  198. {invar_tools-1.11.0 → invar_tools-1.12.0}/docs/proposals/completed/DX-50-workflow-enforcement.md +0 -0
  199. {invar_tools-1.11.0 → invar_tools-1.12.0}/docs/proposals/completed/DX-51-workflow-phase-visibility.md +0 -0
  200. {invar_tools-1.11.0 → invar_tools-1.12.0}/docs/proposals/completed/DX-52-venv-dependency-injection.md +0 -0
  201. {invar_tools-1.11.0 → invar_tools-1.12.0}/docs/proposals/completed/DX-53-review-loop-effectiveness.md +0 -0
  202. {invar_tools-1.11.0 → invar_tools-1.12.0}/docs/proposals/completed/DX-54-agent-native-context-management.md +0 -0
  203. {invar_tools-1.11.0 → invar_tools-1.12.0}/docs/proposals/completed/DX-55-claude-init-conflict-resolution.md +0 -0
  204. {invar_tools-1.11.0 → invar_tools-1.12.0}/docs/proposals/completed/DX-56-template-sync-unification.md +0 -0
  205. {invar_tools-1.11.0 → invar_tools-1.12.0}/docs/proposals/completed/DX-57-claude-code-hooks.md +0 -0
  206. {invar_tools-1.11.0 → invar_tools-1.12.0}/docs/proposals/completed/DX-58-document-structure-optimization.md +0 -0
  207. {invar_tools-1.11.0 → invar_tools-1.12.0}/docs/proposals/completed/DX-63-contracts-first-enforcement.md +0 -0
  208. {invar_tools-1.11.0 → invar_tools-1.12.0}/docs/proposals/completed/DX-64-version-display-unification.md +0 -0
  209. {invar_tools-1.11.0 → invar_tools-1.12.0}/docs/proposals/completed/DX-65-single-file-guard.md +0 -0
  210. {invar_tools-1.11.0 → invar_tools-1.12.0}/docs/proposals/completed/DX-66-escape-hatch-visibility.md +0 -0
  211. {invar_tools-1.11.0 → invar_tools-1.12.0}/docs/proposals/completed/DX-67-explicit-skill-invocation.md +0 -0
  212. {invar_tools-1.11.0 → invar_tools-1.12.0}/docs/proposals/completed/DX-69-project-uninstall.md +0 -0
  213. {invar_tools-1.11.0 → invar_tools-1.12.0}/docs/proposals/completed/DX-70-init-simplification.md +0 -0
  214. {invar_tools-1.11.0 → invar_tools-1.12.0}/docs/proposals/completed/DX-70-review-isolation.md +0 -0
  215. {invar_tools-1.11.0 → invar_tools-1.12.0}/docs/proposals/completed/DX-71-skill-command-simplification.md +0 -0
  216. {invar_tools-1.11.0 → invar_tools-1.12.0}/docs/proposals/completed/DX-72-mandatory-self-review-detection.md +0 -0
  217. {invar_tools-1.11.0 → invar_tools-1.12.0}/docs/proposals/completed/DX-74-tiered-attention-defense.md +0 -0
  218. {invar_tools-1.11.0 → invar_tools-1.12.0}/docs/proposals/completed/DX-76-structured-document-query.md +0 -0
  219. {invar_tools-1.11.0 → invar_tools-1.12.0}/docs/proposals/completed/DX-77-mcp-doc-tools-enhancements.md +0 -0
  220. {invar_tools-1.11.0 → invar_tools-1.12.0}/docs/proposals/completed/LX-02-agent-portability-analysis.md +0 -0
  221. {invar_tools-1.11.0 → invar_tools-1.12.0}/docs/proposals/completed/LX-03-multi-agent-support.md +0 -0
  222. {invar_tools-1.11.0 → invar_tools-1.12.0}/docs/proposals/completed/LX-05-language-agnostic-protocol.md +0 -0
  223. {invar_tools-1.11.0 → invar_tools-1.12.0}/docs/proposals/completed/LX-06-appendix-guard-comparison.md +0 -0
  224. {invar_tools-1.11.0 → invar_tools-1.12.0}/docs/proposals/completed/LX-06-typescript-tooling.md +0 -0
  225. {invar_tools-1.11.0 → invar_tools-1.12.0}/docs/proposals/completed/LX-09-legacy-onboarding.md +0 -0
  226. {invar_tools-1.11.0 → invar_tools-1.12.0}/docs/proposals/completed/LX-10-typescript-size-limits.md +0 -0
  227. {invar_tools-1.11.0 → invar_tools-1.12.0}/docs/reference/agent-information-hierarchy.md +0 -0
  228. {invar_tools-1.11.0 → invar_tools-1.12.0}/docs/reference/architecture/index.md +0 -0
  229. {invar_tools-1.11.0 → invar_tools-1.12.0}/docs/reference/contracts/advanced.md +0 -0
  230. {invar_tools-1.11.0 → invar_tools-1.12.0}/docs/reference/contracts/completeness.md +0 -0
  231. {invar_tools-1.11.0 → invar_tools-1.12.0}/docs/reference/contracts/doctests.md +0 -0
  232. {invar_tools-1.11.0 → invar_tools-1.12.0}/docs/reference/contracts/index.md +0 -0
  233. {invar_tools-1.11.0 → invar_tools-1.12.0}/docs/reference/contracts/pre-post.md +0 -0
  234. {invar_tools-1.11.0 → invar_tools-1.12.0}/docs/reference/documentation.md +0 -0
  235. {invar_tools-1.11.0 → invar_tools-1.12.0}/docs/reference/index.md +0 -0
  236. {invar_tools-1.11.0 → invar_tools-1.12.0}/docs/reference/proposal-workflow.md +0 -0
  237. {invar_tools-1.11.0 → invar_tools-1.12.0}/docs/reference/rules/index.md +0 -0
  238. {invar_tools-1.11.0 → invar_tools-1.12.0}/docs/reference/rules/severity.md +0 -0
  239. {invar_tools-1.11.0 → invar_tools-1.12.0}/docs/reference/verification/crosshair-vs-hypothesis.md +0 -0
  240. {invar_tools-1.11.0 → invar_tools-1.12.0}/docs/reference/verification/index.md +0 -0
  241. {invar_tools-1.11.0 → invar_tools-1.12.0}/docs/reference/verification/smart-routing.md +0 -0
  242. {invar_tools-1.11.0 → invar_tools-1.12.0}/docs/reference/workflow/index.md +0 -0
  243. {invar_tools-1.11.0 → invar_tools-1.12.0}/docs/reference/workflow/session-start.md +0 -0
  244. {invar_tools-1.11.0 → invar_tools-1.12.0}/docs/reference/workflow/usbv.md +0 -0
  245. {invar_tools-1.11.0 → invar_tools-1.12.0}/docs/terminal-gif-guide.md +0 -0
  246. {invar_tools-1.11.0 → invar_tools-1.12.0}/docs/test-reports/DX-55-test-report.md +0 -0
  247. {invar_tools-1.11.0 → invar_tools-1.12.0}/docs/test-reports/DX-56-test-report.md +0 -0
  248. {invar_tools-1.11.0 → invar_tools-1.12.0}/docs/test-reports/DX-58-test-scenario.md +0 -0
  249. {invar_tools-1.11.0 → invar_tools-1.12.0}/docs/testing/v1.5.0-stress-test.md +0 -0
  250. {invar_tools-1.11.0 → invar_tools-1.12.0}/docs/testing/v1.5.0-test-report.md +0 -0
  251. {invar_tools-1.11.0 → invar_tools-1.12.0}/docs/testing/v1.5.0-workflow-compliance.md +0 -0
  252. {invar_tools-1.11.0 → invar_tools-1.12.0}/docs/vision.md +0 -0
  253. {invar_tools-1.11.0 → invar_tools-1.12.0}/runtime/LICENSE +0 -0
  254. {invar_tools-1.11.0 → invar_tools-1.12.0}/runtime/README.md +0 -0
  255. {invar_tools-1.11.0 → invar_tools-1.12.0}/runtime/pyproject.toml +0 -0
  256. {invar_tools-1.11.0 → invar_tools-1.12.0}/runtime/src/invar_runtime/__init__.py +0 -0
  257. {invar_tools-1.11.0 → invar_tools-1.12.0}/runtime/src/invar_runtime/contracts.py +0 -0
  258. {invar_tools-1.11.0 → invar_tools-1.12.0}/runtime/src/invar_runtime/decorators.py +0 -0
  259. {invar_tools-1.11.0 → invar_tools-1.12.0}/runtime/src/invar_runtime/invariant.py +0 -0
  260. {invar_tools-1.11.0 → invar_tools-1.12.0}/runtime/src/invar_runtime/relations.py +0 -0
  261. {invar_tools-1.11.0 → invar_tools-1.12.0}/runtime/src/invar_runtime/resource.py +0 -0
  262. {invar_tools-1.11.0 → invar_tools-1.12.0}/scripts/embed_node_tools.py +0 -0
  263. {invar_tools-1.11.0 → invar_tools-1.12.0}/scripts/smart-guard.sh +0 -0
  264. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/core/__init__.py +0 -0
  265. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/__init__.py +0 -0
  266. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/core/__init__.py +0 -0
  267. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/core/contracts.py +0 -0
  268. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/core/doc_edit.py +0 -0
  269. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/core/doc_parser.py +0 -0
  270. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/core/entry_points.py +0 -0
  271. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/core/extraction.py +0 -0
  272. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/core/format_specs.py +0 -0
  273. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/core/format_strategies.py +0 -0
  274. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/core/formatter.py +0 -0
  275. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/core/hypothesis_strategies.py +0 -0
  276. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/core/inspect.py +0 -0
  277. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/core/lambda_helpers.py +0 -0
  278. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/core/language.py +0 -0
  279. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/core/models.py +0 -0
  280. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/core/must_use.py +0 -0
  281. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/core/parser.py +0 -0
  282. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/core/patterns/__init__.py +0 -0
  283. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/core/patterns/detector.py +0 -0
  284. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/core/patterns/p0_exhaustive.py +0 -0
  285. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/core/patterns/p0_literal.py +0 -0
  286. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/core/patterns/p0_newtype.py +0 -0
  287. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/core/patterns/p0_nonempty.py +0 -0
  288. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/core/patterns/p0_validation.py +0 -0
  289. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/core/patterns/registry.py +0 -0
  290. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/core/patterns/types.py +0 -0
  291. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/core/postcondition_scope.py +0 -0
  292. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/core/property_gen.py +0 -0
  293. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/core/purity.py +0 -0
  294. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/core/purity_heuristics.py +0 -0
  295. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/core/references.py +0 -0
  296. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/core/review_trigger.py +0 -0
  297. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/core/rule_meta.py +0 -0
  298. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/core/rules.py +0 -0
  299. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/core/shell_analysis.py +0 -0
  300. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/core/shell_architecture.py +0 -0
  301. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/core/strategies.py +0 -0
  302. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/core/suggestions.py +0 -0
  303. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/core/sync_helpers.py +0 -0
  304. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/core/tautology.py +0 -0
  305. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/core/template_helpers.py +0 -0
  306. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/core/template_parser.py +0 -0
  307. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/core/timeout_inference.py +0 -0
  308. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/core/trivial_detection.py +0 -0
  309. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/core/ts_parsers.py +0 -0
  310. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/core/ts_sig_parser.py +0 -0
  311. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/core/utils.py +0 -0
  312. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/core/verification_routing.py +0 -0
  313. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/mcp/__init__.py +0 -0
  314. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/mcp/__main__.py +0 -0
  315. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/node_tools/MANIFEST +0 -0
  316. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/node_tools/__init__.py +0 -0
  317. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/node_tools/fc-runner/cli.js +0 -0
  318. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/node_tools/quick-check/cli.js +0 -0
  319. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/node_tools/ts-analyzer/cli.js +0 -0
  320. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/py.typed +0 -0
  321. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/shell/__init__.py +0 -0
  322. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/shell/claude_hooks.py +0 -0
  323. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/shell/commands/__init__.py +0 -0
  324. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/shell/commands/doc.py +0 -0
  325. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/shell/commands/hooks.py +0 -0
  326. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/shell/commands/init.py +0 -0
  327. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/shell/commands/merge.py +0 -0
  328. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/shell/commands/mutate.py +0 -0
  329. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/shell/commands/skill.py +0 -0
  330. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/shell/commands/sync_self.py +0 -0
  331. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/shell/commands/template_sync.py +0 -0
  332. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/shell/commands/test.py +0 -0
  333. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/shell/commands/uninstall.py +0 -0
  334. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/shell/commands/update.py +0 -0
  335. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/shell/config.py +0 -0
  336. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/shell/contract_coverage.py +0 -0
  337. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/shell/coverage.py +0 -0
  338. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/shell/doc_tools.py +0 -0
  339. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/shell/fs.py +0 -0
  340. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/shell/git.py +0 -0
  341. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/shell/guard_helpers.py +0 -0
  342. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/shell/guard_output.py +0 -0
  343. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/shell/mcp_config.py +0 -0
  344. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/shell/mutation.py +0 -0
  345. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/shell/pattern_integration.py +0 -0
  346. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/shell/pi_hooks.py +0 -0
  347. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/shell/property_tests.py +0 -0
  348. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/shell/prove/__init__.py +0 -0
  349. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/shell/prove/accept.py +0 -0
  350. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/shell/prove/cache.py +0 -0
  351. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/shell/prove/crosshair.py +0 -0
  352. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/shell/prove/guard_ts.py +0 -0
  353. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/shell/prove/hypothesis.py +0 -0
  354. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/shell/skill_manager.py +0 -0
  355. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/shell/subprocess_env.py +0 -0
  356. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/shell/template_engine.py +0 -0
  357. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/shell/templates.py +0 -0
  358. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/shell/testing.py +0 -0
  359. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/templates/CLAUDE.md.template +0 -0
  360. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/templates/__init__.py +0 -0
  361. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/templates/claude-md/python/critical-rules.md +0 -0
  362. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/templates/claude-md/python/quick-reference.md +0 -0
  363. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/templates/claude-md/typescript/critical-rules.md +0 -0
  364. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/templates/claude-md/typescript/quick-reference.md +0 -0
  365. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/templates/claude-md/universal/check-in.md +0 -0
  366. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/templates/claude-md/universal/skills.md +0 -0
  367. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/templates/claude-md/universal/workflow.md +0 -0
  368. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/templates/commands/audit.md.jinja +0 -0
  369. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/templates/commands/guard.md +0 -0
  370. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/templates/config/AGENT.md.jinja +0 -0
  371. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/templates/config/CLAUDE.md.jinja +0 -0
  372. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/templates/config/context.md.jinja +0 -0
  373. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/templates/config/pre-commit.yaml.jinja +0 -0
  374. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/templates/context.md.template +0 -0
  375. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/templates/examples/python/README.md +0 -0
  376. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/templates/examples/python/conftest.py +0 -0
  377. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/templates/examples/python/contracts.py +0 -0
  378. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/templates/examples/python/core_shell.py +0 -0
  379. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/templates/examples/python/functional.py +0 -0
  380. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/templates/examples/python/workflow.md +0 -0
  381. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/templates/examples/typescript/README.md +0 -0
  382. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/templates/examples/typescript/contracts.ts +0 -0
  383. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/templates/examples/typescript/core_shell.ts +0 -0
  384. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/templates/examples/typescript/functional.ts +0 -0
  385. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/templates/examples/typescript/workflow.md +0 -0
  386. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/templates/hooks/PostToolUse.sh.jinja +0 -0
  387. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/templates/hooks/PreToolUse.sh.jinja +0 -0
  388. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/templates/hooks/Stop.sh.jinja +0 -0
  389. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/templates/hooks/UserPromptSubmit.sh.jinja +0 -0
  390. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/templates/hooks/__init__.py +0 -0
  391. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/templates/hooks/pi/invar.ts.jinja +0 -0
  392. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/templates/manifest.toml +0 -0
  393. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/templates/onboard/assessment.md.jinja +0 -0
  394. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/templates/onboard/patterns/python.md +0 -0
  395. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/templates/onboard/patterns/typescript.md +0 -0
  396. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/templates/onboard/roadmap.md.jinja +0 -0
  397. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/templates/proposal.md.template +0 -0
  398. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/templates/protocol/INVAR.md.jinja +0 -0
  399. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/templates/protocol/python/architecture-examples.md +0 -0
  400. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/templates/protocol/python/contracts-syntax.md +0 -0
  401. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/templates/protocol/python/markers.md +0 -0
  402. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/templates/protocol/python/tools.md +0 -0
  403. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/templates/protocol/python/troubleshooting.md +0 -0
  404. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/templates/protocol/typescript/architecture-examples.md +0 -0
  405. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/templates/protocol/typescript/contracts-syntax.md +0 -0
  406. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/templates/protocol/typescript/markers.md +0 -0
  407. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/templates/protocol/typescript/tools.md +0 -0
  408. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/templates/protocol/typescript/troubleshooting.md +0 -0
  409. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/templates/protocol/universal/architecture.md +0 -0
  410. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/templates/protocol/universal/completion.md +0 -0
  411. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/templates/protocol/universal/contracts-concept.md +0 -0
  412. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/templates/protocol/universal/header.md +0 -0
  413. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/templates/protocol/universal/session.md +0 -0
  414. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/templates/protocol/universal/six-laws.md +0 -0
  415. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/templates/protocol/universal/usbv.md +0 -0
  416. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/templates/protocol/universal/visible-workflow.md +0 -0
  417. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/templates/skills/develop/SKILL.md.jinja +0 -0
  418. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/templates/skills/extensions/_registry.yaml +0 -0
  419. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/templates/skills/extensions/acceptance/SKILL.md +0 -0
  420. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/templates/skills/extensions/invar-onboard/SKILL.md +0 -0
  421. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/templates/skills/extensions/invar-onboard/patterns/python.md +0 -0
  422. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/templates/skills/extensions/invar-onboard/patterns/typescript.md +0 -0
  423. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/templates/skills/extensions/invar-onboard/templates/assessment.md.jinja +0 -0
  424. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/templates/skills/extensions/invar-onboard/templates/roadmap.md.jinja +0 -0
  425. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/templates/skills/extensions/security/SKILL.md +0 -0
  426. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/templates/skills/extensions/security/patterns/_common.yaml +0 -0
  427. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/templates/skills/extensions/security/patterns/python.yaml +0 -0
  428. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/templates/skills/extensions/security/patterns/typescript.yaml +0 -0
  429. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/templates/skills/investigate/SKILL.md.jinja +0 -0
  430. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/templates/skills/propose/SKILL.md.jinja +0 -0
  431. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/invar/templates/skills/review/SKILL.md.jinja +0 -0
  432. {invar_tools-1.11.0 → invar_tools-1.12.0}/src/shell/__init__.py +0 -0
  433. {invar_tools-1.11.0 → invar_tools-1.12.0}/tests/__init__.py +0 -0
  434. {invar_tools-1.11.0 → invar_tools-1.12.0}/tests/experiments/conftest.py +0 -0
  435. {invar_tools-1.11.0 → invar_tools-1.12.0}/tests/experiments/dx74_attention_drift/README.md +0 -0
  436. {invar_tools-1.11.0 → invar_tools-1.12.0}/tests/experiments/dx74_attention_drift/RESULTS.md +0 -0
  437. {invar_tools-1.11.0 → invar_tools-1.12.0}/tests/experiments/dx74_attention_drift/RESULTS_V2.md +0 -0
  438. {invar_tools-1.11.0 → invar_tools-1.12.0}/tests/experiments/dx74_attention_drift/RESULTS_V4.md +0 -0
  439. {invar_tools-1.11.0 → invar_tools-1.12.0}/tests/experiments/dx74_attention_drift/ground_truth.yaml +0 -0
  440. {invar_tools-1.11.0 → invar_tools-1.12.0}/tests/experiments/dx74_attention_drift/prompts.yaml +0 -0
  441. {invar_tools-1.11.0 → invar_tools-1.12.0}/tests/experiments/dx74_attention_drift/scenario/config_manager.py +0 -0
  442. {invar_tools-1.11.0 → invar_tools-1.12.0}/tests/experiments/dx74_attention_drift/scenario/utils.py +0 -0
  443. {invar_tools-1.11.0 → invar_tools-1.12.0}/tests/experiments/dx74_attention_drift/scenario_v2/ground_truth.yaml +0 -0
  444. {invar_tools-1.11.0 → invar_tools-1.12.0}/tests/experiments/dx74_attention_drift/scenario_v2/order_processor.py +0 -0
  445. {invar_tools-1.11.0 → invar_tools-1.12.0}/tests/experiments/dx74_attention_drift/scenario_v3/README.md +0 -0
  446. {invar_tools-1.11.0 → invar_tools-1.12.0}/tests/experiments/dx74_attention_drift/scenario_v3/ground_truth.yaml +0 -0
  447. {invar_tools-1.11.0 → invar_tools-1.12.0}/tests/experiments/dx74_attention_drift/scenario_v4/.serena/.gitignore +0 -0
  448. {invar_tools-1.11.0 → invar_tools-1.12.0}/tests/experiments/dx74_attention_drift/scenario_v4/.serena/project.yml +0 -0
  449. {invar_tools-1.11.0 → invar_tools-1.12.0}/tests/experiments/dx74_attention_drift/scenario_v4/README.md +0 -0
  450. {invar_tools-1.11.0 → invar_tools-1.12.0}/tests/experiments/dx74_attention_drift/scenario_v4/ground_truth.yaml +0 -0
  451. {invar_tools-1.11.0 → invar_tools-1.12.0}/tests/experiments/dx74_attention_drift/scenario_v5/ground_truth.yaml +0 -0
  452. {invar_tools-1.11.0 → invar_tools-1.12.0}/tests/experiments/dx74_attention_drift/scenario_v6/ground_truth.yaml +0 -0
  453. {invar_tools-1.11.0 → invar_tools-1.12.0}/tests/experiments/dx74_attention_drift/scenario_v7/ground_truth.yaml +0 -0
  454. {invar_tools-1.11.0 → invar_tools-1.12.0}/tests/integration/__init__.py +0 -0
  455. {invar_tools-1.11.0 → invar_tools-1.12.0}/typescript/.gitignore +0 -0
  456. {invar_tools-1.11.0 → invar_tools-1.12.0}/typescript/README.md +0 -0
  457. {invar_tools-1.11.0 → invar_tools-1.12.0}/typescript/package.json +0 -0
  458. {invar_tools-1.11.0 → invar_tools-1.12.0}/typescript/packages/eslint-plugin/package.json +0 -0
  459. {invar_tools-1.11.0 → invar_tools-1.12.0}/typescript/packages/eslint-plugin/src/index.ts +0 -0
  460. {invar_tools-1.11.0 → invar_tools-1.12.0}/typescript/packages/eslint-plugin/src/rules/no-any-in-schema.ts +0 -0
  461. {invar_tools-1.11.0 → invar_tools-1.12.0}/typescript/packages/eslint-plugin/src/rules/no-io-in-core.ts +0 -0
  462. {invar_tools-1.11.0 → invar_tools-1.12.0}/typescript/packages/eslint-plugin/src/rules/require-jsdoc-example.ts +0 -0
  463. {invar_tools-1.11.0 → invar_tools-1.12.0}/typescript/packages/eslint-plugin/src/rules/require-schema-validation.ts +0 -0
  464. {invar_tools-1.11.0 → invar_tools-1.12.0}/typescript/packages/eslint-plugin/src/rules/shell-result-type.ts +0 -0
  465. {invar_tools-1.11.0 → invar_tools-1.12.0}/typescript/packages/eslint-plugin/tsconfig.json +0 -0
  466. {invar_tools-1.11.0 → invar_tools-1.12.0}/typescript/packages/fc-runner/package.json +0 -0
  467. {invar_tools-1.11.0 → invar_tools-1.12.0}/typescript/packages/fc-runner/src/cli.ts +0 -0
  468. {invar_tools-1.11.0 → invar_tools-1.12.0}/typescript/packages/fc-runner/src/index.ts +0 -0
  469. {invar_tools-1.11.0 → invar_tools-1.12.0}/typescript/packages/fc-runner/tsconfig.json +0 -0
  470. {invar_tools-1.11.0 → invar_tools-1.12.0}/typescript/packages/quick-check/package.json +0 -0
  471. {invar_tools-1.11.0 → invar_tools-1.12.0}/typescript/packages/quick-check/src/cli.ts +0 -0
  472. {invar_tools-1.11.0 → invar_tools-1.12.0}/typescript/packages/quick-check/src/index.ts +0 -0
  473. {invar_tools-1.11.0 → invar_tools-1.12.0}/typescript/packages/quick-check/tsconfig.json +0 -0
  474. {invar_tools-1.11.0 → invar_tools-1.12.0}/typescript/packages/ts-analyzer/package.json +0 -0
  475. {invar_tools-1.11.0 → invar_tools-1.12.0}/typescript/packages/ts-analyzer/src/cli.ts +0 -0
  476. {invar_tools-1.11.0 → invar_tools-1.12.0}/typescript/packages/ts-analyzer/src/index.ts +0 -0
  477. {invar_tools-1.11.0 → invar_tools-1.12.0}/typescript/packages/ts-analyzer/tsconfig.json +0 -0
  478. {invar_tools-1.11.0 → invar_tools-1.12.0}/typescript/pnpm-workspace.yaml +0 -0
  479. {invar_tools-1.11.0 → invar_tools-1.12.0}/typescript/scripts/bundle.mjs +0 -0
  480. {invar_tools-1.11.0 → invar_tools-1.12.0}/typescript/tsconfig.base.json +0 -0
  481. {invar_tools-1.11.0 → invar_tools-1.12.0}/typescript/vitest.config.ts +0 -0
  482. {invar_tools-1.11.0 → invar_tools-1.12.0}/uv.lock +0 -0
@@ -420,8 +420,7 @@ Agent:
420
420
 
421
421
  ✓ Final: guard PASS | 0 errors, 1 warning
422
422
  ```
423
- <!--/invar:skill-->
424
- <!--invar:extensions-->
423
+ <!--/invar:skill--><!--invar:extensions-->
425
424
  <!-- ========================================================================
426
425
  EXTENSIONS REGION - USER EDITABLE
427
426
  Add project-specific extensions here. This section is preserved on update.
@@ -67,61 +67,6 @@ Before any workflow action:
67
67
  | Find entry points | `invar_map(top=10)` |
68
68
  | Search code patterns | Grep with regex |
69
69
  | Explore codebase | Task(Explore) agent |
70
- | View document structure | `invar doc toc <file>` |
71
- | Read document section | `invar doc read <file> <section>` |
72
- | Search document sections | `invar doc find <pattern> <file>` |
73
-
74
- ## Long Document Handling (>500 lines)
75
-
76
- When understanding long documents (PRD, Spec, Design docs):
77
-
78
- ### 1. Structure First
79
-
80
- ```bash
81
- invar doc toc spec.md --format text
82
- ```
83
-
84
- See the table of contents before reading content. Understand the document's organization.
85
-
86
- ### 2. Read On-Demand
87
-
88
- ```bash
89
- invar doc read spec.md "requirements/auth"
90
- ```
91
-
92
- Only read sections relevant to your task. Avoid full-document reads.
93
-
94
- ### 3. Track with TodoWrite
95
-
96
- Create a todo item for each section you need to read:
97
-
98
- ```
99
- □ Read: Introduction (context)
100
- □ Read: Requirements/Auth (main task)
101
- □ Read: API Design (reference)
102
- □ Read: Security (constraints)
103
- ```
104
-
105
- Mark each as completed after reading.
106
-
107
- ### 4. Maintain Running Summary
108
-
109
- After reading each section, update a mental summary:
110
-
111
- ```
112
- Key Points:
113
- - Auth: JWT + refresh token (spec:48)
114
- - Rate limit: 100 req/min (spec:120)
115
- - Must support OAuth2 (spec:85)
116
- ```
117
-
118
- Include line references for traceability.
119
-
120
- ### 5. Verify Coverage
121
-
122
- Before concluding, check the TOC against your todos:
123
- - Did you read all relevant sections?
124
- - Any section titles suggest missed requirements?
125
70
 
126
71
  ## Exit Format
127
72
 
@@ -51,10 +51,10 @@
51
51
 
52
52
  ## Current State
53
53
 
54
- - **PyPI:** `invar-tools` v1.10.0 + `invar-runtime` v1.3.0
54
+ - **PyPI:** `invar-tools` v1.12.0 + `invar-runtime` v1.3.0
55
55
  - **Protocol:** v5.0 (USBV workflow, DX-58 critical section)
56
- - **Status:** Feature complete, TypeScript support added
57
- - **Recent:** LX-05 (language-agnostic), LX-06 (TypeScript tooling), LX-07 (Extension Skills)
56
+ - **Status:** Feature complete, TypeScript support added (DX-78)
57
+ - **Recent:** DX-78 (TypeScript Compiler API integration), LX-05 (language-agnostic), LX-06 (TypeScript tooling), LX-07 (Extension Skills)
58
58
  - **Blockers:** None
59
59
 
60
60
  ## Active Work
@@ -117,6 +117,55 @@ Smart Guard (`invar guard`) runs multiple verification layers:
117
117
 
118
118
  ---
119
119
 
120
+ ## TypeScript Integration (DX-78)
121
+
122
+ **Status:** Complete and reviewed (2026-01-03)
123
+
124
+ ### Architecture
125
+
126
+ - **Python wrapper:** `src/invar/shell/ts_compiler.py` (uses subprocess to call Node.js)
127
+ - **TypeScript tool:** `src/invar/node_tools/ts-query.js` (TypeScript Compiler API)
128
+ - **Python refs:** `src/invar/shell/py_refs.py` (jedi library)
129
+ - **CLI integration:** `perception.py`, `guard.py` (multi-language routing)
130
+ - **MCP integration:** `handlers.py`, `server.py` (invar_refs tool)
131
+
132
+ ### Supported Commands
133
+
134
+ | Command | Python | TypeScript |
135
+ |---------|--------|------------|
136
+ | `invar sig <file>` | ✅ | ✅ |
137
+ | `invar map <path>` | ✅ | ✅ |
138
+ | `invar refs <file>::<symbol>` | ✅ (jedi) | ✅ (TS Compiler API) |
139
+
140
+ ### Security Model
141
+
142
+ - **Single-shot subprocess:** Process starts, runs query, outputs JSON, exits
143
+ - **No orphan risk:** No persistent Node.js processes
144
+ - **Path validation:** All file paths validated before subprocess execution
145
+ - **JSON parsing:** Input validation with error handling
146
+
147
+ ### Dependencies
148
+
149
+ - **Runtime:** Node.js + TypeScript package (peer dependency)
150
+ - **Python:** jedi library (required for Python refs)
151
+ - **Detection:** Automatic via tsconfig.json presence
152
+
153
+ ### Known Limitations
154
+
155
+ - Requires tsconfig.json in project root
156
+ - TypeScript project must be compilable
157
+ - No support for decorator metadata yet
158
+
159
+ ### Review History
160
+
161
+ - **2026-01-03:** Adversarial review completed
162
+ - Fixed 4 critical TypeScript bugs (JSON parsing, null checks, I/O error handling, TOCTOU)
163
+ - Fixed 5 major Python bugs (column hardcoding, missing markers, weak tests, dynamic types)
164
+ - 32 integration tests passing
165
+ - Guard: 0 errors, 0 warnings
166
+
167
+ ---
168
+
120
169
  ## Release Process
121
170
 
122
171
  **Do NOT use `twine upload` manually.** GitHub Actions handles PyPI publishing.
@@ -136,6 +185,7 @@ gh release create vX.Y.Z --title "vX.Y.Z - Title" --notes "..."
136
185
 
137
186
  | Version | Date | Highlights |
138
187
  |---------|------|------------|
188
+ | 1.12.0 | 2026-01 | TypeScript Compiler API integration (DX-78), multi-language refs |
139
189
  | 1.9.0 | 2026-01 | Extension Skills (LX-07), TypeScript support (LX-05/06) |
140
190
  | 1.8.0 | 2025-12 | Claude hooks improvements, interactive init (DX-70) |
141
191
  | 1.5.0 | 2025-12 | Language-agnostic protocol templates |
@@ -83,18 +83,7 @@ src/{project}/
83
83
 
84
84
  > Full decision tree: [INVAR.md#core-shell](./INVAR.md#decision-tree-core-vs-shell)
85
85
 
86
- ### Document Tools (DX-76)
87
86
 
88
- | I want to... | Use |
89
- |--------------|-----|
90
- | View document structure | `invar doc toc <file> [--format text]` |
91
- | Read specific section | `invar doc read <file> <section>` |
92
- | Search sections by title | `invar doc find <pattern> <files...>` |
93
- | Replace section content | `invar doc replace <file> <section>` |
94
- | Insert new section | `invar doc insert <file> <anchor>` |
95
- | Delete section | `invar doc delete <file> <section>` |
96
-
97
- **Section addressing:** slug path (`requirements/auth`), fuzzy (`auth`), index (`#0/#1`), line (`@48`)
98
87
 
99
88
  ## Documentation Structure
100
89
 
@@ -299,6 +288,37 @@ When continuing from a previous session summary:
299
288
  3. **Display phase header** before resuming work
300
289
  4. **Re-read context.md** for project state
301
290
 
291
+ ## TypeScript Code Review
292
+
293
+ **CRITICAL:** TypeScript files in `src/invar/node_tools/` are PART of this project and MUST be reviewed.
294
+
295
+ When reviewing TypeScript code (*.js, *.ts files):
296
+
297
+ ### TypeScript-Specific Checklist
298
+
299
+ - [ ] **Error Handling:** All `JSON.parse()` calls wrapped in try/catch
300
+ - [ ] **Null Safety:** Optional property access uses `?.` or explicit null checks
301
+ - [ ] **I/O Safety:** All `fs.readFileSync()` wrapped in try/catch
302
+ - [ ] **Race Conditions:** No TOCTOU (check-then-use) patterns with file operations
303
+ - [ ] **Type Guards:** Runtime type checks for external inputs
304
+ - [ ] **Resource Cleanup:** No resource leaks in language services
305
+
306
+ ### Common TypeScript Vulnerabilities
307
+
308
+ | Pattern | Risk | Fix |
309
+ |---------|------|-----|
310
+ | `JSON.parse(input)` | Crashes on invalid JSON | `try { JSON.parse() } catch { error }` |
311
+ | `obj.prop.method()` | TypeError if prop is null | `obj.prop?.method()` or null check |
312
+ | `if (exists(f)) read(f)` | TOCTOU race condition | `try { read(f) } catch { handle }` |
313
+ | `fs.readFileSync()` in loop | One error kills all | Wrap each call in try/catch |
314
+
315
+ ### Integration Points
316
+
317
+ TypeScript files interact with Python via:
318
+ - **Subprocess:** Node.js process spawned by Python wrapper
319
+ - **JSON protocol:** Structured input/output via stdin/stdout
320
+ - **Path safety:** All file paths validated in Python layer before subprocess
321
+
302
322
  <!--/invar:user-->
303
323
 
304
324
  ---
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: invar-tools
3
- Version: 1.11.0
3
+ Version: 1.12.0
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
@@ -24,6 +24,7 @@ Requires-Python: >=3.11
24
24
  Requires-Dist: crosshair-tool>=0.0.60
25
25
  Requires-Dist: hypothesis>=6.0
26
26
  Requires-Dist: invar-runtime>=1.0
27
+ Requires-Dist: jedi>=0.19
27
28
  Requires-Dist: jinja2>=3.0
28
29
  Requires-Dist: markdown-it-py>=3.0
29
30
  Requires-Dist: mcp>=1.0
@@ -146,7 +147,19 @@ Guard passed.
146
147
 
147
148
  ## 🚀 Quick Start
148
149
 
149
- > **Language Support:** Python (full), TypeScript (verification via Zod contracts).
150
+ ### Tool × Language Support
151
+
152
+ | Tool | Python | TypeScript | Notes |
153
+ |------|--------|------------|-------|
154
+ | `invar guard` | ✅ Full | ⚠️ Partial | TS: tsc + eslint + vitest |
155
+ | `invar sig` | ✅ Full | ✅ Full | TS: TS Compiler API |
156
+ | `invar map` | ✅ Full | ✅ Full | TS: With reference counts |
157
+ | `invar refs` | ✅ Full | ✅ Full | Cross-file reference finding |
158
+ | `invar doc *` | ✅ Full | ✅ Full | Language-agnostic |
159
+
160
+ **TypeScript Notes:**
161
+ - Requires Node.js + TypeScript (most TS projects have these)
162
+ - Falls back to regex parser if Node.js unavailable
150
163
 
151
164
  ### 📦 Two Packages, Different Purposes
152
165
 
@@ -303,14 +316,17 @@ function average(items: number[]): number {
303
316
 
304
317
  ### ✅ Solution 2: Multi-Layer Verification
305
318
 
306
- Guard provides fast feedback. Agent sees errors, fixes immediately:
319
+ Guard provides fast feedback **on top of standard type checking**. Agent sees errors, fixes immediately:
307
320
 
308
321
  | Layer | Tool | Speed | What It Catches |
309
322
  |-------|------|-------|-----------------|
323
+ | **Type Check*** | mypy (Python) / tsc (TypeScript) | ~1s | Type errors, missing annotations |
310
324
  | **Static** | Guard rules | ~0.5s | Architecture violations, missing contracts |
311
- | **Doctest** | pytest | ~2s | Example correctness |
312
- | **Property** | Hypothesis | ~10s | Edge cases via random inputs |
313
- | **Symbolic** | CrossHair | ~30s | Mathematical proof of contracts |
325
+ | **Doctest** | pytest / vitest | ~2s | Example correctness |
326
+ | **Property** | Hypothesis / fast-check | ~10s | Edge cases via random inputs |
327
+ | **Symbolic** | CrossHair / (TS: N/A) | ~30s | Mathematical proof of contracts |
328
+
329
+ <sup>* Requires separate installation: `pip install mypy` or configure TypeScript in your project</sup>
314
330
 
315
331
  ```
316
332
  ┌──────────┐ ┌───────────┐ ┌───────────┐ ┌────────────┐
@@ -525,7 +541,7 @@ Cursor users get full verification via MCP:
525
541
  |----------------|---------|----------|
526
542
  | `INVAR.md` | Protocol for AI agents | Required |
527
543
  | `.invar/` | Config, context, examples | Required |
528
- | `.pre-commit-config.yaml` | Verification before commit | Optional |
544
+ | `.pre-commit-config.yaml` | Verification before commit (Ruff, mypy*, Guard) | Optional |
529
545
  | `src/core/`, `src/shell/` | Recommended structure | Optional |
530
546
  | `CLAUDE.md` | Agent instructions | Claude Code |
531
547
  | `.claude/skills/` | Workflow + extension skills | Claude Code |
@@ -534,6 +550,8 @@ Cursor users get full verification via MCP:
534
550
  | `.mcp.json` | MCP server config | Claude Code |
535
551
  | `AGENT.md` | Universal agent instructions | Other agents |
536
552
 
553
+ <sup>* mypy hook included in `.pre-commit-config.yaml` but requires: `pip install mypy`</sup>
554
+
537
555
  **Note:** If `pyproject.toml` exists, Guard configuration goes there as `[tool.invar.guard]` instead of `.invar/config.toml`.
538
556
 
539
557
  **Recommended structure:**
@@ -103,7 +103,19 @@ Guard passed.
103
103
 
104
104
  ## 🚀 Quick Start
105
105
 
106
- > **Language Support:** Python (full), TypeScript (verification via Zod contracts).
106
+ ### Tool × Language Support
107
+
108
+ | Tool | Python | TypeScript | Notes |
109
+ |------|--------|------------|-------|
110
+ | `invar guard` | ✅ Full | ⚠️ Partial | TS: tsc + eslint + vitest |
111
+ | `invar sig` | ✅ Full | ✅ Full | TS: TS Compiler API |
112
+ | `invar map` | ✅ Full | ✅ Full | TS: With reference counts |
113
+ | `invar refs` | ✅ Full | ✅ Full | Cross-file reference finding |
114
+ | `invar doc *` | ✅ Full | ✅ Full | Language-agnostic |
115
+
116
+ **TypeScript Notes:**
117
+ - Requires Node.js + TypeScript (most TS projects have these)
118
+ - Falls back to regex parser if Node.js unavailable
107
119
 
108
120
  ### 📦 Two Packages, Different Purposes
109
121
 
@@ -260,14 +272,17 @@ function average(items: number[]): number {
260
272
 
261
273
  ### ✅ Solution 2: Multi-Layer Verification
262
274
 
263
- Guard provides fast feedback. Agent sees errors, fixes immediately:
275
+ Guard provides fast feedback **on top of standard type checking**. Agent sees errors, fixes immediately:
264
276
 
265
277
  | Layer | Tool | Speed | What It Catches |
266
278
  |-------|------|-------|-----------------|
279
+ | **Type Check*** | mypy (Python) / tsc (TypeScript) | ~1s | Type errors, missing annotations |
267
280
  | **Static** | Guard rules | ~0.5s | Architecture violations, missing contracts |
268
- | **Doctest** | pytest | ~2s | Example correctness |
269
- | **Property** | Hypothesis | ~10s | Edge cases via random inputs |
270
- | **Symbolic** | CrossHair | ~30s | Mathematical proof of contracts |
281
+ | **Doctest** | pytest / vitest | ~2s | Example correctness |
282
+ | **Property** | Hypothesis / fast-check | ~10s | Edge cases via random inputs |
283
+ | **Symbolic** | CrossHair / (TS: N/A) | ~30s | Mathematical proof of contracts |
284
+
285
+ <sup>* Requires separate installation: `pip install mypy` or configure TypeScript in your project</sup>
271
286
 
272
287
  ```
273
288
  ┌──────────┐ ┌───────────┐ ┌───────────┐ ┌────────────┐
@@ -482,7 +497,7 @@ Cursor users get full verification via MCP:
482
497
  |----------------|---------|----------|
483
498
  | `INVAR.md` | Protocol for AI agents | Required |
484
499
  | `.invar/` | Config, context, examples | Required |
485
- | `.pre-commit-config.yaml` | Verification before commit | Optional |
500
+ | `.pre-commit-config.yaml` | Verification before commit (Ruff, mypy*, Guard) | Optional |
486
501
  | `src/core/`, `src/shell/` | Recommended structure | Optional |
487
502
  | `CLAUDE.md` | Agent instructions | Claude Code |
488
503
  | `.claude/skills/` | Workflow + extension skills | Claude Code |
@@ -491,6 +506,8 @@ Cursor users get full verification via MCP:
491
506
  | `.mcp.json` | MCP server config | Claude Code |
492
507
  | `AGENT.md` | Universal agent instructions | Other agents |
493
508
 
509
+ <sup>* mypy hook included in `.pre-commit-config.yaml` but requires: `pip install mypy`</sup>
510
+
494
511
  **Note:** If `pyproject.toml` exists, Guard configuration goes there as `[tool.invar.guard]` instead of `.invar/config.toml`.
495
512
 
496
513
  **Recommended structure:**