@nuvin/session 0.2.0-rc.7 → 0.2.0-rc.9

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 (45) hide show
  1. package/dist/chunk-7LEIACBZ.js +85 -0
  2. package/dist/{chunk-I5U3WU6B.js → chunk-KQHHBUVY.js} +112 -32
  3. package/dist/{chunk-MRVGQ4DK.js → chunk-O3UBTUIO.js} +1 -1
  4. package/dist/client/daemon-client.d.ts.map +1 -1
  5. package/dist/client/data-client.d.ts +10 -15
  6. package/dist/client/data-client.d.ts.map +1 -1
  7. package/dist/client/directory.d.ts +12 -14
  8. package/dist/client/directory.d.ts.map +1 -1
  9. package/dist/client/http-data-client.d.ts +5 -0
  10. package/dist/client/http-data-client.d.ts.map +1 -1
  11. package/dist/client/index.js +90 -23
  12. package/dist/client/session-client.d.ts +2 -2
  13. package/dist/client/session-client.d.ts.map +1 -1
  14. package/dist/controller/agent-channel.d.ts +2 -2
  15. package/dist/controller/agent-channel.d.ts.map +1 -1
  16. package/dist/controller/index.js +131 -52
  17. package/dist/controller/session-controller.d.ts +12 -12
  18. package/dist/controller/session-controller.d.ts.map +1 -1
  19. package/dist/protocol/data-rpc.d.ts +13 -14
  20. package/dist/protocol/data-rpc.d.ts.map +1 -1
  21. package/dist/protocol/history-text.d.ts +4 -0
  22. package/dist/protocol/history-text.d.ts.map +1 -0
  23. package/dist/protocol/index.d.ts +1 -0
  24. package/dist/protocol/index.d.ts.map +1 -1
  25. package/dist/protocol/index.js +12 -4
  26. package/dist/protocol/model-identity.d.ts +7 -0
  27. package/dist/protocol/model-identity.d.ts.map +1 -1
  28. package/dist/protocol/types.d.ts +85 -18
  29. package/dist/protocol/types.d.ts.map +1 -1
  30. package/dist/protocol/version.d.ts +1 -1
  31. package/dist/state/index.d.ts +2 -0
  32. package/dist/state/index.d.ts.map +1 -1
  33. package/dist/state/index.js +13 -3
  34. package/dist/state/messages.d.ts +11 -3
  35. package/dist/state/messages.d.ts.map +1 -1
  36. package/dist/state/questions.d.ts +5 -0
  37. package/dist/state/questions.d.ts.map +1 -0
  38. package/dist/state/session.d.ts.map +1 -1
  39. package/dist/state/tool-key.d.ts +2 -0
  40. package/dist/state/tool-key.d.ts.map +1 -0
  41. package/dist/state/tool-preview.d.ts.map +1 -1
  42. package/dist/state/tool-preview.js +27 -27
  43. package/dist/test-utils/index.js +2 -2
  44. package/package.json +3 -3
  45. package/dist/chunk-7HGJO7ZX.js +0 -9
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  createSessionViewState,
3
3
  reduceSessionEvent
4
- } from "../chunk-I5U3WU6B.js";
4
+ } from "../chunk-KQHHBUVY.js";
5
5
  import {
6
6
  PROTOCOL_VERSION
7
- } from "../chunk-MRVGQ4DK.js";
7
+ } from "../chunk-O3UBTUIO.js";
8
8
 
9
9
  // src/client/endpoint.ts
10
10
  var TerminalEndpointError = class extends Error {
@@ -17,6 +17,13 @@ var TerminalEndpointError = class extends Error {
17
17
  };
18
18
 
19
19
  // src/client/http-data-client.ts
20
+ var DataRpcClientError = class extends Error {
21
+ constructor(code, message) {
22
+ super(message);
23
+ this.code = code;
24
+ this.name = "DataRpcClientError";
25
+ }
26
+ };
20
27
  function httpBaseFromWsUrl(wsUrl) {
21
28
  const u = new URL(wsUrl);
22
29
  const scheme = u.protocol === "wss:" ? "https:" : "http:";
@@ -46,6 +53,9 @@ async function throwFromResponse(response, fallback, terminal, onUnauthorized) {
46
53
  typeof body?.message === "string" ? body.message : mapped.message
47
54
  );
48
55
  }
56
+ if (body?.code === "invalid-history-cursor") {
57
+ throw new DataRpcClientError(body.code, body.message ?? fallback);
58
+ }
49
59
  throw new Error(
50
60
  typeof body?.message === "string" ? body.message : `${fallback} (HTTP ${response.status}).`
51
61
  );
@@ -173,10 +183,10 @@ function createHttpDataClient(options = {}) {
173
183
  const body = await response.json();
174
184
  return { url: body.wsUrl, credential: { grant: body.grant } };
175
185
  },
176
- async fetchTranscript(daemonId, historyId, opts) {
177
- const suffix = `/transcript/${encodeURIComponent(historyId)}${queryString({
178
- workspace: opts?.workspace,
179
- profile: opts?.profile
186
+ async fetchTranscript(daemonId, identity) {
187
+ const suffix = `/transcript/${encodeURIComponent(identity.sessionId)}${queryString({
188
+ workspace: identity.workspace,
189
+ profile: identity.profile
180
190
  })}`;
181
191
  const response = await daemonFetch(daemonId, suffix);
182
192
  if (response.status === 404) {
@@ -193,7 +203,8 @@ function createHttpDataClient(options = {}) {
193
203
  profile: opts?.profile,
194
204
  cwd: opts?.cwd,
195
205
  limit: opts?.limit,
196
- cursor: opts?.cursor
206
+ cursor: opts?.cursor,
207
+ includeExtraction: opts?.includeExtraction === true ? "true" : void 0
197
208
  })}`;
198
209
  const response = await daemonFetch(daemonId, suffix);
199
210
  if (!response.ok)
@@ -202,6 +213,37 @@ function createHttpDataClient(options = {}) {
202
213
  });
203
214
  return await response.json();
204
215
  },
216
+ async listHistoryWorkspaces(daemonId, opts) {
217
+ const suffix = `/history/workspaces${queryString({
218
+ profile: opts?.profile,
219
+ currentCwd: opts?.currentCwd,
220
+ query: opts?.query,
221
+ includeExtraction: opts?.includeExtraction === true ? "true" : void 0
222
+ })}`;
223
+ const response = await daemonFetch(daemonId, suffix, { signal: opts?.signal });
224
+ if (!response.ok)
225
+ await throwFromResponse(response, "Failed to load history workspaces", {
226
+ 404: { reason: "daemon-revoked", message: "This daemon is no longer registered." }
227
+ });
228
+ return await response.json();
229
+ },
230
+ async listWorkspaceHistory(daemonId, opts) {
231
+ const suffix = `/history/workspace${queryString({
232
+ profile: opts?.profile,
233
+ workspace: opts?.workspace,
234
+ cwd: opts?.cwd,
235
+ query: opts?.query,
236
+ limit: opts?.limit,
237
+ cursor: opts?.cursor,
238
+ includeExtraction: opts?.includeExtraction === true ? "true" : void 0
239
+ })}`;
240
+ const response = await daemonFetch(daemonId, suffix, { signal: opts?.signal });
241
+ if (!response.ok)
242
+ await throwFromResponse(response, "Failed to load workspace history", {
243
+ 404: { reason: "daemon-revoked", message: "This daemon is no longer registered." }
244
+ });
245
+ return await response.json();
246
+ },
205
247
  async listWorkspaces(daemonId, opts) {
206
248
  const suffix = `/workspaces${queryString({ profile: opts?.profile })}`;
207
249
  const response = await daemonFetch(daemonId, suffix);
@@ -224,10 +266,10 @@ function createHttpDataClient(options = {}) {
224
266
  if (!response.ok) await throwFromResponse(response, "Failed to create the workspace");
225
267
  return await response.json();
226
268
  },
227
- async deleteSession(daemonId, historyId, opts) {
228
- const suffix = `/sessions/${encodeURIComponent(historyId)}${queryString({
229
- workspace: opts?.workspace,
230
- profile: opts?.profile
269
+ async deleteSession(daemonId, identity) {
270
+ const suffix = `/sessions/${encodeURIComponent(identity.sessionId)}${queryString({
271
+ workspace: identity.workspace,
272
+ profile: identity.profile
231
273
  })}`;
232
274
  const response = await daemonFetch(daemonId, suffix, { method: "DELETE" });
233
275
  if (response.status === 404) {
@@ -540,22 +582,24 @@ function createSessionClient(transport) {
540
582
  })).then(() => {
541
583
  });
542
584
  },
543
- decideApproval(toolCallId, decision, comment, grantDir) {
585
+ decideApproval(toolCallId, decision, comment, grantDir, parentToolCallId) {
544
586
  return sendCommand((id) => ({
545
587
  id,
546
588
  type: "decide-approval",
547
589
  toolCallId,
548
590
  decision,
549
591
  ...comment !== void 0 ? { comment } : {},
550
- ...grantDir !== void 0 ? { grantDir } : {}
592
+ ...grantDir !== void 0 ? { grantDir } : {},
593
+ ...parentToolCallId !== void 0 ? { parentToolCallId } : {}
551
594
  })).then(() => {
552
595
  });
553
596
  },
554
- persistBashPermission(toolCallId, request) {
597
+ persistBashPermission(toolCallId, request, parentToolCallId) {
555
598
  return sendCommand((id) => ({
556
599
  id,
557
600
  type: "persist-bash-permission",
558
601
  toolCallId,
602
+ ...parentToolCallId !== void 0 ? { parentToolCallId } : {},
559
603
  request
560
604
  })).then(toPersistBashPermissionResult);
561
605
  },
@@ -994,11 +1038,13 @@ function throwCollectedErrors(errors, message) {
994
1038
  }
995
1039
  function bindDaemonDataClient(client, daemonId) {
996
1040
  return {
997
- fetchTranscript: (historyId, opts) => client.fetchTranscript(daemonId, historyId, opts),
1041
+ fetchTranscript: (identity) => client.fetchTranscript(daemonId, identity),
998
1042
  fetchHistory: (opts) => client.fetchHistory(daemonId, opts),
1043
+ listHistoryWorkspaces: (opts) => client.listHistoryWorkspaces(daemonId, opts),
1044
+ listWorkspaceHistory: (opts) => client.listWorkspaceHistory(daemonId, opts),
999
1045
  listWorkspaces: (opts) => client.listWorkspaces(daemonId, opts),
1000
1046
  createWorkspace: (opts) => client.createWorkspace(daemonId, opts),
1001
- deleteSession: (historyId, opts) => client.deleteSession(daemonId, historyId, opts),
1047
+ deleteSession: (identity) => client.deleteSession(daemonId, identity),
1002
1048
  listProfiles: () => client.listProfiles(daemonId),
1003
1049
  listProviders: (opts) => client.listProviders(daemonId, opts),
1004
1050
  addProvider: (input) => client.addProvider(daemonId, input),
@@ -1198,6 +1244,24 @@ function createDaemonClient(target, deps = {}) {
1198
1244
  }
1199
1245
 
1200
1246
  // src/client/directory.ts
1247
+ var DAEMON_REQUEST_ERROR_CODES = /* @__PURE__ */ new Set([
1248
+ "transcript-unavailable",
1249
+ "transcript-corrupt",
1250
+ "history-state-conflict",
1251
+ "ambiguous-session-identity"
1252
+ ]);
1253
+ var DaemonRequestError = class extends Error {
1254
+ code;
1255
+ identity;
1256
+ constructor(message, options) {
1257
+ super(message);
1258
+ this.name = "DaemonRequestError";
1259
+ if (options?.code && DAEMON_REQUEST_ERROR_CODES.has(options.code)) {
1260
+ this.code = options.code;
1261
+ }
1262
+ this.identity = options?.identity;
1263
+ }
1264
+ };
1201
1265
  var toText2 = (data) => {
1202
1266
  if (typeof data === "string") return data;
1203
1267
  if (data instanceof Buffer) return data.toString("utf8");
@@ -1323,7 +1387,12 @@ function createServerDirectory(options) {
1323
1387
  if (!entry || entry.kind === "list") return;
1324
1388
  link.pending.delete(message.id);
1325
1389
  if (!message.ok) {
1326
- entry.reject(new Error(message.error?.message ?? "Command failed."));
1390
+ entry.reject(
1391
+ new DaemonRequestError(message.error?.message ?? "Command failed.", {
1392
+ ...message.error?.code ? { code: message.error.code } : {},
1393
+ ...message.error?.identity ? { identity: message.error.identity } : {}
1394
+ })
1395
+ );
1327
1396
  return;
1328
1397
  }
1329
1398
  if (entry.kind === "kill") {
@@ -1524,7 +1593,7 @@ function createServerDirectory(options) {
1524
1593
  );
1525
1594
  });
1526
1595
  },
1527
- resumeSession(server, historyId, resumeOptions) {
1596
+ resumeSession(server, identity) {
1528
1597
  return new Promise((resolve, reject) => {
1529
1598
  const link = linkFor(server);
1530
1599
  if (link instanceof Error) {
@@ -1538,11 +1607,7 @@ function createServerDirectory(options) {
1538
1607
  JSON.stringify({
1539
1608
  id,
1540
1609
  type: "resume-session",
1541
- historyId,
1542
- cwd: resumeOptions.cwd,
1543
- ...resumeOptions.name !== void 0 ? { name: resumeOptions.name } : {},
1544
- ...resumeOptions.workspace !== void 0 ? { workspace: resumeOptions.workspace } : {},
1545
- ...resumeOptions.profile !== void 0 ? { profile: resumeOptions.profile } : {}
1610
+ identity
1546
1611
  })
1547
1612
  );
1548
1613
  });
@@ -1590,6 +1655,8 @@ function createServerDirectory(options) {
1590
1655
  };
1591
1656
  }
1592
1657
  export {
1658
+ DaemonRequestError,
1659
+ DataRpcClientError,
1593
1660
  SessionCommandError,
1594
1661
  TerminalEndpointError,
1595
1662
  adaptWhatwgSocket,
@@ -18,8 +18,8 @@ export interface SessionClient {
18
18
  /** Raw frame hook for UI side-effects (e.g. close modals on state-reset). */
19
19
  onEvent(listener: (event: ServerEvent) => void): () => void;
20
20
  submit(input: AgentInput, opts: ClientSubmitOptions): Promise<void>;
21
- decideApproval(toolCallId: string, decision: "a" | "n" | "y", comment?: string, grantDir?: string): Promise<void>;
22
- persistBashPermission(toolCallId: string, request: PersistBashPermissionRequest): Promise<PersistBashPermissionResult>;
21
+ decideApproval(toolCallId: string, decision: "a" | "n" | "y", comment?: string, grantDir?: string, parentToolCallId?: string): Promise<void>;
22
+ persistBashPermission(toolCallId: string, request: PersistBashPermissionRequest, parentToolCallId?: string): Promise<PersistBashPermissionResult>;
23
23
  answerQuestion(questionId: string, answers: AskUserAnswers): Promise<void>;
24
24
  abort(): Promise<void>;
25
25
  /** Cancel a queued (not-yet-running) message by its `turn-status.queued` id. */
@@ -1 +1 @@
1
- {"version":3,"file":"session-client.d.ts","sourceRoot":"","sources":["../../src/client/session-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session-client.d.ts","sourceRoot":"","sources":["../../src/client/session-client.ts"],"names":[],"mappings":"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"}
@@ -36,7 +36,7 @@ export type ToolCallRequest = {
36
36
  export type AgentEventListener = (payload: AgentEventPayload) => void;
37
37
  export type SessionLoadedListener = (loaded: SessionLoadedPayload) => void;
38
38
  export type ToolCallDecider = (request: ToolCallRequest) => Promise<ToolRuntimeDispatchDecision> | ToolRuntimeDispatchDecision;
39
- export type UserQuestionHandler = (request: AskUserQuestionRequest) => Promise<AskUserAnswers> | AskUserAnswers;
39
+ export type UserQuestionHandler = (request: AskUserQuestionRequest, scope?: DelegationScope) => Promise<AskUserAnswers> | AskUserAnswers;
40
40
  /**
41
41
  * In-process channel between the Agent (constructed in `main()`) and the
42
42
  * React UI (`<App />`). Two distinct shapes:
@@ -54,7 +54,7 @@ export declare class AgentChannel {
54
54
  publishEvent(event: AgentEvent, scope?: DelegationScope): void;
55
55
  publishSessionLoaded(loaded: SessionLoadedPayload): void;
56
56
  requestToolDecision(request: ToolCallRequest): Promise<ToolRuntimeDispatchDecision> | ToolRuntimeDispatchDecision;
57
- requestUserQuestion(request: AskUserQuestionRequest): Promise<AskUserAnswers>;
57
+ requestUserQuestion(request: AskUserQuestionRequest, scope?: DelegationScope): Promise<AskUserAnswers>;
58
58
  onEvent(listener: AgentEventListener): () => void;
59
59
  onSessionLoaded(listener: SessionLoadedListener): () => void;
60
60
  setToolDecider(decider: ToolCallDecider | null): void;
@@ -1 +1 @@
1
- {"version":3,"file":"agent-channel.d.ts","sourceRoot":"","sources":["../../src/controller/agent-channel.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,UAAU,EACV,cAAc,EACd,sBAAsB,EACtB,OAAO,EACP,mBAAmB,EACnB,2BAA2B,EAC3B,YAAY,EACb,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EACV,6BAA6B,EAC7B,gBAAgB,EAChB,kCAAkC,EAClC,4BAA4B,EAC5B,yBAAyB,EAC1B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEvD,8DAA8D;AAC9D,MAAM,MAAM,oBAAoB,GAAG;IACjC,aAAa,EAAE,OAAO,EAAE,CAAC;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,UAAU,EAAE,CAAC;CACxB,CAAC;AAEF;;;;;GAKG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,KAAK,EAAE,UAAU,CAAC;IAClB,KAAK,CAAC,EAAE,eAAe,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,6BAA6B,CAAC;IAC3C,gFAAgF;IAChF,SAAS,CAAC,EAAE,gBAAgB,CAAC;IAC7B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,eAAe,CAAC,EAAE,mBAAmB,CAAC;IACtC,qBAAqB,CAAC,EAAE,CACtB,OAAO,EAAE,4BAA4B,KAClC,OAAO,CAAC,kCAAkC,CAAC,CAAC;IACjD,QAAQ,EAAE,YAAY,CAAC;IACvB,kBAAkB,CAAC,EAAE,yBAAyB,CAAC;CAChD,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,CAAC,OAAO,EAAE,iBAAiB,KAAK,IAAI,CAAC;AACtE,MAAM,MAAM,qBAAqB,GAAG,CAAC,MAAM,EAAE,oBAAoB,KAAK,IAAI,CAAC;AAE3E,MAAM,MAAM,eAAe,GAAG,CAC5B,OAAO,EAAE,eAAe,KACrB,OAAO,CAAC,2BAA2B,CAAC,GAAG,2BAA2B,CAAC;AAExE,MAAM,MAAM,mBAAmB,GAAG,CAChC,OAAO,EAAE,sBAAsB,KAC5B,OAAO,CAAC,cAAc,CAAC,GAAG,cAAc,CAAC;AAO9C;;;;;;;;;GASG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAsB;IAC9C,OAAO,CAAC,OAAO,CAAgC;IAC/C,OAAO,CAAC,eAAe,CAAoC;IAI3D,YAAY,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,CAAC,EAAE,eAAe,GAAG,IAAI;IAI9D,oBAAoB,CAAC,MAAM,EAAE,oBAAoB,GAAG,IAAI;IAIxD,mBAAmB,CACjB,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,2BAA2B,CAAC,GAAG,2BAA2B;IAOrE,mBAAmB,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,cAAc,CAAC;IAS7E,OAAO,CAAC,QAAQ,EAAE,kBAAkB,GAAG,MAAM,IAAI;IAOjD,eAAe,CAAC,QAAQ,EAAE,qBAAqB,GAAG,MAAM,IAAI;IAO5D,cAAc,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI,GAAG,IAAI;IAIrD,kBAAkB,CAAC,OAAO,EAAE,mBAAmB,GAAG,IAAI,GAAG,IAAI;CAG9D"}
1
+ {"version":3,"file":"agent-channel.d.ts","sourceRoot":"","sources":["../../src/controller/agent-channel.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,UAAU,EACV,cAAc,EACd,sBAAsB,EACtB,OAAO,EACP,mBAAmB,EACnB,2BAA2B,EAC3B,YAAY,EACb,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EACV,6BAA6B,EAC7B,gBAAgB,EAChB,kCAAkC,EAClC,4BAA4B,EAC5B,yBAAyB,EAC1B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEvD,8DAA8D;AAC9D,MAAM,MAAM,oBAAoB,GAAG;IACjC,aAAa,EAAE,OAAO,EAAE,CAAC;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,UAAU,EAAE,CAAC;CACxB,CAAC;AAEF;;;;;GAKG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,KAAK,EAAE,UAAU,CAAC;IAClB,KAAK,CAAC,EAAE,eAAe,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,6BAA6B,CAAC;IAC3C,gFAAgF;IAChF,SAAS,CAAC,EAAE,gBAAgB,CAAC;IAC7B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,eAAe,CAAC,EAAE,mBAAmB,CAAC;IACtC,qBAAqB,CAAC,EAAE,CACtB,OAAO,EAAE,4BAA4B,KAClC,OAAO,CAAC,kCAAkC,CAAC,CAAC;IACjD,QAAQ,EAAE,YAAY,CAAC;IACvB,kBAAkB,CAAC,EAAE,yBAAyB,CAAC;CAChD,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,CAAC,OAAO,EAAE,iBAAiB,KAAK,IAAI,CAAC;AACtE,MAAM,MAAM,qBAAqB,GAAG,CAAC,MAAM,EAAE,oBAAoB,KAAK,IAAI,CAAC;AAE3E,MAAM,MAAM,eAAe,GAAG,CAC5B,OAAO,EAAE,eAAe,KACrB,OAAO,CAAC,2BAA2B,CAAC,GAAG,2BAA2B,CAAC;AAExE,MAAM,MAAM,mBAAmB,GAAG,CAChC,OAAO,EAAE,sBAAsB,EAC/B,KAAK,CAAC,EAAE,eAAe,KACpB,OAAO,CAAC,cAAc,CAAC,GAAG,cAAc,CAAC;AAO9C;;;;;;;;;GASG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAsB;IAC9C,OAAO,CAAC,OAAO,CAAgC;IAC/C,OAAO,CAAC,eAAe,CAAoC;IAI3D,YAAY,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,CAAC,EAAE,eAAe,GAAG,IAAI;IAI9D,oBAAoB,CAAC,MAAM,EAAE,oBAAoB,GAAG,IAAI;IAIxD,mBAAmB,CACjB,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,2BAA2B,CAAC,GAAG,2BAA2B;IAOrE,mBAAmB,CACjB,OAAO,EAAE,sBAAsB,EAC/B,KAAK,CAAC,EAAE,eAAe,GACtB,OAAO,CAAC,cAAc,CAAC;IAS1B,OAAO,CAAC,QAAQ,EAAE,kBAAkB,GAAG,MAAM,IAAI;IAOjD,eAAe,CAAC,QAAQ,EAAE,qBAAqB,GAAG,MAAM,IAAI;IAO5D,cAAc,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI,GAAG,IAAI;IAIrD,kBAAkB,CAAC,OAAO,EAAE,mBAAmB,GAAG,IAAI,GAAG,IAAI;CAG9D"}