@geminilight/mindos 1.1.49 → 1.1.51

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 (132) hide show
  1. package/dist/agent/prompt/agent-prompt.txt +26 -4
  2. package/dist/agent/runtime/adapter-contracts.d.ts +10 -0
  3. package/dist/agent/runtime/adapter-contracts.d.ts.map +1 -0
  4. package/dist/agent/runtime/adapter-contracts.js +144 -0
  5. package/dist/agent/runtime/adapter-contracts.js.map +1 -0
  6. package/dist/agent/runtime/compatibility.d.ts +12 -0
  7. package/dist/agent/runtime/compatibility.d.ts.map +1 -0
  8. package/dist/agent/runtime/compatibility.js +401 -0
  9. package/dist/agent/runtime/compatibility.js.map +1 -0
  10. package/dist/agent/runtime/descriptors.d.ts.map +1 -1
  11. package/dist/agent/runtime/descriptors.js +41 -3
  12. package/dist/agent/runtime/descriptors.js.map +1 -1
  13. package/dist/agent/runtime/detection.d.ts.map +1 -1
  14. package/dist/agent/runtime/detection.js +116 -0
  15. package/dist/agent/runtime/detection.js.map +1 -1
  16. package/dist/agent/runtime/index.d.ts +2 -0
  17. package/dist/agent/runtime/index.d.ts.map +1 -1
  18. package/dist/agent/runtime/index.js +2 -0
  19. package/dist/agent/runtime/index.js.map +1 -1
  20. package/dist/agent/runtime/lifecycle.d.ts +6 -0
  21. package/dist/agent/runtime/lifecycle.d.ts.map +1 -0
  22. package/dist/agent/runtime/lifecycle.js +311 -0
  23. package/dist/agent/runtime/lifecycle.js.map +1 -0
  24. package/dist/agent/runtime/registry.d.ts +139 -2
  25. package/dist/agent/runtime/registry.d.ts.map +1 -1
  26. package/dist/agent/runtime/registry.js.map +1 -1
  27. package/dist/agent/runtime/skill-runtime-matcher.d.ts +32 -0
  28. package/dist/agent/runtime/skill-runtime-matcher.d.ts.map +1 -0
  29. package/dist/agent/runtime/skill-runtime-matcher.js +380 -0
  30. package/dist/agent/runtime/skill-runtime-matcher.js.map +1 -0
  31. package/dist/agent/runtime/skill-runtime-requirements.d.ts +23 -0
  32. package/dist/agent/runtime/skill-runtime-requirements.d.ts.map +1 -0
  33. package/dist/agent/runtime/skill-runtime-requirements.js +15 -0
  34. package/dist/agent/runtime/skill-runtime-requirements.js.map +1 -0
  35. package/dist/agent/tool/capability-registry.js +2 -0
  36. package/dist/agent/tool/capability-registry.js.map +1 -1
  37. package/dist/agent/turn/index.d.ts +18 -2
  38. package/dist/agent/turn/index.d.ts.map +1 -1
  39. package/dist/agent/turn/index.js +52 -1
  40. package/dist/agent/turn/index.js.map +1 -1
  41. package/dist/protocols/acp/agent-descriptors.d.ts +49 -2
  42. package/dist/protocols/acp/agent-descriptors.d.ts.map +1 -1
  43. package/dist/protocols/acp/agent-descriptors.js +281 -19
  44. package/dist/protocols/acp/agent-descriptors.js.map +1 -1
  45. package/dist/protocols/acp/detect-local.d.ts +2 -1
  46. package/dist/protocols/acp/detect-local.d.ts.map +1 -1
  47. package/dist/protocols/acp/detect-local.js +150 -3
  48. package/dist/protocols/acp/detect-local.js.map +1 -1
  49. package/dist/protocols/acp/index.d.ts +4 -4
  50. package/dist/protocols/acp/index.d.ts.map +1 -1
  51. package/dist/protocols/acp/index.js +24 -24
  52. package/dist/protocols/acp/index.js.map +1 -1
  53. package/dist/protocols/acp/session.d.ts +4 -1
  54. package/dist/protocols/acp/session.d.ts.map +1 -1
  55. package/dist/protocols/acp/session.js +287 -11
  56. package/dist/protocols/acp/session.js.map +1 -1
  57. package/dist/protocols/acp/subprocess.d.ts +3 -1
  58. package/dist/protocols/acp/subprocess.d.ts.map +1 -1
  59. package/dist/protocols/acp/subprocess.js +67 -2
  60. package/dist/protocols/acp/subprocess.js.map +1 -1
  61. package/dist/protocols/acp/types.d.ts +104 -13
  62. package/dist/protocols/acp/types.d.ts.map +1 -1
  63. package/dist/protocols/acp/types.js.map +1 -1
  64. package/dist/server/contract.d.ts.map +1 -1
  65. package/dist/server/contract.js +8 -0
  66. package/dist/server/contract.js.map +1 -1
  67. package/dist/server/handlers/acp.d.ts +13 -9
  68. package/dist/server/handlers/acp.d.ts.map +1 -1
  69. package/dist/server/handlers/acp.js +34 -36
  70. package/dist/server/handlers/acp.js.map +1 -1
  71. package/dist/server/handlers/agent-runtimes.d.ts +1 -1
  72. package/dist/server/handlers/agent-runtimes.d.ts.map +1 -1
  73. package/dist/server/handlers/agent-runtimes.js.map +1 -1
  74. package/dist/server/handlers/agent-turn.d.ts +5 -0
  75. package/dist/server/handlers/agent-turn.d.ts.map +1 -1
  76. package/dist/server/handlers/agent-turn.js +47 -0
  77. package/dist/server/handlers/agent-turn.js.map +1 -1
  78. package/dist/server/handlers/mcp-runtime-projections.d.ts +49 -0
  79. package/dist/server/handlers/mcp-runtime-projections.d.ts.map +1 -0
  80. package/dist/server/handlers/mcp-runtime-projections.js +216 -0
  81. package/dist/server/handlers/mcp-runtime-projections.js.map +1 -0
  82. package/dist/server/handlers/runtime-adapter-projections.d.ts +90 -0
  83. package/dist/server/handlers/runtime-adapter-projections.d.ts.map +1 -0
  84. package/dist/server/handlers/runtime-adapter-projections.js +329 -0
  85. package/dist/server/handlers/runtime-adapter-projections.js.map +1 -0
  86. package/dist/server/handlers/runtime-artifact-projections.d.ts +57 -0
  87. package/dist/server/handlers/runtime-artifact-projections.d.ts.map +1 -0
  88. package/dist/server/handlers/runtime-artifact-projections.js +147 -0
  89. package/dist/server/handlers/runtime-artifact-projections.js.map +1 -0
  90. package/dist/server/handlers/runtime-automation-projections.d.ts +49 -0
  91. package/dist/server/handlers/runtime-automation-projections.d.ts.map +1 -0
  92. package/dist/server/handlers/runtime-automation-projections.js +114 -0
  93. package/dist/server/handlers/runtime-automation-projections.js.map +1 -0
  94. package/dist/server/handlers/runtime-permission-projections.d.ts +71 -0
  95. package/dist/server/handlers/runtime-permission-projections.d.ts.map +1 -0
  96. package/dist/server/handlers/runtime-permission-projections.js +223 -0
  97. package/dist/server/handlers/runtime-permission-projections.js.map +1 -0
  98. package/dist/server/handlers/runtime-readiness.d.ts +68 -0
  99. package/dist/server/handlers/runtime-readiness.d.ts.map +1 -0
  100. package/dist/server/handlers/runtime-readiness.js +481 -0
  101. package/dist/server/handlers/runtime-readiness.js.map +1 -0
  102. package/dist/server/handlers/runtime-session-projections.d.ts +81 -0
  103. package/dist/server/handlers/runtime-session-projections.d.ts.map +1 -0
  104. package/dist/server/handlers/runtime-session-projections.js +267 -0
  105. package/dist/server/handlers/runtime-session-projections.js.map +1 -0
  106. package/dist/server/handlers/skill-links.d.ts +1 -1
  107. package/dist/server/handlers/skill-links.d.ts.map +1 -1
  108. package/dist/server/handlers/skill-links.js +17 -2
  109. package/dist/server/handlers/skill-links.js.map +1 -1
  110. package/dist/server/handlers/skill-metadata.d.ts +12 -0
  111. package/dist/server/handlers/skill-metadata.d.ts.map +1 -0
  112. package/dist/server/handlers/skill-metadata.js +179 -0
  113. package/dist/server/handlers/skill-metadata.js.map +1 -0
  114. package/dist/server/handlers/skill-runtime-matches.d.ts +25 -0
  115. package/dist/server/handlers/skill-runtime-matches.d.ts.map +1 -0
  116. package/dist/server/handlers/skill-runtime-matches.js +75 -0
  117. package/dist/server/handlers/skill-runtime-matches.js.map +1 -0
  118. package/dist/server/handlers/skills.d.ts +2 -0
  119. package/dist/server/handlers/skills.d.ts.map +1 -1
  120. package/dist/server/handlers/skills.js +8 -24
  121. package/dist/server/handlers/skills.js.map +1 -1
  122. package/dist/server/http.d.ts.map +1 -1
  123. package/dist/server/http.js +95 -5
  124. package/dist/server/http.js.map +1 -1
  125. package/dist/server/index.d.ts +13 -2
  126. package/dist/server/index.d.ts.map +1 -1
  127. package/dist/server/index.js +12 -1
  128. package/dist/server/index.js.map +1 -1
  129. package/dist/server/route-ownership.d.ts.map +1 -1
  130. package/dist/server/route-ownership.js +8 -0
  131. package/dist/server/route-ownership.js.map +1 -1
  132. package/package.json +9 -9
@@ -0,0 +1,329 @@
1
+ import { errorResponse, json } from '../response.js';
2
+ export async function handleAgentRuntimeAdapterProjectionsGet(searchParams, services) {
3
+ try {
4
+ const runtimes = await services.listRuntimes();
5
+ const payload = buildAgentRuntimeAdapterProjectionsPayload({ runtimes });
6
+ const runtimeFilter = searchParams.get('runtime')?.trim();
7
+ const projections = runtimeFilter
8
+ ? payload.projections.filter((projection) => projection.runtimeId === runtimeFilter || projection.runtimeKind === runtimeFilter)
9
+ : payload.projections;
10
+ return json({ ...payload, projections }, { headers: { 'Cache-Control': 'no-store' } });
11
+ }
12
+ catch (error) {
13
+ return errorResponse(error);
14
+ }
15
+ }
16
+ export function buildAgentRuntimeAdapterProjectionsPayload(input) {
17
+ return {
18
+ schemaVersion: 1,
19
+ projections: input.runtimes.map((runtime) => buildRuntimeAdapterProjection(runtime)),
20
+ };
21
+ }
22
+ function buildRuntimeAdapterProjection(runtime) {
23
+ const connection = buildConnectionProjection(runtime);
24
+ const configuration = buildConfigurationProjection(runtime);
25
+ const health = buildHealthProjection(runtime);
26
+ const commands = buildCommandsProjection(runtime);
27
+ const protocol = buildProtocolProjection(runtime);
28
+ const facets = [connection, configuration, health, commands, protocol];
29
+ const blockers = uniqSorted(facets.flatMap((facet) => facet.blockers ?? []));
30
+ return {
31
+ schemaVersion: 1,
32
+ runtimeId: runtimeKey(runtime),
33
+ runtimeName: runtime.name,
34
+ runtimeKind: runtime.kind,
35
+ runtimeStatus: runtime.status,
36
+ status: resolveAdapterProjectionStatus(runtime, {
37
+ connection,
38
+ configuration,
39
+ health,
40
+ commands,
41
+ protocol,
42
+ }),
43
+ connection,
44
+ configuration,
45
+ health,
46
+ commands,
47
+ protocol,
48
+ reasons: [
49
+ runtimeAvailableReason(runtime),
50
+ ...facets.flatMap((facet) => facet.reasons),
51
+ ],
52
+ ...(blockers.length > 0 ? { blockers } : {}),
53
+ };
54
+ }
55
+ function buildProtocolProjection(runtime) {
56
+ const contract = runtime.adapterContract.protocol;
57
+ const blockers = [];
58
+ const declaredConnectionType = contract.declaredConnectionType;
59
+ const unsupportedDeclaredConnection = declaredConnectionType === 'http' || declaredConnectionType === 'sse';
60
+ const streamingUnknown = contract.supportsStreaming === null;
61
+ const streamingUnsupported = contract.supportsStreaming === false;
62
+ const authUnknown = contract.authRequired === null;
63
+ if (runtime.status !== 'available')
64
+ blockers.push('runtime-available');
65
+ if (unsupportedDeclaredConnection)
66
+ blockers.push('adapter-protocol-connection');
67
+ if (streamingUnknown || streamingUnsupported)
68
+ blockers.push('adapter-protocol-streaming');
69
+ if (authUnknown)
70
+ blockers.push('adapter-protocol-auth');
71
+ const status = runtime.status !== 'available'
72
+ ? 'blocked'
73
+ : unsupportedDeclaredConnection || streamingUnknown || streamingUnsupported || authUnknown
74
+ ? 'limited'
75
+ : 'ready';
76
+ return {
77
+ status,
78
+ ...(declaredConnectionType ? { declaredConnectionType } : {}),
79
+ supportsStreaming: contract.supportsStreaming,
80
+ authRequired: contract.authRequired,
81
+ modelCount: contract.modelCount,
82
+ models: contract.models.map((model) => ({
83
+ id: model.id,
84
+ ...(model.label ? { label: model.label } : {}),
85
+ ...(model.description ? { description: model.description } : {}),
86
+ })),
87
+ ...(contract.promptCapabilities ? { promptCapabilities: contract.promptCapabilities } : {}),
88
+ ...(contract.mcpCapabilities ? { mcpCapabilities: contract.mcpCapabilities } : {}),
89
+ ...(contract.sessionCapabilities ? { sessionCapabilities: contract.sessionCapabilities } : {}),
90
+ summary: contract.summary,
91
+ reasons: [
92
+ reason('adapter-protocol-connection', unsupportedDeclaredConnection ? 'missing' : 'satisfied', unsupportedDeclaredConnection ? 'shared' : protocolOwner(runtime), protocolConnectionSummary(runtime, declaredConnectionType)),
93
+ reason('adapter-protocol-streaming', contract.supportsStreaming === null ? 'unknown' : contract.supportsStreaming ? 'satisfied' : 'missing', protocolOwner(runtime), protocolStreamingSummary(runtime.name, contract.supportsStreaming)),
94
+ reason('adapter-protocol-auth', contract.authRequired === null ? 'unknown' : 'satisfied', protocolOwner(runtime), contract.authRequired === null
95
+ ? `${runtime.name} does not declare whether adapter authentication is required.`
96
+ : `${runtime.name} declares adapter authentication as ${contract.authRequired ? 'required' : 'not required'}.`),
97
+ reason('adapter-protocol-models', contract.modelCount > 0 ? 'satisfied' : 'not-applicable', protocolOwner(runtime), contract.modelCount > 0
98
+ ? `${runtime.name} declares ${contract.modelCount} adapter model option(s).`
99
+ : `${runtime.name} does not declare static adapter model options.`),
100
+ reason('adapter-protocol-prompt-capabilities', contract.promptCapabilities ? 'satisfied' : 'not-applicable', protocolOwner(runtime), contract.promptCapabilities
101
+ ? `${runtime.name} declares prompt input capability flags.`
102
+ : `${runtime.name} does not declare prompt input capability flags.`),
103
+ reason('adapter-protocol-mcp-capabilities', contract.mcpCapabilities ? 'satisfied' : 'not-applicable', protocolOwner(runtime), contract.mcpCapabilities
104
+ ? `${runtime.name} declares MCP transport capability flags.`
105
+ : `${runtime.name} does not declare MCP transport capability flags.`),
106
+ reason('adapter-protocol-session-capabilities', contract.sessionCapabilities ? 'satisfied' : 'not-applicable', protocolOwner(runtime), contract.sessionCapabilities
107
+ ? `${runtime.name} declares session lifecycle capability flags.`
108
+ : `${runtime.name} does not declare session lifecycle capability flags.`),
109
+ ],
110
+ ...(blockers.length > 0 ? { blockers: uniqSorted(blockers) } : {}),
111
+ };
112
+ }
113
+ function buildConnectionProjection(runtime) {
114
+ const contract = runtime.adapterContract.connection;
115
+ const blockers = [];
116
+ const known = contract.kind !== 'unknown';
117
+ if (runtime.status !== 'available')
118
+ blockers.push('runtime-available');
119
+ if (!known)
120
+ blockers.push('adapter-connection-contract');
121
+ const status = runtime.status !== 'available'
122
+ ? 'blocked'
123
+ : known ? 'ready' : 'unknown';
124
+ return {
125
+ status,
126
+ kind: contract.kind,
127
+ owner: contract.owner,
128
+ hasCommand: !!contract.command,
129
+ ...(contract.commandSource ? { commandSource: contract.commandSource } : {}),
130
+ summary: contract.summary,
131
+ reasons: [
132
+ reason('adapter-connection-contract', known ? 'satisfied' : 'unknown', contract.owner, known
133
+ ? `${runtime.name} declares a ${contract.kind} adapter connection surface.`
134
+ : `${runtime.name} does not declare a known adapter connection surface.`),
135
+ ],
136
+ ...(blockers.length > 0 ? { blockers: uniqSorted(blockers) } : {}),
137
+ };
138
+ }
139
+ function buildConfigurationProjection(runtime) {
140
+ const contract = runtime.adapterContract.configuration;
141
+ const fields = [
142
+ { id: 'adapter-model-selection', value: contract.modelSelection, label: 'model selection' },
143
+ { id: 'adapter-credentials', value: contract.credentials, label: 'credentials' },
144
+ { id: 'adapter-settings', value: contract.settings, label: 'settings' },
145
+ ];
146
+ const blockers = [];
147
+ if (runtime.status !== 'available')
148
+ blockers.push('runtime-available');
149
+ for (const field of fields) {
150
+ if (field.value === 'unknown')
151
+ blockers.push(field.id);
152
+ if (field.value === 'unsupported')
153
+ blockers.push(field.id);
154
+ }
155
+ const hasUnsupported = fields.some((field) => field.value === 'unsupported');
156
+ const hasUnknown = fields.some((field) => field.value === 'unknown');
157
+ const status = runtime.status !== 'available'
158
+ ? 'blocked'
159
+ : hasUnsupported ? 'blocked' : hasUnknown ? 'unknown' : 'ready';
160
+ return {
161
+ status,
162
+ modelSelection: contract.modelSelection,
163
+ credentials: contract.credentials,
164
+ settings: contract.settings,
165
+ summary: contract.summary,
166
+ reasons: fields.map((field) => reason(field.id, configurationOwnerStatus(field.value), configurationOwner(field.value), `${runtime.name} ${field.label} ownership is ${field.value}.`)),
167
+ ...(blockers.length > 0 ? { blockers: uniqSorted(blockers) } : {}),
168
+ };
169
+ }
170
+ function buildHealthProjection(runtime) {
171
+ const contract = runtime.adapterContract.health;
172
+ const blockers = [];
173
+ if (runtime.status !== 'available')
174
+ blockers.push('runtime-available');
175
+ if (contract.mode === 'unknown' || contract.mode === 'unsupported')
176
+ blockers.push('adapter-health-contract');
177
+ const status = runtime.status !== 'available'
178
+ ? 'blocked'
179
+ : contract.mode === 'unsupported' ? 'blocked' : contract.mode === 'unknown' ? 'unknown' : 'ready';
180
+ return {
181
+ status,
182
+ mode: contract.mode,
183
+ owner: contract.owner,
184
+ hasCommand: !!contract.command,
185
+ ...(contract.timeoutMs !== undefined ? { timeoutMs: contract.timeoutMs } : {}),
186
+ summary: contract.summary,
187
+ reasons: [
188
+ reason('adapter-health-contract', healthModeStatus(contract.mode), contract.owner, contract.mode === 'unknown'
189
+ ? `${runtime.name} does not declare adapter-specific health semantics yet.`
190
+ : contract.mode === 'unsupported'
191
+ ? `${runtime.name} declares that adapter health checks are unsupported.`
192
+ : `${runtime.name} health is covered by ${contract.mode}.`),
193
+ ],
194
+ ...(blockers.length > 0 ? { blockers: uniqSorted(blockers) } : {}),
195
+ };
196
+ }
197
+ function buildCommandsProjection(runtime) {
198
+ const contract = runtime.adapterContract.commands;
199
+ const commandNames = uniqSorted(contract.commands.map((command) => command.name));
200
+ const blockers = [];
201
+ if (runtime.status !== 'available')
202
+ blockers.push('runtime-available');
203
+ if (contract.discovery === 'unknown' || contract.discovery === 'unsupported')
204
+ blockers.push('adapter-command-discovery');
205
+ const status = runtime.status !== 'available'
206
+ ? 'blocked'
207
+ : contract.discovery === 'unknown'
208
+ ? 'unknown'
209
+ : contract.discovery === 'unsupported'
210
+ ? 'limited'
211
+ : 'ready';
212
+ return {
213
+ status,
214
+ discovery: contract.discovery,
215
+ commandCount: commandNames.length,
216
+ commandNames,
217
+ commands: contract.commands.map((command) => ({
218
+ name: command.name,
219
+ ...(command.description ? { description: command.description } : {}),
220
+ source: command.source,
221
+ })),
222
+ summary: contract.summary,
223
+ reasons: [
224
+ reason('adapter-command-discovery', commandDiscoveryStatus(contract.discovery), commandDiscoveryOwner(contract.discovery), commandDiscoverySummary(runtime.name, contract.discovery, commandNames.length)),
225
+ ],
226
+ ...(blockers.length > 0 ? { blockers: uniqSorted(blockers) } : {}),
227
+ };
228
+ }
229
+ function resolveAdapterProjectionStatus(runtime, facets) {
230
+ if (runtime.status !== 'available')
231
+ return 'blocked';
232
+ if (facets.connection.status === 'blocked' || facets.configuration.status === 'blocked' || facets.health.status === 'blocked') {
233
+ return 'blocked';
234
+ }
235
+ if (facets.connection.status === 'unknown' || facets.configuration.status === 'unknown')
236
+ return 'unknown';
237
+ if (facets.health.status !== 'ready' || facets.commands.status !== 'ready' || facets.protocol.status !== 'ready')
238
+ return 'limited';
239
+ return 'ready';
240
+ }
241
+ function protocolOwner(runtime) {
242
+ return runtime.kind === 'mindos' ? 'mindos' : 'external';
243
+ }
244
+ function protocolConnectionSummary(runtime, declaredConnectionType) {
245
+ if (!declaredConnectionType) {
246
+ return `${runtime.name} does not declare an adapter connection type, so MindOS uses the ${runtime.adapterContract.connection.kind} adapter contract.`;
247
+ }
248
+ if (declaredConnectionType === 'stdio') {
249
+ return `${runtime.name} declares a stdio ACP adapter connection.`;
250
+ }
251
+ if (declaredConnectionType === 'cli') {
252
+ return `${runtime.name} declares a local CLI ACP adapter connection, which MindOS treats as a stdio-launched adapter.`;
253
+ }
254
+ return `${runtime.name} declares a ${declaredConnectionType} ACP adapter connection, but MindOS currently launches generic ACP adapters over stdio.`;
255
+ }
256
+ function protocolStreamingSummary(runtimeName, supportsStreaming) {
257
+ if (supportsStreaming === true) {
258
+ return `${runtimeName} declares streaming support for prompt responses.`;
259
+ }
260
+ if (supportsStreaming === false) {
261
+ return `${runtimeName} declares that streaming prompt responses are unsupported.`;
262
+ }
263
+ return `${runtimeName} does not declare streaming support yet.`;
264
+ }
265
+ function configurationOwnerStatus(owner) {
266
+ if (owner === 'unknown')
267
+ return 'unknown';
268
+ if (owner === 'unsupported')
269
+ return 'missing';
270
+ return 'satisfied';
271
+ }
272
+ function configurationOwner(owner) {
273
+ if (owner === 'mindos-session' || owner === 'mindos-settings')
274
+ return 'mindos';
275
+ if (owner === 'runtime-native' || owner === 'adapter-declared')
276
+ return 'external';
277
+ return 'shared';
278
+ }
279
+ function healthModeStatus(mode) {
280
+ if (mode === 'unknown')
281
+ return 'unknown';
282
+ if (mode === 'unsupported')
283
+ return 'missing';
284
+ return 'satisfied';
285
+ }
286
+ function commandDiscoveryStatus(discovery) {
287
+ if (discovery === 'unknown')
288
+ return 'unknown';
289
+ if (discovery === 'unsupported')
290
+ return 'missing';
291
+ return 'satisfied';
292
+ }
293
+ function commandDiscoveryOwner(discovery) {
294
+ if (discovery === 'mindos-skills')
295
+ return 'mindos';
296
+ if (discovery === 'runtime-event' || discovery === 'adapter-declared')
297
+ return 'external';
298
+ return 'shared';
299
+ }
300
+ function commandDiscoverySummary(runtimeName, discovery, commandCount) {
301
+ if (discovery === 'mindos-skills') {
302
+ return `${runtimeName} commands are assembled from enabled MindOS skills.`;
303
+ }
304
+ if (discovery === 'runtime-event') {
305
+ return `${runtimeName} delegates command discovery to runtime-native events.`;
306
+ }
307
+ if (discovery === 'adapter-declared') {
308
+ return `${runtimeName} declares ${commandCount} static adapter command(s).`;
309
+ }
310
+ if (discovery === 'unsupported') {
311
+ return `${runtimeName} declares command discovery as unsupported.`;
312
+ }
313
+ return `${runtimeName} does not declare a command discovery contract yet.`;
314
+ }
315
+ function runtimeAvailableReason(runtime) {
316
+ return reason('runtime-available', runtime.status === 'available' ? 'satisfied' : 'missing', runtime.status === 'available' ? 'mindos' : 'shared', runtime.status === 'available'
317
+ ? `${runtime.name} is available for adapter contract diagnostics.`
318
+ : `${runtime.name} is not available, so adapter contract readiness cannot be trusted.`);
319
+ }
320
+ function reason(id, status, owner, summary) {
321
+ return { id, status, owner, summary };
322
+ }
323
+ function runtimeKey(runtime) {
324
+ return runtime.runtimeId ?? runtime.id;
325
+ }
326
+ function uniqSorted(values) {
327
+ return [...new Set(values)].sort();
328
+ }
329
+ //# sourceMappingURL=runtime-adapter-projections.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-adapter-projections.js","sourceRoot":"","sources":["../../../src/server/handlers/runtime-adapter-projections.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,57 @@
1
+ import type { AgentRuntimeCompatibilityOwner, AgentRuntimeCompatibilityRequirementStatus, AgentRuntimeDescriptor, AgentRuntimeHarnessCapabilities, AgentRuntimeKind, AgentRuntimeStatus } from '../../agent/runtime/registry.js';
2
+ import { type MindosServerResponse } from '../response.js';
3
+ export type AgentRuntimeArtifactProjectionStatus = 'ready' | 'limited' | 'blocked' | 'unknown';
4
+ export type AgentRuntimeArtifactOutputKind = AgentRuntimeHarnessCapabilities['output'][number];
5
+ export type AgentRuntimeArtifactHandoffTarget = 'message' | 'diff' | 'checkpoint' | 'artifact' | 'branch' | 'pull-request';
6
+ export type AgentRuntimeArtifactProjectionReason = {
7
+ id: string;
8
+ status: AgentRuntimeCompatibilityRequirementStatus;
9
+ owner: AgentRuntimeCompatibilityOwner;
10
+ summary: string;
11
+ };
12
+ export type AgentRuntimeArtifactProjection = {
13
+ schemaVersion: 1;
14
+ runtimeId: string;
15
+ runtimeName: string;
16
+ runtimeKind: AgentRuntimeKind;
17
+ runtimeStatus: AgentRuntimeStatus;
18
+ status: AgentRuntimeArtifactProjectionStatus;
19
+ outputKinds: AgentRuntimeArtifactOutputKind[];
20
+ reviewableOutputKinds: AgentRuntimeArtifactOutputKind[];
21
+ nativeHandoffTargets: AgentRuntimeArtifactHandoffTarget[];
22
+ nativeReview: {
23
+ supported: boolean;
24
+ summary: string;
25
+ };
26
+ artifactIndex: {
27
+ supported: boolean;
28
+ status: 'ready' | 'missing' | 'unknown';
29
+ owner: 'mindos';
30
+ summary: string;
31
+ };
32
+ rollback: {
33
+ supported: boolean;
34
+ source: 'runtime-checkpoint' | 'none' | 'unknown';
35
+ summary: string;
36
+ };
37
+ branchPr: {
38
+ supported: boolean;
39
+ summary: string;
40
+ };
41
+ reasons: AgentRuntimeArtifactProjectionReason[];
42
+ blockers?: string[];
43
+ };
44
+ export type AgentRuntimeArtifactProjectionsPayload = {
45
+ schemaVersion: 1;
46
+ projections: AgentRuntimeArtifactProjection[];
47
+ };
48
+ export type AgentRuntimeArtifactProjectionServices = {
49
+ listRuntimes(): AgentRuntimeDescriptor[] | Promise<AgentRuntimeDescriptor[]>;
50
+ };
51
+ export declare function handleAgentRuntimeArtifactProjectionsGet(searchParams: URLSearchParams, services: AgentRuntimeArtifactProjectionServices): Promise<MindosServerResponse<AgentRuntimeArtifactProjectionsPayload | {
52
+ error: string;
53
+ }>>;
54
+ export declare function buildAgentRuntimeArtifactProjectionsPayload(input: {
55
+ runtimes: AgentRuntimeDescriptor[];
56
+ }): AgentRuntimeArtifactProjectionsPayload;
57
+ //# sourceMappingURL=runtime-artifact-projections.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-artifact-projections.d.ts","sourceRoot":"","sources":["../../../src/server/handlers/runtime-artifact-projections.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,8BAA8B,EAC9B,0CAA0C,EAC1C,sBAAsB,EACtB,+BAA+B,EAC/B,gBAAgB,EAChB,kBAAkB,EACnB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAuB,KAAK,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAEhF,MAAM,MAAM,oCAAoC,GAC5C,OAAO,GACP,SAAS,GACT,SAAS,GACT,SAAS,CAAC;AAEd,MAAM,MAAM,8BAA8B,GAAG,+BAA+B,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC;AAE/F,MAAM,MAAM,iCAAiC,GACzC,SAAS,GACT,MAAM,GACN,YAAY,GACZ,UAAU,GACV,QAAQ,GACR,cAAc,CAAC;AAEnB,MAAM,MAAM,oCAAoC,GAAG;IACjD,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,0CAA0C,CAAC;IACnD,KAAK,EAAE,8BAA8B,CAAC;IACtC,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,8BAA8B,GAAG;IAC3C,aAAa,EAAE,CAAC,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,gBAAgB,CAAC;IAC9B,aAAa,EAAE,kBAAkB,CAAC;IAClC,MAAM,EAAE,oCAAoC,CAAC;IAC7C,WAAW,EAAE,8BAA8B,EAAE,CAAC;IAC9C,qBAAqB,EAAE,8BAA8B,EAAE,CAAC;IACxD,oBAAoB,EAAE,iCAAiC,EAAE,CAAC;IAC1D,YAAY,EAAE;QACZ,SAAS,EAAE,OAAO,CAAC;QACnB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,aAAa,EAAE;QACb,SAAS,EAAE,OAAO,CAAC;QACnB,MAAM,EAAE,OAAO,GAAG,SAAS,GAAG,SAAS,CAAC;QACxC,KAAK,EAAE,QAAQ,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,QAAQ,EAAE;QACR,SAAS,EAAE,OAAO,CAAC;QACnB,MAAM,EAAE,oBAAoB,GAAG,MAAM,GAAG,SAAS,CAAC;QAClD,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,QAAQ,EAAE;QACR,SAAS,EAAE,OAAO,CAAC;QACnB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,OAAO,EAAE,oCAAoC,EAAE,CAAC;IAChD,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,sCAAsC,GAAG;IACnD,aAAa,EAAE,CAAC,CAAC;IACjB,WAAW,EAAE,8BAA8B,EAAE,CAAC;CAC/C,CAAC;AAEF,MAAM,MAAM,sCAAsC,GAAG;IACnD,YAAY,IAAI,sBAAsB,EAAE,GAAG,OAAO,CAAC,sBAAsB,EAAE,CAAC,CAAC;CAC9E,CAAC;AAEF,wBAAsB,wCAAwC,CAC5D,YAAY,EAAE,eAAe,EAC7B,QAAQ,EAAE,sCAAsC,GAC/C,OAAO,CAAC,oBAAoB,CAAC,sCAAsC,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,CAe3F;AAED,wBAAgB,2CAA2C,CAAC,KAAK,EAAE;IACjE,QAAQ,EAAE,sBAAsB,EAAE,CAAC;CACpC,GAAG,sCAAsC,CAKzC"}
@@ -0,0 +1,147 @@
1
+ import { errorResponse, json } from '../response.js';
2
+ export async function handleAgentRuntimeArtifactProjectionsGet(searchParams, services) {
3
+ try {
4
+ const runtimes = await services.listRuntimes();
5
+ const payload = buildAgentRuntimeArtifactProjectionsPayload({ runtimes });
6
+ const runtimeFilter = searchParams.get('runtime')?.trim();
7
+ const projections = runtimeFilter
8
+ ? payload.projections.filter((projection) => projection.runtimeId === runtimeFilter || projection.runtimeKind === runtimeFilter)
9
+ : payload.projections;
10
+ return json({ ...payload, projections }, { headers: { 'Cache-Control': 'no-store' } });
11
+ }
12
+ catch (error) {
13
+ return errorResponse(error);
14
+ }
15
+ }
16
+ export function buildAgentRuntimeArtifactProjectionsPayload(input) {
17
+ return {
18
+ schemaVersion: 1,
19
+ projections: input.runtimes.map((runtime) => buildRuntimeArtifactProjection(runtime)),
20
+ };
21
+ }
22
+ function buildRuntimeArtifactProjection(runtime) {
23
+ const outputKinds = uniqSorted(runtime.harnessCapabilities?.output ?? []);
24
+ const reviewableOutputKinds = outputKinds.filter(isReviewableOutputKind);
25
+ const nativeHandoffTargets = outputKinds.map(outputKindToHandoffTarget);
26
+ const artifactAssessment = runtime.compatibility.scenarios['artifact-governance'];
27
+ const artifactIndexReady = artifactAssessment.requirements.some((entry) => entry.id === 'artifact-index' && entry.status === 'satisfied');
28
+ const hasDeclaredOutputContract = !!runtime.harnessCapabilities;
29
+ const hasReviewableOutput = reviewableOutputKinds.length > 0;
30
+ const blockers = new Set();
31
+ if (runtime.status !== 'available')
32
+ blockers.add('runtime-available');
33
+ if (!hasDeclaredOutputContract)
34
+ blockers.add('runtime-output-contract');
35
+ if (!artifactIndexReady)
36
+ blockers.add('artifact-index');
37
+ if (!hasReviewableOutput) {
38
+ blockers.add(runtime.kind === 'acp' ? 'adapter-artifact-contract' : 'runtime-review-output');
39
+ }
40
+ const status = resolveArtifactProjectionStatus({
41
+ runtime,
42
+ artifactIndexReady,
43
+ hasDeclaredOutputContract,
44
+ hasReviewableOutput,
45
+ });
46
+ return {
47
+ schemaVersion: 1,
48
+ runtimeId: runtime.runtimeId ?? runtime.id,
49
+ runtimeName: runtime.name,
50
+ runtimeKind: runtime.kind,
51
+ runtimeStatus: runtime.status,
52
+ status,
53
+ outputKinds,
54
+ reviewableOutputKinds,
55
+ nativeHandoffTargets: uniqSorted(nativeHandoffTargets),
56
+ nativeReview: {
57
+ supported: hasReviewableOutput,
58
+ summary: hasReviewableOutput
59
+ ? `${runtime.name} declares reviewable output kinds: ${reviewableOutputKinds.join(', ')}.`
60
+ : `${runtime.name} does not declare durable diff, artifact, checkpoint, branch, or PR output yet.`,
61
+ },
62
+ artifactIndex: {
63
+ supported: artifactIndexReady,
64
+ status: artifactIndexReady ? 'ready' : 'missing',
65
+ owner: 'mindos',
66
+ summary: artifactIndexReady
67
+ ? 'MindOS has a unified artifact index for this runtime.'
68
+ : 'MindOS still needs a cross-runtime artifact index before outputs can be durably reviewed and compared.',
69
+ },
70
+ rollback: {
71
+ supported: outputKinds.includes('checkpoint'),
72
+ source: outputKinds.includes('checkpoint') ? 'runtime-checkpoint' : hasDeclaredOutputContract ? 'none' : 'unknown',
73
+ summary: outputKinds.includes('checkpoint')
74
+ ? `${runtime.name} declares checkpoint output that can anchor rollback or compare flows.`
75
+ : `${runtime.name} does not declare checkpoint output through the current runtime descriptor.`,
76
+ },
77
+ branchPr: {
78
+ supported: outputKinds.includes('branch') || outputKinds.includes('pr'),
79
+ summary: outputKinds.includes('branch') || outputKinds.includes('pr')
80
+ ? `${runtime.name} declares branch or PR handoff output.`
81
+ : `${runtime.name} does not declare branch or PR handoff output.`,
82
+ },
83
+ reasons: [
84
+ runtimeAvailableReason(runtime),
85
+ reason('runtime-output-contract', hasReviewableOutput ? 'satisfied' : runtime.kind === 'acp' ? 'unknown' : 'missing', runtime.kind === 'mindos' ? 'mindos' : 'external', hasReviewableOutput
86
+ ? `${runtime.name} exposes reviewable output kinds in its runtime descriptor.`
87
+ : runtime.kind === 'acp'
88
+ ? 'Generic ACP descriptors need adapter-specific artifact/diff/branch/PR declarations before MindOS can trust output governance.'
89
+ : `${runtime.name} does not expose a reviewable output contract yet.`),
90
+ reason('artifact-projection-contract', 'satisfied', 'mindos', 'MindOS exposes a read-only runtime artifact projection contract for diagnostics and UI routing.'),
91
+ reason('artifact-index', artifactIndexReady ? 'satisfied' : 'missing', 'mindos', artifactIndexReady
92
+ ? 'MindOS can persist outputs in a unified cross-runtime artifact index.'
93
+ : 'MindOS cannot yet persist cross-runtime outputs in a unified artifact index.'),
94
+ reason('checkpoint-rollback', outputKinds.includes('checkpoint') ? 'external' : 'missing', outputKinds.includes('checkpoint') ? 'external' : 'shared', outputKinds.includes('checkpoint')
95
+ ? `${runtime.name} owns native checkpoint/rollback semantics.`
96
+ : 'No checkpoint/rollback output is declared for this runtime.'),
97
+ reason('branch-pr-handoff', outputKinds.includes('branch') || outputKinds.includes('pr') ? 'external' : 'missing', outputKinds.includes('branch') || outputKinds.includes('pr') ? 'external' : 'shared', outputKinds.includes('branch') || outputKinds.includes('pr')
98
+ ? `${runtime.name} can hand work off as a branch or PR reference.`
99
+ : 'No branch/PR output is declared for this runtime.'),
100
+ ],
101
+ ...(blockers.size > 0 ? { blockers: uniqSorted([...blockers]) } : {}),
102
+ };
103
+ }
104
+ function resolveArtifactProjectionStatus(input) {
105
+ if (input.runtime.status !== 'available')
106
+ return 'blocked';
107
+ if (!input.hasDeclaredOutputContract)
108
+ return 'unknown';
109
+ if (input.artifactIndexReady && input.hasReviewableOutput)
110
+ return 'ready';
111
+ if (input.hasReviewableOutput)
112
+ return 'limited';
113
+ if (input.runtime.kind === 'acp')
114
+ return 'unknown';
115
+ return 'blocked';
116
+ }
117
+ function runtimeAvailableReason(runtime) {
118
+ return reason('runtime-available', runtime.status === 'available' ? 'satisfied' : 'missing', runtime.status === 'available' ? 'mindos' : 'shared', runtime.status === 'available'
119
+ ? `${runtime.name} is available for artifact projection diagnostics.`
120
+ : `${runtime.name} is not available, so artifact output readiness cannot be trusted.`);
121
+ }
122
+ function isReviewableOutputKind(kind) {
123
+ return kind === 'diff' || kind === 'checkpoint' || kind === 'artifact' || kind === 'branch' || kind === 'pr';
124
+ }
125
+ function outputKindToHandoffTarget(kind) {
126
+ switch (kind) {
127
+ case 'diff':
128
+ return 'diff';
129
+ case 'checkpoint':
130
+ return 'checkpoint';
131
+ case 'artifact':
132
+ return 'artifact';
133
+ case 'branch':
134
+ return 'branch';
135
+ case 'pr':
136
+ return 'pull-request';
137
+ case 'text':
138
+ return 'message';
139
+ }
140
+ }
141
+ function reason(id, status, owner, summary) {
142
+ return { id, status, owner, summary };
143
+ }
144
+ function uniqSorted(values) {
145
+ return [...new Set(values)].sort();
146
+ }
147
+ //# sourceMappingURL=runtime-artifact-projections.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-artifact-projections.js","sourceRoot":"","sources":["../../../src/server/handlers/runtime-artifact-projections.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,49 @@
1
+ import type { AgentRuntimeCompatibilityOwner, AgentRuntimeCompatibilityRequirementStatus, AgentRuntimeDescriptor, AgentRuntimeKind, AgentRuntimeRemoteMode, AgentRuntimeStatus, AgentRuntimeUnattendedSupport } from '../../agent/runtime/registry.js';
2
+ import { type MindosServerResponse } from '../response.js';
3
+ export type AgentRuntimeAutomationProjectionStatus = 'ready' | 'remote-only' | 'limited' | 'blocked' | 'unknown';
4
+ export type AgentRuntimeAutomationReadinessStatus = 'ready' | 'limited' | 'blocked' | 'unknown';
5
+ export type AgentRuntimeAutomationProjectionReason = {
6
+ id: string;
7
+ status: AgentRuntimeCompatibilityRequirementStatus;
8
+ owner: AgentRuntimeCompatibilityOwner;
9
+ summary: string;
10
+ };
11
+ export type AgentRuntimeAutomationProjection = {
12
+ schemaVersion: 1;
13
+ runtimeId: string;
14
+ runtimeName: string;
15
+ runtimeKind: AgentRuntimeKind;
16
+ runtimeStatus: AgentRuntimeStatus;
17
+ status: AgentRuntimeAutomationProjectionStatus;
18
+ remoteControl: {
19
+ status: AgentRuntimeAutomationReadinessStatus;
20
+ supported: boolean;
21
+ mode: AgentRuntimeRemoteMode;
22
+ summary: string;
23
+ blockers?: string[];
24
+ };
25
+ unattendedAutomation: {
26
+ status: AgentRuntimeAutomationReadinessStatus;
27
+ supported: boolean;
28
+ support: AgentRuntimeUnattendedSupport;
29
+ summary: string;
30
+ blockers?: string[];
31
+ };
32
+ productPrerequisites: AgentRuntimeAutomationProjectionReason[];
33
+ reasons: AgentRuntimeAutomationProjectionReason[];
34
+ blockers?: string[];
35
+ };
36
+ export type AgentRuntimeAutomationProjectionsPayload = {
37
+ schemaVersion: 1;
38
+ projections: AgentRuntimeAutomationProjection[];
39
+ };
40
+ export type AgentRuntimeAutomationProjectionServices = {
41
+ listRuntimes(): AgentRuntimeDescriptor[] | Promise<AgentRuntimeDescriptor[]>;
42
+ };
43
+ export declare function handleAgentRuntimeAutomationProjectionsGet(searchParams: URLSearchParams, services: AgentRuntimeAutomationProjectionServices): Promise<MindosServerResponse<AgentRuntimeAutomationProjectionsPayload | {
44
+ error: string;
45
+ }>>;
46
+ export declare function buildAgentRuntimeAutomationProjectionsPayload(input: {
47
+ runtimes: AgentRuntimeDescriptor[];
48
+ }): AgentRuntimeAutomationProjectionsPayload;
49
+ //# sourceMappingURL=runtime-automation-projections.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-automation-projections.d.ts","sourceRoot":"","sources":["../../../src/server/handlers/runtime-automation-projections.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,8BAA8B,EAC9B,0CAA0C,EAC1C,sBAAsB,EACtB,gBAAgB,EAChB,sBAAsB,EACtB,kBAAkB,EAClB,6BAA6B,EAC9B,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAuB,KAAK,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAEhF,MAAM,MAAM,sCAAsC,GAC9C,OAAO,GACP,aAAa,GACb,SAAS,GACT,SAAS,GACT,SAAS,CAAC;AAEd,MAAM,MAAM,qCAAqC,GAC7C,OAAO,GACP,SAAS,GACT,SAAS,GACT,SAAS,CAAC;AAEd,MAAM,MAAM,sCAAsC,GAAG;IACnD,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,0CAA0C,CAAC;IACnD,KAAK,EAAE,8BAA8B,CAAC;IACtC,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,gCAAgC,GAAG;IAC7C,aAAa,EAAE,CAAC,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,gBAAgB,CAAC;IAC9B,aAAa,EAAE,kBAAkB,CAAC;IAClC,MAAM,EAAE,sCAAsC,CAAC;IAC/C,aAAa,EAAE;QACb,MAAM,EAAE,qCAAqC,CAAC;QAC9C,SAAS,EAAE,OAAO,CAAC;QACnB,IAAI,EAAE,sBAAsB,CAAC;QAC7B,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;KACrB,CAAC;IACF,oBAAoB,EAAE;QACpB,MAAM,EAAE,qCAAqC,CAAC;QAC9C,SAAS,EAAE,OAAO,CAAC;QACnB,OAAO,EAAE,6BAA6B,CAAC;QACvC,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;KACrB,CAAC;IACF,oBAAoB,EAAE,sCAAsC,EAAE,CAAC;IAC/D,OAAO,EAAE,sCAAsC,EAAE,CAAC;IAClD,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,wCAAwC,GAAG;IACrD,aAAa,EAAE,CAAC,CAAC;IACjB,WAAW,EAAE,gCAAgC,EAAE,CAAC;CACjD,CAAC;AAEF,MAAM,MAAM,wCAAwC,GAAG;IACrD,YAAY,IAAI,sBAAsB,EAAE,GAAG,OAAO,CAAC,sBAAsB,EAAE,CAAC,CAAC;CAC9E,CAAC;AAEF,wBAAsB,0CAA0C,CAC9D,YAAY,EAAE,eAAe,EAC7B,QAAQ,EAAE,wCAAwC,GACjD,OAAO,CAAC,oBAAoB,CAAC,wCAAwC,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,CAe7F;AAED,wBAAgB,6CAA6C,CAAC,KAAK,EAAE;IACnE,QAAQ,EAAE,sBAAsB,EAAE,CAAC;CACpC,GAAG,wCAAwC,CAK3C"}