agent-nuvira 2.7.3 → 3.0.0

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 (366) hide show
  1. package/dist/agents/agents/writer-tool-calling.d.ts +14 -0
  2. package/dist/agents/agents/writer-tool-calling.d.ts.map +1 -1
  3. package/dist/agents/agents/writer-tool-calling.js +20 -0
  4. package/dist/agents/agents/writer-tool-calling.js.map +1 -1
  5. package/dist/agents/agents/writer.d.ts.map +1 -1
  6. package/dist/agents/agents/writer.js +15 -4
  7. package/dist/agents/agents/writer.js.map +1 -1
  8. package/dist/agents/edit-module.d.ts +7 -0
  9. package/dist/agents/edit-module.d.ts.map +1 -1
  10. package/dist/agents/edit-module.js +21 -6
  11. package/dist/agents/edit-module.js.map +1 -1
  12. package/dist/agents/orchestrator.d.ts +40 -0
  13. package/dist/agents/orchestrator.d.ts.map +1 -1
  14. package/dist/agents/orchestrator.js +116 -27
  15. package/dist/agents/orchestrator.js.map +1 -1
  16. package/dist/agents/tool-calling-agent.d.ts +19 -0
  17. package/dist/agents/tool-calling-agent.d.ts.map +1 -1
  18. package/dist/agents/tool-calling-agent.js +42 -2
  19. package/dist/agents/tool-calling-agent.js.map +1 -1
  20. package/dist/cli/chat.d.ts +55 -1
  21. package/dist/cli/chat.d.ts.map +1 -1
  22. package/dist/cli/chat.js +239 -63
  23. package/dist/cli/chat.js.map +1 -1
  24. package/dist/cli/cli-program.d.ts +6 -0
  25. package/dist/cli/cli-program.d.ts.map +1 -0
  26. package/dist/cli/cli-program.js +222 -0
  27. package/dist/cli/cli-program.js.map +1 -0
  28. package/dist/cli/edit.d.ts.map +1 -1
  29. package/dist/cli/edit.js +18 -3
  30. package/dist/cli/edit.js.map +1 -1
  31. package/dist/cli/execute.d.ts.map +1 -1
  32. package/dist/cli/execute.js +29 -5
  33. package/dist/cli/execute.js.map +1 -1
  34. package/dist/cli/failover-runner.d.ts +13 -0
  35. package/dist/cli/failover-runner.d.ts.map +1 -1
  36. package/dist/cli/failover-runner.js +11 -0
  37. package/dist/cli/failover-runner.js.map +1 -1
  38. package/dist/cli/gateway.d.ts +16 -0
  39. package/dist/cli/gateway.d.ts.map +1 -1
  40. package/dist/cli/gateway.js +108 -2
  41. package/dist/cli/gateway.js.map +1 -1
  42. package/dist/cli/loop-executor.d.ts.map +1 -1
  43. package/dist/cli/loop-executor.js +245 -12
  44. package/dist/cli/loop-executor.js.map +1 -1
  45. package/dist/cli/plan.d.ts.map +1 -1
  46. package/dist/cli/plan.js +20 -6
  47. package/dist/cli/plan.js.map +1 -1
  48. package/dist/cli/process-control.d.ts +10 -0
  49. package/dist/cli/process-control.d.ts.map +1 -1
  50. package/dist/cli/process-control.js +73 -7
  51. package/dist/cli/process-control.js.map +1 -1
  52. package/dist/cli/router.d.ts +16 -5
  53. package/dist/cli/router.d.ts.map +1 -1
  54. package/dist/cli/router.js +31 -206
  55. package/dist/cli/router.js.map +1 -1
  56. package/dist/config/paths.d.ts +23 -0
  57. package/dist/config/paths.d.ts.map +1 -1
  58. package/dist/config/paths.js +30 -0
  59. package/dist/config/paths.js.map +1 -1
  60. package/dist/config/provider-env.d.ts +37 -0
  61. package/dist/config/provider-env.d.ts.map +1 -0
  62. package/dist/config/provider-env.js +86 -0
  63. package/dist/config/provider-env.js.map +1 -0
  64. package/dist/context/history.d.ts.map +1 -1
  65. package/dist/context/history.js +24 -8
  66. package/dist/context/history.js.map +1 -1
  67. package/dist/context/session-recall.d.ts +30 -0
  68. package/dist/context/session-recall.d.ts.map +1 -1
  69. package/dist/context/session-recall.js +61 -0
  70. package/dist/context/session-recall.js.map +1 -1
  71. package/dist/file.js +0 -1
  72. package/dist/file.js.map +1 -1
  73. package/dist/gateway/adapters.d.ts +10 -0
  74. package/dist/gateway/adapters.d.ts.map +1 -1
  75. package/dist/gateway/adapters.js +4 -1
  76. package/dist/gateway/adapters.js.map +1 -1
  77. package/dist/gateway/dedup.d.ts +105 -0
  78. package/dist/gateway/dedup.d.ts.map +1 -0
  79. package/dist/gateway/dedup.js +160 -0
  80. package/dist/gateway/dedup.js.map +1 -0
  81. package/dist/gateway/heartbeat.d.ts +99 -0
  82. package/dist/gateway/heartbeat.d.ts.map +1 -0
  83. package/dist/gateway/heartbeat.js +122 -0
  84. package/dist/gateway/heartbeat.js.map +1 -0
  85. package/dist/gateway/inbox.d.ts +14 -1
  86. package/dist/gateway/inbox.d.ts.map +1 -1
  87. package/dist/gateway/inbox.js.map +1 -1
  88. package/dist/gateway/platform-config.d.ts +5 -0
  89. package/dist/gateway/platform-config.d.ts.map +1 -1
  90. package/dist/gateway/platform-config.js +8 -13
  91. package/dist/gateway/platform-config.js.map +1 -1
  92. package/dist/gateway/registry.d.ts +47 -0
  93. package/dist/gateway/registry.d.ts.map +1 -1
  94. package/dist/gateway/registry.js +227 -21
  95. package/dist/gateway/registry.js.map +1 -1
  96. package/dist/gateway/whatsapp/baileys-bridge.d.ts +11 -1
  97. package/dist/gateway/whatsapp/baileys-bridge.d.ts.map +1 -1
  98. package/dist/gateway/whatsapp/baileys-bridge.js +64 -1
  99. package/dist/gateway/whatsapp/baileys-bridge.js.map +1 -1
  100. package/dist/gateway/whatsapp/bridge.d.ts +4 -2
  101. package/dist/gateway/whatsapp/bridge.d.ts.map +1 -1
  102. package/dist/gateway/whatsapp/bridge.js.map +1 -1
  103. package/dist/index.js +1 -1
  104. package/dist/index.js.map +1 -1
  105. package/dist/inference/factory.d.ts +16 -0
  106. package/dist/inference/factory.d.ts.map +1 -1
  107. package/dist/inference/factory.js +42 -0
  108. package/dist/inference/factory.js.map +1 -1
  109. package/dist/inference/gemini-adapter.d.ts.map +1 -1
  110. package/dist/inference/gemini-adapter.js +3 -0
  111. package/dist/inference/gemini-adapter.js.map +1 -1
  112. package/dist/inference/interface.d.ts +12 -0
  113. package/dist/inference/interface.d.ts.map +1 -1
  114. package/dist/inference/local-adapter.d.ts +2 -0
  115. package/dist/inference/local-adapter.d.ts.map +1 -1
  116. package/dist/inference/local-adapter.js +36 -5
  117. package/dist/inference/local-adapter.js.map +1 -1
  118. package/dist/inference/native-tools.d.ts +8 -0
  119. package/dist/inference/native-tools.d.ts.map +1 -1
  120. package/dist/inference/native-tools.js +14 -3
  121. package/dist/inference/native-tools.js.map +1 -1
  122. package/dist/inference/tool-call-utils.d.ts +66 -7
  123. package/dist/inference/tool-call-utils.d.ts.map +1 -1
  124. package/dist/inference/tool-call-utils.js +134 -13
  125. package/dist/inference/tool-call-utils.js.map +1 -1
  126. package/dist/learning/auto-router.d.ts.map +1 -1
  127. package/dist/learning/auto-router.js +90 -5
  128. package/dist/learning/auto-router.js.map +1 -1
  129. package/dist/learning/context-budget.d.ts +133 -0
  130. package/dist/learning/context-budget.d.ts.map +1 -0
  131. package/dist/learning/context-budget.js +196 -0
  132. package/dist/learning/context-budget.js.map +1 -0
  133. package/dist/learning/cost-tracker.d.ts.map +1 -1
  134. package/dist/learning/cost-tracker.js +20 -8
  135. package/dist/learning/cost-tracker.js.map +1 -1
  136. package/dist/learning/eval-framework.d.ts.map +1 -1
  137. package/dist/learning/eval-framework.js +6 -2
  138. package/dist/learning/eval-framework.js.map +1 -1
  139. package/dist/learning/failure-bookkeeping.d.ts +19 -0
  140. package/dist/learning/failure-bookkeeping.d.ts.map +1 -1
  141. package/dist/learning/failure-bookkeeping.js +67 -2
  142. package/dist/learning/failure-bookkeeping.js.map +1 -1
  143. package/dist/learning/feedback.d.ts.map +1 -1
  144. package/dist/learning/feedback.js +19 -8
  145. package/dist/learning/feedback.js.map +1 -1
  146. package/dist/learning/model-harness.d.ts +76 -0
  147. package/dist/learning/model-harness.d.ts.map +1 -0
  148. package/dist/learning/model-harness.js +119 -0
  149. package/dist/learning/model-harness.js.map +1 -0
  150. package/dist/learning/model-selection.d.ts +15 -0
  151. package/dist/learning/model-selection.d.ts.map +1 -1
  152. package/dist/learning/model-selection.js +27 -1
  153. package/dist/learning/model-selection.js.map +1 -1
  154. package/dist/learning/provider-fallback.d.ts +12 -0
  155. package/dist/learning/provider-fallback.d.ts.map +1 -1
  156. package/dist/learning/provider-fallback.js +74 -0
  157. package/dist/learning/provider-fallback.js.map +1 -1
  158. package/dist/learning/provider-revival.d.ts +106 -0
  159. package/dist/learning/provider-revival.d.ts.map +1 -0
  160. package/dist/learning/provider-revival.js +154 -0
  161. package/dist/learning/provider-revival.js.map +1 -0
  162. package/dist/learning/resilient-call.d.ts.map +1 -1
  163. package/dist/learning/resilient-call.js +48 -3
  164. package/dist/learning/resilient-call.js.map +1 -1
  165. package/dist/nlu/conversation-gate.d.ts +37 -0
  166. package/dist/nlu/conversation-gate.d.ts.map +1 -1
  167. package/dist/nlu/conversation-gate.js +49 -0
  168. package/dist/nlu/conversation-gate.js.map +1 -1
  169. package/dist/nlu/schema.d.ts +2 -2
  170. package/dist/observability/dag-bridge.d.ts +69 -0
  171. package/dist/observability/dag-bridge.d.ts.map +1 -0
  172. package/dist/observability/dag-bridge.js +56 -0
  173. package/dist/observability/dag-bridge.js.map +1 -0
  174. package/dist/observability/event-bus.d.ts +5 -10
  175. package/dist/observability/event-bus.d.ts.map +1 -1
  176. package/dist/observability/event-bus.js +10 -42
  177. package/dist/observability/event-bus.js.map +1 -1
  178. package/dist/skills/execution-audit.d.ts.map +1 -1
  179. package/dist/skills/execution-audit.js +17 -5
  180. package/dist/skills/execution-audit.js.map +1 -1
  181. package/dist/skills/sandbox-executor.d.ts +12 -1
  182. package/dist/skills/sandbox-executor.d.ts.map +1 -1
  183. package/dist/skills/sandbox-executor.js +28 -6
  184. package/dist/skills/sandbox-executor.js.map +1 -1
  185. package/dist/skills/secret-capture.d.ts +45 -1
  186. package/dist/skills/secret-capture.d.ts.map +1 -1
  187. package/dist/skills/secret-capture.js +82 -19
  188. package/dist/skills/secret-capture.js.map +1 -1
  189. package/dist/skills/skill-env-inventory.d.ts +79 -0
  190. package/dist/skills/skill-env-inventory.d.ts.map +1 -0
  191. package/dist/skills/skill-env-inventory.js +167 -0
  192. package/dist/skills/skill-env-inventory.js.map +1 -0
  193. package/dist/skills/skill-executor.d.ts +2 -0
  194. package/dist/skills/skill-executor.d.ts.map +1 -1
  195. package/dist/skills/skill-executor.js +19 -24
  196. package/dist/skills/skill-executor.js.map +1 -1
  197. package/dist/tools/ask-user.d.ts +14 -1
  198. package/dist/tools/ask-user.d.ts.map +1 -1
  199. package/dist/tools/ask-user.js +25 -1
  200. package/dist/tools/ask-user.js.map +1 -1
  201. package/dist/tools/followup-utils.d.ts +64 -0
  202. package/dist/tools/followup-utils.d.ts.map +1 -0
  203. package/dist/tools/followup-utils.js +158 -0
  204. package/dist/tools/followup-utils.js.map +1 -0
  205. package/dist/tools/memory-tools.d.ts +35 -0
  206. package/dist/tools/memory-tools.d.ts.map +1 -1
  207. package/dist/tools/memory-tools.js +76 -0
  208. package/dist/tools/memory-tools.js.map +1 -1
  209. package/dist/tools/pipeline-tool.d.ts.map +1 -1
  210. package/dist/tools/pipeline-tool.js +8 -3
  211. package/dist/tools/pipeline-tool.js.map +1 -1
  212. package/dist/tools/registry.d.ts +25 -12
  213. package/dist/tools/registry.d.ts.map +1 -1
  214. package/dist/tools/registry.js +31 -6
  215. package/dist/tools/registry.js.map +1 -1
  216. package/dist/tools/skill-tool.d.ts.map +1 -1
  217. package/dist/tools/skill-tool.js +52 -5
  218. package/dist/tools/skill-tool.js.map +1 -1
  219. package/dist/tools/tool-loop.d.ts +63 -1
  220. package/dist/tools/tool-loop.d.ts.map +1 -1
  221. package/dist/tools/tool-loop.js +305 -66
  222. package/dist/tools/tool-loop.js.map +1 -1
  223. package/dist/tools/toolsets.d.ts +19 -3
  224. package/dist/tools/toolsets.d.ts.map +1 -1
  225. package/dist/tools/toolsets.js +21 -5
  226. package/dist/tools/toolsets.js.map +1 -1
  227. package/dist/utils/env.d.ts.map +1 -1
  228. package/dist/utils/env.js +9 -13
  229. package/dist/utils/env.js.map +1 -1
  230. package/dist/web-dashboard/chat-console.d.ts +13 -1
  231. package/dist/web-dashboard/chat-console.d.ts.map +1 -1
  232. package/dist/web-dashboard/chat-console.js +16 -2
  233. package/dist/web-dashboard/chat-console.js.map +1 -1
  234. package/dist/web-dashboard/hub-data.d.ts +2 -0
  235. package/dist/web-dashboard/hub-data.d.ts.map +1 -1
  236. package/dist/web-dashboard/hub-data.js +4 -0
  237. package/dist/web-dashboard/hub-data.js.map +1 -1
  238. package/dist/web-dashboard/server.d.ts +6 -0
  239. package/dist/web-dashboard/server.d.ts.map +1 -1
  240. package/dist/web-dashboard/server.js +192 -3
  241. package/dist/web-dashboard/server.js.map +1 -1
  242. package/dist/web-dashboard/src/types.d.ts +31 -1
  243. package/dist/web-dashboard/src/types.d.ts.map +1 -1
  244. package/package.json +11 -1
  245. package/src/web-dashboard/public/assets/index-56yPnN_m.js +207 -0
  246. package/src/web-dashboard/public/assets/index-56yPnN_m.js.map +1 -0
  247. package/src/web-dashboard/public/assets/{index-C507EUWf.css → index-Cyd6tIew.css} +1 -1
  248. package/src/web-dashboard/public/index.html +2 -2
  249. package/dist/example.d.ts +0 -1
  250. package/dist/example.d.ts.map +0 -1
  251. package/dist/example.js +0 -3
  252. package/dist/example.js.map +0 -1
  253. package/dist/fresh.d.ts +0 -2
  254. package/dist/fresh.d.ts.map +0 -1
  255. package/dist/fresh.js +0 -2
  256. package/dist/fresh.js.map +0 -1
  257. package/dist/mcp/mcp-dashboard-oauth.d.ts +0 -94
  258. package/dist/mcp/mcp-dashboard-oauth.d.ts.map +0 -1
  259. package/dist/mcp/mcp-dashboard-oauth.js +0 -140
  260. package/dist/mcp/mcp-dashboard-oauth.js.map +0 -1
  261. package/dist/memory/background-sync.d.ts +0 -107
  262. package/dist/memory/background-sync.d.ts.map +0 -1
  263. package/dist/memory/background-sync.js +0 -242
  264. package/dist/memory/background-sync.js.map +0 -1
  265. package/dist/memory/cross-session.d.ts +0 -68
  266. package/dist/memory/cross-session.d.ts.map +0 -1
  267. package/dist/memory/cross-session.js +0 -153
  268. package/dist/memory/cross-session.js.map +0 -1
  269. package/dist/memory/drift-detector.d.ts +0 -76
  270. package/dist/memory/drift-detector.d.ts.map +0 -1
  271. package/dist/memory/drift-detector.js +0 -216
  272. package/dist/memory/drift-detector.js.map +0 -1
  273. package/dist/memory/enhanced-manager.d.ts +0 -105
  274. package/dist/memory/enhanced-manager.d.ts.map +0 -1
  275. package/dist/memory/enhanced-manager.js +0 -280
  276. package/dist/memory/enhanced-manager.js.map +0 -1
  277. package/dist/memory/session-extraction.d.ts +0 -93
  278. package/dist/memory/session-extraction.d.ts.map +0 -1
  279. package/dist/memory/session-extraction.js +0 -290
  280. package/dist/memory/session-extraction.js.map +0 -1
  281. package/dist/memory/sqlite-store.d.ts +0 -208
  282. package/dist/memory/sqlite-store.d.ts.map +0 -1
  283. package/dist/memory/sqlite-store.js +0 -556
  284. package/dist/memory/sqlite-store.js.map +0 -1
  285. package/dist/skills/daytona-executor.d.ts +0 -78
  286. package/dist/skills/daytona-executor.d.ts.map +0 -1
  287. package/dist/skills/daytona-executor.js +0 -256
  288. package/dist/skills/daytona-executor.js.map +0 -1
  289. package/dist/skills/modal-executor.d.ts +0 -81
  290. package/dist/skills/modal-executor.d.ts.map +0 -1
  291. package/dist/skills/modal-executor.js +0 -285
  292. package/dist/skills/modal-executor.js.map +0 -1
  293. package/dist/sync/inventory.d.ts +0 -1
  294. package/dist/sync/inventory.d.ts.map +0 -1
  295. package/dist/sync/inventory.js +0 -3
  296. package/dist/sync/inventory.js.map +0 -1
  297. package/dist/sync/validate.d.ts +0 -1
  298. package/dist/sync/validate.d.ts.map +0 -1
  299. package/dist/sync/validate.js +0 -3
  300. package/dist/sync/validate.js.map +0 -1
  301. package/dist/test.d.ts +0 -2
  302. package/dist/test.d.ts.map +0 -1
  303. package/dist/test.js +0 -3
  304. package/dist/test.js.map +0 -1
  305. package/dist/tools/browser-tool.d.ts +0 -206
  306. package/dist/tools/browser-tool.d.ts.map +0 -1
  307. package/dist/tools/browser-tool.js +0 -726
  308. package/dist/tools/browser-tool.js.map +0 -1
  309. package/dist/tools/delegate-tool.d.ts +0 -109
  310. package/dist/tools/delegate-tool.d.ts.map +0 -1
  311. package/dist/tools/delegate-tool.js +0 -185
  312. package/dist/tools/delegate-tool.js.map +0 -1
  313. package/dist/tools/delegation-state.d.ts +0 -87
  314. package/dist/tools/delegation-state.d.ts.map +0 -1
  315. package/dist/tools/delegation-state.js +0 -278
  316. package/dist/tools/delegation-state.js.map +0 -1
  317. package/dist/tools/desktop-ui.d.ts +0 -148
  318. package/dist/tools/desktop-ui.d.ts.map +0 -1
  319. package/dist/tools/desktop-ui.js +0 -486
  320. package/dist/tools/desktop-ui.js.map +0 -1
  321. package/dist/tools/image-video-tool.d.ts +0 -88
  322. package/dist/tools/image-video-tool.d.ts.map +0 -1
  323. package/dist/tools/image-video-tool.js +0 -276
  324. package/dist/tools/image-video-tool.js.map +0 -1
  325. package/dist/tools/kanban-cron-tools.d.ts +0 -92
  326. package/dist/tools/kanban-cron-tools.d.ts.map +0 -1
  327. package/dist/tools/kanban-cron-tools.js +0 -197
  328. package/dist/tools/kanban-cron-tools.js.map +0 -1
  329. package/dist/tools/messaging-tool.d.ts +0 -127
  330. package/dist/tools/messaging-tool.d.ts.map +0 -1
  331. package/dist/tools/messaging-tool.js +0 -314
  332. package/dist/tools/messaging-tool.js.map +0 -1
  333. package/dist/tools/modality/generic-caller.d.ts +0 -43
  334. package/dist/tools/modality/generic-caller.d.ts.map +0 -1
  335. package/dist/tools/modality/generic-caller.js +0 -254
  336. package/dist/tools/modality/generic-caller.js.map +0 -1
  337. package/dist/tools/modality/modality-catalog.d.ts +0 -134
  338. package/dist/tools/modality/modality-catalog.d.ts.map +0 -1
  339. package/dist/tools/modality/modality-catalog.js +0 -445
  340. package/dist/tools/modality/modality-catalog.js.map +0 -1
  341. package/dist/tools/modality/tool-router.d.ts +0 -81
  342. package/dist/tools/modality/tool-router.d.ts.map +0 -1
  343. package/dist/tools/modality/tool-router.js +0 -84
  344. package/dist/tools/modality/tool-router.js.map +0 -1
  345. package/dist/tools/security-tools.d.ts +0 -107
  346. package/dist/tools/security-tools.d.ts.map +0 -1
  347. package/dist/tools/security-tools.js +0 -264
  348. package/dist/tools/security-tools.js.map +0 -1
  349. package/dist/tools/ssh-tool.d.ts +0 -130
  350. package/dist/tools/ssh-tool.d.ts.map +0 -1
  351. package/dist/tools/ssh-tool.js +0 -328
  352. package/dist/tools/ssh-tool.js.map +0 -1
  353. package/dist/tools/tts-tool.d.ts +0 -91
  354. package/dist/tools/tts-tool.d.ts.map +0 -1
  355. package/dist/tools/tts-tool.js +0 -406
  356. package/dist/tools/tts-tool.js.map +0 -1
  357. package/dist/utils/shell-detection.d.ts +0 -124
  358. package/dist/utils/shell-detection.d.ts.map +0 -1
  359. package/dist/utils/shell-detection.js +0 -305
  360. package/dist/utils/shell-detection.js.map +0 -1
  361. package/dist/utils/windows-paths.d.ts +0 -185
  362. package/dist/utils/windows-paths.d.ts.map +0 -1
  363. package/dist/utils/windows-paths.js +0 -472
  364. package/dist/utils/windows-paths.js.map +0 -1
  365. package/src/web-dashboard/public/assets/index-C4frng1Q.js +0 -207
  366. package/src/web-dashboard/public/assets/index-C4frng1Q.js.map +0 -1
@@ -1,140 +0,0 @@
1
- /**
2
- * MCP Dashboard OAuth — OAuth flow for dashboard integration.
3
- *
4
- * Provides OAuth UI endpoints for the web dashboard to handle
5
- * MCP server authentication flows. This enables:
6
- * - Authorization code flow via dashboard redirect
7
- * - Token refresh in dashboard
8
- * - OAuth consent screen
9
- *
10
- * Hermes equivalent: mcp_dashboard_oauth.py
11
- */
12
- import { randomBytes } from 'node:crypto';
13
- import { logger } from '../utils/logger.js';
14
- // ─── Dashboard OAuth Manager ──────────────────────────────────────────────
15
- export class DashboardOAuthManager {
16
- sessions = new Map();
17
- tokens = new Map();
18
- /**
19
- * Start an OAuth flow for a server.
20
- * Returns the authorization URL to redirect the user to.
21
- */
22
- startFlow(config) {
23
- const state = randomBytes(16).toString('hex');
24
- const sessionId = randomBytes(8).toString('hex');
25
- const redirectUri = config.redirectUri || 'http://localhost:3456/api/mcp/oauth/callback';
26
- const params = new URLSearchParams({
27
- response_type: 'code',
28
- client_id: config.clientId,
29
- redirect_uri: redirectUri,
30
- state,
31
- scope: (config.scopes || ['read', 'write']).join(' '),
32
- });
33
- let codeVerifier;
34
- if (config.usePKCE !== false) {
35
- const { createHash } = require('node:crypto');
36
- codeVerifier = randomBytes(32).toString('base64url');
37
- const codeChallenge = createHash('sha256').update(codeVerifier).digest('base64url');
38
- params.set('code_challenge', codeChallenge);
39
- params.set('code_challenge_method', 'S256');
40
- }
41
- const authorizationUrl = `${config.authorizationEndpoint}?${params.toString()}`;
42
- const session = {
43
- sessionId,
44
- serverName: config.serverName,
45
- state,
46
- codeVerifier,
47
- authorizationUrl,
48
- createdAt: Date.now(),
49
- expiresAt: Date.now() + 600_000, // 10 minutes
50
- };
51
- this.sessions.set(sessionId, session);
52
- logger.debug(`MCP Dashboard OAuth: Started flow for '${config.serverName}' (session: ${sessionId})`);
53
- return session;
54
- }
55
- /**
56
- * Handle the OAuth callback.
57
- * Exchange the authorization code for tokens.
58
- */
59
- async handleCallback(sessionId, authorizationCode, returnedState) {
60
- const session = this.sessions.get(sessionId);
61
- if (!session) {
62
- return { success: false, error: 'Session not found' };
63
- }
64
- if (session.expiresAt < Date.now()) {
65
- this.sessions.delete(sessionId);
66
- return { success: false, error: 'Session expired' };
67
- }
68
- if (session.state !== returnedState) {
69
- return { success: false, error: 'State mismatch' };
70
- }
71
- // In a real implementation, this would call the token endpoint
72
- // For now, we'll store the code and let the caller handle token exchange
73
- logger.info(`MCP Dashboard OAuth: Callback received for '${session.serverName}'`);
74
- return { success: true };
75
- }
76
- /**
77
- * Store tokens for a server.
78
- */
79
- setTokens(serverName, accessToken, refreshToken, expiresIn) {
80
- this.tokens.set(serverName, {
81
- accessToken,
82
- refreshToken,
83
- expiresAt: Date.now() + (expiresIn || 3600_000),
84
- });
85
- }
86
- /**
87
- * Get tokens for a server.
88
- */
89
- getTokens(serverName) {
90
- const tokens = this.tokens.get(serverName);
91
- if (!tokens)
92
- return null;
93
- if (tokens.expiresAt < Date.now()) {
94
- this.tokens.delete(serverName);
95
- return null;
96
- }
97
- return { accessToken: tokens.accessToken, refreshToken: tokens.refreshToken };
98
- }
99
- /**
100
- * Clear tokens for a server.
101
- */
102
- clearTokens(serverName) {
103
- this.tokens.delete(serverName);
104
- }
105
- /**
106
- * Get all stored tokens.
107
- */
108
- getAllTokens() {
109
- return [...this.tokens.entries()].map(([name, tokens]) => ({
110
- serverName: name,
111
- hasRefreshToken: !!tokens.refreshToken,
112
- expiresAt: tokens.expiresAt,
113
- }));
114
- }
115
- /**
116
- * Clean up expired sessions.
117
- */
118
- cleanup() {
119
- let count = 0;
120
- const now = Date.now();
121
- for (const [id, session] of this.sessions) {
122
- if (session.expiresAt < now) {
123
- this.sessions.delete(id);
124
- count++;
125
- }
126
- }
127
- return count;
128
- }
129
- }
130
- // ─── Singleton ────────────────────────────────────────────────────────────
131
- let _instance = null;
132
- export function getDashboardOAuthManager() {
133
- if (!_instance)
134
- _instance = new DashboardOAuthManager();
135
- return _instance;
136
- }
137
- export function resetDashboardOAuthManager() {
138
- _instance = null;
139
- }
140
- //# sourceMappingURL=mcp-dashboard-oauth.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mcp-dashboard-oauth.js","sourceRoot":"","sources":["../../src/mcp/mcp-dashboard-oauth.ts"],"names":[],"mappings":"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"}
@@ -1,107 +0,0 @@
1
- /**
2
- * BackgroundSync — Daemon thread manager for memory operations.
3
- *
4
- * Runs memory extraction and sync operations in background threads
5
- * to keep per-turn latency at zero. Uses a queue-based architecture
6
- * with configurable concurrency.
7
- *
8
- * Features:
9
- * - Zero-cost per-turn memory operations
10
- * - Configurable concurrency limits
11
- * - Graceful shutdown with drain timeout
12
- * - Error handling and retry logic
13
- * - Metrics and monitoring
14
- */
15
- import { EventEmitter } from 'events';
16
- type SyncTaskType = 'extract' | 'sync' | 'prefetch' | 'cleanup';
17
- interface SyncTask {
18
- id: string;
19
- type: SyncTaskType;
20
- data: any;
21
- priority: number;
22
- createdAt: number;
23
- startedAt?: number;
24
- completedAt?: number;
25
- status: 'pending' | 'running' | 'completed' | 'failed' | 'cancelled';
26
- error?: string;
27
- retries: number;
28
- maxRetries: number;
29
- }
30
- interface SyncMetrics {
31
- totalTasks: number;
32
- completedTasks: number;
33
- failedTasks: number;
34
- pendingTasks: number;
35
- runningTasks: number;
36
- averageDuration: number;
37
- totalDuration: number;
38
- }
39
- interface BackgroundSyncConfig {
40
- maxConcurrent: number;
41
- maxQueueSize: number;
42
- drainTimeoutMs: number;
43
- retryDelayMs: number;
44
- maxRetries: number;
45
- }
46
- export declare class BackgroundSyncManager extends EventEmitter {
47
- private queue;
48
- private running;
49
- private completed;
50
- private config;
51
- private isProcessing;
52
- private isShutdown;
53
- private taskCounter;
54
- private metrics;
55
- constructor(config?: Partial<BackgroundSyncConfig>);
56
- /**
57
- * Enqueue a task for background execution.
58
- */
59
- enqueue(params: {
60
- type: SyncTaskType;
61
- data: any;
62
- priority?: number;
63
- }): string;
64
- /**
65
- * Process the queue.
66
- */
67
- private processQueue;
68
- /**
69
- * Process a single task.
70
- */
71
- private processTask;
72
- /**
73
- * Execute a task (override in subclass or provide handler).
74
- */
75
- private executeTask;
76
- /**
77
- * Get task status.
78
- */
79
- getStatus(id: string): SyncTask | null;
80
- /**
81
- * Get metrics.
82
- */
83
- getMetrics(): SyncMetrics;
84
- /**
85
- * Get queue length.
86
- */
87
- getQueueLength(): number;
88
- /**
89
- * Get running count.
90
- */
91
- getRunningCount(): number;
92
- /**
93
- * Cancel a task.
94
- */
95
- cancel(id: string): boolean;
96
- /**
97
- * Drain the queue (wait for all tasks to complete).
98
- */
99
- drain(timeoutMs?: number): Promise<void>;
100
- /**
101
- * Shutdown gracefully.
102
- */
103
- shutdown(): Promise<void>;
104
- }
105
- export declare function getBackgroundSyncManager(): BackgroundSyncManager;
106
- export {};
107
- //# sourceMappingURL=background-sync.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"background-sync.d.ts","sourceRoot":"","sources":["../../src/memory/background-sync.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAItC,KAAK,YAAY,GAAG,SAAS,GAAG,MAAM,GAAG,UAAU,GAAG,SAAS,CAAC;AAEhE,UAAU,QAAQ;IAChB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,YAAY,CAAC;IACnB,IAAI,EAAE,GAAG,CAAC;IACV,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,WAAW,CAAC;IACrE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,UAAU,WAAW;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,UAAU,oBAAoB;IAC5B,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;CACpB;AAID,qBAAa,qBAAsB,SAAQ,YAAY;IACrD,OAAO,CAAC,KAAK,CAAkB;IAC/B,OAAO,CAAC,OAAO,CAA+B;IAC9C,OAAO,CAAC,SAAS,CAAkB;IACnC,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,WAAW,CAAK;IAGxB,OAAO,CAAC,OAAO,CAQb;gBAEU,MAAM,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC;IAWlD;;OAEG;IACH,OAAO,CAAC,MAAM,EAAE;QACd,IAAI,EAAE,YAAY,CAAC;QACnB,IAAI,EAAE,GAAG,CAAC;QACV,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,GAAG,MAAM;IAkCV;;OAEG;YACW,YAAY;IAwB1B;;OAEG;YACW,WAAW;IAwDzB;;OAEG;YACW,WAAW;IAOzB;;OAEG;IACH,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI;IAStC;;OAEG;IACH,UAAU,IAAI,WAAW;IAIzB;;OAEG;IACH,cAAc,IAAI,MAAM;IAIxB;;OAEG;IACH,eAAe,IAAI,MAAM;IAIzB;;OAEG;IACH,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAsB3B;;OAEG;IACG,KAAK,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAyB9C;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CAKhC;AAMD,wBAAgB,wBAAwB,IAAI,qBAAqB,CAGhE"}
@@ -1,242 +0,0 @@
1
- /**
2
- * BackgroundSync — Daemon thread manager for memory operations.
3
- *
4
- * Runs memory extraction and sync operations in background threads
5
- * to keep per-turn latency at zero. Uses a queue-based architecture
6
- * with configurable concurrency.
7
- *
8
- * Features:
9
- * - Zero-cost per-turn memory operations
10
- * - Configurable concurrency limits
11
- * - Graceful shutdown with drain timeout
12
- * - Error handling and retry logic
13
- * - Metrics and monitoring
14
- */
15
- import { EventEmitter } from 'events';
16
- // ─── Background Sync Manager ────────────────────────────────────────────────
17
- export class BackgroundSyncManager extends EventEmitter {
18
- queue = [];
19
- running = new Map();
20
- completed = [];
21
- config;
22
- isProcessing = false;
23
- isShutdown = false;
24
- taskCounter = 0;
25
- // Metrics
26
- metrics = {
27
- totalTasks: 0,
28
- completedTasks: 0,
29
- failedTasks: 0,
30
- pendingTasks: 0,
31
- runningTasks: 0,
32
- averageDuration: 0,
33
- totalDuration: 0,
34
- };
35
- constructor(config) {
36
- super();
37
- this.config = {
38
- maxConcurrent: config?.maxConcurrent ?? 3,
39
- maxQueueSize: config?.maxQueueSize ?? 100,
40
- drainTimeoutMs: config?.drainTimeoutMs ?? 5000,
41
- retryDelayMs: config?.retryDelayMs ?? 1000,
42
- maxRetries: config?.maxRetries ?? 3,
43
- };
44
- }
45
- /**
46
- * Enqueue a task for background execution.
47
- */
48
- enqueue(params) {
49
- if (this.isShutdown) {
50
- throw new Error('BackgroundSyncManager is shut down');
51
- }
52
- if (this.queue.length >= this.config.maxQueueSize) {
53
- throw new Error('Queue is full');
54
- }
55
- const id = `sync_${Date.now()}_${++this.taskCounter}`;
56
- const task = {
57
- id,
58
- type: params.type,
59
- data: params.data,
60
- priority: params.priority ?? 0,
61
- createdAt: Date.now(),
62
- status: 'pending',
63
- retries: 0,
64
- maxRetries: this.config.maxRetries,
65
- };
66
- this.queue.push(task);
67
- this.metrics.totalTasks++;
68
- this.metrics.pendingTasks++;
69
- // Sort by priority (higher = more urgent)
70
- this.queue.sort((a, b) => b.priority - a.priority);
71
- // Start processing if not already
72
- this.processQueue();
73
- return id;
74
- }
75
- /**
76
- * Process the queue.
77
- */
78
- async processQueue() {
79
- if (this.isProcessing || this.isShutdown) {
80
- return;
81
- }
82
- this.isProcessing = true;
83
- while (this.queue.length > 0 && this.running.size < this.config.maxConcurrent) {
84
- const task = this.queue.shift();
85
- if (!task)
86
- break;
87
- this.metrics.pendingTasks--;
88
- this.running.set(task.id, task);
89
- this.metrics.runningTasks++;
90
- // Process task in background (non-blocking)
91
- this.processTask(task).catch((err) => {
92
- console.error(`BackgroundSync: Task ${task.id} failed:`, err);
93
- });
94
- }
95
- this.isProcessing = false;
96
- }
97
- /**
98
- * Process a single task.
99
- */
100
- async processTask(task) {
101
- task.status = 'running';
102
- task.startedAt = Date.now();
103
- try {
104
- await this.executeTask(task);
105
- task.status = 'completed';
106
- task.completedAt = Date.now();
107
- const duration = task.completedAt - task.startedAt;
108
- this.metrics.completedTasks++;
109
- this.metrics.totalDuration += duration;
110
- this.metrics.averageDuration =
111
- this.metrics.totalDuration / this.metrics.completedTasks;
112
- this.emit('task:completed', { id: task.id, type: task.type, duration });
113
- }
114
- catch (err) {
115
- task.error = err.message;
116
- if (task.retries < task.maxRetries) {
117
- // Retry after delay
118
- task.retries++;
119
- task.status = 'pending';
120
- this.running.delete(task.id);
121
- this.metrics.runningTasks--;
122
- setTimeout(() => {
123
- this.queue.unshift(task); // Add to front for retry
124
- this.metrics.pendingTasks++;
125
- this.processQueue();
126
- }, this.config.retryDelayMs);
127
- return;
128
- }
129
- task.status = 'failed';
130
- task.completedAt = Date.now();
131
- this.metrics.failedTasks++;
132
- this.emit('task:failed', { id: task.id, type: task.type, error: err.message });
133
- }
134
- finally {
135
- this.running.delete(task.id);
136
- this.metrics.runningTasks--;
137
- // Move to completed list (keep last 100)
138
- this.completed.push(task);
139
- if (this.completed.length > 100) {
140
- this.completed = this.completed.slice(-100);
141
- }
142
- // Process more tasks
143
- this.processQueue();
144
- }
145
- }
146
- /**
147
- * Execute a task (override in subclass or provide handler).
148
- */
149
- async executeTask(task) {
150
- // Emit event for external handlers
151
- return new Promise((resolve, reject) => {
152
- this.emit('task:execute', task, resolve, reject);
153
- });
154
- }
155
- /**
156
- * Get task status.
157
- */
158
- getStatus(id) {
159
- return (this.running.get(id) ||
160
- this.queue.find((t) => t.id === id) ||
161
- this.completed.find((t) => t.id === id) ||
162
- null);
163
- }
164
- /**
165
- * Get metrics.
166
- */
167
- getMetrics() {
168
- return { ...this.metrics };
169
- }
170
- /**
171
- * Get queue length.
172
- */
173
- getQueueLength() {
174
- return this.queue.length;
175
- }
176
- /**
177
- * Get running count.
178
- */
179
- getRunningCount() {
180
- return this.running.size;
181
- }
182
- /**
183
- * Cancel a task.
184
- */
185
- cancel(id) {
186
- // Check queue
187
- const queueIndex = this.queue.findIndex((t) => t.id === id);
188
- if (queueIndex >= 0) {
189
- const task = this.queue.splice(queueIndex, 1)[0];
190
- task.status = 'cancelled';
191
- this.metrics.pendingTasks--;
192
- this.emit('task:cancelled', { id: task.id, type: task.type });
193
- return true;
194
- }
195
- // Check running
196
- const runningTask = this.running.get(id);
197
- if (runningTask) {
198
- runningTask.status = 'cancelled';
199
- this.emit('task:cancelled', { id: runningTask.id, type: runningTask.type });
200
- return true;
201
- }
202
- return false;
203
- }
204
- /**
205
- * Drain the queue (wait for all tasks to complete).
206
- */
207
- async drain(timeoutMs) {
208
- const timeout = timeoutMs ?? this.config.drainTimeoutMs;
209
- const startTime = Date.now();
210
- while ((this.queue.length > 0 || this.running.size > 0) &&
211
- Date.now() - startTime < timeout) {
212
- await new Promise((resolve) => setTimeout(resolve, 100));
213
- }
214
- // Force cancel remaining tasks
215
- if (this.queue.length > 0 || this.running.size > 0) {
216
- for (const task of this.queue) {
217
- task.status = 'cancelled';
218
- }
219
- this.queue = [];
220
- for (const [id, task] of this.running) {
221
- task.status = 'cancelled';
222
- }
223
- this.running.clear();
224
- }
225
- }
226
- /**
227
- * Shutdown gracefully.
228
- */
229
- async shutdown() {
230
- this.isShutdown = true;
231
- await this.drain();
232
- this.removeAllListeners();
233
- }
234
- }
235
- // ─── Singleton ──────────────────────────────────────────────────────────────
236
- let _instance = null;
237
- export function getBackgroundSyncManager() {
238
- if (!_instance)
239
- _instance = new BackgroundSyncManager();
240
- return _instance;
241
- }
242
- //# sourceMappingURL=background-sync.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"background-sync.js","sourceRoot":"","sources":["../../src/memory/background-sync.ts"],"names":[],"mappings":"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"}
@@ -1,68 +0,0 @@
1
- /**
2
- * CrossSessionPersistence — Maintain memory across sessions.
3
- *
4
- * Loads and saves memory context at session boundaries to enable
5
- * continuous learning across multiple sessions.
6
- *
7
- * Features:
8
- * - Session context loading at start
9
- * - Session context saving at end
10
- * - Session history tracking
11
- * - Automatic cleanup of old sessions
12
- */
13
- import { type SQLiteStore } from './sqlite-store.js';
14
- interface SessionContext {
15
- sessionId: string;
16
- memories: any[];
17
- trajectories: any[];
18
- patterns: any[];
19
- lessons: any[];
20
- startedAt: number;
21
- endedAt?: number;
22
- summary?: string;
23
- }
24
- interface SessionHistory {
25
- sessionId: string;
26
- startedAt: number;
27
- endedAt?: number;
28
- memoryCount: number;
29
- trajectoryCount: number;
30
- }
31
- export declare class CrossSessionPersistence {
32
- private store;
33
- private currentSessionId;
34
- constructor(store?: SQLiteStore);
35
- /**
36
- * Load session context at session start.
37
- */
38
- loadSessionContext(sessionId: string): Promise<SessionContext>;
39
- /**
40
- * Save session context at session end.
41
- */
42
- saveSessionContext(context: SessionContext): Promise<void>;
43
- /**
44
- * Get session history.
45
- */
46
- getSessionHistory(limit?: number): SessionHistory[];
47
- /**
48
- * Get context for a specific session.
49
- */
50
- getSessionContext(sessionId: string): Promise<SessionContext | null>;
51
- /**
52
- * Get memory context for prompt injection.
53
- */
54
- getMemoryContext(query: string): Promise<{
55
- facts: string;
56
- patterns: string;
57
- lessons: string;
58
- trajectories: string;
59
- }>;
60
- /**
61
- * Cleanup old sessions.
62
- */
63
- cleanupOldSessions(maxAgeDays?: number): number;
64
- }
65
- export declare function getCrossSessionPersistence(): CrossSessionPersistence;
66
- export declare function resetCrossSessionPersistence(): void;
67
- export {};
68
- //# sourceMappingURL=cross-session.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cross-session.d.ts","sourceRoot":"","sources":["../../src/memory/cross-session.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAkB,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAKrE,UAAU,cAAc;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,GAAG,EAAE,CAAC;IAChB,YAAY,EAAE,GAAG,EAAE,CAAC;IACpB,QAAQ,EAAE,GAAG,EAAE,CAAC;IAChB,OAAO,EAAE,GAAG,EAAE,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,UAAU,cAAc;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;CACzB;AAID,qBAAa,uBAAuB;IAClC,OAAO,CAAC,KAAK,CAAc;IAC3B,OAAO,CAAC,gBAAgB,CAAuB;gBAEnC,KAAK,CAAC,EAAE,WAAW;IAI/B;;OAEG;IACG,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IA4BpE;;OAEG;IACG,kBAAkB,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAMhE;;OAEG;IACH,iBAAiB,CAAC,KAAK,SAAK,GAAG,cAAc,EAAE;IA2B/C;;OAEG;IACG,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IAwB1E;;OAEG;IACG,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;QAC7C,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC;QAChB,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;IAiCF;;OAEG;IACH,kBAAkB,CAAC,UAAU,SAAK,GAAG,MAAM;CAK5C;AAMD,wBAAgB,0BAA0B,IAAI,uBAAuB,CAGpE;AAED,wBAAgB,4BAA4B,IAAI,IAAI,CAEnD"}