@modootoday/pmcp 0.12.0 → 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.
@@ -389,5 +389,5 @@ A at 120 columns and 32 rows or larger: a main pane, worker dock and bottom
389
389
  coordination pane. Smaller terminals retain a full-width main. The minimum is
390
390
  40 columns by 12 rows; the maximum is 1000 in either dimension.
391
391
 
392
- There is no product TUI yet. Its terminal layout will consume the qualified CLI
393
- contract after the remaining native and recovery acceptance gates.
392
+ Use the [terminal workspace](terminal-workspace.md) to render this layout over
393
+ an existing owned group. All control operations remain available through the CLI.
@@ -0,0 +1,116 @@
1
+ # Terminal workspace
2
+
3
+ Use pmcp tui to view an existing main runtime and its workers in one terminal.
4
+ The main conversation stays in its native interface. PMCP adds a worker dock,
5
+ coordination panel and explicit control switching. Provider login, folder trust
6
+ and tool approvals stay in their native screens.
7
+
8
+ The host requires Linux, tmux, util-linux flock, Node.js 22 or later and a working
9
+ user systemd manager. The PMCP CLI supports Node or Bun; pane helpers use Node.
10
+ The presentation gets its own 512 MiB, 128-task, one-CPU scope. Native sessions
11
+ retain their existing group budgets and execution profile.
12
+
13
+ ## Open a workspace
14
+
15
+ First [create a harness group and its sessions](terminal-harness.md). Set GROUP_FILE
16
+ to that group's private state path, then check prerequisites and create a view:
17
+
18
+ ```sh
19
+ pmcp tui doctor
20
+ pmcp tui create --group-file "$GROUP_FILE" --columns 160 --rows 48
21
+ ```
22
+
23
+ Set VIEW_FILE to viewFile from the JSON receipt:
24
+
25
+ ```sh
26
+ pmcp tui inspect --view "$VIEW_FILE"
27
+ pmcp tui open --view "$VIEW_FILE"
28
+ ```
29
+
30
+ Only open requires an interactive terminal. Create can take its dimensions from
31
+ the current terminal; give both dimensions explicitly when calling from a script.
32
+ At 120 columns by 32 rows or larger, main fills the left, workers appear on the
33
+ right, and coordination occupies four bottom rows. Smaller terminals keep a
34
+ full-width main and a separate management window. The minimum is 40 by 12.
35
+ Views refer to an existing owned group and do not start a provider.
36
+
37
+ ## Observe and control
38
+
39
+ Press Ctrl-g, release it, then press a key:
40
+
41
+ | Key | Action | CLI operation |
42
+ | --- | --- | --- |
43
+ | m | Return to main and release worker control | main |
44
+ | w or 1–4 | Observe a worker | observe --index 1 |
45
+ | c | Request control of the current native target | control |
46
+ | r | Release control | release |
47
+ | h | Read owned native history | history |
48
+ | b | Show configured inbox metadata | mailbox |
49
+ | g | Open compact management window | management |
50
+ | d | Detach the view, preserving runtimes | detach |
51
+ | ! | Dismiss the last visible error | dismiss |
52
+ | ? | Show key help | Help in the status line |
53
+
54
+ CLI operations use pmcp tui OPERATION --view "$VIEW_FILE". Worker indices follow
55
+ the dock; CLI observe supports all available indices. Press Ctrl-g twice to
56
+ forward Ctrl-g to the native interface. Native Ctrl-b remains available when
57
+ you hold control. A surrounding tmux may consume its own prefix first.
58
+
59
+ The default is read only. Control progresses through REQUESTING CONTROL and
60
+ CONNECTING WRITER to CONTROL READY. A lease alone does not enable typing: PMCP
61
+ checks that the writable native client is attached to the selected pane's TTY.
62
+ Input stays blocked during acquisition and release. A control lease identifies
63
+ the writer, not which native prompt or approval menu is active.
64
+
65
+ Another writer causes a visible error with a next step. Failures remain in the
66
+ status line, coordination panel and inspect receipt until explicitly dismissed.
67
+ Resize does not clear them. CONTROL UNKNOWN blocks input and requires inspection.
68
+ PMCP never replays uncertain input. An input receipt or mailbox ACK does not
69
+ establish model completion. Provider state remains unknown.
70
+
71
+ ## History and mailbox
72
+
73
+ History reads only the owned runtime pane, bounded to 2000 lines and 64 KiB.
74
+ It does not include shell history from before the runtime. The history panel
75
+ supports tmux copy mode; returning to main preserves its native draft. Closing
76
+ the view removes its private history cache.
77
+
78
+ To observe inbox metadata, supply an explicitly chosen mailbox observer actor:
79
+
80
+ ```sh
81
+ pmcp tui create --group-file "$GROUP_FILE" --columns 160 --rows 48 --config ./pmcp.toml --actor-file "$OBSERVER_ACTOR_FILE"
82
+ ```
83
+
84
+ The actor must have no live attachment. PMCP uses the existing mailbox service
85
+ and refuses a conflicting attachment. The panel shows message, thread and reply
86
+ IDs. It never reads bodies, marks messages read, acknowledges them, submits input
87
+ or wakes a runtime. Use the [mailbox CLI](mailbox.md) for those explicit actions.
88
+ The view stores the private credential file reference, not its contents.
89
+
90
+ ## Detach, close and stop
91
+
92
+ Detach preserves processes and drafts. Reopening returns to read-only main
93
+ observation after releasing this view's control. A lost outer terminal also
94
+ requests release; a crash or unreachable manager may prevent confirmation.
95
+ Inspect before retrying, without replaying input:
96
+
97
+ ```sh
98
+ pmcp harness recovery inspect --group-file "$GROUP_FILE"
99
+ pmcp harness attach inspect --group-file "$GROUP_FILE" --session "$SESSION"
100
+ ```
101
+
102
+ Close ends the presentation and preserves all native runtimes:
103
+
104
+ ```sh
105
+ pmcp tui close --view "$VIEW_FILE"
106
+ ```
107
+
108
+ Stop names the exact current native target and requires confirmation:
109
+
110
+ ```sh
111
+ pmcp tui stop --view "$VIEW_FILE" --confirm-session "$SESSION"
112
+ ```
113
+
114
+ There is no stop keyboard shortcut. Group replacement invalidates a view's
115
+ generation: create a fresh view instead of transferring old authority. These
116
+ controls are CLI-only and cannot be invoked through the MCP server.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@modootoday/pmcp",
3
- "version": "0.12.0",
3
+ "version": "0.13.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.",
@@ -346,11 +346,11 @@ declare const catalogItemSchema: z.ZodObject<{
346
346
  mcp: "mcp";
347
347
  }>>;
348
348
  verifiedRuntimes: z.ZodOptional<z.ZodArray<z.ZodEnum<{
349
+ antigravity: "antigravity";
349
350
  "claude-code": "claude-code";
350
351
  "codex-cli": "codex-cli";
351
352
  "gemini-cli": "gemini-cli";
352
353
  "grok-cli": "grok-cli";
353
- antigravity: "antigravity";
354
354
  }>>>;
355
355
  verified: z.ZodOptional<z.ZodBoolean>;
356
356
  }, z.core.$loose>;
@@ -372,11 +372,11 @@ declare const catalogResponseSchema: z.ZodObject<{
372
372
  mcp: "mcp";
373
373
  }>>;
374
374
  verifiedRuntimes: z.ZodOptional<z.ZodArray<z.ZodEnum<{
375
+ antigravity: "antigravity";
375
376
  "claude-code": "claude-code";
376
377
  "codex-cli": "codex-cli";
377
378
  "gemini-cli": "gemini-cli";
378
379
  "grok-cli": "grok-cli";
379
- antigravity: "antigravity";
380
380
  }>>>;
381
381
  verified: z.ZodOptional<z.ZodBoolean>;
382
382
  }, z.core.$loose>>;
@@ -388,11 +388,11 @@ declare const findResultSchema: z.ZodObject<{
388
388
  lexical: "lexical";
389
389
  }>;
390
390
  runtime: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
391
+ antigravity: "antigravity";
391
392
  "claude-code": "claude-code";
392
393
  "codex-cli": "codex-cli";
393
394
  "gemini-cli": "gemini-cli";
394
395
  "grok-cli": "grok-cli";
395
- antigravity: "antigravity";
396
396
  }>>>;
397
397
  matches: z.ZodArray<z.ZodObject<{
398
398
  name: z.ZodString;
@@ -400,11 +400,11 @@ declare const findResultSchema: z.ZodObject<{
400
400
  description: z.ZodString;
401
401
  score: z.ZodNumber;
402
402
  verifiedRuntimes: z.ZodOptional<z.ZodArray<z.ZodEnum<{
403
+ antigravity: "antigravity";
403
404
  "claude-code": "claude-code";
404
405
  "codex-cli": "codex-cli";
405
406
  "gemini-cli": "gemini-cli";
406
407
  "grok-cli": "grok-cli";
407
- antigravity: "antigravity";
408
408
  }>>>;
409
409
  verified: z.ZodOptional<z.ZodBoolean>;
410
410
  }, z.core.$loose>>;