@aexol/spectral 0.9.231 → 0.9.240

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 (157) hide show
  1. package/README.md +47 -0
  2. package/dist/agent/index.d.ts +32 -5
  3. package/dist/agent/index.d.ts.map +1 -1
  4. package/dist/agent/index.js +209 -36
  5. package/dist/backend/generated-images.d.ts +1 -1
  6. package/dist/backend/generated-images.d.ts.map +1 -1
  7. package/dist/cli.d.ts +2 -0
  8. package/dist/cli.d.ts.map +1 -1
  9. package/dist/cli.js +18 -4
  10. package/dist/commands/desktop.d.ts +167 -0
  11. package/dist/commands/desktop.d.ts.map +1 -0
  12. package/dist/commands/desktop.js +540 -0
  13. package/dist/commands/serve.d.ts +9 -1
  14. package/dist/commands/serve.d.ts.map +1 -1
  15. package/dist/commands/serve.js +90 -2
  16. package/dist/commands/update.d.ts +85 -5
  17. package/dist/commands/update.d.ts.map +1 -1
  18. package/dist/commands/update.js +288 -58
  19. package/dist/extensions/desktop-control/macos.d.ts.map +1 -1
  20. package/dist/extensions/desktop-control/macos.js +2 -2
  21. package/dist/extensions/logic-trace.d.ts +1 -1
  22. package/dist/extensions/logic-trace.d.ts.map +1 -1
  23. package/dist/extensions/logic-trace.js +199 -70
  24. package/dist/extensions/video-generation/index.d.ts +3 -0
  25. package/dist/extensions/video-generation/index.d.ts.map +1 -0
  26. package/dist/extensions/video-generation/index.js +299 -0
  27. package/dist/generated/zeus/const.d.ts.map +1 -1
  28. package/dist/generated/zeus/const.js +30 -0
  29. package/dist/generated/zeus/index.d.ts +140 -0
  30. package/dist/generated/zeus/index.d.ts.map +1 -1
  31. package/dist/generated/zeus/index.js +5 -0
  32. package/dist/mcp/server-manager.d.ts.map +1 -1
  33. package/dist/mcp/server-manager.js +6 -0
  34. package/dist/memory/tools/receive-agent-observations.d.ts.map +1 -1
  35. package/dist/memory/tools/receive-agent-observations.js +12 -2
  36. package/dist/relay/dispatcher.d.ts +13 -1
  37. package/dist/relay/dispatcher.d.ts.map +1 -1
  38. package/dist/relay/dispatcher.js +41 -2
  39. package/dist/sdk/agent-core/agent-loop.js +13 -3
  40. package/dist/sdk/agent-core/agent.d.ts +11 -4
  41. package/dist/sdk/agent-core/agent.d.ts.map +1 -1
  42. package/dist/sdk/agent-core/agent.js +16 -4
  43. package/dist/sdk/agent-core/tool-call-registry.d.ts +75 -0
  44. package/dist/sdk/agent-core/tool-call-registry.d.ts.map +1 -0
  45. package/dist/sdk/agent-core/tool-call-registry.js +131 -0
  46. package/dist/sdk/agent-core/tool-execution.d.ts.map +1 -1
  47. package/dist/sdk/agent-core/tool-execution.js +103 -4
  48. package/dist/sdk/agent-core/types.d.ts +15 -4
  49. package/dist/sdk/agent-core/types.d.ts.map +1 -1
  50. package/dist/sdk/ai/index.d.ts +3 -0
  51. package/dist/sdk/ai/index.d.ts.map +1 -1
  52. package/dist/sdk/ai/index.js +3 -0
  53. package/dist/sdk/ai/providers/faux.d.ts.map +1 -1
  54. package/dist/sdk/ai/providers/faux.js +3 -0
  55. package/dist/sdk/ai/providers/leaked-tool-call-parser.d.ts +39 -6
  56. package/dist/sdk/ai/providers/leaked-tool-call-parser.d.ts.map +1 -1
  57. package/dist/sdk/ai/providers/leaked-tool-call-parser.js +159 -18
  58. package/dist/sdk/ai/providers/openai-completions.d.ts.map +1 -1
  59. package/dist/sdk/ai/providers/openai-completions.js +22 -8
  60. package/dist/sdk/ai/providers/openrouter-videos.d.ts +3 -0
  61. package/dist/sdk/ai/providers/openrouter-videos.d.ts.map +1 -0
  62. package/dist/sdk/ai/providers/openrouter-videos.js +412 -0
  63. package/dist/sdk/ai/providers/register-builtins.d.ts.map +1 -1
  64. package/dist/sdk/ai/providers/register-builtins.js +6 -0
  65. package/dist/sdk/ai/providers/simple-options.d.ts +1 -6
  66. package/dist/sdk/ai/providers/simple-options.d.ts.map +1 -1
  67. package/dist/sdk/ai/providers/simple-options.js +0 -22
  68. package/dist/sdk/ai/providers/transform-messages.d.ts.map +1 -1
  69. package/dist/sdk/ai/providers/transform-messages.js +52 -1
  70. package/dist/sdk/ai/types.d.ts +91 -10
  71. package/dist/sdk/ai/types.d.ts.map +1 -1
  72. package/dist/sdk/ai/video-models.d.ts +10 -0
  73. package/dist/sdk/ai/video-models.d.ts.map +1 -0
  74. package/dist/sdk/ai/video-models.generated.d.ts +440 -0
  75. package/dist/sdk/ai/video-models.generated.d.ts.map +1 -0
  76. package/dist/sdk/ai/video-models.generated.js +441 -0
  77. package/dist/sdk/ai/video-models.js +22 -0
  78. package/dist/sdk/ai/videos-api-registry.d.ts +14 -0
  79. package/dist/sdk/ai/videos-api-registry.d.ts.map +1 -0
  80. package/dist/sdk/ai/videos-api-registry.js +21 -0
  81. package/dist/sdk/ai/videos.d.ts +4 -0
  82. package/dist/sdk/ai/videos.d.ts.map +1 -0
  83. package/dist/sdk/ai/videos.js +13 -0
  84. package/dist/sdk/coding-agent/core/agent-session.d.ts +8 -0
  85. package/dist/sdk/coding-agent/core/agent-session.d.ts.map +1 -1
  86. package/dist/sdk/coding-agent/core/agent-session.js +11 -0
  87. package/dist/sdk/coding-agent/core/extensions/loader.d.ts.map +1 -1
  88. package/dist/sdk/coding-agent/core/extensions/loader.js +14 -0
  89. package/dist/sdk/coding-agent/core/extensions/native-extensions.d.ts +26 -0
  90. package/dist/sdk/coding-agent/core/extensions/native-extensions.d.ts.map +1 -1
  91. package/dist/sdk/coding-agent/core/extensions/native-extensions.js +23 -0
  92. package/dist/sdk/coding-agent/core/extensions/session-events.d.ts +2 -2
  93. package/dist/sdk/coding-agent/core/extensions/session-events.d.ts.map +1 -1
  94. package/dist/sdk/coding-agent/core/extensions/types.d.ts +12 -2
  95. package/dist/sdk/coding-agent/core/extensions/types.d.ts.map +1 -1
  96. package/dist/sdk/coding-agent/core/messages.d.ts.map +1 -1
  97. package/dist/sdk/coding-agent/core/messages.js +42 -2
  98. package/dist/sdk/coding-agent/core/resource-loader.d.ts +11 -0
  99. package/dist/sdk/coding-agent/core/resource-loader.d.ts.map +1 -1
  100. package/dist/sdk/coding-agent/core/resource-loader.js +23 -6
  101. package/dist/sdk/coding-agent/core/sdk.d.ts +24 -2
  102. package/dist/sdk/coding-agent/core/sdk.d.ts.map +1 -1
  103. package/dist/sdk/coding-agent/core/sdk.js +15 -3
  104. package/dist/sdk/coding-agent/core/settings-manager.d.ts +0 -8
  105. package/dist/sdk/coding-agent/core/settings-manager.d.ts.map +1 -1
  106. package/dist/sdk/coding-agent/core/settings-manager.js +3 -3
  107. package/dist/sdk/coding-agent/core/system-prompt.d.ts.map +1 -1
  108. package/dist/sdk/coding-agent/core/system-prompt.js +5 -0
  109. package/dist/sdk/coding-agent/index.d.ts +2 -2
  110. package/dist/sdk/coding-agent/index.d.ts.map +1 -1
  111. package/dist/sdk/coding-agent/index.js +1 -1
  112. package/dist/sdk-public.d.ts +96 -0
  113. package/dist/sdk-public.d.ts.map +1 -0
  114. package/dist/sdk-public.js +109 -0
  115. package/dist/server/agent-bridge/rehydrate.d.ts +2 -2
  116. package/dist/server/agent-bridge/rehydrate.d.ts.map +1 -1
  117. package/dist/server/agent-bridge/rehydrate.js +14 -0
  118. package/dist/server/agent-bridge/tps-metrics.d.ts +34 -0
  119. package/dist/server/agent-bridge/tps-metrics.d.ts.map +1 -1
  120. package/dist/server/agent-bridge/tps-metrics.js +22 -0
  121. package/dist/server/agent-bridge.d.ts +17 -2
  122. package/dist/server/agent-bridge.d.ts.map +1 -1
  123. package/dist/server/agent-bridge.js +108 -5
  124. package/dist/server/handlers/paths-list.d.ts +1 -1
  125. package/dist/server/handlers/paths-list.js +1 -1
  126. package/dist/server/inter-agent-broker.d.ts +12 -0
  127. package/dist/server/inter-agent-broker.d.ts.map +1 -1
  128. package/dist/server/inter-agent-broker.js +1 -0
  129. package/dist/server/preset-chain.d.ts +151 -0
  130. package/dist/server/preset-chain.d.ts.map +1 -0
  131. package/dist/server/preset-chain.js +250 -0
  132. package/dist/server/session-stream.d.ts +74 -1
  133. package/dist/server/session-stream.d.ts.map +1 -1
  134. package/dist/server/session-stream.js +238 -24
  135. package/dist/server/storage/rows.d.ts +2 -0
  136. package/dist/server/storage/rows.d.ts.map +1 -1
  137. package/dist/server/storage/schema.d.ts +2 -2
  138. package/dist/server/storage/schema.d.ts.map +1 -1
  139. package/dist/server/storage/schema.js +2 -1
  140. package/dist/server/storage.d.ts +7 -0
  141. package/dist/server/storage.d.ts.map +1 -1
  142. package/dist/server/storage.js +142 -9
  143. package/dist/server/wire.d.ts +84 -0
  144. package/dist/server/wire.d.ts.map +1 -1
  145. package/dist/utils/augment-path.d.ts +51 -0
  146. package/dist/utils/augment-path.d.ts.map +1 -0
  147. package/dist/utils/augment-path.js +234 -0
  148. package/dist/utils/open-browser.d.ts +55 -0
  149. package/dist/utils/open-browser.d.ts.map +1 -0
  150. package/dist/utils/open-browser.js +163 -0
  151. package/dist/utils/serve-state.d.ts +264 -0
  152. package/dist/utils/serve-state.d.ts.map +1 -0
  153. package/dist/utils/serve-state.js +563 -0
  154. package/dist/utils/standalone.d.ts +14 -0
  155. package/dist/utils/standalone.d.ts.map +1 -0
  156. package/dist/utils/standalone.js +23 -0
  157. package/package.json +7 -3
@@ -38,6 +38,7 @@
38
38
  */
39
39
  import { randomUUID } from "node:crypto";
40
40
  import { AgentBridge } from "./agent-bridge.js";
41
+ import { expandIfPresetReference, expandPresetPrompt, parsePresetReference, PRESET_CHAIN_BUDGET, resolvePresetByName, } from "./preset-chain.js";
41
42
  import { InterAgentBroker } from "./inter-agent-broker.js";
42
43
  import { setInterAgentBroker } from "../memory/inter-agent-broker-singleton.js";
43
44
  import { configureFanout } from "./fanout/fanout-manager.js";
@@ -1205,6 +1206,41 @@ export class SessionStreamManager {
1205
1206
  // We just need to signal that the bridge is gone so `prompt()` knows to
1206
1207
  // recreate one.
1207
1208
  }
1209
+ /**
1210
+ * Stop a single in-flight tool call for a session (user-initiated
1211
+ * per-call stop). Unlike `cancelTurn` this does NOT dispose the bridge —
1212
+ * the targeted call is aborted, the agent receives a synthesized
1213
+ * user-stop tool result, and the turn continues.
1214
+ *
1215
+ * Broadcasts a `tool_stop_result` feedback frame to subscribers
1216
+ * (best-effort) so the browser can resolve the request even when the
1217
+ * toolCallId was unknown/finished. Returns whether the call was stopped.
1218
+ */
1219
+ async stopToolCall(sessionId, toolCallId, reason) {
1220
+ const stream = this.streams.get(sessionId);
1221
+ if (!stream)
1222
+ return false;
1223
+ let stopped = false;
1224
+ try {
1225
+ stopped = (await stream.bridge.stopToolCall?.(toolCallId, reason)) === true;
1226
+ }
1227
+ catch {
1228
+ // best-effort: a per-call stop must never surface as a manager error
1229
+ stopped = false;
1230
+ }
1231
+ try {
1232
+ this.broadcast(stream, {
1233
+ type: "tool_stop_result",
1234
+ toolCallId,
1235
+ status: stopped ? "stopped" : "not_found",
1236
+ ...(reason !== undefined ? { reason } : {}),
1237
+ });
1238
+ }
1239
+ catch {
1240
+ // best-effort feedback must never throw into the dispatcher
1241
+ }
1242
+ return stopped;
1243
+ }
1208
1244
  /**
1209
1245
  * Tear down a single session's stream — disposes the agent bridge and clears
1210
1246
  * subscribers. Idempotent. Called by the routes layer right before
@@ -1271,21 +1307,83 @@ export class SessionStreamManager {
1271
1307
  */
1272
1308
  setLoopActive(sessionId, active, originalPrompt, maxIterations, goal) {
1273
1309
  const stream = this.streams.get(sessionId);
1274
- if (stream) {
1275
- stream.loopActive = active;
1276
- stream.loopOriginalPrompt = active ? (originalPrompt ?? null) : null;
1277
- if (active) {
1278
- if (maxIterations !== undefined && maxIterations > 0) {
1279
- stream.loopMaxIterations = Math.min(maxIterations, MAX_LOOP_ITERATIONS);
1280
- }
1281
- stream.loopGoal = goal?.trim() || null;
1282
- }
1283
- else {
1284
- stream.loopIterationCount = 0;
1285
- stream.loopMaxIterations = MAX_LOOP_ITERATIONS;
1286
- stream.loopGoal = null;
1287
- }
1310
+ if (!stream)
1311
+ return;
1312
+ // Bump the epoch on EVERY call (arm and disarm alike) so the async
1313
+ // "@preset:" arming tail can detect loop-state changes that happen
1314
+ // while its resolver is awaited (see armLoopWithExpandedPreset).
1315
+ stream.loopGeneration += 1;
1316
+ if (!active) {
1317
+ stream.loopActive = false;
1318
+ stream.loopOriginalPrompt = null;
1319
+ stream.loopIterationCount = 0;
1320
+ stream.loopMaxIterations = MAX_LOOP_ITERATIONS;
1321
+ stream.loopGoal = null;
1322
+ return;
1323
+ }
1324
+ const raw = originalPrompt ?? null;
1325
+ // Expand a leading "@preset:<name>" reference ONCE, at arming time, so
1326
+ // every loop iteration replays the resolved prompt instead of the
1327
+ // literal reference (which would re-expand — and re-chain — each turn).
1328
+ // Non-reference prompts arm synchronously exactly as before; only the
1329
+ // reference path defers through the resolver (raw prompt on failure).
1330
+ if (!raw || !parsePresetReference(raw)) {
1331
+ stream.loopActive = true;
1332
+ stream.loopOriginalPrompt = raw;
1333
+ if (maxIterations !== undefined && maxIterations > 0) {
1334
+ stream.loopMaxIterations = Math.min(maxIterations, MAX_LOOP_ITERATIONS);
1335
+ }
1336
+ stream.loopGoal = goal?.trim() || null;
1337
+ return;
1288
1338
  }
1339
+ return this.armLoopWithExpandedPreset(sessionId, raw, maxIterations, goal);
1340
+ }
1341
+ /**
1342
+ * Async tail of {@link setLoopActive} for "@preset:<name>" loop prompts:
1343
+ * resolves the preset, then arms the loop with the expanded prompt (raw
1344
+ * content when the resolver fails). The chain budget is NOT consumed by
1345
+ * loop arming — expansion happens once here, not on every iteration.
1346
+ *
1347
+ * Returns the expanded prompt so the caller (dispatcher, interval tick)
1348
+ * can fire the FIRST turn with the resolved content instead of the raw
1349
+ * reference. Resolves to `null` when arming was aborted because loop
1350
+ * state changed while the resolver was awaited (the write is skipped so
1351
+ * newer loop state is never clobbered) or when no stream exists.
1352
+ */
1353
+ async armLoopWithExpandedPreset(sessionId, prompt, maxIterations, goal) {
1354
+ const stream = this.streams.get(sessionId);
1355
+ if (!stream)
1356
+ return null;
1357
+ // Capture the epoch BEFORE the resolver await: any other setLoopActive
1358
+ // call during the await (e.g. a loop stop from a client message) moves
1359
+ // the generation and must win over this arming write.
1360
+ const generation = stream.loopGeneration;
1361
+ const expanded = await expandPresetPrompt(prompt, (name) => this.resolvePresetForSession(sessionId, name));
1362
+ if (stream.loopGeneration !== generation) {
1363
+ console.log(`[session-stream] ${sessionId}: loop arming aborted — ` +
1364
+ `loop state changed while the preset was being resolved`);
1365
+ return null;
1366
+ }
1367
+ stream.loopActive = true;
1368
+ stream.loopOriginalPrompt = expanded;
1369
+ if (maxIterations !== undefined && maxIterations > 0) {
1370
+ stream.loopMaxIterations = Math.min(maxIterations, MAX_LOOP_ITERATIONS);
1371
+ }
1372
+ stream.loopGoal = goal?.trim() || null;
1373
+ return expanded;
1374
+ }
1375
+ /**
1376
+ * Studio team id used for machine-JWT backend calls (preset resolution):
1377
+ * the project's team binding wins over the machine default.
1378
+ */
1379
+ teamIdForSession(sessionId) {
1380
+ const projectId = this.store.getSession(sessionId)?.projectId;
1381
+ return this.store.getProject(projectId ?? "")?.studioTeamId ??
1382
+ this.machineTeamId;
1383
+ }
1384
+ /** Resolve a preset by name for a session's team. Never throws. */
1385
+ resolvePresetForSession(sessionId, name) {
1386
+ return resolvePresetByName(this.backendUrl, this.machineJwt, this.teamIdForSession(sessionId), name);
1289
1387
  }
1290
1388
  /**
1291
1389
  * Arms the interval scheduler for a session. The first launch is assumed
@@ -1322,7 +1420,15 @@ export class SessionStreamManager {
1322
1420
  return;
1323
1421
  const minutes = stream.intervalMinutes ?? 1;
1324
1422
  this.scheduleIntervalTick(stream, minutes);
1325
- this.intervalTick(stream);
1423
+ // Same unhandled-rejection guard as the scheduled-timer path above.
1424
+ this.intervalTick(stream).catch((err) => {
1425
+ const msg = err instanceof Error ? err.message : String(err);
1426
+ console.error(`[session-stream] interval tick failed: ${msg}`);
1427
+ this.broadcast(stream, {
1428
+ type: "error",
1429
+ message: `Interval tick failed: ${humanizeProviderError(msg)}`,
1430
+ });
1431
+ });
1326
1432
  }
1327
1433
  /** Disarms the interval scheduler for a session. */
1328
1434
  stopInterval(sessionId) {
@@ -1353,7 +1459,19 @@ export class SessionStreamManager {
1353
1459
  scheduleIntervalTick(stream, minutes) {
1354
1460
  this.clearIntervalTimer(stream);
1355
1461
  stream.intervalNextTickAt = Date.now() + minutes * 60_000;
1356
- stream.intervalTimer = setInterval(() => this.intervalTick(stream), minutes * 60_000);
1462
+ stream.intervalTimer = setInterval(() => {
1463
+ // intervalTick is async and may reject (e.g. a sync throw from
1464
+ // teamIdForSession inside the loop-arming resolver): without a
1465
+ // handler a timer callback rejection would be unhandled.
1466
+ this.intervalTick(stream).catch((err) => {
1467
+ const msg = err instanceof Error ? err.message : String(err);
1468
+ console.error(`[session-stream] interval tick failed: ${msg}`);
1469
+ this.broadcast(stream, {
1470
+ type: "error",
1471
+ message: `Interval tick failed: ${humanizeProviderError(msg)}`,
1472
+ });
1473
+ });
1474
+ }, minutes * 60_000);
1357
1475
  }
1358
1476
  clearIntervalTimer(stream) {
1359
1477
  if (stream.intervalTimer) {
@@ -1461,10 +1579,11 @@ export class SessionStreamManager {
1461
1579
  this.settleRunState(stream);
1462
1580
  }
1463
1581
  }
1464
- intervalTick(stream) {
1582
+ async intervalTick(stream) {
1465
1583
  if (!stream.intervalConfig)
1466
1584
  return;
1467
- const idle = !stream.loopActive && stream.currentTurn === null && !stream.compacting;
1585
+ const idle = !stream.loopActive && stream.currentTurn === null &&
1586
+ !stream.compacting && !stream.expandingQueueItem;
1468
1587
  if (!idle) {
1469
1588
  const interval = this.getIntervalEventSnapshot(stream);
1470
1589
  this.broadcast(stream, {
@@ -1480,10 +1599,18 @@ export class SessionStreamManager {
1480
1599
  occurrence: interval.occurrence,
1481
1600
  });
1482
1601
  const cfg = stream.intervalConfig;
1602
+ let launchPrompt = cfg.prompt;
1483
1603
  if (cfg.loop) {
1484
- this.setLoopActive(stream.sessionId, true, cfg.prompt, cfg.loopMaxIterations, cfg.loopGoal);
1604
+ // Await so a "@preset:" prompt is expanded before the turn fires.
1605
+ const expanded = await this.setLoopActive(stream.sessionId, true, cfg.prompt, cfg.loopMaxIterations, cfg.loopGoal);
1606
+ // Same raw-reference fix as the dispatcher path: the first interval
1607
+ // launch must run the expanded prompt, not the literal "@preset:X"
1608
+ // (null = arming aborted → fall back to the raw prompt).
1609
+ if (typeof expanded === "string" && expanded) {
1610
+ launchPrompt = expanded;
1611
+ }
1485
1612
  }
1486
- this.prompt(stream.sessionId, cfg.prompt, cfg.modelId, cfg.images, cfg.reasoningEffort).catch((err) => {
1613
+ this.prompt(stream.sessionId, launchPrompt, cfg.modelId, cfg.images, cfg.reasoningEffort).catch((err) => {
1487
1614
  console.error(`[interval] launch failed: ${err instanceof Error ? err.message : String(err)}`);
1488
1615
  });
1489
1616
  }
@@ -1630,6 +1757,9 @@ export class SessionStreamManager {
1630
1757
  loopOriginalPrompt: null,
1631
1758
  loopMaxIterations: MAX_LOOP_ITERATIONS,
1632
1759
  loopGoal: null,
1760
+ presetChainBudget: PRESET_CHAIN_BUDGET,
1761
+ expandingQueueItem: false,
1762
+ loopGeneration: 0,
1633
1763
  intervalMinutes: null,
1634
1764
  intervalTimer: null,
1635
1765
  intervalNextTickAt: null,
@@ -2425,18 +2555,56 @@ export class SessionStreamManager {
2425
2555
  return false;
2426
2556
  if (stream.loopActive && stream.loopOriginalPrompt)
2427
2557
  return false;
2558
+ // A dequeued "@preset:" reference is being expanded (async resolver) —
2559
+ // never dequeue a second item into the same gap.
2560
+ if (stream.expandingQueueItem)
2561
+ return false;
2428
2562
  const next = this.store.dequeuePrompt(stream.sessionId);
2429
2563
  if (!next)
2430
2564
  return false;
2565
+ const reference = parsePresetReference(next.content);
2566
+ if (!reference) {
2567
+ // Per chain-run budget: reset on any plain prompt. Without this a
2568
+ // session that once exhausted the budget would stay capped forever,
2569
+ // because only reference items flow through the expansion path below
2570
+ // (the orchestrator's not-reference outcome is unreachable here).
2571
+ stream.presetChainBudget = PRESET_CHAIN_BUDGET;
2572
+ this.startDequeuedPrompt(stream, next.content, next.images_json);
2573
+ return true;
2574
+ }
2575
+ // "@preset:<name>" reference: expand BEFORE running so the preset's
2576
+ // follow-up messages are already queued when its main turn finishes
2577
+ // (agent_end defers auto-dequeue via setImmediate, so follow-ups
2578
+ // enqueued here can never re-enter this method mid-turn). The
2579
+ // synchronous flag closes the await-resolver re-entrancy window.
2580
+ stream.expandingQueueItem = true;
2581
+ void this.expandAndRunDequeuedPreset(stream, next)
2582
+ .catch((err) => {
2583
+ const msg = err instanceof Error ? err.message : String(err);
2584
+ console.error(`[spectral] error: preset expansion failed: ${msg}`);
2585
+ this.broadcast(stream, {
2586
+ type: "error",
2587
+ message: `Failed to expand queued preset reference: ${humanizeProviderError(msg)}`,
2588
+ });
2589
+ })
2590
+ .finally(() => {
2591
+ stream.expandingQueueItem = false;
2592
+ });
2593
+ return true;
2594
+ }
2595
+ /**
2596
+ * Shared tail of `maybeAutoDequeue`: push queue state, then fire the
2597
+ * prompt. Reuses the sticky model from the just-completed turn (persisted
2598
+ * by `prompt()` into the sessions.model_id column).
2599
+ */
2600
+ startDequeuedPrompt(stream, content, imagesJson) {
2431
2601
  // Push updated queue state so the frontend sees the item was removed.
2432
2602
  this.pushQueueState(stream.sessionId);
2433
2603
  // Bridge the gap between dequeue and `prompt()` opening `currentTurn`:
2434
2604
  // `prompt()` resets this once the new turn is opened.
2435
2605
  stream.pendingContinue = true;
2436
- // Fire the next prompt. Reuses the sticky model from the just-completed
2437
- // turn (persisted by `prompt()` into the sessions.model_id column).
2438
2606
  const lastModelId = this.store.getSessionModel(stream.sessionId);
2439
- this.prompt(stream.sessionId, next.content, lastModelId ?? undefined, parseImagesJson(next.images_json)).catch((err) => {
2607
+ this.prompt(stream.sessionId, content, lastModelId ?? undefined, parseImagesJson(imagesJson)).catch((err) => {
2440
2608
  // Surface any errors from the auto-dequeue prompt (synchronous throws
2441
2609
  // before the first await, e.g. disposed manager, missing stream) so
2442
2610
  // subscribers see what went wrong instead of a silent dead turn.
@@ -2447,6 +2615,52 @@ export class SessionStreamManager {
2447
2615
  message: `Failed to start auto-dequeued prompt: ${humanizeProviderError(msg)}`,
2448
2616
  });
2449
2617
  });
2450
- return true;
2618
+ }
2619
+ /**
2620
+ * Expand a dequeued "@preset:<name>" reference through the pure
2621
+ * `expandIfPresetReference` orchestrator and run the resulting prompt.
2622
+ * Follow-up messages are enqueued (verbatim) BEFORE the preset prompt
2623
+ * runs; a follow-up that is itself a reference expands at its own
2624
+ * dequeue, which is what makes chained presets behave like programs.
2625
+ */
2626
+ async expandAndRunDequeuedPreset(stream, next) {
2627
+ /** Run the expansion result, or re-queue it when a turn opened during
2628
+ * the resolver await (client message raced the expansion). Stacking a
2629
+ * second prompt() on a live turn is rejected by the agent core, so the
2630
+ * item goes back to the END of the queue instead of being forced in —
2631
+ * nothing is dropped, and `pushQueueState` broadcasts the change. */
2632
+ const runOrRequeue = (content) => {
2633
+ if (stream.currentTurn) {
2634
+ console.warn(`[preset-chain] ${stream.sessionId}: turn opened while the ` +
2635
+ `preset was being resolved; re-queueing the item at the end`);
2636
+ this.store.enqueuePrompt(stream.sessionId, content);
2637
+ this.pushQueueState(stream.sessionId);
2638
+ return;
2639
+ }
2640
+ this.startDequeuedPrompt(stream, content, next.images_json);
2641
+ };
2642
+ const outcome = await expandIfPresetReference({
2643
+ content: next.content,
2644
+ chainBudget: stream.presetChainBudget,
2645
+ parse: parsePresetReference,
2646
+ resolve: (name) => this.resolvePresetForSession(stream.sessionId, name),
2647
+ enqueue: (content) => {
2648
+ this.store.enqueuePrompt(stream.sessionId, content);
2649
+ },
2650
+ run: runOrRequeue,
2651
+ onSkip: (reason) => {
2652
+ console.log(`[preset-chain] ${stream.sessionId}: running raw prompt (${reason})`);
2653
+ },
2654
+ });
2655
+ // Non-reference outcomes reset the budget; every expansion spends one.
2656
+ stream.presetChainBudget = outcome.budgetReset
2657
+ ? PRESET_CHAIN_BUDGET
2658
+ : outcome.budgetRemaining;
2659
+ if (!outcome.ran) {
2660
+ // Defensive: the orchestrator decided not to run anything (should be
2661
+ // unreachable — this method only handles parsed references). Never
2662
+ // drop a dequeued item.
2663
+ runOrRequeue(next.content);
2664
+ }
2451
2665
  }
2452
2666
  }
@@ -94,6 +94,8 @@ export interface InterAgentMessageRow {
94
94
  payload: string;
95
95
  created_at: number;
96
96
  delivered_at: number | null;
97
+ /** JSON array of session ids the message has been delivered to; NULL = none. */
98
+ delivered_to: string | null;
97
99
  expires_at: number | null;
98
100
  }
99
101
  export interface DevProcessDefinitionRow {
@@ -1 +1 @@
1
- {"version":3,"file":"rows.d.ts","sourceRoot":"","sources":["../../../src/server/storage/rows.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rows.d.ts","sourceRoot":"","sources":["../../../src/server/storage/rows.ts"],"names":[],"mappings":"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"}
@@ -4,8 +4,8 @@
4
4
  * ALL schema changes are additive (ALTER TABLE ADD COLUMN). The version is
5
5
  * never used to trigger destructive drops; it is purely for troubleshooting.
6
6
  */
7
- export declare const SCHEMA_VERSION = 5;
8
- export declare const SCHEMA_SQL = "\nPRAGMA foreign_keys = ON;\n\nCREATE TABLE IF NOT EXISTS projects (\n id TEXT PRIMARY KEY,\n name TEXT NOT NULL,\n path TEXT NOT NULL,\n studio_project_id TEXT,\n studio_project_name TEXT,\n studio_team_id TEXT,\n created_at INTEGER NOT NULL,\n updated_at INTEGER NOT NULL\n);\n\nCREATE TABLE IF NOT EXISTS sessions (\n id TEXT PRIMARY KEY,\n project_id TEXT NOT NULL REFERENCES projects(id) ON DELETE CASCADE,\n title TEXT NOT NULL,\n created_at INTEGER NOT NULL,\n updated_at INTEGER NOT NULL,\n model_id TEXT,\n active_agent TEXT,\n reasoning_effort TEXT,\n native_response_id TEXT,\n title_manually_renamed INTEGER NOT NULL DEFAULT 0\n);\n\nCREATE INDEX IF NOT EXISTS idx_sessions_project ON sessions(project_id, updated_at DESC);\n\nCREATE TABLE IF NOT EXISTS messages (\n id TEXT PRIMARY KEY,\n session_id TEXT NOT NULL REFERENCES sessions(id) ON DELETE CASCADE,\n role TEXT NOT NULL CHECK (role IN ('user','assistant','system')),\n content TEXT NOT NULL,\n events_jsonl TEXT NOT NULL DEFAULT '',\n images_json TEXT NOT NULL DEFAULT '',\n credits_used REAL,\n output_tokens INTEGER,\n duration_ms INTEGER,\n tokens_per_second REAL,\n ttft_ms INTEGER,\n seq INTEGER,\n created_at INTEGER NOT NULL\n);\n\nCREATE INDEX IF NOT EXISTS idx_messages_session ON messages(session_id, created_at);\n\nCREATE TABLE IF NOT EXISTS session_memory_snapshots (\n session_id TEXT PRIMARY KEY REFERENCES sessions(id) ON DELETE CASCADE,\n summary TEXT NOT NULL,\n details_json TEXT NOT NULL,\n covered_source_count INTEGER NOT NULL,\n updated_at INTEGER NOT NULL\n);\n\nCREATE TABLE IF NOT EXISTS project_observations (\n id TEXT PRIMARY KEY,\n project_id TEXT NOT NULL REFERENCES projects(id) ON DELETE CASCADE,\n session_id TEXT NOT NULL,\n content TEXT NOT NULL,\n relevance TEXT NOT NULL CHECK (relevance IN ('low','medium','high','critical')),\n created_at INTEGER NOT NULL\n);\n\nCREATE INDEX IF NOT EXISTS idx_project_obs_project ON project_observations(project_id, created_at DESC);\n\nCREATE TABLE IF NOT EXISTS project_recall_sources (\n project_id TEXT NOT NULL REFERENCES projects(id) ON DELETE CASCADE,\n memory_id TEXT NOT NULL,\n entries_json TEXT NOT NULL,\n updated_at INTEGER NOT NULL,\n PRIMARY KEY (project_id, memory_id)\n);\n\nCREATE TABLE IF NOT EXISTS prompt_queue (\n id TEXT PRIMARY KEY,\n session_id TEXT NOT NULL REFERENCES sessions(id) ON DELETE CASCADE,\n content TEXT NOT NULL,\n images_json TEXT NOT NULL DEFAULT '',\n position INTEGER NOT NULL,\n created_at TEXT NOT NULL DEFAULT (datetime('now')),\n UNIQUE(session_id, position)\n);\n\nCREATE INDEX IF NOT EXISTS idx_prompt_queue_session ON prompt_queue(session_id, position);\n\nCREATE TABLE IF NOT EXISTS inter_agent_messages (\n id TEXT PRIMARY KEY,\n project_id TEXT NOT NULL REFERENCES projects(id) ON DELETE CASCADE,\n channel TEXT NOT NULL,\n sender_session_id TEXT NOT NULL,\n sender_name TEXT,\n recipient_session_id TEXT,\n kind TEXT NOT NULL,\n payload TEXT NOT NULL,\n created_at INTEGER NOT NULL,\n delivered_at INTEGER,\n expires_at INTEGER\n);\n\nCREATE INDEX IF NOT EXISTS idx_inter_agent_inbox ON inter_agent_messages(project_id, channel, recipient_session_id, created_at DESC);\nCREATE INDEX IF NOT EXISTS idx_inter_agent_expiry ON inter_agent_messages(expires_at);\n\nCREATE TABLE IF NOT EXISTS dev_process_definitions (\n id TEXT PRIMARY KEY,\n project_id TEXT,\n label TEXT NOT NULL,\n command TEXT NOT NULL,\n cwd TEXT NOT NULL,\n created_at INTEGER NOT NULL,\n updated_at INTEGER NOT NULL\n);\n";
7
+ export declare const SCHEMA_VERSION = 6;
8
+ export declare const SCHEMA_SQL = "\nPRAGMA foreign_keys = ON;\n\nCREATE TABLE IF NOT EXISTS projects (\n id TEXT PRIMARY KEY,\n name TEXT NOT NULL,\n path TEXT NOT NULL,\n studio_project_id TEXT,\n studio_project_name TEXT,\n studio_team_id TEXT,\n created_at INTEGER NOT NULL,\n updated_at INTEGER NOT NULL\n);\n\nCREATE TABLE IF NOT EXISTS sessions (\n id TEXT PRIMARY KEY,\n project_id TEXT NOT NULL REFERENCES projects(id) ON DELETE CASCADE,\n title TEXT NOT NULL,\n created_at INTEGER NOT NULL,\n updated_at INTEGER NOT NULL,\n model_id TEXT,\n active_agent TEXT,\n reasoning_effort TEXT,\n native_response_id TEXT,\n title_manually_renamed INTEGER NOT NULL DEFAULT 0\n);\n\nCREATE INDEX IF NOT EXISTS idx_sessions_project ON sessions(project_id, updated_at DESC);\n\nCREATE TABLE IF NOT EXISTS messages (\n id TEXT PRIMARY KEY,\n session_id TEXT NOT NULL REFERENCES sessions(id) ON DELETE CASCADE,\n role TEXT NOT NULL CHECK (role IN ('user','assistant','system')),\n content TEXT NOT NULL,\n events_jsonl TEXT NOT NULL DEFAULT '',\n images_json TEXT NOT NULL DEFAULT '',\n credits_used REAL,\n output_tokens INTEGER,\n duration_ms INTEGER,\n tokens_per_second REAL,\n ttft_ms INTEGER,\n seq INTEGER,\n created_at INTEGER NOT NULL\n);\n\nCREATE INDEX IF NOT EXISTS idx_messages_session ON messages(session_id, created_at);\n\nCREATE TABLE IF NOT EXISTS session_memory_snapshots (\n session_id TEXT PRIMARY KEY REFERENCES sessions(id) ON DELETE CASCADE,\n summary TEXT NOT NULL,\n details_json TEXT NOT NULL,\n covered_source_count INTEGER NOT NULL,\n updated_at INTEGER NOT NULL\n);\n\nCREATE TABLE IF NOT EXISTS project_observations (\n id TEXT PRIMARY KEY,\n project_id TEXT NOT NULL REFERENCES projects(id) ON DELETE CASCADE,\n session_id TEXT NOT NULL,\n content TEXT NOT NULL,\n relevance TEXT NOT NULL CHECK (relevance IN ('low','medium','high','critical')),\n created_at INTEGER NOT NULL\n);\n\nCREATE INDEX IF NOT EXISTS idx_project_obs_project ON project_observations(project_id, created_at DESC);\n\nCREATE TABLE IF NOT EXISTS project_recall_sources (\n project_id TEXT NOT NULL REFERENCES projects(id) ON DELETE CASCADE,\n memory_id TEXT NOT NULL,\n entries_json TEXT NOT NULL,\n updated_at INTEGER NOT NULL,\n PRIMARY KEY (project_id, memory_id)\n);\n\nCREATE TABLE IF NOT EXISTS prompt_queue (\n id TEXT PRIMARY KEY,\n session_id TEXT NOT NULL REFERENCES sessions(id) ON DELETE CASCADE,\n content TEXT NOT NULL,\n images_json TEXT NOT NULL DEFAULT '',\n position INTEGER NOT NULL,\n created_at TEXT NOT NULL DEFAULT (datetime('now')),\n UNIQUE(session_id, position)\n);\n\nCREATE INDEX IF NOT EXISTS idx_prompt_queue_session ON prompt_queue(session_id, position);\n\nCREATE TABLE IF NOT EXISTS inter_agent_messages (\n id TEXT PRIMARY KEY,\n project_id TEXT NOT NULL REFERENCES projects(id) ON DELETE CASCADE,\n channel TEXT NOT NULL,\n sender_session_id TEXT NOT NULL,\n sender_name TEXT,\n recipient_session_id TEXT,\n kind TEXT NOT NULL,\n payload TEXT NOT NULL,\n created_at INTEGER NOT NULL,\n delivered_at INTEGER,\n delivered_to TEXT,\n expires_at INTEGER\n);\n\nCREATE INDEX IF NOT EXISTS idx_inter_agent_inbox ON inter_agent_messages(project_id, channel, recipient_session_id, created_at DESC);\nCREATE INDEX IF NOT EXISTS idx_inter_agent_expiry ON inter_agent_messages(expires_at);\n\nCREATE TABLE IF NOT EXISTS dev_process_definitions (\n id TEXT PRIMARY KEY,\n project_id TEXT,\n label TEXT NOT NULL,\n command TEXT NOT NULL,\n cwd TEXT NOT NULL,\n created_at INTEGER NOT NULL,\n updated_at INTEGER NOT NULL\n);\n";
9
9
  /**
10
10
  * FTS5 trigram index over project-observation content, synced explicitly in
11
11
  * code (same transaction as `insertProjectObservations`) rather than via
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/server/storage/schema.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,eAAO,MAAM,cAAc,IAAI,CAAC;AAEhC,eAAO,MAAM,UAAU,8+GAgHtB,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,mBAAmB,oKAO/B,CAAC"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/server/storage/schema.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,eAAO,MAAM,cAAc,IAAI,CAAC;AAEhC,eAAO,MAAM,UAAU,ogHAiHtB,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,mBAAmB,oKAO/B,CAAC"}
@@ -4,7 +4,7 @@
4
4
  * ALL schema changes are additive (ALTER TABLE ADD COLUMN). The version is
5
5
  * never used to trigger destructive drops; it is purely for troubleshooting.
6
6
  */
7
- export const SCHEMA_VERSION = 5;
7
+ export const SCHEMA_VERSION = 6;
8
8
  export const SCHEMA_SQL = `
9
9
  PRAGMA foreign_keys = ON;
10
10
 
@@ -102,6 +102,7 @@ CREATE TABLE IF NOT EXISTS inter_agent_messages (
102
102
  payload TEXT NOT NULL,
103
103
  created_at INTEGER NOT NULL,
104
104
  delivered_at INTEGER,
105
+ delivered_to TEXT,
105
106
  expires_at INTEGER
106
107
  );
107
108
 
@@ -110,7 +110,13 @@ export declare class SessionStore {
110
110
  private stmtClearSessionQueue;
111
111
  private stmtShiftPositions;
112
112
  private stmtInsertInterAgentMessage;
113
+ /** Anonymous (no recipient identity) poll: legacy "never delivered to anyone" semantics. */
113
114
  private stmtPollInterAgentMessages;
115
+ /** Recipient poll with SQL-level per-recipient predicate via json_each. */
116
+ private stmtPollInterAgentMessagesForRecipient;
117
+ /** Recipient poll without json_each (fallback): JS-side delivered_to filtering. */
118
+ private stmtPollInterAgentMessagesFallback;
119
+ private jsonEachAvailable;
114
120
  private stmtMarkInterAgentMessageDelivered;
115
121
  private stmtDeleteExpiredInterAgentMessages;
116
122
  private stmtDeleteOldInterAgentMessages;
@@ -486,6 +492,7 @@ export declare class SessionStore {
486
492
  projectId: string;
487
493
  channel?: string;
488
494
  recipientSessionId?: string;
495
+ excludeSenderSessionId?: string;
489
496
  since?: number;
490
497
  limit: number;
491
498
  markDelivered: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../src/server/storage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../src/server/storage.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAcH,OAAO,KAAK,EACV,eAAe,EACf,WAAW,EACX,iBAAiB,EACjB,kBAAkB,EACnB,MAAM,WAAW,CAAC;AAEnB,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAcjE,OAAO,KAAK,EAWV,QAAQ,EAIT,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EACV,kBAAkB,EAClB,+BAA+B,EAC/B,kBAAkB,EAClB,kBAAkB,EAClB,oBAAoB,EACpB,qBAAqB,EACrB,aAAa,EACb,kBAAkB,EACnB,MAAM,oBAAoB,CAAC;AAQ5B,YAAY,EACV,kBAAkB,EAClB,+BAA+B,EAC/B,kBAAkB,EAClB,kBAAkB,EAClB,oBAAoB,EACpB,qBAAqB,EACrB,aAAa,EACb,kBAAkB,GACnB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,YAAY,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAE9D,qBAAa,YAAY;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,CAAgB;IAC1B,OAAO,CAAC,MAAM,CAAS;IAGvB,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAMhC;IACJ,OAAO,CAAC,gBAAgB,CAA2C;IACnE,OAAO,CAAC,cAAc,CAAwC;IAC9D,OAAO,CAAC,0BAA0B,CAAsC;IACxE,OAAO,CAAC,iBAAiB,CAA4D;IACrF,OAAO,CAAC,iBAAiB,CAAoD;IAC7E,OAAO,CAAC,2BAA2B,CAAiF;IACpH,OAAO,CAAC,iBAAiB,CAA4B;IACrD,OAAO,CAAC,yBAAyB,CAAiD;IAClF,OAAO,CAAC,2BAA2B,CAA4C;IAC/E,OAAO,CAAC,kCAAkC,CAAoD;IAC9F,OAAO,CAAC,kCAAkC,CAAoC;IAC9E,OAAO,CAAC,8BAA8B,CAAgE;IACtG,OAAO,CAAC,8BAA8B,CAA4B;IAGlE,OAAO,CAAC,cAAc,CAAwC;IAC9D,OAAO,CAAC,iBAAiB,CAA4D;IACrF,OAAO,CAAC,iBAAiB,CAA4B;IACrD,OAAO,CAAC,gBAAgB,CAAwC;IAChE,OAAO,CAAC,oBAAoB,CAAgD;IAC5E,OAAO,CAAC,sBAAsB,CAAwE;IACtG,OAAO,CAAC,iCAAiC,CAAwE;IACjH,OAAO,CAAC,0BAA0B,CAAsC;IACxE,OAAO,CAAC,8BAA8B,CAAsC;IAC5E,OAAO,CAAC,iBAAiB,CAgBvB;IACF,OAAO,CAAC,iBAAiB,CAAoD;IAC7E,OAAO,CAAC,oBAAoB,CAAwD;IACpF,OAAO,CAAC,wBAAwB,CAAoC;IACpE,OAAO,CAAC,wBAAwB,CAE9B;IACF,OAAO,CAAC,iBAAiB,CAA4B;IACrD,OAAO,CAAC,2BAA2B,CAAoC;IACvE,OAAO,CAAC,2BAA2B,CAA4B;IAC/D,OAAO,CAAC,2BAA2B,CAAoC;IACvE,OAAO,CAAC,gBAAgB,CAAoC;IAC5D,OAAO,CAAC,uBAAuB,CAA4C;IAC3E,OAAO,CAAC,qBAAqB,CAA4C;IACzE,OAAO,CAAC,oBAAoB,CAAiD;IAC7E,OAAO,CAAC,4BAA4B,CAAsD;IAC1F,OAAO,CAAC,+BAA+B,CAA4D;IACnG,OAAO,CAAC,+BAA+B,CAA4B;IAEnE,OAAO,CAAC,mBAAmB,CAAyD;IACpF,OAAO,CAAC,mBAAmB,CAA2C;IACtE,OAAO,CAAC,yBAAyB,CAA6D;IAC9F,OAAO,CAAC,yBAAyB,CAA2C;IAC5E,OAAO,CAAC,6BAA6B,CAAiE;IACtG,OAAO,CAAC,6BAA6B,CAA2C;IAChF,OAAO,CAAC,8BAA8B,CAAmE;IACzG,OAAO,CAAC,8BAA8B,CAA2C;IAEjF,OAAO,CAAC,wBAAwB,CAA2C;IAC3E,OAAO,CAAC,wBAAwB,CAAuE;IAEvG,OAAO,CAAC,oBAAoB,CAAoE;IAChG,OAAO,CAAC,qBAAqB,CAA2D;IACxF,OAAO,CAAC,mBAAmB,CAA4C;IAEvE,OAAO,CAAC,2BAA2B,CAAmD;IACtF,OAAO,CAAC,oBAAoB,CAAoC;IAChE,OAAO,CAAC,mBAAmB,CAAgC;IAG3D,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,uBAAuB,CAA0D;IACzF,OAAO,CAAC,uBAAuB,CAAkD;IACjF,OAAO,CAAC,gCAAgC,CAA0C;IAClF,OAAO,CAAC,uBAAuB,CAAoE;IACnG,OAAO,CAAC,sBAAsB,CAA8C;IAC5E,OAAO,CAAC,6BAA6B,CAAoD;IACzF,OAAO,CAAC,0BAA0B,CAA4D;IAG9F,OAAO,CAAC,iBAAiB,CAAoE;IAC7F,OAAO,CAAC,kBAAkB,CAAsC;IAChE,OAAO,CAAC,iBAAiB,CAAsC;IAC/D,OAAO,CAAC,mBAAmB,CAAoC;IAC/D,OAAO,CAAC,qBAAqB,CAA4B;IACzD,OAAO,CAAC,kBAAkB,CAA4C;IAGtE,OAAO,CAAC,2BAA2B,CAEjC;IACF,4FAA4F;IAC5F,OAAO,CAAC,0BAA0B,CAGhC;IACF,2EAA2E;IAC3E,OAAO,CAAC,sCAAsC,CAcrC;IACT,mFAAmF;IACnF,OAAO,CAAC,kCAAkC,CAGxC;IACF,OAAO,CAAC,iBAAiB,CAAU;IACnC,OAAO,CAAC,kCAAkC,CAAmD;IAC7F,OAAO,CAAC,mCAAmC,CAA4B;IACvE,OAAO,CAAC,+BAA+B,CAA4B;IAGnE,OAAO,CAAC,6BAA6B,CAA+C;IACpF,OAAO,CAAC,2BAA2B,CAAqD;IACxF,OAAO,CAAC,oCAAoC,CAA6D;IACzG,OAAO,CAAC,8BAA8B,CAEpC;gBAEU,IAAI,EAAE,MAAM;IAynBxB,8DAA8D;IAC9D,UAAU,IAAI,MAAM,EAAE;IAOtB,+EAA+E;IAC/E,OAAO,CAAC,uBAAuB;IAyB/B,YAAY,IAAI,WAAW,EAAE;IAI7B;;;;OAIG;IACG,iBAAiB,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;IAOjD,aAAa,CAAC,KAAK,EAAE,kBAAkB,GAAG,WAAW;IAgBrD,iCAAiC;IACjC,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI;IAsB1C,wCAAwC;IAClC,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IA8B9D,uBAAuB,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,IAAI,GAAG,WAAW,GAAG,IAAI;IAYtF;;;;OAIG;IACH,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,kBAAkB,GAAG,WAAW,GAAG,IAAI;IAYxE;;;;;;OAMG;IACH,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,UAAU,EAAE,MAAM,EAAE,CAAA;KAAE;IAWrE,4DAA4D;IAC5D,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,kBAAkB,EAAE;IAW9D,mDAAmD;IAC7C,0BAA0B,CAC9B,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAkBhC;;;;;;;;;;;;;;;;OAgBG;IACH,wBAAwB,CACtB,UAAU,EAAE,MAAM,EAAE,GACnB,GAAG,CAAC,MAAM,EAAE,kBAAkB,EAAE,CAAC;IA8BpC;;;;;;OAMG;IACG,6BAA6B,CACjC,UAAU,EAAE,MAAM,EAAE,GACnB,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,kBAAkB,EAAE,CAAC,CAAC;IAkC7C,aAAa,CAAC,KAAK,EAAE,kBAAkB,GAAG,kBAAkB;IAyB5D,iCAAiC;IACjC,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,iBAAiB,GAAG,IAAI;IAuBhD,oEAAoE;IACpE,mBAAmB,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAK9C;;;;OAIG;IACH,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG;QAC1B,EAAE,EAAE,MAAM,CAAC;QACX,SAAS,EAAE,MAAM,CAAC;QAClB,KAAK,EAAE,MAAM,CAAC;QACd,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;KACnB,GAAG,IAAI;IAYR,4CAA4C;IACtC,mBAAmB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;QAC7C,EAAE,EAAE,MAAM,CAAC;QACX,SAAS,EAAE,MAAM,CAAC;QAClB,KAAK,EAAE,MAAM,CAAC;QACd,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;KACnB,GAAG,IAAI,CAAC;IAiBT,sEAAsE;IAChE,oBAAoB,CACxB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,aAAa,EAAE,CAAC;IAiB3B;;;;;;OAMG;IACG,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IASnE,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,aAAa,EAAE;IAG/C,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,aAAa,EAAE;IAGlE,iBAAiB,CACf,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE;QACJ,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;QAC/B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;QACxB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC1B,KAAK,EAAE,MAAM,CAAC;KACf,GACA,aAAa,EAAE;IAuBlB,+CAA+C;IACzC,sBAAsB,CAC1B,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE;QACJ,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;QAC/B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;QACxB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC1B,KAAK,EAAE,MAAM,CAAC;KACf,GACA,OAAO,CAAC,aAAa,EAAE,CAAC;IAyC3B,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAGjD,0BAA0B,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAGrD,oDAAoD;IAC9C,2BAA2B,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAOrE,OAAO,CAAC,cAAc;IAsBtB;;;OAGG;IACH,kEAAkE;IAClE,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAY/B,mDAAmD;IACnD,uBAAuB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAYhD,mGAAmG;IACnG,4BAA4B,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM;IA0BtF,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,kBAAkB,GAAG,aAAa;IAiExE;;;;OAIG;IACH,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI;IAYlE;;;;;;;OAOG;IACH,oBAAoB,CAClB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE;QACP,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;QAC5B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;QAC1B,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;QAC/B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;KACvB,GACA,IAAI;IAkBP;;;;;;;OAOG;IACH,uBAAuB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO;IASpE;;;;;;;OAOG;IACH,aAAa,CACX,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,MAAM,EACb,IAAI,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE,GAC1B,kBAAkB,GAAG,IAAI;IAoB5B,OAAO,CAAC,cAAc;IAWtB,+DAA+D;IAC/D,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAKlC;;;;;OAKG;IACH,+BAA+B,CAC7B,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,MAAM,GACpB;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,EAAE,CAAA;KAAE;IAYrC;;;;;;;OAOG;IACH,2BAA2B,CAAC,aAAa,EAAE,MAAM,GAAG;QAClD,OAAO,EAAE,MAAM,CAAC;QAChB,GAAG,EAAE,MAAM,EAAE,CAAC;QACd,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KACpC;IAkBD,wBAAwB,CAAC,SAAS,EAAE,MAAM,GAAG,qBAAqB,GAAG,IAAI;IAqBzE,2BAA2B,CACzB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,IAAI,CAAC,qBAAqB,EAAE,WAAW,GAAG,WAAW,CAAC,GAC/D,IAAI;IAWP,2BAA2B,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAQpD;;;;;;;OAOG;IACH,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAKjD;;;;;;OAMG;IACH,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAGhE,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAGvD,mDAAmD;IAC7C,0BAA0B,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAO3E,qBAAqB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAIxE;;;;OAIG;IACH,yBAAyB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAK3D;;;;OAIG;IACH,yBAAyB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAIzE,6EAA6E;IAC7E,0BAA0B,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAI5D,iGAAiG;IACjG,0BAA0B,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAQ9E;;;;;OAKG;IACH,WAAW,CACT,QAAQ,EAAE,MAAM,EAChB,IAAI,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE,GAC/C,kBAAkB;IA0DrB;;;OAGG;IACH,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAKtD,kDAAkD;IAC5C,yBAAyB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAQ1E;;;OAGG;IACH,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAQ/C;;;;;;;;;OASG;IACH,yBAAyB,CACvB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,EACvE,SAAS,EAAE,MAAM,GAChB,IAAI;IAwBP;;;OAGG;IACH,OAAO,CAAC,4BAA4B;IAgBpC;;;;;;;;;;;;;;;;OAgBG;IACH,yBAAyB,CACvB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,EACb,KAAK,SAAK,GACT,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IAsBtF;;;OAGG;IACH,OAAO,CAAC,yBAAyB;IA0CjC;;;;OAIG;IACH,OAAO,CAAC,qBAAqB;IAmC7B;;;;;OAKG;IACH,OAAO,CAAC,8BAA8B;IAgBtC;;;;OAIG;IACH,sBAAsB,IAAI,OAAO;IAIjC;;OAEG;IACH,yBAAyB,CACvB,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,MAAM,GACpB;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAYlG;;;OAGG;IACH,4BAA4B,CAC1B,SAAS,EAAE,MAAM,EACjB,KAAK,SAAK,GACT,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IAmBlG;;;OAGG;IACH,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAK3C;;;;OAIG;IACH,yBAAyB,CACvB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,KAAK,EAAE,GACf,IAAI;IASP;;;OAGG;IACH,sBAAsB,CACpB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,GACf,KAAK,EAAE,GAAG,IAAI;IAqBjB,uBAAuB,CAAC,GAAG,EAAE,iBAAiB,GAAG,IAAI;IAgBrD,sBAAsB,CAAC,KAAK,EAAE;QAC5B,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,kBAAkB,CAAC,EAAE,MAAM,CAAC;QAC5B,sBAAsB,CAAC,EAAE,MAAM,CAAC;QAChC,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;QACd,aAAa,EAAE,OAAO,CAAC;KACxB,GAAG,iBAAiB,EAAE;IA0GvB,+BAA+B,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAIlD,iCAAiC,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAQvD;;;OAGG;IACH,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,eAAe,EAAE,GAAG,QAAQ;IAYvF;;;;OAIG;IACH,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI;IAYjD;;OAEG;IACH,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,QAAQ,EAAE;IAI7C;;;OAGG;IACH,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAUrD;;OAEG;IACH,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAQzC,OAAO,CAAC,0BAA0B;IAclC,yBAAyB,IAAI,oBAAoB,EAAE;IAMnD,uBAAuB,CAAC,EAAE,EAAE,MAAM,GAAG,oBAAoB,GAAG,IAAI;IAKhE,+DAA+D;IAC/D,gCAAgC,CAC9B,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,GACd,oBAAoB,GAAG,IAAI;IAK9B,0BAA0B,CACxB,KAAK,EAAE,+BAA+B,GACrC,oBAAoB;IAwBvB,KAAK,IAAI,IAAI;CAKd"}