@modootoday/pmcp 0.14.1 → 0.16.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/docs/skills.md CHANGED
@@ -78,12 +78,12 @@ existing URLs and immutable archive bytes remain available.
78
78
  For native marketplace commands, follow the [README](../README.md).
79
79
  Gemini and Antigravity need their own package formats for selected library plugins;
80
80
  do not assume that identically named manifest files accept the same schema.
81
- After the next npm release, `pmcp marketplace export <plugin> --runtime <tool>
81
+ Since 0.14.0, `pmcp marketplace export <plugin> --runtime <tool>
82
82
  --output <new-directory>` materializes a selected package without altering native
83
83
  settings or installing it. Use the native manager to review and install that folder.
84
84
  Existing export destinations are preserved.
85
85
 
86
- The built-in catalog on repository main is available without remote fetching.
86
+ The built-in catalog is available without remote fetching.
87
87
  `--no-builtin` or `[catalog] builtin = false` opts out; library APIs continue to
88
88
  read explicitly supplied catalog roots. `--marketplace <directory>` reads installed
89
89
  Claude, Codex and Grok local descriptors, rejects path escapes and does not fetch
@@ -91,7 +91,7 @@ remote plugin sources. Add a remote marketplace with its native manager first.
91
91
 
92
92
  Public npm skill installation uses the bundled catalog, a matching installed
93
93
  dependency version and immutable free archive URLs. It verifies archive integrity,
94
- content-only metadata, instruction digests and installed file bytes. npm or Bun
94
+ content-only metadata, instruction digests and installed file bytes. npm, Bun or pnpm
95
95
  changes the project and lockfile only after confirmation, with scripts disabled.
96
96
  `--provider hosted` remains a separate service path with its own access policy.
97
97
  Native plugin installation does not automatically version-match dependencies:
@@ -13,6 +13,102 @@ retain their existing group budgets and execution profile.
13
13
 
14
14
  ## Open a workspace
15
15
 
16
+ The numbered runtime picker, worker menu and worker-start/recovery commands in
17
+ this guide require PMCP 0.16.0 or later.
18
+
19
+ From a supported interactive terminal, run `pmcp` or `pmcp tui`. The first
20
+ launch lists installed runtimes, with a default in this order: Codex, Gemini,
21
+ agy, Grok, Claude. Enter accepts that default; a number selects another runtime.
22
+ Confirm with Enter at the start prompt, or enter q to cancel. No provider request
23
+ or group creation occurs before this confirmation. Use `--runtime` to skip the
24
+ picker and choose a supported runtime ID explicitly.
25
+ Provider login and folder trust still use the native screen.
26
+
27
+ ```sh
28
+ pmcp
29
+ pmcp tui --runtime codex-cli
30
+ pmcp tui plan
31
+ ```
32
+
33
+ The start creates a private owned group and read-only view, then reconnects to
34
+ that workspace on later launches. Defaults are 2048 MiB for the group, 768 MiB
35
+ for its main and at most two active sessions. Terminal size selects the existing
36
+ A or compact layout. Taking control remains explicit with Ctrl-g then c.
37
+ This launches a native process; the defaults are cooperative host supervision,
38
+ not a Docker isolation policy. Use an explicitly configured Docker group when
39
+ you require that execution profile.
40
+
41
+ After opening a workspace, start a worker without preparing a session JSON file:
42
+
43
+ ```sh
44
+ pmcp tui start-worker --runtime gemini-cli
45
+ ```
46
+
47
+ This explicitly starts a worker in the saved project workspace. It uses the
48
+ configured session memory by default; `--memory-mb` overrides that reservation.
49
+ The existing group retains its allowed runtimes, execution profile and budgets.
50
+ An unavailable main, paused group or stale generation blocks the start. Native
51
+ login, folder trust and tool approvals remain in the worker's own screen.
52
+
53
+ In the view, Ctrl-g then n opens a worker picker. It releases input control
54
+ without submitting the main draft. Select a granted installed runtime and
55
+ confirm its start; q cancels without creating a worker. The new worker reserves
56
+ the same memory as the live main, within the existing group limits. Selection
57
+ does not switch the input target or acquire control. To use a different
58
+ reservation or an advanced view, run:
59
+
60
+ ```sh
61
+ pmcp tui start-worker --view "$VIEW_FILE" --runtime gemini-cli --memory-mb 512
62
+ ```
63
+
64
+ Use either --view or --config. A view start uses its owned group and generation;
65
+ it does not discover another project workspace. Docker runtime availability
66
+ follows that group's command policy rather than host native executables.
67
+ This worker menu is qualified on native groups; Docker execution remains subject
68
+ to its separately tested CLI and profile grants.
69
+
70
+ The nearest `pmcp.toml` within the Git repository determines the project root,
71
+ including from nested cwd. A submodule does not inherit its parent's config;
72
+ use `--config` when you explicitly want a different configuration scope.
73
+ Without a config, the current real directory is the project root. Customize only
74
+ the values you need:
75
+
76
+ ```toml
77
+ [tui]
78
+ runtime = "codex-cli"
79
+ memory_mb = 2048
80
+ session_memory_mb = 768
81
+ max_active = 2
82
+ ```
83
+
84
+ runtime defaults to auto. Supported IDs are codex-cli, gemini-cli, antigravity,
85
+ grok-cli and claude-code. CLI `--runtime` overrides the config for a new main.
86
+ An optional group_file points to a deliberately selected existing owned group
87
+ with a live main; relative paths resolve from the config directory. `--config`
88
+ selects a config file explicitly. Unknown keys and invalid budgets are errors.
89
+ Config budget changes apply to a new group; existing groups keep their grants.
90
+
91
+ `pmcp tui launch --yes` explicitly confirms the first start without the prompt.
92
+ Launch still requires a supported interactive terminal. `pmcp tui plan` reports
93
+ resolved settings and saved paths without writing or invoking a provider.
94
+ The launcher checkpoint lives under XDG_STATE_HOME/pmcp/launcher, or
95
+ ~/.local/state/pmcp/launcher, with private file permissions.
96
+
97
+ Reopening never adopts an unrelated tmux session or restarts a stopped main.
98
+ A paused group, interrupted start or changed generation requires explicit
99
+ harness inspection and recovery. After explicitly stopping the old owned group,
100
+ `pmcp tui --new` creates a new workspace. Detach preserves the existing native
101
+ process and draft. Closing only the view permits a new presentation over the
102
+ same live group. Keep original state when investigating a failed start.
103
+ If a creation checkpoint has no group path yet, keep it for manual inspection;
104
+ the launcher refuses to infer ownership or restart from that incomplete state.
105
+
106
+ Piped bare launches and leading MCP server options preserve the existing stdio
107
+ contract. Use `pmcp serve` explicitly in MCP configuration. Unsupported
108
+ interactive hosts show help; they do not wait for JSON-RPC input.
109
+
110
+ ## Advanced view operations
111
+
16
112
  First [create a harness group and its sessions](terminal-harness.md). Set GROUP_FILE
17
113
  to that group's private state path, then check prerequisites and create a view:
18
114
 
@@ -36,6 +132,45 @@ right, and coordination occupies four bottom rows. Smaller terminals keep a
36
132
  full-width main and a separate management window. The minimum is 40 by 12.
37
133
  Views refer to an existing owned group and do not start a provider.
38
134
 
135
+ Doctor checks host prerequisites, including access to the systemd user manager,
136
+ and lists native executables found on PATH. An installed executable is not proof
137
+ of authentication or successful native behavior. The report leaves native
138
+ acceptance unassessed and does not read authentication profiles.
139
+
140
+ | Finding | Next step |
141
+ | ------------------------- | ------------------------------------------------------------------------------------------------------------------------------- |
142
+ | Missing tmux or flock | Install tmux or util-linux for your Linux distribution and check PATH in this terminal. |
143
+ | Unsupported Node | Select Node.js 22 or later through your existing version manager, then check node --version. |
144
+ | Unreachable user manager | Run systemctl --user status in the same login session; restore manager access before launching. Doctor does not start services. |
145
+ | Missing native runtime | Install the vendor's CLI and select its runtime ID explicitly. Installation alone does not establish login or folder trust. |
146
+ | Unsupported terminal host | Use a qualified Linux host for this workspace. Other PMCP features keep their own prerequisites. |
147
+
148
+ Doctor does not invoke a native runtime, inspect private authentication files,
149
+ test a model reply or prove cgroup delegation. Native acceptance and isolated
150
+ execution require separate measurements against the exact installed version.
151
+
152
+ ### Measured terminal behavior
153
+
154
+ Linux acceptance on 2026-10-10 covered the following native main/worker pairs.
155
+ Each run checked read-only observation, explicit worker input with an actual
156
+ reply, main draft preservation, resize and detach/reconnect. These bounded
157
+ checks do not certify every vendor feature or another authentication profile.
158
+
159
+ | Native runtime | Tested version | Main and worker terminal checks |
160
+ | -------------- | ------------------------- | ------------------------------- |
161
+ | Codex | 0.161.0 | Passed |
162
+ | Gemini CLI | 0.63.0 | Passed |
163
+ | Grok CLI | 1.0.50 | Passed |
164
+ | agy | 1.3.3 | Passed |
165
+ | Claude Code | Not measured in this wave | Deferred |
166
+
167
+ Separate synthetic PTY checks cover multiline Korean paste, read-only mouse
168
+ input, owned history and nested tmux. They do not establish each vendor's
169
+ own editing or mouse behavior. Use Ctrl-g then h to read owned history without
170
+ sending input. Claude acceptance, other operating systems and physical host
171
+ loss remain outside these results. Docker installation and native credential
172
+ isolation have separate qualification; this terminal run does not replace them.
173
+
39
174
  ## Observe and control
40
175
 
41
176
  Press Ctrl-g, release it, then press a key:
@@ -44,6 +179,7 @@ Press Ctrl-g, release it, then press a key:
44
179
  | -------- | -------------------------------------------- | ----------------------- |
45
180
  | m | Return to main and release worker control | main |
46
181
  | w or 1–4 | Observe a worker | observe --index 1 |
182
+ | n | Choose and confirm a new worker | worker-menu |
47
183
  | c | Request control of the current native target | control |
48
184
  | r | Release control | release |
49
185
  | h | Read owned native history | history |
@@ -58,9 +194,11 @@ the dock; CLI observe supports all available indices. Press Ctrl-g twice to
58
194
  forward Ctrl-g to the native interface. Native Ctrl-b remains available when
59
195
  you hold control. A surrounding tmux may consume its own prefix first.
60
196
 
61
- The default is read only. Control progresses through REQUESTING CONTROL and
197
+ The status line identifies MAIN or WORKER, its session and OBSERVE / INPUT OFF.
198
+ Control progresses through REQUESTING CONTROL and
62
199
  CONNECTING WRITER to CONTROL READY. A lease alone does not enable typing: PMCP
63
200
  checks that the writable native client is attached to the selected pane's TTY.
201
+ Only CONTROL READY shows INPUT ON.
64
202
  Input stays blocked during acquisition and release. A control lease identifies
65
203
  the writer, not which native prompt or approval menu is active.
66
204
 
@@ -101,6 +239,28 @@ pmcp harness recovery inspect --group-file "$GROUP_FILE"
101
239
  pmcp harness attach inspect --group-file "$GROUP_FILE" --session "$SESSION"
102
240
  ```
103
241
 
242
+ For a workspace opened through bare pmcp, inspect the saved launcher without
243
+ starting a runtime:
244
+
245
+ ```sh
246
+ pmcp tui recovery
247
+ ```
248
+
249
+ This reads the checkpoint and validates its saved group ownership and
250
+ generation. It reports exact inspection commands and, where applicable,
251
+ explicit resume, stop or fresh-launch commands. It does not execute them or
252
+ certify that a process is still alive. An explicitly selected configuration
253
+ is preserved in the proposed fresh-launch command:
254
+
255
+ ```sh
256
+ pmcp tui recovery --config /path/to/pmcp.toml
257
+ ```
258
+
259
+ If creation stopped before a group reference was saved, the result is
260
+ manual-inspection. Preserve the reported checkpoint and examine owned launch
261
+ evidence before changing it. Matching project paths alone cannot establish
262
+ ownership. Paused work stays paused, and uncertain input is never replayed.
263
+
104
264
  Close ends the presentation and preserves all native runtimes:
105
265
 
106
266
  ```sh
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pmcp",
3
- "version": "0.14.1",
3
+ "version": "0.16.0",
4
4
  "mcpServers": {
5
5
  "pmcp": {
6
6
  "type": "stdio",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@modootoday/pmcp",
3
- "version": "0.14.1",
3
+ "version": "0.16.0",
4
4
  "license": "Elastic-2.0",
5
5
  "author": "modootoday",
6
6
  "description": "Use the skills your packages already ship, and keep your AI tools' project configuration in one place.",
@@ -91,7 +91,8 @@
91
91
  "marketplace:check": "bun scripts/build-marketplace.mjs --check",
92
92
  "docs:check": "prettier --check --ignore-path /dev/null README.md docs/*.md && npm run marketplace:check && npm run skills:check && npm run site:check",
93
93
  "site:deployed": "node scripts/check-deployed.mjs",
94
- "prepack": "npm run docs:check && npm run build && npm run typecheck && npm test",
94
+ "package:verify": "node scripts/verify-package.mjs",
95
+ "prepack": "npm run docs:check && npm run build && npm run typecheck && npm test && npm run package:verify -- --pack --matrix --report-stderr",
95
96
  "format": "prettier --write .",
96
97
  "format:check": "prettier --check ."
97
98
  },
package/plugin.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
3
3
  "name": "pmcp",
4
- "version": "0.14.1",
4
+ "version": "0.16.0",
5
5
  "description": "Find package skills and use native runtime project configuration.",
6
6
  "author": { "name": "modootoday" },
7
7
  "license": "Elastic-2.0",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pmcp",
3
- "version": "0.14.1",
3
+ "version": "0.16.0",
4
4
  "description": "Find package skills and use native runtime project configuration.",
5
5
  "author": { "name": "modootoday" },
6
6
  "license": "Elastic-2.0",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pmcp",
3
- "version": "0.14.1",
3
+ "version": "0.16.0",
4
4
  "mcpServers": {
5
5
  "pmcp": {
6
6
  "type": "stdio",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
3
3
  "name": "pmcp",
4
- "version": "0.14.1",
4
+ "version": "0.16.0",
5
5
  "description": "Find package skills and use native runtime project configuration.",
6
6
  "author": { "name": "modootoday" },
7
7
  "license": "Elastic-2.0",