mstro-app 0.5.5 → 0.5.6

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 (70) hide show
  1. package/dist/server/cli/headless/claude-invoker-process.d.ts.map +1 -1
  2. package/dist/server/cli/headless/claude-invoker-process.js +9 -1
  3. package/dist/server/cli/headless/claude-invoker-process.js.map +1 -1
  4. package/dist/server/cli/headless/mcp-config.d.ts +22 -5
  5. package/dist/server/cli/headless/mcp-config.d.ts.map +1 -1
  6. package/dist/server/cli/headless/mcp-config.js +7 -5
  7. package/dist/server/cli/headless/mcp-config.js.map +1 -1
  8. package/dist/server/cli/headless/runner.d.ts.map +1 -1
  9. package/dist/server/cli/headless/runner.js +19 -0
  10. package/dist/server/cli/headless/runner.js.map +1 -1
  11. package/dist/server/cli/headless/types.d.ts +16 -1
  12. package/dist/server/cli/headless/types.d.ts.map +1 -1
  13. package/dist/server/cli/improvisation-session-manager.d.ts +6 -0
  14. package/dist/server/cli/improvisation-session-manager.d.ts.map +1 -1
  15. package/dist/server/cli/improvisation-session-manager.js +8 -0
  16. package/dist/server/cli/improvisation-session-manager.js.map +1 -1
  17. package/dist/server/cli/improvisation-types.d.ts +7 -0
  18. package/dist/server/cli/improvisation-types.d.ts.map +1 -1
  19. package/dist/server/cli/improvisation-types.js.map +1 -1
  20. package/dist/server/cli/retry/retry-runner-factory.d.ts.map +1 -1
  21. package/dist/server/cli/retry/retry-runner-factory.js +1 -0
  22. package/dist/server/cli/retry/retry-runner-factory.js.map +1 -1
  23. package/dist/server/index.js +8 -1
  24. package/dist/server/index.js.map +1 -1
  25. package/dist/server/mcp/server.js +52 -0
  26. package/dist/server/mcp/server.js.map +1 -1
  27. package/dist/server/routes/index.d.ts +1 -0
  28. package/dist/server/routes/index.d.ts.map +1 -1
  29. package/dist/server/routes/index.js +1 -0
  30. package/dist/server/routes/index.js.map +1 -1
  31. package/dist/server/routes/internal.d.ts +16 -0
  32. package/dist/server/routes/internal.d.ts.map +1 -0
  33. package/dist/server/routes/internal.js +94 -0
  34. package/dist/server/routes/internal.js.map +1 -0
  35. package/dist/server/services/runtime-info.d.ts +3 -0
  36. package/dist/server/services/runtime-info.d.ts.map +1 -0
  37. package/dist/server/services/runtime-info.js +21 -0
  38. package/dist/server/services/runtime-info.js.map +1 -0
  39. package/dist/server/services/websocket/ask-user-question-bridge.d.ts +32 -0
  40. package/dist/server/services/websocket/ask-user-question-bridge.d.ts.map +1 -0
  41. package/dist/server/services/websocket/ask-user-question-bridge.js +115 -0
  42. package/dist/server/services/websocket/ask-user-question-bridge.js.map +1 -0
  43. package/dist/server/services/websocket/handler.d.ts +8 -0
  44. package/dist/server/services/websocket/handler.d.ts.map +1 -1
  45. package/dist/server/services/websocket/handler.js +30 -0
  46. package/dist/server/services/websocket/handler.js.map +1 -1
  47. package/dist/server/services/websocket/session-handlers.d.ts.map +1 -1
  48. package/dist/server/services/websocket/session-handlers.js +3 -0
  49. package/dist/server/services/websocket/session-handlers.js.map +1 -1
  50. package/dist/server/services/websocket/types.d.ts +39 -2
  51. package/dist/server/services/websocket/types.d.ts.map +1 -1
  52. package/dist/server/services/websocket/types.js +2 -2
  53. package/dist/server/services/websocket/types.js.map +1 -1
  54. package/package.json +1 -1
  55. package/server/cli/headless/claude-invoker-process.ts +9 -1
  56. package/server/cli/headless/mcp-config.ts +30 -5
  57. package/server/cli/headless/runner.ts +21 -0
  58. package/server/cli/headless/types.ts +16 -1
  59. package/server/cli/improvisation-session-manager.ts +9 -0
  60. package/server/cli/improvisation-types.ts +7 -0
  61. package/server/cli/retry/retry-runner-factory.ts +1 -0
  62. package/server/index.ts +8 -0
  63. package/server/mcp/server.ts +57 -0
  64. package/server/routes/index.ts +1 -0
  65. package/server/routes/internal.ts +112 -0
  66. package/server/services/runtime-info.ts +24 -0
  67. package/server/services/websocket/ask-user-question-bridge.ts +148 -0
  68. package/server/services/websocket/handler.ts +30 -0
  69. package/server/services/websocket/session-handlers.ts +3 -0
  70. package/server/services/websocket/types.ts +48 -2
@@ -51,6 +51,47 @@ server.setRequestHandler(ListToolsRequestSchema, async () => {
51
51
  ],
52
52
  };
53
53
  });
54
+ /**
55
+ * Bridge AskUserQuestion to the running CLI server. Claude pauses on this
56
+ * tool until we return; the CLI server pushes the questions to the web UI
57
+ * via WebSocket, awaits the user's answers, and returns them here.
58
+ *
59
+ * On any failure (server unreachable, timeout, no tab routing context) we
60
+ * return `behavior: allow` with the input unchanged. Claude treats it as
61
+ * "no answers" and proceeds with its own guesses — same fallback as before
62
+ * we had this integration. Better than blocking the run.
63
+ */
64
+ async function bridgeAskUserQuestion(input) {
65
+ const port = process.env.MSTRO_PORT;
66
+ const tabId = process.env.MSTRO_TAB_ID;
67
+ const secret = process.env.MSTRO_BOUNCER_SECRET;
68
+ const toolUseId = process.env.MSTRO_CURRENT_TOOL_USE_ID || `aq-${Date.now()}-${Math.random().toString(36).slice(2, 10)}`;
69
+ if (!port || !tabId || !secret) {
70
+ console.error('[MCP Bouncer] AskUserQuestion: missing routing context (port/tabId/secret) — passing through with no answers');
71
+ return { behavior: 'allow', updatedInput: input };
72
+ }
73
+ try {
74
+ const res = await fetch(`http://127.0.0.1:${port}/internal/ask-user-question`, {
75
+ method: 'POST',
76
+ headers: { 'content-type': 'application/json', 'x-mstro-bouncer-secret': secret },
77
+ body: JSON.stringify({ toolUseId, tabId, questions: input.questions }),
78
+ });
79
+ if (!res.ok) {
80
+ console.error(`[MCP Bouncer] AskUserQuestion bridge returned ${res.status} — passing through with no answers`);
81
+ return { behavior: 'allow', updatedInput: input };
82
+ }
83
+ const json = (await res.json());
84
+ const answers = json.answers && typeof json.answers === 'object' ? json.answers : {};
85
+ return {
86
+ behavior: 'allow',
87
+ updatedInput: { questions: input.questions, answers },
88
+ };
89
+ }
90
+ catch (err) {
91
+ console.error(`[MCP Bouncer] AskUserQuestion bridge failed: ${err instanceof Error ? err.message : String(err)} — passing through with no answers`);
92
+ return { behavior: 'allow', updatedInput: input };
93
+ }
94
+ }
54
95
  /**
55
96
  * Handle tool calls (approval_prompt)
56
97
  */
@@ -59,6 +100,17 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
59
100
  throw new Error(`Unknown tool: ${request.params.name}`);
60
101
  }
61
102
  const { tool_name, input } = request.params.arguments;
103
+ // AskUserQuestion is a clarifying-question tool — Claude needs the user's
104
+ // answers in `updatedInput.answers`, not a yes/no permission decision. Skip
105
+ // the security review entirely (the prior pattern fast-path also auto-allowed
106
+ // this) and route to the web UI bridge for real interactive answering.
107
+ if (tool_name === 'AskUserQuestion') {
108
+ console.error('[MCP Bouncer] AskUserQuestion received — bridging to web UI');
109
+ const response = await bridgeAskUserQuestion(input);
110
+ return {
111
+ content: [{ type: 'text', text: JSON.stringify(response) }],
112
+ };
113
+ }
62
114
  console.error(`[MCP Bouncer] Analyzing ${tool_name} request...`);
63
115
  // Format operation string for bouncer analysis
64
116
  // Example: "Bash: rm -rf node_modules"
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../../../server/mcp/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../../server/mcp/server.ts"],"names":[],"mappings":"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"}
@@ -6,5 +6,6 @@
6
6
  export { createFileRoutes } from './files.js';
7
7
  export { createImproviseRoutes } from './improvise.js';
8
8
  export { createInstanceRoutes, createShutdownRoute } from './instances.js';
9
+ export { createInternalRoutes } from './internal.js';
9
10
  export { createNotificationRoutes } from './notifications.js';
10
11
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../server/routes/index.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAC7C,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAA;AACtD,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAA;AAC1E,OAAO,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../server/routes/index.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAC7C,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAA;AACtD,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAA;AAC1E,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAA;AACpD,OAAO,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAA"}
@@ -7,5 +7,6 @@
7
7
  export { createFileRoutes } from './files.js';
8
8
  export { createImproviseRoutes } from './improvise.js';
9
9
  export { createInstanceRoutes, createShutdownRoute } from './instances.js';
10
+ export { createInternalRoutes } from './internal.js';
10
11
  export { createNotificationRoutes } from './notifications.js';
11
12
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../server/routes/index.ts"],"names":[],"mappings":"AAAA,8DAA8D;AAE9D;;;;GAIG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAC7C,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAA;AACtD,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAA;AAC1E,OAAO,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../server/routes/index.ts"],"names":[],"mappings":"AAAA,8DAA8D;AAE9D;;;;GAIG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAC7C,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAA;AACtD,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAA;AAC1E,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAA;AACpD,OAAO,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAA"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Internal Routes
3
+ *
4
+ * HTTP endpoints used by sibling subprocesses (like the MCP bouncer) to talk
5
+ * back to the running CLI server. NOT mounted under `/api/*` — these are gated
6
+ * by the per-process bouncer secret instead of the user's session token.
7
+ *
8
+ * Currently a single endpoint:
9
+ * POST /internal/ask-user-question
10
+ * Bouncer pauses Claude on AskUserQuestion; this blocks until the web
11
+ * user answers, then returns the answers Claude needs to continue.
12
+ */
13
+ import { Hono } from 'hono';
14
+ import type { HandlerContext } from '../services/websocket/handler-context.js';
15
+ export declare function createInternalRoutes(ctx: HandlerContext): Hono;
16
+ //# sourceMappingURL=internal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"internal.d.ts","sourceRoot":"","sources":["../../../server/routes/internal.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAK3B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0CAA0C,CAAA;AA6C9E,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,cAAc,GAAG,IAAI,CA8C9D"}
@@ -0,0 +1,94 @@
1
+ // Copyright (c) 2025-present Mstro, Inc. All rights reserved.
2
+ /**
3
+ * Internal Routes
4
+ *
5
+ * HTTP endpoints used by sibling subprocesses (like the MCP bouncer) to talk
6
+ * back to the running CLI server. NOT mounted under `/api/*` — these are gated
7
+ * by the per-process bouncer secret instead of the user's session token.
8
+ *
9
+ * Currently a single endpoint:
10
+ * POST /internal/ask-user-question
11
+ * Bouncer pauses Claude on AskUserQuestion; this blocks until the web
12
+ * user answers, then returns the answers Claude needs to continue.
13
+ */
14
+ import { Hono } from 'hono';
15
+ import { isValidBouncerSecret, registerPendingQuestion, } from '../services/websocket/ask-user-question-bridge.js';
16
+ import { broadcastTabEvent } from '../services/websocket/tab-broadcast.js';
17
+ /** Narrow an unknown into AskUserQuestionItem[] without throwing. */
18
+ function parseQuestions(value) {
19
+ if (!Array.isArray(value))
20
+ return null;
21
+ const out = [];
22
+ for (const raw of value) {
23
+ if (!raw || typeof raw !== 'object')
24
+ return null;
25
+ const r = raw;
26
+ if (typeof r.question !== 'string' || typeof r.header !== 'string')
27
+ return null;
28
+ if (!Array.isArray(r.options))
29
+ return null;
30
+ const options = r.options.map((o) => {
31
+ if (!o || typeof o !== 'object')
32
+ return null;
33
+ const oo = o;
34
+ if (typeof oo.label !== 'string')
35
+ return null;
36
+ return {
37
+ label: oo.label,
38
+ description: typeof oo.description === 'string' ? oo.description : '',
39
+ preview: typeof oo.preview === 'string' ? oo.preview : undefined,
40
+ };
41
+ });
42
+ if (options.some((o) => o === null))
43
+ return null;
44
+ out.push({
45
+ question: r.question,
46
+ header: r.header,
47
+ options: options,
48
+ multiSelect: r.multiSelect === true,
49
+ });
50
+ }
51
+ return out;
52
+ }
53
+ export function createInternalRoutes(ctx) {
54
+ const app = new Hono();
55
+ app.post('/ask-user-question', async (c) => {
56
+ const secret = c.req.header('x-mstro-bouncer-secret');
57
+ if (!isValidBouncerSecret(secret)) {
58
+ return c.json({ error: 'Forbidden' }, 403);
59
+ }
60
+ let body;
61
+ try {
62
+ body = (await c.req.json());
63
+ }
64
+ catch {
65
+ return c.json({ error: 'Invalid JSON' }, 400);
66
+ }
67
+ const toolUseId = typeof body.toolUseId === 'string' ? body.toolUseId : '';
68
+ const tabId = typeof body.tabId === 'string' ? body.tabId : '';
69
+ const questions = parseQuestions(body.questions);
70
+ if (!toolUseId || !tabId || !questions || questions.length === 0) {
71
+ return c.json({ error: 'toolUseId, tabId, and non-empty questions[] are required' }, 400);
72
+ }
73
+ const timeoutMs = typeof body.timeoutMs === 'number' && body.timeoutMs > 0 ? body.timeoutMs : undefined;
74
+ const payload = { toolUseId, questions };
75
+ broadcastTabEvent(ctx, tabId, 'askUserQuestion', payload);
76
+ try {
77
+ const answers = await registerPendingQuestion({ toolUseId, tabId, timeoutMs });
78
+ return c.json({ answers });
79
+ }
80
+ catch (err) {
81
+ const reason = err instanceof Error ? err.message : 'cancelled';
82
+ // Tell every web client to dismiss the card so users don't keep poking
83
+ // an already-dead question.
84
+ broadcastTabEvent(ctx, tabId, 'askUserQuestionDismissed', {
85
+ toolUseId,
86
+ reason: reason === 'timeout' ? 'timeout' : 'cancelled',
87
+ });
88
+ const status = reason === 'timeout' ? 504 : 410;
89
+ return c.json({ error: reason }, status);
90
+ }
91
+ });
92
+ return app;
93
+ }
94
+ //# sourceMappingURL=internal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"internal.js","sourceRoot":"","sources":["../../../server/routes/internal.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export declare function setCurrentMstroPort(port: number): void;
2
+ export declare function getCurrentMstroPort(): number | undefined;
3
+ //# sourceMappingURL=runtime-info.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-info.d.ts","sourceRoot":"","sources":["../../../server/services/runtime-info.ts"],"names":[],"mappings":"AAiBA,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAEtD;AAED,wBAAgB,mBAAmB,IAAI,MAAM,GAAG,SAAS,CAExD"}
@@ -0,0 +1,21 @@
1
+ // Copyright (c) 2025-present Mstro, Inc. All rights reserved.
2
+ /**
3
+ * Runtime Info
4
+ *
5
+ * Holds process-wide singletons that are known after server startup but
6
+ * needed by code paths (e.g. the headless runner / MCP config generator)
7
+ * that don't have a natural reference to the Hono app or instance registry.
8
+ *
9
+ * Specifically: the port the CLI server is bound to. We need it so the MCP
10
+ * bouncer subprocess can call back into us via HTTP for AskUserQuestion.
11
+ *
12
+ * Set once at server startup (see `server/index.ts`).
13
+ */
14
+ let currentPort;
15
+ export function setCurrentMstroPort(port) {
16
+ currentPort = port;
17
+ }
18
+ export function getCurrentMstroPort() {
19
+ return currentPort;
20
+ }
21
+ //# sourceMappingURL=runtime-info.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-info.js","sourceRoot":"","sources":["../../../server/services/runtime-info.ts"],"names":[],"mappings":"AAAA,8DAA8D;AAE9D;;;;;;;;;;;GAWG;AAEH,IAAI,WAA+B,CAAC;AAEpC,MAAM,UAAU,mBAAmB,CAAC,IAAY;IAC9C,WAAW,GAAG,IAAI,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,mBAAmB;IACjC,OAAO,WAAW,CAAC;AACrB,CAAC"}
@@ -0,0 +1,32 @@
1
+ /** Get the per-process bouncer secret (passed via env var to bouncer subprocesses). */
2
+ export declare function getBouncerSecret(): string;
3
+ /** Validate a secret claimed by an inbound /internal request. */
4
+ export declare function isValidBouncerSecret(secret: string | undefined | null): boolean;
5
+ export interface RegisterPendingQuestionOptions {
6
+ toolUseId: string;
7
+ tabId: string;
8
+ timeoutMs?: number;
9
+ }
10
+ /**
11
+ * Register a pending question. The returned promise resolves when
12
+ * `resolvePendingQuestion` is called for the same toolUseId, or rejects on
13
+ * timeout / cancellation.
14
+ */
15
+ export declare function registerPendingQuestion(opts: RegisterPendingQuestionOptions): Promise<Record<string, string>>;
16
+ /**
17
+ * Resolve a pending question with the user's answers. Returns true if a
18
+ * pending entry was found and resolved; false if there was no matching
19
+ * pending question (already answered, timed out, or unknown id).
20
+ */
21
+ export declare function resolvePendingQuestion(toolUseId: string, answers: Record<string, string>): boolean;
22
+ /**
23
+ * Cancel all pending questions for a given tab. Used when a tab is removed,
24
+ * a session is reset, or an orchestra disconnects. Returns the toolUseIds
25
+ * that were cancelled so callers can broadcast `askUserQuestionDismissed`.
26
+ */
27
+ export declare function cancelPendingQuestionsForTab(tabId: string, reason?: 'cancelled' | 'session-ended'): string[];
28
+ /** Look up the tab that owns a pending question, or undefined. */
29
+ export declare function getPendingQuestionTab(toolUseId: string): string | undefined;
30
+ /** Diagnostic: how many questions are currently waiting on user input. */
31
+ export declare function pendingQuestionCount(): number;
32
+ //# sourceMappingURL=ask-user-question-bridge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ask-user-question-bridge.d.ts","sourceRoot":"","sources":["../../../../server/services/websocket/ask-user-question-bridge.ts"],"names":[],"mappings":"AA+CA,uFAAuF;AACvF,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC;AAED,iEAAiE;AACjE,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,OAAO,CAG/E;AAED,MAAM,WAAW,8BAA8B;IAC7C,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,8BAA8B,GACnC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CA6BjC;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CACpC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC9B,OAAO,CAOT;AAED;;;;GAIG;AACH,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,MAAM,EACb,MAAM,GAAE,WAAW,GAAG,eAA6B,GAClD,MAAM,EAAE,CAUV;AAED,kEAAkE;AAClE,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAE3E;AAED,0EAA0E;AAC1E,wBAAgB,oBAAoB,IAAI,MAAM,CAE7C"}
@@ -0,0 +1,115 @@
1
+ // Copyright (c) 2025-present Mstro, Inc. All rights reserved.
2
+ /**
3
+ * AskUserQuestion Bridge
4
+ *
5
+ * Bridges the MCP bouncer subprocess (which receives Claude's AskUserQuestion
6
+ * tool calls) and the web client (which collects the user's answers).
7
+ *
8
+ * Flow:
9
+ * Claude → MCP bouncer (subprocess)
10
+ * → POST /internal/ask-user-question (this CLI server)
11
+ * → registerPendingQuestion() stores a resolver
12
+ * → broadcastTabEvent('askUserQuestion', …) pushes the question to web
13
+ * → web user answers → WS `askUserQuestionResponse`
14
+ * → resolvePendingQuestion() resolves the awaited promise
15
+ * → HTTP response to bouncer with answers
16
+ * → bouncer returns { behavior: "allow", updatedInput: { questions, answers } }
17
+ *
18
+ * Ownership of state: pending questions live only here, in-process. The
19
+ * registry is keyed by `toolUseId` (Claude's per-call id) which guarantees
20
+ * uniqueness across tabs and sessions.
21
+ *
22
+ * Timeouts: questions auto-reject after `DEFAULT_TIMEOUT_MS`. The bouncer's
23
+ * HTTP call gets a 504 and returns a deny to Claude rather than blocking the
24
+ * Claude turn forever.
25
+ */
26
+ import { randomUUID } from 'node:crypto';
27
+ /** Default per-question timeout (15 minutes). */
28
+ const DEFAULT_TIMEOUT_MS = 15 * 60 * 1000;
29
+ const pending = new Map();
30
+ /** Per-process secret the MCP bouncer must echo to authenticate.
31
+ * Generated once at server start, passed to bouncers via env var. */
32
+ const bouncerSharedSecret = randomUUID();
33
+ /** Get the per-process bouncer secret (passed via env var to bouncer subprocesses). */
34
+ export function getBouncerSecret() {
35
+ return bouncerSharedSecret;
36
+ }
37
+ /** Validate a secret claimed by an inbound /internal request. */
38
+ export function isValidBouncerSecret(secret) {
39
+ if (!secret)
40
+ return false;
41
+ return secret === bouncerSharedSecret;
42
+ }
43
+ /**
44
+ * Register a pending question. The returned promise resolves when
45
+ * `resolvePendingQuestion` is called for the same toolUseId, or rejects on
46
+ * timeout / cancellation.
47
+ */
48
+ export function registerPendingQuestion(opts) {
49
+ const { toolUseId, tabId, timeoutMs = DEFAULT_TIMEOUT_MS } = opts;
50
+ // Defensive: reject any prior pending entry for this id (shouldn't happen
51
+ // but a process restart or duplicate POST shouldn't leak handlers).
52
+ const existing = pending.get(toolUseId);
53
+ if (existing) {
54
+ clearTimeout(existing.timer);
55
+ existing.reject('cancelled');
56
+ pending.delete(toolUseId);
57
+ }
58
+ return new Promise((resolve, reject) => {
59
+ const timer = setTimeout(() => {
60
+ const entry = pending.get(toolUseId);
61
+ if (!entry)
62
+ return;
63
+ pending.delete(toolUseId);
64
+ entry.reject('timeout');
65
+ }, timeoutMs);
66
+ pending.set(toolUseId, {
67
+ toolUseId,
68
+ tabId,
69
+ resolve,
70
+ reject: (reason) => reject(new Error(reason)),
71
+ timer,
72
+ createdAt: Date.now(),
73
+ });
74
+ });
75
+ }
76
+ /**
77
+ * Resolve a pending question with the user's answers. Returns true if a
78
+ * pending entry was found and resolved; false if there was no matching
79
+ * pending question (already answered, timed out, or unknown id).
80
+ */
81
+ export function resolvePendingQuestion(toolUseId, answers) {
82
+ const entry = pending.get(toolUseId);
83
+ if (!entry)
84
+ return false;
85
+ pending.delete(toolUseId);
86
+ clearTimeout(entry.timer);
87
+ entry.resolve(answers);
88
+ return true;
89
+ }
90
+ /**
91
+ * Cancel all pending questions for a given tab. Used when a tab is removed,
92
+ * a session is reset, or an orchestra disconnects. Returns the toolUseIds
93
+ * that were cancelled so callers can broadcast `askUserQuestionDismissed`.
94
+ */
95
+ export function cancelPendingQuestionsForTab(tabId, reason = 'cancelled') {
96
+ const cancelled = [];
97
+ for (const [id, entry] of pending) {
98
+ if (entry.tabId !== tabId)
99
+ continue;
100
+ pending.delete(id);
101
+ clearTimeout(entry.timer);
102
+ entry.reject(reason);
103
+ cancelled.push(id);
104
+ }
105
+ return cancelled;
106
+ }
107
+ /** Look up the tab that owns a pending question, or undefined. */
108
+ export function getPendingQuestionTab(toolUseId) {
109
+ return pending.get(toolUseId)?.tabId;
110
+ }
111
+ /** Diagnostic: how many questions are currently waiting on user input. */
112
+ export function pendingQuestionCount() {
113
+ return pending.size;
114
+ }
115
+ //# sourceMappingURL=ask-user-question-bridge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ask-user-question-bridge.js","sourceRoot":"","sources":["../../../../server/services/websocket/ask-user-question-bridge.ts"],"names":[],"mappings":"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"}
@@ -59,6 +59,14 @@ export declare class WebSocketImproviseHandler implements HandlerContext {
59
59
  broadcastToOthers(sender: WSContext, response: WebSocketResponse): void;
60
60
  broadcastToAll(response: WebSocketResponse): void;
61
61
  cleanupSession(sessionId: string): void;
62
+ /**
63
+ * Resolve a pending AskUserQuestion call with the user's answers. The
64
+ * bouncer subprocess is awaiting on the bridge promise; calling
65
+ * `resolvePendingQuestion` releases it so Claude resumes with the answers.
66
+ * Stale toolUseIds are no-ops — likely the question already timed out or
67
+ * was cancelled, and a stale web client is replaying its submission.
68
+ */
69
+ private handleAskUserQuestionResponse;
62
70
  /**
63
71
  * Handle a `shutdownInstance` control message from a web client.
64
72
  *
@@ -1 +1 @@
1
- {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../../server/services/websocket/handler.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAIvD,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,4CAA4C,CAAC;AAC9F,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAGxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAEjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAE7D,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1E,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAInD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAGxD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAG/D,OAAO,KAAK,EAAkC,iBAAiB,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE/F,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAEvE,qBAAa,yBAA0B,YAAW,cAAc;IAC9D,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,2BAA2B,CAAC,CAAa;IAC/D,WAAW,EAAE,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAa;IAC7D,mBAAmB,EAAE,mBAAmB,CAAC;IACzC,OAAO,CAAC,YAAY,CAAS;IAC7B,aAAa,EAAE,aAAa,GAAG,IAAI,CAAQ;IAC3C,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAa;IAChD,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAa;IAC7C,OAAO,CAAC,eAAe,CAAgC;IACvD,cAAc,EAAE,GAAG,CAAC,SAAS,CAAC,CAAa;IAC3C,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAa;IACtD,wBAAwB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC,CAAa;IAC9D,mBAAmB,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC,CAAa;IAC7D,iBAAiB,EAAE,iBAAiB,GAAG,IAAI,CAAQ;IACnD,mBAAmB,EAAE,mBAAmB,GAAG,IAAI,CAAQ;IACvD,cAAc,EAAE,cAAc,GAAG,IAAI,CAAQ;IAC7C,aAAa,EAAE,aAAa,GAAG,IAAI,CAAQ;IAC3C,eAAe,EAAE,sBAAsB,CAAgC;IACvE,YAAY,EAAE,YAAY,CAAsB;IAChD,OAAO,CAAC,gBAAgB,CAA0B;IAClD,OAAO,CAAC,kBAAkB,CAAS;gBAEvB,gBAAgB,GAAE,gBAAgB,GAAG,IAAW;IAa5D,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,eAAe;IAOhD,gBAAgB,CAAC,QAAQ,EAAE,aAAa,GAAG,IAAI;IAI/C,OAAO,CAAC,gBAAgB;IAYxB,OAAO,CAAC,gBAAgB;IAYxB,OAAO,CAAC,iBAAiB,CAA8C;IAEvE,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAU3C,gBAAgB,CAAC,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI;IAcnD,aAAa,CACjB,EAAE,EAAE,SAAS,EACb,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC;IAkBhB,kGAAkG;IAClG,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAqB9B;YAEY,eAAe;IAqE7B,OAAO,CAAC,yBAAyB;IAiBjC,OAAO,CAAC,uBAAuB;IAuB/B,WAAW,CAAC,EAAE,EAAE,SAAS,GAAG,IAAI;IAoDhC,OAAO,CAAC,0BAA0B;IAyBlC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,iBAAiB,GAAG,IAAI;IAQtD,iBAAiB,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,iBAAiB,GAAG,IAAI;IAQvE,cAAc,CAAC,QAAQ,EAAE,iBAAiB,GAAG,IAAI;IAMjD,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAIvC;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,sBAAsB;CAoC/B"}
1
+ {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../../server/services/websocket/handler.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,7 @@ import { homedir } from 'node:os';
4
4
  import { dirname, join } from 'node:path';
5
5
  import { captureException } from '../sentry.js';
6
6
  import { getPTYManager } from '../terminal/pty-manager.js';
7
+ import { resolvePendingQuestion } from './ask-user-question-bridge.js';
7
8
  import { AutocompleteService } from './autocomplete.js';
8
9
  import { FileDownloadHandler } from './file-download-handler.js';
9
10
  import { handleFileExplorerMessage, handleFileMessage } from './file-explorer-handlers.js';
@@ -191,6 +192,10 @@ export class WebSocketImproviseHandler {
191
192
  return handleListSkills(this, ws, workingDir);
192
193
  case 'shutdownInstance':
193
194
  return this.handleShutdownInstance(ws, permission);
195
+ case 'askUserQuestionResponse':
196
+ if (permission === 'view')
197
+ return;
198
+ return this.handleAskUserQuestionResponse(msg, tabId);
194
199
  }
195
200
  // Dispatch table lookup for domain handlers
196
201
  const domain = WebSocketImproviseHandler.DISPATCH[msg.type];
@@ -355,6 +360,31 @@ export class WebSocketImproviseHandler {
355
360
  cleanupSession(sessionId) {
356
361
  this.sessions.delete(sessionId);
357
362
  }
363
+ /**
364
+ * Resolve a pending AskUserQuestion call with the user's answers. The
365
+ * bouncer subprocess is awaiting on the bridge promise; calling
366
+ * `resolvePendingQuestion` releases it so Claude resumes with the answers.
367
+ * Stale toolUseIds are no-ops — likely the question already timed out or
368
+ * was cancelled, and a stale web client is replaying its submission.
369
+ */
370
+ handleAskUserQuestionResponse(msg, tabId) {
371
+ const data = msg.data;
372
+ const toolUseId = typeof data?.toolUseId === 'string' ? data.toolUseId : '';
373
+ const answersIn = data?.answers;
374
+ if (!toolUseId)
375
+ return;
376
+ // Only accept a flat string-string map; coerce safely so a malformed
377
+ // payload doesn't crash the bridge.
378
+ const answers = {};
379
+ if (answersIn && typeof answersIn === 'object' && !Array.isArray(answersIn)) {
380
+ for (const [k, v] of Object.entries(answersIn)) {
381
+ if (typeof v === 'string')
382
+ answers[k] = v;
383
+ }
384
+ }
385
+ void tabId; // tabId is informational; the toolUseId is the unique key
386
+ resolvePendingQuestion(toolUseId, answers);
387
+ }
358
388
  /**
359
389
  * Handle a `shutdownInstance` control message from a web client.
360
390
  *
@@ -1 +1 @@
1
- {"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../../server/services/websocket/handler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../../server/services/websocket/handler.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"session-handlers.d.ts","sourceRoot":"","sources":["../../../../server/services/websocket/session-handlers.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,cAAc,EAAE,2BAA2B,EAAE,MAAM,4CAA4C,CAAC;AAE9G,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAG7D,OAAO,EAAE,KAAK,QAAQ,EAAqB,KAAK,gBAAgB,EAAE,KAAK,SAAS,EAAE,MAAM,YAAY,CAAC;AAgCrG,6FAA6F;AAC7F,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,2BAA2B,GAAG,SAAS,GAAG,QAAQ,CAElG;AAGD,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AAgFrF;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,cAAc,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG,2BAA2B,GAAG,IAAI,CAwCvH;AAkBD,iFAAiF;AACjF,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,cAAc,EAAE,QAAQ,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAM/G;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,2BAA2B,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CASvG;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,cAAc,EAAE,OAAO,EAAE,2BAA2B,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAkEpI;AAED,iFAAiF;AACjF,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,EAAE,iBAAiB,CAAC,EAAE,cAAc,EAAE,GAAG,cAAc,EAAE,GAAG,SAAS,CAoBlJ;AA8FD,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,cAAc,EAAE,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAmCxI"}
1
+ {"version":3,"file":"session-handlers.d.ts","sourceRoot":"","sources":["../../../../server/services/websocket/session-handlers.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,cAAc,EAAE,2BAA2B,EAAE,MAAM,4CAA4C,CAAC;AAE9G,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAG7D,OAAO,EAAE,KAAK,QAAQ,EAAqB,KAAK,gBAAgB,EAAE,KAAK,SAAS,EAAE,MAAM,YAAY,CAAC;AAgCrG,6FAA6F;AAC7F,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,2BAA2B,GAAG,SAAS,GAAG,QAAQ,CAElG;AAGD,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AAgFrF;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,cAAc,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG,2BAA2B,GAAG,IAAI,CAwCvH;AAkBD,iFAAiF;AACjF,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,cAAc,EAAE,QAAQ,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAM/G;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,2BAA2B,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CASvG;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,cAAc,EAAE,OAAO,EAAE,2BAA2B,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAqEpI;AAED,iFAAiF;AACjF,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,EAAE,iBAAiB,CAAC,EAAE,cAAc,EAAE,GAAG,cAAc,EAAE,GAAG,SAAS,CAoBlJ;AA8FD,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,cAAc,EAAE,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAmCxI"}
@@ -223,6 +223,9 @@ export function buildOutputHistory(session) {
223
223
  */
224
224
  export function setupSessionListeners(ctx, session, _ws, tabId) {
225
225
  session.removeAllListeners();
226
+ // Bind tabId before listeners — the headless runner reads it at executePrompt
227
+ // time to wire AskUserQuestion routing back to this tab's web clients.
228
+ session.setTabId(tabId);
226
229
  const engine = resolveEngineForSession(session);
227
230
  session.on('onHistoryPersisted', () => {
228
231
  const registry = ctx.getRegistry('');