codex-computer-use-mcp 0.1.0 → 0.3.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 (50) hide show
  1. package/ARCHITECTURE.md +150 -0
  2. package/CONTRIBUTING.md +16 -10
  3. package/MIGRATION.md +94 -0
  4. package/PROOF.md +128 -54
  5. package/README.md +97 -115
  6. package/SECURITY.md +45 -22
  7. package/dist/audit.d.ts +15 -14
  8. package/dist/audit.js +1 -1
  9. package/dist/audit.js.map +1 -1
  10. package/dist/config.d.ts +8 -8
  11. package/dist/config.js +8 -103
  12. package/dist/config.js.map +1 -1
  13. package/dist/direct-broker.d.ts +71 -0
  14. package/dist/direct-broker.js +652 -0
  15. package/dist/direct-broker.js.map +1 -0
  16. package/dist/direct-service.d.ts +33 -0
  17. package/dist/direct-service.js +350 -0
  18. package/dist/direct-service.js.map +1 -0
  19. package/dist/lock.d.ts +1 -0
  20. package/dist/lock.js +32 -3
  21. package/dist/lock.js.map +1 -1
  22. package/dist/mcp-elicitation.d.ts +8 -0
  23. package/dist/mcp-elicitation.js +47 -0
  24. package/dist/mcp-elicitation.js.map +1 -0
  25. package/dist/mcp-server.js +43 -100
  26. package/dist/mcp-server.js.map +1 -1
  27. package/dist/system.d.ts +0 -1
  28. package/dist/system.js +12 -37
  29. package/dist/system.js.map +1 -1
  30. package/dist/tools.d.ts +84 -0
  31. package/dist/tools.js +262 -0
  32. package/dist/tools.js.map +1 -0
  33. package/docs/adr/0001-standalone-code-mode-mcp.md +45 -0
  34. package/integrations/pi/README.md +51 -27
  35. package/integrations/pi/index.ts +237 -125
  36. package/integrations/pi/mcp.json.example +3 -3
  37. package/npm-shrinkwrap.json +3275 -48
  38. package/package.json +41 -13
  39. package/dist/policy.d.ts +0 -42
  40. package/dist/policy.js +0 -428
  41. package/dist/policy.js.map +0 -1
  42. package/dist/prompt.d.ts +0 -62
  43. package/dist/prompt.js +0 -119
  44. package/dist/prompt.js.map +0 -1
  45. package/dist/runner.d.ts +0 -55
  46. package/dist/runner.js +0 -494
  47. package/dist/runner.js.map +0 -1
  48. package/dist/service.d.ts +0 -17
  49. package/dist/service.js +0 -382
  50. package/dist/service.js.map +0 -1
@@ -1,64 +1,20 @@
1
1
  #!/usr/bin/env node
2
- import crypto from "node:crypto";
3
- import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ import { Server } from "@modelcontextprotocol/sdk/server/index.js";
4
3
  import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
5
- import { z } from "zod";
6
- import { appendAudit } from "./audit.js";
7
- import { loadConfig, saveConfig } from "./config.js";
8
- import { COMPUTER_USE_TOOLS, MODEL } from "./policy.js";
9
- import { defaultStateRoot, executeOperation, getStatus } from "./service.js";
10
- const version = "0.1.0";
4
+ import { CallToolRequestSchema, ErrorCode, ListToolsRequestSchema, McpError, } from "@modelcontextprotocol/sdk/types.js";
5
+ import { executeDirectTool, getDirectStatus } from "./direct-service.js";
6
+ import { forwardOfficialElicitationToMcpClient } from "./mcp-elicitation.js";
7
+ import { EXPECTED_OFFICIAL_INPUT_SCHEMAS, isDirectMethod, OFFICIAL_METHODS, OFFICIAL_TOOL_METADATA, } from "./tools.js";
8
+ const version = "0.3.0";
11
9
  async function handleCli() {
12
10
  const args = process.argv.slice(2);
13
11
  if (args.length === 0)
14
12
  return false;
15
13
  if (args.length === 1 && args[0] === "--status") {
16
- console.log(JSON.stringify(await getStatus(), null, 2));
14
+ console.log(JSON.stringify(await getDirectStatus(), null, 2));
17
15
  return true;
18
16
  }
19
- if (args[0] !== "--configure" || (args[1] !== "safe" && args[1] !== "full-permissions")) {
20
- throw new Error("Usage: codex-computer-use-mcp [--status | --configure safe | --configure full-permissions --acknowledge-full-permissions]");
21
- }
22
- const requested = args[1];
23
- if (requested === "full-permissions" && !args.includes("--acknowledge-full-permissions")) {
24
- throw new Error("Refusing to enable full-permissions without --acknowledge-full-permissions. This broadly enables targeted operations that safe mode refuses; official OpenAI approvals and technical controls remain.");
25
- }
26
- const stateRoot = defaultStateRoot();
27
- const previous = await loadConfig(stateRoot);
28
- if (previous.permissionMode === requested) {
29
- console.log(`Permission mode is already ${requested}.`);
30
- return true;
31
- }
32
- await saveConfig(stateRoot, { version: 1, permissionMode: requested });
33
- const audit = {
34
- timestamp: new Date().toISOString(),
35
- runId: crypto.randomUUID(),
36
- operation: "configure",
37
- permissionMode: requested,
38
- app: null,
39
- mutating: true,
40
- cleanupRequested: false,
41
- userConfirmed: requested === "full-permissions",
42
- authorization: requested === "full-permissions" ? "full_permissions_config" : "none",
43
- inputBytes: 0,
44
- outcome: "ok",
45
- durationMs: 0,
46
- model: MODEL,
47
- usage: { input: 0, cachedInput: 0, output: 0 },
48
- computerUseCalls: 0,
49
- computerUseMethods: [],
50
- backgroundPreserved: null,
51
- cleanupVerified: null,
52
- };
53
- try {
54
- await appendAudit(stateRoot, audit);
55
- }
56
- catch {
57
- await saveConfig(stateRoot, previous);
58
- throw new Error("Permission mode change was rolled back because secure audit logging failed");
59
- }
60
- console.log(`Permission mode set to ${requested}.`);
61
- return true;
17
+ throw new Error("Usage: codex-computer-use-mcp [--status]. The durable no-permissions interface has no alternate mode or configuration command.");
62
18
  }
63
19
  try {
64
20
  if (await handleCli())
@@ -68,63 +24,50 @@ catch (error) {
68
24
  console.error(error instanceof Error ? error.message : "Invalid command");
69
25
  process.exit(1);
70
26
  }
71
- const server = new McpServer({ name: "codex-computer-use-mcp", version }, { capabilities: { logging: {} } });
72
- const operationSchema = {
73
- mode: z.enum(["list", "inspect", "act", "dictionary_lookup"]).describe("safe mode permits only list; inspect, act, and dictionary_lookup require explicitly acknowledged broad full-permissions mode"),
74
- app: z.string().max(500).optional().describe("App name, bundle identifier, or app-bundle path"),
75
- task: z.string().max(4000).optional().describe("Concrete target-app task for act mode"),
76
- query: z.string().max(200).optional().describe("Local word or phrase for dictionary_lookup; never include secrets or private/customer content"),
77
- cleanup: z.boolean().optional().describe("Restore transient state and verify cleanup"),
78
- cleanup_instructions: z.string().max(2000).optional().describe("Optional cleanup postcondition"),
79
- required_capabilities: z.array(z.enum(COMPUTER_USE_TOOLS)).max(8).optional().describe("Computer Use methods that must genuinely be exercised"),
27
+ const server = new Server({ name: "codex-computer-use-mcp", version }, { capabilities: { logging: {}, tools: {} } });
28
+ const officialToolDefinitions = OFFICIAL_METHODS.map((method) => ({
29
+ name: method,
30
+ description: OFFICIAL_TOOL_METADATA[method].description,
31
+ inputSchema: EXPECTED_OFFICIAL_INPUT_SCHEMAS[method],
32
+ annotations: OFFICIAL_TOOL_METADATA[method].annotations,
33
+ }));
34
+ const statusToolDefinition = {
35
+ name: "computer_use_status",
36
+ title: "Computer Use Status",
37
+ description: "Show direct-call architecture, durable no-permissions policy, signed broker status, supported methods, and private audit path.",
38
+ inputSchema: { type: "object", properties: {}, additionalProperties: false },
39
+ annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false },
80
40
  };
81
- server.registerTool("background_computer_use", {
82
- title: "Background Computer Use",
83
- description: "Use the official signed Codex Computer Use broker for native macOS apps. Safe mode is deliberately list-only because target checks are observable only after signed-client dispatch. Explicit full-permissions enables inspect/act/dictionary operations with broad wrapper authorization; it never bypasses first-party OpenAI app approvals, sensitive-action prompts, macOS privacy controls, signing checks, focus telemetry, locks, timeouts, cleanup verification, or sanitized audit logging. Calls consume separate Codex usage.",
84
- inputSchema: operationSchema,
85
- annotations: {
86
- readOnlyHint: false,
87
- destructiveHint: true,
88
- idempotentHint: false,
89
- openWorldHint: false,
90
- },
91
- }, async (args, extra) => {
92
- try {
93
- const response = await executeOperation(args, { signal: extra.signal });
94
- return {
95
- content: [{ type: "text", text: response.text }],
96
- structuredContent: response.details,
97
- isError: response.isError,
98
- };
41
+ server.setRequestHandler(ListToolsRequestSchema, async () => ({
42
+ tools: [...officialToolDefinitions, statusToolDefinition],
43
+ }));
44
+ server.setRequestHandler(CallToolRequestSchema, async (request, extra) => {
45
+ if (request.params.name === statusToolDefinition.name) {
46
+ try {
47
+ const status = await getDirectStatus();
48
+ return { content: [{ type: "text", text: JSON.stringify(status, null, 2) }], structuredContent: status };
49
+ }
50
+ catch (error) {
51
+ return { content: [{ type: "text", text: error instanceof Error ? error.message : "Could not read status" }], isError: true };
52
+ }
99
53
  }
100
- catch (error) {
101
- const message = error instanceof Error ? error.message : "Computer Use failed";
102
- return {
103
- content: [{ type: "text", text: message }],
104
- isError: true,
105
- };
54
+ if (!isDirectMethod(request.params.name)) {
55
+ throw new McpError(ErrorCode.InvalidParams, `Unknown tool: ${request.params.name}`);
106
56
  }
107
- });
108
- server.registerTool("background_computer_use_status", {
109
- title: "Background Computer Use Status",
110
- description: "Show the server permission mode, state/audit paths, signed model, approval boundary, and supported official Computer Use methods.",
111
- annotations: {
112
- readOnlyHint: true,
113
- destructiveHint: false,
114
- idempotentHint: true,
115
- openWorldHint: false,
116
- },
117
- }, async () => {
118
57
  try {
119
- const status = await getStatus();
58
+ const response = await executeDirectTool({ method: request.params.name, arguments: request.params.arguments ?? {} }, {
59
+ signal: extra.signal,
60
+ onElicitation: (elicitation) => forwardOfficialElicitationToMcpClient(server, elicitation, extra.signal),
61
+ });
120
62
  return {
121
- content: [{ type: "text", text: JSON.stringify(status, null, 2) }],
122
- structuredContent: status,
63
+ content: response.content,
64
+ structuredContent: response.details,
65
+ isError: response.isError,
123
66
  };
124
67
  }
125
68
  catch (error) {
126
69
  return {
127
- content: [{ type: "text", text: error instanceof Error ? error.message : "Could not read status" }],
70
+ content: [{ type: "text", text: error instanceof Error ? error.message : "Direct Computer Use failed" }],
128
71
  isError: true,
129
72
  };
130
73
  }
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-server.js","sourceRoot":"","sources":["../src/mcp-server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mcp-server.js","sourceRoot":"","sources":["../src/mcp-server.ts"],"names":[],"mappings":"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"}
package/dist/system.d.ts CHANGED
@@ -8,7 +8,6 @@ export interface ResolvedAppIdentity {
8
8
  }
9
9
  export declare function resolveAppIdentity(app: string): ResolvedAppIdentity;
10
10
  export declare function resolveAppLeaseId(app: string): string;
11
- export declare function ensureAppRunningInBackground(app: string, identity?: ResolvedAppIdentity): Promise<ResolvedAppIdentity>;
12
11
  export interface TargetFrontmostWatcher {
13
12
  becameFrontmost(bundleId: string): boolean;
14
13
  healthy(): boolean;
package/dist/system.js CHANGED
@@ -104,38 +104,6 @@ export function resolveAppIdentity(app) {
104
104
  export function resolveAppLeaseId(app) {
105
105
  return resolveAppIdentity(app).leaseId;
106
106
  }
107
- export async function ensureAppRunningInBackground(app, identity = resolveAppIdentity(app)) {
108
- if (identity.bundleId) {
109
- const found = spawnSync("/usr/bin/lsappinfo", ["find", `bundleID=${identity.bundleId}`], {
110
- encoding: "utf8",
111
- timeout: 3000,
112
- });
113
- if (found.status === 0 && (found.stdout ?? "").trim().startsWith("ASN:"))
114
- return identity;
115
- }
116
- const selectorIsBundleId = /^[A-Za-z0-9-]+(?:\.[A-Za-z0-9-]+)+$/.test(app.trim());
117
- const launchArgs = path.isAbsolute(app)
118
- ? ["-g", app]
119
- : identity.bundleId || selectorIsBundleId
120
- ? ["-g", "-b", identity.bundleId ?? app.trim()]
121
- : ["-g", "-a", app];
122
- const launched = spawnSync("/usr/bin/open", launchArgs, { encoding: "utf8", timeout: 10_000 });
123
- if (launched.status !== 0)
124
- throw new Error("Could not launch the target app in the background");
125
- for (let attempt = 0; attempt < 100; attempt++) {
126
- const resolved = resolveAppIdentity(identity.bundleId ?? app);
127
- if (resolved.bundleId) {
128
- const found = spawnSync("/usr/bin/lsappinfo", ["find", `bundleID=${resolved.bundleId}`], {
129
- encoding: "utf8",
130
- timeout: 3000,
131
- });
132
- if (found.status === 0 && (found.stdout ?? "").trim().startsWith("ASN:"))
133
- return resolved;
134
- }
135
- await new Promise((resolve) => setTimeout(resolve, 50));
136
- }
137
- throw new Error("Target app did not become available after background launch");
138
- }
139
107
  function bundleIdForAsn(asn, infoPath = "/usr/bin/lsappinfo") {
140
108
  const info = spawnSync(infoPath, ["info", "-only", "bundleID", asn], {
141
109
  encoding: "utf8",
@@ -167,33 +135,36 @@ export async function watchTargetFrontmost(listenerPath = "/usr/bin/lsappinfo",
167
135
  };
168
136
  const retryTimer = setInterval(resolvePending, 50);
169
137
  retryTimer.unref();
138
+ const childRunning = () => proc.exitCode === null && proc.signalCode === null;
170
139
  const markStopped = () => {
171
140
  running = false;
172
141
  clearInterval(retryTimer);
173
142
  };
174
143
  proc.stdout.setEncoding("utf8");
175
144
  proc.stdout.on("data", (chunk) => {
176
- buffer = `${buffer}${chunk}`.slice(-16_384);
145
+ buffer += chunk;
177
146
  for (const match of buffer.matchAll(/ASN:0x[0-9a-f]+-0x[0-9a-f]+/gi)) {
178
147
  const asn = match[0];
179
148
  if (!observedAsns.has(asn))
180
149
  unresolvedAsns.add(asn);
181
150
  }
151
+ // Every complete ASN above has been consumed; retain only enough overlap for a token split across chunks.
152
+ buffer = buffer.slice(-128);
182
153
  resolvePending();
183
154
  });
184
155
  proc.once("error", markStopped);
185
156
  proc.once("close", markStopped);
186
157
  await new Promise((resolve) => setTimeout(resolve, 75));
187
- if (!running || proc.exitCode !== null)
158
+ if (!running || !childRunning())
188
159
  throw new Error("Target focus-event monitor failed to start");
189
160
  return {
190
161
  becameFrontmost: (bundleId) => {
191
162
  resolvePending();
192
163
  return observedBundles.has(bundleId.toLowerCase());
193
164
  },
194
- healthy: () => running && proc.exitCode === null,
165
+ healthy: () => running && childRunning(),
195
166
  stop: async () => {
196
- if (proc.exitCode === null) {
167
+ if (childRunning()) {
197
168
  proc.kill("SIGTERM");
198
169
  await new Promise((resolve) => {
199
170
  const timeout = setTimeout(resolve, 1000);
@@ -202,7 +173,7 @@ export async function watchTargetFrontmost(listenerPath = "/usr/bin/lsappinfo",
202
173
  resolve();
203
174
  });
204
175
  });
205
- if (proc.exitCode === null) {
176
+ if (childRunning()) {
206
177
  proc.kill("SIGKILL");
207
178
  await new Promise((resolve) => {
208
179
  const timeout = setTimeout(resolve, 500);
@@ -212,6 +183,10 @@ export async function watchTargetFrontmost(listenerPath = "/usr/bin/lsappinfo",
212
183
  });
213
184
  });
214
185
  }
186
+ if (childRunning()) {
187
+ clearInterval(retryTimer);
188
+ throw new Error("Target focus-event monitor did not terminate");
189
+ }
215
190
  }
216
191
  clearInterval(retryTimer);
217
192
  // Events may arrive only while SIGTERM is draining stdout. Resolve every queued ASN before returning.
@@ -1 +1 @@
1
- {"version":3,"file":"system.js","sourceRoot":"","sources":["../src/system.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"system.js","sourceRoot":"","sources":["../src/system.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,84 @@
1
+ import { z } from "zod";
2
+ export declare const DIRECT_TOOL_SCHEMAS: {
3
+ readonly list_apps: z.ZodObject<{}, z.core.$strict>;
4
+ readonly get_app_state: z.ZodObject<{
5
+ app: z.ZodString;
6
+ }, z.core.$strict>;
7
+ readonly click: z.ZodObject<{
8
+ app: z.ZodString;
9
+ click_count: z.ZodOptional<z.ZodNumber>;
10
+ element_index: z.ZodOptional<z.ZodString>;
11
+ mouse_button: z.ZodOptional<z.ZodEnum<{
12
+ left: "left";
13
+ middle: "middle";
14
+ right: "right";
15
+ }>>;
16
+ x: z.ZodOptional<z.ZodNumber>;
17
+ y: z.ZodOptional<z.ZodNumber>;
18
+ }, z.core.$strict>;
19
+ readonly perform_secondary_action: z.ZodObject<{
20
+ app: z.ZodString;
21
+ element_index: z.ZodString;
22
+ action: z.ZodString;
23
+ }, z.core.$strict>;
24
+ readonly set_value: z.ZodObject<{
25
+ app: z.ZodString;
26
+ element_index: z.ZodString;
27
+ value: z.ZodString;
28
+ }, z.core.$strict>;
29
+ readonly select_text: z.ZodObject<{
30
+ app: z.ZodString;
31
+ element_index: z.ZodString;
32
+ text: z.ZodString;
33
+ prefix: z.ZodOptional<z.ZodString>;
34
+ selection: z.ZodOptional<z.ZodEnum<{
35
+ cursor_after: "cursor_after";
36
+ cursor_before: "cursor_before";
37
+ text: "text";
38
+ }>>;
39
+ suffix: z.ZodOptional<z.ZodString>;
40
+ }, z.core.$strict>;
41
+ readonly scroll: z.ZodObject<{
42
+ app: z.ZodString;
43
+ element_index: z.ZodString;
44
+ direction: z.ZodString;
45
+ pages: z.ZodOptional<z.ZodNumber>;
46
+ }, z.core.$strict>;
47
+ readonly drag: z.ZodObject<{
48
+ app: z.ZodString;
49
+ from_x: z.ZodNumber;
50
+ from_y: z.ZodNumber;
51
+ to_x: z.ZodNumber;
52
+ to_y: z.ZodNumber;
53
+ }, z.core.$strict>;
54
+ readonly press_key: z.ZodObject<{
55
+ app: z.ZodString;
56
+ key: z.ZodString;
57
+ }, z.core.$strict>;
58
+ readonly type_text: z.ZodObject<{
59
+ app: z.ZodString;
60
+ text: z.ZodString;
61
+ }, z.core.$strict>;
62
+ };
63
+ export type DirectMethod = keyof typeof DIRECT_TOOL_SCHEMAS;
64
+ export type DirectToolArguments = Record<string, unknown>;
65
+ export declare const OFFICIAL_METHODS: readonly ("click" | "drag" | "get_app_state" | "list_apps" | "perform_secondary_action" | "press_key" | "scroll" | "select_text" | "set_value" | "type_text")[];
66
+ export interface OfficialToolMetadata {
67
+ description: string;
68
+ annotations: {
69
+ destructiveHint: boolean;
70
+ idempotentHint: boolean;
71
+ openWorldHint: boolean;
72
+ readOnlyHint: boolean;
73
+ };
74
+ }
75
+ /** Exact upstream descriptions and annotations exposed by the signed Computer Use helper. */
76
+ export declare const OFFICIAL_TOOL_METADATA: Readonly<Record<DirectMethod, OfficialToolMetadata>>;
77
+ export declare const READ_ONLY_METHODS: Set<"click" | "drag" | "get_app_state" | "list_apps" | "perform_secondary_action" | "press_key" | "scroll" | "select_text" | "set_value" | "type_text">;
78
+ export declare const MUTATING_METHODS: Set<"click" | "drag" | "get_app_state" | "list_apps" | "perform_secondary_action" | "press_key" | "scroll" | "select_text" | "set_value" | "type_text">;
79
+ export declare function isDirectMethod(value: string): value is DirectMethod;
80
+ export declare function normalizeKeyExpression(value: string): string;
81
+ export declare function validateDirectArguments(method: DirectMethod, value: unknown): DirectToolArguments;
82
+ export declare function targetAppFor(method: DirectMethod, args: DirectToolArguments): string | undefined;
83
+ /** Exact upstream MCP schemas observed from the signed helper. Drift fails closed before dispatch. */
84
+ export declare const EXPECTED_OFFICIAL_INPUT_SCHEMAS: Readonly<Record<DirectMethod, unknown>>;