@ashx-j/lunr 0.1.0 โ†’ 0.1.2

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 (869) hide show
  1. package/dist/builtin-extensions/ashxj-spinners.d.ts +1 -1
  2. package/dist/builtin-extensions/ashxj-spinners.d.ts.map +1 -1
  3. package/dist/builtin-extensions/ashxj-spinners.js.map +1 -1
  4. package/dist/builtin-extensions/ashxj-thinking.d.ts +5 -5
  5. package/dist/builtin-extensions/ashxj-thinking.d.ts.map +1 -1
  6. package/dist/builtin-extensions/ashxj-thinking.js +3 -3
  7. package/dist/builtin-extensions/ashxj-thinking.js.map +1 -1
  8. package/dist/builtin-extensions/ashxj-tui.d.ts +2 -2
  9. package/dist/builtin-extensions/ashxj-tui.d.ts.map +1 -1
  10. package/dist/builtin-extensions/ashxj-tui.js +2 -2
  11. package/dist/builtin-extensions/ashxj-tui.js.map +1 -1
  12. package/dist/builtin-extensions/lunr-cron.d.ts +1 -1
  13. package/dist/builtin-extensions/lunr-cron.d.ts.map +1 -1
  14. package/dist/builtin-extensions/lunr-cron.js.map +1 -1
  15. package/dist/builtin-extensions/lunr-local-providers/index.d.ts +1 -1
  16. package/dist/builtin-extensions/lunr-local-providers/index.d.ts.map +1 -1
  17. package/dist/builtin-extensions/lunr-local-providers/index.js.map +1 -1
  18. package/dist/builtin-extensions/lunr-local-providers/local-servers.d.ts +1 -1
  19. package/dist/builtin-extensions/lunr-local-providers/local-servers.d.ts.map +1 -1
  20. package/dist/builtin-extensions/lunr-local-providers/local-servers.js.map +1 -1
  21. package/dist/builtin-extensions/lunr-plan-tools.d.ts +1 -1
  22. package/dist/builtin-extensions/lunr-plan-tools.d.ts.map +1 -1
  23. package/dist/builtin-extensions/lunr-plan-tools.js +1 -1
  24. package/dist/builtin-extensions/lunr-plan-tools.js.map +1 -1
  25. package/dist/builtin-extensions/lunr-skill-creator/index.d.ts +1 -1
  26. package/dist/builtin-extensions/lunr-skill-creator/index.d.ts.map +1 -1
  27. package/dist/builtin-extensions/lunr-skill-creator/index.js.map +1 -1
  28. package/dist/builtin-extensions/lunr-todos.d.ts +1 -1
  29. package/dist/builtin-extensions/lunr-todos.d.ts.map +1 -1
  30. package/dist/builtin-extensions/lunr-todos.js +1 -1
  31. package/dist/builtin-extensions/lunr-todos.js.map +1 -1
  32. package/dist/builtin-extensions/narumiruna-pi-goal/src/accounting.d.ts.map +1 -1
  33. package/dist/builtin-extensions/narumiruna-pi-goal/src/accounting.js.map +1 -1
  34. package/dist/builtin-extensions/narumiruna-pi-goal/src/goal.d.ts +1 -1
  35. package/dist/builtin-extensions/narumiruna-pi-goal/src/goal.d.ts.map +1 -1
  36. package/dist/builtin-extensions/narumiruna-pi-goal/src/goal.js.map +1 -1
  37. package/dist/builtin-extensions/narumiruna-pi-goal/src/runtime.d.ts +2 -2
  38. package/dist/builtin-extensions/narumiruna-pi-goal/src/runtime.d.ts.map +1 -1
  39. package/dist/builtin-extensions/narumiruna-pi-goal/src/runtime.js +1 -1
  40. package/dist/builtin-extensions/narumiruna-pi-goal/src/runtime.js.map +1 -1
  41. package/dist/builtin-extensions/pi-intercom/index.d.ts +1 -1
  42. package/dist/builtin-extensions/pi-intercom/index.d.ts.map +1 -1
  43. package/dist/builtin-extensions/pi-intercom/index.js +2 -2
  44. package/dist/builtin-extensions/pi-intercom/index.js.map +1 -1
  45. package/dist/builtin-extensions/pi-intercom/ui/compose.d.ts +2 -2
  46. package/dist/builtin-extensions/pi-intercom/ui/compose.d.ts.map +1 -1
  47. package/dist/builtin-extensions/pi-intercom/ui/compose.js +1 -1
  48. package/dist/builtin-extensions/pi-intercom/ui/compose.js.map +1 -1
  49. package/dist/builtin-extensions/pi-intercom/ui/inline-message.d.ts +2 -2
  50. package/dist/builtin-extensions/pi-intercom/ui/inline-message.d.ts.map +1 -1
  51. package/dist/builtin-extensions/pi-intercom/ui/inline-message.js +1 -1
  52. package/dist/builtin-extensions/pi-intercom/ui/inline-message.js.map +1 -1
  53. package/dist/builtin-extensions/pi-intercom/ui/session-list.d.ts +2 -2
  54. package/dist/builtin-extensions/pi-intercom/ui/session-list.d.ts.map +1 -1
  55. package/dist/builtin-extensions/pi-intercom/ui/session-list.js +1 -1
  56. package/dist/builtin-extensions/pi-intercom/ui/session-list.js.map +1 -1
  57. package/dist/builtin-extensions/pi-lsp-extension/bemol-extension/index.d.ts +1 -1
  58. package/dist/builtin-extensions/pi-lsp-extension/bemol-extension/index.d.ts.map +1 -1
  59. package/dist/builtin-extensions/pi-lsp-extension/bemol-extension/index.js.map +1 -1
  60. package/dist/builtin-extensions/pi-lsp-extension/src/index.d.ts +1 -1
  61. package/dist/builtin-extensions/pi-lsp-extension/src/index.d.ts.map +1 -1
  62. package/dist/builtin-extensions/pi-lsp-extension/src/index.js +1 -1
  63. package/dist/builtin-extensions/pi-lsp-extension/src/index.js.map +1 -1
  64. package/dist/builtin-extensions/pi-lsp-extension/src/tools/code-actions.d.ts +1 -1
  65. package/dist/builtin-extensions/pi-lsp-extension/src/tools/code-actions.d.ts.map +1 -1
  66. package/dist/builtin-extensions/pi-lsp-extension/src/tools/code-actions.js +1 -1
  67. package/dist/builtin-extensions/pi-lsp-extension/src/tools/code-actions.js.map +1 -1
  68. package/dist/builtin-extensions/pi-lsp-extension/src/tools/code-overview.d.ts +1 -1
  69. package/dist/builtin-extensions/pi-lsp-extension/src/tools/code-overview.d.ts.map +1 -1
  70. package/dist/builtin-extensions/pi-lsp-extension/src/tools/code-overview.js +1 -1
  71. package/dist/builtin-extensions/pi-lsp-extension/src/tools/code-overview.js.map +1 -1
  72. package/dist/builtin-extensions/pi-lsp-extension/src/tools/code-rewrite.d.ts +1 -1
  73. package/dist/builtin-extensions/pi-lsp-extension/src/tools/code-rewrite.d.ts.map +1 -1
  74. package/dist/builtin-extensions/pi-lsp-extension/src/tools/code-rewrite.js.map +1 -1
  75. package/dist/builtin-extensions/pi-lsp-extension/src/tools/code-search.d.ts +1 -1
  76. package/dist/builtin-extensions/pi-lsp-extension/src/tools/code-search.d.ts.map +1 -1
  77. package/dist/builtin-extensions/pi-lsp-extension/src/tools/code-search.js.map +1 -1
  78. package/dist/builtin-extensions/pi-lsp-extension/src/tools/completions.d.ts +1 -1
  79. package/dist/builtin-extensions/pi-lsp-extension/src/tools/completions.d.ts.map +1 -1
  80. package/dist/builtin-extensions/pi-lsp-extension/src/tools/completions.js +1 -1
  81. package/dist/builtin-extensions/pi-lsp-extension/src/tools/completions.js.map +1 -1
  82. package/dist/builtin-extensions/pi-lsp-extension/src/tools/definition.d.ts +1 -1
  83. package/dist/builtin-extensions/pi-lsp-extension/src/tools/definition.d.ts.map +1 -1
  84. package/dist/builtin-extensions/pi-lsp-extension/src/tools/definition.js +1 -1
  85. package/dist/builtin-extensions/pi-lsp-extension/src/tools/definition.js.map +1 -1
  86. package/dist/builtin-extensions/pi-lsp-extension/src/tools/diagnostics.d.ts +1 -1
  87. package/dist/builtin-extensions/pi-lsp-extension/src/tools/diagnostics.d.ts.map +1 -1
  88. package/dist/builtin-extensions/pi-lsp-extension/src/tools/diagnostics.js +1 -1
  89. package/dist/builtin-extensions/pi-lsp-extension/src/tools/diagnostics.js.map +1 -1
  90. package/dist/builtin-extensions/pi-lsp-extension/src/tools/hover.d.ts +1 -1
  91. package/dist/builtin-extensions/pi-lsp-extension/src/tools/hover.d.ts.map +1 -1
  92. package/dist/builtin-extensions/pi-lsp-extension/src/tools/hover.js +1 -1
  93. package/dist/builtin-extensions/pi-lsp-extension/src/tools/hover.js.map +1 -1
  94. package/dist/builtin-extensions/pi-lsp-extension/src/tools/references.d.ts +1 -1
  95. package/dist/builtin-extensions/pi-lsp-extension/src/tools/references.d.ts.map +1 -1
  96. package/dist/builtin-extensions/pi-lsp-extension/src/tools/references.js +1 -1
  97. package/dist/builtin-extensions/pi-lsp-extension/src/tools/references.js.map +1 -1
  98. package/dist/builtin-extensions/pi-lsp-extension/src/tools/rename.d.ts +1 -1
  99. package/dist/builtin-extensions/pi-lsp-extension/src/tools/rename.d.ts.map +1 -1
  100. package/dist/builtin-extensions/pi-lsp-extension/src/tools/rename.js +1 -1
  101. package/dist/builtin-extensions/pi-lsp-extension/src/tools/rename.js.map +1 -1
  102. package/dist/builtin-extensions/pi-lsp-extension/src/tools/symbols.d.ts +1 -1
  103. package/dist/builtin-extensions/pi-lsp-extension/src/tools/symbols.d.ts.map +1 -1
  104. package/dist/builtin-extensions/pi-lsp-extension/src/tools/symbols.js +1 -1
  105. package/dist/builtin-extensions/pi-lsp-extension/src/tools/symbols.js.map +1 -1
  106. package/dist/builtin-extensions/pi-mcp-adapter/commands.d.ts +1 -1
  107. package/dist/builtin-extensions/pi-mcp-adapter/commands.d.ts.map +1 -1
  108. package/dist/builtin-extensions/pi-mcp-adapter/commands.js.map +1 -1
  109. package/dist/builtin-extensions/pi-mcp-adapter/direct-tools.d.ts +1 -1
  110. package/dist/builtin-extensions/pi-mcp-adapter/direct-tools.d.ts.map +1 -1
  111. package/dist/builtin-extensions/pi-mcp-adapter/direct-tools.js.map +1 -1
  112. package/dist/builtin-extensions/pi-mcp-adapter/elicitation-handler.d.ts +1 -1
  113. package/dist/builtin-extensions/pi-mcp-adapter/elicitation-handler.d.ts.map +1 -1
  114. package/dist/builtin-extensions/pi-mcp-adapter/elicitation-handler.js.map +1 -1
  115. package/dist/builtin-extensions/pi-mcp-adapter/index.d.ts +1 -1
  116. package/dist/builtin-extensions/pi-mcp-adapter/index.d.ts.map +1 -1
  117. package/dist/builtin-extensions/pi-mcp-adapter/index.js.map +1 -1
  118. package/dist/builtin-extensions/pi-mcp-adapter/init.d.ts +1 -1
  119. package/dist/builtin-extensions/pi-mcp-adapter/init.d.ts.map +1 -1
  120. package/dist/builtin-extensions/pi-mcp-adapter/init.js.map +1 -1
  121. package/dist/builtin-extensions/pi-mcp-adapter/mcp-panel.d.ts.map +1 -1
  122. package/dist/builtin-extensions/pi-mcp-adapter/mcp-panel.js +1 -1
  123. package/dist/builtin-extensions/pi-mcp-adapter/mcp-panel.js.map +1 -1
  124. package/dist/builtin-extensions/pi-mcp-adapter/mcp-setup-panel.d.ts.map +1 -1
  125. package/dist/builtin-extensions/pi-mcp-adapter/mcp-setup-panel.js +1 -1
  126. package/dist/builtin-extensions/pi-mcp-adapter/mcp-setup-panel.js.map +1 -1
  127. package/dist/builtin-extensions/pi-mcp-adapter/panel-keys.d.ts.map +1 -1
  128. package/dist/builtin-extensions/pi-mcp-adapter/panel-keys.js +1 -1
  129. package/dist/builtin-extensions/pi-mcp-adapter/panel-keys.js.map +1 -1
  130. package/dist/builtin-extensions/pi-mcp-adapter/proxy-modes.d.ts +1 -1
  131. package/dist/builtin-extensions/pi-mcp-adapter/proxy-modes.d.ts.map +1 -1
  132. package/dist/builtin-extensions/pi-mcp-adapter/proxy-modes.js.map +1 -1
  133. package/dist/builtin-extensions/pi-mcp-adapter/sampling-handler.d.ts +2 -2
  134. package/dist/builtin-extensions/pi-mcp-adapter/sampling-handler.d.ts.map +1 -1
  135. package/dist/builtin-extensions/pi-mcp-adapter/sampling-handler.js +1 -1
  136. package/dist/builtin-extensions/pi-mcp-adapter/sampling-handler.js.map +1 -1
  137. package/dist/builtin-extensions/pi-mcp-adapter/state.d.ts +1 -1
  138. package/dist/builtin-extensions/pi-mcp-adapter/state.d.ts.map +1 -1
  139. package/dist/builtin-extensions/pi-mcp-adapter/state.js.map +1 -1
  140. package/dist/builtin-extensions/pi-mcp-adapter/tool-result-renderer.d.ts +2 -2
  141. package/dist/builtin-extensions/pi-mcp-adapter/tool-result-renderer.d.ts.map +1 -1
  142. package/dist/builtin-extensions/pi-mcp-adapter/tool-result-renderer.js +1 -1
  143. package/dist/builtin-extensions/pi-mcp-adapter/tool-result-renderer.js.map +1 -1
  144. package/dist/builtin-extensions/pi-mcp-adapter/types.d.ts +1 -1
  145. package/dist/builtin-extensions/pi-mcp-adapter/types.d.ts.map +1 -1
  146. package/dist/builtin-extensions/pi-mcp-adapter/types.js.map +1 -1
  147. package/dist/builtin-extensions/pi-mcp-adapter/utils.d.ts +1 -1
  148. package/dist/builtin-extensions/pi-mcp-adapter/utils.d.ts.map +1 -1
  149. package/dist/builtin-extensions/pi-mcp-adapter/utils.js.map +1 -1
  150. package/dist/builtin-extensions/pi-ollama-cloud/index.d.ts +1 -1
  151. package/dist/builtin-extensions/pi-ollama-cloud/index.d.ts.map +1 -1
  152. package/dist/builtin-extensions/pi-ollama-cloud/index.js.map +1 -1
  153. package/dist/builtin-extensions/pi-ollama-cloud/models.d.ts +1 -1
  154. package/dist/builtin-extensions/pi-ollama-cloud/models.d.ts.map +1 -1
  155. package/dist/builtin-extensions/pi-ollama-cloud/models.generated.d.ts +1 -1
  156. package/dist/builtin-extensions/pi-ollama-cloud/models.generated.d.ts.map +1 -1
  157. package/dist/builtin-extensions/pi-ollama-cloud/models.generated.js.map +1 -1
  158. package/dist/builtin-extensions/pi-ollama-cloud/models.js.map +1 -1
  159. package/dist/builtin-extensions/pi-ollama-cloud/thinking-levels.d.ts +1 -1
  160. package/dist/builtin-extensions/pi-ollama-cloud/thinking-levels.d.ts.map +1 -1
  161. package/dist/builtin-extensions/pi-ollama-cloud/thinking-levels.js.map +1 -1
  162. package/dist/builtin-extensions/pi-prompt-template-model/deterministic-renderer.d.ts +2 -2
  163. package/dist/builtin-extensions/pi-prompt-template-model/deterministic-renderer.d.ts.map +1 -1
  164. package/dist/builtin-extensions/pi-prompt-template-model/deterministic-renderer.js +1 -1
  165. package/dist/builtin-extensions/pi-prompt-template-model/deterministic-renderer.js.map +1 -1
  166. package/dist/builtin-extensions/pi-prompt-template-model/index.d.ts +1 -1
  167. package/dist/builtin-extensions/pi-prompt-template-model/index.d.ts.map +1 -1
  168. package/dist/builtin-extensions/pi-prompt-template-model/index.js.map +1 -1
  169. package/dist/builtin-extensions/pi-prompt-template-model/loop-utils.d.ts +1 -1
  170. package/dist/builtin-extensions/pi-prompt-template-model/loop-utils.d.ts.map +1 -1
  171. package/dist/builtin-extensions/pi-prompt-template-model/loop-utils.js.map +1 -1
  172. package/dist/builtin-extensions/pi-prompt-template-model/model-selection.d.ts +1 -1
  173. package/dist/builtin-extensions/pi-prompt-template-model/model-selection.d.ts.map +1 -1
  174. package/dist/builtin-extensions/pi-prompt-template-model/model-selection.js.map +1 -1
  175. package/dist/builtin-extensions/pi-prompt-template-model/notifications.d.ts +1 -1
  176. package/dist/builtin-extensions/pi-prompt-template-model/notifications.d.ts.map +1 -1
  177. package/dist/builtin-extensions/pi-prompt-template-model/notifications.js.map +1 -1
  178. package/dist/builtin-extensions/pi-prompt-template-model/prompt-execution.d.ts +1 -1
  179. package/dist/builtin-extensions/pi-prompt-template-model/prompt-execution.d.ts.map +1 -1
  180. package/dist/builtin-extensions/pi-prompt-template-model/prompt-execution.js.map +1 -1
  181. package/dist/builtin-extensions/pi-prompt-template-model/prompt-loader.d.ts +1 -1
  182. package/dist/builtin-extensions/pi-prompt-template-model/prompt-loader.d.ts.map +1 -1
  183. package/dist/builtin-extensions/pi-prompt-template-model/prompt-loader.js +1 -1
  184. package/dist/builtin-extensions/pi-prompt-template-model/prompt-loader.js.map +1 -1
  185. package/dist/builtin-extensions/pi-prompt-template-model/skill-loaded-renderer.d.ts +2 -2
  186. package/dist/builtin-extensions/pi-prompt-template-model/skill-loaded-renderer.d.ts.map +1 -1
  187. package/dist/builtin-extensions/pi-prompt-template-model/skill-loaded-renderer.js +1 -1
  188. package/dist/builtin-extensions/pi-prompt-template-model/skill-loaded-renderer.js.map +1 -1
  189. package/dist/builtin-extensions/pi-prompt-template-model/subagent-renderer.d.ts +2 -2
  190. package/dist/builtin-extensions/pi-prompt-template-model/subagent-renderer.d.ts.map +1 -1
  191. package/dist/builtin-extensions/pi-prompt-template-model/subagent-renderer.js +1 -1
  192. package/dist/builtin-extensions/pi-prompt-template-model/subagent-renderer.js.map +1 -1
  193. package/dist/builtin-extensions/pi-prompt-template-model/subagent-step.d.ts +3 -3
  194. package/dist/builtin-extensions/pi-prompt-template-model/subagent-step.d.ts.map +1 -1
  195. package/dist/builtin-extensions/pi-prompt-template-model/subagent-step.js +1 -1
  196. package/dist/builtin-extensions/pi-prompt-template-model/subagent-step.js.map +1 -1
  197. package/dist/builtin-extensions/pi-prompt-template-model/subagent-widget.d.ts +2 -2
  198. package/dist/builtin-extensions/pi-prompt-template-model/subagent-widget.d.ts.map +1 -1
  199. package/dist/builtin-extensions/pi-prompt-template-model/subagent-widget.js +1 -1
  200. package/dist/builtin-extensions/pi-prompt-template-model/subagent-widget.js.map +1 -1
  201. package/dist/builtin-extensions/pi-prompt-template-model/tool-manager.d.ts +1 -1
  202. package/dist/builtin-extensions/pi-prompt-template-model/tool-manager.d.ts.map +1 -1
  203. package/dist/builtin-extensions/pi-prompt-template-model/tool-manager.js +1 -1
  204. package/dist/builtin-extensions/pi-prompt-template-model/tool-manager.js.map +1 -1
  205. package/dist/builtin-extensions/pi-subagents/src/agents/agent-management.d.ts +2 -2
  206. package/dist/builtin-extensions/pi-subagents/src/agents/agent-management.d.ts.map +1 -1
  207. package/dist/builtin-extensions/pi-subagents/src/agents/agent-management.js.map +1 -1
  208. package/dist/builtin-extensions/pi-subagents/src/extension/control-notices.d.ts +1 -1
  209. package/dist/builtin-extensions/pi-subagents/src/extension/control-notices.d.ts.map +1 -1
  210. package/dist/builtin-extensions/pi-subagents/src/extension/control-notices.js.map +1 -1
  211. package/dist/builtin-extensions/pi-subagents/src/extension/fanout-child.d.ts +1 -1
  212. package/dist/builtin-extensions/pi-subagents/src/extension/fanout-child.d.ts.map +1 -1
  213. package/dist/builtin-extensions/pi-subagents/src/extension/fanout-child.js.map +1 -1
  214. package/dist/builtin-extensions/pi-subagents/src/extension/index.d.ts +1 -1
  215. package/dist/builtin-extensions/pi-subagents/src/extension/index.d.ts.map +1 -1
  216. package/dist/builtin-extensions/pi-subagents/src/extension/index.js +2 -2
  217. package/dist/builtin-extensions/pi-subagents/src/extension/index.js.map +1 -1
  218. package/dist/builtin-extensions/pi-subagents/src/extension/rpc.d.ts +2 -2
  219. package/dist/builtin-extensions/pi-subagents/src/extension/rpc.d.ts.map +1 -1
  220. package/dist/builtin-extensions/pi-subagents/src/extension/rpc.js.map +1 -1
  221. package/dist/builtin-extensions/pi-subagents/src/extension/steering-notices.d.ts +1 -1
  222. package/dist/builtin-extensions/pi-subagents/src/extension/steering-notices.d.ts.map +1 -1
  223. package/dist/builtin-extensions/pi-subagents/src/extension/steering-notices.js.map +1 -1
  224. package/dist/builtin-extensions/pi-subagents/src/intercom/native-supervisor-channel.d.ts +1 -1
  225. package/dist/builtin-extensions/pi-subagents/src/intercom/native-supervisor-channel.d.ts.map +1 -1
  226. package/dist/builtin-extensions/pi-subagents/src/intercom/native-supervisor-channel.js.map +1 -1
  227. package/dist/builtin-extensions/pi-subagents/src/profiles/profiles.d.ts +1 -1
  228. package/dist/builtin-extensions/pi-subagents/src/profiles/profiles.d.ts.map +1 -1
  229. package/dist/builtin-extensions/pi-subagents/src/profiles/profiles.js.map +1 -1
  230. package/dist/builtin-extensions/pi-subagents/src/runs/background/async-execution.d.ts +1 -1
  231. package/dist/builtin-extensions/pi-subagents/src/runs/background/async-execution.d.ts.map +1 -1
  232. package/dist/builtin-extensions/pi-subagents/src/runs/background/async-execution.js.map +1 -1
  233. package/dist/builtin-extensions/pi-subagents/src/runs/background/async-job-tracker.d.ts +1 -1
  234. package/dist/builtin-extensions/pi-subagents/src/runs/background/async-job-tracker.d.ts.map +1 -1
  235. package/dist/builtin-extensions/pi-subagents/src/runs/background/async-job-tracker.js.map +1 -1
  236. package/dist/builtin-extensions/pi-subagents/src/runs/background/auto-drain.d.ts +1 -1
  237. package/dist/builtin-extensions/pi-subagents/src/runs/background/auto-drain.d.ts.map +1 -1
  238. package/dist/builtin-extensions/pi-subagents/src/runs/background/auto-drain.js.map +1 -1
  239. package/dist/builtin-extensions/pi-subagents/src/runs/background/fleet-view.d.ts +1 -1
  240. package/dist/builtin-extensions/pi-subagents/src/runs/background/fleet-view.d.ts.map +1 -1
  241. package/dist/builtin-extensions/pi-subagents/src/runs/background/fleet-view.js.map +1 -1
  242. package/dist/builtin-extensions/pi-subagents/src/runs/background/notify.d.ts +1 -1
  243. package/dist/builtin-extensions/pi-subagents/src/runs/background/notify.d.ts.map +1 -1
  244. package/dist/builtin-extensions/pi-subagents/src/runs/background/notify.js.map +1 -1
  245. package/dist/builtin-extensions/pi-subagents/src/runs/background/run-status.d.ts +1 -1
  246. package/dist/builtin-extensions/pi-subagents/src/runs/background/run-status.d.ts.map +1 -1
  247. package/dist/builtin-extensions/pi-subagents/src/runs/background/run-status.js.map +1 -1
  248. package/dist/builtin-extensions/pi-subagents/src/runs/background/scheduled-runs.d.ts +2 -2
  249. package/dist/builtin-extensions/pi-subagents/src/runs/background/scheduled-runs.d.ts.map +1 -1
  250. package/dist/builtin-extensions/pi-subagents/src/runs/background/scheduled-runs.js.map +1 -1
  251. package/dist/builtin-extensions/pi-subagents/src/runs/background/subagent-runner.d.ts.map +1 -1
  252. package/dist/builtin-extensions/pi-subagents/src/runs/background/subagent-runner.js.map +1 -1
  253. package/dist/builtin-extensions/pi-subagents/src/runs/background/subagent-wait.d.ts +1 -1
  254. package/dist/builtin-extensions/pi-subagents/src/runs/background/subagent-wait.d.ts.map +1 -1
  255. package/dist/builtin-extensions/pi-subagents/src/runs/background/subagent-wait.js.map +1 -1
  256. package/dist/builtin-extensions/pi-subagents/src/runs/background/wait-tool.d.ts +1 -1
  257. package/dist/builtin-extensions/pi-subagents/src/runs/background/wait-tool.d.ts.map +1 -1
  258. package/dist/builtin-extensions/pi-subagents/src/runs/background/wait-tool.js.map +1 -1
  259. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/async-steering-action.d.ts +1 -1
  260. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/async-steering-action.d.ts.map +1 -1
  261. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/async-steering-action.js.map +1 -1
  262. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/chain-clarify.d.ts +2 -2
  263. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/chain-clarify.d.ts.map +1 -1
  264. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/chain-clarify.js +1 -1
  265. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/chain-clarify.js.map +1 -1
  266. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/chain-execution.d.ts +2 -2
  267. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/chain-execution.d.ts.map +1 -1
  268. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/chain-execution.js.map +1 -1
  269. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/execution.d.ts.map +1 -1
  270. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/execution.js.map +1 -1
  271. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/subagent-executor.d.ts +2 -2
  272. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/subagent-executor.d.ts.map +1 -1
  273. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/subagent-executor.js.map +1 -1
  274. package/dist/builtin-extensions/pi-subagents/src/runs/shared/completion-guard.d.ts +1 -1
  275. package/dist/builtin-extensions/pi-subagents/src/runs/shared/completion-guard.d.ts.map +1 -1
  276. package/dist/builtin-extensions/pi-subagents/src/runs/shared/completion-guard.js.map +1 -1
  277. package/dist/builtin-extensions/pi-subagents/src/runs/shared/pi-spawn.d.ts +1 -1
  278. package/dist/builtin-extensions/pi-subagents/src/runs/shared/pi-spawn.d.ts.map +1 -1
  279. package/dist/builtin-extensions/pi-subagents/src/runs/shared/pi-spawn.js +1 -1
  280. package/dist/builtin-extensions/pi-subagents/src/runs/shared/pi-spawn.js.map +1 -1
  281. package/dist/builtin-extensions/pi-subagents/src/runs/shared/single-output.d.ts +1 -1
  282. package/dist/builtin-extensions/pi-subagents/src/runs/shared/single-output.d.ts.map +1 -1
  283. package/dist/builtin-extensions/pi-subagents/src/runs/shared/single-output.js.map +1 -1
  284. package/dist/builtin-extensions/pi-subagents/src/runs/shared/subagent-prompt-runtime.d.ts +1 -1
  285. package/dist/builtin-extensions/pi-subagents/src/runs/shared/subagent-prompt-runtime.d.ts.map +1 -1
  286. package/dist/builtin-extensions/pi-subagents/src/runs/shared/subagent-prompt-runtime.js.map +1 -1
  287. package/dist/builtin-extensions/pi-subagents/src/shared/child-transcript.d.ts +1 -1
  288. package/dist/builtin-extensions/pi-subagents/src/shared/child-transcript.d.ts.map +1 -1
  289. package/dist/builtin-extensions/pi-subagents/src/shared/child-transcript.js.map +1 -1
  290. package/dist/builtin-extensions/pi-subagents/src/shared/fork-context.d.ts.map +1 -1
  291. package/dist/builtin-extensions/pi-subagents/src/shared/fork-context.js +1 -1
  292. package/dist/builtin-extensions/pi-subagents/src/shared/fork-context.js.map +1 -1
  293. package/dist/builtin-extensions/pi-subagents/src/shared/types.d.ts +3 -3
  294. package/dist/builtin-extensions/pi-subagents/src/shared/types.d.ts.map +1 -1
  295. package/dist/builtin-extensions/pi-subagents/src/shared/types.js.map +1 -1
  296. package/dist/builtin-extensions/pi-subagents/src/shared/utils.d.ts +1 -1
  297. package/dist/builtin-extensions/pi-subagents/src/shared/utils.d.ts.map +1 -1
  298. package/dist/builtin-extensions/pi-subagents/src/shared/utils.js +1 -1
  299. package/dist/builtin-extensions/pi-subagents/src/shared/utils.js.map +1 -1
  300. package/dist/builtin-extensions/pi-subagents/src/slash/prompt-workflows.d.ts +1 -1
  301. package/dist/builtin-extensions/pi-subagents/src/slash/prompt-workflows.d.ts.map +1 -1
  302. package/dist/builtin-extensions/pi-subagents/src/slash/prompt-workflows.js.map +1 -1
  303. package/dist/builtin-extensions/pi-subagents/src/slash/slash-bridge.d.ts +2 -2
  304. package/dist/builtin-extensions/pi-subagents/src/slash/slash-bridge.d.ts.map +1 -1
  305. package/dist/builtin-extensions/pi-subagents/src/slash/slash-bridge.js.map +1 -1
  306. package/dist/builtin-extensions/pi-subagents/src/slash/slash-commands.d.ts +1 -1
  307. package/dist/builtin-extensions/pi-subagents/src/slash/slash-commands.d.ts.map +1 -1
  308. package/dist/builtin-extensions/pi-subagents/src/slash/slash-commands.js +2 -2
  309. package/dist/builtin-extensions/pi-subagents/src/slash/slash-commands.js.map +1 -1
  310. package/dist/builtin-extensions/pi-subagents/src/slash/slash-live-state.d.ts +1 -1
  311. package/dist/builtin-extensions/pi-subagents/src/slash/slash-live-state.d.ts.map +1 -1
  312. package/dist/builtin-extensions/pi-subagents/src/slash/slash-live-state.js.map +1 -1
  313. package/dist/builtin-extensions/pi-subagents/src/tui/fleet.d.ts +2 -2
  314. package/dist/builtin-extensions/pi-subagents/src/tui/fleet.d.ts.map +1 -1
  315. package/dist/builtin-extensions/pi-subagents/src/tui/fleet.js +1 -1
  316. package/dist/builtin-extensions/pi-subagents/src/tui/fleet.js.map +1 -1
  317. package/dist/builtin-extensions/pi-subagents/src/tui/render-helpers.d.ts +1 -1
  318. package/dist/builtin-extensions/pi-subagents/src/tui/render-helpers.d.ts.map +1 -1
  319. package/dist/builtin-extensions/pi-subagents/src/tui/render-helpers.js +1 -1
  320. package/dist/builtin-extensions/pi-subagents/src/tui/render-helpers.js.map +1 -1
  321. package/dist/builtin-extensions/pi-subagents/src/tui/render.d.ts +3 -3
  322. package/dist/builtin-extensions/pi-subagents/src/tui/render.d.ts.map +1 -1
  323. package/dist/builtin-extensions/pi-subagents/src/tui/render.js +2 -2
  324. package/dist/builtin-extensions/pi-subagents/src/tui/render.js.map +1 -1
  325. package/dist/builtin-extensions/pi-subagents/src/watchdog/model-selection.d.ts +1 -1
  326. package/dist/builtin-extensions/pi-subagents/src/watchdog/model-selection.d.ts.map +1 -1
  327. package/dist/builtin-extensions/pi-subagents/src/watchdog/model-selection.js.map +1 -1
  328. package/dist/builtin-extensions/pi-subagents/src/watchdog/register-child.d.ts +1 -1
  329. package/dist/builtin-extensions/pi-subagents/src/watchdog/register-child.d.ts.map +1 -1
  330. package/dist/builtin-extensions/pi-subagents/src/watchdog/register-child.js.map +1 -1
  331. package/dist/builtin-extensions/pi-subagents/src/watchdog/register-main.d.ts +1 -1
  332. package/dist/builtin-extensions/pi-subagents/src/watchdog/register-main.d.ts.map +1 -1
  333. package/dist/builtin-extensions/pi-subagents/src/watchdog/register-main.js +1 -1
  334. package/dist/builtin-extensions/pi-subagents/src/watchdog/register-main.js.map +1 -1
  335. package/dist/builtin-extensions/pi-subagents/src/watchdog/render.d.ts +1 -1
  336. package/dist/builtin-extensions/pi-subagents/src/watchdog/render.d.ts.map +1 -1
  337. package/dist/builtin-extensions/pi-subagents/src/watchdog/render.js +1 -1
  338. package/dist/builtin-extensions/pi-subagents/src/watchdog/render.js.map +1 -1
  339. package/dist/builtin-extensions/pi-subagents/src/watchdog/review.d.ts +3 -3
  340. package/dist/builtin-extensions/pi-subagents/src/watchdog/review.d.ts.map +1 -1
  341. package/dist/builtin-extensions/pi-subagents/src/watchdog/review.js +3 -3
  342. package/dist/builtin-extensions/pi-subagents/src/watchdog/review.js.map +1 -1
  343. package/dist/builtin-extensions/pi-subagents/src/watchdog/runtime.d.ts +1 -1
  344. package/dist/builtin-extensions/pi-subagents/src/watchdog/runtime.d.ts.map +1 -1
  345. package/dist/builtin-extensions/pi-subagents/src/watchdog/runtime.js.map +1 -1
  346. package/dist/builtin-extensions/pi-subagents/src/watchdog/tool-actions.d.ts +2 -2
  347. package/dist/builtin-extensions/pi-subagents/src/watchdog/tool-actions.d.ts.map +1 -1
  348. package/dist/builtin-extensions/pi-subagents/src/watchdog/tool-actions.js.map +1 -1
  349. package/dist/builtin-extensions/pi-tps.d.ts +1 -1
  350. package/dist/builtin-extensions/pi-tps.d.ts.map +1 -1
  351. package/dist/builtin-extensions/pi-tps.js.map +1 -1
  352. package/dist/builtin-extensions/pi-web-access/gemini-search.d.ts +1 -1
  353. package/dist/builtin-extensions/pi-web-access/gemini-search.d.ts.map +1 -1
  354. package/dist/builtin-extensions/pi-web-access/gemini-search.js.map +1 -1
  355. package/dist/builtin-extensions/pi-web-access/index.d.ts +1 -1
  356. package/dist/builtin-extensions/pi-web-access/index.d.ts.map +1 -1
  357. package/dist/builtin-extensions/pi-web-access/index.js +2 -2
  358. package/dist/builtin-extensions/pi-web-access/index.js.map +1 -1
  359. package/dist/builtin-extensions/pi-web-access/openai-search.d.ts +1 -1
  360. package/dist/builtin-extensions/pi-web-access/openai-search.d.ts.map +1 -1
  361. package/dist/builtin-extensions/pi-web-access/openai-search.js +1 -1
  362. package/dist/builtin-extensions/pi-web-access/openai-search.js.map +1 -1
  363. package/dist/builtin-extensions/pi-web-access/storage.d.ts +1 -1
  364. package/dist/builtin-extensions/pi-web-access/storage.d.ts.map +1 -1
  365. package/dist/builtin-extensions/pi-web-access/storage.js.map +1 -1
  366. package/dist/builtin-extensions/pi-web-access/summary-review.d.ts +1 -1
  367. package/dist/builtin-extensions/pi-web-access/summary-review.d.ts.map +1 -1
  368. package/dist/builtin-extensions/pi-web-access/summary-review.js +1 -1
  369. package/dist/builtin-extensions/pi-web-access/summary-review.js.map +1 -1
  370. package/dist/bun/cli.d.ts.map +1 -1
  371. package/dist/bun/cli.js +1 -1
  372. package/dist/bun/cli.js.map +1 -1
  373. package/dist/bun/register-bedrock.d.ts.map +1 -1
  374. package/dist/bun/register-bedrock.js +2 -2
  375. package/dist/bun/register-bedrock.js.map +1 -1
  376. package/dist/catalog/models.json +1 -1
  377. package/dist/catalog/providers/opencode-go.json +1 -1
  378. package/dist/catalog/providers/openrouter.json +1 -1
  379. package/dist/catalog/providers/qwen-token-plan-cn.json +1 -1
  380. package/dist/catalog/providers/qwen-token-plan.json +1 -1
  381. package/dist/catalog/publication.json +3 -3
  382. package/dist/cli/args.d.ts +1 -1
  383. package/dist/cli/args.d.ts.map +1 -1
  384. package/dist/cli/args.js.map +1 -1
  385. package/dist/cli/config-selector.d.ts.map +1 -1
  386. package/dist/cli/config-selector.js +1 -1
  387. package/dist/cli/config-selector.js.map +1 -1
  388. package/dist/cli/file-processor.d.ts +1 -1
  389. package/dist/cli/file-processor.d.ts.map +1 -1
  390. package/dist/cli/file-processor.js.map +1 -1
  391. package/dist/cli/initial-message.d.ts +1 -1
  392. package/dist/cli/initial-message.d.ts.map +1 -1
  393. package/dist/cli/initial-message.js.map +1 -1
  394. package/dist/cli/list-models.d.ts.map +1 -1
  395. package/dist/cli/list-models.js +1 -1
  396. package/dist/cli/list-models.js.map +1 -1
  397. package/dist/cli/session-picker.d.ts.map +1 -1
  398. package/dist/cli/session-picker.js +1 -1
  399. package/dist/cli/session-picker.js.map +1 -1
  400. package/dist/cli/startup-ui.d.ts +1 -1
  401. package/dist/cli/startup-ui.d.ts.map +1 -1
  402. package/dist/cli/startup-ui.js +2 -2
  403. package/dist/cli/startup-ui.js.map +1 -1
  404. package/dist/config.d.ts.map +1 -1
  405. package/dist/config.js +1 -1
  406. package/dist/config.js.map +1 -1
  407. package/dist/core/agent-session-services.d.ts +2 -2
  408. package/dist/core/agent-session-services.d.ts.map +1 -1
  409. package/dist/core/agent-session-services.js.map +1 -1
  410. package/dist/core/agent-session.d.ts +2 -2
  411. package/dist/core/agent-session.d.ts.map +1 -1
  412. package/dist/core/agent-session.js +1 -1
  413. package/dist/core/agent-session.js.map +1 -1
  414. package/dist/core/auth-storage.d.ts +1 -1
  415. package/dist/core/auth-storage.d.ts.map +1 -1
  416. package/dist/core/auth-storage.js.map +1 -1
  417. package/dist/core/cache-stats.d.ts +1 -1
  418. package/dist/core/cache-stats.d.ts.map +1 -1
  419. package/dist/core/cache-stats.js.map +1 -1
  420. package/dist/core/catalog-merge.d.ts +1 -1
  421. package/dist/core/catalog-merge.d.ts.map +1 -1
  422. package/dist/core/catalog-merge.js +7 -1
  423. package/dist/core/catalog-merge.js.map +1 -1
  424. package/dist/core/compaction/branch-summarization.d.ts +2 -2
  425. package/dist/core/compaction/branch-summarization.d.ts.map +1 -1
  426. package/dist/core/compaction/branch-summarization.js +1 -1
  427. package/dist/core/compaction/branch-summarization.js.map +1 -1
  428. package/dist/core/compaction/compaction.d.ts +2 -2
  429. package/dist/core/compaction/compaction.d.ts.map +1 -1
  430. package/dist/core/compaction/compaction.js +1 -1
  431. package/dist/core/compaction/compaction.js.map +1 -1
  432. package/dist/core/compaction/utils.d.ts +2 -2
  433. package/dist/core/compaction/utils.d.ts.map +1 -1
  434. package/dist/core/compaction/utils.js.map +1 -1
  435. package/dist/core/context-breakdown.d.ts +1 -1
  436. package/dist/core/context-breakdown.d.ts.map +1 -1
  437. package/dist/core/context-breakdown.js.map +1 -1
  438. package/dist/core/defaults.d.ts +1 -1
  439. package/dist/core/defaults.d.ts.map +1 -1
  440. package/dist/core/defaults.js.map +1 -1
  441. package/dist/core/export-html/index.d.ts +1 -1
  442. package/dist/core/export-html/index.d.ts.map +1 -1
  443. package/dist/core/export-html/index.js.map +1 -1
  444. package/dist/core/export-html/tool-renderer.d.ts.map +1 -1
  445. package/dist/core/export-html/tool-renderer.js.map +1 -1
  446. package/dist/core/extensions/loader.d.ts.map +1 -1
  447. package/dist/core/extensions/loader.js +25 -25
  448. package/dist/core/extensions/loader.js.map +1 -1
  449. package/dist/core/extensions/runner.d.ts +3 -3
  450. package/dist/core/extensions/runner.d.ts.map +1 -1
  451. package/dist/core/extensions/runner.js.map +1 -1
  452. package/dist/core/extensions/types.d.ts +5 -5
  453. package/dist/core/extensions/types.d.ts.map +1 -1
  454. package/dist/core/extensions/types.js.map +1 -1
  455. package/dist/core/extensions/wrapper.d.ts +1 -1
  456. package/dist/core/extensions/wrapper.d.ts.map +1 -1
  457. package/dist/core/extensions/wrapper.js.map +1 -1
  458. package/dist/core/grok-cli-auth.d.ts +32 -0
  459. package/dist/core/grok-cli-auth.d.ts.map +1 -0
  460. package/dist/core/grok-cli-auth.js +218 -0
  461. package/dist/core/grok-cli-auth.js.map +1 -0
  462. package/dist/core/keybindings.d.ts +2 -2
  463. package/dist/core/keybindings.d.ts.map +1 -1
  464. package/dist/core/keybindings.js +1 -1
  465. package/dist/core/keybindings.js.map +1 -1
  466. package/dist/core/live-catalog.d.ts +1 -1
  467. package/dist/core/live-catalog.d.ts.map +1 -1
  468. package/dist/core/live-catalog.js.map +1 -1
  469. package/dist/core/messages.d.ts +3 -3
  470. package/dist/core/messages.d.ts.map +1 -1
  471. package/dist/core/messages.js.map +1 -1
  472. package/dist/core/model-registry.d.ts +1 -1
  473. package/dist/core/model-registry.d.ts.map +1 -1
  474. package/dist/core/model-registry.js.map +1 -1
  475. package/dist/core/model-resolver.d.ts +2 -2
  476. package/dist/core/model-resolver.d.ts.map +1 -1
  477. package/dist/core/model-resolver.js +1 -1
  478. package/dist/core/model-resolver.js.map +1 -1
  479. package/dist/core/model-runtime.d.ts +10 -1
  480. package/dist/core/model-runtime.d.ts.map +1 -1
  481. package/dist/core/model-runtime.js +24 -5
  482. package/dist/core/model-runtime.js.map +1 -1
  483. package/dist/core/models-store.d.ts +1 -1
  484. package/dist/core/models-store.d.ts.map +1 -1
  485. package/dist/core/models-store.js.map +1 -1
  486. package/dist/core/official-catalog.d.ts +1 -1
  487. package/dist/core/official-catalog.d.ts.map +1 -1
  488. package/dist/core/official-catalog.js.map +1 -1
  489. package/dist/core/provider-attribution.d.ts +1 -1
  490. package/dist/core/provider-attribution.d.ts.map +1 -1
  491. package/dist/core/provider-attribution.js.map +1 -1
  492. package/dist/core/provider-composer.d.ts +1 -1
  493. package/dist/core/provider-composer.d.ts.map +1 -1
  494. package/dist/core/provider-composer.js +2 -2
  495. package/dist/core/provider-composer.js.map +1 -1
  496. package/dist/core/runtime-credentials.d.ts +1 -1
  497. package/dist/core/runtime-credentials.d.ts.map +1 -1
  498. package/dist/core/runtime-credentials.js.map +1 -1
  499. package/dist/core/sdk.d.ts +3 -3
  500. package/dist/core/sdk.d.ts.map +1 -1
  501. package/dist/core/sdk.js +3 -3
  502. package/dist/core/sdk.js.map +1 -1
  503. package/dist/core/session-manager.d.ts +2 -2
  504. package/dist/core/session-manager.d.ts.map +1 -1
  505. package/dist/core/session-manager.js +1 -1
  506. package/dist/core/session-manager.js.map +1 -1
  507. package/dist/core/settings-manager.d.ts +2 -2
  508. package/dist/core/settings-manager.d.ts.map +1 -1
  509. package/dist/core/settings-manager.js.map +1 -1
  510. package/dist/core/subscriptions.d.ts +1 -1
  511. package/dist/core/subscriptions.d.ts.map +1 -1
  512. package/dist/core/subscriptions.js.map +1 -1
  513. package/dist/core/tools/bash.d.ts +1 -1
  514. package/dist/core/tools/bash.d.ts.map +1 -1
  515. package/dist/core/tools/bash.js +1 -1
  516. package/dist/core/tools/bash.js.map +1 -1
  517. package/dist/core/tools/edit.d.ts +2 -2
  518. package/dist/core/tools/edit.d.ts.map +1 -1
  519. package/dist/core/tools/edit.js +1 -1
  520. package/dist/core/tools/edit.js.map +1 -1
  521. package/dist/core/tools/find.d.ts +1 -1
  522. package/dist/core/tools/find.d.ts.map +1 -1
  523. package/dist/core/tools/find.js +1 -1
  524. package/dist/core/tools/find.js.map +1 -1
  525. package/dist/core/tools/grep.d.ts +1 -1
  526. package/dist/core/tools/grep.d.ts.map +1 -1
  527. package/dist/core/tools/grep.js +1 -1
  528. package/dist/core/tools/grep.js.map +1 -1
  529. package/dist/core/tools/index.d.ts +1 -1
  530. package/dist/core/tools/index.d.ts.map +1 -1
  531. package/dist/core/tools/index.js.map +1 -1
  532. package/dist/core/tools/ls.d.ts +1 -1
  533. package/dist/core/tools/ls.d.ts.map +1 -1
  534. package/dist/core/tools/ls.js +1 -1
  535. package/dist/core/tools/ls.js.map +1 -1
  536. package/dist/core/tools/read.d.ts +1 -1
  537. package/dist/core/tools/read.d.ts.map +1 -1
  538. package/dist/core/tools/read.js +1 -1
  539. package/dist/core/tools/read.js.map +1 -1
  540. package/dist/core/tools/render-utils.d.ts +1 -1
  541. package/dist/core/tools/render-utils.d.ts.map +1 -1
  542. package/dist/core/tools/render-utils.js +1 -1
  543. package/dist/core/tools/render-utils.js.map +1 -1
  544. package/dist/core/tools/tool-definition-wrapper.d.ts +1 -1
  545. package/dist/core/tools/tool-definition-wrapper.d.ts.map +1 -1
  546. package/dist/core/tools/tool-definition-wrapper.js.map +1 -1
  547. package/dist/core/tools/write.d.ts +1 -1
  548. package/dist/core/tools/write.d.ts.map +1 -1
  549. package/dist/core/tools/write.js +1 -1
  550. package/dist/core/tools/write.js.map +1 -1
  551. package/dist/core/usage-adapters/openai-codex.d.ts.map +1 -1
  552. package/dist/core/usage-adapters/openai-codex.js.map +1 -1
  553. package/dist/core/usage-adapters/xai.d.ts.map +1 -1
  554. package/dist/core/usage-adapters/xai.js +4 -0
  555. package/dist/core/usage-adapters/xai.js.map +1 -1
  556. package/dist/core/usage-history.d.ts.map +1 -1
  557. package/dist/core/usage-history.js.map +1 -1
  558. package/dist/core/usage-service.d.ts +11 -1
  559. package/dist/core/usage-service.d.ts.map +1 -1
  560. package/dist/core/usage-service.js +45 -9
  561. package/dist/core/usage-service.js.map +1 -1
  562. package/dist/core/user-models.d.ts +1 -1
  563. package/dist/core/user-models.d.ts.map +1 -1
  564. package/dist/core/user-models.js.map +1 -1
  565. package/dist/gateway/agent-bridge.d.ts +3 -3
  566. package/dist/gateway/agent-bridge.d.ts.map +1 -1
  567. package/dist/gateway/agent-bridge.js.map +1 -1
  568. package/dist/gateway/commands.d.ts.map +1 -1
  569. package/dist/gateway/commands.js.map +1 -1
  570. package/dist/gateway/cron.d.ts.map +1 -1
  571. package/dist/gateway/cron.js.map +1 -1
  572. package/dist/main.d.ts.map +1 -1
  573. package/dist/main.js +1 -1
  574. package/dist/main.js.map +1 -1
  575. package/dist/modes/interactive/components/armin.d.ts +1 -1
  576. package/dist/modes/interactive/components/armin.d.ts.map +1 -1
  577. package/dist/modes/interactive/components/armin.js.map +1 -1
  578. package/dist/modes/interactive/components/assistant-message.d.ts +2 -2
  579. package/dist/modes/interactive/components/assistant-message.d.ts.map +1 -1
  580. package/dist/modes/interactive/components/assistant-message.js +1 -1
  581. package/dist/modes/interactive/components/assistant-message.js.map +1 -1
  582. package/dist/modes/interactive/components/bash-execution.d.ts +1 -1
  583. package/dist/modes/interactive/components/bash-execution.d.ts.map +1 -1
  584. package/dist/modes/interactive/components/bash-execution.js +1 -1
  585. package/dist/modes/interactive/components/bash-execution.js.map +1 -1
  586. package/dist/modes/interactive/components/boot-screen.d.ts +1 -1
  587. package/dist/modes/interactive/components/boot-screen.d.ts.map +1 -1
  588. package/dist/modes/interactive/components/boot-screen.js +1 -1
  589. package/dist/modes/interactive/components/boot-screen.js.map +1 -1
  590. package/dist/modes/interactive/components/bordered-loader.d.ts +1 -1
  591. package/dist/modes/interactive/components/bordered-loader.d.ts.map +1 -1
  592. package/dist/modes/interactive/components/bordered-loader.js +1 -1
  593. package/dist/modes/interactive/components/bordered-loader.js.map +1 -1
  594. package/dist/modes/interactive/components/branch-summary-message.d.ts +1 -1
  595. package/dist/modes/interactive/components/branch-summary-message.d.ts.map +1 -1
  596. package/dist/modes/interactive/components/branch-summary-message.js +1 -1
  597. package/dist/modes/interactive/components/branch-summary-message.js.map +1 -1
  598. package/dist/modes/interactive/components/compaction-summary-message.d.ts +1 -1
  599. package/dist/modes/interactive/components/compaction-summary-message.d.ts.map +1 -1
  600. package/dist/modes/interactive/components/compaction-summary-message.js +1 -1
  601. package/dist/modes/interactive/components/compaction-summary-message.js.map +1 -1
  602. package/dist/modes/interactive/components/config-selector.d.ts +1 -1
  603. package/dist/modes/interactive/components/config-selector.d.ts.map +1 -1
  604. package/dist/modes/interactive/components/config-selector.js +1 -1
  605. package/dist/modes/interactive/components/config-selector.js.map +1 -1
  606. package/dist/modes/interactive/components/countdown-timer.d.ts +1 -1
  607. package/dist/modes/interactive/components/countdown-timer.d.ts.map +1 -1
  608. package/dist/modes/interactive/components/countdown-timer.js.map +1 -1
  609. package/dist/modes/interactive/components/custom-editor.d.ts +1 -1
  610. package/dist/modes/interactive/components/custom-editor.d.ts.map +1 -1
  611. package/dist/modes/interactive/components/custom-editor.js +1 -1
  612. package/dist/modes/interactive/components/custom-editor.js.map +1 -1
  613. package/dist/modes/interactive/components/custom-entry.d.ts +1 -1
  614. package/dist/modes/interactive/components/custom-entry.d.ts.map +1 -1
  615. package/dist/modes/interactive/components/custom-entry.js +1 -1
  616. package/dist/modes/interactive/components/custom-entry.js.map +1 -1
  617. package/dist/modes/interactive/components/custom-message.d.ts +1 -1
  618. package/dist/modes/interactive/components/custom-message.d.ts.map +1 -1
  619. package/dist/modes/interactive/components/custom-message.js +1 -1
  620. package/dist/modes/interactive/components/custom-message.js.map +1 -1
  621. package/dist/modes/interactive/components/daxnuts.d.ts +1 -1
  622. package/dist/modes/interactive/components/daxnuts.d.ts.map +1 -1
  623. package/dist/modes/interactive/components/daxnuts.js.map +1 -1
  624. package/dist/modes/interactive/components/dynamic-border.d.ts +1 -1
  625. package/dist/modes/interactive/components/dynamic-border.d.ts.map +1 -1
  626. package/dist/modes/interactive/components/dynamic-border.js.map +1 -1
  627. package/dist/modes/interactive/components/earendil-announcement.d.ts +1 -1
  628. package/dist/modes/interactive/components/earendil-announcement.d.ts.map +1 -1
  629. package/dist/modes/interactive/components/earendil-announcement.js +1 -1
  630. package/dist/modes/interactive/components/earendil-announcement.js.map +1 -1
  631. package/dist/modes/interactive/components/extension-editor.d.ts +1 -1
  632. package/dist/modes/interactive/components/extension-editor.d.ts.map +1 -1
  633. package/dist/modes/interactive/components/extension-editor.js +1 -1
  634. package/dist/modes/interactive/components/extension-editor.js.map +1 -1
  635. package/dist/modes/interactive/components/extension-input.d.ts +1 -1
  636. package/dist/modes/interactive/components/extension-input.d.ts.map +1 -1
  637. package/dist/modes/interactive/components/extension-input.js +1 -1
  638. package/dist/modes/interactive/components/extension-input.js.map +1 -1
  639. package/dist/modes/interactive/components/extension-selector.d.ts +1 -1
  640. package/dist/modes/interactive/components/extension-selector.d.ts.map +1 -1
  641. package/dist/modes/interactive/components/extension-selector.js +1 -1
  642. package/dist/modes/interactive/components/extension-selector.js.map +1 -1
  643. package/dist/modes/interactive/components/first-time-setup.d.ts +1 -1
  644. package/dist/modes/interactive/components/first-time-setup.d.ts.map +1 -1
  645. package/dist/modes/interactive/components/first-time-setup.js +1 -1
  646. package/dist/modes/interactive/components/first-time-setup.js.map +1 -1
  647. package/dist/modes/interactive/components/footer.d.ts +1 -1
  648. package/dist/modes/interactive/components/footer.d.ts.map +1 -1
  649. package/dist/modes/interactive/components/footer.js +1 -1
  650. package/dist/modes/interactive/components/footer.js.map +1 -1
  651. package/dist/modes/interactive/components/injected-prompt-message.d.ts +1 -1
  652. package/dist/modes/interactive/components/injected-prompt-message.d.ts.map +1 -1
  653. package/dist/modes/interactive/components/injected-prompt-message.js +1 -1
  654. package/dist/modes/interactive/components/injected-prompt-message.js.map +1 -1
  655. package/dist/modes/interactive/components/keybinding-hints.d.ts +1 -1
  656. package/dist/modes/interactive/components/keybinding-hints.d.ts.map +1 -1
  657. package/dist/modes/interactive/components/keybinding-hints.js +1 -1
  658. package/dist/modes/interactive/components/keybinding-hints.js.map +1 -1
  659. package/dist/modes/interactive/components/login-dialog.d.ts +2 -2
  660. package/dist/modes/interactive/components/login-dialog.d.ts.map +1 -1
  661. package/dist/modes/interactive/components/login-dialog.js +1 -1
  662. package/dist/modes/interactive/components/login-dialog.js.map +1 -1
  663. package/dist/modes/interactive/components/model-selector.d.ts +2 -2
  664. package/dist/modes/interactive/components/model-selector.d.ts.map +1 -1
  665. package/dist/modes/interactive/components/model-selector.js +2 -2
  666. package/dist/modes/interactive/components/model-selector.js.map +1 -1
  667. package/dist/modes/interactive/components/oauth-selector.d.ts +2 -2
  668. package/dist/modes/interactive/components/oauth-selector.d.ts.map +1 -1
  669. package/dist/modes/interactive/components/oauth-selector.js +1 -1
  670. package/dist/modes/interactive/components/oauth-selector.js.map +1 -1
  671. package/dist/modes/interactive/components/processes-selector.d.ts +1 -1
  672. package/dist/modes/interactive/components/processes-selector.d.ts.map +1 -1
  673. package/dist/modes/interactive/components/processes-selector.js +1 -1
  674. package/dist/modes/interactive/components/processes-selector.js.map +1 -1
  675. package/dist/modes/interactive/components/scoped-models-selector.d.ts +2 -2
  676. package/dist/modes/interactive/components/scoped-models-selector.d.ts.map +1 -1
  677. package/dist/modes/interactive/components/scoped-models-selector.js +1 -1
  678. package/dist/modes/interactive/components/scoped-models-selector.js.map +1 -1
  679. package/dist/modes/interactive/components/session-selector-search.d.ts.map +1 -1
  680. package/dist/modes/interactive/components/session-selector-search.js +1 -1
  681. package/dist/modes/interactive/components/session-selector-search.js.map +1 -1
  682. package/dist/modes/interactive/components/session-selector.d.ts +1 -1
  683. package/dist/modes/interactive/components/session-selector.d.ts.map +1 -1
  684. package/dist/modes/interactive/components/session-selector.js +1 -1
  685. package/dist/modes/interactive/components/session-selector.js.map +1 -1
  686. package/dist/modes/interactive/components/settings-selector.d.ts +3 -3
  687. package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
  688. package/dist/modes/interactive/components/settings-selector.js +1 -1
  689. package/dist/modes/interactive/components/settings-selector.js.map +1 -1
  690. package/dist/modes/interactive/components/show-images-selector.d.ts +1 -1
  691. package/dist/modes/interactive/components/show-images-selector.d.ts.map +1 -1
  692. package/dist/modes/interactive/components/show-images-selector.js +1 -1
  693. package/dist/modes/interactive/components/show-images-selector.js.map +1 -1
  694. package/dist/modes/interactive/components/skill-invocation-message.d.ts +1 -1
  695. package/dist/modes/interactive/components/skill-invocation-message.d.ts.map +1 -1
  696. package/dist/modes/interactive/components/skill-invocation-message.js +1 -1
  697. package/dist/modes/interactive/components/skill-invocation-message.js.map +1 -1
  698. package/dist/modes/interactive/components/status-indicator.d.ts +1 -1
  699. package/dist/modes/interactive/components/status-indicator.d.ts.map +1 -1
  700. package/dist/modes/interactive/components/status-indicator.js +1 -1
  701. package/dist/modes/interactive/components/status-indicator.js.map +1 -1
  702. package/dist/modes/interactive/components/theme-selector.d.ts +1 -1
  703. package/dist/modes/interactive/components/theme-selector.d.ts.map +1 -1
  704. package/dist/modes/interactive/components/theme-selector.js +1 -1
  705. package/dist/modes/interactive/components/theme-selector.js.map +1 -1
  706. package/dist/modes/interactive/components/thinking-selector.d.ts +2 -2
  707. package/dist/modes/interactive/components/thinking-selector.d.ts.map +1 -1
  708. package/dist/modes/interactive/components/thinking-selector.js +1 -1
  709. package/dist/modes/interactive/components/thinking-selector.js.map +1 -1
  710. package/dist/modes/interactive/components/thinking-summary.d.ts +1 -1
  711. package/dist/modes/interactive/components/thinking-summary.d.ts.map +1 -1
  712. package/dist/modes/interactive/components/thinking-summary.js.map +1 -1
  713. package/dist/modes/interactive/components/thinking-tail.d.ts +1 -1
  714. package/dist/modes/interactive/components/thinking-tail.d.ts.map +1 -1
  715. package/dist/modes/interactive/components/thinking-tail.js +1 -1
  716. package/dist/modes/interactive/components/thinking-tail.js.map +1 -1
  717. package/dist/modes/interactive/components/tool-execution.d.ts +1 -1
  718. package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
  719. package/dist/modes/interactive/components/tool-execution.js +1 -1
  720. package/dist/modes/interactive/components/tool-execution.js.map +1 -1
  721. package/dist/modes/interactive/components/tree-selector.d.ts +1 -1
  722. package/dist/modes/interactive/components/tree-selector.d.ts.map +1 -1
  723. package/dist/modes/interactive/components/tree-selector.js +1 -1
  724. package/dist/modes/interactive/components/tree-selector.js.map +1 -1
  725. package/dist/modes/interactive/components/trust-selector.d.ts +1 -1
  726. package/dist/modes/interactive/components/trust-selector.d.ts.map +1 -1
  727. package/dist/modes/interactive/components/trust-selector.js +1 -1
  728. package/dist/modes/interactive/components/trust-selector.js.map +1 -1
  729. package/dist/modes/interactive/components/usage-view.d.ts.map +1 -1
  730. package/dist/modes/interactive/components/usage-view.js +1 -1
  731. package/dist/modes/interactive/components/usage-view.js.map +1 -1
  732. package/dist/modes/interactive/components/user-message-selector.d.ts +1 -1
  733. package/dist/modes/interactive/components/user-message-selector.d.ts.map +1 -1
  734. package/dist/modes/interactive/components/user-message-selector.js +1 -1
  735. package/dist/modes/interactive/components/user-message-selector.js.map +1 -1
  736. package/dist/modes/interactive/components/user-message.d.ts +1 -1
  737. package/dist/modes/interactive/components/user-message.d.ts.map +1 -1
  738. package/dist/modes/interactive/components/user-message.js +1 -1
  739. package/dist/modes/interactive/components/user-message.js.map +1 -1
  740. package/dist/modes/interactive/components/visual-truncate.d.ts.map +1 -1
  741. package/dist/modes/interactive/components/visual-truncate.js +1 -1
  742. package/dist/modes/interactive/components/visual-truncate.js.map +1 -1
  743. package/dist/modes/interactive/interactive-mode.d.ts +1 -1
  744. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  745. package/dist/modes/interactive/interactive-mode.js +29 -4
  746. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  747. package/dist/modes/interactive/smooth-streaming.d.ts +1 -1
  748. package/dist/modes/interactive/smooth-streaming.d.ts.map +1 -1
  749. package/dist/modes/interactive/smooth-streaming.js.map +1 -1
  750. package/dist/modes/interactive/theme/theme-controller.d.ts +1 -1
  751. package/dist/modes/interactive/theme/theme-controller.d.ts.map +1 -1
  752. package/dist/modes/interactive/theme/theme-controller.js.map +1 -1
  753. package/dist/modes/interactive/theme/theme.d.ts +2 -2
  754. package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
  755. package/dist/modes/interactive/theme/theme.js +2 -2
  756. package/dist/modes/interactive/theme/theme.js.map +1 -1
  757. package/dist/modes/print-mode.d.ts +1 -1
  758. package/dist/modes/print-mode.d.ts.map +1 -1
  759. package/dist/modes/print-mode.js.map +1 -1
  760. package/dist/modes/rpc/rpc-client.d.ts +2 -2
  761. package/dist/modes/rpc/rpc-client.d.ts.map +1 -1
  762. package/dist/modes/rpc/rpc-client.js.map +1 -1
  763. package/dist/modes/rpc/rpc-types.d.ts +2 -2
  764. package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
  765. package/dist/modes/rpc/rpc-types.js.map +1 -1
  766. package/examples/extensions/auto-commit-on-exit.ts +1 -1
  767. package/examples/extensions/bash-spawn-hook.ts +2 -2
  768. package/examples/extensions/bookmark.ts +1 -1
  769. package/examples/extensions/border-status-editor.ts +3 -3
  770. package/examples/extensions/built-in-tool-renderer.ts +3 -3
  771. package/examples/extensions/claude-rules.ts +1 -1
  772. package/examples/extensions/commands.ts +1 -1
  773. package/examples/extensions/confirm-destructive.ts +1 -1
  774. package/examples/extensions/custom-compaction.ts +3 -3
  775. package/examples/extensions/custom-footer.ts +3 -3
  776. package/examples/extensions/custom-header.ts +2 -2
  777. package/examples/extensions/custom-provider-anthropic/index.ts +2 -2
  778. package/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
  779. package/examples/extensions/custom-provider-anthropic/package.json +1 -1
  780. package/examples/extensions/custom-provider-gitlab-duo/index.ts +2 -2
  781. package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
  782. package/examples/extensions/custom-provider-gitlab-duo/test.ts +1 -1
  783. package/examples/extensions/dirty-repo-guard.ts +1 -1
  784. package/examples/extensions/doom-overlay/doom-component.ts +2 -2
  785. package/examples/extensions/doom-overlay/doom-keys.ts +1 -1
  786. package/examples/extensions/doom-overlay/index.ts +1 -1
  787. package/examples/extensions/dynamic-resources/index.ts +1 -1
  788. package/examples/extensions/dynamic-tools.ts +1 -1
  789. package/examples/extensions/entry-renderer.ts +2 -2
  790. package/examples/extensions/event-bus.ts +1 -1
  791. package/examples/extensions/file-trigger.ts +1 -1
  792. package/examples/extensions/git-checkpoint.ts +1 -1
  793. package/examples/extensions/git-merge-and-resolve.ts +1 -1
  794. package/examples/extensions/github-issue-autocomplete.ts +2 -2
  795. package/examples/extensions/gondolin/index.ts +2 -2
  796. package/examples/extensions/gondolin/package-lock.json +2 -2
  797. package/examples/extensions/gondolin/package.json +1 -1
  798. package/examples/extensions/handoff.ts +4 -4
  799. package/examples/extensions/hello.ts +2 -2
  800. package/examples/extensions/hidden-thinking-label.ts +1 -1
  801. package/examples/extensions/inline-bash.ts +1 -1
  802. package/examples/extensions/input-transform-streaming.ts +1 -1
  803. package/examples/extensions/input-transform.ts +1 -1
  804. package/examples/extensions/interactive-shell.ts +1 -1
  805. package/examples/extensions/kimi-deferred-tools.ts +1 -1
  806. package/examples/extensions/mac-system-theme.ts +1 -1
  807. package/examples/extensions/message-renderer.ts +2 -2
  808. package/examples/extensions/minimal-mode.ts +3 -3
  809. package/examples/extensions/modal-editor.ts +2 -2
  810. package/examples/extensions/model-status.ts +1 -1
  811. package/examples/extensions/notify.ts +1 -1
  812. package/examples/extensions/overlay-qa-tests.ts +3 -3
  813. package/examples/extensions/overlay-test.ts +2 -2
  814. package/examples/extensions/permission-gate.ts +1 -1
  815. package/examples/extensions/pirate.ts +1 -1
  816. package/examples/extensions/plan-mode/index.ts +4 -4
  817. package/examples/extensions/preset.ts +4 -4
  818. package/examples/extensions/project-trust.ts +1 -1
  819. package/examples/extensions/prompt-customizer.ts +1 -1
  820. package/examples/extensions/protected-paths.ts +1 -1
  821. package/examples/extensions/provider-payload.ts +1 -1
  822. package/examples/extensions/qna.ts +3 -3
  823. package/examples/extensions/question.ts +2 -2
  824. package/examples/extensions/questionnaire.ts +2 -2
  825. package/examples/extensions/rainbow-editor.ts +1 -1
  826. package/examples/extensions/reload-runtime.ts +1 -1
  827. package/examples/extensions/rpc-demo.ts +1 -1
  828. package/examples/extensions/sandbox/index.ts +2 -2
  829. package/examples/extensions/send-user-message.ts +1 -1
  830. package/examples/extensions/session-name.ts +1 -1
  831. package/examples/extensions/shutdown-command.ts +1 -1
  832. package/examples/extensions/snake.ts +2 -2
  833. package/examples/extensions/space-invaders.ts +2 -2
  834. package/examples/extensions/ssh.ts +2 -2
  835. package/examples/extensions/status-line.ts +1 -1
  836. package/examples/extensions/structured-output.ts +2 -2
  837. package/examples/extensions/subagent/agents.ts +1 -1
  838. package/examples/extensions/subagent/index.ts +5 -5
  839. package/examples/extensions/summarize.ts +4 -4
  840. package/examples/extensions/system-prompt-header.ts +1 -1
  841. package/examples/extensions/tic-tac-toe.ts +3 -3
  842. package/examples/extensions/timed-confirm.ts +1 -1
  843. package/examples/extensions/titlebar-spinner.ts +1 -1
  844. package/examples/extensions/todo.ts +3 -3
  845. package/examples/extensions/tool-override.ts +2 -2
  846. package/examples/extensions/tools.ts +3 -3
  847. package/examples/extensions/trigger-compact.ts +1 -1
  848. package/examples/extensions/truncated-tool.ts +3 -3
  849. package/examples/extensions/widget-placement.ts +1 -1
  850. package/examples/extensions/with-deps/index.ts +1 -1
  851. package/examples/extensions/with-deps/package-lock.json +2 -2
  852. package/examples/extensions/with-deps/package.json +1 -1
  853. package/examples/extensions/working-indicator.ts +1 -1
  854. package/examples/extensions/working-message-test.ts +1 -1
  855. package/examples/rpc-extension-ui.ts +1 -1
  856. package/examples/sdk/01-minimal.ts +1 -1
  857. package/examples/sdk/02-custom-model.ts +2 -2
  858. package/examples/sdk/03-custom-prompt.ts +1 -1
  859. package/examples/sdk/04-skills.ts +1 -1
  860. package/examples/sdk/05-tools.ts +1 -1
  861. package/examples/sdk/06-extensions.ts +2 -2
  862. package/examples/sdk/07-context-files.ts +1 -1
  863. package/examples/sdk/08-prompt-templates.ts +1 -1
  864. package/examples/sdk/09-api-keys-and-oauth.ts +1 -1
  865. package/examples/sdk/10-settings.ts +1 -1
  866. package/examples/sdk/11-sessions.ts +1 -1
  867. package/examples/sdk/12-full-control.ts +2 -2
  868. package/examples/sdk/13-session-runtime.ts +1 -1
  869. package/package.json +4 -4
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/builtin-extensions/pi-intercom/index.ts"],"names":[],"mappings":"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","sourcesContent":["// @ts-nocheck\nimport type { ExtensionAPI, ExtensionContext } from \"@earendil-works/pi-coding-agent\";\nimport { StringEnum } from \"@earendil-works/pi-ai\";\nimport { randomUUID } from \"crypto\";\nimport { Type } from \"typebox\";\nimport { Text } from \"@earendil-works/pi-tui\";\nimport { IntercomClient } from \"./broker/client.ts\";\nimport { spawnBrokerIfNeeded } from \"./broker/spawn.ts\";\nimport { SessionListOverlay } from \"./ui/session-list.ts\";\nimport { ComposeOverlay, type ComposeResult } from \"./ui/compose.ts\";\nimport { InlineMessageComponent } from \"./ui/inline-message.ts\";\nimport { getAskTimeoutMs, loadConfig, type IntercomConfig } from \"./config.ts\";\nimport type { SessionInfo, Message, Attachment } from \"./types.ts\";\nimport { ReplyTracker } from \"./reply-tracker.ts\";\n\nconst SUBAGENT_CONTROL_INTERCOM_EVENT = \"subagent:control-intercom\";\nconst SUBAGENT_RESULT_INTERCOM_EVENT = \"subagent:result-intercom\";\nconst SUBAGENT_RESULT_INTERCOM_DELIVERY_EVENT = \"subagent:result-intercom-delivery\";\nconst INBOUND_FLUSH_DELAY_MS = 200;\nconst INBOUND_IDLE_RETRY_MS = 500;\nconst DEFAULT_UNNAMED_SESSION_ALIAS_PREFIX = \"subagent-chat\";\nconst SUBAGENT_ORCHESTRATOR_TARGET_ENV = \"PI_SUBAGENT_ORCHESTRATOR_TARGET\";\nconst SUBAGENT_ORCHESTRATOR_SESSION_ID_ENV = \"PI_SUBAGENT_ORCHESTRATOR_SESSION_ID\";\nconst INTERCOM_SESSION_ID_ENV = \"PI_INTERCOM_SESSION_ID\";\nconst NAME_POLL_MS_ENV = \"PI_INTERCOM_NAME_POLL_MS\";\nconst SUBAGENT_RUN_ID_ENV = \"PI_SUBAGENT_RUN_ID\";\nconst SUBAGENT_CHILD_AGENT_ENV = \"PI_SUBAGENT_CHILD_AGENT\";\nconst SUBAGENT_CHILD_INDEX_ENV = \"PI_SUBAGENT_CHILD_INDEX\";\nconst SUBAGENT_INTERCOM_SESSION_NAME_ENV = \"PI_SUBAGENT_INTERCOM_SESSION_NAME\";\n\ninterface ChildOrchestratorMetadata {\n orchestratorTarget: string;\n orchestratorSessionId?: string;\n runId: string;\n agent: string;\n index: string;\n sessionName?: string;\n}\n\ninterface InboundMessageEntry {\n from: SessionInfo;\n message: Message;\n replyCommand?: string;\n bodyText: string;\n}\n\ntype ContactSupervisorReason = \"need_decision\" | \"progress_update\" | \"interview_request\";\n\ninterface SupervisorInterviewQuestion extends Record<string, unknown> {\n id: string;\n type: \"single\" | \"multi\" | \"text\" | \"image\" | \"info\";\n question: string;\n options?: unknown[];\n}\n\ninterface SupervisorInterviewRequest extends Record<string, unknown> {\n title?: string;\n description?: string;\n questions: SupervisorInterviewQuestion[];\n}\n\ninterface SupervisorInterviewReply {\n responses: Array<{ id: string; value: unknown }>;\n}\n\nfunction getErrorMessage(error: unknown): string {\n return error instanceof Error ? error.message : String(error);\n}\n\nfunction toError(error: unknown): Error {\n return error instanceof Error ? error : new Error(String(error));\n}\n\nfunction formatAttachments(attachments: Attachment[]): string {\n let text = \"\";\n for (const att of attachments) {\n if (att.language) {\n text += `\\n\\n---\\n๐Ÿ“Ž ${att.name}\\n~~~${att.language}\\n${att.content}\\n~~~`;\n } else {\n text += `\\n\\n---\\n๐Ÿ“Ž ${att.name}\\n${att.content}`;\n }\n }\n return text;\n}\nfunction readChildOrchestratorMetadata(): ChildOrchestratorMetadata | null {\n const orchestratorTarget = process.env[SUBAGENT_ORCHESTRATOR_TARGET_ENV]?.trim();\n const orchestratorSessionId = process.env[SUBAGENT_ORCHESTRATOR_SESSION_ID_ENV]?.trim()\n || process.env[INTERCOM_SESSION_ID_ENV]?.trim();\n const runId = process.env[SUBAGENT_RUN_ID_ENV]?.trim();\n const agent = process.env[SUBAGENT_CHILD_AGENT_ENV]?.trim();\n const index = process.env[SUBAGENT_CHILD_INDEX_ENV]?.trim();\n if (!orchestratorTarget || !runId || !agent || !index) {\n return null;\n }\n const sessionName = process.env[SUBAGENT_INTERCOM_SESSION_NAME_ENV]?.trim();\n return {\n orchestratorTarget,\n ...(orchestratorSessionId ? { orchestratorSessionId } : {}),\n runId,\n agent,\n index,\n ...(sessionName ? { sessionName } : {}),\n };\n}\nfunction formatChildOrchestratorMessage(kind: \"ask\" | \"update\" | \"interview\", metadata: ChildOrchestratorMetadata, message: string): string {\n const heading = kind === \"ask\"\n ? \"Subagent needs a supervisor decision.\"\n : kind === \"interview\"\n ? \"Subagent requests a structured supervisor interview.\"\n : \"Subagent progress update.\";\n return [\n heading,\n `Run: ${metadata.runId}`,\n `Agent: ${metadata.agent}`,\n `Child index: ${metadata.index}`,\n metadata.sessionName ? `Child intercom target: ${metadata.sessionName}` : undefined,\n \"\",\n message,\n ].filter((line): line is string => line !== undefined).join(\"\\n\");\n}\n\nfunction validateSupervisorInterviewRequest(input: unknown): { ok: true; interview: SupervisorInterviewRequest } | { ok: false; error: string } {\n if (!input || typeof input !== \"object\" || Array.isArray(input)) {\n return { ok: false, error: \"interview must be an object with a questions array\" };\n }\n\n const raw = input as Record<string, unknown>;\n if (raw.title !== undefined && typeof raw.title !== \"string\") {\n return { ok: false, error: \"interview.title must be a string when provided\" };\n }\n if (raw.description !== undefined && typeof raw.description !== \"string\") {\n return { ok: false, error: \"interview.description must be a string when provided\" };\n }\n if (!Array.isArray(raw.questions) || raw.questions.length === 0) {\n return { ok: false, error: \"interview.questions must be a non-empty array\" };\n }\n\n const validTypes = new Set([\"single\", \"multi\", \"text\", \"image\", \"info\"]);\n const ids = new Set<string>();\n const questions: SupervisorInterviewQuestion[] = [];\n\n for (let index = 0; index < raw.questions.length; index++) {\n const questionInput = raw.questions[index];\n if (!questionInput || typeof questionInput !== \"object\" || Array.isArray(questionInput)) {\n return { ok: false, error: `interview.questions[${index}] must be an object` };\n }\n const question = questionInput as Record<string, unknown>;\n if (typeof question.id !== \"string\" || question.id.trim() === \"\") {\n return { ok: false, error: `interview.questions[${index}].id must be a non-empty string` };\n }\n const id = question.id.trim();\n if (ids.has(id)) {\n return { ok: false, error: `interview question id must be unique: ${id}` };\n }\n ids.add(id);\n\n if (typeof question.type !== \"string\" || !validTypes.has(question.type)) {\n return { ok: false, error: `interview.questions[${index}].type must be one of: single, multi, text, image, info` };\n }\n if (typeof question.question !== \"string\" || question.question.trim() === \"\") {\n return { ok: false, error: `interview.questions[${index}].question must be a non-empty string` };\n }\n if (question.context !== undefined && typeof question.context !== \"string\") {\n return { ok: false, error: `interview.questions[${index}].context must be a string when provided` };\n }\n let options: unknown[] | undefined;\n if (question.options !== undefined) {\n if (!Array.isArray(question.options)) {\n return { ok: false, error: `interview.questions[${index}].options must be an array when provided` };\n }\n options = [];\n for (let optionIndex = 0; optionIndex < question.options.length; optionIndex++) {\n const option = question.options[optionIndex];\n if (typeof option === \"string\") {\n const label = option.trim();\n if (!label) {\n return { ok: false, error: `interview.questions[${index}].options[${optionIndex}] must not be empty` };\n }\n options.push(label);\n } else if (!option || typeof option !== \"object\" || Array.isArray(option) || typeof (option as { label?: unknown }).label !== \"string\" || (option as { label: string }).label.trim() === \"\") {\n return { ok: false, error: `interview.questions[${index}].options[${optionIndex}] must be a non-empty string or an object with a non-empty label` };\n } else {\n options.push({ ...option, label: (option as { label: string }).label.trim() });\n }\n }\n }\n if ((question.type === \"single\" || question.type === \"multi\") && (!options || options.length === 0)) {\n return { ok: false, error: `interview.questions[${index}].options must be a non-empty array for ${question.type} questions` };\n }\n if (question.type !== \"single\" && question.type !== \"multi\" && options) {\n return { ok: false, error: `interview.questions[${index}].options is only valid for single and multi questions` };\n }\n\n questions.push({\n ...question,\n id,\n type: question.type as SupervisorInterviewQuestion[\"type\"],\n question: question.question.trim(),\n ...(options ? { options } : {}),\n });\n }\n\n return {\n ok: true,\n interview: {\n ...raw,\n ...(typeof raw.title === \"string\" ? { title: raw.title.trim() } : {}),\n ...(typeof raw.description === \"string\" ? { description: raw.description.trim() } : {}),\n questions,\n },\n };\n}\n\nfunction interviewOptionLabel(option: unknown): string {\n return typeof option === \"string\" ? option : (option as { label: string }).label;\n}\n\nfunction interviewExampleValue(question: SupervisorInterviewQuestion): unknown {\n if (question.type === \"multi\") {\n return question.options?.slice(0, 2).map(interviewOptionLabel) ?? [];\n }\n if (question.type === \"single\") {\n return question.options?.[0] !== undefined ? interviewOptionLabel(question.options[0]) : \"option label\";\n }\n if (question.type === \"image\") {\n return \"image/file reference or description\";\n }\n return \"answer text\";\n}\n\nfunction formatSupervisorInterviewRequest(interview: SupervisorInterviewRequest, message?: string): string {\n const lines: string[] = [];\n const title = interview.title?.trim();\n if (title) lines.push(`Interview: ${title}`);\n const description = interview.description?.trim();\n if (description) lines.push(description);\n const note = message?.trim();\n if (note) lines.push(`Child note: ${note}`);\n if (lines.length > 0) lines.push(\"\");\n\n lines.push(\"Questions:\");\n interview.questions.forEach((question, index) => {\n lines.push(`${index + 1}. [${question.id}] (${question.type}) ${question.question}`);\n if (typeof question.context === \"string\" && question.context.trim()) {\n lines.push(` Context: ${question.context.trim()}`);\n }\n if (question.options?.length) {\n lines.push(\" Options:\");\n for (const option of question.options) {\n lines.push(` - ${interviewOptionLabel(option)}`);\n }\n }\n });\n\n const responseExample = {\n responses: interview.questions\n .filter((question) => question.type !== \"info\")\n .map((question) => ({\n id: question.id,\n value: interviewExampleValue(question),\n })),\n };\n\n lines.push(\n \"\",\n \"Supervisor reply instructions:\",\n \"Reply with plain JSON or a fenced ```json block using this stable shape. Use the question ids exactly. Info questions are context-only and do not need responses. For single questions, value is one option label. For multi questions, value is an array of option labels. For text/image questions, value is a string unless the question asks otherwise.\",\n \"\",\n \"```json\",\n JSON.stringify(responseExample, null, 2),\n \"```\",\n );\n\n return lines.join(\"\\n\");\n}\n\nfunction validateSupervisorInterviewReply(value: unknown, interview: SupervisorInterviewRequest): SupervisorInterviewReply {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) {\n throw new Error(\"reply JSON must be an object with a responses array\");\n }\n\n const responsesInput = (value as Record<string, unknown>).responses;\n if (!Array.isArray(responsesInput)) {\n throw new Error(\"reply JSON must include a responses array\");\n }\n\n const questionById = new Map(interview.questions\n .filter((question) => question.type !== \"info\")\n .map((question) => [question.id, question]));\n const seenIds = new Set<string>();\n const responses: SupervisorInterviewReply[\"responses\"] = [];\n\n for (let index = 0; index < responsesInput.length; index++) {\n const response = responsesInput[index];\n if (!response || typeof response !== \"object\" || Array.isArray(response)) {\n throw new Error(`responses[${index}] must be an object`);\n }\n\n const raw = response as Record<string, unknown>;\n if (typeof raw.id !== \"string\" || raw.id.trim() === \"\") {\n throw new Error(`responses[${index}].id must be a non-empty string`);\n }\n const id = raw.id.trim();\n const question = questionById.get(id);\n if (!question) {\n throw new Error(`responses[${index}].id must match a non-info interview question id`);\n }\n if (seenIds.has(id)) {\n throw new Error(`responses[${index}].id is duplicated: ${id}`);\n }\n seenIds.add(id);\n if (!Object.hasOwn(raw, \"value\")) {\n throw new Error(`responses[${index}].value is required`);\n }\n\n const value = raw.value;\n if (question.type === \"single\") {\n if (typeof value !== \"string\") throw new Error(`responses[${index}].value must be a string for single questions`);\n const optionLabels = new Set(question.options?.map(interviewOptionLabel));\n if (!optionLabels.has(value.trim())) throw new Error(`responses[${index}].value must match one of the question options`);\n responses.push({ id, value: value.trim() });\n continue;\n }\n\n if (question.type === \"multi\") {\n if (!Array.isArray(value) || value.some((item) => typeof item !== \"string\")) {\n throw new Error(`responses[${index}].value must be an array of strings for multi questions`);\n }\n const optionLabels = new Set(question.options?.map(interviewOptionLabel));\n const selected = value.map((item) => item.trim());\n const invalid = selected.find((item) => !optionLabels.has(item));\n if (invalid) throw new Error(`responses[${index}].value contains an option that is not in the question options: ${invalid}`);\n responses.push({ id, value: selected });\n continue;\n }\n\n if (typeof value !== \"string\") {\n throw new Error(`responses[${index}].value must be a string for ${question.type} questions`);\n }\n responses.push({ id, value });\n }\n\n return { responses };\n}\n\nfunction parseStructuredSupervisorReply(text: string, interview: SupervisorInterviewRequest): { value?: SupervisorInterviewReply; error?: string } | undefined {\n const fencedMatch = text.match(/```(?:json)?\\s*([\\s\\S]*?)```/i);\n const candidate = (fencedMatch?.[1] ?? text).trim();\n if (!candidate.startsWith(\"{\") && !candidate.startsWith(\"[\")) {\n return undefined;\n }\n try {\n return { value: validateSupervisorInterviewReply(JSON.parse(candidate), interview) };\n } catch (error) {\n return { error: getErrorMessage(error) };\n }\n}\nfunction duplicateSessionNames(sessions: SessionInfo[]): Set<string> {\n return new Set(\n sessions\n .map(s => s.name?.toLowerCase())\n .filter((name): name is string => Boolean(name))\n .filter((name, index, names) => names.indexOf(name) !== index)\n );\n}\nfunction shortSessionId(sessionId: string): string {\n return sessionId.slice(0, 8);\n}\nfunction parseSubagentIntercomPayload(payload: unknown): { to: string; message: string; requestId?: string } | null {\n if (typeof payload !== \"object\" || payload === null) {\n return null;\n }\n const record = payload as Record<string, unknown>;\n if (typeof record.to !== \"string\" || typeof record.message !== \"string\") {\n return null;\n }\n const requestId = typeof record.requestId === \"string\" ? record.requestId : undefined;\n return { to: record.to, message: record.message, ...(requestId ? { requestId } : {}) };\n}\nfunction resolveIntercomPresenceName(sessionName: string | undefined, sessionId: string): string {\n const trimmedName = sessionName?.trim();\n if (trimmedName) {\n return trimmedName;\n }\n const normalizedSessionId = sessionId.startsWith(\"session-\") ? sessionId.slice(\"session-\".length) : sessionId;\n return `${DEFAULT_UNNAMED_SESSION_ALIAS_PREFIX}-${normalizedSessionId.slice(0, 8)}`;\n}\nfunction buildPresenceIdentity(pi: ExtensionAPI, sessionId: string): { name: string } {\n return {\n name: resolveIntercomPresenceName(pi.getSessionName(), sessionId),\n };\n}\nfunction formatSessionLabel(session: SessionInfo, duplicates: Set<string>): string {\n if (!session.name) {\n return session.id;\n }\n return duplicates.has(session.name.toLowerCase())\n ? `${session.name} (${shortSessionId(session.id)})`\n : session.name;\n}\nfunction formatSessionListRow(session: SessionInfo, currentCwd: string, isSelf: boolean): string {\n const name = session.name || \"Unnamed session\";\n const tags = [isSelf ? \"self\" : session.cwd === currentCwd ? \"same cwd\" : undefined, session.status]\n .filter((tag): tag is string => Boolean(tag));\n const suffix = tags.length ? ` [${tags.join(\", \")}]` : \"\";\n return `โ€ข ${name} (${shortSessionId(session.id)}) โ€” ${session.cwd} (${session.model})${suffix}`;\n}\nfunction previewText(value: unknown, maxLength = 72): string | undefined {\n if (typeof value !== \"string\") {\n return undefined;\n }\n const normalized = value.replace(/\\s+/g, \" \").trim();\n if (!normalized) {\n return undefined;\n }\n return normalized.length > maxLength ? `${normalized.slice(0, maxLength - 1)}โ€ฆ` : normalized;\n}\nfunction firstTextContent(result: { content?: Array<{ type: string; text?: string }> }): string {\n return result.content?.find((item) => item.type === \"text\" && typeof item.text === \"string\")?.text?.replace(/\\*\\*/g, \"\") ?? \"\";\n}\nfunction getNamePollMs(): number {\n const configured = process.env[NAME_POLL_MS_ENV];\n if (configured !== undefined) {\n const value = Number(configured);\n if (Number.isFinite(value) && value > 0) {\n return value;\n }\n }\n return 1000;\n}\nexport default function piIntercomExtension(pi: ExtensionAPI) {\n let client: IntercomClient | null = null;\n const config: IntercomConfig = loadConfig();\n const askTimeoutMs = getAskTimeoutMs();\n let runtimeContext: ExtensionContext | null = null;\n let currentSessionId: string | null = null;\n let currentModel = \"unknown\";\n let sessionStartedAt: number | null = null;\n let reconnectTimer: NodeJS.Timeout | null = null;\n let namePollTimer: NodeJS.Timeout | null = null;\n let lastPresenceName: string | null = null;\n const previousIntercomSessionId = process.env[INTERCOM_SESSION_ID_ENV];\n let reconnectPromise: Promise<IntercomClient> | null = null;\n let reconnectPromiseGeneration: number | null = null;\n let startupConnectTimer: NodeJS.Timeout | null = null;\n let reconnectAttempt = 0;\n let shuttingDown = false;\n let disposed = true;\n let runtimeStarted = false;\n let runtimeGeneration = 0;\n let agentRunning = false;\n const activeTools = new Map<string, string>();\n const replyTracker = new ReplyTracker();\n const pendingIdleMessages: InboundMessageEntry[] = [];\n let inboundFlushTimer: NodeJS.Timeout | null = null;\n let replyWaiter: {\n from: string;\n replyTo: string;\n resolve: (message: Message) => void;\n reject: (error: Error) => void;\n } | null = null;\n function waitForReply(from: string, replyTo: string, signal?: AbortSignal, onCancel?: () => void): Promise<Message> {\n if (replyWaiter) {\n return Promise.reject(new Error(\"Already waiting for a reply\"));\n }\n if (signal?.aborted) {\n return Promise.reject(new Error(\"Cancelled\"));\n }\n return new Promise((resolve, reject) => {\n const timeout = setTimeout(() => {\n onCancel?.();\n const timeoutDescription = askTimeoutMs % 60000 === 0 ? `${askTimeoutMs / 60000} minutes` : `${askTimeoutMs}ms`;\n rejectReplyWaiter(new Error(`No reply from \"${from}\" within ${timeoutDescription}`));\n }, askTimeoutMs);\n const cleanup = () => {\n clearTimeout(timeout);\n signal?.removeEventListener(\"abort\", onAbort);\n if (replyWaiter?.replyTo === replyTo) {\n replyWaiter = null;\n }\n };\n const onAbort = () => {\n onCancel?.();\n cleanup();\n reject(new Error(\"Cancelled\"));\n };\n signal?.addEventListener(\"abort\", onAbort, { once: true });\n replyWaiter = {\n from,\n replyTo,\n resolve: (message) => {\n cleanup();\n resolve(message);\n },\n reject: (error) => {\n cleanup();\n reject(error);\n },\n };\n });\n }\n function rejectReplyWaiter(error: Error): void {\n replyWaiter?.reject(error);\n }\n function clearReconnectTimer(): void {\n if (!reconnectTimer) {\n return;\n }\n clearTimeout(reconnectTimer);\n reconnectTimer = null;\n }\n function clearStartupConnectTimer(): void {\n if (!startupConnectTimer) {\n return;\n }\n clearTimeout(startupConnectTimer);\n startupConnectTimer = null;\n }\n function clearNamePollTimer(): void {\n if (!namePollTimer) {\n return;\n }\n clearInterval(namePollTimer);\n namePollTimer = null;\n }\n function clearInboundFlushTimer(): void {\n if (!inboundFlushTimer) {\n return;\n }\n clearTimeout(inboundFlushTimer);\n inboundFlushTimer = null;\n }\n function getLiveContext(ctx: ExtensionContext | null = runtimeContext, generation = runtimeGeneration): ExtensionContext | null {\n if (disposed || shuttingDown || generation !== runtimeGeneration || !ctx) {\n return null;\n }\n try {\n if (currentSessionId && ctx.sessionManager.getSessionId() !== currentSessionId) {\n return null;\n }\n void ctx.hasUI;\n return ctx;\n } catch {\n // A context that throws while reading session/UI state is no longer usable.\n return null;\n }\n }\n function notifyIfLive(ctx: ExtensionContext, message: string, level: \"info\" | \"warning\" | \"error\", generation = runtimeGeneration): void {\n const liveContext = getLiveContext(ctx, generation);\n if (!liveContext?.hasUI) {\n return;\n }\n try {\n liveContext.ui.notify(message, level);\n } catch {\n // The UI can disappear during session shutdown/reload while async overlay work is settling.\n }\n }\n function getReconnectDelayMs(): number {\n const backoffMs = [1000, 2000, 5000, 10000, 30000];\n return backoffMs[Math.min(reconnectAttempt, backoffMs.length - 1)]!;\n }\n function currentStatus(): string {\n const activeToolName = activeTools.values().next().value;\n const lifecycleStatus = activeToolName ? `tool:${activeToolName}` : agentRunning ? \"thinking\" : \"idle\";\n return config.status ? `${lifecycleStatus} ยท ${config.status}` : lifecycleStatus;\n }\n function buildRegistration(): Omit<SessionInfo, \"id\"> {\n const liveContext = getLiveContext();\n if (!liveContext || !currentSessionId || sessionStartedAt === null) {\n throw new Error(\"Intercom runtime not initialized\");\n }\n\n const identity = buildPresenceIdentity(pi, currentSessionId);\n return {\n name: identity.name,\n cwd: liveContext.cwd,\n model: currentModel,\n pid: process.pid,\n startedAt: sessionStartedAt,\n lastActivity: Date.now(),\n status: currentStatus(),\n };\n }\n function syncPresenceIdentity(sessionId: string): void {\n if (!client || !getLiveContext()) {\n return;\n }\n const identity = buildPresenceIdentity(pi, sessionId);\n lastPresenceName = identity.name;\n client.updatePresence({ ...identity, status: currentStatus() });\n }\n function startNamePoll(): void {\n clearNamePollTimer();\n lastPresenceName = currentSessionId ? buildPresenceIdentity(pi, currentSessionId).name : null;\n namePollTimer = setInterval(() => {\n if (!currentSessionId || !getLiveContext()) {\n return;\n }\n const identity = buildPresenceIdentity(pi, currentSessionId);\n if (identity.name !== lastPresenceName) {\n syncPresenceIdentity(currentSessionId);\n }\n }, getNamePollMs());\n namePollTimer.unref?.();\n }\n function publishIntercomSessionId(sessionId: string): void {\n process.env[INTERCOM_SESSION_ID_ENV] = sessionId;\n }\n function restoreIntercomSessionId(): void {\n if (previousIntercomSessionId === undefined) {\n delete process.env[INTERCOM_SESSION_ID_ENV];\n return;\n }\n process.env[INTERCOM_SESSION_ID_ENV] = previousIntercomSessionId;\n }\n function syncPresenceStatus(): void {\n if (!client || !currentSessionId || !getLiveContext()) {\n return;\n }\n client.updatePresence({ status: currentStatus() });\n }\n function currentSessionTargetMatches(to: string, resolvedTo?: string | null, activeClient?: IntercomClient): boolean {\n const targets = new Set<string>();\n const addTarget = (target: string | undefined | null) => {\n const trimmed = target?.trim();\n if (trimmed) targets.add(trimmed.toLowerCase());\n };\n addTarget(currentSessionId);\n addTarget(activeClient?.sessionId);\n addTarget(pi.getSessionName());\n if (currentSessionId) addTarget(buildPresenceIdentity(pi, currentSessionId).name);\n return Boolean(resolvedTo && activeClient?.sessionId && resolvedTo === activeClient.sessionId)\n || targets.has(to.trim().toLowerCase());\n }\n function shouldTriggerInboundMessage(entry: InboundMessageEntry, forceTrigger = false): boolean {\n if (forceTrigger) {\n return true;\n }\n if (config.inboundTrigger === \"always\") {\n return true;\n }\n if (config.inboundTrigger === \"replies\") {\n return Boolean(entry.message.replyTo);\n }\n return false;\n }\n function sendIncomingMessage(entry: InboundMessageEntry, delivery: \"trigger\" | \"followUp\", generation = runtimeGeneration, forceTrigger = false): void {\n if (runtimeStarted && !getLiveContext(runtimeContext, generation)) {\n return;\n }\n if (delivery !== \"followUp\") {\n replyTracker.queueTurnContext({ from: entry.from, message: entry.message, receivedAt: Date.now() });\n }\n const senderDisplay = entry.from.name || entry.from.id.slice(0, 8);\n const replyInstruction = entry.replyCommand ? `\\n\\nTo reply, use the intercom tool: ${entry.replyCommand}` : \"\";\n pi.sendMessage(\n {\n customType: \"intercom_message\",\n content: `**๐Ÿ“จ From ${senderDisplay}** (${entry.from.cwd})${replyInstruction}\\n\\n${entry.bodyText}`,\n display: true,\n details: entry,\n },\n delivery === \"trigger\" && shouldTriggerInboundMessage(entry, forceTrigger)\n ? { triggerTurn: true }\n : { deliverAs: \"followUp\" }\n );\n }\n function scheduleInboundFlush(delayMs = INBOUND_FLUSH_DELAY_MS): void {\n if (!getLiveContext()) {\n return;\n }\n const scheduledGeneration = runtimeGeneration;\n clearInboundFlushTimer();\n inboundFlushTimer = setTimeout(() => {\n inboundFlushTimer = null;\n flushIdleMessages(scheduledGeneration);\n }, delayMs);\n }\n function flushIdleMessages(generation = runtimeGeneration): void {\n if (pendingIdleMessages.length === 0) {\n return;\n }\n const ctx = getLiveContext(runtimeContext, generation);\n if (!ctx) {\n return;\n }\n\n let isIdle: boolean;\n try {\n isIdle = ctx.isIdle();\n } catch {\n // Stale contexts are cleaned up by shutdown/reload; do not deliver queued messages through them.\n return;\n }\n if (!isIdle) {\n scheduleInboundFlush(INBOUND_IDLE_RETRY_MS);\n return;\n }\n\n const entries = pendingIdleMessages.splice(0, pendingIdleMessages.length);\n entries.forEach((entry, index) => {\n sendIncomingMessage(entry, index === 0 ? \"trigger\" : \"followUp\");\n });\n }\n function queueIdleMessage(entry: InboundMessageEntry): void {\n pendingIdleMessages.push(entry);\n scheduleInboundFlush();\n }\n function handleIncomingMessage(ctx: ExtensionContext, from: SessionInfo, message: Message): void {\n const messageGeneration = runtimeGeneration;\n const liveContext = getLiveContext(ctx, messageGeneration);\n if (!liveContext) {\n return;\n }\n if (replyWaiter) {\n const senderTarget = from.name || from.id;\n const fromMatches = senderTarget.toLowerCase() === replyWaiter.from.toLowerCase()\n || from.id === replyWaiter.from;\n const replyMatches = message.replyTo === replyWaiter.replyTo;\n if (fromMatches && replyMatches) {\n replyWaiter.resolve(message);\n return;\n }\n }\n const attachmentText = message.content.attachments?.length\n ? formatAttachments(message.content.attachments)\n : \"\";\n const bodyText = `${message.content.text}${attachmentText}`;\n const replyCommand = config.replyHint && message.expectsReply\n ? `intercom({ action: \"reply\", message: \"...\" })`\n : undefined;\n replyTracker.recordIncomingMessage(from, message);\n const entry = { from, message, replyCommand, bodyText };\n void (async () => {\n const activeContext = getLiveContext(liveContext, messageGeneration);\n if (!activeContext) {\n return;\n }\n if (!activeContext.isIdle()) {\n if (!activeContext.hasUI) {\n const activeClient = client;\n if (!message.replyTo && activeClient?.isConnected()) {\n try {\n const result = await activeClient.send(from.id, {\n text: \"This agent is running in non-interactive mode and cannot respond to intercom messages while it is working. It will continue its current task and exit when done.\",\n replyTo: message.id,\n });\n if (result.delivered && getLiveContext(liveContext, messageGeneration)) {\n replyTracker.markReplied(message.id);\n }\n } catch {\n // Best-effort reply; keep the busy non-interactive session running either way.\n }\n }\n return;\n }\n queueIdleMessage(entry);\n return;\n }\n if (getLiveContext(liveContext, messageGeneration)) {\n sendIncomingMessage(entry, \"trigger\", messageGeneration);\n }\n })();\n }\n function attachClientHandlers(nextClient: IntercomClient): void {\n nextClient.on(\"message\", (from, message) => {\n const liveContext = getLiveContext();\n if (client !== nextClient || !liveContext) {\n return;\n }\n handleIncomingMessage(liveContext, from, message);\n });\n nextClient.on(\"disconnected\", (error: Error) => {\n if (client !== nextClient) {\n return;\n }\n rejectReplyWaiter(new Error(`Disconnected while waiting for reply: ${error.message}`, { cause: error }));\n client = null;\n if (!shuttingDown && !disposed) {\n clearReconnectTimer();\n scheduleReconnect();\n }\n });\n nextClient.on(\"error\", () => {\n // Keep broker/socket noise out of the TUI. Reconnect logic runs from the disconnect path.\n });\n }\n function scheduleReconnect(): void {\n if (disposed || shuttingDown || reconnectTimer || reconnectPromise || !getLiveContext()) {\n return;\n }\n const scheduledGeneration = runtimeGeneration;\n reconnectTimer = setTimeout(() => {\n reconnectTimer = null;\n if (scheduledGeneration !== runtimeGeneration || !getLiveContext()) {\n return;\n }\n reconnectAttempt += 1;\n void ensureConnected(\"background\").catch(() => {\n // ensureConnected(\"background\") already queued the next retry.\n });\n }, getReconnectDelayMs());\n }\n async function ensureConnected(reason: \"startup\" | \"background\" | \"tool\" | \"overlay\"): Promise<IntercomClient> {\n if (!config.enabled) {\n throw new Error(\"Intercom disabled\");\n }\n if (disposed || shuttingDown) {\n throw new Error(\"Intercom shutting down\");\n }\n if (client && client.isConnected()) {\n return client;\n }\n const contextAtStart = getLiveContext();\n const generationAtStart = runtimeGeneration;\n if (!contextAtStart || !currentSessionId || sessionStartedAt === null) {\n throw new Error(\"Intercom runtime not initialized\");\n }\n clearReconnectTimer();\n if (reconnectPromise && reconnectPromiseGeneration === generationAtStart) {\n return reconnectPromise;\n }\n const nextReconnectPromise = (async () => {\n const nextClient = new IntercomClient();\n client = nextClient;\n attachClientHandlers(nextClient);\n try {\n await spawnBrokerIfNeeded(config.brokerCommand, config.brokerArgs);\n await nextClient.connect(buildRegistration(), currentSessionId);\n if (!getLiveContext(contextAtStart, generationAtStart)) {\n await nextClient.disconnect();\n throw new Error(\"Intercom runtime no longer active\");\n }\n client = nextClient;\n reconnectAttempt = 0;\n return nextClient;\n } catch (error) {\n if (client === nextClient) {\n client = null;\n }\n if (reason === \"background\" && getLiveContext(contextAtStart, generationAtStart)) {\n scheduleReconnect();\n }\n throw toError(error);\n } finally {\n if (reconnectPromise === nextReconnectPromise) {\n reconnectPromise = null;\n reconnectPromiseGeneration = null;\n }\n }\n })();\n reconnectPromise = nextReconnectPromise;\n reconnectPromiseGeneration = generationAtStart;\n return nextReconnectPromise;\n }\n async function resolveSessionTarget(activeClient: IntercomClient, nameOrId: string): Promise<string | null> {\n const sessions = await activeClient.listSessions();\n const byId = sessions.find(s => s.id === nameOrId);\n if (byId) {\n return byId.id;\n }\n const lowerName = nameOrId.toLowerCase();\n const byName = sessions.filter(s => s.name?.toLowerCase() === lowerName);\n if (byName.length > 1) {\n throw new Error(`Multiple sessions named \"${nameOrId}\" are connected. Use the session ID instead.`);\n }\n if (byName.length === 1) {\n return byName[0]!.id;\n }\n\n const byIdPrefix = sessions.filter(s => s.id.startsWith(nameOrId));\n if (byIdPrefix.length === 1) {\n return byIdPrefix[0]!.id;\n }\n if (byIdPrefix.length > 1) {\n throw new Error(`Multiple sessions match ID prefix \"${nameOrId}\". Use a longer session ID prefix.`);\n }\n return null;\n }\n async function resolveSupervisorTarget(activeClient: IntercomClient, metadata: ChildOrchestratorMetadata): Promise<string> {\n if (metadata.orchestratorSessionId) {\n const bySessionId = await resolveSessionTarget(activeClient, metadata.orchestratorSessionId);\n if (bySessionId) {\n return bySessionId;\n }\n }\n return await resolveSessionTarget(activeClient, metadata.orchestratorTarget) ?? metadata.orchestratorTarget;\n }\n function deliverLocalSubagentRelayMessage(sender: \"subagent-control\" | \"subagent-result\", status: string, messageText: string): void {\n const liveContext = getLiveContext();\n const now = Date.now();\n sendIncomingMessage({\n from: {\n id: sender,\n name: sender,\n cwd: liveContext?.cwd ?? \"\",\n model: sender,\n pid: process.pid,\n startedAt: now,\n lastActivity: now,\n status,\n },\n message: {\n id: randomUUID(),\n timestamp: now,\n content: { text: messageText },\n },\n bodyText: messageText,\n }, \"trigger\", runtimeGeneration, true);\n }\n function recordSubagentDeliveryError(entryType: string, to: string, message: string, error: unknown): void {\n pi.appendEntry(entryType, {\n to,\n message,\n error: getErrorMessage(error),\n timestamp: Date.now(),\n });\n }\n function startSessionRuntime(ctx: ExtensionContext): void {\n const previousClient = client;\n if (previousClient) {\n client = null;\n void previousClient.disconnect().catch(() => undefined);\n }\n shuttingDown = false;\n disposed = false;\n runtimeStarted = true;\n runtimeGeneration += 1;\n reconnectAttempt = 0;\n clearReconnectTimer();\n clearStartupConnectTimer();\n clearNamePollTimer();\n clearInboundFlushTimer();\n rejectReplyWaiter(new Error(\"Session replaced\"));\n replyTracker.reset();\n pendingIdleMessages.length = 0;\n runtimeContext = ctx;\n currentSessionId = ctx.sessionManager.getSessionId();\n publishIntercomSessionId(currentSessionId);\n currentModel = ctx.model?.id ?? \"unknown\";\n sessionStartedAt = Date.now();\n lastPresenceName = buildPresenceIdentity(pi, currentSessionId).name;\n agentRunning = false;\n activeTools.clear();\n startNamePoll();\n const startupGeneration = runtimeGeneration;\n startupConnectTimer = setTimeout(() => {\n startupConnectTimer = null;\n if (!getLiveContext(ctx, startupGeneration)) {\n return;\n }\n void ensureConnected(\"startup\").catch(() => {\n if (!getLiveContext(ctx, startupGeneration)) {\n return;\n }\n client = null;\n scheduleReconnect();\n });\n }, 0);\n }\n function emitResultDelivery(requestId: string | undefined, delivered: boolean, error?: unknown): void {\n if (!requestId) return;\n pi.events.emit(SUBAGENT_RESULT_INTERCOM_DELIVERY_EVENT, {\n requestId,\n delivered,\n ...(error ? { error: getErrorMessage(error) } : {}),\n });\n }\n function relaySubagentIntercomPayload(payload: unknown, options: {\n sender: \"subagent-control\" | \"subagent-result\";\n status: string;\n errorEntryType: string;\n acknowledge?: boolean;\n }): void {\n const parsed = parseSubagentIntercomPayload(payload);\n if (!parsed) return;\n\n const relayGeneration = runtimeGeneration;\n void (async () => {\n const relayStillLive = () => !runtimeStarted || Boolean(getLiveContext(runtimeContext, relayGeneration));\n if (!relayStillLive()) {\n return;\n }\n if (currentSessionTargetMatches(parsed.to)) {\n deliverLocalSubagentRelayMessage(options.sender, options.status, parsed.message);\n if (options.acknowledge) emitResultDelivery(parsed.requestId, true);\n return;\n }\n\n let activeClient: IntercomClient;\n let target: string;\n try {\n activeClient = await ensureConnected(\"background\");\n target = await resolveSessionTarget(activeClient, parsed.to) ?? parsed.to;\n } catch (error) {\n if (!relayStillLive()) return;\n recordSubagentDeliveryError(options.errorEntryType, parsed.to, parsed.message, error);\n if (options.acknowledge) emitResultDelivery(parsed.requestId, false, error);\n return;\n }\n\n if (!relayStillLive()) {\n return;\n }\n if (currentSessionTargetMatches(parsed.to, target, activeClient)) {\n deliverLocalSubagentRelayMessage(options.sender, options.status, parsed.message);\n if (options.acknowledge) emitResultDelivery(parsed.requestId, true);\n return;\n }\n\n try {\n const result = await activeClient.send(target, { text: parsed.message });\n if (!relayStillLive()) return;\n if (!result.delivered) {\n const error = new Error(result.reason ?? \"Session may not exist or has disconnected.\");\n recordSubagentDeliveryError(options.errorEntryType, parsed.to, parsed.message, error);\n if (options.acknowledge) emitResultDelivery(parsed.requestId, false, error);\n return;\n }\n if (options.acknowledge) emitResultDelivery(parsed.requestId, true);\n } catch (error) {\n if (!relayStillLive()) return;\n recordSubagentDeliveryError(options.errorEntryType, parsed.to, parsed.message, error);\n if (options.acknowledge) emitResultDelivery(parsed.requestId, false, error);\n }\n })();\n }\n const unsubscribeSubagentControlIntercom = pi.events.on(SUBAGENT_CONTROL_INTERCOM_EVENT, (payload) => {\n relaySubagentIntercomPayload(payload, {\n sender: \"subagent-control\",\n status: \"needs_attention\",\n errorEntryType: \"intercom_control_error\",\n });\n });\n const unsubscribeSubagentResultIntercom = pi.events.on(SUBAGENT_RESULT_INTERCOM_EVENT, (payload) => {\n relaySubagentIntercomPayload(payload, {\n sender: \"subagent-result\",\n status: \"result\",\n errorEntryType: \"intercom_result_error\",\n acknowledge: true,\n });\n });\n pi.on(\"session_start\", (_event, ctx) => {\n if (!config.enabled) {\n return;\n }\n startSessionRuntime(ctx);\n });\n \n pi.on(\"session_shutdown\", async () => {\n unsubscribeSubagentControlIntercom();\n unsubscribeSubagentResultIntercom();\n shuttingDown = true;\n disposed = true;\n runtimeGeneration += 1;\n clearStartupConnectTimer();\n clearReconnectTimer();\n clearNamePollTimer();\n restoreIntercomSessionId();\n rejectReplyWaiter(new Error(\"Session shutting down\"));\n replyTracker.reset();\n pendingIdleMessages.length = 0;\n clearInboundFlushTimer();\n agentRunning = false;\n activeTools.clear();\n if (client) {\n await client.disconnect();\n client = null;\n }\n runtimeContext = null;\n currentSessionId = null;\n sessionStartedAt = null;\n });\n pi.on(\"turn_end\", () => {\n if (!getLiveContext()) {\n return;\n }\n replyTracker.endTurn();\n scheduleInboundFlush(0);\n });\n pi.on(\"agent_start\", () => {\n if (!getLiveContext()) {\n return;\n }\n agentRunning = true;\n activeTools.clear();\n syncPresenceStatus();\n });\n pi.on(\"tool_execution_start\", (event) => {\n if (!getLiveContext()) {\n return;\n }\n activeTools.set(event.toolCallId, event.toolName);\n syncPresenceStatus();\n });\n pi.on(\"tool_execution_end\", (event) => {\n if (!getLiveContext()) {\n return;\n }\n activeTools.delete(event.toolCallId);\n syncPresenceStatus();\n });\n pi.on(\"agent_end\", () => {\n if (!getLiveContext()) {\n return;\n }\n agentRunning = false;\n activeTools.clear();\n syncPresenceStatus();\n scheduleInboundFlush(0);\n });\n pi.on(\"turn_start\", (_event, ctx) => {\n const sessionId = ctx.sessionManager.getSessionId();\n if (!currentSessionId || sessionId !== currentSessionId) {\n if (!config.enabled) {\n return;\n }\n startSessionRuntime(ctx);\n replyTracker.beginTurn();\n return;\n }\n if (!getLiveContext(ctx)) {\n return;\n }\n syncPresenceIdentity(sessionId);\n replyTracker.beginTurn();\n });\n pi.on(\"model_select\", (event, ctx) => {\n if (!getLiveContext(ctx)) {\n return;\n }\n currentModel = event.model.id;\n if (client) {\n client.updatePresence({\n ...buildPresenceIdentity(pi, ctx.sessionManager.getSessionId()),\n model: event.model.id,\n status: currentStatus(),\n });\n }\n });\n\n pi.registerMessageRenderer(\"intercom_message\", (message, options, theme) => {\n const details = message.details as { from: SessionInfo; message: Message; replyCommand?: string; bodyText?: string } | undefined;\n if (!details) return undefined;\n // lunr: hide subagent relay messages (subagent-result, subagent-control) from the chat โ€” the subagent tool result view\n // already shows the outcome (โœ“/stats); the message stays in the transcript for\n // the model. Returning undefined would fall back to the default boxed renderer,\n // so return a zero-line component instead.\n const sender = details.from?.name || details.from?.id;\n if (sender === \"subagent-result\" || sender === \"subagent-control\") {\n return { render: () => [], invalidate() {} };\n }\n return new InlineMessageComponent(details.from, details.message, theme, details.replyCommand, details.bodyText, !options.expanded);\n });\n\n pi.on(\"tool_result\", (event) => {\n if (event.toolName !== \"intercom\" && event.toolName !== \"contact_supervisor\") {\n return;\n }\n if (!event.details || typeof event.details !== \"object\") {\n return;\n }\n\n const details = event.details as { error?: unknown; delivered?: unknown };\n if (details.error === true || details.delivered === false) {\n return { isError: true };\n }\n });\n\n const childOrchestratorMetadata = readChildOrchestratorMetadata();\n if (childOrchestratorMetadata) {\n pi.registerTool({\n name: \"contact_supervisor\",\n label: \"Contact Supervisor\",\n description: \"Subagent-only tool for contacting the supervisor agent that delegated this task. Use need_decision when blocked, uncertain, needing approval, or facing a product/API/scope decision before continuing; this waits for the supervisor's reply. Use interview_request when multiple structured questions need supervisor answers; this also waits for a reply. Use progress_update only for meaningful progress or unexpected discoveries that change the plan; this does not wait for a reply. Do not use for routine completion handoffs.\",\n promptSnippet: \"Subagent-only: contact the supervisor for decisions, structured interviews, or meaningful plan-changing updates. Do not use for routine completion handoffs.\",\n promptGuidelines: [\n \"Use contact_supervisor with reason='need_decision' when a subagent is blocked, uncertain, needs approval, or faces a product/API/scope decision before continuing.\",\n \"Use contact_supervisor with reason='interview_request' when the child needs multiple structured answers from the supervisor in one blocking exchange.\",\n \"Use contact_supervisor with reason='progress_update' only for meaningful progress or unexpected discoveries that change the plan.\",\n \"Do not use contact_supervisor for routine completion handoffs; return the final subagent result normally.\",\n ],\n parameters: Type.Object({\n reason: StringEnum([\"need_decision\", \"progress_update\", \"interview_request\"] as const, {\n description: \"Contact reason: 'need_decision' waits for a reply; 'interview_request' sends structured questions and waits for a reply; 'progress_update' sends a non-blocking update\",\n }),\n message: Type.Optional(Type.String({\n description: \"Decision request, optional interview note, or meaningful progress update for the supervisor\",\n })),\n interview: Type.Optional(Type.Object({\n title: Type.Optional(Type.String()),\n description: Type.Optional(Type.String()),\n questions: Type.Array(Type.Object({\n id: Type.String(),\n type: StringEnum([\"single\", \"multi\", \"text\", \"image\", \"info\"] as const, {\n description: \"Question type: single, multi, text, image, or info\",\n }),\n question: Type.String(),\n options: Type.Optional(Type.Array(Type.Any())),\n context: Type.Optional(Type.String()),\n })),\n }, { description: \"Structured interview request for reason='interview_request'\" })),\n }),\n async execute(_toolCallId, params, signal, _onUpdate, ctx) {\n const reason = params.reason as ContactSupervisorReason;\n if (reason !== \"need_decision\" && reason !== \"progress_update\" && reason !== \"interview_request\") {\n return {\n content: [{ type: \"text\", text: \"Invalid reason. Use 'need_decision', 'interview_request', or 'progress_update'.\" }],\n details: { error: true },\n };\n }\n if ((reason === \"need_decision\" || reason === \"progress_update\") && typeof params.message !== \"string\") {\n return {\n content: [{ type: \"text\", text: `Missing 'message' parameter for reason '${reason}'.` }],\n details: { error: true },\n };\n }\n const interviewValidation = reason === \"interview_request\"\n ? validateSupervisorInterviewRequest(params.interview)\n : undefined;\n if (interviewValidation?.ok === false) {\n return {\n content: [{ type: \"text\", text: `Invalid interview request: ${interviewValidation.error}` }],\n details: { error: true },\n };\n }\n const supervisorInterview = interviewValidation?.ok === true ? interviewValidation.interview : undefined;\n\n let connectedClient: IntercomClient;\n try {\n connectedClient = await ensureConnected(\"tool\");\n } catch (error) {\n return {\n content: [{ type: \"text\", text: `Intercom not connected: ${getErrorMessage(error)}` }],\n details: { error: true },\n };\n }\n\n syncPresenceIdentity(ctx.sessionManager.getSessionId());\n\n if (signal?.aborted) {\n return {\n content: [{ type: \"text\", text: \"Cancelled\" }],\n details: { error: true },\n };\n }\n\n const metadata = childOrchestratorMetadata;\n let sendTo: string;\n try {\n sendTo = await resolveSupervisorTarget(connectedClient, metadata);\n } catch (error) {\n return {\n content: [{ type: \"text\", text: `Failed to resolve supervisor target: ${getErrorMessage(error)}` }],\n details: { error: true },\n };\n }\n if (signal?.aborted) {\n return {\n content: [{ type: \"text\", text: \"Cancelled\" }],\n details: { error: true },\n };\n }\n if (sendTo === connectedClient.sessionId) {\n return {\n content: [{ type: \"text\", text: \"Cannot message the current session\" }],\n details: { error: true },\n };\n }\n\n if (reason === \"progress_update\") {\n const message = params.message as string;\n try {\n const result = await connectedClient.send(sendTo, {\n text: formatChildOrchestratorMessage(\"update\", metadata, message),\n });\n if (!result.delivered) {\n const errorText = result.reason ?? \"Session may not exist or has disconnected.\";\n return {\n content: [{ type: \"text\", text: `Message to \"${metadata.orchestratorTarget}\" was not delivered: ${errorText}` }],\n details: { messageId: result.id, delivered: false, reason: result.reason },\n };\n }\n pi.appendEntry(\"intercom_sent\", {\n to: metadata.orchestratorTarget,\n message: { text: message, reason },\n messageId: result.id,\n timestamp: Date.now(),\n subagent: { runId: metadata.runId, agent: metadata.agent, index: metadata.index },\n });\n return {\n content: [{ type: \"text\", text: `Progress update sent to supervisor ${metadata.orchestratorTarget}` }],\n details: { messageId: result.id, delivered: true },\n };\n } catch (error) {\n return {\n content: [{ type: \"text\", text: `Failed to send progress update: ${getErrorMessage(error)}` }],\n details: { error: true },\n };\n }\n }\n\n if (replyWaiter) {\n return {\n content: [{ type: \"text\", text: \"Already waiting for a reply\" }],\n details: { error: true },\n };\n }\n\n let replyPromise: Promise<Message> | null = null;\n try {\n const questionId = randomUUID();\n replyPromise = waitForReply(sendTo, questionId, signal, () => connectedClient.cancelAsk(questionId));\n replyPromise.catch(() => undefined);\n if (signal?.aborted) {\n rejectReplyWaiter(new Error(\"Cancelled\"));\n try {\n await replyPromise;\n } catch {\n // The waiter was intentionally rejected above; the tool result reports cancellation.\n }\n return {\n content: [{ type: \"text\", text: \"Cancelled\" }],\n details: { error: true },\n };\n }\n const requestText = reason === \"interview_request\"\n ? formatChildOrchestratorMessage(\"interview\", metadata, formatSupervisorInterviewRequest(supervisorInterview!, typeof params.message === \"string\" ? params.message : undefined))\n : formatChildOrchestratorMessage(\"ask\", metadata, params.message as string);\n const sendResult = await connectedClient.send(sendTo, {\n messageId: questionId,\n text: requestText,\n expectsReply: true,\n });\n if (!sendResult.delivered) {\n const errorText = sendResult.reason ?? \"Session may not exist or has disconnected.\";\n rejectReplyWaiter(new Error(`Message to \"${metadata.orchestratorTarget}\" was not delivered: ${errorText}`));\n if (replyPromise) {\n try {\n await replyPromise;\n } catch {\n // The waiter was already rejected above. Keep the delivery failure as the only error here.\n }\n }\n return {\n content: [{ type: \"text\", text: `Message to \"${metadata.orchestratorTarget}\" was not delivered: ${errorText}` }],\n details: { error: true },\n };\n }\n pi.appendEntry(\"intercom_sent\", {\n to: metadata.orchestratorTarget,\n message: {\n text: reason === \"interview_request\" ? requestText : params.message,\n reason,\n ...(reason === \"interview_request\" ? { interview: supervisorInterview } : {}),\n },\n messageId: sendResult.id,\n timestamp: Date.now(),\n subagent: { runId: metadata.runId, agent: metadata.agent, index: metadata.index },\n });\n const replyMessage = await replyPromise;\n const replyText = replyMessage.content.text;\n const replyAttachments = replyMessage.content.attachments?.length\n ? formatAttachments(replyMessage.content.attachments)\n : \"\";\n const structuredReply = reason === \"interview_request\" ? parseStructuredSupervisorReply(replyText, supervisorInterview!) : undefined;\n pi.appendEntry(\"intercom_received\", {\n from: metadata.orchestratorTarget,\n message: { text: replyText, attachments: replyMessage.content.attachments },\n messageId: replyMessage.id,\n timestamp: replyMessage.timestamp,\n subagent: { runId: metadata.runId, agent: metadata.agent, index: metadata.index },\n });\n return {\n content: [{ type: \"text\", text: `**Reply from supervisor:**\\n${replyText}${replyAttachments}` }],\n details: structuredReply\n ? structuredReply.value !== undefined\n ? { structuredReply: structuredReply.value }\n : { structuredReplyParseError: structuredReply.error }\n : {},\n };\n } catch (error) {\n rejectReplyWaiter(toError(error));\n if (replyPromise) {\n try {\n await replyPromise;\n } catch {\n // The waiter is cleanup-only on this path. The real failure is the one from the outer catch.\n }\n }\n return {\n content: [{ type: \"text\", text: `Failed: ${getErrorMessage(error)}` }],\n details: { error: true },\n };\n }\n },\n renderCall(args, theme) {\n const reason = typeof args.reason === \"string\" ? args.reason : \"contact\";\n const messagePreview = previewText(args.message, 96);\n const interview = args.interview && typeof args.interview === \"object\" ? args.interview as { title?: unknown } : undefined;\n let text = theme.fg(\"toolTitle\", theme.bold(\"contact_supervisor \"));\n text += theme.fg(reason === \"need_decision\" ? \"warning\" : reason === \"progress_update\" ? \"muted\" : \"accent\", reason);\n if (typeof interview?.title === \"string\" && interview.title.trim()) {\n text += \" \" + theme.fg(\"accent\", interview.title.trim());\n }\n if (messagePreview) {\n text += \"\\n \" + theme.fg(\"dim\", messagePreview);\n }\n return new Text(text, 0, 0);\n },\n renderResult(result, { isPartial }, theme, context) {\n if (isPartial) {\n return new Text(theme.fg(\"warning\", \"Waiting for supervisor...\"), 0, 0);\n }\n const details = result.details as { delivered?: boolean; error?: boolean; messageId?: string; reason?: string; structuredReplyParseError?: string } | undefined;\n const textContent = firstTextContent(result);\n const failed = Boolean(context.isError || details?.error === true || details?.delivered === false);\n const parseWarning = typeof details?.structuredReplyParseError === \"string\";\n let text = failed\n ? theme.fg(\"error\", \"โœ— \")\n : parseWarning\n ? theme.fg(\"warning\", \"โš  \")\n : theme.fg(\"success\", \"โœ“ \");\n text += theme.fg(failed ? \"error\" : \"text\", textContent);\n if (parseWarning) {\n text += \"\\n\" + theme.fg(\"warning\", `Structured reply parse issue: ${details.structuredReplyParseError}`);\n }\n return new Text(text, 0, 0);\n },\n } as any);\n }\n\n pi.registerTool({\n name: \"intercom\",\n label: \"Intercom\",\n description: `Send a message to another pi session running on this machine.\nUse this to communicate findings, request help, or coordinate work with other sessions.\n\nUsage:\n intercom({ action: \"list\" }) โ†’ List active sessions\n intercom({ action: \"send\", to: \"session-name\", message: \"...\" }) โ†’ Send message\n intercom({ action: \"ask\", to: \"session-name\", message: \"...\" }) โ†’ Ask and wait for reply\n intercom({ action: \"reply\", message: \"...\" }) โ†’ Reply to the active/single pending ask\n intercom({ action: \"pending\" }) โ†’ List unresolved inbound asks\n intercom({ action: \"status\" }) โ†’ Show connection status`,\n promptSnippet:\n \"Use to coordinate with other local pi sessions: list peers, send updates, ask for help, or check intercom connectivity.\",\n\n parameters: Type.Object({\n action: StringEnum([\"list\", \"send\", \"ask\", \"reply\", \"pending\", \"status\"] as const, {\n description: \"Action: 'list', 'send', 'ask', 'reply', 'pending', or 'status'\",\n }),\n to: Type.Optional(Type.String({\n description: \"Target session name or ID (for 'send', 'ask', or disambiguating 'reply')\",\n })),\n message: Type.Optional(Type.String({\n description: \"Message to send (for 'send', 'ask', or 'reply' action)\",\n })),\n attachments: Type.Optional(Type.Array(Type.Object({\n type: StringEnum([\"file\", \"snippet\", \"context\"] as const),\n name: Type.String(),\n content: Type.String(),\n language: Type.Optional(Type.String()),\n }))),\n replyTo: Type.Optional(Type.String({\n description: \"Message ID to reply to (for threading or responding to an 'ask')\",\n })),\n }),\n\n async execute(_toolCallId, params, _signal, _onUpdate, ctx) {\n let connectedClient: IntercomClient;\n try {\n connectedClient = await ensureConnected(\"tool\");\n } catch (error) {\n return {\n content: [{ type: \"text\", text: `Intercom not connected: ${getErrorMessage(error)}` }],\n details: { error: true },\n };\n }\n\n syncPresenceIdentity(ctx.sessionManager.getSessionId());\n\n const { action, to, message, attachments, replyTo } = params;\n\n switch (action) {\n case \"list\": {\n try {\n const mySessionId = connectedClient.sessionId;\n const sessions = await connectedClient.listSessions();\n const currentSession = sessions.find(s => s.id === mySessionId);\n const otherSessions = sessions.filter(s => s.id !== mySessionId);\n\n if (!currentSession) {\n return {\n content: [{ type: \"text\", text: \"Current session is missing from intercom session list.\" }],\n details: { error: true },\n };\n }\n\n const currentSection = `**Current session:**\\n${formatSessionListRow(currentSession, currentSession.cwd, true)}`;\n const otherSection = otherSessions.length === 0\n ? \"**Other sessions:**\\nNo other sessions connected.\"\n : `**Other sessions:**\\n${otherSessions.map(s => formatSessionListRow(s, currentSession.cwd, false)).join(\"\\n\")}`;\n\n return {\n content: [{ type: \"text\", text: `${currentSection}\\n\\n${otherSection}` }],\n details: {},\n };\n } catch (error) {\n return {\n content: [{ type: \"text\", text: `Failed to list sessions: ${getErrorMessage(error)}` }],\n details: { error: true },\n };\n }\n }\n\n case \"send\": {\n if (!to || !message) {\n return {\n content: [{ type: \"text\", text: \"Missing 'to' or 'message' parameter\" }],\n details: { error: true },\n };\n }\n try {\n const sendTo = await resolveSessionTarget(connectedClient, to) ?? to;\n if (sendTo === connectedClient.sessionId) {\n return {\n content: [{ type: \"text\", text: \"Cannot message the current session\" }],\n details: { error: true },\n };\n }\n if (!replyTo && config.confirmSend && ctx.hasUI) {\n const attachmentText = attachments?.length ? formatAttachments(attachments) : \"\";\n const confirmed = await ctx.ui.confirm(\n \"Send Message\",\n `Send to \"${to}\":\\n\\n${message}${attachmentText}`,\n );\n if (!confirmed) {\n return {\n content: [{ type: \"text\", text: \"Message cancelled by user\" }],\n details: {},\n };\n }\n }\n const result = await connectedClient.send(sendTo, {\n text: message,\n attachments,\n replyTo,\n });\n if (!result.delivered) {\n const errorText = result.reason ?? \"Session may not exist or has disconnected.\";\n return {\n content: [{ type: \"text\", text: `Message to \"${to}\" was not delivered: ${errorText}` }],\n details: { messageId: result.id, delivered: false, reason: result.reason },\n };\n }\n pi.appendEntry(\"intercom_sent\", {\n to,\n message: { text: message, attachments, replyTo },\n messageId: result.id,\n timestamp: Date.now(),\n });\n if (replyTo) {\n replyTracker.markReplied(replyTo);\n }\n return {\n content: [{ type: \"text\", text: `Message sent to ${to}` }],\n details: { messageId: result.id, delivered: true },\n };\n } catch (error) {\n return {\n content: [{ type: \"text\", text: `Failed to send: ${getErrorMessage(error)}` }],\n details: { error: true },\n };\n }\n }\n\n case \"ask\": {\n if (!to || !message) {\n return {\n content: [{ type: \"text\", text: \"Missing 'to' or 'message' parameter\" }],\n details: { error: true },\n };\n }\n\n if (replyWaiter) {\n return {\n content: [{ type: \"text\", text: \"Already waiting for a reply\" }],\n details: { error: true },\n };\n }\n\n if (_signal?.aborted) {\n return {\n content: [{ type: \"text\", text: \"Cancelled\" }],\n details: { error: true },\n };\n }\n let replyPromise: Promise<Message> | null = null;\n\n try {\n const sendTo = await resolveSessionTarget(connectedClient, to) ?? to;\n if (_signal?.aborted) {\n return {\n content: [{ type: \"text\", text: \"Cancelled\" }],\n details: { error: true },\n };\n }\n if (sendTo === connectedClient.sessionId) {\n return {\n content: [{ type: \"text\", text: \"Cannot message the current session\" }],\n details: { error: true },\n };\n }\n if (replyWaiter) {\n return {\n content: [{ type: \"text\", text: \"Already waiting for a reply\" }],\n details: { error: true },\n };\n }\n const questionId = randomUUID();\n replyPromise = waitForReply(sendTo, questionId, _signal, () => connectedClient.cancelAsk(questionId));\n replyPromise.catch(() => undefined);\n const sendResult = await connectedClient.send(sendTo, {\n messageId: questionId,\n text: message,\n attachments,\n replyTo,\n expectsReply: true,\n });\n\n if (!sendResult.delivered) {\n const errorText = sendResult.reason ?? \"Session may not exist or has disconnected.\";\n rejectReplyWaiter(new Error(`Message to \"${to}\" was not delivered: ${errorText}`));\n if (replyPromise) {\n try {\n await replyPromise;\n } catch {\n // The waiter was already rejected above. Keep the delivery failure as the only error here.\n }\n }\n return {\n content: [{ type: \"text\", text: `Message to \"${to}\" was not delivered: ${errorText}` }],\n details: { error: true },\n };\n }\n pi.appendEntry(\"intercom_sent\", {\n to,\n message: { text: message, attachments, replyTo },\n messageId: sendResult.id,\n timestamp: Date.now(),\n });\n const replyMessage = await replyPromise;\n const replyText = replyMessage.content.text;\n const replyAttachments = replyMessage.content.attachments?.length\n ? formatAttachments(replyMessage.content.attachments)\n : \"\";\n pi.appendEntry(\"intercom_received\", {\n from: to,\n message: { text: replyText, attachments: replyMessage.content.attachments },\n messageId: replyMessage.id,\n timestamp: replyMessage.timestamp,\n });\n return {\n content: [{ type: \"text\", text: `**Reply from ${to}:**\\n${replyText}${replyAttachments}` }],\n details: {},\n };\n } catch (error) {\n rejectReplyWaiter(toError(error));\n if (replyPromise) {\n try {\n await replyPromise;\n } catch {\n // The waiter is cleanup-only on this path. The real failure is the one from the outer catch.\n }\n }\n return {\n content: [{ type: \"text\", text: `Failed: ${getErrorMessage(error)}` }],\n details: { error: true },\n };\n }\n }\n\n case \"reply\": {\n if (!message) {\n return {\n content: [{ type: \"text\", text: \"Missing 'message' parameter\" }],\n details: { error: true },\n };\n }\n\n try {\n const target = replyTracker.resolveReplyTarget({ to, replyTo });\n if (target.from.id === connectedClient.sessionId) {\n return {\n content: [{ type: \"text\", text: \"Cannot message the current session\" }],\n details: { error: true },\n };\n }\n const result = await connectedClient.send(target.from.id, {\n text: message,\n replyTo: target.message.id,\n });\n if (!result.delivered) {\n const errorText = result.reason ?? \"Session may not exist or has disconnected.\";\n if (result.reason === \"Session not found\") {\n replyTracker.dismissPendingAsk(target.message.id);\n }\n return {\n content: [{ type: \"text\", text: `Reply to \"${target.from.name || target.from.id}\" was not delivered: ${errorText}` }],\n details: { messageId: result.id, delivered: false, reason: result.reason },\n };\n }\n replyTracker.markReplied(target.message.id);\n pi.appendEntry(\"intercom_sent\", {\n to: target.from.name || target.from.id,\n message: { text: message, replyTo: target.message.id },\n messageId: result.id,\n timestamp: Date.now(),\n });\n return {\n content: [{ type: \"text\", text: `Reply sent to ${target.from.name || target.from.id}` }],\n details: { messageId: result.id, delivered: true, replyTo: target.message.id },\n };\n } catch (error) {\n return {\n content: [{ type: \"text\", text: `Failed to reply: ${getErrorMessage(error)}` }],\n details: { error: true },\n };\n }\n }\n\n case \"pending\": {\n const pendingAsks = replyTracker.listPending();\n if (pendingAsks.length === 0) {\n return {\n content: [{ type: \"text\", text: \"No unresolved inbound asks.\" }],\n details: {},\n };\n }\n\n const now = Date.now();\n const lines = pendingAsks.map(({ from, message, receivedAt }) => {\n const preview = message.content.text.replace(/\\s+/g, \" \").slice(0, 80);\n const elapsedSeconds = Math.max(0, Math.floor((now - receivedAt) / 1000));\n return `- ${from.name || from.id} ยท ${message.id} ยท ${elapsedSeconds}s ago ยท ${preview}`;\n });\n return {\n content: [{ type: \"text\", text: `**Pending asks:**\\n${lines.join(\"\\n\")}` }],\n details: {},\n };\n }\n\n case \"status\": {\n try {\n const mySessionId = connectedClient.sessionId;\n const sessions = await connectedClient.listSessions();\n return {\n content: [{\n type: \"text\",\n text: `**Intercom Status:**\\nConnected: Yes\\nSession ID: ${mySessionId}\\nActive sessions: ${sessions.length}`,\n }],\n details: {},\n };\n } catch (error) {\n return {\n content: [{ type: \"text\", text: `Failed to get status: ${getErrorMessage(error)}` }],\n details: { error: true },\n };\n }\n }\n\n default:\n return {\n content: [{ type: \"text\", text: `Unknown action: ${action}` }],\n details: { error: true },\n };\n }\n },\n renderCall(args, theme) {\n const action = typeof args.action === \"string\" ? args.action : \"intercom\";\n const target = typeof args.to === \"string\" && args.to.trim() ? args.to.trim() : undefined;\n const messagePreview = previewText(args.message, 96);\n const attachmentCount = Array.isArray(args.attachments) ? args.attachments.length : 0;\n let text = theme.fg(\"toolTitle\", theme.bold(\"intercom \"));\n text += theme.fg(action === \"ask\" ? \"warning\" : action === \"reply\" ? \"success\" : \"accent\", action);\n if (target) {\n text += \" \" + theme.fg(\"muted\", \"โ†’\") + \" \" + theme.fg(\"accent\", target);\n }\n if (attachmentCount > 0) {\n text += \" \" + theme.fg(\"dim\", `(${attachmentCount} attachment${attachmentCount === 1 ? \"\" : \"s\"})`);\n }\n if (messagePreview) {\n text += \"\\n \" + theme.fg(\"dim\", messagePreview);\n }\n return new Text(text, 0, 0);\n },\n renderResult(result, { isPartial }, theme, context) {\n if (isPartial) {\n return new Text(theme.fg(\"warning\", \"Intercom working...\"), 0, 0);\n }\n const details = result.details as { delivered?: boolean; error?: boolean; messageId?: string; reason?: string } | undefined;\n const failed = Boolean(context.isError || details?.error === true || details?.delivered === false);\n let text = failed ? theme.fg(\"error\", \"โœ— \") : theme.fg(\"success\", \"โœ“ \");\n text += theme.fg(failed ? \"error\" : \"text\", firstTextContent(result));\n if (details?.messageId && !context.expanded) {\n text += theme.fg(\"dim\", ` (${details.messageId.slice(0, 8)})`);\n }\n if (details?.reason && context.expanded) {\n text += \"\\n\" + theme.fg(\"dim\", `Reason: ${details.reason}`);\n }\n return new Text(text, 0, 0);\n },\n } as any);\n\n async function openIntercomOverlay(ctx: ExtensionContext): Promise<void> {\n const overlayGeneration = runtimeGeneration;\n const liveContext = getLiveContext(ctx, overlayGeneration);\n if (!liveContext?.hasUI || (liveContext as ExtensionContext & { mode?: string }).mode !== \"tui\") return;\n\n let overlayClient: IntercomClient;\n try {\n overlayClient = await ensureConnected(\"overlay\");\n } catch (error) {\n notifyIfLive(ctx, `Intercom unavailable: ${getErrorMessage(error)}`, \"error\", overlayGeneration);\n return;\n }\n if (!getLiveContext(ctx, overlayGeneration)) return;\n\n syncPresenceIdentity(ctx.sessionManager.getSessionId());\n\n let currentSession: SessionInfo;\n let sessions: SessionInfo[];\n let duplicates: Set<string>;\n try {\n const mySessionId = overlayClient.sessionId;\n const allSessions = await overlayClient.listSessions();\n if (!getLiveContext(ctx, overlayGeneration)) return;\n const foundCurrentSession = allSessions.find(s => s.id === mySessionId);\n if (!foundCurrentSession) {\n notifyIfLive(ctx, \"Current session is missing from intercom session list\", \"error\", overlayGeneration);\n return;\n }\n currentSession = foundCurrentSession;\n duplicates = duplicateSessionNames(allSessions);\n sessions = allSessions.filter(s => s.id !== mySessionId);\n } catch (error) {\n notifyIfLive(ctx, `Failed to list sessions: ${getErrorMessage(error)}`, \"error\", overlayGeneration);\n return;\n }\n\n const selectedSession = await ctx.ui.custom<SessionInfo | undefined>(\n (_tui, theme, keybindings, done) => new SessionListOverlay(theme, keybindings, currentSession, sessions, done),\n { overlay: true, overlayOptions: { width: 88 } }\n ).catch(() => undefined);\n\n if (!selectedSession || !getLiveContext(ctx, overlayGeneration)) return;\n\n try {\n overlayClient = await ensureConnected(\"overlay\");\n } catch (error) {\n notifyIfLive(ctx, `Intercom unavailable: ${getErrorMessage(error)}`, \"error\", overlayGeneration);\n return;\n }\n if (!getLiveContext(ctx, overlayGeneration)) return;\n\n const targetLabel = formatSessionLabel(selectedSession, duplicates);\n\n const result = await ctx.ui.custom<ComposeResult>(\n (tui, theme, keybindings, done) => new ComposeOverlay(tui, theme, keybindings, selectedSession, targetLabel, overlayClient, done),\n { overlay: true, overlayOptions: { width: 72 } }\n ).catch(() => undefined);\n\n if (result?.sent && result.messageId && result.text && getLiveContext(ctx, overlayGeneration)) {\n pi.appendEntry(\"intercom_sent\", {\n to: selectedSession.name || selectedSession.id,\n message: { text: result.text },\n messageId: result.messageId,\n timestamp: Date.now(),\n });\n notifyIfLive(ctx, `Message sent to ${targetLabel}`, \"info\", overlayGeneration);\n }\n }\n\n pi.registerCommand(\"intercom\", {\n description: \"Open session intercom overlay\",\n handler: async (_args, ctx) => openIntercomOverlay(ctx),\n });\n\n pi.registerShortcut(\"alt+m\", {\n description: \"Open session intercom\",\n handler: async (ctx) => openIntercomOverlay(ctx),\n });\n}\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/builtin-extensions/pi-intercom/index.ts"],"names":[],"mappings":"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","sourcesContent":["// @ts-nocheck\nimport type { ExtensionAPI, ExtensionContext } from \"@ashx-j/lunr\";\nimport { StringEnum } from \"@ashx-j/lunr-ai\";\nimport { randomUUID } from \"crypto\";\nimport { Type } from \"typebox\";\nimport { Text } from \"@ashx-j/lunr-tui\";\nimport { IntercomClient } from \"./broker/client.ts\";\nimport { spawnBrokerIfNeeded } from \"./broker/spawn.ts\";\nimport { SessionListOverlay } from \"./ui/session-list.ts\";\nimport { ComposeOverlay, type ComposeResult } from \"./ui/compose.ts\";\nimport { InlineMessageComponent } from \"./ui/inline-message.ts\";\nimport { getAskTimeoutMs, loadConfig, type IntercomConfig } from \"./config.ts\";\nimport type { SessionInfo, Message, Attachment } from \"./types.ts\";\nimport { ReplyTracker } from \"./reply-tracker.ts\";\n\nconst SUBAGENT_CONTROL_INTERCOM_EVENT = \"subagent:control-intercom\";\nconst SUBAGENT_RESULT_INTERCOM_EVENT = \"subagent:result-intercom\";\nconst SUBAGENT_RESULT_INTERCOM_DELIVERY_EVENT = \"subagent:result-intercom-delivery\";\nconst INBOUND_FLUSH_DELAY_MS = 200;\nconst INBOUND_IDLE_RETRY_MS = 500;\nconst DEFAULT_UNNAMED_SESSION_ALIAS_PREFIX = \"subagent-chat\";\nconst SUBAGENT_ORCHESTRATOR_TARGET_ENV = \"PI_SUBAGENT_ORCHESTRATOR_TARGET\";\nconst SUBAGENT_ORCHESTRATOR_SESSION_ID_ENV = \"PI_SUBAGENT_ORCHESTRATOR_SESSION_ID\";\nconst INTERCOM_SESSION_ID_ENV = \"PI_INTERCOM_SESSION_ID\";\nconst NAME_POLL_MS_ENV = \"PI_INTERCOM_NAME_POLL_MS\";\nconst SUBAGENT_RUN_ID_ENV = \"PI_SUBAGENT_RUN_ID\";\nconst SUBAGENT_CHILD_AGENT_ENV = \"PI_SUBAGENT_CHILD_AGENT\";\nconst SUBAGENT_CHILD_INDEX_ENV = \"PI_SUBAGENT_CHILD_INDEX\";\nconst SUBAGENT_INTERCOM_SESSION_NAME_ENV = \"PI_SUBAGENT_INTERCOM_SESSION_NAME\";\n\ninterface ChildOrchestratorMetadata {\n orchestratorTarget: string;\n orchestratorSessionId?: string;\n runId: string;\n agent: string;\n index: string;\n sessionName?: string;\n}\n\ninterface InboundMessageEntry {\n from: SessionInfo;\n message: Message;\n replyCommand?: string;\n bodyText: string;\n}\n\ntype ContactSupervisorReason = \"need_decision\" | \"progress_update\" | \"interview_request\";\n\ninterface SupervisorInterviewQuestion extends Record<string, unknown> {\n id: string;\n type: \"single\" | \"multi\" | \"text\" | \"image\" | \"info\";\n question: string;\n options?: unknown[];\n}\n\ninterface SupervisorInterviewRequest extends Record<string, unknown> {\n title?: string;\n description?: string;\n questions: SupervisorInterviewQuestion[];\n}\n\ninterface SupervisorInterviewReply {\n responses: Array<{ id: string; value: unknown }>;\n}\n\nfunction getErrorMessage(error: unknown): string {\n return error instanceof Error ? error.message : String(error);\n}\n\nfunction toError(error: unknown): Error {\n return error instanceof Error ? error : new Error(String(error));\n}\n\nfunction formatAttachments(attachments: Attachment[]): string {\n let text = \"\";\n for (const att of attachments) {\n if (att.language) {\n text += `\\n\\n---\\n๐Ÿ“Ž ${att.name}\\n~~~${att.language}\\n${att.content}\\n~~~`;\n } else {\n text += `\\n\\n---\\n๐Ÿ“Ž ${att.name}\\n${att.content}`;\n }\n }\n return text;\n}\nfunction readChildOrchestratorMetadata(): ChildOrchestratorMetadata | null {\n const orchestratorTarget = process.env[SUBAGENT_ORCHESTRATOR_TARGET_ENV]?.trim();\n const orchestratorSessionId = process.env[SUBAGENT_ORCHESTRATOR_SESSION_ID_ENV]?.trim()\n || process.env[INTERCOM_SESSION_ID_ENV]?.trim();\n const runId = process.env[SUBAGENT_RUN_ID_ENV]?.trim();\n const agent = process.env[SUBAGENT_CHILD_AGENT_ENV]?.trim();\n const index = process.env[SUBAGENT_CHILD_INDEX_ENV]?.trim();\n if (!orchestratorTarget || !runId || !agent || !index) {\n return null;\n }\n const sessionName = process.env[SUBAGENT_INTERCOM_SESSION_NAME_ENV]?.trim();\n return {\n orchestratorTarget,\n ...(orchestratorSessionId ? { orchestratorSessionId } : {}),\n runId,\n agent,\n index,\n ...(sessionName ? { sessionName } : {}),\n };\n}\nfunction formatChildOrchestratorMessage(kind: \"ask\" | \"update\" | \"interview\", metadata: ChildOrchestratorMetadata, message: string): string {\n const heading = kind === \"ask\"\n ? \"Subagent needs a supervisor decision.\"\n : kind === \"interview\"\n ? \"Subagent requests a structured supervisor interview.\"\n : \"Subagent progress update.\";\n return [\n heading,\n `Run: ${metadata.runId}`,\n `Agent: ${metadata.agent}`,\n `Child index: ${metadata.index}`,\n metadata.sessionName ? `Child intercom target: ${metadata.sessionName}` : undefined,\n \"\",\n message,\n ].filter((line): line is string => line !== undefined).join(\"\\n\");\n}\n\nfunction validateSupervisorInterviewRequest(input: unknown): { ok: true; interview: SupervisorInterviewRequest } | { ok: false; error: string } {\n if (!input || typeof input !== \"object\" || Array.isArray(input)) {\n return { ok: false, error: \"interview must be an object with a questions array\" };\n }\n\n const raw = input as Record<string, unknown>;\n if (raw.title !== undefined && typeof raw.title !== \"string\") {\n return { ok: false, error: \"interview.title must be a string when provided\" };\n }\n if (raw.description !== undefined && typeof raw.description !== \"string\") {\n return { ok: false, error: \"interview.description must be a string when provided\" };\n }\n if (!Array.isArray(raw.questions) || raw.questions.length === 0) {\n return { ok: false, error: \"interview.questions must be a non-empty array\" };\n }\n\n const validTypes = new Set([\"single\", \"multi\", \"text\", \"image\", \"info\"]);\n const ids = new Set<string>();\n const questions: SupervisorInterviewQuestion[] = [];\n\n for (let index = 0; index < raw.questions.length; index++) {\n const questionInput = raw.questions[index];\n if (!questionInput || typeof questionInput !== \"object\" || Array.isArray(questionInput)) {\n return { ok: false, error: `interview.questions[${index}] must be an object` };\n }\n const question = questionInput as Record<string, unknown>;\n if (typeof question.id !== \"string\" || question.id.trim() === \"\") {\n return { ok: false, error: `interview.questions[${index}].id must be a non-empty string` };\n }\n const id = question.id.trim();\n if (ids.has(id)) {\n return { ok: false, error: `interview question id must be unique: ${id}` };\n }\n ids.add(id);\n\n if (typeof question.type !== \"string\" || !validTypes.has(question.type)) {\n return { ok: false, error: `interview.questions[${index}].type must be one of: single, multi, text, image, info` };\n }\n if (typeof question.question !== \"string\" || question.question.trim() === \"\") {\n return { ok: false, error: `interview.questions[${index}].question must be a non-empty string` };\n }\n if (question.context !== undefined && typeof question.context !== \"string\") {\n return { ok: false, error: `interview.questions[${index}].context must be a string when provided` };\n }\n let options: unknown[] | undefined;\n if (question.options !== undefined) {\n if (!Array.isArray(question.options)) {\n return { ok: false, error: `interview.questions[${index}].options must be an array when provided` };\n }\n options = [];\n for (let optionIndex = 0; optionIndex < question.options.length; optionIndex++) {\n const option = question.options[optionIndex];\n if (typeof option === \"string\") {\n const label = option.trim();\n if (!label) {\n return { ok: false, error: `interview.questions[${index}].options[${optionIndex}] must not be empty` };\n }\n options.push(label);\n } else if (!option || typeof option !== \"object\" || Array.isArray(option) || typeof (option as { label?: unknown }).label !== \"string\" || (option as { label: string }).label.trim() === \"\") {\n return { ok: false, error: `interview.questions[${index}].options[${optionIndex}] must be a non-empty string or an object with a non-empty label` };\n } else {\n options.push({ ...option, label: (option as { label: string }).label.trim() });\n }\n }\n }\n if ((question.type === \"single\" || question.type === \"multi\") && (!options || options.length === 0)) {\n return { ok: false, error: `interview.questions[${index}].options must be a non-empty array for ${question.type} questions` };\n }\n if (question.type !== \"single\" && question.type !== \"multi\" && options) {\n return { ok: false, error: `interview.questions[${index}].options is only valid for single and multi questions` };\n }\n\n questions.push({\n ...question,\n id,\n type: question.type as SupervisorInterviewQuestion[\"type\"],\n question: question.question.trim(),\n ...(options ? { options } : {}),\n });\n }\n\n return {\n ok: true,\n interview: {\n ...raw,\n ...(typeof raw.title === \"string\" ? { title: raw.title.trim() } : {}),\n ...(typeof raw.description === \"string\" ? { description: raw.description.trim() } : {}),\n questions,\n },\n };\n}\n\nfunction interviewOptionLabel(option: unknown): string {\n return typeof option === \"string\" ? option : (option as { label: string }).label;\n}\n\nfunction interviewExampleValue(question: SupervisorInterviewQuestion): unknown {\n if (question.type === \"multi\") {\n return question.options?.slice(0, 2).map(interviewOptionLabel) ?? [];\n }\n if (question.type === \"single\") {\n return question.options?.[0] !== undefined ? interviewOptionLabel(question.options[0]) : \"option label\";\n }\n if (question.type === \"image\") {\n return \"image/file reference or description\";\n }\n return \"answer text\";\n}\n\nfunction formatSupervisorInterviewRequest(interview: SupervisorInterviewRequest, message?: string): string {\n const lines: string[] = [];\n const title = interview.title?.trim();\n if (title) lines.push(`Interview: ${title}`);\n const description = interview.description?.trim();\n if (description) lines.push(description);\n const note = message?.trim();\n if (note) lines.push(`Child note: ${note}`);\n if (lines.length > 0) lines.push(\"\");\n\n lines.push(\"Questions:\");\n interview.questions.forEach((question, index) => {\n lines.push(`${index + 1}. [${question.id}] (${question.type}) ${question.question}`);\n if (typeof question.context === \"string\" && question.context.trim()) {\n lines.push(` Context: ${question.context.trim()}`);\n }\n if (question.options?.length) {\n lines.push(\" Options:\");\n for (const option of question.options) {\n lines.push(` - ${interviewOptionLabel(option)}`);\n }\n }\n });\n\n const responseExample = {\n responses: interview.questions\n .filter((question) => question.type !== \"info\")\n .map((question) => ({\n id: question.id,\n value: interviewExampleValue(question),\n })),\n };\n\n lines.push(\n \"\",\n \"Supervisor reply instructions:\",\n \"Reply with plain JSON or a fenced ```json block using this stable shape. Use the question ids exactly. Info questions are context-only and do not need responses. For single questions, value is one option label. For multi questions, value is an array of option labels. For text/image questions, value is a string unless the question asks otherwise.\",\n \"\",\n \"```json\",\n JSON.stringify(responseExample, null, 2),\n \"```\",\n );\n\n return lines.join(\"\\n\");\n}\n\nfunction validateSupervisorInterviewReply(value: unknown, interview: SupervisorInterviewRequest): SupervisorInterviewReply {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) {\n throw new Error(\"reply JSON must be an object with a responses array\");\n }\n\n const responsesInput = (value as Record<string, unknown>).responses;\n if (!Array.isArray(responsesInput)) {\n throw new Error(\"reply JSON must include a responses array\");\n }\n\n const questionById = new Map(interview.questions\n .filter((question) => question.type !== \"info\")\n .map((question) => [question.id, question]));\n const seenIds = new Set<string>();\n const responses: SupervisorInterviewReply[\"responses\"] = [];\n\n for (let index = 0; index < responsesInput.length; index++) {\n const response = responsesInput[index];\n if (!response || typeof response !== \"object\" || Array.isArray(response)) {\n throw new Error(`responses[${index}] must be an object`);\n }\n\n const raw = response as Record<string, unknown>;\n if (typeof raw.id !== \"string\" || raw.id.trim() === \"\") {\n throw new Error(`responses[${index}].id must be a non-empty string`);\n }\n const id = raw.id.trim();\n const question = questionById.get(id);\n if (!question) {\n throw new Error(`responses[${index}].id must match a non-info interview question id`);\n }\n if (seenIds.has(id)) {\n throw new Error(`responses[${index}].id is duplicated: ${id}`);\n }\n seenIds.add(id);\n if (!Object.hasOwn(raw, \"value\")) {\n throw new Error(`responses[${index}].value is required`);\n }\n\n const value = raw.value;\n if (question.type === \"single\") {\n if (typeof value !== \"string\") throw new Error(`responses[${index}].value must be a string for single questions`);\n const optionLabels = new Set(question.options?.map(interviewOptionLabel));\n if (!optionLabels.has(value.trim())) throw new Error(`responses[${index}].value must match one of the question options`);\n responses.push({ id, value: value.trim() });\n continue;\n }\n\n if (question.type === \"multi\") {\n if (!Array.isArray(value) || value.some((item) => typeof item !== \"string\")) {\n throw new Error(`responses[${index}].value must be an array of strings for multi questions`);\n }\n const optionLabels = new Set(question.options?.map(interviewOptionLabel));\n const selected = value.map((item) => item.trim());\n const invalid = selected.find((item) => !optionLabels.has(item));\n if (invalid) throw new Error(`responses[${index}].value contains an option that is not in the question options: ${invalid}`);\n responses.push({ id, value: selected });\n continue;\n }\n\n if (typeof value !== \"string\") {\n throw new Error(`responses[${index}].value must be a string for ${question.type} questions`);\n }\n responses.push({ id, value });\n }\n\n return { responses };\n}\n\nfunction parseStructuredSupervisorReply(text: string, interview: SupervisorInterviewRequest): { value?: SupervisorInterviewReply; error?: string } | undefined {\n const fencedMatch = text.match(/```(?:json)?\\s*([\\s\\S]*?)```/i);\n const candidate = (fencedMatch?.[1] ?? text).trim();\n if (!candidate.startsWith(\"{\") && !candidate.startsWith(\"[\")) {\n return undefined;\n }\n try {\n return { value: validateSupervisorInterviewReply(JSON.parse(candidate), interview) };\n } catch (error) {\n return { error: getErrorMessage(error) };\n }\n}\nfunction duplicateSessionNames(sessions: SessionInfo[]): Set<string> {\n return new Set(\n sessions\n .map(s => s.name?.toLowerCase())\n .filter((name): name is string => Boolean(name))\n .filter((name, index, names) => names.indexOf(name) !== index)\n );\n}\nfunction shortSessionId(sessionId: string): string {\n return sessionId.slice(0, 8);\n}\nfunction parseSubagentIntercomPayload(payload: unknown): { to: string; message: string; requestId?: string } | null {\n if (typeof payload !== \"object\" || payload === null) {\n return null;\n }\n const record = payload as Record<string, unknown>;\n if (typeof record.to !== \"string\" || typeof record.message !== \"string\") {\n return null;\n }\n const requestId = typeof record.requestId === \"string\" ? record.requestId : undefined;\n return { to: record.to, message: record.message, ...(requestId ? { requestId } : {}) };\n}\nfunction resolveIntercomPresenceName(sessionName: string | undefined, sessionId: string): string {\n const trimmedName = sessionName?.trim();\n if (trimmedName) {\n return trimmedName;\n }\n const normalizedSessionId = sessionId.startsWith(\"session-\") ? sessionId.slice(\"session-\".length) : sessionId;\n return `${DEFAULT_UNNAMED_SESSION_ALIAS_PREFIX}-${normalizedSessionId.slice(0, 8)}`;\n}\nfunction buildPresenceIdentity(pi: ExtensionAPI, sessionId: string): { name: string } {\n return {\n name: resolveIntercomPresenceName(pi.getSessionName(), sessionId),\n };\n}\nfunction formatSessionLabel(session: SessionInfo, duplicates: Set<string>): string {\n if (!session.name) {\n return session.id;\n }\n return duplicates.has(session.name.toLowerCase())\n ? `${session.name} (${shortSessionId(session.id)})`\n : session.name;\n}\nfunction formatSessionListRow(session: SessionInfo, currentCwd: string, isSelf: boolean): string {\n const name = session.name || \"Unnamed session\";\n const tags = [isSelf ? \"self\" : session.cwd === currentCwd ? \"same cwd\" : undefined, session.status]\n .filter((tag): tag is string => Boolean(tag));\n const suffix = tags.length ? ` [${tags.join(\", \")}]` : \"\";\n return `โ€ข ${name} (${shortSessionId(session.id)}) โ€” ${session.cwd} (${session.model})${suffix}`;\n}\nfunction previewText(value: unknown, maxLength = 72): string | undefined {\n if (typeof value !== \"string\") {\n return undefined;\n }\n const normalized = value.replace(/\\s+/g, \" \").trim();\n if (!normalized) {\n return undefined;\n }\n return normalized.length > maxLength ? `${normalized.slice(0, maxLength - 1)}โ€ฆ` : normalized;\n}\nfunction firstTextContent(result: { content?: Array<{ type: string; text?: string }> }): string {\n return result.content?.find((item) => item.type === \"text\" && typeof item.text === \"string\")?.text?.replace(/\\*\\*/g, \"\") ?? \"\";\n}\nfunction getNamePollMs(): number {\n const configured = process.env[NAME_POLL_MS_ENV];\n if (configured !== undefined) {\n const value = Number(configured);\n if (Number.isFinite(value) && value > 0) {\n return value;\n }\n }\n return 1000;\n}\nexport default function piIntercomExtension(pi: ExtensionAPI) {\n let client: IntercomClient | null = null;\n const config: IntercomConfig = loadConfig();\n const askTimeoutMs = getAskTimeoutMs();\n let runtimeContext: ExtensionContext | null = null;\n let currentSessionId: string | null = null;\n let currentModel = \"unknown\";\n let sessionStartedAt: number | null = null;\n let reconnectTimer: NodeJS.Timeout | null = null;\n let namePollTimer: NodeJS.Timeout | null = null;\n let lastPresenceName: string | null = null;\n const previousIntercomSessionId = process.env[INTERCOM_SESSION_ID_ENV];\n let reconnectPromise: Promise<IntercomClient> | null = null;\n let reconnectPromiseGeneration: number | null = null;\n let startupConnectTimer: NodeJS.Timeout | null = null;\n let reconnectAttempt = 0;\n let shuttingDown = false;\n let disposed = true;\n let runtimeStarted = false;\n let runtimeGeneration = 0;\n let agentRunning = false;\n const activeTools = new Map<string, string>();\n const replyTracker = new ReplyTracker();\n const pendingIdleMessages: InboundMessageEntry[] = [];\n let inboundFlushTimer: NodeJS.Timeout | null = null;\n let replyWaiter: {\n from: string;\n replyTo: string;\n resolve: (message: Message) => void;\n reject: (error: Error) => void;\n } | null = null;\n function waitForReply(from: string, replyTo: string, signal?: AbortSignal, onCancel?: () => void): Promise<Message> {\n if (replyWaiter) {\n return Promise.reject(new Error(\"Already waiting for a reply\"));\n }\n if (signal?.aborted) {\n return Promise.reject(new Error(\"Cancelled\"));\n }\n return new Promise((resolve, reject) => {\n const timeout = setTimeout(() => {\n onCancel?.();\n const timeoutDescription = askTimeoutMs % 60000 === 0 ? `${askTimeoutMs / 60000} minutes` : `${askTimeoutMs}ms`;\n rejectReplyWaiter(new Error(`No reply from \"${from}\" within ${timeoutDescription}`));\n }, askTimeoutMs);\n const cleanup = () => {\n clearTimeout(timeout);\n signal?.removeEventListener(\"abort\", onAbort);\n if (replyWaiter?.replyTo === replyTo) {\n replyWaiter = null;\n }\n };\n const onAbort = () => {\n onCancel?.();\n cleanup();\n reject(new Error(\"Cancelled\"));\n };\n signal?.addEventListener(\"abort\", onAbort, { once: true });\n replyWaiter = {\n from,\n replyTo,\n resolve: (message) => {\n cleanup();\n resolve(message);\n },\n reject: (error) => {\n cleanup();\n reject(error);\n },\n };\n });\n }\n function rejectReplyWaiter(error: Error): void {\n replyWaiter?.reject(error);\n }\n function clearReconnectTimer(): void {\n if (!reconnectTimer) {\n return;\n }\n clearTimeout(reconnectTimer);\n reconnectTimer = null;\n }\n function clearStartupConnectTimer(): void {\n if (!startupConnectTimer) {\n return;\n }\n clearTimeout(startupConnectTimer);\n startupConnectTimer = null;\n }\n function clearNamePollTimer(): void {\n if (!namePollTimer) {\n return;\n }\n clearInterval(namePollTimer);\n namePollTimer = null;\n }\n function clearInboundFlushTimer(): void {\n if (!inboundFlushTimer) {\n return;\n }\n clearTimeout(inboundFlushTimer);\n inboundFlushTimer = null;\n }\n function getLiveContext(ctx: ExtensionContext | null = runtimeContext, generation = runtimeGeneration): ExtensionContext | null {\n if (disposed || shuttingDown || generation !== runtimeGeneration || !ctx) {\n return null;\n }\n try {\n if (currentSessionId && ctx.sessionManager.getSessionId() !== currentSessionId) {\n return null;\n }\n void ctx.hasUI;\n return ctx;\n } catch {\n // A context that throws while reading session/UI state is no longer usable.\n return null;\n }\n }\n function notifyIfLive(ctx: ExtensionContext, message: string, level: \"info\" | \"warning\" | \"error\", generation = runtimeGeneration): void {\n const liveContext = getLiveContext(ctx, generation);\n if (!liveContext?.hasUI) {\n return;\n }\n try {\n liveContext.ui.notify(message, level);\n } catch {\n // The UI can disappear during session shutdown/reload while async overlay work is settling.\n }\n }\n function getReconnectDelayMs(): number {\n const backoffMs = [1000, 2000, 5000, 10000, 30000];\n return backoffMs[Math.min(reconnectAttempt, backoffMs.length - 1)]!;\n }\n function currentStatus(): string {\n const activeToolName = activeTools.values().next().value;\n const lifecycleStatus = activeToolName ? `tool:${activeToolName}` : agentRunning ? \"thinking\" : \"idle\";\n return config.status ? `${lifecycleStatus} ยท ${config.status}` : lifecycleStatus;\n }\n function buildRegistration(): Omit<SessionInfo, \"id\"> {\n const liveContext = getLiveContext();\n if (!liveContext || !currentSessionId || sessionStartedAt === null) {\n throw new Error(\"Intercom runtime not initialized\");\n }\n\n const identity = buildPresenceIdentity(pi, currentSessionId);\n return {\n name: identity.name,\n cwd: liveContext.cwd,\n model: currentModel,\n pid: process.pid,\n startedAt: sessionStartedAt,\n lastActivity: Date.now(),\n status: currentStatus(),\n };\n }\n function syncPresenceIdentity(sessionId: string): void {\n if (!client || !getLiveContext()) {\n return;\n }\n const identity = buildPresenceIdentity(pi, sessionId);\n lastPresenceName = identity.name;\n client.updatePresence({ ...identity, status: currentStatus() });\n }\n function startNamePoll(): void {\n clearNamePollTimer();\n lastPresenceName = currentSessionId ? buildPresenceIdentity(pi, currentSessionId).name : null;\n namePollTimer = setInterval(() => {\n if (!currentSessionId || !getLiveContext()) {\n return;\n }\n const identity = buildPresenceIdentity(pi, currentSessionId);\n if (identity.name !== lastPresenceName) {\n syncPresenceIdentity(currentSessionId);\n }\n }, getNamePollMs());\n namePollTimer.unref?.();\n }\n function publishIntercomSessionId(sessionId: string): void {\n process.env[INTERCOM_SESSION_ID_ENV] = sessionId;\n }\n function restoreIntercomSessionId(): void {\n if (previousIntercomSessionId === undefined) {\n delete process.env[INTERCOM_SESSION_ID_ENV];\n return;\n }\n process.env[INTERCOM_SESSION_ID_ENV] = previousIntercomSessionId;\n }\n function syncPresenceStatus(): void {\n if (!client || !currentSessionId || !getLiveContext()) {\n return;\n }\n client.updatePresence({ status: currentStatus() });\n }\n function currentSessionTargetMatches(to: string, resolvedTo?: string | null, activeClient?: IntercomClient): boolean {\n const targets = new Set<string>();\n const addTarget = (target: string | undefined | null) => {\n const trimmed = target?.trim();\n if (trimmed) targets.add(trimmed.toLowerCase());\n };\n addTarget(currentSessionId);\n addTarget(activeClient?.sessionId);\n addTarget(pi.getSessionName());\n if (currentSessionId) addTarget(buildPresenceIdentity(pi, currentSessionId).name);\n return Boolean(resolvedTo && activeClient?.sessionId && resolvedTo === activeClient.sessionId)\n || targets.has(to.trim().toLowerCase());\n }\n function shouldTriggerInboundMessage(entry: InboundMessageEntry, forceTrigger = false): boolean {\n if (forceTrigger) {\n return true;\n }\n if (config.inboundTrigger === \"always\") {\n return true;\n }\n if (config.inboundTrigger === \"replies\") {\n return Boolean(entry.message.replyTo);\n }\n return false;\n }\n function sendIncomingMessage(entry: InboundMessageEntry, delivery: \"trigger\" | \"followUp\", generation = runtimeGeneration, forceTrigger = false): void {\n if (runtimeStarted && !getLiveContext(runtimeContext, generation)) {\n return;\n }\n if (delivery !== \"followUp\") {\n replyTracker.queueTurnContext({ from: entry.from, message: entry.message, receivedAt: Date.now() });\n }\n const senderDisplay = entry.from.name || entry.from.id.slice(0, 8);\n const replyInstruction = entry.replyCommand ? `\\n\\nTo reply, use the intercom tool: ${entry.replyCommand}` : \"\";\n pi.sendMessage(\n {\n customType: \"intercom_message\",\n content: `**๐Ÿ“จ From ${senderDisplay}** (${entry.from.cwd})${replyInstruction}\\n\\n${entry.bodyText}`,\n display: true,\n details: entry,\n },\n delivery === \"trigger\" && shouldTriggerInboundMessage(entry, forceTrigger)\n ? { triggerTurn: true }\n : { deliverAs: \"followUp\" }\n );\n }\n function scheduleInboundFlush(delayMs = INBOUND_FLUSH_DELAY_MS): void {\n if (!getLiveContext()) {\n return;\n }\n const scheduledGeneration = runtimeGeneration;\n clearInboundFlushTimer();\n inboundFlushTimer = setTimeout(() => {\n inboundFlushTimer = null;\n flushIdleMessages(scheduledGeneration);\n }, delayMs);\n }\n function flushIdleMessages(generation = runtimeGeneration): void {\n if (pendingIdleMessages.length === 0) {\n return;\n }\n const ctx = getLiveContext(runtimeContext, generation);\n if (!ctx) {\n return;\n }\n\n let isIdle: boolean;\n try {\n isIdle = ctx.isIdle();\n } catch {\n // Stale contexts are cleaned up by shutdown/reload; do not deliver queued messages through them.\n return;\n }\n if (!isIdle) {\n scheduleInboundFlush(INBOUND_IDLE_RETRY_MS);\n return;\n }\n\n const entries = pendingIdleMessages.splice(0, pendingIdleMessages.length);\n entries.forEach((entry, index) => {\n sendIncomingMessage(entry, index === 0 ? \"trigger\" : \"followUp\");\n });\n }\n function queueIdleMessage(entry: InboundMessageEntry): void {\n pendingIdleMessages.push(entry);\n scheduleInboundFlush();\n }\n function handleIncomingMessage(ctx: ExtensionContext, from: SessionInfo, message: Message): void {\n const messageGeneration = runtimeGeneration;\n const liveContext = getLiveContext(ctx, messageGeneration);\n if (!liveContext) {\n return;\n }\n if (replyWaiter) {\n const senderTarget = from.name || from.id;\n const fromMatches = senderTarget.toLowerCase() === replyWaiter.from.toLowerCase()\n || from.id === replyWaiter.from;\n const replyMatches = message.replyTo === replyWaiter.replyTo;\n if (fromMatches && replyMatches) {\n replyWaiter.resolve(message);\n return;\n }\n }\n const attachmentText = message.content.attachments?.length\n ? formatAttachments(message.content.attachments)\n : \"\";\n const bodyText = `${message.content.text}${attachmentText}`;\n const replyCommand = config.replyHint && message.expectsReply\n ? `intercom({ action: \"reply\", message: \"...\" })`\n : undefined;\n replyTracker.recordIncomingMessage(from, message);\n const entry = { from, message, replyCommand, bodyText };\n void (async () => {\n const activeContext = getLiveContext(liveContext, messageGeneration);\n if (!activeContext) {\n return;\n }\n if (!activeContext.isIdle()) {\n if (!activeContext.hasUI) {\n const activeClient = client;\n if (!message.replyTo && activeClient?.isConnected()) {\n try {\n const result = await activeClient.send(from.id, {\n text: \"This agent is running in non-interactive mode and cannot respond to intercom messages while it is working. It will continue its current task and exit when done.\",\n replyTo: message.id,\n });\n if (result.delivered && getLiveContext(liveContext, messageGeneration)) {\n replyTracker.markReplied(message.id);\n }\n } catch {\n // Best-effort reply; keep the busy non-interactive session running either way.\n }\n }\n return;\n }\n queueIdleMessage(entry);\n return;\n }\n if (getLiveContext(liveContext, messageGeneration)) {\n sendIncomingMessage(entry, \"trigger\", messageGeneration);\n }\n })();\n }\n function attachClientHandlers(nextClient: IntercomClient): void {\n nextClient.on(\"message\", (from, message) => {\n const liveContext = getLiveContext();\n if (client !== nextClient || !liveContext) {\n return;\n }\n handleIncomingMessage(liveContext, from, message);\n });\n nextClient.on(\"disconnected\", (error: Error) => {\n if (client !== nextClient) {\n return;\n }\n rejectReplyWaiter(new Error(`Disconnected while waiting for reply: ${error.message}`, { cause: error }));\n client = null;\n if (!shuttingDown && !disposed) {\n clearReconnectTimer();\n scheduleReconnect();\n }\n });\n nextClient.on(\"error\", () => {\n // Keep broker/socket noise out of the TUI. Reconnect logic runs from the disconnect path.\n });\n }\n function scheduleReconnect(): void {\n if (disposed || shuttingDown || reconnectTimer || reconnectPromise || !getLiveContext()) {\n return;\n }\n const scheduledGeneration = runtimeGeneration;\n reconnectTimer = setTimeout(() => {\n reconnectTimer = null;\n if (scheduledGeneration !== runtimeGeneration || !getLiveContext()) {\n return;\n }\n reconnectAttempt += 1;\n void ensureConnected(\"background\").catch(() => {\n // ensureConnected(\"background\") already queued the next retry.\n });\n }, getReconnectDelayMs());\n }\n async function ensureConnected(reason: \"startup\" | \"background\" | \"tool\" | \"overlay\"): Promise<IntercomClient> {\n if (!config.enabled) {\n throw new Error(\"Intercom disabled\");\n }\n if (disposed || shuttingDown) {\n throw new Error(\"Intercom shutting down\");\n }\n if (client && client.isConnected()) {\n return client;\n }\n const contextAtStart = getLiveContext();\n const generationAtStart = runtimeGeneration;\n if (!contextAtStart || !currentSessionId || sessionStartedAt === null) {\n throw new Error(\"Intercom runtime not initialized\");\n }\n clearReconnectTimer();\n if (reconnectPromise && reconnectPromiseGeneration === generationAtStart) {\n return reconnectPromise;\n }\n const nextReconnectPromise = (async () => {\n const nextClient = new IntercomClient();\n client = nextClient;\n attachClientHandlers(nextClient);\n try {\n await spawnBrokerIfNeeded(config.brokerCommand, config.brokerArgs);\n await nextClient.connect(buildRegistration(), currentSessionId);\n if (!getLiveContext(contextAtStart, generationAtStart)) {\n await nextClient.disconnect();\n throw new Error(\"Intercom runtime no longer active\");\n }\n client = nextClient;\n reconnectAttempt = 0;\n return nextClient;\n } catch (error) {\n if (client === nextClient) {\n client = null;\n }\n if (reason === \"background\" && getLiveContext(contextAtStart, generationAtStart)) {\n scheduleReconnect();\n }\n throw toError(error);\n } finally {\n if (reconnectPromise === nextReconnectPromise) {\n reconnectPromise = null;\n reconnectPromiseGeneration = null;\n }\n }\n })();\n reconnectPromise = nextReconnectPromise;\n reconnectPromiseGeneration = generationAtStart;\n return nextReconnectPromise;\n }\n async function resolveSessionTarget(activeClient: IntercomClient, nameOrId: string): Promise<string | null> {\n const sessions = await activeClient.listSessions();\n const byId = sessions.find(s => s.id === nameOrId);\n if (byId) {\n return byId.id;\n }\n const lowerName = nameOrId.toLowerCase();\n const byName = sessions.filter(s => s.name?.toLowerCase() === lowerName);\n if (byName.length > 1) {\n throw new Error(`Multiple sessions named \"${nameOrId}\" are connected. Use the session ID instead.`);\n }\n if (byName.length === 1) {\n return byName[0]!.id;\n }\n\n const byIdPrefix = sessions.filter(s => s.id.startsWith(nameOrId));\n if (byIdPrefix.length === 1) {\n return byIdPrefix[0]!.id;\n }\n if (byIdPrefix.length > 1) {\n throw new Error(`Multiple sessions match ID prefix \"${nameOrId}\". Use a longer session ID prefix.`);\n }\n return null;\n }\n async function resolveSupervisorTarget(activeClient: IntercomClient, metadata: ChildOrchestratorMetadata): Promise<string> {\n if (metadata.orchestratorSessionId) {\n const bySessionId = await resolveSessionTarget(activeClient, metadata.orchestratorSessionId);\n if (bySessionId) {\n return bySessionId;\n }\n }\n return await resolveSessionTarget(activeClient, metadata.orchestratorTarget) ?? metadata.orchestratorTarget;\n }\n function deliverLocalSubagentRelayMessage(sender: \"subagent-control\" | \"subagent-result\", status: string, messageText: string): void {\n const liveContext = getLiveContext();\n const now = Date.now();\n sendIncomingMessage({\n from: {\n id: sender,\n name: sender,\n cwd: liveContext?.cwd ?? \"\",\n model: sender,\n pid: process.pid,\n startedAt: now,\n lastActivity: now,\n status,\n },\n message: {\n id: randomUUID(),\n timestamp: now,\n content: { text: messageText },\n },\n bodyText: messageText,\n }, \"trigger\", runtimeGeneration, true);\n }\n function recordSubagentDeliveryError(entryType: string, to: string, message: string, error: unknown): void {\n pi.appendEntry(entryType, {\n to,\n message,\n error: getErrorMessage(error),\n timestamp: Date.now(),\n });\n }\n function startSessionRuntime(ctx: ExtensionContext): void {\n const previousClient = client;\n if (previousClient) {\n client = null;\n void previousClient.disconnect().catch(() => undefined);\n }\n shuttingDown = false;\n disposed = false;\n runtimeStarted = true;\n runtimeGeneration += 1;\n reconnectAttempt = 0;\n clearReconnectTimer();\n clearStartupConnectTimer();\n clearNamePollTimer();\n clearInboundFlushTimer();\n rejectReplyWaiter(new Error(\"Session replaced\"));\n replyTracker.reset();\n pendingIdleMessages.length = 0;\n runtimeContext = ctx;\n currentSessionId = ctx.sessionManager.getSessionId();\n publishIntercomSessionId(currentSessionId);\n currentModel = ctx.model?.id ?? \"unknown\";\n sessionStartedAt = Date.now();\n lastPresenceName = buildPresenceIdentity(pi, currentSessionId).name;\n agentRunning = false;\n activeTools.clear();\n startNamePoll();\n const startupGeneration = runtimeGeneration;\n startupConnectTimer = setTimeout(() => {\n startupConnectTimer = null;\n if (!getLiveContext(ctx, startupGeneration)) {\n return;\n }\n void ensureConnected(\"startup\").catch(() => {\n if (!getLiveContext(ctx, startupGeneration)) {\n return;\n }\n client = null;\n scheduleReconnect();\n });\n }, 0);\n }\n function emitResultDelivery(requestId: string | undefined, delivered: boolean, error?: unknown): void {\n if (!requestId) return;\n pi.events.emit(SUBAGENT_RESULT_INTERCOM_DELIVERY_EVENT, {\n requestId,\n delivered,\n ...(error ? { error: getErrorMessage(error) } : {}),\n });\n }\n function relaySubagentIntercomPayload(payload: unknown, options: {\n sender: \"subagent-control\" | \"subagent-result\";\n status: string;\n errorEntryType: string;\n acknowledge?: boolean;\n }): void {\n const parsed = parseSubagentIntercomPayload(payload);\n if (!parsed) return;\n\n const relayGeneration = runtimeGeneration;\n void (async () => {\n const relayStillLive = () => !runtimeStarted || Boolean(getLiveContext(runtimeContext, relayGeneration));\n if (!relayStillLive()) {\n return;\n }\n if (currentSessionTargetMatches(parsed.to)) {\n deliverLocalSubagentRelayMessage(options.sender, options.status, parsed.message);\n if (options.acknowledge) emitResultDelivery(parsed.requestId, true);\n return;\n }\n\n let activeClient: IntercomClient;\n let target: string;\n try {\n activeClient = await ensureConnected(\"background\");\n target = await resolveSessionTarget(activeClient, parsed.to) ?? parsed.to;\n } catch (error) {\n if (!relayStillLive()) return;\n recordSubagentDeliveryError(options.errorEntryType, parsed.to, parsed.message, error);\n if (options.acknowledge) emitResultDelivery(parsed.requestId, false, error);\n return;\n }\n\n if (!relayStillLive()) {\n return;\n }\n if (currentSessionTargetMatches(parsed.to, target, activeClient)) {\n deliverLocalSubagentRelayMessage(options.sender, options.status, parsed.message);\n if (options.acknowledge) emitResultDelivery(parsed.requestId, true);\n return;\n }\n\n try {\n const result = await activeClient.send(target, { text: parsed.message });\n if (!relayStillLive()) return;\n if (!result.delivered) {\n const error = new Error(result.reason ?? \"Session may not exist or has disconnected.\");\n recordSubagentDeliveryError(options.errorEntryType, parsed.to, parsed.message, error);\n if (options.acknowledge) emitResultDelivery(parsed.requestId, false, error);\n return;\n }\n if (options.acknowledge) emitResultDelivery(parsed.requestId, true);\n } catch (error) {\n if (!relayStillLive()) return;\n recordSubagentDeliveryError(options.errorEntryType, parsed.to, parsed.message, error);\n if (options.acknowledge) emitResultDelivery(parsed.requestId, false, error);\n }\n })();\n }\n const unsubscribeSubagentControlIntercom = pi.events.on(SUBAGENT_CONTROL_INTERCOM_EVENT, (payload) => {\n relaySubagentIntercomPayload(payload, {\n sender: \"subagent-control\",\n status: \"needs_attention\",\n errorEntryType: \"intercom_control_error\",\n });\n });\n const unsubscribeSubagentResultIntercom = pi.events.on(SUBAGENT_RESULT_INTERCOM_EVENT, (payload) => {\n relaySubagentIntercomPayload(payload, {\n sender: \"subagent-result\",\n status: \"result\",\n errorEntryType: \"intercom_result_error\",\n acknowledge: true,\n });\n });\n pi.on(\"session_start\", (_event, ctx) => {\n if (!config.enabled) {\n return;\n }\n startSessionRuntime(ctx);\n });\n \n pi.on(\"session_shutdown\", async () => {\n unsubscribeSubagentControlIntercom();\n unsubscribeSubagentResultIntercom();\n shuttingDown = true;\n disposed = true;\n runtimeGeneration += 1;\n clearStartupConnectTimer();\n clearReconnectTimer();\n clearNamePollTimer();\n restoreIntercomSessionId();\n rejectReplyWaiter(new Error(\"Session shutting down\"));\n replyTracker.reset();\n pendingIdleMessages.length = 0;\n clearInboundFlushTimer();\n agentRunning = false;\n activeTools.clear();\n if (client) {\n await client.disconnect();\n client = null;\n }\n runtimeContext = null;\n currentSessionId = null;\n sessionStartedAt = null;\n });\n pi.on(\"turn_end\", () => {\n if (!getLiveContext()) {\n return;\n }\n replyTracker.endTurn();\n scheduleInboundFlush(0);\n });\n pi.on(\"agent_start\", () => {\n if (!getLiveContext()) {\n return;\n }\n agentRunning = true;\n activeTools.clear();\n syncPresenceStatus();\n });\n pi.on(\"tool_execution_start\", (event) => {\n if (!getLiveContext()) {\n return;\n }\n activeTools.set(event.toolCallId, event.toolName);\n syncPresenceStatus();\n });\n pi.on(\"tool_execution_end\", (event) => {\n if (!getLiveContext()) {\n return;\n }\n activeTools.delete(event.toolCallId);\n syncPresenceStatus();\n });\n pi.on(\"agent_end\", () => {\n if (!getLiveContext()) {\n return;\n }\n agentRunning = false;\n activeTools.clear();\n syncPresenceStatus();\n scheduleInboundFlush(0);\n });\n pi.on(\"turn_start\", (_event, ctx) => {\n const sessionId = ctx.sessionManager.getSessionId();\n if (!currentSessionId || sessionId !== currentSessionId) {\n if (!config.enabled) {\n return;\n }\n startSessionRuntime(ctx);\n replyTracker.beginTurn();\n return;\n }\n if (!getLiveContext(ctx)) {\n return;\n }\n syncPresenceIdentity(sessionId);\n replyTracker.beginTurn();\n });\n pi.on(\"model_select\", (event, ctx) => {\n if (!getLiveContext(ctx)) {\n return;\n }\n currentModel = event.model.id;\n if (client) {\n client.updatePresence({\n ...buildPresenceIdentity(pi, ctx.sessionManager.getSessionId()),\n model: event.model.id,\n status: currentStatus(),\n });\n }\n });\n\n pi.registerMessageRenderer(\"intercom_message\", (message, options, theme) => {\n const details = message.details as { from: SessionInfo; message: Message; replyCommand?: string; bodyText?: string } | undefined;\n if (!details) return undefined;\n // lunr: hide subagent relay messages (subagent-result, subagent-control) from the chat โ€” the subagent tool result view\n // already shows the outcome (โœ“/stats); the message stays in the transcript for\n // the model. Returning undefined would fall back to the default boxed renderer,\n // so return a zero-line component instead.\n const sender = details.from?.name || details.from?.id;\n if (sender === \"subagent-result\" || sender === \"subagent-control\") {\n return { render: () => [], invalidate() {} };\n }\n return new InlineMessageComponent(details.from, details.message, theme, details.replyCommand, details.bodyText, !options.expanded);\n });\n\n pi.on(\"tool_result\", (event) => {\n if (event.toolName !== \"intercom\" && event.toolName !== \"contact_supervisor\") {\n return;\n }\n if (!event.details || typeof event.details !== \"object\") {\n return;\n }\n\n const details = event.details as { error?: unknown; delivered?: unknown };\n if (details.error === true || details.delivered === false) {\n return { isError: true };\n }\n });\n\n const childOrchestratorMetadata = readChildOrchestratorMetadata();\n if (childOrchestratorMetadata) {\n pi.registerTool({\n name: \"contact_supervisor\",\n label: \"Contact Supervisor\",\n description: \"Subagent-only tool for contacting the supervisor agent that delegated this task. Use need_decision when blocked, uncertain, needing approval, or facing a product/API/scope decision before continuing; this waits for the supervisor's reply. Use interview_request when multiple structured questions need supervisor answers; this also waits for a reply. Use progress_update only for meaningful progress or unexpected discoveries that change the plan; this does not wait for a reply. Do not use for routine completion handoffs.\",\n promptSnippet: \"Subagent-only: contact the supervisor for decisions, structured interviews, or meaningful plan-changing updates. Do not use for routine completion handoffs.\",\n promptGuidelines: [\n \"Use contact_supervisor with reason='need_decision' when a subagent is blocked, uncertain, needs approval, or faces a product/API/scope decision before continuing.\",\n \"Use contact_supervisor with reason='interview_request' when the child needs multiple structured answers from the supervisor in one blocking exchange.\",\n \"Use contact_supervisor with reason='progress_update' only for meaningful progress or unexpected discoveries that change the plan.\",\n \"Do not use contact_supervisor for routine completion handoffs; return the final subagent result normally.\",\n ],\n parameters: Type.Object({\n reason: StringEnum([\"need_decision\", \"progress_update\", \"interview_request\"] as const, {\n description: \"Contact reason: 'need_decision' waits for a reply; 'interview_request' sends structured questions and waits for a reply; 'progress_update' sends a non-blocking update\",\n }),\n message: Type.Optional(Type.String({\n description: \"Decision request, optional interview note, or meaningful progress update for the supervisor\",\n })),\n interview: Type.Optional(Type.Object({\n title: Type.Optional(Type.String()),\n description: Type.Optional(Type.String()),\n questions: Type.Array(Type.Object({\n id: Type.String(),\n type: StringEnum([\"single\", \"multi\", \"text\", \"image\", \"info\"] as const, {\n description: \"Question type: single, multi, text, image, or info\",\n }),\n question: Type.String(),\n options: Type.Optional(Type.Array(Type.Any())),\n context: Type.Optional(Type.String()),\n })),\n }, { description: \"Structured interview request for reason='interview_request'\" })),\n }),\n async execute(_toolCallId, params, signal, _onUpdate, ctx) {\n const reason = params.reason as ContactSupervisorReason;\n if (reason !== \"need_decision\" && reason !== \"progress_update\" && reason !== \"interview_request\") {\n return {\n content: [{ type: \"text\", text: \"Invalid reason. Use 'need_decision', 'interview_request', or 'progress_update'.\" }],\n details: { error: true },\n };\n }\n if ((reason === \"need_decision\" || reason === \"progress_update\") && typeof params.message !== \"string\") {\n return {\n content: [{ type: \"text\", text: `Missing 'message' parameter for reason '${reason}'.` }],\n details: { error: true },\n };\n }\n const interviewValidation = reason === \"interview_request\"\n ? validateSupervisorInterviewRequest(params.interview)\n : undefined;\n if (interviewValidation?.ok === false) {\n return {\n content: [{ type: \"text\", text: `Invalid interview request: ${interviewValidation.error}` }],\n details: { error: true },\n };\n }\n const supervisorInterview = interviewValidation?.ok === true ? interviewValidation.interview : undefined;\n\n let connectedClient: IntercomClient;\n try {\n connectedClient = await ensureConnected(\"tool\");\n } catch (error) {\n return {\n content: [{ type: \"text\", text: `Intercom not connected: ${getErrorMessage(error)}` }],\n details: { error: true },\n };\n }\n\n syncPresenceIdentity(ctx.sessionManager.getSessionId());\n\n if (signal?.aborted) {\n return {\n content: [{ type: \"text\", text: \"Cancelled\" }],\n details: { error: true },\n };\n }\n\n const metadata = childOrchestratorMetadata;\n let sendTo: string;\n try {\n sendTo = await resolveSupervisorTarget(connectedClient, metadata);\n } catch (error) {\n return {\n content: [{ type: \"text\", text: `Failed to resolve supervisor target: ${getErrorMessage(error)}` }],\n details: { error: true },\n };\n }\n if (signal?.aborted) {\n return {\n content: [{ type: \"text\", text: \"Cancelled\" }],\n details: { error: true },\n };\n }\n if (sendTo === connectedClient.sessionId) {\n return {\n content: [{ type: \"text\", text: \"Cannot message the current session\" }],\n details: { error: true },\n };\n }\n\n if (reason === \"progress_update\") {\n const message = params.message as string;\n try {\n const result = await connectedClient.send(sendTo, {\n text: formatChildOrchestratorMessage(\"update\", metadata, message),\n });\n if (!result.delivered) {\n const errorText = result.reason ?? \"Session may not exist or has disconnected.\";\n return {\n content: [{ type: \"text\", text: `Message to \"${metadata.orchestratorTarget}\" was not delivered: ${errorText}` }],\n details: { messageId: result.id, delivered: false, reason: result.reason },\n };\n }\n pi.appendEntry(\"intercom_sent\", {\n to: metadata.orchestratorTarget,\n message: { text: message, reason },\n messageId: result.id,\n timestamp: Date.now(),\n subagent: { runId: metadata.runId, agent: metadata.agent, index: metadata.index },\n });\n return {\n content: [{ type: \"text\", text: `Progress update sent to supervisor ${metadata.orchestratorTarget}` }],\n details: { messageId: result.id, delivered: true },\n };\n } catch (error) {\n return {\n content: [{ type: \"text\", text: `Failed to send progress update: ${getErrorMessage(error)}` }],\n details: { error: true },\n };\n }\n }\n\n if (replyWaiter) {\n return {\n content: [{ type: \"text\", text: \"Already waiting for a reply\" }],\n details: { error: true },\n };\n }\n\n let replyPromise: Promise<Message> | null = null;\n try {\n const questionId = randomUUID();\n replyPromise = waitForReply(sendTo, questionId, signal, () => connectedClient.cancelAsk(questionId));\n replyPromise.catch(() => undefined);\n if (signal?.aborted) {\n rejectReplyWaiter(new Error(\"Cancelled\"));\n try {\n await replyPromise;\n } catch {\n // The waiter was intentionally rejected above; the tool result reports cancellation.\n }\n return {\n content: [{ type: \"text\", text: \"Cancelled\" }],\n details: { error: true },\n };\n }\n const requestText = reason === \"interview_request\"\n ? formatChildOrchestratorMessage(\"interview\", metadata, formatSupervisorInterviewRequest(supervisorInterview!, typeof params.message === \"string\" ? params.message : undefined))\n : formatChildOrchestratorMessage(\"ask\", metadata, params.message as string);\n const sendResult = await connectedClient.send(sendTo, {\n messageId: questionId,\n text: requestText,\n expectsReply: true,\n });\n if (!sendResult.delivered) {\n const errorText = sendResult.reason ?? \"Session may not exist or has disconnected.\";\n rejectReplyWaiter(new Error(`Message to \"${metadata.orchestratorTarget}\" was not delivered: ${errorText}`));\n if (replyPromise) {\n try {\n await replyPromise;\n } catch {\n // The waiter was already rejected above. Keep the delivery failure as the only error here.\n }\n }\n return {\n content: [{ type: \"text\", text: `Message to \"${metadata.orchestratorTarget}\" was not delivered: ${errorText}` }],\n details: { error: true },\n };\n }\n pi.appendEntry(\"intercom_sent\", {\n to: metadata.orchestratorTarget,\n message: {\n text: reason === \"interview_request\" ? requestText : params.message,\n reason,\n ...(reason === \"interview_request\" ? { interview: supervisorInterview } : {}),\n },\n messageId: sendResult.id,\n timestamp: Date.now(),\n subagent: { runId: metadata.runId, agent: metadata.agent, index: metadata.index },\n });\n const replyMessage = await replyPromise;\n const replyText = replyMessage.content.text;\n const replyAttachments = replyMessage.content.attachments?.length\n ? formatAttachments(replyMessage.content.attachments)\n : \"\";\n const structuredReply = reason === \"interview_request\" ? parseStructuredSupervisorReply(replyText, supervisorInterview!) : undefined;\n pi.appendEntry(\"intercom_received\", {\n from: metadata.orchestratorTarget,\n message: { text: replyText, attachments: replyMessage.content.attachments },\n messageId: replyMessage.id,\n timestamp: replyMessage.timestamp,\n subagent: { runId: metadata.runId, agent: metadata.agent, index: metadata.index },\n });\n return {\n content: [{ type: \"text\", text: `**Reply from supervisor:**\\n${replyText}${replyAttachments}` }],\n details: structuredReply\n ? structuredReply.value !== undefined\n ? { structuredReply: structuredReply.value }\n : { structuredReplyParseError: structuredReply.error }\n : {},\n };\n } catch (error) {\n rejectReplyWaiter(toError(error));\n if (replyPromise) {\n try {\n await replyPromise;\n } catch {\n // The waiter is cleanup-only on this path. The real failure is the one from the outer catch.\n }\n }\n return {\n content: [{ type: \"text\", text: `Failed: ${getErrorMessage(error)}` }],\n details: { error: true },\n };\n }\n },\n renderCall(args, theme) {\n const reason = typeof args.reason === \"string\" ? args.reason : \"contact\";\n const messagePreview = previewText(args.message, 96);\n const interview = args.interview && typeof args.interview === \"object\" ? args.interview as { title?: unknown } : undefined;\n let text = theme.fg(\"toolTitle\", theme.bold(\"contact_supervisor \"));\n text += theme.fg(reason === \"need_decision\" ? \"warning\" : reason === \"progress_update\" ? \"muted\" : \"accent\", reason);\n if (typeof interview?.title === \"string\" && interview.title.trim()) {\n text += \" \" + theme.fg(\"accent\", interview.title.trim());\n }\n if (messagePreview) {\n text += \"\\n \" + theme.fg(\"dim\", messagePreview);\n }\n return new Text(text, 0, 0);\n },\n renderResult(result, { isPartial }, theme, context) {\n if (isPartial) {\n return new Text(theme.fg(\"warning\", \"Waiting for supervisor...\"), 0, 0);\n }\n const details = result.details as { delivered?: boolean; error?: boolean; messageId?: string; reason?: string; structuredReplyParseError?: string } | undefined;\n const textContent = firstTextContent(result);\n const failed = Boolean(context.isError || details?.error === true || details?.delivered === false);\n const parseWarning = typeof details?.structuredReplyParseError === \"string\";\n let text = failed\n ? theme.fg(\"error\", \"โœ— \")\n : parseWarning\n ? theme.fg(\"warning\", \"โš  \")\n : theme.fg(\"success\", \"โœ“ \");\n text += theme.fg(failed ? \"error\" : \"text\", textContent);\n if (parseWarning) {\n text += \"\\n\" + theme.fg(\"warning\", `Structured reply parse issue: ${details.structuredReplyParseError}`);\n }\n return new Text(text, 0, 0);\n },\n } as any);\n }\n\n pi.registerTool({\n name: \"intercom\",\n label: \"Intercom\",\n description: `Send a message to another pi session running on this machine.\nUse this to communicate findings, request help, or coordinate work with other sessions.\n\nUsage:\n intercom({ action: \"list\" }) โ†’ List active sessions\n intercom({ action: \"send\", to: \"session-name\", message: \"...\" }) โ†’ Send message\n intercom({ action: \"ask\", to: \"session-name\", message: \"...\" }) โ†’ Ask and wait for reply\n intercom({ action: \"reply\", message: \"...\" }) โ†’ Reply to the active/single pending ask\n intercom({ action: \"pending\" }) โ†’ List unresolved inbound asks\n intercom({ action: \"status\" }) โ†’ Show connection status`,\n promptSnippet:\n \"Use to coordinate with other local pi sessions: list peers, send updates, ask for help, or check intercom connectivity.\",\n\n parameters: Type.Object({\n action: StringEnum([\"list\", \"send\", \"ask\", \"reply\", \"pending\", \"status\"] as const, {\n description: \"Action: 'list', 'send', 'ask', 'reply', 'pending', or 'status'\",\n }),\n to: Type.Optional(Type.String({\n description: \"Target session name or ID (for 'send', 'ask', or disambiguating 'reply')\",\n })),\n message: Type.Optional(Type.String({\n description: \"Message to send (for 'send', 'ask', or 'reply' action)\",\n })),\n attachments: Type.Optional(Type.Array(Type.Object({\n type: StringEnum([\"file\", \"snippet\", \"context\"] as const),\n name: Type.String(),\n content: Type.String(),\n language: Type.Optional(Type.String()),\n }))),\n replyTo: Type.Optional(Type.String({\n description: \"Message ID to reply to (for threading or responding to an 'ask')\",\n })),\n }),\n\n async execute(_toolCallId, params, _signal, _onUpdate, ctx) {\n let connectedClient: IntercomClient;\n try {\n connectedClient = await ensureConnected(\"tool\");\n } catch (error) {\n return {\n content: [{ type: \"text\", text: `Intercom not connected: ${getErrorMessage(error)}` }],\n details: { error: true },\n };\n }\n\n syncPresenceIdentity(ctx.sessionManager.getSessionId());\n\n const { action, to, message, attachments, replyTo } = params;\n\n switch (action) {\n case \"list\": {\n try {\n const mySessionId = connectedClient.sessionId;\n const sessions = await connectedClient.listSessions();\n const currentSession = sessions.find(s => s.id === mySessionId);\n const otherSessions = sessions.filter(s => s.id !== mySessionId);\n\n if (!currentSession) {\n return {\n content: [{ type: \"text\", text: \"Current session is missing from intercom session list.\" }],\n details: { error: true },\n };\n }\n\n const currentSection = `**Current session:**\\n${formatSessionListRow(currentSession, currentSession.cwd, true)}`;\n const otherSection = otherSessions.length === 0\n ? \"**Other sessions:**\\nNo other sessions connected.\"\n : `**Other sessions:**\\n${otherSessions.map(s => formatSessionListRow(s, currentSession.cwd, false)).join(\"\\n\")}`;\n\n return {\n content: [{ type: \"text\", text: `${currentSection}\\n\\n${otherSection}` }],\n details: {},\n };\n } catch (error) {\n return {\n content: [{ type: \"text\", text: `Failed to list sessions: ${getErrorMessage(error)}` }],\n details: { error: true },\n };\n }\n }\n\n case \"send\": {\n if (!to || !message) {\n return {\n content: [{ type: \"text\", text: \"Missing 'to' or 'message' parameter\" }],\n details: { error: true },\n };\n }\n try {\n const sendTo = await resolveSessionTarget(connectedClient, to) ?? to;\n if (sendTo === connectedClient.sessionId) {\n return {\n content: [{ type: \"text\", text: \"Cannot message the current session\" }],\n details: { error: true },\n };\n }\n if (!replyTo && config.confirmSend && ctx.hasUI) {\n const attachmentText = attachments?.length ? formatAttachments(attachments) : \"\";\n const confirmed = await ctx.ui.confirm(\n \"Send Message\",\n `Send to \"${to}\":\\n\\n${message}${attachmentText}`,\n );\n if (!confirmed) {\n return {\n content: [{ type: \"text\", text: \"Message cancelled by user\" }],\n details: {},\n };\n }\n }\n const result = await connectedClient.send(sendTo, {\n text: message,\n attachments,\n replyTo,\n });\n if (!result.delivered) {\n const errorText = result.reason ?? \"Session may not exist or has disconnected.\";\n return {\n content: [{ type: \"text\", text: `Message to \"${to}\" was not delivered: ${errorText}` }],\n details: { messageId: result.id, delivered: false, reason: result.reason },\n };\n }\n pi.appendEntry(\"intercom_sent\", {\n to,\n message: { text: message, attachments, replyTo },\n messageId: result.id,\n timestamp: Date.now(),\n });\n if (replyTo) {\n replyTracker.markReplied(replyTo);\n }\n return {\n content: [{ type: \"text\", text: `Message sent to ${to}` }],\n details: { messageId: result.id, delivered: true },\n };\n } catch (error) {\n return {\n content: [{ type: \"text\", text: `Failed to send: ${getErrorMessage(error)}` }],\n details: { error: true },\n };\n }\n }\n\n case \"ask\": {\n if (!to || !message) {\n return {\n content: [{ type: \"text\", text: \"Missing 'to' or 'message' parameter\" }],\n details: { error: true },\n };\n }\n\n if (replyWaiter) {\n return {\n content: [{ type: \"text\", text: \"Already waiting for a reply\" }],\n details: { error: true },\n };\n }\n\n if (_signal?.aborted) {\n return {\n content: [{ type: \"text\", text: \"Cancelled\" }],\n details: { error: true },\n };\n }\n let replyPromise: Promise<Message> | null = null;\n\n try {\n const sendTo = await resolveSessionTarget(connectedClient, to) ?? to;\n if (_signal?.aborted) {\n return {\n content: [{ type: \"text\", text: \"Cancelled\" }],\n details: { error: true },\n };\n }\n if (sendTo === connectedClient.sessionId) {\n return {\n content: [{ type: \"text\", text: \"Cannot message the current session\" }],\n details: { error: true },\n };\n }\n if (replyWaiter) {\n return {\n content: [{ type: \"text\", text: \"Already waiting for a reply\" }],\n details: { error: true },\n };\n }\n const questionId = randomUUID();\n replyPromise = waitForReply(sendTo, questionId, _signal, () => connectedClient.cancelAsk(questionId));\n replyPromise.catch(() => undefined);\n const sendResult = await connectedClient.send(sendTo, {\n messageId: questionId,\n text: message,\n attachments,\n replyTo,\n expectsReply: true,\n });\n\n if (!sendResult.delivered) {\n const errorText = sendResult.reason ?? \"Session may not exist or has disconnected.\";\n rejectReplyWaiter(new Error(`Message to \"${to}\" was not delivered: ${errorText}`));\n if (replyPromise) {\n try {\n await replyPromise;\n } catch {\n // The waiter was already rejected above. Keep the delivery failure as the only error here.\n }\n }\n return {\n content: [{ type: \"text\", text: `Message to \"${to}\" was not delivered: ${errorText}` }],\n details: { error: true },\n };\n }\n pi.appendEntry(\"intercom_sent\", {\n to,\n message: { text: message, attachments, replyTo },\n messageId: sendResult.id,\n timestamp: Date.now(),\n });\n const replyMessage = await replyPromise;\n const replyText = replyMessage.content.text;\n const replyAttachments = replyMessage.content.attachments?.length\n ? formatAttachments(replyMessage.content.attachments)\n : \"\";\n pi.appendEntry(\"intercom_received\", {\n from: to,\n message: { text: replyText, attachments: replyMessage.content.attachments },\n messageId: replyMessage.id,\n timestamp: replyMessage.timestamp,\n });\n return {\n content: [{ type: \"text\", text: `**Reply from ${to}:**\\n${replyText}${replyAttachments}` }],\n details: {},\n };\n } catch (error) {\n rejectReplyWaiter(toError(error));\n if (replyPromise) {\n try {\n await replyPromise;\n } catch {\n // The waiter is cleanup-only on this path. The real failure is the one from the outer catch.\n }\n }\n return {\n content: [{ type: \"text\", text: `Failed: ${getErrorMessage(error)}` }],\n details: { error: true },\n };\n }\n }\n\n case \"reply\": {\n if (!message) {\n return {\n content: [{ type: \"text\", text: \"Missing 'message' parameter\" }],\n details: { error: true },\n };\n }\n\n try {\n const target = replyTracker.resolveReplyTarget({ to, replyTo });\n if (target.from.id === connectedClient.sessionId) {\n return {\n content: [{ type: \"text\", text: \"Cannot message the current session\" }],\n details: { error: true },\n };\n }\n const result = await connectedClient.send(target.from.id, {\n text: message,\n replyTo: target.message.id,\n });\n if (!result.delivered) {\n const errorText = result.reason ?? \"Session may not exist or has disconnected.\";\n if (result.reason === \"Session not found\") {\n replyTracker.dismissPendingAsk(target.message.id);\n }\n return {\n content: [{ type: \"text\", text: `Reply to \"${target.from.name || target.from.id}\" was not delivered: ${errorText}` }],\n details: { messageId: result.id, delivered: false, reason: result.reason },\n };\n }\n replyTracker.markReplied(target.message.id);\n pi.appendEntry(\"intercom_sent\", {\n to: target.from.name || target.from.id,\n message: { text: message, replyTo: target.message.id },\n messageId: result.id,\n timestamp: Date.now(),\n });\n return {\n content: [{ type: \"text\", text: `Reply sent to ${target.from.name || target.from.id}` }],\n details: { messageId: result.id, delivered: true, replyTo: target.message.id },\n };\n } catch (error) {\n return {\n content: [{ type: \"text\", text: `Failed to reply: ${getErrorMessage(error)}` }],\n details: { error: true },\n };\n }\n }\n\n case \"pending\": {\n const pendingAsks = replyTracker.listPending();\n if (pendingAsks.length === 0) {\n return {\n content: [{ type: \"text\", text: \"No unresolved inbound asks.\" }],\n details: {},\n };\n }\n\n const now = Date.now();\n const lines = pendingAsks.map(({ from, message, receivedAt }) => {\n const preview = message.content.text.replace(/\\s+/g, \" \").slice(0, 80);\n const elapsedSeconds = Math.max(0, Math.floor((now - receivedAt) / 1000));\n return `- ${from.name || from.id} ยท ${message.id} ยท ${elapsedSeconds}s ago ยท ${preview}`;\n });\n return {\n content: [{ type: \"text\", text: `**Pending asks:**\\n${lines.join(\"\\n\")}` }],\n details: {},\n };\n }\n\n case \"status\": {\n try {\n const mySessionId = connectedClient.sessionId;\n const sessions = await connectedClient.listSessions();\n return {\n content: [{\n type: \"text\",\n text: `**Intercom Status:**\\nConnected: Yes\\nSession ID: ${mySessionId}\\nActive sessions: ${sessions.length}`,\n }],\n details: {},\n };\n } catch (error) {\n return {\n content: [{ type: \"text\", text: `Failed to get status: ${getErrorMessage(error)}` }],\n details: { error: true },\n };\n }\n }\n\n default:\n return {\n content: [{ type: \"text\", text: `Unknown action: ${action}` }],\n details: { error: true },\n };\n }\n },\n renderCall(args, theme) {\n const action = typeof args.action === \"string\" ? args.action : \"intercom\";\n const target = typeof args.to === \"string\" && args.to.trim() ? args.to.trim() : undefined;\n const messagePreview = previewText(args.message, 96);\n const attachmentCount = Array.isArray(args.attachments) ? args.attachments.length : 0;\n let text = theme.fg(\"toolTitle\", theme.bold(\"intercom \"));\n text += theme.fg(action === \"ask\" ? \"warning\" : action === \"reply\" ? \"success\" : \"accent\", action);\n if (target) {\n text += \" \" + theme.fg(\"muted\", \"โ†’\") + \" \" + theme.fg(\"accent\", target);\n }\n if (attachmentCount > 0) {\n text += \" \" + theme.fg(\"dim\", `(${attachmentCount} attachment${attachmentCount === 1 ? \"\" : \"s\"})`);\n }\n if (messagePreview) {\n text += \"\\n \" + theme.fg(\"dim\", messagePreview);\n }\n return new Text(text, 0, 0);\n },\n renderResult(result, { isPartial }, theme, context) {\n if (isPartial) {\n return new Text(theme.fg(\"warning\", \"Intercom working...\"), 0, 0);\n }\n const details = result.details as { delivered?: boolean; error?: boolean; messageId?: string; reason?: string } | undefined;\n const failed = Boolean(context.isError || details?.error === true || details?.delivered === false);\n let text = failed ? theme.fg(\"error\", \"โœ— \") : theme.fg(\"success\", \"โœ“ \");\n text += theme.fg(failed ? \"error\" : \"text\", firstTextContent(result));\n if (details?.messageId && !context.expanded) {\n text += theme.fg(\"dim\", ` (${details.messageId.slice(0, 8)})`);\n }\n if (details?.reason && context.expanded) {\n text += \"\\n\" + theme.fg(\"dim\", `Reason: ${details.reason}`);\n }\n return new Text(text, 0, 0);\n },\n } as any);\n\n async function openIntercomOverlay(ctx: ExtensionContext): Promise<void> {\n const overlayGeneration = runtimeGeneration;\n const liveContext = getLiveContext(ctx, overlayGeneration);\n if (!liveContext?.hasUI || (liveContext as ExtensionContext & { mode?: string }).mode !== \"tui\") return;\n\n let overlayClient: IntercomClient;\n try {\n overlayClient = await ensureConnected(\"overlay\");\n } catch (error) {\n notifyIfLive(ctx, `Intercom unavailable: ${getErrorMessage(error)}`, \"error\", overlayGeneration);\n return;\n }\n if (!getLiveContext(ctx, overlayGeneration)) return;\n\n syncPresenceIdentity(ctx.sessionManager.getSessionId());\n\n let currentSession: SessionInfo;\n let sessions: SessionInfo[];\n let duplicates: Set<string>;\n try {\n const mySessionId = overlayClient.sessionId;\n const allSessions = await overlayClient.listSessions();\n if (!getLiveContext(ctx, overlayGeneration)) return;\n const foundCurrentSession = allSessions.find(s => s.id === mySessionId);\n if (!foundCurrentSession) {\n notifyIfLive(ctx, \"Current session is missing from intercom session list\", \"error\", overlayGeneration);\n return;\n }\n currentSession = foundCurrentSession;\n duplicates = duplicateSessionNames(allSessions);\n sessions = allSessions.filter(s => s.id !== mySessionId);\n } catch (error) {\n notifyIfLive(ctx, `Failed to list sessions: ${getErrorMessage(error)}`, \"error\", overlayGeneration);\n return;\n }\n\n const selectedSession = await ctx.ui.custom<SessionInfo | undefined>(\n (_tui, theme, keybindings, done) => new SessionListOverlay(theme, keybindings, currentSession, sessions, done),\n { overlay: true, overlayOptions: { width: 88 } }\n ).catch(() => undefined);\n\n if (!selectedSession || !getLiveContext(ctx, overlayGeneration)) return;\n\n try {\n overlayClient = await ensureConnected(\"overlay\");\n } catch (error) {\n notifyIfLive(ctx, `Intercom unavailable: ${getErrorMessage(error)}`, \"error\", overlayGeneration);\n return;\n }\n if (!getLiveContext(ctx, overlayGeneration)) return;\n\n const targetLabel = formatSessionLabel(selectedSession, duplicates);\n\n const result = await ctx.ui.custom<ComposeResult>(\n (tui, theme, keybindings, done) => new ComposeOverlay(tui, theme, keybindings, selectedSession, targetLabel, overlayClient, done),\n { overlay: true, overlayOptions: { width: 72 } }\n ).catch(() => undefined);\n\n if (result?.sent && result.messageId && result.text && getLiveContext(ctx, overlayGeneration)) {\n pi.appendEntry(\"intercom_sent\", {\n to: selectedSession.name || selectedSession.id,\n message: { text: result.text },\n messageId: result.messageId,\n timestamp: Date.now(),\n });\n notifyIfLive(ctx, `Message sent to ${targetLabel}`, \"info\", overlayGeneration);\n }\n }\n\n pi.registerCommand(\"intercom\", {\n description: \"Open session intercom overlay\",\n handler: async (_args, ctx) => openIntercomOverlay(ctx),\n });\n\n pi.registerShortcut(\"alt+m\", {\n description: \"Open session intercom\",\n handler: async (ctx) => openIntercomOverlay(ctx),\n });\n}\n"]}