@caupulican/pi-adaptative 0.81.42 → 0.81.43

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 (1406) hide show
  1. package/CHANGELOG.md +37 -0
  2. package/dist/bun/cli.d.ts.map +1 -1
  3. package/dist/bun/cli.js.map +1 -1
  4. package/dist/bun/register-bedrock.d.ts.map +1 -1
  5. package/dist/bun/restore-sandbox-env.d.ts.map +1 -1
  6. package/dist/bun/restore-sandbox-env.js.map +1 -1
  7. package/dist/bundled-resources/extensions/tmux-agent-manager/dispatch-grant.d.ts.map +1 -1
  8. package/dist/bundled-resources/extensions/tmux-agent-manager/dispatch-grant.js.map +1 -1
  9. package/dist/bundled-resources/extensions/tmux-agent-manager/index.d.ts.map +1 -1
  10. package/dist/bundled-resources/extensions/tmux-agent-manager/index.js +52 -49
  11. package/dist/bundled-resources/extensions/tmux-agent-manager/index.js.map +1 -1
  12. package/dist/bundled-resources/extensions/tmux-agent-manager/index.ts +62 -57
  13. package/dist/bundled-resources/prompts/skillify.md +1 -1
  14. package/dist/bundled-resources/runtimes/pi-shell-engine/commands/fs.py +16 -19
  15. package/dist/bundled-resources/runtimes/pi-shell-engine/commands/search.py +12 -26
  16. package/dist/bundled-resources/runtimes/pi-shell-engine/commands/strings.py +15 -121
  17. package/dist/bundled-resources/runtimes/pi-shell-engine/commands/text.py +52 -79
  18. package/dist/bundled-resources/runtimes/pi-shell-engine/escapes.py +70 -0
  19. package/dist/bundled-resources/runtimes/pi-shell-engine/exec.py +110 -61
  20. package/dist/bundled-resources/runtimes/pi-shell-engine/main.py +106 -23
  21. package/dist/bundled-resources/runtimes/pi-shell-engine/paths.py +10 -0
  22. package/dist/bundled-resources/runtimes/pi-shell-engine/proc.py +12 -4
  23. package/dist/bundled-resources/runtimes/pi-shell-engine/shell_args.py +22 -0
  24. package/dist/bundled-resources/runtimes/pi-shell-engine/state.py +9 -2
  25. package/dist/bundled-resources/runtimes/pi-shell-engine/tokens.py +129 -259
  26. package/dist/bundled-resources/skills/authorized-web-security-audit/SKILL.md +187 -0
  27. package/dist/bundled-resources/skills/authorized-web-security-audit/references/assessment-contract.md +92 -0
  28. package/dist/bundled-resources/skills/deduplicate-by-evidence/SKILL.md +134 -0
  29. package/dist/bundled-resources/skills/evidence-gated-tdd/SKILL.md +93 -0
  30. package/dist/bundled-resources/skills/evidence-gated-tdd/references/evidence-model.md +27 -0
  31. package/dist/bundled-resources/skills/evidence-gated-tdd/references/security-scanners.md +24 -0
  32. package/dist/bundled-resources/skills/harness-self-adaptation/SKILL.md +4 -2
  33. package/dist/bundled-resources/skills/secure-agent-tool-surfaces/SKILL.md +217 -0
  34. package/dist/bundled-resources/skills/secure-agent-tool-surfaces/references/defensive-exploit-catalogue.md +175 -0
  35. package/dist/bundled-resources/skills/secure-agent-tool-surfaces/references/tool-boundary-checklist.md +87 -0
  36. package/dist/bundled-resources/skills/skill-architect/SKILL.md +2 -2
  37. package/dist/bundled-resources/skills/skill-creator/SKILL.md +188 -0
  38. package/dist/bundled-resources/skills/skill-creator/references/pi-skill-contract.md +73 -0
  39. package/dist/bundled-resources/skills/skill-creator/scripts/init-skill.mjs +142 -0
  40. package/dist/bundled-resources/skills/skill-creator/scripts/validate-skill.mjs +122 -0
  41. package/dist/cli/args.d.ts.map +1 -1
  42. package/dist/cli/args.js.map +1 -1
  43. package/dist/cli/config-selector.d.ts.map +1 -1
  44. package/dist/cli/config-selector.js.map +1 -1
  45. package/dist/cli/file-processor.d.ts.map +1 -1
  46. package/dist/cli/file-processor.js +8 -8
  47. package/dist/cli/file-processor.js.map +1 -1
  48. package/dist/cli/initial-message.d.ts +1 -1
  49. package/dist/cli/initial-message.d.ts.map +1 -1
  50. package/dist/cli/initial-message.js.map +1 -1
  51. package/dist/cli/list-models.d.ts.map +1 -1
  52. package/dist/cli/list-models.js.map +1 -1
  53. package/dist/cli/piped-stdin.d.ts +4 -0
  54. package/dist/cli/piped-stdin.d.ts.map +1 -0
  55. package/dist/cli/piped-stdin.js +13 -0
  56. package/dist/cli/piped-stdin.js.map +1 -0
  57. package/dist/cli/session-picker.d.ts.map +1 -1
  58. package/dist/cli/session-picker.js.map +1 -1
  59. package/dist/cli.d.ts.map +1 -1
  60. package/dist/cli.js.map +1 -1
  61. package/dist/config.d.ts.map +1 -1
  62. package/dist/config.js +9 -14
  63. package/dist/config.js.map +1 -1
  64. package/dist/core/agent-directory-layout.d.ts.map +1 -1
  65. package/dist/core/agent-directory-layout.js.map +1 -1
  66. package/dist/core/agent-paths.d.ts.map +1 -1
  67. package/dist/core/agent-paths.js.map +1 -1
  68. package/dist/core/agent-session-contracts.d.ts +5 -9
  69. package/dist/core/agent-session-contracts.d.ts.map +1 -1
  70. package/dist/core/agent-session-contracts.js +1 -12
  71. package/dist/core/agent-session-contracts.js.map +1 -1
  72. package/dist/core/agent-session-runtime.d.ts.map +1 -1
  73. package/dist/core/agent-session-runtime.js +10 -25
  74. package/dist/core/agent-session-runtime.js.map +1 -1
  75. package/dist/core/agent-session-services.d.ts.map +1 -1
  76. package/dist/core/agent-session-services.js.map +1 -1
  77. package/dist/core/agent-session.d.ts +24 -1
  78. package/dist/core/agent-session.d.ts.map +1 -1
  79. package/dist/core/agent-session.js +210 -237
  80. package/dist/core/agent-session.js.map +1 -1
  81. package/dist/core/auth-guidance.d.ts.map +1 -1
  82. package/dist/core/auth-guidance.js.map +1 -1
  83. package/dist/core/auth-storage.d.ts +4 -1
  84. package/dist/core/auth-storage.d.ts.map +1 -1
  85. package/dist/core/auth-storage.js +13 -39
  86. package/dist/core/auth-storage.js.map +1 -1
  87. package/dist/core/autonomy/approval-gate.d.ts.map +1 -1
  88. package/dist/core/autonomy/approval-gate.js.map +1 -1
  89. package/dist/core/autonomy/bounded-completion.d.ts.map +1 -1
  90. package/dist/core/autonomy/bounded-completion.js.map +1 -1
  91. package/dist/core/autonomy/contracts.d.ts.map +1 -1
  92. package/dist/core/autonomy/envelope-enforcement.d.ts.map +1 -1
  93. package/dist/core/autonomy/envelope-enforcement.js.map +1 -1
  94. package/dist/core/autonomy/evidence-finding-projection.d.ts +11 -0
  95. package/dist/core/autonomy/evidence-finding-projection.d.ts.map +1 -0
  96. package/dist/core/autonomy/evidence-finding-projection.js +37 -0
  97. package/dist/core/autonomy/evidence-finding-projection.js.map +1 -0
  98. package/dist/core/autonomy/foreground-envelope.d.ts.map +1 -1
  99. package/dist/core/autonomy/foreground-envelope.js.map +1 -1
  100. package/dist/core/autonomy/gates.d.ts.map +1 -1
  101. package/dist/core/autonomy/gates.js.map +1 -1
  102. package/dist/core/autonomy/lane-private-paths.d.ts.map +1 -1
  103. package/dist/core/autonomy/lane-private-paths.js.map +1 -1
  104. package/dist/core/autonomy/lane-tool-surface.d.ts.map +1 -1
  105. package/dist/core/autonomy/lane-tool-surface.js.map +1 -1
  106. package/dist/core/autonomy/lane-tracker.d.ts.map +1 -1
  107. package/dist/core/autonomy/lane-tracker.js +2 -3
  108. package/dist/core/autonomy/lane-tracker.js.map +1 -1
  109. package/dist/core/autonomy/path-scope.d.ts.map +1 -1
  110. package/dist/core/autonomy/path-scope.js.map +1 -1
  111. package/dist/core/autonomy/risk-assessment.d.ts.map +1 -1
  112. package/dist/core/autonomy/session-lane-record.d.ts.map +1 -1
  113. package/dist/core/autonomy/session-lane-record.js.map +1 -1
  114. package/dist/core/autonomy/status.d.ts.map +1 -1
  115. package/dist/core/autonomy/status.js.map +1 -1
  116. package/dist/core/autonomy/subagent-prompt.d.ts.map +1 -1
  117. package/dist/core/autonomy/subagent-prompt.js.map +1 -1
  118. package/dist/core/autonomy/telemetry-events.d.ts.map +1 -1
  119. package/dist/core/autonomy/telemetry-events.js.map +1 -1
  120. package/dist/core/autonomy-telemetry.d.ts.map +1 -1
  121. package/dist/core/autonomy-telemetry.js +2 -4
  122. package/dist/core/autonomy-telemetry.js.map +1 -1
  123. package/dist/core/background-lane-controller.d.ts.map +1 -1
  124. package/dist/core/background-lane-controller.js +2 -15
  125. package/dist/core/background-lane-controller.js.map +1 -1
  126. package/dist/core/background-tool-task-controller.d.ts +88 -0
  127. package/dist/core/background-tool-task-controller.d.ts.map +1 -0
  128. package/dist/core/background-tool-task-controller.js +470 -0
  129. package/dist/core/background-tool-task-controller.js.map +1 -0
  130. package/dist/core/bash-execution-controller.d.ts +1 -0
  131. package/dist/core/bash-execution-controller.d.ts.map +1 -1
  132. package/dist/core/bash-execution-controller.js +5 -4
  133. package/dist/core/bash-execution-controller.js.map +1 -1
  134. package/dist/core/bash-executor.d.ts.map +1 -1
  135. package/dist/core/bash-executor.js.map +1 -1
  136. package/dist/core/bedrock-sso-login.d.ts.map +1 -1
  137. package/dist/core/bedrock-sso-login.js.map +1 -1
  138. package/dist/core/billing-failover-controller.d.ts.map +1 -1
  139. package/dist/core/billing-failover-controller.js +3 -3
  140. package/dist/core/billing-failover-controller.js.map +1 -1
  141. package/dist/core/billing-failover.d.ts.map +1 -1
  142. package/dist/core/billing-failover.js.map +1 -1
  143. package/dist/core/capability-contract.d.ts.map +1 -1
  144. package/dist/core/catalog-manager.d.ts.map +1 -1
  145. package/dist/core/catalog-manager.js +0 -0
  146. package/dist/core/catalog-manager.js.map +1 -1
  147. package/dist/core/compaction-controller.d.ts +2 -0
  148. package/dist/core/compaction-controller.d.ts.map +1 -1
  149. package/dist/core/compaction-controller.js +21 -8
  150. package/dist/core/compaction-controller.js.map +1 -1
  151. package/dist/core/compaction-support.d.ts +8 -0
  152. package/dist/core/compaction-support.d.ts.map +1 -1
  153. package/dist/core/compaction-support.js +0 -2
  154. package/dist/core/compaction-support.js.map +1 -1
  155. package/dist/core/context/artifact-retrieval.d.ts.map +1 -1
  156. package/dist/core/context/artifact-retrieval.js.map +1 -1
  157. package/dist/core/context/brain-curator.d.ts.map +1 -1
  158. package/dist/core/context/brain-curator.js +14 -33
  159. package/dist/core/context/brain-curator.js.map +1 -1
  160. package/dist/core/context/context-artifacts.d.ts.map +1 -1
  161. package/dist/core/context/context-artifacts.js +16 -24
  162. package/dist/core/context/context-artifacts.js.map +1 -1
  163. package/dist/core/context/context-audit.d.ts.map +1 -1
  164. package/dist/core/context/context-audit.js +3 -17
  165. package/dist/core/context/context-audit.js.map +1 -1
  166. package/dist/core/context/context-composition.d.ts.map +1 -1
  167. package/dist/core/context/context-composition.js.map +1 -1
  168. package/dist/core/context/context-item.d.ts.map +1 -1
  169. package/dist/core/context/context-item.js.map +1 -1
  170. package/dist/core/context/context-prompt-enforcement.d.ts.map +1 -1
  171. package/dist/core/context/context-prompt-enforcement.js +3 -16
  172. package/dist/core/context/context-prompt-enforcement.js.map +1 -1
  173. package/dist/core/context/context-prompt-policy.d.ts.map +1 -1
  174. package/dist/core/context/context-prompt-policy.js.map +1 -1
  175. package/dist/core/context/context-retention.d.ts.map +1 -1
  176. package/dist/core/context/context-retention.js.map +1 -1
  177. package/dist/core/context/context-store-retention.d.ts.map +1 -1
  178. package/dist/core/context/context-store-retention.js.map +1 -1
  179. package/dist/core/context/context-store.d.ts.map +1 -1
  180. package/dist/core/context/context-store.js.map +1 -1
  181. package/dist/core/context/context-tool-result.d.ts +4 -0
  182. package/dist/core/context/context-tool-result.d.ts.map +1 -0
  183. package/dist/core/context/context-tool-result.js +15 -0
  184. package/dist/core/context/context-tool-result.js.map +1 -0
  185. package/dist/core/context/current-work-memory.d.ts.map +1 -1
  186. package/dist/core/context/current-work-memory.js.map +1 -1
  187. package/dist/core/context/file-store-memory-provider.d.ts.map +1 -1
  188. package/dist/core/context/file-store-memory-provider.js +7 -28
  189. package/dist/core/context/file-store-memory-provider.js.map +1 -1
  190. package/dist/core/context/local-memory-search.d.ts +11 -0
  191. package/dist/core/context/local-memory-search.d.ts.map +1 -0
  192. package/dist/core/context/local-memory-search.js +37 -0
  193. package/dist/core/context/local-memory-search.js.map +1 -0
  194. package/dist/core/context/long-term-memory-trigger.d.ts.map +1 -1
  195. package/dist/core/context/long-term-memory-trigger.js.map +1 -1
  196. package/dist/core/context/memory-diagnostics.d.ts.map +1 -1
  197. package/dist/core/context/memory-diagnostics.js.map +1 -1
  198. package/dist/core/context/memory-index-store.d.ts.map +1 -1
  199. package/dist/core/context/memory-index-store.js.map +1 -1
  200. package/dist/core/context/memory-prompt-block.d.ts.map +1 -1
  201. package/dist/core/context/memory-prompt-block.js.map +1 -1
  202. package/dist/core/context/memory-prompt-budget.d.ts.map +1 -1
  203. package/dist/core/context/memory-prompt-budget.js.map +1 -1
  204. package/dist/core/context/memory-provider-contract.d.ts.map +1 -1
  205. package/dist/core/context/memory-provider-contract.js.map +1 -1
  206. package/dist/core/context/memory-retrieval.d.ts.map +1 -1
  207. package/dist/core/context/memory-retrieval.js.map +1 -1
  208. package/dist/core/context/memory-tier-composer.d.ts.map +1 -1
  209. package/dist/core/context/memory-tier-composer.js.map +1 -1
  210. package/dist/core/context/message-text.d.ts +7 -0
  211. package/dist/core/context/message-text.d.ts.map +1 -0
  212. package/dist/core/context/message-text.js +68 -0
  213. package/dist/core/context/message-text.js.map +1 -0
  214. package/dist/core/context/okf-memory-provider.d.ts.map +1 -1
  215. package/dist/core/context/okf-memory-provider.js +4 -30
  216. package/dist/core/context/okf-memory-provider.js.map +1 -1
  217. package/dist/core/context/okf-memory.d.ts.map +1 -1
  218. package/dist/core/context/okf-memory.js.map +1 -1
  219. package/dist/core/context/policy-engine.d.ts.map +1 -1
  220. package/dist/core/context/policy-engine.js.map +1 -1
  221. package/dist/core/context/policy-types.d.ts.map +1 -1
  222. package/dist/core/context/sqlite-runtime-index.d.ts.map +1 -1
  223. package/dist/core/context/sqlite-runtime-index.js.map +1 -1
  224. package/dist/core/context/storage-authority.d.ts.map +1 -1
  225. package/dist/core/context/tool-output-packer.d.ts.map +1 -1
  226. package/dist/core/context/tool-output-packer.js.map +1 -1
  227. package/dist/core/context-gc.d.ts.map +1 -1
  228. package/dist/core/context-gc.js +14 -21
  229. package/dist/core/context-gc.js.map +1 -1
  230. package/dist/core/context-pipeline.d.ts +1 -3
  231. package/dist/core/context-pipeline.d.ts.map +1 -1
  232. package/dist/core/context-pipeline.js +64 -145
  233. package/dist/core/context-pipeline.js.map +1 -1
  234. package/dist/core/cost/cost-summary.d.ts.map +1 -1
  235. package/dist/core/cost/cost-summary.js.map +1 -1
  236. package/dist/core/cost/daily-usage.d.ts.map +1 -1
  237. package/dist/core/cost/daily-usage.js.map +1 -1
  238. package/dist/core/cost/session-usage.d.ts.map +1 -1
  239. package/dist/core/cost/session-usage.js.map +1 -1
  240. package/dist/core/cost-guard.d.ts.map +1 -1
  241. package/dist/core/cost-guard.js.map +1 -1
  242. package/dist/core/default-tool-surface.d.ts.map +1 -1
  243. package/dist/core/default-tool-surface.js +1 -0
  244. package/dist/core/default-tool-surface.js.map +1 -1
  245. package/dist/core/defaults.d.ts.map +1 -1
  246. package/dist/core/delegation/managed-lane-controller.d.ts.map +1 -1
  247. package/dist/core/delegation/managed-lane-controller.js +2 -6
  248. package/dist/core/delegation/managed-lane-controller.js.map +1 -1
  249. package/dist/core/delegation/session-worker-claim.d.ts.map +1 -1
  250. package/dist/core/delegation/session-worker-claim.js.map +1 -1
  251. package/dist/core/delegation/worker-action-journal.d.ts.map +1 -1
  252. package/dist/core/delegation/worker-action-journal.js +0 -4
  253. package/dist/core/delegation/worker-action-journal.js.map +1 -1
  254. package/dist/core/delegation/worker-actions.d.ts.map +1 -1
  255. package/dist/core/delegation/worker-actions.js.map +1 -1
  256. package/dist/core/delegation/worker-agent-control-coordinator.d.ts +1 -0
  257. package/dist/core/delegation/worker-agent-control-coordinator.d.ts.map +1 -1
  258. package/dist/core/delegation/worker-agent-control-coordinator.js +13 -15
  259. package/dist/core/delegation/worker-agent-control-coordinator.js.map +1 -1
  260. package/dist/core/delegation/worker-agent-control.d.ts.map +1 -1
  261. package/dist/core/delegation/worker-agent-control.js +1 -4
  262. package/dist/core/delegation/worker-agent-control.js.map +1 -1
  263. package/dist/core/delegation/worker-attempt-executor.d.ts.map +1 -1
  264. package/dist/core/delegation/worker-attempt-executor.js.map +1 -1
  265. package/dist/core/delegation/worker-claim.d.ts.map +1 -1
  266. package/dist/core/delegation/worker-claim.js.map +1 -1
  267. package/dist/core/delegation/worker-conversation-store.d.ts.map +1 -1
  268. package/dist/core/delegation/worker-conversation-store.js +0 -2
  269. package/dist/core/delegation/worker-conversation-store.js.map +1 -1
  270. package/dist/core/delegation/worker-delegation-controller.d.ts.map +1 -1
  271. package/dist/core/delegation/worker-delegation-controller.js +5 -14
  272. package/dist/core/delegation/worker-delegation-controller.js.map +1 -1
  273. package/dist/core/delegation/worker-delegation-request.d.ts.map +1 -1
  274. package/dist/core/delegation/worker-dispatch-scheduler.d.ts.map +1 -1
  275. package/dist/core/delegation/worker-dispatch-scheduler.js +5 -6
  276. package/dist/core/delegation/worker-dispatch-scheduler.js.map +1 -1
  277. package/dist/core/delegation/worker-execution-policy.d.ts.map +1 -1
  278. package/dist/core/delegation/worker-execution-policy.js.map +1 -1
  279. package/dist/core/delegation/worker-lane-projection.d.ts.map +1 -1
  280. package/dist/core/delegation/worker-lane-projection.js.map +1 -1
  281. package/dist/core/delegation/worker-lifecycle.d.ts.map +1 -1
  282. package/dist/core/delegation/worker-lifecycle.js +0 -3
  283. package/dist/core/delegation/worker-lifecycle.js.map +1 -1
  284. package/dist/core/delegation/worker-notification-coordinator.d.ts.map +1 -1
  285. package/dist/core/delegation/worker-notification-coordinator.js +4 -5
  286. package/dist/core/delegation/worker-notification-coordinator.js.map +1 -1
  287. package/dist/core/delegation/worker-process-owner.d.ts.map +1 -1
  288. package/dist/core/delegation/worker-process-owner.js.map +1 -1
  289. package/dist/core/delegation/worker-profile-resolver.d.ts.map +1 -1
  290. package/dist/core/delegation/worker-profile-resolver.js +1 -2
  291. package/dist/core/delegation/worker-profile-resolver.js.map +1 -1
  292. package/dist/core/delegation/worker-recovery-coordinator.d.ts.map +1 -1
  293. package/dist/core/delegation/worker-recovery-coordinator.js +3 -4
  294. package/dist/core/delegation/worker-recovery-coordinator.js.map +1 -1
  295. package/dist/core/delegation/worker-resource-catalog.d.ts.map +1 -1
  296. package/dist/core/delegation/worker-resource-catalog.js.map +1 -1
  297. package/dist/core/delegation/worker-resource-materializer.d.ts.map +1 -1
  298. package/dist/core/delegation/worker-resource-materializer.js +1 -4
  299. package/dist/core/delegation/worker-resource-materializer.js.map +1 -1
  300. package/dist/core/delegation/worker-runner.d.ts +2 -4
  301. package/dist/core/delegation/worker-runner.d.ts.map +1 -1
  302. package/dist/core/delegation/worker-runner.js +6 -18
  303. package/dist/core/delegation/worker-runner.js.map +1 -1
  304. package/dist/core/delegation/worker-task-label.d.ts.map +1 -1
  305. package/dist/core/delegation/worker-task-label.js.map +1 -1
  306. package/dist/core/delegation/worker-terminal-finalizer.d.ts.map +1 -1
  307. package/dist/core/delegation/worker-terminal-finalizer.js.map +1 -1
  308. package/dist/core/delegation/worker-write-reservation-coordinator.d.ts.map +1 -1
  309. package/dist/core/delegation/worker-write-reservation-coordinator.js +1 -4
  310. package/dist/core/delegation/worker-write-reservation-coordinator.js.map +1 -1
  311. package/dist/core/delegation/worker-write-reservation.d.ts.map +1 -1
  312. package/dist/core/delegation/worker-write-reservation.js +0 -2
  313. package/dist/core/delegation/worker-write-reservation.js.map +1 -1
  314. package/dist/core/diagnostics.d.ts.map +1 -1
  315. package/dist/core/doctor.d.ts.map +1 -1
  316. package/dist/core/doctor.js.map +1 -1
  317. package/dist/core/event-bus.d.ts.map +1 -1
  318. package/dist/core/event-bus.js.map +1 -1
  319. package/dist/core/exec.d.ts.map +1 -1
  320. package/dist/core/exec.js +26 -7
  321. package/dist/core/exec.js.map +1 -1
  322. package/dist/core/export-html/ansi-to-html.d.ts.map +1 -1
  323. package/dist/core/export-html/ansi-to-html.js +21 -74
  324. package/dist/core/export-html/ansi-to-html.js.map +1 -1
  325. package/dist/core/export-html/index.d.ts.map +1 -1
  326. package/dist/core/export-html/index.js +4 -0
  327. package/dist/core/export-html/index.js.map +1 -1
  328. package/dist/core/export-html/session-tree-foundations.d.mts +67 -0
  329. package/dist/core/export-html/session-tree-foundations.mjs +313 -0
  330. package/dist/core/export-html/template.css +14 -41
  331. package/dist/core/export-html/template.html +3 -1
  332. package/dist/core/export-html/template.js +26 -435
  333. package/dist/core/export-html/tool-renderer.d.ts.map +1 -1
  334. package/dist/core/export-html/tool-renderer.js.map +1 -1
  335. package/dist/core/extension-import-authority.d.ts.map +1 -1
  336. package/dist/core/extension-import-authority.js.map +1 -1
  337. package/dist/core/extension-metadata.d.ts.map +1 -1
  338. package/dist/core/extension-metadata.js.map +1 -1
  339. package/dist/core/extensions/builtin.d.ts +17 -0
  340. package/dist/core/extensions/builtin.d.ts.map +1 -1
  341. package/dist/core/extensions/builtin.js +18 -54
  342. package/dist/core/extensions/builtin.js.map +1 -1
  343. package/dist/core/extensions/entry-resolution.d.ts +3 -0
  344. package/dist/core/extensions/entry-resolution.d.ts.map +1 -0
  345. package/dist/core/extensions/entry-resolution.js +17 -0
  346. package/dist/core/extensions/entry-resolution.js.map +1 -0
  347. package/dist/core/extensions/index.d.ts.map +1 -1
  348. package/dist/core/extensions/loader.d.ts.map +1 -1
  349. package/dist/core/extensions/loader.js +76 -21
  350. package/dist/core/extensions/loader.js.map +1 -1
  351. package/dist/core/extensions/runner.d.ts +2 -0
  352. package/dist/core/extensions/runner.d.ts.map +1 -1
  353. package/dist/core/extensions/runner.js +41 -112
  354. package/dist/core/extensions/runner.js.map +1 -1
  355. package/dist/core/extensions/stale-context.d.ts.map +1 -1
  356. package/dist/core/extensions/storage.d.ts.map +1 -1
  357. package/dist/core/extensions/storage.js.map +1 -1
  358. package/dist/core/extensions/types.d.ts.map +1 -1
  359. package/dist/core/extensions/types.js.map +1 -1
  360. package/dist/core/extensions/wrapper.d.ts.map +1 -1
  361. package/dist/core/extensions/wrapper.js.map +1 -1
  362. package/dist/core/failure-corpus.d.ts.map +1 -1
  363. package/dist/core/failure-corpus.js +2 -5
  364. package/dist/core/failure-corpus.js.map +1 -1
  365. package/dist/core/footer-data-provider.d.ts.map +1 -1
  366. package/dist/core/footer-data-provider.js +27 -33
  367. package/dist/core/footer-data-provider.js.map +1 -1
  368. package/dist/core/foreground-recovery-controller.d.ts.map +1 -1
  369. package/dist/core/foreground-recovery-controller.js +0 -4
  370. package/dist/core/foreground-recovery-controller.js.map +1 -1
  371. package/dist/core/gateways/channel-provider.d.ts.map +1 -1
  372. package/dist/core/gateways/channel-provider.js +7 -5
  373. package/dist/core/gateways/channel-provider.js.map +1 -1
  374. package/dist/core/goal-loop-controller.d.ts.map +1 -1
  375. package/dist/core/goal-loop-controller.js +0 -1
  376. package/dist/core/goal-loop-controller.js.map +1 -1
  377. package/dist/core/goals/compact-goal-context.d.ts.map +1 -1
  378. package/dist/core/goals/compact-goal-context.js +2 -4
  379. package/dist/core/goals/compact-goal-context.js.map +1 -1
  380. package/dist/core/goals/goal-acceptance.d.ts.map +1 -1
  381. package/dist/core/goals/goal-acceptance.js.map +1 -1
  382. package/dist/core/goals/goal-auto-continue-controller.d.ts.map +1 -1
  383. package/dist/core/goals/goal-auto-continue-controller.js +1 -3
  384. package/dist/core/goals/goal-auto-continue-controller.js.map +1 -1
  385. package/dist/core/goals/goal-continuation-controller.d.ts.map +1 -1
  386. package/dist/core/goals/goal-continuation-controller.js.map +1 -1
  387. package/dist/core/goals/goal-continuation-defaults.d.ts.map +1 -1
  388. package/dist/core/goals/goal-continuation-prompt.d.ts.map +1 -1
  389. package/dist/core/goals/goal-continuation-prompt.js.map +1 -1
  390. package/dist/core/goals/goal-lifecycle.d.ts.map +1 -1
  391. package/dist/core/goals/goal-lifecycle.js.map +1 -1
  392. package/dist/core/goals/goal-record.d.ts.map +1 -1
  393. package/dist/core/goals/goal-record.js.map +1 -1
  394. package/dist/core/goals/goal-runtime-snapshot.d.ts.map +1 -1
  395. package/dist/core/goals/goal-runtime-snapshot.js.map +1 -1
  396. package/dist/core/goals/goal-session-controller.d.ts +15 -0
  397. package/dist/core/goals/goal-session-controller.d.ts.map +1 -1
  398. package/dist/core/goals/goal-session-controller.js +27 -3
  399. package/dist/core/goals/goal-session-controller.js.map +1 -1
  400. package/dist/core/goals/goal-state.d.ts.map +1 -1
  401. package/dist/core/goals/goal-state.js +35 -51
  402. package/dist/core/goals/goal-state.js.map +1 -1
  403. package/dist/core/goals/goal-tool-core.d.ts.map +1 -1
  404. package/dist/core/goals/goal-tool-core.js.map +1 -1
  405. package/dist/core/goals/natural-language-goal.d.ts +9 -0
  406. package/dist/core/goals/natural-language-goal.d.ts.map +1 -0
  407. package/dist/core/goals/natural-language-goal.js +23 -0
  408. package/dist/core/goals/natural-language-goal.js.map +1 -0
  409. package/dist/core/goals/session-goal-state.d.ts.map +1 -1
  410. package/dist/core/goals/session-goal-state.js.map +1 -1
  411. package/dist/core/http-dispatcher.d.ts.map +1 -1
  412. package/dist/core/http-dispatcher.js.map +1 -1
  413. package/dist/core/human-input-controller.d.ts.map +1 -1
  414. package/dist/core/human-input-controller.js +2 -3
  415. package/dist/core/human-input-controller.js.map +1 -1
  416. package/dist/core/human-input.d.ts.map +1 -1
  417. package/dist/core/human-input.js.map +1 -1
  418. package/dist/core/improvement-loop.d.ts.map +1 -1
  419. package/dist/core/improvement-loop.js +11 -11
  420. package/dist/core/improvement-loop.js.map +1 -1
  421. package/dist/core/index.d.ts.map +1 -1
  422. package/dist/core/install-telemetry.d.ts.map +1 -1
  423. package/dist/core/install-telemetry.js.map +1 -1
  424. package/dist/core/isolated-text-completion.d.ts +17 -0
  425. package/dist/core/isolated-text-completion.d.ts.map +1 -0
  426. package/dist/core/isolated-text-completion.js +15 -0
  427. package/dist/core/isolated-text-completion.js.map +1 -0
  428. package/dist/core/keybindings.d.ts +47 -2
  429. package/dist/core/keybindings.d.ts.map +1 -1
  430. package/dist/core/keybindings.js +12 -1
  431. package/dist/core/keybindings.js.map +1 -1
  432. package/dist/core/learning/learning-audit.d.ts.map +1 -1
  433. package/dist/core/learning/learning-audit.js.map +1 -1
  434. package/dist/core/learning/learning-gate.d.ts.map +1 -1
  435. package/dist/core/learning/learning-gate.js.map +1 -1
  436. package/dist/core/learning/observation-store.d.ts.map +1 -1
  437. package/dist/core/learning/observation-store.js +0 -2
  438. package/dist/core/learning/observation-store.js.map +1 -1
  439. package/dist/core/learning/reflection-engine.d.ts +1 -1
  440. package/dist/core/learning/reflection-engine.d.ts.map +1 -1
  441. package/dist/core/learning/reflection-engine.js +3 -0
  442. package/dist/core/learning/reflection-engine.js.map +1 -1
  443. package/dist/core/learning/reflection-turn-analysis.d.ts +20 -0
  444. package/dist/core/learning/reflection-turn-analysis.d.ts.map +1 -0
  445. package/dist/core/learning/reflection-turn-analysis.js +136 -0
  446. package/dist/core/learning/reflection-turn-analysis.js.map +1 -0
  447. package/dist/core/learning/session-learning-decision.d.ts.map +1 -1
  448. package/dist/core/learning/session-learning-decision.js.map +1 -1
  449. package/dist/core/learning/skill-curator.d.ts.map +1 -1
  450. package/dist/core/learning/skill-curator.js +0 -3
  451. package/dist/core/learning/skill-curator.js.map +1 -1
  452. package/dist/core/local-runtime-controller.d.ts +39 -0
  453. package/dist/core/local-runtime-controller.d.ts.map +1 -1
  454. package/dist/core/local-runtime-controller.js +41 -62
  455. package/dist/core/local-runtime-controller.js.map +1 -1
  456. package/dist/core/memory/effectiveness-tracker.d.ts.map +1 -1
  457. package/dist/core/memory/effectiveness-tracker.js +4 -2
  458. package/dist/core/memory/effectiveness-tracker.js.map +1 -1
  459. package/dist/core/memory/memory-manager.d.ts.map +1 -1
  460. package/dist/core/memory/memory-manager.js +7 -7
  461. package/dist/core/memory/memory-manager.js.map +1 -1
  462. package/dist/core/memory/memory-provider.d.ts.map +1 -1
  463. package/dist/core/memory/providers/file-store.d.ts +7 -0
  464. package/dist/core/memory/providers/file-store.d.ts.map +1 -1
  465. package/dist/core/memory/providers/file-store.js +48 -13
  466. package/dist/core/memory/providers/file-store.js.map +1 -1
  467. package/dist/core/memory/providers/transcript-recall-worker-protocol.d.ts +47 -0
  468. package/dist/core/memory/providers/transcript-recall-worker-protocol.d.ts.map +1 -0
  469. package/dist/core/memory/providers/transcript-recall-worker-protocol.js +50 -0
  470. package/dist/core/memory/providers/transcript-recall-worker-protocol.js.map +1 -0
  471. package/dist/core/memory/providers/transcript-recall-worker.d.ts +2 -0
  472. package/dist/core/memory/providers/transcript-recall-worker.d.ts.map +1 -0
  473. package/dist/core/memory/providers/transcript-recall-worker.js +143 -0
  474. package/dist/core/memory/providers/transcript-recall-worker.js.map +1 -0
  475. package/dist/core/memory/providers/transcript-recall.d.ts +24 -13
  476. package/dist/core/memory/providers/transcript-recall.d.ts.map +1 -1
  477. package/dist/core/memory/providers/transcript-recall.js +143 -141
  478. package/dist/core/memory/providers/transcript-recall.js.map +1 -1
  479. package/dist/core/memory/providers/user-memory-archive.d.ts +39 -0
  480. package/dist/core/memory/providers/user-memory-archive.d.ts.map +1 -0
  481. package/dist/core/memory/providers/user-memory-archive.js +258 -0
  482. package/dist/core/memory/providers/user-memory-archive.js.map +1 -0
  483. package/dist/core/memory/transcript-index.d.ts.map +1 -1
  484. package/dist/core/memory/transcript-index.js +1 -1
  485. package/dist/core/memory/transcript-index.js.map +1 -1
  486. package/dist/core/memory-controller.d.ts +9 -0
  487. package/dist/core/memory-controller.d.ts.map +1 -1
  488. package/dist/core/memory-controller.js +57 -16
  489. package/dist/core/memory-controller.js.map +1 -1
  490. package/dist/core/model-capability.d.ts.map +1 -1
  491. package/dist/core/model-capability.js.map +1 -1
  492. package/dist/core/model-output-json.d.ts +10 -0
  493. package/dist/core/model-output-json.d.ts.map +1 -0
  494. package/dist/core/model-output-json.js +43 -0
  495. package/dist/core/model-output-json.js.map +1 -0
  496. package/dist/core/model-registry.d.ts +8 -8
  497. package/dist/core/model-registry.d.ts.map +1 -1
  498. package/dist/core/model-registry.js +29 -52
  499. package/dist/core/model-registry.js.map +1 -1
  500. package/dist/core/model-resolver.d.ts.map +1 -1
  501. package/dist/core/model-resolver.js +1 -1
  502. package/dist/core/model-resolver.js.map +1 -1
  503. package/dist/core/model-router/config-diagnostics.d.ts.map +1 -1
  504. package/dist/core/model-router/config-diagnostics.js.map +1 -1
  505. package/dist/core/model-router/executor-route.d.ts.map +1 -1
  506. package/dist/core/model-router/executor-route.js.map +1 -1
  507. package/dist/core/model-router/fitness-gate.d.ts.map +1 -1
  508. package/dist/core/model-router/fitness-gate.js.map +1 -1
  509. package/dist/core/model-router/intent-classifier.d.ts.map +1 -1
  510. package/dist/core/model-router/route-judge.d.ts.map +1 -1
  511. package/dist/core/model-router/route-judge.js +18 -36
  512. package/dist/core/model-router/route-judge.js.map +1 -1
  513. package/dist/core/model-router/session-buffer.d.ts.map +1 -1
  514. package/dist/core/model-router/session-buffer.js.map +1 -1
  515. package/dist/core/model-router/status.d.ts.map +1 -1
  516. package/dist/core/model-router/status.js.map +1 -1
  517. package/dist/core/model-router/tool-escalation.d.ts.map +1 -1
  518. package/dist/core/model-router/tool-escalation.js.map +1 -1
  519. package/dist/core/model-router-controller.d.ts +1 -0
  520. package/dist/core/model-router-controller.d.ts.map +1 -1
  521. package/dist/core/model-router-controller.js +25 -56
  522. package/dist/core/model-router-controller.js.map +1 -1
  523. package/dist/core/model-selection-controller.d.ts +10 -0
  524. package/dist/core/model-selection-controller.d.ts.map +1 -1
  525. package/dist/core/model-selection-controller.js +0 -1
  526. package/dist/core/model-selection-controller.js.map +1 -1
  527. package/dist/core/model-tool-protocol.d.ts.map +1 -1
  528. package/dist/core/model-tool-protocol.js.map +1 -1
  529. package/dist/core/models/adaptation-store.d.ts.map +1 -1
  530. package/dist/core/models/adaptation-store.js +0 -1
  531. package/dist/core/models/adaptation-store.js.map +1 -1
  532. package/dist/core/models/context-sizing.d.ts.map +1 -1
  533. package/dist/core/models/context-sizing.js.map +1 -1
  534. package/dist/core/models/default-model-suggestions.d.ts.map +1 -1
  535. package/dist/core/models/default-model-suggestions.js.map +1 -1
  536. package/dist/core/models/fitness-store.d.ts.map +1 -1
  537. package/dist/core/models/fitness-store.js +0 -1
  538. package/dist/core/models/fitness-store.js.map +1 -1
  539. package/dist/core/models/host-state-store.d.ts.map +1 -1
  540. package/dist/core/models/host-state-store.js +1 -6
  541. package/dist/core/models/host-state-store.js.map +1 -1
  542. package/dist/core/models/llamacpp-runtime.d.ts +4 -19
  543. package/dist/core/models/llamacpp-runtime.d.ts.map +1 -1
  544. package/dist/core/models/llamacpp-runtime.js +32 -136
  545. package/dist/core/models/llamacpp-runtime.js.map +1 -1
  546. package/dist/core/models/local-registration.d.ts.map +1 -1
  547. package/dist/core/models/local-registration.js +82 -115
  548. package/dist/core/models/local-registration.js.map +1 -1
  549. package/dist/core/models/local-runtime.d.ts +12 -18
  550. package/dist/core/models/local-runtime.d.ts.map +1 -1
  551. package/dist/core/models/local-runtime.js +60 -204
  552. package/dist/core/models/local-runtime.js.map +1 -1
  553. package/dist/core/models/model-endpoint.d.ts.map +1 -1
  554. package/dist/core/models/model-endpoint.js.map +1 -1
  555. package/dist/core/models/model-ref.d.ts.map +1 -1
  556. package/dist/core/models/model-ref.js.map +1 -1
  557. package/dist/core/models/needle-runtime.d.ts +7 -3
  558. package/dist/core/models/needle-runtime.d.ts.map +1 -1
  559. package/dist/core/models/needle-runtime.js +16 -92
  560. package/dist/core/models/needle-runtime.js.map +1 -1
  561. package/dist/core/models/perf-profile.d.ts +1 -1
  562. package/dist/core/models/perf-profile.d.ts.map +1 -1
  563. package/dist/core/models/perf-profile.js +6 -13
  564. package/dist/core/models/perf-profile.js.map +1 -1
  565. package/dist/core/models/prism-llamacpp-lifecycle.d.ts.map +1 -1
  566. package/dist/core/models/prism-llamacpp-lifecycle.js.map +1 -1
  567. package/dist/core/models/runtime-arbiter.d.ts.map +1 -1
  568. package/dist/core/models/runtime-arbiter.js +3 -15
  569. package/dist/core/models/runtime-arbiter.js.map +1 -1
  570. package/dist/core/models/runtime-process.d.ts +100 -0
  571. package/dist/core/models/runtime-process.d.ts.map +1 -0
  572. package/dist/core/models/runtime-process.js +183 -0
  573. package/dist/core/models/runtime-process.js.map +1 -0
  574. package/dist/core/orchestration/agent-resume.d.ts.map +1 -1
  575. package/dist/core/orchestration/agent-resume.js.map +1 -1
  576. package/dist/core/orchestration/attempt-usage.d.ts.map +1 -1
  577. package/dist/core/orchestration/attempt-usage.js.map +1 -1
  578. package/dist/core/orchestration/capability-gateway.d.ts.map +1 -1
  579. package/dist/core/orchestration/capability-gateway.js +0 -14
  580. package/dist/core/orchestration/capability-gateway.js.map +1 -1
  581. package/dist/core/orchestration/contracts.d.ts.map +1 -1
  582. package/dist/core/orchestration/contracts.js.map +1 -1
  583. package/dist/core/orchestration/delegation-ledger.d.ts.map +1 -1
  584. package/dist/core/orchestration/delegation-ledger.js +0 -2
  585. package/dist/core/orchestration/delegation-ledger.js.map +1 -1
  586. package/dist/core/orchestration/event-store.d.ts.map +1 -1
  587. package/dist/core/orchestration/event-store.js +1 -14
  588. package/dist/core/orchestration/event-store.js.map +1 -1
  589. package/dist/core/orchestration/lane-tool-manifests.d.ts.map +1 -1
  590. package/dist/core/orchestration/lane-tool-manifests.js.map +1 -1
  591. package/dist/core/orchestration/model-binding.d.ts.map +1 -1
  592. package/dist/core/orchestration/model-binding.js.map +1 -1
  593. package/dist/core/orchestration/policy-compiler.d.ts.map +1 -1
  594. package/dist/core/orchestration/policy-compiler.js +0 -3
  595. package/dist/core/orchestration/policy-compiler.js.map +1 -1
  596. package/dist/core/orchestration/policy-gate.d.ts.map +1 -1
  597. package/dist/core/orchestration/policy-gate.js +0 -2
  598. package/dist/core/orchestration/policy-gate.js.map +1 -1
  599. package/dist/core/orchestration/profile-registry.d.ts.map +1 -1
  600. package/dist/core/orchestration/profile-registry.js +1 -1
  601. package/dist/core/orchestration/profile-registry.js.map +1 -1
  602. package/dist/core/orchestration/profile-store.d.ts.map +1 -1
  603. package/dist/core/orchestration/profile-store.js +0 -3
  604. package/dist/core/orchestration/profile-store.js.map +1 -1
  605. package/dist/core/orchestration/risk-budget.d.ts.map +1 -1
  606. package/dist/core/orchestration/risk-budget.js.map +1 -1
  607. package/dist/core/orchestration/task-runtime.d.ts +1 -0
  608. package/dist/core/orchestration/task-runtime.d.ts.map +1 -1
  609. package/dist/core/orchestration/task-runtime.js +27 -42
  610. package/dist/core/orchestration/task-runtime.js.map +1 -1
  611. package/dist/core/orchestration/work-state-projection.d.ts.map +1 -1
  612. package/dist/core/orchestration/work-state-projection.js.map +1 -1
  613. package/dist/core/orchestration/worker-execution-contract.d.ts.map +1 -1
  614. package/dist/core/orchestration/worker-execution-contract.js.map +1 -1
  615. package/dist/core/orchestration/worker-result-adapter.d.ts.map +1 -1
  616. package/dist/core/orchestration/worker-result-adapter.js.map +1 -1
  617. package/dist/core/output-guard.d.ts.map +1 -1
  618. package/dist/core/output-guard.js.map +1 -1
  619. package/dist/core/package-manager.d.ts +3 -0
  620. package/dist/core/package-manager.d.ts.map +1 -1
  621. package/dist/core/package-manager.js +88 -353
  622. package/dist/core/package-manager.js.map +1 -1
  623. package/dist/core/process-identity.d.ts.map +1 -1
  624. package/dist/core/process-identity.js.map +1 -1
  625. package/dist/core/process-liveness.d.ts +3 -0
  626. package/dist/core/process-liveness.d.ts.map +1 -0
  627. package/dist/core/process-liveness.js +17 -0
  628. package/dist/core/process-liveness.js.map +1 -0
  629. package/dist/core/process-matrix/codes.d.ts.map +1 -1
  630. package/dist/core/process-matrix/resume-launcher.d.ts.map +1 -1
  631. package/dist/core/process-matrix/resume-launcher.js.map +1 -1
  632. package/dist/core/process-matrix/runtime.d.ts.map +1 -1
  633. package/dist/core/process-matrix/runtime.js.map +1 -1
  634. package/dist/core/process-matrix/store.d.ts.map +1 -1
  635. package/dist/core/process-matrix/store.js.map +1 -1
  636. package/dist/core/process-matrix/supervisor.d.ts.map +1 -1
  637. package/dist/core/process-matrix/supervisor.js.map +1 -1
  638. package/dist/core/profile-filter-controller.d.ts.map +1 -1
  639. package/dist/core/profile-filter-controller.js +7 -8
  640. package/dist/core/profile-filter-controller.js.map +1 -1
  641. package/dist/core/profile-registry.d.ts.map +1 -1
  642. package/dist/core/profile-registry.js +1 -2
  643. package/dist/core/profile-registry.js.map +1 -1
  644. package/dist/core/profile-resource-selection.d.ts.map +1 -1
  645. package/dist/core/profile-resource-selection.js +18 -59
  646. package/dist/core/profile-resource-selection.js.map +1 -1
  647. package/dist/core/prompt-markup.d.ts +3 -0
  648. package/dist/core/prompt-markup.d.ts.map +1 -0
  649. package/dist/core/prompt-markup.js +7 -0
  650. package/dist/core/prompt-markup.js.map +1 -0
  651. package/dist/core/prompt-templates.d.ts.map +1 -1
  652. package/dist/core/prompt-templates.js +13 -39
  653. package/dist/core/prompt-templates.js.map +1 -1
  654. package/dist/core/provider-display-names.d.ts.map +1 -1
  655. package/dist/core/python-runtime.d.ts.map +1 -1
  656. package/dist/core/python-runtime.js.map +1 -1
  657. package/dist/core/reflection-controller.d.ts +22 -1
  658. package/dist/core/reflection-controller.d.ts.map +1 -1
  659. package/dist/core/reflection-controller.js +143 -25
  660. package/dist/core/reflection-controller.js.map +1 -1
  661. package/dist/core/reload-blockers.d.ts +2 -1
  662. package/dist/core/reload-blockers.d.ts.map +1 -1
  663. package/dist/core/reload-blockers.js +4 -14
  664. package/dist/core/reload-blockers.js.map +1 -1
  665. package/dist/core/request-auth.d.ts.map +1 -1
  666. package/dist/core/request-auth.js.map +1 -1
  667. package/dist/core/research/automata-provider.d.ts.map +1 -1
  668. package/dist/core/research/automata-provider.js.map +1 -1
  669. package/dist/core/research/evidence-bundle.d.ts.map +1 -1
  670. package/dist/core/research/evidence-bundle.js.map +1 -1
  671. package/dist/core/research/lane-model-resolver.d.ts.map +1 -1
  672. package/dist/core/research/lane-model-resolver.js +0 -1
  673. package/dist/core/research/lane-model-resolver.js.map +1 -1
  674. package/dist/core/research/model-fitness-controller.d.ts.map +1 -1
  675. package/dist/core/research/model-fitness-controller.js +17 -33
  676. package/dist/core/research/model-fitness-controller.js.map +1 -1
  677. package/dist/core/research/model-fitness.d.ts.map +1 -1
  678. package/dist/core/research/model-fitness.js +4 -25
  679. package/dist/core/research/model-fitness.js.map +1 -1
  680. package/dist/core/research/research-gate.d.ts.map +1 -1
  681. package/dist/core/research/research-gate.js.map +1 -1
  682. package/dist/core/research/research-lane-controller.d.ts.map +1 -1
  683. package/dist/core/research/research-lane-controller.js +5 -10
  684. package/dist/core/research/research-lane-controller.js.map +1 -1
  685. package/dist/core/research/research-runner.d.ts +2 -4
  686. package/dist/core/research/research-runner.d.ts.map +1 -1
  687. package/dist/core/research/research-runner.js +17 -48
  688. package/dist/core/research/research-runner.js.map +1 -1
  689. package/dist/core/research/session-evidence-bundle.d.ts.map +1 -1
  690. package/dist/core/research/session-evidence-bundle.js.map +1 -1
  691. package/dist/core/research/workspace-collector.d.ts.map +1 -1
  692. package/dist/core/research/workspace-collector.js.map +1 -1
  693. package/dist/core/resolve-config-value.d.ts.map +1 -1
  694. package/dist/core/resolve-config-value.js.map +1 -1
  695. package/dist/core/resource-ignore.d.ts +6 -0
  696. package/dist/core/resource-ignore.d.ts.map +1 -0
  697. package/dist/core/resource-ignore.js +44 -0
  698. package/dist/core/resource-ignore.js.map +1 -0
  699. package/dist/core/resource-loader.d.ts +0 -1
  700. package/dist/core/resource-loader.d.ts.map +1 -1
  701. package/dist/core/resource-loader.js +52 -187
  702. package/dist/core/resource-loader.js.map +1 -1
  703. package/dist/core/resource-profile-blocks.d.ts +3 -1
  704. package/dist/core/resource-profile-blocks.d.ts.map +1 -1
  705. package/dist/core/resource-profile-blocks.js +8 -5
  706. package/dist/core/resource-profile-blocks.js.map +1 -1
  707. package/dist/core/resource-profile-equality.d.ts.map +1 -1
  708. package/dist/core/resource-profile-equality.js.map +1 -1
  709. package/dist/core/resource-traversal.d.ts +43 -0
  710. package/dist/core/resource-traversal.d.ts.map +1 -0
  711. package/dist/core/resource-traversal.js +84 -0
  712. package/dist/core/resource-traversal.js.map +1 -0
  713. package/dist/core/risk-classifier.d.ts.map +1 -1
  714. package/dist/core/risk-classifier.js.map +1 -1
  715. package/dist/core/runtime-builder.d.ts +4 -1
  716. package/dist/core/runtime-builder.d.ts.map +1 -1
  717. package/dist/core/runtime-builder.js +25 -50
  718. package/dist/core/runtime-builder.js.map +1 -1
  719. package/dist/core/scout-controller.d.ts.map +1 -1
  720. package/dist/core/scout-controller.js +0 -1
  721. package/dist/core/scout-controller.js.map +1 -1
  722. package/dist/core/sdk.d.ts.map +1 -1
  723. package/dist/core/sdk.js.map +1 -1
  724. package/dist/core/secrets/credential-exposure-guard.d.ts.map +1 -1
  725. package/dist/core/secrets/credential-exposure-guard.js +70 -44
  726. package/dist/core/secrets/credential-exposure-guard.js.map +1 -1
  727. package/dist/core/secrets/secret-dotenv.d.ts.map +1 -1
  728. package/dist/core/secrets/secret-dotenv.js +0 -1
  729. package/dist/core/secrets/secret-dotenv.js.map +1 -1
  730. package/dist/core/secrets/secret-vault-format.d.ts.map +1 -1
  731. package/dist/core/secrets/secret-vault-format.js +0 -1
  732. package/dist/core/secrets/secret-vault-format.js.map +1 -1
  733. package/dist/core/secrets/secret-vault.d.ts.map +1 -1
  734. package/dist/core/secrets/secret-vault.js +2 -10
  735. package/dist/core/secrets/secret-vault.js.map +1 -1
  736. package/dist/core/security/secret-text.d.ts.map +1 -1
  737. package/dist/core/security/secret-text.js.map +1 -1
  738. package/dist/core/security/untrusted-boundary.d.ts.map +1 -1
  739. package/dist/core/security/untrusted-boundary.js.map +1 -1
  740. package/dist/core/session-analytics.d.ts.map +1 -1
  741. package/dist/core/session-analytics.js +18 -50
  742. package/dist/core/session-analytics.js.map +1 -1
  743. package/dist/core/session-artifact-bundle.d.ts.map +1 -1
  744. package/dist/core/session-artifact-bundle.js.map +1 -1
  745. package/dist/core/session-cwd.d.ts.map +1 -1
  746. package/dist/core/session-cwd.js +0 -1
  747. package/dist/core/session-cwd.js.map +1 -1
  748. package/dist/core/session-entry-index.d.ts +8 -0
  749. package/dist/core/session-entry-index.d.ts.map +1 -0
  750. package/dist/core/session-entry-index.js +16 -0
  751. package/dist/core/session-entry-index.js.map +1 -0
  752. package/dist/core/session-image-store.d.ts.map +1 -1
  753. package/dist/core/session-image-store.js +0 -3
  754. package/dist/core/session-image-store.js.map +1 -1
  755. package/dist/core/session-jsonl-writer.d.ts +3 -0
  756. package/dist/core/session-jsonl-writer.d.ts.map +1 -0
  757. package/dist/core/session-jsonl-writer.js +38 -0
  758. package/dist/core/session-jsonl-writer.js.map +1 -0
  759. package/dist/core/session-manager-factory.d.ts.map +1 -1
  760. package/dist/core/session-manager-factory.js.map +1 -1
  761. package/dist/core/session-role.d.ts.map +1 -1
  762. package/dist/core/session-role.js.map +1 -1
  763. package/dist/core/session-snapshot.d.ts.map +1 -1
  764. package/dist/core/session-snapshot.js.map +1 -1
  765. package/dist/core/session-supervision-runtime.d.ts.map +1 -1
  766. package/dist/core/session-supervision-runtime.js +1 -4
  767. package/dist/core/session-supervision-runtime.js.map +1 -1
  768. package/dist/core/session-tree-navigator.d.ts.map +1 -1
  769. package/dist/core/session-tree-navigator.js +0 -1
  770. package/dist/core/session-tree-navigator.js.map +1 -1
  771. package/dist/core/settings-manager.d.ts +2 -1
  772. package/dist/core/settings-manager.d.ts.map +1 -1
  773. package/dist/core/settings-manager.js +64 -162
  774. package/dist/core/settings-manager.js.map +1 -1
  775. package/dist/core/skill-block.d.mts +8 -0
  776. package/dist/core/skill-block.mjs +52 -0
  777. package/dist/core/skill-discovery.d.ts +5 -0
  778. package/dist/core/skill-discovery.d.ts.map +1 -0
  779. package/dist/core/skill-discovery.js +34 -0
  780. package/dist/core/skill-discovery.js.map +1 -0
  781. package/dist/core/skills.d.ts.map +1 -1
  782. package/dist/core/skills.js +23 -159
  783. package/dist/core/skills.js.map +1 -1
  784. package/dist/core/slash-commands.d.ts.map +1 -1
  785. package/dist/core/source-info.d.ts.map +1 -1
  786. package/dist/core/source-info.js.map +1 -1
  787. package/dist/core/spawned-usage.d.ts +21 -0
  788. package/dist/core/spawned-usage.d.ts.map +1 -0
  789. package/dist/core/spawned-usage.js +29 -0
  790. package/dist/core/spawned-usage.js.map +1 -0
  791. package/dist/core/system-prompt-builder.d.ts +4 -0
  792. package/dist/core/system-prompt-builder.d.ts.map +1 -1
  793. package/dist/core/system-prompt-builder.js +15 -8
  794. package/dist/core/system-prompt-builder.js.map +1 -1
  795. package/dist/core/system-prompt.d.ts.map +1 -1
  796. package/dist/core/system-prompt.js +52 -35
  797. package/dist/core/system-prompt.js.map +1 -1
  798. package/dist/core/tasks/session-task-state.d.ts.map +1 -1
  799. package/dist/core/tasks/session-task-state.js.map +1 -1
  800. package/dist/core/tasks/task-command.d.ts.map +1 -1
  801. package/dist/core/tasks/task-command.js.map +1 -1
  802. package/dist/core/tasks/task-contract-monitor.d.ts.map +1 -1
  803. package/dist/core/tasks/task-contract-monitor.js.map +1 -1
  804. package/dist/core/tasks/task-projection.d.ts.map +1 -1
  805. package/dist/core/tasks/task-projection.js.map +1 -1
  806. package/dist/core/tasks/task-state.d.ts.map +1 -1
  807. package/dist/core/tasks/task-state.js.map +1 -1
  808. package/dist/core/text-preview.d.ts +4 -0
  809. package/dist/core/text-preview.d.ts.map +1 -0
  810. package/dist/core/text-preview.js +33 -0
  811. package/dist/core/text-preview.js.map +1 -0
  812. package/dist/core/timings.d.ts.map +1 -1
  813. package/dist/core/timings.js.map +1 -1
  814. package/dist/core/tool-capability-policy.d.ts.map +1 -1
  815. package/dist/core/tool-capability-policy.js.map +1 -1
  816. package/dist/core/tool-gate-controller.d.ts.map +1 -1
  817. package/dist/core/tool-gate-controller.js +86 -87
  818. package/dist/core/tool-gate-controller.js.map +1 -1
  819. package/dist/core/tool-protocol-controller.d.ts +4 -1
  820. package/dist/core/tool-protocol-controller.d.ts.map +1 -1
  821. package/dist/core/tool-protocol-controller.js +19 -23
  822. package/dist/core/tool-protocol-controller.js.map +1 -1
  823. package/dist/core/tool-recovery-log-records.d.ts.map +1 -1
  824. package/dist/core/tool-recovery-log-records.js.map +1 -1
  825. package/dist/core/tool-recovery-log-worker.d.ts.map +1 -1
  826. package/dist/core/tool-recovery-log-worker.js.map +1 -1
  827. package/dist/core/tool-recovery-logger.d.ts.map +1 -1
  828. package/dist/core/tool-recovery-logger.js +12 -24
  829. package/dist/core/tool-recovery-logger.js.map +1 -1
  830. package/dist/core/tool-recovery-stats.d.ts.map +1 -1
  831. package/dist/core/tool-recovery-stats.js +16 -22
  832. package/dist/core/tool-recovery-stats.js.map +1 -1
  833. package/dist/core/tool-repair-health.d.ts.map +1 -1
  834. package/dist/core/tool-repair-health.js.map +1 -1
  835. package/dist/core/tool-repair-settings.d.ts.map +1 -1
  836. package/dist/core/tool-repair-settings.js.map +1 -1
  837. package/dist/core/tool-selection/expected-utility.d.ts.map +1 -1
  838. package/dist/core/tool-selection/expected-utility.js.map +1 -1
  839. package/dist/core/tool-selection/promotion.d.ts.map +1 -1
  840. package/dist/core/tool-selection/promotion.js.map +1 -1
  841. package/dist/core/tool-selection/tool-performance-store.d.ts +2 -0
  842. package/dist/core/tool-selection/tool-performance-store.d.ts.map +1 -1
  843. package/dist/core/tool-selection/tool-performance-store.js +49 -7
  844. package/dist/core/tool-selection/tool-performance-store.js.map +1 -1
  845. package/dist/core/tool-selection/tool-phase-timing.d.ts +19 -0
  846. package/dist/core/tool-selection/tool-phase-timing.d.ts.map +1 -0
  847. package/dist/core/tool-selection/tool-phase-timing.js +63 -0
  848. package/dist/core/tool-selection/tool-phase-timing.js.map +1 -0
  849. package/dist/core/tool-selection/tool-selection-controller.d.ts +2 -5
  850. package/dist/core/tool-selection/tool-selection-controller.d.ts.map +1 -1
  851. package/dist/core/tool-selection/tool-selection-controller.js +50 -30
  852. package/dist/core/tool-selection/tool-selection-controller.js.map +1 -1
  853. package/dist/core/toolkit/reflex-interpreter.d.ts +16 -0
  854. package/dist/core/toolkit/reflex-interpreter.d.ts.map +1 -1
  855. package/dist/core/toolkit/reflex-interpreter.js +21 -0
  856. package/dist/core/toolkit/reflex-interpreter.js.map +1 -1
  857. package/dist/core/toolkit/script-registry.d.ts.map +1 -1
  858. package/dist/core/toolkit/script-registry.js.map +1 -1
  859. package/dist/core/toolkit/script-runner.d.ts.map +1 -1
  860. package/dist/core/toolkit/script-runner.js.map +1 -1
  861. package/dist/core/tools/artifact-retrieve.d.ts.map +1 -1
  862. package/dist/core/tools/artifact-retrieve.js.map +1 -1
  863. package/dist/core/tools/ask-question.d.ts +2 -3
  864. package/dist/core/tools/ask-question.d.ts.map +1 -1
  865. package/dist/core/tools/ask-question.js +14 -40
  866. package/dist/core/tools/ask-question.js.map +1 -1
  867. package/dist/core/tools/bash.d.ts +2 -0
  868. package/dist/core/tools/bash.d.ts.map +1 -1
  869. package/dist/core/tools/bash.js +83 -30
  870. package/dist/core/tools/bash.js.map +1 -1
  871. package/dist/core/tools/context-scout.d.ts.map +1 -1
  872. package/dist/core/tools/context-scout.js.map +1 -1
  873. package/dist/core/tools/delegate-status.d.ts.map +1 -1
  874. package/dist/core/tools/delegate-status.js +9 -7
  875. package/dist/core/tools/delegate-status.js.map +1 -1
  876. package/dist/core/tools/delegate.d.ts.map +1 -1
  877. package/dist/core/tools/delegate.js +6 -6
  878. package/dist/core/tools/delegate.js.map +1 -1
  879. package/dist/core/tools/edit-diff.d.ts.map +1 -1
  880. package/dist/core/tools/edit-diff.js.map +1 -1
  881. package/dist/core/tools/edit.d.ts.map +1 -1
  882. package/dist/core/tools/edit.js.map +1 -1
  883. package/dist/core/tools/extensionify.d.ts.map +1 -1
  884. package/dist/core/tools/extensionify.js.map +1 -1
  885. package/dist/core/tools/fff-search-backend.d.ts +19 -0
  886. package/dist/core/tools/fff-search-backend.d.ts.map +1 -1
  887. package/dist/core/tools/fff-search-backend.js +28 -2
  888. package/dist/core/tools/fff-search-backend.js.map +1 -1
  889. package/dist/core/tools/file-encoding-policy.d.ts.map +1 -1
  890. package/dist/core/tools/file-encoding-policy.js.map +1 -1
  891. package/dist/core/tools/file-mutation-queue.d.ts.map +1 -1
  892. package/dist/core/tools/file-mutation-queue.js.map +1 -1
  893. package/dist/core/tools/find.d.ts +1 -1
  894. package/dist/core/tools/find.d.ts.map +1 -1
  895. package/dist/core/tools/find.js +44 -108
  896. package/dist/core/tools/find.js.map +1 -1
  897. package/dist/core/tools/git-filter.d.ts.map +1 -1
  898. package/dist/core/tools/git-filter.js.map +1 -1
  899. package/dist/core/tools/goal.d.ts.map +1 -1
  900. package/dist/core/tools/goal.js +7 -7
  901. package/dist/core/tools/goal.js.map +1 -1
  902. package/dist/core/tools/grep.d.ts +1 -1
  903. package/dist/core/tools/grep.d.ts.map +1 -1
  904. package/dist/core/tools/grep.js +42 -102
  905. package/dist/core/tools/grep.js.map +1 -1
  906. package/dist/core/tools/index.d.ts.map +1 -1
  907. package/dist/core/tools/index.js.map +1 -1
  908. package/dist/core/tools/ls.d.ts.map +1 -1
  909. package/dist/core/tools/ls.js +20 -36
  910. package/dist/core/tools/ls.js.map +1 -1
  911. package/dist/core/tools/model-fitness.d.ts.map +1 -1
  912. package/dist/core/tools/model-fitness.js.map +1 -1
  913. package/dist/core/tools/orchestration-panel.d.ts +5 -0
  914. package/dist/core/tools/orchestration-panel.d.ts.map +1 -1
  915. package/dist/core/tools/orchestration-panel.js +5 -5
  916. package/dist/core/tools/orchestration-panel.js.map +1 -1
  917. package/dist/core/tools/output-accumulator.d.ts +2 -0
  918. package/dist/core/tools/output-accumulator.d.ts.map +1 -1
  919. package/dist/core/tools/output-accumulator.js +24 -36
  920. package/dist/core/tools/output-accumulator.js.map +1 -1
  921. package/dist/core/tools/path-utils.d.ts.map +1 -1
  922. package/dist/core/tools/path-utils.js.map +1 -1
  923. package/dist/core/tools/persistent-process-coordinator.d.ts +31 -0
  924. package/dist/core/tools/persistent-process-coordinator.d.ts.map +1 -0
  925. package/dist/core/tools/persistent-process-coordinator.js +123 -0
  926. package/dist/core/tools/persistent-process-coordinator.js.map +1 -0
  927. package/dist/core/tools/python.d.ts.map +1 -1
  928. package/dist/core/tools/python.js.map +1 -1
  929. package/dist/core/tools/read.d.ts.map +1 -1
  930. package/dist/core/tools/read.js +14 -13
  931. package/dist/core/tools/read.js.map +1 -1
  932. package/dist/core/tools/render-utils.d.ts +29 -0
  933. package/dist/core/tools/render-utils.d.ts.map +1 -1
  934. package/dist/core/tools/render-utils.js +31 -1
  935. package/dist/core/tools/render-utils.js.map +1 -1
  936. package/dist/core/tools/run-process.d.ts.map +1 -1
  937. package/dist/core/tools/run-process.js.map +1 -1
  938. package/dist/core/tools/run-toolkit-script.d.ts.map +1 -1
  939. package/dist/core/tools/run-toolkit-script.js.map +1 -1
  940. package/dist/core/tools/search-command-guard.d.ts +10 -0
  941. package/dist/core/tools/search-command-guard.d.ts.map +1 -1
  942. package/dist/core/tools/search-command-guard.js +118 -31
  943. package/dist/core/tools/search-command-guard.js.map +1 -1
  944. package/dist/core/tools/search-router.d.ts.map +1 -1
  945. package/dist/core/tools/search-router.js.map +1 -1
  946. package/dist/core/tools/search-tool-runtime.d.ts +19 -0
  947. package/dist/core/tools/search-tool-runtime.d.ts.map +1 -0
  948. package/dist/core/tools/search-tool-runtime.js +12 -0
  949. package/dist/core/tools/search-tool-runtime.js.map +1 -0
  950. package/dist/core/tools/secret-store.d.ts.map +1 -1
  951. package/dist/core/tools/secret-store.js.map +1 -1
  952. package/dist/core/tools/shell-command-parser.d.ts.map +1 -1
  953. package/dist/core/tools/shell-command-parser.js.map +1 -1
  954. package/dist/core/tools/shell-contract-router.d.ts.map +1 -1
  955. package/dist/core/tools/shell-contract-router.js +4 -1
  956. package/dist/core/tools/shell-contract-router.js.map +1 -1
  957. package/dist/core/tools/shell-execution-session.d.ts +4 -0
  958. package/dist/core/tools/shell-execution-session.d.ts.map +1 -0
  959. package/dist/core/tools/shell-execution-session.js +11 -0
  960. package/dist/core/tools/shell-execution-session.js.map +1 -0
  961. package/dist/core/tools/shell-output-projection.d.ts +49 -0
  962. package/dist/core/tools/shell-output-projection.d.ts.map +1 -0
  963. package/dist/core/tools/shell-output-projection.js +381 -0
  964. package/dist/core/tools/shell-output-projection.js.map +1 -0
  965. package/dist/core/tools/shell-session.d.ts +2 -13
  966. package/dist/core/tools/shell-session.d.ts.map +1 -1
  967. package/dist/core/tools/shell-session.js +36 -136
  968. package/dist/core/tools/shell-session.js.map +1 -1
  969. package/dist/core/tools/skill-audit.d.ts.map +1 -1
  970. package/dist/core/tools/skill-audit.js.map +1 -1
  971. package/dist/core/tools/skillify.d.ts.map +1 -1
  972. package/dist/core/tools/skillify.js.map +1 -1
  973. package/dist/core/tools/task-steps.d.ts +8 -8
  974. package/dist/core/tools/task-steps.d.ts.map +1 -1
  975. package/dist/core/tools/task-steps.js +17 -18
  976. package/dist/core/tools/task-steps.js.map +1 -1
  977. package/dist/core/tools/tmux-dispatch.d.ts.map +1 -1
  978. package/dist/core/tools/tmux-dispatch.js.map +1 -1
  979. package/dist/core/tools/tool-definition-wrapper.d.ts.map +1 -1
  980. package/dist/core/tools/tool-definition-wrapper.js.map +1 -1
  981. package/dist/core/tools/tool-task.d.ts +23 -0
  982. package/dist/core/tools/tool-task.d.ts.map +1 -0
  983. package/dist/core/tools/tool-task.js +93 -0
  984. package/dist/core/tools/tool-task.js.map +1 -0
  985. package/dist/core/tools/windows-shell-engine.d.ts +17 -11
  986. package/dist/core/tools/windows-shell-engine.d.ts.map +1 -1
  987. package/dist/core/tools/windows-shell-engine.js +339 -117
  988. package/dist/core/tools/windows-shell-engine.js.map +1 -1
  989. package/dist/core/tools/windows-shell-state.d.ts.map +1 -1
  990. package/dist/core/tools/windows-shell-state.js.map +1 -1
  991. package/dist/core/tools/worktree-sync.d.ts.map +1 -1
  992. package/dist/core/tools/worktree-sync.js +8 -12
  993. package/dist/core/tools/worktree-sync.js.map +1 -1
  994. package/dist/core/tools/write.d.ts.map +1 -1
  995. package/dist/core/tools/write.js +0 -1
  996. package/dist/core/tools/write.js.map +1 -1
  997. package/dist/core/trust-manager.d.ts.map +1 -1
  998. package/dist/core/trust-manager.js +7 -40
  999. package/dist/core/trust-manager.js.map +1 -1
  1000. package/dist/core/util/atomic-file.d.ts +19 -0
  1001. package/dist/core/util/atomic-file.d.ts.map +1 -1
  1002. package/dist/core/util/atomic-file.js +50 -15
  1003. package/dist/core/util/atomic-file.js.map +1 -1
  1004. package/dist/core/util/bounded-file.d.ts.map +1 -1
  1005. package/dist/core/util/bounded-file.js.map +1 -1
  1006. package/dist/core/util/bounded-jsonl.d.ts.map +1 -1
  1007. package/dist/core/util/bounded-jsonl.js +2 -9
  1008. package/dist/core/util/bounded-jsonl.js.map +1 -1
  1009. package/dist/core/util/bounded-value.d.ts.map +1 -1
  1010. package/dist/core/util/bounded-value.js.map +1 -1
  1011. package/dist/core/util/json-size.d.ts +3 -0
  1012. package/dist/core/util/json-size.d.ts.map +1 -0
  1013. package/dist/core/util/json-size.js +95 -0
  1014. package/dist/core/util/json-size.js.map +1 -0
  1015. package/dist/core/util/minimatch-cache.d.ts.map +1 -1
  1016. package/dist/core/util/minimatch-cache.js.map +1 -1
  1017. package/dist/core/util/value-guards.d.ts.map +1 -1
  1018. package/dist/core/util/value-guards.js.map +1 -1
  1019. package/dist/core/worktree-sync/codes.d.ts.map +1 -1
  1020. package/dist/core/worktree-sync/git-engine.d.ts.map +1 -1
  1021. package/dist/core/worktree-sync/git-engine.js +20 -36
  1022. package/dist/core/worktree-sync/git-engine.js.map +1 -1
  1023. package/dist/core/worktree-sync/lane-gate.d.ts.map +1 -1
  1024. package/dist/core/worktree-sync/lane-gate.js +1 -4
  1025. package/dist/core/worktree-sync/lane-gate.js.map +1 -1
  1026. package/dist/core/worktree-sync/runtime.d.ts.map +1 -1
  1027. package/dist/core/worktree-sync/runtime.js.map +1 -1
  1028. package/dist/core/worktree-sync/store.d.ts.map +1 -1
  1029. package/dist/core/worktree-sync/store.js.map +1 -1
  1030. package/dist/core/worktree-sync/watcher.d.ts.map +1 -1
  1031. package/dist/core/worktree-sync/watcher.js.map +1 -1
  1032. package/dist/index.d.ts.map +1 -1
  1033. package/dist/index.js.map +1 -1
  1034. package/dist/main.d.ts.map +1 -1
  1035. package/dist/main.js +10 -32
  1036. package/dist/main.js.map +1 -1
  1037. package/dist/migrations.d.ts.map +1 -1
  1038. package/dist/migrations.js +6 -19
  1039. package/dist/migrations.js.map +1 -1
  1040. package/dist/modes/index.d.ts.map +1 -1
  1041. package/dist/modes/interactive/auth-dialogs-controller.d.ts +3 -0
  1042. package/dist/modes/interactive/auth-dialogs-controller.d.ts.map +1 -1
  1043. package/dist/modes/interactive/auth-dialogs-controller.js +96 -132
  1044. package/dist/modes/interactive/auth-dialogs-controller.js.map +1 -1
  1045. package/dist/modes/interactive/auto-learn-controller.d.ts +1 -31
  1046. package/dist/modes/interactive/auto-learn-controller.d.ts.map +1 -1
  1047. package/dist/modes/interactive/auto-learn-controller.js +86 -307
  1048. package/dist/modes/interactive/auto-learn-controller.js.map +1 -1
  1049. package/dist/modes/interactive/autocomplete-provider.d.ts.map +1 -1
  1050. package/dist/modes/interactive/autocomplete-provider.js.map +1 -1
  1051. package/dist/modes/interactive/autonomy-commands.d.ts.map +1 -1
  1052. package/dist/modes/interactive/autonomy-commands.js +2 -8
  1053. package/dist/modes/interactive/autonomy-commands.js.map +1 -1
  1054. package/dist/modes/interactive/clipboard-input.d.ts +5 -1
  1055. package/dist/modes/interactive/clipboard-input.d.ts.map +1 -1
  1056. package/dist/modes/interactive/clipboard-input.js +17 -0
  1057. package/dist/modes/interactive/clipboard-input.js.map +1 -1
  1058. package/dist/modes/interactive/compaction-queue.d.ts.map +1 -1
  1059. package/dist/modes/interactive/compaction-queue.js +13 -18
  1060. package/dist/modes/interactive/compaction-queue.js.map +1 -1
  1061. package/dist/modes/interactive/components/activity-lane.d.ts.map +1 -1
  1062. package/dist/modes/interactive/components/activity-lane.js +6 -10
  1063. package/dist/modes/interactive/components/activity-lane.js.map +1 -1
  1064. package/dist/modes/interactive/components/armin.d.ts +1 -0
  1065. package/dist/modes/interactive/components/armin.d.ts.map +1 -1
  1066. package/dist/modes/interactive/components/armin.js +10 -21
  1067. package/dist/modes/interactive/components/armin.js.map +1 -1
  1068. package/dist/modes/interactive/components/assistant-message.d.ts.map +1 -1
  1069. package/dist/modes/interactive/components/assistant-message.js +1 -6
  1070. package/dist/modes/interactive/components/assistant-message.js.map +1 -1
  1071. package/dist/modes/interactive/components/bash-execution.d.ts.map +1 -1
  1072. package/dist/modes/interactive/components/bash-execution.js +4 -9
  1073. package/dist/modes/interactive/components/bash-execution.js.map +1 -1
  1074. package/dist/modes/interactive/components/bordered-loader.d.ts.map +1 -1
  1075. package/dist/modes/interactive/components/bordered-loader.js +0 -3
  1076. package/dist/modes/interactive/components/bordered-loader.js.map +1 -1
  1077. package/dist/modes/interactive/components/branch-summary-message.d.ts +3 -8
  1078. package/dist/modes/interactive/components/branch-summary-message.d.ts.map +1 -1
  1079. package/dist/modes/interactive/components/branch-summary-message.js +13 -35
  1080. package/dist/modes/interactive/components/branch-summary-message.js.map +1 -1
  1081. package/dist/modes/interactive/components/compaction-summary-message.d.ts +3 -8
  1082. package/dist/modes/interactive/components/compaction-summary-message.d.ts.map +1 -1
  1083. package/dist/modes/interactive/components/compaction-summary-message.js +14 -36
  1084. package/dist/modes/interactive/components/compaction-summary-message.js.map +1 -1
  1085. package/dist/modes/interactive/components/config-selector.d.ts +1 -0
  1086. package/dist/modes/interactive/components/config-selector.d.ts.map +1 -1
  1087. package/dist/modes/interactive/components/config-selector.js +20 -43
  1088. package/dist/modes/interactive/components/config-selector.js.map +1 -1
  1089. package/dist/modes/interactive/components/countdown-timer.d.ts.map +1 -1
  1090. package/dist/modes/interactive/components/countdown-timer.js +0 -5
  1091. package/dist/modes/interactive/components/countdown-timer.js.map +1 -1
  1092. package/dist/modes/interactive/components/custom-editor.d.ts +2 -0
  1093. package/dist/modes/interactive/components/custom-editor.d.ts.map +1 -1
  1094. package/dist/modes/interactive/components/custom-editor.js +4 -8
  1095. package/dist/modes/interactive/components/custom-editor.js.map +1 -1
  1096. package/dist/modes/interactive/components/custom-message.d.ts.map +1 -1
  1097. package/dist/modes/interactive/components/custom-message.js +1 -6
  1098. package/dist/modes/interactive/components/custom-message.js.map +1 -1
  1099. package/dist/modes/interactive/components/daxnuts.d.ts.map +1 -1
  1100. package/dist/modes/interactive/components/daxnuts.js +6 -8
  1101. package/dist/modes/interactive/components/daxnuts.js.map +1 -1
  1102. package/dist/modes/interactive/components/diff.d.ts.map +1 -1
  1103. package/dist/modes/interactive/components/diff.js.map +1 -1
  1104. package/dist/modes/interactive/components/dynamic-border.d.ts.map +1 -1
  1105. package/dist/modes/interactive/components/dynamic-border.js +0 -1
  1106. package/dist/modes/interactive/components/dynamic-border.js.map +1 -1
  1107. package/dist/modes/interactive/components/earendil-announcement.d.ts.map +1 -1
  1108. package/dist/modes/interactive/components/earendil-announcement.js.map +1 -1
  1109. package/dist/modes/interactive/components/expandable-markdown-message.d.ts +21 -0
  1110. package/dist/modes/interactive/components/expandable-markdown-message.d.ts.map +1 -0
  1111. package/dist/modes/interactive/components/expandable-markdown-message.js +48 -0
  1112. package/dist/modes/interactive/components/expandable-markdown-message.js.map +1 -0
  1113. package/dist/modes/interactive/components/expandable-text.d.ts.map +1 -1
  1114. package/dist/modes/interactive/components/expandable-text.js +0 -2
  1115. package/dist/modes/interactive/components/expandable-text.js.map +1 -1
  1116. package/dist/modes/interactive/components/extension-editor.d.ts.map +1 -1
  1117. package/dist/modes/interactive/components/extension-editor.js +1 -9
  1118. package/dist/modes/interactive/components/extension-editor.js.map +1 -1
  1119. package/dist/modes/interactive/components/extension-input.d.ts.map +1 -1
  1120. package/dist/modes/interactive/components/extension-input.js +2 -8
  1121. package/dist/modes/interactive/components/extension-input.js.map +1 -1
  1122. package/dist/modes/interactive/components/extension-selector.d.ts.map +1 -1
  1123. package/dist/modes/interactive/components/extension-selector.js +5 -20
  1124. package/dist/modes/interactive/components/extension-selector.js.map +1 -1
  1125. package/dist/modes/interactive/components/fitness-role-selector.d.ts.map +1 -1
  1126. package/dist/modes/interactive/components/fitness-role-selector.js +0 -1
  1127. package/dist/modes/interactive/components/fitness-role-selector.js.map +1 -1
  1128. package/dist/modes/interactive/components/footer.d.ts.map +1 -1
  1129. package/dist/modes/interactive/components/footer.js +1 -5
  1130. package/dist/modes/interactive/components/footer.js.map +1 -1
  1131. package/dist/modes/interactive/components/index.d.ts.map +1 -1
  1132. package/dist/modes/interactive/components/keybinding-hints.d.ts.map +1 -1
  1133. package/dist/modes/interactive/components/keybinding-hints.js.map +1 -1
  1134. package/dist/modes/interactive/components/login-dialog.d.ts.map +1 -1
  1135. package/dist/modes/interactive/components/login-dialog.js +4 -10
  1136. package/dist/modes/interactive/components/login-dialog.js.map +1 -1
  1137. package/dist/modes/interactive/components/model-selector.d.ts +2 -2
  1138. package/dist/modes/interactive/components/model-selector.d.ts.map +1 -1
  1139. package/dist/modes/interactive/components/model-selector.js +21 -44
  1140. package/dist/modes/interactive/components/model-selector.js.map +1 -1
  1141. package/dist/modes/interactive/components/model-suggestion-selector.d.ts.map +1 -1
  1142. package/dist/modes/interactive/components/model-suggestion-selector.js +0 -1
  1143. package/dist/modes/interactive/components/model-suggestion-selector.js.map +1 -1
  1144. package/dist/modes/interactive/components/oauth-selector.d.ts +1 -1
  1145. package/dist/modes/interactive/components/oauth-selector.d.ts.map +1 -1
  1146. package/dist/modes/interactive/components/oauth-selector.js +16 -32
  1147. package/dist/modes/interactive/components/oauth-selector.js.map +1 -1
  1148. package/dist/modes/interactive/components/profile-resource-editor.d.ts +3 -4
  1149. package/dist/modes/interactive/components/profile-resource-editor.d.ts.map +1 -1
  1150. package/dist/modes/interactive/components/profile-resource-editor.js +34 -93
  1151. package/dist/modes/interactive/components/profile-resource-editor.js.map +1 -1
  1152. package/dist/modes/interactive/components/profile-selector.d.ts.map +1 -1
  1153. package/dist/modes/interactive/components/profile-selector.js +0 -1
  1154. package/dist/modes/interactive/components/profile-selector.js.map +1 -1
  1155. package/dist/modes/interactive/components/scoped-models-selector.d.ts +3 -4
  1156. package/dist/modes/interactive/components/scoped-models-selector.d.ts.map +1 -1
  1157. package/dist/modes/interactive/components/scoped-models-selector.js +34 -79
  1158. package/dist/modes/interactive/components/scoped-models-selector.js.map +1 -1
  1159. package/dist/modes/interactive/components/selector-list.d.ts +63 -0
  1160. package/dist/modes/interactive/components/selector-list.d.ts.map +1 -0
  1161. package/dist/modes/interactive/components/selector-list.js +186 -0
  1162. package/dist/modes/interactive/components/selector-list.js.map +1 -0
  1163. package/dist/modes/interactive/components/session-selector-search.d.ts.map +1 -1
  1164. package/dist/modes/interactive/components/session-selector-search.js.map +1 -1
  1165. package/dist/modes/interactive/components/session-selector.d.ts.map +1 -1
  1166. package/dist/modes/interactive/components/session-selector.js +34 -59
  1167. package/dist/modes/interactive/components/session-selector.js.map +1 -1
  1168. package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
  1169. package/dist/modes/interactive/components/settings-selector.js +40 -138
  1170. package/dist/modes/interactive/components/settings-selector.js.map +1 -1
  1171. package/dist/modes/interactive/components/show-images-selector.d.ts +2 -4
  1172. package/dist/modes/interactive/components/show-images-selector.d.ts.map +1 -1
  1173. package/dist/modes/interactive/components/show-images-selector.js +9 -28
  1174. package/dist/modes/interactive/components/show-images-selector.js.map +1 -1
  1175. package/dist/modes/interactive/components/skill-invocation-message.d.ts +3 -8
  1176. package/dist/modes/interactive/components/skill-invocation-message.d.ts.map +1 -1
  1177. package/dist/modes/interactive/components/skill-invocation-message.js +12 -40
  1178. package/dist/modes/interactive/components/skill-invocation-message.js.map +1 -1
  1179. package/dist/modes/interactive/components/theme-selector.d.ts +2 -5
  1180. package/dist/modes/interactive/components/theme-selector.d.ts.map +1 -1
  1181. package/dist/modes/interactive/components/theme-selector.js +11 -37
  1182. package/dist/modes/interactive/components/theme-selector.js.map +1 -1
  1183. package/dist/modes/interactive/components/thinking-selector.d.ts +2 -4
  1184. package/dist/modes/interactive/components/thinking-selector.d.ts.map +1 -1
  1185. package/dist/modes/interactive/components/thinking-selector.js +9 -31
  1186. package/dist/modes/interactive/components/thinking-selector.js.map +1 -1
  1187. package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
  1188. package/dist/modes/interactive/components/tool-execution.js +9 -28
  1189. package/dist/modes/interactive/components/tool-execution.js.map +1 -1
  1190. package/dist/modes/interactive/components/tool-group.d.ts.map +1 -1
  1191. package/dist/modes/interactive/components/tool-group.js +2 -3
  1192. package/dist/modes/interactive/components/tool-group.js.map +1 -1
  1193. package/dist/modes/interactive/components/tool-panel-registry.d.ts.map +1 -1
  1194. package/dist/modes/interactive/components/tool-panel-registry.js +5 -3
  1195. package/dist/modes/interactive/components/tool-panel-registry.js.map +1 -1
  1196. package/dist/modes/interactive/components/tool-title.d.ts.map +1 -1
  1197. package/dist/modes/interactive/components/tool-title.js +0 -4
  1198. package/dist/modes/interactive/components/tool-title.js.map +1 -1
  1199. package/dist/modes/interactive/components/transcript-pager.d.ts +26 -0
  1200. package/dist/modes/interactive/components/transcript-pager.d.ts.map +1 -0
  1201. package/dist/modes/interactive/components/transcript-pager.js +81 -0
  1202. package/dist/modes/interactive/components/transcript-pager.js.map +1 -0
  1203. package/dist/modes/interactive/components/tree-selector.d.ts +1 -12
  1204. package/dist/modes/interactive/components/tree-selector.d.ts.map +1 -1
  1205. package/dist/modes/interactive/components/tree-selector.js +42 -402
  1206. package/dist/modes/interactive/components/tree-selector.js.map +1 -1
  1207. package/dist/modes/interactive/components/trust-selector.d.ts.map +1 -1
  1208. package/dist/modes/interactive/components/trust-selector.js +4 -16
  1209. package/dist/modes/interactive/components/trust-selector.js.map +1 -1
  1210. package/dist/modes/interactive/components/usage-action-selector.d.ts.map +1 -1
  1211. package/dist/modes/interactive/components/usage-action-selector.js +2 -10
  1212. package/dist/modes/interactive/components/usage-action-selector.js.map +1 -1
  1213. package/dist/modes/interactive/components/user-message-selector.d.ts.map +1 -1
  1214. package/dist/modes/interactive/components/user-message-selector.js +3 -6
  1215. package/dist/modes/interactive/components/user-message-selector.js.map +1 -1
  1216. package/dist/modes/interactive/components/user-message.d.ts.map +1 -1
  1217. package/dist/modes/interactive/components/user-message.js +0 -1
  1218. package/dist/modes/interactive/components/user-message.js.map +1 -1
  1219. package/dist/modes/interactive/components/visual-truncate.d.ts.map +1 -1
  1220. package/dist/modes/interactive/components/visual-truncate.js.map +1 -1
  1221. package/dist/modes/interactive/config-backup.d.ts.map +1 -1
  1222. package/dist/modes/interactive/config-backup.js.map +1 -1
  1223. package/dist/modes/interactive/editor-overlay-host.d.ts.map +1 -1
  1224. package/dist/modes/interactive/editor-overlay-host.js +0 -3
  1225. package/dist/modes/interactive/editor-overlay-host.js.map +1 -1
  1226. package/dist/modes/interactive/extension-ui-host.d.ts +2 -0
  1227. package/dist/modes/interactive/extension-ui-host.d.ts.map +1 -1
  1228. package/dist/modes/interactive/extension-ui-host.js +51 -72
  1229. package/dist/modes/interactive/extension-ui-host.js.map +1 -1
  1230. package/dist/modes/interactive/external-editor.d.ts.map +1 -1
  1231. package/dist/modes/interactive/external-editor.js +2 -15
  1232. package/dist/modes/interactive/external-editor.js.map +1 -1
  1233. package/dist/modes/interactive/history-reload-math.d.ts.map +1 -1
  1234. package/dist/modes/interactive/history-reload-math.js.map +1 -1
  1235. package/dist/modes/interactive/interactive-event-controller.d.ts.map +1 -1
  1236. package/dist/modes/interactive/interactive-event-controller.js +23 -16
  1237. package/dist/modes/interactive/interactive-event-controller.js.map +1 -1
  1238. package/dist/modes/interactive/interactive-mode.d.ts +13 -4
  1239. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  1240. package/dist/modes/interactive/interactive-mode.js +123 -204
  1241. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  1242. package/dist/modes/interactive/interactive-selection-prompts.d.ts +20 -0
  1243. package/dist/modes/interactive/interactive-selection-prompts.d.ts.map +1 -0
  1244. package/dist/modes/interactive/interactive-selection-prompts.js +43 -0
  1245. package/dist/modes/interactive/interactive-selection-prompts.js.map +1 -0
  1246. package/dist/modes/interactive/key-handlers.d.ts +2 -1
  1247. package/dist/modes/interactive/key-handlers.d.ts.map +1 -1
  1248. package/dist/modes/interactive/key-handlers.js +4 -2
  1249. package/dist/modes/interactive/key-handlers.js.map +1 -1
  1250. package/dist/modes/interactive/loaded-resources-view.d.ts.map +1 -1
  1251. package/dist/modes/interactive/loaded-resources-view.js.map +1 -1
  1252. package/dist/modes/interactive/local-model-commands.d.ts.map +1 -1
  1253. package/dist/modes/interactive/local-model-commands.js +4 -9
  1254. package/dist/modes/interactive/local-model-commands.js.map +1 -1
  1255. package/dist/modes/interactive/model-fitness-presentation.d.ts +21 -0
  1256. package/dist/modes/interactive/model-fitness-presentation.d.ts.map +1 -0
  1257. package/dist/modes/interactive/model-fitness-presentation.js +13 -0
  1258. package/dist/modes/interactive/model-fitness-presentation.js.map +1 -0
  1259. package/dist/modes/interactive/profile-menu-controller.d.ts +2 -0
  1260. package/dist/modes/interactive/profile-menu-controller.d.ts.map +1 -1
  1261. package/dist/modes/interactive/profile-menu-controller.js +79 -171
  1262. package/dist/modes/interactive/profile-menu-controller.js.map +1 -1
  1263. package/dist/modes/interactive/report-commands.d.ts +2 -0
  1264. package/dist/modes/interactive/report-commands.d.ts.map +1 -1
  1265. package/dist/modes/interactive/report-commands.js +12 -6
  1266. package/dist/modes/interactive/report-commands.js.map +1 -1
  1267. package/dist/modes/interactive/resource-display.d.ts.map +1 -1
  1268. package/dist/modes/interactive/resource-display.js.map +1 -1
  1269. package/dist/modes/interactive/resource-shell-commands.d.ts.map +1 -1
  1270. package/dist/modes/interactive/resource-shell-commands.js +6 -23
  1271. package/dist/modes/interactive/resource-shell-commands.js.map +1 -1
  1272. package/dist/modes/interactive/session-flow-commands.d.ts.map +1 -1
  1273. package/dist/modes/interactive/session-flow-commands.js +21 -25
  1274. package/dist/modes/interactive/session-flow-commands.js.map +1 -1
  1275. package/dist/modes/interactive/session-io-commands.d.ts.map +1 -1
  1276. package/dist/modes/interactive/session-io-commands.js.map +1 -1
  1277. package/dist/modes/interactive/session-replacement-errors.d.ts.map +1 -1
  1278. package/dist/modes/interactive/session-replacement-errors.js.map +1 -1
  1279. package/dist/modes/interactive/settings-selector-flow.d.ts.map +1 -1
  1280. package/dist/modes/interactive/settings-selector-flow.js.map +1 -1
  1281. package/dist/modes/interactive/signal-lifecycle.d.ts.map +1 -1
  1282. package/dist/modes/interactive/signal-lifecycle.js.map +1 -1
  1283. package/dist/modes/interactive/startup-checks.d.ts.map +1 -1
  1284. package/dist/modes/interactive/startup-checks.js +12 -8
  1285. package/dist/modes/interactive/startup-checks.js.map +1 -1
  1286. package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
  1287. package/dist/modes/interactive/theme/theme.js +10 -76
  1288. package/dist/modes/interactive/theme/theme.js.map +1 -1
  1289. package/dist/modes/interactive/usage-commands.d.ts.map +1 -1
  1290. package/dist/modes/interactive/usage-commands.js.map +1 -1
  1291. package/dist/modes/print-mode.d.ts.map +1 -1
  1292. package/dist/modes/print-mode.js +5 -22
  1293. package/dist/modes/print-mode.js.map +1 -1
  1294. package/dist/modes/rpc/jsonl.d.ts.map +1 -1
  1295. package/dist/modes/rpc/jsonl.js +1 -1
  1296. package/dist/modes/rpc/jsonl.js.map +1 -1
  1297. package/dist/modes/rpc/rpc-client.d.ts.map +1 -1
  1298. package/dist/modes/rpc/rpc-client.js +7 -8
  1299. package/dist/modes/rpc/rpc-client.js.map +1 -1
  1300. package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
  1301. package/dist/modes/rpc/rpc-mode.js +5 -20
  1302. package/dist/modes/rpc/rpc-mode.js.map +1 -1
  1303. package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
  1304. package/dist/modes/rpc/rpc-types.js.map +1 -1
  1305. package/dist/modes/termination-signals.d.ts +4 -0
  1306. package/dist/modes/termination-signals.d.ts.map +1 -0
  1307. package/dist/modes/termination-signals.js +21 -0
  1308. package/dist/modes/termination-signals.js.map +1 -0
  1309. package/dist/package-manager-cli.d.ts.map +1 -1
  1310. package/dist/package-manager-cli.js.map +1 -1
  1311. package/dist/utils/ansi-colors.d.ts +5 -0
  1312. package/dist/utils/ansi-colors.d.ts.map +1 -0
  1313. package/dist/utils/ansi-colors.js +38 -0
  1314. package/dist/utils/ansi-colors.js.map +1 -0
  1315. package/dist/utils/ansi.d.ts.map +1 -1
  1316. package/dist/utils/ansi.js.map +1 -1
  1317. package/dist/utils/changelog.d.ts.map +1 -1
  1318. package/dist/utils/changelog.js.map +1 -1
  1319. package/dist/utils/child-process.d.ts.map +1 -1
  1320. package/dist/utils/child-process.js.map +1 -1
  1321. package/dist/utils/clipboard-image.d.ts.map +1 -1
  1322. package/dist/utils/clipboard-image.js.map +1 -1
  1323. package/dist/utils/clipboard-native.d.ts.map +1 -1
  1324. package/dist/utils/clipboard-native.js.map +1 -1
  1325. package/dist/utils/clipboard.d.ts.map +1 -1
  1326. package/dist/utils/clipboard.js.map +1 -1
  1327. package/dist/utils/deprecation.d.ts.map +1 -1
  1328. package/dist/utils/deprecation.js.map +1 -1
  1329. package/dist/utils/exif-orientation.d.ts.map +1 -1
  1330. package/dist/utils/exif-orientation.js.map +1 -1
  1331. package/dist/utils/external-editor-command.d.ts.map +1 -1
  1332. package/dist/utils/external-editor-command.js.map +1 -1
  1333. package/dist/utils/frontmatter.d.ts.map +1 -1
  1334. package/dist/utils/frontmatter.js.map +1 -1
  1335. package/dist/utils/fs-watch.d.ts.map +1 -1
  1336. package/dist/utils/fs-watch.js.map +1 -1
  1337. package/dist/utils/git.d.ts.map +1 -1
  1338. package/dist/utils/git.js +20 -28
  1339. package/dist/utils/git.js.map +1 -1
  1340. package/dist/utils/highlight-js-languages.d.ts.map +1 -1
  1341. package/dist/utils/html.d.ts.map +1 -1
  1342. package/dist/utils/html.js.map +1 -1
  1343. package/dist/utils/image-convert.d.ts.map +1 -1
  1344. package/dist/utils/image-convert.js.map +1 -1
  1345. package/dist/utils/image-resize-core.d.ts.map +1 -1
  1346. package/dist/utils/image-resize-core.js.map +1 -1
  1347. package/dist/utils/image-resize-worker.d.ts.map +1 -1
  1348. package/dist/utils/image-resize-worker.js.map +1 -1
  1349. package/dist/utils/image-resize.d.ts.map +1 -1
  1350. package/dist/utils/image-resize.js.map +1 -1
  1351. package/dist/utils/json.d.ts.map +1 -1
  1352. package/dist/utils/json.js.map +1 -1
  1353. package/dist/utils/mime.d.ts.map +1 -1
  1354. package/dist/utils/mime.js.map +1 -1
  1355. package/dist/utils/open-browser.d.ts.map +1 -1
  1356. package/dist/utils/open-browser.js.map +1 -1
  1357. package/dist/utils/paths.d.ts.map +1 -1
  1358. package/dist/utils/paths.js.map +1 -1
  1359. package/dist/utils/photon.d.ts.map +1 -1
  1360. package/dist/utils/photon.js.map +1 -1
  1361. package/dist/utils/pi-user-agent.d.ts.map +1 -1
  1362. package/dist/utils/pi-user-agent.js.map +1 -1
  1363. package/dist/utils/platform.d.ts.map +1 -1
  1364. package/dist/utils/platform.js.map +1 -1
  1365. package/dist/utils/process-memory.d.ts.map +1 -1
  1366. package/dist/utils/process-memory.js.map +1 -1
  1367. package/dist/utils/safe-write-stream.d.ts.map +1 -1
  1368. package/dist/utils/safe-write-stream.js.map +1 -1
  1369. package/dist/utils/shell.d.ts.map +1 -1
  1370. package/dist/utils/shell.js.map +1 -1
  1371. package/dist/utils/sleep.d.ts.map +1 -1
  1372. package/dist/utils/sleep.js +2 -15
  1373. package/dist/utils/sleep.js.map +1 -1
  1374. package/dist/utils/stdin-events.d.ts +8 -0
  1375. package/dist/utils/stdin-events.d.ts.map +1 -0
  1376. package/dist/utils/stdin-events.js +19 -0
  1377. package/dist/utils/stdin-events.js.map +1 -0
  1378. package/dist/utils/syntax-highlight.d.ts.map +1 -1
  1379. package/dist/utils/syntax-highlight.js +20 -13
  1380. package/dist/utils/syntax-highlight.js.map +1 -1
  1381. package/dist/utils/tools-manager.d.ts.map +1 -1
  1382. package/dist/utils/tools-manager.js.map +1 -1
  1383. package/dist/utils/version-check.d.ts.map +1 -1
  1384. package/dist/utils/version-check.js.map +1 -1
  1385. package/dist/utils/windows-self-update.d.ts.map +1 -1
  1386. package/dist/utils/windows-self-update.js.map +1 -1
  1387. package/dist/utils/work-directory.d.ts.map +1 -1
  1388. package/dist/utils/work-directory.js.map +1 -1
  1389. package/docs/compaction.md +11 -3
  1390. package/docs/sessions.md +6 -0
  1391. package/docs/settings.md +1 -1
  1392. package/docs/windows.md +26 -1
  1393. package/docs/work-directory.md +9 -1
  1394. package/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
  1395. package/examples/extensions/custom-provider-anthropic/package.json +1 -1
  1396. package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
  1397. package/examples/extensions/sandbox/package-lock.json +2 -2
  1398. package/examples/extensions/sandbox/package.json +1 -1
  1399. package/examples/extensions/with-deps/package-lock.json +2 -2
  1400. package/examples/extensions/with-deps/package.json +1 -1
  1401. package/npm-shrinkwrap.json +16 -16
  1402. package/package.json +10 -10
  1403. package/dist/utils/streaming-lines.d.ts +0 -20
  1404. package/dist/utils/streaming-lines.d.ts.map +0 -1
  1405. package/dist/utils/streaming-lines.js +0 -79
  1406. package/dist/utils/streaming-lines.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"interactive-mode.js","sourceRoot":"","sources":["../../../src/modes/interactive/interactive-mode.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Interactive mode for the coding agent.\n * Handles TUI rendering and user interaction, delegating business logic to AgentSession.\n */\n\nimport * as fs from \"node:fs\";\nimport * as path from \"node:path\";\nimport type { AgentMessage, ToolCallRepairInfo } from \"@caupulican/pi-agent-core\";\nimport type { SessionContext, SessionManager, TruncationResult } from \"@caupulican/pi-agent-core/node\";\nimport type { AssistantMessage, ImageContent, Message, Model, ToolCall } from \"@caupulican/pi-ai\";\nimport type { AutocompleteProvider, EditorComponent, Keybinding, MarkdownTheme, SelectItem } from \"@caupulican/pi-tui\";\nimport {\n\ttype Component,\n\tContainer,\n\tLoader,\n\ttype LoaderIndicatorOptions,\n\tProcessTerminal,\n\tSpacer,\n\tsetKeybindings,\n\tText,\n\tTUI,\n} from \"@caupulican/pi-tui\";\nimport { APP_NAME, APP_TITLE, getAgentDir, VERSION } from \"../../config.ts\";\nimport { type AgentSession, type AgentSessionEvent, parseSkillBlock } from \"../../core/agent-session.ts\";\nimport type { AgentSessionRuntime } from \"../../core/agent-session-runtime.ts\";\nimport type { AutocompleteProviderFactory, ExtensionCommandContext } from \"../../core/extensions/index.ts\";\nimport { FooterDataProvider } from \"../../core/footer-data-provider.ts\";\nimport {\n\tDEFAULT_GOAL_CONTINUE_MAX_STALL_TURNS,\n\tDEFAULT_GOAL_CONTINUE_MAX_TURNS,\n\tDEFAULT_GOAL_CONTINUE_MAX_WALL_CLOCK_MINUTES,\n\tMAX_GOAL_CONTINUE_MAX_STALL_TURNS,\n\tMAX_GOAL_CONTINUE_MAX_TURNS,\n\tMAX_GOAL_CONTINUE_MAX_WALL_CLOCK_MINUTES,\n} from \"../../core/goals/goal-continuation-defaults.ts\";\nimport { configureHttpDispatcher } from \"../../core/http-dispatcher.ts\";\nimport { type AppKeybinding, KeybindingsManager } from \"../../core/keybindings.ts\";\nimport type { PrismLlamaCppRuntime } from \"../../core/models/llamacpp-runtime.ts\";\nimport type { OllamaRuntime, TransformersRuntime } from \"../../core/models/local-runtime.ts\";\nimport { formatMissingSessionCwdPrompt, type MissingSessionCwdError } from \"../../core/session-cwd.ts\";\nimport { SessionImageStore } from \"../../core/session-image-store.ts\";\nimport type {\n\tAutoLearnSettings,\n\tAutonomyMode,\n\tSelfModificationSettings,\n\tSettingsScope,\n} from \"../../core/settings-manager.ts\";\nimport { isRecordObject } from \"../../core/util/value-guards.ts\";\nimport { resolvePath } from \"../../utils/paths.ts\";\nimport { ensureTool } from \"../../utils/tools-manager.ts\";\nimport { checkForNewPiVersion, type LatestPiRelease } from \"../../utils/version-check.ts\";\nimport { AuthDialogsController } from \"./auth-dialogs-controller.ts\";\nimport { AutoLearnController, type AutoLearnState } from \"./auto-learn-controller.ts\";\nimport * as autocompleteProvider from \"./autocomplete-provider.ts\";\nimport * as autonomyCommands from \"./autonomy-commands.ts\";\nimport * as clipboardInput from \"./clipboard-input.ts\";\nimport * as compactionQueue from \"./compaction-queue.ts\";\nimport { ActivityLaneComponent, type ActivityLaneKind } from \"./components/activity-lane.ts\";\nimport { AssistantMessageComponent } from \"./components/assistant-message.ts\";\nimport { BashExecutionComponent } from \"./components/bash-execution.ts\";\nimport { BranchSummaryMessageComponent } from \"./components/branch-summary-message.ts\";\nimport { CompactionSummaryMessageComponent } from \"./components/compaction-summary-message.ts\";\nimport type { CountdownTimer } from \"./components/countdown-timer.ts\";\nimport { CustomEditor } from \"./components/custom-editor.ts\";\nimport { CustomMessageComponent } from \"./components/custom-message.ts\";\nimport { DynamicBorder } from \"./components/dynamic-border.ts\";\nimport { ExpandableText, isExpandable } from \"./components/expandable-text.ts\";\nimport type { FitnessRole } from \"./components/fitness-role-selector.ts\";\nimport { FooterComponent } from \"./components/footer.ts\";\nimport { formatKeyText, keyDisplayText, keyHint, keyText, rawKeyHint } from \"./components/keybinding-hints.ts\";\nimport { SkillInvocationMessageComponent } from \"./components/skill-invocation-message.ts\";\nimport { ToolExecutionComponent } from \"./components/tool-execution.ts\";\nimport { ToolGroupComponent } from \"./components/tool-group.ts\";\nimport {\n\tgetToolPanelActionKey,\n\tshouldReuseToolPanelInPlace,\n\tToolPanelRegistry,\n} from \"./components/tool-panel-registry.ts\";\nimport { UserMessageComponent } from \"./components/user-message.ts\";\nimport * as configBackup from \"./config-backup.ts\";\nimport { EditorOverlayHost } from \"./editor-overlay-host.ts\";\nimport { ExtensionUiHost } from \"./extension-ui-host.ts\";\nimport { openEditorForPath, openExternalEditor } from \"./external-editor.ts\";\nimport * as historyReloadMath from \"./history-reload-math.ts\";\nimport { handleInteractiveEvent, type InteractiveEventHost } from \"./interactive-event-controller.ts\";\nimport * as keyHandlers from \"./key-handlers.ts\";\nimport { type LoadedResourcesViewOptions, renderLoadedResources } from \"./loaded-resources-view.ts\";\nimport * as localModelCommands from \"./local-model-commands.ts\";\nimport { ProfileMenuController } from \"./profile-menu-controller.ts\";\nimport * as reportCommands from \"./report-commands.ts\";\nimport * as resourceShellCommands from \"./resource-shell-commands.ts\";\nimport * as sessionFlows from \"./session-flow-commands.ts\";\nimport * as sessionIoCommands from \"./session-io-commands.ts\";\nimport { handleNonFatalSessionReplacementError } from \"./session-replacement-errors.ts\";\nimport * as settingsSelectorFlow from \"./settings-selector-flow.ts\";\nimport * as signalLifecycle from \"./signal-lifecycle.ts\";\nimport * as startupChecks from \"./startup-checks.ts\";\nimport {\n\tgetEditorTheme,\n\tgetMarkdownTheme,\n\tinitTheme,\n\tonThemeChange,\n\tsetRegisteredThemes,\n\tsetTheme,\n\tstopThemeWatcher,\n\ttheme,\n} from \"./theme/theme.ts\";\nimport * as usageCommands from \"./usage-commands.ts\";\n\nconst TUI_HISTORY_RELOAD_CHUNK_SIZE = 20;\nconst TUI_LIVE_HISTORY_MAX_COMPONENTS = 260;\nconst TUI_LIVE_HISTORY_TRIM_TO_COMPONENTS = 220;\nconst STREAMING_UI_UPDATE_INTERVAL_MS = 80;\n\ntype UserInputSubmission = {\n\ttext: string;\n\timages?: ImageContent[];\n};\n\ntype PendingClipboardImage = {\n\tlabel: string;\n\tcontent: ImageContent;\n};\n\ntype CompactionQueuedMessage = {\n\ttext: string;\n\tmode: \"steer\" | \"followUp\";\n\timages?: ImageContent[];\n};\n\nconst ANTHROPIC_SUBSCRIPTION_AUTH_WARNING =\n\t\"Anthropic subscription auth is active. Third-party harness usage draws from extra usage and is billed per token, not your Claude plan limits. Manage extra usage at https://claude.ai/settings/usage.\";\n\nfunction isAnthropicSubscriptionAuthKey(apiKey: string | undefined): boolean {\n\treturn typeof apiKey === \"string\" && apiKey.startsWith(\"sk-ant-oat\");\n}\n\nfunction quoteIfNeeded(value: string): string {\n\tif (value.length > 0 && !/[^a-zA-Z0-9_\\-./~:@]/.test(value)) {\n\t\treturn value;\n\t}\n\treturn `'${value.replace(/'/g, `'\\\\''`)}'`;\n}\n\nexport function formatResumeCommand(sessionManager: SessionManager): string | undefined {\n\tif (!process.stdout.isTTY) return undefined;\n\tif (!sessionManager.isPersisted()) return undefined;\n\n\tconst sessionFile = sessionManager.getSessionFile();\n\tif (!sessionFile || !fs.existsSync(sessionFile)) return undefined;\n\n\tconst args = [APP_NAME];\n\tif (!sessionManager.usesDefaultSessionDir()) {\n\t\targs.push(\"--session-dir\", quoteIfNeeded(sessionManager.getSessionDir()));\n\t}\n\targs.push(\"--session\", sessionManager.getSessionId());\n\treturn args.join(\" \");\n}\n\n/**\n * Options for InteractiveMode initialization.\n */\nexport interface InteractiveModeOptions {\n\t/** Providers that were migrated to auth.json (shows warning) */\n\tmigratedProviders?: string[];\n\t/** Warning message if session model couldn't be restored */\n\tmodelFallbackMessage?: string;\n\t/** Initial message to send on startup (can include @file content) */\n\tinitialMessage?: string;\n\t/** Images to attach to the initial message */\n\tinitialImages?: ImageContent[];\n\t/** Additional messages to send after the initial message */\n\tinitialMessages?: string[];\n\t/** Force verbose startup (overrides quietStartup setting) */\n\tverbose?: boolean;\n\t/** Whether a human owns this terminal. False for unattended worker panes. */\n\thasHumanAudience?: boolean;\n}\n\nexport class InteractiveMode {\n\tprivate runtimeHost: AgentSessionRuntime;\n\tprivate ui: TUI;\n\tprivate chatContainer: Container;\n\tprivate pendingMessagesContainer: Container;\n\tprivate statusContainer: Container;\n\tprivate defaultEditor: CustomEditor;\n\tprivate editor: EditorComponent;\n\tprivate autocompleteProvider: AutocompleteProvider | undefined;\n\tprivate autocompleteProviderWrappers: AutocompleteProviderFactory[] = [];\n\tprivate fdPath: string | undefined;\n\tprivate editorContainer: Container;\n\tprivate overlayHost: EditorOverlayHost;\n\tprivate footer: FooterComponent;\n\tprivate footerDataProvider: FooterDataProvider;\n\tprivate autoLearnController: AutoLearnController;\n\tprivate profileMenu: ProfileMenuController;\n\tprivate authDialogs: AuthDialogsController;\n\tprivate extensionUiHost: ExtensionUiHost;\n\t// Stored so the same manager can be injected into custom editors, selectors, and extension UI.\n\tprivate keybindings: KeybindingsManager;\n\tprivate version: string;\n\tprivate isInitialized = false;\n\tprivate onInputCallback?: (submission: UserInputSubmission) => void;\n\tprivate pendingUserInputs: UserInputSubmission[] = [];\n\tprivate pendingClipboardImages: PendingClipboardImage[] = [];\n\tprivate clipboardImageCounter = 0;\n\tprivate clipboardImageStore: SessionImageStore | undefined;\n\tprivate loadingAnimation: Loader | undefined = undefined;\n\tprivate workingMessage: string | undefined = undefined;\n\tprivate workingVisible = true;\n\tprivate workingIndicatorOptions: LoaderIndicatorOptions | undefined = undefined;\n\tprivate readonly defaultWorkingMessage = \"Working...\";\n\tprivate readonly defaultHiddenThinkingLabel = \"Thinking...\";\n\tprivate hiddenThinkingLabel = this.defaultHiddenThinkingLabel;\n\n\tprivate lastSigintTime = 0;\n\tprivate lastEscapeTime = 0;\n\tprivate changelogMarkdown: string | undefined = undefined;\n\tprivate startupNoticesShown = false;\n\tprivate anthropicSubscriptionWarningShown = false;\n\n\t// Status line tracking (for mutating immediately-sequential status updates)\n\tprivate lastStatusSpacer: Spacer | undefined = undefined;\n\tprivate lastStatusText: Text | undefined = undefined;\n\n\t// Live TUI history cap. Full session history remains in SessionManager/model state.\n\tprivate liveHistoryHiddenNotice: Text | undefined = undefined;\n\tprivate liveHistoryHiddenComponents = 0;\n\tprivate tuiHistoryLoaded = false;\n\tprivate tuiHistoryLoadInProgress = false;\n\n\t// Streaming message tracking\n\tprivate streamingComponent: AssistantMessageComponent | undefined = undefined;\n\tprivate streamingMessage: AssistantMessage | undefined = undefined;\n\tprivate streamingUiUpdateTimer: ReturnType<typeof setTimeout> | undefined = undefined;\n\tprivate lastStreamingUiUpdateAt = 0;\n\n\t// Tool execution tracking and session-scoped reusable panels\n\tprivate toolPanels = new ToolPanelRegistry();\n\n\t// Tool output expansion state\n\tprivate toolOutputExpanded = false;\n\n\t// Thinking block visibility state\n\tprivate hideThinkingBlock = false;\n\n\t// Skill commands: command name -> skill file path\n\tprivate skillCommands = new Map<string, string>();\n\n\t// Agent subscription unsubscribe function\n\tprivate unsubscribe?: () => void;\n\tprivate unsubscribeExtensionsChanged?: () => void;\n\tprivate signalCleanupHandlers: Array<() => void> = [];\n\n\t// Track if editor is in bash mode (text starts with !)\n\tprivate isBashMode = false;\n\n\t// Track current bash execution component\n\tprivate bashComponent: BashExecutionComponent | undefined = undefined;\n\n\t// Track pending bash components (shown in pending area, moved to chat on submit)\n\tprivate pendingBashComponents: BashExecutionComponent[] = [];\n\n\t// Auto-compaction state\n\tpublic autoCompactionEscapeHandler?: () => void;\n\n\t// Auto-retry state\n\tpublic retryCountdown: CountdownTimer | undefined = undefined;\n\tpublic retryEscapeHandler?: () => void;\n\n\t// Messages queued while compaction is running\n\tprivate compactionQueuedMessages: CompactionQueuedMessage[] = [];\n\n\t// Shutdown state\n\tprivate shutdownRequested = false;\n\n\t// Extension widget containers (hold components rendered above/below the editor)\n\tprivate widgetContainerAbove!: Container;\n\tprivate widgetContainerBelow!: Container;\n\tprivate activityLane: ActivityLaneComponent | undefined;\n\tprivate readonly hasHumanAudience: boolean;\n\n\t// Header container that holds the built-in or custom header\n\tprivate headerContainer: Container;\n\n\t// Built-in header (logo + keybinding hints + changelog)\n\tprivate builtInHeader: Component | undefined = undefined;\n\n\tprivate options: InteractiveModeOptions;\n\n\t// Convenience accessors\n\tprivate get session(): AgentSession {\n\t\treturn this.runtimeHost.session;\n\t}\n\tprivate get agent() {\n\t\treturn this.session.agent;\n\t}\n\tprivate get sessionManager() {\n\t\treturn this.session.sessionManager;\n\t}\n\tprivate get settingsManager() {\n\t\treturn this.session.settingsManager;\n\t}\n\n\tconstructor(runtimeHost: AgentSessionRuntime, options: InteractiveModeOptions = {}) {\n\t\tthis.runtimeHost = runtimeHost;\n\t\tthis.options = options;\n\t\tthis.hasHumanAudience = options.hasHumanAudience ?? true;\n\t\tthis.workingVisible = this.hasHumanAudience;\n\t\tthis.runtimeHost.setBeforeSessionInvalidate(() => {\n\t\t\tthis.extensionUiHost.resetExtensionUI();\n\t\t});\n\t\tthis.runtimeHost.setRebindSession(async () => {\n\t\t\tawait this.rebindCurrentSession();\n\t\t});\n\t\tthis.version = VERSION;\n\t\tthis.ui = new TUI(new ProcessTerminal(), this.settingsManager.getShowHardwareCursor());\n\t\tthis.ui.setClearOnShrink(this.settingsManager.getClearOnShrink());\n\t\tthis.headerContainer = new Container();\n\t\tthis.chatContainer = new Container();\n\t\tthis.pendingMessagesContainer = new Container();\n\t\tthis.statusContainer = new Container();\n\t\tthis.widgetContainerAbove = new Container();\n\t\tthis.widgetContainerBelow = new Container();\n\t\tthis.activityLane = this.hasHumanAudience\n\t\t\t? new ActivityLaneComponent(theme, () => this.ui.requestRender())\n\t\t\t: undefined;\n\t\tthis.keybindings = KeybindingsManager.create();\n\t\tsetKeybindings(this.keybindings);\n\t\tconst editorPaddingX = this.settingsManager.getEditorPaddingX();\n\t\tconst autocompleteMaxVisible = this.settingsManager.getAutocompleteMaxVisible();\n\t\tthis.defaultEditor = new CustomEditor(this.ui, getEditorTheme(), this.keybindings, {\n\t\t\tpaddingX: editorPaddingX,\n\t\t\tautocompleteMaxVisible,\n\t\t});\n\t\tthis.editor = this.defaultEditor;\n\t\tthis.editorContainer = new Container();\n\t\tthis.editorContainer.addChild(this.editor as Component);\n\t\tthis.overlayHost = new EditorOverlayHost(this.editorContainer, this.ui);\n\t\tthis.footerDataProvider = new FooterDataProvider(this.sessionManager.getCwd());\n\t\tthis.footer = new FooterComponent(this.session, this.footerDataProvider);\n\t\tthis.autoLearnController = new AutoLearnController({\n\t\t\tgetSession: () => this.runtimeHost.session,\n\t\t\tresolveSelfModificationSource: (settings) => this.resolveSelfModificationSource(settings),\n\t\t\tui: {\n\t\t\t\tshowStatus: (message) => this.showStatus(message),\n\t\t\t\tfooterDataProvider: this.footerDataProvider,\n\t\t\t\tinvalidateFooter: () => this.footer.invalidate(),\n\t\t\t\trequestRender: () => this.ui.requestRender(),\n\t\t\t},\n\t\t});\n\t\tthis.profileMenu = new ProfileMenuController({\n\t\t\tgetSession: () => this.runtimeHost.session,\n\t\t\tui: {\n\t\t\t\tshowSelector: (create) => this.showSelector(create),\n\t\t\t\tshowStatus: (message) => this.showStatus(message),\n\t\t\t\tshowError: (message) => this.showError(message),\n\t\t\t\tshowWarning: (message) => this.showWarning(message),\n\t\t\t\trequestRender: () => this.ui.requestRender(),\n\t\t\t\ttui: this.ui,\n\t\t\t\tfooterDataProvider: this.footerDataProvider,\n\t\t\t\tinvalidateFooter: () => this.footer.invalidate(),\n\t\t\t\tupdateEditorBorderColor: () => this.updateEditorBorderColor(),\n\t\t\t\topenEditorForPath: (filePath) => this.openEditorForPath(filePath),\n\t\t\t\thandleReloadCommand: () => this.handleReloadCommandWithResult(),\n\t\t\t\tmaybeWarnAboutAnthropicSubscriptionAuth: (model) =>\n\t\t\t\t\tvoid this.maybeWarnAboutAnthropicSubscriptionAuth(model),\n\t\t\t\tcheckDaxnutsEasterEgg: (model) => this.checkDaxnutsEasterEgg(model),\n\t\t\t\tshowSettingsSelector: () => this.showSettingsSelector(),\n\t\t\t\tgetAutoLearnModelOptions: () => this.getAutoLearnModelOptions(),\n\t\t\t},\n\t\t});\n\t\tthis.authDialogs = new AuthDialogsController({\n\t\t\tgetSession: () => this.runtimeHost.session,\n\t\t\tui: {\n\t\t\t\tshowSelector: (create) => this.showSelector(create),\n\t\t\t\tshowStatus: (message) => this.showStatus(message),\n\t\t\t\tshowError: (message) => this.showError(message),\n\t\t\t\trequestRender: () => this.ui.requestRender(),\n\t\t\t\ttui: this.ui,\n\t\t\t\toverlayHost: this.overlayHost,\n\t\t\t\tgetEditor: () => this.editor,\n\t\t\t\tupdateAvailableProviderCount: () => this.updateAvailableProviderCount(),\n\t\t\t\tinvalidateFooter: () => this.footer.invalidate(),\n\t\t\t\tupdateEditorBorderColor: () => this.updateEditorBorderColor(),\n\t\t\t\tmaybeWarnAboutAnthropicSubscriptionAuth: (model) =>\n\t\t\t\t\tvoid this.maybeWarnAboutAnthropicSubscriptionAuth(model),\n\t\t\t\tcheckDaxnutsEasterEgg: (model) => this.checkDaxnutsEasterEgg(model),\n\t\t\t},\n\t\t});\n\t\tthis.extensionUiHost = new ExtensionUiHost({\n\t\t\tgetSession: () => this.runtimeHost.session,\n\t\t\tui: {\n\t\t\t\ttui: this.ui,\n\t\t\t\toverlayHost: this.overlayHost,\n\t\t\t\tkeybindings: this.keybindings,\n\t\t\t\tfooter: this.footer,\n\t\t\t\tfooterDataProvider: this.footerDataProvider,\n\t\t\t\theaderContainer: this.headerContainer,\n\t\t\t\tchatContainer: this.chatContainer,\n\t\t\t\tdefaultEditor: this.defaultEditor,\n\t\t\t\twidgetContainerAbove: this.widgetContainerAbove,\n\t\t\t\twidgetContainerBelow: this.widgetContainerBelow,\n\t\t\t\tgetEditor: () => this.editor,\n\t\t\t\tsetEditor: (editor) => {\n\t\t\t\t\tconst previousEditor = this.editor;\n\t\t\t\t\tthis.editor = editor;\n\t\t\t\t\tif (previousEditor !== editor && previousEditor !== this.defaultEditor) {\n\t\t\t\t\t\tconst disposableEditor = previousEditor as typeof previousEditor & { dispose?: () => void };\n\t\t\t\t\t\tdisposableEditor.dispose?.();\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tgetBuiltInHeader: () => this.builtInHeader,\n\t\t\t\tgetAutocompleteProvider: () => this.autocompleteProvider,\n\t\t\t\tgetClipboardImageStore: () => this.clipboardImageStore,\n\t\t\t\tgetToolsExpanded: () => this.toolOutputExpanded,\n\t\t\t\tpushAutocompleteProviderWrapper: (factory) => {\n\t\t\t\t\tthis.autocompleteProviderWrappers.push(factory);\n\t\t\t\t},\n\t\t\t\tresetAutocompleteProviderWrappers: () => {\n\t\t\t\t\tthis.autocompleteProviderWrappers = [];\n\t\t\t\t},\n\t\t\t\tsetupAutocompleteProvider: () => this.setupAutocompleteProvider(),\n\t\t\t\tsetWorkingVisible: (visible) => this.setWorkingVisible(visible),\n\t\t\t\tsetWorkingIndicator: (options) => this.setWorkingIndicator(options),\n\t\t\t\tsetHiddenThinkingLabel: (label) => this.setHiddenThinkingLabel(label),\n\t\t\t\tsetWorkingMessage: (message) => this.setWorkingMessage(message),\n\t\t\t\tresetWorkingIndicators: () => this.resetWorkingIndicators(),\n\t\t\t\tsetToolsExpanded: (expanded) => this.setToolsExpanded(expanded),\n\t\t\t\ttoggleToolsExpanded: () => this.toggleToolOutputExpansion(),\n\t\t\t\tupdateTerminalTitle: () => this.updateTerminalTitle(),\n\t\t\t\tmarkShutdownRequested: () => {\n\t\t\t\t\tthis.shutdownRequested = true;\n\t\t\t\t},\n\t\t\t\tabort: () => {\n\t\t\t\t\tthis.restoreQueuedMessagesToEditor({ abort: true });\n\t\t\t\t},\n\t\t\t\treload: () => this.handleReloadCommand(),\n\t\t\t\tshowStatus: (message) => this.showStatus(message),\n\t\t\t\tshowWarning: (message) => this.showWarning(message),\n\t\t\t\tshowError: (message) => this.showError(message),\n\t\t\t},\n\t\t});\n\t\tthis.footer.setAutoCompactEnabled(this.session.autoCompactionEnabled);\n\n\t\t// Load hide thinking block setting\n\t\tthis.hideThinkingBlock = this.settingsManager.getHideThinkingBlock();\n\n\t\t// Register themes from resource loader and initialize\n\t\tsetRegisteredThemes(this.session.resourceLoader.getThemes().themes);\n\t\tinitTheme(this.settingsManager.getTheme(), true);\n\t}\n\n\t// Thin delegate retained so setupAutocompleteProvider's base-provider seam\n\t// (stubbed via prototype in interactive-mode-status.test.ts) keeps working.\n\tprivate createBaseAutocompleteProvider(): AutocompleteProvider {\n\t\treturn autocompleteProvider.createBaseAutocompleteProvider({\n\t\t\tsession: this.session,\n\t\t\tsettingsManager: this.settingsManager,\n\t\t\tsessionManager: this.sessionManager,\n\t\t\tfdPath: this.fdPath,\n\t\t\tskillCommands: this.skillCommands,\n\t\t});\n\t}\n\n\tprivate setupAutocompleteProvider(): void {\n\t\tlet provider = this.createBaseAutocompleteProvider();\n\t\tfor (const wrapProvider of this.autocompleteProviderWrappers) {\n\t\t\tprovider = wrapProvider(provider);\n\t\t}\n\n\t\tthis.autocompleteProvider = provider;\n\t\tthis.defaultEditor.setAutocompleteProvider(provider);\n\t\tif (this.editor !== this.defaultEditor) {\n\t\t\tthis.editor.setAutocompleteProvider?.(provider);\n\t\t}\n\t}\n\n\tprivate startupChecksHost(): startupChecks.StartupChecksHost {\n\t\tconst self = this;\n\t\treturn {\n\t\t\tsessionManager: this.sessionManager,\n\t\t\tsettingsManager: this.settingsManager,\n\t\t\tsession: this.session,\n\t\t\tchatContainer: this.chatContainer,\n\t\t\tui: this.ui,\n\t\t\tversion: this.version,\n\t\t\tget changelogMarkdown() {\n\t\t\t\treturn self.changelogMarkdown;\n\t\t\t},\n\t\t\tget startupNoticesShown() {\n\t\t\t\treturn self.startupNoticesShown;\n\t\t\t},\n\t\t\tset startupNoticesShown(value) {\n\t\t\t\tself.startupNoticesShown = value;\n\t\t\t},\n\t\t\tgetMarkdownThemeWithSettings: () => this.getMarkdownThemeWithSettings(),\n\t\t};\n\t}\n\n\tprivate showStartupNoticesIfNeeded(): void {\n\t\tstartupChecks.showStartupNoticesIfNeeded(this.startupChecksHost());\n\t}\n\n\tasync init(): Promise<void> {\n\t\tif (this.isInitialized) return;\n\n\t\tthis.registerSignalHandlers();\n\n\t\t// Load changelog (only show new entries, skip for resumed sessions)\n\t\tthis.changelogMarkdown = this.getChangelogForDisplay();\n\n\t\t// Ensure fd and rg are available (downloads if missing, adds to PATH via getBinDir)\n\t\t// Both are needed: fd for autocomplete, rg for grep tool and bash commands\n\t\tconst [fdPath] = await Promise.all([ensureTool(\"fd\"), ensureTool(\"rg\")]);\n\t\tthis.fdPath = fdPath;\n\n\t\tif (this.session.scopedModels.length > 0 && (this.options.verbose || !this.settingsManager.getQuietStartup())) {\n\t\t\tconst modelList = this.session.scopedModels\n\t\t\t\t.map((sm) => {\n\t\t\t\t\tconst thinkingStr = sm.thinkingLevel ? `:${sm.thinkingLevel}` : \"\";\n\t\t\t\t\treturn `${sm.model.id}${thinkingStr}`;\n\t\t\t\t})\n\t\t\t\t.join(\", \");\n\t\t\tconst cycleKeys = this.keybindings.getKeys(\"app.model.cycleForward\");\n\t\t\tconst cycleHint =\n\t\t\t\tcycleKeys.length > 0\n\t\t\t\t\t? theme.fg(\"muted\", ` (${formatKeyText(cycleKeys.join(\"/\"), { capitalize: true })} to cycle)`)\n\t\t\t\t\t: \"\";\n\t\t\tconsole.log(theme.fg(\"dim\", `Model scope: ${modelList}${cycleHint}`));\n\t\t}\n\n\t\t// Add header container as first child\n\t\tthis.ui.addChild(this.headerContainer);\n\n\t\t// Add header with keybindings from config (unless silenced)\n\t\tif (this.options.verbose || !this.settingsManager.getQuietStartup()) {\n\t\t\tconst logo = theme.bold(theme.fg(\"accent\", APP_NAME)) + theme.fg(\"dim\", ` v${this.version}`);\n\n\t\t\t// Build startup instructions using keybinding hint helpers\n\t\t\tconst hint = (keybinding: AppKeybinding, description: string) => keyHint(keybinding, description);\n\n\t\t\tconst expandedInstructions = [\n\t\t\t\thint(\"app.interrupt\", \"to interrupt\"),\n\t\t\t\thint(\"app.clear\", \"to clear\"),\n\t\t\t\trawKeyHint(`${keyText(\"app.clear\")} twice`, \"to exit\"),\n\t\t\t\thint(\"app.exit\", \"to exit (empty)\"),\n\t\t\t\thint(\"app.suspend\", \"to suspend\"),\n\t\t\t\tkeyHint(\"tui.editor.deleteToLineEnd\", \"to delete to end\"),\n\t\t\t\thint(\"app.thinking.cycle\", \"to cycle thinking level\"),\n\t\t\t\trawKeyHint(`${keyText(\"app.model.cycleForward\")}/${keyText(\"app.model.cycleBackward\")}`, \"to cycle models\"),\n\t\t\t\thint(\"app.model.select\", \"to select model\"),\n\t\t\t\thint(\"app.tools.expand\", \"to load history / expand tools\"),\n\t\t\t\thint(\"app.thinking.toggle\", \"to expand thinking\"),\n\t\t\t\thint(\"app.editor.external\", \"for external editor\"),\n\t\t\t\trawKeyHint(\"/\", \"for commands\"),\n\t\t\t\trawKeyHint(\"!\", \"to run bash\"),\n\t\t\t\trawKeyHint(\"!!\", \"to run bash (no context)\"),\n\t\t\t\thint(\"app.message.followUp\", \"to queue follow-up\"),\n\t\t\t\trawKeyHint(\">>\", \"prefix to queue follow-up\"),\n\t\t\t\thint(\"app.message.dequeue\", \"to edit all queued messages\"),\n\t\t\t\trawKeyHint(\"↑\", \"(empty editor) to recall queued messages\"),\n\t\t\t\thint(\"app.clipboard.pasteImage\", \"to paste image\"),\n\t\t\t\trawKeyHint(\"drop files\", \"to attach\"),\n\t\t\t].join(\"\\n\");\n\t\t\tconst compactInstructions = [\n\t\t\t\thint(\"app.interrupt\", \"interrupt\"),\n\t\t\t\trawKeyHint(`${keyText(\"app.clear\")}/${keyText(\"app.exit\")}`, \"clear/exit\"),\n\t\t\t\trawKeyHint(\"/\", \"commands\"),\n\t\t\t\trawKeyHint(\"!\", \"bash\"),\n\t\t\t\thint(\"app.tools.expand\", \"history/more\"),\n\t\t\t].join(theme.fg(\"muted\", \" · \"));\n\t\t\tconst compactOnboarding = theme.fg(\n\t\t\t\t\"dim\",\n\t\t\t\t`Press ${keyText(\"app.tools.expand\")} to load session history or show full startup help and loaded resources.`,\n\t\t\t);\n\t\t\tconst onboarding = theme.fg(\n\t\t\t\t\"dim\",\n\t\t\t\t`Pi can explain its own features and look up its docs. Ask it how to use or extend Pi.`,\n\t\t\t);\n\t\t\tthis.builtInHeader = new ExpandableText(\n\t\t\t\t() => `${logo}\\n${compactInstructions}\\n${compactOnboarding}\\n\\n${onboarding}`,\n\t\t\t\t() => `${logo}\\n${expandedInstructions}\\n\\n${onboarding}`,\n\t\t\t\tthis.getStartupExpansionState(),\n\t\t\t\t1,\n\t\t\t\t0,\n\t\t\t);\n\n\t\t\t// Setup UI layout\n\t\t\tthis.headerContainer.addChild(new Spacer(1));\n\t\t\tthis.headerContainer.addChild(this.builtInHeader);\n\t\t\tthis.headerContainer.addChild(new Spacer(1));\n\t\t} else {\n\t\t\t// Minimal header when silenced\n\t\t\tthis.builtInHeader = new Text(\"\", 0, 0);\n\t\t\tthis.headerContainer.addChild(this.builtInHeader);\n\t\t}\n\n\t\tthis.ui.addChild(this.chatContainer);\n\t\tif (this.hasHumanAudience) {\n\t\t\tthis.ui.addChild(this.pendingMessagesContainer);\n\t\t\tthis.ui.addChild(this.statusContainer);\n\t\t\tthis.extensionUiHost.renderWidgets(); // Initialize with default spacer\n\t\t\tthis.ui.addChild(this.widgetContainerAbove);\n\t\t\tif (this.activityLane) this.ui.addChild(this.activityLane);\n\t\t}\n\t\tthis.ui.addChild(this.editorContainer);\n\t\tif (this.hasHumanAudience) {\n\t\t\tthis.ui.addChild(this.widgetContainerBelow);\n\t\t\tthis.ui.addChild(this.footer);\n\t\t}\n\t\tthis.ui.setFocus(this.editor);\n\n\t\tthis.setupKeyHandlers();\n\t\tthis.setupEditorSubmitHandler();\n\n\t\t// Start the UI before initializing extensions so session_start handlers can use interactive dialogs\n\t\tthis.ui.start();\n\t\tthis.isInitialized = true;\n\n\t\t// Initialize extensions first so resources are shown before messages\n\t\tawait this.rebindCurrentSession();\n\n\t\t// Register extensions-changed listener for live reload UI refresh\n\t\tthis.subscribeToExtensionsChanged();\n\n\t\t// Render initial messages AFTER showing loaded resources\n\t\tawait this.renderInitialMessages();\n\t\tthis.renderProjectTrustWarningIfNeeded();\n\n\t\t// Set up theme file watcher\n\t\tonThemeChange(() => {\n\t\t\tthis.ui.invalidate();\n\t\t\tthis.updateEditorBorderColor();\n\t\t\tthis.refreshActivityLane();\n\t\t\tthis.ui.requestRender();\n\t\t});\n\n\t\t// Set up git branch watcher (uses provider instead of footer)\n\t\tthis.footerDataProvider.onBranchChange(() => {\n\t\t\tthis.ui.requestRender();\n\t\t});\n\n\t\t// Initialize available provider count and Auto Learn status for footer display\n\t\tawait this.updateAvailableProviderCount();\n\t\tthis.updateAutoLearnFooter();\n\t}\n\n\tprivate renderProjectTrustWarningIfNeeded(): void {\n\t\tstartupChecks.renderProjectTrustWarningIfNeeded(this.startupChecksHost());\n\t}\n\n\t/**\n\t * Update terminal title with session name and cwd.\n\t */\n\tprivate updateTerminalTitle(): void {\n\t\tconst cwdBasename = path.basename(this.sessionManager.getCwd());\n\t\tconst sessionName = this.sessionManager.getSessionName();\n\t\tif (sessionName) {\n\t\t\tthis.ui.terminal.setTitle(`${APP_TITLE} - ${sessionName} - ${cwdBasename}`);\n\t\t} else {\n\t\t\tthis.ui.terminal.setTitle(`${APP_TITLE} - ${cwdBasename}`);\n\t\t}\n\t}\n\n\t/**\n\t * Run the interactive mode. This is the main entry point.\n\t * Initializes the UI, shows warnings, processes initial messages, and starts the interactive loop.\n\t */\n\tasync run(): Promise<void> {\n\t\tawait this.init();\n\n\t\t// Start version check asynchronously\n\t\tcheckForNewPiVersion(this.version).then((newRelease) => {\n\t\t\tif (newRelease) {\n\t\t\t\tthis.showNewVersionNotification(newRelease);\n\t\t\t}\n\t\t});\n\n\t\t// Start package update check asynchronously\n\t\tthis.checkForPackageUpdates()\n\t\t\t.then((updates) => {\n\t\t\t\tif (updates.length > 0) {\n\t\t\t\t\tthis.showPackageUpdateNotification(updates);\n\t\t\t\t}\n\t\t\t})\n\t\t\t.finally(() => {\n\t\t\t\t// npm can overwrite the shared Windows console title while checking extension versions.\n\t\t\t\tif (process.platform === \"win32\" && this.isInitialized) {\n\t\t\t\t\tthis.updateTerminalTitle();\n\t\t\t\t}\n\t\t\t});\n\n\t\t// Check tmux keyboard setup asynchronously\n\t\tthis.checkTmuxKeyboardSetup().then((warning) => {\n\t\t\tif (warning) {\n\t\t\t\tthis.showWarning(warning);\n\t\t\t}\n\t\t});\n\n\t\t// Skill curator (#32): auto-archive stale reflection-promoted skills at startup, and ANNOUNCE it\n\t\t// (never silent — the user can restore any of them with `/curate restore <name>`).\n\t\tthis.session\n\t\t\t.runStartupSkillCuration()\n\t\t\t.then((archived) => {\n\t\t\t\tif (archived.length > 0) {\n\t\t\t\t\tthis.showStatus(\n\t\t\t\t\t\t`Curator: auto-archived ${archived.length} stale skill(s) — ${archived.join(\", \")}. Restore with /curate restore <name>.`,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t})\n\t\t\t.catch(() => {\n\t\t\t\t// curation is best-effort; never disrupt startup\n\t\t\t});\n\n\t\t// Show startup warnings\n\t\tconst { migratedProviders, modelFallbackMessage, initialMessage, initialImages, initialMessages } = this.options;\n\n\t\tif (migratedProviders && migratedProviders.length > 0) {\n\t\t\tthis.showWarning(`Migrated credentials to auth.json: ${migratedProviders.join(\", \")}`);\n\t\t}\n\n\t\tconst modelsJsonError = this.session.modelRegistry.getError();\n\t\tif (modelsJsonError) {\n\t\t\tthis.showError(`models.json error: ${modelsJsonError}`);\n\t\t}\n\n\t\tif (modelFallbackMessage) {\n\t\t\tthis.showWarning(modelFallbackMessage);\n\t\t}\n\n\t\tvoid this.maybeWarnAboutAnthropicSubscriptionAuth();\n\n\t\t// Process initial messages\n\t\tif (initialMessage) {\n\t\t\ttry {\n\t\t\t\tawait this.session.prompt(initialMessage, { images: initialImages });\n\t\t\t} catch (error: unknown) {\n\t\t\t\tconst errorMessage = error instanceof Error ? error.message : \"Unknown error occurred\";\n\t\t\t\tthis.showError(errorMessage);\n\t\t\t} finally {\n\t\t\t\tthis.refreshAutonomyFooterStatus();\n\t\t\t}\n\t\t}\n\n\t\tif (initialMessages) {\n\t\t\tfor (const message of initialMessages) {\n\t\t\t\ttry {\n\t\t\t\t\tawait this.session.prompt(message);\n\t\t\t\t} catch (error: unknown) {\n\t\t\t\t\tconst errorMessage = error instanceof Error ? error.message : \"Unknown error occurred\";\n\t\t\t\t\tthis.showError(errorMessage);\n\t\t\t\t} finally {\n\t\t\t\t\tthis.refreshAutonomyFooterStatus();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Main interactive loop\n\t\twhile (true) {\n\t\t\tconst userInput = await this.getUserInput();\n\t\t\ttry {\n\t\t\t\tawait this.session.prompt(userInput.text, { images: userInput.images });\n\t\t\t} catch (error: unknown) {\n\t\t\t\tconst errorMessage = error instanceof Error ? error.message : \"Unknown error occurred\";\n\t\t\t\tthis.showError(errorMessage);\n\t\t\t} finally {\n\t\t\t\tthis.refreshAutonomyFooterStatus();\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate refreshAutonomyFooterStatus(): void {\n\t\tthis.footerDataProvider.setAutonomyStatusSnapshot(this.session.getAutonomyStatusSnapshot());\n\t\tthis.footer.invalidate();\n\t}\n\n\tprivate activityLaneSnapshot() {\n\t\treturn {\n\t\t\tgoalState: this.session.getGoalStateSnapshot(),\n\t\t\ttaskState: this.session.getTaskStepsStateSnapshot(),\n\t\t\tlaneRecords: this.session.getLaneRecords(),\n\t\t};\n\t}\n\n\tprivate refreshActivityLane(options: { replace?: boolean } = {}): void {\n\t\tif (!this.activityLane) return;\n\t\tconst sessionKey = this.sessionManager.getSessionId();\n\t\tif (options.replace) {\n\t\t\tthis.activityLane.replaceCanonical(sessionKey, this.activityLaneSnapshot());\n\t\t} else {\n\t\t\tthis.activityLane.updateCanonical(sessionKey, this.activityLaneSnapshot());\n\t\t}\n\t}\n\n\tpublic toolActivityKind(toolName: string): ActivityLaneKind {\n\t\tif (toolName === \"task_steps\") return \"task\";\n\t\tif (toolName === \"goal\") return \"goal\";\n\t\tif (toolName === \"delegate\" || toolName === \"delegate_status\") return \"worker\";\n\t\treturn \"tool\";\n\t}\n\n\tpublic toolActivityLabel(toolName: string): string {\n\t\tconst label = this.getRegisteredToolDefinition(toolName)?.label?.trim() || toolName;\n\t\treturn label.replace(/[_-]+/g, \" \").replace(/(^|\\s)\\S/g, (character) => character.toUpperCase());\n\t}\n\n\tpublic toolActivityTerminalStatus(isError: boolean, details: unknown): \"success\" | \"failure\" | \"neutral\" {\n\t\tif (isError) return \"failure\";\n\t\tif (!isRecordObject(details)) return \"success\";\n\t\tif (details.applied === false || details.kind === \"error\") return \"failure\";\n\t\tif (details.kind === \"review\" && details.reviewed === false) return \"failure\";\n\t\tif (details.started === false) return \"neutral\";\n\t\treturn \"success\";\n\t}\n\n\tprivate checkForPackageUpdates(): Promise<string[]> {\n\t\treturn startupChecks.checkForPackageUpdates(this.startupChecksHost());\n\t}\n\n\tprivate checkTmuxKeyboardSetup(): Promise<string | undefined> {\n\t\treturn startupChecks.checkTmuxKeyboardSetup();\n\t}\n\n\t/**\n\t * Get changelog entries to display on startup.\n\t * Only shows new entries since last seen version, skips for resumed sessions.\n\t */\n\tprivate getChangelogForDisplay(): string | undefined {\n\t\treturn startupChecks.getChangelogForDisplay(this.startupChecksHost());\n\t}\n\n\tprivate getMarkdownThemeWithSettings(): MarkdownTheme {\n\t\treturn {\n\t\t\t...getMarkdownTheme(),\n\t\t\tcodeBlockIndent: this.settingsManager.getCodeBlockIndent(),\n\t\t};\n\t}\n\n\t// =========================================================================\n\t// Extension System\n\t// =========================================================================\n\n\tprivate getStartupExpansionState(): boolean {\n\t\treturn this.options.verbose || this.toolOutputExpanded;\n\t}\n\n\tprivate showLoadedResources(options?: LoadedResourcesViewOptions): void {\n\t\trenderLoadedResources(\n\t\t\t{\n\t\t\t\tsession: this.session,\n\t\t\t\tchatContainer: this.chatContainer,\n\t\t\t\tverbose: this.options.verbose ?? false,\n\t\t\t\texpanded: this.getStartupExpansionState(),\n\t\t\t},\n\t\t\toptions,\n\t\t);\n\t}\n\t/**\n\t * Initialize the extension system with TUI-based UI context.\n\t */\n\tprivate async bindCurrentSessionExtensions(): Promise<void> {\n\t\tconst uiContext = this.hasHumanAudience ? this.extensionUiHost.createExtensionUIContext() : undefined;\n\t\tawait this.session.bindExtensions({\n\t\t\tuiContext,\n\t\t\tmode: this.hasHumanAudience ? \"tui\" : \"print\",\n\t\t\tabortHandler: () => {\n\t\t\t\tthis.restoreQueuedMessagesToEditor({ abort: true });\n\t\t\t},\n\t\t\tcommandContextActions: {\n\t\t\t\twaitForIdle: () => this.session.agent.waitForIdle(),\n\t\t\t\tnewSession: async (options) => {\n\t\t\t\t\tif (this.loadingAnimation) {\n\t\t\t\t\t\tthis.loadingAnimation.stop();\n\t\t\t\t\t\tthis.loadingAnimation = undefined;\n\t\t\t\t\t}\n\t\t\t\t\tthis.statusContainer.clear();\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst result = await this.runtimeHost.newSession(options);\n\t\t\t\t\t\tif (!result.cancelled) {\n\t\t\t\t\t\t\tthis.renderCurrentSessionState();\n\t\t\t\t\t\t\tthis.ui.requestRender();\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t} catch (error: unknown) {\n\t\t\t\t\t\tconst disposition = this.handleNonFatalSessionReplacementError(error);\n\t\t\t\t\t\tif (disposition) return { cancelled: disposition === \"previous_restored\" };\n\t\t\t\t\t\treturn this.handleFatalRuntimeError(\"Failed to create session\", error);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tfork: async (entryId, options) => {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst result = await this.runtimeHost.fork(entryId, options);\n\t\t\t\t\t\tif (!result.cancelled) {\n\t\t\t\t\t\t\tthis.renderCurrentSessionState();\n\t\t\t\t\t\t\tthis.editor.setText(result.selectedText ?? \"\");\n\t\t\t\t\t\t\tthis.showStatus(\"Forked to new session\");\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn { cancelled: result.cancelled };\n\t\t\t\t\t} catch (error: unknown) {\n\t\t\t\t\t\tconst disposition = this.handleNonFatalSessionReplacementError(error);\n\t\t\t\t\t\tif (disposition) return { cancelled: disposition === \"previous_restored\" };\n\t\t\t\t\t\treturn this.handleFatalRuntimeError(\"Failed to fork session\", error);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tnavigateTree: async (targetId, options) => {\n\t\t\t\t\tconst result = await this.session.navigateTree(targetId, {\n\t\t\t\t\t\tsummarize: options?.summarize,\n\t\t\t\t\t\tcustomInstructions: options?.customInstructions,\n\t\t\t\t\t\treplaceInstructions: options?.replaceInstructions,\n\t\t\t\t\t\tlabel: options?.label,\n\t\t\t\t\t});\n\t\t\t\t\tif (result.cancelled) {\n\t\t\t\t\t\treturn { cancelled: true };\n\t\t\t\t\t}\n\n\t\t\t\t\tawait this.renderInitialMessages();\n\t\t\t\t\tif (result.editorText && !this.editor.getText().trim()) {\n\t\t\t\t\t\tthis.editor.setText(result.editorText);\n\t\t\t\t\t}\n\t\t\t\t\tthis.showStatus(\"Navigated to selected point\");\n\t\t\t\t\tvoid this.flushCompactionQueue({ willRetry: false });\n\t\t\t\t\treturn { cancelled: false };\n\t\t\t\t},\n\t\t\t\tswitchSession: async (sessionPath, options) => {\n\t\t\t\t\treturn this.handleResumeSession(sessionPath, options);\n\t\t\t\t},\n\t\t\t\treload: async () => {\n\t\t\t\t\tawait this.handleReloadCommand();\n\t\t\t\t},\n\t\t\t},\n\t\t\tshutdownHandler: () => {\n\t\t\t\tthis.shutdownRequested = true;\n\t\t\t\tif (!this.session.isStreaming) {\n\t\t\t\t\tvoid this.shutdown();\n\t\t\t\t}\n\t\t\t},\n\t\t\tonError: (error) => {\n\t\t\t\tthis.extensionUiHost.showExtensionError(error.extensionPath, error.error, error.stack);\n\t\t\t},\n\t\t});\n\n\t\tsetRegisteredThemes(this.session.resourceLoader.getThemes().themes);\n\t\tthis.setupAutocompleteProvider();\n\n\t\tconst extensionRunner = this.session.extensionRunner;\n\t\tthis.extensionUiHost.setupExtensionShortcuts(extensionRunner);\n\t\tthis.showLoadedResources({ force: false, showDiagnosticsWhenQuiet: true });\n\t\tthis.showStartupNoticesIfNeeded();\n\t}\n\n\tprivate applyRuntimeSettings(): void {\n\t\tconfigureHttpDispatcher(this.settingsManager.getHttpIdleTimeoutMs());\n\t\tthis.footer.setSession(this.session);\n\t\tthis.footer.setAutoCompactEnabled(this.session.autoCompactionEnabled);\n\t\tthis.footerDataProvider.setCwd(this.sessionManager.getCwd());\n\t\tthis.hideThinkingBlock = this.settingsManager.getHideThinkingBlock();\n\t\tthis.ui.setShowHardwareCursor(this.settingsManager.getShowHardwareCursor());\n\t\tthis.ui.setClearOnShrink(this.settingsManager.getClearOnShrink());\n\t\tconst editorPaddingX = this.settingsManager.getEditorPaddingX();\n\t\tconst autocompleteMaxVisible = this.settingsManager.getAutocompleteMaxVisible();\n\t\tthis.defaultEditor.setPaddingX(editorPaddingX);\n\t\tthis.defaultEditor.setAutocompleteMaxVisible(autocompleteMaxVisible);\n\t\tif (this.editor !== this.defaultEditor) {\n\t\t\tthis.editor.setPaddingX?.(editorPaddingX);\n\t\t\tthis.editor.setAutocompleteMaxVisible?.(autocompleteMaxVisible);\n\t\t}\n\t}\n\n\tprivate async rebindCurrentSession(): Promise<void> {\n\t\tthis.unsubscribe?.();\n\t\tthis.unsubscribe = undefined;\n\t\tthis.pendingClipboardImages = [];\n\t\tthis.clipboardImageCounter = 0;\n\t\tconst clipboardImageDirectory = this.settingsManager.getClipboardImageDirectory();\n\t\tthis.clipboardImageStore =\n\t\t\tthis.sessionManager.isPersisted() || clipboardImageDirectory\n\t\t\t\t? new SessionImageStore({\n\t\t\t\t\t\tagentDir: getAgentDir(),\n\t\t\t\t\t\tcwd: this.sessionManager.getCwd(),\n\t\t\t\t\t\tsessionId: this.sessionManager.getSessionId(),\n\t\t\t\t\t\tdirectory: clipboardImageDirectory,\n\t\t\t\t\t})\n\t\t\t\t: undefined;\n\t\tthis.applyRuntimeSettings();\n\t\tawait this.bindCurrentSessionExtensions();\n\t\tthis.subscribeToAgent();\n\t\tthis.subscribeToExtensionsChanged();\n\t\tawait this.updateAvailableProviderCount();\n\t\tthis.updateEditorBorderColor();\n\t\tthis.updateTerminalTitle();\n\t\tthis.refreshActivityLane({ replace: true });\n\t\ttry {\n\t\t\tawait this.session.resumePendingHumanInput();\n\t\t} catch (error: unknown) {\n\t\t\tthis.showError(\n\t\t\t\t`Failed to resume pending user input: ${error instanceof Error ? error.message : String(error)}`,\n\t\t\t);\n\t\t}\n\t}\n\n\tprivate subscribeToExtensionsChanged(): void {\n\t\tthis.unsubscribeExtensionsChanged?.();\n\t\tthis.unsubscribeExtensionsChanged = this.session.onExtensionsChanged(() => {\n\t\t\tthis.refreshUIAfterExtensionsChanged();\n\t\t});\n\t}\n\n\tprivate async handleFatalRuntimeError(prefix: string, error: unknown): Promise<never> {\n\t\tconst message = error instanceof Error ? error.message : String(error);\n\t\tthis.showError(`${prefix}: ${message}`);\n\t\tstopThemeWatcher();\n\t\tthis.stop();\n\t\tprocess.exit(1);\n\t}\n\n\tprivate handleNonFatalSessionReplacementError(\n\t\terror: unknown,\n\t): \"previous_restored\" | \"replacement_committed\" | undefined {\n\t\treturn handleNonFatalSessionReplacementError(\n\t\t\t{\n\t\t\t\trenderCurrentSessionState: () => this.renderCurrentSessionState(),\n\t\t\t\tshowError: (message) => this.showError(message),\n\t\t\t},\n\t\t\terror,\n\t\t);\n\t}\n\n\tprivate renderCurrentSessionState(): void {\n\t\tthis.pendingMessagesContainer.clear();\n\t\tthis.compactionQueuedMessages = [];\n\t\tthis.streamingComponent = undefined;\n\t\tthis.streamingMessage = undefined;\n\t\tthis.clearRenderedToolPanelState();\n\t\tvoid this.renderInitialMessages();\n\t}\n\n\t/**\n\t * Get a registered tool definition by name (for custom rendering).\n\t */\n\tprivate getRegisteredToolDefinition(toolName: string) {\n\t\treturn this.session.getToolDefinition(toolName);\n\t}\n\n\tprivate getToolPanelScope() {\n\t\treturn {\n\t\t\tsessionId: this.sessionManager.getSessionId?.(),\n\t\t\tsessionFile: this.sessionManager.getSessionFile?.(),\n\t\t\tcwd: this.sessionManager.getCwd(),\n\t\t};\n\t}\n\n\tprivate appendToolExecutionComponent(component: ToolExecutionComponent, allowGrouping: boolean): void {\n\t\tconst toolGroup = allowGrouping ? component.toolGroup?.trim() : undefined;\n\t\tif (!toolGroup) {\n\t\t\tthis.chatContainer.addChild(component);\n\t\t\tthis.trimLiveTuiHistory();\n\t\t\treturn;\n\t\t}\n\n\t\tconst children = this.chatContainer.children;\n\t\tconst lastChild = children[children.length - 1];\n\t\tif (lastChild instanceof ToolGroupComponent && lastChild.toolGroup === toolGroup) {\n\t\t\tlastChild.addTool(component);\n\t\t\tthis.trimLiveTuiHistory();\n\t\t\treturn;\n\t\t}\n\t\tif (lastChild instanceof ToolExecutionComponent && lastChild.toolGroup?.trim() === toolGroup) {\n\t\t\tconst group = new ToolGroupComponent(toolGroup, [lastChild, component]);\n\t\t\tgroup.setExpanded(this.toolOutputExpanded);\n\t\t\tchildren[children.length - 1] = group;\n\t\t\tthis.trimLiveTuiHistory();\n\t\t\treturn;\n\t\t}\n\t\tthis.chatContainer.addChild(component);\n\t\tthis.trimLiveTuiHistory();\n\t}\n\n\tprivate detachToolExecutionComponent(component: ToolExecutionComponent): void {\n\t\tconst children = this.chatContainer.children;\n\t\tconst directIndex = children.indexOf(component);\n\t\tif (directIndex !== -1) {\n\t\t\tchildren.splice(directIndex, 1);\n\t\t\treturn;\n\t\t}\n\t\tfor (let i = 0; i < children.length; i++) {\n\t\t\tconst child = children[i];\n\t\t\tif (!(child instanceof ToolGroupComponent) || !child.removeTool(component)) continue;\n\t\t\tconst remaining = child.getToolCount();\n\t\t\tif (remaining === 0) {\n\t\t\t\tchildren.splice(i, 1);\n\t\t\t} else if (remaining === 1) {\n\t\t\t\tconst onlyTool = child.getOnlyTool();\n\t\t\t\tif (onlyTool) children[i] = onlyTool;\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t}\n\n\tprivate attachToolExecutionComponent(\n\t\ttoolName: string,\n\t\ttoolCallId: string,\n\t\targs: any,\n\t\trepair?: ToolCallRepairInfo,\n\t\tdeferResultUntilExpanded = false,\n\t): ToolExecutionComponent {\n\t\tconst actionKey = getToolPanelActionKey(this.getToolPanelScope(), toolName, args);\n\t\tconst toolDefinition = this.getRegisteredToolDefinition(toolName);\n\t\tconst reuseInPlace = shouldReuseToolPanelInPlace(toolName, args);\n\t\tconst existing = this.toolPanels.getReusable(actionKey, { allowActive: reuseInPlace });\n\t\tif (existing) {\n\t\t\tif (reuseInPlace && actionKey) {\n\t\t\t\texisting.resetInvocation(toolName, toolCallId, args, toolDefinition, repair, deferResultUntilExpanded);\n\t\t\t\texisting.setExpanded(this.toolOutputExpanded);\n\t\t\t\tthis.toolPanels.replaceActiveForAction(toolCallId, existing, actionKey);\n\t\t\t\tthis.ui.requestRender();\n\t\t\t\treturn existing;\n\t\t\t}\n\t\t\tthis.detachToolExecutionComponent(existing);\n\t\t\texisting.resetInvocation(toolName, toolCallId, args, toolDefinition, repair, deferResultUntilExpanded);\n\t\t\texisting.setExpanded(this.toolOutputExpanded);\n\t\t\tthis.appendToolExecutionComponent(existing, true);\n\t\t\tthis.toolPanels.register(toolCallId, existing, actionKey);\n\t\t\treturn existing;\n\t\t}\n\t\tconst component = new ToolExecutionComponent(\n\t\t\ttoolName,\n\t\t\ttoolCallId,\n\t\t\targs,\n\t\t\t{\n\t\t\t\tshowImages: this.settingsManager.getShowImages(),\n\t\t\t\timageWidthCells: this.settingsManager.getImageWidthCells(),\n\t\t\t\trepair,\n\t\t\t\tdeferResultUntilExpanded,\n\t\t\t},\n\t\t\ttoolDefinition,\n\t\t\tthis.ui,\n\t\t\tthis.sessionManager.getCwd(),\n\t\t);\n\t\tcomponent.setExpanded(this.toolOutputExpanded);\n\t\tthis.appendToolExecutionComponent(component, true);\n\t\tthis.toolPanels.register(toolCallId, component, actionKey);\n\t\treturn component;\n\t}\n\n\tpublic clearActiveToolCalls(): void {\n\t\tthis.toolPanels.clearActive();\n\t}\n\n\tprivate clearRenderedToolPanelState(): void {\n\t\tthis.toolPanels.clearAll();\n\t}\n\n\tprivate getWorkingLoaderMessage(): string {\n\t\treturn this.workingMessage ?? this.defaultWorkingMessage;\n\t}\n\n\tprivate createWorkingLoader(): Loader {\n\t\treturn new Loader(\n\t\t\tthis.ui,\n\t\t\t(spinner) => theme.fg(\"accent\", spinner),\n\t\t\t(text) => theme.fg(\"muted\", text),\n\t\t\tthis.getWorkingLoaderMessage(),\n\t\t\tthis.workingIndicatorOptions,\n\t\t);\n\t}\n\n\tprivate stopWorkingLoader(): void {\n\t\tif (this.loadingAnimation) {\n\t\t\tthis.loadingAnimation.stop();\n\t\t\tthis.loadingAnimation = undefined;\n\t\t}\n\t\tthis.statusContainer.clear();\n\t\tthis.activityLane?.remove(\"runtime:routing\");\n\t\tthis.activityLane?.remove(\"runtime:turn\");\n\t}\n\n\tprivate setWorkingVisible(visible: boolean): void {\n\t\tif (!this.hasHumanAudience) {\n\t\t\tthis.workingVisible = false;\n\t\t\tthis.stopWorkingLoader();\n\t\t\treturn;\n\t\t}\n\t\tthis.workingVisible = visible;\n\t\tif (!visible) {\n\t\t\tthis.stopWorkingLoader();\n\t\t\tthis.ui.requestRender();\n\t\t\treturn;\n\t\t}\n\t\tif (this.session.isStreaming && !this.loadingAnimation) {\n\t\t\tif (this.workingIndicatorOptions) {\n\t\t\t\tthis.statusContainer.clear();\n\t\t\t\tthis.loadingAnimation = this.createWorkingLoader();\n\t\t\t\tthis.statusContainer.addChild(this.loadingAnimation);\n\t\t\t} else {\n\t\t\t\tthis.activityLane?.start({ id: \"runtime:turn\", kind: \"runtime\", label: this.getWorkingLoaderMessage() });\n\t\t\t}\n\t\t}\n\t\tthis.ui.requestRender();\n\t}\n\n\tprivate setWorkingIndicator(options?: LoaderIndicatorOptions): void {\n\t\tthis.workingIndicatorOptions = options;\n\t\tif (!this.hasHumanAudience) {\n\t\t\tthis.stopWorkingLoader();\n\t\t\treturn;\n\t\t}\n\t\tif (options) {\n\t\t\tthis.activityLane?.remove(\"runtime:turn\");\n\t\t\tif (this.session.isStreaming && this.workingVisible) {\n\t\t\t\tthis.stopWorkingLoader();\n\t\t\t\tthis.loadingAnimation = this.createWorkingLoader();\n\t\t\t\tthis.statusContainer.addChild(this.loadingAnimation);\n\t\t\t}\n\t\t} else {\n\t\t\tthis.loadingAnimation?.stop();\n\t\t\tthis.loadingAnimation = undefined;\n\t\t\tthis.statusContainer.clear();\n\t\t\tif (this.session.isStreaming && this.workingVisible) {\n\t\t\t\tthis.activityLane?.start({ id: \"runtime:turn\", kind: \"runtime\", label: this.getWorkingLoaderMessage() });\n\t\t\t}\n\t\t}\n\t\tthis.ui.requestRender();\n\t}\n\n\tprivate setHiddenThinkingLabel(label?: string): void {\n\t\tthis.hiddenThinkingLabel = label ?? this.defaultHiddenThinkingLabel;\n\t\tfor (const child of this.chatContainer.children) {\n\t\t\tif (child instanceof AssistantMessageComponent) {\n\t\t\t\tchild.setHiddenThinkingLabel(this.hiddenThinkingLabel);\n\t\t\t}\n\t\t}\n\t\tif (this.streamingComponent) {\n\t\t\tthis.streamingComponent.setHiddenThinkingLabel(this.hiddenThinkingLabel);\n\t\t}\n\t\tthis.ui.requestRender();\n\t}\n\n\t/**\n\t * Set the extension-provided working-loader message (undefined restores the default).\n\t */\n\tprivate setWorkingMessage(message: string | undefined): void {\n\t\tthis.workingMessage = message;\n\t\tif (this.loadingAnimation) {\n\t\t\tthis.loadingAnimation.setMessage(message ?? this.defaultWorkingMessage);\n\t\t}\n\t\tthis.activityLane?.update(\"runtime:turn\", message ?? this.defaultWorkingMessage);\n\t}\n\n\t/**\n\t * Reset the working indicator and hidden-thinking label to their built-in defaults.\n\t */\n\tprivate resetWorkingIndicators(): void {\n\t\tthis.workingMessage = undefined;\n\t\tthis.workingVisible = this.hasHumanAudience;\n\t\tthis.setWorkingIndicator();\n\t\tif (this.loadingAnimation) {\n\t\t\tthis.loadingAnimation.setMessage(`${this.defaultWorkingMessage} (${keyText(\"app.interrupt\")} to interrupt)`);\n\t\t}\n\t\tthis.setHiddenThinkingLabel();\n\t}\n\n\tprivate async promptForMissingSessionCwd(error: MissingSessionCwdError): Promise<string | undefined> {\n\t\tconst confirmed = await this.extensionUiHost.showExtensionConfirm(\n\t\t\t\"Session cwd not found\",\n\t\t\tformatMissingSessionCwdPrompt(error.issue),\n\t\t);\n\t\treturn confirmed ? error.issue.fallbackCwd : undefined;\n\t}\n\n\t// =========================================================================\n\t// Key Handlers\n\t// =========================================================================\n\n\tprivate setupKeyHandlers(): void {\n\t\tkeyHandlers.setupKeyHandlers(this.keyHandlersHost());\n\t}\n\n\tprivate keyHandlersHost(): keyHandlers.KeyHandlersHost {\n\t\tconst self = this;\n\t\treturn {\n\t\t\tdefaultEditor: this.defaultEditor,\n\t\t\tui: this.ui,\n\t\t\tget editor() {\n\t\t\t\treturn self.editor;\n\t\t\t},\n\t\t\tget session() {\n\t\t\t\treturn self.session;\n\t\t\t},\n\t\t\tget settingsManager() {\n\t\t\t\treturn self.settingsManager;\n\t\t\t},\n\t\t\tget isBashMode() {\n\t\t\t\treturn self.isBashMode;\n\t\t\t},\n\t\t\tset isBashMode(value) {\n\t\t\t\tself.isBashMode = value;\n\t\t\t},\n\t\t\tget lastEscapeTime() {\n\t\t\t\treturn self.lastEscapeTime;\n\t\t\t},\n\t\t\tset lastEscapeTime(value) {\n\t\t\t\tself.lastEscapeTime = value;\n\t\t\t},\n\t\t\trestoreQueuedMessagesToEditor: (options) => this.restoreQueuedMessagesToEditor(options),\n\t\t\tupdateEditorBorderColor: () => this.updateEditorBorderColor(),\n\t\t\tshowTreeSelector: (id) => this.showTreeSelector(id),\n\t\t\tshowUserMessageSelector: (name) => this.showUserMessageSelector(name),\n\t\t\thandleCtrlC: () => this.handleCtrlC(),\n\t\t\thandleCtrlD: () => this.handleCtrlD(),\n\t\t\thandleCtrlZ: () => this.handleCtrlZ(),\n\t\t\tcycleThinkingLevel: () => this.cycleThinkingLevel(),\n\t\t\tcycleModel: (direction) => this.cycleModel(direction),\n\t\t\thandleDebugCommand: () => this.handleDebugCommand(),\n\t\t\tshowModelSelector: (input) => this.showModelSelector(input),\n\t\t\tloadTuiHistoryOnDemand: () => this.loadTuiHistoryOnDemand(),\n\t\t\ttoggleThinkingBlockVisibility: () => this.toggleThinkingBlockVisibility(),\n\t\t\topenExternalEditor: () => this.openExternalEditor(),\n\t\t\thandleFollowUp: () => this.handleFollowUp(),\n\t\t\thandleDequeue: () => this.handleDequeue(),\n\t\t\thandleClearCommand: (name) => this.handleClearCommand(name),\n\t\t\tshowSessionSelector: () => this.showSessionSelector(),\n\t\t\thandleClipboardImagePaste: () => this.handleClipboardImagePaste(),\n\t\t};\n\t}\n\n\tprivate handleClipboardImagePaste(): Promise<void> {\n\t\tconst self = this;\n\t\tconst selectedModel = this.session?.model;\n\t\tconst modelCannotSeeImages = selectedModel ? !selectedModel.input.includes(\"image\") : false;\n\t\treturn clipboardInput.handleClipboardImagePaste({\n\t\t\tget pendingClipboardImages() {\n\t\t\t\treturn self.pendingClipboardImages;\n\t\t\t},\n\t\t\tset pendingClipboardImages(value) {\n\t\t\t\tself.pendingClipboardImages = value;\n\t\t\t},\n\t\t\tget clipboardImageCounter() {\n\t\t\t\treturn self.clipboardImageCounter;\n\t\t\t},\n\t\t\tset clipboardImageCounter(value) {\n\t\t\t\tself.clipboardImageCounter = value;\n\t\t\t},\n\t\t\teditor: this.editor,\n\t\t\tui: this.ui,\n\t\t\tautoResizeImages: this.settingsManager.getImageAutoResize(),\n\t\t\tblockImages: this.settingsManager.getBlockImages() || modelCannotSeeImages,\n\t\t\tblockImagesReason: modelCannotSeeImages\n\t\t\t\t? \"The selected model does not accept image input. Switch to an image-capable model or route this inspection to a vision worker.\"\n\t\t\t\t: undefined,\n\t\t\timageStore: this.clipboardImageStore,\n\t\t\tshowStatus: (message) => this.showStatus(message),\n\t\t\tshowWarning: (message) => this.showWarning(message),\n\t\t});\n\t}\n\n\tprivate takeClipboardImagesForText(text: string): ImageContent[] | undefined {\n\t\tconst self = this;\n\t\treturn clipboardInput.takeClipboardImagesForText(\n\t\t\t{\n\t\t\t\tget pendingClipboardImages() {\n\t\t\t\t\treturn self.pendingClipboardImages;\n\t\t\t\t},\n\t\t\t\tset pendingClipboardImages(value) {\n\t\t\t\t\tself.pendingClipboardImages = value;\n\t\t\t\t},\n\t\t\t\tget clipboardImageCounter() {\n\t\t\t\t\treturn self.clipboardImageCounter;\n\t\t\t\t},\n\t\t\t\tset clipboardImageCounter(value) {\n\t\t\t\t\tself.clipboardImageCounter = value;\n\t\t\t\t},\n\t\t\t\tclipboardImageStore: this.clipboardImageStore,\n\t\t\t},\n\t\t\ttext,\n\t\t);\n\t}\n\n\tprivate buildUserInputSubmission(text: string): UserInputSubmission {\n\t\treturn clipboardInput.buildUserInputSubmission(\n\t\t\t{ takeClipboardImagesForText: (t) => this.takeClipboardImagesForText(t) },\n\t\t\ttext,\n\t\t);\n\t}\n\n\tprivate setupEditorSubmitHandler(): void {\n\t\tthis.defaultEditor.onSubmit = async (text: string) => {\n\t\t\ttext = text.trim();\n\t\t\tif (!text) return;\n\n\t\t\tif (text === \"/quit\" || text === \"/exit\") {\n\t\t\t\tthis.editor.setText(\"\");\n\t\t\t\tawait this.shutdown();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// A \">>\" prefix queues the message as a follow-up (delivered after the\n\t\t\t// current work finishes, starting the next round) instead of steering.\n\t\t\t// This is the chord-free alternative to app.message.followUp, which many\n\t\t\t// terminals swallow (e.g. Windows Terminal claims alt+enter).\n\t\t\tconst queueAsFollowUp = text.startsWith(\">>\");\n\t\t\tif (queueAsFollowUp) {\n\t\t\t\ttext = text.slice(2).trim();\n\t\t\t\tif (!text) return;\n\t\t\t}\n\n\t\t\t// User input submitted while work is active is always steering. Treat\n\t\t\t// slash/bang text as user steering text instead of executing commands that\n\t\t\t// would interrupt the current stream or compaction.\n\t\t\tif (this.session.isCompacting) {\n\t\t\t\tconst images = this.takeClipboardImagesForText(text);\n\t\t\t\tthis.queueCompactionMessage(text, queueAsFollowUp ? \"followUp\" : \"steer\", images);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (this.session.isStreaming || this.session.isRetrying) {\n\t\t\t\tconst images = this.takeClipboardImagesForText(text);\n\t\t\t\tthis.editor.addToHistory?.(text);\n\t\t\t\tthis.editor.setText(\"\");\n\t\t\t\ttry {\n\t\t\t\t\tawait this.session.prompt(text, {\n\t\t\t\t\t\tstreamingBehavior: queueAsFollowUp ? \"followUp\" : \"steer\",\n\t\t\t\t\t\timages,\n\t\t\t\t\t\tprocessSlashCommands: false,\n\t\t\t\t\t});\n\t\t\t\t} finally {\n\t\t\t\t\tthis.refreshAutonomyFooterStatus();\n\t\t\t\t}\n\t\t\t\tthis.updatePendingMessagesDisplay();\n\t\t\t\tthis.ui.requestRender();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Handle commands\n\t\t\tif (text === \"/settings\") {\n\t\t\t\tthis.showSettingsSelector();\n\t\t\t\tthis.editor.setText(\"\");\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (text === \"/auto-learn\" || text.startsWith(\"/auto-learn \")) {\n\t\t\t\tthis.handleAutoLearnCommand(text);\n\t\t\t\tthis.editor.setText(\"\");\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (text === \"/autonomy\" || text.startsWith(\"/autonomy \")) {\n\t\t\t\tthis.handleAutonomyCommand(text);\n\t\t\t\tthis.editor.setText(\"\");\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (text === \"/fitness\" || text.startsWith(\"/fitness \")) {\n\t\t\t\tconst fitnessArgs = text.slice(\"/fitness\".length).trim();\n\t\t\t\tthis.editor.setText(\"\");\n\t\t\t\tif (fitnessArgs.length === 0) {\n\t\t\t\t\t// No args: open the model picker, probe the selection, then offer role assignment.\n\t\t\t\t\tthis.showFitnessModelSelector();\n\t\t\t\t} else {\n\t\t\t\t\t// Explicit ref: same handler as /autonomy fitness.\n\t\t\t\t\tthis.handleAutonomyCommand(`/autonomy fitness ${fitnessArgs}`);\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (text === \"/models\" || text.startsWith(\"/models \")) {\n\t\t\t\tvoid this.handleModelsCommand(text.slice(\"/models\".length).trim());\n\t\t\t\tthis.editor.setText(\"\");\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (text === \"/context\") {\n\t\t\t\tthis.showStatus(this.session.formatContextCompositionDashboard());\n\t\t\t\tthis.editor.setText(\"\");\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (text === \"/toolhealth\") {\n\t\t\t\tthis.showStatus(this.session.formatToolRepairHealthReport());\n\t\t\t\tthis.editor.setText(\"\");\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (text === \"/toolprobe\" || text.startsWith(\"/toolprobe \")) {\n\t\t\t\tconst target = text.slice(\"/toolprobe\".length).trim();\n\t\t\t\tthis.editor.setText(\"\");\n\t\t\t\tthis.showStatus(\"Running tool probe...\");\n\t\t\t\ttry {\n\t\t\t\t\tconst report = await this.session.probeToolCalling(target || undefined);\n\t\t\t\t\tthis.showStatus(report.table);\n\t\t\t\t} catch (error: unknown) {\n\t\t\t\t\tthis.showWarning(error instanceof Error ? error.message : String(error));\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (text.startsWith(\"/toolrule-remove\")) {\n\t\t\t\tconst [model, mode] = text.slice(\"/toolrule-remove\".length).trim().split(/\\s+/, 2);\n\t\t\t\tconst message =\n\t\t\t\t\tmodel && mode\n\t\t\t\t\t\t? this.session.removeToolRepairRule(model, mode)\n\t\t\t\t\t\t\t? `Removed tool repair rule ${mode} for ${model}.`\n\t\t\t\t\t\t\t: `No tool repair rule ${mode} found for ${model}.`\n\t\t\t\t\t\t: \"Usage: /toolrule-remove <provider/model> <mode>\";\n\t\t\t\tthis.showStatus(message);\n\t\t\t\tthis.editor.setText(\"\");\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (text.startsWith(\"/toolprotocol-reset\")) {\n\t\t\t\tconst model = text.slice(\"/toolprotocol-reset\".length).trim();\n\t\t\t\tconst message = model\n\t\t\t\t\t? this.session.resetToolProtocolCalibration(model)\n\t\t\t\t\t\t? `Reset text tool protocol calibration for ${model}.`\n\t\t\t\t\t\t: `No text tool protocol calibration found for ${model}.`\n\t\t\t\t\t: \"Usage: /toolprotocol-reset <provider/model>\";\n\t\t\t\tthis.showStatus(message);\n\t\t\t\tthis.editor.setText(\"\");\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (text === \"/scoped-models\") {\n\t\t\t\tthis.editor.setText(\"\");\n\t\t\t\tawait this.showModelsSelector();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (text === \"/model\" || text.startsWith(\"/model \")) {\n\t\t\t\tconst searchTerm = text.startsWith(\"/model \") ? text.slice(7).trim() : undefined;\n\t\t\t\tthis.editor.setText(\"\");\n\t\t\t\tawait this.handleModelCommand(searchTerm);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (text === \"/profiles\" || text.startsWith(\"/profiles \")) {\n\t\t\t\tconst rawProfileName = text.startsWith(\"/profiles \") ? text.slice(10).trim() : undefined;\n\t\t\t\tthis.editor.setText(\"\");\n\t\t\t\tawait this.handleProfilesCommand(rawProfileName?.length ? rawProfileName : undefined);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (text === \"/export\" || text.startsWith(\"/export \")) {\n\t\t\t\tawait this.handleExportCommand(text);\n\t\t\t\tthis.editor.setText(\"\");\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (text === \"/import\" || text.startsWith(\"/import \")) {\n\t\t\t\tawait this.handleImportCommand(text);\n\t\t\t\tthis.editor.setText(\"\");\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (text === \"/share\") {\n\t\t\t\tawait this.handleShareCommand();\n\t\t\t\tthis.editor.setText(\"\");\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (text === \"/copy\") {\n\t\t\t\tawait this.handleCopyCommand();\n\t\t\t\tthis.editor.setText(\"\");\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (text === \"/name\" || text.startsWith(\"/name \")) {\n\t\t\t\tthis.handleNameCommand(text);\n\t\t\t\tthis.editor.setText(\"\");\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (text === \"/session\") {\n\t\t\t\tthis.handleSessionCommand();\n\t\t\t\tthis.editor.setText(\"\");\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (text === \"/usage\") {\n\t\t\t\tthis.handleUsageMenuCommand();\n\t\t\t\tthis.editor.setText(\"\");\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (text === \"/cost\") {\n\t\t\t\tthis.handleUsageCommand();\n\t\t\t\tthis.editor.setText(\"\");\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (text === \"/goal\" || text.startsWith(\"/goal \")) {\n\t\t\t\tawait this.handleGoalCommand(text);\n\t\t\t\tthis.editor.setText(\"\");\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (text === \"/task\" || text.startsWith(\"/task \") || text === \"/steps\" || text.startsWith(\"/steps \")) {\n\t\t\t\tthis.handleTaskCommand(text);\n\t\t\t\tthis.editor.setText(\"\");\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (text === \"/goal-continue\" || text.startsWith(\"/goal-continue \")) {\n\t\t\t\tawait this.handleGoalContinueCommand(text);\n\t\t\t\tthis.editor.setText(\"\");\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (text === \"/changelog\") {\n\t\t\t\tthis.handleChangelogCommand();\n\t\t\t\tthis.editor.setText(\"\");\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (text === \"/hotkeys\") {\n\t\t\t\tthis.handleHotkeysCommand();\n\t\t\t\tthis.editor.setText(\"\");\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (text === \"/fork\" || text.startsWith(\"/fork \")) {\n\t\t\t\tthis.showUserMessageSelector(text.slice(\"/fork\".length).trim() || undefined);\n\t\t\t\tthis.editor.setText(\"\");\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (text === \"/clone\" || text.startsWith(\"/clone \")) {\n\t\t\t\tthis.editor.setText(\"\");\n\t\t\t\tawait this.handleCloneCommand(text.slice(\"/clone\".length).trim() || undefined);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (text === \"/tree\") {\n\t\t\t\tthis.showTreeSelector();\n\t\t\t\tthis.editor.setText(\"\");\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (text === \"/trust\") {\n\t\t\t\tthis.showTrustSelector();\n\t\t\t\tthis.editor.setText(\"\");\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (text === \"/login\" || text.startsWith(\"/login \")) {\n\t\t\t\tawait this.authDialogs.showOAuthSelector(\"login\", text.slice(\"/login\".length).trim() || undefined);\n\t\t\t\tthis.editor.setText(\"\");\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (text === \"/logout\" || text.startsWith(\"/logout \")) {\n\t\t\t\tawait this.authDialogs.showOAuthSelector(\"logout\", text.slice(\"/logout\".length).trim() || undefined);\n\t\t\t\tthis.editor.setText(\"\");\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (text === \"/new\" || text.startsWith(\"/new \")) {\n\t\t\t\tthis.editor.setText(\"\");\n\t\t\t\tawait this.handleClearCommand(text.slice(\"/new\".length).trim() || undefined);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (text === \"/compact\" || text.startsWith(\"/compact \")) {\n\t\t\t\tconst customInstructions = text.startsWith(\"/compact \") ? text.slice(9).trim() : undefined;\n\t\t\t\tthis.editor.setText(\"\");\n\t\t\t\tawait this.handleCompactCommand(customInstructions);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (text === \"/reload\") {\n\t\t\t\tthis.editor.setText(\"\");\n\t\t\t\tawait this.handleReloadCommand();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (text === \"/curate\" || text.startsWith(\"/curate \")) {\n\t\t\t\tconst args = text.slice(\"/curate\".length).trim();\n\t\t\t\tthis.editor.setText(\"\");\n\t\t\t\tthis.handleCurateCommand(args);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (text === \"/install-resources\" || text.startsWith(\"/install-resources \")) {\n\t\t\t\tconst args = text.slice(\"/install-resources\".length).trim();\n\t\t\t\tthis.editor.setText(\"\");\n\t\t\t\tawait this.handleInstallResourcesCommand(args);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (text === \"/config-backup\" || text.startsWith(\"/config-backup \")) {\n\t\t\t\tconst file = text.slice(\"/config-backup\".length).trim() || undefined;\n\t\t\t\tthis.editor.setText(\"\");\n\t\t\t\tawait this.handleConfigBackupCommand(file);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (text === \"/config-restore\" || text.startsWith(\"/config-restore \")) {\n\t\t\t\tconst file = text.slice(\"/config-restore\".length).trim();\n\t\t\t\tthis.editor.setText(\"\");\n\t\t\t\tawait this.handleConfigRestoreCommand(file);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (text === \"/debug\") {\n\t\t\t\tthis.handleDebugCommand();\n\t\t\t\tthis.editor.setText(\"\");\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (text === \"/arminsayshi\") {\n\t\t\t\tthis.handleArminSaysHi();\n\t\t\t\tthis.editor.setText(\"\");\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (text === \"/dementedelves\") {\n\t\t\t\tthis.handleDementedDelves();\n\t\t\t\tthis.editor.setText(\"\");\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (text === \"/resume\") {\n\t\t\t\tthis.showSessionSelector();\n\t\t\t\tthis.editor.setText(\"\");\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// Handle bash command (! for normal, !! for excluded from context)\n\t\t\tif (text.startsWith(\"!\")) {\n\t\t\t\tconst isExcluded = text.startsWith(\"!!\");\n\t\t\t\tconst command = isExcluded ? text.slice(2).trim() : text.slice(1).trim();\n\t\t\t\tif (command) {\n\t\t\t\t\tif (this.session.isBashRunning) {\n\t\t\t\t\t\tthis.showWarning(\"A bash command is already running. Press Esc to cancel it first.\");\n\t\t\t\t\t\tthis.editor.setText(text);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tthis.editor.addToHistory?.(text);\n\t\t\t\t\tawait this.handleBashCommand(command, isExcluded);\n\t\t\t\t\tthis.isBashMode = false;\n\t\t\t\t\tthis.updateEditorBorderColor();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Normal message submission\n\t\t\t// First, move any pending bash components to chat\n\t\t\tthis.flushPendingBashComponents();\n\n\t\t\tconst submission = this.buildUserInputSubmission(text);\n\t\t\tif (this.onInputCallback) {\n\t\t\t\tthis.onInputCallback(submission);\n\t\t\t} else {\n\t\t\t\tthis.pendingUserInputs.push(submission);\n\t\t\t}\n\t\t\tthis.editor.addToHistory?.(text);\n\t\t};\n\t}\n\n\tprivate subscribeToAgent(): void {\n\t\tthis.unsubscribe = this.session.subscribe(async (event) => {\n\t\t\tawait this.handleEvent(event);\n\t\t});\n\t}\n\n\tprivate handleEvent(event: AgentSessionEvent): Promise<void> {\n\t\treturn handleInteractiveEvent(this as unknown as InteractiveEventHost, event);\n\t}\n\t/** Extract text content from a user message */\n\t// Thin `this.`-delegate to the pure formatter in ./history-reload-math.ts; kept so\n\t// addMessageToChat and the prototype-based interactive-mode tests resolve it via `this`.\n\tprivate getUserMessageText(message: Message): string {\n\t\treturn historyReloadMath.getUserMessageText(message);\n\t}\n\n\tprivate setEditorInputHistory(history: readonly string[]): void {\n\t\tif (this.editor.setHistory) {\n\t\t\tthis.editor.setHistory(history);\n\t\t\treturn;\n\t\t}\n\t\tfor (const text of history) {\n\t\t\tthis.editor.addToHistory?.(text);\n\t\t}\n\t}\n\n\tprivate populateEditorInputHistoryFromMessages(messages: readonly AgentMessage[]): void {\n\t\tconst history = messages\n\t\t\t.filter((message): message is Message => message.role === \"user\")\n\t\t\t.map((message) => this.getUserMessageText(message).trim())\n\t\t\t.filter((text) => text.length > 0)\n\t\t\t.slice(-100);\n\t\tthis.setEditorInputHistory(history);\n\t}\n\n\tprivate populateEditorInputHistoryFromSession(): void {\n\t\tconst sessionManager = this.sessionManager as { getRecentUserInputHistory?: (limit?: number) => string[] };\n\t\tconst history = sessionManager.getRecentUserInputHistory?.(100);\n\t\tif (history) this.setEditorInputHistory(history);\n\t}\n\n\tprivate resetLiveTuiHistoryTrim(): void {\n\t\tthis.liveHistoryHiddenNotice = undefined;\n\t\tthis.liveHistoryHiddenComponents = 0;\n\t}\n\n\tprivate clearPendingStreamingUiUpdate(): void {\n\t\tif (!this.streamingUiUpdateTimer) return;\n\t\tclearTimeout(this.streamingUiUpdateTimer);\n\t\tthis.streamingUiUpdateTimer = undefined;\n\t}\n\n\tprivate getSessionEntryCount(): number {\n\t\tconst manager = this.sessionManager as typeof this.sessionManager & { getEntryCount?: () => number };\n\t\treturn manager.getEntryCount?.() ?? manager.getEntries().length;\n\t}\n\n\tprivate showDeferredHistoryPlaceholder(options: { requestRender?: boolean } = {}): void {\n\t\tthis.chatContainer.children = [];\n\t\tthis.resetLiveTuiHistoryTrim();\n\t\tthis.clearRenderedToolPanelState();\n\n\t\tconst entryCount = this.getSessionEntryCount();\n\t\tif (entryCount > 0) {\n\t\t\tthis.chatContainer.addChild(\n\t\t\t\tnew Text(\n\t\t\t\t\ttheme.fg(\n\t\t\t\t\t\t\"dim\",\n\t\t\t\t\t\t`History hidden for typing performance (${entryCount} entries). Press ${keyText(\"app.tools.expand\")} to load session history on demand.`,\n\t\t\t\t\t),\n\t\t\t\t\t1,\n\t\t\t\t\t0,\n\t\t\t\t),\n\t\t\t);\n\t\t}\n\n\t\tif (options.requestRender ?? true) this.ui.requestRender();\n\t}\n\n\tprivate loadTuiHistoryOnDemand(): void {\n\t\tif (this.tuiHistoryLoadInProgress) return;\n\t\tif (this.tuiHistoryLoaded || this.getSessionEntryCount() === 0) {\n\t\t\tthis.toggleToolOutputExpansion();\n\t\t\treturn;\n\t\t}\n\n\t\tthis.tuiHistoryLoadInProgress = true;\n\t\tvoid (async () => {\n\t\t\ttry {\n\t\t\t\tawait this.renderInitialMessages({ forceHistoryLoad: true });\n\t\t\t} catch (error) {\n\t\t\t\tthis.showError(`Failed to load TUI history: ${error instanceof Error ? error.message : String(error)}`);\n\t\t\t} finally {\n\t\t\t\tthis.tuiHistoryLoadInProgress = false;\n\t\t\t}\n\t\t})();\n\t}\n\n\tprivate getToolCallRepairInfo(toolCall: ToolCall): ToolCallRepairInfo | undefined {\n\t\tif (!toolCall.rawArguments && !toolCall.repairNotes?.length) return undefined;\n\t\treturn {\n\t\t\trepaired: true,\n\t\t\t...(toolCall.rawArguments ? { rawArguments: toolCall.rawArguments } : {}),\n\t\t\t...(toolCall.repairNotes?.length ? { notes: toolCall.repairNotes } : {}),\n\t\t};\n\t}\n\n\tprivate attachStreamingToolPanels(message: AssistantMessage): void {\n\t\tfor (const content of message.content) {\n\t\t\tif (content.type !== \"toolCall\") continue;\n\t\t\tconst repair = this.getToolCallRepairInfo(content);\n\t\t\tif (!this.toolPanels.hasActive(content.id)) {\n\t\t\t\tthis.attachToolExecutionComponent(content.name, content.id, content.arguments, repair);\n\t\t\t} else {\n\t\t\t\tconst component = this.toolPanels.getActive(content.id);\n\t\t\t\tif (component) {\n\t\t\t\t\tcomponent.updateArgs(content.arguments, repair);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic applyStreamingMessageUpdate(message: AssistantMessage, options: { force?: boolean } = {}): void {\n\t\tthis.streamingMessage = message;\n\t\tif (!this.streamingComponent) return;\n\n\t\tconst now = performance.now();\n\t\tconst elapsed = now - this.lastStreamingUiUpdateAt;\n\t\tconst hasToolCall = message.content.some((content) => content.type === \"toolCall\");\n\t\tconst shouldUpdateNow = options.force || hasToolCall || elapsed >= STREAMING_UI_UPDATE_INTERVAL_MS;\n\n\t\tconst update = () => {\n\t\t\tif (!this.streamingComponent || !this.streamingMessage) return;\n\t\t\tthis.streamingComponent.updateContent(this.streamingMessage);\n\t\t\tthis.attachStreamingToolPanels(this.streamingMessage);\n\t\t\tthis.lastStreamingUiUpdateAt = performance.now();\n\t\t\tthis.ui.requestRender();\n\t\t};\n\n\t\tif (shouldUpdateNow) {\n\t\t\tthis.clearPendingStreamingUiUpdate();\n\t\t\tupdate();\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.streamingUiUpdateTimer) return;\n\t\tthis.streamingUiUpdateTimer = setTimeout(\n\t\t\t() => {\n\t\t\t\tthis.streamingUiUpdateTimer = undefined;\n\t\t\t\tupdate();\n\t\t\t},\n\t\t\tMath.max(0, STREAMING_UI_UPDATE_INTERVAL_MS - elapsed),\n\t\t);\n\t}\n\n\tprivate trimLiveTuiHistory(): void {\n\t\tconst children = this.chatContainer.children;\n\t\tif (children.length <= TUI_LIVE_HISTORY_MAX_COMPONENTS) return;\n\n\t\tlet protectedStart = children.length;\n\t\tconst protect = (component: Component | undefined) => {\n\t\t\tif (!component) return;\n\t\t\tconst index = children.indexOf(component);\n\t\t\tif (index !== -1 && index < protectedStart) protectedStart = index;\n\t\t};\n\n\t\tprotect(this.streamingComponent);\n\t\tprotect(this.lastStatusSpacer);\n\t\tprotect(this.lastStatusText);\n\t\tfor (const [, component] of this.toolPanels.activeEntries()) {\n\t\t\tprotect(component);\n\t\t}\n\n\t\tconst trimStart = children[0] === this.liveHistoryHiddenNotice ? 1 : 0;\n\t\tconst targetTrimEnd = children.length - TUI_LIVE_HISTORY_TRIM_TO_COMPONENTS;\n\t\tconst trimEnd = Math.min(targetTrimEnd, protectedStart);\n\t\tif (trimEnd <= trimStart) return;\n\n\t\tconst removed = children.splice(trimStart, trimEnd - trimStart);\n\t\tthis.liveHistoryHiddenComponents += removed.length;\n\t\tif (removed.includes(this.lastStatusSpacer as Component)) this.lastStatusSpacer = undefined;\n\t\tif (removed.includes(this.lastStatusText as Component)) this.lastStatusText = undefined;\n\n\t\tconst noticeText = theme.fg(\n\t\t\t\"dim\",\n\t\t\t`Older TUI history hidden to preserve FPS (${this.liveHistoryHiddenComponents} components). Full session remains available to the model.`,\n\t\t);\n\t\tif (children[0] === this.liveHistoryHiddenNotice) {\n\t\t\tthis.liveHistoryHiddenNotice?.setText(noticeText);\n\t\t\treturn;\n\t\t}\n\n\t\tthis.liveHistoryHiddenNotice = new Text(noticeText, 1, 0);\n\t\tchildren.unshift(this.liveHistoryHiddenNotice);\n\t}\n\n\tprivate appendStatusToChat(message: string, options: { requestRender?: boolean } = {}): void {\n\t\tconst children = this.chatContainer.children;\n\t\tconst last = children.length > 0 ? children[children.length - 1] : undefined;\n\t\tconst secondLast = children.length > 1 ? children[children.length - 2] : undefined;\n\n\t\tif (last && secondLast && last === this.lastStatusText && secondLast === this.lastStatusSpacer) {\n\t\t\tthis.lastStatusText.setText(theme.fg(\"dim\", message));\n\t\t\tif (options.requestRender ?? true) this.ui.requestRender();\n\t\t\treturn;\n\t\t}\n\n\t\tconst spacer = new Spacer(1);\n\t\tconst text = new Text(theme.fg(\"dim\", message), 1, 0);\n\t\tthis.chatContainer.addChild(spacer);\n\t\tthis.chatContainer.addChild(text);\n\t\tthis.lastStatusSpacer = spacer;\n\t\tthis.lastStatusText = text;\n\t\tthis.trimLiveTuiHistory();\n\t\tif (options.requestRender ?? true) this.ui.requestRender();\n\t}\n\n\t/**\n\t * Show a status message in the chat.\n\t *\n\t * If multiple status messages are emitted back-to-back (without anything else being added to the chat),\n\t * we update the previous status line instead of appending new ones to avoid log spam.\n\t */\n\tprivate showStatus(message: string): void {\n\t\tif (!this.hasHumanAudience) return;\n\t\tthis.appendStatusToChat(message);\n\t}\n\n\tprivate addMessageToChat(message: AgentMessage, options?: { populateHistory?: boolean }): void {\n\t\tswitch (message.role) {\n\t\t\tcase \"bashExecution\": {\n\t\t\t\tconst component = new BashExecutionComponent(message.command, this.ui, message.excludeFromContext);\n\t\t\t\tif (message.output) {\n\t\t\t\t\tcomponent.appendOutput(message.output);\n\t\t\t\t}\n\t\t\t\tcomponent.setComplete(\n\t\t\t\t\tmessage.exitCode,\n\t\t\t\t\tmessage.cancelled,\n\t\t\t\t\tmessage.truncated ? ({ truncated: true } as TruncationResult) : undefined,\n\t\t\t\t\tmessage.fullOutputPath,\n\t\t\t\t);\n\t\t\t\tthis.chatContainer.addChild(component);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"custom\": {\n\t\t\t\tif (message.display) {\n\t\t\t\t\tconst renderer = this.session.extensionRunner.getMessageRenderer(message.customType);\n\t\t\t\t\tconst component = new CustomMessageComponent(message, renderer, this.getMarkdownThemeWithSettings());\n\t\t\t\t\tcomponent.setExpanded(this.toolOutputExpanded);\n\t\t\t\t\tthis.chatContainer.addChild(component);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"compactionSummary\": {\n\t\t\t\tthis.chatContainer.addChild(new Spacer(1));\n\t\t\t\tconst component = new CompactionSummaryMessageComponent(message, this.getMarkdownThemeWithSettings());\n\t\t\t\tcomponent.setExpanded(this.toolOutputExpanded);\n\t\t\t\tthis.chatContainer.addChild(component);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"branchSummary\": {\n\t\t\t\tthis.chatContainer.addChild(new Spacer(1));\n\t\t\t\tconst component = new BranchSummaryMessageComponent(message, this.getMarkdownThemeWithSettings());\n\t\t\t\tcomponent.setExpanded(this.toolOutputExpanded);\n\t\t\t\tthis.chatContainer.addChild(component);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"user\": {\n\t\t\t\tconst textContent = this.getUserMessageText(message);\n\t\t\t\tif (textContent) {\n\t\t\t\t\tif (this.chatContainer.children.length > 0) {\n\t\t\t\t\t\tthis.chatContainer.addChild(new Spacer(1));\n\t\t\t\t\t}\n\t\t\t\t\tconst skillBlock = parseSkillBlock(textContent);\n\t\t\t\t\tif (skillBlock) {\n\t\t\t\t\t\t// Render skill block (collapsible)\n\t\t\t\t\t\tconst component = new SkillInvocationMessageComponent(\n\t\t\t\t\t\t\tskillBlock,\n\t\t\t\t\t\t\tthis.getMarkdownThemeWithSettings(),\n\t\t\t\t\t\t);\n\t\t\t\t\t\tcomponent.setExpanded(this.toolOutputExpanded);\n\t\t\t\t\t\tthis.chatContainer.addChild(component);\n\t\t\t\t\t\t// Render user message separately if present\n\t\t\t\t\t\tif (skillBlock.userMessage) {\n\t\t\t\t\t\t\tconst userComponent = new UserMessageComponent(\n\t\t\t\t\t\t\t\tskillBlock.userMessage,\n\t\t\t\t\t\t\t\tthis.getMarkdownThemeWithSettings(),\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tthis.chatContainer.addChild(userComponent);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst userComponent = new UserMessageComponent(textContent, this.getMarkdownThemeWithSettings());\n\t\t\t\t\t\tthis.chatContainer.addChild(userComponent);\n\t\t\t\t\t}\n\t\t\t\t\tif (options?.populateHistory) {\n\t\t\t\t\t\tthis.editor.addToHistory?.(textContent);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"assistant\": {\n\t\t\t\tconst assistantComponent = new AssistantMessageComponent(\n\t\t\t\t\tmessage,\n\t\t\t\t\tthis.hideThinkingBlock,\n\t\t\t\t\tthis.getMarkdownThemeWithSettings(),\n\t\t\t\t\tthis.hiddenThinkingLabel,\n\t\t\t\t);\n\t\t\t\tthis.chatContainer.addChild(assistantComponent);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"toolResult\": {\n\t\t\t\t// Tool results are rendered inline with tool calls, handled separately\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tdefault: {\n\t\t\t\tconst _exhaustive: never = message;\n\t\t\t}\n\t\t}\n\t\tthis.trimLiveTuiHistory();\n\t}\n\n\t// Thin `this.`-delegate to the pure reload-window math in ./history-reload-math.ts;\n\t// kept so renderSessionContext and the prototype-based history tests resolve it via `this`.\n\tprivate messagesForTuiHistoryReload(messages: AgentMessage[]): {\n\t\tmessages: AgentMessage[];\n\t\tomittedMessages: number;\n\t\testimatedLines: number;\n\t} {\n\t\treturn historyReloadMath.messagesForTuiHistoryReload(messages, {\n\t\t\tincludeToolResultContent: this.toolOutputExpanded,\n\t\t});\n\t}\n\n\t/**\n\t * Render session context to chat. Used for initial load and rebuild after compaction.\n\t * @param sessionContext Session context to render\n\t * @param options.updateFooter Update footer state\n\t * @param options.populateHistory Add user messages to editor history\n\t */\n\tprivate renderGeneration = 0;\n\tprivate renderQueue?: Promise<void>;\n\n\tprivate async renderSessionContext(\n\t\tsessionContext: SessionContext,\n\t\toptions: { updateFooter?: boolean; populateHistory?: boolean } = {},\n\t): Promise<void> {\n\t\tconst run = async () => {\n\t\t\t// Build long history offscreen, then atomically swap it into the visible\n\t\t\t// chat container. This keeps the TUI responsive without flashing blank or\n\t\t\t// partial transcript frames during resume/reload/compaction rebuilds.\n\t\t\tthis.renderGeneration = (this.renderGeneration ?? 0) + 1;\n\t\t\tconst generation = this.renderGeneration;\n\t\t\tlet processed = 0;\n\t\t\tlet committed = false;\n\n\t\t\tconst visibleChatContainer = this.chatContainer;\n\t\t\tconst previousLiveHistoryHiddenNotice = this.liveHistoryHiddenNotice;\n\t\t\tconst previousLiveHistoryHiddenComponents = this.liveHistoryHiddenComponents;\n\t\t\tconst previousLastStatusSpacer = this.lastStatusSpacer;\n\t\t\tconst previousLastStatusText = this.lastStatusText;\n\t\t\tconst stagingChatContainer = new Container();\n\n\t\t\tthis.chatContainer = stagingChatContainer;\n\t\t\tthis.resetLiveTuiHistoryTrim();\n\t\t\tthis.clearRenderedToolPanelState();\n\t\t\tconst renderedPendingTools = new Map<string, ToolExecutionComponent>();\n\n\t\t\ttry {\n\t\t\t\tif (options.updateFooter) {\n\t\t\t\t\tthis.footer.invalidate();\n\t\t\t\t\tthis.updateEditorBorderColor();\n\t\t\t\t}\n\n\t\t\t\tconst tuiHistory = this.messagesForTuiHistoryReload(sessionContext.messages);\n\t\t\t\tif (tuiHistory.omittedMessages > 0) {\n\t\t\t\t\tthis.appendStatusToChat(\n\t\t\t\t\t\t`Showing last ~${historyReloadMath.TUI_HISTORY_RELOAD_MAX_LINES} TUI history lines; omitted ${tuiHistory.omittedMessages} older message${tuiHistory.omittedMessages === 1 ? \"\" : \"s\"}. Full session remains available to the model.`,\n\t\t\t\t\t\t{ requestRender: false },\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tfor (const message of tuiHistory.messages) {\n\t\t\t\t\tif (processed > 0 && processed % TUI_HISTORY_RELOAD_CHUNK_SIZE === 0) {\n\t\t\t\t\t\tawait new Promise((resolve) => setImmediate(resolve));\n\t\t\t\t\t\tif (generation !== this.renderGeneration) return;\n\t\t\t\t\t}\n\t\t\t\t\tprocessed++;\n\t\t\t\t\t// Assistant messages need special handling for tool calls\n\t\t\t\t\tif (message.role === \"assistant\") {\n\t\t\t\t\t\tthis.addMessageToChat(message);\n\t\t\t\t\t\t// Render tool call components\n\t\t\t\t\t\tfor (const content of message.content) {\n\t\t\t\t\t\t\tif (content.type === \"toolCall\") {\n\t\t\t\t\t\t\t\tconst component = this.attachToolExecutionComponent(\n\t\t\t\t\t\t\t\t\tcontent.name,\n\t\t\t\t\t\t\t\t\tcontent.id,\n\t\t\t\t\t\t\t\t\tcontent.arguments,\n\t\t\t\t\t\t\t\t\tundefined,\n\t\t\t\t\t\t\t\t\ttrue,\n\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\tif (message.stopReason === \"aborted\" || message.stopReason === \"error\") {\n\t\t\t\t\t\t\t\t\tlet errorMessage: string;\n\t\t\t\t\t\t\t\t\tif (message.stopReason === \"aborted\") {\n\t\t\t\t\t\t\t\t\t\tconst retryAttempt = this.session.retryAttempt;\n\t\t\t\t\t\t\t\t\t\terrorMessage =\n\t\t\t\t\t\t\t\t\t\t\tretryAttempt > 0\n\t\t\t\t\t\t\t\t\t\t\t\t? `Aborted after ${retryAttempt} retry attempt${retryAttempt > 1 ? \"s\" : \"\"}`\n\t\t\t\t\t\t\t\t\t\t\t\t: \"Operation aborted\";\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\terrorMessage = message.errorMessage || \"Error\";\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tcomponent.updateResult({ content: [{ type: \"text\", text: errorMessage }], isError: true });\n\t\t\t\t\t\t\t\t\tthis.toolPanels.finish(content.id);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\trenderedPendingTools.set(content.id, component);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (message.role === \"toolResult\") {\n\t\t\t\t\t\t// Match tool results to pending tool components\n\t\t\t\t\t\tconst component = renderedPendingTools.get(message.toolCallId);\n\t\t\t\t\t\tif (component) {\n\t\t\t\t\t\t\tcomponent.updateResult(message);\n\t\t\t\t\t\t\trenderedPendingTools.delete(message.toolCallId);\n\t\t\t\t\t\t\tthis.toolPanels.finish(message.toolCallId);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// All other messages use standard rendering\n\t\t\t\t\t\tthis.addMessageToChat(message, options);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (generation !== this.renderGeneration) return;\n\t\t\t\tvisibleChatContainer.children = stagingChatContainer.children;\n\t\t\t\tcommitted = true;\n\t\t\t} finally {\n\t\t\t\tconst stagedLiveHistoryHiddenNotice = this.liveHistoryHiddenNotice;\n\t\t\t\tconst stagedLiveHistoryHiddenComponents = this.liveHistoryHiddenComponents;\n\t\t\t\tconst stagedLastStatusSpacer = this.lastStatusSpacer;\n\t\t\t\tconst stagedLastStatusText = this.lastStatusText;\n\n\t\t\t\tthis.chatContainer = visibleChatContainer;\n\t\t\t\tif (committed) {\n\t\t\t\t\tthis.liveHistoryHiddenNotice = stagedLiveHistoryHiddenNotice;\n\t\t\t\t\tthis.liveHistoryHiddenComponents = stagedLiveHistoryHiddenComponents;\n\t\t\t\t\tthis.lastStatusSpacer = stagedLastStatusSpacer;\n\t\t\t\t\tthis.lastStatusText = stagedLastStatusText;\n\t\t\t\t} else {\n\t\t\t\t\tthis.liveHistoryHiddenNotice = previousLiveHistoryHiddenNotice;\n\t\t\t\t\tthis.liveHistoryHiddenComponents = previousLiveHistoryHiddenComponents;\n\t\t\t\t\tthis.lastStatusSpacer = previousLastStatusSpacer;\n\t\t\t\t\tthis.lastStatusText = previousLastStatusText;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (committed) this.ui.requestRender();\n\t\t};\n\n\t\tthis.renderQueue = (this.renderQueue ?? Promise.resolve()).then(run, run);\n\t\treturn this.renderQueue;\n\t}\n\n\tasync renderInitialMessages(options: { forceHistoryLoad?: boolean } = {}): Promise<void> {\n\t\tif (!options.forceHistoryLoad) {\n\t\t\tthis.populateEditorInputHistoryFromSession();\n\t\t\tthis.tuiHistoryLoaded = false;\n\t\t\tthis.showDeferredHistoryPlaceholder({ requestRender: true });\n\t\t\tthis.footer.invalidate();\n\t\t\tthis.updateEditorBorderColor();\n\t\t\treturn;\n\t\t}\n\n\t\t// Get aligned messages and entries from session context only when the user\n\t\t// explicitly requests TUI history. The model/session state is already loaded.\n\t\tconst context = this.sessionManager.buildSessionContext();\n\t\tthis.populateEditorInputHistoryFromMessages(context.messages);\n\t\tawait this.renderSessionContext(context, {\n\t\t\tupdateFooter: true,\n\t\t});\n\t\tthis.tuiHistoryLoaded = true;\n\n\t\t// Show compaction info if session was compacted\n\t\tconst allEntries = this.sessionManager.getEntries();\n\t\tconst compactionCount = allEntries.filter((e) => e.type === \"compaction\").length;\n\t\tif (compactionCount > 0) {\n\t\t\tconst times = compactionCount === 1 ? \"1 time\" : `${compactionCount} times`;\n\t\t\tthis.showStatus(`Session compacted ${times}`);\n\t\t}\n\t}\n\n\tasync getUserInput(): Promise<UserInputSubmission> {\n\t\tconst queuedInput = this.pendingUserInputs.shift();\n\t\tif (queuedInput !== undefined) {\n\t\t\treturn queuedInput;\n\t\t}\n\n\t\treturn new Promise((resolve) => {\n\t\t\tthis.onInputCallback = (submission: UserInputSubmission) => {\n\t\t\t\tthis.onInputCallback = undefined;\n\t\t\t\tresolve(submission);\n\t\t\t};\n\t\t});\n\t}\n\n\tprivate async rebuildChatFromMessages(): Promise<void> {\n\t\tif (!this.tuiHistoryLoaded) {\n\t\t\tthis.showDeferredHistoryPlaceholder({ requestRender: true });\n\t\t\treturn;\n\t\t}\n\t\tconst context = this.sessionManager.buildSessionContext();\n\t\tawait this.renderSessionContext(context);\n\t}\n\n\t// =========================================================================\n\t// Key handlers\n\t// =========================================================================\n\n\tprivate handleCtrlC(): void {\n\t\tconst now = Date.now();\n\t\tif (now - this.lastSigintTime < 500) {\n\t\t\tvoid this.shutdown();\n\t\t} else {\n\t\t\tthis.clearEditor();\n\t\t\tthis.lastSigintTime = now;\n\t\t}\n\t}\n\n\tprivate handleCtrlD(): void {\n\t\t// Only called when editor is empty (enforced by CustomEditor)\n\t\tvoid this.shutdown();\n\t}\n\n\t/**\n\t * Gracefully shutdown the agent.\n\t * Stops the TUI before emitting shutdown events so extension UI cleanup cannot\n\t * repaint the final frame while the process is exiting.\n\t */\n\tprivate isShuttingDown = false;\n\n\tprivate shutdown(options?: { fromSignal?: boolean }): Promise<void> {\n\t\tconst self = this;\n\t\treturn signalLifecycle.shutdown(\n\t\t\t{\n\t\t\t\tget isShuttingDown() {\n\t\t\t\t\treturn self.isShuttingDown;\n\t\t\t\t},\n\t\t\t\tset isShuttingDown(value) {\n\t\t\t\t\tself.isShuttingDown = value;\n\t\t\t\t},\n\t\t\t\tget signalCleanupHandlers() {\n\t\t\t\t\treturn self.signalCleanupHandlers;\n\t\t\t\t},\n\t\t\t\tset signalCleanupHandlers(value) {\n\t\t\t\t\tself.signalCleanupHandlers = value;\n\t\t\t\t},\n\t\t\t\tget shutdownRequested() {\n\t\t\t\t\treturn self.shutdownRequested;\n\t\t\t\t},\n\t\t\t\truntimeHost: this.runtimeHost,\n\t\t\t\tui: this.ui,\n\t\t\t\tstop: () => this.stop(),\n\t\t\t\tformatResumeCommand: () => formatResumeCommand(this.sessionManager),\n\t\t\t\tshowStatus: (message) => this.showStatus(message),\n\t\t\t\tshutdown: (opts) => this.shutdown(opts),\n\t\t\t\tunregisterSignalHandlers: () => this.unregisterSignalHandlers(),\n\t\t\t\temergencyTerminalExit: () => this.emergencyTerminalExit(),\n\t\t\t\tuncaughtCrash: (error) => this.uncaughtCrash(error),\n\t\t\t},\n\t\t\toptions,\n\t\t);\n\t}\n\n\tprivate emergencyTerminalExit(): never {\n\t\treturn signalLifecycle.emergencyTerminalExit(this as unknown as signalLifecycle.SignalLifecycleHost);\n\t}\n\n\tprivate uncaughtCrash(error: Error): never {\n\t\treturn signalLifecycle.uncaughtCrash(this as unknown as signalLifecycle.SignalLifecycleHost, error);\n\t}\n\n\tprivate checkShutdownRequested(): Promise<void> {\n\t\treturn signalLifecycle.checkShutdownRequested(this as unknown as signalLifecycle.SignalLifecycleHost);\n\t}\n\n\tprivate registerSignalHandlers(): void {\n\t\tsignalLifecycle.registerSignalHandlers(this as unknown as signalLifecycle.SignalLifecycleHost);\n\t}\n\n\tprivate unregisterSignalHandlers(): void {\n\t\tsignalLifecycle.unregisterSignalHandlers(this as unknown as signalLifecycle.SignalLifecycleHost);\n\t}\n\n\tprivate handleCtrlZ(): void {\n\t\tsignalLifecycle.handleCtrlZ({ ui: this.ui, showStatus: (message) => this.showStatus(message) });\n\t}\n\n\tprivate async handleFollowUp(): Promise<void> {\n\t\tconst text = (this.editor.getExpandedText?.() ?? this.editor.getText()).trim();\n\t\tif (!text) return;\n\n\t\t// Queue input during compaction (extension commands execute immediately)\n\t\tif (this.session.isCompacting) {\n\t\t\tif (this.isExtensionCommand(text)) {\n\t\t\t\tthis.editor.addToHistory?.(text);\n\t\t\t\tthis.editor.setText(\"\");\n\t\t\t\ttry {\n\t\t\t\t\tawait this.session.prompt(text);\n\t\t\t\t} finally {\n\t\t\t\t\tthis.refreshAutonomyFooterStatus();\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconst images = this.takeClipboardImagesForText(text);\n\t\t\t\tthis.queueCompactionMessage(text, \"followUp\", images);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\t// Alt+Enter queues a follow-up message (waits until agent finishes)\n\t\t// This handles extension commands (execute immediately), prompt template expansion, and queueing\n\t\tif (this.session.isStreaming) {\n\t\t\tconst images = this.takeClipboardImagesForText(text);\n\t\t\tthis.editor.addToHistory?.(text);\n\t\t\tthis.editor.setText(\"\");\n\t\t\ttry {\n\t\t\t\tawait this.session.prompt(text, { streamingBehavior: \"followUp\", images });\n\t\t\t} finally {\n\t\t\t\tthis.refreshAutonomyFooterStatus();\n\t\t\t}\n\t\t\tthis.updatePendingMessagesDisplay();\n\t\t\tthis.ui.requestRender();\n\t\t}\n\t\t// If not streaming, Alt+Enter acts like regular Enter (trigger onSubmit)\n\t\telse if (this.editor.onSubmit) {\n\t\t\tawait this.editor.onSubmit(text);\n\t\t\tthis.editor.setText(\"\");\n\t\t}\n\t}\n\n\tprivate handleDequeue(): void {\n\t\tconst restored = this.restoreQueuedMessagesToEditor();\n\t\tif (restored === 0) {\n\t\t\tthis.showStatus(\"No queued messages to restore\");\n\t\t} else {\n\t\t\tthis.showStatus(`Restored ${restored} queued message${restored > 1 ? \"s\" : \"\"} to editor`);\n\t\t}\n\t}\n\n\tprivate updateEditorBorderColor(): void {\n\t\tif (this.isBashMode) {\n\t\t\tthis.editor.borderColor = theme.getBashModeBorderColor();\n\t\t} else {\n\t\t\tconst level = this.session.thinkingLevel || \"off\";\n\t\t\tthis.editor.borderColor = theme.getThinkingBorderColor(level);\n\t\t}\n\t\tthis.ui.requestRender();\n\t}\n\n\tprivate cycleThinkingLevel(): void {\n\t\tconst newLevel = this.session.cycleThinkingLevel();\n\t\tif (newLevel === undefined) {\n\t\t\tthis.showStatus(\"Current model does not support thinking\");\n\t\t} else {\n\t\t\tthis.footer.invalidate();\n\t\t\tthis.updateEditorBorderColor();\n\t\t\tthis.showStatus(`Thinking level: ${newLevel}`);\n\t\t}\n\t}\n\n\tprivate async cycleModel(direction: \"forward\" | \"backward\"): Promise<void> {\n\t\ttry {\n\t\t\tconst result = await this.session.cycleModel(direction);\n\t\t\tif (result === undefined) {\n\t\t\t\tconst msg = this.session.scopedModels.length > 0 ? \"Only one model in scope\" : \"Only one model available\";\n\t\t\t\tthis.showStatus(msg);\n\t\t\t} else {\n\t\t\t\tthis.footer.invalidate();\n\t\t\t\tthis.updateEditorBorderColor();\n\t\t\t\tconst thinkingStr =\n\t\t\t\t\tresult.model.reasoning && result.thinkingLevel !== \"off\" ? ` (thinking: ${result.thinkingLevel})` : \"\";\n\t\t\t\tthis.showStatus(`Switched to ${result.model.name || result.model.id}${thinkingStr}`);\n\t\t\t\tvoid this.maybeWarnAboutAnthropicSubscriptionAuth(result.model);\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tthis.showError(error instanceof Error ? error.message : String(error));\n\t\t}\n\t}\n\n\tprivate toggleToolOutputExpansion(): void {\n\t\tthis.setToolsExpanded(!this.toolOutputExpanded);\n\t}\n\n\tprivate setToolsExpanded(expanded: boolean): void {\n\t\tthis.toolOutputExpanded = expanded;\n\t\tconst activeHeader = this.extensionUiHost.getCustomHeader() ?? this.builtInHeader;\n\t\tif (isExpandable(activeHeader)) {\n\t\t\tactiveHeader.setExpanded(expanded);\n\t\t}\n\t\tfor (const child of this.chatContainer.children) {\n\t\t\tif (isExpandable(child)) {\n\t\t\t\tchild.setExpanded(expanded);\n\t\t\t}\n\t\t}\n\t\tthis.ui.requestRender();\n\t}\n\n\tprivate async toggleThinkingBlockVisibility(): Promise<void> {\n\t\tthis.hideThinkingBlock = !this.hideThinkingBlock;\n\t\tthis.settingsManager.setHideThinkingBlock(this.hideThinkingBlock);\n\n\t\t// Rebuild chat from session messages\n\t\tawait this.rebuildChatFromMessages();\n\n\t\t// If streaming, re-add the streaming component with updated visibility and re-render\n\t\tif (this.streamingComponent && this.streamingMessage) {\n\t\t\tthis.streamingComponent.setHideThinkingBlock(this.hideThinkingBlock);\n\t\t\tthis.streamingComponent.updateContent(this.streamingMessage);\n\t\t\tthis.chatContainer.addChild(this.streamingComponent);\n\t\t}\n\n\t\tthis.showStatus(`Thinking blocks: ${this.hideThinkingBlock ? \"hidden\" : \"visible\"}`);\n\t}\n\n\tprivate openExternalEditor(): Promise<void> {\n\t\treturn openExternalEditor({\n\t\t\teditor: this.editor,\n\t\t\tui: this.ui,\n\t\t\tshowWarning: (message) => this.showWarning(message),\n\t\t});\n\t}\n\n\tprivate openEditorForPath(filePath: string): Promise<boolean> {\n\t\treturn openEditorForPath(\n\t\t\t{\n\t\t\t\teditor: this.editor,\n\t\t\t\tui: this.ui,\n\t\t\t\tshowWarning: (message) => this.showWarning(message),\n\t\t\t},\n\t\t\tfilePath,\n\t\t);\n\t}\n\n\t// =========================================================================\n\t// UI helpers\n\t// =========================================================================\n\n\tclearEditor(): void {\n\t\tthis.editor.setText(\"\");\n\t\tthis.ui.requestRender();\n\t}\n\n\tshowError(errorMessage: string): void {\n\t\tthis.chatContainer.addChild(new Spacer(1));\n\t\tthis.chatContainer.addChild(new Text(theme.fg(\"error\", `Error: ${errorMessage}`), 1, 0));\n\t\tthis.chatContainer.addChild(new Spacer(1));\n\t\tthis.ui.requestRender();\n\t}\n\n\tshowWarning(warningMessage: string): void {\n\t\tthis.chatContainer.addChild(new Spacer(1));\n\t\tthis.chatContainer.addChild(new Text(theme.fg(\"warning\", `Warning: ${warningMessage}`), 1, 0));\n\t\tthis.ui.requestRender();\n\t}\n\n\tshowNewVersionNotification(release: LatestPiRelease): void {\n\t\tstartupChecks.showNewVersionNotification(this.startupChecksHost(), release);\n\t}\n\n\tshowPackageUpdateNotification(packages: string[]): void {\n\t\tstartupChecks.showPackageUpdateNotification(this.startupChecksHost(), packages);\n\t}\n\n\t/**\n\t * Get all queued messages (read-only).\n\t * Combines session queue and compaction queue.\n\t */\n\tprivate getAllQueuedMessages(): { steering: string[]; followUp: string[] } {\n\t\treturn {\n\t\t\tsteering: [\n\t\t\t\t...this.session.getSteeringMessages(),\n\t\t\t\t...this.compactionQueuedMessages.filter((msg) => msg.mode === \"steer\").map((msg) => msg.text),\n\t\t\t],\n\t\t\tfollowUp: [\n\t\t\t\t...this.session.getFollowUpMessages(),\n\t\t\t\t...this.session.getQueuedExtensionCommands(),\n\t\t\t\t...this.compactionQueuedMessages.filter((msg) => msg.mode === \"followUp\").map((msg) => msg.text),\n\t\t\t],\n\t\t};\n\t}\n\n\t/**\n\t * Clear all queued messages and return their contents.\n\t * Clears both session queue and compaction queue.\n\t */\n\tprivate clearAllQueues(): { steering: string[]; followUp: string[] } {\n\t\tconst { steering, followUp, commands } = this.session.clearQueue();\n\t\tconst compactionSteering = this.compactionQueuedMessages\n\t\t\t.filter((msg) => msg.mode === \"steer\")\n\t\t\t.map((msg) => msg.text);\n\t\tconst compactionFollowUp = this.compactionQueuedMessages\n\t\t\t.filter((msg) => msg.mode === \"followUp\")\n\t\t\t.map((msg) => msg.text);\n\t\tthis.compactionQueuedMessages = [];\n\t\treturn {\n\t\t\tsteering: [...steering, ...compactionSteering],\n\t\t\tfollowUp: [...followUp, ...commands, ...compactionFollowUp],\n\t\t};\n\t}\n\n\tprivate updatePendingMessagesDisplay(): void {\n\t\tthis.pendingMessagesContainer.clear();\n\t\tfor (const component of this.pendingBashComponents) this.pendingMessagesContainer.addChild(component);\n\t\tconst { steering: steeringMessages, followUp: followUpMessages } = this.getAllQueuedMessages();\n\t\tconst steeringCount = steeringMessages.length;\n\t\tconst followUpCount = followUpMessages.length;\n\t\tconst total = steeringCount + followUpCount;\n\t\tif (total > 0) {\n\t\t\tconst dequeueHint = this.getAppKeyDisplay(\"app.message.dequeue\");\n\t\t\tconst details = [\n\t\t\t\tsteeringCount > 0 ? `${steeringCount} steering` : undefined,\n\t\t\t\tfollowUpCount > 0 ? `${followUpCount} follow-up` : undefined,\n\t\t\t]\n\t\t\t\t.filter((value): value is string => value !== undefined)\n\t\t\t\t.join(\" · \");\n\t\t\tthis.activityLane?.wait({\n\t\t\t\tid: \"queue:messages\",\n\t\t\t\tkind: \"queue\",\n\t\t\t\tlabel: `Queued ${total} · ${details} · ${dequeueHint} edit`,\n\t\t\t});\n\t\t} else {\n\t\t\tthis.activityLane?.remove(\"queue:messages\");\n\t\t}\n\t}\n\n\tprivate restoreQueuedMessagesToEditor(options?: { abort?: boolean; currentText?: string }): number {\n\t\tconst { steering, followUp } = this.clearAllQueues();\n\t\tconst allQueued = [...steering, ...followUp];\n\t\tif (allQueued.length === 0) {\n\t\t\tthis.updatePendingMessagesDisplay();\n\t\t\tif (options?.abort) {\n\t\t\t\tthis.agent.abort();\n\t\t\t}\n\t\t\treturn 0;\n\t\t}\n\t\tconst queuedText = allQueued.join(\"\\n\\n\");\n\t\tconst currentText = options?.currentText ?? this.editor.getText();\n\t\tconst combinedText = [queuedText, currentText].filter((t) => t.trim()).join(\"\\n\\n\");\n\t\tthis.editor.setText(combinedText);\n\t\tthis.updatePendingMessagesDisplay();\n\t\tif (options?.abort) {\n\t\t\tthis.agent.abort();\n\t\t}\n\t\treturn allQueued.length;\n\t}\n\n\tprivate queueCompactionMessage(text: string, mode: \"steer\" | \"followUp\", images?: ImageContent[]): void {\n\t\tthis.compactionQueuedMessages.push({ text, mode, images });\n\t\tthis.editor.addToHistory?.(text);\n\t\tthis.editor.setText(\"\");\n\t\tthis.updatePendingMessagesDisplay();\n\t\tthis.showStatus(\"Queued message for after compaction\");\n\t}\n\n\tprivate isExtensionCommand(text: string): boolean {\n\t\tif (!text.startsWith(\"/\")) return false;\n\n\t\tconst extensionRunner = this.session.extensionRunner;\n\n\t\tconst spaceIndex = text.indexOf(\" \");\n\t\tconst commandName = spaceIndex === -1 ? text.slice(1) : text.slice(1, spaceIndex);\n\t\treturn !!extensionRunner.getCommand(commandName);\n\t}\n\n\tprivate flushCompactionQueue(options?: { willRetry?: boolean }): Promise<void> {\n\t\tconst self = this;\n\t\treturn compactionQueue.flushCompactionQueue(\n\t\t\t{\n\t\t\t\tget compactionQueuedMessages() {\n\t\t\t\t\treturn self.compactionQueuedMessages;\n\t\t\t\t},\n\t\t\t\tset compactionQueuedMessages(value) {\n\t\t\t\t\tself.compactionQueuedMessages = value;\n\t\t\t\t},\n\t\t\t\tsession: this.session,\n\t\t\t\tupdatePendingMessagesDisplay: () => this.updatePendingMessagesDisplay(),\n\t\t\t\tshowError: (message) => this.showError(message),\n\t\t\t\tisExtensionCommand: (text) => this.isExtensionCommand(text),\n\t\t\t\trefreshAutonomyFooterStatus: () => this.refreshAutonomyFooterStatus(),\n\t\t\t},\n\t\t\toptions,\n\t\t);\n\t}\n\n\t/** Move pending bash components from pending area to chat */\n\tprivate flushPendingBashComponents(): void {\n\t\tfor (const component of this.pendingBashComponents) {\n\t\t\tthis.pendingMessagesContainer.removeChild(component);\n\t\t\tthis.chatContainer.addChild(component);\n\t\t}\n\t\tthis.pendingBashComponents = [];\n\t}\n\n\t// =========================================================================\n\t// Selectors\n\t// =========================================================================\n\n\t/**\n\t * Shows a selector component in place of the editor.\n\t * @param create Factory that receives a `done` callback and returns the component and focus target\n\t */\n\tprivate showSelector(\n\t\tcreate: (done: () => void) => {\n\t\t\tcomponent: Component;\n\t\t\tfocus: Component;\n\t\t\tonSuperseded?: () => void;\n\t\t},\n\t): void {\n\t\tthis.overlayHost.showSelector(() => this.editor, create);\n\t}\n\n\t/** Narrow seam shared by the session-picker/tree/fork and model-selector flows. */\n\tprivate sessionFlowHost(): sessionFlows.SessionFlowHost {\n\t\tconst self = this;\n\t\treturn {\n\t\t\tsession: this.session,\n\t\t\tsessionManager: this.sessionManager,\n\t\t\tsettingsManager: this.settingsManager,\n\t\t\truntimeHost: this.runtimeHost,\n\t\t\tui: this.ui,\n\t\t\tchatContainer: this.chatContainer,\n\t\t\tstatusContainer: this.statusContainer,\n\t\t\teditor: this.editor,\n\t\t\tdefaultEditor: this.defaultEditor,\n\t\t\tfooter: this.footer,\n\t\t\textensionUiHost: this.extensionUiHost,\n\t\t\tkeybindings: this.keybindings,\n\t\t\tget loadingAnimation() {\n\t\t\t\treturn self.loadingAnimation;\n\t\t\t},\n\t\t\tset loadingAnimation(value) {\n\t\t\t\tself.loadingAnimation = value;\n\t\t\t},\n\t\t\tshowSelector: (create) => this.showSelector(create),\n\t\t\tshowStatus: (message) => this.showStatus(message),\n\t\t\tshowError: (message) => this.showError(message),\n\t\t\trefreshAutonomyFooterStatus: () => this.refreshAutonomyFooterStatus(),\n\t\t\trenderCurrentSessionState: () => this.renderCurrentSessionState(),\n\t\t\trenderInitialMessages: (options) => this.renderInitialMessages(options),\n\t\t\tflushCompactionQueue: (options) => this.flushCompactionQueue(options),\n\t\t\thandleFatalRuntimeError: (prefix, error) => this.handleFatalRuntimeError(prefix, error),\n\t\t\tpromptForMissingSessionCwd: (error) => this.promptForMissingSessionCwd(error),\n\t\t\tupdateEditorBorderColor: () => this.updateEditorBorderColor(),\n\t\t\tupdateAvailableProviderCount: () => this.updateAvailableProviderCount(),\n\t\t\tmaybeWarnAboutAnthropicSubscriptionAuth: (model) => this.maybeWarnAboutAnthropicSubscriptionAuth(model),\n\t\t\tcheckDaxnutsEasterEgg: (model) => this.checkDaxnutsEasterEgg(model),\n\t\t\tgetModelCandidates: () => this.getModelCandidates(),\n\t\t\tshutdown: (options) => this.shutdown(options),\n\t\t};\n\t}\n\n\tprivate getAutoLearnModelOptions(): SelectItem[] {\n\t\treturn this.autoLearnController.getAutoLearnModelOptions();\n\t}\n\n\tprivate getAutoLearnDataDir(): string {\n\t\treturn this.autoLearnController.getAutoLearnDataDir();\n\t}\n\n\tprivate getPrunedAutoLearnState(): AutoLearnState {\n\t\treturn this.autoLearnController.getPrunedAutoLearnState();\n\t}\n\n\tprivate getAutoLearnPresetForAutonomyMode(\n\t\tmode: AutonomyMode,\n\t\tcurrent: AutoLearnSettings = {},\n\t): Required<AutoLearnSettings> {\n\t\treturn this.autoLearnController.getAutoLearnPresetForAutonomyMode(mode, current);\n\t}\n\n\tprivate getEffectiveAutoLearnSettings(): Required<AutoLearnSettings> {\n\t\treturn this.autoLearnController.getEffectiveAutoLearnSettings();\n\t}\n\n\tprivate getCurrentAutoLearnSettings(): Required<AutoLearnSettings> {\n\t\treturn this.autoLearnController.getCurrentAutoLearnSettings();\n\t}\n\n\tprivate getAutoLearnTenantKey(): string {\n\t\treturn this.autoLearnController.getAutoLearnTenantKey();\n\t}\n\n\tprivate getAutoLearnTenantDataDir(): string {\n\t\treturn this.autoLearnController.getAutoLearnTenantDataDir();\n\t}\n\n\tprivate validateAutoLearnModelValue(value: string | undefined): string | undefined {\n\t\treturn this.autoLearnController.validateAutoLearnModelValue(value);\n\t}\n\n\tprivate collectSelfModificationCandidates(settings: { sourcePath?: string; sourcePaths?: string[] }): string[] {\n\t\treturn [\n\t\t\t...(Array.isArray(settings.sourcePaths) ? settings.sourcePaths : []),\n\t\t\t...(settings.sourcePath ? [settings.sourcePath] : []),\n\t\t]\n\t\t\t.map((candidate) => candidate?.trim())\n\t\t\t.filter((candidate): candidate is string => Boolean(candidate));\n\t}\n\n\tprivate getCurrentCwdForSettings(): string {\n\t\treturn this.runtimeHost?.session?.sessionManager?.getCwd?.() || process.cwd();\n\t}\n\n\tprivate resolveSelfModificationSource(settings: {\n\t\tsourcePath?: string;\n\t\tsourcePaths?: string[];\n\t}): string | undefined {\n\t\tconst cwd = this.getCurrentCwdForSettings();\n\t\tconst resolved = this.collectSelfModificationCandidates(settings).map((candidate) =>\n\t\t\tresolvePath(candidate, cwd, { trim: true }),\n\t\t);\n\t\tif (resolved.length === 0) return undefined;\n\t\treturn (\n\t\t\tresolved.find(\n\t\t\t\t(candidate) => fs.existsSync(candidate) && fs.existsSync(path.join(candidate, \"package.json\")),\n\t\t\t) ?? resolved[0]\n\t\t);\n\t}\n\n\tprivate validateSelfModificationSource(settings: SelfModificationSettings): string | undefined {\n\t\tif (!settings.enabled) return undefined;\n\t\tconst cwd = this.getCurrentCwdForSettings();\n\t\tconst resolved = this.collectSelfModificationCandidates(settings).map((candidate) =>\n\t\t\tresolvePath(candidate, cwd, { trim: true }),\n\t\t);\n\t\tif (resolved.length === 0) return \"Self modification is enabled, but no pi-adaptative source path is set.\";\n\t\tconst valid = resolved.find(\n\t\t\t(candidate) =>\n\t\t\t\tfs.existsSync(candidate) &&\n\t\t\t\tfs.existsSync(path.join(candidate, \"package.json\")) &&\n\t\t\t\tfs.existsSync(path.join(candidate, \"packages\", \"coding-agent\")),\n\t\t);\n\t\tif (valid) return undefined;\n\t\tconst first = resolved[0];\n\t\tif (!fs.existsSync(first)) return `Self modification source path does not exist: ${first}`;\n\t\tif (!fs.existsSync(path.join(first, \"package.json\"))) {\n\t\t\treturn `Self modification source path has no package.json: ${first}`;\n\t\t}\n\t\treturn `Self modification source path does not look like pi-adaptative (missing packages/coding-agent): ${first}`;\n\t}\n\n\tprivate launchAutoLearn(\n\t\treason: string,\n\t\tforce = false,\n\t\toptions: {\n\t\t\tcooldownKind?: \"auto\" | \"reflection\";\n\t\t\tpromptKind?: \"auto\" | \"reflection\";\n\t\t\tturnDigest?: string;\n\t\t\tbypassReflectionCooldown?: boolean;\n\t\t} = {},\n\t): string {\n\t\treturn this.autoLearnController.launchAutoLearn(reason, force, options);\n\t}\n\n\tprivate isNativeReflectionEnabled(): boolean {\n\t\treturn this.autoLearnController.isNativeReflectionEnabled();\n\t}\n\n\tprivate maybeRunNativeReflection(messages: AgentMessage[]): void {\n\t\tthis.autoLearnController.maybeRunNativeReflection(messages);\n\t}\n\n\tprivate maybeStartAutoLearn(): boolean {\n\t\treturn this.autoLearnController.maybeStartAutoLearn();\n\t}\n\n\tprivate maybeStartAutonomyReview(messages: AgentMessage[]): boolean {\n\t\treturn this.autoLearnController.maybeStartAutonomyReview(messages);\n\t}\n\n\tprivate updateAutoLearnFooter(): void {\n\t\tthis.autoLearnController.updateAutoLearnFooter();\n\t}\n\n\tprivate formatAutoLearnStatus(): string {\n\t\treturn this.autoLearnController.formatAutoLearnStatus();\n\t}\n\n\tprivate applyAutonomyMode(mode: AutonomyMode, scope: SettingsScope = \"global\"): void {\n\t\tconst currentAutoLearn = this.settingsManager.getAutoLearnSettings();\n\t\tconst preset = this.getAutoLearnPresetForAutonomyMode(mode, currentAutoLearn);\n\t\tthis.settingsManager.setAutonomySettings({ ...this.settingsManager.getAutonomySettings(), mode }, scope);\n\t\tthis.settingsManager.setAutoLearnSettings(preset, scope);\n\t\tthis.updateAutoLearnFooter();\n\t}\n\n\t/**\n\t * Delegates to the session rather than keeping its own instance (#27): the model router boots a\n\t * local server through AgentSession.getLocalRuntime() before a routed turn, and `/models`\n\t * commands need to see and be able to stop that SAME pi-managed process, not an unrelated one\n\t * tracked separately here.\n\t */\n\tprivate get localRuntime(): OllamaRuntime {\n\t\treturn this.session.getLocalRuntime();\n\t}\n\n\tprivate getTransformersRuntime(modelId: string, baseUrl?: string): TransformersRuntime {\n\t\treturn this.session.getTransformersRuntime(modelId, baseUrl);\n\t}\n\n\tprivate getPrismLlamaCppRuntime(): PrismLlamaCppRuntime {\n\t\treturn this.session.getPrismLlamaCppRuntime();\n\t}\n\n\t/** Narrow seam shared by the /models and /fitness flows. */\n\tprivate localModelHost(): localModelCommands.LocalModelHost {\n\t\treturn {\n\t\t\tlocalRuntime: this.localRuntime,\n\t\t\tsession: this.session,\n\t\t\tsettingsManager: this.settingsManager,\n\t\t\tui: this.ui,\n\t\t\tchatContainer: this.chatContainer,\n\t\t\tgetTransformersRuntime: (modelId, baseUrl) => this.getTransformersRuntime(modelId, baseUrl),\n\t\t\tgetPrismLlamaCppRuntime: () => this.getPrismLlamaCppRuntime(),\n\t\t\tshowStatus: (message) => this.showStatus(message),\n\t\t\tshowError: (message) => this.showError(message),\n\t\t\tshowSelector: (create) => this.showSelector(create),\n\t\t};\n\t}\n\n\tprivate handleModelsCommand(argsText: string): Promise<void> {\n\t\treturn localModelCommands.handleModelsCommand(this.localModelHost(), argsText);\n\t}\n\n\tprivate showFitnessModelSelector(): void {\n\t\tlocalModelCommands.showFitnessModelSelector(this.localModelHost());\n\t}\n\n\tprivate runFitnessAndAssign(modelRef: string, preselectRole?: FitnessRole): Promise<void> {\n\t\treturn localModelCommands.runFitnessAndAssign(\n\t\t\t{\n\t\t\t\tsession: this.session,\n\t\t\t\tsettingsManager: this.settingsManager,\n\t\t\t\tchatContainer: this.chatContainer,\n\t\t\t\tui: this.ui,\n\t\t\t\tshowStatus: (message) => this.showStatus(message),\n\t\t\t\tshowError: (message) => this.showError(message),\n\t\t\t\tshowSelector: (create) => this.showSelector(create),\n\t\t\t},\n\t\t\tmodelRef,\n\t\t\tpreselectRole,\n\t\t);\n\t}\n\n\tprivate assignFitnessRole(modelRef: string, role: FitnessRole): void {\n\t\tlocalModelCommands.assignFitnessRole(\n\t\t\t{\n\t\t\t\tsettingsManager: this.settingsManager,\n\t\t\t\tshowStatus: (message) => this.showStatus(message),\n\t\t\t},\n\t\t\tmodelRef,\n\t\t\trole,\n\t\t);\n\t}\n\n\t/** Narrow seam for the /autonomy and /auto-learn command bodies. */\n\tprivate autonomyHost(): autonomyCommands.AutonomyHost {\n\t\treturn {\n\t\t\tsession: this.session,\n\t\t\tsettingsManager: this.settingsManager,\n\t\t\tchatContainer: this.chatContainer,\n\t\t\tui: this.ui,\n\t\t\tshowStatus: (message) => this.showStatus(message),\n\t\t\tapplyAutonomyMode: (mode, scope) => this.applyAutonomyMode(mode, scope),\n\t\t\tlaunchAutoLearn: (reason, force, options) => this.launchAutoLearn(reason, force, options),\n\t\t\tformatAutoLearnStatus: () => this.formatAutoLearnStatus(),\n\t\t\tgetEffectiveAutoLearnSettings: () => this.getEffectiveAutoLearnSettings(),\n\t\t\tgetPrunedAutoLearnState: () => this.getPrunedAutoLearnState(),\n\t\t\tgetAutoLearnTenantKey: () => this.getAutoLearnTenantKey(),\n\t\t\tgetAutoLearnDataDir: () => this.getAutoLearnDataDir(),\n\t\t\tgetAutoLearnTenantDataDir: () => this.getAutoLearnTenantDataDir(),\n\t\t};\n\t}\n\n\tprivate handleAutonomyCommand(text: string): void {\n\t\tautonomyCommands.handleAutonomyCommand(this.autonomyHost(), text);\n\t}\n\n\tprivate handleAutoLearnCommand(text: string): void {\n\t\tautonomyCommands.handleAutoLearnCommand(this.autonomyHost(), text);\n\t}\n\n\t/** Wide seam for the /settings selector; the hideThinkingBlock field is read+written here. */\n\tprivate settingsSelectorHost(): settingsSelectorFlow.SettingsSelectorHost {\n\t\tconst self = this;\n\t\treturn {\n\t\t\tsession: this.session,\n\t\t\tsettingsManager: this.settingsManager,\n\t\t\tfooter: this.footer,\n\t\t\tchatContainer: this.chatContainer,\n\t\t\tui: this.ui,\n\t\t\tdefaultEditor: this.defaultEditor,\n\t\t\teditor: this.editor,\n\t\t\tget hideThinkingBlock() {\n\t\t\t\treturn self.hideThinkingBlock;\n\t\t\t},\n\t\t\tset hideThinkingBlock(value) {\n\t\t\t\tself.hideThinkingBlock = value;\n\t\t\t},\n\t\t\tshowSelector: (create) => this.showSelector(create),\n\t\t\tshowStatus: (message) => this.showStatus(message),\n\t\t\tshowWarning: (message) => this.showWarning(message),\n\t\t\tshowError: (message) => this.showError(message),\n\t\t\tgetAutoLearnModelOptions: () => this.getAutoLearnModelOptions(),\n\t\t\tsetupAutocompleteProvider: () => this.setupAutocompleteProvider(),\n\t\t\tupdateEditorBorderColor: () => this.updateEditorBorderColor(),\n\t\t\trebuildChatFromMessages: () => this.rebuildChatFromMessages(),\n\t\t\tvalidateSelfModificationSource: (settings) => this.validateSelfModificationSource(settings),\n\t\t\tapplyAutonomyMode: (mode, scope) => this.applyAutonomyMode(mode, scope),\n\t\t\tvalidateAutoLearnModelValue: (value) => this.validateAutoLearnModelValue(value),\n\t\t\tupdateAutoLearnFooter: () => this.updateAutoLearnFooter(),\n\t\t\thandleResourcesHubAction: (action) => this.handleResourcesHubAction(action),\n\t\t};\n\t}\n\n\tprivate showSettingsSelector(): void {\n\t\tsettingsSelectorFlow.showSettingsSelector(this.settingsSelectorHost());\n\t}\n\n\tprivate handleResourcesHubAction(action: string): Promise<void> {\n\t\treturn this.profileMenu.handleResourcesHubAction(action);\n\t}\n\n\tprivate handleProfilesCommand(profileName?: string): Promise<void> {\n\t\treturn this.profileMenu.handleProfilesCommand(profileName);\n\t}\n\n\tprivate refreshAfterProfileMutation(profileName: string): Promise<void> {\n\t\treturn this.profileMenu.refreshAfterProfileMutation(profileName);\n\t}\n\n\tprivate async handleModelCommand(searchTerm?: string): Promise<void> {\n\t\tawait sessionFlows.handleModelCommand(this.sessionFlowHost(), searchTerm);\n\t}\n\n\tprivate async getModelCandidates(): Promise<Model<any>[]> {\n\t\tif (this.session.scopedModels.length > 0) {\n\t\t\treturn this.session.scopedModels.map((scoped) => scoped.model);\n\t\t}\n\n\t\tthis.session.modelRegistry.refresh();\n\t\ttry {\n\t\t\treturn await this.session.modelRegistry.getAvailable();\n\t\t} catch {\n\t\t\treturn [];\n\t\t}\n\t}\n\n\t/** Update the footer's available provider count from current model candidates */\n\tprivate async updateAvailableProviderCount(): Promise<void> {\n\t\tconst models = await this.getModelCandidates();\n\t\tconst uniqueProviders = new Set(models.map((m) => m.provider));\n\t\tthis.footerDataProvider.setAvailableProviderCount(uniqueProviders.size);\n\t}\n\n\tprivate async maybeWarnAboutAnthropicSubscriptionAuth(\n\t\tmodel: Model<any> | undefined = this.session.model,\n\t): Promise<void> {\n\t\tif (this.settingsManager.getWarnings().anthropicExtraUsage === false) {\n\t\t\treturn;\n\t\t}\n\t\tif (this.anthropicSubscriptionWarningShown) {\n\t\t\treturn;\n\t\t}\n\t\tif (!model || model.provider !== \"anthropic\") {\n\t\t\treturn;\n\t\t}\n\n\t\tconst storedCredential = this.session.modelRegistry.authStorage.get(\"anthropic\");\n\t\tif (storedCredential?.type === \"oauth\") {\n\t\t\tthis.anthropicSubscriptionWarningShown = true;\n\t\t\tthis.showWarning(ANTHROPIC_SUBSCRIPTION_AUTH_WARNING);\n\t\t\treturn;\n\t\t}\n\n\t\ttry {\n\t\t\tconst apiKey = await this.session.modelRegistry.getApiKeyForProvider(model.provider);\n\t\t\tif (!isAnthropicSubscriptionAuthKey(apiKey)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.anthropicSubscriptionWarningShown = true;\n\t\t\tthis.showWarning(ANTHROPIC_SUBSCRIPTION_AUTH_WARNING);\n\t\t} catch {\n\t\t\t// Ignore auth lookup failures for warning-only checks.\n\t\t}\n\t}\n\n\tprivate async showModelSelector(initialSearchInput?: string): Promise<void> {\n\t\tawait sessionFlows.showModelSelector(this.sessionFlowHost(), initialSearchInput);\n\t}\n\n\tprivate async showModelsSelector(): Promise<void> {\n\t\tawait sessionFlows.showModelsSelector(this.sessionFlowHost());\n\t}\n\n\tprivate showUserMessageSelector(newSessionName?: string): void {\n\t\tsessionFlows.showUserMessageSelector(this.sessionFlowHost(), newSessionName);\n\t}\n\n\tprivate async handleCloneCommand(newSessionName?: string): Promise<void> {\n\t\tawait sessionFlows.handleCloneCommand(\n\t\t\t{\n\t\t\t\tsessionManager: this.sessionManager,\n\t\t\t\truntimeHost: this.runtimeHost,\n\t\t\t\trenderCurrentSessionState: () => this.renderCurrentSessionState(),\n\t\t\t\teditor: this.editor,\n\t\t\t\tsession: this.session,\n\t\t\t\tshowStatus: (message) => this.showStatus(message),\n\t\t\t\tshowError: (message) => this.showError(message),\n\t\t\t\tui: this.ui,\n\t\t\t},\n\t\t\tnewSessionName,\n\t\t);\n\t}\n\n\tprivate showTreeSelector(initialSelectedId?: string): void {\n\t\tsessionFlows.showTreeSelector(this.sessionFlowHost(), initialSelectedId);\n\t}\n\n\tprivate showTrustSelector(): void {\n\t\tsessionFlows.showTrustSelector(this.sessionFlowHost());\n\t}\n\n\tprivate showSessionSelector(): void {\n\t\tsessionFlows.showSessionSelector(this.sessionFlowHost());\n\t}\n\n\tprivate handleResumeSession(\n\t\tsessionPath: string,\n\t\toptions?: Parameters<ExtensionCommandContext[\"switchSession\"]>[1],\n\t): Promise<{ cancelled: boolean }> {\n\t\treturn sessionFlows.handleResumeSession(this.sessionFlowHost(), sessionPath, options);\n\t}\n\n\t// =========================================================================\n\t// Command handlers\n\t// =========================================================================\n\n\tprivate async handleReloadCommand(): Promise<void> {\n\t\tawait this.handleReloadCommandWithResult();\n\t}\n\n\t/** Reload and report whether the previous runtime was replaced successfully. */\n\tprivate async handleReloadCommandWithResult(): Promise<boolean> {\n\t\tif (this.session.isStreaming) {\n\t\t\tthis.showWarning(\"Wait for the current response to finish before reloading.\");\n\t\t\treturn false;\n\t\t}\n\t\tif (this.session.isCompacting) {\n\t\t\tthis.showWarning(\"Wait for compaction to finish before reloading.\");\n\t\t\treturn false;\n\t\t}\n\n\t\tthis.extensionUiHost.resetExtensionUI();\n\n\t\tconst reloadBox = new Container();\n\t\tconst borderColor = (s: string) => theme.fg(\"border\", s);\n\t\treloadBox.addChild(new DynamicBorder(borderColor));\n\t\treloadBox.addChild(new Spacer(1));\n\t\treloadBox.addChild(\n\t\t\tnew Text(theme.fg(\"muted\", \"Reloading keybindings, extensions, skills, prompts, themes...\"), 1, 0),\n\t\t);\n\t\treloadBox.addChild(new Spacer(1));\n\t\treloadBox.addChild(new DynamicBorder(borderColor));\n\n\t\tconst previousEditor = this.editor;\n\t\tlet reloadBoxActive = true;\n\t\tthis.overlayHost.swap(reloadBox, {\n\t\t\trender: \"sync\",\n\t\t\tonUnmount: () => {\n\t\t\t\treloadBoxActive = false;\n\t\t\t},\n\t\t});\n\t\t// Let the terminal paint the reload notice before CPU-heavy extension/theme\n\t\t// work begins. process.nextTick runs before I/O and can still make reloads\n\t\t// appear frozen.\n\t\tawait new Promise((resolve) => setImmediate(resolve));\n\n\t\tconst dismissReloadBox = (editor: Component) => {\n\t\t\tif (!reloadBoxActive) return;\n\t\t\treloadBoxActive = false;\n\t\t\tthis.overlayHost.swap(editor);\n\t\t};\n\n\t\ttry {\n\t\t\tawait this.session.reload();\n\t\t\tconfigureHttpDispatcher(this.settingsManager.getHttpIdleTimeoutMs());\n\t\t\tthis.keybindings.reload();\n\t\t\tconst activeHeader = this.extensionUiHost.getCustomHeader() ?? this.builtInHeader;\n\t\t\tif (isExpandable(activeHeader)) {\n\t\t\t\tactiveHeader.setExpanded(this.toolOutputExpanded);\n\t\t\t}\n\t\t\tsetRegisteredThemes(this.session.resourceLoader.getThemes().themes);\n\t\t\tthis.hideThinkingBlock = this.settingsManager.getHideThinkingBlock();\n\t\t\tconst themeName = this.settingsManager.getTheme();\n\t\t\tconst themeResult = themeName ? setTheme(themeName, true) : { success: true };\n\t\t\tif (!themeResult.success) {\n\t\t\t\tthis.showError(`Failed to load theme \"${themeName}\": ${themeResult.error}\\nFell back to dark theme.`);\n\t\t\t}\n\t\t\tconst editorPaddingX = this.settingsManager.getEditorPaddingX();\n\t\t\tconst autocompleteMaxVisible = this.settingsManager.getAutocompleteMaxVisible();\n\t\t\tthis.defaultEditor.setPaddingX(editorPaddingX);\n\t\t\tthis.defaultEditor.setAutocompleteMaxVisible(autocompleteMaxVisible);\n\t\t\tif (this.editor !== this.defaultEditor) {\n\t\t\t\tthis.editor.setPaddingX?.(editorPaddingX);\n\t\t\t\tthis.editor.setAutocompleteMaxVisible?.(autocompleteMaxVisible);\n\t\t\t}\n\t\t\tthis.ui.setShowHardwareCursor(this.settingsManager.getShowHardwareCursor());\n\t\t\tthis.ui.setClearOnShrink(this.settingsManager.getClearOnShrink());\n\t\t\tthis.setupAutocompleteProvider();\n\t\t\tconst runner = this.session.extensionRunner;\n\t\t\tthis.extensionUiHost.setupExtensionShortcuts(runner);\n\t\t\tawait this.rebuildChatFromMessages();\n\t\t\tdismissReloadBox(this.editor as Component);\n\t\t\tthis.showLoadedResources({\n\t\t\t\tforce: false,\n\t\t\t\tshowDiagnosticsWhenQuiet: true,\n\t\t\t});\n\t\t\tconst modelsJsonError = this.session.modelRegistry.getError();\n\t\t\tif (modelsJsonError) {\n\t\t\t\tthis.showError(`models.json error: ${modelsJsonError}`);\n\t\t\t}\n\t\t\tthis.showStatus(\"Reloaded keybindings, extensions, skills, prompts, themes\");\n\t\t\treturn true;\n\t\t} catch (error) {\n\t\t\tdismissReloadBox(previousEditor as Component);\n\t\t\tthis.showError(`Reload failed: ${error instanceof Error ? error.message : String(error)}`);\n\t\t\treturn false;\n\t\t}\n\t}\n\n\t/**\n\t * Refresh UI after extensions are loaded/unloaded live.\n\t * Performs the same refresh calls as handleReloadCommand but without the full reload.\n\t */\n\tprivate async refreshUIAfterExtensionsChanged(): Promise<void> {\n\t\ttry {\n\t\t\t// Refresh keybindings and autocomplete\n\t\t\tthis.keybindings.reload();\n\t\t\tthis.setupAutocompleteProvider();\n\n\t\t\t// Refresh themes\n\t\t\tconst activeHeader = this.extensionUiHost.getCustomHeader() ?? this.builtInHeader;\n\t\t\tif (isExpandable(activeHeader)) {\n\t\t\t\tactiveHeader.setExpanded(this.toolOutputExpanded);\n\t\t\t}\n\t\t\tsetRegisteredThemes(this.session.resourceLoader.getThemes().themes);\n\t\t\tthis.hideThinkingBlock = this.settingsManager.getHideThinkingBlock();\n\t\t\tconst themeName = this.settingsManager.getTheme();\n\t\t\tconst themeResult = themeName ? setTheme(themeName, true) : { success: true };\n\t\t\tif (!themeResult.success) {\n\t\t\t\tthis.showError(`Failed to load theme \"${themeName}\": ${themeResult.error}\\nFell back to dark theme.`);\n\t\t\t}\n\n\t\t\t// Refresh editor settings\n\t\t\tconst editorPaddingX = this.settingsManager.getEditorPaddingX();\n\t\t\tconst autocompleteMaxVisible = this.settingsManager.getAutocompleteMaxVisible();\n\t\t\tthis.defaultEditor.setPaddingX(editorPaddingX);\n\t\t\tthis.defaultEditor.setAutocompleteMaxVisible(autocompleteMaxVisible);\n\t\t\tif (this.editor !== this.defaultEditor) {\n\t\t\t\tthis.editor.setPaddingX?.(editorPaddingX);\n\t\t\t\tthis.editor.setAutocompleteMaxVisible?.(autocompleteMaxVisible);\n\t\t\t}\n\n\t\t\t// Refresh extension shortcuts\n\t\t\tconst runner = this.session.extensionRunner;\n\t\t\tthis.extensionUiHost.setupExtensionShortcuts(runner);\n\n\t\t\t// Refresh chat and UI\n\t\t\tawait this.rebuildChatFromMessages();\n\t\t\tthis.footer.invalidate();\n\t\t\tthis.ui.requestRender();\n\t\t} catch (error) {\n\t\t\tthis.showError(`Extension refresh failed: ${error instanceof Error ? error.message : String(error)}`);\n\t\t}\n\t}\n\n\tprivate handleExportCommand(text: string): Promise<void> {\n\t\treturn sessionIoCommands.handleExportCommand(\n\t\t\t{\n\t\t\t\tsession: this.session,\n\t\t\t\tgetPathCommandArgument: (t, command) => this.getPathCommandArgument(t, command),\n\t\t\t\tshowStatus: (message) => this.showStatus(message),\n\t\t\t\tshowError: (message) => this.showError(message),\n\t\t\t},\n\t\t\ttext,\n\t\t);\n\t}\n\n\tprivate getPathCommandArgument(text: string, command: \"/export\" | \"/import\"): string | undefined {\n\t\tif (text === command) {\n\t\t\treturn undefined;\n\t\t}\n\t\tif (!text.startsWith(`${command} `)) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tconst argsString = text.slice(command.length + 1).trimStart();\n\t\tif (!argsString) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tconst firstChar = argsString[0];\n\t\tif (firstChar === '\"' || firstChar === \"'\") {\n\t\t\tconst closingQuoteIndex = argsString.indexOf(firstChar, 1);\n\t\t\tif (closingQuoteIndex < 0) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t\treturn argsString.slice(1, closingQuoteIndex);\n\t\t}\n\n\t\tconst firstWhitespaceIndex = argsString.search(/\\s/);\n\t\tif (firstWhitespaceIndex < 0) {\n\t\t\treturn argsString;\n\t\t}\n\t\treturn argsString.slice(0, firstWhitespaceIndex);\n\t}\n\n\tprivate handleImportCommand(text: string): Promise<void> {\n\t\tconst self = this;\n\t\treturn sessionIoCommands.handleImportCommand(\n\t\t\t{\n\t\t\t\tgetPathCommandArgument: (t, command) => this.getPathCommandArgument(t, command),\n\t\t\t\tshowError: (message) => this.showError(message),\n\t\t\t\tshowStatus: (message) => this.showStatus(message),\n\t\t\t\textensionUiHost: this.extensionUiHost,\n\t\t\t\tget loadingAnimation() {\n\t\t\t\t\treturn self.loadingAnimation;\n\t\t\t\t},\n\t\t\t\tset loadingAnimation(value) {\n\t\t\t\t\tself.loadingAnimation = value;\n\t\t\t\t},\n\t\t\t\tstatusContainer: this.statusContainer,\n\t\t\t\truntimeHost: this.runtimeHost,\n\t\t\t\trenderCurrentSessionState: () => this.renderCurrentSessionState(),\n\t\t\t\tpromptForMissingSessionCwd: (error) => this.promptForMissingSessionCwd(error),\n\t\t\t\thandleFatalRuntimeError: (prefix, error) => this.handleFatalRuntimeError(prefix, error),\n\t\t\t},\n\t\t\ttext,\n\t\t);\n\t}\n\n\tprivate handleShareCommand(): Promise<void> {\n\t\treturn sessionIoCommands.handleShareCommand({\n\t\t\tshowError: (message) => this.showError(message),\n\t\t\tshowStatus: (message) => this.showStatus(message),\n\t\t\tsession: this.session,\n\t\t\tui: this.ui,\n\t\t\toverlayHost: this.overlayHost,\n\t\t\teditor: this.editor,\n\t\t});\n\t}\n\n\tprivate handleCopyCommand(): Promise<void> {\n\t\treturn sessionIoCommands.handleCopyCommand({\n\t\t\tsession: this.session,\n\t\t\tshowError: (message) => this.showError(message),\n\t\t\tshowStatus: (message) => this.showStatus(message),\n\t\t});\n\t}\n\n\tprivate handleNameCommand(text: string): void {\n\t\tsessionIoCommands.handleNameCommand(\n\t\t\t{\n\t\t\t\tsessionManager: this.sessionManager,\n\t\t\t\tchatContainer: this.chatContainer,\n\t\t\t\tshowWarning: (message) => this.showWarning(message),\n\t\t\t\tsession: this.session,\n\t\t\t\tui: this.ui,\n\t\t\t},\n\t\t\ttext,\n\t\t);\n\t}\n\n\tprivate parseGoalContinueCommand(\n\t\ttext: string,\n\t):\n\t\t| { ok: true; maxTurns: number; maxStallTurns: number; maxWallClockMinutes: number }\n\t\t| { ok: false; error: string } {\n\t\tconst usage = \"Usage: /goal-continue [maxTurns 0=unbounded] [maxStallTurns 0-100] [maxMinutes 0-1440]\";\n\t\tconst parts = text.trim().split(/\\s+/).slice(1);\n\t\tif (parts.length > 3) {\n\t\t\treturn { ok: false, error: usage };\n\t\t}\n\n\t\tconst parseBoundedInteger = (\n\t\t\tvalue: string | undefined,\n\t\t\tfallback: number,\n\t\t\tmin: number,\n\t\t\tmax: number,\n\t\t): number | undefined => {\n\t\t\tif (value === undefined || value.length === 0) return fallback;\n\t\t\tif (!/^\\d+$/.test(value)) return undefined;\n\t\t\tconst parsed = Number.parseInt(value, 10);\n\t\t\tif (!Number.isSafeInteger(parsed) || parsed < min || parsed > max) return undefined;\n\t\t\treturn parsed;\n\t\t};\n\n\t\tconst maxTurns = parseBoundedInteger(parts[0], DEFAULT_GOAL_CONTINUE_MAX_TURNS, 0, MAX_GOAL_CONTINUE_MAX_TURNS);\n\t\tconst maxStallTurns = parseBoundedInteger(\n\t\t\tparts[1],\n\t\t\tDEFAULT_GOAL_CONTINUE_MAX_STALL_TURNS,\n\t\t\t0,\n\t\t\tMAX_GOAL_CONTINUE_MAX_STALL_TURNS,\n\t\t);\n\t\tconst maxWallClockMinutes = parseBoundedInteger(\n\t\t\tparts[2],\n\t\t\tDEFAULT_GOAL_CONTINUE_MAX_WALL_CLOCK_MINUTES,\n\t\t\t0,\n\t\t\tMAX_GOAL_CONTINUE_MAX_WALL_CLOCK_MINUTES,\n\t\t);\n\t\tif (maxTurns === undefined || maxStallTurns === undefined || maxWallClockMinutes === undefined) {\n\t\t\treturn { ok: false, error: usage };\n\t\t}\n\t\treturn { ok: true, maxTurns, maxStallTurns, maxWallClockMinutes };\n\t}\n\n\tprivate async handleGoalCommand(text: string): Promise<void> {\n\t\tlet statusMessage: string | undefined;\n\t\tawait sessionFlows.handleGoalCommand(\n\t\t\t{\n\t\t\t\tsession: this.session,\n\t\t\t\tpromptForGoalEdit: (currentObjective) =>\n\t\t\t\t\tthis.extensionUiHost.showExtensionEditor(\"Edit goal objective\", currentObjective),\n\t\t\t\tgetMaxStallTurns: () => this.settingsManager?.getAutonomySettings().maxStallTurns ?? 20,\n\t\t\t\tshowStatus: (message) => {\n\t\t\t\t\tstatusMessage = message;\n\t\t\t\t},\n\t\t\t\tshowError: (message) => this.showError(message),\n\t\t\t\trefreshAutonomyFooterStatus: () => this.refreshAutonomyFooterStatus(),\n\t\t\t},\n\t\t\ttext,\n\t\t);\n\t\tthis.refreshActivityLane?.();\n\t\tif (statusMessage) this.activityLane?.announce(statusMessage, \"neutral\");\n\t}\n\n\tprivate handleTaskCommand(text: string): void {\n\t\tlet statusMessage: string | undefined;\n\t\tsessionFlows.handleTaskCommand(\n\t\t\t{\n\t\t\t\tsession: this.session,\n\t\t\t\tshowStatus: (message) => {\n\t\t\t\t\tstatusMessage = message;\n\t\t\t\t},\n\t\t\t\tshowError: (message) => this.showError(message),\n\t\t\t},\n\t\t\ttext,\n\t\t);\n\t\tthis.refreshActivityLane?.();\n\t\tconst state = this.session.getTaskStepsStateSnapshot();\n\t\tif ((!state || state.steps.length === 0 || statusMessage?.startsWith(\"/task \")) && statusMessage) {\n\t\t\tthis.activityLane?.announce(statusMessage, \"neutral\");\n\t\t}\n\t}\n\n\tprivate async handleGoalContinueCommand(text: string): Promise<void> {\n\t\tawait sessionFlows.handleGoalContinueCommand(\n\t\t\t{\n\t\t\t\tsession: this.session,\n\t\t\t\tparseGoalContinueCommand: (t) => this.parseGoalContinueCommand(t),\n\t\t\t\tshowStatus: (message) => this.activityLane?.announce(message),\n\t\t\t\tshowError: (message) => this.showError(message),\n\t\t\t\trefreshAutonomyFooterStatus: () => this.refreshAutonomyFooterStatus(),\n\t\t\t},\n\t\t\ttext,\n\t\t);\n\t\tthis.refreshActivityLane?.();\n\t}\n\n\tprivate handleSessionCommand(): void {\n\t\tsessionFlows.handleSessionCommand({\n\t\t\tsession: this.session,\n\t\t\tsessionManager: this.sessionManager,\n\t\t\tchatContainer: this.chatContainer,\n\t\t\tui: this.ui,\n\t\t});\n\t}\n\n\tprivate handleUsageCommand(): void {\n\t\treportCommands.handleUsageCommand({\n\t\t\tsession: this.session,\n\t\t\tchatContainer: this.chatContainer,\n\t\t\tui: this.ui,\n\t\t\tgetCurrentAutoLearnSettings: () => this.getCurrentAutoLearnSettings(),\n\t\t});\n\t}\n\n\tprivate handleUsageMenuCommand(): void {\n\t\tusageCommands.handleUsageMenuCommand({\n\t\t\tsession: this.session,\n\t\t\tshowSelector: (create) => this.showSelector(create),\n\t\t\tshowStatus: (message) => this.showStatus(message),\n\t\t\tshowError: (message) => this.showError(message),\n\t\t\tshowUsageReport: () => this.handleUsageCommand(),\n\t\t});\n\t}\n\n\tprivate handleChangelogCommand(): void {\n\t\treportCommands.handleChangelogCommand({\n\t\t\tchatContainer: this.chatContainer,\n\t\t\tui: this.ui,\n\t\t\tgetMarkdownThemeWithSettings: () => this.getMarkdownThemeWithSettings(),\n\t\t});\n\t}\n\n\t/**\n\t * Get capitalized display string for an app keybinding action.\n\t */\n\tprivate getAppKeyDisplay(action: AppKeybinding): string {\n\t\treturn keyDisplayText(action);\n\t}\n\n\t/**\n\t * Get capitalized display string for an editor keybinding action.\n\t */\n\tprivate getEditorKeyDisplay(action: Keybinding): string {\n\t\treturn keyDisplayText(action);\n\t}\n\n\tprivate handleHotkeysCommand(): void {\n\t\treportCommands.handleHotkeysCommand({\n\t\t\tsession: this.session,\n\t\t\tkeybindings: this.keybindings,\n\t\t\tchatContainer: this.chatContainer,\n\t\t\tui: this.ui,\n\t\t\tgetMarkdownThemeWithSettings: () => this.getMarkdownThemeWithSettings(),\n\t\t\tgetAppKeyDisplay: (action) => this.getAppKeyDisplay(action),\n\t\t\tgetEditorKeyDisplay: (action) => this.getEditorKeyDisplay(action),\n\t\t});\n\t}\n\n\tprivate async handleClearCommand(newSessionName?: string): Promise<void> {\n\t\tif (this.loadingAnimation) {\n\t\t\tthis.loadingAnimation.stop();\n\t\t\tthis.loadingAnimation = undefined;\n\t\t}\n\t\tthis.statusContainer.clear();\n\t\ttry {\n\t\t\tconst result = await this.runtimeHost.newSession();\n\t\t\tif (result.cancelled) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.renderCurrentSessionState();\n\t\t\tif (newSessionName) {\n\t\t\t\tthis.session.setSessionName(newSessionName);\n\t\t\t}\n\t\t\tthis.chatContainer.addChild(new Spacer(1));\n\t\t\tconst label = newSessionName ? `✓ New session started: ${newSessionName}` : \"✓ New session started\";\n\t\t\tthis.chatContainer.addChild(new Text(`${theme.fg(\"accent\", label)}`, 1, 1));\n\t\t\tthis.ui.requestRender();\n\t\t} catch (error: unknown) {\n\t\t\tif (this.handleNonFatalSessionReplacementError(error)) return;\n\t\t\tawait this.handleFatalRuntimeError(\"Failed to create session\", error);\n\t\t}\n\t}\n\n\tprivate copyResourcesRecursively(\n\t\tsrc: string,\n\t\tdest: string,\n\t\tforce: boolean,\n\t\tstats: { installed: string[]; skipped: string[] },\n\t): void {\n\t\tif (!fs.existsSync(src)) return;\n\n\t\tconst entries = fs.readdirSync(src, { withFileTypes: true });\n\t\tfs.mkdirSync(dest, { recursive: true });\n\n\t\tfor (const entry of entries) {\n\t\t\tconst srcPath = path.join(src, entry.name);\n\t\t\tconst destPath = path.join(dest, entry.name);\n\n\t\t\tif (entry.isDirectory()) {\n\t\t\t\tthis.copyResourcesRecursively(srcPath, destPath, force, stats);\n\t\t\t} else if (entry.isFile()) {\n\t\t\t\tif (fs.existsSync(destPath) && !force) {\n\t\t\t\t\tstats.skipped.push(destPath);\n\t\t\t\t} else {\n\t\t\t\t\tfs.copyFileSync(srcPath, destPath);\n\t\t\t\t\tstats.installed.push(destPath);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate handleInstallResourcesCommand(argsString: string): Promise<void> {\n\t\treturn resourceShellCommands.handleInstallResourcesCommand(\n\t\t\t{\n\t\t\t\tsettingsManager: this.settingsManager,\n\t\t\t\tshowError: (message) => this.showError(message),\n\t\t\t\tshowStatus: (message) => this.showStatus(message),\n\t\t\t\tshowSelector: (create) => this.showSelector(create),\n\t\t\t\thandleReloadCommand: () => this.handleReloadCommand(),\n\t\t\t\tcopyResourcesRecursively: (src, dest, force, stats) =>\n\t\t\t\t\tthis.copyResourcesRecursively(src, dest, force, stats),\n\t\t\t},\n\t\t\targsString,\n\t\t);\n\t}\n\n\t/**\n\t * `/curate` — skill curator (#32). With no args, lists reflection-promoted skills proposed for\n\t * archival (stale/unused) and pairs proposed for consolidation (overlapping). PROPOSE-ONLY: the user\n\t * applies actions explicitly via `/curate archive <name>` / `/curate restore <name>`. Never touches\n\t * hand-authored skills; archival is restorable.\n\t */\n\tprivate handleCurateCommand(args: string): void {\n\t\tresourceShellCommands.handleCurateCommand(\n\t\t\t{\n\t\t\t\tsession: this.session,\n\t\t\t\tshowStatus: (message) => this.showStatus(message),\n\t\t\t},\n\t\t\targs,\n\t\t);\n\t}\n\n\tprivate async handleConfigBackupCommand(fileArg?: string): Promise<void> {\n\t\tawait configBackup.handleConfigBackupCommand(\n\t\t\t{\n\t\t\t\tsettingsManager: this.settingsManager,\n\t\t\t\tshowStatus: (message) => this.showStatus(message),\n\t\t\t\tshowError: (message) => this.showError(message),\n\t\t\t},\n\t\t\tfileArg,\n\t\t);\n\t}\n\n\tprivate async handleConfigRestoreCommand(fileArg: string): Promise<void> {\n\t\tawait configBackup.handleConfigRestoreCommand(\n\t\t\t{\n\t\t\t\tsettingsManager: this.settingsManager,\n\t\t\t\tshowStatus: (message) => this.showStatus(message),\n\t\t\t\tshowError: (message) => this.showError(message),\n\t\t\t\tshowSelector: (create) => this.showSelector(create),\n\t\t\t\thandleReloadCommand: () => this.handleReloadCommandWithResult(),\n\t\t\t},\n\t\t\tfileArg,\n\t\t);\n\t}\n\n\tprivate handleDebugCommand(): void {\n\t\treportCommands.handleDebugCommand({\n\t\t\tsession: this.session,\n\t\t\tchatContainer: this.chatContainer,\n\t\t\tui: this.ui,\n\t\t});\n\t}\n\n\tprivate handleArminSaysHi(): void {\n\t\treportCommands.handleArminSaysHi({ chatContainer: this.chatContainer, ui: this.ui });\n\t}\n\n\tprivate handleDementedDelves(): void {\n\t\treportCommands.handleDementedDelves({ chatContainer: this.chatContainer, ui: this.ui });\n\t}\n\n\tprivate checkDaxnutsEasterEgg(model: { provider: string; id: string }): void {\n\t\treportCommands.checkDaxnutsEasterEgg({ chatContainer: this.chatContainer, ui: this.ui }, model);\n\t}\n\n\tprivate handleBashCommand(command: string, excludeFromContext = false): Promise<void> {\n\t\tconst self = this;\n\t\treturn resourceShellCommands.handleBashCommand(\n\t\t\t{\n\t\t\t\tsession: this.session,\n\t\t\t\tsessionManager: this.sessionManager,\n\t\t\t\tui: this.ui,\n\t\t\t\tchatContainer: this.chatContainer,\n\t\t\t\tpendingMessagesContainer: this.pendingMessagesContainer,\n\t\t\t\tpendingBashComponents: this.pendingBashComponents,\n\t\t\t\tget bashComponent() {\n\t\t\t\t\treturn self.bashComponent;\n\t\t\t\t},\n\t\t\t\tset bashComponent(value) {\n\t\t\t\t\tself.bashComponent = value;\n\t\t\t\t},\n\t\t\t\tshowError: (message) => this.showError(message),\n\t\t\t},\n\t\t\tcommand,\n\t\t\texcludeFromContext,\n\t\t);\n\t}\n\n\tprivate handleCompactCommand(customInstructions?: string): Promise<void> {\n\t\treturn resourceShellCommands.handleCompactCommand(\n\t\t\t{\n\t\t\t\tsessionManager: this.sessionManager,\n\t\t\t\tshowWarning: (message) => this.showWarning(message),\n\t\t\t\tsession: this.session,\n\t\t\t},\n\t\t\tcustomInstructions,\n\t\t);\n\t}\n\n\tstop(): void {\n\t\tthis.unregisterSignalHandlers();\n\t\tif (this.settingsManager.getShowTerminalProgress()) {\n\t\t\tthis.ui.terminal.setProgress(false);\n\t\t}\n\t\tif (this.loadingAnimation) {\n\t\t\tthis.loadingAnimation.stop();\n\t\t\tthis.loadingAnimation = undefined;\n\t\t}\n\t\tthis.authDialogs.cancelActiveDialog();\n\t\tthis.extensionUiHost.clearHostWidgets();\n\t\tthis.extensionUiHost.resetExtensionUI();\n\t\tthis.overlayHost.unmount();\n\t\tthis.activityLane?.dispose();\n\t\tthis.footer.dispose();\n\t\tthis.footerDataProvider.dispose();\n\t\tif (this.unsubscribe) {\n\t\t\tthis.unsubscribe();\n\t\t}\n\t\tif (this.unsubscribeExtensionsChanged) {\n\t\t\tthis.unsubscribeExtensionsChanged();\n\t\t}\n\t\tif (this.isInitialized) {\n\t\t\tthis.ui.stop();\n\t\t\tthis.isInitialized = false;\n\t\t}\n\t}\n}\n"]}
1
+ {"version":3,"file":"interactive-mode.js","sourceRoot":"","sources":["../../../src/modes/interactive/interactive-mode.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAqB,qBAAqB,EAA2B,MAAM,2BAA2B,CAAC;AAI9G,OAAO,EAEN,SAAS,EACT,MAAM,EAEN,eAAe,EACf,MAAM,EACN,cAAc,EACd,IAAI,EACJ,GAAG,GACH,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC5E,OAAO,EAA6C,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAGzG,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AACxE,OAAO,EACN,qCAAqC,EACrC,+BAA+B,EAC/B,4CAA4C,EAC5C,iCAAiC,EACjC,2BAA2B,EAC3B,wCAAwC,GACxC,MAAM,gDAAgD,CAAC;AACxD,OAAO,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AACxE,OAAO,EAAsB,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAGnF,OAAO,EAAE,6BAA6B,EAA+B,MAAM,2BAA2B,CAAC;AACvG,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAOtE,OAAO,EAAE,uCAAuC,EAAE,MAAM,qCAAqC,CAAC;AAC9F,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAwB,MAAM,8BAA8B,CAAC;AAC1F,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,mBAAmB,EAAuB,MAAM,4BAA4B,CAAC;AACtF,OAAO,KAAK,oBAAoB,MAAM,4BAA4B,CAAC;AACnE,OAAO,KAAK,gBAAgB,MAAM,wBAAwB,CAAC;AAC3D,OAAO,KAAK,cAAc,MAAM,sBAAsB,CAAC;AACvD,OAAO,KAAK,eAAe,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAyB,MAAM,+BAA+B,CAAC;AAC7F,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AAC9E,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAE,6BAA6B,EAAE,MAAM,wCAAwC,CAAC;AACvF,OAAO,EAAE,iCAAiC,EAAE,MAAM,4CAA4C,CAAC;AAE/F,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAE/E,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAC;AAC/G,OAAO,EAAE,+BAA+B,EAAE,MAAM,0CAA0C,CAAC;AAC3F,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EACN,qBAAqB,EACrB,2BAA2B,EAC3B,iBAAiB,GACjB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,KAAK,YAAY,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC7E,OAAO,KAAK,iBAAiB,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,sBAAsB,EAA6B,MAAM,mCAAmC,CAAC;AACtG,OAAO,KAAK,WAAW,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAmC,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACpG,OAAO,KAAK,kBAAkB,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,KAAK,cAAc,MAAM,sBAAsB,CAAC;AACvD,OAAO,KAAK,qBAAqB,MAAM,8BAA8B,CAAC;AACtE,OAAO,KAAK,YAAY,MAAM,4BAA4B,CAAC;AAC3D,OAAO,KAAK,iBAAiB,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,qCAAqC,EAAE,MAAM,iCAAiC,CAAC;AACxF,OAAO,KAAK,oBAAoB,MAAM,6BAA6B,CAAC;AACpE,OAAO,KAAK,eAAe,MAAM,uBAAuB,CAAC;AACzD,OAAO,KAAK,aAAa,MAAM,qBAAqB,CAAC;AACrD,OAAO,EACN,cAAc,EACd,gBAAgB,EAChB,SAAS,EACT,aAAa,EACb,mBAAmB,EACnB,QAAQ,EACR,gBAAgB,EAChB,KAAK,GACL,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,aAAa,MAAM,qBAAqB,CAAC;AAErD,MAAM,6BAA6B,GAAG,EAAE,CAAC;AACzC,MAAM,+BAA+B,GAAG,GAAG,CAAC;AAC5C,MAAM,mCAAmC,GAAG,GAAG,CAAC;AAChD,MAAM,+BAA+B,GAAG,EAAE,CAAC;AAa3C,MAAM,mCAAmC,GACxC,uMAAuM,CAAC;AAEzM,SAAS,8BAA8B,CAAC,MAA0B;IACjE,OAAO,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;AACtE,CAAC;AAED,SAAS,aAAa,CAAC,KAAa;IACnC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QAC7D,OAAO,KAAK,CAAC;IACd,CAAC;IACD,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,cAA8B;IACjE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IAC5C,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE;QAAE,OAAO,SAAS,CAAC;IAEpD,MAAM,WAAW,GAAG,cAAc,CAAC,cAAc,EAAE,CAAC;IACpD,IAAI,CAAC,WAAW,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC;QAAE,OAAO,SAAS,CAAC;IAElE,MAAM,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;IACxB,IAAI,CAAC,cAAc,CAAC,qBAAqB,EAAE,EAAE,CAAC;QAC7C,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,aAAa,CAAC,cAAc,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;IAC3E,CAAC;IACD,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,YAAY,EAAE,CAAC,CAAC;IACtD,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACvB,CAAC;AAsBD,MAAM,OAAO,eAAe;IAiH3B,wBAAwB;IACxB,IAAY,OAAO;QAClB,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;IACjC,CAAC;IACD,IAAY,KAAK;QAChB,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;IAC3B,CAAC;IACD,IAAY,cAAc;QACzB,OAAO,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC;IACpC,CAAC;IACD,IAAY,eAAe;QAC1B,OAAO,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC;IACrC,CAAC;IAED,YAAY,WAAgC,EAAE,OAAO,GAA2B,EAAE;QAtH1E,iCAA4B,GAAkC,EAAE,CAAC;QAajE,kBAAa,GAAG,KAAK,CAAC;QAEtB,sBAAiB,GAA0B,EAAE,CAAC;QACrC,mBAAc,GAAuC;YACrE,sBAAsB,EAAE,EAAE;YAC1B,qBAAqB,EAAE,CAAC;SACxB,CAAC;QAEM,qBAAgB,GAAuB,SAAS,CAAC;QACjD,mBAAc,GAAuB,SAAS,CAAC;QAC/C,mBAAc,GAAG,IAAI,CAAC;QACtB,4BAAuB,GAAuC,SAAS,CAAC;QAC/D,0BAAqB,GAAG,YAAY,CAAC;QACrC,+BAA0B,GAAG,aAAa,CAAC;QACpD,wBAAmB,GAAG,IAAI,CAAC,0BAA0B,CAAC;QAEtD,mBAAc,GAAG,CAAC,CAAC;QACnB,mBAAc,GAAG,CAAC,CAAC;QACnB,sBAAiB,GAAuB,SAAS,CAAC;QAClD,wBAAmB,GAAG,KAAK,CAAC;QAC5B,sCAAiC,GAAG,KAAK,CAAC;QAElD,4EAA4E;QACpE,qBAAgB,GAAuB,SAAS,CAAC;QACjD,mBAAc,GAAqB,SAAS,CAAC;QAErD,oFAAoF;QAC5E,4BAAuB,GAAqB,SAAS,CAAC;QACtD,gCAA2B,GAAG,CAAC,CAAC;QAChC,qBAAgB,GAAG,KAAK,CAAC;QACzB,6BAAwB,GAAG,KAAK,CAAC;QAEzC,6BAA6B;QACrB,uBAAkB,GAA0C,SAAS,CAAC;QACtE,qBAAgB,GAAiC,SAAS,CAAC;QAC3D,2BAAsB,GAA8C,SAAS,CAAC;QAC9E,4BAAuB,GAAG,CAAC,CAAC;QAEpC,6DAA6D;QACrD,eAAU,GAAG,IAAI,iBAAiB,EAAE,CAAC;QAE7C,8BAA8B;QACtB,uBAAkB,GAAG,KAAK,CAAC;QAEnC,kCAAkC;QAC1B,sBAAiB,GAAG,KAAK,CAAC;QAElC,kDAAkD;QAC1C,kBAAa,GAAG,IAAI,GAAG,EAAkB,CAAC;QAK1C,0BAAqB,GAAsB,EAAE,CAAC;QAEtD,uDAAuD;QAC/C,eAAU,GAAG,KAAK,CAAC;QAE3B,yCAAyC;QACjC,kBAAa,GAAuC,SAAS,CAAC;QAEtE,iFAAiF;QACzE,0BAAqB,GAA6B,EAAE,CAAC;QAK7D,mBAAmB;QACZ,mBAAc,GAA+B,SAAS,CAAC;QAG9D,8CAA8C;QACtC,6BAAwB,GAA8B,EAAE,CAAC;QAEjE,iBAAiB;QACT,sBAAiB,GAAG,KAAK,CAAC;QAWlC,wDAAwD;QAChD,kBAAa,GAA0B,SAAS,CAAC;QAmuDzD;;;;;WAKG;QACK,qBAAgB,GAAG,CAAC,CAAC;QAkM7B;;;;WAIG;QACK,mBAAc,GAAG,KAAK,CAAC;QA75D9B,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,IAAI,IAAI,CAAC;QACzD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,gBAAgB,CAAC;QAC5C,IAAI,CAAC,WAAW,CAAC,0BAA0B,CAAC,GAAG,EAAE;YAChD,IAAI,CAAC,eAAe,CAAC,gBAAgB,EAAE,CAAC;QACzC,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,KAAK,IAAI,EAAE;YAC5C,MAAM,IAAI,CAAC,oBAAoB,EAAE,CAAC;QACnC,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,EAAE,GAAG,IAAI,GAAG,CAAC,IAAI,eAAe,EAAE,EAAE,IAAI,CAAC,eAAe,CAAC,qBAAqB,EAAE,CAAC,CAAC;QACvF,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,eAAe,CAAC,gBAAgB,EAAE,CAAC,CAAC;QAClE,IAAI,CAAC,eAAe,GAAG,IAAI,SAAS,EAAE,CAAC;QACvC,IAAI,CAAC,aAAa,GAAG,IAAI,SAAS,EAAE,CAAC;QACrC,IAAI,CAAC,wBAAwB,GAAG,IAAI,SAAS,EAAE,CAAC;QAChD,IAAI,CAAC,eAAe,GAAG,IAAI,SAAS,EAAE,CAAC;QACvC,IAAI,CAAC,oBAAoB,GAAG,IAAI,SAAS,EAAE,CAAC;QAC5C,IAAI,CAAC,oBAAoB,GAAG,IAAI,SAAS,EAAE,CAAC;QAC5C,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,gBAAgB;YACxC,CAAC,CAAC,IAAI,qBAAqB,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC;YACjE,CAAC,CAAC,SAAS,CAAC;QACb,IAAI,CAAC,WAAW,GAAG,kBAAkB,CAAC,MAAM,EAAE,CAAC;QAC/C,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACjC,MAAM,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC,iBAAiB,EAAE,CAAC;QAChE,MAAM,sBAAsB,GAAG,IAAI,CAAC,eAAe,CAAC,yBAAyB,EAAE,CAAC;QAChF,IAAI,CAAC,aAAa,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,EAAE,EAAE,cAAc,EAAE,EAAE,IAAI,CAAC,WAAW,EAAE;YAClF,QAAQ,EAAE,cAAc;YACxB,sBAAsB;SACtB,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC;QACjC,IAAI,CAAC,eAAe,GAAG,IAAI,SAAS,EAAE,CAAC;QACvC,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAmB,CAAC,CAAC;QACxD,IAAI,CAAC,WAAW,GAAG,IAAI,iBAAiB,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QACxE,IAAI,CAAC,kBAAkB,GAAG,IAAI,kBAAkB,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,CAAC;QAC/E,IAAI,CAAC,MAAM,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;QACzE,IAAI,CAAC,mBAAmB,GAAG,IAAI,mBAAmB,CAAC;YAClD,UAAU,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO;YAC1C,6BAA6B,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,6BAA6B,CAAC,QAAQ,CAAC;YACzF,EAAE,EAAE;gBACH,UAAU,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;gBACjD,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;gBAC3C,gBAAgB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;gBAChD,aAAa,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;aAC5C;SACD,CAAC,CAAC;QACH,MAAM,kBAAkB,GAAG;YAC1B,YAAY,EAAE,CAAC,MAA+C,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;YAC5F,UAAU,EAAE,CAAC,OAAe,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;YACzD,SAAS,EAAE,CAAC,OAAe,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;YACvD,aAAa,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;YAC5C,GAAG,EAAE,IAAI,CAAC,EAAE;SACZ,CAAC;QACF,IAAI,CAAC,WAAW,GAAG,IAAI,qBAAqB,CAAC;YAC5C,UAAU,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO;YAC1C,EAAE,EAAE;gBACH,GAAG,kBAAkB;gBACrB,WAAW,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;gBACnD,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;gBAC3C,gBAAgB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;gBAChD,uBAAuB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,uBAAuB,EAAE;gBAC7D,iBAAiB,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC;gBACjE,mBAAmB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,6BAA6B,EAAE;gBAC/D,uCAAuC,EAAE,CAAC,KAAK,EAAE,EAAE,CAClD,KAAK,IAAI,CAAC,uCAAuC,CAAC,KAAK,CAAC;gBACzD,qBAAqB,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC;gBACnE,oBAAoB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,oBAAoB,EAAE;gBACvD,wBAAwB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,wBAAwB,EAAE;aAC/D;SACD,CAAC,CAAC;QACH,IAAI,CAAC,WAAW,GAAG,IAAI,qBAAqB,CAAC;YAC5C,UAAU,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO;YAC1C,EAAE,EAAE;gBACH,GAAG,kBAAkB;gBACrB,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,SAAS,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM;gBAC5B,4BAA4B,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,4BAA4B,EAAE;gBACvE,gBAAgB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;gBAChD,uBAAuB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,uBAAuB,EAAE;gBAC7D,uCAAuC,EAAE,CAAC,KAAK,EAAE,EAAE,CAClD,KAAK,IAAI,CAAC,uCAAuC,CAAC,KAAK,CAAC;gBACzD,qBAAqB,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC;aACnE;SACD,CAAC,CAAC;QACH,IAAI,CAAC,eAAe,GAAG,IAAI,eAAe,CAAC;YAC1C,UAAU,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO;YAC1C,EAAE,EAAE;gBACH,GAAG,EAAE,IAAI,CAAC,EAAE;gBACZ,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;gBAC3C,eAAe,EAAE,IAAI,CAAC,eAAe;gBACrC,aAAa,EAAE,IAAI,CAAC,aAAa;gBACjC,aAAa,EAAE,IAAI,CAAC,aAAa;gBACjC,oBAAoB,EAAE,IAAI,CAAC,oBAAoB;gBAC/C,oBAAoB,EAAE,IAAI,CAAC,oBAAoB;gBAC/C,SAAS,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM;gBAC5B,SAAS,EAAE,CAAC,MAAM,EAAE,EAAE;oBACrB,MAAM,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC;oBACnC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;oBACrB,IAAI,cAAc,KAAK,MAAM,IAAI,cAAc,KAAK,IAAI,CAAC,aAAa,EAAE,CAAC;wBACxE,MAAM,gBAAgB,GAAG,cAAkE,CAAC;wBAC5F,gBAAgB,CAAC,OAAO,EAAE,EAAE,CAAC;oBAC9B,CAAC;gBACF,CAAC;gBACD,gBAAgB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,aAAa;gBAC1C,uBAAuB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,oBAAoB;gBACxD,sBAAsB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,mBAAmB;gBACtD,gBAAgB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,kBAAkB;gBAC/C,+BAA+B,EAAE,CAAC,OAAO,EAAE,EAAE;oBAC5C,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACjD,CAAC;gBACD,iCAAiC,EAAE,GAAG,EAAE;oBACvC,IAAI,CAAC,4BAA4B,GAAG,EAAE,CAAC;gBACxC,CAAC;gBACD,yBAAyB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,yBAAyB,EAAE;gBACjE,iBAAiB,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC;gBAC/D,mBAAmB,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC;gBACnE,sBAAsB,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC;gBACrE,iBAAiB,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC;gBAC/D,sBAAsB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,sBAAsB,EAAE;gBAC3D,gBAAgB,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC;gBAC/D,mBAAmB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,yBAAyB,EAAE;gBAC3D,mBAAmB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,mBAAmB,EAAE;gBACrD,qBAAqB,EAAE,GAAG,EAAE;oBAC3B,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;gBAC/B,CAAC;gBACD,KAAK,EAAE,GAAG,EAAE;oBACX,IAAI,CAAC,6BAA6B,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;gBACrD,CAAC;gBACD,MAAM,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,mBAAmB,EAAE;gBACxC,UAAU,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;gBACjD,WAAW,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;gBACnD,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;aAC/C;SACD,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,CAAC,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;QAEtE,mCAAmC;QACnC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,eAAe,CAAC,oBAAoB,EAAE,CAAC;QAErE,sDAAsD;QACtD,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC,CAAC;QACpE,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,CAAC;IAClD,CAAC;IAED,2EAA2E;IAC3E,4EAA4E;IACpE,8BAA8B;QACrC,OAAO,oBAAoB,CAAC,8BAA8B,CAAC;YAC1D,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,eAAe,EAAE,IAAI,CAAC,eAAe;YACrC,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,aAAa,EAAE,IAAI,CAAC,aAAa;SACjC,CAAC,CAAC;IACJ,CAAC;IAEO,yBAAyB;QAChC,IAAI,QAAQ,GAAG,IAAI,CAAC,8BAA8B,EAAE,CAAC;QACrD,KAAK,MAAM,YAAY,IAAI,IAAI,CAAC,4BAA4B,EAAE,CAAC;YAC9D,QAAQ,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;QACnC,CAAC;QAED,IAAI,CAAC,oBAAoB,GAAG,QAAQ,CAAC;QACrC,IAAI,CAAC,aAAa,CAAC,uBAAuB,CAAC,QAAQ,CAAC,CAAC;QACrD,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,aAAa,EAAE,CAAC;YACxC,IAAI,CAAC,MAAM,CAAC,uBAAuB,EAAE,CAAC,QAAQ,CAAC,CAAC;QACjD,CAAC;IACF,CAAC;IAEO,iBAAiB;QACxB,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,OAAO;YACN,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,eAAe,EAAE,IAAI,CAAC,eAAe;YACrC,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,IAAI,iBAAiB;gBACpB,OAAO,IAAI,CAAC,iBAAiB,CAAC;YAC/B,CAAC;YACD,IAAI,mBAAmB;gBACtB,OAAO,IAAI,CAAC,mBAAmB,CAAC;YACjC,CAAC;YACD,IAAI,mBAAmB,CAAC,KAAK;gBAC5B,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;YAClC,CAAC;YACD,4BAA4B,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,4BAA4B,EAAE;SACvE,CAAC;IACH,CAAC;IAEO,0BAA0B;QACjC,aAAa,CAAC,0BAA0B,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;IACpE,CAAC;IAED,KAAK,CAAC,IAAI;QACT,IAAI,IAAI,CAAC,aAAa;YAAE,OAAO;QAE/B,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAE9B,oEAAoE;QACpE,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAEvD,oFAAoF;QACpF,2EAA2E;QAC3E,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACzE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QAErB,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,eAAe,EAAE,CAAC,EAAE,CAAC;YAC/G,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY;iBACzC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE;gBACX,MAAM,WAAW,GAAG,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACnE,OAAO,GAAG,EAAE,CAAC,KAAK,CAAC,EAAE,GAAG,WAAW,EAAE,CAAC;YACvC,CAAC,CAAC;iBACD,IAAI,CAAC,IAAI,CAAC,CAAC;YACb,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC;YACrE,MAAM,SAAS,GACd,SAAS,CAAC,MAAM,GAAG,CAAC;gBACnB,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,YAAY,CAAC;gBAC9F,CAAC,CAAC,EAAE,CAAC;YACP,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,gBAAgB,SAAS,GAAG,SAAS,EAAE,CAAC,CAAC,CAAC;QACvE,CAAC;QAED,sCAAsC;QACtC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAEvC,4DAA4D;QAC5D,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,eAAe,EAAE,EAAE,CAAC;YACrE,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;YAE7F,2DAA2D;YAC3D,MAAM,IAAI,GAAG,CAAC,UAAyB,EAAE,WAAmB,EAAE,EAAE,CAAC,OAAO,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;YAElG,MAAM,oBAAoB,GAAG;gBAC5B,IAAI,CAAC,eAAe,EAAE,cAAc,CAAC;gBACrC,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC;gBAC7B,UAAU,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC,QAAQ,EAAE,SAAS,CAAC;gBACtD,IAAI,CAAC,UAAU,EAAE,iBAAiB,CAAC;gBACnC,IAAI,CAAC,aAAa,EAAE,YAAY,CAAC;gBACjC,OAAO,CAAC,4BAA4B,EAAE,kBAAkB,CAAC;gBACzD,IAAI,CAAC,oBAAoB,EAAE,yBAAyB,CAAC;gBACrD,UAAU,CAAC,GAAG,OAAO,CAAC,wBAAwB,CAAC,IAAI,OAAO,CAAC,yBAAyB,CAAC,EAAE,EAAE,iBAAiB,CAAC;gBAC3G,IAAI,CAAC,kBAAkB,EAAE,iBAAiB,CAAC;gBAC3C,IAAI,CAAC,kBAAkB,EAAE,gCAAgC,CAAC;gBAC1D,IAAI,CAAC,qBAAqB,EAAE,oBAAoB,CAAC;gBACjD,IAAI,CAAC,qBAAqB,EAAE,qBAAqB,CAAC;gBAClD,UAAU,CAAC,GAAG,EAAE,cAAc,CAAC;gBAC/B,UAAU,CAAC,GAAG,EAAE,aAAa,CAAC;gBAC9B,UAAU,CAAC,IAAI,EAAE,0BAA0B,CAAC;gBAC5C,IAAI,CAAC,sBAAsB,EAAE,oBAAoB,CAAC;gBAClD,UAAU,CAAC,IAAI,EAAE,2BAA2B,CAAC;gBAC7C,IAAI,CAAC,qBAAqB,EAAE,6BAA6B,CAAC;gBAC1D,UAAU,CAAC,GAAG,EAAE,0CAA0C,CAAC;gBAC3D,IAAI,CAAC,0BAA0B,EAAE,gBAAgB,CAAC;gBAClD,UAAU,CAAC,YAAY,EAAE,WAAW,CAAC;aACrC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACb,MAAM,mBAAmB,GAAG;gBAC3B,IAAI,CAAC,eAAe,EAAE,WAAW,CAAC;gBAClC,UAAU,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,EAAE,EAAE,YAAY,CAAC;gBAC1E,UAAU,CAAC,GAAG,EAAE,UAAU,CAAC;gBAC3B,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC;gBACvB,IAAI,CAAC,kBAAkB,EAAE,cAAc,CAAC;aACxC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;YACjC,MAAM,iBAAiB,GAAG,KAAK,CAAC,EAAE,CACjC,KAAK,EACL,SAAS,OAAO,CAAC,kBAAkB,CAAC,0EAA0E,CAC9G,CAAC;YACF,MAAM,UAAU,GAAG,KAAK,CAAC,EAAE,CAC1B,KAAK,EACL,uFAAuF,CACvF,CAAC;YACF,IAAI,CAAC,aAAa,GAAG,IAAI,cAAc,CACtC,GAAG,EAAE,CAAC,GAAG,IAAI,KAAK,mBAAmB,KAAK,iBAAiB,OAAO,UAAU,EAAE,EAC9E,GAAG,EAAE,CAAC,GAAG,IAAI,KAAK,oBAAoB,OAAO,UAAU,EAAE,EACzD,IAAI,CAAC,wBAAwB,EAAE,EAC/B,CAAC,EACD,CAAC,CACD,CAAC;YAEF,kBAAkB;YAClB,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YAC7C,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAClD,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9C,CAAC;aAAM,CAAC;YACP,+BAA+B;YAC/B,IAAI,CAAC,aAAa,GAAG,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YACxC,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACnD,CAAC;QAED,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACrC,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC3B,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;YAChD,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YACvC,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,CAAC,CAAC,iCAAiC;YACvE,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;YAC5C,IAAI,IAAI,CAAC,YAAY;gBAAE,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC5D,CAAC;QACD,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QACvC,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC3B,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;YAC5C,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC/B,CAAC;QACD,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAE9B,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAEhC,oGAAoG;QACpG,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;QAChB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAE1B,qEAAqE;QACrE,MAAM,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAElC,kEAAkE;QAClE,IAAI,CAAC,4BAA4B,EAAE,CAAC;QAEpC,yDAAyD;QACzD,MAAM,IAAI,CAAC,qBAAqB,EAAE,CAAC;QACnC,IAAI,CAAC,iCAAiC,EAAE,CAAC;QAEzC,4BAA4B;QAC5B,aAAa,CAAC,GAAG,EAAE;YAClB,IAAI,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC;YACrB,IAAI,CAAC,uBAAuB,EAAE,CAAC;YAC/B,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC3B,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC;QACzB,CAAC,CAAC,CAAC;QAEH,8DAA8D;QAC9D,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,GAAG,EAAE;YAC3C,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC;QACzB,CAAC,CAAC,CAAC;QAEH,+EAA+E;QAC/E,MAAM,IAAI,CAAC,4BAA4B,EAAE,CAAC;QAC1C,IAAI,CAAC,qBAAqB,EAAE,CAAC;IAC9B,CAAC;IAEO,iCAAiC;QACxC,aAAa,CAAC,iCAAiC,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;IAC3E,CAAC;IAED;;OAEG;IACK,mBAAmB;QAC1B,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,CAAC;QAChE,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE,CAAC;QACzD,IAAI,WAAW,EAAE,CAAC;YACjB,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,SAAS,MAAM,WAAW,MAAM,WAAW,EAAE,CAAC,CAAC;QAC7E,CAAC;aAAM,CAAC;YACP,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,SAAS,MAAM,WAAW,EAAE,CAAC,CAAC;QAC5D,CAAC;IACF,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,GAAG;QACR,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QAElB,qCAAqC;QACrC,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,EAAE;YACtD,IAAI,UAAU,EAAE,CAAC;gBAChB,IAAI,CAAC,0BAA0B,CAAC,UAAU,CAAC,CAAC;YAC7C,CAAC;QACF,CAAC,CAAC,CAAC;QAEH,4CAA4C;QAC5C,IAAI,CAAC,sBAAsB,EAAE;aAC3B,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE;YACjB,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACxB,IAAI,CAAC,6BAA6B,CAAC,OAAO,CAAC,CAAC;YAC7C,CAAC;QACF,CAAC,CAAC;aACD,OAAO,CAAC,GAAG,EAAE;YACb,wFAAwF;YACxF,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;gBACxD,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC5B,CAAC;QACF,CAAC,CAAC,CAAC;QAEJ,2CAA2C;QAC3C,IAAI,CAAC,sBAAsB,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE;YAC9C,IAAI,OAAO,EAAE,CAAC;gBACb,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YAC3B,CAAC;QACF,CAAC,CAAC,CAAC;QAEH,iGAAiG;QACjG,mFAAmF;QACnF,IAAI,CAAC,OAAO;aACV,uBAAuB,EAAE;aACzB,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE;YAClB,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACzB,IAAI,CAAC,UAAU,CACd,0BAA0B,QAAQ,CAAC,MAAM,qBAAqB,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,wCAAwC,CACzH,CAAC;YACH,CAAC;QACF,CAAC,CAAC;aACD,KAAK,CAAC,GAAG,EAAE;YACX,iDAAiD;QAClD,CAAC,CAAC,CAAC;QAEJ,wBAAwB;QACxB,MAAM,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,cAAc,EAAE,aAAa,EAAE,eAAe,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;QAEjH,IAAI,iBAAiB,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvD,IAAI,CAAC,WAAW,CAAC,sCAAsC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACxF,CAAC;QAED,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;QAC9D,IAAI,eAAe,EAAE,CAAC;YACrB,IAAI,CAAC,SAAS,CAAC,sBAAsB,eAAe,EAAE,CAAC,CAAC;QACzD,CAAC;QAED,IAAI,oBAAoB,EAAE,CAAC;YAC1B,IAAI,CAAC,WAAW,CAAC,oBAAoB,CAAC,CAAC;QACxC,CAAC;QAED,KAAK,IAAI,CAAC,uCAAuC,EAAE,CAAC;QAEpD,2BAA2B;QAC3B,IAAI,cAAc,EAAE,CAAC;YACpB,IAAI,CAAC;gBACJ,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC;YACtE,CAAC;YAAC,OAAO,KAAc,EAAE,CAAC;gBACzB,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,wBAAwB,CAAC;gBACvF,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;YAC9B,CAAC;oBAAS,CAAC;gBACV,IAAI,CAAC,2BAA2B,EAAE,CAAC;YACpC,CAAC;QACF,CAAC;QAED,IAAI,eAAe,EAAE,CAAC;YACrB,KAAK,MAAM,OAAO,IAAI,eAAe,EAAE,CAAC;gBACvC,IAAI,CAAC;oBACJ,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;gBACpC,CAAC;gBAAC,OAAO,KAAc,EAAE,CAAC;oBACzB,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,wBAAwB,CAAC;oBACvF,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;gBAC9B,CAAC;wBAAS,CAAC;oBACV,IAAI,CAAC,2BAA2B,EAAE,CAAC;gBACpC,CAAC;YACF,CAAC;QACF,CAAC;QAED,wBAAwB;QACxB,OAAO,IAAI,EAAE,CAAC;YACb,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;YAC5C,IAAI,CAAC;gBACJ,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;YACzE,CAAC;YAAC,OAAO,KAAc,EAAE,CAAC;gBACzB,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,wBAAwB,CAAC;gBACvF,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;YAC9B,CAAC;oBAAS,CAAC;gBACV,IAAI,CAAC,2BAA2B,EAAE,CAAC;YACpC,CAAC;QACF,CAAC;IACF,CAAC;IAEO,2BAA2B;QAClC,IAAI,CAAC,kBAAkB,CAAC,yBAAyB,CAAC,IAAI,CAAC,OAAO,CAAC,yBAAyB,EAAE,CAAC,CAAC;QAC5F,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;IAC1B,CAAC;IAEO,oBAAoB;QAC3B,OAAO;YACN,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,oBAAoB,EAAE;YAC9C,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,yBAAyB,EAAE;YACnD,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE;SAC1C,CAAC;IACH,CAAC;IAEO,mBAAmB,CAAC,OAAO,GAA0B,EAAE;QAC9D,IAAI,CAAC,IAAI,CAAC,YAAY;YAAE,OAAO;QAC/B,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC;QACtD,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACrB,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,UAAU,EAAE,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC;QAC7E,CAAC;aAAM,CAAC;YACP,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,UAAU,EAAE,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC;QAC5E,CAAC;IACF,CAAC;IAEM,gBAAgB,CAAC,QAAgB;QACvC,IAAI,QAAQ,KAAK,YAAY;YAAE,OAAO,MAAM,CAAC;QAC7C,IAAI,QAAQ,KAAK,MAAM;YAAE,OAAO,MAAM,CAAC;QACvC,IAAI,QAAQ,KAAK,UAAU,IAAI,QAAQ,KAAK,iBAAiB;YAAE,OAAO,QAAQ,CAAC;QAC/E,OAAO,MAAM,CAAC;IACf,CAAC;IAEM,iBAAiB,CAAC,QAAgB;QACxC,MAAM,KAAK,GAAG,IAAI,CAAC,2BAA2B,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,QAAQ,CAAC;QACpF,OAAO,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC;IAClG,CAAC;IAEM,0BAA0B,CAAC,OAAgB,EAAE,OAAgB;QACnE,IAAI,OAAO;YAAE,OAAO,SAAS,CAAC;QAC9B,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC;YAAE,OAAO,SAAS,CAAC;QAC/C,IAAI,OAAO,CAAC,OAAO,KAAK,KAAK,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO;YAAE,OAAO,SAAS,CAAC;QAC5E,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,CAAC,QAAQ,KAAK,KAAK;YAAE,OAAO,SAAS,CAAC;QAC9E,IAAI,OAAO,CAAC,OAAO,KAAK,KAAK;YAAE,OAAO,SAAS,CAAC;QAChD,OAAO,SAAS,CAAC;IAClB,CAAC;IAEO,sBAAsB;QAC7B,OAAO,aAAa,CAAC,sBAAsB,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;IACvE,CAAC;IAEO,sBAAsB;QAC7B,OAAO,aAAa,CAAC,sBAAsB,EAAE,CAAC;IAC/C,CAAC;IAED;;;OAGG;IACK,sBAAsB;QAC7B,OAAO,aAAa,CAAC,sBAAsB,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;IACvE,CAAC;IAEO,4BAA4B;QACnC,OAAO;YACN,GAAG,gBAAgB,EAAE;YACrB,eAAe,EAAE,IAAI,CAAC,eAAe,CAAC,kBAAkB,EAAE;SAC1D,CAAC;IACH,CAAC;IAED,4EAA4E;IAC5E,mBAAmB;IACnB,4EAA4E;IAEpE,wBAAwB;QAC/B,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,kBAAkB,CAAC;IACxD,CAAC;IAEO,mBAAmB,CAAC,OAAoC;QAC/D,qBAAqB,CACpB;YACC,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,KAAK;YACtC,QAAQ,EAAE,IAAI,CAAC,wBAAwB,EAAE;SACzC,EACD,OAAO,CACP,CAAC;IACH,CAAC;IACD;;OAEG;IACK,KAAK,CAAC,4BAA4B;QACzC,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,wBAAwB,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;QACtG,MAAM,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC;YACjC,SAAS;YACT,IAAI,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO;YAC7C,YAAY,EAAE,GAAG,EAAE;gBAClB,IAAI,CAAC,6BAA6B,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YACrD,CAAC;YACD,qBAAqB,EAAE;gBACtB,WAAW,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE;gBACnD,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;oBAC7B,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;wBAC3B,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC;wBAC7B,IAAI,CAAC,gBAAgB,GAAG,SAAS,CAAC;oBACnC,CAAC;oBACD,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;oBAC7B,IAAI,CAAC;wBACJ,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;wBAC1D,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;4BACvB,IAAI,CAAC,yBAAyB,EAAE,CAAC;4BACjC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC;wBACzB,CAAC;wBACD,OAAO,MAAM,CAAC;oBACf,CAAC;oBAAC,OAAO,KAAc,EAAE,CAAC;wBACzB,MAAM,WAAW,GAAG,IAAI,CAAC,qCAAqC,CAAC,KAAK,CAAC,CAAC;wBACtE,IAAI,WAAW;4BAAE,OAAO,EAAE,SAAS,EAAE,WAAW,KAAK,mBAAmB,EAAE,CAAC;wBAC3E,OAAO,IAAI,CAAC,uBAAuB,CAAC,0BAA0B,EAAE,KAAK,CAAC,CAAC;oBACxE,CAAC;gBACF,CAAC;gBACD,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE;oBAChC,IAAI,CAAC;wBACJ,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;wBAC7D,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;4BACvB,IAAI,CAAC,yBAAyB,EAAE,CAAC;4BACjC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC;4BAC/C,IAAI,CAAC,UAAU,CAAC,uBAAuB,CAAC,CAAC;wBAC1C,CAAC;wBACD,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC;oBACxC,CAAC;oBAAC,OAAO,KAAc,EAAE,CAAC;wBACzB,MAAM,WAAW,GAAG,IAAI,CAAC,qCAAqC,CAAC,KAAK,CAAC,CAAC;wBACtE,IAAI,WAAW;4BAAE,OAAO,EAAE,SAAS,EAAE,WAAW,KAAK,mBAAmB,EAAE,CAAC;wBAC3E,OAAO,IAAI,CAAC,uBAAuB,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;oBACtE,CAAC;gBACF,CAAC;gBACD,YAAY,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE;oBACzC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,QAAQ,EAAE;wBACxD,SAAS,EAAE,OAAO,EAAE,SAAS;wBAC7B,kBAAkB,EAAE,OAAO,EAAE,kBAAkB;wBAC/C,mBAAmB,EAAE,OAAO,EAAE,mBAAmB;wBACjD,KAAK,EAAE,OAAO,EAAE,KAAK;qBACrB,CAAC,CAAC;oBACH,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;wBACtB,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;oBAC5B,CAAC;oBAED,MAAM,IAAI,CAAC,qBAAqB,EAAE,CAAC;oBACnC,IAAI,MAAM,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC;wBACxD,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;oBACxC,CAAC;oBACD,IAAI,CAAC,UAAU,CAAC,6BAA6B,CAAC,CAAC;oBAC/C,KAAK,IAAI,CAAC,oBAAoB,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;oBACrD,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;gBAC7B,CAAC;gBACD,aAAa,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE;oBAC7C,OAAO,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;gBACvD,CAAC;gBACD,MAAM,EAAE,KAAK,IAAI,EAAE;oBAClB,MAAM,IAAI,CAAC,mBAAmB,EAAE,CAAC;gBAClC,CAAC;aACD;YACD,eAAe,EAAE,GAAG,EAAE;gBACrB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;gBAC9B,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;oBAC/B,KAAK,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACtB,CAAC;YACF,CAAC;YACD,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;gBAClB,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;YACxF,CAAC;SACD,CAAC,CAAC;QAEH,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC,CAAC;QACpE,IAAI,CAAC,yBAAyB,EAAE,CAAC;QAEjC,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC;QACrD,IAAI,CAAC,eAAe,CAAC,uBAAuB,CAAC,eAAe,CAAC,CAAC;QAC9D,IAAI,CAAC,mBAAmB,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,wBAAwB,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3E,IAAI,CAAC,0BAA0B,EAAE,CAAC;IACnC,CAAC;IAEO,oBAAoB;QAC3B,uBAAuB,CAAC,IAAI,CAAC,eAAe,CAAC,oBAAoB,EAAE,CAAC,CAAC;QACrE,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACrC,IAAI,CAAC,MAAM,CAAC,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;QACtE,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,CAAC;QAC7D,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,eAAe,CAAC,oBAAoB,EAAE,CAAC;QACrE,IAAI,CAAC,EAAE,CAAC,qBAAqB,CAAC,IAAI,CAAC,eAAe,CAAC,qBAAqB,EAAE,CAAC,CAAC;QAC5E,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,eAAe,CAAC,gBAAgB,EAAE,CAAC,CAAC;QAClE,IAAI,CAAC,+BAA+B,EAAE,CAAC;IACxC,CAAC;IAEO,+BAA+B;QACtC,MAAM,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC,iBAAiB,EAAE,CAAC;QAChE,MAAM,sBAAsB,GAAG,IAAI,CAAC,eAAe,CAAC,yBAAyB,EAAE,CAAC;QAChF,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;QAC/C,IAAI,CAAC,aAAa,CAAC,yBAAyB,CAAC,sBAAsB,CAAC,CAAC;QACrE,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,aAAa,EAAE,CAAC;YACxC,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,cAAc,CAAC,CAAC;YAC1C,IAAI,CAAC,MAAM,CAAC,yBAAyB,EAAE,CAAC,sBAAsB,CAAC,CAAC;QACjE,CAAC;IACF,CAAC;IAEO,4BAA4B;QACnC,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,eAAe,EAAE,IAAI,IAAI,CAAC,aAAa,CAAC;QAClF,IAAI,YAAY,CAAC,YAAY,CAAC,EAAE,CAAC;YAChC,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QACnD,CAAC;QACD,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC,CAAC;QACpE,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,eAAe,CAAC,oBAAoB,EAAE,CAAC;QACrE,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC;QAClD,MAAM,WAAW,GAAG,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAC9E,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;YAC1B,IAAI,CAAC,SAAS,CAAC,yBAAyB,SAAS,MAAM,WAAW,CAAC,KAAK,4BAA4B,CAAC,CAAC;QACvG,CAAC;QACD,IAAI,CAAC,+BAA+B,EAAE,CAAC;IACxC,CAAC;IAEO,KAAK,CAAC,oBAAoB;QACjC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;QACrB,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;QAC7B,IAAI,CAAC,cAAc,CAAC,sBAAsB,GAAG,EAAE,CAAC;QAChD,IAAI,CAAC,cAAc,CAAC,qBAAqB,GAAG,CAAC,CAAC;QAC9C,MAAM,uBAAuB,GAAG,IAAI,CAAC,eAAe,CAAC,0BAA0B,EAAE,CAAC;QAClF,IAAI,CAAC,mBAAmB;YACvB,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,IAAI,uBAAuB;gBAC3D,CAAC,CAAC,IAAI,iBAAiB,CAAC;oBACtB,QAAQ,EAAE,WAAW,EAAE;oBACvB,GAAG,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE;oBACjC,SAAS,EAAE,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE;oBAC7C,SAAS,EAAE,uBAAuB;iBAClC,CAAC;gBACH,CAAC,CAAC,SAAS,CAAC;QACd,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5B,MAAM,IAAI,CAAC,4BAA4B,EAAE,CAAC;QAC1C,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,IAAI,CAAC,4BAA4B,EAAE,CAAC;QACpC,MAAM,IAAI,CAAC,4BAA4B,EAAE,CAAC;QAC1C,IAAI,CAAC,uBAAuB,EAAE,CAAC;QAC/B,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,IAAI,CAAC,mBAAmB,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5C,IAAI,CAAC;YACJ,MAAM,IAAI,CAAC,OAAO,CAAC,uBAAuB,EAAE,CAAC;QAC9C,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACzB,IAAI,CAAC,SAAS,CACb,wCAAwC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAChG,CAAC;QACH,CAAC;IACF,CAAC;IAEO,4BAA4B;QACnC,IAAI,CAAC,4BAA4B,EAAE,EAAE,CAAC;QACtC,IAAI,CAAC,4BAA4B,GAAG,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,GAAG,EAAE;YACzE,IAAI,CAAC,+BAA+B,EAAE,CAAC;QACxC,CAAC,CAAC,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,uBAAuB,CAAC,MAAc,EAAE,KAAc;QACnE,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,IAAI,CAAC,SAAS,CAAC,GAAG,MAAM,KAAK,OAAO,EAAE,CAAC,CAAC;QACxC,gBAAgB,EAAE,CAAC;QACnB,IAAI,CAAC,IAAI,EAAE,CAAC;QACZ,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC;IAEO,qCAAqC,CAC5C,KAAc;QAEd,OAAO,qCAAqC,CAC3C;YACC,yBAAyB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,yBAAyB,EAAE;YACjE,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;SAC/C,EACD,KAAK,CACL,CAAC;IACH,CAAC;IAEO,yBAAyB;QAChC,IAAI,CAAC,wBAAwB,CAAC,KAAK,EAAE,CAAC;QACtC,IAAI,CAAC,wBAAwB,GAAG,EAAE,CAAC;QACnC,IAAI,CAAC,kBAAkB,GAAG,SAAS,CAAC;QACpC,IAAI,CAAC,gBAAgB,GAAG,SAAS,CAAC;QAClC,IAAI,CAAC,2BAA2B,EAAE,CAAC;QACnC,KAAK,IAAI,CAAC,qBAAqB,EAAE,CAAC;IACnC,CAAC;IAED;;OAEG;IACK,2BAA2B,CAAC,QAAgB;QACnD,OAAO,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IACjD,CAAC;IAEO,iBAAiB;QACxB,OAAO;YACN,SAAS,EAAE,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,EAAE;YAC/C,WAAW,EAAE,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE,EAAE;YACnD,GAAG,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE;SACjC,CAAC;IACH,CAAC;IAEO,4BAA4B,CAAC,SAAiC,EAAE,aAAsB;QAC7F,MAAM,SAAS,GAAG,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;QAC1E,IAAI,CAAC,SAAS,EAAE,CAAC;YAChB,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;YACvC,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC1B,OAAO;QACR,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC;QAC7C,MAAM,SAAS,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAChD,IAAI,SAAS,YAAY,kBAAkB,IAAI,SAAS,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YAClF,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YAC7B,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC1B,OAAO;QACR,CAAC;QACD,IAAI,SAAS,YAAY,sBAAsB,IAAI,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,KAAK,SAAS,EAAE,CAAC;YAC9F,MAAM,KAAK,GAAG,IAAI,kBAAkB,CAAC,SAAS,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;YACxE,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;YAC3C,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;YACtC,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC1B,OAAO;QACR,CAAC;QACD,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QACvC,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAC3B,CAAC;IAEO,4BAA4B,CAAC,SAAiC;QACrE,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC;QAC7C,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAChD,IAAI,WAAW,KAAK,CAAC,CAAC,EAAE,CAAC;YACxB,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;YAChC,OAAO;QACR,CAAC;QACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC1C,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;YAC1B,IAAI,CAAC,CAAC,KAAK,YAAY,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC;gBAAE,SAAS;YACrF,MAAM,SAAS,GAAG,KAAK,CAAC,YAAY,EAAE,CAAC;YACvC,IAAI,SAAS,KAAK,CAAC,EAAE,CAAC;gBACrB,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACvB,CAAC;iBAAM,IAAI,SAAS,KAAK,CAAC,EAAE,CAAC;gBAC5B,MAAM,QAAQ,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;gBACrC,IAAI,QAAQ;oBAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC;YACtC,CAAC;YACD,OAAO;QACR,CAAC;IACF,CAAC;IAEO,4BAA4B,CACnC,QAAgB,EAChB,UAAkB,EAClB,IAAS,EACT,MAA2B,EAC3B,wBAAwB,GAAG,KAAK;QAEhC,MAAM,SAAS,GAAG,qBAAqB,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;QAClF,MAAM,cAAc,GAAG,IAAI,CAAC,2BAA2B,CAAC,QAAQ,CAAC,CAAC;QAClE,MAAM,YAAY,GAAG,2BAA2B,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QACjE,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,SAAS,EAAE,EAAE,WAAW,EAAE,YAAY,EAAE,CAAC,CAAC;QACvF,IAAI,QAAQ,EAAE,CAAC;YACd,IAAI,YAAY,IAAI,SAAS,EAAE,CAAC;gBAC/B,QAAQ,CAAC,eAAe,CAAC,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,wBAAwB,CAAC,CAAC;gBACvG,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;gBAC9C,IAAI,CAAC,UAAU,CAAC,sBAAsB,CAAC,UAAU,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;gBACxE,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC;gBACxB,OAAO,QAAQ,CAAC;YACjB,CAAC;YACD,IAAI,CAAC,4BAA4B,CAAC,QAAQ,CAAC,CAAC;YAC5C,QAAQ,CAAC,eAAe,CAAC,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,wBAAwB,CAAC,CAAC;YACvG,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;YAC9C,IAAI,CAAC,4BAA4B,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YAClD,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,UAAU,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;YAC1D,OAAO,QAAQ,CAAC;QACjB,CAAC;QACD,MAAM,SAAS,GAAG,IAAI,sBAAsB,CAC3C,QAAQ,EACR,UAAU,EACV,IAAI,EACJ;YACC,UAAU,EAAE,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE;YAChD,eAAe,EAAE,IAAI,CAAC,eAAe,CAAC,kBAAkB,EAAE;YAC1D,MAAM;YACN,wBAAwB;SACxB,EACD,cAAc,EACd,IAAI,CAAC,EAAE,EACP,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAC5B,CAAC;QACF,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAC/C,IAAI,CAAC,4BAA4B,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,UAAU,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;QAC3D,OAAO,SAAS,CAAC;IAClB,CAAC;IAEM,oBAAoB;QAC1B,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;IAC/B,CAAC;IAEO,2BAA2B;QAClC,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;IAC5B,CAAC;IAEO,uBAAuB;QAC9B,OAAO,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,qBAAqB,CAAC;IAC1D,CAAC;IAEO,mBAAmB;QAC1B,OAAO,IAAI,MAAM,CAChB,IAAI,CAAC,EAAE,EACP,CAAC,OAAO,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC,EACxC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,EACjC,IAAI,CAAC,uBAAuB,EAAE,EAC9B,IAAI,CAAC,uBAAuB,CAC5B,CAAC;IACH,CAAC;IAEO,iBAAiB;QACxB,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC3B,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC;YAC7B,IAAI,CAAC,gBAAgB,GAAG,SAAS,CAAC;QACnC,CAAC;QACD,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;QAC7B,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,iBAAiB,CAAC,CAAC;QAC7C,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,cAAc,CAAC,CAAC;IAC3C,CAAC;IAEO,iBAAiB,CAAC,OAAgB;QACzC,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC5B,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;YAC5B,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACzB,OAAO;QACR,CAAC;QACD,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC;QAC9B,IAAI,CAAC,OAAO,EAAE,CAAC;YACd,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACzB,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC;YACxB,OAAO;QACR,CAAC;QACD,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACxD,IAAI,IAAI,CAAC,uBAAuB,EAAE,CAAC;gBAClC,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;gBAC7B,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;gBACnD,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;YACtD,CAAC;iBAAM,CAAC;gBACP,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,EAAE,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC,uBAAuB,EAAE,EAAE,CAAC,CAAC;YAC1G,CAAC;QACF,CAAC;QACD,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC;IACzB,CAAC;IAEO,mBAAmB,CAAC,OAAgC;QAC3D,IAAI,CAAC,uBAAuB,GAAG,OAAO,CAAC;QACvC,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC5B,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACzB,OAAO;QACR,CAAC;QACD,IAAI,OAAO,EAAE,CAAC;YACb,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,cAAc,CAAC,CAAC;YAC1C,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;gBACrD,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBACzB,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;gBACnD,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;YACtD,CAAC;QACF,CAAC;aAAM,CAAC;YACP,IAAI,CAAC,gBAAgB,EAAE,IAAI,EAAE,CAAC;YAC9B,IAAI,CAAC,gBAAgB,GAAG,SAAS,CAAC;YAClC,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;YAC7B,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;gBACrD,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,EAAE,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC,uBAAuB,EAAE,EAAE,CAAC,CAAC;YAC1G,CAAC;QACF,CAAC;QACD,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC;IACzB,CAAC;IAEO,sBAAsB,CAAC,KAAc;QAC5C,IAAI,CAAC,mBAAmB,GAAG,KAAK,IAAI,IAAI,CAAC,0BAA0B,CAAC;QACpE,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;YACjD,IAAI,KAAK,YAAY,yBAAyB,EAAE,CAAC;gBAChD,KAAK,CAAC,sBAAsB,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;YACxD,CAAC;QACF,CAAC;QACD,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC7B,IAAI,CAAC,kBAAkB,CAAC,sBAAsB,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAC1E,CAAC;QACD,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC;IACzB,CAAC;IAED;;OAEG;IACK,iBAAiB,CAAC,OAA2B;QACpD,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC;QAC9B,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC3B,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,OAAO,IAAI,IAAI,CAAC,qBAAqB,CAAC,CAAC;QACzE,CAAC;QACD,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,cAAc,EAAE,OAAO,IAAI,IAAI,CAAC,qBAAqB,CAAC,CAAC;IAClF,CAAC;IAED;;OAEG;IACK,sBAAsB;QAC7B,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC;QAChC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,gBAAgB,CAAC;QAC5C,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC3B,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,qBAAqB,KAAK,OAAO,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAC;QAC9G,CAAC;QACD,IAAI,CAAC,sBAAsB,EAAE,CAAC;IAC/B,CAAC;IAEO,KAAK,CAAC,0BAA0B,CAAC,KAA6B;QACrE,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,oBAAoB,CAChE,uBAAuB,EACvB,6BAA6B,CAAC,KAAK,CAAC,KAAK,CAAC,CAC1C,CAAC;QACF,OAAO,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC;IACxD,CAAC;IAED,4EAA4E;IAC5E,eAAe;IACf,4EAA4E;IAEpE,gBAAgB;QACvB,WAAW,CAAC,gBAAgB,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;IACtD,CAAC;IAEO,eAAe;QACtB,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,OAAO;YACN,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,IAAI,MAAM;gBACT,OAAO,IAAI,CAAC,MAAM,CAAC;YACpB,CAAC;YACD,IAAI,OAAO;gBACV,OAAO,IAAI,CAAC,OAAO,CAAC;YACrB,CAAC;YACD,IAAI,eAAe;gBAClB,OAAO,IAAI,CAAC,eAAe,CAAC;YAC7B,CAAC;YACD,IAAI,UAAU;gBACb,OAAO,IAAI,CAAC,UAAU,CAAC;YACxB,CAAC;YACD,IAAI,UAAU,CAAC,KAAK;gBACnB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;YACzB,CAAC;YACD,IAAI,cAAc;gBACjB,OAAO,IAAI,CAAC,cAAc,CAAC;YAC5B,CAAC;YACD,IAAI,cAAc,CAAC,KAAK;gBACvB,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;YAC7B,CAAC;YACD,6BAA6B,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,6BAA6B,CAAC,OAAO,CAAC;YACvF,uBAAuB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,uBAAuB,EAAE;YAC7D,gBAAgB,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC;YACnD,uBAAuB,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC;YACrE,WAAW,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE;YACrC,WAAW,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE;YACrC,WAAW,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE;YACrC,kBAAkB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,kBAAkB,EAAE;YACnD,UAAU,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;YACrD,kBAAkB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,kBAAkB,EAAE;YACnD,iBAAiB,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC;YAC3D,sBAAsB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,sBAAsB,EAAE;YAC3D,mBAAmB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,mBAAmB,EAAE;YACrD,6BAA6B,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,6BAA6B,EAAE;YACzE,kBAAkB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,kBAAkB,EAAE;YACnD,cAAc,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,cAAc,EAAE;YAC3C,aAAa,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,aAAa,EAAE;YACzC,kBAAkB,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC;YAC3D,mBAAmB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,mBAAmB,EAAE;YACrD,yBAAyB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,yBAAyB,EAAE;SACjE,CAAC;IACH,CAAC;IAEO,yBAAyB;QAChC,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC;QAC1C,MAAM,oBAAoB,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QAC5F,OAAO,cAAc,CAAC,yBAAyB,CAC9C,cAAc,CAAC,kBAAkB,CAAC,IAAI,CAAC,cAAc,EAAE;YACtD,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,gBAAgB,EAAE,IAAI,CAAC,eAAe,CAAC,kBAAkB,EAAE;YAC3D,WAAW,EAAE,IAAI,CAAC,eAAe,CAAC,cAAc,EAAE,IAAI,oBAAoB;YAC1E,iBAAiB,EAAE,oBAAoB;gBACtC,CAAC,CAAC,+HAA+H;gBACjI,CAAC,CAAC,SAAS;YACZ,UAAU,EAAE,IAAI,CAAC,mBAAmB;YACpC,UAAU,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;YACjD,WAAW,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;SACnD,CAAC,CACF,CAAC;IACH,CAAC;IAEO,0BAA0B,CAAC,IAAY;QAC9C,OAAO,cAAc,CAAC,0BAA0B,CAC/C,cAAc,CAAC,kBAAkB,CAAC,IAAI,CAAC,cAAc,EAAE;YACtD,mBAAmB,EAAE,IAAI,CAAC,mBAAmB;SAC7C,CAAC,EACF,IAAI,CACJ,CAAC;IACH,CAAC;IAEO,wBAAwB,CAAC,IAAY;QAC5C,OAAO,cAAc,CAAC,wBAAwB,CAC7C,EAAE,0BAA0B,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC,CAAC,EAAE,EACzE,IAAI,CACJ,CAAC;IACH,CAAC;IAEO,wBAAwB;QAC/B,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,KAAK,EAAE,IAAY,EAAE,EAAE;YACpD,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;YACnB,IAAI,CAAC,IAAI;gBAAE,OAAO;YAElB,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;gBAC1C,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;gBACxB,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACtB,OAAO;YACR,CAAC;YAED,uEAAuE;YACvE,uEAAuE;YACvE,yEAAyE;YACzE,8DAA8D;YAC9D,MAAM,eAAe,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YAC9C,IAAI,eAAe,EAAE,CAAC;gBACrB,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;gBAC5B,IAAI,CAAC,IAAI;oBAAE,OAAO;YACnB,CAAC;YAED,sEAAsE;YACtE,2EAA2E;YAC3E,oDAAoD;YACpD,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;gBAC/B,MAAM,MAAM,GAAG,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,CAAC;gBACrD,IAAI,CAAC,sBAAsB,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;gBAClF,OAAO;YACR,CAAC;YACD,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;gBACzD,MAAM,MAAM,GAAG,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,CAAC;gBACrD,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,CAAC;gBACjC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;gBACxB,IAAI,CAAC;oBACJ,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE;wBAC/B,iBAAiB,EAAE,eAAe,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO;wBACzD,MAAM;wBACN,oBAAoB,EAAE,KAAK;qBAC3B,CAAC,CAAC;gBACJ,CAAC;wBAAS,CAAC;oBACV,IAAI,CAAC,2BAA2B,EAAE,CAAC;gBACpC,CAAC;gBACD,IAAI,CAAC,4BAA4B,EAAE,CAAC;gBACpC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC;gBACxB,OAAO;YACR,CAAC;YAED,kBAAkB;YAClB,IAAI,IAAI,KAAK,WAAW,EAAE,CAAC;gBAC1B,IAAI,CAAC,oBAAoB,EAAE,CAAC;gBAC5B,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;gBACxB,OAAO;YACR,CAAC;YACD,IAAI,IAAI,KAAK,aAAa,IAAI,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;gBAC/D,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;gBAClC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;gBACxB,OAAO;YACR,CAAC;YACD,IAAI,IAAI,KAAK,WAAW,IAAI,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC3D,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;gBACjC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;gBACxB,OAAO;YACR,CAAC;YACD,IAAI,IAAI,KAAK,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;gBACzD,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;gBACzD,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;gBACxB,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAC9B,mFAAmF;oBACnF,IAAI,CAAC,wBAAwB,EAAE,CAAC;gBACjC,CAAC;qBAAM,CAAC;oBACP,mDAAmD;oBACnD,IAAI,CAAC,qBAAqB,CAAC,qBAAqB,WAAW,EAAE,CAAC,CAAC;gBAChE,CAAC;gBACD,OAAO;YACR,CAAC;YACD,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;gBACvD,KAAK,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;gBACnE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;gBACxB,OAAO;YACR,CAAC;YACD,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;gBACzB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,iCAAiC,EAAE,CAAC,CAAC;gBAClE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;gBACxB,OAAO;YACR,CAAC;YACD,IAAI,IAAI,KAAK,aAAa,EAAE,CAAC;gBAC5B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,4BAA4B,EAAE,CAAC,CAAC;gBAC7D,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;gBACxB,OAAO;YACR,CAAC;YACD,IAAI,IAAI,KAAK,YAAY,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;gBAC7D,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;gBACtD,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;gBACxB,IAAI,CAAC,UAAU,CAAC,uBAAuB,CAAC,CAAC;gBACzC,IAAI,CAAC;oBACJ,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,MAAM,IAAI,SAAS,CAAC,CAAC;oBACxE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBAC/B,CAAC;gBAAC,OAAO,KAAc,EAAE,CAAC;oBACzB,IAAI,CAAC,WAAW,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;gBAC1E,CAAC;gBACD,OAAO;YACR,CAAC;YACD,IAAI,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,EAAE,CAAC;gBACzC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;gBACnF,MAAM,OAAO,GACZ,KAAK,IAAI,IAAI;oBACZ,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,KAAK,EAAE,IAAI,CAAC;wBAC/C,CAAC,CAAC,4BAA4B,IAAI,QAAQ,KAAK,GAAG;wBAClD,CAAC,CAAC,uBAAuB,IAAI,cAAc,KAAK,GAAG;oBACpD,CAAC,CAAC,iDAAiD,CAAC;gBACtD,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;gBACzB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;gBACxB,OAAO;YACR,CAAC;YACD,IAAI,IAAI,CAAC,UAAU,CAAC,qBAAqB,CAAC,EAAE,CAAC;gBAC5C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;gBAC9D,MAAM,OAAO,GAAG,KAAK;oBACpB,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,4BAA4B,CAAC,KAAK,CAAC;wBACjD,CAAC,CAAC,4CAA4C,KAAK,GAAG;wBACtD,CAAC,CAAC,+CAA+C,KAAK,GAAG;oBAC1D,CAAC,CAAC,6CAA6C,CAAC;gBACjD,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;gBACzB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;gBACxB,OAAO;YACR,CAAC;YACD,IAAI,IAAI,KAAK,gBAAgB,EAAE,CAAC;gBAC/B,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;gBACxB,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;gBAChC,OAAO;YACR,CAAC;YACD,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;gBACrD,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;gBACjF,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;gBACxB,MAAM,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC;gBAC1C,OAAO;YACR,CAAC;YACD,IAAI,IAAI,KAAK,WAAW,IAAI,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC3D,MAAM,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;gBACzF,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;gBACxB,MAAM,IAAI,CAAC,qBAAqB,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;gBACtF,OAAO;YACR,CAAC;YACD,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;gBACvD,MAAM,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;gBACrC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;gBACxB,OAAO;YACR,CAAC;YACD,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;gBACvD,MAAM,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;gBACrC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;gBACxB,OAAO;YACR,CAAC;YACD,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACvB,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;gBAChC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;gBACxB,OAAO;YACR,CAAC;YACD,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;gBACtB,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBAC/B,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;gBACxB,OAAO;YACR,CAAC;YACD,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACnD,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;gBAC7B,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;gBACxB,OAAO;YACR,CAAC;YACD,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;gBACzB,IAAI,CAAC,oBAAoB,EAAE,CAAC;gBAC5B,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;gBACxB,OAAO;YACR,CAAC;YACD,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACvB,IAAI,CAAC,sBAAsB,EAAE,CAAC;gBAC9B,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;gBACxB,OAAO;YACR,CAAC;YACD,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;gBACtB,IAAI,CAAC,kBAAkB,EAAE,CAAC;gBAC1B,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;gBACxB,OAAO;YACR,CAAC;YACD,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACnD,MAAM,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;gBACnC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;gBACxB,OAAO;YACR,CAAC;YACD,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;gBACtG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;gBAC7B,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;gBACxB,OAAO;YACR,CAAC;YACD,IAAI,IAAI,KAAK,gBAAgB,IAAI,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,EAAE,CAAC;gBACrE,MAAM,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,CAAC;gBAC3C,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;gBACxB,OAAO;YACR,CAAC;YACD,IAAI,IAAI,KAAK,YAAY,EAAE,CAAC;gBAC3B,IAAI,CAAC,sBAAsB,EAAE,CAAC;gBAC9B,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;gBACxB,OAAO;YACR,CAAC;YACD,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;gBACzB,IAAI,CAAC,oBAAoB,EAAE,CAAC;gBAC5B,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;gBACxB,OAAO;YACR,CAAC;YACD,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACnD,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,IAAI,SAAS,CAAC,CAAC;gBAC7E,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;gBACxB,OAAO;YACR,CAAC;YACD,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;gBACrD,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;gBACxB,MAAM,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,IAAI,SAAS,CAAC,CAAC;gBAC/E,OAAO;YACR,CAAC;YACD,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;gBACtB,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACxB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;gBACxB,OAAO;YACR,CAAC;YACD,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACvB,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBACzB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;gBACxB,OAAO;YACR,CAAC;YACD,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;gBACrD,MAAM,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,IAAI,SAAS,CAAC,CAAC;gBACnG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;gBACxB,OAAO;YACR,CAAC;YACD,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;gBACvD,MAAM,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,IAAI,SAAS,CAAC,CAAC;gBACrG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;gBACxB,OAAO;YACR,CAAC;YACD,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;gBACjD,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;gBACxB,MAAM,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,IAAI,SAAS,CAAC,CAAC;gBAC7E,OAAO;YACR,CAAC;YACD,IAAI,IAAI,KAAK,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;gBACzD,MAAM,kBAAkB,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;gBAC3F,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;gBACxB,MAAM,IAAI,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,CAAC;gBACpD,OAAO;YACR,CAAC;YACD,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;gBACxB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;gBACxB,MAAM,IAAI,CAAC,mBAAmB,EAAE,CAAC;gBACjC,OAAO;YACR,CAAC;YACD,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;gBACvD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;gBACjD,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;gBACxB,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;gBAC/B,OAAO;YACR,CAAC;YACD,IAAI,IAAI,KAAK,oBAAoB,IAAI,IAAI,CAAC,UAAU,CAAC,qBAAqB,CAAC,EAAE,CAAC;gBAC7E,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;gBAC5D,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;gBACxB,MAAM,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC,CAAC;gBAC/C,OAAO;YACR,CAAC;YACD,IAAI,IAAI,KAAK,gBAAgB,IAAI,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,EAAE,CAAC;gBACrE,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,IAAI,SAAS,CAAC;gBACrE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;gBACxB,MAAM,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,CAAC;gBAC3C,OAAO;YACR,CAAC;YACD,IAAI,IAAI,KAAK,iBAAiB,IAAI,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,EAAE,CAAC;gBACvE,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;gBACzD,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;gBACxB,MAAM,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,CAAC;gBAC5C,OAAO;YACR,CAAC;YACD,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACvB,IAAI,CAAC,kBAAkB,EAAE,CAAC;gBAC1B,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;gBACxB,OAAO;YACR,CAAC;YACD,IAAI,IAAI,KAAK,cAAc,EAAE,CAAC;gBAC7B,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBACzB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;gBACxB,OAAO;YACR,CAAC;YACD,IAAI,IAAI,KAAK,gBAAgB,EAAE,CAAC;gBAC/B,IAAI,CAAC,oBAAoB,EAAE,CAAC;gBAC5B,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;gBACxB,OAAO;YACR,CAAC;YACD,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;gBACxB,IAAI,CAAC,mBAAmB,EAAE,CAAC;gBAC3B,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;gBACxB,OAAO;YACR,CAAC;YACD,mEAAmE;YACnE,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC1B,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;gBACzC,MAAM,OAAO,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;gBACzE,IAAI,OAAO,EAAE,CAAC;oBACb,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;wBAChC,IAAI,CAAC,WAAW,CAAC,kEAAkE,CAAC,CAAC;wBACrF,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;wBAC1B,OAAO;oBACR,CAAC;oBACD,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,CAAC;oBACjC,MAAM,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;oBAClD,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;oBACxB,IAAI,CAAC,uBAAuB,EAAE,CAAC;oBAC/B,OAAO;gBACR,CAAC;YACF,CAAC;YAED,4BAA4B;YAC5B,kDAAkD;YAClD,IAAI,CAAC,0BAA0B,EAAE,CAAC;YAElC,MAAM,UAAU,GAAG,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC;YACvD,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;gBAC1B,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;YAClC,CAAC;iBAAM,CAAC;gBACP,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACzC,CAAC;YACD,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,CAAC;QAClC,CAAC,CAAC;IACH,CAAC;IAEO,gBAAgB;QACvB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YACzD,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;IACJ,CAAC;IAEO,WAAW,CAAC,KAAwB;QAC3C,OAAO,sBAAsB,CAAC,IAAuC,EAAE,KAAK,CAAC,CAAC;IAC/E,CAAC;IACD,+CAA+C;IAC/C,mFAAmF;IACnF,yFAAyF;IACjF,kBAAkB,CAAC,OAAgB;QAC1C,OAAO,iBAAiB,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;IACtD,CAAC;IAEO,qBAAqB,CAAC,OAA0B;QACvD,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;YAC5B,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;YAChC,OAAO;QACR,CAAC;QACD,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;YAC5B,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,CAAC;QAClC,CAAC;IACF,CAAC;IAEO,sCAAsC,CAAC,QAAiC;QAC/E,MAAM,OAAO,GAAG,QAAQ;aACtB,MAAM,CAAC,CAAC,OAAO,EAAsB,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,MAAM,CAAC;aAChE,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;aACzD,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;aACjC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC;QACd,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC;IACrC,CAAC;IAEO,qCAAqC;QAC5C,MAAM,cAAc,GAAG,IAAI,CAAC,cAA8E,CAAC;QAC3G,MAAM,OAAO,GAAG,cAAc,CAAC,yBAAyB,EAAE,CAAC,GAAG,CAAC,CAAC;QAChE,IAAI,OAAO;YAAE,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC;IAClD,CAAC;IAEO,uBAAuB;QAC9B,IAAI,CAAC,uBAAuB,GAAG,SAAS,CAAC;QACzC,IAAI,CAAC,2BAA2B,GAAG,CAAC,CAAC;IACtC,CAAC;IAEO,6BAA6B;QACpC,IAAI,CAAC,IAAI,CAAC,sBAAsB;YAAE,OAAO;QACzC,YAAY,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QAC1C,IAAI,CAAC,sBAAsB,GAAG,SAAS,CAAC;IACzC,CAAC;IAEO,oBAAoB;QAC3B,MAAM,OAAO,GAAG,IAAI,CAAC,cAA+E,CAAC;QACrG,OAAO,OAAO,CAAC,aAAa,EAAE,EAAE,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC,MAAM,CAAC;IACjE,CAAC;IAEO,8BAA8B,CAAC,OAAO,GAAgC,EAAE;QAC/E,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,EAAE,CAAC;QACjC,IAAI,CAAC,uBAAuB,EAAE,CAAC;QAC/B,IAAI,CAAC,2BAA2B,EAAE,CAAC;QAEnC,MAAM,UAAU,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC/C,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;YACpB,IAAI,CAAC,aAAa,CAAC,QAAQ,CAC1B,IAAI,IAAI,CACP,KAAK,CAAC,EAAE,CACP,KAAK,EACL,0CAA0C,UAAU,oBAAoB,OAAO,CAAC,kBAAkB,CAAC,qCAAqC,CACxI,EACD,CAAC,EACD,CAAC,CACD,CACD,CAAC;QACH,CAAC;QAED,IAAI,OAAO,CAAC,aAAa,IAAI,IAAI;YAAE,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC;IAC5D,CAAC;IAEO,sBAAsB;QAC7B,IAAI,IAAI,CAAC,wBAAwB;YAAE,OAAO;QAC1C,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,oBAAoB,EAAE,KAAK,CAAC,EAAE,CAAC;YAChE,IAAI,CAAC,yBAAyB,EAAE,CAAC;YACjC,OAAO;QACR,CAAC;QAED,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC;QACrC,KAAK,CAAC,KAAK,IAAI,EAAE;YAChB,IAAI,CAAC;gBACJ,MAAM,IAAI,CAAC,qBAAqB,CAAC,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC,CAAC;YAC9D,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBAChB,IAAI,CAAC,SAAS,CAAC,+BAA+B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACzG,CAAC;oBAAS,CAAC;gBACV,IAAI,CAAC,wBAAwB,GAAG,KAAK,CAAC;YACvC,CAAC;QACF,CAAC,CAAC,EAAE,CAAC;IACN,CAAC;IAEO,mBAAmB;QAC1B,IAAI,MAAkD,CAAC;QACvD,MAAM,KAAK,GAAG,IAAI,eAAe,CAAC;YACjC,MAAM,EAAE,IAAI,CAAC,aAAa;YAC1B,YAAY,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI;YACzC,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE;SAC7B,CAAC,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,KAAK,EAAE;YACnC,KAAK,EAAE,MAAM;YACb,SAAS,EAAE,MAAM;YACjB,GAAG,EAAE,CAAC;YACN,GAAG,EAAE,CAAC;SACN,CAAC,CAAC;IACJ,CAAC;IAEO,yBAAyB,CAAC,OAAyB;QAC1D,KAAK,MAAM,OAAO,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACvC,IAAI,OAAO,CAAC,IAAI,KAAK,UAAU;gBAAE,SAAS;YAC1C,MAAM,MAAM,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;YAC9C,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC;gBAC5C,IAAI,CAAC,4BAA4B,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;YACxF,CAAC;iBAAM,CAAC;gBACP,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;gBACxD,IAAI,SAAS,EAAE,CAAC;oBACf,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;gBACjD,CAAC;YACF,CAAC;QACF,CAAC;IACF,CAAC;IAEM,2BAA2B,CAAC,OAAyB,EAAE,OAAO,GAAwB,EAAE;QAC9F,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC;QAChC,IAAI,CAAC,IAAI,CAAC,kBAAkB;YAAE,OAAO;QAErC,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QAC9B,MAAM,OAAO,GAAG,GAAG,GAAG,IAAI,CAAC,uBAAuB,CAAC;QACnD,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC;QACnF,MAAM,eAAe,GAAG,OAAO,CAAC,KAAK,IAAI,WAAW,IAAI,OAAO,IAAI,+BAA+B,CAAC;QAEnG,MAAM,MAAM,GAAG,GAAG,EAAE;YACnB,IAAI,CAAC,IAAI,CAAC,kBAAkB,IAAI,CAAC,IAAI,CAAC,gBAAgB;gBAAE,OAAO;YAC/D,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;YAC7D,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;YACtD,IAAI,CAAC,uBAAuB,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;YACjD,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC;QACzB,CAAC,CAAC;QAEF,IAAI,eAAe,EAAE,CAAC;YACrB,IAAI,CAAC,6BAA6B,EAAE,CAAC;YACrC,MAAM,EAAE,CAAC;YACT,OAAO;QACR,CAAC;QAED,IAAI,IAAI,CAAC,sBAAsB;YAAE,OAAO;QACxC,IAAI,CAAC,sBAAsB,GAAG,UAAU,CACvC,GAAG,EAAE;YACJ,IAAI,CAAC,sBAAsB,GAAG,SAAS,CAAC;YACxC,MAAM,EAAE,CAAC;QACV,CAAC,EACD,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,+BAA+B,GAAG,OAAO,CAAC,CACtD,CAAC;IACH,CAAC;IAEO,kBAAkB;QACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC;QAC7C,IAAI,QAAQ,CAAC,MAAM,IAAI,+BAA+B;YAAE,OAAO;QAE/D,IAAI,cAAc,GAAG,QAAQ,CAAC,MAAM,CAAC;QACrC,MAAM,OAAO,GAAG,CAAC,SAAgC,EAAE,EAAE;YACpD,IAAI,CAAC,SAAS;gBAAE,OAAO;YACvB,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YAC1C,IAAI,KAAK,KAAK,CAAC,CAAC,IAAI,KAAK,GAAG,cAAc;gBAAE,cAAc,GAAG,KAAK,CAAC;QACpE,CAAC,CAAC;QAEF,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QACjC,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC/B,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC7B,KAAK,MAAM,CAAC,EAAE,SAAS,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,EAAE,CAAC;YAC7D,OAAO,CAAC,SAAS,CAAC,CAAC;QACpB,CAAC;QAED,MAAM,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACvE,MAAM,aAAa,GAAG,QAAQ,CAAC,MAAM,GAAG,mCAAmC,CAAC;QAC5E,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC;QACxD,IAAI,OAAO,IAAI,SAAS;YAAE,OAAO;QAEjC,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,GAAG,SAAS,CAAC,CAAC;QAChE,IAAI,CAAC,2BAA2B,IAAI,OAAO,CAAC,MAAM,CAAC;QACnD,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,gBAA6B,CAAC;YAAE,IAAI,CAAC,gBAAgB,GAAG,SAAS,CAAC;QAC5F,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,cAA2B,CAAC;YAAE,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC;QAExF,MAAM,UAAU,GAAG,KAAK,CAAC,EAAE,CAC1B,KAAK,EACL,6CAA6C,IAAI,CAAC,2BAA2B,4DAA4D,CACzI,CAAC;QACF,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,uBAAuB,EAAE,CAAC;YAClD,IAAI,CAAC,uBAAuB,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;YAClD,OAAO;QACR,CAAC;QAED,IAAI,CAAC,uBAAuB,GAAG,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC1D,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;IAChD,CAAC;IAEO,kBAAkB,CAAC,OAAe,EAAE,OAAO,GAAgC,EAAE;QACpF,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC;QAC7C,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC7E,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAEnF,IAAI,IAAI,IAAI,UAAU,IAAI,IAAI,KAAK,IAAI,CAAC,cAAc,IAAI,UAAU,KAAK,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAChG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;YACtD,IAAI,OAAO,CAAC,aAAa,IAAI,IAAI;gBAAE,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC;YAC3D,OAAO;QACR,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;QAC7B,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACtD,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACpC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAClC,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC;QAC/B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC3B,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC1B,IAAI,OAAO,CAAC,aAAa,IAAI,IAAI;YAAE,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC;IAC5D,CAAC;IAED;;;;;OAKG;IACK,UAAU,CAAC,OAAe;QACjC,IAAI,CAAC,IAAI,CAAC,gBAAgB;YAAE,OAAO;QACnC,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAClC,CAAC;IAEO,gBAAgB,CAAC,OAAqB,EAAE,OAAuC;QACtF,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;YACtB,KAAK,eAAe,EAAE,CAAC;gBACtB,MAAM,SAAS,GAAG,IAAI,sBAAsB,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAC;gBACnG,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;oBACpB,SAAS,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;gBACxC,CAAC;gBACD,SAAS,CAAC,WAAW,CACpB,OAAO,CAAC,QAAQ,EAChB,OAAO,CAAC,SAAS,EACjB,OAAO,CAAC,SAAS,CAAC,CAAC,CAAE,EAAE,SAAS,EAAE,IAAI,EAAuB,CAAC,CAAC,CAAC,SAAS,EACzE,OAAO,CAAC,cAAc,CACtB,CAAC;gBACF,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;gBACvC,MAAM;YACP,CAAC;YACD,KAAK,QAAQ,EAAE,CAAC;gBACf,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;oBACrB,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,kBAAkB,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;oBACrF,MAAM,SAAS,GAAG,IAAI,sBAAsB,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,4BAA4B,EAAE,CAAC,CAAC;oBACrG,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;oBAC/C,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;gBACxC,CAAC;gBACD,MAAM;YACP,CAAC;YACD,KAAK,mBAAmB,EAAE,CAAC;gBAC1B,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC3C,MAAM,SAAS,GAAG,IAAI,iCAAiC,CAAC,OAAO,EAAE,IAAI,CAAC,4BAA4B,EAAE,CAAC,CAAC;gBACtG,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;gBAC/C,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;gBACvC,MAAM;YACP,CAAC;YACD,KAAK,eAAe,EAAE,CAAC;gBACtB,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC3C,MAAM,SAAS,GAAG,IAAI,6BAA6B,CAAC,OAAO,EAAE,IAAI,CAAC,4BAA4B,EAAE,CAAC,CAAC;gBAClG,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;gBAC/C,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;gBACvC,MAAM;YACP,CAAC;YACD,KAAK,MAAM,EAAE,CAAC;gBACb,MAAM,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;gBACrD,IAAI,WAAW,EAAE,CAAC;oBACjB,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBAC5C,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC5C,CAAC;oBACD,MAAM,UAAU,GAAG,eAAe,CAAC,WAAW,CAAC,CAAC;oBAChD,IAAI,UAAU,EAAE,CAAC;wBAChB,mCAAmC;wBACnC,MAAM,SAAS,GAAG,IAAI,+BAA+B,CACpD,UAAU,EACV,IAAI,CAAC,4BAA4B,EAAE,CACnC,CAAC;wBACF,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;wBAC/C,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;wBACvC,4CAA4C;wBAC5C,IAAI,UAAU,CAAC,WAAW,EAAE,CAAC;4BAC5B,MAAM,aAAa,GAAG,IAAI,oBAAoB,CAC7C,UAAU,CAAC,WAAW,EACtB,IAAI,CAAC,4BAA4B,EAAE,CACnC,CAAC;4BACF,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;wBAC5C,CAAC;oBACF,CAAC;yBAAM,CAAC;wBACP,MAAM,aAAa,GAAG,IAAI,oBAAoB,CAAC,WAAW,EAAE,IAAI,CAAC,4BAA4B,EAAE,CAAC,CAAC;wBACjG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;oBAC5C,CAAC;oBACD,IAAI,OAAO,EAAE,eAAe,EAAE,CAAC;wBAC9B,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,WAAW,CAAC,CAAC;oBACzC,CAAC;gBACF,CAAC;gBACD,MAAM;YACP,CAAC;YACD,KAAK,WAAW,EAAE,CAAC;gBAClB,MAAM,kBAAkB,GAAG,IAAI,yBAAyB,CACvD,OAAO,EACP,IAAI,CAAC,iBAAiB,EACtB,IAAI,CAAC,4BAA4B,EAAE,EACnC,IAAI,CAAC,mBAAmB,CACxB,CAAC;gBACF,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC;gBAChD,MAAM;YACP,CAAC;YACD,KAAK,YAAY,EAAE,CAAC;gBACnB,uEAAuE;gBACvE,MAAM;YACP,CAAC;YACD,SAAS,CAAC;gBACT,MAAM,WAAW,GAAU,OAAO,CAAC;YACpC,CAAC;QACF,CAAC;QACD,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAC3B,CAAC;IAED,oFAAoF;IACpF,4FAA4F;IACpF,2BAA2B,CAAC,QAAwB;QAK3D,OAAO,iBAAiB,CAAC,2BAA2B,CAAC,QAAQ,EAAE;YAC9D,wBAAwB,EAAE,IAAI,CAAC,kBAAkB;SACjD,CAAC,CAAC;IACJ,CAAC;IAWO,KAAK,CAAC,oBAAoB,CACjC,cAA8B,EAC9B,OAAO,GAA0D,EAAE;QAEnE,MAAM,GAAG,GAAG,KAAK,IAAI,EAAE;YACtB,yEAAyE;YACzE,0EAA0E;YAC1E,sEAAsE;YACtE,IAAI,CAAC,gBAAgB,GAAG,CAAC,IAAI,CAAC,gBAAgB,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;YACzD,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC;YACzC,IAAI,SAAS,GAAG,CAAC,CAAC;YAClB,IAAI,SAAS,GAAG,KAAK,CAAC;YAEtB,MAAM,oBAAoB,GAAG,IAAI,CAAC,aAAa,CAAC;YAChD,MAAM,+BAA+B,GAAG,IAAI,CAAC,uBAAuB,CAAC;YACrE,MAAM,mCAAmC,GAAG,IAAI,CAAC,2BAA2B,CAAC;YAC7E,MAAM,wBAAwB,GAAG,IAAI,CAAC,gBAAgB,CAAC;YACvD,MAAM,sBAAsB,GAAG,IAAI,CAAC,cAAc,CAAC;YACnD,MAAM,oBAAoB,GAAG,IAAI,SAAS,EAAE,CAAC;YAE7C,IAAI,CAAC,aAAa,GAAG,oBAAoB,CAAC;YAC1C,IAAI,CAAC,uBAAuB,EAAE,CAAC;YAC/B,IAAI,CAAC,2BAA2B,EAAE,CAAC;YACnC,MAAM,oBAAoB,GAAG,IAAI,GAAG,EAAkC,CAAC;YAEvE,IAAI,CAAC;gBACJ,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;oBAC1B,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;oBACzB,IAAI,CAAC,uBAAuB,EAAE,CAAC;gBAChC,CAAC;gBAED,MAAM,UAAU,GAAG,IAAI,CAAC,2BAA2B,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;gBAC7E,IAAI,UAAU,CAAC,eAAe,GAAG,CAAC,EAAE,CAAC;oBACpC,IAAI,CAAC,kBAAkB,CACtB,iBAAiB,iBAAiB,CAAC,4BAA4B,+BAA+B,UAAU,CAAC,eAAe,iBAAiB,UAAU,CAAC,eAAe,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,gDAAgD,EACpO,EAAE,aAAa,EAAE,KAAK,EAAE,CACxB,CAAC;gBACH,CAAC;gBAED,KAAK,MAAM,OAAO,IAAI,UAAU,CAAC,QAAQ,EAAE,CAAC;oBAC3C,IAAI,SAAS,GAAG,CAAC,IAAI,SAAS,GAAG,6BAA6B,KAAK,CAAC,EAAE,CAAC;wBACtE,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;wBACtD,IAAI,UAAU,KAAK,IAAI,CAAC,gBAAgB;4BAAE,OAAO;oBAClD,CAAC;oBACD,SAAS,EAAE,CAAC;oBACZ,0DAA0D;oBAC1D,IAAI,OAAO,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;wBAClC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;wBAC/B,8BAA8B;wBAC9B,KAAK,MAAM,OAAO,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;4BACvC,IAAI,OAAO,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;gCACjC,MAAM,SAAS,GAAG,IAAI,CAAC,4BAA4B,CAClD,OAAO,CAAC,IAAI,EACZ,OAAO,CAAC,EAAE,EACV,OAAO,CAAC,SAAS,EACjB,SAAS,EACT,IAAI,CACJ,CAAC;gCAEF,IAAI,OAAO,CAAC,UAAU,KAAK,SAAS,IAAI,OAAO,CAAC,UAAU,KAAK,OAAO,EAAE,CAAC;oCACxE,IAAI,YAAoB,CAAC;oCACzB,IAAI,OAAO,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;wCACtC,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC;wCAC/C,YAAY;4CACX,YAAY,GAAG,CAAC;gDACf,CAAC,CAAC,iBAAiB,YAAY,iBAAiB,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;gDAC7E,CAAC,CAAC,mBAAmB,CAAC;oCACzB,CAAC;yCAAM,CAAC;wCACP,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,OAAO,CAAC;oCAChD,CAAC;oCACD,SAAS,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;oCAC3F,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;gCACpC,CAAC;qCAAM,CAAC;oCACP,oBAAoB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;gCACjD,CAAC;4BACF,CAAC;wBACF,CAAC;oBACF,CAAC;yBAAM,IAAI,OAAO,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;wBAC1C,gDAAgD;wBAChD,MAAM,SAAS,GAAG,oBAAoB,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;wBAC/D,IAAI,SAAS,EAAE,CAAC;4BACf,SAAS,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;4BAChC,oBAAoB,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;4BAChD,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;wBAC5C,CAAC;oBACF,CAAC;yBAAM,CAAC;wBACP,4CAA4C;wBAC5C,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;oBACzC,CAAC;gBACF,CAAC;gBAED,IAAI,UAAU,KAAK,IAAI,CAAC,gBAAgB;oBAAE,OAAO;gBACjD,oBAAoB,CAAC,QAAQ,GAAG,oBAAoB,CAAC,QAAQ,CAAC;gBAC9D,SAAS,GAAG,IAAI,CAAC;YAClB,CAAC;oBAAS,CAAC;gBACV,MAAM,6BAA6B,GAAG,IAAI,CAAC,uBAAuB,CAAC;gBACnE,MAAM,iCAAiC,GAAG,IAAI,CAAC,2BAA2B,CAAC;gBAC3E,MAAM,sBAAsB,GAAG,IAAI,CAAC,gBAAgB,CAAC;gBACrD,MAAM,oBAAoB,GAAG,IAAI,CAAC,cAAc,CAAC;gBAEjD,IAAI,CAAC,aAAa,GAAG,oBAAoB,CAAC;gBAC1C,IAAI,SAAS,EAAE,CAAC;oBACf,IAAI,CAAC,uBAAuB,GAAG,6BAA6B,CAAC;oBAC7D,IAAI,CAAC,2BAA2B,GAAG,iCAAiC,CAAC;oBACrE,IAAI,CAAC,gBAAgB,GAAG,sBAAsB,CAAC;oBAC/C,IAAI,CAAC,cAAc,GAAG,oBAAoB,CAAC;gBAC5C,CAAC;qBAAM,CAAC;oBACP,IAAI,CAAC,uBAAuB,GAAG,+BAA+B,CAAC;oBAC/D,IAAI,CAAC,2BAA2B,GAAG,mCAAmC,CAAC;oBACvE,IAAI,CAAC,gBAAgB,GAAG,wBAAwB,CAAC;oBACjD,IAAI,CAAC,cAAc,GAAG,sBAAsB,CAAC;gBAC9C,CAAC;YACF,CAAC;YAED,IAAI,SAAS;gBAAE,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC;QACxC,CAAC,CAAC;QAEF,IAAI,CAAC,WAAW,GAAG,CAAC,IAAI,CAAC,WAAW,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAC1E,OAAO,IAAI,CAAC,WAAW,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,qBAAqB,CAAC,OAAO,GAAmC,EAAE;QACvE,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC;YAC/B,IAAI,CAAC,qCAAqC,EAAE,CAAC;YAC7C,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;YAC9B,IAAI,CAAC,8BAA8B,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;YAC7D,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;YACzB,IAAI,CAAC,uBAAuB,EAAE,CAAC;YAC/B,OAAO;QACR,CAAC;QAED,2EAA2E;QAC3E,8EAA8E;QAC9E,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,mBAAmB,EAAE,CAAC;QAC1D,IAAI,CAAC,sCAAsC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC9D,MAAM,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE;YACxC,YAAY,EAAE,IAAI;SAClB,CAAC,CAAC;QACH,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;QAE7B,gDAAgD;QAChD,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,CAAC;QACpD,MAAM,eAAe,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC,MAAM,CAAC;QACjF,IAAI,eAAe,GAAG,CAAC,EAAE,CAAC;YACzB,MAAM,KAAK,GAAG,eAAe,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,eAAe,QAAQ,CAAC;YAC5E,IAAI,CAAC,UAAU,CAAC,qBAAqB,KAAK,EAAE,CAAC,CAAC;QAC/C,CAAC;IACF,CAAC;IAED,KAAK,CAAC,YAAY;QACjB,MAAM,WAAW,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC;QACnD,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;YAC/B,OAAO,WAAW,CAAC;QACpB,CAAC;QAED,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC9B,IAAI,CAAC,eAAe,GAAG,CAAC,UAA+B,EAAE,EAAE;gBAC1D,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC;gBACjC,OAAO,CAAC,UAAU,CAAC,CAAC;YACrB,CAAC,CAAC;QACH,CAAC,CAAC,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,uBAAuB;QACpC,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC5B,IAAI,CAAC,8BAA8B,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;YAC7D,OAAO;QACR,CAAC;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,mBAAmB,EAAE,CAAC;QAC1D,MAAM,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAC1C,CAAC;IAED,4EAA4E;IAC5E,eAAe;IACf,4EAA4E;IAEpE,WAAW;QAClB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,IAAI,GAAG,GAAG,IAAI,CAAC,cAAc,GAAG,GAAG,EAAE,CAAC;YACrC,KAAK,IAAI,CAAC,QAAQ,EAAE,CAAC;QACtB,CAAC;aAAM,CAAC;YACP,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,IAAI,CAAC,cAAc,GAAG,GAAG,CAAC;QAC3B,CAAC;IACF,CAAC;IAEO,WAAW;QAClB,8DAA8D;QAC9D,KAAK,IAAI,CAAC,QAAQ,EAAE,CAAC;IACtB,CAAC;IASO,QAAQ,CAAC,OAAkC;QAClD,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,OAAO,eAAe,CAAC,QAAQ,CAC9B;YACC,IAAI,cAAc;gBACjB,OAAO,IAAI,CAAC,cAAc,CAAC;YAC5B,CAAC;YACD,IAAI,cAAc,CAAC,KAAK;gBACvB,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;YAC7B,CAAC;YACD,IAAI,qBAAqB;gBACxB,OAAO,IAAI,CAAC,qBAAqB,CAAC;YACnC,CAAC;YACD,IAAI,qBAAqB,CAAC,KAAK;gBAC9B,IAAI,CAAC,qBAAqB,GAAG,KAAK,CAAC;YACpC,CAAC;YACD,IAAI,iBAAiB;gBACpB,OAAO,IAAI,CAAC,iBAAiB,CAAC;YAC/B,CAAC;YACD,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,IAAI,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE;YACvB,mBAAmB,EAAE,GAAG,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC,cAAc,CAAC;YACnE,UAAU,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;YACjD,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;YACvC,wBAAwB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,wBAAwB,EAAE;YAC/D,qBAAqB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,qBAAqB,EAAE;YACzD,aAAa,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;SACnD,EACD,OAAO,CACP,CAAC;IACH,CAAC;IAEO,qBAAqB;QAC5B,OAAO,eAAe,CAAC,qBAAqB,CAAC,IAAsD,CAAC,CAAC;IACtG,CAAC;IAEO,aAAa,CAAC,KAAY;QACjC,OAAO,eAAe,CAAC,aAAa,CAAC,IAAsD,EAAE,KAAK,CAAC,CAAC;IACrG,CAAC;IAEO,sBAAsB;QAC7B,OAAO,eAAe,CAAC,sBAAsB,CAAC,IAAsD,CAAC,CAAC;IACvG,CAAC;IAEO,sBAAsB;QAC7B,eAAe,CAAC,sBAAsB,CAAC,IAAsD,CAAC,CAAC;IAChG,CAAC;IAEO,wBAAwB;QAC/B,eAAe,CAAC,wBAAwB,CAAC,IAAsD,CAAC,CAAC;IAClG,CAAC;IAEO,WAAW;QAClB,eAAe,CAAC,WAAW,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,UAAU,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACjG,CAAC;IAEO,KAAK,CAAC,cAAc;QAC3B,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAC/E,IAAI,CAAC,IAAI;YAAE,OAAO;QAElB,yEAAyE;QACzE,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;YAC/B,IAAI,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC;gBACnC,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,CAAC;gBACjC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;gBACxB,IAAI,CAAC;oBACJ,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBACjC,CAAC;wBAAS,CAAC;oBACV,IAAI,CAAC,2BAA2B,EAAE,CAAC;gBACpC,CAAC;YACF,CAAC;iBAAM,CAAC;gBACP,MAAM,MAAM,GAAG,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,CAAC;gBACrD,IAAI,CAAC,sBAAsB,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;YACvD,CAAC;YACD,OAAO;QACR,CAAC;QAED,oEAAoE;QACpE,iGAAiG;QACjG,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;YAC9B,MAAM,MAAM,GAAG,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,CAAC;YACrD,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,CAAC;YACjC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YACxB,IAAI,CAAC;gBACJ,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC;YAC5E,CAAC;oBAAS,CAAC;gBACV,IAAI,CAAC,2BAA2B,EAAE,CAAC;YACpC,CAAC;YACD,IAAI,CAAC,4BAA4B,EAAE,CAAC;YACpC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC;QACzB,CAAC;QACD,yEAAyE;aACpE,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;YAC/B,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACjC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACzB,CAAC;IACF,CAAC;IAEO,aAAa;QACpB,MAAM,QAAQ,GAAG,IAAI,CAAC,6BAA6B,EAAE,CAAC;QACtD,IAAI,QAAQ,KAAK,CAAC,EAAE,CAAC;YACpB,IAAI,CAAC,UAAU,CAAC,+BAA+B,CAAC,CAAC;QAClD,CAAC;aAAM,CAAC;YACP,IAAI,CAAC,UAAU,CAAC,YAAY,QAAQ,kBAAkB,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;QAC5F,CAAC;IACF,CAAC;IAEO,uBAAuB;QAC9B,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACrB,IAAI,CAAC,MAAM,CAAC,WAAW,GAAG,KAAK,CAAC,sBAAsB,EAAE,CAAC;QAC1D,CAAC;aAAM,CAAC;YACP,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,IAAI,KAAK,CAAC;YAClD,IAAI,CAAC,MAAM,CAAC,WAAW,GAAG,KAAK,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;QAC/D,CAAC;QACD,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC;IACzB,CAAC;IAEO,kBAAkB;QACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,CAAC;QACnD,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC5B,IAAI,CAAC,UAAU,CAAC,yCAAyC,CAAC,CAAC;QAC5D,CAAC;aAAM,CAAC;YACP,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;YACzB,IAAI,CAAC,uBAAuB,EAAE,CAAC;YAC/B,IAAI,CAAC,UAAU,CAAC,mBAAmB,QAAQ,EAAE,CAAC,CAAC;QAChD,CAAC;IACF,CAAC;IAEO,KAAK,CAAC,UAAU,CAAC,SAAiC;QACzD,IAAI,CAAC;YACJ,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;YACxD,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBAC1B,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,0BAA0B,CAAC;gBAC1G,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YACtB,CAAC;iBAAM,CAAC;gBACP,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;gBACzB,IAAI,CAAC,uBAAuB,EAAE,CAAC;gBAC/B,MAAM,WAAW,GAChB,MAAM,CAAC,KAAK,CAAC,SAAS,IAAI,MAAM,CAAC,aAAa,KAAK,KAAK,CAAC,CAAC,CAAC,eAAe,MAAM,CAAC,aAAa,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;gBACxG,IAAI,CAAC,UAAU,CAAC,eAAe,MAAM,CAAC,KAAK,CAAC,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,EAAE,GAAG,WAAW,EAAE,CAAC,CAAC;gBACrF,KAAK,IAAI,CAAC,uCAAuC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACjE,CAAC;QACF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,IAAI,CAAC,SAAS,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACxE,CAAC;IACF,CAAC;IAEO,yBAAyB;QAChC,IAAI,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IACjD,CAAC;IAEO,gBAAgB,CAAC,QAAiB;QACzC,IAAI,CAAC,kBAAkB,GAAG,QAAQ,CAAC;QACnC,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,eAAe,EAAE,IAAI,IAAI,CAAC,aAAa,CAAC;QAClF,IAAI,YAAY,CAAC,YAAY,CAAC,EAAE,CAAC;YAChC,YAAY,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QACpC,CAAC;QACD,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;YACjD,IAAI,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;gBACzB,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;YAC7B,CAAC;QACF,CAAC;QACD,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC;IACzB,CAAC;IAEO,KAAK,CAAC,6BAA6B;QAC1C,IAAI,CAAC,iBAAiB,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC;QACjD,IAAI,CAAC,eAAe,CAAC,oBAAoB,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAElE,qCAAqC;QACrC,MAAM,IAAI,CAAC,uBAAuB,EAAE,CAAC;QAErC,qFAAqF;QACrF,IAAI,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACtD,IAAI,CAAC,kBAAkB,CAAC,oBAAoB,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;YACrE,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;YAC7D,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QACtD,CAAC;QAED,IAAI,CAAC,UAAU,CAAC,oBAAoB,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC;IACtF,CAAC;IAEO,kBAAkB;QACzB,OAAO,kBAAkB,CAAC;YACzB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,WAAW,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;SACnD,CAAC,CAAC;IACJ,CAAC;IAEO,iBAAiB,CAAC,QAAgB;QACzC,OAAO,iBAAiB,CACvB;YACC,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,WAAW,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;SACnD,EACD,QAAQ,CACR,CAAC;IACH,CAAC;IAED,4EAA4E;IAC5E,aAAa;IACb,4EAA4E;IAE5E,WAAW;QACV,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC;IACzB,CAAC;IAED,SAAS,CAAC,YAAoB;QAC7B,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3C,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,UAAU,YAAY,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACzF,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3C,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC;IACzB,CAAC;IAED,WAAW,CAAC,cAAsB;QACjC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3C,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,EAAE,YAAY,cAAc,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC/F,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC;IACzB,CAAC;IAED,0BAA0B,CAAC,OAAwB;QAClD,aAAa,CAAC,0BAA0B,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,OAAO,CAAC,CAAC;IAC7E,CAAC;IAED,6BAA6B,CAAC,QAAkB;QAC/C,aAAa,CAAC,6BAA6B,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,QAAQ,CAAC,CAAC;IACjF,CAAC;IAED;;;OAGG;IACK,oBAAoB;QAC3B,OAAO;YACN,QAAQ,EAAE;gBACT,GAAG,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE;gBACrC,GAAG,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC;aAC7F;YACD,QAAQ,EAAE;gBACT,GAAG,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE;gBACrC,GAAG,IAAI,CAAC,OAAO,CAAC,0BAA0B,EAAE;gBAC5C,GAAG,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC;aAChG;SACD,CAAC;IACH,CAAC;IAED;;;OAGG;IACK,cAAc;QACrB,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;QACnE,MAAM,kBAAkB,GAAG,IAAI,CAAC,wBAAwB;aACtD,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,OAAO,CAAC;aACrC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACzB,MAAM,kBAAkB,GAAG,IAAI,CAAC,wBAAwB;aACtD,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,UAAU,CAAC;aACxC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACzB,IAAI,CAAC,wBAAwB,GAAG,EAAE,CAAC;QACnC,OAAO;YACN,QAAQ,EAAE,CAAC,GAAG,QAAQ,EAAE,GAAG,kBAAkB,CAAC;YAC9C,QAAQ,EAAE,CAAC,GAAG,QAAQ,EAAE,GAAG,QAAQ,EAAE,GAAG,kBAAkB,CAAC;SAC3D,CAAC;IACH,CAAC;IAEO,4BAA4B;QACnC,IAAI,CAAC,wBAAwB,CAAC,KAAK,EAAE,CAAC;QACtC,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,qBAAqB;YAAE,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QACtG,MAAM,EAAE,QAAQ,EAAE,gBAAgB,EAAE,QAAQ,EAAE,gBAAgB,EAAE,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC/F,MAAM,aAAa,GAAG,gBAAgB,CAAC,MAAM,CAAC;QAC9C,MAAM,aAAa,GAAG,gBAAgB,CAAC,MAAM,CAAC;QAC9C,MAAM,KAAK,GAAG,aAAa,GAAG,aAAa,CAAC;QAC5C,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YACf,MAAM,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,qBAAqB,CAAC,CAAC;YACjE,MAAM,OAAO,GAAG;gBACf,aAAa,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,aAAa,WAAW,CAAC,CAAC,CAAC,SAAS;gBAC3D,aAAa,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,aAAa,YAAY,CAAC,CAAC,CAAC,SAAS;aAC5D;iBACC,MAAM,CAAC,CAAC,KAAK,EAAmB,EAAE,CAAC,KAAK,KAAK,SAAS,CAAC;iBACvD,IAAI,CAAC,KAAK,CAAC,CAAC;YACd,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC;gBACvB,EAAE,EAAE,gBAAgB;gBACpB,IAAI,EAAE,OAAO;gBACb,KAAK,EAAE,UAAU,KAAK,MAAM,OAAO,MAAM,WAAW,OAAO;aAC3D,CAAC,CAAC;QACJ,CAAC;aAAM,CAAC;YACP,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,gBAAgB,CAAC,CAAC;QAC7C,CAAC;IACF,CAAC;IAEO,6BAA6B,CAAC,OAAmD;QACxF,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QACrD,MAAM,SAAS,GAAG,CAAC,GAAG,QAAQ,EAAE,GAAG,QAAQ,CAAC,CAAC;QAC7C,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,IAAI,CAAC,4BAA4B,EAAE,CAAC;YACpC,IAAI,OAAO,EAAE,KAAK,EAAE,CAAC;gBACpB,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YACpB,CAAC;YACD,OAAO,CAAC,CAAC;QACV,CAAC;QACD,MAAM,UAAU,GAAG,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC1C,MAAM,WAAW,GAAG,OAAO,EAAE,WAAW,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QAClE,MAAM,YAAY,GAAG,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACpF,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QAClC,IAAI,CAAC,4BAA4B,EAAE,CAAC;QACpC,IAAI,OAAO,EAAE,KAAK,EAAE,CAAC;YACpB,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACpB,CAAC;QACD,OAAO,SAAS,CAAC,MAAM,CAAC;IACzB,CAAC;IAEO,sBAAsB,CAAC,IAAY,EAAE,IAA0B,EAAE,MAAuB;QAC/F,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QAC3D,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,CAAC;QACjC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,CAAC,4BAA4B,EAAE,CAAC;QACpC,IAAI,CAAC,UAAU,CAAC,qCAAqC,CAAC,CAAC;IACxD,CAAC;IAEO,kBAAkB,CAAC,IAAY;QACtC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,OAAO,KAAK,CAAC;QAExC,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC;QAErD,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACrC,MAAM,WAAW,GAAG,UAAU,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;QAClF,OAAO,CAAC,CAAC,eAAe,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;IAClD,CAAC;IAEO,oBAAoB,CAAC,OAAiC;QAC7D,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,OAAO,eAAe,CAAC,oBAAoB,CAC1C;YACC,IAAI,wBAAwB;gBAC3B,OAAO,IAAI,CAAC,wBAAwB,CAAC;YACtC,CAAC;YACD,IAAI,wBAAwB,CAAC,KAAK;gBACjC,IAAI,CAAC,wBAAwB,GAAG,KAAK,CAAC;YACvC,CAAC;YACD,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,4BAA4B,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,4BAA4B,EAAE;YACvE,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;YAC/C,kBAAkB,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC;YAC3D,2BAA2B,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,2BAA2B,EAAE;SACrE,EACD,OAAO,CACP,CAAC;IACH,CAAC;IAED,6DAA6D;IACrD,0BAA0B;QACjC,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,qBAAqB,EAAE,CAAC;YACpD,IAAI,CAAC,wBAAwB,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;YACrD,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QACxC,CAAC;QACD,IAAI,CAAC,qBAAqB,GAAG,EAAE,CAAC;IACjC,CAAC;IAED,4EAA4E;IAC5E,YAAY;IACZ,4EAA4E;IAE5E;;;OAGG;IACK,YAAY,CACnB,MAIC;QAED,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1D,CAAC;IAED,mFAAmF;IAC3E,eAAe;QACtB,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,OAAO;YACN,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,eAAe,EAAE,IAAI,CAAC,eAAe;YACrC,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,eAAe,EAAE,IAAI,CAAC,eAAe;YACrC,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,eAAe,EAAE,IAAI,CAAC,eAAe;YACrC,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,IAAI,gBAAgB;gBACnB,OAAO,IAAI,CAAC,gBAAgB,CAAC;YAC9B,CAAC;YACD,IAAI,gBAAgB,CAAC,KAAK;gBACzB,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;YAC/B,CAAC;YACD,YAAY,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;YACnD,UAAU,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;YACjD,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;YAC/C,2BAA2B,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,2BAA2B,EAAE;YACrE,yBAAyB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,yBAAyB,EAAE;YACjE,qBAAqB,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC;YACvE,oBAAoB,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC;YACrE,uBAAuB,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,uBAAuB,CAAC,MAAM,EAAE,KAAK,CAAC;YACvF,0BAA0B,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,0BAA0B,CAAC,KAAK,CAAC;YAC7E,uBAAuB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,uBAAuB,EAAE;YAC7D,4BAA4B,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,4BAA4B,EAAE;YACvE,uCAAuC,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,uCAAuC,CAAC,KAAK,CAAC;YACvG,qBAAqB,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC;YACnE,kBAAkB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,kBAAkB,EAAE;YACnD,QAAQ,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;SAC7C,CAAC;IACH,CAAC;IAEO,wBAAwB;QAC/B,OAAO,IAAI,CAAC,mBAAmB,CAAC,wBAAwB,EAAE,CAAC;IAC5D,CAAC;IAEO,mBAAmB;QAC1B,OAAO,IAAI,CAAC,mBAAmB,CAAC,mBAAmB,EAAE,CAAC;IACvD,CAAC;IAEO,uBAAuB;QAC9B,OAAO,IAAI,CAAC,mBAAmB,CAAC,uBAAuB,EAAE,CAAC;IAC3D,CAAC;IAEO,iCAAiC,CACxC,IAAkB,EAClB,OAAO,GAAsB,EAAE;QAE/B,OAAO,IAAI,CAAC,mBAAmB,CAAC,iCAAiC,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAClF,CAAC;IAEO,6BAA6B;QACpC,OAAO,IAAI,CAAC,mBAAmB,CAAC,6BAA6B,EAAE,CAAC;IACjE,CAAC;IAEO,2BAA2B;QAClC,OAAO,IAAI,CAAC,mBAAmB,CAAC,2BAA2B,EAAE,CAAC;IAC/D,CAAC;IAEO,qBAAqB;QAC5B,OAAO,IAAI,CAAC,mBAAmB,CAAC,qBAAqB,EAAE,CAAC;IACzD,CAAC;IAEO,yBAAyB;QAChC,OAAO,IAAI,CAAC,mBAAmB,CAAC,yBAAyB,EAAE,CAAC;IAC7D,CAAC;IAEO,2BAA2B,CAAC,KAAyB;QAC5D,OAAO,IAAI,CAAC,mBAAmB,CAAC,2BAA2B,CAAC,KAAK,CAAC,CAAC;IACpE,CAAC;IAEO,wBAAwB;QAC/B,OAAO,IAAI,CAAC,WAAW,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,EAAE,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAC/E,CAAC;IAEO,6BAA6B,CAAC,QAGrC;QACA,MAAM,GAAG,GAAG,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAC5C,MAAM,QAAQ,GAAG,uCAAuC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CACpF,WAAW,CAAC,SAAS,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAC3C,CAAC;QACF,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,SAAS,CAAC;QAC5C,OAAO,CACN,QAAQ,CAAC,IAAI,CACZ,CAAC,SAAS,EAAE,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC,CAC9F,IAAI,QAAQ,CAAC,CAAC,CAAC,CAChB,CAAC;IACH,CAAC;IAEO,8BAA8B,CAAC,QAAkC;QACxE,IAAI,CAAC,QAAQ,CAAC,OAAO;YAAE,OAAO,SAAS,CAAC;QACxC,MAAM,GAAG,GAAG,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAC5C,MAAM,QAAQ,GAAG,uCAAuC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CACpF,WAAW,CAAC,SAAS,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAC3C,CAAC;QACF,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,wEAAwE,CAAC;QAC3G,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAC1B,CAAC,SAAS,EAAE,EAAE,CACb,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC;YACxB,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;YACnD,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE,cAAc,CAAC,CAAC,CAChE,CAAC;QACF,IAAI,KAAK;YAAE,OAAO,SAAS,CAAC;QAC5B,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC1B,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC;YAAE,OAAO,iDAAiD,KAAK,EAAE,CAAC;QAC3F,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC;YACtD,OAAO,sDAAsD,KAAK,EAAE,CAAC;QACtE,CAAC;QACD,OAAO,mGAAmG,KAAK,EAAE,CAAC;IACnH,CAAC;IAEO,eAAe,CACtB,MAAc,EACd,KAAK,GAAG,KAAK,EACb,OAAO,GAKH,EAAE;QAEN,OAAO,IAAI,CAAC,mBAAmB,CAAC,eAAe,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;IACzE,CAAC;IAEO,yBAAyB;QAChC,OAAO,IAAI,CAAC,mBAAmB,CAAC,yBAAyB,EAAE,CAAC;IAC7D,CAAC;IAEO,wBAAwB,CAAC,QAAwB;QACxD,IAAI,CAAC,mBAAmB,CAAC,wBAAwB,CAAC,QAAQ,CAAC,CAAC;IAC7D,CAAC;IAEO,mBAAmB;QAC1B,OAAO,IAAI,CAAC,mBAAmB,CAAC,mBAAmB,EAAE,CAAC;IACvD,CAAC;IAEO,wBAAwB,CAAC,QAAwB;QACxD,OAAO,IAAI,CAAC,mBAAmB,CAAC,wBAAwB,CAAC,QAAQ,CAAC,CAAC;IACpE,CAAC;IAEO,qBAAqB;QAC5B,IAAI,CAAC,mBAAmB,CAAC,qBAAqB,EAAE,CAAC;IAClD,CAAC;IAEO,qBAAqB;QAC5B,OAAO,IAAI,CAAC,mBAAmB,CAAC,qBAAqB,EAAE,CAAC;IACzD,CAAC;IAEO,iBAAiB,CAAC,IAAkB,EAAE,KAAK,GAAkB,QAAQ;QAC5E,MAAM,gBAAgB,GAAG,IAAI,CAAC,eAAe,CAAC,oBAAoB,EAAE,CAAC;QACrE,MAAM,MAAM,GAAG,IAAI,CAAC,iCAAiC,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;QAC9E,IAAI,CAAC,eAAe,CAAC,mBAAmB,CAAC,EAAE,GAAG,IAAI,CAAC,eAAe,CAAC,mBAAmB,EAAE,EAAE,IAAI,EAAE,EAAE,KAAK,CAAC,CAAC;QACzG,IAAI,CAAC,eAAe,CAAC,oBAAoB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACzD,IAAI,CAAC,qBAAqB,EAAE,CAAC;IAC9B,CAAC;IAED;;;;;OAKG;IACH,IAAY,YAAY;QACvB,OAAO,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC;IACvC,CAAC;IAEO,sBAAsB,CAAC,OAAe,EAAE,OAAgB;QAC/D,OAAO,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC9D,CAAC;IAEO,uBAAuB;QAC9B,OAAO,IAAI,CAAC,OAAO,CAAC,uBAAuB,EAAE,CAAC;IAC/C,CAAC;IAED,4DAA4D;IACpD,cAAc;QACrB,OAAO;YACN,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,eAAe,EAAE,IAAI,CAAC,eAAe;YACrC,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,sBAAsB,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,sBAAsB,CAAC,OAAO,EAAE,OAAO,CAAC;YAC3F,uBAAuB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,uBAAuB,EAAE;YAC7D,UAAU,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;YACjD,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;YAC/C,YAAY,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;SACnD,CAAC;IACH,CAAC;IAEO,mBAAmB,CAAC,QAAgB;QAC3C,OAAO,kBAAkB,CAAC,mBAAmB,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,QAAQ,CAAC,CAAC;IAChF,CAAC;IAEO,wBAAwB;QAC/B,kBAAkB,CAAC,wBAAwB,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;IACpE,CAAC;IAEO,mBAAmB,CAAC,QAAgB,EAAE,aAA2B;QACxE,OAAO,kBAAkB,CAAC,mBAAmB,CAC5C;YACC,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,eAAe,EAAE,IAAI,CAAC,eAAe;YACrC,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,UAAU,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;YACjD,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;YAC/C,YAAY,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;SACnD,EACD,QAAQ,EACR,aAAa,CACb,CAAC;IACH,CAAC;IAEO,iBAAiB,CAAC,QAAgB,EAAE,IAAiB;QAC5D,kBAAkB,CAAC,iBAAiB,CACnC;YACC,eAAe,EAAE,IAAI,CAAC,eAAe;YACrC,UAAU,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;SACjD,EACD,QAAQ,EACR,IAAI,CACJ,CAAC;IACH,CAAC;IAED,oEAAoE;IAC5D,YAAY;QACnB,OAAO;YACN,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,eAAe,EAAE,IAAI,CAAC,eAAe;YACrC,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,UAAU,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;YACjD,iBAAiB,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,KAAK,CAAC;YACvE,eAAe,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC;YACzF,qBAAqB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,qBAAqB,EAAE;YACzD,6BAA6B,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,6BAA6B,EAAE;YACzE,uBAAuB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,uBAAuB,EAAE;YAC7D,qBAAqB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,qBAAqB,EAAE;YACzD,mBAAmB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,mBAAmB,EAAE;YACrD,yBAAyB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,yBAAyB,EAAE;SACjE,CAAC;IACH,CAAC;IAEO,qBAAqB,CAAC,IAAY;QACzC,gBAAgB,CAAC,qBAAqB,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,IAAI,CAAC,CAAC;IACnE,CAAC;IAEO,sBAAsB,CAAC,IAAY;QAC1C,gBAAgB,CAAC,sBAAsB,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,IAAI,CAAC,CAAC;IACpE,CAAC;IAED,8FAA8F;IACtF,oBAAoB;QAC3B,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,OAAO;YACN,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,eAAe,EAAE,IAAI,CAAC,eAAe;YACrC,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,IAAI,iBAAiB;gBACpB,OAAO,IAAI,CAAC,iBAAiB,CAAC;YAC/B,CAAC;YACD,IAAI,iBAAiB,CAAC,KAAK;gBAC1B,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;YAChC,CAAC;YACD,YAAY,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;YACnD,UAAU,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;YACjD,WAAW,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;YACnD,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;YAC/C,wBAAwB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,wBAAwB,EAAE;YAC/D,yBAAyB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,yBAAyB,EAAE;YACjE,uBAAuB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,uBAAuB,EAAE;YAC7D,uBAAuB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,uBAAuB,EAAE;YAC7D,8BAA8B,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,8BAA8B,CAAC,QAAQ,CAAC;YAC3F,iBAAiB,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,KAAK,CAAC;YACvE,2BAA2B,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,2BAA2B,CAAC,KAAK,CAAC;YAC/E,qBAAqB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,qBAAqB,EAAE;YACzD,wBAAwB,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC;SAC3E,CAAC;IACH,CAAC;IAEO,oBAAoB;QAC3B,oBAAoB,CAAC,oBAAoB,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC;IACxE,CAAC;IAEO,wBAAwB,CAAC,MAAc;QAC9C,OAAO,IAAI,CAAC,WAAW,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC;IAC1D,CAAC;IAEO,qBAAqB,CAAC,WAAoB;QACjD,OAAO,IAAI,CAAC,WAAW,CAAC,qBAAqB,CAAC,WAAW,CAAC,CAAC;IAC5D,CAAC;IAEO,2BAA2B,CAAC,WAAmB;QACtD,OAAO,IAAI,CAAC,WAAW,CAAC,2BAA2B,CAAC,WAAW,CAAC,CAAC;IAClE,CAAC;IAEO,KAAK,CAAC,kBAAkB,CAAC,UAAmB;QACnD,MAAM,YAAY,CAAC,kBAAkB,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,UAAU,CAAC,CAAC;IAC3E,CAAC;IAEO,KAAK,CAAC,kBAAkB;QAC/B,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1C,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAChE,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;QACrC,IAAI,CAAC;YACJ,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,YAAY,EAAE,CAAC;QACxD,CAAC;QAAC,MAAM,CAAC;YACR,OAAO,EAAE,CAAC;QACX,CAAC;IACF,CAAC;IAED,iFAAiF;IACzE,KAAK,CAAC,4BAA4B;QACzC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC/C,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC/D,IAAI,CAAC,kBAAkB,CAAC,yBAAyB,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;IACzE,CAAC;IAEO,KAAK,CAAC,uCAAuC,CACpD,KAAK,GAA2B,IAAI,CAAC,OAAO,CAAC,KAAK;QAElD,IAAI,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE,CAAC,mBAAmB,KAAK,KAAK,EAAE,CAAC;YACtE,OAAO;QACR,CAAC;QACD,IAAI,IAAI,CAAC,iCAAiC,EAAE,CAAC;YAC5C,OAAO;QACR,CAAC;QACD,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,QAAQ,KAAK,WAAW,EAAE,CAAC;YAC9C,OAAO;QACR,CAAC;QAED,MAAM,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,WAAW,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACjF,IAAI,gBAAgB,EAAE,IAAI,KAAK,OAAO,EAAE,CAAC;YACxC,IAAI,CAAC,iCAAiC,GAAG,IAAI,CAAC;YAC9C,IAAI,CAAC,WAAW,CAAC,mCAAmC,CAAC,CAAC;YACtD,OAAO;QACR,CAAC;QAED,IAAI,CAAC;YACJ,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,oBAAoB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YACrF,IAAI,CAAC,8BAA8B,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC7C,OAAO;YACR,CAAC;YACD,IAAI,CAAC,iCAAiC,GAAG,IAAI,CAAC;YAC9C,IAAI,CAAC,WAAW,CAAC,mCAAmC,CAAC,CAAC;QACvD,CAAC;QAAC,MAAM,CAAC;YACR,uDAAuD;QACxD,CAAC;IACF,CAAC;IAEO,KAAK,CAAC,iBAAiB,CAAC,kBAA2B;QAC1D,MAAM,YAAY,CAAC,iBAAiB,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,kBAAkB,CAAC,CAAC;IAClF,CAAC;IAEO,KAAK,CAAC,kBAAkB;QAC/B,MAAM,YAAY,CAAC,kBAAkB,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;IAC/D,CAAC;IAEO,uBAAuB,CAAC,cAAuB;QACtD,YAAY,CAAC,uBAAuB,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,cAAc,CAAC,CAAC;IAC9E,CAAC;IAEO,KAAK,CAAC,kBAAkB,CAAC,cAAuB;QACvD,MAAM,YAAY,CAAC,kBAAkB,CACpC;YACC,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,yBAAyB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,yBAAyB,EAAE;YACjE,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,UAAU,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;YACjD,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;YAC/C,EAAE,EAAE,IAAI,CAAC,EAAE;SACX,EACD,cAAc,CACd,CAAC;IACH,CAAC;IAEO,gBAAgB,CAAC,iBAA0B;QAClD,YAAY,CAAC,gBAAgB,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,iBAAiB,CAAC,CAAC;IAC1E,CAAC;IAEO,iBAAiB;QACxB,YAAY,CAAC,iBAAiB,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;IACxD,CAAC;IAEO,mBAAmB;QAC1B,YAAY,CAAC,mBAAmB,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;IAC1D,CAAC;IAEO,mBAAmB,CAC1B,WAAmB,EACnB,OAAiE;QAEjE,OAAO,YAAY,CAAC,mBAAmB,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;IACvF,CAAC;IAED,4EAA4E;IAC5E,mBAAmB;IACnB,4EAA4E;IAEpE,KAAK,CAAC,mBAAmB;QAChC,MAAM,IAAI,CAAC,6BAA6B,EAAE,CAAC;IAC5C,CAAC;IAED,gFAAgF;IACxE,KAAK,CAAC,6BAA6B;QAC1C,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;YAC9B,IAAI,CAAC,WAAW,CAAC,2DAA2D,CAAC,CAAC;YAC9E,OAAO,KAAK,CAAC;QACd,CAAC;QACD,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;YAC/B,IAAI,CAAC,WAAW,CAAC,iDAAiD,CAAC,CAAC;YACpE,OAAO,KAAK,CAAC;QACd,CAAC;QAED,IAAI,CAAC,eAAe,CAAC,gBAAgB,EAAE,CAAC;QAExC,MAAM,SAAS,GAAG,IAAI,SAAS,EAAE,CAAC;QAClC,MAAM,WAAW,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QACzD,SAAS,CAAC,QAAQ,CAAC,IAAI,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC;QACnD,SAAS,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAClC,SAAS,CAAC,QAAQ,CACjB,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,+DAA+D,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAClG,CAAC;QACF,SAAS,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAClC,SAAS,CAAC,QAAQ,CAAC,IAAI,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC;QAEnD,MAAM,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC;QACnC,IAAI,eAAe,GAAG,IAAI,CAAC;QAC3B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE;YAChC,MAAM,EAAE,MAAM;YACd,SAAS,EAAE,GAAG,EAAE;gBACf,eAAe,GAAG,KAAK,CAAC;YACzB,CAAC;SACD,CAAC,CAAC;QACH,4EAA4E;QAC5E,2EAA2E;QAC3E,iBAAiB;QACjB,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;QAEtD,MAAM,gBAAgB,GAAG,CAAC,MAAiB,EAAE,EAAE;YAC9C,IAAI,CAAC,eAAe;gBAAE,OAAO;YAC7B,eAAe,GAAG,KAAK,CAAC;YACxB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC/B,CAAC,CAAC;QAEF,IAAI,CAAC;YACJ,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YAC5B,uBAAuB,CAAC,IAAI,CAAC,eAAe,CAAC,oBAAoB,EAAE,CAAC,CAAC;YACrE,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC;YAC1B,IAAI,CAAC,4BAA4B,EAAE,CAAC;YACpC,IAAI,CAAC,EAAE,CAAC,qBAAqB,CAAC,IAAI,CAAC,eAAe,CAAC,qBAAqB,EAAE,CAAC,CAAC;YAC5E,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,eAAe,CAAC,gBAAgB,EAAE,CAAC,CAAC;YAClE,IAAI,CAAC,yBAAyB,EAAE,CAAC;YACjC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC;YAC5C,IAAI,CAAC,eAAe,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC;YACrD,MAAM,IAAI,CAAC,uBAAuB,EAAE,CAAC;YACrC,gBAAgB,CAAC,IAAI,CAAC,MAAmB,CAAC,CAAC;YAC3C,IAAI,CAAC,mBAAmB,CAAC;gBACxB,KAAK,EAAE,KAAK;gBACZ,wBAAwB,EAAE,IAAI;aAC9B,CAAC,CAAC;YACH,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;YAC9D,IAAI,eAAe,EAAE,CAAC;gBACrB,IAAI,CAAC,SAAS,CAAC,sBAAsB,eAAe,EAAE,CAAC,CAAC;YACzD,CAAC;YACD,IAAI,CAAC,UAAU,CAAC,2DAA2D,CAAC,CAAC;YAC7E,OAAO,IAAI,CAAC;QACb,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,gBAAgB,CAAC,cAA2B,CAAC,CAAC;YAC9C,IAAI,CAAC,SAAS,CAAC,kBAAkB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAC3F,OAAO,KAAK,CAAC;QACd,CAAC;IACF,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,+BAA+B;QAC5C,IAAI,CAAC;YACJ,uCAAuC;YACvC,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC;YAC1B,IAAI,CAAC,yBAAyB,EAAE,CAAC;YAEjC,IAAI,CAAC,4BAA4B,EAAE,CAAC;YAEpC,8BAA8B;YAC9B,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC;YAC5C,IAAI,CAAC,eAAe,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC;YAErD,sBAAsB;YACtB,MAAM,IAAI,CAAC,uBAAuB,EAAE,CAAC;YACrC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;YACzB,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC;QACzB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,IAAI,CAAC,SAAS,CAAC,6BAA6B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACvG,CAAC;IACF,CAAC;IAEO,mBAAmB,CAAC,IAAY;QACvC,OAAO,iBAAiB,CAAC,mBAAmB,CAC3C;YACC,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,sBAAsB,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,EAAE,OAAO,CAAC;YAC/E,UAAU,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;YACjD,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;SAC/C,EACD,IAAI,CACJ,CAAC;IACH,CAAC;IAEO,sBAAsB,CAAC,IAAY,EAAE,OAA8B;QAC1E,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;YACtB,OAAO,SAAS,CAAC;QAClB,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,OAAO,GAAG,CAAC,EAAE,CAAC;YACrC,OAAO,SAAS,CAAC;QAClB,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;QAC9D,IAAI,CAAC,UAAU,EAAE,CAAC;YACjB,OAAO,SAAS,CAAC;QAClB,CAAC;QAED,MAAM,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;QAChC,IAAI,SAAS,KAAK,GAAG,IAAI,SAAS,KAAK,GAAG,EAAE,CAAC;YAC5C,MAAM,iBAAiB,GAAG,UAAU,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;YAC3D,IAAI,iBAAiB,GAAG,CAAC,EAAE,CAAC;gBAC3B,OAAO,SAAS,CAAC;YAClB,CAAC;YACD,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAC;QAC/C,CAAC;QAED,MAAM,oBAAoB,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACrD,IAAI,oBAAoB,GAAG,CAAC,EAAE,CAAC;YAC9B,OAAO,UAAU,CAAC;QACnB,CAAC;QACD,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,oBAAoB,CAAC,CAAC;IAClD,CAAC;IAEO,mBAAmB,CAAC,IAAY;QACvC,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,OAAO,iBAAiB,CAAC,mBAAmB,CAC3C;YACC,sBAAsB,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,EAAE,OAAO,CAAC;YAC/E,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;YAC/C,UAAU,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;YACjD,eAAe,EAAE,IAAI,CAAC,eAAe;YACrC,IAAI,gBAAgB;gBACnB,OAAO,IAAI,CAAC,gBAAgB,CAAC;YAC9B,CAAC;YACD,IAAI,gBAAgB,CAAC,KAAK;gBACzB,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;YAC/B,CAAC;YACD,eAAe,EAAE,IAAI,CAAC,eAAe;YACrC,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,yBAAyB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,yBAAyB,EAAE;YACjE,0BAA0B,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,0BAA0B,CAAC,KAAK,CAAC;YAC7E,uBAAuB,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,uBAAuB,CAAC,MAAM,EAAE,KAAK,CAAC;SACvF,EACD,IAAI,CACJ,CAAC;IACH,CAAC;IAEO,kBAAkB;QACzB,OAAO,iBAAiB,CAAC,kBAAkB,CAAC;YAC3C,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;YAC/C,UAAU,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;YACjD,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,MAAM,EAAE,IAAI,CAAC,MAAM;SACnB,CAAC,CAAC;IACJ,CAAC;IAEO,iBAAiB;QACxB,OAAO,iBAAiB,CAAC,iBAAiB,CAAC;YAC1C,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;YAC/C,UAAU,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;SACjD,CAAC,CAAC;IACJ,CAAC;IAEO,iBAAiB,CAAC,IAAY;QACrC,iBAAiB,CAAC,iBAAiB,CAClC;YACC,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,WAAW,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;YACnD,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,EAAE,EAAE,IAAI,CAAC,EAAE;SACX,EACD,IAAI,CACJ,CAAC;IACH,CAAC;IAEO,wBAAwB,CAC/B,IAAY;QAIZ,MAAM,KAAK,GAAG,wFAAwF,CAAC;QACvG,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAChD,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;QACpC,CAAC;QAED,MAAM,mBAAmB,GAAG,CAC3B,KAAyB,EACzB,QAAgB,EAChB,GAAW,EACX,GAAW,EACU,EAAE;YACvB,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,QAAQ,CAAC;YAC/D,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;gBAAE,OAAO,SAAS,CAAC;YAC3C,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YAC1C,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,GAAG,IAAI,MAAM,GAAG,GAAG;gBAAE,OAAO,SAAS,CAAC;YACpF,OAAO,MAAM,CAAC;QACf,CAAC,CAAC;QAEF,MAAM,QAAQ,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,+BAA+B,EAAE,CAAC,EAAE,2BAA2B,CAAC,CAAC;QAChH,MAAM,aAAa,GAAG,mBAAmB,CACxC,KAAK,CAAC,CAAC,CAAC,EACR,qCAAqC,EACrC,CAAC,EACD,iCAAiC,CACjC,CAAC;QACF,MAAM,mBAAmB,GAAG,mBAAmB,CAC9C,KAAK,CAAC,CAAC,CAAC,EACR,4CAA4C,EAC5C,CAAC,EACD,wCAAwC,CACxC,CAAC;QACF,IAAI,QAAQ,KAAK,SAAS,IAAI,aAAa,KAAK,SAAS,IAAI,mBAAmB,KAAK,SAAS,EAAE,CAAC;YAChG,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;QACpC,CAAC;QACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,aAAa,EAAE,mBAAmB,EAAE,CAAC;IACnE,CAAC;IAEO,KAAK,CAAC,iBAAiB,CAAC,IAAY;QAC3C,IAAI,aAAiC,CAAC;QACtC,MAAM,YAAY,CAAC,iBAAiB,CACnC;YACC,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,iBAAiB,EAAE,CAAC,gBAAgB,EAAE,EAAE,CACvC,IAAI,CAAC,eAAe,CAAC,mBAAmB,CAAC,qBAAqB,EAAE,gBAAgB,CAAC;YAClF,gBAAgB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,eAAe,EAAE,mBAAmB,EAAE,CAAC,aAAa,IAAI,EAAE;YACvF,UAAU,EAAE,CAAC,OAAO,EAAE,EAAE;gBACvB,aAAa,GAAG,OAAO,CAAC;YACzB,CAAC;YACD,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;YAC/C,2BAA2B,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,2BAA2B,EAAE;SACrE,EACD,IAAI,CACJ,CAAC;QACF,IAAI,CAAC,mBAAmB,EAAE,EAAE,CAAC;QAC7B,IAAI,aAAa;YAAE,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;IAC1E,CAAC;IAEO,iBAAiB,CAAC,IAAY;QACrC,IAAI,aAAiC,CAAC;QACtC,YAAY,CAAC,iBAAiB,CAC7B;YACC,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,UAAU,EAAE,CAAC,OAAO,EAAE,EAAE;gBACvB,aAAa,GAAG,OAAO,CAAC;YACzB,CAAC;YACD,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;SAC/C,EACD,IAAI,CACJ,CAAC;QACF,IAAI,CAAC,mBAAmB,EAAE,EAAE,CAAC;QAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,yBAAyB,EAAE,CAAC;QACvD,IAAI,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,aAAa,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC,IAAI,aAAa,EAAE,CAAC;YAClG,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;QACvD,CAAC;IACF,CAAC;IAEO,KAAK,CAAC,yBAAyB,CAAC,IAAY;QACnD,MAAM,YAAY,CAAC,yBAAyB,CAC3C;YACC,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,wBAAwB,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC;YACjE,UAAU,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,OAAO,CAAC;YAC7D,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;YAC/C,2BAA2B,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,2BAA2B,EAAE;SACrE,EACD,IAAI,CACJ,CAAC;QACF,IAAI,CAAC,mBAAmB,EAAE,EAAE,CAAC;IAC9B,CAAC;IAEO,oBAAoB;QAC3B,YAAY,CAAC,oBAAoB,CAAC;YACjC,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,EAAE,EAAE,IAAI,CAAC,EAAE;SACX,CAAC,CAAC;IACJ,CAAC;IAEO,kBAAkB;QACzB,cAAc,CAAC,kBAAkB,CAAC;YACjC,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,2BAA2B,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,2BAA2B,EAAE;SACrE,CAAC,CAAC;IACJ,CAAC;IAEO,sBAAsB;QAC7B,aAAa,CAAC,sBAAsB,CAAC;YACpC,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,YAAY,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;YACnD,UAAU,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;YACjD,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;YAC/C,eAAe,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,kBAAkB,EAAE;SAChD,CAAC,CAAC;IACJ,CAAC;IAEO,sBAAsB;QAC7B,cAAc,CAAC,sBAAsB,CAAC;YACrC,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,4BAA4B,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,4BAA4B,EAAE;SACvE,CAAC,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,gBAAgB,CAAC,MAAqB;QAC7C,OAAO,cAAc,CAAC,MAAM,CAAC,CAAC;IAC/B,CAAC;IAED;;OAEG;IACK,mBAAmB,CAAC,MAAkB;QAC7C,OAAO,cAAc,CAAC,MAAM,CAAC,CAAC;IAC/B,CAAC;IAEO,oBAAoB;QAC3B,cAAc,CAAC,oBAAoB,CAAC;YACnC,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,4BAA4B,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,4BAA4B,EAAE;YACvE,gBAAgB,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC;YAC3D,mBAAmB,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC;SACjE,CAAC,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,kBAAkB,CAAC,cAAuB;QACvD,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC3B,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC;YAC7B,IAAI,CAAC,gBAAgB,GAAG,SAAS,CAAC;QACnC,CAAC;QACD,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;QAC7B,IAAI,CAAC;YACJ,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC;YACnD,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;gBACtB,OAAO;YACR,CAAC;YACD,IAAI,CAAC,yBAAyB,EAAE,CAAC;YACjC,IAAI,cAAc,EAAE,CAAC;gBACpB,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;YAC7C,CAAC;YACD,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YAC3C,MAAM,KAAK,GAAG,cAAc,CAAC,CAAC,CAAC,0BAA0B,cAAc,EAAE,CAAC,CAAC,CAAC,uBAAuB,CAAC;YACpG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAC5E,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC;QACzB,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACzB,IAAI,IAAI,CAAC,qCAAqC,CAAC,KAAK,CAAC;gBAAE,OAAO;YAC9D,MAAM,IAAI,CAAC,uBAAuB,CAAC,0BAA0B,EAAE,KAAK,CAAC,CAAC;QACvE,CAAC;IACF,CAAC;IAEO,wBAAwB,CAC/B,GAAW,EACX,IAAY,EACZ,KAAc,EACd,KAAiD;QAEjD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,OAAO;QAEhC,MAAM,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7D,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAExC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YAE7C,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;gBACzB,IAAI,CAAC,wBAAwB,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;YAChE,CAAC;iBAAM,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;gBAC3B,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;oBACvC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAC9B,CAAC;qBAAM,CAAC;oBACP,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;oBACnC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAChC,CAAC;YACF,CAAC;QACF,CAAC;IACF,CAAC;IAEO,6BAA6B,CAAC,UAAkB;QACvD,OAAO,qBAAqB,CAAC,6BAA6B,CACzD;YACC,eAAe,EAAE,IAAI,CAAC,eAAe;YACrC,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;YAC/C,UAAU,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;YACjD,YAAY,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;YACnD,mBAAmB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,mBAAmB,EAAE;YACrD,wBAAwB,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,CACrD,IAAI,CAAC,wBAAwB,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC;SACvD,EACD,UAAU,CACV,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACK,mBAAmB,CAAC,IAAY;QACvC,qBAAqB,CAAC,mBAAmB,CACxC;YACC,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,UAAU,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;SACjD,EACD,IAAI,CACJ,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,yBAAyB,CAAC,OAAgB;QACvD,MAAM,YAAY,CAAC,yBAAyB,CAC3C;YACC,eAAe,EAAE,IAAI,CAAC,eAAe;YACrC,UAAU,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;YACjD,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;SAC/C,EACD,OAAO,CACP,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,0BAA0B,CAAC,OAAe;QACvD,MAAM,YAAY,CAAC,0BAA0B,CAC5C;YACC,eAAe,EAAE,IAAI,CAAC,eAAe;YACrC,UAAU,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;YACjD,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;YAC/C,YAAY,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;YACnD,mBAAmB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,6BAA6B,EAAE;SAC/D,EACD,OAAO,CACP,CAAC;IACH,CAAC;IAEO,kBAAkB;QACzB,cAAc,CAAC,kBAAkB,CAAC;YACjC,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,EAAE,EAAE,IAAI,CAAC,EAAE;SACX,CAAC,CAAC;IACJ,CAAC;IAEO,iBAAiB;QACxB,cAAc,CAAC,iBAAiB,CAAC,EAAE,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;IACtF,CAAC;IAEO,oBAAoB;QAC3B,cAAc,CAAC,oBAAoB,CAAC,EAAE,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;IACzF,CAAC;IAEO,qBAAqB,CAAC,KAAuC;QACpE,cAAc,CAAC,qBAAqB,CAAC,EAAE,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;IACjG,CAAC;IAEO,iBAAiB,CAAC,OAAe,EAAE,kBAAkB,GAAG,KAAK;QACpE,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,OAAO,qBAAqB,CAAC,iBAAiB,CAC7C;YACC,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,wBAAwB,EAAE,IAAI,CAAC,wBAAwB;YACvD,qBAAqB,EAAE,IAAI,CAAC,qBAAqB;YACjD,IAAI,aAAa;gBAChB,OAAO,IAAI,CAAC,aAAa,CAAC;YAC3B,CAAC;YACD,IAAI,aAAa,CAAC,KAAK;gBACtB,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;YAC5B,CAAC;YACD,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;SAC/C,EACD,OAAO,EACP,kBAAkB,CAClB,CAAC;IACH,CAAC;IAEO,oBAAoB,CAAC,kBAA2B;QACvD,OAAO,qBAAqB,CAAC,oBAAoB,CAChD;YACC,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,WAAW,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;YACnD,OAAO,EAAE,IAAI,CAAC,OAAO;SACrB,EACD,kBAAkB,CAClB,CAAC;IACH,CAAC;IAED,IAAI;QACH,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAChC,IAAI,IAAI,CAAC,eAAe,CAAC,uBAAuB,EAAE,EAAE,CAAC;YACpD,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QACrC,CAAC;QACD,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC3B,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC;YAC7B,IAAI,CAAC,gBAAgB,GAAG,SAAS,CAAC;QACnC,CAAC;QACD,IAAI,CAAC,WAAW,CAAC,kBAAkB,EAAE,CAAC;QACtC,IAAI,CAAC,eAAe,CAAC,gBAAgB,EAAE,CAAC;QACxC,IAAI,CAAC,eAAe,CAAC,gBAAgB,EAAE,CAAC;QACxC,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;QAC3B,IAAI,CAAC,YAAY,EAAE,OAAO,EAAE,CAAC;QAC7B,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACtB,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,CAAC;QAClC,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACtB,IAAI,CAAC,WAAW,EAAE,CAAC;QACpB,CAAC;QACD,IAAI,IAAI,CAAC,4BAA4B,EAAE,CAAC;YACvC,IAAI,CAAC,4BAA4B,EAAE,CAAC;QACrC,CAAC;QACD,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACxB,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;YACf,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;QAC5B,CAAC;IACF,CAAC;CACD","sourcesContent":["/**\n * Interactive mode for the coding agent.\n * Handles TUI rendering and user interaction, delegating business logic to AgentSession.\n */\n\nimport * as fs from \"node:fs\";\nimport * as path from \"node:path\";\nimport { type AgentMessage, getToolCallRepairInfo, type ToolCallRepairInfo } from \"@caupulican/pi-agent-core\";\nimport type { SessionContext, SessionManager, TruncationResult } from \"@caupulican/pi-agent-core/node\";\nimport type { AssistantMessage, ImageContent, Message, Model } from \"@caupulican/pi-ai\";\nimport type { AutocompleteProvider, EditorComponent, Keybinding, MarkdownTheme, SelectItem } from \"@caupulican/pi-tui\";\nimport {\n\ttype Component,\n\tContainer,\n\tLoader,\n\ttype LoaderIndicatorOptions,\n\tProcessTerminal,\n\tSpacer,\n\tsetKeybindings,\n\tText,\n\tTUI,\n} from \"@caupulican/pi-tui\";\nimport { APP_NAME, APP_TITLE, getAgentDir, VERSION } from \"../../config.ts\";\nimport { type AgentSession, type AgentSessionEvent, parseSkillBlock } from \"../../core/agent-session.ts\";\nimport type { AgentSessionRuntime } from \"../../core/agent-session-runtime.ts\";\nimport type { AutocompleteProviderFactory, ExtensionCommandContext } from \"../../core/extensions/index.ts\";\nimport { FooterDataProvider } from \"../../core/footer-data-provider.ts\";\nimport {\n\tDEFAULT_GOAL_CONTINUE_MAX_STALL_TURNS,\n\tDEFAULT_GOAL_CONTINUE_MAX_TURNS,\n\tDEFAULT_GOAL_CONTINUE_MAX_WALL_CLOCK_MINUTES,\n\tMAX_GOAL_CONTINUE_MAX_STALL_TURNS,\n\tMAX_GOAL_CONTINUE_MAX_TURNS,\n\tMAX_GOAL_CONTINUE_MAX_WALL_CLOCK_MINUTES,\n} from \"../../core/goals/goal-continuation-defaults.ts\";\nimport { configureHttpDispatcher } from \"../../core/http-dispatcher.ts\";\nimport { type AppKeybinding, KeybindingsManager } from \"../../core/keybindings.ts\";\nimport type { PrismLlamaCppRuntime } from \"../../core/models/llamacpp-runtime.ts\";\nimport type { OllamaRuntime, TransformersRuntime } from \"../../core/models/local-runtime.ts\";\nimport { formatMissingSessionCwdPrompt, type MissingSessionCwdError } from \"../../core/session-cwd.ts\";\nimport { SessionImageStore } from \"../../core/session-image-store.ts\";\nimport type {\n\tAutoLearnSettings,\n\tAutonomyMode,\n\tSelfModificationSettings,\n\tSettingsScope,\n} from \"../../core/settings-manager.ts\";\nimport { collectSelfModificationSourceCandidates } from \"../../core/system-prompt-builder.ts\";\nimport { isRecordObject } from \"../../core/util/value-guards.ts\";\nimport { resolvePath } from \"../../utils/paths.ts\";\nimport { ensureTool } from \"../../utils/tools-manager.ts\";\nimport { checkForNewPiVersion, type LatestPiRelease } from \"../../utils/version-check.ts\";\nimport { AuthDialogsController } from \"./auth-dialogs-controller.ts\";\nimport { AutoLearnController, type AutoLearnState } from \"./auto-learn-controller.ts\";\nimport * as autocompleteProvider from \"./autocomplete-provider.ts\";\nimport * as autonomyCommands from \"./autonomy-commands.ts\";\nimport * as clipboardInput from \"./clipboard-input.ts\";\nimport * as compactionQueue from \"./compaction-queue.ts\";\nimport { ActivityLaneComponent, type ActivityLaneKind } from \"./components/activity-lane.ts\";\nimport { AssistantMessageComponent } from \"./components/assistant-message.ts\";\nimport { BashExecutionComponent } from \"./components/bash-execution.ts\";\nimport { BranchSummaryMessageComponent } from \"./components/branch-summary-message.ts\";\nimport { CompactionSummaryMessageComponent } from \"./components/compaction-summary-message.ts\";\nimport type { CountdownTimer } from \"./components/countdown-timer.ts\";\nimport { CustomEditor } from \"./components/custom-editor.ts\";\nimport { CustomMessageComponent } from \"./components/custom-message.ts\";\nimport { DynamicBorder } from \"./components/dynamic-border.ts\";\nimport { ExpandableText, isExpandable } from \"./components/expandable-text.ts\";\nimport type { FitnessRole } from \"./components/fitness-role-selector.ts\";\nimport { FooterComponent } from \"./components/footer.ts\";\nimport { formatKeyText, keyDisplayText, keyHint, keyText, rawKeyHint } from \"./components/keybinding-hints.ts\";\nimport { SkillInvocationMessageComponent } from \"./components/skill-invocation-message.ts\";\nimport { ToolExecutionComponent } from \"./components/tool-execution.ts\";\nimport { ToolGroupComponent } from \"./components/tool-group.ts\";\nimport {\n\tgetToolPanelActionKey,\n\tshouldReuseToolPanelInPlace,\n\tToolPanelRegistry,\n} from \"./components/tool-panel-registry.ts\";\nimport { TranscriptPager } from \"./components/transcript-pager.ts\";\nimport { UserMessageComponent } from \"./components/user-message.ts\";\nimport * as configBackup from \"./config-backup.ts\";\nimport { EditorOverlayHost } from \"./editor-overlay-host.ts\";\nimport { ExtensionUiHost } from \"./extension-ui-host.ts\";\nimport { openEditorForPath, openExternalEditor } from \"./external-editor.ts\";\nimport * as historyReloadMath from \"./history-reload-math.ts\";\nimport { handleInteractiveEvent, type InteractiveEventHost } from \"./interactive-event-controller.ts\";\nimport * as keyHandlers from \"./key-handlers.ts\";\nimport { type LoadedResourcesViewOptions, renderLoadedResources } from \"./loaded-resources-view.ts\";\nimport * as localModelCommands from \"./local-model-commands.ts\";\nimport { ProfileMenuController } from \"./profile-menu-controller.ts\";\nimport * as reportCommands from \"./report-commands.ts\";\nimport * as resourceShellCommands from \"./resource-shell-commands.ts\";\nimport * as sessionFlows from \"./session-flow-commands.ts\";\nimport * as sessionIoCommands from \"./session-io-commands.ts\";\nimport { handleNonFatalSessionReplacementError } from \"./session-replacement-errors.ts\";\nimport * as settingsSelectorFlow from \"./settings-selector-flow.ts\";\nimport * as signalLifecycle from \"./signal-lifecycle.ts\";\nimport * as startupChecks from \"./startup-checks.ts\";\nimport {\n\tgetEditorTheme,\n\tgetMarkdownTheme,\n\tinitTheme,\n\tonThemeChange,\n\tsetRegisteredThemes,\n\tsetTheme,\n\tstopThemeWatcher,\n\ttheme,\n} from \"./theme/theme.ts\";\nimport * as usageCommands from \"./usage-commands.ts\";\n\nconst TUI_HISTORY_RELOAD_CHUNK_SIZE = 20;\nconst TUI_LIVE_HISTORY_MAX_COMPONENTS = 260;\nconst TUI_LIVE_HISTORY_TRIM_TO_COMPONENTS = 220;\nconst STREAMING_UI_UPDATE_INTERVAL_MS = 80;\n\ntype UserInputSubmission = {\n\ttext: string;\n\timages?: ImageContent[];\n};\n\ntype CompactionQueuedMessage = {\n\ttext: string;\n\tmode: \"steer\" | \"followUp\";\n\timages?: ImageContent[];\n};\n\nconst ANTHROPIC_SUBSCRIPTION_AUTH_WARNING =\n\t\"Anthropic subscription auth is active. Third-party harness usage draws from extra usage and is billed per token, not your Claude plan limits. Manage extra usage at https://claude.ai/settings/usage.\";\n\nfunction isAnthropicSubscriptionAuthKey(apiKey: string | undefined): boolean {\n\treturn typeof apiKey === \"string\" && apiKey.startsWith(\"sk-ant-oat\");\n}\n\nfunction quoteIfNeeded(value: string): string {\n\tif (value.length > 0 && !/[^a-zA-Z0-9_\\-./~:@]/.test(value)) {\n\t\treturn value;\n\t}\n\treturn `'${value.replace(/'/g, `'\\\\''`)}'`;\n}\n\nexport function formatResumeCommand(sessionManager: SessionManager): string | undefined {\n\tif (!process.stdout.isTTY) return undefined;\n\tif (!sessionManager.isPersisted()) return undefined;\n\n\tconst sessionFile = sessionManager.getSessionFile();\n\tif (!sessionFile || !fs.existsSync(sessionFile)) return undefined;\n\n\tconst args = [APP_NAME];\n\tif (!sessionManager.usesDefaultSessionDir()) {\n\t\targs.push(\"--session-dir\", quoteIfNeeded(sessionManager.getSessionDir()));\n\t}\n\targs.push(\"--session\", sessionManager.getSessionId());\n\treturn args.join(\" \");\n}\n\n/**\n * Options for InteractiveMode initialization.\n */\nexport interface InteractiveModeOptions {\n\t/** Providers that were migrated to auth.json (shows warning) */\n\tmigratedProviders?: string[];\n\t/** Warning message if session model couldn't be restored */\n\tmodelFallbackMessage?: string;\n\t/** Initial message to send on startup (can include @file content) */\n\tinitialMessage?: string;\n\t/** Images to attach to the initial message */\n\tinitialImages?: ImageContent[];\n\t/** Additional messages to send after the initial message */\n\tinitialMessages?: string[];\n\t/** Force verbose startup (overrides quietStartup setting) */\n\tverbose?: boolean;\n\t/** Whether a human owns this terminal. False for unattended worker panes. */\n\thasHumanAudience?: boolean;\n}\n\nexport class InteractiveMode {\n\tprivate runtimeHost: AgentSessionRuntime;\n\tprivate ui: TUI;\n\tprivate chatContainer: Container;\n\tprivate pendingMessagesContainer: Container;\n\tprivate statusContainer: Container;\n\tprivate defaultEditor: CustomEditor;\n\tprivate editor: EditorComponent;\n\tprivate autocompleteProvider: AutocompleteProvider | undefined;\n\tprivate autocompleteProviderWrappers: AutocompleteProviderFactory[] = [];\n\tprivate fdPath: string | undefined;\n\tprivate editorContainer: Container;\n\tprivate overlayHost: EditorOverlayHost;\n\tprivate footer: FooterComponent;\n\tprivate footerDataProvider: FooterDataProvider;\n\tprivate autoLearnController: AutoLearnController;\n\tprivate profileMenu: ProfileMenuController;\n\tprivate authDialogs: AuthDialogsController;\n\tprivate extensionUiHost: ExtensionUiHost;\n\t// Stored so the same manager can be injected into custom editors, selectors, and extension UI.\n\tprivate keybindings: KeybindingsManager;\n\tprivate version: string;\n\tprivate isInitialized = false;\n\tprivate onInputCallback?: (submission: UserInputSubmission) => void;\n\tprivate pendingUserInputs: UserInputSubmission[] = [];\n\tprivate readonly clipboardQueue: clipboardInput.ClipboardQueueState = {\n\t\tpendingClipboardImages: [],\n\t\tclipboardImageCounter: 0,\n\t};\n\tprivate clipboardImageStore: SessionImageStore | undefined;\n\tprivate loadingAnimation: Loader | undefined = undefined;\n\tprivate workingMessage: string | undefined = undefined;\n\tprivate workingVisible = true;\n\tprivate workingIndicatorOptions: LoaderIndicatorOptions | undefined = undefined;\n\tprivate readonly defaultWorkingMessage = \"Working...\";\n\tprivate readonly defaultHiddenThinkingLabel = \"Thinking...\";\n\tprivate hiddenThinkingLabel = this.defaultHiddenThinkingLabel;\n\n\tprivate lastSigintTime = 0;\n\tprivate lastEscapeTime = 0;\n\tprivate changelogMarkdown: string | undefined = undefined;\n\tprivate startupNoticesShown = false;\n\tprivate anthropicSubscriptionWarningShown = false;\n\n\t// Status line tracking (for mutating immediately-sequential status updates)\n\tprivate lastStatusSpacer: Spacer | undefined = undefined;\n\tprivate lastStatusText: Text | undefined = undefined;\n\n\t// Live TUI history cap. Full session history remains in SessionManager/model state.\n\tprivate liveHistoryHiddenNotice: Text | undefined = undefined;\n\tprivate liveHistoryHiddenComponents = 0;\n\tprivate tuiHistoryLoaded = false;\n\tprivate tuiHistoryLoadInProgress = false;\n\n\t// Streaming message tracking\n\tprivate streamingComponent: AssistantMessageComponent | undefined = undefined;\n\tprivate streamingMessage: AssistantMessage | undefined = undefined;\n\tprivate streamingUiUpdateTimer: ReturnType<typeof setTimeout> | undefined = undefined;\n\tprivate lastStreamingUiUpdateAt = 0;\n\n\t// Tool execution tracking and session-scoped reusable panels\n\tprivate toolPanels = new ToolPanelRegistry();\n\n\t// Tool output expansion state\n\tprivate toolOutputExpanded = false;\n\n\t// Thinking block visibility state\n\tprivate hideThinkingBlock = false;\n\n\t// Skill commands: command name -> skill file path\n\tprivate skillCommands = new Map<string, string>();\n\n\t// Agent subscription unsubscribe function\n\tprivate unsubscribe?: () => void;\n\tprivate unsubscribeExtensionsChanged?: () => void;\n\tprivate signalCleanupHandlers: Array<() => void> = [];\n\n\t// Track if editor is in bash mode (text starts with !)\n\tprivate isBashMode = false;\n\n\t// Track current bash execution component\n\tprivate bashComponent: BashExecutionComponent | undefined = undefined;\n\n\t// Track pending bash components (shown in pending area, moved to chat on submit)\n\tprivate pendingBashComponents: BashExecutionComponent[] = [];\n\n\t// Auto-compaction state\n\tpublic autoCompactionEscapeHandler?: () => void;\n\n\t// Auto-retry state\n\tpublic retryCountdown: CountdownTimer | undefined = undefined;\n\tpublic retryEscapeHandler?: () => void;\n\n\t// Messages queued while compaction is running\n\tprivate compactionQueuedMessages: CompactionQueuedMessage[] = [];\n\n\t// Shutdown state\n\tprivate shutdownRequested = false;\n\n\t// Extension widget containers (hold components rendered above/below the editor)\n\tprivate widgetContainerAbove!: Container;\n\tprivate widgetContainerBelow!: Container;\n\tprivate activityLane: ActivityLaneComponent | undefined;\n\tprivate readonly hasHumanAudience: boolean;\n\n\t// Header container that holds the built-in or custom header\n\tprivate headerContainer: Container;\n\n\t// Built-in header (logo + keybinding hints + changelog)\n\tprivate builtInHeader: Component | undefined = undefined;\n\n\tprivate options: InteractiveModeOptions;\n\n\t// Convenience accessors\n\tprivate get session(): AgentSession {\n\t\treturn this.runtimeHost.session;\n\t}\n\tprivate get agent() {\n\t\treturn this.session.agent;\n\t}\n\tprivate get sessionManager() {\n\t\treturn this.session.sessionManager;\n\t}\n\tprivate get settingsManager() {\n\t\treturn this.session.settingsManager;\n\t}\n\n\tconstructor(runtimeHost: AgentSessionRuntime, options: InteractiveModeOptions = {}) {\n\t\tthis.runtimeHost = runtimeHost;\n\t\tthis.options = options;\n\t\tthis.hasHumanAudience = options.hasHumanAudience ?? true;\n\t\tthis.workingVisible = this.hasHumanAudience;\n\t\tthis.runtimeHost.setBeforeSessionInvalidate(() => {\n\t\t\tthis.extensionUiHost.resetExtensionUI();\n\t\t});\n\t\tthis.runtimeHost.setRebindSession(async () => {\n\t\t\tawait this.rebindCurrentSession();\n\t\t});\n\t\tthis.version = VERSION;\n\t\tthis.ui = new TUI(new ProcessTerminal(), this.settingsManager.getShowHardwareCursor());\n\t\tthis.ui.setClearOnShrink(this.settingsManager.getClearOnShrink());\n\t\tthis.headerContainer = new Container();\n\t\tthis.chatContainer = new Container();\n\t\tthis.pendingMessagesContainer = new Container();\n\t\tthis.statusContainer = new Container();\n\t\tthis.widgetContainerAbove = new Container();\n\t\tthis.widgetContainerBelow = new Container();\n\t\tthis.activityLane = this.hasHumanAudience\n\t\t\t? new ActivityLaneComponent(theme, () => this.ui.requestRender())\n\t\t\t: undefined;\n\t\tthis.keybindings = KeybindingsManager.create();\n\t\tsetKeybindings(this.keybindings);\n\t\tconst editorPaddingX = this.settingsManager.getEditorPaddingX();\n\t\tconst autocompleteMaxVisible = this.settingsManager.getAutocompleteMaxVisible();\n\t\tthis.defaultEditor = new CustomEditor(this.ui, getEditorTheme(), this.keybindings, {\n\t\t\tpaddingX: editorPaddingX,\n\t\t\tautocompleteMaxVisible,\n\t\t});\n\t\tthis.editor = this.defaultEditor;\n\t\tthis.editorContainer = new Container();\n\t\tthis.editorContainer.addChild(this.editor as Component);\n\t\tthis.overlayHost = new EditorOverlayHost(this.editorContainer, this.ui);\n\t\tthis.footerDataProvider = new FooterDataProvider(this.sessionManager.getCwd());\n\t\tthis.footer = new FooterComponent(this.session, this.footerDataProvider);\n\t\tthis.autoLearnController = new AutoLearnController({\n\t\t\tgetSession: () => this.runtimeHost.session,\n\t\t\tresolveSelfModificationSource: (settings) => this.resolveSelfModificationSource(settings),\n\t\t\tui: {\n\t\t\t\tshowStatus: (message) => this.showStatus(message),\n\t\t\t\tfooterDataProvider: this.footerDataProvider,\n\t\t\t\tinvalidateFooter: () => this.footer.invalidate(),\n\t\t\t\trequestRender: () => this.ui.requestRender(),\n\t\t\t},\n\t\t});\n\t\tconst sharedControllerUi = {\n\t\t\tshowSelector: (create: Parameters<typeof this.showSelector>[0]) => this.showSelector(create),\n\t\t\tshowStatus: (message: string) => this.showStatus(message),\n\t\t\tshowError: (message: string) => this.showError(message),\n\t\t\trequestRender: () => this.ui.requestRender(),\n\t\t\ttui: this.ui,\n\t\t};\n\t\tthis.profileMenu = new ProfileMenuController({\n\t\t\tgetSession: () => this.runtimeHost.session,\n\t\t\tui: {\n\t\t\t\t...sharedControllerUi,\n\t\t\t\tshowWarning: (message) => this.showWarning(message),\n\t\t\t\tfooterDataProvider: this.footerDataProvider,\n\t\t\t\tinvalidateFooter: () => this.footer.invalidate(),\n\t\t\t\tupdateEditorBorderColor: () => this.updateEditorBorderColor(),\n\t\t\t\topenEditorForPath: (filePath) => this.openEditorForPath(filePath),\n\t\t\t\thandleReloadCommand: () => this.handleReloadCommandWithResult(),\n\t\t\t\tmaybeWarnAboutAnthropicSubscriptionAuth: (model) =>\n\t\t\t\t\tvoid this.maybeWarnAboutAnthropicSubscriptionAuth(model),\n\t\t\t\tcheckDaxnutsEasterEgg: (model) => this.checkDaxnutsEasterEgg(model),\n\t\t\t\tshowSettingsSelector: () => this.showSettingsSelector(),\n\t\t\t\tgetAutoLearnModelOptions: () => this.getAutoLearnModelOptions(),\n\t\t\t},\n\t\t});\n\t\tthis.authDialogs = new AuthDialogsController({\n\t\t\tgetSession: () => this.runtimeHost.session,\n\t\t\tui: {\n\t\t\t\t...sharedControllerUi,\n\t\t\t\toverlayHost: this.overlayHost,\n\t\t\t\tgetEditor: () => this.editor,\n\t\t\t\tupdateAvailableProviderCount: () => this.updateAvailableProviderCount(),\n\t\t\t\tinvalidateFooter: () => this.footer.invalidate(),\n\t\t\t\tupdateEditorBorderColor: () => this.updateEditorBorderColor(),\n\t\t\t\tmaybeWarnAboutAnthropicSubscriptionAuth: (model) =>\n\t\t\t\t\tvoid this.maybeWarnAboutAnthropicSubscriptionAuth(model),\n\t\t\t\tcheckDaxnutsEasterEgg: (model) => this.checkDaxnutsEasterEgg(model),\n\t\t\t},\n\t\t});\n\t\tthis.extensionUiHost = new ExtensionUiHost({\n\t\t\tgetSession: () => this.runtimeHost.session,\n\t\t\tui: {\n\t\t\t\ttui: this.ui,\n\t\t\t\toverlayHost: this.overlayHost,\n\t\t\t\tkeybindings: this.keybindings,\n\t\t\t\tfooter: this.footer,\n\t\t\t\tfooterDataProvider: this.footerDataProvider,\n\t\t\t\theaderContainer: this.headerContainer,\n\t\t\t\tchatContainer: this.chatContainer,\n\t\t\t\tdefaultEditor: this.defaultEditor,\n\t\t\t\twidgetContainerAbove: this.widgetContainerAbove,\n\t\t\t\twidgetContainerBelow: this.widgetContainerBelow,\n\t\t\t\tgetEditor: () => this.editor,\n\t\t\t\tsetEditor: (editor) => {\n\t\t\t\t\tconst previousEditor = this.editor;\n\t\t\t\t\tthis.editor = editor;\n\t\t\t\t\tif (previousEditor !== editor && previousEditor !== this.defaultEditor) {\n\t\t\t\t\t\tconst disposableEditor = previousEditor as typeof previousEditor & { dispose?: () => void };\n\t\t\t\t\t\tdisposableEditor.dispose?.();\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tgetBuiltInHeader: () => this.builtInHeader,\n\t\t\t\tgetAutocompleteProvider: () => this.autocompleteProvider,\n\t\t\t\tgetClipboardImageStore: () => this.clipboardImageStore,\n\t\t\t\tgetToolsExpanded: () => this.toolOutputExpanded,\n\t\t\t\tpushAutocompleteProviderWrapper: (factory) => {\n\t\t\t\t\tthis.autocompleteProviderWrappers.push(factory);\n\t\t\t\t},\n\t\t\t\tresetAutocompleteProviderWrappers: () => {\n\t\t\t\t\tthis.autocompleteProviderWrappers = [];\n\t\t\t\t},\n\t\t\t\tsetupAutocompleteProvider: () => this.setupAutocompleteProvider(),\n\t\t\t\tsetWorkingVisible: (visible) => this.setWorkingVisible(visible),\n\t\t\t\tsetWorkingIndicator: (options) => this.setWorkingIndicator(options),\n\t\t\t\tsetHiddenThinkingLabel: (label) => this.setHiddenThinkingLabel(label),\n\t\t\t\tsetWorkingMessage: (message) => this.setWorkingMessage(message),\n\t\t\t\tresetWorkingIndicators: () => this.resetWorkingIndicators(),\n\t\t\t\tsetToolsExpanded: (expanded) => this.setToolsExpanded(expanded),\n\t\t\t\ttoggleToolsExpanded: () => this.toggleToolOutputExpansion(),\n\t\t\t\tupdateTerminalTitle: () => this.updateTerminalTitle(),\n\t\t\t\tmarkShutdownRequested: () => {\n\t\t\t\t\tthis.shutdownRequested = true;\n\t\t\t\t},\n\t\t\t\tabort: () => {\n\t\t\t\t\tthis.restoreQueuedMessagesToEditor({ abort: true });\n\t\t\t\t},\n\t\t\t\treload: () => this.handleReloadCommand(),\n\t\t\t\tshowStatus: (message) => this.showStatus(message),\n\t\t\t\tshowWarning: (message) => this.showWarning(message),\n\t\t\t\tshowError: (message) => this.showError(message),\n\t\t\t},\n\t\t});\n\t\tthis.footer.setAutoCompactEnabled(this.session.autoCompactionEnabled);\n\n\t\t// Load hide thinking block setting\n\t\tthis.hideThinkingBlock = this.settingsManager.getHideThinkingBlock();\n\n\t\t// Register themes from resource loader and initialize\n\t\tsetRegisteredThemes(this.session.resourceLoader.getThemes().themes);\n\t\tinitTheme(this.settingsManager.getTheme(), true);\n\t}\n\n\t// Thin delegate retained so setupAutocompleteProvider's base-provider seam\n\t// (stubbed via prototype in interactive-mode-status.test.ts) keeps working.\n\tprivate createBaseAutocompleteProvider(): AutocompleteProvider {\n\t\treturn autocompleteProvider.createBaseAutocompleteProvider({\n\t\t\tsession: this.session,\n\t\t\tsettingsManager: this.settingsManager,\n\t\t\tsessionManager: this.sessionManager,\n\t\t\tfdPath: this.fdPath,\n\t\t\tskillCommands: this.skillCommands,\n\t\t});\n\t}\n\n\tprivate setupAutocompleteProvider(): void {\n\t\tlet provider = this.createBaseAutocompleteProvider();\n\t\tfor (const wrapProvider of this.autocompleteProviderWrappers) {\n\t\t\tprovider = wrapProvider(provider);\n\t\t}\n\n\t\tthis.autocompleteProvider = provider;\n\t\tthis.defaultEditor.setAutocompleteProvider(provider);\n\t\tif (this.editor !== this.defaultEditor) {\n\t\t\tthis.editor.setAutocompleteProvider?.(provider);\n\t\t}\n\t}\n\n\tprivate startupChecksHost(): startupChecks.StartupChecksHost {\n\t\tconst self = this;\n\t\treturn {\n\t\t\tsessionManager: this.sessionManager,\n\t\t\tsettingsManager: this.settingsManager,\n\t\t\tsession: this.session,\n\t\t\tchatContainer: this.chatContainer,\n\t\t\tui: this.ui,\n\t\t\tversion: this.version,\n\t\t\tget changelogMarkdown() {\n\t\t\t\treturn self.changelogMarkdown;\n\t\t\t},\n\t\t\tget startupNoticesShown() {\n\t\t\t\treturn self.startupNoticesShown;\n\t\t\t},\n\t\t\tset startupNoticesShown(value) {\n\t\t\t\tself.startupNoticesShown = value;\n\t\t\t},\n\t\t\tgetMarkdownThemeWithSettings: () => this.getMarkdownThemeWithSettings(),\n\t\t};\n\t}\n\n\tprivate showStartupNoticesIfNeeded(): void {\n\t\tstartupChecks.showStartupNoticesIfNeeded(this.startupChecksHost());\n\t}\n\n\tasync init(): Promise<void> {\n\t\tif (this.isInitialized) return;\n\n\t\tthis.registerSignalHandlers();\n\n\t\t// Load changelog (only show new entries, skip for resumed sessions)\n\t\tthis.changelogMarkdown = this.getChangelogForDisplay();\n\n\t\t// Ensure fd and rg are available (downloads if missing, adds to PATH via getBinDir)\n\t\t// Both are needed: fd for autocomplete, rg for grep tool and bash commands\n\t\tconst [fdPath] = await Promise.all([ensureTool(\"fd\"), ensureTool(\"rg\")]);\n\t\tthis.fdPath = fdPath;\n\n\t\tif (this.session.scopedModels.length > 0 && (this.options.verbose || !this.settingsManager.getQuietStartup())) {\n\t\t\tconst modelList = this.session.scopedModels\n\t\t\t\t.map((sm) => {\n\t\t\t\t\tconst thinkingStr = sm.thinkingLevel ? `:${sm.thinkingLevel}` : \"\";\n\t\t\t\t\treturn `${sm.model.id}${thinkingStr}`;\n\t\t\t\t})\n\t\t\t\t.join(\", \");\n\t\t\tconst cycleKeys = this.keybindings.getKeys(\"app.model.cycleForward\");\n\t\t\tconst cycleHint =\n\t\t\t\tcycleKeys.length > 0\n\t\t\t\t\t? theme.fg(\"muted\", ` (${formatKeyText(cycleKeys.join(\"/\"), { capitalize: true })} to cycle)`)\n\t\t\t\t\t: \"\";\n\t\t\tconsole.log(theme.fg(\"dim\", `Model scope: ${modelList}${cycleHint}`));\n\t\t}\n\n\t\t// Add header container as first child\n\t\tthis.ui.addChild(this.headerContainer);\n\n\t\t// Add header with keybindings from config (unless silenced)\n\t\tif (this.options.verbose || !this.settingsManager.getQuietStartup()) {\n\t\t\tconst logo = theme.bold(theme.fg(\"accent\", APP_NAME)) + theme.fg(\"dim\", ` v${this.version}`);\n\n\t\t\t// Build startup instructions using keybinding hint helpers\n\t\t\tconst hint = (keybinding: AppKeybinding, description: string) => keyHint(keybinding, description);\n\n\t\t\tconst expandedInstructions = [\n\t\t\t\thint(\"app.interrupt\", \"to interrupt\"),\n\t\t\t\thint(\"app.clear\", \"to clear\"),\n\t\t\t\trawKeyHint(`${keyText(\"app.clear\")} twice`, \"to exit\"),\n\t\t\t\thint(\"app.exit\", \"to exit (empty)\"),\n\t\t\t\thint(\"app.suspend\", \"to suspend\"),\n\t\t\t\tkeyHint(\"tui.editor.deleteToLineEnd\", \"to delete to end\"),\n\t\t\t\thint(\"app.thinking.cycle\", \"to cycle thinking level\"),\n\t\t\t\trawKeyHint(`${keyText(\"app.model.cycleForward\")}/${keyText(\"app.model.cycleBackward\")}`, \"to cycle models\"),\n\t\t\t\thint(\"app.model.select\", \"to select model\"),\n\t\t\t\thint(\"app.tools.expand\", \"to load history / expand tools\"),\n\t\t\t\thint(\"app.thinking.toggle\", \"to expand thinking\"),\n\t\t\t\thint(\"app.editor.external\", \"for external editor\"),\n\t\t\t\trawKeyHint(\"/\", \"for commands\"),\n\t\t\t\trawKeyHint(\"!\", \"to run bash\"),\n\t\t\t\trawKeyHint(\"!!\", \"to run bash (no context)\"),\n\t\t\t\thint(\"app.message.followUp\", \"to queue follow-up\"),\n\t\t\t\trawKeyHint(\">>\", \"prefix to queue follow-up\"),\n\t\t\t\thint(\"app.message.dequeue\", \"to edit all queued messages\"),\n\t\t\t\trawKeyHint(\"↑\", \"(empty editor) to recall queued messages\"),\n\t\t\t\thint(\"app.clipboard.pasteImage\", \"to paste image\"),\n\t\t\t\trawKeyHint(\"drop files\", \"to attach\"),\n\t\t\t].join(\"\\n\");\n\t\t\tconst compactInstructions = [\n\t\t\t\thint(\"app.interrupt\", \"interrupt\"),\n\t\t\t\trawKeyHint(`${keyText(\"app.clear\")}/${keyText(\"app.exit\")}`, \"clear/exit\"),\n\t\t\t\trawKeyHint(\"/\", \"commands\"),\n\t\t\t\trawKeyHint(\"!\", \"bash\"),\n\t\t\t\thint(\"app.tools.expand\", \"history/more\"),\n\t\t\t].join(theme.fg(\"muted\", \" · \"));\n\t\t\tconst compactOnboarding = theme.fg(\n\t\t\t\t\"dim\",\n\t\t\t\t`Press ${keyText(\"app.tools.expand\")} to load session history or show full startup help and loaded resources.`,\n\t\t\t);\n\t\t\tconst onboarding = theme.fg(\n\t\t\t\t\"dim\",\n\t\t\t\t`Pi can explain its own features and look up its docs. Ask it how to use or extend Pi.`,\n\t\t\t);\n\t\t\tthis.builtInHeader = new ExpandableText(\n\t\t\t\t() => `${logo}\\n${compactInstructions}\\n${compactOnboarding}\\n\\n${onboarding}`,\n\t\t\t\t() => `${logo}\\n${expandedInstructions}\\n\\n${onboarding}`,\n\t\t\t\tthis.getStartupExpansionState(),\n\t\t\t\t1,\n\t\t\t\t0,\n\t\t\t);\n\n\t\t\t// Setup UI layout\n\t\t\tthis.headerContainer.addChild(new Spacer(1));\n\t\t\tthis.headerContainer.addChild(this.builtInHeader);\n\t\t\tthis.headerContainer.addChild(new Spacer(1));\n\t\t} else {\n\t\t\t// Minimal header when silenced\n\t\t\tthis.builtInHeader = new Text(\"\", 0, 0);\n\t\t\tthis.headerContainer.addChild(this.builtInHeader);\n\t\t}\n\n\t\tthis.ui.addChild(this.chatContainer);\n\t\tif (this.hasHumanAudience) {\n\t\t\tthis.ui.addChild(this.pendingMessagesContainer);\n\t\t\tthis.ui.addChild(this.statusContainer);\n\t\t\tthis.extensionUiHost.renderWidgets(); // Initialize with default spacer\n\t\t\tthis.ui.addChild(this.widgetContainerAbove);\n\t\t\tif (this.activityLane) this.ui.addChild(this.activityLane);\n\t\t}\n\t\tthis.ui.addChild(this.editorContainer);\n\t\tif (this.hasHumanAudience) {\n\t\t\tthis.ui.addChild(this.widgetContainerBelow);\n\t\t\tthis.ui.addChild(this.footer);\n\t\t}\n\t\tthis.ui.setFocus(this.editor);\n\n\t\tthis.setupKeyHandlers();\n\t\tthis.setupEditorSubmitHandler();\n\n\t\t// Start the UI before initializing extensions so session_start handlers can use interactive dialogs\n\t\tthis.ui.start();\n\t\tthis.isInitialized = true;\n\n\t\t// Initialize extensions first so resources are shown before messages\n\t\tawait this.rebindCurrentSession();\n\n\t\t// Register extensions-changed listener for live reload UI refresh\n\t\tthis.subscribeToExtensionsChanged();\n\n\t\t// Render initial messages AFTER showing loaded resources\n\t\tawait this.renderInitialMessages();\n\t\tthis.renderProjectTrustWarningIfNeeded();\n\n\t\t// Set up theme file watcher\n\t\tonThemeChange(() => {\n\t\t\tthis.ui.invalidate();\n\t\t\tthis.updateEditorBorderColor();\n\t\t\tthis.refreshActivityLane();\n\t\t\tthis.ui.requestRender();\n\t\t});\n\n\t\t// Set up git branch watcher (uses provider instead of footer)\n\t\tthis.footerDataProvider.onBranchChange(() => {\n\t\t\tthis.ui.requestRender();\n\t\t});\n\n\t\t// Initialize available provider count and Auto Learn status for footer display\n\t\tawait this.updateAvailableProviderCount();\n\t\tthis.updateAutoLearnFooter();\n\t}\n\n\tprivate renderProjectTrustWarningIfNeeded(): void {\n\t\tstartupChecks.renderProjectTrustWarningIfNeeded(this.startupChecksHost());\n\t}\n\n\t/**\n\t * Update terminal title with session name and cwd.\n\t */\n\tprivate updateTerminalTitle(): void {\n\t\tconst cwdBasename = path.basename(this.sessionManager.getCwd());\n\t\tconst sessionName = this.sessionManager.getSessionName();\n\t\tif (sessionName) {\n\t\t\tthis.ui.terminal.setTitle(`${APP_TITLE} - ${sessionName} - ${cwdBasename}`);\n\t\t} else {\n\t\t\tthis.ui.terminal.setTitle(`${APP_TITLE} - ${cwdBasename}`);\n\t\t}\n\t}\n\n\t/**\n\t * Run the interactive mode. This is the main entry point.\n\t * Initializes the UI, shows warnings, processes initial messages, and starts the interactive loop.\n\t */\n\tasync run(): Promise<void> {\n\t\tawait this.init();\n\n\t\t// Start version check asynchronously\n\t\tcheckForNewPiVersion(this.version).then((newRelease) => {\n\t\t\tif (newRelease) {\n\t\t\t\tthis.showNewVersionNotification(newRelease);\n\t\t\t}\n\t\t});\n\n\t\t// Start package update check asynchronously\n\t\tthis.checkForPackageUpdates()\n\t\t\t.then((updates) => {\n\t\t\t\tif (updates.length > 0) {\n\t\t\t\t\tthis.showPackageUpdateNotification(updates);\n\t\t\t\t}\n\t\t\t})\n\t\t\t.finally(() => {\n\t\t\t\t// npm can overwrite the shared Windows console title while checking extension versions.\n\t\t\t\tif (process.platform === \"win32\" && this.isInitialized) {\n\t\t\t\t\tthis.updateTerminalTitle();\n\t\t\t\t}\n\t\t\t});\n\n\t\t// Check tmux keyboard setup asynchronously\n\t\tthis.checkTmuxKeyboardSetup().then((warning) => {\n\t\t\tif (warning) {\n\t\t\t\tthis.showWarning(warning);\n\t\t\t}\n\t\t});\n\n\t\t// Skill curator (#32): auto-archive stale reflection-promoted skills at startup, and ANNOUNCE it\n\t\t// (never silent — the user can restore any of them with `/curate restore <name>`).\n\t\tthis.session\n\t\t\t.runStartupSkillCuration()\n\t\t\t.then((archived) => {\n\t\t\t\tif (archived.length > 0) {\n\t\t\t\t\tthis.showStatus(\n\t\t\t\t\t\t`Curator: auto-archived ${archived.length} stale skill(s) — ${archived.join(\", \")}. Restore with /curate restore <name>.`,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t})\n\t\t\t.catch(() => {\n\t\t\t\t// curation is best-effort; never disrupt startup\n\t\t\t});\n\n\t\t// Show startup warnings\n\t\tconst { migratedProviders, modelFallbackMessage, initialMessage, initialImages, initialMessages } = this.options;\n\n\t\tif (migratedProviders && migratedProviders.length > 0) {\n\t\t\tthis.showWarning(`Migrated credentials to auth.json: ${migratedProviders.join(\", \")}`);\n\t\t}\n\n\t\tconst modelsJsonError = this.session.modelRegistry.getError();\n\t\tif (modelsJsonError) {\n\t\t\tthis.showError(`models.json error: ${modelsJsonError}`);\n\t\t}\n\n\t\tif (modelFallbackMessage) {\n\t\t\tthis.showWarning(modelFallbackMessage);\n\t\t}\n\n\t\tvoid this.maybeWarnAboutAnthropicSubscriptionAuth();\n\n\t\t// Process initial messages\n\t\tif (initialMessage) {\n\t\t\ttry {\n\t\t\t\tawait this.session.prompt(initialMessage, { images: initialImages });\n\t\t\t} catch (error: unknown) {\n\t\t\t\tconst errorMessage = error instanceof Error ? error.message : \"Unknown error occurred\";\n\t\t\t\tthis.showError(errorMessage);\n\t\t\t} finally {\n\t\t\t\tthis.refreshAutonomyFooterStatus();\n\t\t\t}\n\t\t}\n\n\t\tif (initialMessages) {\n\t\t\tfor (const message of initialMessages) {\n\t\t\t\ttry {\n\t\t\t\t\tawait this.session.prompt(message);\n\t\t\t\t} catch (error: unknown) {\n\t\t\t\t\tconst errorMessage = error instanceof Error ? error.message : \"Unknown error occurred\";\n\t\t\t\t\tthis.showError(errorMessage);\n\t\t\t\t} finally {\n\t\t\t\t\tthis.refreshAutonomyFooterStatus();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Main interactive loop\n\t\twhile (true) {\n\t\t\tconst userInput = await this.getUserInput();\n\t\t\ttry {\n\t\t\t\tawait this.session.prompt(userInput.text, { images: userInput.images });\n\t\t\t} catch (error: unknown) {\n\t\t\t\tconst errorMessage = error instanceof Error ? error.message : \"Unknown error occurred\";\n\t\t\t\tthis.showError(errorMessage);\n\t\t\t} finally {\n\t\t\t\tthis.refreshAutonomyFooterStatus();\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate refreshAutonomyFooterStatus(): void {\n\t\tthis.footerDataProvider.setAutonomyStatusSnapshot(this.session.getAutonomyStatusSnapshot());\n\t\tthis.footer.invalidate();\n\t}\n\n\tprivate activityLaneSnapshot() {\n\t\treturn {\n\t\t\tgoalState: this.session.getGoalStateSnapshot(),\n\t\t\ttaskState: this.session.getTaskStepsStateSnapshot(),\n\t\t\tlaneRecords: this.session.getLaneRecords(),\n\t\t};\n\t}\n\n\tprivate refreshActivityLane(options: { replace?: boolean } = {}): void {\n\t\tif (!this.activityLane) return;\n\t\tconst sessionKey = this.sessionManager.getSessionId();\n\t\tif (options.replace) {\n\t\t\tthis.activityLane.replaceCanonical(sessionKey, this.activityLaneSnapshot());\n\t\t} else {\n\t\t\tthis.activityLane.updateCanonical(sessionKey, this.activityLaneSnapshot());\n\t\t}\n\t}\n\n\tpublic toolActivityKind(toolName: string): ActivityLaneKind {\n\t\tif (toolName === \"task_steps\") return \"task\";\n\t\tif (toolName === \"goal\") return \"goal\";\n\t\tif (toolName === \"delegate\" || toolName === \"delegate_status\") return \"worker\";\n\t\treturn \"tool\";\n\t}\n\n\tpublic toolActivityLabel(toolName: string): string {\n\t\tconst label = this.getRegisteredToolDefinition(toolName)?.label?.trim() || toolName;\n\t\treturn label.replace(/[_-]+/g, \" \").replace(/(^|\\s)\\S/g, (character) => character.toUpperCase());\n\t}\n\n\tpublic toolActivityTerminalStatus(isError: boolean, details: unknown): \"success\" | \"failure\" | \"neutral\" {\n\t\tif (isError) return \"failure\";\n\t\tif (!isRecordObject(details)) return \"success\";\n\t\tif (details.applied === false || details.kind === \"error\") return \"failure\";\n\t\tif (details.kind === \"review\" && details.reviewed === false) return \"failure\";\n\t\tif (details.started === false) return \"neutral\";\n\t\treturn \"success\";\n\t}\n\n\tprivate checkForPackageUpdates(): Promise<string[]> {\n\t\treturn startupChecks.checkForPackageUpdates(this.startupChecksHost());\n\t}\n\n\tprivate checkTmuxKeyboardSetup(): Promise<string | undefined> {\n\t\treturn startupChecks.checkTmuxKeyboardSetup();\n\t}\n\n\t/**\n\t * Get changelog entries to display on startup.\n\t * Only shows new entries since last seen version, skips for resumed sessions.\n\t */\n\tprivate getChangelogForDisplay(): string | undefined {\n\t\treturn startupChecks.getChangelogForDisplay(this.startupChecksHost());\n\t}\n\n\tprivate getMarkdownThemeWithSettings(): MarkdownTheme {\n\t\treturn {\n\t\t\t...getMarkdownTheme(),\n\t\t\tcodeBlockIndent: this.settingsManager.getCodeBlockIndent(),\n\t\t};\n\t}\n\n\t// =========================================================================\n\t// Extension System\n\t// =========================================================================\n\n\tprivate getStartupExpansionState(): boolean {\n\t\treturn this.options.verbose || this.toolOutputExpanded;\n\t}\n\n\tprivate showLoadedResources(options?: LoadedResourcesViewOptions): void {\n\t\trenderLoadedResources(\n\t\t\t{\n\t\t\t\tsession: this.session,\n\t\t\t\tchatContainer: this.chatContainer,\n\t\t\t\tverbose: this.options.verbose ?? false,\n\t\t\t\texpanded: this.getStartupExpansionState(),\n\t\t\t},\n\t\t\toptions,\n\t\t);\n\t}\n\t/**\n\t * Initialize the extension system with TUI-based UI context.\n\t */\n\tprivate async bindCurrentSessionExtensions(): Promise<void> {\n\t\tconst uiContext = this.hasHumanAudience ? this.extensionUiHost.createExtensionUIContext() : undefined;\n\t\tawait this.session.bindExtensions({\n\t\t\tuiContext,\n\t\t\tmode: this.hasHumanAudience ? \"tui\" : \"print\",\n\t\t\tabortHandler: () => {\n\t\t\t\tthis.restoreQueuedMessagesToEditor({ abort: true });\n\t\t\t},\n\t\t\tcommandContextActions: {\n\t\t\t\twaitForIdle: () => this.session.agent.waitForIdle(),\n\t\t\t\tnewSession: async (options) => {\n\t\t\t\t\tif (this.loadingAnimation) {\n\t\t\t\t\t\tthis.loadingAnimation.stop();\n\t\t\t\t\t\tthis.loadingAnimation = undefined;\n\t\t\t\t\t}\n\t\t\t\t\tthis.statusContainer.clear();\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst result = await this.runtimeHost.newSession(options);\n\t\t\t\t\t\tif (!result.cancelled) {\n\t\t\t\t\t\t\tthis.renderCurrentSessionState();\n\t\t\t\t\t\t\tthis.ui.requestRender();\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t} catch (error: unknown) {\n\t\t\t\t\t\tconst disposition = this.handleNonFatalSessionReplacementError(error);\n\t\t\t\t\t\tif (disposition) return { cancelled: disposition === \"previous_restored\" };\n\t\t\t\t\t\treturn this.handleFatalRuntimeError(\"Failed to create session\", error);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tfork: async (entryId, options) => {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst result = await this.runtimeHost.fork(entryId, options);\n\t\t\t\t\t\tif (!result.cancelled) {\n\t\t\t\t\t\t\tthis.renderCurrentSessionState();\n\t\t\t\t\t\t\tthis.editor.setText(result.selectedText ?? \"\");\n\t\t\t\t\t\t\tthis.showStatus(\"Forked to new session\");\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn { cancelled: result.cancelled };\n\t\t\t\t\t} catch (error: unknown) {\n\t\t\t\t\t\tconst disposition = this.handleNonFatalSessionReplacementError(error);\n\t\t\t\t\t\tif (disposition) return { cancelled: disposition === \"previous_restored\" };\n\t\t\t\t\t\treturn this.handleFatalRuntimeError(\"Failed to fork session\", error);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tnavigateTree: async (targetId, options) => {\n\t\t\t\t\tconst result = await this.session.navigateTree(targetId, {\n\t\t\t\t\t\tsummarize: options?.summarize,\n\t\t\t\t\t\tcustomInstructions: options?.customInstructions,\n\t\t\t\t\t\treplaceInstructions: options?.replaceInstructions,\n\t\t\t\t\t\tlabel: options?.label,\n\t\t\t\t\t});\n\t\t\t\t\tif (result.cancelled) {\n\t\t\t\t\t\treturn { cancelled: true };\n\t\t\t\t\t}\n\n\t\t\t\t\tawait this.renderInitialMessages();\n\t\t\t\t\tif (result.editorText && !this.editor.getText().trim()) {\n\t\t\t\t\t\tthis.editor.setText(result.editorText);\n\t\t\t\t\t}\n\t\t\t\t\tthis.showStatus(\"Navigated to selected point\");\n\t\t\t\t\tvoid this.flushCompactionQueue({ willRetry: false });\n\t\t\t\t\treturn { cancelled: false };\n\t\t\t\t},\n\t\t\t\tswitchSession: async (sessionPath, options) => {\n\t\t\t\t\treturn this.handleResumeSession(sessionPath, options);\n\t\t\t\t},\n\t\t\t\treload: async () => {\n\t\t\t\t\tawait this.handleReloadCommand();\n\t\t\t\t},\n\t\t\t},\n\t\t\tshutdownHandler: () => {\n\t\t\t\tthis.shutdownRequested = true;\n\t\t\t\tif (!this.session.isStreaming) {\n\t\t\t\t\tvoid this.shutdown();\n\t\t\t\t}\n\t\t\t},\n\t\t\tonError: (error) => {\n\t\t\t\tthis.extensionUiHost.showExtensionError(error.extensionPath, error.error, error.stack);\n\t\t\t},\n\t\t});\n\n\t\tsetRegisteredThemes(this.session.resourceLoader.getThemes().themes);\n\t\tthis.setupAutocompleteProvider();\n\n\t\tconst extensionRunner = this.session.extensionRunner;\n\t\tthis.extensionUiHost.setupExtensionShortcuts(extensionRunner);\n\t\tthis.showLoadedResources({ force: false, showDiagnosticsWhenQuiet: true });\n\t\tthis.showStartupNoticesIfNeeded();\n\t}\n\n\tprivate applyRuntimeSettings(): void {\n\t\tconfigureHttpDispatcher(this.settingsManager.getHttpIdleTimeoutMs());\n\t\tthis.footer.setSession(this.session);\n\t\tthis.footer.setAutoCompactEnabled(this.session.autoCompactionEnabled);\n\t\tthis.footerDataProvider.setCwd(this.sessionManager.getCwd());\n\t\tthis.hideThinkingBlock = this.settingsManager.getHideThinkingBlock();\n\t\tthis.ui.setShowHardwareCursor(this.settingsManager.getShowHardwareCursor());\n\t\tthis.ui.setClearOnShrink(this.settingsManager.getClearOnShrink());\n\t\tthis.applyEditorPresentationSettings();\n\t}\n\n\tprivate applyEditorPresentationSettings(): void {\n\t\tconst editorPaddingX = this.settingsManager.getEditorPaddingX();\n\t\tconst autocompleteMaxVisible = this.settingsManager.getAutocompleteMaxVisible();\n\t\tthis.defaultEditor.setPaddingX(editorPaddingX);\n\t\tthis.defaultEditor.setAutocompleteMaxVisible(autocompleteMaxVisible);\n\t\tif (this.editor !== this.defaultEditor) {\n\t\t\tthis.editor.setPaddingX?.(editorPaddingX);\n\t\t\tthis.editor.setAutocompleteMaxVisible?.(autocompleteMaxVisible);\n\t\t}\n\t}\n\n\tprivate refreshExtensionPresentation(): void {\n\t\tconst activeHeader = this.extensionUiHost.getCustomHeader() ?? this.builtInHeader;\n\t\tif (isExpandable(activeHeader)) {\n\t\t\tactiveHeader.setExpanded(this.toolOutputExpanded);\n\t\t}\n\t\tsetRegisteredThemes(this.session.resourceLoader.getThemes().themes);\n\t\tthis.hideThinkingBlock = this.settingsManager.getHideThinkingBlock();\n\t\tconst themeName = this.settingsManager.getTheme();\n\t\tconst themeResult = themeName ? setTheme(themeName, true) : { success: true };\n\t\tif (!themeResult.success) {\n\t\t\tthis.showError(`Failed to load theme \"${themeName}\": ${themeResult.error}\\nFell back to dark theme.`);\n\t\t}\n\t\tthis.applyEditorPresentationSettings();\n\t}\n\n\tprivate async rebindCurrentSession(): Promise<void> {\n\t\tthis.unsubscribe?.();\n\t\tthis.unsubscribe = undefined;\n\t\tthis.clipboardQueue.pendingClipboardImages = [];\n\t\tthis.clipboardQueue.clipboardImageCounter = 0;\n\t\tconst clipboardImageDirectory = this.settingsManager.getClipboardImageDirectory();\n\t\tthis.clipboardImageStore =\n\t\t\tthis.sessionManager.isPersisted() || clipboardImageDirectory\n\t\t\t\t? new SessionImageStore({\n\t\t\t\t\t\tagentDir: getAgentDir(),\n\t\t\t\t\t\tcwd: this.sessionManager.getCwd(),\n\t\t\t\t\t\tsessionId: this.sessionManager.getSessionId(),\n\t\t\t\t\t\tdirectory: clipboardImageDirectory,\n\t\t\t\t\t})\n\t\t\t\t: undefined;\n\t\tthis.applyRuntimeSettings();\n\t\tawait this.bindCurrentSessionExtensions();\n\t\tthis.subscribeToAgent();\n\t\tthis.subscribeToExtensionsChanged();\n\t\tawait this.updateAvailableProviderCount();\n\t\tthis.updateEditorBorderColor();\n\t\tthis.updateTerminalTitle();\n\t\tthis.refreshActivityLane({ replace: true });\n\t\ttry {\n\t\t\tawait this.session.resumePendingHumanInput();\n\t\t} catch (error: unknown) {\n\t\t\tthis.showError(\n\t\t\t\t`Failed to resume pending user input: ${error instanceof Error ? error.message : String(error)}`,\n\t\t\t);\n\t\t}\n\t}\n\n\tprivate subscribeToExtensionsChanged(): void {\n\t\tthis.unsubscribeExtensionsChanged?.();\n\t\tthis.unsubscribeExtensionsChanged = this.session.onExtensionsChanged(() => {\n\t\t\tthis.refreshUIAfterExtensionsChanged();\n\t\t});\n\t}\n\n\tprivate async handleFatalRuntimeError(prefix: string, error: unknown): Promise<never> {\n\t\tconst message = error instanceof Error ? error.message : String(error);\n\t\tthis.showError(`${prefix}: ${message}`);\n\t\tstopThemeWatcher();\n\t\tthis.stop();\n\t\tprocess.exit(1);\n\t}\n\n\tprivate handleNonFatalSessionReplacementError(\n\t\terror: unknown,\n\t): \"previous_restored\" | \"replacement_committed\" | undefined {\n\t\treturn handleNonFatalSessionReplacementError(\n\t\t\t{\n\t\t\t\trenderCurrentSessionState: () => this.renderCurrentSessionState(),\n\t\t\t\tshowError: (message) => this.showError(message),\n\t\t\t},\n\t\t\terror,\n\t\t);\n\t}\n\n\tprivate renderCurrentSessionState(): void {\n\t\tthis.pendingMessagesContainer.clear();\n\t\tthis.compactionQueuedMessages = [];\n\t\tthis.streamingComponent = undefined;\n\t\tthis.streamingMessage = undefined;\n\t\tthis.clearRenderedToolPanelState();\n\t\tvoid this.renderInitialMessages();\n\t}\n\n\t/**\n\t * Get a registered tool definition by name (for custom rendering).\n\t */\n\tprivate getRegisteredToolDefinition(toolName: string) {\n\t\treturn this.session.getToolDefinition(toolName);\n\t}\n\n\tprivate getToolPanelScope() {\n\t\treturn {\n\t\t\tsessionId: this.sessionManager.getSessionId?.(),\n\t\t\tsessionFile: this.sessionManager.getSessionFile?.(),\n\t\t\tcwd: this.sessionManager.getCwd(),\n\t\t};\n\t}\n\n\tprivate appendToolExecutionComponent(component: ToolExecutionComponent, allowGrouping: boolean): void {\n\t\tconst toolGroup = allowGrouping ? component.toolGroup?.trim() : undefined;\n\t\tif (!toolGroup) {\n\t\t\tthis.chatContainer.addChild(component);\n\t\t\tthis.trimLiveTuiHistory();\n\t\t\treturn;\n\t\t}\n\n\t\tconst children = this.chatContainer.children;\n\t\tconst lastChild = children[children.length - 1];\n\t\tif (lastChild instanceof ToolGroupComponent && lastChild.toolGroup === toolGroup) {\n\t\t\tlastChild.addTool(component);\n\t\t\tthis.trimLiveTuiHistory();\n\t\t\treturn;\n\t\t}\n\t\tif (lastChild instanceof ToolExecutionComponent && lastChild.toolGroup?.trim() === toolGroup) {\n\t\t\tconst group = new ToolGroupComponent(toolGroup, [lastChild, component]);\n\t\t\tgroup.setExpanded(this.toolOutputExpanded);\n\t\t\tchildren[children.length - 1] = group;\n\t\t\tthis.trimLiveTuiHistory();\n\t\t\treturn;\n\t\t}\n\t\tthis.chatContainer.addChild(component);\n\t\tthis.trimLiveTuiHistory();\n\t}\n\n\tprivate detachToolExecutionComponent(component: ToolExecutionComponent): void {\n\t\tconst children = this.chatContainer.children;\n\t\tconst directIndex = children.indexOf(component);\n\t\tif (directIndex !== -1) {\n\t\t\tchildren.splice(directIndex, 1);\n\t\t\treturn;\n\t\t}\n\t\tfor (let i = 0; i < children.length; i++) {\n\t\t\tconst child = children[i];\n\t\t\tif (!(child instanceof ToolGroupComponent) || !child.removeTool(component)) continue;\n\t\t\tconst remaining = child.getToolCount();\n\t\t\tif (remaining === 0) {\n\t\t\t\tchildren.splice(i, 1);\n\t\t\t} else if (remaining === 1) {\n\t\t\t\tconst onlyTool = child.getOnlyTool();\n\t\t\t\tif (onlyTool) children[i] = onlyTool;\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t}\n\n\tprivate attachToolExecutionComponent(\n\t\ttoolName: string,\n\t\ttoolCallId: string,\n\t\targs: any,\n\t\trepair?: ToolCallRepairInfo,\n\t\tdeferResultUntilExpanded = false,\n\t): ToolExecutionComponent {\n\t\tconst actionKey = getToolPanelActionKey(this.getToolPanelScope(), toolName, args);\n\t\tconst toolDefinition = this.getRegisteredToolDefinition(toolName);\n\t\tconst reuseInPlace = shouldReuseToolPanelInPlace(toolName, args);\n\t\tconst existing = this.toolPanels.getReusable(actionKey, { allowActive: reuseInPlace });\n\t\tif (existing) {\n\t\t\tif (reuseInPlace && actionKey) {\n\t\t\t\texisting.resetInvocation(toolName, toolCallId, args, toolDefinition, repair, deferResultUntilExpanded);\n\t\t\t\texisting.setExpanded(this.toolOutputExpanded);\n\t\t\t\tthis.toolPanels.replaceActiveForAction(toolCallId, existing, actionKey);\n\t\t\t\tthis.ui.requestRender();\n\t\t\t\treturn existing;\n\t\t\t}\n\t\t\tthis.detachToolExecutionComponent(existing);\n\t\t\texisting.resetInvocation(toolName, toolCallId, args, toolDefinition, repair, deferResultUntilExpanded);\n\t\t\texisting.setExpanded(this.toolOutputExpanded);\n\t\t\tthis.appendToolExecutionComponent(existing, true);\n\t\t\tthis.toolPanels.register(toolCallId, existing, actionKey);\n\t\t\treturn existing;\n\t\t}\n\t\tconst component = new ToolExecutionComponent(\n\t\t\ttoolName,\n\t\t\ttoolCallId,\n\t\t\targs,\n\t\t\t{\n\t\t\t\tshowImages: this.settingsManager.getShowImages(),\n\t\t\t\timageWidthCells: this.settingsManager.getImageWidthCells(),\n\t\t\t\trepair,\n\t\t\t\tdeferResultUntilExpanded,\n\t\t\t},\n\t\t\ttoolDefinition,\n\t\t\tthis.ui,\n\t\t\tthis.sessionManager.getCwd(),\n\t\t);\n\t\tcomponent.setExpanded(this.toolOutputExpanded);\n\t\tthis.appendToolExecutionComponent(component, true);\n\t\tthis.toolPanels.register(toolCallId, component, actionKey);\n\t\treturn component;\n\t}\n\n\tpublic clearActiveToolCalls(): void {\n\t\tthis.toolPanels.clearActive();\n\t}\n\n\tprivate clearRenderedToolPanelState(): void {\n\t\tthis.toolPanels.clearAll();\n\t}\n\n\tprivate getWorkingLoaderMessage(): string {\n\t\treturn this.workingMessage ?? this.defaultWorkingMessage;\n\t}\n\n\tprivate createWorkingLoader(): Loader {\n\t\treturn new Loader(\n\t\t\tthis.ui,\n\t\t\t(spinner) => theme.fg(\"accent\", spinner),\n\t\t\t(text) => theme.fg(\"muted\", text),\n\t\t\tthis.getWorkingLoaderMessage(),\n\t\t\tthis.workingIndicatorOptions,\n\t\t);\n\t}\n\n\tprivate stopWorkingLoader(): void {\n\t\tif (this.loadingAnimation) {\n\t\t\tthis.loadingAnimation.stop();\n\t\t\tthis.loadingAnimation = undefined;\n\t\t}\n\t\tthis.statusContainer.clear();\n\t\tthis.activityLane?.remove(\"runtime:routing\");\n\t\tthis.activityLane?.remove(\"runtime:turn\");\n\t}\n\n\tprivate setWorkingVisible(visible: boolean): void {\n\t\tif (!this.hasHumanAudience) {\n\t\t\tthis.workingVisible = false;\n\t\t\tthis.stopWorkingLoader();\n\t\t\treturn;\n\t\t}\n\t\tthis.workingVisible = visible;\n\t\tif (!visible) {\n\t\t\tthis.stopWorkingLoader();\n\t\t\tthis.ui.requestRender();\n\t\t\treturn;\n\t\t}\n\t\tif (this.session.isStreaming && !this.loadingAnimation) {\n\t\t\tif (this.workingIndicatorOptions) {\n\t\t\t\tthis.statusContainer.clear();\n\t\t\t\tthis.loadingAnimation = this.createWorkingLoader();\n\t\t\t\tthis.statusContainer.addChild(this.loadingAnimation);\n\t\t\t} else {\n\t\t\t\tthis.activityLane?.start({ id: \"runtime:turn\", kind: \"runtime\", label: this.getWorkingLoaderMessage() });\n\t\t\t}\n\t\t}\n\t\tthis.ui.requestRender();\n\t}\n\n\tprivate setWorkingIndicator(options?: LoaderIndicatorOptions): void {\n\t\tthis.workingIndicatorOptions = options;\n\t\tif (!this.hasHumanAudience) {\n\t\t\tthis.stopWorkingLoader();\n\t\t\treturn;\n\t\t}\n\t\tif (options) {\n\t\t\tthis.activityLane?.remove(\"runtime:turn\");\n\t\t\tif (this.session.isStreaming && this.workingVisible) {\n\t\t\t\tthis.stopWorkingLoader();\n\t\t\t\tthis.loadingAnimation = this.createWorkingLoader();\n\t\t\t\tthis.statusContainer.addChild(this.loadingAnimation);\n\t\t\t}\n\t\t} else {\n\t\t\tthis.loadingAnimation?.stop();\n\t\t\tthis.loadingAnimation = undefined;\n\t\t\tthis.statusContainer.clear();\n\t\t\tif (this.session.isStreaming && this.workingVisible) {\n\t\t\t\tthis.activityLane?.start({ id: \"runtime:turn\", kind: \"runtime\", label: this.getWorkingLoaderMessage() });\n\t\t\t}\n\t\t}\n\t\tthis.ui.requestRender();\n\t}\n\n\tprivate setHiddenThinkingLabel(label?: string): void {\n\t\tthis.hiddenThinkingLabel = label ?? this.defaultHiddenThinkingLabel;\n\t\tfor (const child of this.chatContainer.children) {\n\t\t\tif (child instanceof AssistantMessageComponent) {\n\t\t\t\tchild.setHiddenThinkingLabel(this.hiddenThinkingLabel);\n\t\t\t}\n\t\t}\n\t\tif (this.streamingComponent) {\n\t\t\tthis.streamingComponent.setHiddenThinkingLabel(this.hiddenThinkingLabel);\n\t\t}\n\t\tthis.ui.requestRender();\n\t}\n\n\t/**\n\t * Set the extension-provided working-loader message (undefined restores the default).\n\t */\n\tprivate setWorkingMessage(message: string | undefined): void {\n\t\tthis.workingMessage = message;\n\t\tif (this.loadingAnimation) {\n\t\t\tthis.loadingAnimation.setMessage(message ?? this.defaultWorkingMessage);\n\t\t}\n\t\tthis.activityLane?.update(\"runtime:turn\", message ?? this.defaultWorkingMessage);\n\t}\n\n\t/**\n\t * Reset the working indicator and hidden-thinking label to their built-in defaults.\n\t */\n\tprivate resetWorkingIndicators(): void {\n\t\tthis.workingMessage = undefined;\n\t\tthis.workingVisible = this.hasHumanAudience;\n\t\tthis.setWorkingIndicator();\n\t\tif (this.loadingAnimation) {\n\t\t\tthis.loadingAnimation.setMessage(`${this.defaultWorkingMessage} (${keyText(\"app.interrupt\")} to interrupt)`);\n\t\t}\n\t\tthis.setHiddenThinkingLabel();\n\t}\n\n\tprivate async promptForMissingSessionCwd(error: MissingSessionCwdError): Promise<string | undefined> {\n\t\tconst confirmed = await this.extensionUiHost.showExtensionConfirm(\n\t\t\t\"Session cwd not found\",\n\t\t\tformatMissingSessionCwdPrompt(error.issue),\n\t\t);\n\t\treturn confirmed ? error.issue.fallbackCwd : undefined;\n\t}\n\n\t// =========================================================================\n\t// Key Handlers\n\t// =========================================================================\n\n\tprivate setupKeyHandlers(): void {\n\t\tkeyHandlers.setupKeyHandlers(this.keyHandlersHost());\n\t}\n\n\tprivate keyHandlersHost(): keyHandlers.KeyHandlersHost {\n\t\tconst self = this;\n\t\treturn {\n\t\t\tdefaultEditor: this.defaultEditor,\n\t\t\tui: this.ui,\n\t\t\tget editor() {\n\t\t\t\treturn self.editor;\n\t\t\t},\n\t\t\tget session() {\n\t\t\t\treturn self.session;\n\t\t\t},\n\t\t\tget settingsManager() {\n\t\t\t\treturn self.settingsManager;\n\t\t\t},\n\t\t\tget isBashMode() {\n\t\t\t\treturn self.isBashMode;\n\t\t\t},\n\t\t\tset isBashMode(value) {\n\t\t\t\tself.isBashMode = value;\n\t\t\t},\n\t\t\tget lastEscapeTime() {\n\t\t\t\treturn self.lastEscapeTime;\n\t\t\t},\n\t\t\tset lastEscapeTime(value) {\n\t\t\t\tself.lastEscapeTime = value;\n\t\t\t},\n\t\t\trestoreQueuedMessagesToEditor: (options) => this.restoreQueuedMessagesToEditor(options),\n\t\t\tupdateEditorBorderColor: () => this.updateEditorBorderColor(),\n\t\t\tshowTreeSelector: (id) => this.showTreeSelector(id),\n\t\t\tshowUserMessageSelector: (name) => this.showUserMessageSelector(name),\n\t\t\thandleCtrlC: () => this.handleCtrlC(),\n\t\t\thandleCtrlD: () => this.handleCtrlD(),\n\t\t\thandleCtrlZ: () => this.handleCtrlZ(),\n\t\t\tcycleThinkingLevel: () => this.cycleThinkingLevel(),\n\t\t\tcycleModel: (direction) => this.cycleModel(direction),\n\t\t\thandleDebugCommand: () => this.handleDebugCommand(),\n\t\t\tshowModelSelector: (input) => this.showModelSelector(input),\n\t\t\tloadTuiHistoryOnDemand: () => this.loadTuiHistoryOnDemand(),\n\t\t\tshowTranscriptPager: () => this.showTranscriptPager(),\n\t\t\ttoggleThinkingBlockVisibility: () => this.toggleThinkingBlockVisibility(),\n\t\t\topenExternalEditor: () => this.openExternalEditor(),\n\t\t\thandleFollowUp: () => this.handleFollowUp(),\n\t\t\thandleDequeue: () => this.handleDequeue(),\n\t\t\thandleClearCommand: (name) => this.handleClearCommand(name),\n\t\t\tshowSessionSelector: () => this.showSessionSelector(),\n\t\t\thandleClipboardImagePaste: () => this.handleClipboardImagePaste(),\n\t\t};\n\t}\n\n\tprivate handleClipboardImagePaste(): Promise<void> {\n\t\tconst selectedModel = this.session?.model;\n\t\tconst modelCannotSeeImages = selectedModel ? !selectedModel.input.includes(\"image\") : false;\n\t\treturn clipboardInput.handleClipboardImagePaste(\n\t\t\tclipboardInput.bindClipboardQueue(this.clipboardQueue, {\n\t\t\t\teditor: this.editor,\n\t\t\t\tui: this.ui,\n\t\t\t\tautoResizeImages: this.settingsManager.getImageAutoResize(),\n\t\t\t\tblockImages: this.settingsManager.getBlockImages() || modelCannotSeeImages,\n\t\t\t\tblockImagesReason: modelCannotSeeImages\n\t\t\t\t\t? \"The selected model does not accept image input. Switch to an image-capable model or route this inspection to a vision worker.\"\n\t\t\t\t\t: undefined,\n\t\t\t\timageStore: this.clipboardImageStore,\n\t\t\t\tshowStatus: (message) => this.showStatus(message),\n\t\t\t\tshowWarning: (message) => this.showWarning(message),\n\t\t\t}),\n\t\t);\n\t}\n\n\tprivate takeClipboardImagesForText(text: string): ImageContent[] | undefined {\n\t\treturn clipboardInput.takeClipboardImagesForText(\n\t\t\tclipboardInput.bindClipboardQueue(this.clipboardQueue, {\n\t\t\t\tclipboardImageStore: this.clipboardImageStore,\n\t\t\t}),\n\t\t\ttext,\n\t\t);\n\t}\n\n\tprivate buildUserInputSubmission(text: string): UserInputSubmission {\n\t\treturn clipboardInput.buildUserInputSubmission(\n\t\t\t{ takeClipboardImagesForText: (t) => this.takeClipboardImagesForText(t) },\n\t\t\ttext,\n\t\t);\n\t}\n\n\tprivate setupEditorSubmitHandler(): void {\n\t\tthis.defaultEditor.onSubmit = async (text: string) => {\n\t\t\ttext = text.trim();\n\t\t\tif (!text) return;\n\n\t\t\tif (text === \"/quit\" || text === \"/exit\") {\n\t\t\t\tthis.editor.setText(\"\");\n\t\t\t\tawait this.shutdown();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// A \">>\" prefix queues the message as a follow-up (delivered after the\n\t\t\t// current work finishes, starting the next round) instead of steering.\n\t\t\t// This is the chord-free alternative to app.message.followUp, which many\n\t\t\t// terminals swallow (e.g. Windows Terminal claims alt+enter).\n\t\t\tconst queueAsFollowUp = text.startsWith(\">>\");\n\t\t\tif (queueAsFollowUp) {\n\t\t\t\ttext = text.slice(2).trim();\n\t\t\t\tif (!text) return;\n\t\t\t}\n\n\t\t\t// User input submitted while work is active is always steering. Treat\n\t\t\t// slash/bang text as user steering text instead of executing commands that\n\t\t\t// would interrupt the current stream or compaction.\n\t\t\tif (this.session.isCompacting) {\n\t\t\t\tconst images = this.takeClipboardImagesForText(text);\n\t\t\t\tthis.queueCompactionMessage(text, queueAsFollowUp ? \"followUp\" : \"steer\", images);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (this.session.isStreaming || this.session.isRetrying) {\n\t\t\t\tconst images = this.takeClipboardImagesForText(text);\n\t\t\t\tthis.editor.addToHistory?.(text);\n\t\t\t\tthis.editor.setText(\"\");\n\t\t\t\ttry {\n\t\t\t\t\tawait this.session.prompt(text, {\n\t\t\t\t\t\tstreamingBehavior: queueAsFollowUp ? \"followUp\" : \"steer\",\n\t\t\t\t\t\timages,\n\t\t\t\t\t\tprocessSlashCommands: false,\n\t\t\t\t\t});\n\t\t\t\t} finally {\n\t\t\t\t\tthis.refreshAutonomyFooterStatus();\n\t\t\t\t}\n\t\t\t\tthis.updatePendingMessagesDisplay();\n\t\t\t\tthis.ui.requestRender();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Handle commands\n\t\t\tif (text === \"/settings\") {\n\t\t\t\tthis.showSettingsSelector();\n\t\t\t\tthis.editor.setText(\"\");\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (text === \"/auto-learn\" || text.startsWith(\"/auto-learn \")) {\n\t\t\t\tthis.handleAutoLearnCommand(text);\n\t\t\t\tthis.editor.setText(\"\");\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (text === \"/autonomy\" || text.startsWith(\"/autonomy \")) {\n\t\t\t\tthis.handleAutonomyCommand(text);\n\t\t\t\tthis.editor.setText(\"\");\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (text === \"/fitness\" || text.startsWith(\"/fitness \")) {\n\t\t\t\tconst fitnessArgs = text.slice(\"/fitness\".length).trim();\n\t\t\t\tthis.editor.setText(\"\");\n\t\t\t\tif (fitnessArgs.length === 0) {\n\t\t\t\t\t// No args: open the model picker, probe the selection, then offer role assignment.\n\t\t\t\t\tthis.showFitnessModelSelector();\n\t\t\t\t} else {\n\t\t\t\t\t// Explicit ref: same handler as /autonomy fitness.\n\t\t\t\t\tthis.handleAutonomyCommand(`/autonomy fitness ${fitnessArgs}`);\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (text === \"/models\" || text.startsWith(\"/models \")) {\n\t\t\t\tvoid this.handleModelsCommand(text.slice(\"/models\".length).trim());\n\t\t\t\tthis.editor.setText(\"\");\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (text === \"/context\") {\n\t\t\t\tthis.showStatus(this.session.formatContextCompositionDashboard());\n\t\t\t\tthis.editor.setText(\"\");\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (text === \"/toolhealth\") {\n\t\t\t\tthis.showStatus(this.session.formatToolRepairHealthReport());\n\t\t\t\tthis.editor.setText(\"\");\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (text === \"/toolprobe\" || text.startsWith(\"/toolprobe \")) {\n\t\t\t\tconst target = text.slice(\"/toolprobe\".length).trim();\n\t\t\t\tthis.editor.setText(\"\");\n\t\t\t\tthis.showStatus(\"Running tool probe...\");\n\t\t\t\ttry {\n\t\t\t\t\tconst report = await this.session.probeToolCalling(target || undefined);\n\t\t\t\t\tthis.showStatus(report.table);\n\t\t\t\t} catch (error: unknown) {\n\t\t\t\t\tthis.showWarning(error instanceof Error ? error.message : String(error));\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (text.startsWith(\"/toolrule-remove\")) {\n\t\t\t\tconst [model, mode] = text.slice(\"/toolrule-remove\".length).trim().split(/\\s+/, 2);\n\t\t\t\tconst message =\n\t\t\t\t\tmodel && mode\n\t\t\t\t\t\t? this.session.removeToolRepairRule(model, mode)\n\t\t\t\t\t\t\t? `Removed tool repair rule ${mode} for ${model}.`\n\t\t\t\t\t\t\t: `No tool repair rule ${mode} found for ${model}.`\n\t\t\t\t\t\t: \"Usage: /toolrule-remove <provider/model> <mode>\";\n\t\t\t\tthis.showStatus(message);\n\t\t\t\tthis.editor.setText(\"\");\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (text.startsWith(\"/toolprotocol-reset\")) {\n\t\t\t\tconst model = text.slice(\"/toolprotocol-reset\".length).trim();\n\t\t\t\tconst message = model\n\t\t\t\t\t? this.session.resetToolProtocolCalibration(model)\n\t\t\t\t\t\t? `Reset text tool protocol calibration for ${model}.`\n\t\t\t\t\t\t: `No text tool protocol calibration found for ${model}.`\n\t\t\t\t\t: \"Usage: /toolprotocol-reset <provider/model>\";\n\t\t\t\tthis.showStatus(message);\n\t\t\t\tthis.editor.setText(\"\");\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (text === \"/scoped-models\") {\n\t\t\t\tthis.editor.setText(\"\");\n\t\t\t\tawait this.showModelsSelector();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (text === \"/model\" || text.startsWith(\"/model \")) {\n\t\t\t\tconst searchTerm = text.startsWith(\"/model \") ? text.slice(7).trim() : undefined;\n\t\t\t\tthis.editor.setText(\"\");\n\t\t\t\tawait this.handleModelCommand(searchTerm);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (text === \"/profiles\" || text.startsWith(\"/profiles \")) {\n\t\t\t\tconst rawProfileName = text.startsWith(\"/profiles \") ? text.slice(10).trim() : undefined;\n\t\t\t\tthis.editor.setText(\"\");\n\t\t\t\tawait this.handleProfilesCommand(rawProfileName?.length ? rawProfileName : undefined);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (text === \"/export\" || text.startsWith(\"/export \")) {\n\t\t\t\tawait this.handleExportCommand(text);\n\t\t\t\tthis.editor.setText(\"\");\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (text === \"/import\" || text.startsWith(\"/import \")) {\n\t\t\t\tawait this.handleImportCommand(text);\n\t\t\t\tthis.editor.setText(\"\");\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (text === \"/share\") {\n\t\t\t\tawait this.handleShareCommand();\n\t\t\t\tthis.editor.setText(\"\");\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (text === \"/copy\") {\n\t\t\t\tawait this.handleCopyCommand();\n\t\t\t\tthis.editor.setText(\"\");\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (text === \"/name\" || text.startsWith(\"/name \")) {\n\t\t\t\tthis.handleNameCommand(text);\n\t\t\t\tthis.editor.setText(\"\");\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (text === \"/session\") {\n\t\t\t\tthis.handleSessionCommand();\n\t\t\t\tthis.editor.setText(\"\");\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (text === \"/usage\") {\n\t\t\t\tthis.handleUsageMenuCommand();\n\t\t\t\tthis.editor.setText(\"\");\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (text === \"/cost\") {\n\t\t\t\tthis.handleUsageCommand();\n\t\t\t\tthis.editor.setText(\"\");\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (text === \"/goal\" || text.startsWith(\"/goal \")) {\n\t\t\t\tawait this.handleGoalCommand(text);\n\t\t\t\tthis.editor.setText(\"\");\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (text === \"/task\" || text.startsWith(\"/task \") || text === \"/steps\" || text.startsWith(\"/steps \")) {\n\t\t\t\tthis.handleTaskCommand(text);\n\t\t\t\tthis.editor.setText(\"\");\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (text === \"/goal-continue\" || text.startsWith(\"/goal-continue \")) {\n\t\t\t\tawait this.handleGoalContinueCommand(text);\n\t\t\t\tthis.editor.setText(\"\");\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (text === \"/changelog\") {\n\t\t\t\tthis.handleChangelogCommand();\n\t\t\t\tthis.editor.setText(\"\");\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (text === \"/hotkeys\") {\n\t\t\t\tthis.handleHotkeysCommand();\n\t\t\t\tthis.editor.setText(\"\");\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (text === \"/fork\" || text.startsWith(\"/fork \")) {\n\t\t\t\tthis.showUserMessageSelector(text.slice(\"/fork\".length).trim() || undefined);\n\t\t\t\tthis.editor.setText(\"\");\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (text === \"/clone\" || text.startsWith(\"/clone \")) {\n\t\t\t\tthis.editor.setText(\"\");\n\t\t\t\tawait this.handleCloneCommand(text.slice(\"/clone\".length).trim() || undefined);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (text === \"/tree\") {\n\t\t\t\tthis.showTreeSelector();\n\t\t\t\tthis.editor.setText(\"\");\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (text === \"/trust\") {\n\t\t\t\tthis.showTrustSelector();\n\t\t\t\tthis.editor.setText(\"\");\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (text === \"/login\" || text.startsWith(\"/login \")) {\n\t\t\t\tawait this.authDialogs.showOAuthSelector(\"login\", text.slice(\"/login\".length).trim() || undefined);\n\t\t\t\tthis.editor.setText(\"\");\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (text === \"/logout\" || text.startsWith(\"/logout \")) {\n\t\t\t\tawait this.authDialogs.showOAuthSelector(\"logout\", text.slice(\"/logout\".length).trim() || undefined);\n\t\t\t\tthis.editor.setText(\"\");\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (text === \"/new\" || text.startsWith(\"/new \")) {\n\t\t\t\tthis.editor.setText(\"\");\n\t\t\t\tawait this.handleClearCommand(text.slice(\"/new\".length).trim() || undefined);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (text === \"/compact\" || text.startsWith(\"/compact \")) {\n\t\t\t\tconst customInstructions = text.startsWith(\"/compact \") ? text.slice(9).trim() : undefined;\n\t\t\t\tthis.editor.setText(\"\");\n\t\t\t\tawait this.handleCompactCommand(customInstructions);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (text === \"/reload\") {\n\t\t\t\tthis.editor.setText(\"\");\n\t\t\t\tawait this.handleReloadCommand();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (text === \"/curate\" || text.startsWith(\"/curate \")) {\n\t\t\t\tconst args = text.slice(\"/curate\".length).trim();\n\t\t\t\tthis.editor.setText(\"\");\n\t\t\t\tthis.handleCurateCommand(args);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (text === \"/install-resources\" || text.startsWith(\"/install-resources \")) {\n\t\t\t\tconst args = text.slice(\"/install-resources\".length).trim();\n\t\t\t\tthis.editor.setText(\"\");\n\t\t\t\tawait this.handleInstallResourcesCommand(args);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (text === \"/config-backup\" || text.startsWith(\"/config-backup \")) {\n\t\t\t\tconst file = text.slice(\"/config-backup\".length).trim() || undefined;\n\t\t\t\tthis.editor.setText(\"\");\n\t\t\t\tawait this.handleConfigBackupCommand(file);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (text === \"/config-restore\" || text.startsWith(\"/config-restore \")) {\n\t\t\t\tconst file = text.slice(\"/config-restore\".length).trim();\n\t\t\t\tthis.editor.setText(\"\");\n\t\t\t\tawait this.handleConfigRestoreCommand(file);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (text === \"/debug\") {\n\t\t\t\tthis.handleDebugCommand();\n\t\t\t\tthis.editor.setText(\"\");\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (text === \"/arminsayshi\") {\n\t\t\t\tthis.handleArminSaysHi();\n\t\t\t\tthis.editor.setText(\"\");\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (text === \"/dementedelves\") {\n\t\t\t\tthis.handleDementedDelves();\n\t\t\t\tthis.editor.setText(\"\");\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (text === \"/resume\") {\n\t\t\t\tthis.showSessionSelector();\n\t\t\t\tthis.editor.setText(\"\");\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// Handle bash command (! for normal, !! for excluded from context)\n\t\t\tif (text.startsWith(\"!\")) {\n\t\t\t\tconst isExcluded = text.startsWith(\"!!\");\n\t\t\t\tconst command = isExcluded ? text.slice(2).trim() : text.slice(1).trim();\n\t\t\t\tif (command) {\n\t\t\t\t\tif (this.session.isBashRunning) {\n\t\t\t\t\t\tthis.showWarning(\"A bash command is already running. Press Esc to cancel it first.\");\n\t\t\t\t\t\tthis.editor.setText(text);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tthis.editor.addToHistory?.(text);\n\t\t\t\t\tawait this.handleBashCommand(command, isExcluded);\n\t\t\t\t\tthis.isBashMode = false;\n\t\t\t\t\tthis.updateEditorBorderColor();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Normal message submission\n\t\t\t// First, move any pending bash components to chat\n\t\t\tthis.flushPendingBashComponents();\n\n\t\t\tconst submission = this.buildUserInputSubmission(text);\n\t\t\tif (this.onInputCallback) {\n\t\t\t\tthis.onInputCallback(submission);\n\t\t\t} else {\n\t\t\t\tthis.pendingUserInputs.push(submission);\n\t\t\t}\n\t\t\tthis.editor.addToHistory?.(text);\n\t\t};\n\t}\n\n\tprivate subscribeToAgent(): void {\n\t\tthis.unsubscribe = this.session.subscribe(async (event) => {\n\t\t\tawait this.handleEvent(event);\n\t\t});\n\t}\n\n\tprivate handleEvent(event: AgentSessionEvent): Promise<void> {\n\t\treturn handleInteractiveEvent(this as unknown as InteractiveEventHost, event);\n\t}\n\t/** Extract text content from a user message */\n\t// Thin `this.`-delegate to the pure formatter in ./history-reload-math.ts; kept so\n\t// addMessageToChat and the prototype-based interactive-mode tests resolve it via `this`.\n\tprivate getUserMessageText(message: Message): string {\n\t\treturn historyReloadMath.getUserMessageText(message);\n\t}\n\n\tprivate setEditorInputHistory(history: readonly string[]): void {\n\t\tif (this.editor.setHistory) {\n\t\t\tthis.editor.setHistory(history);\n\t\t\treturn;\n\t\t}\n\t\tfor (const text of history) {\n\t\t\tthis.editor.addToHistory?.(text);\n\t\t}\n\t}\n\n\tprivate populateEditorInputHistoryFromMessages(messages: readonly AgentMessage[]): void {\n\t\tconst history = messages\n\t\t\t.filter((message): message is Message => message.role === \"user\")\n\t\t\t.map((message) => this.getUserMessageText(message).trim())\n\t\t\t.filter((text) => text.length > 0)\n\t\t\t.slice(-100);\n\t\tthis.setEditorInputHistory(history);\n\t}\n\n\tprivate populateEditorInputHistoryFromSession(): void {\n\t\tconst sessionManager = this.sessionManager as { getRecentUserInputHistory?: (limit?: number) => string[] };\n\t\tconst history = sessionManager.getRecentUserInputHistory?.(100);\n\t\tif (history) this.setEditorInputHistory(history);\n\t}\n\n\tprivate resetLiveTuiHistoryTrim(): void {\n\t\tthis.liveHistoryHiddenNotice = undefined;\n\t\tthis.liveHistoryHiddenComponents = 0;\n\t}\n\n\tprivate clearPendingStreamingUiUpdate(): void {\n\t\tif (!this.streamingUiUpdateTimer) return;\n\t\tclearTimeout(this.streamingUiUpdateTimer);\n\t\tthis.streamingUiUpdateTimer = undefined;\n\t}\n\n\tprivate getSessionEntryCount(): number {\n\t\tconst manager = this.sessionManager as typeof this.sessionManager & { getEntryCount?: () => number };\n\t\treturn manager.getEntryCount?.() ?? manager.getEntries().length;\n\t}\n\n\tprivate showDeferredHistoryPlaceholder(options: { requestRender?: boolean } = {}): void {\n\t\tthis.chatContainer.children = [];\n\t\tthis.resetLiveTuiHistoryTrim();\n\t\tthis.clearRenderedToolPanelState();\n\n\t\tconst entryCount = this.getSessionEntryCount();\n\t\tif (entryCount > 0) {\n\t\t\tthis.chatContainer.addChild(\n\t\t\t\tnew Text(\n\t\t\t\t\ttheme.fg(\n\t\t\t\t\t\t\"dim\",\n\t\t\t\t\t\t`History hidden for typing performance (${entryCount} entries). Press ${keyText(\"app.tools.expand\")} to load session history on demand.`,\n\t\t\t\t\t),\n\t\t\t\t\t1,\n\t\t\t\t\t0,\n\t\t\t\t),\n\t\t\t);\n\t\t}\n\n\t\tif (options.requestRender ?? true) this.ui.requestRender();\n\t}\n\n\tprivate loadTuiHistoryOnDemand(): void {\n\t\tif (this.tuiHistoryLoadInProgress) return;\n\t\tif (this.tuiHistoryLoaded || this.getSessionEntryCount() === 0) {\n\t\t\tthis.toggleToolOutputExpansion();\n\t\t\treturn;\n\t\t}\n\n\t\tthis.tuiHistoryLoadInProgress = true;\n\t\tvoid (async () => {\n\t\t\ttry {\n\t\t\t\tawait this.renderInitialMessages({ forceHistoryLoad: true });\n\t\t\t} catch (error) {\n\t\t\t\tthis.showError(`Failed to load TUI history: ${error instanceof Error ? error.message : String(error)}`);\n\t\t\t} finally {\n\t\t\t\tthis.tuiHistoryLoadInProgress = false;\n\t\t\t}\n\t\t})();\n\t}\n\n\tprivate showTranscriptPager(): void {\n\t\tlet handle: ReturnType<TUI[\"showOverlay\"]> | undefined;\n\t\tconst pager = new TranscriptPager({\n\t\t\tsource: this.chatContainer,\n\t\t\tviewportRows: () => this.ui.terminal.rows,\n\t\t\tkeybindings: this.keybindings,\n\t\t\tonClose: () => handle?.hide(),\n\t\t});\n\t\thandle = this.ui.showOverlay(pager, {\n\t\t\twidth: \"100%\",\n\t\t\tmaxHeight: \"100%\",\n\t\t\trow: 0,\n\t\t\tcol: 0,\n\t\t});\n\t}\n\n\tprivate attachStreamingToolPanels(message: AssistantMessage): void {\n\t\tfor (const content of message.content) {\n\t\t\tif (content.type !== \"toolCall\") continue;\n\t\t\tconst repair = getToolCallRepairInfo(content);\n\t\t\tif (!this.toolPanels.hasActive(content.id)) {\n\t\t\t\tthis.attachToolExecutionComponent(content.name, content.id, content.arguments, repair);\n\t\t\t} else {\n\t\t\t\tconst component = this.toolPanels.getActive(content.id);\n\t\t\t\tif (component) {\n\t\t\t\t\tcomponent.updateArgs(content.arguments, repair);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic applyStreamingMessageUpdate(message: AssistantMessage, options: { force?: boolean } = {}): void {\n\t\tthis.streamingMessage = message;\n\t\tif (!this.streamingComponent) return;\n\n\t\tconst now = performance.now();\n\t\tconst elapsed = now - this.lastStreamingUiUpdateAt;\n\t\tconst hasToolCall = message.content.some((content) => content.type === \"toolCall\");\n\t\tconst shouldUpdateNow = options.force || hasToolCall || elapsed >= STREAMING_UI_UPDATE_INTERVAL_MS;\n\n\t\tconst update = () => {\n\t\t\tif (!this.streamingComponent || !this.streamingMessage) return;\n\t\t\tthis.streamingComponent.updateContent(this.streamingMessage);\n\t\t\tthis.attachStreamingToolPanels(this.streamingMessage);\n\t\t\tthis.lastStreamingUiUpdateAt = performance.now();\n\t\t\tthis.ui.requestRender();\n\t\t};\n\n\t\tif (shouldUpdateNow) {\n\t\t\tthis.clearPendingStreamingUiUpdate();\n\t\t\tupdate();\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.streamingUiUpdateTimer) return;\n\t\tthis.streamingUiUpdateTimer = setTimeout(\n\t\t\t() => {\n\t\t\t\tthis.streamingUiUpdateTimer = undefined;\n\t\t\t\tupdate();\n\t\t\t},\n\t\t\tMath.max(0, STREAMING_UI_UPDATE_INTERVAL_MS - elapsed),\n\t\t);\n\t}\n\n\tprivate trimLiveTuiHistory(): void {\n\t\tconst children = this.chatContainer.children;\n\t\tif (children.length <= TUI_LIVE_HISTORY_MAX_COMPONENTS) return;\n\n\t\tlet protectedStart = children.length;\n\t\tconst protect = (component: Component | undefined) => {\n\t\t\tif (!component) return;\n\t\t\tconst index = children.indexOf(component);\n\t\t\tif (index !== -1 && index < protectedStart) protectedStart = index;\n\t\t};\n\n\t\tprotect(this.streamingComponent);\n\t\tprotect(this.lastStatusSpacer);\n\t\tprotect(this.lastStatusText);\n\t\tfor (const [, component] of this.toolPanels.activeEntries()) {\n\t\t\tprotect(component);\n\t\t}\n\n\t\tconst trimStart = children[0] === this.liveHistoryHiddenNotice ? 1 : 0;\n\t\tconst targetTrimEnd = children.length - TUI_LIVE_HISTORY_TRIM_TO_COMPONENTS;\n\t\tconst trimEnd = Math.min(targetTrimEnd, protectedStart);\n\t\tif (trimEnd <= trimStart) return;\n\n\t\tconst removed = children.splice(trimStart, trimEnd - trimStart);\n\t\tthis.liveHistoryHiddenComponents += removed.length;\n\t\tif (removed.includes(this.lastStatusSpacer as Component)) this.lastStatusSpacer = undefined;\n\t\tif (removed.includes(this.lastStatusText as Component)) this.lastStatusText = undefined;\n\n\t\tconst noticeText = theme.fg(\n\t\t\t\"dim\",\n\t\t\t`Older TUI history hidden to preserve FPS (${this.liveHistoryHiddenComponents} components). Full session remains available to the model.`,\n\t\t);\n\t\tif (children[0] === this.liveHistoryHiddenNotice) {\n\t\t\tthis.liveHistoryHiddenNotice?.setText(noticeText);\n\t\t\treturn;\n\t\t}\n\n\t\tthis.liveHistoryHiddenNotice = new Text(noticeText, 1, 0);\n\t\tchildren.unshift(this.liveHistoryHiddenNotice);\n\t}\n\n\tprivate appendStatusToChat(message: string, options: { requestRender?: boolean } = {}): void {\n\t\tconst children = this.chatContainer.children;\n\t\tconst last = children.length > 0 ? children[children.length - 1] : undefined;\n\t\tconst secondLast = children.length > 1 ? children[children.length - 2] : undefined;\n\n\t\tif (last && secondLast && last === this.lastStatusText && secondLast === this.lastStatusSpacer) {\n\t\t\tthis.lastStatusText.setText(theme.fg(\"dim\", message));\n\t\t\tif (options.requestRender ?? true) this.ui.requestRender();\n\t\t\treturn;\n\t\t}\n\n\t\tconst spacer = new Spacer(1);\n\t\tconst text = new Text(theme.fg(\"dim\", message), 1, 0);\n\t\tthis.chatContainer.addChild(spacer);\n\t\tthis.chatContainer.addChild(text);\n\t\tthis.lastStatusSpacer = spacer;\n\t\tthis.lastStatusText = text;\n\t\tthis.trimLiveTuiHistory();\n\t\tif (options.requestRender ?? true) this.ui.requestRender();\n\t}\n\n\t/**\n\t * Show a status message in the chat.\n\t *\n\t * If multiple status messages are emitted back-to-back (without anything else being added to the chat),\n\t * we update the previous status line instead of appending new ones to avoid log spam.\n\t */\n\tprivate showStatus(message: string): void {\n\t\tif (!this.hasHumanAudience) return;\n\t\tthis.appendStatusToChat(message);\n\t}\n\n\tprivate addMessageToChat(message: AgentMessage, options?: { populateHistory?: boolean }): void {\n\t\tswitch (message.role) {\n\t\t\tcase \"bashExecution\": {\n\t\t\t\tconst component = new BashExecutionComponent(message.command, this.ui, message.excludeFromContext);\n\t\t\t\tif (message.output) {\n\t\t\t\t\tcomponent.appendOutput(message.output);\n\t\t\t\t}\n\t\t\t\tcomponent.setComplete(\n\t\t\t\t\tmessage.exitCode,\n\t\t\t\t\tmessage.cancelled,\n\t\t\t\t\tmessage.truncated ? ({ truncated: true } as TruncationResult) : undefined,\n\t\t\t\t\tmessage.fullOutputPath,\n\t\t\t\t);\n\t\t\t\tthis.chatContainer.addChild(component);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"custom\": {\n\t\t\t\tif (message.display) {\n\t\t\t\t\tconst renderer = this.session.extensionRunner.getMessageRenderer(message.customType);\n\t\t\t\t\tconst component = new CustomMessageComponent(message, renderer, this.getMarkdownThemeWithSettings());\n\t\t\t\t\tcomponent.setExpanded(this.toolOutputExpanded);\n\t\t\t\t\tthis.chatContainer.addChild(component);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"compactionSummary\": {\n\t\t\t\tthis.chatContainer.addChild(new Spacer(1));\n\t\t\t\tconst component = new CompactionSummaryMessageComponent(message, this.getMarkdownThemeWithSettings());\n\t\t\t\tcomponent.setExpanded(this.toolOutputExpanded);\n\t\t\t\tthis.chatContainer.addChild(component);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"branchSummary\": {\n\t\t\t\tthis.chatContainer.addChild(new Spacer(1));\n\t\t\t\tconst component = new BranchSummaryMessageComponent(message, this.getMarkdownThemeWithSettings());\n\t\t\t\tcomponent.setExpanded(this.toolOutputExpanded);\n\t\t\t\tthis.chatContainer.addChild(component);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"user\": {\n\t\t\t\tconst textContent = this.getUserMessageText(message);\n\t\t\t\tif (textContent) {\n\t\t\t\t\tif (this.chatContainer.children.length > 0) {\n\t\t\t\t\t\tthis.chatContainer.addChild(new Spacer(1));\n\t\t\t\t\t}\n\t\t\t\t\tconst skillBlock = parseSkillBlock(textContent);\n\t\t\t\t\tif (skillBlock) {\n\t\t\t\t\t\t// Render skill block (collapsible)\n\t\t\t\t\t\tconst component = new SkillInvocationMessageComponent(\n\t\t\t\t\t\t\tskillBlock,\n\t\t\t\t\t\t\tthis.getMarkdownThemeWithSettings(),\n\t\t\t\t\t\t);\n\t\t\t\t\t\tcomponent.setExpanded(this.toolOutputExpanded);\n\t\t\t\t\t\tthis.chatContainer.addChild(component);\n\t\t\t\t\t\t// Render user message separately if present\n\t\t\t\t\t\tif (skillBlock.userMessage) {\n\t\t\t\t\t\t\tconst userComponent = new UserMessageComponent(\n\t\t\t\t\t\t\t\tskillBlock.userMessage,\n\t\t\t\t\t\t\t\tthis.getMarkdownThemeWithSettings(),\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tthis.chatContainer.addChild(userComponent);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst userComponent = new UserMessageComponent(textContent, this.getMarkdownThemeWithSettings());\n\t\t\t\t\t\tthis.chatContainer.addChild(userComponent);\n\t\t\t\t\t}\n\t\t\t\t\tif (options?.populateHistory) {\n\t\t\t\t\t\tthis.editor.addToHistory?.(textContent);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"assistant\": {\n\t\t\t\tconst assistantComponent = new AssistantMessageComponent(\n\t\t\t\t\tmessage,\n\t\t\t\t\tthis.hideThinkingBlock,\n\t\t\t\t\tthis.getMarkdownThemeWithSettings(),\n\t\t\t\t\tthis.hiddenThinkingLabel,\n\t\t\t\t);\n\t\t\t\tthis.chatContainer.addChild(assistantComponent);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"toolResult\": {\n\t\t\t\t// Tool results are rendered inline with tool calls, handled separately\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tdefault: {\n\t\t\t\tconst _exhaustive: never = message;\n\t\t\t}\n\t\t}\n\t\tthis.trimLiveTuiHistory();\n\t}\n\n\t// Thin `this.`-delegate to the pure reload-window math in ./history-reload-math.ts;\n\t// kept so renderSessionContext and the prototype-based history tests resolve it via `this`.\n\tprivate messagesForTuiHistoryReload(messages: AgentMessage[]): {\n\t\tmessages: AgentMessage[];\n\t\tomittedMessages: number;\n\t\testimatedLines: number;\n\t} {\n\t\treturn historyReloadMath.messagesForTuiHistoryReload(messages, {\n\t\t\tincludeToolResultContent: this.toolOutputExpanded,\n\t\t});\n\t}\n\n\t/**\n\t * Render session context to chat. Used for initial load and rebuild after compaction.\n\t * @param sessionContext Session context to render\n\t * @param options.updateFooter Update footer state\n\t * @param options.populateHistory Add user messages to editor history\n\t */\n\tprivate renderGeneration = 0;\n\tprivate renderQueue?: Promise<void>;\n\n\tprivate async renderSessionContext(\n\t\tsessionContext: SessionContext,\n\t\toptions: { updateFooter?: boolean; populateHistory?: boolean } = {},\n\t): Promise<void> {\n\t\tconst run = async () => {\n\t\t\t// Build long history offscreen, then atomically swap it into the visible\n\t\t\t// chat container. This keeps the TUI responsive without flashing blank or\n\t\t\t// partial transcript frames during resume/reload/compaction rebuilds.\n\t\t\tthis.renderGeneration = (this.renderGeneration ?? 0) + 1;\n\t\t\tconst generation = this.renderGeneration;\n\t\t\tlet processed = 0;\n\t\t\tlet committed = false;\n\n\t\t\tconst visibleChatContainer = this.chatContainer;\n\t\t\tconst previousLiveHistoryHiddenNotice = this.liveHistoryHiddenNotice;\n\t\t\tconst previousLiveHistoryHiddenComponents = this.liveHistoryHiddenComponents;\n\t\t\tconst previousLastStatusSpacer = this.lastStatusSpacer;\n\t\t\tconst previousLastStatusText = this.lastStatusText;\n\t\t\tconst stagingChatContainer = new Container();\n\n\t\t\tthis.chatContainer = stagingChatContainer;\n\t\t\tthis.resetLiveTuiHistoryTrim();\n\t\t\tthis.clearRenderedToolPanelState();\n\t\t\tconst renderedPendingTools = new Map<string, ToolExecutionComponent>();\n\n\t\t\ttry {\n\t\t\t\tif (options.updateFooter) {\n\t\t\t\t\tthis.footer.invalidate();\n\t\t\t\t\tthis.updateEditorBorderColor();\n\t\t\t\t}\n\n\t\t\t\tconst tuiHistory = this.messagesForTuiHistoryReload(sessionContext.messages);\n\t\t\t\tif (tuiHistory.omittedMessages > 0) {\n\t\t\t\t\tthis.appendStatusToChat(\n\t\t\t\t\t\t`Showing last ~${historyReloadMath.TUI_HISTORY_RELOAD_MAX_LINES} TUI history lines; omitted ${tuiHistory.omittedMessages} older message${tuiHistory.omittedMessages === 1 ? \"\" : \"s\"}. Full session remains available to the model.`,\n\t\t\t\t\t\t{ requestRender: false },\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tfor (const message of tuiHistory.messages) {\n\t\t\t\t\tif (processed > 0 && processed % TUI_HISTORY_RELOAD_CHUNK_SIZE === 0) {\n\t\t\t\t\t\tawait new Promise((resolve) => setImmediate(resolve));\n\t\t\t\t\t\tif (generation !== this.renderGeneration) return;\n\t\t\t\t\t}\n\t\t\t\t\tprocessed++;\n\t\t\t\t\t// Assistant messages need special handling for tool calls\n\t\t\t\t\tif (message.role === \"assistant\") {\n\t\t\t\t\t\tthis.addMessageToChat(message);\n\t\t\t\t\t\t// Render tool call components\n\t\t\t\t\t\tfor (const content of message.content) {\n\t\t\t\t\t\t\tif (content.type === \"toolCall\") {\n\t\t\t\t\t\t\t\tconst component = this.attachToolExecutionComponent(\n\t\t\t\t\t\t\t\t\tcontent.name,\n\t\t\t\t\t\t\t\t\tcontent.id,\n\t\t\t\t\t\t\t\t\tcontent.arguments,\n\t\t\t\t\t\t\t\t\tundefined,\n\t\t\t\t\t\t\t\t\ttrue,\n\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\tif (message.stopReason === \"aborted\" || message.stopReason === \"error\") {\n\t\t\t\t\t\t\t\t\tlet errorMessage: string;\n\t\t\t\t\t\t\t\t\tif (message.stopReason === \"aborted\") {\n\t\t\t\t\t\t\t\t\t\tconst retryAttempt = this.session.retryAttempt;\n\t\t\t\t\t\t\t\t\t\terrorMessage =\n\t\t\t\t\t\t\t\t\t\t\tretryAttempt > 0\n\t\t\t\t\t\t\t\t\t\t\t\t? `Aborted after ${retryAttempt} retry attempt${retryAttempt > 1 ? \"s\" : \"\"}`\n\t\t\t\t\t\t\t\t\t\t\t\t: \"Operation aborted\";\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\terrorMessage = message.errorMessage || \"Error\";\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tcomponent.updateResult({ content: [{ type: \"text\", text: errorMessage }], isError: true });\n\t\t\t\t\t\t\t\t\tthis.toolPanels.finish(content.id);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\trenderedPendingTools.set(content.id, component);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (message.role === \"toolResult\") {\n\t\t\t\t\t\t// Match tool results to pending tool components\n\t\t\t\t\t\tconst component = renderedPendingTools.get(message.toolCallId);\n\t\t\t\t\t\tif (component) {\n\t\t\t\t\t\t\tcomponent.updateResult(message);\n\t\t\t\t\t\t\trenderedPendingTools.delete(message.toolCallId);\n\t\t\t\t\t\t\tthis.toolPanels.finish(message.toolCallId);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// All other messages use standard rendering\n\t\t\t\t\t\tthis.addMessageToChat(message, options);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (generation !== this.renderGeneration) return;\n\t\t\t\tvisibleChatContainer.children = stagingChatContainer.children;\n\t\t\t\tcommitted = true;\n\t\t\t} finally {\n\t\t\t\tconst stagedLiveHistoryHiddenNotice = this.liveHistoryHiddenNotice;\n\t\t\t\tconst stagedLiveHistoryHiddenComponents = this.liveHistoryHiddenComponents;\n\t\t\t\tconst stagedLastStatusSpacer = this.lastStatusSpacer;\n\t\t\t\tconst stagedLastStatusText = this.lastStatusText;\n\n\t\t\t\tthis.chatContainer = visibleChatContainer;\n\t\t\t\tif (committed) {\n\t\t\t\t\tthis.liveHistoryHiddenNotice = stagedLiveHistoryHiddenNotice;\n\t\t\t\t\tthis.liveHistoryHiddenComponents = stagedLiveHistoryHiddenComponents;\n\t\t\t\t\tthis.lastStatusSpacer = stagedLastStatusSpacer;\n\t\t\t\t\tthis.lastStatusText = stagedLastStatusText;\n\t\t\t\t} else {\n\t\t\t\t\tthis.liveHistoryHiddenNotice = previousLiveHistoryHiddenNotice;\n\t\t\t\t\tthis.liveHistoryHiddenComponents = previousLiveHistoryHiddenComponents;\n\t\t\t\t\tthis.lastStatusSpacer = previousLastStatusSpacer;\n\t\t\t\t\tthis.lastStatusText = previousLastStatusText;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (committed) this.ui.requestRender();\n\t\t};\n\n\t\tthis.renderQueue = (this.renderQueue ?? Promise.resolve()).then(run, run);\n\t\treturn this.renderQueue;\n\t}\n\n\tasync renderInitialMessages(options: { forceHistoryLoad?: boolean } = {}): Promise<void> {\n\t\tif (!options.forceHistoryLoad) {\n\t\t\tthis.populateEditorInputHistoryFromSession();\n\t\t\tthis.tuiHistoryLoaded = false;\n\t\t\tthis.showDeferredHistoryPlaceholder({ requestRender: true });\n\t\t\tthis.footer.invalidate();\n\t\t\tthis.updateEditorBorderColor();\n\t\t\treturn;\n\t\t}\n\n\t\t// Get aligned messages and entries from session context only when the user\n\t\t// explicitly requests TUI history. The model/session state is already loaded.\n\t\tconst context = this.sessionManager.buildSessionContext();\n\t\tthis.populateEditorInputHistoryFromMessages(context.messages);\n\t\tawait this.renderSessionContext(context, {\n\t\t\tupdateFooter: true,\n\t\t});\n\t\tthis.tuiHistoryLoaded = true;\n\n\t\t// Show compaction info if session was compacted\n\t\tconst allEntries = this.sessionManager.getEntries();\n\t\tconst compactionCount = allEntries.filter((e) => e.type === \"compaction\").length;\n\t\tif (compactionCount > 0) {\n\t\t\tconst times = compactionCount === 1 ? \"1 time\" : `${compactionCount} times`;\n\t\t\tthis.showStatus(`Session compacted ${times}`);\n\t\t}\n\t}\n\n\tasync getUserInput(): Promise<UserInputSubmission> {\n\t\tconst queuedInput = this.pendingUserInputs.shift();\n\t\tif (queuedInput !== undefined) {\n\t\t\treturn queuedInput;\n\t\t}\n\n\t\treturn new Promise((resolve) => {\n\t\t\tthis.onInputCallback = (submission: UserInputSubmission) => {\n\t\t\t\tthis.onInputCallback = undefined;\n\t\t\t\tresolve(submission);\n\t\t\t};\n\t\t});\n\t}\n\n\tprivate async rebuildChatFromMessages(): Promise<void> {\n\t\tif (!this.tuiHistoryLoaded) {\n\t\t\tthis.showDeferredHistoryPlaceholder({ requestRender: true });\n\t\t\treturn;\n\t\t}\n\t\tconst context = this.sessionManager.buildSessionContext();\n\t\tawait this.renderSessionContext(context);\n\t}\n\n\t// =========================================================================\n\t// Key handlers\n\t// =========================================================================\n\n\tprivate handleCtrlC(): void {\n\t\tconst now = Date.now();\n\t\tif (now - this.lastSigintTime < 500) {\n\t\t\tvoid this.shutdown();\n\t\t} else {\n\t\t\tthis.clearEditor();\n\t\t\tthis.lastSigintTime = now;\n\t\t}\n\t}\n\n\tprivate handleCtrlD(): void {\n\t\t// Only called when editor is empty (enforced by CustomEditor)\n\t\tvoid this.shutdown();\n\t}\n\n\t/**\n\t * Gracefully shutdown the agent.\n\t * Stops the TUI before emitting shutdown events so extension UI cleanup cannot\n\t * repaint the final frame while the process is exiting.\n\t */\n\tprivate isShuttingDown = false;\n\n\tprivate shutdown(options?: { fromSignal?: boolean }): Promise<void> {\n\t\tconst self = this;\n\t\treturn signalLifecycle.shutdown(\n\t\t\t{\n\t\t\t\tget isShuttingDown() {\n\t\t\t\t\treturn self.isShuttingDown;\n\t\t\t\t},\n\t\t\t\tset isShuttingDown(value) {\n\t\t\t\t\tself.isShuttingDown = value;\n\t\t\t\t},\n\t\t\t\tget signalCleanupHandlers() {\n\t\t\t\t\treturn self.signalCleanupHandlers;\n\t\t\t\t},\n\t\t\t\tset signalCleanupHandlers(value) {\n\t\t\t\t\tself.signalCleanupHandlers = value;\n\t\t\t\t},\n\t\t\t\tget shutdownRequested() {\n\t\t\t\t\treturn self.shutdownRequested;\n\t\t\t\t},\n\t\t\t\truntimeHost: this.runtimeHost,\n\t\t\t\tui: this.ui,\n\t\t\t\tstop: () => this.stop(),\n\t\t\t\tformatResumeCommand: () => formatResumeCommand(this.sessionManager),\n\t\t\t\tshowStatus: (message) => this.showStatus(message),\n\t\t\t\tshutdown: (opts) => this.shutdown(opts),\n\t\t\t\tunregisterSignalHandlers: () => this.unregisterSignalHandlers(),\n\t\t\t\temergencyTerminalExit: () => this.emergencyTerminalExit(),\n\t\t\t\tuncaughtCrash: (error) => this.uncaughtCrash(error),\n\t\t\t},\n\t\t\toptions,\n\t\t);\n\t}\n\n\tprivate emergencyTerminalExit(): never {\n\t\treturn signalLifecycle.emergencyTerminalExit(this as unknown as signalLifecycle.SignalLifecycleHost);\n\t}\n\n\tprivate uncaughtCrash(error: Error): never {\n\t\treturn signalLifecycle.uncaughtCrash(this as unknown as signalLifecycle.SignalLifecycleHost, error);\n\t}\n\n\tprivate checkShutdownRequested(): Promise<void> {\n\t\treturn signalLifecycle.checkShutdownRequested(this as unknown as signalLifecycle.SignalLifecycleHost);\n\t}\n\n\tprivate registerSignalHandlers(): void {\n\t\tsignalLifecycle.registerSignalHandlers(this as unknown as signalLifecycle.SignalLifecycleHost);\n\t}\n\n\tprivate unregisterSignalHandlers(): void {\n\t\tsignalLifecycle.unregisterSignalHandlers(this as unknown as signalLifecycle.SignalLifecycleHost);\n\t}\n\n\tprivate handleCtrlZ(): void {\n\t\tsignalLifecycle.handleCtrlZ({ ui: this.ui, showStatus: (message) => this.showStatus(message) });\n\t}\n\n\tprivate async handleFollowUp(): Promise<void> {\n\t\tconst text = (this.editor.getExpandedText?.() ?? this.editor.getText()).trim();\n\t\tif (!text) return;\n\n\t\t// Queue input during compaction (extension commands execute immediately)\n\t\tif (this.session.isCompacting) {\n\t\t\tif (this.isExtensionCommand(text)) {\n\t\t\t\tthis.editor.addToHistory?.(text);\n\t\t\t\tthis.editor.setText(\"\");\n\t\t\t\ttry {\n\t\t\t\t\tawait this.session.prompt(text);\n\t\t\t\t} finally {\n\t\t\t\t\tthis.refreshAutonomyFooterStatus();\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconst images = this.takeClipboardImagesForText(text);\n\t\t\t\tthis.queueCompactionMessage(text, \"followUp\", images);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\t// Alt+Enter queues a follow-up message (waits until agent finishes)\n\t\t// This handles extension commands (execute immediately), prompt template expansion, and queueing\n\t\tif (this.session.isStreaming) {\n\t\t\tconst images = this.takeClipboardImagesForText(text);\n\t\t\tthis.editor.addToHistory?.(text);\n\t\t\tthis.editor.setText(\"\");\n\t\t\ttry {\n\t\t\t\tawait this.session.prompt(text, { streamingBehavior: \"followUp\", images });\n\t\t\t} finally {\n\t\t\t\tthis.refreshAutonomyFooterStatus();\n\t\t\t}\n\t\t\tthis.updatePendingMessagesDisplay();\n\t\t\tthis.ui.requestRender();\n\t\t}\n\t\t// If not streaming, Alt+Enter acts like regular Enter (trigger onSubmit)\n\t\telse if (this.editor.onSubmit) {\n\t\t\tawait this.editor.onSubmit(text);\n\t\t\tthis.editor.setText(\"\");\n\t\t}\n\t}\n\n\tprivate handleDequeue(): void {\n\t\tconst restored = this.restoreQueuedMessagesToEditor();\n\t\tif (restored === 0) {\n\t\t\tthis.showStatus(\"No queued messages to restore\");\n\t\t} else {\n\t\t\tthis.showStatus(`Restored ${restored} queued message${restored > 1 ? \"s\" : \"\"} to editor`);\n\t\t}\n\t}\n\n\tprivate updateEditorBorderColor(): void {\n\t\tif (this.isBashMode) {\n\t\t\tthis.editor.borderColor = theme.getBashModeBorderColor();\n\t\t} else {\n\t\t\tconst level = this.session.thinkingLevel || \"off\";\n\t\t\tthis.editor.borderColor = theme.getThinkingBorderColor(level);\n\t\t}\n\t\tthis.ui.requestRender();\n\t}\n\n\tprivate cycleThinkingLevel(): void {\n\t\tconst newLevel = this.session.cycleThinkingLevel();\n\t\tif (newLevel === undefined) {\n\t\t\tthis.showStatus(\"Current model does not support thinking\");\n\t\t} else {\n\t\t\tthis.footer.invalidate();\n\t\t\tthis.updateEditorBorderColor();\n\t\t\tthis.showStatus(`Thinking level: ${newLevel}`);\n\t\t}\n\t}\n\n\tprivate async cycleModel(direction: \"forward\" | \"backward\"): Promise<void> {\n\t\ttry {\n\t\t\tconst result = await this.session.cycleModel(direction);\n\t\t\tif (result === undefined) {\n\t\t\t\tconst msg = this.session.scopedModels.length > 0 ? \"Only one model in scope\" : \"Only one model available\";\n\t\t\t\tthis.showStatus(msg);\n\t\t\t} else {\n\t\t\t\tthis.footer.invalidate();\n\t\t\t\tthis.updateEditorBorderColor();\n\t\t\t\tconst thinkingStr =\n\t\t\t\t\tresult.model.reasoning && result.thinkingLevel !== \"off\" ? ` (thinking: ${result.thinkingLevel})` : \"\";\n\t\t\t\tthis.showStatus(`Switched to ${result.model.name || result.model.id}${thinkingStr}`);\n\t\t\t\tvoid this.maybeWarnAboutAnthropicSubscriptionAuth(result.model);\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tthis.showError(error instanceof Error ? error.message : String(error));\n\t\t}\n\t}\n\n\tprivate toggleToolOutputExpansion(): void {\n\t\tthis.setToolsExpanded(!this.toolOutputExpanded);\n\t}\n\n\tprivate setToolsExpanded(expanded: boolean): void {\n\t\tthis.toolOutputExpanded = expanded;\n\t\tconst activeHeader = this.extensionUiHost.getCustomHeader() ?? this.builtInHeader;\n\t\tif (isExpandable(activeHeader)) {\n\t\t\tactiveHeader.setExpanded(expanded);\n\t\t}\n\t\tfor (const child of this.chatContainer.children) {\n\t\t\tif (isExpandable(child)) {\n\t\t\t\tchild.setExpanded(expanded);\n\t\t\t}\n\t\t}\n\t\tthis.ui.requestRender();\n\t}\n\n\tprivate async toggleThinkingBlockVisibility(): Promise<void> {\n\t\tthis.hideThinkingBlock = !this.hideThinkingBlock;\n\t\tthis.settingsManager.setHideThinkingBlock(this.hideThinkingBlock);\n\n\t\t// Rebuild chat from session messages\n\t\tawait this.rebuildChatFromMessages();\n\n\t\t// If streaming, re-add the streaming component with updated visibility and re-render\n\t\tif (this.streamingComponent && this.streamingMessage) {\n\t\t\tthis.streamingComponent.setHideThinkingBlock(this.hideThinkingBlock);\n\t\t\tthis.streamingComponent.updateContent(this.streamingMessage);\n\t\t\tthis.chatContainer.addChild(this.streamingComponent);\n\t\t}\n\n\t\tthis.showStatus(`Thinking blocks: ${this.hideThinkingBlock ? \"hidden\" : \"visible\"}`);\n\t}\n\n\tprivate openExternalEditor(): Promise<void> {\n\t\treturn openExternalEditor({\n\t\t\teditor: this.editor,\n\t\t\tui: this.ui,\n\t\t\tshowWarning: (message) => this.showWarning(message),\n\t\t});\n\t}\n\n\tprivate openEditorForPath(filePath: string): Promise<boolean> {\n\t\treturn openEditorForPath(\n\t\t\t{\n\t\t\t\teditor: this.editor,\n\t\t\t\tui: this.ui,\n\t\t\t\tshowWarning: (message) => this.showWarning(message),\n\t\t\t},\n\t\t\tfilePath,\n\t\t);\n\t}\n\n\t// =========================================================================\n\t// UI helpers\n\t// =========================================================================\n\n\tclearEditor(): void {\n\t\tthis.editor.setText(\"\");\n\t\tthis.ui.requestRender();\n\t}\n\n\tshowError(errorMessage: string): void {\n\t\tthis.chatContainer.addChild(new Spacer(1));\n\t\tthis.chatContainer.addChild(new Text(theme.fg(\"error\", `Error: ${errorMessage}`), 1, 0));\n\t\tthis.chatContainer.addChild(new Spacer(1));\n\t\tthis.ui.requestRender();\n\t}\n\n\tshowWarning(warningMessage: string): void {\n\t\tthis.chatContainer.addChild(new Spacer(1));\n\t\tthis.chatContainer.addChild(new Text(theme.fg(\"warning\", `Warning: ${warningMessage}`), 1, 0));\n\t\tthis.ui.requestRender();\n\t}\n\n\tshowNewVersionNotification(release: LatestPiRelease): void {\n\t\tstartupChecks.showNewVersionNotification(this.startupChecksHost(), release);\n\t}\n\n\tshowPackageUpdateNotification(packages: string[]): void {\n\t\tstartupChecks.showPackageUpdateNotification(this.startupChecksHost(), packages);\n\t}\n\n\t/**\n\t * Get all queued messages (read-only).\n\t * Combines session queue and compaction queue.\n\t */\n\tprivate getAllQueuedMessages(): { steering: string[]; followUp: string[] } {\n\t\treturn {\n\t\t\tsteering: [\n\t\t\t\t...this.session.getSteeringMessages(),\n\t\t\t\t...this.compactionQueuedMessages.filter((msg) => msg.mode === \"steer\").map((msg) => msg.text),\n\t\t\t],\n\t\t\tfollowUp: [\n\t\t\t\t...this.session.getFollowUpMessages(),\n\t\t\t\t...this.session.getQueuedExtensionCommands(),\n\t\t\t\t...this.compactionQueuedMessages.filter((msg) => msg.mode === \"followUp\").map((msg) => msg.text),\n\t\t\t],\n\t\t};\n\t}\n\n\t/**\n\t * Clear all queued messages and return their contents.\n\t * Clears both session queue and compaction queue.\n\t */\n\tprivate clearAllQueues(): { steering: string[]; followUp: string[] } {\n\t\tconst { steering, followUp, commands } = this.session.clearQueue();\n\t\tconst compactionSteering = this.compactionQueuedMessages\n\t\t\t.filter((msg) => msg.mode === \"steer\")\n\t\t\t.map((msg) => msg.text);\n\t\tconst compactionFollowUp = this.compactionQueuedMessages\n\t\t\t.filter((msg) => msg.mode === \"followUp\")\n\t\t\t.map((msg) => msg.text);\n\t\tthis.compactionQueuedMessages = [];\n\t\treturn {\n\t\t\tsteering: [...steering, ...compactionSteering],\n\t\t\tfollowUp: [...followUp, ...commands, ...compactionFollowUp],\n\t\t};\n\t}\n\n\tprivate updatePendingMessagesDisplay(): void {\n\t\tthis.pendingMessagesContainer.clear();\n\t\tfor (const component of this.pendingBashComponents) this.pendingMessagesContainer.addChild(component);\n\t\tconst { steering: steeringMessages, followUp: followUpMessages } = this.getAllQueuedMessages();\n\t\tconst steeringCount = steeringMessages.length;\n\t\tconst followUpCount = followUpMessages.length;\n\t\tconst total = steeringCount + followUpCount;\n\t\tif (total > 0) {\n\t\t\tconst dequeueHint = this.getAppKeyDisplay(\"app.message.dequeue\");\n\t\t\tconst details = [\n\t\t\t\tsteeringCount > 0 ? `${steeringCount} steering` : undefined,\n\t\t\t\tfollowUpCount > 0 ? `${followUpCount} follow-up` : undefined,\n\t\t\t]\n\t\t\t\t.filter((value): value is string => value !== undefined)\n\t\t\t\t.join(\" · \");\n\t\t\tthis.activityLane?.wait({\n\t\t\t\tid: \"queue:messages\",\n\t\t\t\tkind: \"queue\",\n\t\t\t\tlabel: `Queued ${total} · ${details} · ${dequeueHint} edit`,\n\t\t\t});\n\t\t} else {\n\t\t\tthis.activityLane?.remove(\"queue:messages\");\n\t\t}\n\t}\n\n\tprivate restoreQueuedMessagesToEditor(options?: { abort?: boolean; currentText?: string }): number {\n\t\tconst { steering, followUp } = this.clearAllQueues();\n\t\tconst allQueued = [...steering, ...followUp];\n\t\tif (allQueued.length === 0) {\n\t\t\tthis.updatePendingMessagesDisplay();\n\t\t\tif (options?.abort) {\n\t\t\t\tthis.agent.abort();\n\t\t\t}\n\t\t\treturn 0;\n\t\t}\n\t\tconst queuedText = allQueued.join(\"\\n\\n\");\n\t\tconst currentText = options?.currentText ?? this.editor.getText();\n\t\tconst combinedText = [queuedText, currentText].filter((t) => t.trim()).join(\"\\n\\n\");\n\t\tthis.editor.setText(combinedText);\n\t\tthis.updatePendingMessagesDisplay();\n\t\tif (options?.abort) {\n\t\t\tthis.agent.abort();\n\t\t}\n\t\treturn allQueued.length;\n\t}\n\n\tprivate queueCompactionMessage(text: string, mode: \"steer\" | \"followUp\", images?: ImageContent[]): void {\n\t\tthis.compactionQueuedMessages.push({ text, mode, images });\n\t\tthis.editor.addToHistory?.(text);\n\t\tthis.editor.setText(\"\");\n\t\tthis.updatePendingMessagesDisplay();\n\t\tthis.showStatus(\"Queued message for after compaction\");\n\t}\n\n\tprivate isExtensionCommand(text: string): boolean {\n\t\tif (!text.startsWith(\"/\")) return false;\n\n\t\tconst extensionRunner = this.session.extensionRunner;\n\n\t\tconst spaceIndex = text.indexOf(\" \");\n\t\tconst commandName = spaceIndex === -1 ? text.slice(1) : text.slice(1, spaceIndex);\n\t\treturn !!extensionRunner.getCommand(commandName);\n\t}\n\n\tprivate flushCompactionQueue(options?: { willRetry?: boolean }): Promise<void> {\n\t\tconst self = this;\n\t\treturn compactionQueue.flushCompactionQueue(\n\t\t\t{\n\t\t\t\tget compactionQueuedMessages() {\n\t\t\t\t\treturn self.compactionQueuedMessages;\n\t\t\t\t},\n\t\t\t\tset compactionQueuedMessages(value) {\n\t\t\t\t\tself.compactionQueuedMessages = value;\n\t\t\t\t},\n\t\t\t\tsession: this.session,\n\t\t\t\tupdatePendingMessagesDisplay: () => this.updatePendingMessagesDisplay(),\n\t\t\t\tshowError: (message) => this.showError(message),\n\t\t\t\tisExtensionCommand: (text) => this.isExtensionCommand(text),\n\t\t\t\trefreshAutonomyFooterStatus: () => this.refreshAutonomyFooterStatus(),\n\t\t\t},\n\t\t\toptions,\n\t\t);\n\t}\n\n\t/** Move pending bash components from pending area to chat */\n\tprivate flushPendingBashComponents(): void {\n\t\tfor (const component of this.pendingBashComponents) {\n\t\t\tthis.pendingMessagesContainer.removeChild(component);\n\t\t\tthis.chatContainer.addChild(component);\n\t\t}\n\t\tthis.pendingBashComponents = [];\n\t}\n\n\t// =========================================================================\n\t// Selectors\n\t// =========================================================================\n\n\t/**\n\t * Shows a selector component in place of the editor.\n\t * @param create Factory that receives a `done` callback and returns the component and focus target\n\t */\n\tprivate showSelector(\n\t\tcreate: (done: () => void) => {\n\t\t\tcomponent: Component;\n\t\t\tfocus: Component;\n\t\t\tonSuperseded?: () => void;\n\t\t},\n\t): void {\n\t\tthis.overlayHost.showSelector(() => this.editor, create);\n\t}\n\n\t/** Narrow seam shared by the session-picker/tree/fork and model-selector flows. */\n\tprivate sessionFlowHost(): sessionFlows.SessionFlowHost {\n\t\tconst self = this;\n\t\treturn {\n\t\t\tsession: this.session,\n\t\t\tsessionManager: this.sessionManager,\n\t\t\tsettingsManager: this.settingsManager,\n\t\t\truntimeHost: this.runtimeHost,\n\t\t\tui: this.ui,\n\t\t\tchatContainer: this.chatContainer,\n\t\t\tstatusContainer: this.statusContainer,\n\t\t\teditor: this.editor,\n\t\t\tdefaultEditor: this.defaultEditor,\n\t\t\tfooter: this.footer,\n\t\t\textensionUiHost: this.extensionUiHost,\n\t\t\tkeybindings: this.keybindings,\n\t\t\tget loadingAnimation() {\n\t\t\t\treturn self.loadingAnimation;\n\t\t\t},\n\t\t\tset loadingAnimation(value) {\n\t\t\t\tself.loadingAnimation = value;\n\t\t\t},\n\t\t\tshowSelector: (create) => this.showSelector(create),\n\t\t\tshowStatus: (message) => this.showStatus(message),\n\t\t\tshowError: (message) => this.showError(message),\n\t\t\trefreshAutonomyFooterStatus: () => this.refreshAutonomyFooterStatus(),\n\t\t\trenderCurrentSessionState: () => this.renderCurrentSessionState(),\n\t\t\trenderInitialMessages: (options) => this.renderInitialMessages(options),\n\t\t\tflushCompactionQueue: (options) => this.flushCompactionQueue(options),\n\t\t\thandleFatalRuntimeError: (prefix, error) => this.handleFatalRuntimeError(prefix, error),\n\t\t\tpromptForMissingSessionCwd: (error) => this.promptForMissingSessionCwd(error),\n\t\t\tupdateEditorBorderColor: () => this.updateEditorBorderColor(),\n\t\t\tupdateAvailableProviderCount: () => this.updateAvailableProviderCount(),\n\t\t\tmaybeWarnAboutAnthropicSubscriptionAuth: (model) => this.maybeWarnAboutAnthropicSubscriptionAuth(model),\n\t\t\tcheckDaxnutsEasterEgg: (model) => this.checkDaxnutsEasterEgg(model),\n\t\t\tgetModelCandidates: () => this.getModelCandidates(),\n\t\t\tshutdown: (options) => this.shutdown(options),\n\t\t};\n\t}\n\n\tprivate getAutoLearnModelOptions(): SelectItem[] {\n\t\treturn this.autoLearnController.getAutoLearnModelOptions();\n\t}\n\n\tprivate getAutoLearnDataDir(): string {\n\t\treturn this.autoLearnController.getAutoLearnDataDir();\n\t}\n\n\tprivate getPrunedAutoLearnState(): AutoLearnState {\n\t\treturn this.autoLearnController.getPrunedAutoLearnState();\n\t}\n\n\tprivate getAutoLearnPresetForAutonomyMode(\n\t\tmode: AutonomyMode,\n\t\tcurrent: AutoLearnSettings = {},\n\t): Required<AutoLearnSettings> {\n\t\treturn this.autoLearnController.getAutoLearnPresetForAutonomyMode(mode, current);\n\t}\n\n\tprivate getEffectiveAutoLearnSettings(): Required<AutoLearnSettings> {\n\t\treturn this.autoLearnController.getEffectiveAutoLearnSettings();\n\t}\n\n\tprivate getCurrentAutoLearnSettings(): Required<AutoLearnSettings> {\n\t\treturn this.autoLearnController.getCurrentAutoLearnSettings();\n\t}\n\n\tprivate getAutoLearnTenantKey(): string {\n\t\treturn this.autoLearnController.getAutoLearnTenantKey();\n\t}\n\n\tprivate getAutoLearnTenantDataDir(): string {\n\t\treturn this.autoLearnController.getAutoLearnTenantDataDir();\n\t}\n\n\tprivate validateAutoLearnModelValue(value: string | undefined): string | undefined {\n\t\treturn this.autoLearnController.validateAutoLearnModelValue(value);\n\t}\n\n\tprivate getCurrentCwdForSettings(): string {\n\t\treturn this.runtimeHost?.session?.sessionManager?.getCwd?.() || process.cwd();\n\t}\n\n\tprivate resolveSelfModificationSource(settings: {\n\t\tsourcePath?: string;\n\t\tsourcePaths?: string[];\n\t}): string | undefined {\n\t\tconst cwd = this.getCurrentCwdForSettings();\n\t\tconst resolved = collectSelfModificationSourceCandidates(settings).map((candidate) =>\n\t\t\tresolvePath(candidate, cwd, { trim: true }),\n\t\t);\n\t\tif (resolved.length === 0) return undefined;\n\t\treturn (\n\t\t\tresolved.find(\n\t\t\t\t(candidate) => fs.existsSync(candidate) && fs.existsSync(path.join(candidate, \"package.json\")),\n\t\t\t) ?? resolved[0]\n\t\t);\n\t}\n\n\tprivate validateSelfModificationSource(settings: SelfModificationSettings): string | undefined {\n\t\tif (!settings.enabled) return undefined;\n\t\tconst cwd = this.getCurrentCwdForSettings();\n\t\tconst resolved = collectSelfModificationSourceCandidates(settings).map((candidate) =>\n\t\t\tresolvePath(candidate, cwd, { trim: true }),\n\t\t);\n\t\tif (resolved.length === 0) return \"Self modification is enabled, but no pi-adaptative source path is set.\";\n\t\tconst valid = resolved.find(\n\t\t\t(candidate) =>\n\t\t\t\tfs.existsSync(candidate) &&\n\t\t\t\tfs.existsSync(path.join(candidate, \"package.json\")) &&\n\t\t\t\tfs.existsSync(path.join(candidate, \"packages\", \"coding-agent\")),\n\t\t);\n\t\tif (valid) return undefined;\n\t\tconst first = resolved[0];\n\t\tif (!fs.existsSync(first)) return `Self modification source path does not exist: ${first}`;\n\t\tif (!fs.existsSync(path.join(first, \"package.json\"))) {\n\t\t\treturn `Self modification source path has no package.json: ${first}`;\n\t\t}\n\t\treturn `Self modification source path does not look like pi-adaptative (missing packages/coding-agent): ${first}`;\n\t}\n\n\tprivate launchAutoLearn(\n\t\treason: string,\n\t\tforce = false,\n\t\toptions: {\n\t\t\tcooldownKind?: \"auto\" | \"reflection\";\n\t\t\tpromptKind?: \"auto\" | \"reflection\";\n\t\t\tturnDigest?: string;\n\t\t\tbypassReflectionCooldown?: boolean;\n\t\t} = {},\n\t): string {\n\t\treturn this.autoLearnController.launchAutoLearn(reason, force, options);\n\t}\n\n\tprivate isNativeReflectionEnabled(): boolean {\n\t\treturn this.autoLearnController.isNativeReflectionEnabled();\n\t}\n\n\tprivate maybeRunNativeReflection(messages: AgentMessage[]): void {\n\t\tthis.autoLearnController.maybeRunNativeReflection(messages);\n\t}\n\n\tprivate maybeStartAutoLearn(): boolean {\n\t\treturn this.autoLearnController.maybeStartAutoLearn();\n\t}\n\n\tprivate maybeStartAutonomyReview(messages: AgentMessage[]): boolean {\n\t\treturn this.autoLearnController.maybeStartAutonomyReview(messages);\n\t}\n\n\tprivate updateAutoLearnFooter(): void {\n\t\tthis.autoLearnController.updateAutoLearnFooter();\n\t}\n\n\tprivate formatAutoLearnStatus(): string {\n\t\treturn this.autoLearnController.formatAutoLearnStatus();\n\t}\n\n\tprivate applyAutonomyMode(mode: AutonomyMode, scope: SettingsScope = \"global\"): void {\n\t\tconst currentAutoLearn = this.settingsManager.getAutoLearnSettings();\n\t\tconst preset = this.getAutoLearnPresetForAutonomyMode(mode, currentAutoLearn);\n\t\tthis.settingsManager.setAutonomySettings({ ...this.settingsManager.getAutonomySettings(), mode }, scope);\n\t\tthis.settingsManager.setAutoLearnSettings(preset, scope);\n\t\tthis.updateAutoLearnFooter();\n\t}\n\n\t/**\n\t * Delegates to the session rather than keeping its own instance (#27): the model router boots a\n\t * local server through AgentSession.getLocalRuntime() before a routed turn, and `/models`\n\t * commands need to see and be able to stop that SAME pi-managed process, not an unrelated one\n\t * tracked separately here.\n\t */\n\tprivate get localRuntime(): OllamaRuntime {\n\t\treturn this.session.getLocalRuntime();\n\t}\n\n\tprivate getTransformersRuntime(modelId: string, baseUrl?: string): TransformersRuntime {\n\t\treturn this.session.getTransformersRuntime(modelId, baseUrl);\n\t}\n\n\tprivate getPrismLlamaCppRuntime(): PrismLlamaCppRuntime {\n\t\treturn this.session.getPrismLlamaCppRuntime();\n\t}\n\n\t/** Narrow seam shared by the /models and /fitness flows. */\n\tprivate localModelHost(): localModelCommands.LocalModelHost {\n\t\treturn {\n\t\t\tlocalRuntime: this.localRuntime,\n\t\t\tsession: this.session,\n\t\t\tsettingsManager: this.settingsManager,\n\t\t\tui: this.ui,\n\t\t\tchatContainer: this.chatContainer,\n\t\t\tgetTransformersRuntime: (modelId, baseUrl) => this.getTransformersRuntime(modelId, baseUrl),\n\t\t\tgetPrismLlamaCppRuntime: () => this.getPrismLlamaCppRuntime(),\n\t\t\tshowStatus: (message) => this.showStatus(message),\n\t\t\tshowError: (message) => this.showError(message),\n\t\t\tshowSelector: (create) => this.showSelector(create),\n\t\t};\n\t}\n\n\tprivate handleModelsCommand(argsText: string): Promise<void> {\n\t\treturn localModelCommands.handleModelsCommand(this.localModelHost(), argsText);\n\t}\n\n\tprivate showFitnessModelSelector(): void {\n\t\tlocalModelCommands.showFitnessModelSelector(this.localModelHost());\n\t}\n\n\tprivate runFitnessAndAssign(modelRef: string, preselectRole?: FitnessRole): Promise<void> {\n\t\treturn localModelCommands.runFitnessAndAssign(\n\t\t\t{\n\t\t\t\tsession: this.session,\n\t\t\t\tsettingsManager: this.settingsManager,\n\t\t\t\tchatContainer: this.chatContainer,\n\t\t\t\tui: this.ui,\n\t\t\t\tshowStatus: (message) => this.showStatus(message),\n\t\t\t\tshowError: (message) => this.showError(message),\n\t\t\t\tshowSelector: (create) => this.showSelector(create),\n\t\t\t},\n\t\t\tmodelRef,\n\t\t\tpreselectRole,\n\t\t);\n\t}\n\n\tprivate assignFitnessRole(modelRef: string, role: FitnessRole): void {\n\t\tlocalModelCommands.assignFitnessRole(\n\t\t\t{\n\t\t\t\tsettingsManager: this.settingsManager,\n\t\t\t\tshowStatus: (message) => this.showStatus(message),\n\t\t\t},\n\t\t\tmodelRef,\n\t\t\trole,\n\t\t);\n\t}\n\n\t/** Narrow seam for the /autonomy and /auto-learn command bodies. */\n\tprivate autonomyHost(): autonomyCommands.AutonomyHost {\n\t\treturn {\n\t\t\tsession: this.session,\n\t\t\tsettingsManager: this.settingsManager,\n\t\t\tchatContainer: this.chatContainer,\n\t\t\tui: this.ui,\n\t\t\tshowStatus: (message) => this.showStatus(message),\n\t\t\tapplyAutonomyMode: (mode, scope) => this.applyAutonomyMode(mode, scope),\n\t\t\tlaunchAutoLearn: (reason, force, options) => this.launchAutoLearn(reason, force, options),\n\t\t\tformatAutoLearnStatus: () => this.formatAutoLearnStatus(),\n\t\t\tgetEffectiveAutoLearnSettings: () => this.getEffectiveAutoLearnSettings(),\n\t\t\tgetPrunedAutoLearnState: () => this.getPrunedAutoLearnState(),\n\t\t\tgetAutoLearnTenantKey: () => this.getAutoLearnTenantKey(),\n\t\t\tgetAutoLearnDataDir: () => this.getAutoLearnDataDir(),\n\t\t\tgetAutoLearnTenantDataDir: () => this.getAutoLearnTenantDataDir(),\n\t\t};\n\t}\n\n\tprivate handleAutonomyCommand(text: string): void {\n\t\tautonomyCommands.handleAutonomyCommand(this.autonomyHost(), text);\n\t}\n\n\tprivate handleAutoLearnCommand(text: string): void {\n\t\tautonomyCommands.handleAutoLearnCommand(this.autonomyHost(), text);\n\t}\n\n\t/** Wide seam for the /settings selector; the hideThinkingBlock field is read+written here. */\n\tprivate settingsSelectorHost(): settingsSelectorFlow.SettingsSelectorHost {\n\t\tconst self = this;\n\t\treturn {\n\t\t\tsession: this.session,\n\t\t\tsettingsManager: this.settingsManager,\n\t\t\tfooter: this.footer,\n\t\t\tchatContainer: this.chatContainer,\n\t\t\tui: this.ui,\n\t\t\tdefaultEditor: this.defaultEditor,\n\t\t\teditor: this.editor,\n\t\t\tget hideThinkingBlock() {\n\t\t\t\treturn self.hideThinkingBlock;\n\t\t\t},\n\t\t\tset hideThinkingBlock(value) {\n\t\t\t\tself.hideThinkingBlock = value;\n\t\t\t},\n\t\t\tshowSelector: (create) => this.showSelector(create),\n\t\t\tshowStatus: (message) => this.showStatus(message),\n\t\t\tshowWarning: (message) => this.showWarning(message),\n\t\t\tshowError: (message) => this.showError(message),\n\t\t\tgetAutoLearnModelOptions: () => this.getAutoLearnModelOptions(),\n\t\t\tsetupAutocompleteProvider: () => this.setupAutocompleteProvider(),\n\t\t\tupdateEditorBorderColor: () => this.updateEditorBorderColor(),\n\t\t\trebuildChatFromMessages: () => this.rebuildChatFromMessages(),\n\t\t\tvalidateSelfModificationSource: (settings) => this.validateSelfModificationSource(settings),\n\t\t\tapplyAutonomyMode: (mode, scope) => this.applyAutonomyMode(mode, scope),\n\t\t\tvalidateAutoLearnModelValue: (value) => this.validateAutoLearnModelValue(value),\n\t\t\tupdateAutoLearnFooter: () => this.updateAutoLearnFooter(),\n\t\t\thandleResourcesHubAction: (action) => this.handleResourcesHubAction(action),\n\t\t};\n\t}\n\n\tprivate showSettingsSelector(): void {\n\t\tsettingsSelectorFlow.showSettingsSelector(this.settingsSelectorHost());\n\t}\n\n\tprivate handleResourcesHubAction(action: string): Promise<void> {\n\t\treturn this.profileMenu.handleResourcesHubAction(action);\n\t}\n\n\tprivate handleProfilesCommand(profileName?: string): Promise<void> {\n\t\treturn this.profileMenu.handleProfilesCommand(profileName);\n\t}\n\n\tprivate refreshAfterProfileMutation(profileName: string): Promise<void> {\n\t\treturn this.profileMenu.refreshAfterProfileMutation(profileName);\n\t}\n\n\tprivate async handleModelCommand(searchTerm?: string): Promise<void> {\n\t\tawait sessionFlows.handleModelCommand(this.sessionFlowHost(), searchTerm);\n\t}\n\n\tprivate async getModelCandidates(): Promise<Model<any>[]> {\n\t\tif (this.session.scopedModels.length > 0) {\n\t\t\treturn this.session.scopedModels.map((scoped) => scoped.model);\n\t\t}\n\n\t\tthis.session.modelRegistry.refresh();\n\t\ttry {\n\t\t\treturn await this.session.modelRegistry.getAvailable();\n\t\t} catch {\n\t\t\treturn [];\n\t\t}\n\t}\n\n\t/** Update the footer's available provider count from current model candidates */\n\tprivate async updateAvailableProviderCount(): Promise<void> {\n\t\tconst models = await this.getModelCandidates();\n\t\tconst uniqueProviders = new Set(models.map((m) => m.provider));\n\t\tthis.footerDataProvider.setAvailableProviderCount(uniqueProviders.size);\n\t}\n\n\tprivate async maybeWarnAboutAnthropicSubscriptionAuth(\n\t\tmodel: Model<any> | undefined = this.session.model,\n\t): Promise<void> {\n\t\tif (this.settingsManager.getWarnings().anthropicExtraUsage === false) {\n\t\t\treturn;\n\t\t}\n\t\tif (this.anthropicSubscriptionWarningShown) {\n\t\t\treturn;\n\t\t}\n\t\tif (!model || model.provider !== \"anthropic\") {\n\t\t\treturn;\n\t\t}\n\n\t\tconst storedCredential = this.session.modelRegistry.authStorage.get(\"anthropic\");\n\t\tif (storedCredential?.type === \"oauth\") {\n\t\t\tthis.anthropicSubscriptionWarningShown = true;\n\t\t\tthis.showWarning(ANTHROPIC_SUBSCRIPTION_AUTH_WARNING);\n\t\t\treturn;\n\t\t}\n\n\t\ttry {\n\t\t\tconst apiKey = await this.session.modelRegistry.getApiKeyForProvider(model.provider);\n\t\t\tif (!isAnthropicSubscriptionAuthKey(apiKey)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.anthropicSubscriptionWarningShown = true;\n\t\t\tthis.showWarning(ANTHROPIC_SUBSCRIPTION_AUTH_WARNING);\n\t\t} catch {\n\t\t\t// Ignore auth lookup failures for warning-only checks.\n\t\t}\n\t}\n\n\tprivate async showModelSelector(initialSearchInput?: string): Promise<void> {\n\t\tawait sessionFlows.showModelSelector(this.sessionFlowHost(), initialSearchInput);\n\t}\n\n\tprivate async showModelsSelector(): Promise<void> {\n\t\tawait sessionFlows.showModelsSelector(this.sessionFlowHost());\n\t}\n\n\tprivate showUserMessageSelector(newSessionName?: string): void {\n\t\tsessionFlows.showUserMessageSelector(this.sessionFlowHost(), newSessionName);\n\t}\n\n\tprivate async handleCloneCommand(newSessionName?: string): Promise<void> {\n\t\tawait sessionFlows.handleCloneCommand(\n\t\t\t{\n\t\t\t\tsessionManager: this.sessionManager,\n\t\t\t\truntimeHost: this.runtimeHost,\n\t\t\t\trenderCurrentSessionState: () => this.renderCurrentSessionState(),\n\t\t\t\teditor: this.editor,\n\t\t\t\tsession: this.session,\n\t\t\t\tshowStatus: (message) => this.showStatus(message),\n\t\t\t\tshowError: (message) => this.showError(message),\n\t\t\t\tui: this.ui,\n\t\t\t},\n\t\t\tnewSessionName,\n\t\t);\n\t}\n\n\tprivate showTreeSelector(initialSelectedId?: string): void {\n\t\tsessionFlows.showTreeSelector(this.sessionFlowHost(), initialSelectedId);\n\t}\n\n\tprivate showTrustSelector(): void {\n\t\tsessionFlows.showTrustSelector(this.sessionFlowHost());\n\t}\n\n\tprivate showSessionSelector(): void {\n\t\tsessionFlows.showSessionSelector(this.sessionFlowHost());\n\t}\n\n\tprivate handleResumeSession(\n\t\tsessionPath: string,\n\t\toptions?: Parameters<ExtensionCommandContext[\"switchSession\"]>[1],\n\t): Promise<{ cancelled: boolean }> {\n\t\treturn sessionFlows.handleResumeSession(this.sessionFlowHost(), sessionPath, options);\n\t}\n\n\t// =========================================================================\n\t// Command handlers\n\t// =========================================================================\n\n\tprivate async handleReloadCommand(): Promise<void> {\n\t\tawait this.handleReloadCommandWithResult();\n\t}\n\n\t/** Reload and report whether the previous runtime was replaced successfully. */\n\tprivate async handleReloadCommandWithResult(): Promise<boolean> {\n\t\tif (this.session.isStreaming) {\n\t\t\tthis.showWarning(\"Wait for the current response to finish before reloading.\");\n\t\t\treturn false;\n\t\t}\n\t\tif (this.session.isCompacting) {\n\t\t\tthis.showWarning(\"Wait for compaction to finish before reloading.\");\n\t\t\treturn false;\n\t\t}\n\n\t\tthis.extensionUiHost.resetExtensionUI();\n\n\t\tconst reloadBox = new Container();\n\t\tconst borderColor = (s: string) => theme.fg(\"border\", s);\n\t\treloadBox.addChild(new DynamicBorder(borderColor));\n\t\treloadBox.addChild(new Spacer(1));\n\t\treloadBox.addChild(\n\t\t\tnew Text(theme.fg(\"muted\", \"Reloading keybindings, extensions, skills, prompts, themes...\"), 1, 0),\n\t\t);\n\t\treloadBox.addChild(new Spacer(1));\n\t\treloadBox.addChild(new DynamicBorder(borderColor));\n\n\t\tconst previousEditor = this.editor;\n\t\tlet reloadBoxActive = true;\n\t\tthis.overlayHost.swap(reloadBox, {\n\t\t\trender: \"sync\",\n\t\t\tonUnmount: () => {\n\t\t\t\treloadBoxActive = false;\n\t\t\t},\n\t\t});\n\t\t// Let the terminal paint the reload notice before CPU-heavy extension/theme\n\t\t// work begins. process.nextTick runs before I/O and can still make reloads\n\t\t// appear frozen.\n\t\tawait new Promise((resolve) => setImmediate(resolve));\n\n\t\tconst dismissReloadBox = (editor: Component) => {\n\t\t\tif (!reloadBoxActive) return;\n\t\t\treloadBoxActive = false;\n\t\t\tthis.overlayHost.swap(editor);\n\t\t};\n\n\t\ttry {\n\t\t\tawait this.session.reload();\n\t\t\tconfigureHttpDispatcher(this.settingsManager.getHttpIdleTimeoutMs());\n\t\t\tthis.keybindings.reload();\n\t\t\tthis.refreshExtensionPresentation();\n\t\t\tthis.ui.setShowHardwareCursor(this.settingsManager.getShowHardwareCursor());\n\t\t\tthis.ui.setClearOnShrink(this.settingsManager.getClearOnShrink());\n\t\t\tthis.setupAutocompleteProvider();\n\t\t\tconst runner = this.session.extensionRunner;\n\t\t\tthis.extensionUiHost.setupExtensionShortcuts(runner);\n\t\t\tawait this.rebuildChatFromMessages();\n\t\t\tdismissReloadBox(this.editor as Component);\n\t\t\tthis.showLoadedResources({\n\t\t\t\tforce: false,\n\t\t\t\tshowDiagnosticsWhenQuiet: true,\n\t\t\t});\n\t\t\tconst modelsJsonError = this.session.modelRegistry.getError();\n\t\t\tif (modelsJsonError) {\n\t\t\t\tthis.showError(`models.json error: ${modelsJsonError}`);\n\t\t\t}\n\t\t\tthis.showStatus(\"Reloaded keybindings, extensions, skills, prompts, themes\");\n\t\t\treturn true;\n\t\t} catch (error) {\n\t\t\tdismissReloadBox(previousEditor as Component);\n\t\t\tthis.showError(`Reload failed: ${error instanceof Error ? error.message : String(error)}`);\n\t\t\treturn false;\n\t\t}\n\t}\n\n\t/**\n\t * Refresh UI after extensions are loaded/unloaded live.\n\t * Performs the same refresh calls as handleReloadCommand but without the full reload.\n\t */\n\tprivate async refreshUIAfterExtensionsChanged(): Promise<void> {\n\t\ttry {\n\t\t\t// Refresh keybindings and autocomplete\n\t\t\tthis.keybindings.reload();\n\t\t\tthis.setupAutocompleteProvider();\n\n\t\t\tthis.refreshExtensionPresentation();\n\n\t\t\t// Refresh extension shortcuts\n\t\t\tconst runner = this.session.extensionRunner;\n\t\t\tthis.extensionUiHost.setupExtensionShortcuts(runner);\n\n\t\t\t// Refresh chat and UI\n\t\t\tawait this.rebuildChatFromMessages();\n\t\t\tthis.footer.invalidate();\n\t\t\tthis.ui.requestRender();\n\t\t} catch (error) {\n\t\t\tthis.showError(`Extension refresh failed: ${error instanceof Error ? error.message : String(error)}`);\n\t\t}\n\t}\n\n\tprivate handleExportCommand(text: string): Promise<void> {\n\t\treturn sessionIoCommands.handleExportCommand(\n\t\t\t{\n\t\t\t\tsession: this.session,\n\t\t\t\tgetPathCommandArgument: (t, command) => this.getPathCommandArgument(t, command),\n\t\t\t\tshowStatus: (message) => this.showStatus(message),\n\t\t\t\tshowError: (message) => this.showError(message),\n\t\t\t},\n\t\t\ttext,\n\t\t);\n\t}\n\n\tprivate getPathCommandArgument(text: string, command: \"/export\" | \"/import\"): string | undefined {\n\t\tif (text === command) {\n\t\t\treturn undefined;\n\t\t}\n\t\tif (!text.startsWith(`${command} `)) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tconst argsString = text.slice(command.length + 1).trimStart();\n\t\tif (!argsString) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tconst firstChar = argsString[0];\n\t\tif (firstChar === '\"' || firstChar === \"'\") {\n\t\t\tconst closingQuoteIndex = argsString.indexOf(firstChar, 1);\n\t\t\tif (closingQuoteIndex < 0) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t\treturn argsString.slice(1, closingQuoteIndex);\n\t\t}\n\n\t\tconst firstWhitespaceIndex = argsString.search(/\\s/);\n\t\tif (firstWhitespaceIndex < 0) {\n\t\t\treturn argsString;\n\t\t}\n\t\treturn argsString.slice(0, firstWhitespaceIndex);\n\t}\n\n\tprivate handleImportCommand(text: string): Promise<void> {\n\t\tconst self = this;\n\t\treturn sessionIoCommands.handleImportCommand(\n\t\t\t{\n\t\t\t\tgetPathCommandArgument: (t, command) => this.getPathCommandArgument(t, command),\n\t\t\t\tshowError: (message) => this.showError(message),\n\t\t\t\tshowStatus: (message) => this.showStatus(message),\n\t\t\t\textensionUiHost: this.extensionUiHost,\n\t\t\t\tget loadingAnimation() {\n\t\t\t\t\treturn self.loadingAnimation;\n\t\t\t\t},\n\t\t\t\tset loadingAnimation(value) {\n\t\t\t\t\tself.loadingAnimation = value;\n\t\t\t\t},\n\t\t\t\tstatusContainer: this.statusContainer,\n\t\t\t\truntimeHost: this.runtimeHost,\n\t\t\t\trenderCurrentSessionState: () => this.renderCurrentSessionState(),\n\t\t\t\tpromptForMissingSessionCwd: (error) => this.promptForMissingSessionCwd(error),\n\t\t\t\thandleFatalRuntimeError: (prefix, error) => this.handleFatalRuntimeError(prefix, error),\n\t\t\t},\n\t\t\ttext,\n\t\t);\n\t}\n\n\tprivate handleShareCommand(): Promise<void> {\n\t\treturn sessionIoCommands.handleShareCommand({\n\t\t\tshowError: (message) => this.showError(message),\n\t\t\tshowStatus: (message) => this.showStatus(message),\n\t\t\tsession: this.session,\n\t\t\tui: this.ui,\n\t\t\toverlayHost: this.overlayHost,\n\t\t\teditor: this.editor,\n\t\t});\n\t}\n\n\tprivate handleCopyCommand(): Promise<void> {\n\t\treturn sessionIoCommands.handleCopyCommand({\n\t\t\tsession: this.session,\n\t\t\tshowError: (message) => this.showError(message),\n\t\t\tshowStatus: (message) => this.showStatus(message),\n\t\t});\n\t}\n\n\tprivate handleNameCommand(text: string): void {\n\t\tsessionIoCommands.handleNameCommand(\n\t\t\t{\n\t\t\t\tsessionManager: this.sessionManager,\n\t\t\t\tchatContainer: this.chatContainer,\n\t\t\t\tshowWarning: (message) => this.showWarning(message),\n\t\t\t\tsession: this.session,\n\t\t\t\tui: this.ui,\n\t\t\t},\n\t\t\ttext,\n\t\t);\n\t}\n\n\tprivate parseGoalContinueCommand(\n\t\ttext: string,\n\t):\n\t\t| { ok: true; maxTurns: number; maxStallTurns: number; maxWallClockMinutes: number }\n\t\t| { ok: false; error: string } {\n\t\tconst usage = \"Usage: /goal-continue [maxTurns 0=unbounded] [maxStallTurns 0-100] [maxMinutes 0-1440]\";\n\t\tconst parts = text.trim().split(/\\s+/).slice(1);\n\t\tif (parts.length > 3) {\n\t\t\treturn { ok: false, error: usage };\n\t\t}\n\n\t\tconst parseBoundedInteger = (\n\t\t\tvalue: string | undefined,\n\t\t\tfallback: number,\n\t\t\tmin: number,\n\t\t\tmax: number,\n\t\t): number | undefined => {\n\t\t\tif (value === undefined || value.length === 0) return fallback;\n\t\t\tif (!/^\\d+$/.test(value)) return undefined;\n\t\t\tconst parsed = Number.parseInt(value, 10);\n\t\t\tif (!Number.isSafeInteger(parsed) || parsed < min || parsed > max) return undefined;\n\t\t\treturn parsed;\n\t\t};\n\n\t\tconst maxTurns = parseBoundedInteger(parts[0], DEFAULT_GOAL_CONTINUE_MAX_TURNS, 0, MAX_GOAL_CONTINUE_MAX_TURNS);\n\t\tconst maxStallTurns = parseBoundedInteger(\n\t\t\tparts[1],\n\t\t\tDEFAULT_GOAL_CONTINUE_MAX_STALL_TURNS,\n\t\t\t0,\n\t\t\tMAX_GOAL_CONTINUE_MAX_STALL_TURNS,\n\t\t);\n\t\tconst maxWallClockMinutes = parseBoundedInteger(\n\t\t\tparts[2],\n\t\t\tDEFAULT_GOAL_CONTINUE_MAX_WALL_CLOCK_MINUTES,\n\t\t\t0,\n\t\t\tMAX_GOAL_CONTINUE_MAX_WALL_CLOCK_MINUTES,\n\t\t);\n\t\tif (maxTurns === undefined || maxStallTurns === undefined || maxWallClockMinutes === undefined) {\n\t\t\treturn { ok: false, error: usage };\n\t\t}\n\t\treturn { ok: true, maxTurns, maxStallTurns, maxWallClockMinutes };\n\t}\n\n\tprivate async handleGoalCommand(text: string): Promise<void> {\n\t\tlet statusMessage: string | undefined;\n\t\tawait sessionFlows.handleGoalCommand(\n\t\t\t{\n\t\t\t\tsession: this.session,\n\t\t\t\tpromptForGoalEdit: (currentObjective) =>\n\t\t\t\t\tthis.extensionUiHost.showExtensionEditor(\"Edit goal objective\", currentObjective),\n\t\t\t\tgetMaxStallTurns: () => this.settingsManager?.getAutonomySettings().maxStallTurns ?? 20,\n\t\t\t\tshowStatus: (message) => {\n\t\t\t\t\tstatusMessage = message;\n\t\t\t\t},\n\t\t\t\tshowError: (message) => this.showError(message),\n\t\t\t\trefreshAutonomyFooterStatus: () => this.refreshAutonomyFooterStatus(),\n\t\t\t},\n\t\t\ttext,\n\t\t);\n\t\tthis.refreshActivityLane?.();\n\t\tif (statusMessage) this.activityLane?.announce(statusMessage, \"neutral\");\n\t}\n\n\tprivate handleTaskCommand(text: string): void {\n\t\tlet statusMessage: string | undefined;\n\t\tsessionFlows.handleTaskCommand(\n\t\t\t{\n\t\t\t\tsession: this.session,\n\t\t\t\tshowStatus: (message) => {\n\t\t\t\t\tstatusMessage = message;\n\t\t\t\t},\n\t\t\t\tshowError: (message) => this.showError(message),\n\t\t\t},\n\t\t\ttext,\n\t\t);\n\t\tthis.refreshActivityLane?.();\n\t\tconst state = this.session.getTaskStepsStateSnapshot();\n\t\tif ((!state || state.steps.length === 0 || statusMessage?.startsWith(\"/task \")) && statusMessage) {\n\t\t\tthis.activityLane?.announce(statusMessage, \"neutral\");\n\t\t}\n\t}\n\n\tprivate async handleGoalContinueCommand(text: string): Promise<void> {\n\t\tawait sessionFlows.handleGoalContinueCommand(\n\t\t\t{\n\t\t\t\tsession: this.session,\n\t\t\t\tparseGoalContinueCommand: (t) => this.parseGoalContinueCommand(t),\n\t\t\t\tshowStatus: (message) => this.activityLane?.announce(message),\n\t\t\t\tshowError: (message) => this.showError(message),\n\t\t\t\trefreshAutonomyFooterStatus: () => this.refreshAutonomyFooterStatus(),\n\t\t\t},\n\t\t\ttext,\n\t\t);\n\t\tthis.refreshActivityLane?.();\n\t}\n\n\tprivate handleSessionCommand(): void {\n\t\tsessionFlows.handleSessionCommand({\n\t\t\tsession: this.session,\n\t\t\tsessionManager: this.sessionManager,\n\t\t\tchatContainer: this.chatContainer,\n\t\t\tui: this.ui,\n\t\t});\n\t}\n\n\tprivate handleUsageCommand(): void {\n\t\treportCommands.handleUsageCommand({\n\t\t\tsession: this.session,\n\t\t\tchatContainer: this.chatContainer,\n\t\t\tui: this.ui,\n\t\t\tgetCurrentAutoLearnSettings: () => this.getCurrentAutoLearnSettings(),\n\t\t});\n\t}\n\n\tprivate handleUsageMenuCommand(): void {\n\t\tusageCommands.handleUsageMenuCommand({\n\t\t\tsession: this.session,\n\t\t\tshowSelector: (create) => this.showSelector(create),\n\t\t\tshowStatus: (message) => this.showStatus(message),\n\t\t\tshowError: (message) => this.showError(message),\n\t\t\tshowUsageReport: () => this.handleUsageCommand(),\n\t\t});\n\t}\n\n\tprivate handleChangelogCommand(): void {\n\t\treportCommands.handleChangelogCommand({\n\t\t\tchatContainer: this.chatContainer,\n\t\t\tui: this.ui,\n\t\t\tgetMarkdownThemeWithSettings: () => this.getMarkdownThemeWithSettings(),\n\t\t});\n\t}\n\n\t/**\n\t * Get capitalized display string for an app keybinding action.\n\t */\n\tprivate getAppKeyDisplay(action: AppKeybinding): string {\n\t\treturn keyDisplayText(action);\n\t}\n\n\t/**\n\t * Get capitalized display string for an editor keybinding action.\n\t */\n\tprivate getEditorKeyDisplay(action: Keybinding): string {\n\t\treturn keyDisplayText(action);\n\t}\n\n\tprivate handleHotkeysCommand(): void {\n\t\treportCommands.handleHotkeysCommand({\n\t\t\tsession: this.session,\n\t\t\tkeybindings: this.keybindings,\n\t\t\tchatContainer: this.chatContainer,\n\t\t\tui: this.ui,\n\t\t\tgetMarkdownThemeWithSettings: () => this.getMarkdownThemeWithSettings(),\n\t\t\tgetAppKeyDisplay: (action) => this.getAppKeyDisplay(action),\n\t\t\tgetEditorKeyDisplay: (action) => this.getEditorKeyDisplay(action),\n\t\t});\n\t}\n\n\tprivate async handleClearCommand(newSessionName?: string): Promise<void> {\n\t\tif (this.loadingAnimation) {\n\t\t\tthis.loadingAnimation.stop();\n\t\t\tthis.loadingAnimation = undefined;\n\t\t}\n\t\tthis.statusContainer.clear();\n\t\ttry {\n\t\t\tconst result = await this.runtimeHost.newSession();\n\t\t\tif (result.cancelled) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.renderCurrentSessionState();\n\t\t\tif (newSessionName) {\n\t\t\t\tthis.session.setSessionName(newSessionName);\n\t\t\t}\n\t\t\tthis.chatContainer.addChild(new Spacer(1));\n\t\t\tconst label = newSessionName ? `✓ New session started: ${newSessionName}` : \"✓ New session started\";\n\t\t\tthis.chatContainer.addChild(new Text(`${theme.fg(\"accent\", label)}`, 1, 1));\n\t\t\tthis.ui.requestRender();\n\t\t} catch (error: unknown) {\n\t\t\tif (this.handleNonFatalSessionReplacementError(error)) return;\n\t\t\tawait this.handleFatalRuntimeError(\"Failed to create session\", error);\n\t\t}\n\t}\n\n\tprivate copyResourcesRecursively(\n\t\tsrc: string,\n\t\tdest: string,\n\t\tforce: boolean,\n\t\tstats: { installed: string[]; skipped: string[] },\n\t): void {\n\t\tif (!fs.existsSync(src)) return;\n\n\t\tconst entries = fs.readdirSync(src, { withFileTypes: true });\n\t\tfs.mkdirSync(dest, { recursive: true });\n\n\t\tfor (const entry of entries) {\n\t\t\tconst srcPath = path.join(src, entry.name);\n\t\t\tconst destPath = path.join(dest, entry.name);\n\n\t\t\tif (entry.isDirectory()) {\n\t\t\t\tthis.copyResourcesRecursively(srcPath, destPath, force, stats);\n\t\t\t} else if (entry.isFile()) {\n\t\t\t\tif (fs.existsSync(destPath) && !force) {\n\t\t\t\t\tstats.skipped.push(destPath);\n\t\t\t\t} else {\n\t\t\t\t\tfs.copyFileSync(srcPath, destPath);\n\t\t\t\t\tstats.installed.push(destPath);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate handleInstallResourcesCommand(argsString: string): Promise<void> {\n\t\treturn resourceShellCommands.handleInstallResourcesCommand(\n\t\t\t{\n\t\t\t\tsettingsManager: this.settingsManager,\n\t\t\t\tshowError: (message) => this.showError(message),\n\t\t\t\tshowStatus: (message) => this.showStatus(message),\n\t\t\t\tshowSelector: (create) => this.showSelector(create),\n\t\t\t\thandleReloadCommand: () => this.handleReloadCommand(),\n\t\t\t\tcopyResourcesRecursively: (src, dest, force, stats) =>\n\t\t\t\t\tthis.copyResourcesRecursively(src, dest, force, stats),\n\t\t\t},\n\t\t\targsString,\n\t\t);\n\t}\n\n\t/**\n\t * `/curate` — skill curator (#32). With no args, lists reflection-promoted skills proposed for\n\t * archival (stale/unused) and pairs proposed for consolidation (overlapping). PROPOSE-ONLY: the user\n\t * applies actions explicitly via `/curate archive <name>` / `/curate restore <name>`. Never touches\n\t * hand-authored skills; archival is restorable.\n\t */\n\tprivate handleCurateCommand(args: string): void {\n\t\tresourceShellCommands.handleCurateCommand(\n\t\t\t{\n\t\t\t\tsession: this.session,\n\t\t\t\tshowStatus: (message) => this.showStatus(message),\n\t\t\t},\n\t\t\targs,\n\t\t);\n\t}\n\n\tprivate async handleConfigBackupCommand(fileArg?: string): Promise<void> {\n\t\tawait configBackup.handleConfigBackupCommand(\n\t\t\t{\n\t\t\t\tsettingsManager: this.settingsManager,\n\t\t\t\tshowStatus: (message) => this.showStatus(message),\n\t\t\t\tshowError: (message) => this.showError(message),\n\t\t\t},\n\t\t\tfileArg,\n\t\t);\n\t}\n\n\tprivate async handleConfigRestoreCommand(fileArg: string): Promise<void> {\n\t\tawait configBackup.handleConfigRestoreCommand(\n\t\t\t{\n\t\t\t\tsettingsManager: this.settingsManager,\n\t\t\t\tshowStatus: (message) => this.showStatus(message),\n\t\t\t\tshowError: (message) => this.showError(message),\n\t\t\t\tshowSelector: (create) => this.showSelector(create),\n\t\t\t\thandleReloadCommand: () => this.handleReloadCommandWithResult(),\n\t\t\t},\n\t\t\tfileArg,\n\t\t);\n\t}\n\n\tprivate handleDebugCommand(): void {\n\t\treportCommands.handleDebugCommand({\n\t\t\tsession: this.session,\n\t\t\tchatContainer: this.chatContainer,\n\t\t\tui: this.ui,\n\t\t});\n\t}\n\n\tprivate handleArminSaysHi(): void {\n\t\treportCommands.handleArminSaysHi({ chatContainer: this.chatContainer, ui: this.ui });\n\t}\n\n\tprivate handleDementedDelves(): void {\n\t\treportCommands.handleDementedDelves({ chatContainer: this.chatContainer, ui: this.ui });\n\t}\n\n\tprivate checkDaxnutsEasterEgg(model: { provider: string; id: string }): void {\n\t\treportCommands.checkDaxnutsEasterEgg({ chatContainer: this.chatContainer, ui: this.ui }, model);\n\t}\n\n\tprivate handleBashCommand(command: string, excludeFromContext = false): Promise<void> {\n\t\tconst self = this;\n\t\treturn resourceShellCommands.handleBashCommand(\n\t\t\t{\n\t\t\t\tsession: this.session,\n\t\t\t\tsessionManager: this.sessionManager,\n\t\t\t\tui: this.ui,\n\t\t\t\tchatContainer: this.chatContainer,\n\t\t\t\tpendingMessagesContainer: this.pendingMessagesContainer,\n\t\t\t\tpendingBashComponents: this.pendingBashComponents,\n\t\t\t\tget bashComponent() {\n\t\t\t\t\treturn self.bashComponent;\n\t\t\t\t},\n\t\t\t\tset bashComponent(value) {\n\t\t\t\t\tself.bashComponent = value;\n\t\t\t\t},\n\t\t\t\tshowError: (message) => this.showError(message),\n\t\t\t},\n\t\t\tcommand,\n\t\t\texcludeFromContext,\n\t\t);\n\t}\n\n\tprivate handleCompactCommand(customInstructions?: string): Promise<void> {\n\t\treturn resourceShellCommands.handleCompactCommand(\n\t\t\t{\n\t\t\t\tsessionManager: this.sessionManager,\n\t\t\t\tshowWarning: (message) => this.showWarning(message),\n\t\t\t\tsession: this.session,\n\t\t\t},\n\t\t\tcustomInstructions,\n\t\t);\n\t}\n\n\tstop(): void {\n\t\tthis.unregisterSignalHandlers();\n\t\tif (this.settingsManager.getShowTerminalProgress()) {\n\t\t\tthis.ui.terminal.setProgress(false);\n\t\t}\n\t\tif (this.loadingAnimation) {\n\t\t\tthis.loadingAnimation.stop();\n\t\t\tthis.loadingAnimation = undefined;\n\t\t}\n\t\tthis.authDialogs.cancelActiveDialog();\n\t\tthis.extensionUiHost.clearHostWidgets();\n\t\tthis.extensionUiHost.resetExtensionUI();\n\t\tthis.overlayHost.unmount();\n\t\tthis.activityLane?.dispose();\n\t\tthis.footer.dispose();\n\t\tthis.footerDataProvider.dispose();\n\t\tif (this.unsubscribe) {\n\t\t\tthis.unsubscribe();\n\t\t}\n\t\tif (this.unsubscribeExtensionsChanged) {\n\t\t\tthis.unsubscribeExtensionsChanged();\n\t\t}\n\t\tif (this.isInitialized) {\n\t\t\tthis.ui.stop();\n\t\t\tthis.isInitialized = false;\n\t\t}\n\t}\n}\n"]}