@ranimontagna/agent-toolkit 0.1.17 → 0.1.18
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.
- package/CHANGELOG.md +11 -0
- package/CONTRIBUTING.md +34 -0
- package/README.md +51 -2
- package/SECURITY.md +24 -0
- package/dist/src/args.js +29 -0
- package/dist/src/args.js.map +1 -1
- package/dist/src/doctor.d.ts +28 -0
- package/dist/src/doctor.js +78 -0
- package/dist/src/doctor.js.map +1 -0
- package/dist/src/lock-update.d.ts +22 -0
- package/dist/src/lock-update.js +130 -0
- package/dist/src/lock-update.js.map +1 -0
- package/dist/src/main.js +74 -1
- package/dist/src/main.js.map +1 -1
- package/dist/src/manifest.d.ts +26 -0
- package/dist/src/manifest.js +104 -0
- package/dist/src/manifest.js.map +1 -0
- package/dist/src/release.d.ts +4 -0
- package/dist/src/release.js +80 -0
- package/dist/src/release.js.map +1 -0
- package/dist/src/skills-audit.d.ts +10 -0
- package/dist/src/skills-audit.js +75 -0
- package/dist/src/skills-audit.js.map +1 -0
- package/dist/src/skills.js +7 -2
- package/dist/src/skills.js.map +1 -1
- package/dist/src/state.d.ts +7 -0
- package/dist/src/state.js +7 -0
- package/dist/src/state.js.map +1 -1
- package/dist/src/usage.js +10 -0
- package/dist/src/usage.js.map +1 -1
- package/package.json +8 -2
- package/skills/general/thermo-nuclear-code-quality-review/LICENSE +21 -0
- package/skills/general/thermo-nuclear-code-quality-review/NOTICE.md +12 -0
- package/skills/general/thermo-nuclear-code-quality-review/SKILL.md +192 -0
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
## 0.1.17
|
|
4
|
+
|
|
5
|
+
- Added shadcn Improve installation from a pinned source.
|
|
6
|
+
- Added GSAP skills under the bundled frontend package.
|
|
7
|
+
- Updated external tool and runtime pins.
|
|
8
|
+
- Published through the trusted npm release workflow.
|
|
9
|
+
|
|
10
|
+
Earlier versions were developed before this changelog existed. Use Git history
|
|
11
|
+
and npm release metadata for older details.
|
package/CONTRIBUTING.md
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# Contributing
|
|
2
|
+
|
|
3
|
+
Agent Toolkit is a public installer for personal AI-agent workflows. Keep changes
|
|
4
|
+
small, pinned and easy to verify.
|
|
5
|
+
|
|
6
|
+
## Development Flow
|
|
7
|
+
|
|
8
|
+
1. Install dependencies with `pnpm install`.
|
|
9
|
+
2. Make focused changes that follow the existing TypeScript module boundaries.
|
|
10
|
+
3. Add or update tests for behavior that can regress.
|
|
11
|
+
4. Run the release gate before claiming completion:
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
rtk pnpm run check
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
If `rtk` is unavailable, run the same command without the prefix.
|
|
18
|
+
|
|
19
|
+
## Commit Messages
|
|
20
|
+
|
|
21
|
+
Use Conventional Commits:
|
|
22
|
+
|
|
23
|
+
```text
|
|
24
|
+
feat: add doctor command
|
|
25
|
+
fix: preserve skill manifest entries
|
|
26
|
+
docs: document release flow
|
|
27
|
+
test: cover installer dry run
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## External Sources
|
|
31
|
+
|
|
32
|
+
Keep `tools.lock.json` as the source of truth for external tools. New third-party
|
|
33
|
+
skills must use immutable public sources, include license/notice files when
|
|
34
|
+
vendored, and pass `pnpm run check`.
|
package/README.md
CHANGED
|
@@ -118,6 +118,30 @@ Install only bundled Custom Skills into the current project:
|
|
|
118
118
|
npx -y @ranimontagna/agent-toolkit --skills-only --codex --local
|
|
119
119
|
```
|
|
120
120
|
|
|
121
|
+
Preview an install plan without changing files:
|
|
122
|
+
|
|
123
|
+
```bash
|
|
124
|
+
npx -y @ranimontagna/agent-toolkit --all --codex --dry-run
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
Inspect selected tools and runtimes as JSON:
|
|
128
|
+
|
|
129
|
+
```bash
|
|
130
|
+
npx -y @ranimontagna/agent-toolkit --doctor --json --codex
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
Audit bundled Custom Skills metadata and local links:
|
|
134
|
+
|
|
135
|
+
```bash
|
|
136
|
+
npx -y @ranimontagna/agent-toolkit --skills-audit
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
Report newer candidates for pinned external tools:
|
|
140
|
+
|
|
141
|
+
```bash
|
|
142
|
+
npx -y @ranimontagna/agent-toolkit --update-lock
|
|
143
|
+
```
|
|
144
|
+
|
|
121
145
|
Install only the `core` Custom Skills package:
|
|
122
146
|
|
|
123
147
|
```bash
|
|
@@ -226,6 +250,8 @@ skills/
|
|
|
226
250
|
code-reviewer/
|
|
227
251
|
SKILL.md
|
|
228
252
|
rules/
|
|
253
|
+
thermo-nuclear-code-quality-review/
|
|
254
|
+
SKILL.md
|
|
229
255
|
devops/
|
|
230
256
|
docker-patterns/
|
|
231
257
|
SKILL.md
|
|
@@ -345,6 +371,7 @@ Follow these steps...
|
|
|
345
371
|
| `frontend` | `react-performance` | Copied from Affaan Mustafa's [`ECC`](https://github.com/affaan-m/ECC/tree/main/skills/react-performance) under the MIT license |
|
|
346
372
|
| `frontend` | `react-testing` | Copied from Affaan Mustafa's [`ECC`](https://github.com/affaan-m/ECC/tree/main/skills/react-testing) under the MIT license |
|
|
347
373
|
| `general` | `code-reviewer` | Copied from Shubhamsaboo's [`awesome-llm-apps`](https://github.com/Shubhamsaboo/awesome-llm-apps/tree/main/awesome_agent_skills/code-reviewer) under the repository Apache-2.0 license |
|
|
374
|
+
| `general` | `thermo-nuclear-code-quality-review` | Copied from Cursor's [`plugins`](https://github.com/cursor/plugins/tree/main/cursor-team-kit/skills/thermo-nuclear-code-quality-review) repository under the MIT license |
|
|
348
375
|
|
|
349
376
|
Each React skill carries its own ECC `rules/react` references so Markdown links
|
|
350
377
|
still resolve after the installer copies skills into flat runtime directories.
|
|
@@ -405,6 +432,16 @@ Install scope:
|
|
|
405
432
|
--skills-path PATH Install an exact Custom Skill path
|
|
406
433
|
--skills-list List discovered Custom Skills and exit
|
|
407
434
|
|
|
435
|
+
Operations:
|
|
436
|
+
--dry-run Print the selected install plan without changing files
|
|
437
|
+
--plan-only Alias for --dry-run
|
|
438
|
+
--doctor, --status Inspect selected tools and runtimes without installing
|
|
439
|
+
--json Emit machine-readable output for supported operations
|
|
440
|
+
--uninstall Remove files recorded in the Agent Toolkit manifest
|
|
441
|
+
--repair Re-run selected installs and refresh the manifest
|
|
442
|
+
--update-lock Report newer versions for pinned external sources
|
|
443
|
+
--skills-audit Validate bundled Custom Skills metadata and links
|
|
444
|
+
|
|
408
445
|
Other:
|
|
409
446
|
--install-missing-clis Install or update selected runtime CLIs
|
|
410
447
|
--allow-mutable-sources Allow explicit mutable package sources like @latest
|
|
@@ -592,6 +629,9 @@ pnpm run typecheck
|
|
|
592
629
|
pnpm run lint
|
|
593
630
|
pnpm run lint:fix
|
|
594
631
|
pnpm run format
|
|
632
|
+
pnpm run release:patch
|
|
633
|
+
pnpm run release:minor
|
|
634
|
+
pnpm run release:major
|
|
595
635
|
pnpm run security
|
|
596
636
|
pnpm run test:unit
|
|
597
637
|
pnpm run test:integration
|
|
@@ -621,8 +661,17 @@ Release a new npm version by updating `package.json`, pushing the change to
|
|
|
621
661
|
`main`, then pushing a matching tag:
|
|
622
662
|
|
|
623
663
|
```bash
|
|
624
|
-
git tag v0.1.
|
|
625
|
-
git push origin v0.1.
|
|
664
|
+
git tag v0.1.18
|
|
665
|
+
git push origin v0.1.18
|
|
666
|
+
```
|
|
667
|
+
|
|
668
|
+
For normal releases, prefer the scripted flow. It bumps `package.json`, updates
|
|
669
|
+
the README release tag example, runs `pnpm run check`, commits with a
|
|
670
|
+
Conventional Commit message and creates the local tag:
|
|
671
|
+
|
|
672
|
+
```bash
|
|
673
|
+
pnpm run release:patch
|
|
674
|
+
git push origin main v0.1.18
|
|
626
675
|
```
|
|
627
676
|
|
|
628
677
|
The `Release` workflow runs the full check and publishes the scoped package to
|
package/SECURITY.md
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# Security
|
|
2
|
+
|
|
3
|
+
Agent Toolkit installs tools and skills into local agent runtime directories, so
|
|
4
|
+
supply-chain changes need careful review.
|
|
5
|
+
|
|
6
|
+
## Reporting
|
|
7
|
+
|
|
8
|
+
Open a GitHub security advisory or a private issue with:
|
|
9
|
+
|
|
10
|
+
- affected version or commit;
|
|
11
|
+
- exact command used;
|
|
12
|
+
- affected runtime and install scope;
|
|
13
|
+
- relevant logs with secrets removed.
|
|
14
|
+
|
|
15
|
+
Do not paste tokens, private repository URLs or internal project names into
|
|
16
|
+
public issues.
|
|
17
|
+
|
|
18
|
+
## Project Controls
|
|
19
|
+
|
|
20
|
+
- repository dependencies are locked by `pnpm-lock.yaml`;
|
|
21
|
+
- external installer sources are pinned in `tools.lock.json`;
|
|
22
|
+
- mutable sources are blocked unless `--allow-mutable-sources` is explicit;
|
|
23
|
+
- CI runs lint, typecheck, tests, build, Gitleaks and dependency audit;
|
|
24
|
+
- npm releases use trusted publishing through GitHub Actions OIDC.
|
package/dist/src/args.js
CHANGED
|
@@ -169,6 +169,35 @@ export function parseArgs(argv) {
|
|
|
169
169
|
state.listSkills = true;
|
|
170
170
|
state.nonInteractive = true;
|
|
171
171
|
break;
|
|
172
|
+
case "--dry-run":
|
|
173
|
+
case "--plan-only":
|
|
174
|
+
state.dryRun = true;
|
|
175
|
+
state.nonInteractive = true;
|
|
176
|
+
break;
|
|
177
|
+
case "--doctor":
|
|
178
|
+
case "--status":
|
|
179
|
+
state.doctor = true;
|
|
180
|
+
state.nonInteractive = true;
|
|
181
|
+
break;
|
|
182
|
+
case "--json":
|
|
183
|
+
state.jsonOutput = true;
|
|
184
|
+
break;
|
|
185
|
+
case "--uninstall":
|
|
186
|
+
state.uninstall = true;
|
|
187
|
+
state.nonInteractive = true;
|
|
188
|
+
break;
|
|
189
|
+
case "--repair":
|
|
190
|
+
state.repair = true;
|
|
191
|
+
state.nonInteractive = true;
|
|
192
|
+
break;
|
|
193
|
+
case "--update-lock":
|
|
194
|
+
state.updateLock = true;
|
|
195
|
+
state.nonInteractive = true;
|
|
196
|
+
break;
|
|
197
|
+
case "--skills-audit":
|
|
198
|
+
state.auditSkills = true;
|
|
199
|
+
state.nonInteractive = true;
|
|
200
|
+
break;
|
|
172
201
|
case "--install-missing-clis":
|
|
173
202
|
state.installMissingClis = true;
|
|
174
203
|
break;
|
package/dist/src/args.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"args.js","sourceRoot":"","sources":["../../src/args.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"args.js","sourceRoot":"","sources":["../../src/args.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAClC,OAAO,EACL,iBAAiB,EACjB,cAAc,EACd,cAAc,EACd,WAAW,EACX,SAAS,EACT,KAAK,GACN,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,MAAM,UAAU,SAAS,CAAC,IAAc;IACtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QACxC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,IAAI,CAAC,GAAG;YAAE,SAAS;QACnB,QAAQ,GAAG,EAAE,CAAC;YACZ,KAAK,OAAO;gBACV,WAAW,CAAC,IAAI,CAAC,CAAC;gBAClB,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC;gBAC5B,MAAM;YACR,KAAK,YAAY;gBACf,cAAc,CAAC,KAAK,CAAC,CAAC;gBACtB,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC;gBAC5B,MAAM;YACR,KAAK,gBAAgB;gBACnB,cAAc,CAAC,SAAS,CAAC,CAAC;gBAC1B,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC;gBAC5B,MAAM;YACR,KAAK,oBAAoB;gBACvB,cAAc,CAAC,aAAa,CAAC,CAAC;gBAC9B,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC;gBAC5B,MAAM;YACR,KAAK,iBAAiB;gBACpB,cAAc,CAAC,UAAU,CAAC,CAAC;gBAC3B,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC;gBAC5B,MAAM;YACR,KAAK,YAAY;gBACf,cAAc,CAAC,KAAK,CAAC,CAAC;gBACtB,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC;gBAC5B,MAAM;YACR,KAAK,gBAAgB;gBACnB,cAAc,CAAC,SAAS,CAAC,CAAC;gBAC1B,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC;gBAC5B,MAAM;YACR,KAAK,wBAAwB;gBAC3B,cAAc,CAAC,iBAAiB,CAAC,CAAC;gBAClC,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC;gBAC5B,MAAM;YACR,KAAK,eAAe;gBAClB,cAAc,CAAC,QAAQ,CAAC,CAAC;gBACzB,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC;gBAC5B,MAAM;YACR,KAAK,UAAU;gBACb,KAAK,CAAC,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC;gBACxB,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC;gBAC5B,MAAM;YACR,KAAK,cAAc;gBACjB,KAAK,CAAC,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC;gBAC5B,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC;gBAC5B,MAAM;YACR,KAAK,kBAAkB;gBACrB,KAAK,CAAC,KAAK,CAAC,WAAW,GAAG,KAAK,CAAC;gBAChC,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC;gBAC5B,MAAM;YACR,KAAK,eAAe;gBAClB,KAAK,CAAC,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC;gBAC7B,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC;gBAC5B,MAAM;YACR,KAAK,UAAU;gBACb,KAAK,CAAC,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC;gBACxB,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC;gBAC5B,MAAM;YACR,KAAK,cAAc;gBACjB,KAAK,CAAC,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC;gBAC5B,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC;gBAC5B,MAAM;YACR,KAAK,sBAAsB;gBACzB,KAAK,CAAC,KAAK,CAAC,iBAAiB,CAAC,GAAG,KAAK,CAAC;gBACvC,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC;gBAC5B,MAAM;YACR,KAAK,aAAa;gBAChB,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC;gBAC3B,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC;gBAC5B,MAAM;YACR,KAAK,gBAAgB;gBACnB,cAAc,CAAC,IAAI,CAAC,CAAC;gBACrB,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC;gBAC5B,MAAM;YACR,KAAK,UAAU;gBACb,iBAAiB,CAAC,QAAQ,CAAC,CAAC;gBAC5B,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC;gBAC5B,MAAM;YACR,KAAK,SAAS;gBACZ,iBAAiB,CAAC,OAAO,CAAC,CAAC;gBAC3B,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC;gBAC5B,MAAM;YACR,KAAK,YAAY;gBACf,iBAAiB,CAAC,UAAU,CAAC,CAAC;gBAC9B,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC;gBAC5B,MAAM;YACR,KAAK,UAAU;gBACb,iBAAiB,CAAC,QAAQ,CAAC,CAAC;gBAC5B,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC;gBAC5B,MAAM;YACR,KAAK,eAAe;gBAClB,iBAAiB,CAAC,aAAa,CAAC,CAAC;gBACjC,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC;gBAC5B,MAAM;YACR,KAAK,aAAa;gBAChB,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,KAAK,CAAC;gBAC9B,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC;gBAC5B,MAAM;YACR,KAAK,YAAY;gBACf,KAAK,CAAC,QAAQ,CAAC,KAAK,GAAG,KAAK,CAAC;gBAC7B,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC;gBAC5B,MAAM;YACR,KAAK,eAAe;gBAClB,KAAK,CAAC,QAAQ,CAAC,QAAQ,GAAG,KAAK,CAAC;gBAChC,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC;gBAC5B,MAAM;YACR,KAAK,aAAa;gBAChB,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,KAAK,CAAC;gBAC9B,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC;gBAC5B,MAAM;YACR,KAAK,kBAAkB;gBACrB,KAAK,CAAC,QAAQ,CAAC,WAAW,GAAG,KAAK,CAAC;gBACnC,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC;gBAC5B,MAAM;YACR,KAAK,UAAU;gBACb,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC;gBAC1B,MAAM;YACR,KAAK,SAAS;gBACZ,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAC;gBACzB,MAAM;YACR,KAAK,cAAc;gBACjB,CAAC,IAAI,CAAC,CAAC;gBACP,CAAC;oBACC,MAAM,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;oBAC1B,IAAI,CAAC,SAAS;wBAAE,GAAG,CAAC,oCAAoC,CAAC,CAAC;oBAC1D,KAAK,CAAC,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;gBAClD,CAAC;gBACD,MAAM;YACR,KAAK,gBAAgB;gBACnB,CAAC,IAAI,CAAC,CAAC;gBACP,CAAC;oBACC,MAAM,WAAW,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;oBAC5B,IAAI,CAAC,WAAW;wBAAE,GAAG,CAAC,uCAAuC,CAAC,CAAC;oBAC/D,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC;gBACpD,CAAC;gBACD,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC;gBAC5B,MAAM;YACR,KAAK,eAAe;gBAClB,CAAC,IAAI,CAAC,CAAC;gBACP,CAAC;oBACC,MAAM,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;oBAC3B,IAAI,CAAC,UAAU;wBAAE,GAAG,CAAC,sCAAsC,CAAC,CAAC;oBAC7D,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;gBAClD,CAAC;gBACD,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC;gBAC5B,MAAM;YACR,KAAK,kBAAkB;gBACrB,CAAC,IAAI,CAAC,CAAC;gBACP,CAAC;oBACC,MAAM,aAAa,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;oBAC9B,IAAI,CAAC,aAAa;wBAAE,GAAG,CAAC,2CAA2C,CAAC,CAAC;oBACrE,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC;gBACxD,CAAC;gBACD,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC;gBAC5B,MAAM;YACR,KAAK,eAAe;gBAClB,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC;gBACxB,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC;gBAC5B,MAAM;YACR,KAAK,WAAW,CAAC;YACjB,KAAK,aAAa;gBAChB,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC;gBACpB,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC;gBAC5B,MAAM;YACR,KAAK,UAAU,CAAC;YAChB,KAAK,UAAU;gBACb,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC;gBACpB,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC;gBAC5B,MAAM;YACR,KAAK,QAAQ;gBACX,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC;gBACxB,MAAM;YACR,KAAK,aAAa;gBAChB,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC;gBACvB,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC;gBAC5B,MAAM;YACR,KAAK,UAAU;gBACb,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC;gBACpB,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC;gBAC5B,MAAM;YACR,KAAK,eAAe;gBAClB,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC;gBACxB,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC;gBAC5B,MAAM;YACR,KAAK,gBAAgB;gBACnB,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC;gBACzB,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC;gBAC5B,MAAM;YACR,KAAK,wBAAwB;gBAC3B,KAAK,CAAC,kBAAkB,GAAG,IAAI,CAAC;gBAChC,MAAM;YACR,KAAK,yBAAyB;gBAC5B,KAAK,CAAC,mBAAmB,GAAG,IAAI,CAAC;gBACjC,MAAM;YACR,KAAK,QAAQ,CAAC;YACd,KAAK,IAAI;gBACP,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;gBACrB,OAAO,KAAK,CAAC;YACf;gBACE,GAAG,CAAC,iBAAiB,GAAG,yBAAyB,CAAC,CAAC;QACvD,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { type InstallScope, type RuntimeName, type ToolName } from "./state.js";
|
|
2
|
+
import type { InstallerStatus } from "./status.js";
|
|
3
|
+
type DoctorIssue = {
|
|
4
|
+
kind: "tool" | "runtime" | "skills";
|
|
5
|
+
name: string;
|
|
6
|
+
message: string;
|
|
7
|
+
};
|
|
8
|
+
export type DoctorReport = {
|
|
9
|
+
command: "doctor";
|
|
10
|
+
ok: boolean;
|
|
11
|
+
scope: InstallScope;
|
|
12
|
+
customSkillsDir: string;
|
|
13
|
+
installMissingClis: boolean;
|
|
14
|
+
selectedTools: ToolName[];
|
|
15
|
+
selectedRuntimes: RuntimeName[];
|
|
16
|
+
status: InstallerStatus;
|
|
17
|
+
issues: DoctorIssue[];
|
|
18
|
+
};
|
|
19
|
+
type DoctorInput = {
|
|
20
|
+
selectedTools: ToolName[];
|
|
21
|
+
selectedRuntimes: RuntimeName[];
|
|
22
|
+
scope: InstallScope;
|
|
23
|
+
customSkillsDir: string;
|
|
24
|
+
installMissingClis: boolean;
|
|
25
|
+
};
|
|
26
|
+
export declare function buildDoctorReport(status: InstallerStatus, input: DoctorInput): DoctorReport;
|
|
27
|
+
export declare function formatDoctorReport(report: DoctorReport): string;
|
|
28
|
+
export {};
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { runtimeMeta, } from "./state.js";
|
|
2
|
+
function toolLabel(tool) {
|
|
3
|
+
switch (tool) {
|
|
4
|
+
case "rtk":
|
|
5
|
+
return "RTK";
|
|
6
|
+
case "caveman":
|
|
7
|
+
return "Caveman";
|
|
8
|
+
case "superpowers":
|
|
9
|
+
return "Superpowers";
|
|
10
|
+
case "graphify":
|
|
11
|
+
return "Graphify";
|
|
12
|
+
case "gsd":
|
|
13
|
+
return "GSD";
|
|
14
|
+
case "improve":
|
|
15
|
+
return "Improve";
|
|
16
|
+
case "frontend-skills":
|
|
17
|
+
return "Frontend Skills";
|
|
18
|
+
case "skills":
|
|
19
|
+
return "Custom Skills";
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
export function buildDoctorReport(status, input) {
|
|
23
|
+
const issues = [];
|
|
24
|
+
for (const tool of input.selectedTools) {
|
|
25
|
+
const detection = status.tools[tool];
|
|
26
|
+
if (detection.state === "missing") {
|
|
27
|
+
issues.push({
|
|
28
|
+
kind: tool === "skills" ? "skills" : "tool",
|
|
29
|
+
name: toolLabel(tool),
|
|
30
|
+
message: `${toolLabel(tool)} is selected but ${detection.summary}.`,
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
for (const runtime of input.selectedRuntimes) {
|
|
35
|
+
const detection = status.runtimes[runtime];
|
|
36
|
+
if (detection.state === "missing") {
|
|
37
|
+
const installHint = input.installMissingClis
|
|
38
|
+
? "The installer is allowed to install or update it."
|
|
39
|
+
: "Re-run with --install-missing-clis or install it manually.";
|
|
40
|
+
issues.push({
|
|
41
|
+
kind: "runtime",
|
|
42
|
+
name: runtimeMeta[runtime].display,
|
|
43
|
+
message: `${runtimeMeta[runtime].display} is selected but ${detection.summary}. ${installHint}`,
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
return {
|
|
48
|
+
command: "doctor",
|
|
49
|
+
ok: issues.length === 0,
|
|
50
|
+
scope: input.scope,
|
|
51
|
+
customSkillsDir: input.customSkillsDir,
|
|
52
|
+
installMissingClis: input.installMissingClis,
|
|
53
|
+
selectedTools: input.selectedTools,
|
|
54
|
+
selectedRuntimes: input.selectedRuntimes,
|
|
55
|
+
status,
|
|
56
|
+
issues,
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
export function formatDoctorReport(report) {
|
|
60
|
+
const lines = [
|
|
61
|
+
"Doctor report",
|
|
62
|
+
`Scope: ${report.scope}`,
|
|
63
|
+
`Custom Skills source: ${report.customSkillsDir}`,
|
|
64
|
+
`Selected tools: ${report.selectedTools.join(", ") || "none"}`,
|
|
65
|
+
`Selected runtimes: ${report.selectedRuntimes.join(", ") || "none"}`,
|
|
66
|
+
"",
|
|
67
|
+
];
|
|
68
|
+
if (report.issues.length === 0) {
|
|
69
|
+
lines.push("No blocking issues found for the selected plan.");
|
|
70
|
+
return lines.join("\n");
|
|
71
|
+
}
|
|
72
|
+
lines.push("Issues:");
|
|
73
|
+
for (const issue of report.issues) {
|
|
74
|
+
lines.push(`- ${issue.name}: ${issue.message}`);
|
|
75
|
+
}
|
|
76
|
+
return lines.join("\n");
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=doctor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/doctor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { type RunResult } from "./system.js";
|
|
2
|
+
import { type ToolLock } from "./tool-lock.js";
|
|
3
|
+
export type LockUpdateItem = {
|
|
4
|
+
name: string;
|
|
5
|
+
source: "npm" | "pypi" | "github" | "github-release";
|
|
6
|
+
current: string;
|
|
7
|
+
latest?: string;
|
|
8
|
+
status: "current" | "update-available" | "unknown";
|
|
9
|
+
error?: string;
|
|
10
|
+
};
|
|
11
|
+
export type LockUpdateReport = {
|
|
12
|
+
command: "update-lock";
|
|
13
|
+
items: LockUpdateItem[];
|
|
14
|
+
};
|
|
15
|
+
type Clients = {
|
|
16
|
+
capture?: (command: string, args?: string[]) => RunResult;
|
|
17
|
+
fetchJson?: (url: string) => Promise<unknown>;
|
|
18
|
+
};
|
|
19
|
+
export declare function buildLockUpdateReport(lock?: ToolLock, clients?: Clients): Promise<LockUpdateReport>;
|
|
20
|
+
export declare function formatLockUpdateReport(report: LockUpdateReport): string;
|
|
21
|
+
export declare function printLockUpdateError(error: unknown): void;
|
|
22
|
+
export {};
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
import { err } from "./logger.js";
|
|
2
|
+
import { capture, fetchJson } from "./system.js";
|
|
3
|
+
import { loadToolLock } from "./tool-lock.js";
|
|
4
|
+
function itemStatus(current, latest) {
|
|
5
|
+
if (!latest)
|
|
6
|
+
return "unknown";
|
|
7
|
+
return current === latest ? "current" : "update-available";
|
|
8
|
+
}
|
|
9
|
+
async function latestNpmVersion(packageName, clients) {
|
|
10
|
+
const result = clients.capture("npm", [
|
|
11
|
+
"view",
|
|
12
|
+
packageName,
|
|
13
|
+
"version",
|
|
14
|
+
"--silent",
|
|
15
|
+
]);
|
|
16
|
+
if (!result.ok) {
|
|
17
|
+
throw new Error(result.stderr.trim() || `npm view failed for ${packageName}`);
|
|
18
|
+
}
|
|
19
|
+
const version = result.stdout.trim().split(/\r?\n/).at(-1)?.trim();
|
|
20
|
+
if (!version)
|
|
21
|
+
throw new Error(`npm did not return a version for ${packageName}`);
|
|
22
|
+
return version;
|
|
23
|
+
}
|
|
24
|
+
async function latestPyPiVersion(packageName, clients) {
|
|
25
|
+
const response = (await clients.fetchJson(`https://pypi.org/pypi/${encodeURIComponent(packageName)}/json`));
|
|
26
|
+
if (!response.info?.version) {
|
|
27
|
+
throw new Error(`PyPI did not return a version for ${packageName}`);
|
|
28
|
+
}
|
|
29
|
+
return response.info.version;
|
|
30
|
+
}
|
|
31
|
+
async function latestGitHubCommit(repository, clients) {
|
|
32
|
+
const repo = (await clients.fetchJson(`https://api.github.com/repos/${repository}`));
|
|
33
|
+
const branch = repo.default_branch || "main";
|
|
34
|
+
const commit = (await clients.fetchJson(`https://api.github.com/repos/${repository}/commits/${encodeURIComponent(branch)}`));
|
|
35
|
+
if (!commit.sha)
|
|
36
|
+
throw new Error(`GitHub did not return a commit for ${repository}`);
|
|
37
|
+
return commit.sha;
|
|
38
|
+
}
|
|
39
|
+
async function latestGitHubRelease(repository, clients) {
|
|
40
|
+
const release = (await clients.fetchJson(`https://api.github.com/repos/${repository}/releases/latest`));
|
|
41
|
+
if (!release.tag_name) {
|
|
42
|
+
throw new Error(`GitHub did not return a latest release for ${repository}`);
|
|
43
|
+
}
|
|
44
|
+
return release.tag_name;
|
|
45
|
+
}
|
|
46
|
+
async function collectItem(item, resolver) {
|
|
47
|
+
try {
|
|
48
|
+
const latest = await resolver();
|
|
49
|
+
return {
|
|
50
|
+
...item,
|
|
51
|
+
latest,
|
|
52
|
+
status: itemStatus(item.current, latest),
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
catch (error) {
|
|
56
|
+
return {
|
|
57
|
+
...item,
|
|
58
|
+
status: "unknown",
|
|
59
|
+
error: error instanceof Error ? error.message : String(error),
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
export async function buildLockUpdateReport(lock = loadToolLock(), clients = {}) {
|
|
64
|
+
const resolvedClients = {
|
|
65
|
+
capture: clients.capture || capture,
|
|
66
|
+
fetchJson: clients.fetchJson || fetchJson,
|
|
67
|
+
};
|
|
68
|
+
const items = await Promise.all([
|
|
69
|
+
collectItem({
|
|
70
|
+
name: "RTK",
|
|
71
|
+
source: "github-release",
|
|
72
|
+
current: lock.tools.rtk.tag,
|
|
73
|
+
}, () => latestGitHubRelease(lock.tools.rtk.repository, resolvedClients)),
|
|
74
|
+
collectItem({
|
|
75
|
+
name: "Caveman",
|
|
76
|
+
source: "github",
|
|
77
|
+
current: lock.tools.caveman.ref,
|
|
78
|
+
}, () => latestGitHubCommit(lock.tools.caveman.repository, resolvedClients)),
|
|
79
|
+
collectItem({
|
|
80
|
+
name: "Graphify",
|
|
81
|
+
source: "pypi",
|
|
82
|
+
current: lock.tools.graphify.version,
|
|
83
|
+
}, () => latestPyPiVersion(lock.tools.graphify.package, resolvedClients)),
|
|
84
|
+
collectItem({
|
|
85
|
+
name: "GSD",
|
|
86
|
+
source: "npm",
|
|
87
|
+
current: lock.tools.gsd.version,
|
|
88
|
+
}, () => latestNpmVersion(lock.tools.gsd.package, resolvedClients)),
|
|
89
|
+
collectItem({
|
|
90
|
+
name: "Improve",
|
|
91
|
+
source: "github",
|
|
92
|
+
current: lock.tools.improve.ref,
|
|
93
|
+
}, () => latestGitHubCommit(lock.tools.improve.repository, resolvedClients)),
|
|
94
|
+
collectItem({
|
|
95
|
+
name: "Agent Skills CLI",
|
|
96
|
+
source: "npm",
|
|
97
|
+
current: lock.tools.frontendSkills.skillsCli.version,
|
|
98
|
+
}, () => latestNpmVersion(lock.tools.frontendSkills.skillsCli.package, resolvedClients)),
|
|
99
|
+
collectItem({
|
|
100
|
+
name: "Impeccable",
|
|
101
|
+
source: "github",
|
|
102
|
+
current: lock.tools.frontendSkills.impeccable.ref,
|
|
103
|
+
}, () => latestGitHubCommit(lock.tools.frontendSkills.impeccable.repository, resolvedClients)),
|
|
104
|
+
collectItem({
|
|
105
|
+
name: "Taste Skill",
|
|
106
|
+
source: "github",
|
|
107
|
+
current: lock.tools.frontendSkills.tasteSkill.ref,
|
|
108
|
+
}, () => latestGitHubCommit(lock.tools.frontendSkills.tasteSkill.repository, resolvedClients)),
|
|
109
|
+
...["claude", "codex", "opencode", "gemini"].map((runtime) => collectItem({
|
|
110
|
+
name: `${runtime} CLI`,
|
|
111
|
+
source: "npm",
|
|
112
|
+
current: lock.runtimeClis[runtime].version,
|
|
113
|
+
}, () => latestNpmVersion(lock.runtimeClis[runtime].package, resolvedClients))),
|
|
114
|
+
]);
|
|
115
|
+
return { command: "update-lock", items };
|
|
116
|
+
}
|
|
117
|
+
export function formatLockUpdateReport(report) {
|
|
118
|
+
const lines = ["External source update report"];
|
|
119
|
+
for (const item of report.items) {
|
|
120
|
+
const latest = item.latest || "unknown";
|
|
121
|
+
const suffix = item.error ? ` (${item.error})` : "";
|
|
122
|
+
lines.push(`- ${item.name}: ${item.current} -> ${latest} [${item.status}]${suffix}`);
|
|
123
|
+
}
|
|
124
|
+
lines.push("", "This command reports candidates only; update tools.lock.json intentionally after reviewing checksums and changelogs.");
|
|
125
|
+
return lines.join("\n");
|
|
126
|
+
}
|
|
127
|
+
export function printLockUpdateError(error) {
|
|
128
|
+
err(error instanceof Error ? error.message : String(error));
|
|
129
|
+
}
|
|
130
|
+
//# sourceMappingURL=lock-update.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lock-update.js","sourceRoot":"","sources":["../../src/lock-update.ts"],"names":[],"mappings":"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"}
|
package/dist/src/main.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import process from "node:process";
|
|
2
2
|
import { parseArgs } from "./args.js";
|
|
3
|
+
import { buildDoctorReport, formatDoctorReport } from "./doctor.js";
|
|
3
4
|
import { installCaveman } from "./installers/caveman.js";
|
|
4
5
|
import { installFrontendSkills } from "./installers/frontend-skills.js";
|
|
5
6
|
import { installGraphify } from "./installers/graphify.js";
|
|
@@ -7,13 +8,49 @@ import { installGsd } from "./installers/gsd.js";
|
|
|
7
8
|
import { installImprove } from "./installers/improve.js";
|
|
8
9
|
import { installRtk } from "./installers/rtk.js";
|
|
9
10
|
import { installSuperpowers } from "./installers/superpowers.js";
|
|
11
|
+
import { buildLockUpdateReport, formatLockUpdateReport, printLockUpdateError, } from "./lock-update.js";
|
|
10
12
|
import { die, err, skip, warn } from "./logger.js";
|
|
13
|
+
import { savePendingManifest, uninstallFromManifest } from "./manifest.js";
|
|
11
14
|
import { showMenu } from "./menu.js";
|
|
12
15
|
import { checkExternalToolProvenance } from "./provenance.js";
|
|
13
16
|
import { checkPrerequisites } from "./runtimes.js";
|
|
14
17
|
import { installCustomSkills, listCustomSkills } from "./skills.js";
|
|
15
|
-
import {
|
|
18
|
+
import { auditSkills, printSkillsAudit } from "./skills-audit.js";
|
|
19
|
+
import { anyRuntimeSelected, anyToolSelected, runtimeNames, state, toolNames, } from "./state.js";
|
|
20
|
+
import { detectInstallerStatus, formatInstallPlan } from "./status.js";
|
|
16
21
|
import { printHeader, printSelections, printSummary } from "./ui.js";
|
|
22
|
+
function selectedTools() {
|
|
23
|
+
return toolNames.filter((tool) => state.tools[tool]);
|
|
24
|
+
}
|
|
25
|
+
function selectedRuntimes() {
|
|
26
|
+
return runtimeNames.filter((runtime) => state.runtimes[runtime]);
|
|
27
|
+
}
|
|
28
|
+
function printDryRun() {
|
|
29
|
+
checkExternalToolProvenance();
|
|
30
|
+
const status = detectInstallerStatus();
|
|
31
|
+
printHeader();
|
|
32
|
+
printSelections();
|
|
33
|
+
console.log("Install plan");
|
|
34
|
+
console.log(formatInstallPlan(status));
|
|
35
|
+
console.log("");
|
|
36
|
+
console.log("Dry run: no changes were made.");
|
|
37
|
+
}
|
|
38
|
+
function printDoctor() {
|
|
39
|
+
checkExternalToolProvenance();
|
|
40
|
+
const report = buildDoctorReport(detectInstallerStatus(), {
|
|
41
|
+
selectedTools: selectedTools(),
|
|
42
|
+
selectedRuntimes: selectedRuntimes(),
|
|
43
|
+
scope: state.gsdScope,
|
|
44
|
+
customSkillsDir: state.customSkillsDir,
|
|
45
|
+
installMissingClis: state.installMissingClis,
|
|
46
|
+
});
|
|
47
|
+
if (state.jsonOutput) {
|
|
48
|
+
console.log(JSON.stringify(report, null, 2));
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
console.log(formatDoctorReport(report));
|
|
52
|
+
}
|
|
53
|
+
}
|
|
17
54
|
export async function runInstaller(argv = process.argv.slice(2)) {
|
|
18
55
|
if (!parseArgs(argv))
|
|
19
56
|
return;
|
|
@@ -21,15 +58,50 @@ export async function runInstaller(argv = process.argv.slice(2)) {
|
|
|
21
58
|
listCustomSkills();
|
|
22
59
|
return;
|
|
23
60
|
}
|
|
61
|
+
if (state.auditSkills) {
|
|
62
|
+
const passed = printSkillsAudit(auditSkills());
|
|
63
|
+
if (!passed)
|
|
64
|
+
process.exitCode = 1;
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
if (state.updateLock) {
|
|
68
|
+
try {
|
|
69
|
+
const report = await buildLockUpdateReport();
|
|
70
|
+
console.log(state.jsonOutput
|
|
71
|
+
? JSON.stringify(report, null, 2)
|
|
72
|
+
: formatLockUpdateReport(report));
|
|
73
|
+
}
|
|
74
|
+
catch (error) {
|
|
75
|
+
printLockUpdateError(error);
|
|
76
|
+
process.exitCode = 1;
|
|
77
|
+
}
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
if (state.doctor) {
|
|
81
|
+
printDoctor();
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
24
84
|
if (!state.nonInteractive)
|
|
25
85
|
await showMenu();
|
|
26
86
|
if (!anyToolSelected())
|
|
27
87
|
die("Select at least one tool.");
|
|
28
88
|
if (!anyRuntimeSelected())
|
|
29
89
|
die("Select at least one runtime.");
|
|
90
|
+
if (state.uninstall) {
|
|
91
|
+
uninstallFromManifest();
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
if (state.dryRun) {
|
|
95
|
+
printDryRun();
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
30
98
|
checkExternalToolProvenance();
|
|
31
99
|
printHeader();
|
|
32
100
|
printSelections();
|
|
101
|
+
if (state.repair) {
|
|
102
|
+
console.log(" Repair mode: selected installs will be re-run.");
|
|
103
|
+
console.log("");
|
|
104
|
+
}
|
|
33
105
|
checkPrerequisites();
|
|
34
106
|
let hadError = false;
|
|
35
107
|
if (state.tools.rtk) {
|
|
@@ -104,6 +176,7 @@ export async function runInstaller(argv = process.argv.slice(2)) {
|
|
|
104
176
|
else {
|
|
105
177
|
skip("Custom Skills");
|
|
106
178
|
}
|
|
179
|
+
savePendingManifest();
|
|
107
180
|
printSummary();
|
|
108
181
|
if (hadError) {
|
|
109
182
|
console.log("");
|
package/dist/src/main.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/main.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,cAAc,CAAC;AACnC,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,2BAA2B,EAAE,MAAM,iBAAiB,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACpE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/main.ts"],"names":[],"mappings":"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"}
|