@anytio/pspm 0.11.0 → 0.13.0
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 +40 -2
- package/CLI_GUIDE.md +245 -6
- package/README.md +5 -1
- package/dist/index.js +1711 -948
- package/dist/index.js.map +1 -1
- package/package.json +6 -4
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,44 @@ All notable changes to the PSPM CLI will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [0.13.0] - 2026-03-24
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
|
|
12
|
+
- **Client-side encryption for private packages**: Encrypt skill packages before publishing with AES-256-GCM encryption
|
|
13
|
+
- `pspm config set-encryption-key` — Set an encryption key for a scope (`@user/x` or `@org/x`)
|
|
14
|
+
- `pspm config get-encryption-key` — Check if an encryption key is set for a scope
|
|
15
|
+
- `pspm config remove-encryption-key` — Remove an encryption key for a scope
|
|
16
|
+
- Private packages are automatically encrypted on publish and decrypted on install when a key is configured
|
|
17
|
+
- Uses scrypt key derivation for secure key management
|
|
18
|
+
|
|
19
|
+
## [0.12.0] - 2026-03-19
|
|
20
|
+
|
|
21
|
+
### Added
|
|
22
|
+
|
|
23
|
+
- **Skill list CLI commands**: Full CRUD `pspm skill-list` command group with 8 subcommands
|
|
24
|
+
- `pspm skill-list list` — list your skill lists
|
|
25
|
+
- `pspm skill-list create <name>` — create a new skill list
|
|
26
|
+
- `pspm skill-list show <name>` — view list details and items
|
|
27
|
+
- `pspm skill-list delete <name>` — delete a skill list
|
|
28
|
+
- `pspm skill-list update <name>` — update list metadata
|
|
29
|
+
- `pspm skill-list add-skill <list> <specifier>` — add a skill to a list
|
|
30
|
+
- `pspm skill-list remove-skill <list> <specifier>` — remove a skill from a list
|
|
31
|
+
- `pspm skill-list install <name>` — install all skills from a list
|
|
32
|
+
- **Notebook commands**: Upload, share, and manage .anyt notebooks via CLI
|
|
33
|
+
- `pspm notebook upload <file>` — upload a notebook to the platform
|
|
34
|
+
- `pspm notebook list` — list your uploaded notebooks
|
|
35
|
+
- `pspm notebook download <id>` — download a notebook
|
|
36
|
+
- `pspm notebook delete <id>` — delete a notebook
|
|
37
|
+
|
|
38
|
+
### Fixed
|
|
39
|
+
|
|
40
|
+
- **Audit false positives**: Fixed double path joining that caused installed skills to always report as MISSING
|
|
41
|
+
- **Publish with qualified names**: `@user/owner/name` format no longer rejected by server validation
|
|
42
|
+
- **Remove @github skills**: GitHub-indexed skills can now be removed by short name
|
|
43
|
+
- **Outdated command crash**: Fixed crash on @github namespace packages in lockfile
|
|
44
|
+
- **Manifest validation**: Regex now accepts qualified name format in pspm.json
|
|
45
|
+
|
|
8
46
|
## [0.11.0] - 2026-03-17
|
|
9
47
|
|
|
10
48
|
### Added
|
|
@@ -76,7 +114,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
76
114
|
- **`audit` command**: Verify integrity of installed skills
|
|
77
115
|
- Checks for missing packages, deprecated versions, corrupted installations
|
|
78
116
|
- `--json` flag for CI integration
|
|
79
|
-
- **Expanded agent support**: From 6 to 41 supported AI
|
|
117
|
+
- **Expanded agent support**: From 6 to 41 supported AI agents
|
|
80
118
|
- Added Windsurf, Amp, Augment, Cline, Continue, Goose, Kilo Code, Kiro CLI, OpenCode, OpenHands, Replit, Roo Code, Trae, and 22 more
|
|
81
119
|
|
|
82
120
|
### Changed
|
|
@@ -103,7 +141,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
103
141
|
|
|
104
142
|
### Fixed
|
|
105
143
|
|
|
106
|
-
- **Fix npm install failure**: Moved `@repo/
|
|
144
|
+
- **Fix npm install failure**: Moved `@repo/types` and `@repo/skill-registry` from `dependencies` to `devDependencies` to prevent npm from trying to install workspace-only packages from the public registry
|
|
107
145
|
|
|
108
146
|
## [0.7.1] - 2026-03-02
|
|
109
147
|
|
package/CLI_GUIDE.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# PSPM CLI Guide
|
|
2
2
|
|
|
3
|
-
PSPM is a package manager for AI agent skills. It provides commands for authentication, configuration, skill management, and publishing across AI
|
|
3
|
+
PSPM is a package manager for AI agent skills. It provides commands for authentication, configuration, skill management, and publishing across AI agents.
|
|
4
4
|
|
|
5
5
|
## Installation
|
|
6
6
|
|
|
@@ -24,7 +24,7 @@ Options:
|
|
|
24
24
|
-h, --help display help for command
|
|
25
25
|
|
|
26
26
|
Commands:
|
|
27
|
-
config Manage PSPM configuration
|
|
27
|
+
config Manage PSPM configuration (show, init, set-encryption-key, get-encryption-key, remove-encryption-key)
|
|
28
28
|
login [options] Log in via browser or with an API key
|
|
29
29
|
logout Log out and clear stored credentials
|
|
30
30
|
whoami Show current user information
|
|
@@ -36,11 +36,17 @@ Commands:
|
|
|
36
36
|
install|i [options] [specifiers...] Install skills from lockfile, or add and install specific packages
|
|
37
37
|
link [options] Recreate agent symlinks without reinstalling
|
|
38
38
|
update [options] Update all skills to latest compatible versions
|
|
39
|
+
search|find [options] [query] Search and discover skills from the registry
|
|
40
|
+
audit [options] Verify integrity of installed skills
|
|
41
|
+
outdated [options] [packages...] Check for outdated skills
|
|
39
42
|
version <bump> Bump package version (major, minor, patch)
|
|
40
43
|
publish [options] Publish current directory as a skill
|
|
41
44
|
unpublish [options] <specifier> Remove a published skill version (only within 72 hours of publishing)
|
|
42
45
|
access [options] [specifier] Change package visibility (public/private)
|
|
43
46
|
deprecate [options] <specifier> [message] Mark a skill version as deprecated (alternative to unpublish after 72 hours)
|
|
47
|
+
skill-list Manage skill lists (list, create, show, update, delete, add-skill, remove-skill, install)
|
|
48
|
+
notebook Manage notebooks (upload, list, download, delete)
|
|
49
|
+
upgrade Update pspm itself to the latest version
|
|
44
50
|
help [command] display help for command
|
|
45
51
|
```
|
|
46
52
|
|
|
@@ -171,6 +177,7 @@ pspm add @user/alice/skill1 @user/bob/skill2
|
|
|
171
177
|
pspm add @user/skill --agent claude-code,cursor # Link to multiple agents
|
|
172
178
|
pspm add github:owner/repo --agent none # Skip symlink creation
|
|
173
179
|
pspm add @user/skill -y # Skip agent selection prompt
|
|
180
|
+
pspm add @user/skill -g # Install to user home directory
|
|
174
181
|
```
|
|
175
182
|
|
|
176
183
|
### Remove Skill
|
|
@@ -193,6 +200,9 @@ pspm ls
|
|
|
193
200
|
# JSON output for scripting
|
|
194
201
|
pspm list --json
|
|
195
202
|
|
|
203
|
+
# List global skills
|
|
204
|
+
pspm list -g
|
|
205
|
+
|
|
196
206
|
# Example output:
|
|
197
207
|
# Installed skills:
|
|
198
208
|
#
|
|
@@ -219,9 +229,14 @@ pspm install --dir ./vendor/skills # Install to specific directory
|
|
|
219
229
|
pspm install --agent claude-code,cursor # Link to multiple agents
|
|
220
230
|
pspm install --agent none # Skip symlink creation
|
|
221
231
|
pspm install -y # Skip agent selection prompt
|
|
232
|
+
pspm install -g # Install to user home directory
|
|
222
233
|
|
|
223
234
|
# Install specific packages (like npm):
|
|
224
235
|
pspm install @user/alice/skill1 github:org/repo
|
|
236
|
+
|
|
237
|
+
# Install all skills from a skill list:
|
|
238
|
+
pspm install --list @user/alice/my-favorites
|
|
239
|
+
pspm install --list @org/myteam/starter-kit
|
|
225
240
|
```
|
|
226
241
|
|
|
227
242
|
### Link Skills
|
|
@@ -232,6 +247,7 @@ Recreate agent symlinks without reinstalling (useful after adding agents):
|
|
|
232
247
|
pspm link
|
|
233
248
|
pspm link --agent claude-code,cursor # Link to specific agents
|
|
234
249
|
pspm link -y # Skip agent selection prompt
|
|
250
|
+
pspm link -g # Recreate global agent symlinks
|
|
235
251
|
```
|
|
236
252
|
|
|
237
253
|
### Update Skills
|
|
@@ -241,6 +257,39 @@ pspm update
|
|
|
241
257
|
pspm update --dry-run # Preview updates without applying
|
|
242
258
|
```
|
|
243
259
|
|
|
260
|
+
### Search Skills
|
|
261
|
+
|
|
262
|
+
Search and discover skills from the registry:
|
|
263
|
+
|
|
264
|
+
```bash
|
|
265
|
+
pspm search typescript # Search by keyword
|
|
266
|
+
pspm find react # Alias for search
|
|
267
|
+
pspm search react --json # JSON output
|
|
268
|
+
pspm search --sort recent --limit 10
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
### Check Outdated Skills
|
|
272
|
+
|
|
273
|
+
```bash
|
|
274
|
+
pspm outdated # Check all packages
|
|
275
|
+
pspm outdated code-review # Check specific package
|
|
276
|
+
pspm outdated --json # JSON output
|
|
277
|
+
pspm outdated --all # Include up-to-date packages
|
|
278
|
+
```
|
|
279
|
+
|
|
280
|
+
Exits with code `1` if any packages are outdated.
|
|
281
|
+
|
|
282
|
+
### Audit Skills
|
|
283
|
+
|
|
284
|
+
Verify integrity of installed skills:
|
|
285
|
+
|
|
286
|
+
```bash
|
|
287
|
+
pspm audit # Human-readable output
|
|
288
|
+
pspm audit --json # JSON output (for CI)
|
|
289
|
+
```
|
|
290
|
+
|
|
291
|
+
Checks for: missing packages, deprecated versions, corrupted installations.
|
|
292
|
+
|
|
244
293
|
## Versioning
|
|
245
294
|
|
|
246
295
|
### Bump Version
|
|
@@ -272,12 +321,15 @@ The command:
|
|
|
272
321
|
Publish the current directory as a skill:
|
|
273
322
|
|
|
274
323
|
```bash
|
|
275
|
-
pspm publish
|
|
276
|
-
pspm publish --
|
|
277
|
-
pspm publish --
|
|
278
|
-
pspm publish --access public #
|
|
324
|
+
pspm publish --access public # Publish as public
|
|
325
|
+
pspm publish --access private # Publish as private
|
|
326
|
+
pspm publish --access team --org myorg # Publish under org
|
|
327
|
+
pspm publish --access public --bump patch # Auto-bump version
|
|
328
|
+
pspm publish --access public --bump minor --tag beta
|
|
279
329
|
```
|
|
280
330
|
|
|
331
|
+
The `--access` flag is required and must be `public`, `private`, or `team`.
|
|
332
|
+
|
|
281
333
|
**Required `pspm.json` fields:**
|
|
282
334
|
- `name` - Skill name (e.g., `@user/username/skillname`)
|
|
283
335
|
- `version` - Semver version
|
|
@@ -334,6 +386,88 @@ pspm access @user/bsheng/vite_slides --public
|
|
|
334
386
|
- **Private packages** (default): Require authentication to download
|
|
335
387
|
- **Public packages**: Anyone can download without authentication
|
|
336
388
|
|
|
389
|
+
## Client-Side Encryption
|
|
390
|
+
|
|
391
|
+
Private packages can be encrypted before upload so that the PSPM server and storage (R2) only ever see ciphertext. The encryption key never leaves your machine.
|
|
392
|
+
|
|
393
|
+
### How It Works
|
|
394
|
+
|
|
395
|
+
- **Publish:** If an encryption key is set for the package scope, the CLI encrypts the tarball with AES-256-GCM before uploading. The server stores only ciphertext.
|
|
396
|
+
- **Install:** The CLI checks the package manifest for encryption metadata. If present, it decrypts the tarball locally before extracting.
|
|
397
|
+
- **Public packages** are never encrypted — encryption only applies to `private` and `team` visibility.
|
|
398
|
+
|
|
399
|
+
### Set an Encryption Key
|
|
400
|
+
|
|
401
|
+
Each scope (`@user/yourname` or `@org/orgname`) has one encryption key. All private packages under that scope use the same key.
|
|
402
|
+
|
|
403
|
+
```bash
|
|
404
|
+
# Set encryption key for your user scope
|
|
405
|
+
pspm config set-encryption-key @user/yourname my-secret-passphrase
|
|
406
|
+
|
|
407
|
+
# Set encryption key for an organization
|
|
408
|
+
pspm config set-encryption-key @org/myorg shared-team-secret
|
|
409
|
+
```
|
|
410
|
+
|
|
411
|
+
Or use environment variables:
|
|
412
|
+
|
|
413
|
+
```bash
|
|
414
|
+
export PSPM_ENCRYPTION_KEY_USER_YOURNAME="my-secret-passphrase"
|
|
415
|
+
export PSPM_ENCRYPTION_KEY_ORG_MYORG="shared-team-secret"
|
|
416
|
+
```
|
|
417
|
+
|
|
418
|
+
### Manage Encryption Keys
|
|
419
|
+
|
|
420
|
+
```bash
|
|
421
|
+
# Check if a key is set
|
|
422
|
+
pspm config get-encryption-key @user/yourname
|
|
423
|
+
|
|
424
|
+
# Remove a key
|
|
425
|
+
pspm config remove-encryption-key @user/yourname
|
|
426
|
+
```
|
|
427
|
+
|
|
428
|
+
### Publish with Encryption
|
|
429
|
+
|
|
430
|
+
When you publish a private package and an encryption key is configured for the scope, the CLI automatically encrypts:
|
|
431
|
+
|
|
432
|
+
```bash
|
|
433
|
+
pspm config set-encryption-key @user/yourname my-secret
|
|
434
|
+
pspm publish --access private
|
|
435
|
+
# Output: pspm notice Encrypting package (scope: @user/yourname)
|
|
436
|
+
```
|
|
437
|
+
|
|
438
|
+
If no encryption key is set, the package is uploaded unencrypted with a warning.
|
|
439
|
+
|
|
440
|
+
### Install Encrypted Packages
|
|
441
|
+
|
|
442
|
+
```bash
|
|
443
|
+
# Set the same key used during publish
|
|
444
|
+
pspm config set-encryption-key @user/yourname my-secret
|
|
445
|
+
|
|
446
|
+
# Install as usual — decryption is automatic
|
|
447
|
+
pspm install
|
|
448
|
+
```
|
|
449
|
+
|
|
450
|
+
If you don't have the key, the CLI will show an error with instructions:
|
|
451
|
+
|
|
452
|
+
```
|
|
453
|
+
Error: Package @user/yourname/my-skill is encrypted.
|
|
454
|
+
Set the key: pspm config set-encryption-key @user/yourname <passphrase>
|
|
455
|
+
```
|
|
456
|
+
|
|
457
|
+
### Team Sharing
|
|
458
|
+
|
|
459
|
+
For organization packages, share the encryption key with team members through a secure channel (e.g., a password manager). Each team member adds it to their local config:
|
|
460
|
+
|
|
461
|
+
```bash
|
|
462
|
+
pspm config set-encryption-key @org/myorg shared-team-secret
|
|
463
|
+
```
|
|
464
|
+
|
|
465
|
+
### Important Notes
|
|
466
|
+
|
|
467
|
+
- **Key loss = data loss.** If you lose your encryption key, encrypted packages cannot be recovered. Back up your keys.
|
|
468
|
+
- The server stores encryption metadata (algorithm, salt, IV) alongside the package — these are not secrets and are safe to store publicly.
|
|
469
|
+
- Encryption is opt-in. If no key is configured, private packages are uploaded unencrypted.
|
|
470
|
+
|
|
337
471
|
## Configuration Files
|
|
338
472
|
|
|
339
473
|
### User Config: `~/.pspmrc`
|
|
@@ -353,6 +487,10 @@ username = myuser
|
|
|
353
487
|
; Multi-registry: Per-registry tokens (optional)
|
|
354
488
|
//pspm.dev:authToken = sk_public_token
|
|
355
489
|
//corp.pspm.io:authToken = sk_corp_token
|
|
490
|
+
|
|
491
|
+
; Encryption keys (optional)
|
|
492
|
+
encryption-key:@user/yourname = my-secret-passphrase
|
|
493
|
+
encryption-key:@org/myorg = shared-team-secret
|
|
356
494
|
```
|
|
357
495
|
|
|
358
496
|
### Project Config: `.pspmrc`
|
|
@@ -437,6 +575,7 @@ Configuration is resolved in priority order:
|
|
|
437
575
|
| `PSPM_API_KEY` | Override API key |
|
|
438
576
|
| `PSPM_DEBUG` | Enable debug logging |
|
|
439
577
|
| `GITHUB_TOKEN` | GitHub token for private repos and higher rate limits |
|
|
578
|
+
| `PSPM_ENCRYPTION_KEY_<SCOPE>` | Encryption key for a scope (e.g., `PSPM_ENCRYPTION_KEY_USER_ALICE`) |
|
|
440
579
|
|
|
441
580
|
## Directory Structure
|
|
442
581
|
|
|
@@ -513,6 +652,106 @@ pspm init
|
|
|
513
652
|
pspm publish --bump patch
|
|
514
653
|
```
|
|
515
654
|
|
|
655
|
+
## Skill Lists
|
|
656
|
+
|
|
657
|
+
### List Skill Lists
|
|
658
|
+
|
|
659
|
+
```bash
|
|
660
|
+
pspm skill-list list # Your lists
|
|
661
|
+
pspm skill-list list --org myorg # Organization's lists
|
|
662
|
+
pspm skill-list list --json # JSON output
|
|
663
|
+
```
|
|
664
|
+
|
|
665
|
+
### Create Skill List
|
|
666
|
+
|
|
667
|
+
```bash
|
|
668
|
+
pspm skill-list create my-favorites
|
|
669
|
+
pspm skill-list create my-favorites --visibility public
|
|
670
|
+
pspm skill-list create team-tools --org myorg -d "Our team's tools"
|
|
671
|
+
```
|
|
672
|
+
|
|
673
|
+
### Show Skill List
|
|
674
|
+
|
|
675
|
+
```bash
|
|
676
|
+
pspm skill-list show @user/alice/my-favorites
|
|
677
|
+
pspm skill-list show @org/myorg/team-tools --json
|
|
678
|
+
```
|
|
679
|
+
|
|
680
|
+
### Update Skill List
|
|
681
|
+
|
|
682
|
+
```bash
|
|
683
|
+
pspm skill-list update @user/alice/my-favorites --description "Updated desc"
|
|
684
|
+
pspm skill-list update @user/alice/my-favorites --visibility public
|
|
685
|
+
```
|
|
686
|
+
|
|
687
|
+
### Delete Skill List
|
|
688
|
+
|
|
689
|
+
```bash
|
|
690
|
+
pspm skill-list delete @user/alice/my-favorites
|
|
691
|
+
```
|
|
692
|
+
|
|
693
|
+
### Add Skill to List
|
|
694
|
+
|
|
695
|
+
```bash
|
|
696
|
+
pspm skill-list add-skill @user/alice/my-favorites @user/bob/code-review
|
|
697
|
+
pspm skill-list add-skill @user/alice/my-favorites @user/bob/lint --note "Great for CI"
|
|
698
|
+
```
|
|
699
|
+
|
|
700
|
+
### Remove Skill from List
|
|
701
|
+
|
|
702
|
+
```bash
|
|
703
|
+
pspm skill-list remove-skill @user/alice/my-favorites @user/bob/code-review
|
|
704
|
+
```
|
|
705
|
+
|
|
706
|
+
### Install from Skill List
|
|
707
|
+
|
|
708
|
+
```bash
|
|
709
|
+
pspm skill-list install @user/alice/my-favorites
|
|
710
|
+
pspm skill-list install @org/myorg/team-tools --agent claude-code
|
|
711
|
+
```
|
|
712
|
+
|
|
713
|
+
## Notebook Management
|
|
714
|
+
|
|
715
|
+
### Upload Notebook
|
|
716
|
+
|
|
717
|
+
```bash
|
|
718
|
+
pspm notebook upload notebook.anyt.md
|
|
719
|
+
pspm notebook upload notebook.anyt.md --visibility public
|
|
720
|
+
pspm notebook upload notebook.anyt.md --org myorg
|
|
721
|
+
```
|
|
722
|
+
|
|
723
|
+
### List Notebooks
|
|
724
|
+
|
|
725
|
+
```bash
|
|
726
|
+
pspm notebook list
|
|
727
|
+
pspm notebook list --org myorg
|
|
728
|
+
pspm notebook list --json
|
|
729
|
+
```
|
|
730
|
+
|
|
731
|
+
### Download Notebook
|
|
732
|
+
|
|
733
|
+
```bash
|
|
734
|
+
pspm notebook download <id>
|
|
735
|
+
```
|
|
736
|
+
|
|
737
|
+
### Delete Notebook
|
|
738
|
+
|
|
739
|
+
```bash
|
|
740
|
+
pspm notebook delete <id>
|
|
741
|
+
```
|
|
742
|
+
|
|
743
|
+
## Self-Update
|
|
744
|
+
|
|
745
|
+
### Upgrade PSPM
|
|
746
|
+
|
|
747
|
+
Update pspm itself to the latest version:
|
|
748
|
+
|
|
749
|
+
```bash
|
|
750
|
+
pspm upgrade
|
|
751
|
+
```
|
|
752
|
+
|
|
753
|
+
Auto-detects your package manager (pnpm, npm, yarn, bun). The CLI also checks for updates every 24 hours and notifies you when a newer version is available.
|
|
754
|
+
|
|
516
755
|
## Troubleshooting
|
|
517
756
|
|
|
518
757
|
| Error | Solution |
|
package/README.md
CHANGED
|
@@ -128,6 +128,8 @@ pspm install
|
|
|
128
128
|
| `pspm init` | Create pspm.json manifest |
|
|
129
129
|
| `pspm publish` | Publish skill to registry |
|
|
130
130
|
| `pspm login` | Authenticate via browser or API key |
|
|
131
|
+
| `pspm skill-list <subcommand>` | Manage skill lists (list, create, show, delete, update, add-skill, remove-skill, install) |
|
|
132
|
+
| `pspm notebook <subcommand>` | Manage notebooks (upload, list, download, delete) |
|
|
131
133
|
| `pspm upgrade` | Update pspm itself to the latest version |
|
|
132
134
|
|
|
133
135
|
### `pspm install`
|
|
@@ -443,7 +445,7 @@ project/
|
|
|
443
445
|
| | +-- _local/ # Local skill symlinks
|
|
444
446
|
| +-- cache/ # Tarball cache
|
|
445
447
|
+-- .claude/
|
|
446
|
-
| +-- skills/ # Symlinks for Claude Code
|
|
448
|
+
| +-- skills/ # Symlinks for Claude Code (and other agents)
|
|
447
449
|
+-- .cursor/
|
|
448
450
|
+-- skills/ # Symlinks for Cursor (if configured)
|
|
449
451
|
```
|
|
@@ -511,3 +513,5 @@ Auto-detects your package manager (pnpm, npm, yarn, bun). The CLI also checks fo
|
|
|
511
513
|
## License
|
|
512
514
|
|
|
513
515
|
This project is licensed under [The Artistic License 2.0](LICENSE), the same license used by npm.
|
|
516
|
+
|
|
517
|
+
<!-- @doc-sync: 1f5c64d | 2026-03-18 10:30 -->
|