invar-tools 1.15.3__tar.gz → 1.15.4__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 (513) hide show
  1. {invar_tools-1.15.3 → invar_tools-1.15.4}/CHANGELOG.md +15 -1
  2. {invar_tools-1.15.3 → invar_tools-1.15.4}/PKG-INFO +1 -1
  3. {invar_tools-1.15.3 → invar_tools-1.15.4}/pyproject.toml +1 -1
  4. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/templates/pi-tools/invar/index.ts +16 -8
  5. {invar_tools-1.15.3 → invar_tools-1.15.4}/.aider.conf.yml +0 -0
  6. {invar_tools-1.15.3 → invar_tools-1.15.4}/.claude/commands/audit.md +0 -0
  7. {invar_tools-1.15.3 → invar_tools-1.15.4}/.claude/commands/guard.md +0 -0
  8. {invar_tools-1.15.3 → invar_tools-1.15.4}/.claude/hooks/PostToolUse.sh +0 -0
  9. {invar_tools-1.15.3 → invar_tools-1.15.4}/.claude/hooks/PreToolUse.sh +0 -0
  10. {invar_tools-1.15.3 → invar_tools-1.15.4}/.claude/hooks/Stop.sh +0 -0
  11. {invar_tools-1.15.3 → invar_tools-1.15.4}/.claude/hooks/UserPromptSubmit.sh +0 -0
  12. {invar_tools-1.15.3 → invar_tools-1.15.4}/.claude/hooks/invar.PostToolUse.sh +0 -0
  13. {invar_tools-1.15.3 → invar_tools-1.15.4}/.claude/hooks/invar.PreToolUse.sh +0 -0
  14. {invar_tools-1.15.3 → invar_tools-1.15.4}/.claude/hooks/invar.Stop.sh +0 -0
  15. {invar_tools-1.15.3 → invar_tools-1.15.4}/.claude/hooks/invar.UserPromptSubmit.sh +0 -0
  16. {invar_tools-1.15.3 → invar_tools-1.15.4}/.claude/skills/acceptance/SKILL.md +0 -0
  17. {invar_tools-1.15.3 → invar_tools-1.15.4}/.claude/skills/develop/SKILL.md +0 -0
  18. {invar_tools-1.15.3 → invar_tools-1.15.4}/.claude/skills/invar-onboard/SKILL.md +0 -0
  19. {invar_tools-1.15.3 → invar_tools-1.15.4}/.claude/skills/invar-onboard/patterns/python.md +0 -0
  20. {invar_tools-1.15.3 → invar_tools-1.15.4}/.claude/skills/invar-onboard/patterns/typescript.md +0 -0
  21. {invar_tools-1.15.3 → invar_tools-1.15.4}/.claude/skills/invar-onboard/templates/assessment.md.jinja +0 -0
  22. {invar_tools-1.15.3 → invar_tools-1.15.4}/.claude/skills/invar-onboard/templates/roadmap.md.jinja +0 -0
  23. {invar_tools-1.15.3 → invar_tools-1.15.4}/.claude/skills/invar-reflect/CONFIG.md +0 -0
  24. {invar_tools-1.15.3 → invar_tools-1.15.4}/.claude/skills/invar-reflect/SKILL.md +0 -0
  25. {invar_tools-1.15.3 → invar_tools-1.15.4}/.claude/skills/invar-reflect/template.md +0 -0
  26. {invar_tools-1.15.3 → invar_tools-1.15.4}/.claude/skills/investigate/SKILL.md +0 -0
  27. {invar_tools-1.15.3 → invar_tools-1.15.4}/.claude/skills/propose/SKILL.md +0 -0
  28. {invar_tools-1.15.3 → invar_tools-1.15.4}/.claude/skills/review/SKILL.md +0 -0
  29. {invar_tools-1.15.3 → invar_tools-1.15.4}/.claude/skills/security/SKILL.md +0 -0
  30. {invar_tools-1.15.3 → invar_tools-1.15.4}/.claude/skills/security/patterns/_common.yaml +0 -0
  31. {invar_tools-1.15.3 → invar_tools-1.15.4}/.claude/skills/security/patterns/python.yaml +0 -0
  32. {invar_tools-1.15.3 → invar_tools-1.15.4}/.claude/skills/security/patterns/typescript.yaml +0 -0
  33. {invar_tools-1.15.3 → invar_tools-1.15.4}/.cursorrules +0 -0
  34. {invar_tools-1.15.3 → invar_tools-1.15.4}/.github/workflows/ci.yml +0 -0
  35. {invar_tools-1.15.3 → invar_tools-1.15.4}/.github/workflows/publish.yml +0 -0
  36. {invar_tools-1.15.3 → invar_tools-1.15.4}/.gitignore +0 -0
  37. {invar_tools-1.15.3 → invar_tools-1.15.4}/.invar/archive/sessions-2025-12.md +0 -0
  38. {invar_tools-1.15.3 → invar_tools-1.15.4}/.invar/context.md +0 -0
  39. {invar_tools-1.15.3 → invar_tools-1.15.4}/.invar/examples/README.md +0 -0
  40. {invar_tools-1.15.3 → invar_tools-1.15.4}/.invar/examples/conftest.py +0 -0
  41. {invar_tools-1.15.3 → invar_tools-1.15.4}/.invar/examples/contracts.py +0 -0
  42. {invar_tools-1.15.3 → invar_tools-1.15.4}/.invar/examples/core_shell.py +0 -0
  43. {invar_tools-1.15.3 → invar_tools-1.15.4}/.invar/examples/functional.py +0 -0
  44. {invar_tools-1.15.3 → invar_tools-1.15.4}/.invar/examples/workflow.md +0 -0
  45. {invar_tools-1.15.3 → invar_tools-1.15.4}/.invar/feedback/feedback-2026-01-03.md +0 -0
  46. {invar_tools-1.15.3 → invar_tools-1.15.4}/.invar/mcp-setup.md +0 -0
  47. {invar_tools-1.15.3 → invar_tools-1.15.4}/.invar/project-additions.md +0 -0
  48. {invar_tools-1.15.3 → invar_tools-1.15.4}/.invar/proposals/TEMPLATE.md +0 -0
  49. {invar_tools-1.15.3 → invar_tools-1.15.4}/.mcp.json +0 -0
  50. {invar_tools-1.15.3 → invar_tools-1.15.4}/.pre-commit-config.yaml +0 -0
  51. {invar_tools-1.15.3 → invar_tools-1.15.4}/.serena/.gitignore +0 -0
  52. {invar_tools-1.15.3 → invar_tools-1.15.4}/.serena/cache/python/document_symbols.pkl +0 -0
  53. {invar_tools-1.15.3 → invar_tools-1.15.4}/.serena/cache/python/raw_document_symbols.pkl +0 -0
  54. {invar_tools-1.15.3 → invar_tools-1.15.4}/.serena/project.yml +0 -0
  55. {invar_tools-1.15.3 → invar_tools-1.15.4}/CLAUDE.md +0 -0
  56. {invar_tools-1.15.3 → invar_tools-1.15.4}/INVAR.md +0 -0
  57. {invar_tools-1.15.3 → invar_tools-1.15.4}/LICENSE +0 -0
  58. {invar_tools-1.15.3 → invar_tools-1.15.4}/LICENSE-GPL +0 -0
  59. {invar_tools-1.15.3 → invar_tools-1.15.4}/NOTICE +0 -0
  60. {invar_tools-1.15.3 → invar_tools-1.15.4}/README.md +0 -0
  61. {invar_tools-1.15.3 → invar_tools-1.15.4}/docs/.nojekyll +0 -0
  62. {invar_tools-1.15.3 → invar_tools-1.15.4}/docs/agents.md +0 -0
  63. {invar_tools-1.15.3 → invar_tools-1.15.4}/docs/design.md +0 -0
  64. {invar_tools-1.15.3 → invar_tools-1.15.4}/docs/diagrams.md +0 -0
  65. {invar_tools-1.15.3 → invar_tools-1.15.4}/docs/guide.md +0 -0
  66. {invar_tools-1.15.3 → invar_tools-1.15.4}/docs/guides/aider.md +0 -0
  67. {invar_tools-1.15.3 → invar_tools-1.15.4}/docs/guides/cline.md +0 -0
  68. {invar_tools-1.15.3 → invar_tools-1.15.4}/docs/guides/continue.md +0 -0
  69. {invar_tools-1.15.3 → invar_tools-1.15.4}/docs/guides/cursor.md +0 -0
  70. {invar_tools-1.15.3 → invar_tools-1.15.4}/docs/guides/multi-agent.md +0 -0
  71. {invar_tools-1.15.3 → invar_tools-1.15.4}/docs/guides/pi.md +0 -0
  72. {invar_tools-1.15.3 → invar_tools-1.15.4}/docs/history/decisions-2024.md +0 -0
  73. {invar_tools-1.15.3 → invar_tools-1.15.4}/docs/history/feedback/compliance-analysis.md +0 -0
  74. {invar_tools-1.15.3 → invar_tools-1.15.4}/docs/history/feedback/feedback-memo.md +0 -0
  75. {invar_tools-1.15.3 → invar_tools-1.15.4}/docs/history/feedback/index.md +0 -0
  76. {invar_tools-1.15.3 → invar_tools-1.15.4}/docs/history/index.md +0 -0
  77. {invar_tools-1.15.3 → invar_tools-1.15.4}/docs/history/original-vision.md +0 -0
  78. {invar_tools-1.15.3 → invar_tools-1.15.4}/docs/history/protocol-evolution.md +0 -0
  79. {invar_tools-1.15.3 → invar_tools-1.15.4}/docs/history/research/cruxeval-quick-validation.md +0 -0
  80. {invar_tools-1.15.3 → invar_tools-1.15.4}/docs/index.html +0 -0
  81. {invar_tools-1.15.3 → invar_tools-1.15.4}/docs/logo.svg +0 -0
  82. {invar_tools-1.15.3 → invar_tools-1.15.4}/docs/proposals/DX-23-entry-point-detection.md +0 -0
  83. {invar_tools-1.15.3 → invar_tools-1.15.4}/docs/proposals/DX-25-functional-patterns.md +0 -0
  84. {invar_tools-1.15.3 → invar_tools-1.15.4}/docs/proposals/DX-29-pure-content-detection.md +0 -0
  85. {invar_tools-1.15.3 → invar_tools-1.15.4}/docs/proposals/DX-38-contract-quality-rules.md +0 -0
  86. {invar_tools-1.15.3 → invar_tools-1.15.4}/docs/proposals/DX-60-structured-rules-ssot.md +0 -0
  87. {invar_tools-1.15.3 → invar_tools-1.15.4}/docs/proposals/DX-61-functional-pattern-guidance.md +0 -0
  88. {invar_tools-1.15.3 → invar_tools-1.15.4}/docs/proposals/DX-61-implementation-design.md +0 -0
  89. {invar_tools-1.15.3 → invar_tools-1.15.4}/docs/proposals/DX-62-proactive-reference-reading.md +0 -0
  90. {invar_tools-1.15.3 → invar_tools-1.15.4}/docs/proposals/DX-68-agent-behavior-optimization.md +0 -0
  91. {invar_tools-1.15.3 → invar_tools-1.15.4}/docs/proposals/DX-74-experiment-report.md +0 -0
  92. {invar_tools-1.15.3 → invar_tools-1.15.4}/docs/proposals/DX-75-attention-aware-framework.md +0 -0
  93. {invar_tools-1.15.3 → invar_tools-1.15.4}/docs/proposals/DX-78-mcp-protocol-sync.md +0 -0
  94. {invar_tools-1.15.3 → invar_tools-1.15.4}/docs/proposals/DX-79-invar-usage-feedback.md +0 -0
  95. {invar_tools-1.15.3 → invar_tools-1.15.4}/docs/proposals/DX-80-guard-cli-mcp-alignment.md +0 -0
  96. {invar_tools-1.15.3 → invar_tools-1.15.4}/docs/proposals/DX-81-multi-agent-init.md +0 -0
  97. {invar_tools-1.15.3 → invar_tools-1.15.4}/docs/proposals/LX-01-multi-language-feasibility.md +0 -0
  98. {invar_tools-1.15.3 → invar_tools-1.15.4}/docs/proposals/LX-04-pi-agent-support.md +0 -0
  99. {invar_tools-1.15.3 → invar_tools-1.15.4}/docs/proposals/LX-07-extension-skills.md +0 -0
  100. {invar_tools-1.15.3 → invar_tools-1.15.4}/docs/proposals/LX-08-extension-skills-future.md +0 -0
  101. {invar_tools-1.15.3 → invar_tools-1.15.4}/docs/proposals/LX-09-legacy-onboarding.md +0 -0
  102. {invar_tools-1.15.3 → invar_tools-1.15.4}/docs/proposals/completed/2024-12-21-guard-enhancements.md +0 -0
  103. {invar_tools-1.15.3 → invar_tools-1.15.4}/docs/proposals/completed/2024-12-21-language-inspired-enhancements.md +0 -0
  104. {invar_tools-1.15.3 → invar_tools-1.15.4}/docs/proposals/completed/2024-12-21-test-first-enhancement.md +0 -0
  105. {invar_tools-1.15.3 → invar_tools-1.15.4}/docs/proposals/completed/2025-12-21-dx-improvements.md +0 -0
  106. {invar_tools-1.15.3 → invar_tools-1.15.4}/docs/proposals/completed/2025-12-23-dx-20-property-testing-enhancements.md +0 -0
  107. {invar_tools-1.15.3 → invar_tools-1.15.4}/docs/proposals/completed/2025-12-23-dx-21-package-and-init.md +0 -0
  108. {invar_tools-1.15.3 → invar_tools-1.15.4}/docs/proposals/completed/AGENT-IMPROVEMENTS.md +0 -0
  109. {invar_tools-1.15.3 → invar_tools-1.15.4}/docs/proposals/completed/DX-11-documentation-restructure.md +0 -0
  110. {invar_tools-1.15.3 → invar_tools-1.15.4}/docs/proposals/completed/DX-12-hypothesis-fallback.md +0 -0
  111. {invar_tools-1.15.3 → invar_tools-1.15.4}/docs/proposals/completed/DX-13-incremental-prove.md +0 -0
  112. {invar_tools-1.15.3 → invar_tools-1.15.4}/docs/proposals/completed/DX-14-expanded-prove-usage.md +0 -0
  113. {invar_tools-1.15.3 → invar_tools-1.15.4}/docs/proposals/completed/DX-16-agent-tool-enforcement.md +0 -0
  114. {invar_tools-1.15.3 → invar_tools-1.15.4}/docs/proposals/completed/DX-17-workflow-enforcement.md +0 -0
  115. {invar_tools-1.15.3 → invar_tools-1.15.4}/docs/proposals/completed/DX-22-verification-strategy.md +0 -0
  116. {invar_tools-1.15.3 → invar_tools-1.15.4}/docs/proposals/completed/DX-24-mechanism-documentation.md +0 -0
  117. {invar_tools-1.15.3 → invar_tools-1.15.4}/docs/proposals/completed/DX-26-guard-simplification.md +0 -0
  118. {invar_tools-1.15.3 → invar_tools-1.15.4}/docs/proposals/completed/DX-27-system-prompt-protocol.md +0 -0
  119. {invar_tools-1.15.3 → invar_tools-1.15.4}/docs/proposals/completed/DX-28-semantic-verification.md +0 -0
  120. {invar_tools-1.15.3 → invar_tools-1.15.4}/docs/proposals/completed/DX-30-visible-workflow.md +0 -0
  121. {invar_tools-1.15.3 → invar_tools-1.15.4}/docs/proposals/completed/DX-31-adversarial-reviewer.md +0 -0
  122. {invar_tools-1.15.3 → invar_tools-1.15.4}/docs/proposals/completed/DX-32-workflow-iteration.md +0 -0
  123. {invar_tools-1.15.3 → invar_tools-1.15.4}/docs/proposals/completed/DX-33-verification-blind-spots.md +0 -0
  124. {invar_tools-1.15.3 → invar_tools-1.15.4}/docs/proposals/completed/DX-34-review-cycle.md +0 -0
  125. {invar_tools-1.15.3 → invar_tools-1.15.4}/docs/proposals/completed/DX-35-workflow-phase-separation.md +0 -0
  126. {invar_tools-1.15.3 → invar_tools-1.15.4}/docs/proposals/completed/DX-36-documentation-restructuring.md +0 -0
  127. {invar_tools-1.15.3 → invar_tools-1.15.4}/docs/proposals/completed/DX-37-coverage-integration.md +0 -0
  128. {invar_tools-1.15.3 → invar_tools-1.15.4}/docs/proposals/completed/DX-39-workflow-efficiency.md +0 -0
  129. {invar_tools-1.15.3 → invar_tools-1.15.4}/docs/proposals/completed/DX-40-smart-tool-redirect-hook.md +0 -0
  130. {invar_tools-1.15.3 → invar_tools-1.15.4}/docs/proposals/completed/DX-41-automatic-review-orchestration.md +0 -0
  131. {invar_tools-1.15.3 → invar_tools-1.15.4}/docs/proposals/completed/DX-42-workflow-auto-routing.md +0 -0
  132. {invar_tools-1.15.3 → invar_tools-1.15.4}/docs/proposals/completed/DX-43-cross-platform-distribution.md +0 -0
  133. {invar_tools-1.15.3 → invar_tools-1.15.4}/docs/proposals/completed/DX-45-template-consistency.md +0 -0
  134. {invar_tools-1.15.3 → invar_tools-1.15.4}/docs/proposals/completed/DX-46-documentation-audit.md +0 -0
  135. {invar_tools-1.15.3 → invar_tools-1.15.4}/docs/proposals/completed/DX-47-command-skill-naming.md +0 -0
  136. {invar_tools-1.15.3 → invar_tools-1.15.4}/docs/proposals/completed/DX-48-code-structure-reorganization.md +0 -0
  137. {invar_tools-1.15.3 → invar_tools-1.15.4}/docs/proposals/completed/DX-49-protocol-distribution-unification.md +0 -0
  138. {invar_tools-1.15.3 → invar_tools-1.15.4}/docs/proposals/completed/DX-50-workflow-enforcement.md +0 -0
  139. {invar_tools-1.15.3 → invar_tools-1.15.4}/docs/proposals/completed/DX-51-workflow-phase-visibility.md +0 -0
  140. {invar_tools-1.15.3 → invar_tools-1.15.4}/docs/proposals/completed/DX-52-venv-dependency-injection.md +0 -0
  141. {invar_tools-1.15.3 → invar_tools-1.15.4}/docs/proposals/completed/DX-53-review-loop-effectiveness.md +0 -0
  142. {invar_tools-1.15.3 → invar_tools-1.15.4}/docs/proposals/completed/DX-54-agent-native-context-management.md +0 -0
  143. {invar_tools-1.15.3 → invar_tools-1.15.4}/docs/proposals/completed/DX-55-claude-init-conflict-resolution.md +0 -0
  144. {invar_tools-1.15.3 → invar_tools-1.15.4}/docs/proposals/completed/DX-56-template-sync-unification.md +0 -0
  145. {invar_tools-1.15.3 → invar_tools-1.15.4}/docs/proposals/completed/DX-57-claude-code-hooks.md +0 -0
  146. {invar_tools-1.15.3 → invar_tools-1.15.4}/docs/proposals/completed/DX-58-document-structure-optimization.md +0 -0
  147. {invar_tools-1.15.3 → invar_tools-1.15.4}/docs/proposals/completed/DX-63-contracts-first-enforcement.md +0 -0
  148. {invar_tools-1.15.3 → invar_tools-1.15.4}/docs/proposals/completed/DX-64-version-display-unification.md +0 -0
  149. {invar_tools-1.15.3 → invar_tools-1.15.4}/docs/proposals/completed/DX-65-single-file-guard.md +0 -0
  150. {invar_tools-1.15.3 → invar_tools-1.15.4}/docs/proposals/completed/DX-66-escape-hatch-visibility.md +0 -0
  151. {invar_tools-1.15.3 → invar_tools-1.15.4}/docs/proposals/completed/DX-67-explicit-skill-invocation.md +0 -0
  152. {invar_tools-1.15.3 → invar_tools-1.15.4}/docs/proposals/completed/DX-69-project-uninstall.md +0 -0
  153. {invar_tools-1.15.3 → invar_tools-1.15.4}/docs/proposals/completed/DX-70-init-simplification.md +0 -0
  154. {invar_tools-1.15.3 → invar_tools-1.15.4}/docs/proposals/completed/DX-70-review-isolation.md +0 -0
  155. {invar_tools-1.15.3 → invar_tools-1.15.4}/docs/proposals/completed/DX-71-skill-command-simplification.md +0 -0
  156. {invar_tools-1.15.3 → invar_tools-1.15.4}/docs/proposals/completed/DX-72-mandatory-self-review-detection.md +0 -0
  157. {invar_tools-1.15.3 → invar_tools-1.15.4}/docs/proposals/completed/DX-74-tiered-attention-defense.md +0 -0
  158. {invar_tools-1.15.3 → invar_tools-1.15.4}/docs/proposals/completed/DX-76-structured-document-query.md +0 -0
  159. {invar_tools-1.15.3 → invar_tools-1.15.4}/docs/proposals/completed/DX-77-mcp-doc-tools-enhancements.md +0 -0
  160. {invar_tools-1.15.3 → invar_tools-1.15.4}/docs/proposals/completed/LX-02-agent-portability-analysis.md +0 -0
  161. {invar_tools-1.15.3 → invar_tools-1.15.4}/docs/proposals/completed/LX-03-multi-agent-support.md +0 -0
  162. {invar_tools-1.15.3 → invar_tools-1.15.4}/docs/proposals/completed/LX-05-language-agnostic-protocol.md +0 -0
  163. {invar_tools-1.15.3 → invar_tools-1.15.4}/docs/proposals/completed/LX-06-appendix-guard-comparison.md +0 -0
  164. {invar_tools-1.15.3 → invar_tools-1.15.4}/docs/proposals/completed/LX-06-typescript-tooling.md +0 -0
  165. {invar_tools-1.15.3 → invar_tools-1.15.4}/docs/proposals/completed/LX-09-legacy-onboarding.md +0 -0
  166. {invar_tools-1.15.3 → invar_tools-1.15.4}/docs/proposals/completed/LX-10-typescript-size-limits.md +0 -0
  167. {invar_tools-1.15.3 → invar_tools-1.15.4}/docs/proposals/index.md +0 -0
  168. {invar_tools-1.15.3 → invar_tools-1.15.4}/docs/reference/agent-information-hierarchy.md +0 -0
  169. {invar_tools-1.15.3 → invar_tools-1.15.4}/docs/reference/architecture/index.md +0 -0
  170. {invar_tools-1.15.3 → invar_tools-1.15.4}/docs/reference/contracts/advanced.md +0 -0
  171. {invar_tools-1.15.3 → invar_tools-1.15.4}/docs/reference/contracts/completeness.md +0 -0
  172. {invar_tools-1.15.3 → invar_tools-1.15.4}/docs/reference/contracts/doctests.md +0 -0
  173. {invar_tools-1.15.3 → invar_tools-1.15.4}/docs/reference/contracts/index.md +0 -0
  174. {invar_tools-1.15.3 → invar_tools-1.15.4}/docs/reference/contracts/pre-post.md +0 -0
  175. {invar_tools-1.15.3 → invar_tools-1.15.4}/docs/reference/documentation.md +0 -0
  176. {invar_tools-1.15.3 → invar_tools-1.15.4}/docs/reference/index.md +0 -0
  177. {invar_tools-1.15.3 → invar_tools-1.15.4}/docs/reference/proposal-workflow.md +0 -0
  178. {invar_tools-1.15.3 → invar_tools-1.15.4}/docs/reference/rules/index.md +0 -0
  179. {invar_tools-1.15.3 → invar_tools-1.15.4}/docs/reference/rules/severity.md +0 -0
  180. {invar_tools-1.15.3 → invar_tools-1.15.4}/docs/reference/verification/crosshair-vs-hypothesis.md +0 -0
  181. {invar_tools-1.15.3 → invar_tools-1.15.4}/docs/reference/verification/index.md +0 -0
  182. {invar_tools-1.15.3 → invar_tools-1.15.4}/docs/reference/verification/smart-routing.md +0 -0
  183. {invar_tools-1.15.3 → invar_tools-1.15.4}/docs/reference/workflow/index.md +0 -0
  184. {invar_tools-1.15.3 → invar_tools-1.15.4}/docs/reference/workflow/session-start.md +0 -0
  185. {invar_tools-1.15.3 → invar_tools-1.15.4}/docs/reference/workflow/usbv.md +0 -0
  186. {invar_tools-1.15.3 → invar_tools-1.15.4}/docs/terminal-gif-guide.md +0 -0
  187. {invar_tools-1.15.3 → invar_tools-1.15.4}/docs/test-reports/DX-55-test-report.md +0 -0
  188. {invar_tools-1.15.3 → invar_tools-1.15.4}/docs/test-reports/DX-56-test-report.md +0 -0
  189. {invar_tools-1.15.3 → invar_tools-1.15.4}/docs/test-reports/DX-58-test-scenario.md +0 -0
  190. {invar_tools-1.15.3 → invar_tools-1.15.4}/docs/testing/v1.5.0-stress-test.md +0 -0
  191. {invar_tools-1.15.3 → invar_tools-1.15.4}/docs/testing/v1.5.0-test-report.md +0 -0
  192. {invar_tools-1.15.3 → invar_tools-1.15.4}/docs/testing/v1.5.0-workflow-compliance.md +0 -0
  193. {invar_tools-1.15.3 → invar_tools-1.15.4}/docs/vision.md +0 -0
  194. {invar_tools-1.15.3 → invar_tools-1.15.4}/runtime/LICENSE +0 -0
  195. {invar_tools-1.15.3 → invar_tools-1.15.4}/runtime/README.md +0 -0
  196. {invar_tools-1.15.3 → invar_tools-1.15.4}/runtime/pyproject.toml +0 -0
  197. {invar_tools-1.15.3 → invar_tools-1.15.4}/runtime/src/invar_runtime/__init__.py +0 -0
  198. {invar_tools-1.15.3 → invar_tools-1.15.4}/runtime/src/invar_runtime/contracts.py +0 -0
  199. {invar_tools-1.15.3 → invar_tools-1.15.4}/runtime/src/invar_runtime/decorators.py +0 -0
  200. {invar_tools-1.15.3 → invar_tools-1.15.4}/runtime/src/invar_runtime/invariant.py +0 -0
  201. {invar_tools-1.15.3 → invar_tools-1.15.4}/runtime/src/invar_runtime/relations.py +0 -0
  202. {invar_tools-1.15.3 → invar_tools-1.15.4}/runtime/src/invar_runtime/resource.py +0 -0
  203. {invar_tools-1.15.3 → invar_tools-1.15.4}/scripts/embed_node_tools.py +0 -0
  204. {invar_tools-1.15.3 → invar_tools-1.15.4}/scripts/smart-guard.sh +0 -0
  205. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/core/__init__.py +0 -0
  206. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/__init__.py +0 -0
  207. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/core/__init__.py +0 -0
  208. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/core/contracts.py +0 -0
  209. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/core/doc_edit.py +0 -0
  210. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/core/doc_parser.py +0 -0
  211. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/core/entry_points.py +0 -0
  212. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/core/extraction.py +0 -0
  213. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/core/feedback.py +0 -0
  214. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/core/format_specs.py +0 -0
  215. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/core/format_strategies.py +0 -0
  216. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/core/formatter.py +0 -0
  217. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/core/hypothesis_strategies.py +0 -0
  218. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/core/inspect.py +0 -0
  219. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/core/lambda_helpers.py +0 -0
  220. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/core/language.py +0 -0
  221. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/core/models.py +0 -0
  222. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/core/must_use.py +0 -0
  223. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/core/parser.py +0 -0
  224. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/core/patterns/__init__.py +0 -0
  225. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/core/patterns/detector.py +0 -0
  226. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/core/patterns/p0_exhaustive.py +0 -0
  227. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/core/patterns/p0_literal.py +0 -0
  228. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/core/patterns/p0_newtype.py +0 -0
  229. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/core/patterns/p0_nonempty.py +0 -0
  230. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/core/patterns/p0_validation.py +0 -0
  231. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/core/patterns/registry.py +0 -0
  232. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/core/patterns/types.py +0 -0
  233. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/core/postcondition_scope.py +0 -0
  234. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/core/property_gen.py +0 -0
  235. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/core/purity.py +0 -0
  236. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/core/purity_heuristics.py +0 -0
  237. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/core/references.py +0 -0
  238. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/core/review_trigger.py +0 -0
  239. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/core/rule_meta.py +0 -0
  240. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/core/rules.py +0 -0
  241. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/core/shell_analysis.py +0 -0
  242. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/core/shell_architecture.py +0 -0
  243. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/core/strategies.py +0 -0
  244. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/core/suggestions.py +0 -0
  245. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/core/sync_helpers.py +0 -0
  246. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/core/tautology.py +0 -0
  247. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/core/template_helpers.py +0 -0
  248. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/core/template_parser.py +0 -0
  249. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/core/timeout_inference.py +0 -0
  250. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/core/trivial_detection.py +0 -0
  251. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/core/ts_parsers.py +0 -0
  252. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/core/ts_sig_parser.py +0 -0
  253. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/core/utils.py +0 -0
  254. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/core/verification_routing.py +0 -0
  255. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/mcp/__init__.py +0 -0
  256. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/mcp/__main__.py +0 -0
  257. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/mcp/handlers.py +0 -0
  258. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/mcp/server.py +0 -0
  259. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/node_tools/MANIFEST +0 -0
  260. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/node_tools/__init__.py +0 -0
  261. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/node_tools/fc-runner/cli.js +0 -0
  262. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/node_tools/quick-check/cli.js +0 -0
  263. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/node_tools/ts-analyzer/cli.js +0 -0
  264. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/node_tools/ts-query.js +0 -0
  265. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/py.typed +0 -0
  266. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/shell/__init__.py +0 -0
  267. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/shell/claude_hooks.py +0 -0
  268. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/shell/commands/__init__.py +0 -0
  269. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/shell/commands/doc.py +0 -0
  270. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/shell/commands/feedback.py +0 -0
  271. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/shell/commands/guard.py +0 -0
  272. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/shell/commands/hooks.py +0 -0
  273. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/shell/commands/init.py +0 -0
  274. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/shell/commands/merge.py +0 -0
  275. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/shell/commands/mutate.py +0 -0
  276. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/shell/commands/perception.py +0 -0
  277. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/shell/commands/skill.py +0 -0
  278. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/shell/commands/sync_self.py +0 -0
  279. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/shell/commands/template_sync.py +0 -0
  280. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/shell/commands/test.py +0 -0
  281. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/shell/commands/uninstall.py +0 -0
  282. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/shell/commands/update.py +0 -0
  283. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/shell/config.py +0 -0
  284. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/shell/contract_coverage.py +0 -0
  285. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/shell/coverage.py +0 -0
  286. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/shell/doc_tools.py +0 -0
  287. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/shell/fs.py +0 -0
  288. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/shell/git.py +0 -0
  289. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/shell/guard_helpers.py +0 -0
  290. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/shell/guard_output.py +0 -0
  291. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/shell/mcp_config.py +0 -0
  292. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/shell/mutation.py +0 -0
  293. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/shell/pattern_integration.py +0 -0
  294. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/shell/pi_hooks.py +0 -0
  295. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/shell/pi_tools.py +0 -0
  296. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/shell/property_tests.py +0 -0
  297. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/shell/prove/__init__.py +0 -0
  298. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/shell/prove/accept.py +0 -0
  299. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/shell/prove/cache.py +0 -0
  300. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/shell/prove/crosshair.py +0 -0
  301. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/shell/prove/guard_ts.py +0 -0
  302. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/shell/prove/hypothesis.py +0 -0
  303. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/shell/py_refs.py +0 -0
  304. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/shell/skill_manager.py +0 -0
  305. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/shell/subprocess_env.py +0 -0
  306. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/shell/template_engine.py +0 -0
  307. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/shell/templates.py +0 -0
  308. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/shell/testing.py +0 -0
  309. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/shell/ts_compiler.py +0 -0
  310. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/templates/CLAUDE.md.template +0 -0
  311. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/templates/__init__.py +0 -0
  312. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/templates/claude-md/python/critical-rules.md +0 -0
  313. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/templates/claude-md/python/quick-reference.md +0 -0
  314. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/templates/claude-md/typescript/critical-rules.md +0 -0
  315. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/templates/claude-md/typescript/quick-reference.md +0 -0
  316. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/templates/claude-md/universal/check-in.md +0 -0
  317. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/templates/claude-md/universal/skills.md +0 -0
  318. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/templates/claude-md/universal/tool-selection.md +0 -0
  319. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/templates/claude-md/universal/workflow.md +0 -0
  320. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/templates/commands/audit.md.jinja +0 -0
  321. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/templates/commands/guard.md +0 -0
  322. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/templates/config/AGENT.md.jinja +0 -0
  323. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/templates/config/CLAUDE.md.jinja +0 -0
  324. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/templates/config/context.md.jinja +0 -0
  325. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/templates/config/pre-commit.yaml.jinja +0 -0
  326. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/templates/context.md.template +0 -0
  327. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/templates/examples/python/README.md +0 -0
  328. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/templates/examples/python/conftest.py +0 -0
  329. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/templates/examples/python/contracts.py +0 -0
  330. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/templates/examples/python/core_shell.py +0 -0
  331. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/templates/examples/python/functional.py +0 -0
  332. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/templates/examples/python/workflow.md +0 -0
  333. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/templates/examples/typescript/README.md +0 -0
  334. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/templates/examples/typescript/contracts.ts +0 -0
  335. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/templates/examples/typescript/core_shell.ts +0 -0
  336. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/templates/examples/typescript/functional.ts +0 -0
  337. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/templates/examples/typescript/patterns.md +0 -0
  338. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/templates/examples/typescript/workflow.md +0 -0
  339. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/templates/hooks/PostToolUse.sh.jinja +0 -0
  340. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/templates/hooks/PreToolUse.sh.jinja +0 -0
  341. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/templates/hooks/Stop.sh.jinja +0 -0
  342. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/templates/hooks/UserPromptSubmit.sh.jinja +0 -0
  343. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/templates/hooks/__init__.py +0 -0
  344. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/templates/hooks/pi/invar.ts.jinja +0 -0
  345. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/templates/manifest.toml +0 -0
  346. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/templates/onboard/assessment.md.jinja +0 -0
  347. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/templates/onboard/patterns/python.md +0 -0
  348. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/templates/onboard/patterns/typescript.md +0 -0
  349. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/templates/onboard/roadmap.md.jinja +0 -0
  350. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/templates/proposal.md.template +0 -0
  351. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/templates/protocol/INVAR.md.jinja +0 -0
  352. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/templates/protocol/python/architecture-examples.md +0 -0
  353. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/templates/protocol/python/contracts-syntax.md +0 -0
  354. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/templates/protocol/python/markers.md +0 -0
  355. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/templates/protocol/python/tools.md +0 -0
  356. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/templates/protocol/python/troubleshooting.md +0 -0
  357. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/templates/protocol/typescript/architecture-examples.md +0 -0
  358. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/templates/protocol/typescript/contracts-syntax.md +0 -0
  359. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/templates/protocol/typescript/markers.md +0 -0
  360. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/templates/protocol/typescript/tools.md +0 -0
  361. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/templates/protocol/typescript/troubleshooting.md +0 -0
  362. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/templates/protocol/universal/architecture.md +0 -0
  363. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/templates/protocol/universal/completion.md +0 -0
  364. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/templates/protocol/universal/contracts-concept.md +0 -0
  365. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/templates/protocol/universal/header.md +0 -0
  366. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/templates/protocol/universal/session.md +0 -0
  367. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/templates/protocol/universal/six-laws.md +0 -0
  368. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/templates/protocol/universal/usbv.md +0 -0
  369. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/templates/protocol/universal/visible-workflow.md +0 -0
  370. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/templates/skills/develop/SKILL.md.jinja +0 -0
  371. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/templates/skills/extensions/_registry.yaml +0 -0
  372. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/templates/skills/extensions/acceptance/SKILL.md +0 -0
  373. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/templates/skills/extensions/invar-onboard/SKILL.md +0 -0
  374. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/templates/skills/extensions/invar-onboard/patterns/python.md +0 -0
  375. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/templates/skills/extensions/invar-onboard/patterns/typescript.md +0 -0
  376. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/templates/skills/extensions/invar-onboard/templates/assessment.md.jinja +0 -0
  377. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/templates/skills/extensions/invar-onboard/templates/roadmap.md.jinja +0 -0
  378. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/templates/skills/extensions/security/SKILL.md +0 -0
  379. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/templates/skills/extensions/security/patterns/_common.yaml +0 -0
  380. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/templates/skills/extensions/security/patterns/python.yaml +0 -0
  381. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/templates/skills/extensions/security/patterns/typescript.yaml +0 -0
  382. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/templates/skills/invar-reflect/CONFIG.md +0 -0
  383. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/templates/skills/invar-reflect/SKILL.md +0 -0
  384. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/templates/skills/invar-reflect/template.md +0 -0
  385. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/templates/skills/investigate/SKILL.md.jinja +0 -0
  386. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/templates/skills/propose/SKILL.md.jinja +0 -0
  387. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/invar/templates/skills/review/SKILL.md.jinja +0 -0
  388. {invar_tools-1.15.3 → invar_tools-1.15.4}/src/shell/__init__.py +0 -0
  389. {invar_tools-1.15.3 → invar_tools-1.15.4}/tests/__init__.py +0 -0
  390. {invar_tools-1.15.3 → invar_tools-1.15.4}/tests/conftest.py +0 -0
  391. {invar_tools-1.15.3 → invar_tools-1.15.4}/tests/experiments/conftest.py +0 -0
  392. {invar_tools-1.15.3 → invar_tools-1.15.4}/tests/experiments/dx74_attention_drift/README.md +0 -0
  393. {invar_tools-1.15.3 → invar_tools-1.15.4}/tests/experiments/dx74_attention_drift/RESULTS.md +0 -0
  394. {invar_tools-1.15.3 → invar_tools-1.15.4}/tests/experiments/dx74_attention_drift/RESULTS_V2.md +0 -0
  395. {invar_tools-1.15.3 → invar_tools-1.15.4}/tests/experiments/dx74_attention_drift/RESULTS_V4.md +0 -0
  396. {invar_tools-1.15.3 → invar_tools-1.15.4}/tests/experiments/dx74_attention_drift/ground_truth.yaml +0 -0
  397. {invar_tools-1.15.3 → invar_tools-1.15.4}/tests/experiments/dx74_attention_drift/prompts.yaml +0 -0
  398. {invar_tools-1.15.3 → invar_tools-1.15.4}/tests/experiments/dx74_attention_drift/scenario/api_client.py +0 -0
  399. {invar_tools-1.15.3 → invar_tools-1.15.4}/tests/experiments/dx74_attention_drift/scenario/auth_service.py +0 -0
  400. {invar_tools-1.15.3 → invar_tools-1.15.4}/tests/experiments/dx74_attention_drift/scenario/config_manager.py +0 -0
  401. {invar_tools-1.15.3 → invar_tools-1.15.4}/tests/experiments/dx74_attention_drift/scenario/data_processor.py +0 -0
  402. {invar_tools-1.15.3 → invar_tools-1.15.4}/tests/experiments/dx74_attention_drift/scenario/file_handler.py +0 -0
  403. {invar_tools-1.15.3 → invar_tools-1.15.4}/tests/experiments/dx74_attention_drift/scenario/utils.py +0 -0
  404. {invar_tools-1.15.3 → invar_tools-1.15.4}/tests/experiments/dx74_attention_drift/scenario_v2/analytics_engine.py +0 -0
  405. {invar_tools-1.15.3 → invar_tools-1.15.4}/tests/experiments/dx74_attention_drift/scenario_v2/ground_truth.yaml +0 -0
  406. {invar_tools-1.15.3 → invar_tools-1.15.4}/tests/experiments/dx74_attention_drift/scenario_v2/inventory_manager.py +0 -0
  407. {invar_tools-1.15.3 → invar_tools-1.15.4}/tests/experiments/dx74_attention_drift/scenario_v2/notification_service.py +0 -0
  408. {invar_tools-1.15.3 → invar_tools-1.15.4}/tests/experiments/dx74_attention_drift/scenario_v2/order_processor.py +0 -0
  409. {invar_tools-1.15.3 → invar_tools-1.15.4}/tests/experiments/dx74_attention_drift/scenario_v2/payment_gateway.py +0 -0
  410. {invar_tools-1.15.3 → invar_tools-1.15.4}/tests/experiments/dx74_attention_drift/scenario_v2/user_service.py +0 -0
  411. {invar_tools-1.15.3 → invar_tools-1.15.4}/tests/experiments/dx74_attention_drift/scenario_v3/README.md +0 -0
  412. {invar_tools-1.15.3 → invar_tools-1.15.4}/tests/experiments/dx74_attention_drift/scenario_v3/cache_service.py +0 -0
  413. {invar_tools-1.15.3 → invar_tools-1.15.4}/tests/experiments/dx74_attention_drift/scenario_v3/calculator.py +0 -0
  414. {invar_tools-1.15.3 → invar_tools-1.15.4}/tests/experiments/dx74_attention_drift/scenario_v3/data_processor.py +0 -0
  415. {invar_tools-1.15.3 → invar_tools-1.15.4}/tests/experiments/dx74_attention_drift/scenario_v3/ground_truth.yaml +0 -0
  416. {invar_tools-1.15.3 → invar_tools-1.15.4}/tests/experiments/dx74_attention_drift/scenario_v3/user_manager.py +0 -0
  417. {invar_tools-1.15.3 → invar_tools-1.15.4}/tests/experiments/dx74_attention_drift/scenario_v3/validator.py +0 -0
  418. {invar_tools-1.15.3 → invar_tools-1.15.4}/tests/experiments/dx74_attention_drift/scenario_v4/.serena/.gitignore +0 -0
  419. {invar_tools-1.15.3 → invar_tools-1.15.4}/tests/experiments/dx74_attention_drift/scenario_v4/.serena/cache/python/document_symbols.pkl +0 -0
  420. {invar_tools-1.15.3 → invar_tools-1.15.4}/tests/experiments/dx74_attention_drift/scenario_v4/.serena/cache/python/raw_document_symbols.pkl +0 -0
  421. {invar_tools-1.15.3 → invar_tools-1.15.4}/tests/experiments/dx74_attention_drift/scenario_v4/.serena/project.yml +0 -0
  422. {invar_tools-1.15.3 → invar_tools-1.15.4}/tests/experiments/dx74_attention_drift/scenario_v4/README.md +0 -0
  423. {invar_tools-1.15.3 → invar_tools-1.15.4}/tests/experiments/dx74_attention_drift/scenario_v4/config_manager.py +0 -0
  424. {invar_tools-1.15.3 → invar_tools-1.15.4}/tests/experiments/dx74_attention_drift/scenario_v4/data_service.py +0 -0
  425. {invar_tools-1.15.3 → invar_tools-1.15.4}/tests/experiments/dx74_attention_drift/scenario_v4/ground_truth.yaml +0 -0
  426. {invar_tools-1.15.3 → invar_tools-1.15.4}/tests/experiments/dx74_attention_drift/scenario_v4/math_utils.py +0 -0
  427. {invar_tools-1.15.3 → invar_tools-1.15.4}/tests/experiments/dx74_attention_drift/scenario_v4/report_generator.py +0 -0
  428. {invar_tools-1.15.3 → invar_tools-1.15.4}/tests/experiments/dx74_attention_drift/scenario_v4/user_auth.py +0 -0
  429. {invar_tools-1.15.3 → invar_tools-1.15.4}/tests/experiments/dx74_attention_drift/scenario_v5/api_gateway.py +0 -0
  430. {invar_tools-1.15.3 → invar_tools-1.15.4}/tests/experiments/dx74_attention_drift/scenario_v5/auth_service.py +0 -0
  431. {invar_tools-1.15.3 → invar_tools-1.15.4}/tests/experiments/dx74_attention_drift/scenario_v5/cache_handler.py +0 -0
  432. {invar_tools-1.15.3 → invar_tools-1.15.4}/tests/experiments/dx74_attention_drift/scenario_v5/config_loader.py +0 -0
  433. {invar_tools-1.15.3 → invar_tools-1.15.4}/tests/experiments/dx74_attention_drift/scenario_v5/data_validator.py +0 -0
  434. {invar_tools-1.15.3 → invar_tools-1.15.4}/tests/experiments/dx74_attention_drift/scenario_v5/ground_truth.yaml +0 -0
  435. {invar_tools-1.15.3 → invar_tools-1.15.4}/tests/experiments/dx74_attention_drift/scenario_v5/metrics_collector.py +0 -0
  436. {invar_tools-1.15.3 → invar_tools-1.15.4}/tests/experiments/dx74_attention_drift/scenario_v5/notification_service.py +0 -0
  437. {invar_tools-1.15.3 → invar_tools-1.15.4}/tests/experiments/dx74_attention_drift/scenario_v5/payment_processor.py +0 -0
  438. {invar_tools-1.15.3 → invar_tools-1.15.4}/tests/experiments/dx74_attention_drift/scenario_v5/report_builder.py +0 -0
  439. {invar_tools-1.15.3 → invar_tools-1.15.4}/tests/experiments/dx74_attention_drift/scenario_v5/task_scheduler.py +0 -0
  440. {invar_tools-1.15.3 → invar_tools-1.15.4}/tests/experiments/dx74_attention_drift/scenario_v5/user_manager.py +0 -0
  441. {invar_tools-1.15.3 → invar_tools-1.15.4}/tests/experiments/dx74_attention_drift/scenario_v5/utils.py +0 -0
  442. {invar_tools-1.15.3 → invar_tools-1.15.4}/tests/experiments/dx74_attention_drift/scenario_v6/api_gateway.py +0 -0
  443. {invar_tools-1.15.3 → invar_tools-1.15.4}/tests/experiments/dx74_attention_drift/scenario_v6/auth_service.py +0 -0
  444. {invar_tools-1.15.3 → invar_tools-1.15.4}/tests/experiments/dx74_attention_drift/scenario_v6/cache_handler.py +0 -0
  445. {invar_tools-1.15.3 → invar_tools-1.15.4}/tests/experiments/dx74_attention_drift/scenario_v6/config_loader.py +0 -0
  446. {invar_tools-1.15.3 → invar_tools-1.15.4}/tests/experiments/dx74_attention_drift/scenario_v6/data_validator.py +0 -0
  447. {invar_tools-1.15.3 → invar_tools-1.15.4}/tests/experiments/dx74_attention_drift/scenario_v6/ground_truth.yaml +0 -0
  448. {invar_tools-1.15.3 → invar_tools-1.15.4}/tests/experiments/dx74_attention_drift/scenario_v6/metrics_collector.py +0 -0
  449. {invar_tools-1.15.3 → invar_tools-1.15.4}/tests/experiments/dx74_attention_drift/scenario_v6/notification_service.py +0 -0
  450. {invar_tools-1.15.3 → invar_tools-1.15.4}/tests/experiments/dx74_attention_drift/scenario_v6/payment_processor.py +0 -0
  451. {invar_tools-1.15.3 → invar_tools-1.15.4}/tests/experiments/dx74_attention_drift/scenario_v6/report_builder.py +0 -0
  452. {invar_tools-1.15.3 → invar_tools-1.15.4}/tests/experiments/dx74_attention_drift/scenario_v6/task_scheduler.py +0 -0
  453. {invar_tools-1.15.3 → invar_tools-1.15.4}/tests/experiments/dx74_attention_drift/scenario_v6/user_manager.py +0 -0
  454. {invar_tools-1.15.3 → invar_tools-1.15.4}/tests/experiments/dx74_attention_drift/scenario_v6/utils.py +0 -0
  455. {invar_tools-1.15.3 → invar_tools-1.15.4}/tests/experiments/dx74_attention_drift/scenario_v7/api_service.py +0 -0
  456. {invar_tools-1.15.3 → invar_tools-1.15.4}/tests/experiments/dx74_attention_drift/scenario_v7/auth_manager.py +0 -0
  457. {invar_tools-1.15.3 → invar_tools-1.15.4}/tests/experiments/dx74_attention_drift/scenario_v7/data_processor.py +0 -0
  458. {invar_tools-1.15.3 → invar_tools-1.15.4}/tests/experiments/dx74_attention_drift/scenario_v7/ground_truth.yaml +0 -0
  459. {invar_tools-1.15.3 → invar_tools-1.15.4}/tests/experiments/dx74_attention_drift/scenario_v7/report_engine.py +0 -0
  460. {invar_tools-1.15.3 → invar_tools-1.15.4}/tests/experiments/dx74_attention_drift/scenario_v7/storage_handler.py +0 -0
  461. {invar_tools-1.15.3 → invar_tools-1.15.4}/tests/experiments/dx74_attention_drift/scenario_v7/utils.py +0 -0
  462. {invar_tools-1.15.3 → invar_tools-1.15.4}/tests/integration/__init__.py +0 -0
  463. {invar_tools-1.15.3 → invar_tools-1.15.4}/tests/integration/test_cli_flags.py +0 -0
  464. {invar_tools-1.15.3 → invar_tools-1.15.4}/tests/integration/test_dx55_regression.py +0 -0
  465. {invar_tools-1.15.3 → invar_tools-1.15.4}/tests/integration/test_dx56_sync.py +0 -0
  466. {invar_tools-1.15.3 → invar_tools-1.15.4}/tests/integration/test_dx78_ts_compiler.py +0 -0
  467. {invar_tools-1.15.3 → invar_tools-1.15.4}/tests/integration/test_lx05_detection.py +0 -0
  468. {invar_tools-1.15.3 → invar_tools-1.15.4}/tests/integration/test_lx05_integration.py +0 -0
  469. {invar_tools-1.15.3 → invar_tools-1.15.4}/tests/integration/test_lx05_templates.py +0 -0
  470. {invar_tools-1.15.3 → invar_tools-1.15.4}/tests/integration/test_lx06_typescript.py +0 -0
  471. {invar_tools-1.15.3 → invar_tools-1.15.4}/tests/integration/test_lx07_skills.py +0 -0
  472. {invar_tools-1.15.3 → invar_tools-1.15.4}/tests/integration/test_mcp_doc_tools.py +0 -0
  473. {invar_tools-1.15.3 → invar_tools-1.15.4}/tests/test_subprocess_env.py +0 -0
  474. {invar_tools-1.15.3 → invar_tools-1.15.4}/typescript/.gitignore +0 -0
  475. {invar_tools-1.15.3 → invar_tools-1.15.4}/typescript/README.md +0 -0
  476. {invar_tools-1.15.3 → invar_tools-1.15.4}/typescript/package.json +0 -0
  477. {invar_tools-1.15.3 → invar_tools-1.15.4}/typescript/packages/eslint-plugin/node_modules/.bin/acorn +0 -0
  478. {invar_tools-1.15.3 → invar_tools-1.15.4}/typescript/packages/eslint-plugin/node_modules/.bin/eslint +0 -0
  479. {invar_tools-1.15.3 → invar_tools-1.15.4}/typescript/packages/eslint-plugin/node_modules/.bin/tsc +0 -0
  480. {invar_tools-1.15.3 → invar_tools-1.15.4}/typescript/packages/eslint-plugin/node_modules/.bin/tsserver +0 -0
  481. {invar_tools-1.15.3 → invar_tools-1.15.4}/typescript/packages/eslint-plugin/package.json +0 -0
  482. {invar_tools-1.15.3 → invar_tools-1.15.4}/typescript/packages/eslint-plugin/src/index.ts +0 -0
  483. {invar_tools-1.15.3 → invar_tools-1.15.4}/typescript/packages/eslint-plugin/src/rules/no-any-in-schema.ts +0 -0
  484. {invar_tools-1.15.3 → invar_tools-1.15.4}/typescript/packages/eslint-plugin/src/rules/no-io-in-core.ts +0 -0
  485. {invar_tools-1.15.3 → invar_tools-1.15.4}/typescript/packages/eslint-plugin/src/rules/require-jsdoc-example.ts +0 -0
  486. {invar_tools-1.15.3 → invar_tools-1.15.4}/typescript/packages/eslint-plugin/src/rules/require-schema-validation.ts +0 -0
  487. {invar_tools-1.15.3 → invar_tools-1.15.4}/typescript/packages/eslint-plugin/src/rules/shell-result-type.ts +0 -0
  488. {invar_tools-1.15.3 → invar_tools-1.15.4}/typescript/packages/eslint-plugin/tsconfig.json +0 -0
  489. {invar_tools-1.15.3 → invar_tools-1.15.4}/typescript/packages/fc-runner/node_modules/.bin/tsc +0 -0
  490. {invar_tools-1.15.3 → invar_tools-1.15.4}/typescript/packages/fc-runner/node_modules/.bin/tsserver +0 -0
  491. {invar_tools-1.15.3 → invar_tools-1.15.4}/typescript/packages/fc-runner/package.json +0 -0
  492. {invar_tools-1.15.3 → invar_tools-1.15.4}/typescript/packages/fc-runner/src/cli.ts +0 -0
  493. {invar_tools-1.15.3 → invar_tools-1.15.4}/typescript/packages/fc-runner/src/index.ts +0 -0
  494. {invar_tools-1.15.3 → invar_tools-1.15.4}/typescript/packages/fc-runner/tsconfig.json +0 -0
  495. {invar_tools-1.15.3 → invar_tools-1.15.4}/typescript/packages/quick-check/node_modules/.bin/acorn +0 -0
  496. {invar_tools-1.15.3 → invar_tools-1.15.4}/typescript/packages/quick-check/node_modules/.bin/eslint +0 -0
  497. {invar_tools-1.15.3 → invar_tools-1.15.4}/typescript/packages/quick-check/node_modules/.bin/tsc +0 -0
  498. {invar_tools-1.15.3 → invar_tools-1.15.4}/typescript/packages/quick-check/node_modules/.bin/tsserver +0 -0
  499. {invar_tools-1.15.3 → invar_tools-1.15.4}/typescript/packages/quick-check/package.json +0 -0
  500. {invar_tools-1.15.3 → invar_tools-1.15.4}/typescript/packages/quick-check/src/cli.ts +0 -0
  501. {invar_tools-1.15.3 → invar_tools-1.15.4}/typescript/packages/quick-check/src/index.ts +0 -0
  502. {invar_tools-1.15.3 → invar_tools-1.15.4}/typescript/packages/quick-check/tsconfig.json +0 -0
  503. {invar_tools-1.15.3 → invar_tools-1.15.4}/typescript/packages/ts-analyzer/node_modules/.bin/tsc +0 -0
  504. {invar_tools-1.15.3 → invar_tools-1.15.4}/typescript/packages/ts-analyzer/node_modules/.bin/tsserver +0 -0
  505. {invar_tools-1.15.3 → invar_tools-1.15.4}/typescript/packages/ts-analyzer/package.json +0 -0
  506. {invar_tools-1.15.3 → invar_tools-1.15.4}/typescript/packages/ts-analyzer/src/cli.ts +0 -0
  507. {invar_tools-1.15.3 → invar_tools-1.15.4}/typescript/packages/ts-analyzer/src/index.ts +0 -0
  508. {invar_tools-1.15.3 → invar_tools-1.15.4}/typescript/packages/ts-analyzer/tsconfig.json +0 -0
  509. {invar_tools-1.15.3 → invar_tools-1.15.4}/typescript/pnpm-workspace.yaml +0 -0
  510. {invar_tools-1.15.3 → invar_tools-1.15.4}/typescript/scripts/bundle.mjs +0 -0
  511. {invar_tools-1.15.3 → invar_tools-1.15.4}/typescript/tsconfig.base.json +0 -0
  512. {invar_tools-1.15.3 → invar_tools-1.15.4}/typescript/vitest.config.ts +0 -0
  513. {invar_tools-1.15.3 → invar_tools-1.15.4}/uv.lock +0 -0
@@ -9,6 +9,19 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
9
9
 
10
10
 
11
11
 
12
+ ## [1.15.4] - 2026-01-03
13
+
14
+ ### Fixed
15
+ - **Pi Custom Tools: Error Message Capture** - Improved error diagnostics
16
+ - Enhanced error message capture to include both stderr and stdout
17
+ - Prevents empty error messages like "Failed to extract TOC: "
18
+ - Fallback to "Unknown error" if both streams are empty
19
+ - **Solves diagnostic issue** where error details were missing:
20
+ - Root cause: Some errors may output to stdout instead of stderr
21
+ - Pi's exec() stderr might be empty even when command fails
22
+ - All 9 tools now provide clear error messages for debugging
23
+ - Fixed in: invar_sig, invar_map, invar_doc_toc, invar_doc_read, invar_doc_find, invar_doc_replace, invar_doc_insert, invar_doc_delete
24
+
12
25
  ## [1.15.3] - 2026-01-03
13
26
 
14
27
  ### Fixed
@@ -378,7 +391,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
378
391
 
379
392
  ---
380
393
 
381
- [Unreleased]: https://github.com/yourusername/invar/compare/v1.15.3...HEAD
394
+ [Unreleased]: https://github.com/yourusername/invar/compare/v1.15.4...HEAD
395
+ [1.15.4]: https://github.com/yourusername/invar/compare/v1.15.3...v1.15.4
382
396
  [1.15.3]: https://github.com/yourusername/invar/compare/v1.15.2...v1.15.3
383
397
  [1.15.2]: https://github.com/yourusername/invar/compare/v1.15.1...v1.15.2
384
398
  [1.15.1]: https://github.com/yourusername/invar/compare/v1.15.0...v1.15.1
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: invar-tools
3
- Version: 1.15.3
3
+ Version: 1.15.4
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
@@ -14,7 +14,7 @@ artifacts = ["src/invar/node_tools/**/*.js", "src/invar/node_tools/**/MANIFEST"]
14
14
 
15
15
  [project]
16
16
  name = "invar-tools"
17
- version = "1.15.3"
17
+ version = "1.15.4"
18
18
  description = "AI-native software engineering tools with design-by-contract verification"
19
19
  readme = "README.md"
20
20
  license = "GPL-3.0-or-later"
@@ -142,7 +142,8 @@ const factory: CustomToolFactory = (pi) => {
142
142
  }
143
143
 
144
144
  if (result.exitCode !== 0) {
145
- throw new Error(`Failed to get signatures: ${result.stderr}`);
145
+ const errorMsg = result.stderr || result.stdout || "Unknown error";
146
+ throw new Error(`Failed to get signatures: ${errorMsg}`);
146
147
  }
147
148
 
148
149
  return {
@@ -200,7 +201,8 @@ const factory: CustomToolFactory = (pi) => {
200
201
  }
201
202
 
202
203
  if (result.exitCode !== 0) {
203
- throw new Error(`Failed to generate map: ${result.stderr}`);
204
+ const errorMsg = result.stderr || result.stdout || "Unknown error";
205
+ throw new Error(`Failed to generate map: ${errorMsg}`);
204
206
  }
205
207
 
206
208
  return {
@@ -262,7 +264,8 @@ const factory: CustomToolFactory = (pi) => {
262
264
  }
263
265
 
264
266
  if (result.exitCode !== 0) {
265
- throw new Error(`Failed to extract TOC: ${result.stderr}`);
267
+ const errorMsg = result.stderr || result.stdout || "Unknown error";
268
+ throw new Error(`Failed to extract TOC: ${errorMsg}`);
266
269
  }
267
270
 
268
271
  return {
@@ -328,7 +331,8 @@ const factory: CustomToolFactory = (pi) => {
328
331
  }
329
332
 
330
333
  if (result.exitCode !== 0) {
331
- throw new Error(`Failed to read section: ${result.stderr}`);
334
+ const errorMsg = result.stderr || result.stdout || "Unknown error";
335
+ throw new Error(`Failed to read section: ${errorMsg}`);
332
336
  }
333
337
 
334
338
  return {
@@ -400,7 +404,8 @@ const factory: CustomToolFactory = (pi) => {
400
404
  }
401
405
 
402
406
  if (result.exitCode !== 0) {
403
- throw new Error(`Failed to find sections: ${result.stderr}`);
407
+ const errorMsg = result.stderr || result.stdout || "Unknown error";
408
+ throw new Error(`Failed to find sections: ${errorMsg}`);
404
409
  }
405
410
 
406
411
  return {
@@ -486,7 +491,8 @@ const factory: CustomToolFactory = (pi) => {
486
491
  }
487
492
 
488
493
  if (result.exitCode !== 0) {
489
- throw new Error(`Failed to replace section: ${result.stderr}`);
494
+ const errorMsg = result.stderr || result.stdout || "Unknown error";
495
+ throw new Error(`Failed to replace section: ${errorMsg}`);
490
496
  }
491
497
 
492
498
  return {
@@ -581,7 +587,8 @@ const factory: CustomToolFactory = (pi) => {
581
587
  }
582
588
 
583
589
  if (result.exitCode !== 0) {
584
- throw new Error(`Failed to insert content: ${result.stderr}`);
590
+ const errorMsg = result.stderr || result.stdout || "Unknown error";
591
+ throw new Error(`Failed to insert content: ${errorMsg}`);
585
592
  }
586
593
 
587
594
  return {
@@ -656,7 +663,8 @@ const factory: CustomToolFactory = (pi) => {
656
663
  }
657
664
 
658
665
  if (result.exitCode !== 0) {
659
- throw new Error(`Failed to delete section: ${result.stderr}`);
666
+ const errorMsg = result.stderr || result.stdout || "Unknown error";
667
+ throw new Error(`Failed to delete section: ${errorMsg}`);
660
668
  }
661
669
 
662
670
  return {
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