agent-nuvira 3.3.3 → 3.3.4

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 (349) hide show
  1. package/README.md +13 -5
  2. package/dist/agent-sdk/src/agent.d.ts +2 -0
  3. package/dist/agent-sdk/src/agent.d.ts.map +1 -1
  4. package/dist/agent-sdk/src/define.d.ts +64 -0
  5. package/dist/agent-sdk/src/define.d.ts.map +1 -0
  6. package/dist/agent-sdk/src/define.js +76 -0
  7. package/dist/agent-sdk/src/define.js.map +1 -0
  8. package/dist/agent-sdk/src/index.d.ts +9 -0
  9. package/dist/agent-sdk/src/index.d.ts.map +1 -1
  10. package/dist/agent-sdk/src/index.js +9 -0
  11. package/dist/agent-sdk/src/index.js.map +1 -1
  12. package/dist/agent-sdk/src/scaffold.d.ts +11 -0
  13. package/dist/agent-sdk/src/scaffold.d.ts.map +1 -1
  14. package/dist/agent-sdk/src/scaffold.js +16 -6
  15. package/dist/agent-sdk/src/scaffold.js.map +1 -1
  16. package/dist/agents/long-form-plan.d.ts.map +1 -1
  17. package/dist/agents/long-form-plan.js +2 -1
  18. package/dist/agents/long-form-plan.js.map +1 -1
  19. package/dist/agents/orchestrator.d.ts.map +1 -1
  20. package/dist/agents/orchestrator.js +5 -4
  21. package/dist/agents/orchestrator.js.map +1 -1
  22. package/dist/cli/agent.d.ts +2 -2
  23. package/dist/cli/agent.js +10 -10
  24. package/dist/cli/chat.d.ts +94 -0
  25. package/dist/cli/chat.d.ts.map +1 -1
  26. package/dist/cli/chat.js +354 -20
  27. package/dist/cli/chat.js.map +1 -1
  28. package/dist/cli/cli-program.d.ts.map +1 -1
  29. package/dist/cli/cli-program.js +5 -0
  30. package/dist/cli/cli-program.js.map +1 -1
  31. package/dist/cli/config.d.ts.map +1 -1
  32. package/dist/cli/config.js +9 -1
  33. package/dist/cli/config.js.map +1 -1
  34. package/dist/cli/doctor.d.ts.map +1 -1
  35. package/dist/cli/doctor.js +3 -2
  36. package/dist/cli/doctor.js.map +1 -1
  37. package/dist/cli/edit.js +2 -2
  38. package/dist/cli/eval.d.ts +17 -0
  39. package/dist/cli/eval.d.ts.map +1 -1
  40. package/dist/cli/eval.js +105 -2
  41. package/dist/cli/eval.js.map +1 -1
  42. package/dist/cli/execute.d.ts +16 -1
  43. package/dist/cli/execute.d.ts.map +1 -1
  44. package/dist/cli/execute.js +192 -22
  45. package/dist/cli/execute.js.map +1 -1
  46. package/dist/cli/loop-executor.d.ts +55 -0
  47. package/dist/cli/loop-executor.d.ts.map +1 -1
  48. package/dist/cli/loop-executor.js +212 -13
  49. package/dist/cli/loop-executor.js.map +1 -1
  50. package/dist/cli/model.d.ts.map +1 -1
  51. package/dist/cli/model.js +9 -8
  52. package/dist/cli/model.js.map +1 -1
  53. package/dist/cli/models.d.ts +1 -1
  54. package/dist/cli/models.js +4 -4
  55. package/dist/cli/parity.d.ts +85 -0
  56. package/dist/cli/parity.d.ts.map +1 -0
  57. package/dist/cli/parity.js +506 -0
  58. package/dist/cli/parity.js.map +1 -0
  59. package/dist/cli/plan.d.ts.map +1 -1
  60. package/dist/cli/plan.js +2 -1
  61. package/dist/cli/plan.js.map +1 -1
  62. package/dist/cli/retrieval.d.ts.map +1 -1
  63. package/dist/cli/retrieval.js +5 -4
  64. package/dist/cli/retrieval.js.map +1 -1
  65. package/dist/cli/sdk.js +4 -4
  66. package/dist/cli/sdk.js.map +1 -1
  67. package/dist/cli/trace.d.ts.map +1 -1
  68. package/dist/cli/trace.js +2 -1
  69. package/dist/cli/trace.js.map +1 -1
  70. package/dist/cli/workflow.js +2 -2
  71. package/dist/cli/workflow.js.map +1 -1
  72. package/dist/config/types.d.ts +44 -0
  73. package/dist/config/types.d.ts.map +1 -1
  74. package/dist/findings/verdicts.d.ts +241 -0
  75. package/dist/findings/verdicts.d.ts.map +1 -0
  76. package/dist/findings/verdicts.js +284 -0
  77. package/dist/findings/verdicts.js.map +1 -0
  78. package/dist/gateway/adapters.d.ts +65 -0
  79. package/dist/gateway/adapters.d.ts.map +1 -1
  80. package/dist/gateway/adapters.js +216 -10
  81. package/dist/gateway/adapters.js.map +1 -1
  82. package/dist/gateway/channel-directory.d.ts +31 -0
  83. package/dist/gateway/channel-directory.d.ts.map +1 -1
  84. package/dist/gateway/channel-directory.js +40 -0
  85. package/dist/gateway/channel-directory.js.map +1 -1
  86. package/dist/gateway/gateway-log.d.ts +1 -1
  87. package/dist/gateway/gateway-log.d.ts.map +1 -1
  88. package/dist/gateway/gateway-log.js.map +1 -1
  89. package/dist/gateway/hooks.d.ts +87 -19
  90. package/dist/gateway/hooks.d.ts.map +1 -1
  91. package/dist/gateway/hooks.js +62 -23
  92. package/dist/gateway/hooks.js.map +1 -1
  93. package/dist/gateway/inbound-media.d.ts +147 -0
  94. package/dist/gateway/inbound-media.d.ts.map +1 -0
  95. package/dist/gateway/inbound-media.js +317 -0
  96. package/dist/gateway/inbound-media.js.map +1 -0
  97. package/dist/gateway/inbox.d.ts +8 -1
  98. package/dist/gateway/inbox.d.ts.map +1 -1
  99. package/dist/gateway/inbox.js.map +1 -1
  100. package/dist/gateway/platform-config.d.ts +14 -0
  101. package/dist/gateway/platform-config.d.ts.map +1 -1
  102. package/dist/gateway/platform-config.js +26 -8
  103. package/dist/gateway/platform-config.js.map +1 -1
  104. package/dist/gateway/realtime.d.ts +114 -0
  105. package/dist/gateway/realtime.d.ts.map +1 -0
  106. package/dist/gateway/realtime.js +402 -0
  107. package/dist/gateway/realtime.js.map +1 -0
  108. package/dist/gateway/registry.d.ts +31 -0
  109. package/dist/gateway/registry.d.ts.map +1 -1
  110. package/dist/gateway/registry.js +224 -4
  111. package/dist/gateway/registry.js.map +1 -1
  112. package/dist/gateway/whatsapp/baileys-bridge.d.ts +11 -1
  113. package/dist/gateway/whatsapp/baileys-bridge.d.ts.map +1 -1
  114. package/dist/gateway/whatsapp/baileys-bridge.js +123 -4
  115. package/dist/gateway/whatsapp/baileys-bridge.js.map +1 -1
  116. package/dist/gateway/whatsapp/bridge.d.ts +6 -2
  117. package/dist/gateway/whatsapp/bridge.d.ts.map +1 -1
  118. package/dist/gateway/whatsapp/bridge.js.map +1 -1
  119. package/dist/index.js +8 -0
  120. package/dist/index.js.map +1 -1
  121. package/dist/inference/factory.d.ts +14 -0
  122. package/dist/inference/factory.d.ts.map +1 -1
  123. package/dist/inference/factory.js +17 -0
  124. package/dist/inference/factory.js.map +1 -1
  125. package/dist/inference/groq-adapter.d.ts +2 -0
  126. package/dist/inference/groq-adapter.d.ts.map +1 -1
  127. package/dist/inference/groq-adapter.js +16 -6
  128. package/dist/inference/groq-adapter.js.map +1 -1
  129. package/dist/inference/tools.d.ts.map +1 -1
  130. package/dist/inference/tools.js +29 -0
  131. package/dist/inference/tools.js.map +1 -1
  132. package/dist/learning/benchmark.d.ts.map +1 -1
  133. package/dist/learning/benchmark.js +3 -2
  134. package/dist/learning/benchmark.js.map +1 -1
  135. package/dist/learning/continuation.d.ts.map +1 -1
  136. package/dist/learning/continuation.js +2 -1
  137. package/dist/learning/continuation.js.map +1 -1
  138. package/dist/learning/cost-tracker.d.ts.map +1 -1
  139. package/dist/learning/cost-tracker.js +2 -1
  140. package/dist/learning/cost-tracker.js.map +1 -1
  141. package/dist/learning/deferred-task.d.ts.map +1 -1
  142. package/dist/learning/deferred-task.js +13 -4
  143. package/dist/learning/deferred-task.js.map +1 -1
  144. package/dist/learning/eval-framework.d.ts.map +1 -1
  145. package/dist/learning/eval-framework.js +2 -1
  146. package/dist/learning/eval-framework.js.map +1 -1
  147. package/dist/learning/long-form.d.ts.map +1 -1
  148. package/dist/learning/long-form.js +2 -1
  149. package/dist/learning/long-form.js.map +1 -1
  150. package/dist/learning/model-registry.d.ts.map +1 -1
  151. package/dist/learning/model-registry.js +2 -1
  152. package/dist/learning/model-registry.js.map +1 -1
  153. package/dist/learning/reasoning-cache.d.ts.map +1 -1
  154. package/dist/learning/reasoning-cache.js +2 -1
  155. package/dist/learning/reasoning-cache.js.map +1 -1
  156. package/dist/learning/reasoning-trace.d.ts +37 -1
  157. package/dist/learning/reasoning-trace.d.ts.map +1 -1
  158. package/dist/learning/reasoning-trace.js +66 -0
  159. package/dist/learning/reasoning-trace.js.map +1 -1
  160. package/dist/learning/resilient-call.d.ts.map +1 -1
  161. package/dist/learning/resilient-call.js +2 -1
  162. package/dist/learning/resilient-call.js.map +1 -1
  163. package/dist/learning/retrieval.d.ts.map +1 -1
  164. package/dist/learning/retrieval.js +2 -1
  165. package/dist/learning/retrieval.js.map +1 -1
  166. package/dist/learning/seeded-benchmark.d.ts +160 -0
  167. package/dist/learning/seeded-benchmark.d.ts.map +1 -0
  168. package/dist/learning/seeded-benchmark.js +321 -0
  169. package/dist/learning/seeded-benchmark.js.map +1 -0
  170. package/dist/learning/seeded-bugs.d.ts +142 -0
  171. package/dist/learning/seeded-bugs.d.ts.map +1 -0
  172. package/dist/learning/seeded-bugs.js +535 -0
  173. package/dist/learning/seeded-bugs.js.map +1 -0
  174. package/dist/learning/step-checkpoint.d.ts +127 -0
  175. package/dist/learning/step-checkpoint.d.ts.map +1 -0
  176. package/dist/learning/step-checkpoint.js +244 -0
  177. package/dist/learning/step-checkpoint.js.map +1 -0
  178. package/dist/nlu/intent-confirm.d.ts +23 -1
  179. package/dist/nlu/intent-confirm.d.ts.map +1 -1
  180. package/dist/nlu/intent-confirm.js +85 -2
  181. package/dist/nlu/intent-confirm.js.map +1 -1
  182. package/dist/nlu/learnings.d.ts +7 -0
  183. package/dist/nlu/learnings.d.ts.map +1 -1
  184. package/dist/nlu/learnings.js +7 -0
  185. package/dist/nlu/learnings.js.map +1 -1
  186. package/dist/observability/debug-log.d.ts +250 -0
  187. package/dist/observability/debug-log.d.ts.map +1 -0
  188. package/dist/observability/debug-log.js +500 -0
  189. package/dist/observability/debug-log.js.map +1 -0
  190. package/dist/observability/event-bus.d.ts.map +1 -1
  191. package/dist/observability/event-bus.js +4 -1
  192. package/dist/observability/event-bus.js.map +1 -1
  193. package/dist/observability/otel.d.ts +278 -0
  194. package/dist/observability/otel.d.ts.map +1 -0
  195. package/dist/observability/otel.js +590 -0
  196. package/dist/observability/otel.js.map +1 -0
  197. package/dist/parity/drivers.d.ts +99 -0
  198. package/dist/parity/drivers.d.ts.map +1 -0
  199. package/dist/parity/drivers.js +1362 -0
  200. package/dist/parity/drivers.js.map +1 -0
  201. package/dist/parity/graph.d.ts +73 -0
  202. package/dist/parity/graph.d.ts.map +1 -0
  203. package/dist/parity/graph.js +162 -0
  204. package/dist/parity/graph.js.map +1 -0
  205. package/dist/parity/matrix.d.ts +105 -0
  206. package/dist/parity/matrix.d.ts.map +1 -0
  207. package/dist/parity/matrix.js +352 -0
  208. package/dist/parity/matrix.js.map +1 -0
  209. package/dist/parity/observation.d.ts +444 -0
  210. package/dist/parity/observation.d.ts.map +1 -0
  211. package/dist/parity/observation.js +333 -0
  212. package/dist/parity/observation.js.map +1 -0
  213. package/dist/parity/scenarios.d.ts +229 -0
  214. package/dist/parity/scenarios.d.ts.map +1 -0
  215. package/dist/parity/scenarios.js +175 -0
  216. package/dist/parity/scenarios.js.map +1 -0
  217. package/dist/parity/surfaces.d.ts +122 -0
  218. package/dist/parity/surfaces.d.ts.map +1 -0
  219. package/dist/parity/surfaces.js +190 -0
  220. package/dist/parity/surfaces.js.map +1 -0
  221. package/dist/runtime/fault-injection.d.ts +173 -0
  222. package/dist/runtime/fault-injection.d.ts.map +1 -0
  223. package/dist/runtime/fault-injection.js +281 -0
  224. package/dist/runtime/fault-injection.js.map +1 -0
  225. package/dist/tools/child-agent-entry.d.ts +23 -0
  226. package/dist/tools/child-agent-entry.d.ts.map +1 -0
  227. package/dist/tools/child-agent-entry.js +129 -0
  228. package/dist/tools/child-agent-entry.js.map +1 -0
  229. package/dist/tools/child-agent-runtime.d.ts +124 -0
  230. package/dist/tools/child-agent-runtime.d.ts.map +1 -0
  231. package/dist/tools/child-agent-runtime.js +704 -0
  232. package/dist/tools/child-agent-runtime.js.map +1 -0
  233. package/dist/tools/coding-tools.d.ts.map +1 -1
  234. package/dist/tools/coding-tools.js +82 -10
  235. package/dist/tools/coding-tools.js.map +1 -1
  236. package/dist/tools/delegation-system.d.ts +31 -0
  237. package/dist/tools/delegation-system.d.ts.map +1 -1
  238. package/dist/tools/delegation-system.js +70 -9
  239. package/dist/tools/delegation-system.js.map +1 -1
  240. package/dist/tools/extract/docx.d.ts +27 -0
  241. package/dist/tools/extract/docx.d.ts.map +1 -0
  242. package/dist/tools/extract/docx.js +48 -0
  243. package/dist/tools/extract/docx.js.map +1 -0
  244. package/dist/tools/extract/html-text.d.ts +27 -0
  245. package/dist/tools/extract/html-text.d.ts.map +1 -0
  246. package/dist/tools/extract/html-text.js +86 -0
  247. package/dist/tools/extract/html-text.js.map +1 -0
  248. package/dist/tools/extract/pdf-ocr.d.ts +58 -0
  249. package/dist/tools/extract/pdf-ocr.d.ts.map +1 -0
  250. package/dist/tools/extract/pdf-ocr.js +116 -0
  251. package/dist/tools/extract/pdf-ocr.js.map +1 -0
  252. package/dist/tools/extract/pdf.d.ts +65 -0
  253. package/dist/tools/extract/pdf.d.ts.map +1 -0
  254. package/dist/tools/extract/pdf.js +197 -0
  255. package/dist/tools/extract/pdf.js.map +1 -0
  256. package/dist/tools/extract/pptx.d.ts +32 -0
  257. package/dist/tools/extract/pptx.d.ts.map +1 -0
  258. package/dist/tools/extract/pptx.js +77 -0
  259. package/dist/tools/extract/pptx.js.map +1 -0
  260. package/dist/tools/extract/xlsx.d.ts +47 -0
  261. package/dist/tools/extract/xlsx.d.ts.map +1 -0
  262. package/dist/tools/extract/xlsx.js +111 -0
  263. package/dist/tools/extract/xlsx.js.map +1 -0
  264. package/dist/tools/finding-tool.d.ts +76 -0
  265. package/dist/tools/finding-tool.d.ts.map +1 -0
  266. package/dist/tools/finding-tool.js +125 -0
  267. package/dist/tools/finding-tool.js.map +1 -0
  268. package/dist/tools/messaging-tools.d.ts +41 -11
  269. package/dist/tools/messaging-tools.d.ts.map +1 -1
  270. package/dist/tools/messaging-tools.js +104 -55
  271. package/dist/tools/messaging-tools.js.map +1 -1
  272. package/dist/tools/neutts-synth.d.ts +27 -3
  273. package/dist/tools/neutts-synth.d.ts.map +1 -1
  274. package/dist/tools/neutts-synth.js +57 -13
  275. package/dist/tools/neutts-synth.js.map +1 -1
  276. package/dist/tools/pipeline-tool.d.ts +43 -1
  277. package/dist/tools/pipeline-tool.d.ts.map +1 -1
  278. package/dist/tools/pipeline-tool.js +13 -2
  279. package/dist/tools/pipeline-tool.js.map +1 -1
  280. package/dist/tools/read-extract.d.ts +116 -45
  281. package/dist/tools/read-extract.d.ts.map +1 -1
  282. package/dist/tools/read-extract.js +494 -158
  283. package/dist/tools/read-extract.js.map +1 -1
  284. package/dist/tools/registry.d.ts +2 -2
  285. package/dist/tools/registry.d.ts.map +1 -1
  286. package/dist/tools/registry.js +152 -23
  287. package/dist/tools/registry.js.map +1 -1
  288. package/dist/tools/subagent-refusal.d.ts +15 -0
  289. package/dist/tools/subagent-refusal.d.ts.map +1 -0
  290. package/dist/tools/subagent-refusal.js +18 -0
  291. package/dist/tools/subagent-refusal.js.map +1 -0
  292. package/dist/tools/subagent-spawner.d.ts +122 -0
  293. package/dist/tools/subagent-spawner.d.ts.map +1 -1
  294. package/dist/tools/subagent-spawner.js +249 -28
  295. package/dist/tools/subagent-spawner.js.map +1 -1
  296. package/dist/tools/tool-hooks.d.ts +177 -0
  297. package/dist/tools/tool-hooks.d.ts.map +1 -0
  298. package/dist/tools/tool-hooks.js +427 -0
  299. package/dist/tools/tool-hooks.js.map +1 -0
  300. package/dist/tools/tool-loop.d.ts +82 -0
  301. package/dist/tools/tool-loop.d.ts.map +1 -1
  302. package/dist/tools/tool-loop.js +167 -9
  303. package/dist/tools/tool-loop.js.map +1 -1
  304. package/dist/tools/tool-refusal.d.ts +68 -0
  305. package/dist/tools/tool-refusal.d.ts.map +1 -0
  306. package/dist/tools/tool-refusal.js +78 -0
  307. package/dist/tools/tool-refusal.js.map +1 -0
  308. package/dist/tools/toolsets.d.ts +8 -0
  309. package/dist/tools/toolsets.d.ts.map +1 -1
  310. package/dist/tools/toolsets.js +12 -2
  311. package/dist/tools/toolsets.js.map +1 -1
  312. package/dist/tools/vision-tools.d.ts +88 -83
  313. package/dist/tools/vision-tools.d.ts.map +1 -1
  314. package/dist/tools/vision-tools.js +134 -103
  315. package/dist/tools/vision-tools.js.map +1 -1
  316. package/dist/tools/worktree.d.ts +210 -0
  317. package/dist/tools/worktree.d.ts.map +1 -0
  318. package/dist/tools/worktree.js +374 -0
  319. package/dist/tools/worktree.js.map +1 -0
  320. package/dist/utils/format.d.ts +3 -0
  321. package/dist/utils/format.d.ts.map +1 -0
  322. package/dist/utils/format.js +32 -0
  323. package/dist/utils/format.js.map +1 -0
  324. package/dist/web-dashboard/attachment-extract.d.ts +64 -0
  325. package/dist/web-dashboard/attachment-extract.d.ts.map +1 -0
  326. package/dist/web-dashboard/attachment-extract.js +154 -0
  327. package/dist/web-dashboard/attachment-extract.js.map +1 -0
  328. package/dist/web-dashboard/chat-console.d.ts +108 -1
  329. package/dist/web-dashboard/chat-console.d.ts.map +1 -1
  330. package/dist/web-dashboard/chat-console.js +36 -0
  331. package/dist/web-dashboard/chat-console.js.map +1 -1
  332. package/dist/web-dashboard/hub-data.d.ts +37 -0
  333. package/dist/web-dashboard/hub-data.d.ts.map +1 -1
  334. package/dist/web-dashboard/hub-data.js +61 -1
  335. package/dist/web-dashboard/hub-data.js.map +1 -1
  336. package/dist/web-dashboard/server.d.ts +14 -0
  337. package/dist/web-dashboard/server.d.ts.map +1 -1
  338. package/dist/web-dashboard/server.js +247 -13
  339. package/dist/web-dashboard/server.js.map +1 -1
  340. package/dist/web-dashboard/src/types.d.ts +196 -48
  341. package/dist/web-dashboard/src/types.d.ts.map +1 -1
  342. package/package.json +18 -3
  343. package/src/web-dashboard/public/assets/{index-Cyd6tIew.css → index-XJjj2cBX.css} +1 -1
  344. package/src/web-dashboard/public/assets/index-YWF9FpwQ.js +207 -0
  345. package/src/web-dashboard/public/assets/index-YWF9FpwQ.js.map +1 -0
  346. package/src/web-dashboard/public/index.html +2 -2
  347. package/dist/tools/child-agent-worker.js +0 -212
  348. package/src/web-dashboard/public/assets/index-CxDj7p6i.js +0 -207
  349. package/src/web-dashboard/public/assets/index-CxDj7p6i.js.map +0 -1
@@ -0,0 +1,500 @@
1
+ /**
2
+ * WS2 (#24) — the session debug log you attach to a bug report.
3
+ *
4
+ * WHY THIS EXISTS, and what it is NOT. This repository's bug reports keep
5
+ * arriving as prose: "the dashboard did not answer", "the gateway sent the
6
+ * wrong thing", "it worked yesterday". Every one of them is then re-litigated
7
+ * by reading code, because the failing run left nothing behind that records
8
+ * WHICH BACKEND SERVED IT. The trace store (`learning/reasoning-trace.ts`) is
9
+ * the audit of what the MODEL was asked; the DAG bridge and the gateway log are
10
+ * per-surface records. None of them is the thing a user can attach to a bug
11
+ * report, and none of them is reachable the same way from all five surfaces.
12
+ *
13
+ * So a session debug log is deliberately boring: a plain-text file, ordered,
14
+ * with a header that names the surface and THE BACKEND — provider, model,
15
+ * transport, engine — before a single line of detail. If a bug report can only
16
+ * carry one thing, that header is the thing that makes it actionable.
17
+ *
18
+ * FOUR RULES, each closing a way a debug log becomes worse than none:
19
+ *
20
+ * 1. OPT-IN, AND CHEAP WHEN OFF. `NUVIRA_DEBUG_LOG=1` turns it on; with it off
21
+ * `sessionDebugLog()` returns `null` and every call site's `?.` makes the
22
+ * cost one boolean check. A logging path that is on by default is a disk
23
+ * leak and a privacy hazard wearing a helpful face.
24
+ *
25
+ * 2. REDACTED BY CONSTRUCTION. A log we ask a user to attach to a bug report
26
+ * is a log that will be pasted into an issue tracker. Every event line is
27
+ * scrubbed with the SAME `scrubSecrets` the gateway log uses (reused, not
28
+ * re-implemented: two regex lists drift, and the one that drifts is the one
29
+ * that leaks). The header carries the backend and versions — never a key.
30
+ *
31
+ * 3. BOUNDED. Events are capped, each line is truncated to a preview, and the
32
+ * file is capped by bytes. An instrument must never be the reason a run
33
+ * dies, and a nightly-failing turn must not fill a disk.
34
+ *
35
+ * 4. WRITTEN ONCE, AT CLOSE. The header has to name the backend that served
36
+ * the turn, and the backend is only known at the end (the loop may fail
37
+ * over between providers). So events buffer in memory and `write()`
38
+ * produces the whole file — header first — at the end of the turn. That
39
+ * also means a crashed process leaves NO half-written log, which is the
40
+ * honest outcome: a log whose header lies about the backend is worse than
41
+ * no log.
42
+ *
43
+ * The five surfaces each open one at their own turn seam (`cli/chat.ts`,
44
+ * `cli/loop-executor.ts`, `tools/child-agent-runtime.ts`, with the dashboard
45
+ * console and the gateway passing their identity down to the shared chat
46
+ * engine), and the parity harness reads the file back and asserts every
47
+ * surface's header names the SAME backend — the capability
48
+ * `debug-log@<surface>` is proved against.
49
+ *
50
+ * A log that a surface wrote into a directory the user has to find is only half
51
+ * the artifact. So a surface that HAS a conversation identity records it
52
+ * (`session`), which turns the file from readable into FINDABLE: the dashboard
53
+ * server can answer "the bundle for this chat" by looking up the logs whose
54
+ * header names that conversation, instead of guessing from timestamps and
55
+ * handing over someone else's. A surface with no such identity (the CLI's
56
+ * one-shot path) records nothing rather than inventing an id.
57
+ */
58
+ import { existsSync, mkdirSync, readFileSync, readdirSync, statSync, writeFileSync } from 'node:fs';
59
+ import { join } from 'node:path';
60
+ import { resolveNuviraDataPath } from '../config/paths.js';
61
+ import { scrubSecrets } from '../gateway/gateway-log.js';
62
+ /** The env var that turns session debug logging on (`NUVIRA_DEBUG_LOG=1`). */
63
+ export const DEBUG_LOG_ENV = 'DEBUG_LOG';
64
+ /** Optional directory override for the log files (`NUVIRA_DEBUG_LOG_DIR`). */
65
+ export const DEBUG_LOG_DIR_ENV = 'DEBUG_LOG_DIR';
66
+ /** Hard cap on the written file. Bounded on purpose — see rule 3 above. */
67
+ export const DEBUG_LOG_MAX_BYTES = 512 * 1024;
68
+ /** Per-line detail preview cap. Never the whole payload. */
69
+ export const DEBUG_LOG_PREVIEW_CHARS = 300;
70
+ /** Event cap. Beyond it the OLDEST events are dropped, and the count is stated. */
71
+ export const DEBUG_LOG_MAX_EVENTS = 2_000;
72
+ /** Cap on a session id as a FILENAME component, so a long id cannot fail a write. */
73
+ export const DEBUG_LOG_SESSION_CHARS = 48;
74
+ /** Omit a value from the header rather than writing `undefined`/`null` as a lie. */
75
+ function orNull(value) {
76
+ return typeof value === 'string' && value.trim() ? value.trim() : null;
77
+ }
78
+ /**
79
+ * Read the running version from the repo's `package.json`.
80
+ *
81
+ * Best-effort and cached: a debug log must never break a turn over a missing
82
+ * file (the published `dist/` layout resolves `../../package.json` the same way
83
+ * `cli-program.ts` already does), and a wrong-but-absent version is honest
84
+ * where a thrown error is not.
85
+ */
86
+ let cachedVersion;
87
+ function agentVersion() {
88
+ if (cachedVersion !== undefined)
89
+ return cachedVersion;
90
+ try {
91
+ const pkg = JSON.parse(readFileSync(new URL('../../package.json', import.meta.url), 'utf-8'));
92
+ cachedVersion = orNull(pkg.version);
93
+ }
94
+ catch {
95
+ cachedVersion = null;
96
+ }
97
+ return cachedVersion;
98
+ }
99
+ /**
100
+ * Is session debug logging on?
101
+ *
102
+ * `NUVIRA_DEBUG_LOG` (or legacy `BUFF_DEBUG_LOG`) set to anything other than
103
+ * `0` / `false` / `off` enables it. Deliberately not "truthy string" only: a
104
+ * user who writes `NUVIRA_DEBUG_LOG=false` in an `.env` means off.
105
+ */
106
+ export function debugLoggingEnabled(env = process.env) {
107
+ const raw = env.NUVIRA_DEBUG_LOG ?? env.BUFF_DEBUG_LOG;
108
+ if (raw === undefined)
109
+ return false;
110
+ const value = raw.trim().toLowerCase();
111
+ return value !== '' && value !== '0' && value !== 'false' && value !== 'off' && value !== 'no';
112
+ }
113
+ /**
114
+ * Where the log files live.
115
+ *
116
+ * `NUVIRA_DEBUG_LOG_DIR` wins when set; otherwise `<config dir>/debug-logs`
117
+ * through `resolveNuviraDataPath`, so an isolated profile (tests, CI, the
118
+ * parity harness) can never write into the developer's real `~/.nuvira`.
119
+ */
120
+ export function debugLogDir(env = process.env) {
121
+ // Dual-read (NUVIRA_ then legacy BUFF_), matching every other path resolver.
122
+ // Dual-read (NUVIRA_ then legacy BUFF_), matching every other path resolver. A
123
+ // BLANK value counts as unset rather than as `''` — `||` not `??` — so an
124
+ // empty `NUVIRA_DEBUG_LOG_DIR` still lets a legacy override through.
125
+ const override = env[`NUVIRA_${DEBUG_LOG_DIR_ENV}`]?.trim() || env[`BUFF_${DEBUG_LOG_DIR_ENV}`]?.trim();
126
+ if (override)
127
+ return override;
128
+ // `<config dir>/debug-logs` — so an isolated profile never writes into the
129
+ // developer's real `~/.nuvira`.
130
+ return resolveNuviraDataPath('debug-logs');
131
+ }
132
+ /** A filename-safe surface label (`cli-chat` → `cli-chat`; odd input → dashes). */
133
+ function safeLabel(value) {
134
+ return value.trim().toLowerCase().replace(/[^a-z0-9._-]+/g, '-').replace(/^-+|-+$/g, '') || 'unknown';
135
+ }
136
+ /**
137
+ * One session's debug log, buffered and written once.
138
+ *
139
+ * Deliberately a class rather than a bag of functions: the buffered state IS
140
+ * the object, and a surface that opens one and forgets to write it produces no
141
+ * file at all — which the parity harness reads as `written: false` rather than
142
+ * as agreement.
143
+ */
144
+ export class SessionDebugLog {
145
+ id;
146
+ startedAt;
147
+ surface;
148
+ goal;
149
+ backend;
150
+ extra = [];
151
+ entries = [];
152
+ dropped = 0;
153
+ truncatedLines = 0;
154
+ dir;
155
+ now;
156
+ /** The conversation this turn belongs to, or null (see `DebugLogHeader.session`). */
157
+ session;
158
+ writtenPath = null;
159
+ constructor(opts) {
160
+ this.surface = safeLabel(opts.surface);
161
+ this.goal = orNull(opts.goal) ? scrubSecrets(cap(String(opts.goal), DEBUG_LOG_PREVIEW_CHARS)) : null;
162
+ // A session id is a FILENAME component, so it is sanitised and length-capped
163
+ // here rather than trusted: an id long enough to exceed the filesystem's
164
+ // name limit would otherwise turn every turn into a failed write.
165
+ this.session = orNull(opts.session) ? cap(safeLabel(String(opts.session)), DEBUG_LOG_SESSION_CHARS) : null;
166
+ this.backend = { ...(opts.backend ?? {}) };
167
+ this.now = opts.now ?? (() => Date.now());
168
+ this.startedAt = this.now();
169
+ this.dir = opts.dir === undefined ? debugLogDir() : opts.dir;
170
+ this.id = `${this.surface}-${this.session ? `${this.session}-` : ''}${this.startedAt}`;
171
+ }
172
+ /** The backend that served the turn. Set as it is learned; last call wins. */
173
+ backendOf(backend) {
174
+ this.backend = { ...this.backend, ...backend };
175
+ return this;
176
+ }
177
+ /**
178
+ * Preview one detail value: flattened, cut to the cap, then redacted.
179
+ *
180
+ * The cut is counted BEFORE the scrub (the scrub only shortens), so the
181
+ * "truncated" line in the file reports how much was actually lost.
182
+ */
183
+ detailText(value) {
184
+ const flat = previewOf(value);
185
+ const capped = cap(flat, DEBUG_LOG_PREVIEW_CHARS);
186
+ if (capped.length < flat.length)
187
+ this.truncatedLines += 1;
188
+ return scrubSecrets(capped);
189
+ }
190
+ /** One ordered event. `detail` is previewed and redacted. */
191
+ event(name, detail) {
192
+ const rendered = detail === undefined ? undefined : this.detailText(detail);
193
+ this.entries.push({
194
+ at: this.now(),
195
+ name: scrubSecrets(name),
196
+ ...(rendered ? { detail: rendered } : {}),
197
+ });
198
+ if (this.entries.length > DEBUG_LOG_MAX_EVENTS) {
199
+ // Drop the OLDEST: the most recent events are the ones a failure report
200
+ // reads, exactly like the trace store's tail-keeping caps.
201
+ this.entries.shift();
202
+ this.dropped += 1;
203
+ }
204
+ return this;
205
+ }
206
+ /** A non-secret header field (a version, a channel, a bound). */
207
+ detail(key, value) {
208
+ if (value === undefined || value === null || value === '')
209
+ return this;
210
+ this.extra.push([scrubSecrets(key), this.detailText(value)]);
211
+ return this;
212
+ }
213
+ /** The attachable text: header first, then the events in order. */
214
+ render() {
215
+ const b = this.backend;
216
+ const lines = [
217
+ '# nuvira session debug log — safe to attach to a bug report',
218
+ '# credentials are redacted; memory and prompts are previews, not payloads',
219
+ `# surface: ${this.surface}`,
220
+ // Written only when the surface HAS a conversation identity: an absent key
221
+ // reads as "not reported", where `unknown` would read as the id "unknown".
222
+ ...(this.session ? [`# session: ${this.session}`] : []),
223
+ `# engine: ${orNull(b.engine) ?? 'unknown'}`,
224
+ `# backend.provider: ${orNull(b.provider) ?? 'unknown'}`,
225
+ `# backend.model: ${orNull(b.model) ?? 'unknown'}`,
226
+ `# backend.transport: ${orNull(b.transport) ?? 'unknown'}`,
227
+ `# version: ${agentVersion() ?? 'unknown'}`,
228
+ `# started: ${new Date(this.startedAt).toISOString()}`,
229
+ `# pid: ${process.pid}`,
230
+ `# platform: ${process.platform} ${process.arch} · node ${process.version}`,
231
+ `# events: ${this.entries.length}${this.dropped > 0 ? ` (+${this.dropped} older dropped)` : ''}`,
232
+ ...(this.truncatedLines > 0 ? [`# truncated: ${this.truncatedLines} event(s) were longer than ${DEBUG_LOG_PREVIEW_CHARS} chars`] : []),
233
+ ...(this.goal ? [`# goal: ${JSON.stringify(this.goal)}`] : []),
234
+ ...this.extra.map(([key, value]) => `# ${key}: ${value}`),
235
+ '# ' + '-'.repeat(58),
236
+ ];
237
+ for (const entry of this.entries) {
238
+ lines.push(`${new Date(entry.at).toISOString()} ${entry.name}${entry.detail ? ` ${entry.detail}` : ''}`);
239
+ }
240
+ return `${lines.join('\n')}\n`;
241
+ }
242
+ /**
243
+ * Write the file. Returns the path, or null when logging is disabled, no
244
+ * directory was resolved, or the write failed — every one of which is a
245
+ * normal outcome a caller must not have to handle.
246
+ */
247
+ write() {
248
+ if (!this.dir)
249
+ return null;
250
+ try {
251
+ if (!existsSync(this.dir))
252
+ mkdirSync(this.dir, { recursive: true });
253
+ const path = join(this.dir, `${this.id}.log`);
254
+ writeFileSync(path, cap(this.render(), DEBUG_LOG_MAX_BYTES), 'utf-8');
255
+ this.writtenPath = path;
256
+ return path;
257
+ }
258
+ catch {
259
+ // Best-effort: a debug log must never break the run it observes.
260
+ return null;
261
+ }
262
+ }
263
+ /** The path after a successful `write()` (null before it / on failure). */
264
+ path() {
265
+ return this.writtenPath;
266
+ }
267
+ }
268
+ /**
269
+ * Open a session debug log, or `null` when logging is off (or in a unit test
270
+ * that passed no directory). Callers use `?.` throughout, so the off path costs
271
+ * one boolean.
272
+ */
273
+ export function sessionDebugLog(opts) {
274
+ const env = opts.env ?? process.env;
275
+ if (!debugLoggingEnabled(env))
276
+ return null;
277
+ return new SessionDebugLog({
278
+ surface: opts.surface,
279
+ ...(opts.goal !== undefined ? { goal: opts.goal } : {}),
280
+ ...(opts.session !== undefined ? { session: opts.session } : {}),
281
+ ...(opts.backend !== undefined ? { backend: opts.backend } : {}),
282
+ dir: opts.dir === undefined ? debugLogDir(env) : opts.dir,
283
+ ...(opts.now ? { now: opts.now } : {}),
284
+ });
285
+ }
286
+ /** Cut a string to `max` chars, marking the cut so a reader knows it happened. */
287
+ function cap(value, max) {
288
+ return value.length <= max ? value : `${value.slice(0, Math.max(0, max - 1))}…`;
289
+ }
290
+ /** Render any detail value to one flat, bounded line. */
291
+ function previewOf(value) {
292
+ if (typeof value === 'string')
293
+ return value.replace(/\s+/g, ' ').trim();
294
+ if (typeof value === 'number' || typeof value === 'boolean' || value === null)
295
+ return String(value);
296
+ if (Array.isArray(value))
297
+ return value.map((v) => previewOf(v)).join(', ');
298
+ try {
299
+ return JSON.stringify(value, replacerForPreview) ?? String(value);
300
+ }
301
+ catch {
302
+ return String(value);
303
+ }
304
+ }
305
+ /** Bounded JSON: long strings are cut before serialising, so one huge arg cannot blow the line. */
306
+ function replacerForPreview(_key, value) {
307
+ if (typeof value === 'string')
308
+ return value.length > 120 ? `${value.slice(0, 119)}…` : value;
309
+ return value;
310
+ }
311
+ /**
312
+ * Parse a rendered log's header.
313
+ *
314
+ * Reads the leading `# key: value` comment block only, and returns null when
315
+ * `surface` is absent — the one field every header must have. Unknown keys are
316
+ * ignored rather than rejected, so an older reader can still open a newer log.
317
+ */
318
+ export function parseDebugLogHeader(text) {
319
+ const header = {
320
+ surface: null,
321
+ session: null,
322
+ engine: null,
323
+ provider: null,
324
+ model: null,
325
+ transport: null,
326
+ version: null,
327
+ startedAt: null,
328
+ pid: null,
329
+ platform: null,
330
+ };
331
+ for (const line of text.split('\n')) {
332
+ if (!line.startsWith('#'))
333
+ break;
334
+ const match = /^#\s+(?:backend\.)?([a-z_]+):\s*(.*)$/i.exec(line);
335
+ if (!match)
336
+ continue;
337
+ const [, key, value] = match;
338
+ const trimmed = value.trim();
339
+ switch (key.toLowerCase()) {
340
+ case 'surface':
341
+ header.surface = trimmed || null;
342
+ break;
343
+ case 'session':
344
+ header.session = namedOrNull(trimmed);
345
+ break;
346
+ case 'engine':
347
+ header.engine = namedOrNull(trimmed);
348
+ break;
349
+ case 'provider':
350
+ header.provider = namedOrNull(trimmed);
351
+ break;
352
+ case 'model':
353
+ header.model = namedOrNull(trimmed);
354
+ break;
355
+ case 'transport':
356
+ header.transport = namedOrNull(trimmed);
357
+ break;
358
+ case 'version':
359
+ header.version = namedOrNull(trimmed);
360
+ break;
361
+ case 'pid':
362
+ header.pid = Number.isFinite(Number(trimmed)) ? Number(trimmed) : null;
363
+ break;
364
+ case 'platform':
365
+ header.platform = orNull(trimmed);
366
+ break;
367
+ case 'started': {
368
+ const at = Date.parse(trimmed);
369
+ header.startedAt = Number.isFinite(at) ? at : null;
370
+ break;
371
+ }
372
+ default: break;
373
+ }
374
+ }
375
+ return header.surface ? header : null;
376
+ }
377
+ /**
378
+ * A named header value, or null.
379
+ *
380
+ * `render()` writes the literal `unknown` when a surface never learned a field.
381
+ * That is the right thing to READ in the file and the wrong thing to COMPARE:
382
+ * "two surfaces both said unknown" must not read as agreement about a backend,
383
+ * so the parser maps the sentinel back to null and the comparison sees "not
384
+ * named" for what it is.
385
+ */
386
+ function namedOrNull(value) {
387
+ const trimmed = value.trim();
388
+ if (!trimmed || trimmed.toLowerCase() === 'unknown')
389
+ return null;
390
+ return trimmed;
391
+ }
392
+ /** Every log file in `dir`, newest first. Missing directory = empty list. */
393
+ export function listDebugLogs(dir = debugLogDir()) {
394
+ try {
395
+ if (!existsSync(dir))
396
+ return [];
397
+ return readdirSync(dir)
398
+ .filter((name) => name.endsWith('.log'))
399
+ .map((name) => {
400
+ const path = join(dir, name);
401
+ return { path, header: parseDebugLogHeader(readFileSafe(path) ?? ''), at: statSafe(path) };
402
+ })
403
+ .sort((a, b) => b.at - a.at)
404
+ .map(({ path, header }) => ({ path, header }));
405
+ }
406
+ catch {
407
+ return [];
408
+ }
409
+ }
410
+ /**
411
+ * The newest log a given surface wrote, or null.
412
+ *
413
+ * This is how the parity harness reads a surface's OWN durable artifact — the
414
+ * same reasoning the gateway driver uses to read `inbound.chat` from the
415
+ * gateway log rather than trusting a return value.
416
+ */
417
+ export function readLatestDebugLog(surface, dir = debugLogDir()) {
418
+ const want = safeLabel(surface);
419
+ for (const file of listDebugLogs(dir)) {
420
+ if (file.header?.surface !== want)
421
+ continue;
422
+ const text = readFileSafe(file.path);
423
+ if (text)
424
+ return { path: file.path, header: file.header, text };
425
+ }
426
+ return null;
427
+ }
428
+ /**
429
+ * Every log a given conversation wrote, OLDEST FIRST — the findable half.
430
+ *
431
+ * This is what lets the dashboard answer "the debug log for the chat I am
432
+ * looking at" without guessing. Two rules make it safe to expose:
433
+ *
434
+ * 1. SELECTED BY THE LOG'S OWN HEADER, never by recency. "The newest few logs"
435
+ * would hand a user somebody else's conversation — with a concurrent turn in
436
+ * another tab, that is the common case, not the edge case.
437
+ *
438
+ * 2. OLDEST FIRST, because a bundle is read top to bottom as the story of what
439
+ * happened, and a single turn's log already reads that way internally. The
440
+ * newest-first order `listDebugLogs` uses is right for "what just happened"
441
+ * and wrong for this.
442
+ *
443
+ * A file that cannot be read or parsed is skipped rather than failing the whole
444
+ * bundle: one unreadable turn must not cost the user the other four.
445
+ */
446
+ export function debugLogsForSession(sessionId, dir = debugLogDir()) {
447
+ const want = cap(safeLabel(String(sessionId)), DEBUG_LOG_SESSION_CHARS);
448
+ if (!want)
449
+ return [];
450
+ const out = [];
451
+ try {
452
+ if (!existsSync(dir))
453
+ return [];
454
+ for (const name of readdirSync(dir)) {
455
+ if (!name.endsWith('.log'))
456
+ continue;
457
+ const path = join(dir, name);
458
+ const text = readFileSafe(path);
459
+ if (!text)
460
+ continue;
461
+ const header = parseDebugLogHeader(text);
462
+ if (!header || header.session !== want)
463
+ continue;
464
+ out.push({ path, header, text });
465
+ }
466
+ }
467
+ catch {
468
+ return out;
469
+ }
470
+ // The header's own `started`, not the file's mtime: a copy, a backup restore
471
+ // or a `touch` rewrites mtime and would silently reorder the story.
472
+ return out.sort((a, b) => (a.header.startedAt ?? Number.MAX_SAFE_INTEGER) -
473
+ (b.header.startedAt ?? Number.MAX_SAFE_INTEGER));
474
+ }
475
+ function readFileSafe(path) {
476
+ try {
477
+ return readFileSync(path, 'utf-8');
478
+ }
479
+ catch {
480
+ return null;
481
+ }
482
+ }
483
+ function statSafe(path) {
484
+ try {
485
+ return statSync(path).mtimeMs;
486
+ }
487
+ catch {
488
+ return 0;
489
+ }
490
+ }
491
+ /**
492
+ * A one-line notice a surface can print so the user knows a log exists to
493
+ * attach. Kept here so all five surfaces word it identically.
494
+ */
495
+ export function debugLogNotice(surface, path) {
496
+ if (!path)
497
+ return null;
498
+ return `🐞 ${surface}: session debug log written to ${path} — attach it to a bug report.`;
499
+ }
500
+ //# sourceMappingURL=debug-log.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"debug-log.js","sourceRoot":"","sources":["../../src/observability/debug-log.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwDG;AAEH,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,WAAW,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACpG,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAEzD,8EAA8E;AAC9E,MAAM,CAAC,MAAM,aAAa,GAAG,WAAW,CAAC;AACzC,8EAA8E;AAC9E,MAAM,CAAC,MAAM,iBAAiB,GAAG,eAAe,CAAC;AACjD,2EAA2E;AAC3E,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAG,GAAG,IAAI,CAAC;AAC9C,4DAA4D;AAC5D,MAAM,CAAC,MAAM,uBAAuB,GAAG,GAAG,CAAC;AAC3C,mFAAmF;AACnF,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAK,CAAC;AAC1C,qFAAqF;AACrF,MAAM,CAAC,MAAM,uBAAuB,GAAG,EAAE,CAAC;AA8C1C,oFAAoF;AACpF,SAAS,MAAM,CAAC,KAAc;IAC5B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AACzE,CAAC;AAED;;;;;;;GAOG;AACH,IAAI,aAAwC,CAAC;AAC7C,SAAS,YAAY;IACnB,IAAI,aAAa,KAAK,SAAS;QAAE,OAAO,aAAa,CAAC;IACtD,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CACpB,YAAY,CAAC,IAAI,GAAG,CAAC,oBAAoB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAC7C,CAAC;QAC3B,aAAa,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACtC,CAAC;IAAC,MAAM,CAAC;QACP,aAAa,GAAG,IAAI,CAAC;IACvB,CAAC;IACD,OAAO,aAAa,CAAC;AACvB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,mBAAmB,CAAC,MAAyB,OAAO,CAAC,GAAG;IACtE,MAAM,GAAG,GAAG,GAAG,CAAC,gBAAgB,IAAI,GAAG,CAAC,cAAc,CAAC;IACvD,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IACpC,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACvC,OAAO,KAAK,KAAK,EAAE,IAAI,KAAK,KAAK,GAAG,IAAI,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,IAAI,CAAC;AACjG,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,WAAW,CAAC,MAAyB,OAAO,CAAC,GAAG;IAC9D,6EAA6E;IAC7E,+EAA+E;IAC/E,0EAA0E;IAC1E,qEAAqE;IACrE,MAAM,QAAQ,GAAG,GAAG,CAAC,UAAU,iBAAiB,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,GAAG,CAAC,QAAQ,iBAAiB,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC;IACxG,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAC9B,2EAA2E;IAC3E,gCAAgC;IAChC,OAAO,qBAAqB,CAAC,YAAY,CAAC,CAAC;AAC7C,CAAC;AAED,mFAAmF;AACnF,SAAS,SAAS,CAAC,KAAa;IAC9B,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,IAAI,SAAS,CAAC;AACxG,CAAC;AASD;;;;;;;GAOG;AACH,MAAM,OAAO,eAAe;IACjB,EAAE,CAAS;IACX,SAAS,CAAS;IACV,OAAO,CAAS;IAChB,IAAI,CAAgB;IAC7B,OAAO,CAAkB;IAChB,KAAK,GAA4B,EAAE,CAAC;IACpC,OAAO,GAAoB,EAAE,CAAC;IACvC,OAAO,GAAG,CAAC,CAAC;IACZ,cAAc,GAAG,CAAC,CAAC;IACV,GAAG,CAAgB;IACnB,GAAG,CAAe;IACnC,qFAAqF;IAC5E,OAAO,CAAgB;IACxB,WAAW,GAAkB,IAAI,CAAC;IAE1C,YAAY,IAA8H;QACxI,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACvC,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,uBAAuB,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACrG,6EAA6E;QAC7E,yEAAyE;QACzE,kEAAkE;QAClE,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,uBAAuB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC3G,IAAI,CAAC,OAAO,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,CAAC;QAC3C,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QAC1C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC5B,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;QAC7D,IAAI,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;IACzF,CAAC;IAED,8EAA8E;IAC9E,SAAS,CAAC,OAAwB;QAChC,IAAI,CAAC,OAAO,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,OAAO,EAAE,CAAC;QAC/C,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;OAKG;IACK,UAAU,CAAC,KAAc;QAC/B,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;QAC9B,MAAM,MAAM,GAAG,GAAG,CAAC,IAAI,EAAE,uBAAuB,CAAC,CAAC;QAClD,IAAI,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM;YAAE,IAAI,CAAC,cAAc,IAAI,CAAC,CAAC;QAC1D,OAAO,YAAY,CAAC,MAAM,CAAC,CAAC;IAC9B,CAAC;IAED,6DAA6D;IAC7D,KAAK,CAAC,IAAY,EAAE,MAAgB;QAClC,MAAM,QAAQ,GAAG,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAC5E,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;YAChB,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE;YACd,IAAI,EAAE,YAAY,CAAC,IAAI,CAAC;YACxB,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC1C,CAAC,CAAC;QACH,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,oBAAoB,EAAE,CAAC;YAC/C,wEAAwE;YACxE,2DAA2D;YAC3D,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YACrB,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC;QACpB,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,iEAAiE;IACjE,MAAM,CAAC,GAAW,EAAE,KAAc;QAChC,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,EAAE;YAAE,OAAO,IAAI,CAAC;QACvE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC7D,OAAO,IAAI,CAAC;IACd,CAAC;IAED,mEAAmE;IACnE,MAAM;QACJ,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC;QACvB,MAAM,KAAK,GAAa;YACtB,6DAA6D;YAC7D,2EAA2E;YAC3E,cAAc,IAAI,CAAC,OAAO,EAAE;YAC5B,2EAA2E;YAC3E,2EAA2E;YAC3E,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,cAAc,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACvD,aAAa,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,SAAS,EAAE;YAC5C,uBAAuB,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,SAAS,EAAE;YACxD,oBAAoB,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,SAAS,EAAE;YAClD,wBAAwB,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,SAAS,EAAE;YAC1D,cAAc,YAAY,EAAE,IAAI,SAAS,EAAE;YAC3C,cAAc,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,EAAE;YACtD,UAAU,OAAO,CAAC,GAAG,EAAE;YACvB,eAAe,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,IAAI,WAAW,OAAO,CAAC,OAAO,EAAE;YAC3E,aAAa,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,OAAO,iBAAiB,CAAC,CAAC,CAAC,EAAE,EAAE;YAChG,GAAG,CAAC,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,IAAI,CAAC,cAAc,8BAA8B,uBAAuB,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACtI,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9D,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,GAAG,KAAK,KAAK,EAAE,CAAC;YACzD,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;SACtB,CAAC;QACF,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjC,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,IAAI,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC3G,CAAC;QACD,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;IACjC,CAAC;IAED;;;;OAIG;IACH,KAAK;QACH,IAAI,CAAC,IAAI,CAAC,GAAG;YAAE,OAAO,IAAI,CAAC;QAC3B,IAAI,CAAC;YACH,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC;gBAAE,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACpE,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC;YAC9C,aAAa,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,mBAAmB,CAAC,EAAE,OAAO,CAAC,CAAC;YACtE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;YACxB,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,MAAM,CAAC;YACP,iEAAiE;YACjE,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,2EAA2E;IAC3E,IAAI;QACF,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,IAU/B;IACC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC;IACpC,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAC3C,OAAO,IAAI,eAAe,CAAC;QACzB,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACvD,GAAG,CAAC,IAAI,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAChE,GAAG,CAAC,IAAI,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAChE,GAAG,EAAE,IAAI,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG;QACzD,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACvC,CAAC,CAAC;AACL,CAAC;AAED,kFAAkF;AAClF,SAAS,GAAG,CAAC,KAAa,EAAE,GAAW;IACrC,OAAO,KAAK,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;AAClF,CAAC;AAED,yDAAyD;AACzD,SAAS,SAAS,CAAC,KAAc;IAC/B,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IACxE,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IACpG,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3E,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,kBAAkB,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC;IACpE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;AACH,CAAC;AAED,mGAAmG;AACnG,SAAS,kBAAkB,CAAC,IAAY,EAAE,KAAc;IACtD,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC;IAC7F,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAY;IAC9C,MAAM,MAAM,GAAmB;QAC7B,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,IAAI;QACb,MAAM,EAAE,IAAI;QACZ,QAAQ,EAAE,IAAI;QACd,KAAK,EAAE,IAAI;QACX,SAAS,EAAE,IAAI;QACf,OAAO,EAAE,IAAI;QACb,SAAS,EAAE,IAAI;QACf,GAAG,EAAE,IAAI;QACT,QAAQ,EAAE,IAAI;KACf,CAAC;IACF,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACpC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,MAAM;QACjC,MAAM,KAAK,GAAG,wCAAwC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClE,IAAI,CAAC,KAAK;YAAE,SAAS;QACrB,MAAM,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,KAAK,CAAC;QAC7B,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;QAC7B,QAAQ,GAAG,CAAC,WAAW,EAAE,EAAE,CAAC;YAC1B,KAAK,SAAS;gBAAE,MAAM,CAAC,OAAO,GAAG,OAAO,IAAI,IAAI,CAAC;gBAAC,MAAM;YACxD,KAAK,SAAS;gBAAE,MAAM,CAAC,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;gBAAC,MAAM;YAC7D,KAAK,QAAQ;gBAAE,MAAM,CAAC,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;gBAAC,MAAM;YAC3D,KAAK,UAAU;gBAAE,MAAM,CAAC,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;gBAAC,MAAM;YAC/D,KAAK,OAAO;gBAAE,MAAM,CAAC,KAAK,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;gBAAC,MAAM;YACzD,KAAK,WAAW;gBAAE,MAAM,CAAC,SAAS,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;gBAAC,MAAM;YACjE,KAAK,SAAS;gBAAE,MAAM,CAAC,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;gBAAC,MAAM;YAC7D,KAAK,KAAK;gBAAE,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;gBAAC,MAAM;YAC1F,KAAK,UAAU;gBAAE,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;gBAAC,MAAM;YAC1D,KAAK,SAAS,CAAC,CAAC,CAAC;gBACf,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBAC/B,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;gBACnD,MAAM;YACR,CAAC;YACD,OAAO,CAAC,CAAC,MAAM;QACjB,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;AACxC,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,WAAW,CAAC,KAAa;IAChC,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC7B,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,WAAW,EAAE,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IACjE,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,aAAa,CAAC,MAAc,WAAW,EAAE;IACvD,IAAI,CAAC;QACH,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,OAAO,EAAE,CAAC;QAChC,OAAO,WAAW,CAAC,GAAG,CAAC;aACpB,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;aACvC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YACZ,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,mBAAmB,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7F,CAAC,CAAC;aACD,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC;aAC3B,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;IACnD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAChC,OAAe,EACf,MAAc,WAAW,EAAE;IAE3B,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;IAChC,KAAK,MAAM,IAAI,IAAI,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;QACtC,IAAI,IAAI,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI;YAAE,SAAS;QAC5C,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,IAAI;YAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC;IAClE,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AASD;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,mBAAmB,CACjC,SAAiB,EACjB,MAAc,WAAW,EAAE;IAE3B,MAAM,IAAI,GAAG,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,uBAAuB,CAAC,CAAC;IACxE,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,CAAC;IACrB,MAAM,GAAG,GAAqB,EAAE,CAAC;IACjC,IAAI,CAAC;QACH,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,OAAO,EAAE,CAAC;QAChC,KAAK,MAAM,IAAI,IAAI,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;YACpC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;gBAAE,SAAS;YACrC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YAC7B,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;YAChC,IAAI,CAAC,IAAI;gBAAE,SAAS;YACpB,MAAM,MAAM,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC;YACzC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,OAAO,KAAK,IAAI;gBAAE,SAAS;YACjD,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,GAAG,CAAC;IACb,CAAC;IACD,6EAA6E;IAC7E,oEAAoE;IACpE,OAAO,GAAG,CAAC,IAAI,CACb,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACP,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,gBAAgB,CAAC;QAC/C,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,gBAAgB,CAAC,CAClD,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CAAC,IAAY;IAChC,IAAI,CAAC;QACH,OAAO,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACrC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,QAAQ,CAAC,IAAY;IAC5B,IAAI,CAAC;QACH,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC;IAChC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,CAAC;IACX,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,OAAe,EAAE,IAAmB;IACjE,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IACvB,OAAO,MAAM,OAAO,kCAAkC,IAAI,+BAA+B,CAAC;AAC5F,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"event-bus.d.ts","sourceRoot":"","sources":["../../src/observability/event-bus.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAOH,4CAA4C;AAC5C,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAsDrB;;;;OAIG;;IAEH;;;OAGG;;IAEH;;;OAGG;;IAIH;;;;;;;OAOG;;;;;;;;;;;;;;;;;;;;;;;CAsCK,CAAC;AAEX,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,OAAO,UAAU,CAAC,CAAC;AAErE,sDAAsD;AACtD,MAAM,WAAW,WAAW;IAC1B,iDAAiD;IACjD,KAAK,EAAE,SAAS,CAAC;IACjB,gEAAgE;IAChE,SAAS,EAAE,MAAM,CAAC;IAClB,iDAAiD;IACjD,IAAI,EAAE,OAAO,CAAC;IACd,oDAAoD;IACpD,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wCAAwC;AACxC,MAAM,WAAW,WAAW;IAC1B,+CAA+C;IAC/C,UAAU,CAAC,EAAE,SAAS,EAAE,CAAC;IACzB,6CAA6C;IAC7C,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,+CAA+C;IAC/C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gDAAgD;IAChD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,0CAA0C;IAC1C,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,0DAA0D;AAC1D,MAAM,MAAM,YAAY,GAAG,CAAC,MAAM,EAAE,WAAW,KAAK,IAAI,CAAC;AAIzD;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,QAAQ;IACnB,0EAA0E;IAC1E,OAAO,CAAC,QAAQ,CAAwC;IACxD,4BAA4B;IAC5B,OAAO,CAAC,OAAO,CAAqB;IACpC,6DAA6D;IAC7D,OAAO,CAAC,UAAU,CAAS;IAC3B,8CAA8C;IAC9C,OAAO,CAAC,MAAM,CAAQ;gBAEV,UAAU,SAAS;IAM/B;;;;;;OAMG;IACH,EAAE,CAAC,KAAK,EAAE,SAAS,GAAG,GAAG,EAAE,OAAO,EAAE,YAAY,GAAG,MAAM,IAAI;IAY7D;;OAEG;IACH,IAAI,CAAC,KAAK,EAAE,SAAS,GAAG,GAAG,EAAE,OAAO,EAAE,YAAY,GAAG,MAAM,IAAI;IAS/D;;OAEG;IACH,GAAG,CAAC,KAAK,CAAC,EAAE,SAAS,GAAG,GAAG,GAAG,IAAI;IAUlC;;;;;;OAMG;IACH,IAAI,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI;IA2C5D;;OAEG;IACH,UAAU,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,WAAW,EAAE;IAwB/C;;OAEG;IACH,YAAY,IAAI,IAAI;IAIpB;;OAEG;IACH,IAAI,UAAU,IAAI,MAAM,CAEvB;IAID;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;OAEG;IACH,MAAM,IAAI,IAAI;IAId;;OAEG;IACH,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAED;;OAEG;IACH,KAAK,IAAI,IAAI;CAKd;AAID;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,+CAA+C;IAC/C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,8EAA8E;IAC9E,MAAM,CAAC,GAAG,EAAE,QAAQ,GAAG,IAAI,CAAC;IAC5B,0CAA0C;IAC1C,MAAM,CAAC,GAAG,EAAE,QAAQ,GAAG,IAAI,CAAC;CAC7B;AAID;;;;GAIG;AACH,qBAAa,cAAe,YAAW,gBAAgB;IACrD,QAAQ,CAAC,IAAI,oBAAoB;IACjC,OAAO,CAAC,aAAa,CAAyB;IAE9C,MAAM,CAAC,GAAG,EAAE,QAAQ,GAAG,IAAI;IA8S3B,MAAM,CAAC,GAAG,EAAE,QAAQ,GAAG,IAAI;CAM5B;AAID;;;;;;;;GAQG;AACH,qBAAa,WAAY,YAAW,gBAAgB;IAClD,QAAQ,CAAC,IAAI,iBAAiB;IAC9B,OAAO,CAAC,aAAa,CAAyB;IAE9C,MAAM,CAAC,GAAG,EAAE,QAAQ,GAAG,IAAI;IAsC3B,MAAM,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI;CAM7B;AAID,oCAAoC;AACpC,MAAM,WAAW,iBAAiB;IAChC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;IACzB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED;;;;;GAKG;AACH,qBAAa,iBAAkB,YAAW,gBAAgB;IACxD,QAAQ,CAAC,IAAI,uBAAuB;IACpC,OAAO,CAAC,aAAa,CAAyB;IAC9C,OAAO,CAAC,MAAM,CAA6B;IAC3C,OAAO,CAAC,YAAY,CAA6B;IACjD,OAAO,CAAC,SAAS,CAAc;IAC/B,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,cAAc,CAAK;IAC3B,OAAO,CAAC,gBAAgB,CAAK;IAC7B,OAAO,CAAC,aAAa,CAAK;IAE1B,MAAM,CAAC,GAAG,EAAE,QAAQ,GAAG,IAAI;IAiC3B;;OAEG;IACH,QAAQ,IAAI,iBAAiB;IAsB7B,MAAM,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI;CAM7B;AAID;;;;;GAKG;AACH,qBAAa,aAAc,YAAW,gBAAgB;IACpD,QAAQ,CAAC,IAAI,mBAAmB;IAChC,OAAO,CAAC,aAAa,CAAyB;IAC9C,OAAO,CAAC,MAAM,CAAyB;IACvC,OAAO,CAAC,cAAc,CAAS;IAE/B,MAAM,CAAC,GAAG,EAAE,QAAQ,GAAG,IAAI;IA+B3B,MAAM,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI;CAM7B;AAOD;;;GAGG;AACH,wBAAgB,WAAW,IAAI,QAAQ,CActC;AAED;;;GAGG;AACH,wBAAgB,aAAa,IAAI,IAAI,CASpC;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,aAAa,CAAC,gBAAgB,CAAC,CAEtE"}
1
+ {"version":3,"file":"event-bus.d.ts","sourceRoot":"","sources":["../../src/observability/event-bus.ts"],"names":[],"mappings":"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"}
@@ -85,7 +85,10 @@ export const EventNames = {
85
85
  // Shell execution events (E1 — every subprocess is a visible lane)
86
86
  EXEC_SHELL_START: 'exec:shell-start',
87
87
  EXEC_SHELL_END: 'exec:shell-end',
88
- // I2 — tool-loop execution (drives the hooks registry's post_tool_call hook)
88
+ // I2 — tool-loop execution. WS4 (#26) — consumed by the dashboard's step cards
89
+ // and the gateway's durable turn record; the operator's tool hooks are NOT
90
+ // driven from here (the execution seam calls them directly, so a veto can stop
91
+ // a call and no surface can double-fire one).
89
92
  TOOL_CALLED: 'tool:called',
90
93
  // Delegation events (H2 — sub-agent spawning, `spawn_agents` /
91
94
  // `delegate_tool.py` parity). Emitted by src/agents/tools/delegation.ts