@agentdeck/bridge 1.0.4 → 1.0.5

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 (202) hide show
  1. package/assets/fm-helper/agentdeck-fm-helper +0 -0
  2. package/dist/adapters/claude-code.d.ts.map +1 -1
  3. package/dist/adapters/claude-code.js +3 -0
  4. package/dist/adapters/claude-code.js.map +1 -1
  5. package/dist/adb-reverse.d.ts.map +1 -1
  6. package/dist/adb-reverse.js +4 -2
  7. package/dist/adb-reverse.js.map +1 -1
  8. package/dist/apme/collector.js +2 -2
  9. package/dist/apme/collector.js.map +1 -1
  10. package/dist/apme/outcome.js +2 -2
  11. package/dist/apme/outcome.js.map +1 -1
  12. package/dist/apme/runner.js +3 -3
  13. package/dist/apme/runner.js.map +1 -1
  14. package/dist/ble-sync-spawn.js +1 -1
  15. package/dist/ble-sync-spawn.js.map +1 -1
  16. package/dist/calendar.d.ts +82 -0
  17. package/dist/calendar.d.ts.map +1 -0
  18. package/dist/calendar.js +324 -0
  19. package/dist/calendar.js.map +1 -0
  20. package/dist/card-feed.d.ts +63 -5
  21. package/dist/card-feed.d.ts.map +1 -1
  22. package/dist/card-feed.js +218 -14
  23. package/dist/card-feed.js.map +1 -1
  24. package/dist/card-modules.d.ts +4 -0
  25. package/dist/card-modules.d.ts.map +1 -1
  26. package/dist/card-modules.js +5 -3
  27. package/dist/card-modules.js.map +1 -1
  28. package/dist/check-deps.js +4 -4
  29. package/dist/check-deps.js.map +1 -1
  30. package/dist/cli.d.ts +35 -0
  31. package/dist/cli.d.ts.map +1 -1
  32. package/dist/cli.js +269 -9
  33. package/dist/cli.js.map +1 -1
  34. package/dist/codex-otel.d.ts +89 -0
  35. package/dist/codex-otel.d.ts.map +1 -0
  36. package/dist/codex-otel.js +487 -0
  37. package/dist/codex-otel.js.map +1 -0
  38. package/dist/codex-rate-limits.d.ts.map +1 -1
  39. package/dist/codex-rate-limits.js +15 -3
  40. package/dist/codex-rate-limits.js.map +1 -1
  41. package/dist/daemon-server.d.ts +4 -0
  42. package/dist/daemon-server.d.ts.map +1 -1
  43. package/dist/daemon-server.js +797 -54
  44. package/dist/daemon-server.js.map +1 -1
  45. package/dist/daemon-ws-client.d.ts +108 -24
  46. package/dist/daemon-ws-client.d.ts.map +1 -1
  47. package/dist/daemon-ws-client.js +175 -39
  48. package/dist/daemon-ws-client.js.map +1 -1
  49. package/dist/daemon.js +1 -1
  50. package/dist/device-voice-reply.d.ts.map +1 -1
  51. package/dist/device-voice-reply.js +15 -3
  52. package/dist/device-voice-reply.js.map +1 -1
  53. package/dist/device-voice.d.ts +37 -0
  54. package/dist/device-voice.d.ts.map +1 -1
  55. package/dist/device-voice.js +130 -1
  56. package/dist/device-voice.js.map +1 -1
  57. package/dist/diag-analyzer.d.ts.map +1 -1
  58. package/dist/diag-analyzer.js +1 -0
  59. package/dist/diag-analyzer.js.map +1 -1
  60. package/dist/display-monitor.d.ts.map +1 -1
  61. package/dist/display-monitor.js +1 -0
  62. package/dist/display-monitor.js.map +1 -1
  63. package/dist/esp32-serial.d.ts +4 -0
  64. package/dist/esp32-serial.d.ts.map +1 -1
  65. package/dist/esp32-serial.js +6 -3
  66. package/dist/esp32-serial.js.map +1 -1
  67. package/dist/foundation-models-helper.d.ts +23 -0
  68. package/dist/foundation-models-helper.d.ts.map +1 -1
  69. package/dist/foundation-models-helper.js +32 -0
  70. package/dist/foundation-models-helper.js.map +1 -1
  71. package/dist/gateway-probe.js +1 -1
  72. package/dist/gateway-probe.js.map +1 -1
  73. package/dist/glance-frame.d.ts +64 -0
  74. package/dist/glance-frame.d.ts.map +1 -0
  75. package/dist/glance-frame.js +364 -0
  76. package/dist/glance-frame.js.map +1 -0
  77. package/dist/hook-codex-sessions.d.ts +40 -0
  78. package/dist/hook-codex-sessions.d.ts.map +1 -0
  79. package/dist/hook-codex-sessions.js +174 -0
  80. package/dist/hook-codex-sessions.js.map +1 -0
  81. package/dist/idotmatrix/idotmatrix-discover.d.ts.map +1 -1
  82. package/dist/idotmatrix/idotmatrix-discover.js +7 -4
  83. package/dist/idotmatrix/idotmatrix-discover.js.map +1 -1
  84. package/dist/idotmatrix/idotmatrix-settings.d.ts +15 -0
  85. package/dist/idotmatrix/idotmatrix-settings.d.ts.map +1 -1
  86. package/dist/idotmatrix/idotmatrix-settings.js +21 -0
  87. package/dist/idotmatrix/idotmatrix-settings.js.map +1 -1
  88. package/dist/index.d.ts +7 -0
  89. package/dist/index.d.ts.map +1 -1
  90. package/dist/index.js +88 -7
  91. package/dist/index.js.map +1 -1
  92. package/dist/linux-service.d.ts +52 -0
  93. package/dist/linux-service.d.ts.map +1 -0
  94. package/dist/linux-service.js +206 -0
  95. package/dist/linux-service.js.map +1 -0
  96. package/dist/logger.d.ts +6 -0
  97. package/dist/logger.d.ts.map +1 -1
  98. package/dist/logger.js +15 -0
  99. package/dist/logger.js.map +1 -1
  100. package/dist/mdns-discover.d.ts +19 -0
  101. package/dist/mdns-discover.d.ts.map +1 -0
  102. package/dist/mdns-discover.js +109 -0
  103. package/dist/mdns-discover.js.map +1 -0
  104. package/dist/model-catalog.d.ts.map +1 -1
  105. package/dist/model-catalog.js +1 -0
  106. package/dist/model-catalog.js.map +1 -1
  107. package/dist/modules/adb-module.js +1 -1
  108. package/dist/modules/adb-module.js.map +1 -1
  109. package/dist/output-parser.d.ts +9 -0
  110. package/dist/output-parser.d.ts.map +1 -1
  111. package/dist/output-parser.js +67 -16
  112. package/dist/output-parser.js.map +1 -1
  113. package/dist/passive-observer.d.ts +57 -8
  114. package/dist/passive-observer.d.ts.map +1 -1
  115. package/dist/passive-observer.js +210 -74
  116. package/dist/passive-observer.js.map +1 -1
  117. package/dist/pixoo/pixoo-bridge.d.ts.map +1 -1
  118. package/dist/pixoo/pixoo-bridge.js +47 -6
  119. package/dist/pixoo/pixoo-bridge.js.map +1 -1
  120. package/dist/pixoo/pixoo-renderer.d.ts +2 -1
  121. package/dist/pixoo/pixoo-renderer.d.ts.map +1 -1
  122. package/dist/pixoo/pixoo-renderer.js +137 -8
  123. package/dist/pixoo/pixoo-renderer.js.map +1 -1
  124. package/dist/pocket-autonomy.d.ts +78 -0
  125. package/dist/pocket-autonomy.d.ts.map +1 -0
  126. package/dist/pocket-autonomy.js +529 -0
  127. package/dist/pocket-autonomy.js.map +1 -0
  128. package/dist/pty-manager.d.ts.map +1 -1
  129. package/dist/pty-manager.js +3 -2
  130. package/dist/pty-manager.js.map +1 -1
  131. package/dist/python-ble-runtime.d.ts +2 -0
  132. package/dist/python-ble-runtime.d.ts.map +1 -1
  133. package/dist/python-ble-runtime.js +2 -1
  134. package/dist/python-ble-runtime.js.map +1 -1
  135. package/dist/remote-sessions.d.ts +64 -0
  136. package/dist/remote-sessions.d.ts.map +1 -0
  137. package/dist/remote-sessions.js +81 -0
  138. package/dist/remote-sessions.js.map +1 -0
  139. package/dist/review-runner.js +2 -2
  140. package/dist/review-runner.js.map +1 -1
  141. package/dist/session-aggregator.d.ts +2 -0
  142. package/dist/session-aggregator.d.ts.map +1 -1
  143. package/dist/session-aggregator.js +6 -1
  144. package/dist/session-aggregator.js.map +1 -1
  145. package/dist/session-focus-relay.d.ts +47 -1
  146. package/dist/session-focus-relay.d.ts.map +1 -1
  147. package/dist/session-focus-relay.js +130 -15
  148. package/dist/session-focus-relay.js.map +1 -1
  149. package/dist/session-push-channel.d.ts +31 -0
  150. package/dist/session-push-channel.d.ts.map +1 -0
  151. package/dist/session-push-channel.js +94 -0
  152. package/dist/session-push-channel.js.map +1 -0
  153. package/dist/session-registry.d.ts +126 -0
  154. package/dist/session-registry.d.ts.map +1 -1
  155. package/dist/session-registry.js +180 -3
  156. package/dist/session-registry.js.map +1 -1
  157. package/dist/subagent-timeline.d.ts +34 -0
  158. package/dist/subagent-timeline.d.ts.map +1 -0
  159. package/dist/subagent-timeline.js +156 -0
  160. package/dist/subagent-timeline.js.map +1 -0
  161. package/dist/timebox/timebox-discover.js +1 -1
  162. package/dist/timebox/timebox-discover.js.map +1 -1
  163. package/dist/tui/gauge.d.ts +4 -2
  164. package/dist/tui/gauge.d.ts.map +1 -1
  165. package/dist/tui/gauge.js +8 -4
  166. package/dist/tui/gauge.js.map +1 -1
  167. package/dist/tui/renderer.d.ts.map +1 -1
  168. package/dist/tui/renderer.js +28 -0
  169. package/dist/tui/renderer.js.map +1 -1
  170. package/dist/types.d.ts +1 -1
  171. package/dist/types.d.ts.map +1 -1
  172. package/dist/types.js.map +1 -1
  173. package/dist/usage-api.d.ts +43 -0
  174. package/dist/usage-api.d.ts.map +1 -1
  175. package/dist/usage-api.js +114 -9
  176. package/dist/usage-api.js.map +1 -1
  177. package/dist/usage-event.d.ts +19 -0
  178. package/dist/usage-event.d.ts.map +1 -1
  179. package/dist/usage-event.js +35 -0
  180. package/dist/usage-event.js.map +1 -1
  181. package/dist/utils/project-name.d.ts.map +1 -1
  182. package/dist/utils/project-name.js +1 -0
  183. package/dist/utils/project-name.js.map +1 -1
  184. package/dist/version-check.d.ts.map +1 -1
  185. package/dist/version-check.js +3 -2
  186. package/dist/version-check.js.map +1 -1
  187. package/dist/voice-assistant.d.ts.map +1 -1
  188. package/dist/voice-assistant.js +2 -1
  189. package/dist/voice-assistant.js.map +1 -1
  190. package/dist/voice.d.ts.map +1 -1
  191. package/dist/voice.js +1 -0
  192. package/dist/voice.js.map +1 -1
  193. package/dist/weather.d.ts +72 -0
  194. package/dist/weather.d.ts.map +1 -0
  195. package/dist/weather.js +206 -0
  196. package/dist/weather.js.map +1 -0
  197. package/dist/windows-service.js +5 -5
  198. package/dist/windows-service.js.map +1 -1
  199. package/fm-helper/AgentDeckFMHelper.swift +200 -0
  200. package/package.json +15 -13
  201. package/src/idotmatrix/identity_generated.py +50 -0
  202. package/src/idotmatrix/scan.py +33 -13
@@ -7,6 +7,7 @@
7
7
  * State latency is controlled separately from the motion cadence.
8
8
  */
9
9
  import { DISPLAY_FORWARDED_EVENTS } from '@agentdeck/shared/protocol';
10
+ import { deriveSubagentActivity, } from '@agentdeck/shared';
10
11
  import { pushFrame, pushFrames, setBrightness, clearText, getDeviceBackoffStatus, switchToCustomChannel, onDeviceStatusChange, stopProbeTimer } from './pixoo-client.js';
11
12
  import { renderFrame, renderDisconnectedFrame, formatResetDetailed } from './pixoo-renderer.js';
12
13
  import { debug } from '../logger.js';
@@ -22,6 +23,7 @@ const deviceLastPushTime = new Map();
22
23
  let lastStateEvent = null;
23
24
  let lastUsageEvent = null;
24
25
  let lastSessions = null;
26
+ let lastTimelineEntries = [];
25
27
  // Display sleep state — when Mac display is off, dim Pixoo and pause stream
26
28
  let displayDimmed = false;
27
29
  let lastDisplayDimSignature = '';
@@ -47,7 +49,11 @@ export function pixooPushIntervalMs(stateChanged, mode) {
47
49
  }
48
50
  const CHANNEL_REASSERT_MS = 30_000; // Re-assert custom channel every 30s (fast recovery after reboots)
49
51
  const DEFAULT_BRIGHTNESS = 100;
50
- const FORWARDED_EVENTS = DISPLAY_FORWARDED_EVENTS;
52
+ const FORWARDED_EVENTS = new Set([
53
+ ...DISPLAY_FORWARDED_EVENTS,
54
+ 'timeline_event',
55
+ 'timeline_history',
56
+ ]);
51
57
  // Broadcast function injected by module for sending status notifications
52
58
  let broadcastFn = null;
53
59
  // ===== Public API =====
@@ -106,10 +112,34 @@ export function broadcastPixoo(event) {
106
112
  case 'sessions_list':
107
113
  lastSessions = event.sessions;
108
114
  break;
115
+ case 'timeline_event': {
116
+ const entry = event.entry;
117
+ if (entry) {
118
+ const upsert = event.upsert === true;
119
+ const index = upsert
120
+ ? lastTimelineEntries.findIndex((item) => item.ts === entry.ts && item.type === entry.type)
121
+ : -1;
122
+ if (index >= 0)
123
+ lastTimelineEntries[index] = entry;
124
+ else
125
+ lastTimelineEntries.push(entry);
126
+ lastTimelineEntries.sort((a, b) => a.ts - b.ts);
127
+ if (lastTimelineEntries.length > 96) {
128
+ lastTimelineEntries.splice(0, lastTimelineEntries.length - 96);
129
+ }
130
+ }
131
+ break;
132
+ }
133
+ case 'timeline_history':
134
+ lastTimelineEntries = [
135
+ ...(event.entries ?? []),
136
+ ].sort((a, b) => a.ts - b.ts).slice(-96);
137
+ break;
109
138
  case 'connection':
110
139
  if (event.status === 'disconnected') {
111
140
  lastStateEvent = null;
112
141
  lastUsageEvent = null;
142
+ lastTimelineEntries = [];
113
143
  }
114
144
  break;
115
145
  case 'display_state': {
@@ -198,6 +228,7 @@ export async function stopPixooBridge() {
198
228
  lastStateEvent = null;
199
229
  lastUsageEvent = null;
200
230
  lastSessions = null;
231
+ lastTimelineEntries = [];
201
232
  displayDimmed = false;
202
233
  lastDisplayDimSignature = '';
203
234
  broadcastFn = null;
@@ -270,14 +301,24 @@ function calculateStateHash() {
270
301
  const sessionInfo = lastSessions
271
302
  ? lastSessions.map(s => `${s.id}:${s.agentType}:${s.state}`).join(',')
272
303
  : '';
273
- return `${stateStr}|${gatewayConnected}|${gatewayHasError}|${r5}|${r7}|${u5}|${u7}|${cx1}|${cx2}|${cxStale}|${uStale}|${sessionInfo}|${displayDimmed}`;
304
+ const subagentInfo = Object.entries(currentSubagentActivity())
305
+ .map(([sessionId, activity]) => `${sessionId}:${activity.activeCount}:${activity.lastCompletedAt ?? 0}`)
306
+ .sort()
307
+ .join(',');
308
+ return `${stateStr}|${gatewayConnected}|${gatewayHasError}|${r5}|${r7}|${u5}|${u7}|${cx1}|${cx2}|${cxStale}|${uStale}|${sessionInfo}|${subagentInfo}|${displayDimmed}`;
274
309
  }
275
310
  function isAnimationActive() {
276
311
  const state = lastStateEvent?.state ?? 'disconnected';
277
312
  if (state === 'processing' || state.startsWith('awaiting'))
278
313
  return true;
314
+ if (Object.values(currentSubagentActivity()).some((activity) => activity.activeCount > 0)) {
315
+ return true;
316
+ }
279
317
  return lastSessions?.some(s => s.alive && (s.state === 'processing' || s.state?.startsWith('awaiting'))) ?? false;
280
318
  }
319
+ function currentSubagentActivity(now = Date.now()) {
320
+ return deriveSubagentActivity(lastTimelineEntries, { now });
321
+ }
281
322
  /**
282
323
  * State Check and Push tick using per-device adaptive modes.
283
324
  */
@@ -306,7 +347,7 @@ function doStateCheckAndPush() {
306
347
  debug('Pixoo', `${ts} pushing to ${due.length} dev(s) (changed=${stateChanged}, active=${active})`);
307
348
  const promises = due.map(({ dev, mode }) => {
308
349
  const count = 1;
309
- const frames = Array.from({ length: count }, (_, i) => renderFrame(lastStateEvent, lastUsageEvent, lastSessions, now + i * 180));
350
+ const frames = Array.from({ length: count }, (_, i) => renderFrame(lastStateEvent, lastUsageEvent, lastSessions, now + i * 180, 64, 'standard', currentSubagentActivity(now + i * 180)));
310
351
  // Rate-limit attempts as well as successes. This prevents a failed
311
352
  // endpoint from being retried on every 500 ms scheduler tick.
312
353
  deviceLastPushTime.set(dev.ip, Date.now());
@@ -332,13 +373,13 @@ function doStateCheckAndPush() {
332
373
  * Used by the live preview endpoint when no Pixoo device is connected.
333
374
  */
334
375
  export function renderPreviewFrame(size, layout = 'standard') {
335
- return renderFrame(lastStateEvent, lastUsageEvent, lastSessions, undefined, size, layout);
376
+ return renderFrame(lastStateEvent, lastUsageEvent, lastSessions, undefined, size, layout, currentSubagentActivity());
336
377
  }
337
378
  /**
338
379
  * Get the last calculated frame.
339
380
  */
340
381
  export function getLastFrame(size, layout = 'standard') {
341
- return renderFrame(lastStateEvent, lastUsageEvent, lastSessions, undefined, size, layout);
382
+ return renderFrame(lastStateEvent, lastUsageEvent, lastSessions, undefined, size, layout, currentSubagentActivity());
342
383
  }
343
384
  /** Notify all SSE frame listeners. */
344
385
  function notifyFrameListeners(frame) {
@@ -359,7 +400,7 @@ function startPreviewTimer() {
359
400
  stopPreviewTimer();
360
401
  return;
361
402
  }
362
- const frame = renderFrame(lastStateEvent, lastUsageEvent, lastSessions);
403
+ const frame = renderFrame(lastStateEvent, lastUsageEvent, lastSessions, undefined, 64, 'standard', currentSubagentActivity());
363
404
  notifyFrameListeners(frame);
364
405
  }, intervalMs);
365
406
  }
@@ -1 +1 @@
1
- {"version":3,"file":"pixoo-bridge.js","sourceRoot":"","sources":["../../src/pixoo/pixoo-bridge.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pixoo-bridge.js","sourceRoot":"","sources":["../../src/pixoo/pixoo-bridge.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EACL,sBAAsB,GAGvB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,aAAa,EAAE,SAAS,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACzK,OAAO,EAAE,WAAW,EAAE,uBAAuB,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAChG,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAErC,MAAM,GAAG,GAAG,OAAO,CAAC;AAUpB,6BAA6B;AAE7B,IAAI,OAAO,GAAkB,EAAE,CAAC;AAChC,IAAI,WAAW,GAA0C,IAAI,CAAC;AAC9D,IAAI,YAAY,GAAG,CAAC,CAAC;AACrB,IAAI,OAAO,GAAG,KAAK,CAAC,CAAC,mCAAmC;AACxD,IAAI,aAAa,GAAG,EAAE,CAAC;AACvB,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAAkB,CAAC;AAErD,uBAAuB;AACvB,IAAI,cAAc,GAA4B,IAAI,CAAC;AACnD,IAAI,cAAc,GAAsB,IAAI,CAAC;AAC7C,IAAI,YAAY,GAAyB,IAAI,CAAC;AAC9C,IAAI,mBAAmB,GAAoB,EAAE,CAAC;AAE9C,4EAA4E;AAC5E,IAAI,aAAa,GAAG,KAAK,CAAC;AAC1B,IAAI,uBAAuB,GAAG,EAAE,CAAC;AAEjC,oCAAoC;AACpC,IAAI,cAAc,GAAuC,EAAE,CAAC;AAC5D,IAAI,YAAY,GAA0C,IAAI,CAAC;AAC/D,IAAI,UAAU,GAAG,EAAE,CAAC,CAAC,8CAA8C;AAEnE,MAAM,uBAAuB,GAAG,GAAG,CAAC;AACpC,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,kBAAkB,EAAE,KAAK;IACzB,aAAa,EAAE,MAAM;IACrB,oBAAoB,EAAE,KAAK;CACnB,CAAC;AAGX,MAAM,UAAU,oBAAoB,CAAC,MAAe;IAClD,OAAO,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC;AAC1C,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,YAAqB,EAAE,IAAmB;IAC5E,IAAI,YAAY;QAAE,OAAO,iBAAiB,CAAC,kBAAkB,CAAC;IAC9D,IAAI,IAAI,KAAK,cAAc;QAAE,OAAO,iBAAiB,CAAC,oBAAoB,CAAC;IAC3E,OAAO,iBAAiB,CAAC,aAAa,CAAC;AACzC,CAAC;AACD,MAAM,mBAAmB,GAAG,MAAM,CAAC,CAAK,mEAAmE;AAC3G,MAAM,kBAAkB,GAAG,GAAG,CAAC;AAE/B,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC;IAC/B,GAAG,wBAAwB;IAC3B,gBAAgB;IAChB,kBAAkB;CACnB,CAAC,CAAC;AAEH,yEAAyE;AACzE,IAAI,WAAW,GAA0C,IAAI,CAAC;AAE9D,yBAAyB;AAEzB,4EAA4E;AAC5E,MAAM,UAAU,iBAAiB,CAAC,EAAgC;IAChE,WAAW,GAAG,EAAE,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,YAA4B;IAC3D,IAAI,CAAC,YAAY,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/C,KAAK,CAAC,GAAG,EAAE,uCAAuC,CAAC,CAAC;QACpD,OAAO;IACT,CAAC;IAED,OAAO,GAAG,YAAY,CAAC;IACvB,KAAK,CAAC,GAAG,EAAE,iBAAiB,OAAO,CAAC,MAAM,eAAe,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAExG,6EAA6E;IAC7E,iFAAiF;IACjF,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;QAC1B,qBAAqB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAC9C,aAAa,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,UAAU,IAAI,kBAAkB,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IAC9E,CAAC;IAED,8CAA8C;IAC9C,oBAAoB,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE;QAClC,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;QAC3C,MAAM,IAAI,GAAG,GAAG,EAAE,IAAI,IAAI,SAAS,CAAC;QACpC,IAAI,WAAW,EAAE,CAAC;YAChB,WAAW,CAAC;gBACV,IAAI,EAAE,eAAe;gBACrB,MAAM,EAAE,OAAO;gBACf,IAAI;gBACJ,EAAE;gBACF,MAAM;gBACN,OAAO,EAAE,MAAM;oBACb,CAAC,CAAC,GAAG,IAAI,cAAc;oBACvB,CAAC,CAAC,GAAG,IAAI,sCAAsC;aAC3C,CAAC,CAAC;QACZ,CAAC;QACD,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,EAAE,gBAAgB,CAAC,CAAC;IACtF,CAAC,CAAC,CAAC;IAEH,6BAA6B;IAC7B,IAAI,WAAW;QAAE,aAAa,CAAC,WAAW,CAAC,CAAC;IAC5C,WAAW,GAAG,WAAW,CAAC,mBAAmB,EAAE,uBAAuB,CAAC,CAAC;IAExE,KAAK,CAAC,GAAG,EAAE,uDAAuD,CAAC,CAAC;AACtE,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,KAAkB;IAC/C,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;QAAE,OAAO;IAE9C,mEAAmE;IACnE,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;QACnB,KAAK,cAAc;YACjB,cAAc,GAAG,KAAyB,CAAC;YAC3C,MAAM;QACR,KAAK,cAAc;YACjB,cAAc,GAAG,KAAmB,CAAC;YACrC,MAAM;QACR,KAAK,eAAe;YAClB,YAAY,GAAI,KAA2B,CAAC,QAAQ,CAAC;YACrD,MAAM;QACR,KAAK,gBAAgB,CAAC,CAAC,CAAC;YACtB,MAAM,KAAK,GAAI,KAAmC,CAAC,KAAK,CAAC;YACzD,IAAI,KAAK,EAAE,CAAC;gBACV,MAAM,MAAM,GAAI,KAA8B,CAAC,MAAM,KAAK,IAAI,CAAC;gBAC/D,MAAM,KAAK,GAAG,MAAM;oBAClB,CAAC,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE,CACvC,IAAI,CAAC,EAAE,KAAK,KAAK,CAAC,EAAE,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC;oBACnD,CAAC,CAAC,CAAC,CAAC,CAAC;gBACP,IAAI,KAAK,IAAI,CAAC;oBAAE,mBAAmB,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;;oBAC9C,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACrC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;gBAChD,IAAI,mBAAmB,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;oBACpC,mBAAmB,CAAC,MAAM,CAAC,CAAC,EAAE,mBAAmB,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;gBACjE,CAAC;YACH,CAAC;YACD,MAAM;QACR,CAAC;QACD,KAAK,kBAAkB;YACrB,mBAAmB,GAAG;gBACpB,GAAG,CAAE,KAAuC,CAAC,OAAO,IAAI,EAAE,CAAC;aAC5D,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;YACzC,MAAM;QACR,KAAK,YAAY;YACf,IAAK,KAAa,CAAC,MAAM,KAAK,cAAc,EAAE,CAAC;gBAC7C,cAAc,GAAG,IAAI,CAAC;gBACtB,cAAc,GAAG,IAAI,CAAC;gBACtB,mBAAmB,GAAG,EAAE,CAAC;YAC3B,CAAC;YACD,MAAM;QACR,KAAK,eAAe,CAAC,CAAC,CAAC;YACrB,MAAM,SAAS,GAAI,KAAa,CAAC,SAAoB,CAAC;YACtD,MAAM,GAAG,GAAI,KAAa,CAAC,GAA0C,CAAC;YACtE,MAAM,UAAU,GAAG,GAAG,EAAE,OAAO,CAAC;YAChC,MAAM,UAAU,GAAG,OAAO,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC;YACvE,MAAM,OAAO,GAAG,GAAG,EAAE,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;YACpD,MAAM,QAAQ,GAAG,GAAG,EAAE,KAAK,CAAC;YAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACtG,MAAM,SAAS,GAAG,GAAG,UAAU,IAAI,OAAO,IAAI,QAAQ,EAAE,CAAC;YAEzD,IAAI,CAAC,SAAS,IAAI,CAAC,UAAU,EAAE,CAAC;gBAC9B,IAAI,aAAa,EAAE,CAAC;oBAClB,aAAa,GAAG,KAAK,CAAC;oBACtB,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;wBAC1B,aAAa,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,UAAU,IAAI,kBAAkB,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;oBAC9E,CAAC;oBACD,aAAa,GAAG,EAAE,CAAC;oBACnB,IAAI,CAAC,WAAW,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBACvC,WAAW,GAAG,WAAW,CAAC,mBAAmB,EAAE,uBAAuB,CAAC,CAAC;wBACxE,mBAAmB,EAAE,CAAC;oBACxB,CAAC;gBACH,CAAC;gBACD,KAAK,CAAC,GAAG,EAAE,iDAAiD,CAAC,CAAC;YAChE,CAAC;iBAAM,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC,aAAa,IAAI,SAAS,KAAK,uBAAuB,CAAC,EAAE,CAAC;gBACnF,+CAA+C;gBAC/C,MAAM,MAAM,GAAG,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;gBAChD,aAAa,GAAG,IAAI,CAAC;gBACrB,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;oBAC1B,aAAa,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;gBAChD,CAAC;gBACD,IAAI,WAAW,EAAE,CAAC;oBAChB,aAAa,CAAC,WAAW,CAAC,CAAC;oBAC3B,WAAW,GAAG,IAAI,CAAC;gBACrB,CAAC;gBACD,KAAK,CAAC,GAAG,EAAE,8BAA8B,MAAM,iBAAiB,CAAC,CAAC;YACpE,CAAC;iBAAM,IAAI,SAAS,IAAI,aAAa,EAAE,CAAC;gBACtC,wDAAwD;gBACxD,aAAa,GAAG,KAAK,CAAC;gBACtB,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;oBAC1B,aAAa,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,UAAU,IAAI,kBAAkB,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;gBAC9E,CAAC;gBACD,iEAAiE;gBACjE,UAAU,CAAC,GAAG,EAAE;oBACd,IAAI,CAAC,aAAa,IAAI,CAAC,WAAW,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBACzD,WAAW,GAAG,WAAW,CAAC,mBAAmB,EAAE,uBAAuB,CAAC,CAAC;wBACxE,aAAa,GAAG,EAAE,CAAC,CAAC,gBAAgB;wBACpC,mBAAmB,EAAE,CAAC,CAAC,2BAA2B;oBACpD,CAAC;gBACH,CAAC,EAAE,GAAG,CAAC,CAAC;gBACR,KAAK,CAAC,GAAG,EAAE,oDAAoD,CAAC,CAAC;YACnE,CAAC;YACD,uBAAuB,GAAG,SAAS,CAAC;YACpC,MAAM;QACR,CAAC;IACH,CAAC;IAED,wDAAwD;IACxD,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,aAAa,GAAG,EAAE,CAAC,CAAC,gBAAgB;YACpC,mBAAmB,EAAE,CAAC;QACxB,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe;IACnC,IAAI,WAAW,EAAE,CAAC;QAChB,aAAa,CAAC,WAAW,CAAC,CAAC;QAC3B,WAAW,GAAG,IAAI,CAAC;IACrB,CAAC;IACD,cAAc,EAAE,CAAC;IAEjB,+DAA+D;IAC/D,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,KAAK,GAAG,uBAAuB,EAAE,CAAC;QACxC,MAAM,OAAO,CAAC,IAAI,CAAC;YACjB,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC,CAAC;YACzE,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;SAClD,CAAC,CAAC;IACL,CAAC;IAED,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;QAC1B,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IACpC,CAAC;IAED,gBAAgB,EAAE,CAAC;IACnB,OAAO,GAAG,EAAE,CAAC;IACb,cAAc,GAAG,IAAI,CAAC;IACtB,cAAc,GAAG,IAAI,CAAC;IACtB,YAAY,GAAG,IAAI,CAAC;IACpB,mBAAmB,GAAG,EAAE,CAAC;IACzB,aAAa,GAAG,KAAK,CAAC;IACtB,uBAAuB,GAAG,EAAE,CAAC;IAC7B,WAAW,GAAG,IAAI,CAAC;IACnB,cAAc,GAAG,EAAE,CAAC;IACpB,kBAAkB,CAAC,KAAK,EAAE,CAAC;IAC3B,KAAK,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC;AAC/B,CAAC;AAED,mEAAmE;AACnE,MAAM,UAAU,eAAe,CAAC,QAAqC;IACnE,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC9B,iBAAiB,EAAE,CAAC;AACtB,CAAC;AAED,+BAA+B;AAC/B,MAAM,UAAU,gBAAgB,CAAC,QAAqC;IACpE,cAAc,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC;IAC5D,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC;QAAE,gBAAgB,EAAE,CAAC;AACtD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,GAAW;IACvC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACxD,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9B,gBAAgB,EAAE,CAAC;QACnB,iBAAiB,EAAE,CAAC;IACtB,CAAC;IACD,KAAK,CAAC,GAAG,EAAE,sBAAsB,UAAU,EAAE,CAAC,CAAC;AACjD,CAAC;AAED,uCAAuC;AACvC,MAAM,UAAU,aAAa;IAC3B,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,gBAAgB;IAC9B,OAAO,OAAO,CAAC,MAAM,CAAC;AACxB,CAAC;AAED,MAAM,UAAU,qBAAqB;IASnC,OAAO,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;QACvB,MAAM,OAAO,GAAG,sBAAsB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC/C,OAAO;YACL,EAAE,EAAE,GAAG,CAAC,EAAE;YACV,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,SAAS;YAC3B,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,WAAW,EAAE,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9D,aAAa,EAAE,oBAAoB,CAAC,iBAAiB,EAAE,CAAC;SACzD,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,uBAAuB;AAEvB;;GAEG;AACH,SAAS,kBAAkB;IACzB,MAAM,QAAQ,GAAG,cAAc,EAAE,KAAK,IAAI,cAAc,CAAC;IACzD,MAAM,gBAAgB,GAAG,cAAc,EAAE,gBAAgB,IAAI,KAAK,CAAC;IACnE,MAAM,eAAe,GAAG,cAAc,EAAE,eAAe,IAAI,KAAK,CAAC;IAEjE,MAAM,EAAE,GAAG,cAAc,CAAC,CAAC,CAAC,mBAAmB,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACtF,MAAM,EAAE,GAAG,cAAc,CAAC,CAAC,CAAC,mBAAmB,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACtF,MAAM,EAAE,GAAG,cAAc,EAAE,eAAe,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACrG,MAAM,EAAE,GAAG,cAAc,EAAE,eAAe,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACrG,MAAM,GAAG,GAAG,cAAc,EAAE,eAAe,EAAE,OAAO,EAAE,WAAW,IAAI,IAAI;QACvE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,eAAe,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACxE,MAAM,GAAG,GAAG,cAAc,EAAE,eAAe,EAAE,SAAS,EAAE,WAAW,IAAI,IAAI;QACzE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,eAAe,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1E,MAAM,OAAO,GAAG,GAAG,cAAc,EAAE,eAAe,EAAE,OAAO,EAAE,KAAK,KAAK,IAAI,IAAI,cAAc,EAAE,eAAe,EAAE,SAAS,EAAE,KAAK,KAAK,IAAI,EAAE,CAAC;IAC5I,MAAM,MAAM,GAAG,cAAc,EAAE,UAAU,IAAI,KAAK,CAAC;IAEnD,MAAM,WAAW,GAAG,YAAY;QAC9B,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;QACtE,CAAC,CAAC,EAAE,CAAC;IACP,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,uBAAuB,EAAE,CAAC;SAC3D,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,QAAQ,CAAC,EAAE,EAAE,CAC7B,GAAG,SAAS,IAAI,QAAQ,CAAC,WAAW,IAAI,QAAQ,CAAC,eAAe,IAAI,CAAC,EAAE,CAAC;SACzE,IAAI,EAAE;SACN,IAAI,CAAC,GAAG,CAAC,CAAC;IAEb,OAAO,GAAG,QAAQ,IAAI,gBAAgB,IAAI,eAAe,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,OAAO,IAAI,MAAM,IAAI,WAAW,IAAI,YAAY,IAAI,aAAa,EAAE,CAAC;AACzK,CAAC;AAED,SAAS,iBAAiB;IACxB,MAAM,KAAK,GAAG,cAAc,EAAE,KAAK,IAAI,cAAc,CAAC;IACtD,IAAI,KAAK,KAAK,YAAY,IAAI,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC;QAAE,OAAO,IAAI,CAAC;IACxE,IAAI,MAAM,CAAC,MAAM,CAAC,uBAAuB,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,WAAW,GAAG,CAAC,CAAC,EAAE,CAAC;QAC1F,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,YAAY,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,KAAK,YAAY,IAAI,CAAC,CAAC,KAAK,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC;AACpH,CAAC;AAED,SAAS,uBAAuB,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;IAC/C,OAAO,sBAAsB,CAAC,mBAAmB,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;AAC9D,CAAC;AAED;;GAEG;AACH,SAAS,mBAAmB;IAC1B,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IACjC,IAAI,OAAO;QAAE,OAAO;IACpB,IAAI,aAAa;QAAE,OAAO;IAE1B,MAAM,WAAW,GAAG,kBAAkB,EAAE,CAAC;IACzC,MAAM,YAAY,GAAG,WAAW,KAAK,aAAa,CAAC;IACnD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,MAAM,MAAM,GAAG,iBAAiB,EAAE,CAAC;IACnC,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;QAChC,MAAM,IAAI,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC;QAC1C,MAAM,OAAO,GAAG,GAAG,GAAG,CAAC,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;QAC5D,OAAO,OAAO,IAAI,mBAAmB,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACnF,CAAC,CAAC,CAAC;IACH,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAE7B,OAAO,GAAG,IAAI,CAAC;IACf,aAAa,GAAG,WAAW,CAAC;IAE5B,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QAClD,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,eAAe,GAAG,CAAC,MAAM,oBAAoB,YAAY,YAAY,MAAM,GAAG,CAAC,CAAC;QAEpG,MAAM,QAAQ,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE;YACzC,MAAM,KAAK,GAAG,CAAC,CAAC;YAChB,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACpD,WAAW,CACT,cAAc,EACd,cAAc,EACd,YAAY,EACZ,GAAG,GAAG,CAAC,GAAG,GAAG,EACb,EAAE,EACF,UAAU,EACV,uBAAuB,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CACvC,CAAC,CAAC;YACL,mEAAmE;YACnE,8DAA8D;YAC9D,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;YAC3C,OAAO,UAAU,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;gBAClE,IAAI,EAAE,EAAE,CAAC;oBACP,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;oBAC3C,YAAY,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;gBAC5B,CAAC;gBACD,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,KAAK,IAAI,KAAK,KAAK,SAAS,CAAC,CAAC;YACzF,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAQ,EAAE,EAAE;gBACpB,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,CAAC,EAAE,WAAW,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC;YAC/D,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5D,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,OAAO,GAAG,KAAK,CAAC;QAChB,KAAK,CAAC,OAAO,EAAE,sBAAsB,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC;IACvD,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAmB,EAAE,SAA+B,UAAU;IAC/F,OAAO,WAAW,CAChB,cAAc,EACd,cAAc,EACd,YAAY,EACZ,SAAS,EACT,IAAI,EACJ,MAAM,EACN,uBAAuB,EAAE,CAC1B,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,IAAmB,EAAE,SAA+B,UAAU;IACzF,OAAO,WAAW,CAChB,cAAc,EACd,cAAc,EACd,YAAY,EACZ,SAAS,EACT,IAAI,EACJ,MAAM,EACN,uBAAuB,EAAE,CAC1B,CAAC;AACJ,CAAC;AAED,sCAAsC;AACtC,SAAS,oBAAoB,CAAC,KAAiB;IAC7C,KAAK,MAAM,QAAQ,IAAI,cAAc,EAAE,CAAC;QACtC,IAAI,CAAC;YAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,iBAAiB,CAAC,CAAC;IACtD,CAAC;AACH,CAAC;AAED,2EAA2E;AAC3E,SAAS,iBAAiB;IACxB,IAAI,YAAY;QAAE,OAAO;IACzB,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,UAAU,CAAC,CAAC;IACjD,YAAY,GAAG,WAAW,CAAC,GAAG,EAAE;QAC9B,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAAC,gBAAgB,EAAE,CAAC;YAAC,OAAO;QAAC,CAAC;QAChE,MAAM,KAAK,GAAG,WAAW,CACvB,cAAc,EACd,cAAc,EACd,YAAY,EACZ,SAAS,EACT,EAAE,EACF,UAAU,EACV,uBAAuB,EAAE,CAC1B,CAAC;QACF,oBAAoB,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC,EAAE,UAAU,CAAC,CAAC;AACjB,CAAC;AAED,SAAS,gBAAgB;IACvB,IAAI,YAAY,EAAE,CAAC;QAAC,aAAa,CAAC,YAAY,CAAC,CAAC;QAAC,YAAY,GAAG,IAAI,CAAC;IAAC,CAAC;AACzE,CAAC"}
@@ -17,6 +17,7 @@
17
17
  * 3. Scaled creatures → output buffer (HD grid sprites with camera-aware sizing)
18
18
  * 4. Screen-space overlays (danger flash) → output buffer
19
19
  */
20
+ import { type SubagentActivityBySession } from '@agentdeck/shared';
20
21
  import type { StateUpdateEvent, UsageEvent } from '../types.js';
21
22
  import type { SessionInfo } from '@agentdeck/shared/protocol';
22
23
  type CreatureType = 'octopus' | 'jellyfish' | 'opencode' | 'antigravity';
@@ -29,7 +30,7 @@ export declare function formatResetDetailed(resetsAt: string | undefined): strin
29
30
  * `layout='micro'` renders the Timebox Mini Agent Beacon;
30
31
  * `'standard'` is the full terrarium.
31
32
  */
32
- export declare function renderFrame(stateEvent: StateUpdateEvent | null, usageEvent: UsageEvent | null, sessions: SessionInfo[] | null, timeOverrideMs?: number, size?: 11 | 32 | 64, layout?: 'standard' | 'micro'): Uint8Array;
33
+ export declare function renderFrame(stateEvent: StateUpdateEvent | null, usageEvent: UsageEvent | null, sessions: SessionInfo[] | null, timeOverrideMs?: number, size?: 11 | 32 | 64, layout?: 'standard' | 'micro', subagentActivity?: SubagentActivityBySession): Uint8Array;
33
34
  /** Render a static black frame with centered grey "OFFLINE" text. */
34
35
  export declare function renderDisconnectedFrame(): Uint8Array;
35
36
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"pixoo-renderer.d.ts","sourceRoot":"","sources":["../../src/pixoo/pixoo-renderer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAIH,OAAO,KAAK,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAChE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AA0E9D,KAAK,YAAY,GAAG,SAAS,GAAG,WAAW,GAAG,UAAU,GAAG,aAAa,CAAC;AAgjBzE,kDAAkD;AAClD,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAcxE;AAgVD;;;;;;GAMG;AACH,wBAAgB,WAAW,CACzB,UAAU,EAAE,gBAAgB,GAAG,IAAI,EACnC,UAAU,EAAE,UAAU,GAAG,IAAI,EAC7B,QAAQ,EAAE,WAAW,EAAE,GAAG,IAAI,EAC9B,cAAc,CAAC,EAAE,MAAM,EACvB,IAAI,GAAE,EAAE,GAAG,EAAE,GAAG,EAAO,EACvB,MAAM,GAAE,UAAU,GAAG,OAAoB,GACxC,UAAU,CAqOZ;AAID,qEAAqE;AACrE,wBAAgB,uBAAuB,IAAI,UAAU,CAIpD;AAGD;;;;;;;;GAQG;AACH,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,WAAW,EAAE,GAAG,IAAI,EAC9B,UAAU,EAAE,gBAAgB,GAAG,IAAI,GAClC,KAAK,CAAC;IACP,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,YAAY,CAAC;IAC3B,KAAK,EAAE,MAAM,GAAG,YAAY,GAAG,UAAU,CAAC;IAC1C,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC,CAWD;AAED,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACxE,YAAY,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"pixoo-renderer.d.ts","sourceRoot":"","sources":["../../src/pixoo/pixoo-renderer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAGH,OAAO,EAEL,KAAK,yBAAyB,EAE/B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAChE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AA0E9D,KAAK,YAAY,GAAG,SAAS,GAAG,WAAW,GAAG,UAAU,GAAG,aAAa,CAAC;AAgjBzE,kDAAkD;AAClD,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAcxE;AA0gBD;;;;;;GAMG;AACH,wBAAgB,WAAW,CACzB,UAAU,EAAE,gBAAgB,GAAG,IAAI,EACnC,UAAU,EAAE,UAAU,GAAG,IAAI,EAC7B,QAAQ,EAAE,WAAW,EAAE,GAAG,IAAI,EAC9B,cAAc,CAAC,EAAE,MAAM,EACvB,IAAI,GAAE,EAAE,GAAG,EAAE,GAAG,EAAO,EACvB,MAAM,GAAE,UAAU,GAAG,OAAoB,EACzC,gBAAgB,GAAE,yBAA8B,GAC/C,UAAU,CA8PZ;AAID,qEAAqE;AACrE,wBAAgB,uBAAuB,IAAI,UAAU,CAIpD;AAGD;;;;;;;;GAQG;AACH,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,WAAW,EAAE,GAAG,IAAI,EAC9B,UAAU,EAAE,gBAAgB,GAAG,IAAI,GAClC,KAAK,CAAC;IACP,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,YAAY,CAAC;IAC3B,KAAK,EAAE,MAAM,GAAG,YAAY,GAAG,UAAU,CAAC;IAC1C,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC,CAWD;AAED,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACxE,YAAY,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC"}
@@ -18,12 +18,12 @@
18
18
  * 4. Screen-space overlays (danger flash) → output buffer
19
19
  */
20
20
  import { State } from '../types.js';
21
- import { PASSIVE_OFFLINE_LABEL } from '@agentdeck/shared';
21
+ import { PASSIVE_OFFLINE_LABEL, } from '@agentdeck/shared';
22
22
  import { hasOpenClawSession, foldCodexSessionsForDisplay } from '@agentdeck/shared';
23
23
  import { layoutOctopuses, layoutCloudCreatures, layoutOpenCodeCreatures, layoutAntigravityCreatures, } from '@agentdeck/shared';
24
24
  import { drawTextCentered } from './pixoo-font.js';
25
25
  import { COLORS, setPixel, blendPixel, glowPixel, lerpColor, drawOfficialDotGlyph, drawTetra, drawText, getOctopusPaletteForSession, getJellyfishPaletteForSession, getOpenCodePaletteForSession, getAntigravityPaletteForSession, } from './pixoo-sprites.js';
26
- import { blitWithCamera, quantizeCameraPixels, updateDirector, WORLD_SIZE, ACTIVE_SIZE, } from './pixoo-camera.js';
26
+ import { blitWithCamera, quantizeCameraPixels, updateDirector, worldToScreen, WORLD_SIZE, ACTIVE_SIZE, } from './pixoo-camera.js';
27
27
  import { MICRO_SIZE, paintTimeboxBeacon, } from './micro-glyphs.js';
28
28
  import { OFFICIAL_DOT_GLYPHS, OFFICIAL_DOT_GLYPH_SIZE, } from './official-dot-glyphs.generated.js';
29
29
  const W = WORLD_SIZE;
@@ -719,7 +719,7 @@ function drawUsageHUD(buf, usageEvent, animFrame) {
719
719
  * the requested output. A stable 9×9 official mark carries identity while the
720
720
  * one-pixel perimeter rail alone carries state and motion.
721
721
  */
722
- function renderMicroFrame(outputBuf, size, animFrame, stateEvent, sessions, usagePct) {
722
+ function renderMicroFrame(outputBuf, size, animFrame, stateEvent, sessions, usagePct, subagentActivity, now) {
723
723
  // Presence-driven SSOT: the crayfish renders iff the daemon emitted an
724
724
  // OpenClaw session — never from raw gateway flags. The daemon emits it iff
725
725
  // the Gateway is authenticated, so reachability/error alone won't draw it.
@@ -748,6 +748,24 @@ function renderMicroFrame(outputBuf, size, animFrame, stateEvent, sessions, usag
748
748
  creature = 'crayfish';
749
749
  }
750
750
  paintTimeboxBeacon(base, creature, aggregate, animFrame);
751
+ // At 11×11 a literal orbit would destroy the official mark. Keep only a
752
+ // fixed perimeter constellation: up to three cyan companion pixels owned by
753
+ // the dominant parent. It is static, legible, and still non-interactive.
754
+ const dominantActivity = dominant
755
+ ? subagentActivity[dominant.sessionId]
756
+ : undefined;
757
+ const companionPixels = [
758
+ [0, 0], [10, 0], [10, 10],
759
+ ];
760
+ for (let i = 0; i < Math.min(dominantActivity?.activeCount ?? 0, 3); i++) {
761
+ setPixel(base, companionPixels[i][0], companionPixels[i][1], [0, 229, 255]);
762
+ }
763
+ const completionAge = dominantActivity?.lastCompletedAt == null
764
+ ? Infinity
765
+ : now - dominantActivity.lastCompletedAt;
766
+ if (completionAge >= 0 && completionAge < 4_000) {
767
+ setPixel(base, 0, 10, [170, 245, 255]);
768
+ }
751
769
  // Scale the 11×11 base into the size×size output (1:1 when size === 11).
752
770
  for (let y = 0; y < size; y++) {
753
771
  const sy = Math.min(MICRO_SIZE - 1, Math.floor((y * MICRO_SIZE) / size));
@@ -764,7 +782,7 @@ function renderMicroFrame(outputBuf, size, animFrame, stateEvent, sessions, usag
764
782
  /** Native 32×32 iDotMatrix identity stage. The panel gets saturated official
765
783
  * marks on a quiet field plus four fixed telemetry rails; no 64px scene is
766
784
  * downsampled, so cutouts remain physical pixels. */
767
- function renderCompact32Frame(outputBuf, animFrame, stateEvent, sessions, usageEvent) {
785
+ function renderCompact32Frame(outputBuf, animFrame, stateEvent, sessions, usageEvent, subagentActivity, now) {
768
786
  const set = (x, y, color) => setPixel(outputBuf, x, y, color);
769
787
  const state = String(stateEvent?.state ?? State.IDLE);
770
788
  for (let y = 0; y < 28; y++) {
@@ -782,7 +800,11 @@ function renderCompact32Frame(outputBuf, animFrame, stateEvent, sessions, usageE
782
800
  const glyphFor = (kind) => kind === 'jellyfish' ? 'codex' : kind === 'opencode' ? 'openCode'
783
801
  : kind === 'antigravity' ? 'antigravity' : 'claudeCode';
784
802
  const priority = (s) => s === 'awaiting' ? 0 : s === 'processing' ? 1 : 2;
785
- const marks = [...creatureInstances.values()].map((c) => ({ glyph: glyphFor(c.creatureType), state: c.state }));
803
+ const marks = [...creatureInstances.values()].map((c) => ({
804
+ glyph: glyphFor(c.creatureType),
805
+ state: c.state,
806
+ sessionId: c.sessionId,
807
+ }));
786
808
  if (hasOpenClawSession(sessions ?? [])) {
787
809
  const routing = sessions?.some((s) => s.agentType === 'openclaw' && s.state === 'processing') ?? false;
788
810
  marks.push({ glyph: 'openClaw', state: routing ? 'processing' : 'idle' });
@@ -851,6 +873,23 @@ function renderCompact32Frame(outputBuf, animFrame, stateEvent, sessions, usageE
851
873
  set(Math.min(31, x0 + slot.size), Math.max(2, y0), [255, 190, 45]);
852
874
  set(Math.min(31, x0 + slot.size), Math.max(2, y0 + 1), [255, 190, 45]);
853
875
  }
876
+ const activity = mark.sessionId ? subagentActivity[mark.sessionId] : undefined;
877
+ const visibleCount = Math.min(activity?.activeCount ?? 0, 3);
878
+ for (let satellite = 0; satellite < visibleCount; satellite++) {
879
+ const angle = now / 2_500 + satellite * Math.PI * 2 / visibleCount;
880
+ const radius = slot.size / 2 + 2;
881
+ const sx = Math.round(slot.x + Math.cos(angle) * radius);
882
+ const sy = Math.round(slot.y + bob + Math.sin(angle) * radius * 0.45);
883
+ set(Math.round((slot.x + sx) / 2), Math.round((slot.y + bob + sy) / 2), [20, 92, 112]);
884
+ set(sx, sy, [0, 229, 255]);
885
+ }
886
+ const completionAge = activity?.lastCompletedAt == null
887
+ ? Infinity
888
+ : now - activity.lastCompletedAt;
889
+ if (completionAge >= 0 && completionAge < 4_000) {
890
+ set(Math.max(0, x0 - 1), Math.max(2, y0 - 1), [170, 245, 255]);
891
+ set(Math.min(31, x0 + slot.size), Math.max(2, y0 - 1), [170, 245, 255]);
892
+ }
854
893
  });
855
894
  if (marks.length === 0) {
856
895
  for (const [x, y] of [[14, 12], [15, 11], [16, 12], [17, 11], [18, 12], [15, 14], [16, 15], [17, 14]]) {
@@ -882,6 +921,95 @@ function renderCompact32Frame(outputBuf, animFrame, stateEvent, sessions, usageE
882
921
  set(x, y, color);
883
922
  });
884
923
  }
924
+ function drawSubagentPixelLine(buf, fromX, fromY, toX, toY, color) {
925
+ let x = Math.round(fromX);
926
+ let y = Math.round(fromY);
927
+ const targetX = Math.round(toX);
928
+ const targetY = Math.round(toY);
929
+ const dx = Math.abs(targetX - x);
930
+ const sx = x < targetX ? 1 : -1;
931
+ const dy = -Math.abs(targetY - y);
932
+ const sy = y < targetY ? 1 : -1;
933
+ let error = dx + dy;
934
+ let step = 0;
935
+ while (true) {
936
+ if ((step++ & 1) === 0)
937
+ blendPixel(buf, x, y, color, 0.42);
938
+ if (x === targetX && y === targetY)
939
+ break;
940
+ const twiceError = error * 2;
941
+ if (twiceError >= dy) {
942
+ error += dy;
943
+ x += sx;
944
+ }
945
+ if (twiceError <= dx) {
946
+ error += dx;
947
+ y += sy;
948
+ }
949
+ }
950
+ }
951
+ function drawSubagentOrbitForCreature(buf, creature, camera, activity, animFrame, now) {
952
+ const completionAge = activity.lastCompletedAt == null
953
+ ? Infinity
954
+ : now - activity.lastCompletedAt;
955
+ const completionProgress = completionAge >= 0 && completionAge < 4_000
956
+ ? completionAge / 4_000
957
+ : null;
958
+ if (activity.activeCount <= 0 && completionProgress == null)
959
+ return;
960
+ const [centerX, centerY] = worldToScreen(creature.worldX, creature.worldY, camera);
961
+ const radiusX = Math.max(6, 7.5 * creature.sizeScale * camera.zoom);
962
+ const radiusY = Math.max(2, radiusX * 0.38);
963
+ const tilt = -0.28;
964
+ const point = (angle, multiplier = 1) => {
965
+ const localX = Math.cos(angle) * radiusX * multiplier;
966
+ const localY = Math.sin(angle) * radiusY * multiplier;
967
+ return [
968
+ centerX + localX * Math.cos(tilt) - localY * Math.sin(tilt),
969
+ centerY + localX * Math.sin(tilt) + localY * Math.cos(tilt),
970
+ ];
971
+ };
972
+ if (activity.activeCount > 0) {
973
+ const ringColor = [20, 105, 126];
974
+ for (let step = 0; step < 44; step += 2) {
975
+ const [x, y] = point(step / 44 * Math.PI * 2);
976
+ blendPixel(buf, Math.round(x), Math.round(y), ringColor, 0.76);
977
+ }
978
+ const visibleCount = Math.min(activity.activeCount, 3);
979
+ for (let index = 0; index < visibleCount; index++) {
980
+ const angle = animFrame * 0.072 + index * Math.PI * 2 / visibleCount;
981
+ const [satelliteX, satelliteY] = point(angle);
982
+ drawSubagentPixelLine(buf, centerX, centerY, satelliteX, satelliteY, [16, 90, 110]);
983
+ glowPixel(buf, Math.round(satelliteX), Math.round(satelliteY), [0, 229, 255], 0.88);
984
+ if (index === 2 && activity.activeCount > 3) {
985
+ const labelX = Math.max(4, Math.min(57, Math.round(satelliteX + 5)));
986
+ const labelY = Math.max(1, Math.min(58, Math.round(satelliteY - 3)));
987
+ setPixel(buf, labelX, labelY + 2, [160, 245, 255]);
988
+ setPixel(buf, labelX - 1, labelY + 2, [160, 245, 255]);
989
+ setPixel(buf, labelX + 1, labelY + 2, [160, 245, 255]);
990
+ setPixel(buf, labelX, labelY + 1, [160, 245, 255]);
991
+ setPixel(buf, labelX, labelY + 3, [160, 245, 255]);
992
+ drawText(buf, String(activity.activeCount - 3), Math.min(64, labelX + 8), labelY, [160, 245, 255]);
993
+ }
994
+ }
995
+ }
996
+ if (completionProgress != null) {
997
+ const pulseRadius = radiusX * (0.72 + completionProgress * 0.58);
998
+ const pulseColor = [130, 238, 255];
999
+ for (let step = 0; step < 36; step += 2) {
1000
+ const angle = step / 36 * Math.PI * 2;
1001
+ blendPixel(buf, Math.round(centerX + Math.cos(angle) * pulseRadius), Math.round(centerY + Math.sin(angle) * pulseRadius), pulseColor, (1 - completionProgress) * 0.76);
1002
+ }
1003
+ }
1004
+ }
1005
+ function drawSubagentOrbits(buf, camera, activityBySession, animFrame, now) {
1006
+ for (const creature of creatureInstances.values()) {
1007
+ const activity = activityBySession[creature.sessionId];
1008
+ if (!activity)
1009
+ continue;
1010
+ drawSubagentOrbitForCreature(buf, creature, camera, activity, animFrame, now);
1011
+ }
1012
+ }
885
1013
  /**
886
1014
  * Render a complete frame with camera system.
887
1015
  * Returns RGB buffer.
@@ -889,19 +1017,19 @@ function renderCompact32Frame(outputBuf, animFrame, stateEvent, sessions, usageE
889
1017
  * `layout='micro'` renders the Timebox Mini Agent Beacon;
890
1018
  * `'standard'` is the full terrarium.
891
1019
  */
892
- export function renderFrame(stateEvent, usageEvent, sessions, timeOverrideMs, size = 64, layout = 'standard') {
1020
+ export function renderFrame(stateEvent, usageEvent, sessions, timeOverrideMs, size = 64, layout = 'standard', subagentActivity = {}) {
893
1021
  const worldBuf = new Uint8Array(W * W * 3);
894
1022
  const outputBuf = new Uint8Array(size * size * 3);
895
1023
  const animFrame = getAnimFrame(timeOverrideMs);
896
1024
  if (layout === 'micro') {
897
1025
  // Still sync creature instances so dominant-creature selection reflects live state.
898
1026
  syncCreatures(sessions, stateEvent);
899
- renderMicroFrame(outputBuf, size, animFrame, stateEvent, sessions, usageEvent?.fiveHourPercent ?? 0);
1027
+ renderMicroFrame(outputBuf, size, animFrame, stateEvent, sessions, usageEvent?.fiveHourPercent ?? 0, subagentActivity, timeOverrideMs ?? Date.now());
900
1028
  return outputBuf;
901
1029
  }
902
1030
  if (size === 32) {
903
1031
  syncCreatures(sessions, stateEvent);
904
- renderCompact32Frame(outputBuf, animFrame, stateEvent, sessions, usageEvent);
1032
+ renderCompact32Frame(outputBuf, animFrame, stateEvent, sessions, usageEvent, subagentActivity, timeOverrideMs ?? Date.now());
905
1033
  return outputBuf;
906
1034
  }
907
1035
  const state = stateEvent?.state ?? State.IDLE;
@@ -1005,6 +1133,7 @@ export function renderFrame(stateEvent, usageEvent, sessions, timeOverrideMs, si
1005
1133
  drawTetra(outputBuf, t.x / W, t.y / W, t.heading, camera);
1006
1134
  }
1007
1135
  }
1136
+ drawSubagentOrbits(outputBuf, camera, subagentActivity, animFrame, now);
1008
1137
  // Creature instances — octopus or jellyfish based on agent type
1009
1138
  const creatureOrder = [...creatureInstances.keys()];
1010
1139
  for (const c of creatureInstances.values()) {