invar-tools 1.10.0__py3-none-any.whl → 1.12.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- invar/core/doc_edit.py +187 -0
- invar/core/doc_parser.py +563 -0
- invar/core/ts_sig_parser.py +6 -3
- invar/mcp/handlers.py +436 -0
- invar/mcp/server.py +351 -156
- invar/node_tools/ts-query.js +396 -0
- invar/shell/commands/doc.py +409 -0
- invar/shell/commands/guard.py +29 -0
- invar/shell/commands/init.py +72 -13
- invar/shell/commands/perception.py +302 -6
- invar/shell/doc_tools.py +459 -0
- invar/shell/fs.py +15 -14
- invar/shell/prove/crosshair.py +3 -0
- invar/shell/prove/guard_ts.py +13 -10
- invar/shell/py_refs.py +156 -0
- invar/shell/skill_manager.py +17 -15
- invar/shell/ts_compiler.py +238 -0
- invar/templates/examples/typescript/patterns.md +193 -0
- invar/templates/skills/develop/SKILL.md.jinja +46 -0
- invar/templates/skills/review/SKILL.md.jinja +205 -493
- {invar_tools-1.10.0.dist-info → invar_tools-1.12.0.dist-info}/METADATA +58 -8
- {invar_tools-1.10.0.dist-info → invar_tools-1.12.0.dist-info}/RECORD +27 -18
- {invar_tools-1.10.0.dist-info → invar_tools-1.12.0.dist-info}/WHEEL +0 -0
- {invar_tools-1.10.0.dist-info → invar_tools-1.12.0.dist-info}/entry_points.txt +0 -0
- {invar_tools-1.10.0.dist-info → invar_tools-1.12.0.dist-info}/licenses/LICENSE +0 -0
- {invar_tools-1.10.0.dist-info → invar_tools-1.12.0.dist-info}/licenses/LICENSE-GPL +0 -0
- {invar_tools-1.10.0.dist-info → invar_tools-1.12.0.dist-info}/licenses/NOTICE +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: invar-tools
|
|
3
|
-
Version: 1.
|
|
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,7 +24,9 @@ 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
|
|
29
|
+
Requires-Dist: markdown-it-py>=3.0
|
|
28
30
|
Requires-Dist: mcp>=1.0
|
|
29
31
|
Requires-Dist: pre-commit>=3.0
|
|
30
32
|
Requires-Dist: pydantic>=2.0
|
|
@@ -145,7 +147,19 @@ Guard passed.
|
|
|
145
147
|
|
|
146
148
|
## 🚀 Quick Start
|
|
147
149
|
|
|
148
|
-
|
|
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
|
|
149
163
|
|
|
150
164
|
### 📦 Two Packages, Different Purposes
|
|
151
165
|
|
|
@@ -178,6 +192,7 @@ uvx invar-tools init
|
|
|
178
192
|
# Or quick setup (skip prompts)
|
|
179
193
|
uvx invar-tools init --claude # Claude Code
|
|
180
194
|
uvx invar-tools init --pi # Pi Coding Agent
|
|
195
|
+
uvx invar-tools init --mcp-only # MCP tools only (legacy projects)
|
|
181
196
|
|
|
182
197
|
# Add runtime contracts to your project
|
|
183
198
|
pip install invar-runtime
|
|
@@ -301,14 +316,17 @@ function average(items: number[]): number {
|
|
|
301
316
|
|
|
302
317
|
### ✅ Solution 2: Multi-Layer Verification
|
|
303
318
|
|
|
304
|
-
Guard provides fast feedback
|
|
319
|
+
Guard provides fast feedback **on top of standard type checking**. Agent sees errors, fixes immediately:
|
|
305
320
|
|
|
306
321
|
| Layer | Tool | Speed | What It Catches |
|
|
307
322
|
|-------|------|-------|-----------------|
|
|
323
|
+
| **Type Check*** | mypy (Python) / tsc (TypeScript) | ~1s | Type errors, missing annotations |
|
|
308
324
|
| **Static** | Guard rules | ~0.5s | Architecture violations, missing contracts |
|
|
309
|
-
| **Doctest** | pytest | ~2s | Example correctness |
|
|
310
|
-
| **Property** | Hypothesis | ~10s | Edge cases via random inputs |
|
|
311
|
-
| **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>
|
|
312
330
|
|
|
313
331
|
```
|
|
314
332
|
┌──────────┐ ┌───────────┐ ┌───────────┐ ┌────────────┐
|
|
@@ -523,7 +541,7 @@ Cursor users get full verification via MCP:
|
|
|
523
541
|
|----------------|---------|----------|
|
|
524
542
|
| `INVAR.md` | Protocol for AI agents | Required |
|
|
525
543
|
| `.invar/` | Config, context, examples | Required |
|
|
526
|
-
| `.pre-commit-config.yaml` | Verification before commit | Optional |
|
|
544
|
+
| `.pre-commit-config.yaml` | Verification before commit (Ruff, mypy*, Guard) | Optional |
|
|
527
545
|
| `src/core/`, `src/shell/` | Recommended structure | Optional |
|
|
528
546
|
| `CLAUDE.md` | Agent instructions | Claude Code |
|
|
529
547
|
| `.claude/skills/` | Workflow + extension skills | Claude Code |
|
|
@@ -532,6 +550,8 @@ Cursor users get full verification via MCP:
|
|
|
532
550
|
| `.mcp.json` | MCP server config | Claude Code |
|
|
533
551
|
| `AGENT.md` | Universal agent instructions | Other agents |
|
|
534
552
|
|
|
553
|
+
<sup>* mypy hook included in `.pre-commit-config.yaml` but requires: `pip install mypy`</sup>
|
|
554
|
+
|
|
535
555
|
**Note:** If `pyproject.toml` exists, Guard configuration goes there as `[tool.invar.guard]` instead of `.invar/config.toml`.
|
|
536
556
|
|
|
537
557
|
**Recommended structure:**
|
|
@@ -584,7 +604,22 @@ These customizations are preserved when updating skills via `invar skill add`.
|
|
|
584
604
|
|
|
585
605
|
## 🔄 Legacy Project Migration
|
|
586
606
|
|
|
587
|
-
|
|
607
|
+
### Quick Start: MCP Tools Only
|
|
608
|
+
|
|
609
|
+
For projects that want Invar's MCP tools **without adopting the framework**:
|
|
610
|
+
|
|
611
|
+
```bash
|
|
612
|
+
uvx invar-tools init --mcp-only
|
|
613
|
+
```
|
|
614
|
+
|
|
615
|
+
This creates only `.mcp.json` — no INVAR.md, CLAUDE.md, or Core/Shell structure. Your AI agent gets access to:
|
|
616
|
+
- **Document tools** (`invar_doc_toc`, `invar_doc_read`, etc.)
|
|
617
|
+
- **Code navigation** (`invar_sig`, `invar_map`)
|
|
618
|
+
- **Basic verification** (`invar_guard` with minimal rules)
|
|
619
|
+
|
|
620
|
+
### Full Adoption: `/invar-onboard`
|
|
621
|
+
|
|
622
|
+
For projects that want to fully adopt Invar's patterns, use the `/invar-onboard` skill:
|
|
588
623
|
|
|
589
624
|
```bash
|
|
590
625
|
# Install the onboarding skill
|
|
@@ -785,9 +820,17 @@ rules = ["missing_contract", "shell_result"]
|
|
|
785
820
|
| `invar guard --coverage` | Collect branch coverage from tests |
|
|
786
821
|
| `invar init` | Initialize or update project (interactive) |
|
|
787
822
|
| `invar init --claude` | Quick setup for Claude Code |
|
|
823
|
+
| `invar init --pi` | Quick setup for Pi agent |
|
|
824
|
+
| `invar init --mcp-only` | MCP tools only (no framework files) |
|
|
788
825
|
| `invar uninstall` | Remove Invar from project (preserves user content) |
|
|
789
826
|
| `invar sig <file>` | Show signatures and contracts |
|
|
790
827
|
| `invar map` | Symbol map with reference counts |
|
|
828
|
+
| `invar doc toc <file>` | View document structure (headings) |
|
|
829
|
+
| `invar doc read <file> <section>` | Read specific section by slug/fuzzy/index |
|
|
830
|
+
| `invar doc find <pattern> <files>` | Search sections by title pattern |
|
|
831
|
+
| `invar doc replace <file> <section>` | Replace section content |
|
|
832
|
+
| `invar doc insert <file> <anchor>` | Insert content relative to section |
|
|
833
|
+
| `invar doc delete <file> <section>` | Delete section |
|
|
791
834
|
| `invar rules` | List all rules with severity |
|
|
792
835
|
| `invar test` | Property-based tests (Hypothesis) |
|
|
793
836
|
| `invar verify` | Symbolic verification (CrossHair) |
|
|
@@ -805,6 +848,13 @@ rules = ["missing_contract", "shell_result"]
|
|
|
805
848
|
| `invar_guard` | Smart multi-layer verification |
|
|
806
849
|
| `invar_sig` | Extract signatures and contracts |
|
|
807
850
|
| `invar_map` | Symbol map with reference counts |
|
|
851
|
+
| `invar_doc_toc` | Extract document structure (TOC) |
|
|
852
|
+
| `invar_doc_read` | Read specific section |
|
|
853
|
+
| `invar_doc_read_many` | Read multiple sections (batch) |
|
|
854
|
+
| `invar_doc_find` | Search sections by title pattern |
|
|
855
|
+
| `invar_doc_replace` | Replace section content |
|
|
856
|
+
| `invar_doc_insert` | Insert content relative to section |
|
|
857
|
+
| `invar_doc_delete` | Delete section |
|
|
808
858
|
|
|
809
859
|
---
|
|
810
860
|
|
|
@@ -2,6 +2,8 @@ invar/__init__.py,sha256=E-Mg9DG6qFzjP8D5TEkmy2ponvR99Yfn96RVJggAr64,1682
|
|
|
2
2
|
invar/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
3
3
|
invar/core/__init__.py,sha256=01TgQ2bqTFV4VFdksfqXYPa2WUqo-DpUWUkEcIUXFb4,218
|
|
4
4
|
invar/core/contracts.py,sha256=SOyF1KeJ6hrEwfQ09UzMt881OJKDXRbPTslKA6HzdKg,19085
|
|
5
|
+
invar/core/doc_edit.py,sha256=kLBkSQMFiXKdZMlQYAy-pzld1f1p2UFKGpKVVJo8Nes,6690
|
|
6
|
+
invar/core/doc_parser.py,sha256=yzZKzgr9myUiiRGtRidT2tubrs4-omtGlTwbUkSKhoM,18197
|
|
5
7
|
invar/core/entry_points.py,sha256=1p6GRGTp9kA9spNkGKidFLlzLPheh6JO2XFb68Cr0sE,12209
|
|
6
8
|
invar/core/extraction.py,sha256=mScqEMEEQdsd-Z0jx9g3scK6Z1vI9l-ESjggXPIWHZ4,6112
|
|
7
9
|
invar/core/format_specs.py,sha256=P299aRHFMXyow8STwsvaT6Bg2ALPs2wSy7SByiRZZ-A,5610
|
|
@@ -33,7 +35,7 @@ invar/core/template_parser.py,sha256=vH3H8OX55scZ1hWh3xoA8oJMhgleKufCOhkTvsSuu_4
|
|
|
33
35
|
invar/core/timeout_inference.py,sha256=BS2fJGmwOrLpYZUku4qrizgNDSIXVLFBslW-6sRAvpc,3451
|
|
34
36
|
invar/core/trivial_detection.py,sha256=KYP8jJb7QDeusAxFdX5NAML_H0NL5wLgMeBWDQmNqfU,6086
|
|
35
37
|
invar/core/ts_parsers.py,sha256=gXvLgb141gD8VAtiW4T1aaRnaSv10BEm0XYqArYIN00,8743
|
|
36
|
-
invar/core/ts_sig_parser.py,sha256=
|
|
38
|
+
invar/core/ts_sig_parser.py,sha256=_lUNfArFPILpENo-1dqmPY1qoVmcfAehv2Tva3r6dzw,9931
|
|
37
39
|
invar/core/utils.py,sha256=PyW8dcTLUEFD81xcvkz-LNnCwjIQefn08OUh23fM_Po,14266
|
|
38
40
|
invar/core/verification_routing.py,sha256=_jXi1txFCcUdnB3-Yavtuyk8N-XhEO_Vu_051Vuz27Y,5020
|
|
39
41
|
invar/core/patterns/__init__.py,sha256=79a3ucN0BI54RnIOe49lngKASpADygs1hll9ROCrP6s,1429
|
|
@@ -47,9 +49,11 @@ invar/core/patterns/registry.py,sha256=2rz0wWDRarMkuHN-qM_ZrT3qeGFDSKMABvRvPNZxQ
|
|
|
47
49
|
invar/core/patterns/types.py,sha256=ULAlWuAdmO6CFcEDjTrWBfzNTBsnomAl2d25tR11ihU,5506
|
|
48
50
|
invar/mcp/__init__.py,sha256=n3S7QwMjSMqOMT8cI2jf9E0yZPjKmBOJyIYhq4WZ8TQ,226
|
|
49
51
|
invar/mcp/__main__.py,sha256=ZcIT2U6xUyGOWucl4jq422BDE3lRLjqyxb9pFylRBdk,219
|
|
50
|
-
invar/mcp/
|
|
52
|
+
invar/mcp/handlers.py,sha256=b0LRWKMpu6lnjPV7SozH0cxKYJufVWy3eJhiAu3of-M,15947
|
|
53
|
+
invar/mcp/server.py,sha256=WmVNs2_AcOMbmp3tEgWR57hjqqJkMx3nV3z9fcNuSAA,20109
|
|
51
54
|
invar/node_tools/MANIFEST,sha256=UwtO2AsQ-0UwskG6ZkE2kXqz_hdp-gzRTyp32-X22Mc,131
|
|
52
55
|
invar/node_tools/__init__.py,sha256=HzILh3jtP28Lm2jZwss1SY65ECxbtw2J2uFpXQA6Y94,1740
|
|
56
|
+
invar/node_tools/ts-query.js,sha256=fEc_f0JT_Mb18dEoA4_vJoazvd7Lqv_rsed4eHSAbCg,13303
|
|
53
57
|
invar/node_tools/fc-runner/cli.js,sha256=72_gIhvnx2peKITdzdnFWI5fzGaNTS3BcEqyS628cI0,243277
|
|
54
58
|
invar/node_tools/quick-check/cli.js,sha256=dwV3hdJleFQga2cKUn3PPfQDvvujhzKdjQcIvWsKgM0,66196
|
|
55
59
|
invar/node_tools/ts-analyzer/cli.js,sha256=SvZ6HyjmobpP8NAZqXFiy8BwH_t5Hb17Ytar_18udaQ,4092887
|
|
@@ -58,7 +62,8 @@ invar/shell/claude_hooks.py,sha256=I_2VEepwS0kW55lW7U--FPwpuJq5hAXECcyYCd9D-jM,1
|
|
|
58
62
|
invar/shell/config.py,sha256=6-kbo6--SxfROXoyU-v7InSLR8f_U1Mar_xEOdCXFkY,17633
|
|
59
63
|
invar/shell/contract_coverage.py,sha256=81OQkQqUVYUKytG5aiJyRK62gwh9UzbSG926vkvFTc8,12088
|
|
60
64
|
invar/shell/coverage.py,sha256=m01o898IFIdBztEBQLwwL1Vt5PWrpUntO4lv4nWEkls,11344
|
|
61
|
-
invar/shell/
|
|
65
|
+
invar/shell/doc_tools.py,sha256=16gvo_ay9-_EK6lX16WkiRGg4OfTAKK_i0ucQkE7lbI,15149
|
|
66
|
+
invar/shell/fs.py,sha256=ctqU-EX0NnKC4txudRCRpbWxWSgBZTInXMeOUnl3IM0,6196
|
|
62
67
|
invar/shell/git.py,sha256=s6RQxEDQuLrmK3mru88EoYP8__4hiFW8AozlcxmY47E,2784
|
|
63
68
|
invar/shell/guard_helpers.py,sha256=QeYgbW0lgUa9Z_RCjAMG7UJdiMzz5cW48Lb2u-qgQi8,15114
|
|
64
69
|
invar/shell/guard_output.py,sha256=v3gG5P-_47nIFo8eAMKwdA_hLf2KZ0cQ-45Z6JjKp4w,12520
|
|
@@ -67,18 +72,21 @@ invar/shell/mutation.py,sha256=Lfyk2b8j8-hxAq-iwAgQeOhr7Ci6c5tRF1TXe3CxQCs,8914
|
|
|
67
72
|
invar/shell/pattern_integration.py,sha256=pRcjfq3NvMW_tvQCnaXZnD1k5AVEWK8CYOE2jN6VTro,7842
|
|
68
73
|
invar/shell/pi_hooks.py,sha256=ulZc1sP8mTRJTBsjwFHQzUgg-h8ajRIMp7iF1Y4UUtw,6885
|
|
69
74
|
invar/shell/property_tests.py,sha256=N9JreyH5PqR89oF5yLcX7ZAV-Koyg5BKo-J05-GUPsA,9109
|
|
70
|
-
invar/shell/
|
|
75
|
+
invar/shell/py_refs.py,sha256=Vjz50lmt9prDBcBv4nkkODdiJ7_DKu5zO4UPZBjAfmM,4638
|
|
76
|
+
invar/shell/skill_manager.py,sha256=Mr7Mh9rxPSKSAOTJCAM5ZHiG5nfUf6KQVCuD4LBNHSI,12440
|
|
71
77
|
invar/shell/subprocess_env.py,sha256=9oXl3eMEbzLsFEgMHqobEw6oW_wV0qMEP7pklwm58Pw,11453
|
|
72
78
|
invar/shell/template_engine.py,sha256=eNKMz7R8g9Xp3_1TGx-QH137jf52E0u3KaVcnotu1Tg,12056
|
|
73
79
|
invar/shell/templates.py,sha256=31f5ieoGeWU0qqfLJUMWnz0yyLa1FBc_sOz6UGzToqk,13884
|
|
74
80
|
invar/shell/testing.py,sha256=rTNBH0Okh2qtG9ohSXOz487baQ2gXrWT3s_WECW3HJs,11143
|
|
81
|
+
invar/shell/ts_compiler.py,sha256=nA8brnOhThj9J_J3vAEGjDsM4NjbWQ_eX8Yf4pHPOgk,6672
|
|
75
82
|
invar/shell/commands/__init__.py,sha256=MEkKwVyjI9DmkvBpJcuumXo2Pg_FFkfEr-Rr3nrAt7A,284
|
|
76
|
-
invar/shell/commands/
|
|
83
|
+
invar/shell/commands/doc.py,sha256=SOLDoCXXGxx_JU0PKXlAIGEF36PzconHmmAtL-rM6D4,13819
|
|
84
|
+
invar/shell/commands/guard.py,sha256=p0kI63RUzC1OTh_YviviY6dz2bq_SoBksGOp2NyocQM,24512
|
|
77
85
|
invar/shell/commands/hooks.py,sha256=W-SOnT4VQyUvXwipozkJwgEYfiOJGz7wksrbcdWegUg,2356
|
|
78
|
-
invar/shell/commands/init.py,sha256
|
|
86
|
+
invar/shell/commands/init.py,sha256=-FZTYTwJr_NRoluAM4YwcseNju56GSxtnKVkqsXREPg,20461
|
|
79
87
|
invar/shell/commands/merge.py,sha256=nuvKo8m32-OL-SCQlS4SLKmOZxQ3qj-1nGCx1Pgzifw,8183
|
|
80
88
|
invar/shell/commands/mutate.py,sha256=GwemiO6LlbGCBEQsBFnzZuKhF-wIMEl79GAMnKUWc8U,5765
|
|
81
|
-
invar/shell/commands/perception.py,sha256=
|
|
89
|
+
invar/shell/commands/perception.py,sha256=HewSv6Kv8Gw2UQqkGY2rP5YKlnwyC3LBrQ2hFVXXw30,19304
|
|
82
90
|
invar/shell/commands/skill.py,sha256=oKVyaxQ_LK28FpJhRpBDpXcpRdUBK3n6rC0qD77ax1M,5803
|
|
83
91
|
invar/shell/commands/sync_self.py,sha256=nmqBry7V2_enKwy2zzHg8UoedZNicLe3yKDhjmBeZ68,3880
|
|
84
92
|
invar/shell/commands/template_sync.py,sha256=aNWyFPMFT7pSwHrvwGCqcKAwb4dp7S9tvZzy9H4gAnw,16094
|
|
@@ -88,8 +96,8 @@ invar/shell/commands/update.py,sha256=-NNQQScEb_0bV1B8YFxTjpUECk9c8dGAiNVRc64nWh
|
|
|
88
96
|
invar/shell/prove/__init__.py,sha256=ZqlbmyMFJf6yAle8634jFuPRv8wNvHps8loMlOJyf8A,240
|
|
89
97
|
invar/shell/prove/accept.py,sha256=cnY_6jzU1EBnpLF8-zWUWcXiSXtCwxPsXEYXsSVPG38,3717
|
|
90
98
|
invar/shell/prove/cache.py,sha256=jbNdrvfLjvK7S0iqugErqeabb4YIbQuwIlcSRyCKbcg,4105
|
|
91
|
-
invar/shell/prove/crosshair.py,sha256=
|
|
92
|
-
invar/shell/prove/guard_ts.py,sha256=
|
|
99
|
+
invar/shell/prove/crosshair.py,sha256=XhJDsQWIriX9SuqeflUYvJgp9gJTDH7I7Uka6zjNzZ0,16734
|
|
100
|
+
invar/shell/prove/guard_ts.py,sha256=M285vnaKGC3Dokyu7PrjlNk-sT1TP8H821fz5K4CL8c,31717
|
|
93
101
|
invar/shell/prove/hypothesis.py,sha256=QUclOOUg_VB6wbmHw8O2EPiL5qBOeBRqQeM04AVuLw0,9880
|
|
94
102
|
invar/templates/CLAUDE.md.template,sha256=eaGU3SyRO_NEifw5b26k3srgQH4jyeujjCJ-HbM36_w,4913
|
|
95
103
|
invar/templates/__init__.py,sha256=cb3ht8KPK5oBn5oG6HsTznujmo9WriJ_P--fVxJwycc,45
|
|
@@ -119,6 +127,7 @@ invar/templates/examples/typescript/README.md,sha256=I6kVTJAk6wqb21eC09hyOZXRP74
|
|
|
119
127
|
invar/templates/examples/typescript/contracts.ts,sha256=X6EeNUAurw9MHJlHPDos_JtnScMu2aDMSkveIaA4wHs,4597
|
|
120
128
|
invar/templates/examples/typescript/core_shell.ts,sha256=VuPl0xmn_s6pA7ZJtq0zNjXzK_DRmq3LexwTS8MEqnQ,11267
|
|
121
129
|
invar/templates/examples/typescript/functional.ts,sha256=bQHfl0EYDC_RziRQLJBgPNBGhWBBO7SVSVchqBJUetM,17347
|
|
130
|
+
invar/templates/examples/typescript/patterns.md,sha256=rlZ6IOC8iYUQzIXaW7fUf95OQbeWPWSjQXDDJNoU05E,4859
|
|
122
131
|
invar/templates/examples/typescript/workflow.md,sha256=5byADjA3WgOgiDbkEtVRKKGvlhvu3EbFCzqEg9lEV7k,2764
|
|
123
132
|
invar/templates/hooks/PostToolUse.sh.jinja,sha256=JHJGMdF3xp2qEqkPC9GaLp0NCa5gdRzqAmgRy4IldBg,3428
|
|
124
133
|
invar/templates/hooks/PreToolUse.sh.jinja,sha256=tZb-FGFxOBtTprUfeChau7rZOMPII69_5HSF-i_WD4Q,3558
|
|
@@ -149,7 +158,7 @@ invar/templates/protocol/universal/session.md,sha256=bOaHfu-1QsCXaNyL-412W6b0YFu
|
|
|
149
158
|
invar/templates/protocol/universal/six-laws.md,sha256=15NHyDJhOlTU22FH9xhuEtrMGI3N5SyUCUnjq_0HCco,530
|
|
150
159
|
invar/templates/protocol/universal/usbv.md,sha256=WlAxDQ27dlNDale_HeusIjEiCdYSXXaFeO4ed_BiL0Q,659
|
|
151
160
|
invar/templates/protocol/universal/visible-workflow.md,sha256=nw3_Z3ZbEv4fjpgOMAZX2DNpYPvSJshLQ6aZfIfrrvA,726
|
|
152
|
-
invar/templates/skills/develop/SKILL.md.jinja,sha256=
|
|
161
|
+
invar/templates/skills/develop/SKILL.md.jinja,sha256=gTS3jTalTV6tnvKqiS4wUJzq4MLNO9VC_m50iVSJj70,17072
|
|
153
162
|
invar/templates/skills/extensions/_registry.yaml,sha256=T0Fkqg8ZKzlyQeoOcGtUsZRNnIyisxcZr_l6woKWBzY,2030
|
|
154
163
|
invar/templates/skills/extensions/acceptance/SKILL.md,sha256=-0pRJTBm6Jyo__KpN32ixNhNbuWUZDSMCDA6RXGnNiE,11719
|
|
155
164
|
invar/templates/skills/extensions/invar-onboard/SKILL.md,sha256=wFXlicF6JJUSLSB0YYP1cKO1cuseuAdOcqLsyJX0bes,11575
|
|
@@ -163,11 +172,11 @@ invar/templates/skills/extensions/security/patterns/python.yaml,sha256=osyR8mWiy
|
|
|
163
172
|
invar/templates/skills/extensions/security/patterns/typescript.yaml,sha256=qDEg-sxSE63Bis2IZG1y4L8m8g2ZYkC29o6t-J_LmUo,5508
|
|
164
173
|
invar/templates/skills/investigate/SKILL.md.jinja,sha256=cp6TBEixBYh1rLeeHOR1yqEnFqv1NZYePORMnavLkQI,3231
|
|
165
174
|
invar/templates/skills/propose/SKILL.md.jinja,sha256=6BuKiCqO1AEu3VtzMHy1QWGqr_xqG9eJlhbsKT4jev4,3463
|
|
166
|
-
invar/templates/skills/review/SKILL.md.jinja,sha256=
|
|
167
|
-
invar_tools-1.
|
|
168
|
-
invar_tools-1.
|
|
169
|
-
invar_tools-1.
|
|
170
|
-
invar_tools-1.
|
|
171
|
-
invar_tools-1.
|
|
172
|
-
invar_tools-1.
|
|
173
|
-
invar_tools-1.
|
|
175
|
+
invar/templates/skills/review/SKILL.md.jinja,sha256=ET5mbdSe_eKgJbi2LbgFC-z1aviKcHOBw7J5Q28fr4U,14105
|
|
176
|
+
invar_tools-1.12.0.dist-info/METADATA,sha256=jpbC0FFokpDTexuAf5nodUMsRM46nU5-ZC0SmVVN5cQ,28409
|
|
177
|
+
invar_tools-1.12.0.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
|
|
178
|
+
invar_tools-1.12.0.dist-info/entry_points.txt,sha256=RwH_EhqgtFPsnO6RcrwrAb70Zyfb8Mh6uUtztWnUxGk,102
|
|
179
|
+
invar_tools-1.12.0.dist-info/licenses/LICENSE,sha256=qeFksp4H4kfTgQxPCIu3OdagXyiZcgBlVfsQ6M5oFyk,10767
|
|
180
|
+
invar_tools-1.12.0.dist-info/licenses/LICENSE-GPL,sha256=IvZfC6ZbP7CLjytoHVzvpDZpD-Z3R_qa1GdMdWlWQ6Q,35157
|
|
181
|
+
invar_tools-1.12.0.dist-info/licenses/NOTICE,sha256=joEyMyFhFY8Vd8tTJ-a3SirI0m2Sd0WjzqYt3sdcglc,2561
|
|
182
|
+
invar_tools-1.12.0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|