@codemieai/code 0.15.6 → 0.15.7

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 (242) hide show
  1. package/dist/agents/core/AgentCLI.d.ts.map +1 -1
  2. package/dist/agents/core/AgentCLI.js +3 -0
  3. package/dist/agents/core/AgentCLI.js.map +1 -1
  4. package/dist/agents/core/BaseAgentAdapter.d.ts +4 -1
  5. package/dist/agents/core/BaseAgentAdapter.d.ts.map +1 -1
  6. package/dist/agents/core/BaseAgentAdapter.js +15 -0
  7. package/dist/agents/core/BaseAgentAdapter.js.map +1 -1
  8. package/dist/agents/core/types.d.ts +10 -0
  9. package/dist/agents/core/types.d.ts.map +1 -1
  10. package/dist/agents/core/types.js +5 -1
  11. package/dist/agents/core/types.js.map +1 -1
  12. package/dist/agents/plugins/claude/claude.models.d.ts +1 -1
  13. package/dist/agents/plugins/claude/claude.models.d.ts.map +1 -1
  14. package/dist/agents/plugins/claude/claude.models.js +7 -3
  15. package/dist/agents/plugins/claude/claude.models.js.map +1 -1
  16. package/dist/agents/plugins/claude-code-otlp/claude-code-otlp.constants.d.ts +3 -0
  17. package/dist/agents/plugins/claude-code-otlp/claude-code-otlp.constants.d.ts.map +1 -0
  18. package/dist/agents/plugins/claude-code-otlp/claude-code-otlp.constants.js +3 -0
  19. package/dist/agents/plugins/claude-code-otlp/claude-code-otlp.constants.js.map +1 -0
  20. package/dist/agents/plugins/claude-code-otlp/claude-code-otlp.plugin.d.ts +11 -0
  21. package/dist/agents/plugins/claude-code-otlp/claude-code-otlp.plugin.d.ts.map +1 -0
  22. package/dist/agents/plugins/claude-code-otlp/claude-code-otlp.plugin.js +65 -0
  23. package/dist/agents/plugins/claude-code-otlp/claude-code-otlp.plugin.js.map +1 -0
  24. package/dist/agents/plugins/claude-code-otlp/claude-code-otlp.types.d.ts +63 -0
  25. package/dist/agents/plugins/claude-code-otlp/claude-code-otlp.types.d.ts.map +1 -0
  26. package/dist/agents/plugins/claude-code-otlp/claude-code-otlp.types.js +13 -0
  27. package/dist/agents/plugins/claude-code-otlp/claude-code-otlp.types.js.map +1 -0
  28. package/dist/agents/plugins/codemie-code.plugin.d.ts.map +1 -1
  29. package/dist/agents/plugins/codemie-code.plugin.js +6 -4
  30. package/dist/agents/plugins/codemie-code.plugin.js.map +1 -1
  31. package/dist/agents/plugins/codex/codex-models.d.ts.map +1 -1
  32. package/dist/agents/plugins/codex/codex-models.js +9 -6
  33. package/dist/agents/plugins/codex/codex-models.js.map +1 -1
  34. package/dist/agents/plugins/codex/codex.plugin.d.ts.map +1 -1
  35. package/dist/agents/plugins/codex/codex.plugin.js +2 -1
  36. package/dist/agents/plugins/codex/codex.plugin.js.map +1 -1
  37. package/dist/agents/plugins/opencode/opencode-dynamic-models.d.ts +3 -2
  38. package/dist/agents/plugins/opencode/opencode-dynamic-models.d.ts.map +1 -1
  39. package/dist/agents/plugins/opencode/opencode-dynamic-models.js +14 -6
  40. package/dist/agents/plugins/opencode/opencode-dynamic-models.js.map +1 -1
  41. package/dist/agents/plugins/opencode/opencode.plugin.d.ts.map +1 -1
  42. package/dist/agents/plugins/opencode/opencode.plugin.js +6 -4
  43. package/dist/agents/plugins/opencode/opencode.plugin.js.map +1 -1
  44. package/dist/agents/plugins/utils.d.ts +11 -0
  45. package/dist/agents/plugins/utils.d.ts.map +1 -0
  46. package/dist/agents/plugins/utils.js +46 -0
  47. package/dist/agents/plugins/utils.js.map +1 -0
  48. package/dist/agents/registry.d.ts +3 -1
  49. package/dist/agents/registry.d.ts.map +1 -1
  50. package/dist/agents/registry.js +12 -0
  51. package/dist/agents/registry.js.map +1 -1
  52. package/dist/bin/proxy-daemon.js +4 -0
  53. package/dist/bin/proxy-daemon.js.map +1 -1
  54. package/dist/cli/commands/assistants/setup/configuration/selection.d.ts +3 -1
  55. package/dist/cli/commands/assistants/setup/configuration/selection.d.ts.map +1 -1
  56. package/dist/cli/commands/assistants/setup/configuration/selection.js +6 -3
  57. package/dist/cli/commands/assistants/setup/configuration/selection.js.map +1 -1
  58. package/dist/cli/commands/assistants/setup/configuration/types.d.ts +2 -0
  59. package/dist/cli/commands/assistants/setup/configuration/types.d.ts.map +1 -1
  60. package/dist/cli/commands/assistants/setup/configuration/ui.d.ts.map +1 -1
  61. package/dist/cli/commands/assistants/setup/configuration/ui.js +3 -0
  62. package/dist/cli/commands/assistants/setup/configuration/ui.js.map +1 -1
  63. package/dist/cli/commands/assistants/setup/data.d.ts +6 -2
  64. package/dist/cli/commands/assistants/setup/data.d.ts.map +1 -1
  65. package/dist/cli/commands/assistants/setup/data.js +23 -8
  66. package/dist/cli/commands/assistants/setup/data.js.map +1 -1
  67. package/dist/cli/commands/assistants/setup/helpers.d.ts +1 -0
  68. package/dist/cli/commands/assistants/setup/helpers.d.ts.map +1 -1
  69. package/dist/cli/commands/assistants/setup/helpers.js +11 -0
  70. package/dist/cli/commands/assistants/setup/helpers.js.map +1 -1
  71. package/dist/cli/commands/assistants/setup/index.d.ts.map +1 -1
  72. package/dist/cli/commands/assistants/setup/index.js +24 -6
  73. package/dist/cli/commands/assistants/setup/index.js.map +1 -1
  74. package/dist/cli/commands/assistants/setup/manualConfiguration/index.d.ts +2 -1
  75. package/dist/cli/commands/assistants/setup/manualConfiguration/index.d.ts.map +1 -1
  76. package/dist/cli/commands/assistants/setup/manualConfiguration/index.js +5 -3
  77. package/dist/cli/commands/assistants/setup/manualConfiguration/index.js.map +1 -1
  78. package/dist/cli/commands/assistants/setup/manualConfiguration/types.d.ts +2 -0
  79. package/dist/cli/commands/assistants/setup/manualConfiguration/types.d.ts.map +1 -1
  80. package/dist/cli/commands/assistants/setup/manualConfiguration/ui.d.ts.map +1 -1
  81. package/dist/cli/commands/assistants/setup/manualConfiguration/ui.js +3 -0
  82. package/dist/cli/commands/assistants/setup/manualConfiguration/ui.js.map +1 -1
  83. package/dist/cli/commands/hook.d.ts.map +1 -1
  84. package/dist/cli/commands/hook.js +24 -29
  85. package/dist/cli/commands/hook.js.map +1 -1
  86. package/dist/cli/commands/proxy/connect-orchestrator.d.ts +8 -1
  87. package/dist/cli/commands/proxy/connect-orchestrator.d.ts.map +1 -1
  88. package/dist/cli/commands/proxy/connect-orchestrator.js +65 -4
  89. package/dist/cli/commands/proxy/connect-orchestrator.js.map +1 -1
  90. package/dist/cli/commands/proxy/connectors/claude-code-otlp.d.ts +33 -0
  91. package/dist/cli/commands/proxy/connectors/claude-code-otlp.d.ts.map +1 -0
  92. package/dist/cli/commands/proxy/connectors/claude-code-otlp.js +299 -0
  93. package/dist/cli/commands/proxy/connectors/claude-code-otlp.js.map +1 -0
  94. package/dist/cli/commands/proxy/connectors/managed-mcp-remote.d.ts.map +1 -1
  95. package/dist/cli/commands/proxy/connectors/managed-mcp-remote.js +5 -6
  96. package/dist/cli/commands/proxy/connectors/managed-mcp-remote.js.map +1 -1
  97. package/dist/cli/commands/proxy/disconnect-orchestrator.d.ts +2 -0
  98. package/dist/cli/commands/proxy/disconnect-orchestrator.d.ts.map +1 -1
  99. package/dist/cli/commands/proxy/disconnect-orchestrator.js +34 -5
  100. package/dist/cli/commands/proxy/disconnect-orchestrator.js.map +1 -1
  101. package/dist/cli/commands/proxy/index.d.ts.map +1 -1
  102. package/dist/cli/commands/proxy/index.js +19 -2
  103. package/dist/cli/commands/proxy/index.js.map +1 -1
  104. package/dist/cli/commands/self-update.d.ts.map +1 -1
  105. package/dist/cli/commands/self-update.js +5 -1
  106. package/dist/cli/commands/self-update.js.map +1 -1
  107. package/dist/cli/commands/shared/constants.d.ts +3 -0
  108. package/dist/cli/commands/shared/constants.d.ts.map +1 -1
  109. package/dist/cli/commands/shared/constants.js +3 -0
  110. package/dist/cli/commands/shared/constants.js.map +1 -1
  111. package/dist/cli/commands/shared/prompts/storage-scope.d.ts +3 -1
  112. package/dist/cli/commands/shared/prompts/storage-scope.d.ts.map +1 -1
  113. package/dist/cli/commands/shared/prompts/storage-scope.js +5 -1
  114. package/dist/cli/commands/shared/prompts/storage-scope.js.map +1 -1
  115. package/dist/cli/commands/skills/setup/data.d.ts +5 -1
  116. package/dist/cli/commands/skills/setup/data.d.ts.map +1 -1
  117. package/dist/cli/commands/skills/setup/data.js +17 -8
  118. package/dist/cli/commands/skills/setup/data.js.map +1 -1
  119. package/dist/cli/commands/skills/setup/helpers.d.ts +1 -0
  120. package/dist/cli/commands/skills/setup/helpers.d.ts.map +1 -1
  121. package/dist/cli/commands/skills/setup/helpers.js +11 -0
  122. package/dist/cli/commands/skills/setup/helpers.js.map +1 -1
  123. package/dist/cli/commands/skills/setup/index.d.ts.map +1 -1
  124. package/dist/cli/commands/skills/setup/index.js +7 -2
  125. package/dist/cli/commands/skills/setup/index.js.map +1 -1
  126. package/dist/cli/index.js +2 -0
  127. package/dist/cli/index.js.map +1 -1
  128. package/dist/mcp/stdio-http-bridge.d.ts.map +1 -1
  129. package/dist/mcp/stdio-http-bridge.js +4 -0
  130. package/dist/mcp/stdio-http-bridge.js.map +1 -1
  131. package/dist/providers/core/base/http-client.d.ts.map +1 -1
  132. package/dist/providers/core/base/http-client.js +16 -3
  133. package/dist/providers/core/base/http-client.js.map +1 -1
  134. package/dist/providers/core/codemie-auth-helpers.d.ts.map +1 -1
  135. package/dist/providers/core/codemie-auth-helpers.js +2 -1
  136. package/dist/providers/core/codemie-auth-helpers.js.map +1 -1
  137. package/dist/providers/core/types.d.ts +3 -0
  138. package/dist/providers/core/types.d.ts.map +1 -1
  139. package/dist/providers/core/types.js.map +1 -1
  140. package/dist/providers/plugins/sso/proxy/plugins/index.d.ts.map +1 -1
  141. package/dist/providers/plugins/sso/proxy/plugins/index.js +2 -0
  142. package/dist/providers/plugins/sso/proxy/plugins/index.js.map +1 -1
  143. package/dist/providers/plugins/sso/proxy/plugins/otlp-spool/auth-state.d.ts +3 -0
  144. package/dist/providers/plugins/sso/proxy/plugins/otlp-spool/auth-state.d.ts.map +1 -0
  145. package/dist/providers/plugins/sso/proxy/plugins/otlp-spool/auth-state.js +19 -0
  146. package/dist/providers/plugins/sso/proxy/plugins/otlp-spool/auth-state.js.map +1 -0
  147. package/dist/providers/plugins/sso/proxy/plugins/otlp-spool/completeness-gate.d.ts +19 -0
  148. package/dist/providers/plugins/sso/proxy/plugins/otlp-spool/completeness-gate.d.ts.map +1 -0
  149. package/dist/providers/plugins/sso/proxy/plugins/otlp-spool/completeness-gate.js +33 -0
  150. package/dist/providers/plugins/sso/proxy/plugins/otlp-spool/completeness-gate.js.map +1 -0
  151. package/dist/providers/plugins/sso/proxy/plugins/otlp-spool/forwarder.d.ts +14 -0
  152. package/dist/providers/plugins/sso/proxy/plugins/otlp-spool/forwarder.d.ts.map +1 -0
  153. package/dist/providers/plugins/sso/proxy/plugins/otlp-spool/forwarder.js +287 -0
  154. package/dist/providers/plugins/sso/proxy/plugins/otlp-spool/forwarder.js.map +1 -0
  155. package/dist/providers/plugins/sso/proxy/plugins/otlp-spool/session-lock.d.ts +8 -0
  156. package/dist/providers/plugins/sso/proxy/plugins/otlp-spool/session-lock.d.ts.map +1 -0
  157. package/dist/providers/plugins/sso/proxy/plugins/otlp-spool/session-lock.js +29 -0
  158. package/dist/providers/plugins/sso/proxy/plugins/otlp-spool/session-lock.js.map +1 -0
  159. package/dist/providers/plugins/sso/proxy/plugins/otlp-spool/session-status.d.ts +40 -0
  160. package/dist/providers/plugins/sso/proxy/plugins/otlp-spool/session-status.d.ts.map +1 -0
  161. package/dist/providers/plugins/sso/proxy/plugins/otlp-spool/session-status.js +82 -0
  162. package/dist/providers/plugins/sso/proxy/plugins/otlp-spool/session-status.js.map +1 -0
  163. package/dist/providers/plugins/sso/proxy/plugins/otlp-spool/spool-config.d.ts +36 -0
  164. package/dist/providers/plugins/sso/proxy/plugins/otlp-spool/spool-config.d.ts.map +1 -0
  165. package/dist/providers/plugins/sso/proxy/plugins/otlp-spool/spool-config.js +62 -0
  166. package/dist/providers/plugins/sso/proxy/plugins/otlp-spool/spool-config.js.map +1 -0
  167. package/dist/providers/plugins/sso/proxy/plugins/otlp-spool/spool-io.d.ts +39 -0
  168. package/dist/providers/plugins/sso/proxy/plugins/otlp-spool/spool-io.d.ts.map +1 -0
  169. package/dist/providers/plugins/sso/proxy/plugins/otlp-spool/spool-io.js +110 -0
  170. package/dist/providers/plugins/sso/proxy/plugins/otlp-spool/spool-io.js.map +1 -0
  171. package/dist/providers/plugins/sso/proxy/plugins/otlp-spool/spool-paths.d.ts +24 -0
  172. package/dist/providers/plugins/sso/proxy/plugins/otlp-spool/spool-paths.d.ts.map +1 -0
  173. package/dist/providers/plugins/sso/proxy/plugins/otlp-spool/spool-paths.js +53 -0
  174. package/dist/providers/plugins/sso/proxy/plugins/otlp-spool/spool-paths.js.map +1 -0
  175. package/dist/providers/plugins/sso/proxy/plugins/otlp-spool/spool-state.d.ts +39 -0
  176. package/dist/providers/plugins/sso/proxy/plugins/otlp-spool/spool-state.d.ts.map +1 -0
  177. package/dist/providers/plugins/sso/proxy/plugins/otlp-spool/spool-state.js +61 -0
  178. package/dist/providers/plugins/sso/proxy/plugins/otlp-spool/spool-state.js.map +1 -0
  179. package/dist/providers/plugins/sso/proxy/plugins/otlp-spool/sweep.d.ts +20 -0
  180. package/dist/providers/plugins/sso/proxy/plugins/otlp-spool/sweep.d.ts.map +1 -0
  181. package/dist/providers/plugins/sso/proxy/plugins/otlp-spool/sweep.js +73 -0
  182. package/dist/providers/plugins/sso/proxy/plugins/otlp-spool/sweep.js.map +1 -0
  183. package/dist/providers/plugins/sso/proxy/plugins/otlp-spool/tick-processor.d.ts +12 -0
  184. package/dist/providers/plugins/sso/proxy/plugins/otlp-spool/tick-processor.d.ts.map +1 -0
  185. package/dist/providers/plugins/sso/proxy/plugins/otlp-spool/tick-processor.js +55 -0
  186. package/dist/providers/plugins/sso/proxy/plugins/otlp-spool/tick-processor.js.map +1 -0
  187. package/dist/providers/plugins/sso/proxy/plugins/otlp.plugin.d.ts +14 -0
  188. package/dist/providers/plugins/sso/proxy/plugins/otlp.plugin.d.ts.map +1 -0
  189. package/dist/providers/plugins/sso/proxy/plugins/otlp.plugin.js +221 -0
  190. package/dist/providers/plugins/sso/proxy/plugins/otlp.plugin.js.map +1 -0
  191. package/dist/providers/plugins/sso/proxy/proxy-http-client.d.ts +1 -4
  192. package/dist/providers/plugins/sso/proxy/proxy-http-client.d.ts.map +1 -1
  193. package/dist/providers/plugins/sso/proxy/proxy-http-client.js +10 -207
  194. package/dist/providers/plugins/sso/proxy/proxy-http-client.js.map +1 -1
  195. package/dist/providers/plugins/sso/proxy/sso.proxy.d.ts.map +1 -1
  196. package/dist/providers/plugins/sso/proxy/sso.proxy.js +2 -1
  197. package/dist/providers/plugins/sso/proxy/sso.proxy.js.map +1 -1
  198. package/dist/providers/plugins/sso/sso.auth-gate.d.ts +18 -0
  199. package/dist/providers/plugins/sso/sso.auth-gate.d.ts.map +1 -0
  200. package/dist/providers/plugins/sso/sso.auth-gate.js +48 -0
  201. package/dist/providers/plugins/sso/sso.auth-gate.js.map +1 -0
  202. package/dist/providers/plugins/sso/sso.auth.d.ts.map +1 -1
  203. package/dist/providers/plugins/sso/sso.auth.js +14 -4
  204. package/dist/providers/plugins/sso/sso.auth.js.map +1 -1
  205. package/dist/providers/plugins/sso/sso.http-client.d.ts +12 -0
  206. package/dist/providers/plugins/sso/sso.http-client.d.ts.map +1 -1
  207. package/dist/providers/plugins/sso/sso.http-client.js +33 -5
  208. package/dist/providers/plugins/sso/sso.http-client.js.map +1 -1
  209. package/dist/utils/auth.d.ts.map +1 -1
  210. package/dist/utils/auth.js +4 -0
  211. package/dist/utils/auth.js.map +1 -1
  212. package/dist/utils/cli-updater.d.ts +7 -0
  213. package/dist/utils/cli-updater.d.ts.map +1 -1
  214. package/dist/utils/cli-updater.js +21 -0
  215. package/dist/utils/cli-updater.js.map +1 -1
  216. package/dist/utils/paths.d.ts +1 -1
  217. package/dist/utils/paths.d.ts.map +1 -1
  218. package/dist/utils/paths.js +1 -1
  219. package/dist/utils/paths.js.map +1 -1
  220. package/dist/utils/processes.d.ts.map +1 -1
  221. package/dist/utils/processes.js +3 -2
  222. package/dist/utils/processes.js.map +1 -1
  223. package/dist/utils/project-root.d.ts +10 -0
  224. package/dist/utils/project-root.d.ts.map +1 -0
  225. package/dist/utils/project-root.js +25 -0
  226. package/dist/utils/project-root.js.map +1 -0
  227. package/dist/utils/sdk-client.d.ts.map +1 -1
  228. package/dist/utils/sdk-client.js +4 -0
  229. package/dist/utils/sdk-client.js.map +1 -1
  230. package/dist/utils/system-proxy-dispatcher.d.ts +8 -0
  231. package/dist/utils/system-proxy-dispatcher.d.ts.map +1 -0
  232. package/dist/utils/system-proxy-dispatcher.js +100 -0
  233. package/dist/utils/system-proxy-dispatcher.js.map +1 -0
  234. package/dist/utils/system-proxy.d.ts +115 -0
  235. package/dist/utils/system-proxy.d.ts.map +1 -0
  236. package/dist/utils/system-proxy.js +899 -0
  237. package/dist/utils/system-proxy.js.map +1 -0
  238. package/dist/utils/windows-path.d.ts +5 -0
  239. package/dist/utils/windows-path.d.ts.map +1 -1
  240. package/dist/utils/windows-path.js +1 -1
  241. package/dist/utils/windows-path.js.map +1 -1
  242. package/package.json +4 -1
@@ -0,0 +1,73 @@
1
+ import { unlink } from 'node:fs/promises';
2
+ import { logger } from '../../../../../../utils/logger.js';
3
+ import { sanitizeLogArgs } from '../../../../../../utils/security.js';
4
+ import { SPOOL_STREAMS, listSessionIds, statusFile, streamFile, } from './spool-paths.js';
5
+ import { withSessionLock } from './session-lock.js';
6
+ import { createStatus, readStatus } from './session-status.js';
7
+ import { isSessionDrained, lastActivityMs, readSpoolState } from './spool-state.js';
8
+ import { abandonedSessionGraceMs, endedSessionGraceMs } from './spool-config.js';
9
+ /**
10
+ * Lightweight garbage collection for the OTLP spool.
11
+ *
12
+ * Two cleanup paths, both of which require every stream to be drained
13
+ * (`fileSize === cursor`) so no undelivered bytes are ever destroyed:
14
+ *
15
+ * 1. Normally ended sessions (`endedAt` set): deleted once the end grace period
16
+ * has elapsed since the later of `endedAt` and the last spool-file write, so
17
+ * late hook/OTEL writes postpone cleanup.
18
+ * 2. Abandoned sessions (no `endedAt`): deleted once the abandonment timeout has
19
+ * elapsed since the last spool-file write. Activity is read from spool-file
20
+ * mtimes, never from the status file, because cursor updates rewrite the
21
+ * status file without any new data arriving.
22
+ *
23
+ * Consequence: a live session that stays quiet (and fully drained) for longer
24
+ * than the abandonment timeout may have its spool removed. That is safe — the
25
+ * next producer write recreates the status and spool files from scratch.
26
+ */
27
+ export async function sweepSpool() {
28
+ for (const sessionId of await listSessionIds()) {
29
+ try {
30
+ await sweepSession(sessionId);
31
+ }
32
+ catch (err) {
33
+ const msg = err instanceof Error ? err.message : String(err);
34
+ logger.debug('[otlp-sweep] per-session error', ...sanitizeLogArgs({ sessionId, err: msg }));
35
+ }
36
+ }
37
+ }
38
+ async function sweepSession(sessionId) {
39
+ // Cheap unlocked pre-scan to keep the sweep off the hot path...
40
+ if (!(await isDeletable(sessionId)))
41
+ return;
42
+ await withSessionLock(sessionId, async () => {
43
+ // ...then re-read status, sizes and mtimes under the lock before deleting.
44
+ if (!(await isDeletable(sessionId)))
45
+ return;
46
+ await deleteSession(sessionId);
47
+ });
48
+ }
49
+ async function isDeletable(sessionId) {
50
+ const status = (await readStatus(sessionId)) ?? createStatus();
51
+ const spool = await readSpoolState(sessionId, status);
52
+ if (!isSessionDrained(spool))
53
+ return false;
54
+ const activityMs = await lastActivityMs(spool);
55
+ if (activityMs === null)
56
+ return false; // nothing on disk to clean up
57
+ const idleSince = status.endedAt !== undefined ? Math.max(status.endedAt, activityMs) : activityMs;
58
+ const timeoutMs = status.endedAt !== undefined ? endedSessionGraceMs() : abandonedSessionGraceMs();
59
+ return Date.now() - idleSince >= timeoutMs;
60
+ }
61
+ async function deleteSession(sessionId) {
62
+ const paths = [...SPOOL_STREAMS.map((s) => streamFile(sessionId, s)), statusFile(sessionId)];
63
+ for (const path of paths) {
64
+ try {
65
+ await unlink(path);
66
+ }
67
+ catch {
68
+ // File may already be gone
69
+ }
70
+ }
71
+ logger.debug('[otlp-sweep] swept session', ...sanitizeLogArgs({ sessionId }));
72
+ }
73
+ //# sourceMappingURL=sweep.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sweep.js","sourceRoot":"","sources":["../../../../../../../src/providers/plugins/sso/proxy/plugins/otlp-spool/sweep.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import type { SSOCredentials, JWTCredentials } from '../../../../../core/types.js';
2
+ /**
3
+ * Process one tick for a single session: evaluate the completeness gate and,
4
+ * when it permits forwarding, dispatch a forward pass for the streams that
5
+ * actually have bytes after their cursor.
6
+ *
7
+ * A session stays gate-eligible for as long as its spool files are non-empty,
8
+ * so the pending-data check is what keeps a fully drained tick from issuing
9
+ * any HTTP requests.
10
+ */
11
+ export declare function processSessionTick(sessionId: string, credentials: SSOCredentials | JWTCredentials): Promise<void>;
12
+ //# sourceMappingURL=tick-processor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tick-processor.d.ts","sourceRoot":"","sources":["../../../../../../../src/providers/plugins/sso/proxy/plugins/otlp-spool/tick-processor.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAUnF;;;;;;;;GAQG;AACH,wBAAsB,kBAAkB,CACtC,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,cAAc,GAAG,cAAc,GAC3C,OAAO,CAAC,IAAI,CAAC,CA2Cf"}
@@ -0,0 +1,55 @@
1
+ import { logger } from '../../../../../../utils/logger.js';
2
+ import { sanitizeLogArgs } from '../../../../../../utils/security.js';
3
+ import { withSessionLock } from './session-lock.js';
4
+ import { readStatus, writeStatus } from './session-status.js';
5
+ import { hasPendingData, readSpoolState } from './spool-state.js';
6
+ import { gateDecision } from './completeness-gate.js';
7
+ import { forwardSession } from './forwarder.js';
8
+ import { areCredentialsStale } from './auth-state.js';
9
+ const currentlyForwarding = new Set();
10
+ /**
11
+ * Process one tick for a single session: evaluate the completeness gate and,
12
+ * when it permits forwarding, dispatch a forward pass for the streams that
13
+ * actually have bytes after their cursor.
14
+ *
15
+ * A session stays gate-eligible for as long as its spool files are non-empty,
16
+ * so the pending-data check is what keeps a fully drained tick from issuing
17
+ * any HTTP requests.
18
+ */
19
+ export async function processSessionTick(sessionId, credentials) {
20
+ let shouldForward = false;
21
+ let hooksOnly = false;
22
+ await withSessionLock(sessionId, async () => {
23
+ const status = await readStatus(sessionId);
24
+ if (!status) {
25
+ return;
26
+ }
27
+ if (areCredentialsStale()) {
28
+ return;
29
+ }
30
+ const spool = await readSpoolState(sessionId, status);
31
+ const decision = gateDecision(spool, status);
32
+ const pending = hasPendingData(spool);
33
+ logger.debug('[otlp-tick] gate decision', ...sanitizeLogArgs({ sessionId, decision, pending, waitTicks: status.waitTicks }));
34
+ if (decision === 'send' || decision === 'hooks-only-force') {
35
+ shouldForward = pending;
36
+ hooksOnly = decision === 'hooks-only-force';
37
+ }
38
+ else if (decision === 'wait') {
39
+ status.waitTicks += 1;
40
+ await writeStatus(sessionId, status);
41
+ }
42
+ // 'noop': nothing written yet
43
+ });
44
+ if (!shouldForward || currentlyForwarding.has(sessionId)) {
45
+ return;
46
+ }
47
+ currentlyForwarding.add(sessionId);
48
+ try {
49
+ await forwardSession(sessionId, hooksOnly, credentials);
50
+ }
51
+ finally {
52
+ currentlyForwarding.delete(sessionId);
53
+ }
54
+ }
55
+ //# sourceMappingURL=tick-processor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tick-processor.js","sourceRoot":"","sources":["../../../../../../../src/providers/plugins/sso/proxy/plugins/otlp-spool/tick-processor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAEtD,MAAM,mBAAmB,GAAG,IAAI,GAAG,EAAU,CAAC;AAE9C;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,SAAiB,EACjB,WAA4C;IAE5C,IAAI,aAAa,GAAG,KAAK,CAAC;IAC1B,IAAI,SAAS,GAAG,KAAK,CAAC;IAEtB,MAAM,eAAe,CAAC,SAAS,EAAE,KAAK,IAAI,EAAE;QAC1C,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,SAAS,CAAC,CAAC;QAC3C,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO;QACT,CAAC;QACD,IAAI,mBAAmB,EAAE,EAAE,CAAC;YAC1B,OAAO;QACT,CAAC;QAED,MAAM,KAAK,GAAG,MAAM,cAAc,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QACtD,MAAM,QAAQ,GAAG,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAC7C,MAAM,OAAO,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;QAEtC,MAAM,CAAC,KAAK,CACV,2BAA2B,EAC3B,GAAG,eAAe,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC,CAClF,CAAC;QAEF,IAAI,QAAQ,KAAK,MAAM,IAAI,QAAQ,KAAK,kBAAkB,EAAE,CAAC;YAC3D,aAAa,GAAG,OAAO,CAAC;YACxB,SAAS,GAAG,QAAQ,KAAK,kBAAkB,CAAC;QAC9C,CAAC;aAAM,IAAI,QAAQ,KAAK,MAAM,EAAE,CAAC;YAC/B,MAAM,CAAC,SAAS,IAAI,CAAC,CAAC;YACtB,MAAM,WAAW,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QACvC,CAAC;QACD,8BAA8B;IAChC,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,aAAa,IAAI,mBAAmB,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;QACzD,OAAO;IACT,CAAC;IAED,mBAAmB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAEnC,IAAI,CAAC;QACH,MAAM,cAAc,CAAC,SAAS,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;IAC1D,CAAC;YAAS,CAAC;QACT,mBAAmB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACxC,CAAC;AACH,CAAC"}
@@ -0,0 +1,14 @@
1
+ import type { ProxyPlugin, PluginContext, ProxyInterceptor } from './types.js';
2
+ export interface OtlpHookSpoolData {
3
+ agentName: string;
4
+ raw: string;
5
+ timestamp: number;
6
+ }
7
+ export declare class OtlpPlugin implements ProxyPlugin {
8
+ id: string;
9
+ name: string;
10
+ version: string;
11
+ priority: number;
12
+ createInterceptor(context: PluginContext): ProxyInterceptor;
13
+ }
14
+ //# sourceMappingURL=otlp.plugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"otlp.plugin.d.ts","sourceRoot":"","sources":["../../../../../../src/providers/plugins/sso/proxy/plugins/otlp.plugin.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAuB/E,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;CACnB;AA2OD,qBAAa,UAAW,YAAW,WAAW;IAC5C,EAAE,SAAmB;IACrB,IAAI,SAAoB;IACxB,OAAO,SAAW;IAClB,QAAQ,SAAM;IAEd,iBAAiB,CAAC,OAAO,EAAE,aAAa,GAAG,gBAAgB;CAK5D"}
@@ -0,0 +1,221 @@
1
+ import { appendFile, mkdir } from 'node:fs/promises';
2
+ import { logger } from '../../../../../utils/logger.js';
3
+ import { sanitizeLogArgs } from '../../../../../utils/security.js';
4
+ import { listSessionIds, spoolRoot } from './otlp-spool/spool-paths.js';
5
+ import { sweepSpool } from './otlp-spool/sweep.js';
6
+ import { processSessionTick } from './otlp-spool/tick-processor.js';
7
+ import { appendSpool } from './otlp-spool/spool-io.js';
8
+ import { sendIntervalMs, sweepIntervalMs } from './otlp-spool/spool-config.js';
9
+ /**
10
+ * Upper bound on the best-effort flush during proxy shutdown.
11
+ *
12
+ * Deliberately well below FORWARD_TIMEOUT_MS (10s) so a hung backend can never
13
+ * be the reason a proxy stop is slow. Cutting the flush short loses nothing:
14
+ * cursors are only advanced on success, so anything undelivered stays spooled
15
+ * and is sent by the next proxy start.
16
+ */
17
+ const SHUTDOWN_FLUSH_TIMEOUT_MS = 5_000;
18
+ const UUID_V4_RE = /[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}/i;
19
+ function sendError(res, status, type, message) {
20
+ res.statusCode = status;
21
+ res.setHeader('Content-Type', 'application/json');
22
+ res.end(JSON.stringify({ type: 'error', error: { type, message } }));
23
+ return true;
24
+ }
25
+ class OtlpInterceptor {
26
+ credentials;
27
+ name = 'otlp-ingest';
28
+ tickHandle;
29
+ sweepHandle;
30
+ ticking = false;
31
+ stopped = false;
32
+ constructor(credentials) {
33
+ this.credentials = credentials;
34
+ }
35
+ async onProxyStart() {
36
+ // Recovery pass for anything a previous process left on disk (crash, or a
37
+ // stale-credential window that this restart just ended). Intentionally not
38
+ // awaited: the backlog may be large and proxy start must not block on network I/O.
39
+ void this.runTick('startup');
40
+ this.tickHandle = setInterval(() => void this.runTick('tick'), sendIntervalMs());
41
+ this.sweepHandle = setInterval(() => void this.runSweep(), sweepIntervalMs());
42
+ }
43
+ async onProxyStop() {
44
+ this.stopped = true;
45
+ if (this.tickHandle) {
46
+ clearInterval(this.tickHandle);
47
+ }
48
+ if (this.sweepHandle) {
49
+ clearInterval(this.sweepHandle);
50
+ }
51
+ this.tickHandle = undefined;
52
+ this.sweepHandle = undefined;
53
+ // Bounded final flush: better delivery latency, but shutdown must never hang.
54
+ await Promise.race([
55
+ this.tick().catch(() => undefined),
56
+ new Promise((resolve) => setTimeout(resolve, SHUTDOWN_FLUSH_TIMEOUT_MS)),
57
+ ]);
58
+ }
59
+ /** Serialize ticks: a slow backlog drain must not stack up concurrent passes. */
60
+ async runTick(label) {
61
+ if (this.stopped || this.ticking) {
62
+ return;
63
+ }
64
+ this.ticking = true;
65
+ try {
66
+ await this.tick();
67
+ }
68
+ catch (err) {
69
+ const msg = err instanceof Error ? err.message : String(err);
70
+ logger.debug(`[otlp-ingest] ${label} error`, ...sanitizeLogArgs({ err: msg }));
71
+ }
72
+ finally {
73
+ this.ticking = false;
74
+ }
75
+ }
76
+ async runSweep() {
77
+ if (this.stopped) {
78
+ return;
79
+ }
80
+ try {
81
+ await sweepSpool();
82
+ }
83
+ catch (err) {
84
+ const msg = err instanceof Error ? err.message : String(err);
85
+ logger.debug('[otlp-ingest] sweep error', ...sanitizeLogArgs({ err: msg }));
86
+ }
87
+ }
88
+ async tick() {
89
+ const creds = this.credentials;
90
+ if (!creds) {
91
+ return;
92
+ }
93
+ const sessionIds = await listSessionIds();
94
+ // Different sessions are independent (per-session locking happens inside
95
+ // processSessionTick), so they are processed concurrently.
96
+ await Promise.all(sessionIds.map((sessionId) => processSessionTick(sessionId, creds).catch((err) => {
97
+ const msg = err instanceof Error ? err.message : String(err);
98
+ logger.debug('[otlp-ingest] session tick error', ...sanitizeLogArgs({ sessionId, err: msg }));
99
+ })));
100
+ }
101
+ async handleRequest(ctx, _req, res, _httpClient) {
102
+ const { method, url } = ctx;
103
+ // Route: POST /v1/analytics/hooks
104
+ if (method === 'POST' && url === '/v1/analytics/hooks') {
105
+ return this.handleHooks(ctx, res);
106
+ }
107
+ // Route: POST /v1/analytics/otlp/logs|metrics|traces
108
+ if (method === 'POST' && url === '/v1/analytics/otlp/v1/logs') {
109
+ return this.handleOtlp(ctx, res, 'logs');
110
+ }
111
+ if (method === 'POST' && url === '/v1/analytics/otlp/v1/metrics') {
112
+ return this.handleOtlp(ctx, res, 'metrics');
113
+ }
114
+ if (method === 'POST' && url === '/v1/analytics/otlp/v1/traces') {
115
+ return this.handleOtlp(ctx, res, 'traces');
116
+ }
117
+ return false;
118
+ }
119
+ async handleHooks(ctx, res) {
120
+ if (!ctx.metadata.gatewayKeyValidated) {
121
+ logger.warn('[otlp-ingest] Rejected hooks request: gateway key not validated');
122
+ return sendError(res, 401, 'authentication_error', 'Unauthorized');
123
+ }
124
+ if (!ctx.requestBody) {
125
+ return sendError(res, 400, 'invalid_request_error', 'Empty body');
126
+ }
127
+ const rawOtlpHookSpoolData = ctx.requestBody.toString('utf-8');
128
+ let otlpHookSpoolData;
129
+ try {
130
+ otlpHookSpoolData = JSON.parse(rawOtlpHookSpoolData);
131
+ }
132
+ catch {
133
+ return sendError(res, 400, 'invalid_request_error', 'Invalid JSON');
134
+ }
135
+ // Validate agentName - dynamic import avoids circular dependency
136
+ try {
137
+ const { AgentRegistry } = await import('../../../../../agents/registry.js');
138
+ if (!AgentRegistry.getAnalyticsAgent(otlpHookSpoolData.agentName)) {
139
+ return sendError(res, 400, 'invalid_request_error', 'Unrecognized agentName');
140
+ }
141
+ }
142
+ catch {
143
+ return sendError(res, 400, 'invalid_request_error', 'Agent validation failed');
144
+ }
145
+ // Extract session_id from raw hook JSON
146
+ let sessionId = '';
147
+ try {
148
+ const hookEvent = JSON.parse(otlpHookSpoolData.raw);
149
+ sessionId = String(hookEvent['session_id'] ?? '');
150
+ }
151
+ catch { /* ignore */ }
152
+ if (!sessionId) {
153
+ // No session id — log and accept without spooling
154
+ logger.debug('[otlp-ingest] hooks: no session_id in raw, discarding');
155
+ res.statusCode = 202;
156
+ res.setHeader('Content-Type', 'application/json');
157
+ res.end(JSON.stringify({ accepted: true }));
158
+ return true;
159
+ }
160
+ const line = rawOtlpHookSpoolData + '\n';
161
+ try {
162
+ await appendSpool(sessionId, 'hooks', line);
163
+ }
164
+ catch (err) {
165
+ const msg = err instanceof Error ? err.message : String(err);
166
+ logger.warn('[otlp-ingest] hooks disk write error', ...sanitizeLogArgs({ sessionId, err: msg }));
167
+ // Still respond 202 — data loss is logged but we don't block the hook
168
+ }
169
+ res.statusCode = 202;
170
+ res.setHeader('Content-Type', 'application/json');
171
+ res.end(JSON.stringify({ accepted: true }));
172
+ return true;
173
+ }
174
+ async handleOtlp(ctx, res, signal) {
175
+ if (!ctx.metadata.gatewayKeyValidated) {
176
+ logger.warn(`[otlp-ingest] Rejected ${signal} request: gateway key not validated`);
177
+ return sendError(res, 401, 'authentication_error', 'Unauthorized');
178
+ }
179
+ if (!ctx.requestBody) {
180
+ res.statusCode = 200;
181
+ res.end();
182
+ return true;
183
+ }
184
+ const bytes = ctx.requestBody;
185
+ // Extract session ID via UUID v4 regex on latin1-decoded bytes
186
+ const latin1Str = Buffer.from(bytes).toString('latin1');
187
+ const match = UUID_V4_RE.exec(latin1Str);
188
+ const sessionId = match ? match[0] : '';
189
+ if (!sessionId) {
190
+ // Append to _unresolved.alert for debugging
191
+ try {
192
+ await mkdir(spoolRoot(), { recursive: true });
193
+ await appendFile(`${spoolRoot()}/_unresolved.alert`, bytes);
194
+ }
195
+ catch { /* best-effort */ }
196
+ res.statusCode = 200;
197
+ res.end();
198
+ return true;
199
+ }
200
+ try {
201
+ await appendSpool(sessionId, signal, bytes);
202
+ }
203
+ catch (err) {
204
+ const msg = err instanceof Error ? err.message : String(err);
205
+ logger.warn(`[otlp-ingest] ${signal} disk write error`, ...sanitizeLogArgs({ sessionId, err: msg }));
206
+ }
207
+ res.statusCode = 200;
208
+ res.end();
209
+ return true;
210
+ }
211
+ }
212
+ export class OtlpPlugin {
213
+ id = '@codemie/otlp';
214
+ name = 'OTLP Ingestion';
215
+ version = '1.0.0';
216
+ priority = 10;
217
+ createInterceptor(context) {
218
+ return new OtlpInterceptor(context.syncCredentials || context.credentials);
219
+ }
220
+ }
221
+ //# sourceMappingURL=otlp.plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"otlp.plugin.js","sourceRoot":"","sources":["../../../../../../src/providers/plugins/sso/proxy/plugins/otlp.plugin.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * KISS: Does one thing well - forwards HTTP requests with streaming.
5
5
  * Memory efficient: Returns streams directly, no buffering.
6
- * Proxy support: Respects HTTP_PROXY/HTTPS_PROXY environment variables.
6
+ * Proxy support: Uses the shared environment/Windows/PAC resolver per request.
7
7
  */
8
8
  import http from 'http';
9
9
  export interface HTTPClientOptions {
@@ -21,11 +21,8 @@ export interface ForwardRequestOptions {
21
21
  export declare class ProxyHTTPClient {
22
22
  private directHttpsAgent;
23
23
  private directHttpAgent;
24
- private proxyHttpsAgent;
25
- private proxyHttpAgent;
26
24
  private timeout;
27
25
  private rejectUnauthorized;
28
- private noProxyRules;
29
26
  constructor(options?: HTTPClientOptions);
30
27
  private getAgentForUrl;
31
28
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"proxy-http-client.d.ts","sourceRoot":"","sources":["../../../../../src/providers/plugins/sso/proxy/proxy-http-client.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,IAAI,MAAM,MAAM,CAAC;AAUxB,MAAM,WAAW,iBAAiB;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CACxB;AAoKD;;GAEG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,gBAAgB,CAAc;IACtC,OAAO,CAAC,eAAe,CAAa;IACpC,OAAO,CAAC,eAAe,CAA0B;IACjD,OAAO,CAAC,cAAc,CAAyB;IAC/C,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,kBAAkB,CAAU;IACpC,OAAO,CAAC,YAAY,CAAgB;gBAExB,OAAO,GAAE,iBAAsB;IA+C3C,OAAO,CAAC,cAAc;IA6BtB;;;OAGG;IACG,OAAO,CACX,GAAG,EAAE,GAAG,EACR,OAAO,EAAE,qBAAqB,GAC7B,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC;IA0IhC;;;OAGG;IACG,YAAY,CAChB,QAAQ,EAAE,IAAI,CAAC,eAAe,EAC9B,UAAU,EAAE,IAAI,CAAC,cAAc,EAC/B,WAAW,GAAE,MAAM,EAAwC,GAC1D,OAAO,CAAC,IAAI,CAAC;IAsBhB;;;;OAIG;IACG,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC;IAUvE;;OAEG;IACH,KAAK,IAAI,IAAI;CAMd"}
1
+ {"version":3,"file":"proxy-http-client.d.ts","sourceRoot":"","sources":["../../../../../src/providers/plugins/sso/proxy/proxy-http-client.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,IAAI,MAAM,MAAM,CAAC;AAQxB,MAAM,WAAW,iBAAiB;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,gBAAgB,CAAc;IACtC,OAAO,CAAC,eAAe,CAAa;IACpC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,kBAAkB,CAAU;gBAExB,OAAO,GAAE,iBAAsB;YAqB7B,cAAc;IAS5B;;;OAGG;IACG,OAAO,CACX,GAAG,EAAE,GAAG,EACR,OAAO,EAAE,qBAAqB,GAC7B,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC;IA0IhC;;;OAGG;IACG,YAAY,CAChB,QAAQ,EAAE,IAAI,CAAC,eAAe,EAC9B,UAAU,EAAE,IAAI,CAAC,cAAc,EAC/B,WAAW,GAAE,MAAM,EAAwC,GAC1D,OAAO,CAAC,IAAI,CAAC;IAsBhB;;;;OAIG;IACG,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC;IAUvE;;OAEG;IACH,KAAK,IAAI,IAAI;CAId"}