@tutti-os/agent-gui 0.0.71 → 0.0.73

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 (65) hide show
  1. package/README.md +5 -0
  2. package/dist/{AgentMentionSearchController-Po0KQLcL.d.ts → AgentMentionSearchController-DD_WOred.d.ts} +1 -0
  3. package/dist/agent-conversation/index.d.ts +2 -2
  4. package/dist/agent-conversation/index.js +6 -6
  5. package/dist/agent-message-center/index.d.ts +2 -1
  6. package/dist/agent-message-center/index.js +12 -10
  7. package/dist/agent-message-center/index.js.map +1 -1
  8. package/dist/{agentGuiNodeTypes-C0oBQn-F.d.ts → agentGuiNodeTypes-aJ3AX7u2.d.ts} +39 -18
  9. package/dist/app/renderer/agentactivity.css +156 -1
  10. package/dist/{chunk-KTIHLBCN.js → chunk-2I2WRI4F.js} +248 -4
  11. package/dist/chunk-2I2WRI4F.js.map +1 -0
  12. package/dist/{chunk-DXENDZEF.js → chunk-3PKRGSMH.js} +2 -2
  13. package/dist/{chunk-QDWV5VTD.js → chunk-466AWJTS.js} +6 -31
  14. package/dist/chunk-466AWJTS.js.map +1 -0
  15. package/dist/{chunk-SG6A35BU.js → chunk-5H6NINJY.js} +2 -2
  16. package/dist/{chunk-SC3PS7AT.js → chunk-C7K3EFGI.js} +2 -2
  17. package/dist/{chunk-DGNKXT3Q.js → chunk-G6BVEY7I.js} +69 -3
  18. package/dist/chunk-G6BVEY7I.js.map +1 -0
  19. package/dist/{chunk-KS35VKHM.js → chunk-GDFQXJMG.js} +1 -1
  20. package/dist/chunk-GDFQXJMG.js.map +1 -0
  21. package/dist/{chunk-WWY6MYMU.js → chunk-IVIXKAEH.js} +19 -9
  22. package/dist/chunk-IVIXKAEH.js.map +1 -0
  23. package/dist/{chunk-IZX2YQXY.js → chunk-KWQ4N4IZ.js} +117 -8
  24. package/dist/chunk-KWQ4N4IZ.js.map +1 -0
  25. package/dist/{chunk-ISQCYEUJ.js → chunk-OBJRIQPX.js} +411 -62
  26. package/dist/chunk-OBJRIQPX.js.map +1 -0
  27. package/dist/{chunk-QJ42HQ24.js → chunk-Q6AWM3RH.js} +4 -4
  28. package/dist/{chunk-MVPSFOJZ.js → chunk-SVGIWXNK.js} +2 -2
  29. package/dist/{chunk-Y3C5EHSW.js → chunk-SZF52NMJ.js} +173 -12
  30. package/dist/chunk-SZF52NMJ.js.map +1 -0
  31. package/dist/{chunk-FTSEVC6O.js → chunk-XZF4QNT4.js} +2 -2
  32. package/dist/context-mention-palette/index.d.ts +2 -2
  33. package/dist/context-mention-palette/index.js +7 -7
  34. package/dist/i18n/index.d.ts +68 -2
  35. package/dist/i18n/index.js +2 -2
  36. package/dist/index.d.ts +122 -102
  37. package/dist/index.js +2210 -1325
  38. package/dist/index.js.map +1 -1
  39. package/dist/queued-prompt-runtime.d.ts +1 -1
  40. package/dist/workbench/contribution.d.ts +7 -1
  41. package/dist/workbench/contribution.js +4 -4
  42. package/dist/workbench/index.js +5 -7
  43. package/dist/workbench/sessionTitle.js +3 -3
  44. package/dist/workbench/state.js +1 -2
  45. package/dist/workspace-agent-generated-files.js +3 -3
  46. package/dist/{workspaceLinkActions-Bjy_XfBm.d.ts → workspaceLinkActions-DS9LWqzI.d.ts} +1 -1
  47. package/package.json +14 -14
  48. package/dist/chunk-DGNKXT3Q.js.map +0 -1
  49. package/dist/chunk-ISQCYEUJ.js.map +0 -1
  50. package/dist/chunk-IZX2YQXY.js.map +0 -1
  51. package/dist/chunk-KS35VKHM.js.map +0 -1
  52. package/dist/chunk-KTIHLBCN.js.map +0 -1
  53. package/dist/chunk-N37A62BK.js +0 -250
  54. package/dist/chunk-N37A62BK.js.map +0 -1
  55. package/dist/chunk-NROZAN34.js +0 -173
  56. package/dist/chunk-NROZAN34.js.map +0 -1
  57. package/dist/chunk-QDWV5VTD.js.map +0 -1
  58. package/dist/chunk-WWY6MYMU.js.map +0 -1
  59. package/dist/chunk-Y3C5EHSW.js.map +0 -1
  60. /package/dist/{chunk-DXENDZEF.js.map → chunk-3PKRGSMH.js.map} +0 -0
  61. /package/dist/{chunk-SG6A35BU.js.map → chunk-5H6NINJY.js.map} +0 -0
  62. /package/dist/{chunk-SC3PS7AT.js.map → chunk-C7K3EFGI.js.map} +0 -0
  63. /package/dist/{chunk-QJ42HQ24.js.map → chunk-Q6AWM3RH.js.map} +0 -0
  64. /package/dist/{chunk-MVPSFOJZ.js.map → chunk-SVGIWXNK.js.map} +0 -0
  65. /package/dist/{chunk-FTSEVC6O.js.map → chunk-XZF4QNT4.js.map} +0 -0
@@ -1,250 +0,0 @@
1
- // providerTargets.ts
2
- var agentGUIProviderTargetStaticLabels = {
3
- "claude-code": "Claude Code",
4
- codex: "Codex",
5
- cursor: "Cursor",
6
- gemini: "Gemini",
7
- hermes: "Hermes",
8
- nexight: "Tutti Agent",
9
- openclaw: "OpenClaw",
10
- opencode: "OpenCode",
11
- "tutti-agent": "Tutti Agent"
12
- };
13
- var agentGUIDefaultTargetProviders = [
14
- "codex",
15
- "claude-code",
16
- "cursor",
17
- "tutti-agent",
18
- "opencode",
19
- "hermes",
20
- "openclaw"
21
- ];
22
- var agentGUIDisabledPlaceholderProviders = [
23
- "hermes",
24
- "openclaw"
25
- ];
26
- function createLocalAgentGUIProviderTarget(provider) {
27
- const targetId = localAgentGUIProviderTargetId(provider);
28
- const agentTargetId = localAgentGUIAgentTargetId(provider);
29
- return {
30
- targetId,
31
- ...agentTargetId ? { agentTargetId } : {},
32
- provider,
33
- ref: {
34
- kind: "local",
35
- provider
36
- },
37
- label: agentGUIProviderTargetStaticLabels[provider] ?? provider
38
- };
39
- }
40
- function createDisabledPlaceholderAgentGUIProviderTarget(provider) {
41
- return {
42
- ...createLocalAgentGUIProviderTarget(provider),
43
- disabled: true
44
- };
45
- }
46
- function createSharedAgentGUIProviderTarget(input) {
47
- const sharedAgentId = input.sharedAgentId.trim();
48
- const targetId = `shared-agent:${sharedAgentId}`;
49
- const badge = normalizeAgentGUIProviderTargetBadge(input.badge);
50
- return {
51
- targetId,
52
- ...input.agentTargetId?.trim() ? { agentTargetId: input.agentTargetId.trim() } : {},
53
- provider: input.provider,
54
- ref: {
55
- ...input.ref ?? {},
56
- kind: "shared-agent",
57
- provider: input.provider,
58
- sharedAgentId
59
- },
60
- label: input.label,
61
- ...badge ? { badge } : {},
62
- ...input.ownerLabel?.trim() ? { ownerLabel: input.ownerLabel.trim() } : {},
63
- ...input.iconUrl?.trim() ? { iconUrl: input.iconUrl.trim() } : {},
64
- ...input.unavailableReason?.trim() ? { unavailableReason: input.unavailableReason.trim() } : {},
65
- ...input.disabled === true ? { disabled: true } : {}
66
- };
67
- }
68
- function createLocalAgentGUIProviderTargets(providers = agentGUIDefaultTargetProviders) {
69
- return providers.map(
70
- (provider) => createLocalAgentGUIProviderTarget(provider)
71
- );
72
- }
73
- function createStaticAgentGUIProviderTargets(providers = agentGUIDefaultTargetProviders, options) {
74
- const disabledProviders = new Set(
75
- options?.includeDisabledPlaceholders === true ? agentGUIDisabledPlaceholderProviders : []
76
- );
77
- return providers.map(
78
- (provider) => disabledProviders.has(provider) ? createDisabledPlaceholderAgentGUIProviderTarget(provider) : createLocalAgentGUIProviderTarget(provider)
79
- );
80
- }
81
- function localAgentGUIProviderTargetId(provider) {
82
- return `local:${provider}`;
83
- }
84
- function localAgentGUIAgentTargetId(provider) {
85
- switch (provider) {
86
- case "codex":
87
- return "local:codex";
88
- case "claude-code":
89
- return "local:claude-code";
90
- case "tutti-agent":
91
- return "local:tutti-agent";
92
- case "cursor":
93
- return "local:cursor";
94
- case "hermes":
95
- return "local:hermes";
96
- case "nexight":
97
- return "local:nexight";
98
- case "openclaw":
99
- return "local:openclaw";
100
- case "opencode":
101
- return "local:opencode";
102
- default:
103
- return null;
104
- }
105
- }
106
- function normalizeAgentGUIProviderTargets(targets, options) {
107
- const includeDisabledPlaceholders = options?.includeDisabledPlaceholders === true;
108
- const useStaticCatalog = options?.useStaticCatalog !== false;
109
- const source = targets && targets.length > 0 ? targets : [];
110
- const normalizedTargets = [];
111
- const seenTargetKeys = /* @__PURE__ */ new Set();
112
- const seenProviders = /* @__PURE__ */ new Set();
113
- for (const target of source) {
114
- const normalized = normalizeAgentGUIProviderTarget(target);
115
- if (!normalized) {
116
- continue;
117
- }
118
- const dedupeKey = `${normalized.provider}\0${normalized.targetId}`;
119
- if (seenTargetKeys.has(dedupeKey)) {
120
- continue;
121
- }
122
- seenTargetKeys.add(dedupeKey);
123
- seenProviders.add(normalized.provider);
124
- normalizedTargets.push(normalized);
125
- }
126
- if (includeDisabledPlaceholders && normalizedTargets.length > 0) {
127
- for (const provider of agentGUIDisabledPlaceholderProviders) {
128
- if (seenProviders.has(provider)) {
129
- continue;
130
- }
131
- normalizedTargets.push(
132
- createDisabledPlaceholderAgentGUIProviderTarget(provider)
133
- );
134
- }
135
- }
136
- return normalizedTargets.length > 0 || !useStaticCatalog ? normalizedTargets : createStaticAgentGUIProviderTargets(void 0, {
137
- includeDisabledPlaceholders
138
- });
139
- }
140
- function resolveAgentGUIProviderTarget(input) {
141
- const targetByAgentTargetId = new Map(
142
- input.providerTargets.flatMap(
143
- (target) => target.agentTargetId ? [[target.agentTargetId, target]] : []
144
- )
145
- );
146
- const agentTarget = targetByAgentTargetId.get(
147
- input.agentTargetId?.trim() ?? ""
148
- );
149
- if (agentTarget) {
150
- return agentTarget;
151
- }
152
- const providerTargets = input.providerTargets.filter(
153
- (target) => target.provider === input.provider
154
- );
155
- const targetById = new Map(
156
- providerTargets.map((target) => [target.targetId, target])
157
- );
158
- return targetById.get(input.providerTargetId?.trim() ?? "") ?? targetById.get(input.defaultProviderTargetId?.trim() ?? "") ?? targetById.get(localAgentGUIProviderTargetId(input.provider)) ?? providerTargets.find((target) => target.disabled !== true) ?? providerTargets[0] ?? (input.useStaticCatalog === false ? null : createLocalAgentGUIProviderTarget(input.provider));
159
- }
160
- function agentGUIProviderTargetRefsEqual(left, right) {
161
- if (left === right) {
162
- return true;
163
- }
164
- if (!left && !right) {
165
- return true;
166
- }
167
- if (!left || !right) {
168
- return false;
169
- }
170
- return stableProviderTargetRefKey(left) === stableProviderTargetRefKey(right);
171
- }
172
- function normalizeAgentGUIProviderTarget(target) {
173
- const {
174
- targetId: _targetId,
175
- agentTargetId: _agentTargetId,
176
- provider: _provider,
177
- ref: _ref,
178
- label: _label,
179
- badge,
180
- description,
181
- iconUrl,
182
- ownerLabel,
183
- unavailableReason,
184
- ...rest
185
- } = target;
186
- const targetId = target.targetId.trim();
187
- const agentTargetId = target.agentTargetId?.trim();
188
- const label = target.label.trim();
189
- const kind = typeof target.ref.kind === "string" ? target.ref.kind.trim() : "";
190
- if (!targetId || !label || !kind || target.ref.provider !== target.provider) {
191
- return null;
192
- }
193
- const normalizedBadge = normalizeAgentGUIProviderTargetBadge(badge);
194
- return {
195
- ...rest,
196
- targetId,
197
- ...agentTargetId ? { agentTargetId } : {},
198
- provider: target.provider,
199
- ref: {
200
- ...target.ref,
201
- kind,
202
- provider: target.provider
203
- },
204
- label,
205
- ...normalizedBadge ? { badge: normalizedBadge } : {},
206
- ...description?.trim() ? { description: description.trim() } : {},
207
- ...iconUrl?.trim() ? { iconUrl: iconUrl.trim() } : {},
208
- ...ownerLabel?.trim() ? { ownerLabel: ownerLabel.trim() } : {},
209
- ...unavailableReason?.trim() ? { unavailableReason: unavailableReason.trim() } : {}
210
- };
211
- }
212
- function normalizeAgentGUIProviderTargetBadge(badge) {
213
- const iconUrl = badge?.iconUrl?.trim() ?? "";
214
- if (!iconUrl) {
215
- return null;
216
- }
217
- const label = badge?.label?.trim() ?? "";
218
- return {
219
- iconUrl,
220
- ...label ? { label } : {}
221
- };
222
- }
223
- function stableProviderTargetRefKey(ref) {
224
- return JSON.stringify(sortProviderTargetRefValue(ref));
225
- }
226
- function sortProviderTargetRefValue(value) {
227
- if (Array.isArray(value)) {
228
- return value.map(sortProviderTargetRefValue);
229
- }
230
- if (!value || typeof value !== "object") {
231
- return value;
232
- }
233
- return Object.fromEntries(
234
- Object.entries(value).sort(([left], [right]) => left.localeCompare(right)).map(([key, entryValue]) => [key, sortProviderTargetRefValue(entryValue)])
235
- );
236
- }
237
-
238
- export {
239
- agentGUIDefaultTargetProviders,
240
- createLocalAgentGUIProviderTarget,
241
- createDisabledPlaceholderAgentGUIProviderTarget,
242
- createSharedAgentGUIProviderTarget,
243
- createLocalAgentGUIProviderTargets,
244
- localAgentGUIProviderTargetId,
245
- localAgentGUIAgentTargetId,
246
- normalizeAgentGUIProviderTargets,
247
- resolveAgentGUIProviderTarget,
248
- agentGUIProviderTargetRefsEqual
249
- };
250
- //# sourceMappingURL=chunk-N37A62BK.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../providerTargets.ts"],"sourcesContent":["import type {\n AgentGUIProvider,\n AgentGUIProviderTarget,\n AgentGUIProviderTargetBadge,\n AgentGUIProviderTargetRef\n} from \"./types.ts\";\n\nconst agentGUIProviderTargetStaticLabels: Record<AgentGUIProvider, string> = {\n \"claude-code\": \"Claude Code\",\n codex: \"Codex\",\n cursor: \"Cursor\",\n gemini: \"Gemini\",\n hermes: \"Hermes\",\n nexight: \"Tutti Agent\",\n openclaw: \"OpenClaw\",\n opencode: \"OpenCode\",\n \"tutti-agent\": \"Tutti Agent\"\n};\n\nexport const agentGUIDefaultTargetProviders = [\n \"codex\",\n \"claude-code\",\n \"cursor\",\n \"tutti-agent\",\n \"opencode\",\n \"hermes\",\n \"openclaw\"\n] as const satisfies readonly AgentGUIProvider[];\n\nconst agentGUIDisabledPlaceholderProviders = [\n \"hermes\",\n \"openclaw\"\n] as const satisfies readonly AgentGUIProvider[];\n\nexport function createLocalAgentGUIProviderTarget(\n provider: AgentGUIProvider\n): AgentGUIProviderTarget {\n const targetId = localAgentGUIProviderTargetId(provider);\n const agentTargetId = localAgentGUIAgentTargetId(provider);\n return {\n targetId,\n ...(agentTargetId ? { agentTargetId } : {}),\n provider,\n ref: {\n kind: \"local\",\n provider\n },\n label: agentGUIProviderTargetStaticLabels[provider] ?? provider\n };\n}\n\nexport function createDisabledPlaceholderAgentGUIProviderTarget(\n provider: AgentGUIProvider\n): AgentGUIProviderTarget {\n return {\n ...createLocalAgentGUIProviderTarget(provider),\n disabled: true\n };\n}\n\nexport function createSharedAgentGUIProviderTarget(input: {\n provider: AgentGUIProvider;\n sharedAgentId: string;\n label: string;\n agentTargetId?: string | null;\n badge?: AgentGUIProviderTargetBadge | null;\n ownerLabel?: string | null;\n iconUrl?: string | null;\n unavailableReason?: string | null;\n disabled?: boolean;\n ref?: Record<string, unknown> | null;\n}): AgentGUIProviderTarget {\n const sharedAgentId = input.sharedAgentId.trim();\n const targetId = `shared-agent:${sharedAgentId}`;\n const badge = normalizeAgentGUIProviderTargetBadge(input.badge);\n return {\n targetId,\n ...(input.agentTargetId?.trim()\n ? { agentTargetId: input.agentTargetId.trim() }\n : {}),\n provider: input.provider,\n ref: {\n ...(input.ref ?? {}),\n kind: \"shared-agent\",\n provider: input.provider,\n sharedAgentId\n },\n label: input.label,\n ...(badge ? { badge } : {}),\n ...(input.ownerLabel?.trim()\n ? { ownerLabel: input.ownerLabel.trim() }\n : {}),\n ...(input.iconUrl?.trim() ? { iconUrl: input.iconUrl.trim() } : {}),\n ...(input.unavailableReason?.trim()\n ? { unavailableReason: input.unavailableReason.trim() }\n : {}),\n ...(input.disabled === true ? { disabled: true } : {})\n };\n}\n\nexport function createLocalAgentGUIProviderTargets(\n providers: readonly AgentGUIProvider[] = agentGUIDefaultTargetProviders\n): AgentGUIProviderTarget[] {\n return providers.map((provider) =>\n createLocalAgentGUIProviderTarget(provider)\n );\n}\n\nfunction createStaticAgentGUIProviderTargets(\n providers: readonly AgentGUIProvider[] = agentGUIDefaultTargetProviders,\n options?: { includeDisabledPlaceholders?: boolean }\n): AgentGUIProviderTarget[] {\n const disabledProviders = new Set<AgentGUIProvider>(\n options?.includeDisabledPlaceholders === true\n ? agentGUIDisabledPlaceholderProviders\n : []\n );\n return providers.map((provider) =>\n disabledProviders.has(provider)\n ? createDisabledPlaceholderAgentGUIProviderTarget(provider)\n : createLocalAgentGUIProviderTarget(provider)\n );\n}\n\nexport function localAgentGUIProviderTargetId(\n provider: AgentGUIProvider\n): string {\n return `local:${provider}`;\n}\n\nexport function localAgentGUIAgentTargetId(\n provider: AgentGUIProvider\n): string | null {\n switch (provider) {\n case \"codex\":\n return \"local:codex\";\n case \"claude-code\":\n return \"local:claude-code\";\n case \"tutti-agent\":\n return \"local:tutti-agent\";\n case \"cursor\":\n return \"local:cursor\";\n case \"hermes\":\n return \"local:hermes\";\n case \"nexight\":\n return \"local:nexight\";\n case \"openclaw\":\n return \"local:openclaw\";\n case \"opencode\":\n return \"local:opencode\";\n default:\n return null;\n }\n}\n\nexport function normalizeAgentGUIProviderTargets(\n targets: readonly AgentGUIProviderTarget[] | null | undefined,\n options?: {\n includeDisabledPlaceholders?: boolean;\n useStaticCatalog?: boolean;\n }\n): AgentGUIProviderTarget[] {\n const includeDisabledPlaceholders =\n options?.includeDisabledPlaceholders === true;\n const useStaticCatalog = options?.useStaticCatalog !== false;\n const source = targets && targets.length > 0 ? targets : [];\n const normalizedTargets: AgentGUIProviderTarget[] = [];\n const seenTargetKeys = new Set<string>();\n const seenProviders = new Set<AgentGUIProvider>();\n for (const target of source) {\n const normalized = normalizeAgentGUIProviderTarget(target);\n if (!normalized) {\n continue;\n }\n const dedupeKey = `${normalized.provider}\\u0000${normalized.targetId}`;\n if (seenTargetKeys.has(dedupeKey)) {\n continue;\n }\n seenTargetKeys.add(dedupeKey);\n seenProviders.add(normalized.provider);\n normalizedTargets.push(normalized);\n }\n if (includeDisabledPlaceholders && normalizedTargets.length > 0) {\n for (const provider of agentGUIDisabledPlaceholderProviders) {\n if (seenProviders.has(provider)) {\n continue;\n }\n normalizedTargets.push(\n createDisabledPlaceholderAgentGUIProviderTarget(provider)\n );\n }\n }\n return normalizedTargets.length > 0 || !useStaticCatalog\n ? normalizedTargets\n : createStaticAgentGUIProviderTargets(undefined, {\n includeDisabledPlaceholders\n });\n}\n\nexport function resolveAgentGUIProviderTarget(input: {\n agentTargetId?: string | null;\n defaultProviderTargetId?: string | null;\n provider: AgentGUIProvider;\n providerTargetId?: string | null;\n providerTargets: readonly AgentGUIProviderTarget[];\n useStaticCatalog?: boolean;\n}): AgentGUIProviderTarget | null {\n const targetByAgentTargetId = new Map(\n input.providerTargets.flatMap((target) =>\n target.agentTargetId ? [[target.agentTargetId, target] as const] : []\n )\n );\n const agentTarget = targetByAgentTargetId.get(\n input.agentTargetId?.trim() ?? \"\"\n );\n if (agentTarget) {\n return agentTarget;\n }\n const providerTargets = input.providerTargets.filter(\n (target) => target.provider === input.provider\n );\n const targetById = new Map(\n providerTargets.map((target) => [target.targetId, target])\n );\n return (\n targetById.get(input.providerTargetId?.trim() ?? \"\") ??\n targetById.get(input.defaultProviderTargetId?.trim() ?? \"\") ??\n targetById.get(localAgentGUIProviderTargetId(input.provider)) ??\n providerTargets.find((target) => target.disabled !== true) ??\n providerTargets[0] ??\n (input.useStaticCatalog === false\n ? null\n : createLocalAgentGUIProviderTarget(input.provider))\n );\n}\n\nexport function agentGUIProviderTargetRefsEqual(\n left: AgentGUIProviderTargetRef | null | undefined,\n right: AgentGUIProviderTargetRef | null | undefined\n): boolean {\n if (left === right) {\n return true;\n }\n if (!left && !right) {\n return true;\n }\n if (!left || !right) {\n return false;\n }\n return stableProviderTargetRefKey(left) === stableProviderTargetRefKey(right);\n}\n\nfunction normalizeAgentGUIProviderTarget(\n target: AgentGUIProviderTarget\n): AgentGUIProviderTarget | null {\n const {\n targetId: _targetId,\n agentTargetId: _agentTargetId,\n provider: _provider,\n ref: _ref,\n label: _label,\n badge,\n description,\n iconUrl,\n ownerLabel,\n unavailableReason,\n ...rest\n } = target;\n const targetId = target.targetId.trim();\n const agentTargetId = target.agentTargetId?.trim();\n const label = target.label.trim();\n const kind =\n typeof target.ref.kind === \"string\" ? target.ref.kind.trim() : \"\";\n if (!targetId || !label || !kind || target.ref.provider !== target.provider) {\n return null;\n }\n const normalizedBadge = normalizeAgentGUIProviderTargetBadge(badge);\n return {\n ...rest,\n targetId,\n ...(agentTargetId ? { agentTargetId } : {}),\n provider: target.provider,\n ref: {\n ...target.ref,\n kind,\n provider: target.provider\n },\n label,\n ...(normalizedBadge ? { badge: normalizedBadge } : {}),\n ...(description?.trim() ? { description: description.trim() } : {}),\n ...(iconUrl?.trim() ? { iconUrl: iconUrl.trim() } : {}),\n ...(ownerLabel?.trim() ? { ownerLabel: ownerLabel.trim() } : {}),\n ...(unavailableReason?.trim()\n ? { unavailableReason: unavailableReason.trim() }\n : {})\n };\n}\n\nfunction normalizeAgentGUIProviderTargetBadge(\n badge: AgentGUIProviderTargetBadge | null | undefined\n): AgentGUIProviderTargetBadge | null {\n const iconUrl = badge?.iconUrl?.trim() ?? \"\";\n if (!iconUrl) {\n return null;\n }\n const label = badge?.label?.trim() ?? \"\";\n return {\n iconUrl,\n ...(label ? { label } : {})\n };\n}\n\nfunction stableProviderTargetRefKey(ref: AgentGUIProviderTargetRef): string {\n return JSON.stringify(sortProviderTargetRefValue(ref));\n}\n\nfunction sortProviderTargetRefValue(value: unknown): unknown {\n if (Array.isArray(value)) {\n return value.map(sortProviderTargetRefValue);\n }\n if (!value || typeof value !== \"object\") {\n return value;\n }\n return Object.fromEntries(\n Object.entries(value)\n .sort(([left], [right]) => left.localeCompare(right))\n .map(([key, entryValue]) => [key, sortProviderTargetRefValue(entryValue)])\n );\n}\n"],"mappings":"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","names":[]}
@@ -1,173 +0,0 @@
1
- import {
2
- claudeRoundedUrl,
3
- codexRoundedUrl,
4
- cursorColorfulUrl,
5
- cursorRoundedUrl,
6
- geminiRoundedUrl,
7
- hermesRoundedUrl,
8
- manageAgentClaudeCodeUrl,
9
- manageAgentTuttiUrl,
10
- normalizeManagedAgentProvider,
11
- openclawRoundedUrl,
12
- opencodeRoundedUrl,
13
- tuttiAgentRoundedUrl
14
- } from "./chunk-4I2VCAMW.js";
15
-
16
- // app/renderer/assets/icons/agents/claudecode-flat-filled.svg
17
- var claudecode_flat_filled_default = "./claudecode-flat-filled-NHO4JCVK.svg";
18
-
19
- // app/renderer/assets/icons/agents/codex-flat-filled.svg
20
- var codex_flat_filled_default = "./codex-flat-filled-WYHCF5VR.svg";
21
-
22
- // app/renderer/assets/icons/agents/cursor-flat-filled.svg
23
- var cursor_flat_filled_default = "./cursor-flat-filled-CL7N3BTZ.svg";
24
-
25
- // app/renderer/assets/icons/agents/opencode-flat-filled.svg
26
- var opencode_flat_filled_default = "./opencode-flat-filled-CYAJPX45.svg";
27
-
28
- // app/renderer/assets/icons/agents/tutti-flat-filled.svg
29
- var tutti_flat_filled_default = "./tutti-flat-filled-K32QBTZE.svg";
30
-
31
- // agentGuiSessionProviderIconUrls.ts
32
- function resolveAgentGuiSessionProviderIconUrl(provider) {
33
- switch (normalizeManagedAgentProvider(provider)) {
34
- case "claude-code":
35
- return claudeRoundedUrl;
36
- case "codex":
37
- return codexRoundedUrl;
38
- case "cursor":
39
- return cursorColorfulUrl;
40
- case "opencode":
41
- return opencodeRoundedUrl;
42
- case "tutti":
43
- return manageAgentTuttiUrl;
44
- default:
45
- return null;
46
- }
47
- }
48
- function resolveAgentGuiSessionProviderFlatIconUrl(provider) {
49
- switch (normalizeManagedAgentProvider(provider)) {
50
- case "claude-code":
51
- return claudecode_flat_filled_default;
52
- case "codex":
53
- return codex_flat_filled_default;
54
- case "cursor":
55
- return cursor_flat_filled_default;
56
- case "opencode":
57
- return opencode_flat_filled_default;
58
- case "tutti":
59
- return tutti_flat_filled_default;
60
- default:
61
- return null;
62
- }
63
- }
64
-
65
- // agent-gui/agentGuiNode/model/agentGuiRailLayout.ts
66
- function clamp(value, min, max) {
67
- return Math.min(max, Math.max(min, value));
68
- }
69
- var AGENT_GUI_CONVERSATION_RAIL_DEFAULT_WIDTH_PX = 280;
70
- var AGENT_GUI_CONVERSATION_RAIL_MIN_WIDTH_PX = 248;
71
- var AGENT_GUI_CONVERSATION_RAIL_MAX_WIDTH_PX = 520;
72
- var AGENT_GUI_DETAIL_MIN_WIDTH_PX = 220;
73
- var AGENT_GUI_RAIL_RESIZE_HANDLE_WIDTH_PX = 10;
74
- var AGENT_GUI_COLLAPSED_MIN_WIDTH_PX = 460;
75
- var AGENT_GUI_EXPANDED_MIN_WIDTH_PX = AGENT_GUI_CONVERSATION_RAIL_MIN_WIDTH_PX + AGENT_GUI_DETAIL_MIN_WIDTH_PX + AGENT_GUI_RAIL_RESIZE_HANDLE_WIDTH_PX;
76
- var AGENT_GUI_AUTO_COLLAPSE_WIDTH_PX = 610;
77
- var AGENT_GUI_EXPANDED_TARGET_WIDTH_PX = 800;
78
- function shouldAutoCollapseAgentGUIConversationRail(containerWidthPx) {
79
- return Number.isFinite(containerWidthPx) && containerWidthPx > 0 && containerWidthPx <= AGENT_GUI_AUTO_COLLAPSE_WIDTH_PX;
80
- }
81
- function resolveAgentGUIConversationRailMaxWidthPx(containerWidthPx) {
82
- const safeContainerWidth = Number.isFinite(containerWidthPx) && containerWidthPx > 0 ? containerWidthPx : AGENT_GUI_CONVERSATION_RAIL_DEFAULT_WIDTH_PX + AGENT_GUI_DETAIL_MIN_WIDTH_PX + AGENT_GUI_RAIL_RESIZE_HANDLE_WIDTH_PX;
83
- return Math.max(
84
- AGENT_GUI_CONVERSATION_RAIL_MIN_WIDTH_PX,
85
- Math.min(
86
- AGENT_GUI_CONVERSATION_RAIL_MAX_WIDTH_PX,
87
- safeContainerWidth - AGENT_GUI_DETAIL_MIN_WIDTH_PX - AGENT_GUI_RAIL_RESIZE_HANDLE_WIDTH_PX
88
- )
89
- );
90
- }
91
- function clampAgentGUIConversationRailWidthPx(widthPx, containerWidthPx) {
92
- const preferredWidthPx = typeof widthPx === "number" && Number.isFinite(widthPx) ? Math.round(widthPx) : null;
93
- return clamp(
94
- preferredWidthPx ?? AGENT_GUI_CONVERSATION_RAIL_DEFAULT_WIDTH_PX,
95
- AGENT_GUI_CONVERSATION_RAIL_MIN_WIDTH_PX,
96
- resolveAgentGUIConversationRailMaxWidthPx(containerWidthPx)
97
- );
98
- }
99
- function resolveNextAgentGUIConversationRailWidthPx(input) {
100
- const nextWidthPx = clampAgentGUIConversationRailWidthPx(
101
- input.requestedWidthPx,
102
- input.containerWidthPx
103
- );
104
- if (input.currentWidthPx === nextWidthPx) {
105
- return input.currentWidthPx;
106
- }
107
- if (input.currentWidthPx === null || input.currentWidthPx === void 0) {
108
- const defaultWidthPx = clampAgentGUIConversationRailWidthPx(
109
- null,
110
- input.containerWidthPx
111
- );
112
- if (nextWidthPx === defaultWidthPx) {
113
- return null;
114
- }
115
- }
116
- return nextWidthPx;
117
- }
118
- function resolveAgentGUIExpandedWindowFrame(input) {
119
- const desiredRailWidthPx = clampAgentGUIConversationRailWidthPx(
120
- input.conversationRailWidthPx,
121
- AGENT_GUI_CONVERSATION_RAIL_MAX_WIDTH_PX + AGENT_GUI_DETAIL_MIN_WIDTH_PX + AGENT_GUI_RAIL_RESIZE_HANDLE_WIDTH_PX
122
- );
123
- const desiredWidthPx = Math.max(
124
- Math.round(input.width),
125
- desiredRailWidthPx + AGENT_GUI_DETAIL_MIN_WIDTH_PX + AGENT_GUI_RAIL_RESIZE_HANDLE_WIDTH_PX,
126
- AGENT_GUI_EXPANDED_MIN_WIDTH_PX,
127
- AGENT_GUI_EXPANDED_TARGET_WIDTH_PX
128
- );
129
- const desktopWidthPx = Number.isFinite(input.desktopSize.width) && input.desktopSize.width > 0 ? Math.round(input.desktopSize.width) : desiredWidthPx;
130
- const nextWidthPx = Math.min(desiredWidthPx, desktopWidthPx);
131
- const maxX = Math.max(0, desktopWidthPx - nextWidthPx);
132
- const nextX = clamp(Math.round(input.position.x), 0, maxX);
133
- return {
134
- position: {
135
- x: nextX,
136
- y: input.position.y
137
- },
138
- size: {
139
- width: nextWidthPx,
140
- height: input.height
141
- }
142
- };
143
- }
144
-
145
- // dockIcons.ts
146
- var agentGuiDockIconUrl = codexRoundedUrl;
147
- var agentGuiDockIconUrls = {
148
- "claude-code": manageAgentClaudeCodeUrl,
149
- codex: codexRoundedUrl,
150
- cursor: cursorRoundedUrl,
151
- gemini: geminiRoundedUrl,
152
- hermes: hermesRoundedUrl,
153
- nexight: manageAgentTuttiUrl,
154
- openclaw: openclawRoundedUrl,
155
- opencode: opencodeRoundedUrl,
156
- "tutti-agent": tuttiAgentRoundedUrl
157
- };
158
-
159
- export {
160
- resolveAgentGuiSessionProviderIconUrl,
161
- resolveAgentGuiSessionProviderFlatIconUrl,
162
- AGENT_GUI_CONVERSATION_RAIL_MIN_WIDTH_PX,
163
- AGENT_GUI_DETAIL_MIN_WIDTH_PX,
164
- AGENT_GUI_COLLAPSED_MIN_WIDTH_PX,
165
- shouldAutoCollapseAgentGUIConversationRail,
166
- resolveAgentGUIConversationRailMaxWidthPx,
167
- clampAgentGUIConversationRailWidthPx,
168
- resolveNextAgentGUIConversationRailWidthPx,
169
- resolveAgentGUIExpandedWindowFrame,
170
- agentGuiDockIconUrl,
171
- agentGuiDockIconUrls
172
- };
173
- //# sourceMappingURL=chunk-NROZAN34.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../agentGuiSessionProviderIconUrls.ts","../agent-gui/agentGuiNode/model/agentGuiRailLayout.ts","../dockIcons.ts"],"sourcesContent":["import claudeCodeFlatFilledIconUrl from \"./app/renderer/assets/icons/agents/claudecode-flat-filled.svg\";\nimport codexFlatFilledIconUrl from \"./app/renderer/assets/icons/agents/codex-flat-filled.svg\";\nimport cursorFlatFilledIconUrl from \"./app/renderer/assets/icons/agents/cursor-flat-filled.svg\";\nimport opencodeFlatFilledIconUrl from \"./app/renderer/assets/icons/agents/opencode-flat-filled.svg\";\nimport tuttiFlatFilledIconUrl from \"./app/renderer/assets/icons/agents/tutti-flat-filled.svg\";\nimport {\n claudeRoundedUrl,\n codexRoundedUrl,\n cursorColorfulUrl,\n manageAgentTuttiUrl,\n opencodeRoundedUrl\n} from \"./managedAgentIconAssets\";\nimport { normalizeManagedAgentProvider } from \"./shared/managedAgentProviders\";\n\nexport {\n claudeCodeFlatFilledIconUrl,\n codexFlatFilledIconUrl,\n cursorColorfulUrl,\n cursorFlatFilledIconUrl,\n opencodeFlatFilledIconUrl,\n tuttiFlatFilledIconUrl\n};\n\n/**\n * Colorful session icons, used where the icon renders as a real <img> avatar\n * (collapsed workbench header, dock popup). Colorful assets keep their fill.\n */\nexport function resolveAgentGuiSessionProviderIconUrl(\n provider: string | undefined\n): string | null {\n switch (normalizeManagedAgentProvider(provider)) {\n case \"claude-code\":\n return claudeRoundedUrl;\n case \"codex\":\n return codexRoundedUrl;\n case \"cursor\":\n return cursorColorfulUrl;\n case \"opencode\":\n return opencodeRoundedUrl;\n case \"tutti\":\n return manageAgentTuttiUrl;\n default:\n return null;\n }\n}\n\n/**\n * Flat monochrome session icons, used where the icon renders through a CSS\n * mask (e.g. the conversation rail rows). Colorful assets would collapse to a\n * solid square under a mask, so these must be single-color glyphs with a\n * transparent background.\n */\nexport function resolveAgentGuiSessionProviderFlatIconUrl(\n provider: string | undefined\n): string | null {\n switch (normalizeManagedAgentProvider(provider)) {\n case \"claude-code\":\n return claudeCodeFlatFilledIconUrl;\n case \"codex\":\n return codexFlatFilledIconUrl;\n case \"cursor\":\n return cursorFlatFilledIconUrl;\n case \"opencode\":\n return opencodeFlatFilledIconUrl;\n case \"tutti\":\n return tuttiFlatFilledIconUrl;\n default:\n return null;\n }\n}\n","function clamp(value: number, min: number, max: number): number {\n return Math.min(max, Math.max(min, value));\n}\n\n// Keep aligned with the issue manager task-list rail dimensions.\nexport const AGENT_GUI_CONVERSATION_RAIL_DEFAULT_WIDTH_PX = 280;\nexport const AGENT_GUI_CONVERSATION_RAIL_MIN_WIDTH_PX = 248;\nexport const AGENT_GUI_CONVERSATION_RAIL_MAX_WIDTH_PX = 520;\nexport const AGENT_GUI_DETAIL_MIN_WIDTH_PX = 220;\nexport const AGENT_GUI_RAIL_RESIZE_HANDLE_WIDTH_PX = 10;\nexport const AGENT_GUI_COLLAPSED_MIN_WIDTH_PX = 460;\nexport const AGENT_GUI_EXPANDED_MIN_WIDTH_PX =\n AGENT_GUI_CONVERSATION_RAIL_MIN_WIDTH_PX +\n AGENT_GUI_DETAIL_MIN_WIDTH_PX +\n AGENT_GUI_RAIL_RESIZE_HANDLE_WIDTH_PX;\nexport const AGENT_GUI_AUTO_COLLAPSE_WIDTH_PX = 610;\nexport const AGENT_GUI_EXPANDED_TARGET_WIDTH_PX = 800;\n\nexport interface AgentGUIExpandedWindowFrameInput {\n position: { x: number; y: number };\n width: number;\n height: number;\n desktopSize: { width: number; height: number };\n conversationRailWidthPx: number | null | undefined;\n}\n\nexport function shouldAutoCollapseAgentGUIConversationRail(\n containerWidthPx: number\n): boolean {\n return (\n Number.isFinite(containerWidthPx) &&\n containerWidthPx > 0 &&\n containerWidthPx <= AGENT_GUI_AUTO_COLLAPSE_WIDTH_PX\n );\n}\n\nexport function resolveAgentGUIConversationRailMaxWidthPx(\n containerWidthPx: number\n): number {\n const safeContainerWidth =\n Number.isFinite(containerWidthPx) && containerWidthPx > 0\n ? containerWidthPx\n : AGENT_GUI_CONVERSATION_RAIL_DEFAULT_WIDTH_PX +\n AGENT_GUI_DETAIL_MIN_WIDTH_PX +\n AGENT_GUI_RAIL_RESIZE_HANDLE_WIDTH_PX;\n\n return Math.max(\n AGENT_GUI_CONVERSATION_RAIL_MIN_WIDTH_PX,\n Math.min(\n AGENT_GUI_CONVERSATION_RAIL_MAX_WIDTH_PX,\n safeContainerWidth -\n AGENT_GUI_DETAIL_MIN_WIDTH_PX -\n AGENT_GUI_RAIL_RESIZE_HANDLE_WIDTH_PX\n )\n );\n}\n\nexport function clampAgentGUIConversationRailWidthPx(\n widthPx: number | null | undefined,\n containerWidthPx: number\n): number {\n const preferredWidthPx =\n typeof widthPx === \"number\" && Number.isFinite(widthPx)\n ? Math.round(widthPx)\n : null;\n\n return clamp(\n preferredWidthPx ?? AGENT_GUI_CONVERSATION_RAIL_DEFAULT_WIDTH_PX,\n AGENT_GUI_CONVERSATION_RAIL_MIN_WIDTH_PX,\n resolveAgentGUIConversationRailMaxWidthPx(containerWidthPx)\n );\n}\n\nexport function resolveNextAgentGUIConversationRailWidthPx(input: {\n currentWidthPx: number | null | undefined;\n requestedWidthPx: number;\n containerWidthPx: number;\n}): number | null {\n const nextWidthPx = clampAgentGUIConversationRailWidthPx(\n input.requestedWidthPx,\n input.containerWidthPx\n );\n if (input.currentWidthPx === nextWidthPx) {\n return input.currentWidthPx;\n }\n\n if (input.currentWidthPx === null || input.currentWidthPx === undefined) {\n const defaultWidthPx = clampAgentGUIConversationRailWidthPx(\n null,\n input.containerWidthPx\n );\n if (nextWidthPx === defaultWidthPx) {\n return null;\n }\n }\n\n return nextWidthPx;\n}\n\nexport function resolveAgentGUIExpandedWindowFrame(\n input: AgentGUIExpandedWindowFrameInput\n): {\n position: { x: number; y: number };\n size: { width: number; height: number };\n} {\n const desiredRailWidthPx = clampAgentGUIConversationRailWidthPx(\n input.conversationRailWidthPx,\n AGENT_GUI_CONVERSATION_RAIL_MAX_WIDTH_PX +\n AGENT_GUI_DETAIL_MIN_WIDTH_PX +\n AGENT_GUI_RAIL_RESIZE_HANDLE_WIDTH_PX\n );\n const desiredWidthPx = Math.max(\n Math.round(input.width),\n desiredRailWidthPx +\n AGENT_GUI_DETAIL_MIN_WIDTH_PX +\n AGENT_GUI_RAIL_RESIZE_HANDLE_WIDTH_PX,\n AGENT_GUI_EXPANDED_MIN_WIDTH_PX,\n AGENT_GUI_EXPANDED_TARGET_WIDTH_PX\n );\n const desktopWidthPx =\n Number.isFinite(input.desktopSize.width) && input.desktopSize.width > 0\n ? Math.round(input.desktopSize.width)\n : desiredWidthPx;\n const nextWidthPx = Math.min(desiredWidthPx, desktopWidthPx);\n const maxX = Math.max(0, desktopWidthPx - nextWidthPx);\n const nextX = clamp(Math.round(input.position.x), 0, maxX);\n\n return {\n position: {\n x: nextX,\n y: input.position.y\n },\n size: {\n width: nextWidthPx,\n height: input.height\n }\n };\n}\n","import {\n codexRoundedUrl,\n cursorRoundedUrl,\n geminiRoundedUrl,\n hermesRoundedUrl,\n manageAgentClaudeCodeUrl,\n manageAgentTuttiUrl,\n opencodeRoundedUrl,\n openclawRoundedUrl,\n tuttiAgentRoundedUrl\n} from \"./managedAgentIconAssets.ts\";\n\nexport const agentGuiDockIconUrl = codexRoundedUrl;\n\nexport const agentGuiDockIconUrls = {\n \"claude-code\": manageAgentClaudeCodeUrl,\n codex: codexRoundedUrl,\n cursor: cursorRoundedUrl,\n gemini: geminiRoundedUrl,\n hermes: hermesRoundedUrl,\n nexight: manageAgentTuttiUrl,\n openclaw: openclawRoundedUrl,\n opencode: opencodeRoundedUrl,\n \"tutti-agent\": tuttiAgentRoundedUrl\n} as const;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2BO,SAAS,sCACd,UACe;AACf,UAAQ,8BAA8B,QAAQ,GAAG;AAAA,IAC/C,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT;AACE,aAAO;AAAA,EACX;AACF;AAQO,SAAS,0CACd,UACe;AACf,UAAQ,8BAA8B,QAAQ,GAAG;AAAA,IAC/C,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT;AACE,aAAO;AAAA,EACX;AACF;;;ACrEA,SAAS,MAAM,OAAe,KAAa,KAAqB;AAC9D,SAAO,KAAK,IAAI,KAAK,KAAK,IAAI,KAAK,KAAK,CAAC;AAC3C;AAGO,IAAM,+CAA+C;AACrD,IAAM,2CAA2C;AACjD,IAAM,2CAA2C;AACjD,IAAM,gCAAgC;AACtC,IAAM,wCAAwC;AAC9C,IAAM,mCAAmC;AACzC,IAAM,kCACX,2CACA,gCACA;AACK,IAAM,mCAAmC;AACzC,IAAM,qCAAqC;AAU3C,SAAS,2CACd,kBACS;AACT,SACE,OAAO,SAAS,gBAAgB,KAChC,mBAAmB,KACnB,oBAAoB;AAExB;AAEO,SAAS,0CACd,kBACQ;AACR,QAAM,qBACJ,OAAO,SAAS,gBAAgB,KAAK,mBAAmB,IACpD,mBACA,+CACA,gCACA;AAEN,SAAO,KAAK;AAAA,IACV;AAAA,IACA,KAAK;AAAA,MACH;AAAA,MACA,qBACE,gCACA;AAAA,IACJ;AAAA,EACF;AACF;AAEO,SAAS,qCACd,SACA,kBACQ;AACR,QAAM,mBACJ,OAAO,YAAY,YAAY,OAAO,SAAS,OAAO,IAClD,KAAK,MAAM,OAAO,IAClB;AAEN,SAAO;AAAA,IACL,oBAAoB;AAAA,IACpB;AAAA,IACA,0CAA0C,gBAAgB;AAAA,EAC5D;AACF;AAEO,SAAS,2CAA2C,OAIzC;AAChB,QAAM,cAAc;AAAA,IAClB,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AACA,MAAI,MAAM,mBAAmB,aAAa;AACxC,WAAO,MAAM;AAAA,EACf;AAEA,MAAI,MAAM,mBAAmB,QAAQ,MAAM,mBAAmB,QAAW;AACvE,UAAM,iBAAiB;AAAA,MACrB;AAAA,MACA,MAAM;AAAA,IACR;AACA,QAAI,gBAAgB,gBAAgB;AAClC,aAAO;AAAA,IACT;AAAA,EACF;AAEA,SAAO;AACT;AAEO,SAAS,mCACd,OAIA;AACA,QAAM,qBAAqB;AAAA,IACzB,MAAM;AAAA,IACN,2CACE,gCACA;AAAA,EACJ;AACA,QAAM,iBAAiB,KAAK;AAAA,IAC1B,KAAK,MAAM,MAAM,KAAK;AAAA,IACtB,qBACE,gCACA;AAAA,IACF;AAAA,IACA;AAAA,EACF;AACA,QAAM,iBACJ,OAAO,SAAS,MAAM,YAAY,KAAK,KAAK,MAAM,YAAY,QAAQ,IAClE,KAAK,MAAM,MAAM,YAAY,KAAK,IAClC;AACN,QAAM,cAAc,KAAK,IAAI,gBAAgB,cAAc;AAC3D,QAAM,OAAO,KAAK,IAAI,GAAG,iBAAiB,WAAW;AACrD,QAAM,QAAQ,MAAM,KAAK,MAAM,MAAM,SAAS,CAAC,GAAG,GAAG,IAAI;AAEzD,SAAO;AAAA,IACL,UAAU;AAAA,MACR,GAAG;AAAA,MACH,GAAG,MAAM,SAAS;AAAA,IACpB;AAAA,IACA,MAAM;AAAA,MACJ,OAAO;AAAA,MACP,QAAQ,MAAM;AAAA,IAChB;AAAA,EACF;AACF;;;AC7HO,IAAM,sBAAsB;AAE5B,IAAM,uBAAuB;AAAA,EAClC,eAAe;AAAA,EACf,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,UAAU;AAAA,EACV,UAAU;AAAA,EACV,eAAe;AACjB;","names":[]}