@superblocksteam/vite-plugin-file-sync 2.0.155 → 2.0.156-next.1

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 (177) hide show
  1. package/dist/ai-service/agent/prompts/build-base-system-prompt.d.ts +9 -2
  2. package/dist/ai-service/agent/prompts/build-base-system-prompt.d.ts.map +1 -1
  3. package/dist/ai-service/agent/prompts/build-base-system-prompt.js +34 -6
  4. package/dist/ai-service/agent/prompts/build-base-system-prompt.js.map +1 -1
  5. package/dist/ai-service/agent/prompts/build-security-scan-prompt.d.ts +2 -1
  6. package/dist/ai-service/agent/prompts/build-security-scan-prompt.d.ts.map +1 -1
  7. package/dist/ai-service/agent/prompts/build-security-scan-prompt.js +52 -9
  8. package/dist/ai-service/agent/prompts/build-security-scan-prompt.js.map +1 -1
  9. package/dist/ai-service/agent/tool-permission-delivery-metrics.d.ts +3 -0
  10. package/dist/ai-service/agent/tool-permission-delivery-metrics.d.ts.map +1 -0
  11. package/dist/ai-service/agent/tool-permission-delivery-metrics.js +23 -0
  12. package/dist/ai-service/agent/tool-permission-delivery-metrics.js.map +1 -0
  13. package/dist/ai-service/agent/tool-permission-delivery.d.ts +25 -16
  14. package/dist/ai-service/agent/tool-permission-delivery.d.ts.map +1 -1
  15. package/dist/ai-service/agent/tool-permission-delivery.js +384 -38
  16. package/dist/ai-service/agent/tool-permission-delivery.js.map +1 -1
  17. package/dist/ai-service/agent/tools/apis/get-sdk-api-docs.d.ts +9 -35
  18. package/dist/ai-service/agent/tools/apis/get-sdk-api-docs.d.ts.map +1 -1
  19. package/dist/ai-service/agent/tools/apis/get-sdk-api-docs.js +71 -98
  20. package/dist/ai-service/agent/tools/apis/get-sdk-api-docs.js.map +1 -1
  21. package/dist/ai-service/agent/tools/apis/test-api.d.ts.map +1 -1
  22. package/dist/ai-service/agent/tools/apis/test-api.js +3 -2
  23. package/dist/ai-service/agent/tools/apis/test-api.js.map +1 -1
  24. package/dist/ai-service/agent/tools/app-environment/update-app-environment.d.ts +1 -1
  25. package/dist/ai-service/agent/tools/app-environment/update-app-environment.d.ts.map +1 -1
  26. package/dist/ai-service/agent/tools/app-environment/update-app-environment.js +13 -1
  27. package/dist/ai-service/agent/tools/app-environment/update-app-environment.js.map +1 -1
  28. package/dist/ai-service/agent/tools/build-capture-screenshot.d.ts.map +1 -1
  29. package/dist/ai-service/agent/tools/build-capture-screenshot.js +8 -3
  30. package/dist/ai-service/agent/tools/build-capture-screenshot.js.map +1 -1
  31. package/dist/ai-service/agent/tools/build-navigate-preview.d.ts.map +1 -1
  32. package/dist/ai-service/agent/tools/build-navigate-preview.js +4 -2
  33. package/dist/ai-service/agent/tools/build-navigate-preview.js.map +1 -1
  34. package/dist/ai-service/agent/tools/build-reload-file.d.ts.map +1 -1
  35. package/dist/ai-service/agent/tools/build-reload-file.js +4 -2
  36. package/dist/ai-service/agent/tools/build-reload-file.js.map +1 -1
  37. package/dist/ai-service/agent/tools/get-logs.d.ts +2 -2
  38. package/dist/ai-service/agent/tools/integrations/delete-integration.d.ts.map +1 -1
  39. package/dist/ai-service/agent/tools/integrations/delete-integration.js +6 -3
  40. package/dist/ai-service/agent/tools/integrations/delete-integration.js.map +1 -1
  41. package/dist/ai-service/agent/tools/integrations/execute-request.d.ts +13 -13
  42. package/dist/ai-service/agent/tools/integrations/integration-setup.d.ts +18 -6
  43. package/dist/ai-service/agent/tools/integrations/integration-setup.d.ts.map +1 -1
  44. package/dist/ai-service/agent/tools/integrations/integration-setup.js +41 -15
  45. package/dist/ai-service/agent/tools/integrations/integration-setup.js.map +1 -1
  46. package/dist/ai-service/agent/tools/integrations/internal.d.ts.map +1 -1
  47. package/dist/ai-service/agent/tools/integrations/internal.js +4 -2
  48. package/dist/ai-service/agent/tools/integrations/internal.js.map +1 -1
  49. package/dist/ai-service/agent/tools/report-security-findings.d.ts +23 -23
  50. package/dist/ai-service/agent/tools.d.ts +4 -2
  51. package/dist/ai-service/agent/tools.d.ts.map +1 -1
  52. package/dist/ai-service/agent/tools.js +21 -14
  53. package/dist/ai-service/agent/tools.js.map +1 -1
  54. package/dist/ai-service/agent/tools2/tools/git.d.ts +2 -2
  55. package/dist/ai-service/index.d.ts +26 -25
  56. package/dist/ai-service/index.d.ts.map +1 -1
  57. package/dist/ai-service/index.js +340 -121
  58. package/dist/ai-service/index.js.map +1 -1
  59. package/dist/ai-service/integrations/store.d.ts +2 -1
  60. package/dist/ai-service/integrations/store.d.ts.map +1 -1
  61. package/dist/ai-service/integrations/store.js +3 -2
  62. package/dist/ai-service/integrations/store.js.map +1 -1
  63. package/dist/ai-service/judge/tools/playwright-action.d.ts +1 -1
  64. package/dist/ai-service/judge/tools/submit-feedback.d.ts +1 -1
  65. package/dist/ai-service/llm/client.d.ts +9 -3
  66. package/dist/ai-service/llm/client.d.ts.map +1 -1
  67. package/dist/ai-service/llm/client.js +10 -3
  68. package/dist/ai-service/llm/client.js.map +1 -1
  69. package/dist/ai-service/llm/context-v2/context-metrics.d.ts.map +1 -1
  70. package/dist/ai-service/llm/context-v2/context-metrics.js +3 -0
  71. package/dist/ai-service/llm/context-v2/context-metrics.js.map +1 -1
  72. package/dist/ai-service/llm/stream/observers/llmobs.d.ts +6 -6
  73. package/dist/ai-service/llm/stream/observers/llmobs.d.ts.map +1 -1
  74. package/dist/ai-service/llm/stream/observers/llmobs.js +10 -9
  75. package/dist/ai-service/llm/stream/observers/llmobs.js.map +1 -1
  76. package/dist/ai-service/llm/stream/observers/step-token-usage.d.ts +15 -0
  77. package/dist/ai-service/llm/stream/observers/step-token-usage.d.ts.map +1 -0
  78. package/dist/ai-service/llm/stream/observers/step-token-usage.js +88 -0
  79. package/dist/ai-service/llm/stream/observers/step-token-usage.js.map +1 -0
  80. package/dist/ai-service/llm/stream/orchestrator.d.ts +4 -0
  81. package/dist/ai-service/llm/stream/orchestrator.d.ts.map +1 -1
  82. package/dist/ai-service/llm/stream/orchestrator.js +19 -41
  83. package/dist/ai-service/llm/stream/orchestrator.js.map +1 -1
  84. package/dist/ai-service/llm/stream/retry-engine.d.ts +1 -1
  85. package/dist/ai-service/llm/stream/retry-engine.d.ts.map +1 -1
  86. package/dist/ai-service/llm/stream/retry-engine.js +26 -1
  87. package/dist/ai-service/llm/stream/retry-engine.js.map +1 -1
  88. package/dist/ai-service/llm/stream/terminal-reason.d.ts +6 -0
  89. package/dist/ai-service/llm/stream/terminal-reason.d.ts.map +1 -0
  90. package/dist/ai-service/llm/stream/terminal-reason.js +73 -0
  91. package/dist/ai-service/llm/stream/terminal-reason.js.map +1 -0
  92. package/dist/ai-service/policy-agent-metrics.d.ts +10 -0
  93. package/dist/ai-service/policy-agent-metrics.d.ts.map +1 -1
  94. package/dist/ai-service/policy-agent-metrics.js +33 -0
  95. package/dist/ai-service/policy-agent-metrics.js.map +1 -1
  96. package/dist/ai-service/state-machine/clark-fsm.d.ts +29 -1
  97. package/dist/ai-service/state-machine/clark-fsm.d.ts.map +1 -1
  98. package/dist/ai-service/state-machine/clark-fsm.js +3 -1
  99. package/dist/ai-service/state-machine/clark-fsm.js.map +1 -1
  100. package/dist/ai-service/state-machine/handlers/agent-planning.d.ts.map +1 -1
  101. package/dist/ai-service/state-machine/handlers/agent-planning.js +7 -6
  102. package/dist/ai-service/state-machine/handlers/agent-planning.js.map +1 -1
  103. package/dist/ai-service/state-machine/handlers/llm-generating.d.ts.map +1 -1
  104. package/dist/ai-service/state-machine/handlers/llm-generating.js +18 -5
  105. package/dist/ai-service/state-machine/handlers/llm-generating.js.map +1 -1
  106. package/dist/ai-service/state-machine/helpers/fetch-with-reconnect-retry.d.ts.map +1 -1
  107. package/dist/ai-service/state-machine/helpers/fetch-with-reconnect-retry.js +8 -6
  108. package/dist/ai-service/state-machine/helpers/fetch-with-reconnect-retry.js.map +1 -1
  109. package/dist/ai-service/state-machine/helpers/policy-gate-usage-metrics.d.ts +0 -14
  110. package/dist/ai-service/state-machine/helpers/policy-gate-usage-metrics.d.ts.map +1 -1
  111. package/dist/ai-service/state-machine/helpers/policy-gate-usage-metrics.js +0 -36
  112. package/dist/ai-service/state-machine/helpers/policy-gate-usage-metrics.js.map +1 -1
  113. package/dist/ai-service/state-machine/helpers/pre-session-metrics.d.ts +2 -0
  114. package/dist/ai-service/state-machine/helpers/pre-session-metrics.d.ts.map +1 -1
  115. package/dist/ai-service/state-machine/helpers/pre-session-metrics.js +3 -0
  116. package/dist/ai-service/state-machine/helpers/pre-session-metrics.js.map +1 -1
  117. package/dist/ai-service/state-machine/helpers/prompt-degradation-metrics.d.ts +28 -0
  118. package/dist/ai-service/state-machine/helpers/prompt-degradation-metrics.d.ts.map +1 -0
  119. package/dist/ai-service/state-machine/helpers/prompt-degradation-metrics.js +254 -0
  120. package/dist/ai-service/state-machine/helpers/prompt-degradation-metrics.js.map +1 -0
  121. package/dist/ai-service/state-machine/helpers/prompt-request-metrics.d.ts +1 -0
  122. package/dist/ai-service/state-machine/helpers/prompt-request-metrics.d.ts.map +1 -1
  123. package/dist/ai-service/state-machine/helpers/prompt-request-metrics.js +60 -27
  124. package/dist/ai-service/state-machine/helpers/prompt-request-metrics.js.map +1 -1
  125. package/dist/ai-service/state-machine/helpers/stable-peer.d.ts +12 -1
  126. package/dist/ai-service/state-machine/helpers/stable-peer.d.ts.map +1 -1
  127. package/dist/ai-service/state-machine/helpers/stable-peer.js +42 -9
  128. package/dist/ai-service/state-machine/helpers/stable-peer.js.map +1 -1
  129. package/dist/ai-service/state-machine/mocks.d.ts.map +1 -1
  130. package/dist/ai-service/state-machine/mocks.js +6 -0
  131. package/dist/ai-service/state-machine/mocks.js.map +1 -1
  132. package/dist/ai-service/util/call-peer.d.ts +11 -0
  133. package/dist/ai-service/util/call-peer.d.ts.map +1 -0
  134. package/dist/ai-service/util/call-peer.js +47 -0
  135. package/dist/ai-service/util/call-peer.js.map +1 -0
  136. package/dist/ai-service/util/peer-liveness.d.ts +23 -0
  137. package/dist/ai-service/util/peer-liveness.d.ts.map +1 -0
  138. package/dist/ai-service/util/peer-liveness.js +42 -0
  139. package/dist/ai-service/util/peer-liveness.js.map +1 -0
  140. package/dist/ai-service/util/rpc-timeout.d.ts +12 -5
  141. package/dist/ai-service/util/rpc-timeout.d.ts.map +1 -1
  142. package/dist/ai-service/util/rpc-timeout.js +12 -5
  143. package/dist/ai-service/util/rpc-timeout.js.map +1 -1
  144. package/dist/file-sync-vite-plugin.d.ts.map +1 -1
  145. package/dist/file-sync-vite-plugin.js +8 -21
  146. package/dist/file-sync-vite-plugin.js.map +1 -1
  147. package/dist/lock-service/activity-tracker.d.ts +0 -5
  148. package/dist/lock-service/activity-tracker.d.ts.map +1 -1
  149. package/dist/lock-service/activity-tracker.js +0 -13
  150. package/dist/lock-service/activity-tracker.js.map +1 -1
  151. package/dist/lock-service/index.d.ts +308 -27
  152. package/dist/lock-service/index.d.ts.map +1 -1
  153. package/dist/lock-service/index.js +680 -156
  154. package/dist/lock-service/index.js.map +1 -1
  155. package/dist/policy-gate-callback-mapper.d.ts +3 -2
  156. package/dist/policy-gate-callback-mapper.d.ts.map +1 -1
  157. package/dist/policy-gate-callback-mapper.js.map +1 -1
  158. package/dist/policy-gate-runner.d.ts +4 -2
  159. package/dist/policy-gate-runner.d.ts.map +1 -1
  160. package/dist/policy-gate-runner.js +31 -8
  161. package/dist/policy-gate-runner.js.map +1 -1
  162. package/dist/scan-scope-merge.d.ts +16 -0
  163. package/dist/scan-scope-merge.d.ts.map +1 -0
  164. package/dist/scan-scope-merge.js +90 -0
  165. package/dist/scan-scope-merge.js.map +1 -0
  166. package/dist/socket-manager.d.ts +47 -6
  167. package/dist/socket-manager.d.ts.map +1 -1
  168. package/dist/socket-manager.js +283 -66
  169. package/dist/socket-manager.js.map +1 -1
  170. package/dist/sync-service/index.d.ts.map +1 -1
  171. package/dist/sync-service/index.js +3 -3
  172. package/dist/sync-service/index.js.map +1 -1
  173. package/dist/test-setup.d.ts +2 -0
  174. package/dist/test-setup.d.ts.map +1 -0
  175. package/dist/test-setup.js +21 -0
  176. package/dist/test-setup.js.map +1 -0
  177. package/package.json +8 -8
@@ -1,45 +1,344 @@
1
1
  /**
2
- * Delivery of the tool-permission dialog to the browser peer (ENG-4820).
2
+ * Delivery of the tool-permission dialog to the browser peer.
3
3
  *
4
- * Owns the fail-fast contract: the delivery RPC is bounded by
5
- * PERMISSION_PROMPT_DELIVERY_TIMEOUT_MS (10s) far below the 60s
6
- * tool-execution timeout so an unresponsive tab surfaces as a
7
- * PermissionPromptDeliveryError the agent can relay, instead of freezing the
8
- * generation turn for the full tool budget and masquerading as a tool
9
- * timeout. The user's approve/deny decision is NOT awaited here; after
10
- * successful delivery the tool ends with REQUIRES_USER_CONFIRMATION and the
11
- * decision resumes the turn via aiRespondToToolPermission.
4
+ * Each delivery RPC is bounded by PERMISSION_PROMPT_DELIVERY_TIMEOUT_MS (10s),
5
+ * and a delivery whose live-edit route is already unbound is refused before the
6
+ * RPC rather than waiting out that bound.
7
+ * A miss parks the prompt for PERMISSION_PROMPT_REPLAY_GRACE_MS (60s), during
8
+ * which reconnect and interval retries can restore the dialog. If none
9
+ * succeeds, the service turns the delivery failure into a tool result and
10
+ * resumes the agent. The user's approve/deny decision is not awaited here.
12
11
  */
13
- import { getLogger } from "../../util/logger.js";
12
+ import { getErrorMeta, getLogger } from "../../util/logger.js";
14
13
  import { emitLiveEditEvent } from "../live-edit-events/bridge.js";
15
14
  import { clearPendingToolPermissionRequest } from "../state-machine/helpers/peer.js";
16
- import { PERMISSION_PROMPT_DELIVERY_TIMEOUT_MS, RpcTimeoutError, withRpcTimeout, } from "../util/rpc-timeout.js";
15
+ import { isPeerUnavailableError } from "../state-machine/helpers/stable-peer.js";
16
+ import { callPeer } from "../util/call-peer.js";
17
+ import { PERMISSION_PROMPT_DELIVERY_TIMEOUT_MS, PERMISSION_PROMPT_REPLAY_GRACE_MS, RpcTimeoutError, } from "../util/rpc-timeout.js";
18
+ import { recordToolPermissionDeliveryOutcome } from "./tool-permission-delivery-metrics.js";
19
+ function reconnectableDeliveryPeer(peer) {
20
+ if ("connectionGeneration" in peer &&
21
+ typeof peer.connectionGeneration === "number" &&
22
+ "isConnected" in peer &&
23
+ typeof peer.isConnected === "boolean") {
24
+ return peer;
25
+ }
26
+ return undefined;
27
+ }
28
+ function sameConnection(replay, peer, connectionGeneration) {
29
+ return (replay.peer === peer && replay.connectionGeneration === connectionGeneration);
30
+ }
31
+ function replayFailure(error) {
32
+ return (transientDeliveryFailure(error) ?? {
33
+ kind: "rpc_error",
34
+ message: errorMessage(error),
35
+ });
36
+ }
37
+ function parkReplayFailure(clark, messageId, failure, generation) {
38
+ let newlyParked = false;
39
+ let updated = false;
40
+ clark.updateContext((context) => {
41
+ const pending = context.pendingToolPermissionRequest;
42
+ if (!pending ||
43
+ pending.messageId !== messageId ||
44
+ pending.delivery.generation !== generation) {
45
+ return context;
46
+ }
47
+ updated = true;
48
+ newlyParked = pending.delivery.status !== "parked";
49
+ return {
50
+ ...context,
51
+ pendingToolPermissionRequest: {
52
+ ...pending,
53
+ delivery: {
54
+ status: "parked",
55
+ expiresAtMs: pending.delivery.status === "parked"
56
+ ? pending.delivery.expiresAtMs
57
+ : Date.now() + PERMISSION_PROMPT_REPLAY_GRACE_MS,
58
+ failure,
59
+ generation,
60
+ },
61
+ },
62
+ };
63
+ });
64
+ if (newlyParked) {
65
+ recordToolPermissionDeliveryOutcome("parked");
66
+ }
67
+ return updated;
68
+ }
69
+ const inFlightReplays = new WeakMap();
70
+ const firstDeliveryReplaced = new WeakMap();
71
+ function errorMessage(error) {
72
+ if (error &&
73
+ typeof error === "object" &&
74
+ "message" in error &&
75
+ typeof error.message === "string") {
76
+ return error.message;
77
+ }
78
+ return String(error);
79
+ }
80
+ function updatePendingDelivery(clark, messageId, delivery, expected) {
81
+ let updated = false;
82
+ clark.updateContext((context) => {
83
+ const pending = context.pendingToolPermissionRequest;
84
+ if (!pending ||
85
+ pending.messageId !== messageId ||
86
+ (expected &&
87
+ (pending.delivery.status !== expected.status ||
88
+ pending.delivery.generation !== expected.generation))) {
89
+ return context;
90
+ }
91
+ updated = true;
92
+ return {
93
+ ...context,
94
+ pendingToolPermissionRequest: {
95
+ ...pending,
96
+ delivery,
97
+ },
98
+ };
99
+ });
100
+ return updated;
101
+ }
102
+ function whenFirstDeliveryReplaced(clark) {
103
+ return new Promise((resolve) => {
104
+ firstDeliveryReplaced.set(clark, resolve);
105
+ });
106
+ }
107
+ function notifyFirstDeliveryReplaced(clark) {
108
+ const notify = firstDeliveryReplaced.get(clark);
109
+ if (!notify) {
110
+ return;
111
+ }
112
+ firstDeliveryReplaced.delete(clark);
113
+ notify();
114
+ }
115
+ function transientDeliveryFailure(error) {
116
+ if (error instanceof RpcTimeoutError) {
117
+ return { kind: "timeout" };
118
+ }
119
+ if (isPeerUnavailableError(error)) {
120
+ return {
121
+ kind: "peer_unavailable",
122
+ message: errorMessage(error),
123
+ };
124
+ }
125
+ return undefined;
126
+ }
127
+ function parkAwaitingAck(clark, messageId, failure, generation) {
128
+ const parked = updatePendingDelivery(clark, messageId, {
129
+ status: "parked",
130
+ expiresAtMs: Date.now() + PERMISSION_PROMPT_REPLAY_GRACE_MS,
131
+ failure,
132
+ generation,
133
+ }, { status: "awaiting_ack", generation });
134
+ if (parked) {
135
+ recordToolPermissionDeliveryOutcome("parked");
136
+ }
137
+ return parked;
138
+ }
139
+ function currentDeliveryOutcome(clark, messageId) {
140
+ const current = clark.context.pendingToolPermissionRequest;
141
+ if (!current || current.messageId !== messageId) {
142
+ return "superseded";
143
+ }
144
+ switch (current.delivery.status) {
145
+ case "acked":
146
+ return "acked";
147
+ case "parked":
148
+ return "parked";
149
+ case "awaiting_ack":
150
+ return "awaiting_ack";
151
+ default: {
152
+ const exhaustive = current.delivery;
153
+ return exhaustive;
154
+ }
155
+ }
156
+ }
157
+ async function settleAfterReplacement(clark, messageId) {
158
+ await inFlightToolPermissionReplay(clark);
159
+ const outcome = currentDeliveryOutcome(clark, messageId);
160
+ switch (outcome) {
161
+ case "acked":
162
+ case "parked":
163
+ case "superseded":
164
+ return outcome;
165
+ case "awaiting_ack": {
166
+ const current = clark.context.pendingToolPermissionRequest;
167
+ if (!current || current.messageId !== messageId) {
168
+ return "superseded";
169
+ }
170
+ const parked = parkAwaitingAck(clark, messageId, {
171
+ kind: "peer_unavailable",
172
+ message: "permission prompt replay missed after reconnect",
173
+ }, current.delivery.generation);
174
+ if (parked) {
175
+ void flushPendingToolPermissionPrompt(clark);
176
+ return "parked";
177
+ }
178
+ const after = currentDeliveryOutcome(clark, messageId);
179
+ return after === "awaiting_ack" ? "superseded" : after;
180
+ }
181
+ default: {
182
+ const exhaustive = outcome;
183
+ return exhaustive;
184
+ }
185
+ }
186
+ }
187
+ function withGeneration(delivery, generation) {
188
+ switch (delivery.status) {
189
+ case "acked":
190
+ return { status: "acked", generation };
191
+ case "awaiting_ack":
192
+ return { status: "awaiting_ack", generation };
193
+ case "parked":
194
+ return {
195
+ status: "parked",
196
+ expiresAtMs: delivery.expiresAtMs,
197
+ failure: delivery.failure,
198
+ generation,
199
+ };
200
+ default: {
201
+ const exhaustive = delivery;
202
+ return exhaustive;
203
+ }
204
+ }
205
+ }
206
+ export function flushPendingToolPermissionPrompt(clark, options) {
207
+ const pending = clark.context.pendingToolPermissionRequest;
208
+ const peer = clark.context.peer;
209
+ if (!pending || !peer) {
210
+ return Promise.resolve("skipped");
211
+ }
212
+ const reconnectablePeer = reconnectableDeliveryPeer(peer);
213
+ if (reconnectablePeer && !reconnectablePeer.isConnected) {
214
+ return Promise.resolve("skipped");
215
+ }
216
+ if (pending.delivery.status === "awaiting_ack" && !options?.replaceInFlight) {
217
+ return Promise.resolve("skipped");
218
+ }
219
+ const active = inFlightReplays.get(clark);
220
+ const connectionGeneration = reconnectablePeer?.connectionGeneration;
221
+ if (active?.messageId === pending.messageId &&
222
+ (!options?.replaceInFlight ||
223
+ sameConnection(active, peer, connectionGeneration))) {
224
+ return active.promise;
225
+ }
226
+ const replacingFirstDelivery = pending.delivery.status === "awaiting_ack";
227
+ const generation = pending.delivery.generation + 1;
228
+ updatePendingDelivery(clark, pending.messageId, withGeneration(pending.delivery, generation));
229
+ if (replacingFirstDelivery) {
230
+ notifyFirstDeliveryReplaced(clark);
231
+ }
232
+ const request = {
233
+ messageId: pending.messageId,
234
+ toolName: pending.toolName,
235
+ actionName: pending.actionName,
236
+ formattedInput: pending.formattedInput,
237
+ rawInput: pending.rawInput,
238
+ permissions: pending.permissions ?? [],
239
+ signature: pending.signature,
240
+ };
241
+ const promise = (async () => {
242
+ try {
243
+ await callPeer(peer, () => peer.call.aiRequestToolPermission(request), PERMISSION_PROMPT_DELIVERY_TIMEOUT_MS, "aiRequestToolPermission");
244
+ const current = clark.context.pendingToolPermissionRequest;
245
+ if (current?.messageId === pending.messageId &&
246
+ current.delivery.generation === generation) {
247
+ updatePendingDelivery(clark, pending.messageId, {
248
+ status: "acked",
249
+ generation,
250
+ });
251
+ recordToolPermissionDeliveryOutcome("acked_after_replay");
252
+ clark.logger.info(`[debug] replay aiRequestToolPermission acknowledged`, {
253
+ generation,
254
+ messageId: pending.messageId,
255
+ source: options?.source ?? "retry",
256
+ toolName: pending.toolName,
257
+ });
258
+ return "acked";
259
+ }
260
+ clark.logger.info(`[debug] replay aiRequestToolPermission acknowledgement superseded`, {
261
+ attemptedGeneration: generation,
262
+ currentGeneration: current?.delivery.generation,
263
+ messageId: pending.messageId,
264
+ source: options?.source ?? "retry",
265
+ toolName: pending.toolName,
266
+ });
267
+ return "superseded";
268
+ }
269
+ catch (error) {
270
+ clark.logger.warn(`[debug] replay aiRequestToolPermission failed`, {
271
+ messageId: pending.messageId,
272
+ toolName: pending.toolName,
273
+ source: options?.source ?? "retry",
274
+ error: errorMessage(error),
275
+ errorName: error instanceof Error ? error.name : "unknown",
276
+ });
277
+ if (options?.source === "reconnect") {
278
+ clark.logger.error("[ai-service] Failed to resend tool permission request on reconnect", getErrorMeta(error));
279
+ }
280
+ return parkReplayFailure(clark, pending.messageId, replayFailure(error), generation)
281
+ ? "parked"
282
+ : "superseded";
283
+ }
284
+ finally {
285
+ const currentReplay = inFlightReplays.get(clark);
286
+ if (currentReplay?.messageId === pending.messageId &&
287
+ currentReplay.generation === generation) {
288
+ inFlightReplays.delete(clark);
289
+ }
290
+ }
291
+ })();
292
+ inFlightReplays.set(clark, {
293
+ connectionGeneration,
294
+ generation,
295
+ messageId: pending.messageId,
296
+ peer,
297
+ promise,
298
+ });
299
+ return promise;
300
+ }
301
+ export function inFlightToolPermissionReplay(clark) {
302
+ return inFlightReplays.get(clark)?.promise;
303
+ }
17
304
  /**
18
305
  * Thrown when the permission dialog could not be delivered to the browser.
19
306
  * The message is written for the LLM to relay to the user verbatim. The
20
307
  * diagnosis depends on the cause: "may be unresponsive" is accurate only for
21
- * the timeout path an immediate rejection (e.g. a socket drop) can happen
308
+ * the timeout path. An immediate rejection (e.g. a socket drop) can happen
22
309
  * with a perfectly healthy tab, so it carries the underlying reason instead.
23
310
  */
24
311
  export class PermissionPromptDeliveryError extends Error {
25
312
  constructor(toolName, options) {
26
313
  const cause = options?.cause;
314
+ const expiredAfterGrace = options?.expiredAfterGrace === true;
315
+ const causeText = cause instanceof Error ? cause.message : String(cause ?? "");
27
316
  const diagnosis = cause instanceof RpcTimeoutError
28
- ? `Could not deliver the permission dialog for "${toolName}" to the user's editor tab within ` +
29
- `${PERMISSION_PROMPT_DELIVERY_TIMEOUT_MS / 1000}s the tab may be unresponsive.`
30
- : `Could not deliver the permission dialog for "${toolName}" to the user's editor tab: ` +
31
- `${cause instanceof Error ? cause.message : String(cause)}.`;
317
+ ? expiredAfterGrace
318
+ ? `Could not deliver the permission dialog for "${toolName}" to the user's editor tab before the delivery grace period expired; the tab may be unresponsive.`
319
+ : `Could not deliver the permission dialog for "${toolName}" to the user's editor tab within ` +
320
+ `${PERMISSION_PROMPT_DELIVERY_TIMEOUT_MS / 1000}s; the tab may be unresponsive.`
321
+ : expiredAfterGrace
322
+ ? `Could not deliver the permission dialog for "${toolName}" to the user's editor tab before the delivery grace period expired: ${causeText}.`
323
+ : `Could not deliver the permission dialog for "${toolName}" to the user's editor tab: ${causeText}.`;
32
324
  super(`${diagnosis} ` +
33
325
  `Tell the user to check their editor tab is open and connected, then re-run this action. ` +
34
326
  `Do not proceed with the gated action without permission.`, options);
35
327
  this.name = "PermissionPromptDeliveryError";
36
328
  }
37
329
  }
330
+ export function createExpiredPermissionPromptDeliveryError(toolName, delivery) {
331
+ const cause = delivery.failure.kind === "timeout"
332
+ ? new RpcTimeoutError("aiRequestToolPermission", PERMISSION_PROMPT_DELIVERY_TIMEOUT_MS)
333
+ : new Error(delivery.failure.message);
334
+ return new PermissionPromptDeliveryError(toolName, {
335
+ cause,
336
+ expiredAfterGrace: true,
337
+ });
338
+ }
38
339
  /**
39
- * Deliver the permission dialog to the browser peer, failing fast when the
40
- * tab cannot acknowledge. On any delivery failure the pending permission
41
- * request is cleared (a lingering one suppresses every future prompt in the
42
- * session) before the error is rethrown.
340
+ * Deliver the permission dialog to the browser peer. Transient misses park the
341
+ * pending request for replay; non-transient failures clear it before throwing.
43
342
  *
44
343
  * No-peer behavior is unchanged from the pre-ENG-4820 code: warn and return
45
344
  * without error; the pending request stays stored.
@@ -55,34 +354,81 @@ export async function deliverToolPermissionPrompt(clark, request) {
55
354
  signature,
56
355
  });
57
356
  if (!clark.context.peer) {
58
- return;
357
+ return "no_peer";
59
358
  }
60
359
  // Clark is now blocked on a human. A Gateway caller cannot see this dialog,
61
360
  // so without the relay its turn just appears to stall.
62
361
  emitLiveEditEvent("auth_required", { reason: "tool_permission" });
63
- try {
64
- await withRpcTimeout(clark.context.peer.call.aiRequestToolPermission(request), PERMISSION_PROMPT_DELIVERY_TIMEOUT_MS, "aiRequestToolPermission");
362
+ const startedGeneration = clark.context.pendingToolPermissionRequest?.delivery.generation ?? 0;
363
+ const reconnectablePeer = reconnectableDeliveryPeer(clark.context.peer);
364
+ if (reconnectablePeer && !reconnectablePeer.isConnected) {
365
+ parkAwaitingAck(clark, messageId, {
366
+ kind: "peer_unavailable",
367
+ message: "editor peer disconnected before permission prompt delivery",
368
+ }, startedGeneration);
369
+ return "parked";
370
+ }
371
+ const peer = clark.context.peer;
372
+ const rpcHandled = callPeer(peer, () => peer.call.aiRequestToolPermission(request), PERMISSION_PROMPT_DELIVERY_TIMEOUT_MS, "aiRequestToolPermission").then(() => ({ ok: true }), (error) => ({ ok: false, error }));
373
+ const replaced = whenFirstDeliveryReplaced(clark);
374
+ const winner = await Promise.race([
375
+ rpcHandled.then((result) => ({ kind: "rpc", result })),
376
+ replaced.then(() => ({ kind: "replaced" })),
377
+ ]);
378
+ if (winner.kind === "replaced") {
379
+ return settleAfterReplacement(clark, messageId);
380
+ }
381
+ firstDeliveryReplaced.delete(clark);
382
+ if (winner.result.ok) {
65
383
  clark.logger.info(`[debug] aiRequestToolPermission acknowledged`, {
66
384
  messageId,
67
385
  toolName,
68
386
  signature,
69
387
  });
388
+ if (updatePendingDelivery(clark, messageId, {
389
+ status: "acked",
390
+ generation: startedGeneration,
391
+ }, { status: "awaiting_ack", generation: startedGeneration })) {
392
+ recordToolPermissionDeliveryOutcome("acked");
393
+ return "acked";
394
+ }
395
+ const outcome = currentDeliveryOutcome(clark, messageId);
396
+ return outcome === "awaiting_ack"
397
+ ? settleAfterReplacement(clark, messageId)
398
+ : outcome;
70
399
  }
71
- catch (error) {
72
- clark.logger.warn(`[debug] aiRequestToolPermission failed`, {
73
- messageId,
74
- toolName,
75
- signature,
76
- error: error instanceof Error ? error.message : String(error),
77
- // Structured discriminator (e.g. "RpcTimeoutError" vs socket errors) so
78
- // Datadog can query @errorName instead of the refactor-fragile freetext
79
- // message when tracking delivery-failure rates.
80
- errorName: error instanceof Error ? error.name : "unknown",
81
- });
82
- // Clear pending request on error and notify UI — a lingering pending
83
- // request suppresses all future permission prompts in the session.
84
- clearPendingToolPermissionRequest(clark, "prompt-rpc-error");
85
- throw new PermissionPromptDeliveryError(toolName, { cause: error });
400
+ const error = winner.result.error;
401
+ clark.logger.warn(`[debug] aiRequestToolPermission failed`, {
402
+ messageId,
403
+ toolName,
404
+ signature,
405
+ error: error instanceof Error ? error.message : String(error),
406
+ // Structured discriminator (e.g. "RpcTimeoutError" vs socket errors) so
407
+ // Datadog can query @errorName instead of the refactor-fragile freetext
408
+ // message when tracking delivery-failure rates.
409
+ errorName: error instanceof Error ? error.name : "unknown",
410
+ });
411
+ const failure = transientDeliveryFailure(error);
412
+ if (failure) {
413
+ const parked = parkAwaitingAck(clark, messageId, failure, startedGeneration);
414
+ if (parked) {
415
+ return "parked";
416
+ }
417
+ const outcome = currentDeliveryOutcome(clark, messageId);
418
+ return outcome === "awaiting_ack"
419
+ ? settleAfterReplacement(clark, messageId)
420
+ : outcome;
421
+ }
422
+ const current = clark.context.pendingToolPermissionRequest;
423
+ if (current?.messageId !== messageId ||
424
+ current.delivery.status !== "awaiting_ack" ||
425
+ current.delivery.generation !== startedGeneration) {
426
+ const outcome = currentDeliveryOutcome(clark, messageId);
427
+ return outcome === "awaiting_ack"
428
+ ? settleAfterReplacement(clark, messageId)
429
+ : outcome;
86
430
  }
431
+ clearPendingToolPermissionRequest(clark, "prompt-rpc-error");
432
+ throw new PermissionPromptDeliveryError(toolName, { cause: error });
87
433
  }
88
434
  //# sourceMappingURL=tool-permission-delivery.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tool-permission-delivery.js","sourceRoot":"","sources":["../../../src/ai-service/agent/tool-permission-delivery.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAElE,OAAO,EAAE,iCAAiC,EAAE,MAAM,kCAAkC,CAAC;AACrF,OAAO,EACL,qCAAqC,EACrC,eAAe,EACf,cAAc,GACf,MAAM,wBAAwB,CAAC;AAUhC;;;;;;GAMG;AACH,MAAM,OAAO,6BAA8B,SAAQ,KAAK;IACtD,YAAY,QAAgB,EAAE,OAA6B;QACzD,MAAM,KAAK,GAAG,OAAO,EAAE,KAAK,CAAC;QAC7B,MAAM,SAAS,GACb,KAAK,YAAY,eAAe;YAC9B,CAAC,CAAC,gDAAgD,QAAQ,oCAAoC;gBAC5F,GAAG,qCAAqC,GAAG,IAAI,kCAAkC;YACnF,CAAC,CAAC,gDAAgD,QAAQ,8BAA8B;gBACtF,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC;QACnE,KAAK,CACH,GAAG,SAAS,GAAG;YACb,0FAA0F;YAC1F,0DAA0D,EAC5D,OAAO,CACR,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,+BAA+B,CAAC;IAC9C,CAAC;CACF;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,KAAY,EACZ,OAAoC;IAEpC,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC;IAEnD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QACxB,SAAS,EAAE,CAAC,IAAI,CACd,8DAA8D,QAAQ,EAAE,CACzE,CAAC;IACJ,CAAC;IACD,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,yCAAyC,EAAE;QAC3D,SAAS;QACT,QAAQ;QACR,SAAS;KACV,CAAC,CAAC;IACH,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QACxB,OAAO;IACT,CAAC;IAED,4EAA4E;IAC5E,uDAAuD;IACvD,iBAAiB,CAAC,eAAe,EAAE,EAAE,MAAM,EAAE,iBAAiB,EAAE,CAAC,CAAC;IAElE,IAAI,CAAC;QACH,MAAM,cAAc,CAClB,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC,EACxD,qCAAqC,EACrC,yBAAyB,CAC1B,CAAC;QACF,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,8CAA8C,EAAE;YAChE,SAAS;YACT,QAAQ;YACR,SAAS;SACV,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,wCAAwC,EAAE;YAC1D,SAAS;YACT,QAAQ;YACR,SAAS;YACT,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;YAC7D,wEAAwE;YACxE,wEAAwE;YACxE,gDAAgD;YAChD,SAAS,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;SAC3D,CAAC,CAAC;QACH,qEAAqE;QACrE,mEAAmE;QACnE,iCAAiC,CAAC,KAAK,EAAE,kBAAkB,CAAC,CAAC;QAC7D,MAAM,IAAI,6BAA6B,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;IACtE,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"tool-permission-delivery.js","sourceRoot":"","sources":["../../../src/ai-service/agent/tool-permission-delivery.ts"],"names":[],"mappings":"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"}
@@ -1,33 +1,13 @@
1
1
  import type { ClarkStateHandlerParams } from "../../../state-machine/clark-fsm.js";
2
2
  /**
3
3
  * Stay under the agent outputLimiter (DEFAULT_MAX_OUTPUT_CHARS = 25_000)
4
- * with headroom for JSON wrapping. Local constant importing middleware
5
- * would cycle (middleware registers this tool factory).
6
- *
7
- * Used when the resolved plugin set is exclusively postgres (pluginIds
8
- * and/or integrationIds that map to postgres). Multi-plugin, non-postgres,
9
- * and unscoped callers keep the legacy full root README + skipOutputLimit.
10
- */
11
- export declare const APP_DB_SCOPED_SDK_DOCS_CHAR_BUDGET = 24500;
12
- /** Plugin IDs that always use the slim pack (omit root README + budget). */
13
- export declare const APP_DB_SLIM_PLUGIN_IDS: Set<string>;
14
- /**
15
- * Shared SDK contracts that replace the omitted root README on slim lookups.
16
- * Slim is still postgres-only; the all-plugins slim path should reuse this
17
- * stub instead of a one-off omit note.
4
+ * with headroom for JSON wrapping. Importing middleware would create a cycle.
18
5
  */
6
+ export declare const SCOPED_SDK_DOCS_CHAR_BUDGET = 24500;
7
+ export type SdkApiDocsServices = {
8
+ integrationStore: Pick<ClarkStateHandlerParams["integrationStore"], "getHeader" | "getPluginExecutionVersion">;
9
+ };
19
10
  export declare const SCOPED_SDK_PATTERNS_STUB: string;
20
- /**
21
- * Slim postgres-scoped docs with parity between call shapes:
22
- * - `pluginIds: ["postgres"]` and
23
- * - `integrationIds: [<any postgres integration>]` (App DB or BYO)
24
- * always pack the same way (omit root README + budget).
25
- *
26
- * No IntegrationStore scan / managedBy / pending-priming race — only the
27
- * resolved plugin set matters. Multi-plugin, non-postgres, and unscoped
28
- * lookups keep the legacy fat path (unscoped still returns full root README).
29
- */
30
- export declare function shouldSlimForAppDatabase(integrationIds: string[], pluginIds: string[], services: ClarkStateHandlerParams): boolean;
31
11
  type SdkApiDocsResult = {
32
12
  documentation: string;
33
13
  plugins: {
@@ -35,22 +15,16 @@ type SdkApiDocsResult = {
35
15
  version?: string;
36
16
  sdkVersion?: string;
37
17
  }[];
38
- /** Present on postgres-slim path so skipOutputLimit can stay legacy elsewhere. */
39
- appDatabaseSlim?: boolean;
40
18
  };
41
19
  /**
42
- * Note appended when postgres-scoped plugin docs are cut to stay under the
20
+ * Note appended when plugin-scoped docs are cut to stay under the
43
21
  * outputLimiter budget. Intentionally does not promise that repeating
44
22
  * getSdkApiDocs with the same integrationIds returns the omitted tail —
45
23
  * there is no cursor/offset, so that call yields the same prefix.
46
24
  */
47
- export declare const APP_DB_SCOPED_DOCS_TRUNCATION_NOTE = "\n\n... [truncated postgres-scoped SDK docs for context budget; this tool has no continuation cursor \u2014 repeating getSdkApiDocs with the same pluginIds/integrationIds returns this same prefix, and getSdkApiDocs() with no IDs returns the shared root README, not the omitted plugin sections]";
48
- /**
49
- * Truncate postgres-scoped docs so the typed JSON result stays under the
50
- * outputLimiter budget (never return the limiter's bare truncated string).
51
- */
52
- export declare function fitAppDatabaseDocsUnderBudget(result: SdkApiDocsResult, budget?: number): SdkApiDocsResult;
53
- export declare const getSdkApiDocsToolFactory: import("../../tools2/types.js").ToolFactory<ClarkStateHandlerParams, import("../../tools2/types.js").Tool<{
25
+ export declare const SCOPED_DOCS_TRUNCATION_NOTE = "\n\n... [truncated plugin-scoped SDK docs for context budget; this tool has no continuation cursor \u2014 repeating getSdkApiDocs with the same pluginIds/integrationIds returns this same prefix, and getSdkApiDocs() with no IDs returns the shared root README, not the omitted plugin sections. To keep every plugin's docs intact, request fewer plugins per call]";
26
+ export declare function fitScopedDocsUnderBudget(result: SdkApiDocsResult, budget?: number, pluginStarts?: number[]): SdkApiDocsResult;
27
+ export declare const getSdkApiDocsToolFactory: import("../../tools2/types.js").ToolFactory<SdkApiDocsServices, import("../../tools2/types.js").Tool<{
54
28
  integrationIds?: string[] | undefined;
55
29
  pluginIds?: string[] | undefined;
56
30
  }, SdkApiDocsResult>>;
@@ -1 +1 @@
1
- {"version":3,"file":"get-sdk-api-docs.d.ts","sourceRoot":"","sources":["../../../../../src/ai-service/agent/tools/apis/get-sdk-api-docs.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;AAGnF;;;;;;;;GAQG;AACH,eAAO,MAAM,kCAAkC,QAAS,CAAC;AAEzD,4EAA4E;AAC5E,eAAO,MAAM,sBAAsB,aAAwB,CAAC;AA4C5D;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,QAkBzB,CAAC;AAqBb;;;;;;;;;GASG;AACH,wBAAgB,wBAAwB,CACtC,cAAc,EAAE,MAAM,EAAE,EACxB,SAAS,EAAE,MAAM,EAAE,EACnB,QAAQ,EAAE,uBAAuB,GAChC,OAAO,CAYT;AA4ED,KAAK,gBAAgB,GAAG;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACvE,kFAAkF;IAClF,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,kCAAkC,0SACqP,CAAC;AAErS;;;GAGG;AACH,wBAAgB,6BAA6B,CAC3C,MAAM,EAAE,gBAAgB,EACxB,MAAM,GAAE,MAA2C,GAClD,gBAAgB,CA6BlB;AAkCD,eAAO,MAAM,wBAAwB;;;qBAiHpC,CAAC"}
1
+ {"version":3,"file":"get-sdk-api-docs.d.ts","sourceRoot":"","sources":["../../../../../src/ai-service/agent/tools/apis/get-sdk-api-docs.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;AAGnF;;;GAGG;AACH,eAAO,MAAM,2BAA2B,QAAS,CAAC;AAElD,MAAM,MAAM,kBAAkB,GAAG;IAC/B,gBAAgB,EAAE,IAAI,CACpB,uBAAuB,CAAC,kBAAkB,CAAC,EAC3C,WAAW,GAAG,2BAA2B,CAC1C,CAAC;CACH,CAAC;AA6CF,eAAO,MAAM,wBAAwB,QAkBzB,CAAC;AA6Hb,KAAK,gBAAgB,GAAG;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CACxE,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,2BAA2B,4WAC8T,CAAC;AAEvW,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,gBAAgB,EACxB,MAAM,GAAE,MAAoC,EAC5C,YAAY,GAAE,MAAM,EAAO,GAC1B,gBAAgB,CA0BlB;AA2CD,eAAO,MAAM,wBAAwB;;;qBA+FpC,CAAC"}