@cnrai/pave 0.3.35 → 0.3.51
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/LICENSE +21 -0
- package/README.md +21 -218
- package/package.json +32 -35
- package/pave.js +3 -0
- package/sandbox/SandboxRunner.js +1 -0
- package/sandbox/pave-run.js +2 -0
- package/sandbox/permission.js +1 -0
- package/sandbox/utils/yaml.js +1 -0
- package/MARKETPLACE.md +0 -406
- package/build-binary.js +0 -591
- package/build-npm.js +0 -537
- package/build.js +0 -230
- package/check-binary.js +0 -26
- package/deploy.sh +0 -95
- package/index.js +0 -5776
- package/lib/agent-registry.js +0 -1037
- package/lib/args-parser.js +0 -837
- package/lib/blessed-widget-patched.js +0 -93
- package/lib/cli-markdown.js +0 -590
- package/lib/compaction.js +0 -153
- package/lib/duration.js +0 -94
- package/lib/hash.js +0 -22
- package/lib/marketplace.js +0 -866
- package/lib/memory-config.js +0 -166
- package/lib/skill-manager.js +0 -891
- package/lib/soul.js +0 -31
- package/lib/tool-output-formatter.js +0 -180
- package/start-pave.sh +0 -149
- package/status.js +0 -271
- package/test/abort-stream.test.js +0 -445
- package/test/agent-auto-compaction.test.js +0 -552
- package/test/agent-comm-abort.test.js +0 -95
- package/test/agent-comm.test.js +0 -598
- package/test/agent-inbox.test.js +0 -576
- package/test/agent-init.test.js +0 -264
- package/test/agent-interrupt.test.js +0 -314
- package/test/agent-lifecycle.test.js +0 -520
- package/test/agent-log-files.test.js +0 -349
- package/test/agent-mode.manual-test.js +0 -392
- package/test/agent-parsing.test.js +0 -228
- package/test/agent-post-stream-idle.test.js +0 -762
- package/test/agent-registry.test.js +0 -359
- package/test/agent-rm.test.js +0 -442
- package/test/agent-spawn.test.js +0 -933
- package/test/agent-status-api.test.js +0 -624
- package/test/agent-update.test.js +0 -435
- package/test/args-parser.test.js +0 -391
- package/test/auto-compaction-chat.manual-test.js +0 -227
- package/test/auto-compaction.test.js +0 -941
- package/test/build-config.test.js +0 -120
- package/test/build-npm.test.js +0 -388
- package/test/chat-command.test.js +0 -137
- package/test/chat-leading-lines.test.js +0 -159
- package/test/config-flag.test.js +0 -272
- package/test/cursor-drift.test.js +0 -135
- package/test/debug-require.js +0 -23
- package/test/dir-migration.test.js +0 -323
- package/test/duration.test.js +0 -229
- package/test/ghostty-term.test.js +0 -202
- package/test/http500-backoff.test.js +0 -854
- package/test/integration.test.js +0 -86
- package/test/memory-guard-env.test.js +0 -220
- package/test/pr233-fixes.test.js +0 -259
- package/test/run-agent-init.js +0 -297
- package/test/run-all.js +0 -64
- package/test/run-config-flag.js +0 -159
- package/test/run-cursor-drift.js +0 -82
- package/test/run-session-path.js +0 -154
- package/test/run-tests.js +0 -643
- package/test/sandbox-redirect.test.js +0 -202
- package/test/session-path.test.js +0 -132
- package/test/shebang-strip.test.js +0 -241
- package/test/soul-reinject.test.js +0 -1027
- package/test/soul-reread.test.js +0 -281
- package/test/tool-output-formatter.test.js +0 -486
- package/test/tool-output-gating.test.js +0 -143
- package/test/tool-states.test.js +0 -167
- package/test/tools-flag.test.js +0 -65
- package/test/tui-attach.test.js +0 -1255
- package/test/tui-compaction.test.js +0 -354
- package/test/tui-wrap.test.js +0 -568
- package/test-binary.js +0 -52
- package/test-binary2.js +0 -36
package/MARKETPLACE.md
DELETED
|
@@ -1,406 +0,0 @@
|
|
|
1
|
-
# OpenPave Skill Marketplace
|
|
2
|
-
|
|
3
|
-
The OpenPave Skill Marketplace is a centralized registry for discovering, installing, and publishing PAVE skills. It uses GitHub Pages for the public-facing website and a simple YAML-based registry for skill metadata.
|
|
4
|
-
|
|
5
|
-
## Architecture
|
|
6
|
-
|
|
7
|
-
```
|
|
8
|
-
┌─────────────────────────────────────────────────────────────────┐
|
|
9
|
-
│ GitHub Pages Marketplace │
|
|
10
|
-
│ (cnrai.github.io/openpave-marketplace) │
|
|
11
|
-
├─────────────────────────────────────────────────────────────────┤
|
|
12
|
-
│ registry.yaml │ Static site (Jekyll/HTML) │
|
|
13
|
-
│ ┌─────────────────┐ │ ┌─────────────────────────────────────┐│
|
|
14
|
-
│ │ - gmail │ │ │ Browse skills, search, categories ││
|
|
15
|
-
│ │ - dropbox │ │ │ Installation instructions ││
|
|
16
|
-
│ │ - exa │ │ │ Auto-generated from registry.yaml ││
|
|
17
|
-
│ │ - ... │ │ └─────────────────────────────────────┘│
|
|
18
|
-
│ └─────────────────┘ │ │
|
|
19
|
-
└─────────────────────────────────────────────────────────────────┘
|
|
20
|
-
│
|
|
21
|
-
▼
|
|
22
|
-
┌─────────────────────────────────────────────────────────────────┐
|
|
23
|
-
│ pave CLI │
|
|
24
|
-
├─────────────────────────────────────────────────────────────────┤
|
|
25
|
-
│ pave search <query> │ Search marketplace registry │
|
|
26
|
-
│ pave install <name> │ Lookup in registry → clone from GitHub│
|
|
27
|
-
│ pave publish │ Validate & add to registry via PR │
|
|
28
|
-
│ pave update <name> │ Pull latest version from GitHub │
|
|
29
|
-
└─────────────────────────────────────────────────────────────────┘
|
|
30
|
-
```
|
|
31
|
-
|
|
32
|
-
## Registry Location
|
|
33
|
-
|
|
34
|
-
- **Repository**: `cnrai/openpave-marketplace`
|
|
35
|
-
- **GitHub Pages URL**: `https://cnrai.github.io/openpave-marketplace`
|
|
36
|
-
- **Raw Registry URL**: `https://raw.githubusercontent.com/cnrai/openpave-marketplace/main/registry.yaml`
|
|
37
|
-
|
|
38
|
-
## CLI Commands
|
|
39
|
-
|
|
40
|
-
### `pave search <query>`
|
|
41
|
-
|
|
42
|
-
Search the marketplace for skills by name, description, or keywords.
|
|
43
|
-
|
|
44
|
-
```bash
|
|
45
|
-
# Search for email-related skills
|
|
46
|
-
pave search email
|
|
47
|
-
|
|
48
|
-
# Search for storage skills
|
|
49
|
-
pave search storage
|
|
50
|
-
|
|
51
|
-
# List all available skills
|
|
52
|
-
pave search --all
|
|
53
|
-
```
|
|
54
|
-
|
|
55
|
-
### `pave install <source>`
|
|
56
|
-
|
|
57
|
-
Install a skill from various sources. Priority order:
|
|
58
|
-
|
|
59
|
-
| Source Type | Example | Description |
|
|
60
|
-
|-------------|---------|-------------|
|
|
61
|
-
| Registry name | `pave install gmail` | Lookup in marketplace → clone from GitHub |
|
|
62
|
-
| GitHub shorthand | `pave install cnrai/openpave-gmail` | Direct clone from GitHub |
|
|
63
|
-
| GitHub URL | `pave install https://github.com/cnrai/openpave-gmail` | Direct clone from URL |
|
|
64
|
-
| Local path | `pave install ./my-skill` | Copy from local directory |
|
|
65
|
-
|
|
66
|
-
```bash
|
|
67
|
-
# Install from marketplace (recommended)
|
|
68
|
-
pave install gmail
|
|
69
|
-
pave install dropbox
|
|
70
|
-
|
|
71
|
-
# Install from GitHub directly
|
|
72
|
-
pave install cnrai/openpave-gmail
|
|
73
|
-
|
|
74
|
-
# Install from local path (for development)
|
|
75
|
-
pave install /path/to/my-skill
|
|
76
|
-
pave install ./my-local-skill
|
|
77
|
-
|
|
78
|
-
# Force reinstall
|
|
79
|
-
pave install gmail --force
|
|
80
|
-
```
|
|
81
|
-
|
|
82
|
-
### `pave publish [path]`
|
|
83
|
-
|
|
84
|
-
Publish a skill to the marketplace. This validates your skill and creates a pull request to add it to the registry.
|
|
85
|
-
|
|
86
|
-
```bash
|
|
87
|
-
# Publish current directory
|
|
88
|
-
pave publish
|
|
89
|
-
|
|
90
|
-
# Publish specific path
|
|
91
|
-
pave publish ./my-skill
|
|
92
|
-
|
|
93
|
-
# Publish with verbose output
|
|
94
|
-
pave publish --verbose
|
|
95
|
-
```
|
|
96
|
-
|
|
97
|
-
**Requirements for publishing:**
|
|
98
|
-
- Valid `skill.yaml` with required fields
|
|
99
|
-
- Public GitHub repository
|
|
100
|
-
- MIT or compatible license
|
|
101
|
-
- README.md with usage instructions
|
|
102
|
-
|
|
103
|
-
### `pave update <name>`
|
|
104
|
-
|
|
105
|
-
Update an installed skill to the latest version from GitHub.
|
|
106
|
-
|
|
107
|
-
```bash
|
|
108
|
-
# Update a specific skill
|
|
109
|
-
pave update gmail
|
|
110
|
-
|
|
111
|
-
# Update all skills
|
|
112
|
-
pave update --all
|
|
113
|
-
|
|
114
|
-
# Check for updates without installing
|
|
115
|
-
pave update --check
|
|
116
|
-
```
|
|
117
|
-
|
|
118
|
-
### `pave list`
|
|
119
|
-
|
|
120
|
-
List installed skills.
|
|
121
|
-
|
|
122
|
-
```bash
|
|
123
|
-
pave list
|
|
124
|
-
pave list --json
|
|
125
|
-
```
|
|
126
|
-
|
|
127
|
-
### `pave remove <name>`
|
|
128
|
-
|
|
129
|
-
Remove an installed skill.
|
|
130
|
-
|
|
131
|
-
```bash
|
|
132
|
-
pave remove gmail
|
|
133
|
-
```
|
|
134
|
-
|
|
135
|
-
### `pave info <name>`
|
|
136
|
-
|
|
137
|
-
Show detailed information about a skill.
|
|
138
|
-
|
|
139
|
-
```bash
|
|
140
|
-
pave info gmail
|
|
141
|
-
pave info ./my-skill
|
|
142
|
-
```
|
|
143
|
-
|
|
144
|
-
## Registry Format
|
|
145
|
-
|
|
146
|
-
The marketplace uses a YAML-based registry (`registry.yaml`):
|
|
147
|
-
|
|
148
|
-
```yaml
|
|
149
|
-
# OpenPave Skill Marketplace Registry
|
|
150
|
-
version: 1
|
|
151
|
-
updated: 2026-02-22T12:00:00Z
|
|
152
|
-
|
|
153
|
-
skills:
|
|
154
|
-
gmail:
|
|
155
|
-
name: gmail
|
|
156
|
-
version: 1.0.0
|
|
157
|
-
description: Read and manage Gmail messages securely using OAuth
|
|
158
|
-
author: cnrai
|
|
159
|
-
repository: cnrai/openpave-gmail
|
|
160
|
-
category: communication
|
|
161
|
-
icon: "📧"
|
|
162
|
-
keywords:
|
|
163
|
-
- email
|
|
164
|
-
- gmail
|
|
165
|
-
- google
|
|
166
|
-
- inbox
|
|
167
|
-
- messages
|
|
168
|
-
published: 2026-02-21T00:00:00Z
|
|
169
|
-
|
|
170
|
-
dropbox:
|
|
171
|
-
name: dropbox
|
|
172
|
-
version: 1.0.0
|
|
173
|
-
description: Access Dropbox files and Paper documents
|
|
174
|
-
author: cnrai
|
|
175
|
-
repository: cnrai/openpave-dropbox
|
|
176
|
-
category: storage
|
|
177
|
-
icon: "📦"
|
|
178
|
-
keywords:
|
|
179
|
-
- files
|
|
180
|
-
- cloud
|
|
181
|
-
- storage
|
|
182
|
-
- dropbox
|
|
183
|
-
published: 2026-02-21T00:00:00Z
|
|
184
|
-
```
|
|
185
|
-
|
|
186
|
-
### Registry Fields
|
|
187
|
-
|
|
188
|
-
| Field | Required | Description |
|
|
189
|
-
|-------|----------|-------------|
|
|
190
|
-
| `name` | Yes | Unique skill identifier (lowercase, hyphens only) |
|
|
191
|
-
| `version` | Yes | Semver version (e.g., 1.0.0) |
|
|
192
|
-
| `description` | Yes | Short description (max 100 chars) |
|
|
193
|
-
| `author` | Yes | GitHub username or org |
|
|
194
|
-
| `repository` | Yes | GitHub repo in `owner/repo` format |
|
|
195
|
-
| `category` | Yes | One of: communication, storage, search, productivity, development, other |
|
|
196
|
-
| `icon` | No | Emoji icon for display |
|
|
197
|
-
| `keywords` | No | Array of search keywords |
|
|
198
|
-
| `published` | Yes | ISO 8601 timestamp |
|
|
199
|
-
|
|
200
|
-
## Skill Format (skill.yaml)
|
|
201
|
-
|
|
202
|
-
Each skill must have a `skill.yaml` in its root directory:
|
|
203
|
-
|
|
204
|
-
```yaml
|
|
205
|
-
# Required fields
|
|
206
|
-
name: gmail
|
|
207
|
-
version: 1.0.0
|
|
208
|
-
description: Read and manage Gmail messages securely using OAuth
|
|
209
|
-
entrypoint: index.js
|
|
210
|
-
pattern: sandbox
|
|
211
|
-
|
|
212
|
-
# Author information
|
|
213
|
-
author:
|
|
214
|
-
name: OpenPave
|
|
215
|
-
url: https://github.com/cnrai
|
|
216
|
-
|
|
217
|
-
# License and links
|
|
218
|
-
license: MIT
|
|
219
|
-
homepage: https://github.com/cnrai/openpave-gmail
|
|
220
|
-
repository: cnrai/openpave-gmail
|
|
221
|
-
|
|
222
|
-
# Available commands
|
|
223
|
-
commands:
|
|
224
|
-
- name: list
|
|
225
|
-
description: List recent messages
|
|
226
|
-
options:
|
|
227
|
-
- --max <number>
|
|
228
|
-
- --summary
|
|
229
|
-
- --json
|
|
230
|
-
|
|
231
|
-
- name: read
|
|
232
|
-
description: Read a specific message
|
|
233
|
-
args:
|
|
234
|
-
- <messageId>
|
|
235
|
-
options:
|
|
236
|
-
- --summary
|
|
237
|
-
- --json
|
|
238
|
-
|
|
239
|
-
# Token configuration for secure API access
|
|
240
|
-
tokens:
|
|
241
|
-
gmail:
|
|
242
|
-
type: oauth
|
|
243
|
-
description: Gmail API OAuth credentials
|
|
244
|
-
domains:
|
|
245
|
-
- gmail.googleapis.com
|
|
246
|
-
- "*.googleapis.com"
|
|
247
|
-
env:
|
|
248
|
-
required:
|
|
249
|
-
- GMAIL_CLIENT_ID
|
|
250
|
-
- GMAIL_CLIENT_SECRET
|
|
251
|
-
- GMAIL_REFRESH_TOKEN
|
|
252
|
-
|
|
253
|
-
# Sandbox permissions
|
|
254
|
-
permissions:
|
|
255
|
-
fs.read: []
|
|
256
|
-
fs.write: []
|
|
257
|
-
network:
|
|
258
|
-
- gmail.googleapis.com
|
|
259
|
-
- oauth2.googleapis.com
|
|
260
|
-
modules:
|
|
261
|
-
- fs
|
|
262
|
-
- path
|
|
263
|
-
|
|
264
|
-
# Metadata
|
|
265
|
-
category: communication
|
|
266
|
-
icon: "📧"
|
|
267
|
-
keywords:
|
|
268
|
-
- email
|
|
269
|
-
- gmail
|
|
270
|
-
- google
|
|
271
|
-
```
|
|
272
|
-
|
|
273
|
-
## Categories
|
|
274
|
-
|
|
275
|
-
| Category | Description | Examples |
|
|
276
|
-
|----------|-------------|----------|
|
|
277
|
-
| `communication` | Email, messaging, notifications | gmail, slack, discord |
|
|
278
|
-
| `storage` | File storage, cloud drives | dropbox, gdrive, s3 |
|
|
279
|
-
| `search` | Web search, research tools | exa, google-search |
|
|
280
|
-
| `productivity` | Calendar, tasks, notes | google-calendar, notion |
|
|
281
|
-
| `development` | Code, git, CI/CD tools | github, gitlab |
|
|
282
|
-
| `other` | Everything else | - |
|
|
283
|
-
|
|
284
|
-
## Marketplace Repository Structure
|
|
285
|
-
|
|
286
|
-
```
|
|
287
|
-
cnrai/openpave-marketplace/
|
|
288
|
-
├── registry.yaml # Main skill registry
|
|
289
|
-
├── skills/ # Individual skill metadata (optional, for caching)
|
|
290
|
-
│ ├── gmail.yaml
|
|
291
|
-
│ ├── dropbox.yaml
|
|
292
|
-
│ └── exa.yaml
|
|
293
|
-
├── index.html # Static site homepage
|
|
294
|
-
├── _config.yml # Jekyll config for GitHub Pages
|
|
295
|
-
├── assets/
|
|
296
|
-
│ └── style.css
|
|
297
|
-
└── README.md
|
|
298
|
-
```
|
|
299
|
-
|
|
300
|
-
## Publishing Workflow
|
|
301
|
-
|
|
302
|
-
### For Skill Authors
|
|
303
|
-
|
|
304
|
-
1. **Create your skill repository** on GitHub (e.g., `yourname/openpave-myskill`)
|
|
305
|
-
|
|
306
|
-
2. **Add required files:**
|
|
307
|
-
- `skill.yaml` - Skill manifest
|
|
308
|
-
- `index.js` - Main entrypoint
|
|
309
|
-
- `README.md` - Documentation
|
|
310
|
-
- `LICENSE` - MIT recommended
|
|
311
|
-
|
|
312
|
-
3. **Test locally:**
|
|
313
|
-
```bash
|
|
314
|
-
pave install ./my-skill
|
|
315
|
-
pave run myskill --help
|
|
316
|
-
```
|
|
317
|
-
|
|
318
|
-
4. **Publish to marketplace:**
|
|
319
|
-
```bash
|
|
320
|
-
cd my-skill
|
|
321
|
-
pave publish
|
|
322
|
-
```
|
|
323
|
-
|
|
324
|
-
5. **Wait for PR approval** - maintainers will review and merge
|
|
325
|
-
|
|
326
|
-
### For Maintainers
|
|
327
|
-
|
|
328
|
-
1. Review incoming PRs to `cnrai/openpave-marketplace`
|
|
329
|
-
2. Verify skill.yaml is valid
|
|
330
|
-
3. Check repository exists and is accessible
|
|
331
|
-
4. Test installation: `pave install owner/repo`
|
|
332
|
-
5. Merge PR to add to registry
|
|
333
|
-
|
|
334
|
-
## Local Development
|
|
335
|
-
|
|
336
|
-
### Testing without marketplace
|
|
337
|
-
|
|
338
|
-
```bash
|
|
339
|
-
# Install from local path
|
|
340
|
-
pave install ./my-skill
|
|
341
|
-
|
|
342
|
-
# Run commands
|
|
343
|
-
pave run myskill command --args
|
|
344
|
-
|
|
345
|
-
# Check info
|
|
346
|
-
pave info myskill
|
|
347
|
-
```
|
|
348
|
-
|
|
349
|
-
### Testing marketplace integration
|
|
350
|
-
|
|
351
|
-
```bash
|
|
352
|
-
# Set custom registry URL (for testing)
|
|
353
|
-
PAVE_REGISTRY_URL=https://raw.githubusercontent.com/yourname/test-marketplace/main/registry.yaml pave search test
|
|
354
|
-
|
|
355
|
-
# Or use local file
|
|
356
|
-
PAVE_REGISTRY_FILE=./test-registry.yaml pave search test
|
|
357
|
-
```
|
|
358
|
-
|
|
359
|
-
## Configuration
|
|
360
|
-
|
|
361
|
-
### Environment Variables
|
|
362
|
-
|
|
363
|
-
| Variable | Description | Default |
|
|
364
|
-
|----------|-------------|---------|
|
|
365
|
-
| `PAVE_REGISTRY_URL` | Custom registry URL | `https://raw.githubusercontent.com/cnrai/openpave-marketplace/main/registry.yaml` |
|
|
366
|
-
| `PAVE_REGISTRY_FILE` | Local registry file (overrides URL) | - |
|
|
367
|
-
| `PAVE_CACHE_TTL` | Registry cache TTL in seconds | `3600` (1 hour) |
|
|
368
|
-
|
|
369
|
-
### Cache Location
|
|
370
|
-
|
|
371
|
-
The registry is cached locally to reduce network requests:
|
|
372
|
-
|
|
373
|
-
```
|
|
374
|
-
~/.pave/cache/
|
|
375
|
-
├── registry.yaml # Cached registry
|
|
376
|
-
└── registry.meta.json # Cache metadata (timestamp, etag)
|
|
377
|
-
```
|
|
378
|
-
|
|
379
|
-
## Error Handling
|
|
380
|
-
|
|
381
|
-
### Common Errors
|
|
382
|
-
|
|
383
|
-
| Error | Cause | Solution |
|
|
384
|
-
|-------|-------|----------|
|
|
385
|
-
| `Skill not found in registry` | Skill name not in marketplace | Check spelling or install from GitHub URL |
|
|
386
|
-
| `Repository not found` | GitHub repo doesn't exist | Verify repository URL |
|
|
387
|
-
| `Invalid skill.yaml` | Missing required fields | Check skill.yaml format |
|
|
388
|
-
| `Network error` | Can't reach GitHub | Check internet connection |
|
|
389
|
-
|
|
390
|
-
## Node 16 Compatibility
|
|
391
|
-
|
|
392
|
-
The marketplace module is designed for Node 16 compatibility:
|
|
393
|
-
|
|
394
|
-
- Uses `https` module instead of `fetch`
|
|
395
|
-
- Synchronous YAML parsing with `js-yaml`
|
|
396
|
-
- No ES2022+ features
|
|
397
|
-
- Works on iSH iOS
|
|
398
|
-
|
|
399
|
-
## Future Enhancements
|
|
400
|
-
|
|
401
|
-
- [ ] Skill ratings and reviews
|
|
402
|
-
- [ ] Download statistics
|
|
403
|
-
- [ ] Verified publisher badges
|
|
404
|
-
- [ ] Automatic version updates
|
|
405
|
-
- [ ] Dependency resolution between skills
|
|
406
|
-
- [ ] Private/enterprise registries
|