@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.
Files changed (83) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +21 -218
  3. package/package.json +32 -35
  4. package/pave.js +3 -0
  5. package/sandbox/SandboxRunner.js +1 -0
  6. package/sandbox/pave-run.js +2 -0
  7. package/sandbox/permission.js +1 -0
  8. package/sandbox/utils/yaml.js +1 -0
  9. package/MARKETPLACE.md +0 -406
  10. package/build-binary.js +0 -591
  11. package/build-npm.js +0 -537
  12. package/build.js +0 -230
  13. package/check-binary.js +0 -26
  14. package/deploy.sh +0 -95
  15. package/index.js +0 -5776
  16. package/lib/agent-registry.js +0 -1037
  17. package/lib/args-parser.js +0 -837
  18. package/lib/blessed-widget-patched.js +0 -93
  19. package/lib/cli-markdown.js +0 -590
  20. package/lib/compaction.js +0 -153
  21. package/lib/duration.js +0 -94
  22. package/lib/hash.js +0 -22
  23. package/lib/marketplace.js +0 -866
  24. package/lib/memory-config.js +0 -166
  25. package/lib/skill-manager.js +0 -891
  26. package/lib/soul.js +0 -31
  27. package/lib/tool-output-formatter.js +0 -180
  28. package/start-pave.sh +0 -149
  29. package/status.js +0 -271
  30. package/test/abort-stream.test.js +0 -445
  31. package/test/agent-auto-compaction.test.js +0 -552
  32. package/test/agent-comm-abort.test.js +0 -95
  33. package/test/agent-comm.test.js +0 -598
  34. package/test/agent-inbox.test.js +0 -576
  35. package/test/agent-init.test.js +0 -264
  36. package/test/agent-interrupt.test.js +0 -314
  37. package/test/agent-lifecycle.test.js +0 -520
  38. package/test/agent-log-files.test.js +0 -349
  39. package/test/agent-mode.manual-test.js +0 -392
  40. package/test/agent-parsing.test.js +0 -228
  41. package/test/agent-post-stream-idle.test.js +0 -762
  42. package/test/agent-registry.test.js +0 -359
  43. package/test/agent-rm.test.js +0 -442
  44. package/test/agent-spawn.test.js +0 -933
  45. package/test/agent-status-api.test.js +0 -624
  46. package/test/agent-update.test.js +0 -435
  47. package/test/args-parser.test.js +0 -391
  48. package/test/auto-compaction-chat.manual-test.js +0 -227
  49. package/test/auto-compaction.test.js +0 -941
  50. package/test/build-config.test.js +0 -120
  51. package/test/build-npm.test.js +0 -388
  52. package/test/chat-command.test.js +0 -137
  53. package/test/chat-leading-lines.test.js +0 -159
  54. package/test/config-flag.test.js +0 -272
  55. package/test/cursor-drift.test.js +0 -135
  56. package/test/debug-require.js +0 -23
  57. package/test/dir-migration.test.js +0 -323
  58. package/test/duration.test.js +0 -229
  59. package/test/ghostty-term.test.js +0 -202
  60. package/test/http500-backoff.test.js +0 -854
  61. package/test/integration.test.js +0 -86
  62. package/test/memory-guard-env.test.js +0 -220
  63. package/test/pr233-fixes.test.js +0 -259
  64. package/test/run-agent-init.js +0 -297
  65. package/test/run-all.js +0 -64
  66. package/test/run-config-flag.js +0 -159
  67. package/test/run-cursor-drift.js +0 -82
  68. package/test/run-session-path.js +0 -154
  69. package/test/run-tests.js +0 -643
  70. package/test/sandbox-redirect.test.js +0 -202
  71. package/test/session-path.test.js +0 -132
  72. package/test/shebang-strip.test.js +0 -241
  73. package/test/soul-reinject.test.js +0 -1027
  74. package/test/soul-reread.test.js +0 -281
  75. package/test/tool-output-formatter.test.js +0 -486
  76. package/test/tool-output-gating.test.js +0 -143
  77. package/test/tool-states.test.js +0 -167
  78. package/test/tools-flag.test.js +0 -65
  79. package/test/tui-attach.test.js +0 -1255
  80. package/test/tui-compaction.test.js +0 -354
  81. package/test/tui-wrap.test.js +0 -568
  82. package/test-binary.js +0 -52
  83. 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