codex-computer-use-mcp 0.3.0 → 0.3.2
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/ARCHITECTURE.md +8 -6
- package/CONTRIBUTING.md +1 -1
- package/MIGRATION.md +25 -2
- package/PROOF.md +10 -5
- package/README.md +12 -10
- package/SECURITY.md +5 -5
- package/dist/direct-broker.d.ts +37 -4
- package/dist/direct-broker.js +221 -138
- package/dist/direct-broker.js.map +1 -1
- package/dist/mcp-server.js +1 -1
- package/integrations/pi/README.md +8 -9
- package/integrations/pi/index.ts +95 -12
- package/integrations/pi/mcp.json.example +1 -1
- package/npm-shrinkwrap.json +5 -5
- package/package.json +1 -1
package/ARCHITECTURE.md
CHANGED
|
@@ -61,7 +61,7 @@ The relevant construction difference is the macOS responsible-process chain:
|
|
|
61
61
|
- unsupported: ad-hoc/no-Team-ID Node parent → signed helper;
|
|
62
62
|
- supported: Node/Pi → strict-valid OpenAI-signed app-bundled Codex (`2DC432GLL2`) → strict-valid OpenAI-signed helper (`2DC432GLL2`).
|
|
63
63
|
|
|
64
|
-
Process sampling confirmed the helper children were direct descendants of signed app-server; helper processes may create their own process groups. App-server and helper therefore share one private
|
|
64
|
+
Process sampling confirmed the helper children were direct descendants of signed app-server; helper processes may create their own process groups. App-server and helper therefore share one private broker-session cwd. One-shot MCP calls close that session after the call; Pi retains it only across the required `get_app_state` and following action. Cleanup preserves partial ancestry results, recovers any reparented process by that unique cwd, freezes the owned set to stability, then kills and verifies every process rather than assuming one PGID. Enumeration, freeze, or exit uncertainty fails cleanup closed. The app-server has the expected sandbox/application-group entitlement keys; the helper has OpenAI application/team identifiers, application groups, and keychain-access-group entitlements. Ordinary Node has no Team ID or entitlement set. The service's peer audit token is not exposed through the supported MCP layer. No private socket inspection, identity spoofing, copied signing material, re-signing, injection, or TCC change was attempted. The remaining enforcement boundary is therefore OS peer/responsible-process identity, not a missing public JSON field.
|
|
65
65
|
|
|
66
66
|
Command, environment, cwd, and config differences were also isolated: both paths invoke the same signed helper with `mcp`; the accepted path gives it a signed parent plus a private fixed cwd/config environment. Matching public MCP fields did not alter the raw error, while the signed-parent path succeeds without model credentials.
|
|
67
67
|
|
|
@@ -94,7 +94,7 @@ nested prompts or result summaries
|
|
|
94
94
|
|
|
95
95
|
| Released wrapper restriction | Classification | Direct design |
|
|
96
96
|
|---|---|---|
|
|
97
|
-
|
|
|
97
|
+
| Reviewed ChatGPT/Codex/client paths | **official-required** | current per-user installed-component contract plus exact legacy plugin layout; canonicalized and verified |
|
|
98
98
|
| Strict signatures and OpenAI Team ID | **security-essential** | retained |
|
|
99
99
|
| Signed-parent/responsible-process chain | **official-required** | retained through signed app-server |
|
|
100
100
|
| Private Sky socket/native-pipe access | **unsupported/private** | prohibited |
|
|
@@ -119,7 +119,7 @@ nested prompts or result summaries
|
|
|
119
119
|
| Automatic background app launch | **accidental** | removed; the official tool owns app behavior |
|
|
120
120
|
| Global focus watcher and final sample | **security-essential detection** | retained |
|
|
121
121
|
| Timeout/cancellation process-tree termination | **security-essential** | retained with strict enumeration, freeze, kill, stdio-close, and exit verification |
|
|
122
|
-
|
|
|
122
|
+
| Temporary broker-session cleanup | **security-essential** | retained with isolated `CODEX_HOME`; Pi closes after the inspection-action pair, replacement inspection, or session shutdown |
|
|
123
123
|
| Codex token usage accounting | **compatibility-only** | removed; no model turn exists |
|
|
124
124
|
| Content-safe private audit | **security-essential** | retained with direct-call fields |
|
|
125
125
|
| Full-result spill files | **unsafe/accidental** | prohibited; truncation is in-memory only |
|
|
@@ -133,11 +133,13 @@ App-server is created with `approvalPolicy: "never"` and `sandbox: "danger-full-
|
|
|
133
133
|
|
|
134
134
|
The broker still handles any `mcpServer/elicitation/request` that app-server emits. Pi advertises OpenAI-form support and renders emitted form, OpenAI-form, and URL requests. Generic stdio MCP forwards supported standard modes as `elicitation/create`. The response path preserves `accept`, `decline`, `cancel`, structured content, and response metadata; no callback or compatible UI yields `cancel`, never an invented decision.
|
|
135
135
|
|
|
136
|
-
## Pi tool
|
|
136
|
+
## Pi tool and session boundary
|
|
137
137
|
|
|
138
|
-
The Pi extension registers all ten official definitions
|
|
138
|
+
The Pi extension registers and activates all ten official definitions on `session_start`, additively preserving active tools owned by Pi and other extensions. Keeping inspection and interaction methods on the same direct surface avoids provider-bound tool discovery creating a second, incompatible client binding.
|
|
139
139
|
|
|
140
|
-
|
|
140
|
+
For `get_app_state`, Pi starts one verified zero-turn app-server runtime and signed Computer Use client. The following direct interaction is serialized through that same runtime and thread, preserving the official active-app lease. The retained process tree is closed and verified after the action, before a replacement inspection, or during `session_shutdown`. One-shot MCP calls still start and close a broker session within the call. Exact inventory and schemas are revalidated before every dispatch in either path.
|
|
141
|
+
|
|
142
|
+
This lifecycle changes neither the schemas nor the no-permissions policy. Interaction definitions omit extra `promptSnippet` and `promptGuidelines` metadata and rely on their official descriptions.
|
|
141
143
|
|
|
142
144
|
## Output boundary
|
|
143
145
|
|
package/CONTRIBUTING.md
CHANGED
|
@@ -23,7 +23,7 @@ Development and live acceptance require macOS and the official ChatGPT Computer
|
|
|
23
23
|
- Add a regression test for every protocol, policy, focus, cleanup, or audit fix.
|
|
24
24
|
- Never log or persist arguments, typed values, screenshots, app-state/result content, elicitation contents, prompts, credentials, or tokens.
|
|
25
25
|
- Treat focus checks as post-action detection rather than preventive isolation.
|
|
26
|
-
- Document
|
|
26
|
+
- Document reviewed ChatGPT component paths, launcher contracts, and upstream schema/API assumptions.
|
|
27
27
|
- Include strict core/Pi type checks, tests, build, audit, package inspection, and real-app acceptance evidence.
|
|
28
28
|
- Obtain independent exact-head review for security-boundary changes.
|
|
29
29
|
|
package/MIGRATION.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Migration and rollback
|
|
2
2
|
|
|
3
|
-
Version 0.2.0 was the breaking direct-tool architecture change from version 0.1.0. Version 0.3.0
|
|
3
|
+
Version 0.2.0 was the breaking direct-tool architecture change from version 0.1.0. Version 0.3.0 added Pi progressive disclosure, version 0.3.1 followed ChatGPT's current per-user Computer Use component layout, and version 0.3.2 restores one complete direct Pi surface with shared inspection-action session continuity. Use the relevant section below.
|
|
4
4
|
|
|
5
5
|
## What changes
|
|
6
6
|
|
|
@@ -77,6 +77,29 @@ The MCP contract and signed execution path do not change. The native Pi extensio
|
|
|
77
77
|
|
|
78
78
|
The change is context disclosure, not a permission mode. Codex Full access, emitted elicitation forwarding, schemas, and the no-permissions policy remain unchanged.
|
|
79
79
|
|
|
80
|
+
## Upgrade from version 0.3.0 to 0.3.1
|
|
81
|
+
|
|
82
|
+
ChatGPT 26.721 moved the signed Computer Use app out of the bundled plugin and into `~/.codex/computer-use/`. Version 0.3.1 follows the official launcher contract while retaining the exact former plugin layout as a compatibility candidate.
|
|
83
|
+
|
|
84
|
+
1. Verify that npm resolves `codex-computer-use-mcp@0.3.1` exactly, then install that exact package.
|
|
85
|
+
2. Start a fresh Pi process. A running Pi process retains the already-loaded extension code.
|
|
86
|
+
3. Verify `/computer-use-status` reports `brokerVerified: true`.
|
|
87
|
+
4. While the Mac is unlocked, run `computer_use_list_apps` and `computer_use_get_app_state` against a benign real app.
|
|
88
|
+
|
|
89
|
+
The resolver does not read `HOME` or `CODEX_HOME` and has no arbitrary path override. Missing, symlinked, invalidly signed, or wrong-Team-ID clients fail closed.
|
|
90
|
+
|
|
91
|
+
## Upgrade from version 0.3.1 to 0.3.2
|
|
92
|
+
|
|
93
|
+
Version 0.3.2 activates all ten direct Pi tools at session start and retains one verified signed-client session across `get_app_state` and the following action.
|
|
94
|
+
|
|
95
|
+
1. Verify that npm resolves `codex-computer-use-mcp@0.3.2` exactly, then install that exact package.
|
|
96
|
+
2. Start a fresh Pi process; do not rely on hot reload for the retained process lifecycle.
|
|
97
|
+
3. Verify all ten `computer_use_*` tools are active through the direct extension binding.
|
|
98
|
+
4. With an unlocked Mac and a benign background app, call `computer_use_get_app_state`, then one harmless interaction against the same app.
|
|
99
|
+
5. Verify the state and action used one app-server runtime/thread, the action did not report an inactive Computer Use session, focus remained preserved, and cleanup completed.
|
|
100
|
+
|
|
101
|
+
The exact schemas, strict signature and OpenAI Team ID checks, canonical client and app resolution, Full access policy, zero-turn attestation, inventory validation, kernel lock, focus telemetry, process-tree cleanup, and content-safe audit remain mandatory.
|
|
102
|
+
|
|
80
103
|
## Rollback
|
|
81
104
|
|
|
82
105
|
1. Stop the current Pi process.
|
|
@@ -91,4 +114,4 @@ Direct state can be removed only after rollback evidence is captured and no proc
|
|
|
91
114
|
|
|
92
115
|
## Generic MCP gateway
|
|
93
116
|
|
|
94
|
-
If Pi uses `mcp.json`, retain `directTools: false`. Use the exact `0.3.
|
|
117
|
+
If Pi uses `mcp.json`, retain `directTools: false`. Use the exact `0.3.2` package shown in `integrations/pi/mcp.json.example`. During source acceptance, use a distinct temporary server name and source path, then remove it. The direct Pi adapter is the primary live path; do not leave the version 0.1 aggregate server active after the switch.
|
package/PROOF.md
CHANGED
|
@@ -49,7 +49,9 @@ The public OpenAI source basis and permanent links are in `ARCHITECTURE.md`.
|
|
|
49
49
|
Current branch tests cover:
|
|
50
50
|
|
|
51
51
|
- strict TypeScript for core and Pi adapter;
|
|
52
|
-
-
|
|
52
|
+
- current ChatGPT per-user component resolution plus exact legacy-layout compatibility;
|
|
53
|
+
- missing, symlinked-path, invalid-signature, and wrong-Team-ID resolution failures, including no fallback from a present invalid current client;
|
|
54
|
+
- strict signature and Team ID checks;
|
|
53
55
|
- exact official ten-tool inventory/schema drift rejection before dispatch;
|
|
54
56
|
- direct JSONL request sequence with no `turn/start`;
|
|
55
57
|
- isolated credential-free `CODEX_HOME` even when the parent environment contains a model API key;
|
|
@@ -74,8 +76,8 @@ Current branch tests cover:
|
|
|
74
76
|
- signed app-server elicitation forwarding, exact user responses, headless cancellation, and cancellation while a UI callback is pending;
|
|
75
77
|
- standard form/URL forwarding across a real MCP SDK client/server transport;
|
|
76
78
|
- Pi source registration for every direct capability with no nested planner, permission command, or wrapper-generated approval UI;
|
|
77
|
-
- Pi session-start
|
|
78
|
-
-
|
|
79
|
+
- Pi session-start registration and activation of all ten direct definitions while preserving unrelated active tools;
|
|
80
|
+
- one retained broker/client session across `get_app_state` and the following action, with deterministic active-app lease continuity and verified close;
|
|
79
81
|
- Pi form, opaque OpenAI-form, URL, decline, and headless-cancel elicitation handling.
|
|
80
82
|
|
|
81
83
|
## Official Full access approval probe
|
|
@@ -117,7 +119,10 @@ Evidence:
|
|
|
117
119
|
|
|
118
120
|
Earlier exploratory attempts exposed and fixed two acceptance-quality issues rather than being counted as proof: common `CMD+A` needed normalization to the official `Meta_L+a` key form, and TextEdit state restoration had to be reset before a fresh run. The final evidence above is from the corrected direct path.
|
|
119
121
|
|
|
120
|
-
## Pi 0.80.7 progressive-disclosure measurement
|
|
122
|
+
## Historical Pi 0.80.7 progressive-disclosure measurement
|
|
123
|
+
|
|
124
|
+
This measurement describes version 0.3.0 and 0.3.1. Version 0.3.2 intentionally supersedes progressive disclosure because it could leave direct interaction tools absent or make a provider-discovered interaction use a different client from direct `get_app_state`.
|
|
125
|
+
|
|
121
126
|
|
|
122
127
|
A fresh Pi 0.80.7 process loaded only the source Computer Use extension plus a read-only observer. All ten definitions were registered. The initial active Computer Use set was exactly:
|
|
123
128
|
|
|
@@ -128,7 +133,7 @@ Serializing names, descriptions, schemas, and prompt guidelines measured 6,063 b
|
|
|
128
133
|
|
|
129
134
|
A second fresh process exercised the exported activation path from inside a tool execution. Pi's tool result recorded the exact eight interaction names in `addedToolNames`; the before/after active sets retained both inspection tools and removed zero tools. The lazily activated definitions had no `promptSnippet` or `promptGuidelines`.
|
|
130
135
|
|
|
131
|
-
With `openai-codex/gpt-5.6-sol`, the first request reported 5,723 uncached input tokens. The immediately following request after additive activation reported 1,008 uncached input tokens and 5,632 cache-read tokens. This
|
|
136
|
+
With `openai-codex/gpt-5.6-sol`, the first request reported 5,723 uncached input tokens. The immediately following request after additive activation reported 1,008 uncached input tokens and 5,632 cache-read tokens. This was live provider evidence that the initial prefix remained reusable while Pi inserted the eight definitions at the tool-result load point. Version 0.3.2 removes that activation path in favor of complete direct registration and signed-client session continuity.
|
|
132
137
|
|
|
133
138
|
## Review and release status
|
|
134
139
|
|
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Codex Computer Use MCP
|
|
2
2
|
|
|
3
|
-
Version 0.3.
|
|
3
|
+
Version 0.3.2 exposes the official signed macOS Computer Use capabilities as direct typed tools for Pi and MCP clients. The calling agent chooses every tool and argument itself.
|
|
4
4
|
|
|
5
5
|
The primary path has:
|
|
6
6
|
|
|
@@ -12,7 +12,7 @@ The primary path has:
|
|
|
12
12
|
|
|
13
13
|
It does use OpenAI's signed `codex app-server` as the official host for the bundled Computer Use MCP client. The current official `mcpServer/tool/call` API requires a loaded thread identifier, so the bridge creates an empty, in-memory, zero-turn context (`ephemeral: true`, `turns: []`, `path: null`). It never calls `turn/start` and fails closed if any `turn/*` or `item/*` model activity appears.
|
|
14
14
|
|
|
15
|
-
> **Independent project.** This is not an OpenAI product and is not endorsed by OpenAI. The app-server API is marked experimental and
|
|
15
|
+
> **Independent project.** This is not an OpenAI product and is not endorsed by OpenAI. The app-server API is marked experimental and ChatGPT's reviewed component locations may change.
|
|
16
16
|
|
|
17
17
|
## Direct tools
|
|
18
18
|
|
|
@@ -33,9 +33,9 @@ Pi registers namespaced tools to avoid collisions with Pi's built-ins. The MCP s
|
|
|
33
33
|
|
|
34
34
|
The MCP façade preserves the official signed helper's tool descriptions, input schemas, and annotations exactly. The Pi façade preserves its descriptions and input schemas; Pi's tool API does not expose MCP annotations. In particular, all ten MCP methods have `destructiveHint: false`; the wrapper does not conflate changing UI state with destructive behavior or add argument restrictions absent from the official schemas.
|
|
35
35
|
|
|
36
|
-
Pi
|
|
36
|
+
Pi registers and activates all ten definitions together in every fresh session, while preserving active tools owned by Pi and other extensions. This prevents interaction methods from being absent or loaded through an incompatible provider binding.
|
|
37
37
|
|
|
38
|
-
As the official contract specifies, Pi—not a nested planner—calls `computer_use_get_app_state` once per assistant turn before interacting with an app, then chooses and executes actions itself.
|
|
38
|
+
As the official contract specifies, Pi—not a nested planner—calls `computer_use_get_app_state` once per assistant turn before interacting with an app, then chooses and executes actions itself. The adapter retains one verified app-server runtime and signed Computer Use client for that inspection-action pair, so the action reuses the official active-app session established by `get_app_state`. It closes and verifies the retained process tree after the action, when a new inspection supersedes it, or on Pi session shutdown.
|
|
39
39
|
|
|
40
40
|
## Authorization policy: durable no-permissions
|
|
41
41
|
|
|
@@ -67,24 +67,26 @@ See [`ARCHITECTURE.md`](ARCHITECTURE.md) for source links and the full restricti
|
|
|
67
67
|
|
|
68
68
|
- macOS
|
|
69
69
|
- Node.js 22 or newer
|
|
70
|
-
- Pi 0.80.7 or newer
|
|
70
|
+
- Pi 0.80.7 or newer
|
|
71
71
|
- official ChatGPT macOS app at `/Applications/ChatGPT.app`
|
|
72
|
-
- official Computer Use component installed
|
|
72
|
+
- official Computer Use component installed by ChatGPT under `~/.codex/computer-use/`
|
|
73
|
+
|
|
74
|
+
The bridge follows ChatGPT's current launcher contract for `SkyComputerUseClient` under that per-user component directory. It does not honor `HOME`, `CODEX_HOME`, or an arbitrary path override when resolving the production client. The former exact app-in-plugin layout remains a strict compatibility candidate only when the current component is absent. Every selected client must be at a canonical reviewed path, pass strict code-signature verification, and carry OpenAI Team ID `2DC432GLL2`.
|
|
73
75
|
|
|
74
76
|
The direct bridge starts app-server with a new private `CODEX_HOME` containing no account credentials and only one configured MCP server: official Computer Use. It does not inherit the user's Codex MCP servers, plugins, history, memories, API keys, or auth file. It selects a non-websocket dummy model provider bound to unreachable loopback, disables plugin/remote-control features, and never starts a turn; this prevents app-server model prewarm or Responses API traffic.
|
|
75
77
|
|
|
76
78
|
### Locked-screen limitation
|
|
77
79
|
|
|
78
|
-
Version 0.3.
|
|
80
|
+
Version 0.3.2 supports direct local calls in an unlocked macOS session. It does not support window or accessibility actions after the Mac locks.
|
|
79
81
|
|
|
80
|
-
OpenAI's [locked Computer Use](https://developers.openai.com/codex/app/computer-use#use-computer-use-while-your-mac-is-locked) is limited to active, trusted ChatGPT turns started from a connected device. It does not authorize other apps or local processes to unlock the Mac. This package uses local zero-turn dispatch, so targeted calls can fail with official error `-10005` while the Mac is locked. Support for locked local use remains a follow-up and is not part of version 0.3.
|
|
82
|
+
OpenAI's [locked Computer Use](https://developers.openai.com/codex/app/computer-use#use-computer-use-while-your-mac-is-locked) is limited to active, trusted ChatGPT turns started from a connected device. It does not authorize other apps or local processes to unlock the Mac. This package uses local zero-turn dispatch, so targeted calls can fail with official error `-10005` while the Mac is locked. Support for locked local use remains a follow-up and is not part of version 0.3.2.
|
|
81
83
|
|
|
82
84
|
## Pi integration
|
|
83
85
|
|
|
84
86
|
Install the exact release from npm:
|
|
85
87
|
|
|
86
88
|
```bash
|
|
87
|
-
pi install npm:codex-computer-use-mcp@0.3.
|
|
89
|
+
pi install npm:codex-computer-use-mcp@0.3.2
|
|
88
90
|
```
|
|
89
91
|
|
|
90
92
|
To evaluate a source checkout instead:
|
|
@@ -101,7 +103,7 @@ Command:
|
|
|
101
103
|
/computer-use-status
|
|
102
104
|
```
|
|
103
105
|
|
|
104
|
-
The native Pi adapter is the primary product path. It registers all ten typed tools directly,
|
|
106
|
+
The native Pi adapter is the primary product path. It registers and activates all ten typed tools directly, and routes the required `get_app_state` and following action through one retained signed-client session. It exposes no mode-changing command or wrapper-generated approval UI. Official app-access approval elicitations are resolved by Codex Full access before they reach Pi. Any elicitation that app-server does emit is shown through Pi's UI, and only the user's choice is returned to the service.
|
|
105
107
|
|
|
106
108
|
## MCP server
|
|
107
109
|
|
package/SECURITY.md
CHANGED
|
@@ -18,8 +18,8 @@ This is direct tool dispatch—not model orchestration.
|
|
|
18
18
|
|
|
19
19
|
## Security invariants
|
|
20
20
|
|
|
21
|
-
1. Only fixed app-bundled Codex and Computer Use
|
|
22
|
-
2. Both binaries pass strict code-signature verification and OpenAI Team ID `2DC432GLL2` checks before dispatch.
|
|
21
|
+
1. Only the fixed app-bundled Codex path and reviewed official Computer Use layouts are allowed in production. The current client is resolved from the OS account home under `~/.codex/computer-use/`; `HOME`, `CODEX_HOME`, arbitrary paths, and symlinked layouts are not accepted. The former exact plugin-bundle layout is considered only when the current component is absent.
|
|
22
|
+
2. Both binaries pass strict code-signature verification and OpenAI Team ID `2DC432GLL2` checks before dispatch. A present current-layout client that fails verification never falls back.
|
|
23
23
|
3. The helper's exact ten method names and input schemas match the pinned expected inventory before every call; release tests also verify its descriptions and annotations.
|
|
24
24
|
4. `no-permissions` is the only wrapper policy: all ten methods are exposed and no wrapper permission prompt is opened.
|
|
25
25
|
5. There is no config file, environment override, command, tool argument, per-call branch, or alternate safe/full route that an agent can select.
|
|
@@ -28,11 +28,11 @@ This is direct tool dispatch—not model orchestration.
|
|
|
28
28
|
8. Same-app work is excluded across native Pi, generic MCP, and custom state roots with one fixed per-user kernel `lockf` lease namespace.
|
|
29
29
|
9. Target focus events, periodic samples, watcher health, queued ASN resolution, and final state are checked. This is post-action detection, not a preventive OS sandbox.
|
|
30
30
|
10. One direct request emits one official `mcpServer/tool/call`; no model turn, subagent, shell, web, plugin, prompt, or reachable model transport is available.
|
|
31
|
-
11. App-server and helper share one private
|
|
31
|
+
11. App-server and helper share one private broker-session working directory. One-shot calls close it immediately; Pi retains it only across the required `get_app_state` and following action, then closes it after the action, before replacement inspection, or on session shutdown. Cleanup combines strict ancestry enumeration (preserving partial results) with working-directory ownership recovery, freezes processes to a stable set, kills every owned process, awaits stdio closure, and verifies exit. This still finds a helper reparented by an early app-server exit; enumeration/freeze/exit uncertainty is fatal.
|
|
32
32
|
12. Protocol JSONL is bounded before an unterminated line can exceed 8 MB in memory.
|
|
33
33
|
13. Per-call `CODEX_HOME` and work directories are mode-private and recursively removed.
|
|
34
34
|
14. Only validated text/image result blocks cross to the invoking client. No full-result spill file is written.
|
|
35
|
-
15. Audits contain metadata only, including separate `brokerCleanupVerified` and `appLeaseReleased` evidence;
|
|
35
|
+
15. Audits contain metadata only, including separate `brokerCleanupVerified` and `appLeaseReleased` evidence. A retained Pi inspection truthfully records broker cleanup as pending (`false`); the paired action does not return if final retained-session cleanup fails. Lease-release failure changes the audited outcome before surfacing. Arguments, values, screenshots, app-state text, result content, prompts, approvals, credentials, and tokens are forbidden.
|
|
36
36
|
16. Policy rejections are audited; audit failure is fatal once a secure state path exists.
|
|
37
37
|
17. Runtime and development dependency tarballs are exact-pinned with integrity in `npm-shrinkwrap.json`.
|
|
38
38
|
|
|
@@ -56,6 +56,6 @@ Computer Use returns the official app-state text and screenshots to the invoking
|
|
|
56
56
|
|
|
57
57
|
## Supported versions
|
|
58
58
|
|
|
59
|
-
Only the latest approved release is supported. Version 0.3.
|
|
59
|
+
Only the latest approved release is supported. Version 0.3.2 supports direct local calls in an unlocked macOS session. Targeted local calls while the Mac is locked are not supported.
|
|
60
60
|
|
|
61
61
|
App-server is experimental and bundle paths or schemas can change. Drift fails closed until reviewed.
|
package/dist/direct-broker.d.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { type DirectMethod, type DirectToolArguments } from "./tools.ts";
|
|
2
2
|
export declare const CODEX_PATH = "/Applications/ChatGPT.app/Contents/Resources/codex";
|
|
3
3
|
export declare const COMPUTER_USE_PLUGIN_ROOT = "/Applications/ChatGPT.app/Contents/Resources/plugins/openai-bundled/plugins/computer-use";
|
|
4
|
-
export declare const COMPUTER_USE_CLIENT_PATH
|
|
4
|
+
export declare const COMPUTER_USE_CLIENT_PATH: string;
|
|
5
|
+
export declare const LEGACY_COMPUTER_USE_CLIENT_PATH: string;
|
|
5
6
|
export interface DirectBrokerElicitationRequest extends Record<string, unknown> {
|
|
6
7
|
mode?: string;
|
|
7
8
|
message?: string;
|
|
@@ -24,7 +25,7 @@ export interface DirectBrokerResult {
|
|
|
24
25
|
elicitationRequests: number;
|
|
25
26
|
modelTurnsStarted: 0;
|
|
26
27
|
ephemeralThread: true;
|
|
27
|
-
brokerCleanupVerified:
|
|
28
|
+
brokerCleanupVerified: boolean;
|
|
28
29
|
}
|
|
29
30
|
export interface DirectBrokerOptions {
|
|
30
31
|
timeoutMs?: number;
|
|
@@ -63,9 +64,41 @@ export declare class DirectBrokerCallError extends Error {
|
|
|
63
64
|
clientBuild?: string;
|
|
64
65
|
});
|
|
65
66
|
}
|
|
66
|
-
|
|
67
|
+
interface CommandResult {
|
|
68
|
+
status: number | null;
|
|
69
|
+
stdout?: string | Buffer;
|
|
70
|
+
stderr?: string | Buffer;
|
|
71
|
+
}
|
|
72
|
+
type RunSync = (command: string, args: string[]) => CommandResult;
|
|
73
|
+
export interface OfficialComputerUseClient {
|
|
74
|
+
clientPath: string;
|
|
75
|
+
appPath: string;
|
|
76
|
+
layout: "installed-component" | "legacy-plugin-bundle";
|
|
77
|
+
}
|
|
78
|
+
interface ResolveOfficialComputerUseClientOptions {
|
|
79
|
+
/** Test-only OS-account home override. Production never reads HOME or CODEX_HOME. */
|
|
80
|
+
userHome?: string;
|
|
81
|
+
/** Test-only legacy root override. */
|
|
82
|
+
legacyPluginRoot?: string;
|
|
83
|
+
runSync?: RunSync;
|
|
84
|
+
}
|
|
85
|
+
/** Resolve only the two reviewed official layouts, preferring ChatGPT's current installed-component contract. */
|
|
86
|
+
export declare function resolveOfficialComputerUseClient(options?: ResolveOfficialComputerUseClientOptions): OfficialComputerUseClient;
|
|
87
|
+
export declare function verifyOfficialDirectBroker(options?: ResolveOfficialComputerUseClientOptions): {
|
|
67
88
|
brokerVersion: string;
|
|
68
89
|
clientBuild: string;
|
|
90
|
+
client: OfficialComputerUseClient;
|
|
69
91
|
};
|
|
70
|
-
export declare function buildDirectAppServerArgs(mcpCwd?: string): string[];
|
|
92
|
+
export declare function buildDirectAppServerArgs(mcpCwd?: string, clientPath?: string): string[];
|
|
93
|
+
export interface OfficialDirectToolSession {
|
|
94
|
+
call(method: DirectMethod, args: DirectToolArguments, options?: Pick<DirectBrokerOptions, "timeoutMs" | "signal" | "onElicitation" | "supportsOpenAiFormElicitation">): Promise<DirectBrokerResult>;
|
|
95
|
+
close(): Promise<void>;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Start one verified app-server runtime and retain its signed Computer Use MCP
|
|
99
|
+
* client across calls. Pi uses this for the required get_app_state -> action
|
|
100
|
+
* sequence; one-shot callers continue to use callOfficialDirectTool below.
|
|
101
|
+
*/
|
|
102
|
+
export declare function createOfficialDirectToolSession(options?: DirectBrokerOptions): Promise<OfficialDirectToolSession>;
|
|
71
103
|
export declare function callOfficialDirectTool(method: DirectMethod, args: DirectToolArguments, options?: DirectBrokerOptions): Promise<DirectBrokerResult>;
|
|
104
|
+
export {};
|
package/dist/direct-broker.js
CHANGED
|
@@ -1,11 +1,15 @@
|
|
|
1
1
|
import { spawn, spawnSync } from "node:child_process";
|
|
2
2
|
import { chmod, mkdir, mkdtemp, rm, writeFile } from "node:fs/promises";
|
|
3
|
+
import { existsSync, realpathSync } from "node:fs";
|
|
3
4
|
import os from "node:os";
|
|
4
5
|
import path from "node:path";
|
|
5
6
|
import { EXPECTED_OFFICIAL_INPUT_SCHEMAS, OFFICIAL_METHODS, } from "./tools.js";
|
|
6
7
|
export const CODEX_PATH = "/Applications/ChatGPT.app/Contents/Resources/codex";
|
|
7
8
|
export const COMPUTER_USE_PLUGIN_ROOT = "/Applications/ChatGPT.app/Contents/Resources/plugins/openai-bundled/plugins/computer-use";
|
|
8
|
-
|
|
9
|
+
const COMPUTER_USE_APP_RELATIVE_PATH = "computer-use/Codex Computer Use.app";
|
|
10
|
+
const CLIENT_RELATIVE_PATH = "Contents/SharedSupport/SkyComputerUseClient.app/Contents/MacOS/SkyComputerUseClient";
|
|
11
|
+
export const COMPUTER_USE_CLIENT_PATH = path.join(os.userInfo().homedir, ".codex", COMPUTER_USE_APP_RELATIVE_PATH, CLIENT_RELATIVE_PATH);
|
|
12
|
+
export const LEGACY_COMPUTER_USE_CLIENT_PATH = path.join(COMPUTER_USE_PLUGIN_ROOT, "Codex Computer Use.app", CLIENT_RELATIVE_PATH);
|
|
9
13
|
const OPENAI_TEAM_ID = "2DC432GLL2";
|
|
10
14
|
const MAX_PROTOCOL_LINE_BYTES = 8 * 1024 * 1024;
|
|
11
15
|
const MAX_RESULT_BYTES = 25 * 1024 * 1024;
|
|
@@ -35,41 +39,70 @@ export class DirectBrokerCallError extends Error {
|
|
|
35
39
|
this.clientBuild = evidence.clientBuild ?? "unknown";
|
|
36
40
|
}
|
|
37
41
|
}
|
|
38
|
-
function
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
42
|
+
function productionRunSync(command, args) {
|
|
43
|
+
return spawnSync(command, args, { encoding: "utf8", timeout: 10_000 });
|
|
44
|
+
}
|
|
45
|
+
function verifySignedBinary(binaryPath, runSync) {
|
|
46
|
+
const verify = runSync("/usr/bin/codesign", ["--verify", "--strict", binaryPath]);
|
|
43
47
|
if (verify.status !== 0)
|
|
44
48
|
throw new BrokerVerificationError(`Signature verification failed for ${path.basename(binaryPath)}`);
|
|
45
|
-
const details =
|
|
46
|
-
encoding: "utf8",
|
|
47
|
-
timeout: 10_000,
|
|
48
|
-
});
|
|
49
|
+
const details = runSync("/usr/bin/codesign", ["-dv", "--verbose=2", binaryPath]);
|
|
49
50
|
const output = `${details.stdout ?? ""}\n${details.stderr ?? ""}`;
|
|
50
|
-
if (details.status !== 0 || !
|
|
51
|
+
if (details.status !== 0 || !new RegExp(`(?:^|\\n)TeamIdentifier=${OPENAI_TEAM_ID}(?:\\n|$)`).test(output)) {
|
|
51
52
|
throw new BrokerVerificationError(`${path.basename(binaryPath)} is not signed by the expected OpenAI team`);
|
|
52
53
|
}
|
|
53
54
|
}
|
|
54
|
-
function
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
55
|
+
function checkedCandidate(appPath, clientPath, layout, runSync) {
|
|
56
|
+
if (!existsSync(clientPath))
|
|
57
|
+
return undefined;
|
|
58
|
+
let canonicalApp;
|
|
59
|
+
let canonicalClient;
|
|
60
|
+
try {
|
|
61
|
+
canonicalApp = realpathSync(appPath);
|
|
62
|
+
canonicalClient = realpathSync(clientPath);
|
|
63
|
+
}
|
|
64
|
+
catch {
|
|
65
|
+
throw new BrokerVerificationError("Could not resolve the official Computer Use client path");
|
|
66
|
+
}
|
|
67
|
+
if (canonicalApp !== path.resolve(appPath) || canonicalClient !== path.resolve(clientPath) || !canonicalClient.startsWith(`${canonicalApp}${path.sep}`)) {
|
|
68
|
+
throw new BrokerVerificationError("Official Computer Use client path was not canonical");
|
|
69
|
+
}
|
|
70
|
+
verifySignedBinary(canonicalClient, runSync);
|
|
71
|
+
return { appPath: canonicalApp, clientPath: canonicalClient, layout };
|
|
72
|
+
}
|
|
73
|
+
/** Resolve only the two reviewed official layouts, preferring ChatGPT's current installed-component contract. */
|
|
74
|
+
export function resolveOfficialComputerUseClient(options = {}) {
|
|
75
|
+
const runSync = options.runSync ?? productionRunSync;
|
|
76
|
+
const userHome = options.userHome ?? os.userInfo().homedir;
|
|
77
|
+
const canonicalUserHome = existsSync(userHome) ? realpathSync(userHome) : path.resolve(userHome);
|
|
78
|
+
const currentApp = path.join(canonicalUserHome, ".codex", COMPUTER_USE_APP_RELATIVE_PATH);
|
|
79
|
+
const current = checkedCandidate(currentApp, path.join(currentApp, CLIENT_RELATIVE_PATH), "installed-component", runSync);
|
|
80
|
+
if (current)
|
|
81
|
+
return current;
|
|
82
|
+
const legacyRoot = options.legacyPluginRoot ?? COMPUTER_USE_PLUGIN_ROOT;
|
|
83
|
+
const canonicalLegacyRoot = existsSync(legacyRoot) ? realpathSync(legacyRoot) : path.resolve(legacyRoot);
|
|
84
|
+
const legacyApp = path.join(canonicalLegacyRoot, "Codex Computer Use.app");
|
|
85
|
+
const legacy = checkedCandidate(legacyApp, path.join(legacyApp, CLIENT_RELATIVE_PATH), "legacy-plugin-bundle", runSync);
|
|
86
|
+
if (legacy)
|
|
87
|
+
return legacy;
|
|
88
|
+
throw new BrokerVerificationError("Official Computer Use client was not found in a supported location");
|
|
89
|
+
}
|
|
90
|
+
function clientBuild(appPath, runSync) {
|
|
91
|
+
const result = runSync("/usr/bin/plutil", ["-extract", "CFBundleVersion", "raw", path.join(appPath, "Contents", "Info.plist")]);
|
|
92
|
+
if (result.status !== 0 || !(result.stdout ?? "").toString().trim()) {
|
|
61
93
|
throw new BrokerVerificationError("Could not verify the official Computer Use client build");
|
|
62
94
|
}
|
|
63
|
-
return (result.stdout ?? "").trim();
|
|
95
|
+
return (result.stdout ?? "").toString().trim();
|
|
64
96
|
}
|
|
65
|
-
export function verifyOfficialDirectBroker() {
|
|
66
|
-
|
|
67
|
-
verifySignedBinary(
|
|
68
|
-
const
|
|
69
|
-
|
|
97
|
+
export function verifyOfficialDirectBroker(options = {}) {
|
|
98
|
+
const runSync = options.runSync ?? productionRunSync;
|
|
99
|
+
verifySignedBinary(CODEX_PATH, runSync);
|
|
100
|
+
const client = resolveOfficialComputerUseClient({ ...options, runSync });
|
|
101
|
+
const version = runSync(CODEX_PATH, ["--version"]);
|
|
102
|
+
if (version.status !== 0 || !/^codex-cli\s+\d+\./.test((version.stdout ?? "").toString().trim())) {
|
|
70
103
|
throw new BrokerVerificationError("Could not verify the app-bundled Codex app-server version");
|
|
71
104
|
}
|
|
72
|
-
return { brokerVersion: (version.stdout ?? "").trim(), clientBuild: clientBuild() };
|
|
105
|
+
return { brokerVersion: (version.stdout ?? "").toString().trim(), clientBuild: clientBuild(client.appPath, runSync), client };
|
|
73
106
|
}
|
|
74
107
|
function buildBrokerEnv(codexHome, tempRoot) {
|
|
75
108
|
const env = {
|
|
@@ -86,8 +119,8 @@ function buildBrokerEnv(codexHome, tempRoot) {
|
|
|
86
119
|
}
|
|
87
120
|
return env;
|
|
88
121
|
}
|
|
89
|
-
export function buildDirectAppServerArgs(mcpCwd = COMPUTER_USE_PLUGIN_ROOT) {
|
|
90
|
-
const mcpTable = `{"computer-use" = { command = ${JSON.stringify(
|
|
122
|
+
export function buildDirectAppServerArgs(mcpCwd = COMPUTER_USE_PLUGIN_ROOT, clientPath = COMPUTER_USE_CLIENT_PATH) {
|
|
123
|
+
const mcpTable = `{"computer-use" = { command = ${JSON.stringify(clientPath)}, args = ["mcp"], cwd = ${JSON.stringify(mcpCwd)}, enabled = true, startup_timeout_sec = 30, tool_timeout_sec = 120 }}`;
|
|
91
124
|
const disabledProvider = '{ name = "Direct dispatch disabled provider", base_url = "http://127.0.0.1:9/v1", wire_api = "responses", request_max_retries = 0, stream_max_retries = 0, supports_websockets = false, requires_openai_auth = false }';
|
|
92
125
|
return [
|
|
93
126
|
"-c", 'model_provider="direct_disabled"',
|
|
@@ -372,10 +405,14 @@ async function terminateGroup(proc, workDir, processEnumeratorCommand = "/usr/bi
|
|
|
372
405
|
if (cleanupError)
|
|
373
406
|
throw cleanupError;
|
|
374
407
|
}
|
|
375
|
-
|
|
376
|
-
|
|
408
|
+
/**
|
|
409
|
+
* Start one verified app-server runtime and retain its signed Computer Use MCP
|
|
410
|
+
* client across calls. Pi uses this for the required get_app_state -> action
|
|
411
|
+
* sequence; one-shot callers continue to use callOfficialDirectTool below.
|
|
412
|
+
*/
|
|
413
|
+
export async function createOfficialDirectToolSession(options = {}) {
|
|
377
414
|
const verification = options.skipSignatureVerification
|
|
378
|
-
? { brokerVersion: "test-app-server", clientBuild: "test-client" }
|
|
415
|
+
? { brokerVersion: "test-app-server", clientBuild: "test-client", client: undefined }
|
|
379
416
|
: verifyOfficialDirectBroker();
|
|
380
417
|
const tempRoot = await mkdtemp(path.join(os.tmpdir(), "pi-direct-computer-use."));
|
|
381
418
|
const codexHome = path.join(tempRoot, "codex-home");
|
|
@@ -387,17 +424,17 @@ export async function callOfficialDirectTool(method, args, options = {}) {
|
|
|
387
424
|
let proc;
|
|
388
425
|
let processClosed;
|
|
389
426
|
let termination;
|
|
390
|
-
let abortHandler;
|
|
391
427
|
let fatalError;
|
|
392
428
|
let stderr = "";
|
|
393
429
|
let nextId = 1;
|
|
394
|
-
let elicitationRequests = 0;
|
|
395
430
|
let modelTurnsStarted = 0;
|
|
396
|
-
let directCalls = 0;
|
|
397
431
|
let ephemeralThread = false;
|
|
398
|
-
let
|
|
399
|
-
let
|
|
400
|
-
let
|
|
432
|
+
let threadId = "";
|
|
433
|
+
let closed = false;
|
|
434
|
+
let closePromise;
|
|
435
|
+
let callActive = false;
|
|
436
|
+
let currentElicitation;
|
|
437
|
+
let currentElicitationCount = 0;
|
|
401
438
|
const pending = new Map();
|
|
402
439
|
const rejectAll = (error) => {
|
|
403
440
|
for (const waiter of pending.values()) {
|
|
@@ -425,8 +462,9 @@ export async function callOfficialDirectTool(method, args, options = {}) {
|
|
|
425
462
|
return new Promise((resolve, reject) => {
|
|
426
463
|
const timer = setTimeout(() => {
|
|
427
464
|
pending.delete(id);
|
|
428
|
-
|
|
429
|
-
|
|
465
|
+
const error = new Error(`Official app-server request timed out: ${methodName}`);
|
|
466
|
+
reject(error);
|
|
467
|
+
fail(error);
|
|
430
468
|
}, timeoutMs);
|
|
431
469
|
pending.set(id, { resolve, reject, timer });
|
|
432
470
|
try {
|
|
@@ -439,9 +477,35 @@ export async function callOfficialDirectTool(method, args, options = {}) {
|
|
|
439
477
|
}
|
|
440
478
|
});
|
|
441
479
|
};
|
|
480
|
+
const close = () => {
|
|
481
|
+
closePromise ??= (async () => {
|
|
482
|
+
closed = true;
|
|
483
|
+
rejectAll(new Error("Official app-server closed"));
|
|
484
|
+
let cleanupError;
|
|
485
|
+
try {
|
|
486
|
+
await ensureTerminated();
|
|
487
|
+
if (processClosed) {
|
|
488
|
+
await new Promise((resolve, reject) => {
|
|
489
|
+
const timer = setTimeout(() => reject(new Error("Official app-server stdio did not close")), 1_000);
|
|
490
|
+
processClosed.then(() => { clearTimeout(timer); resolve(); });
|
|
491
|
+
});
|
|
492
|
+
}
|
|
493
|
+
await new Promise((resolve) => setImmediate(resolve));
|
|
494
|
+
await rm(tempRoot, { recursive: true, force: true });
|
|
495
|
+
}
|
|
496
|
+
catch (error) {
|
|
497
|
+
cleanupError = error instanceof Error ? error : new Error(String(error));
|
|
498
|
+
}
|
|
499
|
+
if (cleanupError)
|
|
500
|
+
throw new Error("Official direct Computer Use broker cleanup failed", { cause: cleanupError });
|
|
501
|
+
if (fatalError || modelTurnsStarted !== 0)
|
|
502
|
+
throw fatalError ?? new BrokerVerificationError("Model-turn activity was observed during broker teardown");
|
|
503
|
+
})();
|
|
504
|
+
return closePromise;
|
|
505
|
+
};
|
|
442
506
|
try {
|
|
443
507
|
const command = options.appServerCommand ?? CODEX_PATH;
|
|
444
|
-
const commandArgs = options.appServerArgs ?? buildDirectAppServerArgs(workDir);
|
|
508
|
+
const commandArgs = options.appServerArgs ?? buildDirectAppServerArgs(workDir, verification.client.clientPath);
|
|
445
509
|
proc = spawn(command, commandArgs, {
|
|
446
510
|
cwd: workDir,
|
|
447
511
|
detached: true,
|
|
@@ -452,20 +516,14 @@ export async function callOfficialDirectTool(method, args, options = {}) {
|
|
|
452
516
|
processClosed = new Promise((resolve) => proc.once("close", () => resolve()));
|
|
453
517
|
if (proc.pid)
|
|
454
518
|
options.onSpawn?.(proc.pid);
|
|
455
|
-
proc.stdin.on("error", (error) => {
|
|
456
|
-
|
|
457
|
-
fail(error);
|
|
458
|
-
});
|
|
519
|
+
proc.stdin.on("error", (error) => { if (error.code !== "EPIPE")
|
|
520
|
+
fail(error); });
|
|
459
521
|
proc.stderr.setEncoding("utf8");
|
|
460
|
-
proc.stderr.on("data", (chunk) => {
|
|
461
|
-
|
|
462
|
-
stderr += chunk.slice(0, 16_384 - stderr.length);
|
|
463
|
-
});
|
|
522
|
+
proc.stderr.on("data", (chunk) => { if (stderr.length < 16_384)
|
|
523
|
+
stderr += chunk.slice(0, 16_384 - stderr.length); });
|
|
464
524
|
proc.once("error", (error) => fail(error));
|
|
465
|
-
proc.once("close", (code) => {
|
|
466
|
-
|
|
467
|
-
fail(new Error(`Official app-server exited before completing the request (${code ?? "unknown"})`));
|
|
468
|
-
});
|
|
525
|
+
proc.once("close", (code) => { if (!closed && pending.size > 0)
|
|
526
|
+
fail(new Error(`Official app-server exited before completing the request (${code ?? "unknown"})`)); });
|
|
469
527
|
const processProtocolLine = (line) => {
|
|
470
528
|
let message;
|
|
471
529
|
try {
|
|
@@ -500,15 +558,14 @@ export async function callOfficialDirectTool(method, args, options = {}) {
|
|
|
500
558
|
send({ id: message.id, error: { code: -32601, message: "Unsupported server request" } });
|
|
501
559
|
return;
|
|
502
560
|
}
|
|
503
|
-
|
|
561
|
+
currentElicitationCount += 1;
|
|
504
562
|
const requestParams = message.params && typeof message.params === "object" && !Array.isArray(message.params)
|
|
505
|
-
? message.params
|
|
506
|
-
: {};
|
|
563
|
+
? message.params : {};
|
|
507
564
|
void (async () => {
|
|
508
565
|
let response = { action: "cancel" };
|
|
509
|
-
if (
|
|
566
|
+
if (currentElicitation) {
|
|
510
567
|
try {
|
|
511
|
-
const candidate = await
|
|
568
|
+
const candidate = await currentElicitation(requestParams);
|
|
512
569
|
if (candidate && ["accept", "decline", "cancel"].includes(candidate.action))
|
|
513
570
|
response = candidate;
|
|
514
571
|
}
|
|
@@ -516,11 +573,10 @@ export async function callOfficialDirectTool(method, args, options = {}) {
|
|
|
516
573
|
response = { action: "cancel" };
|
|
517
574
|
}
|
|
518
575
|
}
|
|
519
|
-
if (fatalError || !proc?.stdin.writable)
|
|
576
|
+
if (fatalError || closed || !proc?.stdin.writable)
|
|
520
577
|
return;
|
|
521
578
|
send({ id: message.id, result: response });
|
|
522
579
|
})().catch((error) => fail(error instanceof Error ? error : new Error(String(error))));
|
|
523
|
-
return;
|
|
524
580
|
}
|
|
525
581
|
}
|
|
526
582
|
catch (error) {
|
|
@@ -550,103 +606,130 @@ export async function callOfficialDirectTool(method, args, options = {}) {
|
|
|
550
606
|
offset = newline + 1;
|
|
551
607
|
}
|
|
552
608
|
});
|
|
553
|
-
proc.stdout.on("end", () => {
|
|
554
|
-
|
|
555
|
-
processProtocolLine(stdoutBuffer);
|
|
556
|
-
stdoutBuffer = "";
|
|
557
|
-
});
|
|
558
|
-
if (options.signal) {
|
|
559
|
-
abortHandler = () => {
|
|
560
|
-
fail(new Error("Direct Computer Use request cancelled"));
|
|
561
|
-
};
|
|
562
|
-
if (options.signal.aborted)
|
|
563
|
-
abortHandler();
|
|
564
|
-
else
|
|
565
|
-
options.signal.addEventListener("abort", abortHandler, { once: true });
|
|
566
|
-
}
|
|
567
|
-
if (fatalError)
|
|
568
|
-
throw fatalError;
|
|
609
|
+
proc.stdout.on("end", () => { if (stdoutBuffer.length > 0)
|
|
610
|
+
processProtocolLine(stdoutBuffer); stdoutBuffer = ""; });
|
|
569
611
|
await request("initialize", {
|
|
570
|
-
clientInfo: { name: "pi_direct_computer_use", title: "Pi Direct Computer Use", version: "0.3.
|
|
571
|
-
capabilities: { mcpServerOpenaiFormElicitation: options.supportsOpenAiFormElicitation === true
|
|
612
|
+
clientInfo: { name: "pi_direct_computer_use", title: "Pi Direct Computer Use", version: "0.3.2" },
|
|
613
|
+
capabilities: { mcpServerOpenaiFormElicitation: options.supportsOpenAiFormElicitation === true },
|
|
572
614
|
}, 15_000);
|
|
573
615
|
send({ method: "initialized" });
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
616
|
+
const started = (await request("thread/start", {
|
|
617
|
+
cwd: workDir, approvalPolicy: "never", sandbox: "danger-full-access", ephemeral: true, serviceName: "pi_direct_computer_use",
|
|
618
|
+
}, 30_000));
|
|
577
619
|
const thread = started?.thread;
|
|
578
|
-
|
|
579
|
-
if (typeof threadId !== "string"
|
|
580
|
-
|| thread.ephemeral !== true
|
|
581
|
-
|| !Object.prototype.hasOwnProperty.call(thread, "path")
|
|
582
|
-
|| thread.path !== null
|
|
583
|
-
|| !Array.isArray(thread.turns)
|
|
584
|
-
|| thread.turns.length !== 0) {
|
|
620
|
+
threadId = thread?.id;
|
|
621
|
+
if (typeof threadId !== "string" || thread.ephemeral !== true || !Object.prototype.hasOwnProperty.call(thread, "path") || thread.path !== null || !Array.isArray(thread.turns) || thread.turns.length !== 0) {
|
|
585
622
|
throw new BrokerVerificationError("App-server did not attest an empty pathless ephemeral runtime context");
|
|
586
623
|
}
|
|
587
624
|
ephemeralThread = true;
|
|
588
|
-
const inventory = await request("mcpServerStatus/list", { threadId, detail: "toolsAndAuthOnly" }, 45_000);
|
|
589
|
-
validateInventory(inventory);
|
|
590
|
-
const raw = await request("mcpServer/tool/call", { threadId, server: "computer-use", tool: method, arguments: args }, options.timeoutMs ?? 120_000);
|
|
591
|
-
directCalls = 1;
|
|
592
|
-
if (modelTurnsStarted !== 0)
|
|
593
|
-
throw new BrokerVerificationError("Model-turn activity was observed during direct dispatch");
|
|
594
|
-
const result = validateResult(raw);
|
|
595
|
-
finalResult = {
|
|
596
|
-
...result,
|
|
597
|
-
brokerVersion: verification.brokerVersion,
|
|
598
|
-
clientBuild: verification.clientBuild,
|
|
599
|
-
durationMs: Date.now() - startedAt,
|
|
600
|
-
elicitationRequests,
|
|
601
|
-
modelTurnsStarted: 0,
|
|
602
|
-
ephemeralThread: true,
|
|
603
|
-
brokerCleanupVerified: true,
|
|
604
|
-
};
|
|
605
625
|
}
|
|
606
626
|
catch (error) {
|
|
607
627
|
const base = error instanceof Error ? error : new Error(String(error));
|
|
608
|
-
|
|
609
|
-
? new Error("Official direct Computer Use broker reported an authentication failure")
|
|
610
|
-
: base;
|
|
611
|
-
}
|
|
612
|
-
finally {
|
|
613
|
-
if (abortHandler && options.signal)
|
|
614
|
-
options.signal.removeEventListener("abort", abortHandler);
|
|
615
|
-
rejectAll(new Error("Official app-server closed"));
|
|
628
|
+
const primary = /authentication|bearer|token/i.test(`${base.message}\n${stderr}`)
|
|
629
|
+
? new Error("Official direct Computer Use broker reported an authentication failure") : base;
|
|
616
630
|
try {
|
|
617
|
-
await
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
631
|
+
await close();
|
|
632
|
+
}
|
|
633
|
+
catch (closeError) {
|
|
634
|
+
const closeFailure = closeError instanceof Error ? closeError : new Error(String(closeError));
|
|
635
|
+
if (closeFailure.message === "Official direct Computer Use broker cleanup failed") {
|
|
636
|
+
throw new DirectBrokerCallError(closeFailure.message, false, primary);
|
|
637
|
+
}
|
|
638
|
+
}
|
|
639
|
+
throw new DirectBrokerCallError(primary.message, true, primary, { modelTurnsStarted, ephemeralThread, brokerVersion: verification.brokerVersion, clientBuild: verification.clientBuild });
|
|
640
|
+
}
|
|
641
|
+
return {
|
|
642
|
+
async call(method, args, callOptions = {}) {
|
|
643
|
+
if (closed)
|
|
644
|
+
throw new DirectBrokerCallError("Official direct Computer Use session is closed", true);
|
|
645
|
+
if (callActive)
|
|
646
|
+
throw new DirectBrokerCallError("Official direct Computer Use session does not allow concurrent calls", false);
|
|
647
|
+
callActive = true;
|
|
648
|
+
currentElicitation = callOptions.onElicitation;
|
|
649
|
+
currentElicitationCount = 0;
|
|
650
|
+
const startedAt = Date.now();
|
|
651
|
+
let directCalls = 0;
|
|
652
|
+
let abortHandler;
|
|
653
|
+
try {
|
|
654
|
+
if (callOptions.signal) {
|
|
655
|
+
abortHandler = () => fail(new Error("Direct Computer Use request cancelled"));
|
|
656
|
+
if (callOptions.signal.aborted)
|
|
657
|
+
abortHandler();
|
|
658
|
+
else
|
|
659
|
+
callOptions.signal.addEventListener("abort", abortHandler, { once: true });
|
|
660
|
+
}
|
|
661
|
+
if (fatalError)
|
|
662
|
+
throw fatalError;
|
|
663
|
+
const inventory = await request("mcpServerStatus/list", { threadId, detail: "toolsAndAuthOnly" }, 45_000);
|
|
664
|
+
validateInventory(inventory);
|
|
665
|
+
const raw = await request("mcpServer/tool/call", { threadId, server: "computer-use", tool: method, arguments: args }, callOptions.timeoutMs ?? 120_000);
|
|
666
|
+
directCalls = 1;
|
|
667
|
+
if (modelTurnsStarted !== 0)
|
|
668
|
+
throw new BrokerVerificationError("Model-turn activity was observed during direct dispatch");
|
|
669
|
+
const result = validateResult(raw);
|
|
670
|
+
return {
|
|
671
|
+
...result,
|
|
672
|
+
brokerVersion: verification.brokerVersion,
|
|
673
|
+
clientBuild: verification.clientBuild,
|
|
674
|
+
durationMs: Date.now() - startedAt,
|
|
675
|
+
elicitationRequests: currentElicitationCount,
|
|
676
|
+
modelTurnsStarted: 0,
|
|
677
|
+
ephemeralThread: true,
|
|
678
|
+
brokerCleanupVerified: false,
|
|
679
|
+
};
|
|
680
|
+
}
|
|
681
|
+
catch (error) {
|
|
682
|
+
const base = error instanceof Error ? error : new Error(String(error));
|
|
683
|
+
const primary = /authentication|bearer|token/i.test(`${base.message}\n${stderr}`)
|
|
684
|
+
? new Error("Official direct Computer Use broker reported an authentication failure") : base;
|
|
685
|
+
throw new DirectBrokerCallError(primary.message, false, primary, {
|
|
686
|
+
directCalls, modelTurnsStarted, ephemeralThread, elicitationRequests: currentElicitationCount,
|
|
687
|
+
brokerVersion: verification.brokerVersion, clientBuild: verification.clientBuild,
|
|
625
688
|
});
|
|
626
689
|
}
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
690
|
+
finally {
|
|
691
|
+
if (abortHandler && callOptions.signal)
|
|
692
|
+
callOptions.signal.removeEventListener("abort", abortHandler);
|
|
693
|
+
currentElicitation = undefined;
|
|
694
|
+
callActive = false;
|
|
630
695
|
}
|
|
631
|
-
|
|
696
|
+
},
|
|
697
|
+
close,
|
|
698
|
+
};
|
|
699
|
+
}
|
|
700
|
+
export async function callOfficialDirectTool(method, args, options = {}) {
|
|
701
|
+
let session;
|
|
702
|
+
let result;
|
|
703
|
+
let failure;
|
|
704
|
+
try {
|
|
705
|
+
session = await createOfficialDirectToolSession(options);
|
|
706
|
+
result = await session.call(method, args, options);
|
|
707
|
+
}
|
|
708
|
+
catch (error) {
|
|
709
|
+
failure = error;
|
|
710
|
+
}
|
|
711
|
+
let cleanupVerified = failure instanceof DirectBrokerCallError ? failure.cleanupVerified : false;
|
|
712
|
+
try {
|
|
713
|
+
if (session) {
|
|
714
|
+
await session.close();
|
|
632
715
|
cleanupVerified = true;
|
|
633
716
|
}
|
|
634
|
-
|
|
635
|
-
|
|
717
|
+
}
|
|
718
|
+
catch (cleanupError) {
|
|
719
|
+
const closeFailure = cleanupError instanceof Error ? cleanupError : new Error(String(cleanupError));
|
|
720
|
+
if (closeFailure.message !== "Official direct Computer Use broker cleanup failed") {
|
|
721
|
+
throw new DirectBrokerCallError(closeFailure.message, true, closeFailure, failure instanceof DirectBrokerCallError ? failure : {});
|
|
722
|
+
}
|
|
723
|
+
throw new DirectBrokerCallError(closeFailure.message, false, closeFailure, failure instanceof DirectBrokerCallError ? failure : {});
|
|
724
|
+
}
|
|
725
|
+
if (failure) {
|
|
726
|
+
if (failure instanceof DirectBrokerCallError) {
|
|
727
|
+
throw new DirectBrokerCallError(failure.message, cleanupVerified, failure, failure);
|
|
636
728
|
}
|
|
729
|
+
throw failure;
|
|
637
730
|
}
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
ephemeralThread,
|
|
642
|
-
elicitationRequests,
|
|
643
|
-
brokerVersion: verification.brokerVersion,
|
|
644
|
-
clientBuild: verification.clientBuild,
|
|
645
|
-
};
|
|
646
|
-
if (primaryError)
|
|
647
|
-
throw new DirectBrokerCallError(primaryError.message, cleanupVerified, primaryError, failureEvidence);
|
|
648
|
-
if (!finalResult)
|
|
649
|
-
throw new DirectBrokerCallError("Official direct Computer Use ended without a result", cleanupVerified, undefined, failureEvidence);
|
|
650
|
-
return finalResult;
|
|
731
|
+
if (!result)
|
|
732
|
+
throw new DirectBrokerCallError("Official direct Computer Use ended without a result", cleanupVerified);
|
|
733
|
+
return { ...result, brokerCleanupVerified: true };
|
|
651
734
|
}
|
|
652
735
|
//# sourceMappingURL=direct-broker.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"direct-broker.js","sourceRoot":"","sources":["../src/direct-broker.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"direct-broker.js","sourceRoot":"","sources":["../src/direct-broker.ts"],"names":[],"mappings":"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"}
|
package/dist/mcp-server.js
CHANGED
|
@@ -5,7 +5,7 @@ import { CallToolRequestSchema, ErrorCode, ListToolsRequestSchema, McpError, } f
|
|
|
5
5
|
import { executeDirectTool, getDirectStatus } from "./direct-service.js";
|
|
6
6
|
import { forwardOfficialElicitationToMcpClient } from "./mcp-elicitation.js";
|
|
7
7
|
import { EXPECTED_OFFICIAL_INPUT_SCHEMAS, isDirectMethod, OFFICIAL_METHODS, OFFICIAL_TOOL_METADATA, } from "./tools.js";
|
|
8
|
-
const version = "0.3.
|
|
8
|
+
const version = "0.3.2";
|
|
9
9
|
async function handleCli() {
|
|
10
10
|
const args = process.argv.slice(2);
|
|
11
11
|
if (args.length === 0)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Pi integration
|
|
2
2
|
|
|
3
|
-
The native Pi adapter is the primary 0.3 path. It registers ten namespaced typed tools so Pi itself chooses each official Computer Use method and argument.
|
|
3
|
+
The native Pi adapter is the primary 0.3 path. It registers and activates ten namespaced typed tools together so Pi itself chooses each official Computer Use method and argument.
|
|
4
4
|
|
|
5
5
|
## Source checkout acceptance
|
|
6
6
|
|
|
@@ -13,23 +13,20 @@ CODEX_COMPUTER_USE_HOME="$(mktemp -d)" \
|
|
|
13
13
|
|
|
14
14
|
`-ne` prevents an installed 0.1 adapter from loading at the same time. This source workflow does not install or switch live Pi configuration.
|
|
15
15
|
|
|
16
|
-
For normal installation, use the exact version 0.3.
|
|
16
|
+
For normal installation, use the exact version 0.3.2 npm package:
|
|
17
17
|
|
|
18
18
|
```bash
|
|
19
|
-
pi install npm:codex-computer-use-mcp@0.3.
|
|
19
|
+
pi install npm:codex-computer-use-mcp@0.3.2
|
|
20
20
|
```
|
|
21
21
|
|
|
22
22
|
Use the source workflow only when you need to test an exact reviewed commit. Follow the rollback procedure in `MIGRATION.md` when replacing version 0.1.
|
|
23
23
|
|
|
24
24
|
## Registered surface
|
|
25
25
|
|
|
26
|
-
|
|
26
|
+
All ten tools are registered and active from session start:
|
|
27
27
|
|
|
28
28
|
- `computer_use_list_apps`
|
|
29
29
|
- `computer_use_get_app_state`
|
|
30
|
-
|
|
31
|
-
Registered and activated after a successful `get_app_state` call:
|
|
32
|
-
|
|
33
30
|
- `computer_use_click`
|
|
34
31
|
- `computer_use_perform_secondary_action`
|
|
35
32
|
- `computer_use_set_value`
|
|
@@ -43,13 +40,15 @@ Command:
|
|
|
43
40
|
|
|
44
41
|
- `/computer-use-status`
|
|
45
42
|
|
|
46
|
-
|
|
43
|
+
Session-start activation is purely additive and preserves every active tool owned by Pi or another extension. The interaction definitions rely on their official descriptions and omit extra prompt metadata.
|
|
44
|
+
|
|
45
|
+
A successful `get_app_state` retains its verified app-server runtime, thread, and signed Computer Use client. The following direct interaction uses that same client and official active-app lease, then closes the retained process tree with strict cleanup verification. A new inspection replaces and closes any earlier retained session; Pi `session_shutdown` also closes it.
|
|
47
46
|
|
|
48
47
|
No-permissions is the only policy: all ten tools are registered and available through this lifecycle with no wrapper permission prompts, mode selector, or app/intent/action gate. The signed host runs with Codex Full access (`approvalPolicy: "never"`, `sandbox: "danger-full-access"`), so normal empty-schema Computer Use app approvals are accepted by Codex before they reach Pi. Pi renders any form, OpenAI-form, or URL elicitation app-server does emit. The user's `accept`, `decline`, or `cancel` response is returned unchanged; the adapter never fabricates one.
|
|
49
48
|
|
|
50
49
|
## Generic MCP gateway
|
|
51
50
|
|
|
52
|
-
Merge `mcp.json.example` only for the exact 0.3.
|
|
51
|
+
Merge `mcp.json.example` only for the exact 0.3.2 package or after building an exact reviewed source commit. `directTools: false` is intentional; it keeps this powerful generic MCP surface behind Pi's gateway.
|
|
53
52
|
|
|
54
53
|
For a source checkout:
|
|
55
54
|
|
package/integrations/pi/index.ts
CHANGED
|
@@ -4,9 +4,11 @@ import { getAgentDir, truncateHead, type ExtensionAPI } from "@earendil-works/pi
|
|
|
4
4
|
import { Text } from "@earendil-works/pi-tui";
|
|
5
5
|
import { Type, type TSchema } from "typebox";
|
|
6
6
|
import { executeDirectTool, getDirectStatus } from "../../dist/direct-service.js";
|
|
7
|
-
import
|
|
8
|
-
|
|
9
|
-
|
|
7
|
+
import {
|
|
8
|
+
createOfficialDirectToolSession,
|
|
9
|
+
type DirectBrokerElicitationRequest,
|
|
10
|
+
type DirectBrokerElicitationResponse,
|
|
11
|
+
type OfficialDirectToolSession,
|
|
10
12
|
} from "../../dist/direct-broker.js";
|
|
11
13
|
import { OFFICIAL_TOOL_METADATA, type DirectMethod } from "../../dist/tools.js";
|
|
12
14
|
|
|
@@ -82,15 +84,94 @@ export const INTERACTION_TOOL_NAMES = [
|
|
|
82
84
|
"computer_use_type_text",
|
|
83
85
|
] as const;
|
|
84
86
|
|
|
87
|
+
export const COMPUTER_USE_TOOL_NAMES = [
|
|
88
|
+
...INSPECTION_TOOL_NAMES,
|
|
89
|
+
...INTERACTION_TOOL_NAMES,
|
|
90
|
+
] as const;
|
|
91
|
+
|
|
85
92
|
export function setInitialComputerUseTools(pi: Pick<ExtensionAPI, "getActiveTools" | "setActiveTools">): void {
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
93
|
+
pi.setActiveTools([...new Set([...pi.getActiveTools(), ...COMPUTER_USE_TOOL_NAMES])]);
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
interface SessionExecutorDependencies {
|
|
97
|
+
createSession?: typeof createOfficialDirectToolSession;
|
|
98
|
+
executeTool?: typeof executeDirectTool;
|
|
89
99
|
}
|
|
90
100
|
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
101
|
+
/** Keep the signed app-server/client alive across the required state -> action pair. */
|
|
102
|
+
export class PiDirectSessionExecutor {
|
|
103
|
+
private session: OfficialDirectToolSession | undefined;
|
|
104
|
+
private queue: Promise<void> = Promise.resolve();
|
|
105
|
+
private readonly dependencies: SessionExecutorDependencies;
|
|
106
|
+
|
|
107
|
+
constructor(dependencies: SessionExecutorDependencies = {}) {
|
|
108
|
+
this.dependencies = dependencies;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
private async closeSession(): Promise<void> {
|
|
112
|
+
const session = this.session;
|
|
113
|
+
this.session = undefined;
|
|
114
|
+
await session?.close();
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
async execute(
|
|
118
|
+
method: DirectMethod,
|
|
119
|
+
params: Record<string, unknown>,
|
|
120
|
+
dependencies: Parameters<typeof executeDirectTool>[1],
|
|
121
|
+
): Promise<Awaited<ReturnType<typeof executeDirectTool>>> {
|
|
122
|
+
const previous = this.queue;
|
|
123
|
+
let release!: () => void;
|
|
124
|
+
this.queue = new Promise<void>((resolve) => { release = resolve; });
|
|
125
|
+
await previous;
|
|
126
|
+
try {
|
|
127
|
+
const executeTool = this.dependencies.executeTool ?? executeDirectTool;
|
|
128
|
+
if (method === "list_apps") return await executeTool({ method, arguments: params }, dependencies);
|
|
129
|
+
if (method === "get_app_state") {
|
|
130
|
+
await this.closeSession();
|
|
131
|
+
const createSession = this.dependencies.createSession ?? createOfficialDirectToolSession;
|
|
132
|
+
try {
|
|
133
|
+
const response = await executeTool(
|
|
134
|
+
{ method, arguments: params },
|
|
135
|
+
{
|
|
136
|
+
...dependencies,
|
|
137
|
+
callTool: async (directMethod, args, options) => {
|
|
138
|
+
this.session = await createSession({ supportsOpenAiFormElicitation: true });
|
|
139
|
+
return this.session.call(directMethod, args, options);
|
|
140
|
+
},
|
|
141
|
+
},
|
|
142
|
+
);
|
|
143
|
+
if (response.isError) await this.closeSession();
|
|
144
|
+
return response;
|
|
145
|
+
} catch (error) {
|
|
146
|
+
await this.closeSession();
|
|
147
|
+
throw error;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
const session = this.session;
|
|
151
|
+
try {
|
|
152
|
+
return await executeTool(
|
|
153
|
+
{ method, arguments: params },
|
|
154
|
+
session ? {
|
|
155
|
+
...dependencies,
|
|
156
|
+
callTool: async (directMethod, args, options) => {
|
|
157
|
+
const result = await session.call(directMethod, args, options);
|
|
158
|
+
await this.closeSession();
|
|
159
|
+
return { ...result, brokerCleanupVerified: true };
|
|
160
|
+
},
|
|
161
|
+
} : dependencies,
|
|
162
|
+
);
|
|
163
|
+
} finally {
|
|
164
|
+
await this.closeSession();
|
|
165
|
+
}
|
|
166
|
+
} finally {
|
|
167
|
+
release();
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
async close(): Promise<void> {
|
|
172
|
+
await this.queue;
|
|
173
|
+
await this.closeSession();
|
|
174
|
+
}
|
|
94
175
|
}
|
|
95
176
|
|
|
96
177
|
function toPiContent(content: Array<Record<string, unknown>>): Array<{ type: "text"; text: string } | { type: "image"; data: string; mimeType: string }> {
|
|
@@ -188,6 +269,7 @@ export async function handleOfficialElicitation(
|
|
|
188
269
|
|
|
189
270
|
export default function directComputerUse(pi: ExtensionAPI) {
|
|
190
271
|
const stateRoot = process.env.CODEX_COMPUTER_USE_HOME || path.join(getAgentDir(), "direct-computer-use");
|
|
272
|
+
const sessionExecutor = new PiDirectSessionExecutor();
|
|
191
273
|
|
|
192
274
|
pi.registerCommand("computer-use-status", {
|
|
193
275
|
description: "Show the direct-call architecture, durable no-permissions policy, signed broker, and private audit path",
|
|
@@ -214,8 +296,9 @@ export default function directComputerUse(pi: ExtensionAPI) {
|
|
|
214
296
|
...inspectionPromptMetadata,
|
|
215
297
|
parameters: ToolParameters[method] as any,
|
|
216
298
|
async execute(_toolCallId, params, signal, onUpdate, ctx) {
|
|
217
|
-
const response = await
|
|
218
|
-
|
|
299
|
+
const response = await sessionExecutor.execute(
|
|
300
|
+
method,
|
|
301
|
+
params as Record<string, unknown>,
|
|
219
302
|
{
|
|
220
303
|
stateRoot,
|
|
221
304
|
signal,
|
|
@@ -232,7 +315,6 @@ export default function directComputerUse(pi: ExtensionAPI) {
|
|
|
232
315
|
},
|
|
233
316
|
);
|
|
234
317
|
if (response.isError) throw new Error(errorText(response.content));
|
|
235
|
-
if (method === "get_app_state") activateInteractionTools(pi);
|
|
236
318
|
return { content: toPiContent(response.content), details: response.details };
|
|
237
319
|
},
|
|
238
320
|
renderCall(args, theme) {
|
|
@@ -244,4 +326,5 @@ export default function directComputerUse(pi: ExtensionAPI) {
|
|
|
244
326
|
}
|
|
245
327
|
|
|
246
328
|
pi.on("session_start", () => setInitialComputerUseTools(pi));
|
|
329
|
+
pi.on("session_shutdown", () => sessionExecutor.close());
|
|
247
330
|
}
|
package/npm-shrinkwrap.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "codex-computer-use-mcp",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.2",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "codex-computer-use-mcp",
|
|
9
|
-
"version": "0.3.
|
|
9
|
+
"version": "0.3.2",
|
|
10
10
|
"license": "MIT",
|
|
11
11
|
"os": [
|
|
12
12
|
"darwin"
|
|
@@ -3664,9 +3664,9 @@
|
|
|
3664
3664
|
"license": "MIT"
|
|
3665
3665
|
},
|
|
3666
3666
|
"node_modules/fast-uri": {
|
|
3667
|
-
"version": "3.1.
|
|
3668
|
-
"resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.
|
|
3669
|
-
"integrity": "sha512-
|
|
3667
|
+
"version": "3.1.4",
|
|
3668
|
+
"resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.4.tgz",
|
|
3669
|
+
"integrity": "sha512-8JnbkQ4juDyvYs4mgFGQqg4yCYtFDtUtmp2QIQq11ZZe5CFQ5wcqm1rqDgAh/QdMySuBnPzMUiJUNZG5N/AiQw==",
|
|
3670
3670
|
"funding": [
|
|
3671
3671
|
{
|
|
3672
3672
|
"type": "github",
|
package/package.json
CHANGED