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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"direct-broker.js","sourceRoot":"","sources":["../src/direct-broker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ import { callOfficialDirectTool, type DirectBrokerElicitationRequest, type DirectBrokerElicitationResponse } from "./direct-broker.ts";
2
+ import { acquireAppLock } from "./lock.ts";
3
+ import { frontmostBundleId, frontmostBundleIdAsync, resolveAppIdentity, watchTargetFrontmost } from "./system.ts";
4
+ import { type DirectMethod, type DirectToolArguments } from "./tools.ts";
5
+ export interface DirectRequest {
6
+ method: DirectMethod;
7
+ arguments: DirectToolArguments;
8
+ }
9
+ export interface DirectResponse {
10
+ ok: boolean;
11
+ isError: boolean;
12
+ content: Array<Record<string, unknown>>;
13
+ details: Record<string, unknown>;
14
+ }
15
+ export interface DirectServiceDependencies {
16
+ stateRoot?: string;
17
+ signal?: AbortSignal;
18
+ onProgress?: (message: string) => void | Promise<void>;
19
+ onElicitation?: (request: DirectBrokerElicitationRequest) => DirectBrokerElicitationResponse | Promise<DirectBrokerElicitationResponse>;
20
+ supportsOpenAiFormElicitation?: boolean;
21
+ callTool?: typeof callOfficialDirectTool;
22
+ resolveIdentity?: typeof resolveAppIdentity;
23
+ frontmost?: typeof frontmostBundleId;
24
+ frontmostAsync?: typeof frontmostBundleIdAsync;
25
+ watchFocus?: typeof watchTargetFrontmost;
26
+ acquireLock?: typeof acquireAppLock;
27
+ }
28
+ export declare class DirectPolicyError extends Error {
29
+ constructor(message: string);
30
+ }
31
+ export declare function defaultStateRoot(): string;
32
+ export declare function executeDirectTool(raw: unknown, deps?: DirectServiceDependencies): Promise<DirectResponse>;
33
+ export declare function getDirectStatus(stateRoot?: string): Promise<Record<string, unknown>>;
@@ -0,0 +1,350 @@
1
+ import crypto from "node:crypto";
2
+ import { homedir } from "node:os";
3
+ import path from "node:path";
4
+ import { appendAudit } from "./audit.js";
5
+ import { loadConfig } from "./config.js";
6
+ import { callOfficialDirectTool, DirectBrokerCallError, verifyOfficialDirectBroker, } from "./direct-broker.js";
7
+ import { acquireAppLock, globalAppLockRoot } from "./lock.js";
8
+ import { frontmostBundleId, frontmostBundleIdAsync, resolveAppIdentity, watchTargetFrontmost, } from "./system.js";
9
+ import { MUTATING_METHODS, OFFICIAL_METHODS, isDirectMethod, targetAppFor, validateDirectArguments, } from "./tools.js";
10
+ export class DirectPolicyError extends Error {
11
+ constructor(message) {
12
+ super(message);
13
+ this.name = "DirectPolicyError";
14
+ }
15
+ }
16
+ export function defaultStateRoot() {
17
+ return process.env.CODEX_COMPUTER_USE_HOME || path.join(homedir(), ".direct-computer-use");
18
+ }
19
+ function auditAppIdentifier(rawApp, identity) {
20
+ if (!rawApp)
21
+ return null;
22
+ if (identity?.bundleId)
23
+ return identity.bundleId;
24
+ return `target-sha256:${crypto.createHash("sha256").update(rawApp).digest("hex").slice(0, 16)}`;
25
+ }
26
+ function inputByteCount(args) {
27
+ try {
28
+ return Buffer.byteLength(JSON.stringify(args), "utf8");
29
+ }
30
+ catch {
31
+ return 0;
32
+ }
33
+ }
34
+ function contentMetadata(content) {
35
+ const types = [...new Set(content.map((item) => String(item.type ?? "unknown")))].sort();
36
+ let bytes = 0;
37
+ try {
38
+ bytes = Buffer.byteLength(JSON.stringify(content), "utf8");
39
+ }
40
+ catch { /* already validated by broker */ }
41
+ return { types, bytes };
42
+ }
43
+ function safeErrorMessage(error) {
44
+ const message = error instanceof Error ? error.message : "Direct Computer Use failed";
45
+ return message
46
+ .replace(/\/Users\/[^/\s]+/g, "~")
47
+ .replace(/https?:\/\/\S+/g, "[url]")
48
+ .replace(/[A-Za-z0-9_-]{32,}/g, "[redacted]")
49
+ .replace(/[\u0000-\u001f\u007f]+/g, " ")
50
+ .slice(0, 500);
51
+ }
52
+ function rejectedMetadata(raw) {
53
+ if (!raw || typeof raw !== "object" || Array.isArray(raw))
54
+ return { method: "invalid_request", inputBytes: 0, mutating: false };
55
+ const record = raw;
56
+ const method = typeof record.method === "string" && isDirectMethod(record.method) ? record.method : "invalid_request";
57
+ return {
58
+ method,
59
+ inputBytes: inputByteCount((record.arguments && typeof record.arguments === "object" ? record.arguments : {})),
60
+ mutating: method !== "invalid_request" && MUTATING_METHODS.has(method),
61
+ };
62
+ }
63
+ function authorizationFor(_mode, _method) {
64
+ return "no_permissions_unrestricted";
65
+ }
66
+ export async function executeDirectTool(raw, deps = {}) {
67
+ const stateRoot = deps.stateRoot ?? defaultStateRoot();
68
+ const runId = crypto.randomUUID();
69
+ const startedAt = Date.now();
70
+ const config = await loadConfig();
71
+ let request;
72
+ try {
73
+ if (!raw || typeof raw !== "object" || Array.isArray(raw))
74
+ throw new DirectPolicyError("Direct Computer Use request must be an object");
75
+ const record = raw;
76
+ if (typeof record.method !== "string" || !isDirectMethod(record.method))
77
+ throw new DirectPolicyError("Unknown direct Computer Use method");
78
+ const args = validateDirectArguments(record.method, record.arguments ?? {});
79
+ request = { method: record.method, arguments: args };
80
+ }
81
+ catch (error) {
82
+ const rejected = rejectedMetadata(raw);
83
+ const record = {
84
+ timestamp: new Date().toISOString(),
85
+ runId,
86
+ method: rejected.method,
87
+ permissionMode: config.permissionMode,
88
+ app: null,
89
+ mutating: rejected.mutating,
90
+ authorization: "none",
91
+ inputBytes: rejected.inputBytes,
92
+ outcome: "policy_rejected",
93
+ durationMs: Date.now() - startedAt,
94
+ brokerVersion: null,
95
+ clientBuild: null,
96
+ directCalls: 0,
97
+ modelTurnsStarted: 0,
98
+ ephemeralThread: null,
99
+ elicitationRequests: 0,
100
+ backgroundPreserved: null,
101
+ brokerCleanupVerified: true,
102
+ appLeaseReleased: true,
103
+ resultContentTypes: [],
104
+ resultBytes: 0,
105
+ };
106
+ try {
107
+ await appendAudit(stateRoot, record);
108
+ }
109
+ catch {
110
+ throw new Error("Direct Computer Use request was rejected, but secure audit logging failed");
111
+ }
112
+ if (error instanceof DirectPolicyError)
113
+ throw error;
114
+ throw new DirectPolicyError("Direct Computer Use arguments did not match the typed schema");
115
+ }
116
+ const rawApp = targetAppFor(request.method, request.arguments);
117
+ const identity = rawApp ? (deps.resolveIdentity ?? resolveAppIdentity)(rawApp) : undefined;
118
+ if (rawApp && !identity?.bundleId) {
119
+ const audit = {
120
+ timestamp: new Date().toISOString(), runId, method: request.method, permissionMode: config.permissionMode,
121
+ app: auditAppIdentifier(rawApp, identity), mutating: MUTATING_METHODS.has(request.method),
122
+ authorization: authorizationFor(config.permissionMode, request.method), inputBytes: inputByteCount(request.arguments),
123
+ outcome: "identity_rejected", durationMs: Date.now() - startedAt, brokerVersion: null, clientBuild: null,
124
+ directCalls: 0, modelTurnsStarted: 0, ephemeralThread: null, elicitationRequests: 0,
125
+ backgroundPreserved: null, brokerCleanupVerified: true, appLeaseReleased: true, resultContentTypes: [], resultBytes: 0,
126
+ };
127
+ try {
128
+ await appendAudit(stateRoot, audit);
129
+ }
130
+ catch {
131
+ throw new Error("Direct Computer Use identity validation failed, and secure audit logging also failed");
132
+ }
133
+ throw new DirectPolicyError("Target app could not be resolved to a canonical installed bundle identifier");
134
+ }
135
+ const canonicalArgs = identity?.bundleId
136
+ ? { ...request.arguments, app: identity.bundleId }
137
+ : { ...request.arguments };
138
+ let lock;
139
+ let watcher;
140
+ let focusTimer;
141
+ let focusSample;
142
+ let focusSamplingFailed = false;
143
+ let frontBefore;
144
+ let targetBecameFrontmost = false;
145
+ let unrelatedFocusChanges = false;
146
+ let broker;
147
+ let brokerFailure;
148
+ let brokerDispatchAttempted = false;
149
+ let outcome = "failed";
150
+ let brokerCleanupVerified = false;
151
+ let response;
152
+ let thrown;
153
+ try {
154
+ if (identity)
155
+ lock = await (deps.acquireLock ?? acquireAppLock)(globalAppLockRoot(), identity.leaseId, runId);
156
+ if (identity?.bundleId) {
157
+ frontBefore = (deps.frontmost ?? frontmostBundleId)();
158
+ if (!frontBefore)
159
+ throw new DirectPolicyError("Could not observe the frontmost app before direct dispatch");
160
+ if (frontBefore.toLowerCase() === identity.bundleId.toLowerCase()) {
161
+ throw new DirectPolicyError("Target app is already frontmost; direct background-only dispatch was refused");
162
+ }
163
+ watcher = await (deps.watchFocus ?? watchTargetFrontmost)();
164
+ const sample = async () => {
165
+ if (focusSample)
166
+ return focusSample;
167
+ focusSample = (async () => {
168
+ const current = await (deps.frontmostAsync ?? frontmostBundleIdAsync)();
169
+ if (!current)
170
+ return;
171
+ if (current.toLowerCase() === identity.bundleId.toLowerCase())
172
+ targetBecameFrontmost = true;
173
+ else if (current !== frontBefore)
174
+ unrelatedFocusChanges = true;
175
+ })().finally(() => { focusSample = undefined; });
176
+ return focusSample;
177
+ };
178
+ await sample().catch(() => { focusSamplingFailed = true; });
179
+ focusTimer = setInterval(() => {
180
+ void sample().catch(() => { focusSamplingFailed = true; });
181
+ }, 100);
182
+ focusTimer.unref();
183
+ }
184
+ await deps.onProgress?.(`Direct ${request.method}: verified target lease; calling the signed official tool without a model turn…`);
185
+ try {
186
+ brokerDispatchAttempted = true;
187
+ broker = await (deps.callTool ?? callOfficialDirectTool)(request.method, canonicalArgs, {
188
+ signal: deps.signal,
189
+ timeoutMs: 120_000,
190
+ onElicitation: deps.onElicitation,
191
+ supportsOpenAiFormElicitation: deps.supportsOpenAiFormElicitation,
192
+ });
193
+ brokerCleanupVerified = broker.brokerCleanupVerified;
194
+ }
195
+ catch (error) {
196
+ if (error instanceof DirectBrokerCallError) {
197
+ brokerFailure = error;
198
+ brokerCleanupVerified = error.cleanupVerified;
199
+ }
200
+ throw error;
201
+ }
202
+ if (broker.modelTurnsStarted !== 0 || broker.ephemeralThread !== true) {
203
+ throw new DirectPolicyError("Direct broker violated the zero-model-turn architecture");
204
+ }
205
+ outcome = broker.isError ? "official_error" : "ok";
206
+ response = {
207
+ ok: !broker.isError,
208
+ isError: broker.isError,
209
+ content: broker.content,
210
+ details: {
211
+ runId,
212
+ method: request.method,
213
+ permissionMode: config.permissionMode,
214
+ app: identity?.bundleId ?? null,
215
+ outcome,
216
+ directCalls: 1,
217
+ modelTurnsStarted: 0,
218
+ ephemeralRuntimeContext: true,
219
+ elicitationRequests: broker.elicitationRequests,
220
+ brokerVersion: broker.brokerVersion,
221
+ clientBuild: broker.clientBuild,
222
+ durationMs: broker.durationMs,
223
+ },
224
+ };
225
+ }
226
+ catch (error) {
227
+ outcome = error instanceof DirectPolicyError ? "policy_violation" : deps.signal?.aborted ? "cancelled" : "broker_failed";
228
+ if (!brokerDispatchAttempted)
229
+ brokerCleanupVerified = true;
230
+ thrown = new Error(safeErrorMessage(error));
231
+ }
232
+ finally {
233
+ if (focusTimer)
234
+ clearInterval(focusTimer);
235
+ if (focusSample)
236
+ await focusSample.catch(() => { focusSamplingFailed = true; });
237
+ let watcherFailed = focusSamplingFailed;
238
+ if (watcher) {
239
+ watcherFailed ||= !watcher.healthy();
240
+ try {
241
+ await watcher.stop();
242
+ }
243
+ catch {
244
+ watcherFailed = true;
245
+ }
246
+ if (identity?.bundleId)
247
+ targetBecameFrontmost ||= watcher.becameFrontmost(identity.bundleId);
248
+ }
249
+ if (identity?.bundleId) {
250
+ const frontAfter = (deps.frontmost ?? frontmostBundleId)();
251
+ if (!frontAfter)
252
+ watcherFailed = true;
253
+ else if (frontAfter.toLowerCase() === identity.bundleId.toLowerCase())
254
+ targetBecameFrontmost = true;
255
+ else if (frontBefore && frontAfter !== frontBefore)
256
+ unrelatedFocusChanges = true;
257
+ }
258
+ const backgroundPreserved = identity ? !targetBecameFrontmost && !watcherFailed : null;
259
+ if (identity && backgroundPreserved !== true && !thrown) {
260
+ outcome = "focus_violation";
261
+ thrown = new DirectPolicyError("Target focus changed or focus telemetry failed; the completed tool call is not trusted as background-safe");
262
+ response = undefined;
263
+ }
264
+ let releaseFailed = false;
265
+ try {
266
+ await lock?.release();
267
+ }
268
+ catch {
269
+ releaseFailed = true;
270
+ }
271
+ if (releaseFailed) {
272
+ outcome = "lease_cleanup_failed";
273
+ thrown = new Error("Direct Computer Use app lease did not release cleanly");
274
+ response = undefined;
275
+ }
276
+ const metadata = broker ? contentMetadata(broker.content) : { types: [], bytes: 0 };
277
+ const audit = {
278
+ timestamp: new Date().toISOString(),
279
+ runId,
280
+ method: request.method,
281
+ permissionMode: config.permissionMode,
282
+ app: auditAppIdentifier(rawApp, identity),
283
+ mutating: MUTATING_METHODS.has(request.method),
284
+ authorization: authorizationFor(config.permissionMode, request.method),
285
+ inputBytes: inputByteCount(canonicalArgs),
286
+ outcome,
287
+ durationMs: Date.now() - startedAt,
288
+ brokerVersion: broker?.brokerVersion ?? brokerFailure?.brokerVersion ?? null,
289
+ clientBuild: broker?.clientBuild ?? brokerFailure?.clientBuild ?? null,
290
+ directCalls: broker ? 1 : brokerFailure?.directCalls ?? 0,
291
+ modelTurnsStarted: broker?.modelTurnsStarted ?? brokerFailure?.modelTurnsStarted ?? 0,
292
+ ephemeralThread: broker?.ephemeralThread ?? brokerFailure?.ephemeralThread ?? null,
293
+ elicitationRequests: broker?.elicitationRequests ?? brokerFailure?.elicitationRequests ?? 0,
294
+ backgroundPreserved,
295
+ brokerCleanupVerified,
296
+ appLeaseReleased: !releaseFailed,
297
+ resultContentTypes: metadata.types,
298
+ resultBytes: metadata.bytes,
299
+ };
300
+ try {
301
+ await appendAudit(stateRoot, audit);
302
+ }
303
+ catch {
304
+ throw new Error(`Direct Computer Use ended with outcome ${outcome}, but secure audit logging failed`);
305
+ }
306
+ }
307
+ if (thrown)
308
+ throw thrown;
309
+ if (!response)
310
+ throw new Error("Direct Computer Use ended without a result");
311
+ response.details.backgroundPreserved = identity ? true : null;
312
+ response.details.unrelatedFocusChanges = unrelatedFocusChanges;
313
+ response.details.brokerCleanupVerified = brokerCleanupVerified;
314
+ return response;
315
+ }
316
+ export async function getDirectStatus(stateRoot = defaultStateRoot()) {
317
+ const config = await loadConfig();
318
+ let brokerVerified = false;
319
+ let brokerVersion;
320
+ let clientBuild;
321
+ try {
322
+ ({ brokerVersion, clientBuild } = verifyOfficialDirectBroker());
323
+ brokerVerified = true;
324
+ }
325
+ catch {
326
+ // Status remains readable without exposing local verification details.
327
+ }
328
+ return {
329
+ stateRoot,
330
+ permissionMode: config.permissionMode,
331
+ brokerVerified,
332
+ ...(brokerVersion ? { brokerVersion } : {}),
333
+ ...(clientBuild ? { clientBuild } : {}),
334
+ officialElicitationsAuthoritative: true,
335
+ architecture: "official-codex-app-server-direct-mcp-tool-call",
336
+ nestedModel: false,
337
+ modelUsage: false,
338
+ ephemeralZeroTurnRuntimeContextRequired: true,
339
+ wrapperPermissionPrompts: false,
340
+ officialApprovalPolicy: "full-access",
341
+ officialAppApprovalHandling: "auto-approved-by-codex-full-access",
342
+ officialElicitationHandling: "forwarded-if-emitted",
343
+ wrapperAuthorization: "unrestricted",
344
+ availableMethods: [...OFFICIAL_METHODS],
345
+ supportedMethods: [...OFFICIAL_METHODS],
346
+ appLockRoot: globalAppLockRoot(),
347
+ auditPath: path.join(stateRoot, "audit", "direct-computer-use.jsonl"),
348
+ };
349
+ }
350
+ //# sourceMappingURL=direct-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"direct-service.js","sourceRoot":"","sources":["../src/direct-service.ts"],"names":[],"mappings":"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"}
package/dist/lock.d.ts CHANGED
@@ -13,4 +13,5 @@ export interface AppLock {
13
13
  owner: LockOwner;
14
14
  release(): Promise<void>;
15
15
  }
16
+ export declare function globalAppLockRoot(): string;
16
17
  export declare function acquireAppLock(stateDir: string, app: string, runId: string, _staleAfterMs?: number): Promise<AppLock>;
package/dist/lock.js CHANGED
@@ -1,15 +1,43 @@
1
1
  import crypto from "node:crypto";
2
2
  import { spawn } from "node:child_process";
3
- import { mkdir, open, readFile, rename, rm } from "node:fs/promises";
3
+ import { chmod, lstat, mkdir, open, readFile, rename, rm } from "node:fs/promises";
4
4
  import path from "node:path";
5
5
  export class AppBusyError extends Error {
6
6
  owner;
7
7
  constructor(app, owner) {
8
- super(`${app} is already leased by another native-app task; concurrent same-app access is blocked`);
8
+ super(`${app} is already leased by another direct Computer Use task; concurrent same-app access is blocked`);
9
9
  this.name = "AppBusyError";
10
10
  this.owner = owner;
11
11
  }
12
12
  }
13
+ export function globalAppLockRoot() {
14
+ const uid = process.getuid?.();
15
+ if (!Number.isSafeInteger(uid))
16
+ throw new Error("Could not determine the current user for global app locking");
17
+ return path.join("/tmp", `codex-computer-use-mcp-${uid}`);
18
+ }
19
+ async function ensurePrivateDirectory(directory) {
20
+ try {
21
+ const info = await lstat(directory);
22
+ if (info.isSymbolicLink() || !info.isDirectory())
23
+ throw new Error("App-lock path must be a non-symlink directory");
24
+ if (process.getuid && info.uid !== process.getuid())
25
+ throw new Error("App-lock path must be owned by the current user");
26
+ if ((info.mode & 0o077) !== 0)
27
+ throw new Error("App-lock path permissions must be private");
28
+ }
29
+ catch (error) {
30
+ if (error?.code !== "ENOENT")
31
+ throw error;
32
+ await mkdir(directory, { recursive: true, mode: 0o700 });
33
+ const info = await lstat(directory);
34
+ if (info.isSymbolicLink() || !info.isDirectory())
35
+ throw new Error("App-lock path must be a non-symlink directory");
36
+ if (process.getuid && info.uid !== process.getuid())
37
+ throw new Error("App-lock path must be owned by the current user");
38
+ }
39
+ await chmod(directory, 0o700);
40
+ }
13
41
  function lockKey(value) {
14
42
  return crypto.createHash("sha256").update(value).digest("hex");
15
43
  }
@@ -39,8 +67,9 @@ async function publishOwner(ownerPath, owner) {
39
67
  }
40
68
  }
41
69
  export async function acquireAppLock(stateDir, app, runId, _staleAfterMs = 10 * 60_000) {
70
+ await ensurePrivateDirectory(stateDir);
42
71
  const locksDir = path.join(stateDir, "locks");
43
- await mkdir(locksDir, { recursive: true, mode: 0o700 });
72
+ await ensurePrivateDirectory(locksDir);
44
73
  const key = lockKey(app);
45
74
  const lockPath = path.join(locksDir, `${key}.lock`);
46
75
  const ownerPath = path.join(locksDir, `${key}.owner.json`);
package/dist/lock.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"lock.js","sourceRoot":"","sources":["../src/lock.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lock.js","sourceRoot":"","sources":["../src/lock.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { RequestOptions } from "@modelcontextprotocol/sdk/shared/protocol.js";
2
+ import type { ElicitRequestParams, ElicitResult } from "@modelcontextprotocol/sdk/types.js";
3
+ import type { DirectBrokerElicitationRequest, DirectBrokerElicitationResponse } from "./direct-broker.ts";
4
+ export interface McpElicitationClient {
5
+ elicitInput(params: ElicitRequestParams, options?: RequestOptions): Promise<ElicitResult>;
6
+ }
7
+ /** Forward a signed app-server elicitation over standard MCP without changing its meaning. */
8
+ export declare function forwardOfficialElicitationToMcpClient(client: McpElicitationClient, request: DirectBrokerElicitationRequest, signal?: AbortSignal): Promise<DirectBrokerElicitationResponse>;
@@ -0,0 +1,47 @@
1
+ function isRecord(value) {
2
+ return Boolean(value) && typeof value === "object" && !Array.isArray(value);
3
+ }
4
+ /** Forward a signed app-server elicitation over standard MCP without changing its meaning. */
5
+ export async function forwardOfficialElicitationToMcpClient(client, request, signal) {
6
+ let params;
7
+ if (request.mode === "url") {
8
+ if (typeof request.message !== "string"
9
+ || typeof request.url !== "string"
10
+ || typeof request.elicitationId !== "string")
11
+ return { action: "cancel" };
12
+ params = {
13
+ mode: "url",
14
+ message: request.message,
15
+ url: request.url,
16
+ elicitationId: request.elicitationId,
17
+ ...(isRecord(request._meta) ? { _meta: request._meta } : {}),
18
+ };
19
+ }
20
+ else if (request.mode === undefined || request.mode === "form") {
21
+ if (typeof request.message !== "string" || !isRecord(request.requestedSchema))
22
+ return { action: "cancel" };
23
+ params = {
24
+ mode: "form",
25
+ message: request.message,
26
+ requestedSchema: request.requestedSchema,
27
+ ...(isRecord(request._meta) ? { _meta: request._meta } : {}),
28
+ };
29
+ }
30
+ else {
31
+ // OpenAI's richer openai/form mode is advertised only by clients that can render it.
32
+ return { action: "cancel" };
33
+ }
34
+ try {
35
+ const response = await client.elicitInput(params, signal ? { signal } : undefined);
36
+ return {
37
+ action: response.action,
38
+ ...(response.content !== undefined ? { content: response.content } : {}),
39
+ ...(isRecord(response._meta) ? { _meta: response._meta } : {}),
40
+ };
41
+ }
42
+ catch {
43
+ // This is the MCP headless/unsupported-client outcome, not a fabricated decline.
44
+ return { action: "cancel" };
45
+ }
46
+ }
47
+ //# sourceMappingURL=mcp-elicitation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-elicitation.js","sourceRoot":"","sources":["../src/mcp-elicitation.ts"],"names":[],"mappings":"AAWA,SAAS,QAAQ,CAAC,KAAc;IAC/B,OAAO,OAAO,CAAC,KAAK,CAAC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC7E,CAAC;AAED,8FAA8F;AAC9F,MAAM,CAAC,KAAK,UAAU,qCAAqC,CAC1D,MAA4B,EAC5B,OAAuC,EACvC,MAAoB;IAEpB,IAAI,MAA2B,CAAC;IAChC,IAAI,OAAO,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;QAC5B,IACC,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ;eAChC,OAAO,OAAO,CAAC,GAAG,KAAK,QAAQ;eAC/B,OAAO,OAAO,CAAC,aAAa,KAAK,QAAQ;YAC3C,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;QAC9B,MAAM,GAAG;YACR,IAAI,EAAE,KAAK;YACX,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,aAAa,EAAE,OAAO,CAAC,aAAa;YACpC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC5D,CAAC;IACH,CAAC;SAAM,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QAClE,IAAI,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,eAAe,CAAC;YAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;QAC3G,MAAM,GAAG;YACR,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,eAAe,EAAE,OAAO,CAAC,eAAe;YACxC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACrC,CAAC;IAC1B,CAAC;SAAM,CAAC;QACP,qFAAqF;QACrF,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;IAC7B,CAAC;IAED,IAAI,CAAC;QACJ,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QACnF,OAAO;YACN,MAAM,EAAE,QAAQ,CAAC,MAAM;YACvB,GAAG,CAAC,QAAQ,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACxE,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC9D,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACR,iFAAiF;QACjF,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;IAC7B,CAAC;AACF,CAAC"}