@hienlh/ppm 0.12.12 → 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.
Files changed (104) hide show
  1. package/CHANGELOG.md +10 -1
  2. package/README.md +11 -0
  3. package/assets/skills/ppm/SKILL.md +74 -0
  4. package/assets/skills/ppm/references/cli-reference.md +728 -0
  5. package/assets/skills/ppm/references/common-tasks.md +139 -0
  6. package/assets/skills/ppm/references/http-api.md +204 -0
  7. package/dist/web/assets/ai-settings-section-QE6nBNgN.js +1 -0
  8. package/dist/web/assets/{api-settings-C3T95dWg.js → api-settings-DAk7D-NP.js} +1 -1
  9. package/dist/web/assets/architecture-PBZL5I3N-DvZbltvY.js +1 -0
  10. package/dist/web/assets/{audio-preview-BkbgGtDH.js → audio-preview-J5neETTY.js} +1 -1
  11. package/dist/web/assets/chat-tab-sVHRa1Fz.js +12 -0
  12. package/dist/web/assets/{code-editor-BtspASkW.js → code-editor-tMfcFaQ5.js} +4 -4
  13. package/dist/web/assets/{conflict-editor-Dgsu6fmj.js → conflict-editor-FydCxWTC.js} +1 -1
  14. package/dist/web/assets/{csv-preview-DcWCjQkZ.js → csv-preview-HMSavgBb.js} +1 -1
  15. package/dist/web/assets/{database-viewer-C85RxdMV.js → database-viewer-Celi1puH.js} +2 -2
  16. package/dist/web/assets/{diff-viewer-2pPy97Tl.js → diff-viewer-NgDJLTk9.js} +1 -1
  17. package/dist/web/assets/{esm-_CLpyLJ_.js → esm-K1XIK4vc.js} +1 -1
  18. package/dist/web/assets/{extension-store-BZDZ9QRc.js → extension-store-3yZYn07W.js} +1 -1
  19. package/dist/web/assets/{extension-webview-U1lMYZ0p.js → extension-webview-xWAdCj3q.js} +1 -1
  20. package/dist/web/assets/{file-store-4BpOJthN.js → file-store-BrbCNyLm.js} +1 -1
  21. package/dist/web/assets/gitGraph-HDMCJU4V-BxhdxFgj.js +1 -0
  22. package/dist/web/assets/{image-preview-BcT1SbY2.js → image-preview-C6bFkdZD.js} +1 -1
  23. package/dist/web/assets/index-BMhiElt6.css +2 -0
  24. package/dist/web/assets/index-DtbAoxyy.js +23 -0
  25. package/dist/web/assets/info-3K5VOQVL-BwAZ2zd8.js +1 -0
  26. package/dist/web/assets/{input-2eDVjcRZ.js → input-Dk49gO8E.js} +1 -1
  27. package/dist/web/assets/{keybindings-store-BOG1yviy.js → keybindings-store-B-zET-0o.js} +1 -1
  28. package/dist/web/assets/keybindings-store-DaBV6qhz.js +1 -0
  29. package/dist/web/assets/{markdown-renderer-Dbam_-04.js → markdown-renderer-BAnnk1pI.js} +3 -3
  30. package/dist/web/assets/packet-RMMSAZCW-tx2n5Qry.js +1 -0
  31. package/dist/web/assets/{pdf-preview-BmHVGx32.js → pdf-preview-BNuFTSOL.js} +1 -1
  32. package/dist/web/assets/pie-UPGHQEXC-D6S2MqVT.js +1 -0
  33. package/dist/web/assets/plus-51UQ45rf.js +1 -0
  34. package/dist/web/assets/{port-forwarding-tab-Dkq1upWC.js → port-forwarding-tab-BbDlGxAs.js} +1 -1
  35. package/dist/web/assets/{postgres-viewer-BgBJAJ9q.js → postgres-viewer-Cman1YRO.js} +3 -3
  36. package/dist/web/assets/radar-KQ55EAFF-BviZcL-b.js +1 -0
  37. package/dist/web/assets/{scroll-area-CdxNNnN-.js → scroll-area-BEllam7_.js} +1 -1
  38. package/dist/web/assets/{settings-store-CMAssqyb.js → settings-store-BLLR7ed8.js} +2 -2
  39. package/dist/web/assets/settings-tab-n5X_Dbu4.js +1 -0
  40. package/dist/web/assets/{sql-query-editor-b7zJ8XPp.js → sql-query-editor-CVAnRFbi.js} +1 -1
  41. package/dist/web/assets/{sqlite-viewer-4lLAz1es.js → sqlite-viewer-D6JT11uu.js} +1 -1
  42. package/dist/web/assets/{tab-store-DNBsLdPn.js → tab-store-B3M9hjho.js} +1 -1
  43. package/dist/web/assets/{terminal-tab-BtnqkN1H.js → terminal-tab-B4kMthYo.js} +1 -1
  44. package/dist/web/assets/treemap-KZPCXAKY-CM54VdaB.js +1 -0
  45. package/dist/web/assets/{use-blob-url-QX-XajU8.js → use-blob-url-e9uTXjv5.js} +1 -1
  46. package/dist/web/assets/{use-monaco-theme-D68oX3XU.js → use-monaco-theme-BkZDwoVd.js} +1 -1
  47. package/dist/web/assets/{vendor-mermaid-sQS4C_iL.js → vendor-mermaid-Dx86tuVP.js} +2 -2
  48. package/dist/web/assets/{video-preview-CkOKvVLt.js → video-preview-BftQOOzF.js} +1 -1
  49. package/dist/web/index.html +18 -18
  50. package/dist/web/sw.js +1 -1
  51. package/docs/project-changelog.md +15 -1
  52. package/package.json +3 -3
  53. package/scripts/generate-ppm-skill.ts +23 -0
  54. package/scripts/lib/generate-cli-reference.ts +81 -0
  55. package/scripts/lib/generate-common-tasks.ts +14 -0
  56. package/scripts/lib/generate-http-api.ts +145 -0
  57. package/scripts/lib/generate-skill-md.ts +28 -0
  58. package/scripts/lib/write-output.ts +17 -0
  59. package/src/cli/commands/export-cmd.ts +85 -0
  60. package/src/index.ts +167 -153
  61. package/src/services/skill-export/backup-existing.ts +33 -0
  62. package/src/services/skill-export/copy-bundled-skill.ts +36 -0
  63. package/src/services/skill-export/generate-db-schema.ts +66 -0
  64. package/src/services/skill-export/index.ts +6 -0
  65. package/src/services/skill-export/resolve-assets-dir.ts +31 -0
  66. package/src/services/skill-export/resolve-target-dir.ts +17 -0
  67. package/src/web/components/chat/chat-tab.tsx +6 -1
  68. package/src/web/components/chat/message-list.tsx +96 -43
  69. package/src/web/hooks/use-chat.ts +37 -1
  70. package/src/web/lib/flatten-expansions.ts +36 -0
  71. package/templates/skill/SKILL.md.tmpl +74 -0
  72. package/templates/skill/common-tasks.md +139 -0
  73. package/assets/skills/ppm-guide/SKILL.md +0 -61
  74. package/dist/web/assets/ai-settings-section-NNWp6nw7.js +0 -1
  75. package/dist/web/assets/architecture-PBZL5I3N-DDuzYaUV.js +0 -1
  76. package/dist/web/assets/chat-tab-BZlP1qjX.js +0 -12
  77. package/dist/web/assets/chevron-up-BWBvMZkp.js +0 -1
  78. package/dist/web/assets/gitGraph-HDMCJU4V-BURAevTc.js +0 -1
  79. package/dist/web/assets/index-BWSRKVZn.js +0 -23
  80. package/dist/web/assets/index-b6tIZImC.css +0 -2
  81. package/dist/web/assets/info-3K5VOQVL-tSD4Fpi3.js +0 -1
  82. package/dist/web/assets/keybindings-store-BvdUoEC7.js +0 -1
  83. package/dist/web/assets/packet-RMMSAZCW-DmDLZUrV.js +0 -1
  84. package/dist/web/assets/pie-UPGHQEXC-w03Pc9ZR.js +0 -1
  85. package/dist/web/assets/pre-compact-button-Dp7Hs49L.js +0 -1
  86. package/dist/web/assets/pre-compact-section-DnM5fGSR.js +0 -1
  87. package/dist/web/assets/radar-KQ55EAFF-C9XQvoey.js +0 -1
  88. package/dist/web/assets/settings-tab-zYWKTq5z.js +0 -1
  89. package/dist/web/assets/treemap-KZPCXAKY-lmftxSky.js +0 -1
  90. package/scripts/generate-ppm-guide.ts +0 -92
  91. package/src/web/components/chat/pre-compact-section.tsx +0 -69
  92. /package/dist/web/assets/{api-client-DIhJ5qVW.js → api-client-Dvzcc_EO.js} +0 -0
  93. /package/dist/web/assets/{csv-parser-B5QW8pZ6.js → csv-parser--2WJNgS7.js} +0 -0
  94. /package/dist/web/assets/{dist-GtkSekuX.js → dist-im4ynINo.js} +0 -0
  95. /package/dist/web/assets/{katex-C3cZrCvP.js → katex-CKoArbIw.js} +0 -0
  96. /package/dist/web/assets/{lib-Bu71-TFS.js → lib-DQHnkzGy.js} +0 -0
  97. /package/dist/web/assets/{react-DMIOAtcX.js → react-GqWghJ-L.js} +0 -0
  98. /package/dist/web/assets/{refresh-cw-BjrAbUJe.js → refresh-cw-LlbZDJpO.js} +0 -0
  99. /package/dist/web/assets/{sql-completion-provider-CULTsCqR.js → sql-completion-provider-C3cq9j99.js} +0 -0
  100. /package/dist/web/assets/{table-tf7pRkME.js → table-Dq575bPF.js} +0 -0
  101. /package/dist/web/assets/{text-wrap-BV-R4Vvy.js → text-wrap-Cn6BNQfq.js} +0 -0
  102. /package/dist/web/assets/{trash-2-DjQOpgUV.js → trash-2-CJYoLw7Q.js} +0 -0
  103. /package/dist/web/assets/{utils-CQux7CsO.js → utils-CTg5uAYR.js} +0 -0
  104. /package/dist/web/assets/{vendor-xterm-K3_Xwigj.js → vendor-xterm-CU2c3f0A.js} +0 -0
@@ -0,0 +1,728 @@
1
+ # PPM CLI Reference
2
+
3
+ _Auto-generated. Do not edit._
4
+
5
+ Root binary: `ppm`. Run `ppm <command> --help` for full usage.
6
+
7
+ ## Global Options
8
+
9
+ - `-V, --version` — output the version number
10
+
11
+ ## Commands
12
+
13
+ ## `ppm autostart`
14
+
15
+ Manage auto-start on boot (enable/disable/status)
16
+
17
+ **Usage:** `ppm autostart [options] [command]`
18
+
19
+ ### `ppm autostart enable`
20
+
21
+ Register PPM to start automatically on boot
22
+
23
+ **Options:**
24
+ - `-p, --port <port>` — Override port
25
+ - `-s, --share` — (deprecated) Tunnel is now always enabled
26
+ - `--profile <name>` — DB profile name
27
+
28
+ ### `ppm autostart disable`
29
+
30
+ Remove PPM auto-start registration
31
+
32
+ ### `ppm autostart status`
33
+
34
+ Show auto-start status
35
+
36
+ **Options:**
37
+ - `--json` — Output as JSON
38
+
39
+ ## `ppm bot`
40
+
41
+ PPMBot utilities
42
+
43
+ **Usage:** `ppm bot [options] [command]`
44
+
45
+ ### `ppm bot delegate`
46
+
47
+ Delegate a task to a project subagent
48
+
49
+ **Options:**
50
+ - `--chat <id>` — Telegram chat ID
51
+ - `--project <name>` — Project name
52
+ - `--prompt <text>` — Enriched task prompt
53
+ - `--timeout <ms>` — Timeout in milliseconds (default: `"900000"`)
54
+
55
+ ### `ppm bot task-status`
56
+
57
+ Get status of a delegated task
58
+
59
+ **Usage:** `ppm bot task-status [options] <id>`
60
+
61
+ ### `ppm bot task-result`
62
+
63
+ Get full result of a completed task
64
+
65
+ **Usage:** `ppm bot task-result [options] <id>`
66
+
67
+ ### `ppm bot tasks`
68
+
69
+ List recent delegated tasks
70
+
71
+ **Options:**
72
+ - `--chat <id>` — Telegram chat ID (auto-detected if single)
73
+
74
+ ### `ppm bot memory`
75
+
76
+ Manage cross-project memories
77
+
78
+ **Usage:** `ppm bot memory [options] [command]`
79
+
80
+ #### `ppm bot memory save`
81
+
82
+ Save a cross-project memory
83
+
84
+ **Options:**
85
+ - `-c, --category <cat>` — Category: fact|preference|decision|architecture|issue (default: `"fact"`)
86
+ - `-s, --session <id>` — Session ID (optional)
87
+
88
+ **Usage:** `ppm bot memory save [options] <content>`
89
+
90
+ #### `ppm bot memory list`
91
+
92
+ List active cross-project memories
93
+
94
+ **Options:**
95
+ - `-l, --limit <n>` — Max results (default: `"30"`)
96
+ - `--json` — Output as JSON
97
+
98
+ #### `ppm bot memory forget`
99
+
100
+ Delete memories matching a topic (FTS5 search)
101
+
102
+ **Usage:** `ppm bot memory forget [options] <topic>`
103
+
104
+ ### `ppm bot project`
105
+
106
+ Manage bot project context
107
+
108
+ **Usage:** `ppm bot project [options] [command]`
109
+
110
+ #### `ppm bot project list`
111
+
112
+ List available projects
113
+
114
+ **Options:**
115
+ - `--json` — Output as JSON
116
+
117
+ ### `ppm bot status`
118
+
119
+ Show current status and running tasks
120
+
121
+ **Options:**
122
+ - `--chat <id>` — Telegram chat ID (auto-detected if single)
123
+ - `--json` — Output as JSON
124
+
125
+ ### `ppm bot version`
126
+
127
+ Show PPM version
128
+
129
+ ### `ppm bot restart`
130
+
131
+ Restart the PPM server
132
+
133
+ ### `ppm bot help`
134
+
135
+ Show all bot CLI commands
136
+
137
+ ## `ppm chat`
138
+
139
+ Manage AI chat sessions
140
+
141
+ **Usage:** `ppm chat [options] [command]`
142
+
143
+ ### `ppm chat list`
144
+
145
+ List all chat sessions
146
+
147
+ **Options:**
148
+ - `-p, --project <name>` — Filter by project name
149
+
150
+ ### `ppm chat create`
151
+
152
+ Create a new chat session
153
+
154
+ **Options:**
155
+ - `-p, --project <name>` — Project name or path
156
+ - `--provider <provider>` — AI provider (default: claude)
157
+
158
+ ### `ppm chat send`
159
+
160
+ Send a message and stream response to stdout
161
+
162
+ **Options:**
163
+ - `-p, --project <name>` — Project name or path
164
+
165
+ **Usage:** `ppm chat send [options] <session-id> <message>`
166
+
167
+ ### `ppm chat resume`
168
+
169
+ Resume an interactive chat session
170
+
171
+ **Options:**
172
+ - `-p, --project <name>` — Project name or path
173
+
174
+ **Usage:** `ppm chat resume [options] <session-id>`
175
+
176
+ ### `ppm chat delete`
177
+
178
+ Delete a chat session
179
+
180
+ **Usage:** `ppm chat delete [options] <session-id>`
181
+
182
+ ## `ppm cloud`
183
+
184
+ PPM Cloud — device registry + tunnel URL sync
185
+
186
+ **Usage:** `ppm cloud [options] [command]`
187
+
188
+ ### `ppm cloud login`
189
+
190
+ Sign in with Google
191
+
192
+ **Options:**
193
+ - `--url <url>` — Cloud URL override
194
+ - `--device-code` — Force device code flow (for remote terminals)
195
+
196
+ ### `ppm cloud logout`
197
+
198
+ Sign out from PPM Cloud
199
+
200
+ ### `ppm cloud status`
201
+
202
+ Show PPM Cloud connection status
203
+
204
+ **Options:**
205
+ - `--json` — Output as JSON
206
+
207
+ ### `ppm cloud devices`
208
+
209
+ List all registered devices from cloud
210
+
211
+ **Options:**
212
+ - `--json` — Output as JSON
213
+
214
+ ## `ppm config`
215
+
216
+ Get or set PPM configuration
217
+
218
+ **Usage:** `ppm config [options] [command]`
219
+
220
+ ### `ppm config get`
221
+
222
+ Get a config value (e.g. port, auth.enabled)
223
+
224
+ **Usage:** `ppm config get [options] <key>`
225
+
226
+ ### `ppm config set`
227
+
228
+ Set a config value (e.g. port 9090)
229
+
230
+ **Usage:** `ppm config set [options] <key> <value>`
231
+
232
+ ## `ppm db`
233
+
234
+ Manage database connections and execute queries
235
+
236
+ **Usage:** `ppm db [options] [command]`
237
+
238
+ ### `ppm db list`
239
+
240
+ List all saved database connections
241
+
242
+ ### `ppm db add`
243
+
244
+ Add a new database connection
245
+
246
+ **Options:**
247
+ - `-n, --name <name>` — Connection name (unique)
248
+ - `-t, --type <type>` — Database type: sqlite | postgres
249
+ - `-c, --connection-string <url>` — PostgreSQL connection string
250
+ - `-f, --file <path>` — SQLite file path (absolute)
251
+ - `-g, --group <group>` — Group name
252
+ - `--color <color>` — Tab color (hex, e.g. #3b82f6)
253
+
254
+ ### `ppm db remove`
255
+
256
+ Remove a saved connection (by name or ID)
257
+
258
+ **Usage:** `ppm db remove [options] <name>`
259
+
260
+ ### `ppm db test`
261
+
262
+ Test a saved connection
263
+
264
+ **Usage:** `ppm db test [options] <name>`
265
+
266
+ ### `ppm db tables`
267
+
268
+ List tables in a database connection
269
+
270
+ **Usage:** `ppm db tables [options] <name>`
271
+
272
+ ### `ppm db schema`
273
+
274
+ Show table schema (columns, types, constraints)
275
+
276
+ **Options:**
277
+ - `-s, --schema <schema>` — PostgreSQL schema name (default: `"public"`)
278
+
279
+ **Usage:** `ppm db schema [options] <name> <table>`
280
+
281
+ ### `ppm db data`
282
+
283
+ View table data (paginated)
284
+
285
+ **Options:**
286
+ - `-p, --page <page>` — Page number (default: `"1"`)
287
+ - `-l, --limit <limit>` — Rows per page (default: `"50"`)
288
+ - `--order <column>` — Order by column
289
+ - `--desc` — Descending order
290
+ - `-s, --schema <schema>` — PostgreSQL schema name (default: `"public"`)
291
+
292
+ **Usage:** `ppm db data [options] <name> <table>`
293
+
294
+ ### `ppm db query`
295
+
296
+ Execute a SQL query against a saved connection
297
+
298
+ **Usage:** `ppm db query [options] <name> <sql>`
299
+
300
+ ## `ppm down`
301
+
302
+ Fully shut down PPM (supervisor + server + tunnel)
303
+
304
+ ## `ppm export`
305
+
306
+ Export PPM metadata for external tools (AI agents, editors)
307
+
308
+ **Usage:** `ppm export [options] [command]`
309
+
310
+ ### `ppm export skill`
311
+
312
+ Export Claude Code skill for controlling PPM from external AI tools
313
+
314
+ **Options:**
315
+ - `--install` — Install to target dir (default scope=user → ~/.claude/skills/ppm/)
316
+ - `--scope <scope>` — Install scope: user | project (default: `"user"`)
317
+ - `--output <dir>` — Custom output directory (overrides --scope)
318
+ - `--format <fmt>` — Output format (default: `"claude-code"`)
319
+
320
+ ## `ppm ext`
321
+
322
+ Manage PPM extensions
323
+
324
+ **Usage:** `ppm ext [options] [command]`
325
+
326
+ ### `ppm ext install`
327
+
328
+ Install an extension from npm
329
+
330
+ **Usage:** `ppm ext install [options] <name>`
331
+
332
+ ### `ppm ext remove`
333
+
334
+ Remove an installed extension
335
+
336
+ **Usage:** `ppm ext remove [options] <name>`
337
+
338
+ ### `ppm ext list`
339
+
340
+ List installed extensions
341
+
342
+ ### `ppm ext enable`
343
+
344
+ Enable an extension
345
+
346
+ **Usage:** `ppm ext enable [options] <name>`
347
+
348
+ ### `ppm ext disable`
349
+
350
+ Disable an extension
351
+
352
+ **Usage:** `ppm ext disable [options] <name>`
353
+
354
+ ### `ppm ext dev`
355
+
356
+ Symlink a local extension for development
357
+
358
+ **Usage:** `ppm ext dev [options] <path>`
359
+
360
+ ## `ppm git`
361
+
362
+ Git operations for a project
363
+
364
+ **Usage:** `ppm git [options] [command]`
365
+
366
+ ### `ppm git status`
367
+
368
+ Show working tree status
369
+
370
+ **Options:**
371
+ - `-p, --project <name>` — Project name or path
372
+
373
+ ### `ppm git log`
374
+
375
+ Show recent commits
376
+
377
+ **Options:**
378
+ - `-p, --project <name>` — Project name or path
379
+ - `-n, --count <n>` — Number of commits to show (default: `"20"`)
380
+
381
+ ### `ppm git diff`
382
+
383
+ Show diff between refs or working tree
384
+
385
+ **Options:**
386
+ - `-p, --project <name>` — Project name or path
387
+
388
+ **Usage:** `ppm git diff [options] [ref1] [ref2]`
389
+
390
+ ### `ppm git stage`
391
+
392
+ Stage files (use "." to stage all)
393
+
394
+ **Options:**
395
+ - `-p, --project <name>` — Project name or path
396
+
397
+ **Usage:** `ppm git stage [options] <files...>`
398
+
399
+ ### `ppm git unstage`
400
+
401
+ Unstage files
402
+
403
+ **Options:**
404
+ - `-p, --project <name>` — Project name or path
405
+
406
+ **Usage:** `ppm git unstage [options] <files...>`
407
+
408
+ ### `ppm git commit`
409
+
410
+ Commit staged changes
411
+
412
+ **Options:**
413
+ - `-p, --project <name>` — Project name or path
414
+ - `-m, --message <msg>` — Commit message
415
+
416
+ ### `ppm git push`
417
+
418
+ Push to remote
419
+
420
+ **Options:**
421
+ - `-p, --project <name>` — Project name or path
422
+ - `--remote <remote>` — Remote name (default: `"origin"`)
423
+ - `--branch <branch>` — Branch name
424
+
425
+ ### `ppm git pull`
426
+
427
+ Pull from remote
428
+
429
+ **Options:**
430
+ - `-p, --project <name>` — Project name or path
431
+ - `--remote <remote>` — Remote name
432
+ - `--branch <branch>` — Branch name
433
+
434
+ ### `ppm git branch`
435
+
436
+ Branch operations
437
+
438
+ **Usage:** `ppm git branch [options] [command]`
439
+
440
+ #### `ppm git branch create`
441
+
442
+ Create and checkout a new branch
443
+
444
+ **Options:**
445
+ - `-p, --project <name>` — Project name or path
446
+ - `--from <ref>` — Base ref (commit/branch/tag)
447
+
448
+ **Usage:** `ppm git branch create [options] <name>`
449
+
450
+ #### `ppm git branch checkout`
451
+
452
+ Switch to a branch
453
+
454
+ **Options:**
455
+ - `-p, --project <name>` — Project name or path
456
+
457
+ **Usage:** `ppm git branch checkout [options] <name>`
458
+
459
+ #### `ppm git branch delete`
460
+
461
+ Delete a branch
462
+
463
+ **Options:**
464
+ - `-p, --project <name>` — Project name or path
465
+ - `-f, --force` — Force delete
466
+
467
+ **Usage:** `ppm git branch delete [options] <name>`
468
+
469
+ #### `ppm git branch merge`
470
+
471
+ Merge a branch into current branch
472
+
473
+ **Options:**
474
+ - `-p, --project <name>` — Project name or path
475
+
476
+ **Usage:** `ppm git branch merge [options] <source>`
477
+
478
+ ## `ppm init`
479
+
480
+ Initialize PPM configuration (interactive or via flags)
481
+
482
+ **Options:**
483
+ - `-p, --port <port>` — Port to listen on
484
+ - `--scan <path>` — Directory to scan for git repos
485
+ - `--auth` — Enable authentication
486
+ - `--no-auth` — Disable authentication
487
+ - `--password <pw>` — Set access password
488
+ - `--share` — Pre-install cloudflared for sharing
489
+ - `-y, --yes` — Non-interactive mode (use defaults + flags)
490
+
491
+ ## `ppm jira`
492
+
493
+ Jira watcher utilities
494
+
495
+ **Usage:** `ppm jira [options] [command]`
496
+
497
+ ### `ppm jira config`
498
+
499
+ Manage Jira configs
500
+
501
+ **Usage:** `ppm jira config [options] [command]`
502
+
503
+ #### `ppm jira config set`
504
+
505
+ Set Jira config for a project
506
+
507
+ **Options:**
508
+ - `--url <url>` — Jira base URL (https://...)
509
+ - `--email <email>` — Jira account email
510
+ - `--token <token>` — API token (⚠ visible in shell history)
511
+
512
+ **Usage:** `ppm jira config set [options] <projectName>`
513
+
514
+ #### `ppm jira config show`
515
+
516
+ Show Jira config (token masked)
517
+
518
+ **Usage:** `ppm jira config show [options] <projectName>`
519
+
520
+ #### `ppm jira config remove`
521
+
522
+ Remove Jira config (cascades watchers + results)
523
+
524
+ **Usage:** `ppm jira config remove [options] <projectName>`
525
+
526
+ #### `ppm jira config test`
527
+
528
+ Test Jira connection
529
+
530
+ **Usage:** `ppm jira config test [options] <projectName>`
531
+
532
+ ### `ppm jira watch`
533
+
534
+ Manage Jira watchers
535
+
536
+ **Usage:** `ppm jira watch [options] [command]`
537
+
538
+ #### `ppm jira watch add`
539
+
540
+ Create a new watcher
541
+
542
+ **Options:**
543
+ - `--config <id>` — Jira config ID
544
+ - `--name <name>` — Watcher name
545
+ - `--jql <jql>` — JQL filter query
546
+ - `--interval <ms>` — Poll interval in ms (default: `"120000"`)
547
+ - `--prompt <template>` — Custom prompt template
548
+ - `--mode <mode>` — debug or notify (default: `"debug"`)
549
+
550
+ #### `ppm jira watch list`
551
+
552
+ List watchers
553
+
554
+ **Options:**
555
+ - `--config <id>` — Filter by config ID
556
+
557
+ #### `ppm jira watch enable`
558
+
559
+ Enable watcher
560
+
561
+ **Usage:** `ppm jira watch enable [options] <id>`
562
+
563
+ #### `ppm jira watch disable`
564
+
565
+ Disable watcher
566
+
567
+ **Usage:** `ppm jira watch disable [options] <id>`
568
+
569
+ #### `ppm jira watch remove`
570
+
571
+ Delete watcher
572
+
573
+ **Usage:** `ppm jira watch remove [options] <id>`
574
+
575
+ #### `ppm jira watch test`
576
+
577
+ Dry-run poll (show matches without creating tasks)
578
+
579
+ **Usage:** `ppm jira watch test [options] <id>`
580
+
581
+ #### `ppm jira watch pull`
582
+
583
+ Manual pull (one watcher or all enabled)
584
+
585
+ **Usage:** `ppm jira watch pull [options] [id]`
586
+
587
+ ### `ppm jira results`
588
+
589
+ View Jira watch results
590
+
591
+ **Options:**
592
+ - `--watcher <id>` — Filter by watcher ID
593
+ - `--status <status>` — Filter by status
594
+
595
+ **Usage:** `ppm jira results [options] [command]`
596
+
597
+ #### `ppm jira results delete`
598
+
599
+ Soft-delete result
600
+
601
+ **Usage:** `ppm jira results delete [options] <id>`
602
+
603
+ ### `ppm jira track`
604
+
605
+ Manually track a Jira issue
606
+
607
+ **Options:**
608
+ - `--config <id>` — Jira config ID
609
+
610
+ **Usage:** `ppm jira track [options] <issueKey>`
611
+
612
+ ## `ppm logs`
613
+
614
+ View PPM daemon logs
615
+
616
+ **Options:**
617
+ - `-n, --tail <lines>` — Number of lines to show (default: `"50"`)
618
+ - `-f, --follow` — Follow log output
619
+ - `--clear` — Clear log file
620
+
621
+ ## `ppm open`
622
+
623
+ Open PPM in browser
624
+
625
+ ## `ppm projects`
626
+
627
+ Manage registered projects
628
+
629
+ **Usage:** `ppm projects [options] [command]`
630
+
631
+ ### `ppm projects list`
632
+
633
+ List all registered projects
634
+
635
+ ### `ppm projects add`
636
+
637
+ Add a project to the registry
638
+
639
+ **Options:**
640
+ - `-n, --name <name>` — Project name (defaults to folder name)
641
+
642
+ **Usage:** `ppm projects add [options] <path>`
643
+
644
+ ### `ppm projects remove`
645
+
646
+ Remove a project from the registry
647
+
648
+ **Usage:** `ppm projects remove [options] <name>`
649
+
650
+ ## `ppm report`
651
+
652
+ Report a bug on GitHub (pre-fills env info + logs)
653
+
654
+ ## `ppm restart`
655
+
656
+ Restart the server (keeps tunnel alive)
657
+
658
+ **Options:**
659
+ - `--force` — Force resume from paused state
660
+
661
+ ## `ppm skills`
662
+
663
+ Manage and inspect discovered skills & commands
664
+
665
+ **Options:**
666
+ - `--project <path>` — Project path (default: `"/home/hienlh/Projects/ppm"`)
667
+
668
+ **Usage:** `ppm skills [options] [command]`
669
+
670
+ ### `ppm skills list`
671
+
672
+ List all discovered skills and commands
673
+
674
+ **Options:**
675
+ - `--json` — JSON output
676
+ - `--project <path>` — Project path (default: `"/home/hienlh/Projects/ppm"`)
677
+
678
+ ### `ppm skills search`
679
+
680
+ Fuzzy search skills and commands
681
+
682
+ **Options:**
683
+ - `--json` — JSON output
684
+ - `--project <path>` — Project path (default: `"/home/hienlh/Projects/ppm"`)
685
+
686
+ **Usage:** `ppm skills search [options] <query>`
687
+
688
+ ### `ppm skills info`
689
+
690
+ Show detailed info for a specific skill
691
+
692
+ **Options:**
693
+ - `--json` — JSON output
694
+ - `--project <path>` — Project path (default: `"/home/hienlh/Projects/ppm"`)
695
+
696
+ **Usage:** `ppm skills info [options] <name>`
697
+
698
+ ## `ppm start`
699
+
700
+ Start the PPM server (background by default)
701
+
702
+ **Options:**
703
+ - `-p, --port <port>` — Port to listen on
704
+ - `-s, --share` — (deprecated) Tunnel is now always enabled
705
+ - `--profile <name>` — DB profile name (e.g. 'dev' → ppm.dev.db)
706
+
707
+ ## `ppm status`
708
+
709
+ Show PPM daemon status
710
+
711
+ **Options:**
712
+ - `-a, --all` — Show all PPM and cloudflared processes (including untracked)
713
+ - `--json` — Output as JSON
714
+
715
+ ## `ppm stop`
716
+
717
+ Stop the PPM server (supervisor stays alive)
718
+
719
+ **Options:**
720
+ - `-a, --all` — Kill all PPM and cloudflared processes (including untracked)
721
+ - `--kill` — Full shutdown (kills supervisor too)
722
+
723
+ ## `ppm upgrade`
724
+
725
+ Check for and install PPM updates
726
+
727
+ **Options:**
728
+ - `--check` — Only check for updates, don't install