shipwright-cli 1.10.0 → 2.1.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/README.md +221 -55
- package/completions/_shipwright +264 -32
- package/completions/shipwright.bash +118 -26
- package/completions/shipwright.fish +80 -2
- package/dashboard/server.ts +208 -0
- package/docs/strategy/01-market-research.md +619 -0
- package/docs/strategy/02-mission-and-brand.md +587 -0
- package/docs/strategy/03-gtm-and-roadmap.md +759 -0
- package/docs/strategy/QUICK-START.txt +289 -0
- package/docs/strategy/README.md +172 -0
- package/docs/tmux-research/TMUX-ARCHITECTURE.md +567 -0
- package/docs/tmux-research/TMUX-AUDIT.md +925 -0
- package/docs/tmux-research/TMUX-BEST-PRACTICES-2025-2026.md +829 -0
- package/docs/tmux-research/TMUX-QUICK-REFERENCE.md +543 -0
- package/docs/tmux-research/TMUX-RESEARCH-INDEX.md +438 -0
- package/package.json +4 -2
- package/scripts/lib/helpers.sh +7 -0
- package/scripts/sw +323 -2
- package/scripts/sw-activity.sh +500 -0
- package/scripts/sw-adaptive.sh +925 -0
- package/scripts/sw-adversarial.sh +1 -1
- package/scripts/sw-architecture-enforcer.sh +1 -1
- package/scripts/sw-auth.sh +613 -0
- package/scripts/sw-autonomous.sh +754 -0
- package/scripts/sw-changelog.sh +704 -0
- package/scripts/sw-checkpoint.sh +1 -1
- package/scripts/sw-ci.sh +602 -0
- package/scripts/sw-cleanup.sh +1 -1
- package/scripts/sw-code-review.sh +698 -0
- package/scripts/sw-connect.sh +1 -1
- package/scripts/sw-context.sh +605 -0
- package/scripts/sw-cost.sh +44 -3
- package/scripts/sw-daemon.sh +568 -138
- package/scripts/sw-dashboard.sh +1 -1
- package/scripts/sw-db.sh +1380 -0
- package/scripts/sw-decompose.sh +539 -0
- package/scripts/sw-deps.sh +551 -0
- package/scripts/sw-developer-simulation.sh +1 -1
- package/scripts/sw-discovery.sh +412 -0
- package/scripts/sw-docs-agent.sh +539 -0
- package/scripts/sw-docs.sh +1 -1
- package/scripts/sw-doctor.sh +107 -1
- package/scripts/sw-dora.sh +615 -0
- package/scripts/sw-durable.sh +710 -0
- package/scripts/sw-e2e-orchestrator.sh +535 -0
- package/scripts/sw-eventbus.sh +393 -0
- package/scripts/sw-feedback.sh +479 -0
- package/scripts/sw-fix.sh +1 -1
- package/scripts/sw-fleet-discover.sh +567 -0
- package/scripts/sw-fleet-viz.sh +404 -0
- package/scripts/sw-fleet.sh +8 -1
- package/scripts/sw-github-app.sh +596 -0
- package/scripts/sw-github-checks.sh +4 -4
- package/scripts/sw-github-deploy.sh +1 -1
- package/scripts/sw-github-graphql.sh +1 -1
- package/scripts/sw-guild.sh +569 -0
- package/scripts/sw-heartbeat.sh +1 -1
- package/scripts/sw-hygiene.sh +559 -0
- package/scripts/sw-incident.sh +656 -0
- package/scripts/sw-init.sh +237 -24
- package/scripts/sw-instrument.sh +699 -0
- package/scripts/sw-intelligence.sh +1 -1
- package/scripts/sw-jira.sh +1 -1
- package/scripts/sw-launchd.sh +363 -28
- package/scripts/sw-linear.sh +1 -1
- package/scripts/sw-logs.sh +1 -1
- package/scripts/sw-loop.sh +267 -21
- package/scripts/sw-memory.sh +18 -1
- package/scripts/sw-mission-control.sh +487 -0
- package/scripts/sw-model-router.sh +545 -0
- package/scripts/sw-otel.sh +596 -0
- package/scripts/sw-oversight.sh +764 -0
- package/scripts/sw-pipeline-composer.sh +1 -1
- package/scripts/sw-pipeline-vitals.sh +1 -1
- package/scripts/sw-pipeline.sh +947 -35
- package/scripts/sw-pm.sh +758 -0
- package/scripts/sw-pr-lifecycle.sh +522 -0
- package/scripts/sw-predictive.sh +8 -1
- package/scripts/sw-prep.sh +1 -1
- package/scripts/sw-ps.sh +1 -1
- package/scripts/sw-public-dashboard.sh +798 -0
- package/scripts/sw-quality.sh +595 -0
- package/scripts/sw-reaper.sh +1 -1
- package/scripts/sw-recruit.sh +2248 -0
- package/scripts/sw-regression.sh +642 -0
- package/scripts/sw-release-manager.sh +736 -0
- package/scripts/sw-release.sh +706 -0
- package/scripts/sw-remote.sh +1 -1
- package/scripts/sw-replay.sh +520 -0
- package/scripts/sw-retro.sh +691 -0
- package/scripts/sw-scale.sh +444 -0
- package/scripts/sw-security-audit.sh +505 -0
- package/scripts/sw-self-optimize.sh +1 -1
- package/scripts/sw-session.sh +1 -1
- package/scripts/sw-setup.sh +263 -127
- package/scripts/sw-standup.sh +712 -0
- package/scripts/sw-status.sh +44 -2
- package/scripts/sw-strategic.sh +806 -0
- package/scripts/sw-stream.sh +450 -0
- package/scripts/sw-swarm.sh +620 -0
- package/scripts/sw-team-stages.sh +511 -0
- package/scripts/sw-templates.sh +4 -4
- package/scripts/sw-testgen.sh +566 -0
- package/scripts/sw-tmux-pipeline.sh +554 -0
- package/scripts/sw-tmux-role-color.sh +58 -0
- package/scripts/sw-tmux-status.sh +128 -0
- package/scripts/sw-tmux.sh +1 -1
- package/scripts/sw-trace.sh +485 -0
- package/scripts/sw-tracker-github.sh +188 -0
- package/scripts/sw-tracker-jira.sh +172 -0
- package/scripts/sw-tracker-linear.sh +251 -0
- package/scripts/sw-tracker.sh +117 -2
- package/scripts/sw-triage.sh +627 -0
- package/scripts/sw-upgrade.sh +1 -1
- package/scripts/sw-ux.sh +677 -0
- package/scripts/sw-webhook.sh +627 -0
- package/scripts/sw-widgets.sh +530 -0
- package/scripts/sw-worktree.sh +1 -1
- package/templates/pipelines/autonomous.json +2 -2
- package/tmux/shipwright-overlay.conf +35 -17
- package/tmux/tmux.conf +23 -21
package/README.md
CHANGED
|
@@ -6,14 +6,14 @@
|
|
|
6
6
|
|
|
7
7
|
<p align="center">
|
|
8
8
|
<strong>The Autonomous Delivery Platform</strong><br>
|
|
9
|
-
From labeled GitHub issue to merged PR —
|
|
9
|
+
From labeled GitHub issue to merged PR — with 18 new autonomous agents orchestrating every step.
|
|
10
10
|
</p>
|
|
11
11
|
|
|
12
12
|
<p align="center">
|
|
13
13
|
<a href="https://github.com/sethdford/shipwright/actions/workflows/test.yml"><img src="https://github.com/sethdford/shipwright/actions/workflows/test.yml/badge.svg" alt="Tests"></a>
|
|
14
14
|
<a href="https://github.com/sethdford/shipwright/actions/workflows/shipwright-pipeline.yml"><img src="https://github.com/sethdford/shipwright/actions/workflows/shipwright-pipeline.yml/badge.svg" alt="Pipeline"></a>
|
|
15
|
-
<img src="https://img.shields.io/badge/tests-
|
|
16
|
-
<img src="https://img.shields.io/badge/version-1.
|
|
15
|
+
<img src="https://img.shields.io/badge/tests-500%2B_passing-4ade80?style=flat-square" alt="500+ tests">
|
|
16
|
+
<img src="https://img.shields.io/badge/version-2.1.0-00d4ff?style=flat-square" alt="v2.1.0">
|
|
17
17
|
<img src="https://img.shields.io/badge/license-MIT-green?style=flat-square" alt="MIT License">
|
|
18
18
|
<img src="https://img.shields.io/badge/bash-3.2%2B-7c3aed?style=flat-square" alt="Bash 3.2+">
|
|
19
19
|
</p>
|
|
@@ -28,6 +28,22 @@ This repo uses Shipwright to process its own issues. Label a GitHub issue with `
|
|
|
28
28
|
|
|
29
29
|
---
|
|
30
30
|
|
|
31
|
+
## What's New in v2.1.0
|
|
32
|
+
|
|
33
|
+
**tmux visual overhaul** — role-colored borders, pipeline status widgets, and active pane depth:
|
|
34
|
+
|
|
35
|
+
- **Role-Colored Pane Borders** — Border color reflects agent role (builder=blue, reviewer=orange, tester=yellow)
|
|
36
|
+
- **Pipeline Stage Badge** — Live `⚙ BUILD` / `⚡ TEST` / `↑ PR` widget in status bar with stage-colored badges
|
|
37
|
+
- **Active Pane Lift** — Subtle background depth effect between active and inactive panes
|
|
38
|
+
- **Agent Count Widget** — `λN` heartbeat-based agent counter in status bar
|
|
39
|
+
- **`shipwright init --repair`** — Force clean reinstall after OS upgrades
|
|
40
|
+
- **Color Palette Overhaul** — Warm grays replace harsh near-white text across all tmux chrome
|
|
41
|
+
- **7 tmux Bug Fixes** — Pane indexing, capture bindings, reload, clipboard, and more
|
|
42
|
+
|
|
43
|
+
**v2.0.0 highlights**: 18 autonomous agents, 100+ CLI commands, intelligence layer, multi-repo fleet, local mode
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
31
47
|
## How It Works
|
|
32
48
|
|
|
33
49
|
```mermaid
|
|
@@ -101,23 +117,65 @@ shipwright doctor
|
|
|
101
117
|
# One-command setup
|
|
102
118
|
shipwright init
|
|
103
119
|
|
|
120
|
+
# See what's running
|
|
121
|
+
shipwright status
|
|
122
|
+
|
|
104
123
|
# Process a GitHub issue end-to-end
|
|
105
124
|
shipwright pipeline start --issue 42
|
|
106
125
|
|
|
107
|
-
#
|
|
126
|
+
# Run daemon 24/7 with agent orchestration
|
|
108
127
|
shipwright daemon start --detach
|
|
109
128
|
|
|
110
|
-
#
|
|
129
|
+
# See live agent activity
|
|
130
|
+
shipwright activity
|
|
131
|
+
|
|
132
|
+
# Spin up agent team for manual work
|
|
111
133
|
shipwright session my-feature -t feature-dev
|
|
112
134
|
|
|
135
|
+
# View DORA metrics and pipeline vitals
|
|
136
|
+
shipwright dora
|
|
137
|
+
|
|
113
138
|
# Continuous build loop with test validation
|
|
114
139
|
shipwright loop "Build auth module" --test-cmd "npm test"
|
|
140
|
+
|
|
141
|
+
# Multi-repo operations
|
|
142
|
+
shipwright fleet start
|
|
143
|
+
shipwright fix "upgrade deps" --repos ~/a,~/b,~/c
|
|
144
|
+
|
|
145
|
+
# Release automation
|
|
146
|
+
shipwright release --version 2.1.0
|
|
147
|
+
shipwright changelog generate
|
|
115
148
|
```
|
|
116
149
|
|
|
117
150
|
---
|
|
118
151
|
|
|
119
152
|
## Features
|
|
120
153
|
|
|
154
|
+
### 18 Autonomous Agents
|
|
155
|
+
|
|
156
|
+
Wave 1 (Organizational):
|
|
157
|
+
|
|
158
|
+
- **Swarm Manager** — Orchestrates dynamic agent teams with specialization roles
|
|
159
|
+
- **Autonomous PM** — Team leadership, task scheduling, roadmap execution
|
|
160
|
+
- **Knowledge Guild** — Cross-team learning, pattern capture, mentorship
|
|
161
|
+
- **Recruitment System** — Talent acquisition and team composition
|
|
162
|
+
- **Standup Automaton** — Daily standups, progress tracking, blocker detection
|
|
163
|
+
|
|
164
|
+
Wave 2 (Operational Backbone):
|
|
165
|
+
|
|
166
|
+
- **Quality Oversight** — Intelligent audits, zero-defect gates, completeness verification
|
|
167
|
+
- **Strategic Agent** — Long-term planning, goal decomposition, roadmap intelligence
|
|
168
|
+
- **Code Reviewer** — Architecture analysis, clean code standards, best practices
|
|
169
|
+
- **Security Auditor** — Vulnerability detection, threat modeling, compliance
|
|
170
|
+
- **Test Generator** — Coverage analysis, scenario discovery, regression prevention
|
|
171
|
+
- **Incident Commander** — Autonomous triage, root cause analysis, resolution
|
|
172
|
+
- **Dependency Manager** — Semantic versioning, update orchestration, compatibility checking
|
|
173
|
+
- **Release Manager** — Release planning, changelog generation, deployment orchestration
|
|
174
|
+
- **Adaptive Tuner** — DORA metrics analysis, self-optimization, performance tuning
|
|
175
|
+
- **Strategic Intelligence** — Predictive analysis, trend detection, proactive recommendations
|
|
176
|
+
|
|
177
|
+
Plus 10+ specialized agents for observability, UX, documentation, and more.
|
|
178
|
+
|
|
121
179
|
### 12-Stage Delivery Pipeline
|
|
122
180
|
|
|
123
181
|
```
|
|
@@ -213,42 +271,111 @@ shipwright dashboard start
|
|
|
213
271
|
|
|
214
272
|
Web dashboard with live pipeline progress, GitHub context (security alerts, contributors, deployments), DORA metrics, and cost tracking. WebSocket-powered, updates in real-time.
|
|
215
273
|
|
|
274
|
+
### Webhook Receiver
|
|
275
|
+
|
|
276
|
+
```bash
|
|
277
|
+
shipwright webhook listen
|
|
278
|
+
```
|
|
279
|
+
|
|
280
|
+
Instant issue processing via GitHub webhooks instead of polling. Register webhook with `shipwright webhook register`, receive events in real-time, process issues with zero-lag.
|
|
281
|
+
|
|
282
|
+
### PR Lifecycle Automation
|
|
283
|
+
|
|
284
|
+
```bash
|
|
285
|
+
shipwright pr auto-review
|
|
286
|
+
shipwright pr merge
|
|
287
|
+
shipwright pr cleanup
|
|
288
|
+
```
|
|
289
|
+
|
|
290
|
+
Fully automated PR management: auto-review based on predictive risk and coverage, intelligent auto-merge when gates pass, cleanup stale branches. Reduces manual PR overhead by 90%.
|
|
291
|
+
|
|
292
|
+
### Fleet Auto-Discovery
|
|
293
|
+
|
|
294
|
+
```bash
|
|
295
|
+
shipwright fleet discover --org myorg
|
|
296
|
+
```
|
|
297
|
+
|
|
298
|
+
Scan a GitHub organization and auto-populate fleet config with all repos matching criteria (language, archived status, team ownership). One command instead of manual registry building.
|
|
299
|
+
|
|
300
|
+
### SQLite Persistence
|
|
301
|
+
|
|
302
|
+
ACID-safe state management replacing JSON files. Replaces volatile `.claude/pipeline-artifacts/` with reliable database schema. Atomic transactions ensure no partial states, crash recovery automatic.
|
|
303
|
+
|
|
304
|
+
### Issue Decomposition
|
|
305
|
+
|
|
306
|
+
```bash
|
|
307
|
+
shipwright decompose --issue 42
|
|
308
|
+
```
|
|
309
|
+
|
|
310
|
+
AI-powered issue analysis: auto-split complex features into manageable subtasks, create child issues with inherited labels/assignees, generate dependency graph for parallel execution.
|
|
311
|
+
|
|
312
|
+
### Linux systemd Support
|
|
313
|
+
|
|
314
|
+
Cross-platform process supervision. Use systemd on Linux instead of tmux, same daemon commands:
|
|
315
|
+
|
|
316
|
+
```bash
|
|
317
|
+
shipwright launchd install # macOS launchd
|
|
318
|
+
# systemd service auto-generated on Linux
|
|
319
|
+
```
|
|
320
|
+
|
|
321
|
+
### Context Engine
|
|
322
|
+
|
|
323
|
+
```bash
|
|
324
|
+
shipwright context gather
|
|
325
|
+
```
|
|
326
|
+
|
|
327
|
+
Rich context injection for pipeline stages. Pulls together: contributor history, file hotspots, architecture rules, related issues, failure patterns. Injected automatically at each stage for smarter decisions.
|
|
328
|
+
|
|
216
329
|
---
|
|
217
330
|
|
|
218
331
|
## Commands
|
|
219
332
|
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
333
|
+
Over 100 commands. Key workflows:
|
|
334
|
+
|
|
335
|
+
```bash
|
|
336
|
+
# Autonomous delivery
|
|
337
|
+
shipwright pipeline start --issue 42
|
|
338
|
+
shipwright daemon start --detach
|
|
339
|
+
|
|
340
|
+
# Agent teams
|
|
341
|
+
shipwright swarm list
|
|
342
|
+
shipwright recruit --roles builder,tester
|
|
343
|
+
shipwright standup
|
|
344
|
+
shipwright guild members
|
|
345
|
+
|
|
346
|
+
# Quality gates
|
|
347
|
+
shipwright code-review
|
|
348
|
+
shipwright security-audit
|
|
349
|
+
shipwright testgen
|
|
350
|
+
shipwright quality check
|
|
351
|
+
|
|
352
|
+
# Observability
|
|
353
|
+
shipwright vitals
|
|
354
|
+
shipwright dora
|
|
355
|
+
shipwright stream
|
|
356
|
+
shipwright activity
|
|
357
|
+
|
|
358
|
+
# Multi-repo operations
|
|
359
|
+
shipwright fleet start
|
|
360
|
+
shipwright fix "feat: add auth" --repos ~/a,~/b,~/c
|
|
361
|
+
shipwright fleet-viz
|
|
362
|
+
|
|
363
|
+
# Release automation
|
|
364
|
+
shipwright release --version 2.1.0
|
|
365
|
+
shipwright changelog generate
|
|
366
|
+
shipwright deploys list
|
|
367
|
+
|
|
368
|
+
# Setup & maintenance
|
|
369
|
+
shipwright init
|
|
370
|
+
shipwright prep
|
|
371
|
+
shipwright doctor
|
|
372
|
+
shipwright upgrade --apply
|
|
373
|
+
|
|
374
|
+
# See all commands
|
|
375
|
+
shipwright --help
|
|
376
|
+
```
|
|
377
|
+
|
|
378
|
+
See `.claude/CLAUDE.md` for the complete 100+ command reference organized by workflow.
|
|
252
379
|
|
|
253
380
|
## Pipeline Templates for Teams
|
|
254
381
|
|
|
@@ -284,29 +411,68 @@ shipwright templates list
|
|
|
284
411
|
|
|
285
412
|
## Architecture
|
|
286
413
|
|
|
287
|
-
|
|
414
|
+
95+ bash scripts (~100K lines), 27 test suites (500+ tests), plus a TypeScript dashboard server. Bash 3.2 compatible — runs on macOS and Linux out of the box.
|
|
415
|
+
|
|
416
|
+
**Core Layers:**
|
|
288
417
|
|
|
289
418
|
```
|
|
290
|
-
|
|
291
|
-
sw
|
|
292
|
-
sw-
|
|
293
|
-
sw-
|
|
294
|
-
|
|
419
|
+
Pipeline Layer
|
|
420
|
+
sw-pipeline.sh # 12-stage delivery orchestration
|
|
421
|
+
sw-daemon.sh # Autonomous GitHub issue watcher
|
|
422
|
+
sw-loop.sh # Continuous multi-iteration build loop
|
|
423
|
+
|
|
424
|
+
Agent Layer (18 agents)
|
|
425
|
+
sw-swarm.sh # Dynamic agent team orchestration
|
|
426
|
+
sw-pm.sh # Autonomous PM coordination
|
|
427
|
+
sw-recruit.sh # Agent recruitment system
|
|
428
|
+
sw-standup.sh # Daily team standups
|
|
429
|
+
sw-guild.sh # Knowledge guilds
|
|
430
|
+
sw-oversight.sh # Quality oversight board
|
|
431
|
+
sw-strategic.sh # Strategic intelligence
|
|
432
|
+
sw-scale.sh # Dynamic team scaling
|
|
433
|
+
... 10 more agent scripts
|
|
434
|
+
|
|
435
|
+
Intelligence Layer
|
|
295
436
|
sw-intelligence.sh # AI analysis engine
|
|
296
437
|
sw-predictive.sh # Risk scoring + anomaly detection
|
|
297
|
-
sw-
|
|
298
|
-
sw-
|
|
299
|
-
sw-
|
|
300
|
-
sw-
|
|
301
|
-
sw-
|
|
302
|
-
|
|
438
|
+
sw-adaptive.sh # Data-driven pipeline tuning
|
|
439
|
+
sw-security-audit.sh # Security analysis
|
|
440
|
+
sw-code-review.sh # Code quality analysis
|
|
441
|
+
sw-testgen.sh # Test generation
|
|
442
|
+
sw-architecture.sh # Architecture enforcement
|
|
443
|
+
|
|
444
|
+
Operational Layer
|
|
303
445
|
sw-fleet.sh # Multi-repo orchestration
|
|
304
|
-
sw-
|
|
446
|
+
sw-ci.sh # CI/CD orchestration
|
|
447
|
+
sw-webhook.sh # GitHub webhooks
|
|
448
|
+
sw-incident.sh # Incident response
|
|
449
|
+
sw-release-manager.sh # Release automation
|
|
450
|
+
... 20+ operational scripts
|
|
451
|
+
|
|
452
|
+
Observability Layer
|
|
453
|
+
sw-vitals.sh # Pipeline health scoring
|
|
454
|
+
sw-dora.sh # DORA metrics dashboard
|
|
455
|
+
sw-activity.sh # Live activity streams
|
|
456
|
+
sw-replay.sh # Pipeline playback
|
|
457
|
+
sw-trace.sh # E2E traceability
|
|
458
|
+
sw-otel.sh # OpenTelemetry integration
|
|
459
|
+
... observability services
|
|
460
|
+
|
|
461
|
+
Infrastructure
|
|
462
|
+
sw-github-graphql.sh # GitHub GraphQL API client
|
|
463
|
+
sw-github-checks.sh # Native GitHub check runs
|
|
464
|
+
sw-github-deploy.sh # Deployment tracking
|
|
465
|
+
sw-memory.sh # Persistent learning system
|
|
305
466
|
sw-cost.sh # Cost intelligence
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
467
|
+
sw-db.sh # SQLite persistence
|
|
468
|
+
sw-eventbus.sh # Async event bus
|
|
469
|
+
|
|
470
|
+
Tools & UX
|
|
471
|
+
dashboard/server.ts # Real-time dashboard
|
|
472
|
+
sw-session.sh # tmux agent sessions
|
|
473
|
+
sw-status.sh # Team dashboard
|
|
474
|
+
sw-docs.sh # Documentation sync
|
|
475
|
+
sw-tmux.sh # tmux health management
|
|
310
476
|
```
|
|
311
477
|
|
|
312
478
|
## Contributing
|
|
@@ -316,7 +482,7 @@ dashboard/
|
|
|
316
482
|
**Manual development:** Fork, branch, then:
|
|
317
483
|
|
|
318
484
|
```bash
|
|
319
|
-
npm test #
|
|
485
|
+
npm test # 450+ tests across 24 suites
|
|
320
486
|
```
|
|
321
487
|
|
|
322
488
|
## License
|