@code-yeongyu/senpi 2026.7.25 → 2026.7.26

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 (575) hide show
  1. package/CHANGELOG.md +81 -0
  2. package/README.md +1 -1
  3. package/dist/beta/omo-local-update.d.ts +207 -0
  4. package/dist/beta/omo-local-update.d.ts.map +1 -0
  5. package/dist/beta/omo-local-update.js +708 -0
  6. package/dist/beta/omo-local-update.js.map +1 -0
  7. package/dist/cli/args.d.ts +4 -16
  8. package/dist/cli/args.d.ts.map +1 -1
  9. package/dist/cli/args.js +9 -25
  10. package/dist/cli/args.js.map +1 -1
  11. package/dist/cli/grok-neo-gate.d.ts +12 -0
  12. package/dist/cli/grok-neo-gate.d.ts.map +1 -0
  13. package/dist/cli/grok-neo-gate.js +18 -0
  14. package/dist/cli/grok-neo-gate.js.map +1 -0
  15. package/dist/cli-main.js +4 -0
  16. package/dist/cli-main.js.map +1 -1
  17. package/dist/cli.js +2 -0
  18. package/dist/cli.js.map +1 -1
  19. package/dist/core/agent-session-runtime.d.ts +2 -0
  20. package/dist/core/agent-session-runtime.d.ts.map +1 -1
  21. package/dist/core/agent-session-runtime.js +33 -8
  22. package/dist/core/agent-session-runtime.js.map +1 -1
  23. package/dist/core/agent-session.d.ts +22 -3
  24. package/dist/core/agent-session.d.ts.map +1 -1
  25. package/dist/core/agent-session.js +202 -58
  26. package/dist/core/agent-session.js.map +1 -1
  27. package/dist/core/auth-providers.d.ts +2 -2
  28. package/dist/core/auth-providers.js +2 -2
  29. package/dist/core/auth-providers.js.map +1 -1
  30. package/dist/core/extensions/builtin/bash-timeout/timeout.d.ts.map +1 -1
  31. package/dist/core/extensions/builtin/bash-timeout/timeout.js +3 -2
  32. package/dist/core/extensions/builtin/bash-timeout/timeout.js.map +1 -1
  33. package/dist/core/extensions/builtin/compaction/index.d.ts.map +1 -1
  34. package/dist/core/extensions/builtin/compaction/index.js +30 -2
  35. package/dist/core/extensions/builtin/compaction/index.js.map +1 -1
  36. package/dist/core/extensions/builtin/compaction/speculative.d.ts.map +1 -1
  37. package/dist/core/extensions/builtin/compaction/speculative.js +28 -0
  38. package/dist/core/extensions/builtin/compaction/speculative.js.map +1 -1
  39. package/dist/core/extensions/builtin/config-reload/index.d.ts.map +1 -1
  40. package/dist/core/extensions/builtin/config-reload/index.js +20 -17
  41. package/dist/core/extensions/builtin/config-reload/index.js.map +1 -1
  42. package/dist/core/extensions/builtin/config-reload/log.d.ts +4 -1
  43. package/dist/core/extensions/builtin/config-reload/log.d.ts.map +1 -1
  44. package/dist/core/extensions/builtin/config-reload/log.js +3 -0
  45. package/dist/core/extensions/builtin/config-reload/log.js.map +1 -1
  46. package/dist/core/extensions/builtin/config-reload/routine-settings.d.ts +15 -0
  47. package/dist/core/extensions/builtin/config-reload/routine-settings.d.ts.map +1 -0
  48. package/dist/core/extensions/builtin/config-reload/routine-settings.js +102 -0
  49. package/dist/core/extensions/builtin/config-reload/routine-settings.js.map +1 -0
  50. package/dist/core/extensions/builtin/goal/command-registration.js +2 -2
  51. package/dist/core/extensions/builtin/goal/command-registration.js.map +1 -1
  52. package/dist/core/extensions/builtin/goal/format.d.ts +1 -1
  53. package/dist/core/extensions/builtin/goal/format.d.ts.map +1 -1
  54. package/dist/core/extensions/builtin/goal/format.js +9 -2
  55. package/dist/core/extensions/builtin/goal/format.js.map +1 -1
  56. package/dist/core/extensions/builtin/goal/index.d.ts.map +1 -1
  57. package/dist/core/extensions/builtin/goal/index.js +38 -23
  58. package/dist/core/extensions/builtin/goal/index.js.map +1 -1
  59. package/dist/core/extensions/builtin/goal/lifecycle-helpers.d.ts +6 -0
  60. package/dist/core/extensions/builtin/goal/lifecycle-helpers.d.ts.map +1 -0
  61. package/dist/core/extensions/builtin/goal/lifecycle-helpers.js +19 -0
  62. package/dist/core/extensions/builtin/goal/lifecycle-helpers.js.map +1 -0
  63. package/dist/core/extensions/builtin/goal/persistence.d.ts +6 -0
  64. package/dist/core/extensions/builtin/goal/persistence.d.ts.map +1 -0
  65. package/dist/core/extensions/builtin/goal/persistence.js +141 -0
  66. package/dist/core/extensions/builtin/goal/persistence.js.map +1 -0
  67. package/dist/core/extensions/builtin/goal/store.d.ts +7 -3
  68. package/dist/core/extensions/builtin/goal/store.d.ts.map +1 -1
  69. package/dist/core/extensions/builtin/goal/store.js +66 -181
  70. package/dist/core/extensions/builtin/goal/store.js.map +1 -1
  71. package/dist/core/extensions/builtin/goal/tool-registration.d.ts +1 -0
  72. package/dist/core/extensions/builtin/goal/tool-registration.d.ts.map +1 -1
  73. package/dist/core/extensions/builtin/goal/tool-registration.js +26 -15
  74. package/dist/core/extensions/builtin/goal/tool-registration.js.map +1 -1
  75. package/dist/core/extensions/builtin/goal/transitions.d.ts +3 -0
  76. package/dist/core/extensions/builtin/goal/transitions.d.ts.map +1 -0
  77. package/dist/core/extensions/builtin/goal/transitions.js +45 -0
  78. package/dist/core/extensions/builtin/goal/transitions.js.map +1 -0
  79. package/dist/core/extensions/builtin/goal/types.d.ts +10 -4
  80. package/dist/core/extensions/builtin/goal/types.d.ts.map +1 -1
  81. package/dist/core/extensions/builtin/goal/types.js +2 -2
  82. package/dist/core/extensions/builtin/goal/types.js.map +1 -1
  83. package/dist/core/extensions/builtin/goal/ui.d.ts.map +1 -1
  84. package/dist/core/extensions/builtin/goal/ui.js +2 -0
  85. package/dist/core/extensions/builtin/goal/ui.js.map +1 -1
  86. package/dist/core/extensions/builtin/goal/validation.d.ts +8 -1
  87. package/dist/core/extensions/builtin/goal/validation.d.ts.map +1 -1
  88. package/dist/core/extensions/builtin/goal/validation.js +24 -12
  89. package/dist/core/extensions/builtin/goal/validation.js.map +1 -1
  90. package/dist/core/extensions/builtin/index.d.ts.map +1 -1
  91. package/dist/core/extensions/builtin/index.js +0 -2
  92. package/dist/core/extensions/builtin/index.js.map +1 -1
  93. package/dist/core/extensions/builtin/mcp/index.d.ts.map +1 -1
  94. package/dist/core/extensions/builtin/mcp/index.js +8 -5
  95. package/dist/core/extensions/builtin/mcp/index.js.map +1 -1
  96. package/dist/core/extensions/builtin/permission-system/parsers.d.ts.map +1 -1
  97. package/dist/core/extensions/builtin/permission-system/parsers.js +1 -0
  98. package/dist/core/extensions/builtin/permission-system/parsers.js.map +1 -1
  99. package/dist/core/extensions/builtin/prompt-preset/gpt-5.6.d.ts +48 -0
  100. package/dist/core/extensions/builtin/prompt-preset/gpt-5.6.d.ts.map +1 -1
  101. package/dist/core/extensions/builtin/prompt-preset/gpt-5.6.js +88 -64
  102. package/dist/core/extensions/builtin/prompt-preset/gpt-5.6.js.map +1 -1
  103. package/dist/core/extensions/builtin/terminal/extension.d.ts.map +1 -1
  104. package/dist/core/extensions/builtin/terminal/extension.js +32 -0
  105. package/dist/core/extensions/builtin/terminal/extension.js.map +1 -1
  106. package/dist/core/extensions/builtin/terminal/index.d.ts +1 -1
  107. package/dist/core/extensions/builtin/terminal/index.d.ts.map +1 -1
  108. package/dist/core/extensions/builtin/terminal/index.js +1 -1
  109. package/dist/core/extensions/builtin/terminal/index.js.map +1 -1
  110. package/dist/core/extensions/builtin/terminal/monitor-notify.d.ts +29 -0
  111. package/dist/core/extensions/builtin/terminal/monitor-notify.d.ts.map +1 -0
  112. package/dist/core/extensions/builtin/terminal/monitor-notify.js +185 -0
  113. package/dist/core/extensions/builtin/terminal/monitor-notify.js.map +1 -0
  114. package/dist/core/extensions/builtin/terminal/monitor-registry.d.ts +35 -0
  115. package/dist/core/extensions/builtin/terminal/monitor-registry.d.ts.map +1 -0
  116. package/dist/core/extensions/builtin/terminal/monitor-registry.js +98 -0
  117. package/dist/core/extensions/builtin/terminal/monitor-registry.js.map +1 -0
  118. package/dist/core/extensions/builtin/terminal/notify.d.ts +9 -0
  119. package/dist/core/extensions/builtin/terminal/notify.d.ts.map +1 -1
  120. package/dist/core/extensions/builtin/terminal/notify.js +30 -14
  121. package/dist/core/extensions/builtin/terminal/notify.js.map +1 -1
  122. package/dist/core/extensions/builtin/terminal/prompt.d.ts +1 -1
  123. package/dist/core/extensions/builtin/terminal/prompt.d.ts.map +1 -1
  124. package/dist/core/extensions/builtin/terminal/prompt.js +13 -5
  125. package/dist/core/extensions/builtin/terminal/prompt.js.map +1 -1
  126. package/dist/core/extensions/builtin/terminal/runtime-session.d.ts +3 -12
  127. package/dist/core/extensions/builtin/terminal/runtime-session.d.ts.map +1 -1
  128. package/dist/core/extensions/builtin/terminal/runtime-session.js +4 -59
  129. package/dist/core/extensions/builtin/terminal/runtime-session.js.map +1 -1
  130. package/dist/core/extensions/builtin/terminal/settings.d.ts +8 -0
  131. package/dist/core/extensions/builtin/terminal/settings.d.ts.map +1 -1
  132. package/dist/core/extensions/builtin/terminal/settings.js +16 -2
  133. package/dist/core/extensions/builtin/terminal/settings.js.map +1 -1
  134. package/dist/core/extensions/builtin/terminal/shared.d.ts +2 -2
  135. package/dist/core/extensions/builtin/terminal/shared.d.ts.map +1 -1
  136. package/dist/core/extensions/builtin/terminal/shared.js +2 -1
  137. package/dist/core/extensions/builtin/terminal/shared.js.map +1 -1
  138. package/dist/core/extensions/builtin/terminal/tools/bash-output.d.ts +10 -4
  139. package/dist/core/extensions/builtin/terminal/tools/bash-output.d.ts.map +1 -1
  140. package/dist/core/extensions/builtin/terminal/tools/bash-output.js +17 -96
  141. package/dist/core/extensions/builtin/terminal/tools/bash-output.js.map +1 -1
  142. package/dist/core/extensions/builtin/terminal/tools/context.d.ts +7 -0
  143. package/dist/core/extensions/builtin/terminal/tools/context.d.ts.map +1 -1
  144. package/dist/core/extensions/builtin/terminal/tools/context.js.map +1 -1
  145. package/dist/core/extensions/builtin/terminal/tools/monitor.d.ts +41 -0
  146. package/dist/core/extensions/builtin/terminal/tools/monitor.d.ts.map +1 -0
  147. package/dist/core/extensions/builtin/terminal/tools/monitor.js +97 -0
  148. package/dist/core/extensions/builtin/terminal/tools/monitor.js.map +1 -0
  149. package/dist/core/extensions/builtin/terminal/tools/render.d.ts +3 -0
  150. package/dist/core/extensions/builtin/terminal/tools/render.d.ts.map +1 -1
  151. package/dist/core/extensions/builtin/terminal/tools/render.js +5 -2
  152. package/dist/core/extensions/builtin/terminal/tools/render.js.map +1 -1
  153. package/dist/core/extensions/builtin/todotools/fuzzy-match.d.ts +19 -0
  154. package/dist/core/extensions/builtin/todotools/fuzzy-match.d.ts.map +1 -0
  155. package/dist/core/extensions/builtin/todotools/fuzzy-match.js +70 -0
  156. package/dist/core/extensions/builtin/todotools/fuzzy-match.js.map +1 -0
  157. package/dist/core/extensions/builtin/todotools/normalize.d.ts +8 -0
  158. package/dist/core/extensions/builtin/todotools/normalize.d.ts.map +1 -0
  159. package/dist/core/extensions/builtin/todotools/normalize.js +174 -0
  160. package/dist/core/extensions/builtin/todotools/normalize.js.map +1 -0
  161. package/dist/core/extensions/builtin/todotools/prompt.d.ts +2 -2
  162. package/dist/core/extensions/builtin/todotools/prompt.d.ts.map +1 -1
  163. package/dist/core/extensions/builtin/todotools/prompt.js +4 -2
  164. package/dist/core/extensions/builtin/todotools/prompt.js.map +1 -1
  165. package/dist/core/extensions/builtin/todotools/state.d.ts +9 -8
  166. package/dist/core/extensions/builtin/todotools/state.d.ts.map +1 -1
  167. package/dist/core/extensions/builtin/todotools/state.js +99 -48
  168. package/dist/core/extensions/builtin/todotools/state.js.map +1 -1
  169. package/dist/core/extensions/builtin/todotools/tools/todo.d.ts +1 -1
  170. package/dist/core/extensions/builtin/todotools/tools/todo.d.ts.map +1 -1
  171. package/dist/core/extensions/builtin/todotools/tools/todo.js +65 -38
  172. package/dist/core/extensions/builtin/todotools/tools/todo.js.map +1 -1
  173. package/dist/core/extensions/builtin/websearch/index.d.ts.map +1 -1
  174. package/dist/core/extensions/builtin/websearch/index.js +2 -4
  175. package/dist/core/extensions/builtin/websearch/index.js.map +1 -1
  176. package/dist/core/extensions/builtin/websearch/websearch/config.d.ts.map +1 -1
  177. package/dist/core/extensions/builtin/websearch/websearch/config.js +4 -1
  178. package/dist/core/extensions/builtin/websearch/websearch/config.js.map +1 -1
  179. package/dist/core/extensions/builtin/websearch/websearch/native.d.ts.map +1 -1
  180. package/dist/core/extensions/builtin/websearch/websearch/native.js +2 -4
  181. package/dist/core/extensions/builtin/websearch/websearch/native.js.map +1 -1
  182. package/dist/core/extensions/builtin/websearch/websearch/renderers.d.ts.map +1 -1
  183. package/dist/core/extensions/builtin/websearch/websearch/renderers.js +20 -8
  184. package/dist/core/extensions/builtin/websearch/websearch/renderers.js.map +1 -1
  185. package/dist/core/extensions/builtin/websearch/websearch/search.d.ts +6 -1
  186. package/dist/core/extensions/builtin/websearch/websearch/search.d.ts.map +1 -1
  187. package/dist/core/extensions/builtin/websearch/websearch/search.js +15 -11
  188. package/dist/core/extensions/builtin/websearch/websearch/search.js.map +1 -1
  189. package/dist/core/extensions/builtin/websearch/websearch/tool.d.ts.map +1 -1
  190. package/dist/core/extensions/builtin/websearch/websearch/tool.js +5 -10
  191. package/dist/core/extensions/builtin/websearch/websearch/tool.js.map +1 -1
  192. package/dist/core/extensions/builtin/websearch/websearch/types.d.ts +1 -0
  193. package/dist/core/extensions/builtin/websearch/websearch/types.d.ts.map +1 -1
  194. package/dist/core/extensions/builtin/websearch/websearch/types.js.map +1 -1
  195. package/dist/core/extensions/loader.d.ts.map +1 -1
  196. package/dist/core/extensions/loader.js +12 -0
  197. package/dist/core/extensions/loader.js.map +1 -1
  198. package/dist/core/extensions/runner.d.ts +5 -0
  199. package/dist/core/extensions/runner.d.ts.map +1 -1
  200. package/dist/core/extensions/runner.js +12 -1
  201. package/dist/core/extensions/runner.js.map +1 -1
  202. package/dist/core/extensions/types.d.ts +25 -1
  203. package/dist/core/extensions/types.d.ts.map +1 -1
  204. package/dist/core/extensions/types.js.map +1 -1
  205. package/dist/core/keybindings.d.ts +0 -5
  206. package/dist/core/keybindings.d.ts.map +1 -1
  207. package/dist/core/keybindings.js +0 -2
  208. package/dist/core/keybindings.js.map +1 -1
  209. package/dist/core/messages.d.ts +32 -0
  210. package/dist/core/messages.d.ts.map +1 -1
  211. package/dist/core/messages.js +91 -0
  212. package/dist/core/messages.js.map +1 -1
  213. package/dist/core/model-resolver.d.ts +10 -1
  214. package/dist/core/model-resolver.d.ts.map +1 -1
  215. package/dist/core/model-resolver.js +13 -3
  216. package/dist/core/model-resolver.js.map +1 -1
  217. package/dist/core/model-runtime.d.ts +2 -0
  218. package/dist/core/model-runtime.d.ts.map +1 -1
  219. package/dist/core/model-runtime.js +4 -3
  220. package/dist/core/model-runtime.js.map +1 -1
  221. package/dist/core/remote-catalog-provider.d.ts.map +1 -1
  222. package/dist/core/remote-catalog-provider.js +19 -1
  223. package/dist/core/remote-catalog-provider.js.map +1 -1
  224. package/dist/core/resource-loader.d.ts +9 -0
  225. package/dist/core/resource-loader.d.ts.map +1 -1
  226. package/dist/core/resource-loader.js +13 -2
  227. package/dist/core/resource-loader.js.map +1 -1
  228. package/dist/core/retry-fallback/controller.d.ts +7 -0
  229. package/dist/core/retry-fallback/controller.d.ts.map +1 -1
  230. package/dist/core/retry-fallback/controller.js +13 -0
  231. package/dist/core/retry-fallback/controller.js.map +1 -1
  232. package/dist/core/retry-fallback/cooldown.d.ts.map +1 -1
  233. package/dist/core/retry-fallback/cooldown.js +5 -0
  234. package/dist/core/retry-fallback/cooldown.js.map +1 -1
  235. package/dist/core/sdk.d.ts.map +1 -1
  236. package/dist/core/sdk.js +11 -35
  237. package/dist/core/sdk.js.map +1 -1
  238. package/dist/core/settings-manager.d.ts +12 -16
  239. package/dist/core/settings-manager.d.ts.map +1 -1
  240. package/dist/core/settings-manager.js +10 -13
  241. package/dist/core/settings-manager.js.map +1 -1
  242. package/dist/core/slash-commands.d.ts.map +1 -1
  243. package/dist/core/slash-commands.js +1 -0
  244. package/dist/core/slash-commands.js.map +1 -1
  245. package/dist/core/thinking-levels.d.ts.map +1 -1
  246. package/dist/core/thinking-levels.js +9 -2
  247. package/dist/core/thinking-levels.js.map +1 -1
  248. package/dist/core/timings.d.ts +7 -2
  249. package/dist/core/timings.d.ts.map +1 -1
  250. package/dist/core/timings.js +11 -0
  251. package/dist/core/timings.js.map +1 -1
  252. package/dist/extensions/llama/provider.d.ts.map +1 -1
  253. package/dist/extensions/llama/provider.js +6 -0
  254. package/dist/extensions/llama/provider.js.map +1 -1
  255. package/dist/inspector-policy.d.ts +22 -0
  256. package/dist/inspector-policy.d.ts.map +1 -0
  257. package/dist/inspector-policy.js +84 -0
  258. package/dist/inspector-policy.js.map +1 -0
  259. package/dist/main.d.ts +6 -0
  260. package/dist/main.d.ts.map +1 -1
  261. package/dist/main.js +20 -23
  262. package/dist/main.js.map +1 -1
  263. package/dist/modes/app-server/runtime.d.ts.map +1 -1
  264. package/dist/modes/app-server/runtime.js +1 -0
  265. package/dist/modes/app-server/runtime.js.map +1 -1
  266. package/dist/modes/app-server/threads/goal-handlers.js +4 -2
  267. package/dist/modes/app-server/threads/goal-handlers.js.map +1 -1
  268. package/dist/modes/app-server/threads/goal-wire.d.ts.map +1 -1
  269. package/dist/modes/app-server/threads/goal-wire.js +1 -0
  270. package/dist/modes/app-server/threads/goal-wire.js.map +1 -1
  271. package/dist/modes/app-server/threads/handlers.d.ts +1 -0
  272. package/dist/modes/app-server/threads/handlers.d.ts.map +1 -1
  273. package/dist/modes/app-server/threads/handlers.js +2 -0
  274. package/dist/modes/app-server/threads/handlers.js.map +1 -1
  275. package/dist/modes/app-server/threads/turn-runtime.d.ts +1 -0
  276. package/dist/modes/app-server/threads/turn-runtime.d.ts.map +1 -1
  277. package/dist/modes/app-server/threads/turn-runtime.js.map +1 -1
  278. package/dist/modes/app-server/threads/turns.d.ts.map +1 -1
  279. package/dist/modes/app-server/threads/turns.js +47 -3
  280. package/dist/modes/app-server/threads/turns.js.map +1 -1
  281. package/dist/modes/interactive/components/custom-message.d.ts +3 -1
  282. package/dist/modes/interactive/components/custom-message.d.ts.map +1 -1
  283. package/dist/modes/interactive/components/custom-message.js +9 -2
  284. package/dist/modes/interactive/components/custom-message.js.map +1 -1
  285. package/dist/modes/interactive/components/status-indicator.d.ts +1 -0
  286. package/dist/modes/interactive/components/status-indicator.d.ts.map +1 -1
  287. package/dist/modes/interactive/components/status-indicator.js +29 -4
  288. package/dist/modes/interactive/components/status-indicator.js.map +1 -1
  289. package/dist/modes/interactive/components/tool-execution.d.ts +5 -1
  290. package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
  291. package/dist/modes/interactive/components/tool-execution.js +43 -17
  292. package/dist/modes/interactive/components/tool-execution.js.map +1 -1
  293. package/dist/modes/interactive/grok/chrome-tokens.d.ts +22 -0
  294. package/dist/modes/interactive/grok/chrome-tokens.d.ts.map +1 -0
  295. package/dist/modes/interactive/grok/chrome-tokens.js +27 -0
  296. package/dist/modes/interactive/grok/chrome-tokens.js.map +1 -0
  297. package/dist/modes/interactive/grok/chrome.d.ts +51 -0
  298. package/dist/modes/interactive/grok/chrome.d.ts.map +1 -0
  299. package/dist/modes/interactive/grok/chrome.js +105 -0
  300. package/dist/modes/interactive/grok/chrome.js.map +1 -0
  301. package/dist/modes/interactive/grok/footer.d.ts +14 -0
  302. package/dist/modes/interactive/grok/footer.d.ts.map +1 -0
  303. package/dist/modes/interactive/grok/footer.js +27 -0
  304. package/dist/modes/interactive/grok/footer.js.map +1 -0
  305. package/dist/modes/interactive/grok/input-card.d.ts +9 -0
  306. package/dist/modes/interactive/grok/input-card.d.ts.map +1 -0
  307. package/dist/modes/interactive/grok/input-card.js +30 -0
  308. package/dist/modes/interactive/grok/input-card.js.map +1 -0
  309. package/dist/modes/interactive/grok/palette.d.ts +145 -0
  310. package/dist/modes/interactive/grok/palette.d.ts.map +1 -0
  311. package/dist/modes/interactive/grok/palette.js +92 -0
  312. package/dist/modes/interactive/grok/palette.js.map +1 -0
  313. package/dist/modes/interactive/grok/tool-row.d.ts +17 -0
  314. package/dist/modes/interactive/grok/tool-row.d.ts.map +1 -0
  315. package/dist/modes/interactive/grok/tool-row.js +26 -0
  316. package/dist/modes/interactive/grok/tool-row.js.map +1 -0
  317. package/dist/modes/interactive/grok/welcome-card.d.ts +10 -0
  318. package/dist/modes/interactive/grok/welcome-card.d.ts.map +1 -0
  319. package/dist/modes/interactive/grok/welcome-card.js +30 -0
  320. package/dist/modes/interactive/grok/welcome-card.js.map +1 -0
  321. package/dist/modes/interactive/interactive-mode.d.ts +5 -0
  322. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  323. package/dist/modes/interactive/interactive-mode.js +117 -54
  324. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  325. package/dist/modes/interactive/theme/grok-day.json +77 -0
  326. package/dist/modes/interactive/theme/grok-night.json +93 -0
  327. package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
  328. package/dist/modes/interactive/theme/theme.js +4 -0
  329. package/dist/modes/interactive/theme/theme.js.map +1 -1
  330. package/dist/modes/rpc/connection-handler.d.ts +3 -3
  331. package/dist/modes/rpc/connection-handler.js +6 -6
  332. package/dist/modes/rpc/connection-handler.js.map +1 -1
  333. package/dist/modes/rpc/custom-capability.d.ts +6 -7
  334. package/dist/modes/rpc/custom-capability.d.ts.map +1 -1
  335. package/dist/modes/rpc/custom-capability.js +6 -7
  336. package/dist/modes/rpc/custom-capability.js.map +1 -1
  337. package/dist/modes/rpc/rpc-mode.d.ts +2 -2
  338. package/dist/modes/rpc/rpc-mode.js +5 -5
  339. package/dist/modes/rpc/rpc-mode.js.map +1 -1
  340. package/dist/package-manager-cli.d.ts.map +1 -1
  341. package/dist/package-manager-cli.js +11 -0
  342. package/dist/package-manager-cli.js.map +1 -1
  343. package/dist/senpi +2 -0
  344. package/docs/docs.json +4 -0
  345. package/docs/environment-variables.md +1 -0
  346. package/docs/extensions.md +2 -2
  347. package/docs/grok-neo.md +77 -0
  348. package/docs/keybindings.md +0 -1
  349. package/docs/settings.md +14 -3
  350. package/docs/terminal-tools.md +6 -3
  351. package/docs/usage.md +1 -1
  352. package/examples/extensions/message-renderer.ts +2 -2
  353. package/node_modules/@code-yeongyu/senpi-codemode/CHANGELOG.md +47 -0
  354. package/node_modules/@code-yeongyu/senpi-codemode/README.md +39 -19
  355. package/node_modules/@code-yeongyu/senpi-codemode/package.json +3 -3
  356. package/node_modules/@code-yeongyu/senpi-codemode/src/bridge/http-server.ts +6 -1
  357. package/node_modules/@code-yeongyu/senpi-codemode/src/bridges/output-bridge.ts +0 -1
  358. package/node_modules/@code-yeongyu/senpi-codemode/src/extension/eval-notifier.ts +40 -0
  359. package/node_modules/@code-yeongyu/senpi-codemode/src/index.ts +46 -66
  360. package/node_modules/@code-yeongyu/senpi-codemode/src/kernels/js/context-manager.ts +5 -2
  361. package/node_modules/@code-yeongyu/senpi-codemode/src/kernels/py/kernel-contract.ts +2 -0
  362. package/node_modules/@code-yeongyu/senpi-codemode/src/kernels/py/kernel.ts +19 -4
  363. package/node_modules/@code-yeongyu/senpi-codemode/src/kernels/py/prelude.py +7 -0
  364. package/node_modules/@code-yeongyu/senpi-codemode/src/kernels/shared/subprocess-kernel.ts +8 -5
  365. package/node_modules/@code-yeongyu/senpi-codemode/src/prompt/eval-prompt.ts +23 -5
  366. package/node_modules/@code-yeongyu/senpi-codemode/src/tool/detached-cell-manager.ts +322 -0
  367. package/node_modules/@code-yeongyu/senpi-codemode/src/tool/eval-tool.ts +253 -18
  368. package/node_modules/@code-yeongyu/senpi-codemode/src/tool/interrupt-note.ts +58 -0
  369. package/node_modules/@code-yeongyu/senpi-codemode/src/tool/render.ts +28 -6
  370. package/node_modules/@code-yeongyu/senpi-codemode/src/tool/status-events.ts +20 -0
  371. package/node_modules/@code-yeongyu/senpi-codemode/src/tool/types.ts +65 -22
  372. package/node_modules/@earendil-works/pi-agent-core/dist/agent-loop.d.ts.map +1 -1
  373. package/node_modules/@earendil-works/pi-agent-core/dist/agent-loop.js +4 -41
  374. package/node_modules/@earendil-works/pi-agent-core/dist/agent-loop.js.map +1 -1
  375. package/node_modules/@earendil-works/pi-agent-core/dist/agent.d.ts +6 -0
  376. package/node_modules/@earendil-works/pi-agent-core/dist/agent.d.ts.map +1 -1
  377. package/node_modules/@earendil-works/pi-agent-core/dist/agent.js +4 -0
  378. package/node_modules/@earendil-works/pi-agent-core/dist/agent.js.map +1 -1
  379. package/node_modules/@earendil-works/pi-agent-core/dist/assistant-terminal-state.d.ts +10 -0
  380. package/node_modules/@earendil-works/pi-agent-core/dist/assistant-terminal-state.d.ts.map +1 -0
  381. package/node_modules/@earendil-works/pi-agent-core/dist/assistant-terminal-state.js +38 -0
  382. package/node_modules/@earendil-works/pi-agent-core/dist/assistant-terminal-state.js.map +1 -0
  383. package/node_modules/@earendil-works/pi-agent-core/dist/types.d.ts +5 -0
  384. package/node_modules/@earendil-works/pi-agent-core/dist/types.d.ts.map +1 -1
  385. package/node_modules/@earendil-works/pi-agent-core/dist/types.js.map +1 -1
  386. package/node_modules/@earendil-works/pi-agent-core/package.json +2 -2
  387. package/node_modules/@earendil-works/pi-ai/dist/api/anthropic-messages.d.ts.map +1 -1
  388. package/node_modules/@earendil-works/pi-ai/dist/api/anthropic-messages.js +210 -26
  389. package/node_modules/@earendil-works/pi-ai/dist/api/anthropic-messages.js.map +1 -1
  390. package/node_modules/@earendil-works/pi-ai/dist/api/azure-openai-responses.d.ts.map +1 -1
  391. package/node_modules/@earendil-works/pi-ai/dist/api/azure-openai-responses.js +16 -8
  392. package/node_modules/@earendil-works/pi-ai/dist/api/azure-openai-responses.js.map +1 -1
  393. package/node_modules/@earendil-works/pi-ai/dist/api/bedrock-converse-stream.d.ts.map +1 -1
  394. package/node_modules/@earendil-works/pi-ai/dist/api/bedrock-converse-stream.js +39 -20
  395. package/node_modules/@earendil-works/pi-ai/dist/api/bedrock-converse-stream.js.map +1 -1
  396. package/node_modules/@earendil-works/pi-ai/dist/api/google-generative-ai.d.ts.map +1 -1
  397. package/node_modules/@earendil-works/pi-ai/dist/api/google-generative-ai.js +9 -2
  398. package/node_modules/@earendil-works/pi-ai/dist/api/google-generative-ai.js.map +1 -1
  399. package/node_modules/@earendil-works/pi-ai/dist/api/google-shared.d.ts.map +1 -1
  400. package/node_modules/@earendil-works/pi-ai/dist/api/google-shared.js +4 -3
  401. package/node_modules/@earendil-works/pi-ai/dist/api/google-shared.js.map +1 -1
  402. package/node_modules/@earendil-works/pi-ai/dist/api/google-vertex.d.ts.map +1 -1
  403. package/node_modules/@earendil-works/pi-ai/dist/api/google-vertex.js +12 -2
  404. package/node_modules/@earendil-works/pi-ai/dist/api/google-vertex.js.map +1 -1
  405. package/node_modules/@earendil-works/pi-ai/dist/api/openai-codex-responses.d.ts.map +1 -1
  406. package/node_modules/@earendil-works/pi-ai/dist/api/openai-codex-responses.js +19 -11
  407. package/node_modules/@earendil-works/pi-ai/dist/api/openai-codex-responses.js.map +1 -1
  408. package/node_modules/@earendil-works/pi-ai/dist/api/openai-completions.d.ts.map +1 -1
  409. package/node_modules/@earendil-works/pi-ai/dist/api/openai-completions.js +121 -23
  410. package/node_modules/@earendil-works/pi-ai/dist/api/openai-completions.js.map +1 -1
  411. package/node_modules/@earendil-works/pi-ai/dist/api/openai-responses-shared.d.ts +1 -0
  412. package/node_modules/@earendil-works/pi-ai/dist/api/openai-responses-shared.d.ts.map +1 -1
  413. package/node_modules/@earendil-works/pi-ai/dist/api/openai-responses-shared.js +67 -31
  414. package/node_modules/@earendil-works/pi-ai/dist/api/openai-responses-shared.js.map +1 -1
  415. package/node_modules/@earendil-works/pi-ai/dist/api/openai-responses.d.ts.map +1 -1
  416. package/node_modules/@earendil-works/pi-ai/dist/api/openai-responses.js +13 -8
  417. package/node_modules/@earendil-works/pi-ai/dist/api/openai-responses.js.map +1 -1
  418. package/node_modules/@earendil-works/pi-ai/dist/api/simple-options.d.ts.map +1 -1
  419. package/node_modules/@earendil-works/pi-ai/dist/api/simple-options.js +1 -0
  420. package/node_modules/@earendil-works/pi-ai/dist/api/simple-options.js.map +1 -1
  421. package/node_modules/@earendil-works/pi-ai/dist/auth/oauth/radius.d.ts +3 -2
  422. package/node_modules/@earendil-works/pi-ai/dist/auth/oauth/radius.d.ts.map +1 -1
  423. package/node_modules/@earendil-works/pi-ai/dist/auth/oauth/radius.js +37 -35
  424. package/node_modules/@earendil-works/pi-ai/dist/auth/oauth/radius.js.map +1 -1
  425. package/node_modules/@earendil-works/pi-ai/dist/auth/resolve.d.ts.map +1 -1
  426. package/node_modules/@earendil-works/pi-ai/dist/auth/resolve.js +11 -1
  427. package/node_modules/@earendil-works/pi-ai/dist/auth/resolve.js.map +1 -1
  428. package/node_modules/@earendil-works/pi-ai/dist/index.d.ts +1 -0
  429. package/node_modules/@earendil-works/pi-ai/dist/index.d.ts.map +1 -1
  430. package/node_modules/@earendil-works/pi-ai/dist/index.js +1 -0
  431. package/node_modules/@earendil-works/pi-ai/dist/index.js.map +1 -1
  432. package/node_modules/@earendil-works/pi-ai/dist/models-store.d.ts +5 -0
  433. package/node_modules/@earendil-works/pi-ai/dist/models-store.d.ts.map +1 -1
  434. package/node_modules/@earendil-works/pi-ai/dist/models-store.js.map +1 -1
  435. package/node_modules/@earendil-works/pi-ai/dist/models.d.ts.map +1 -1
  436. package/node_modules/@earendil-works/pi-ai/dist/models.js +5 -1
  437. package/node_modules/@earendil-works/pi-ai/dist/models.js.map +1 -1
  438. package/node_modules/@earendil-works/pi-ai/dist/providers/data/.manifest.json +1 -1
  439. package/node_modules/@earendil-works/pi-ai/dist/providers/data/amazon-bedrock.json +1 -1
  440. package/node_modules/@earendil-works/pi-ai/dist/providers/data/anthropic.json +1 -1
  441. package/node_modules/@earendil-works/pi-ai/dist/providers/data/cloudflare-ai-gateway.json +1 -1
  442. package/node_modules/@earendil-works/pi-ai/dist/providers/data/github-copilot.json +1 -1
  443. package/node_modules/@earendil-works/pi-ai/dist/providers/data/opencode.json +1 -1
  444. package/node_modules/@earendil-works/pi-ai/dist/providers/data/openrouter.json +1 -1
  445. package/node_modules/@earendil-works/pi-ai/dist/providers/data/vercel-ai-gateway.json +1 -1
  446. package/node_modules/@earendil-works/pi-ai/dist/types.d.ts +9 -0
  447. package/node_modules/@earendil-works/pi-ai/dist/types.d.ts.map +1 -1
  448. package/node_modules/@earendil-works/pi-ai/dist/types.js.map +1 -1
  449. package/node_modules/@earendil-works/pi-ai/dist/utils/error-body.d.ts.map +1 -1
  450. package/node_modules/@earendil-works/pi-ai/dist/utils/error-body.js +8 -3
  451. package/node_modules/@earendil-works/pi-ai/dist/utils/error-body.js.map +1 -1
  452. package/node_modules/@earendil-works/pi-ai/dist/utils/retry.d.ts.map +1 -1
  453. package/node_modules/@earendil-works/pi-ai/dist/utils/retry.js +10 -0
  454. package/node_modules/@earendil-works/pi-ai/dist/utils/retry.js.map +1 -1
  455. package/node_modules/@earendil-works/pi-ai/dist/utils/server-fallback-receipt.d.ts +30 -0
  456. package/node_modules/@earendil-works/pi-ai/dist/utils/server-fallback-receipt.d.ts.map +1 -0
  457. package/node_modules/@earendil-works/pi-ai/dist/utils/server-fallback-receipt.js +70 -0
  458. package/node_modules/@earendil-works/pi-ai/dist/utils/server-fallback-receipt.js.map +1 -0
  459. package/node_modules/@earendil-works/pi-ai/dist/utils/stop-details.d.ts +1 -1
  460. package/node_modules/@earendil-works/pi-ai/dist/utils/stop-details.d.ts.map +1 -1
  461. package/node_modules/@earendil-works/pi-ai/dist/utils/stop-details.js +7 -3
  462. package/node_modules/@earendil-works/pi-ai/dist/utils/stop-details.js.map +1 -1
  463. package/node_modules/@earendil-works/pi-ai/dist/utils/tool-call-id.d.ts +9 -0
  464. package/node_modules/@earendil-works/pi-ai/dist/utils/tool-call-id.d.ts.map +1 -0
  465. package/node_modules/@earendil-works/pi-ai/dist/utils/tool-call-id.js +16 -0
  466. package/node_modules/@earendil-works/pi-ai/dist/utils/tool-call-id.js.map +1 -0
  467. package/node_modules/@earendil-works/pi-ai/package.json +1 -1
  468. package/node_modules/@earendil-works/pi-pty/package.json +1 -1
  469. package/node_modules/@earendil-works/pi-tui/dist/autocomplete.d.ts +1 -0
  470. package/node_modules/@earendil-works/pi-tui/dist/autocomplete.d.ts.map +1 -1
  471. package/node_modules/@earendil-works/pi-tui/dist/autocomplete.js +35 -3
  472. package/node_modules/@earendil-works/pi-tui/dist/autocomplete.js.map +1 -1
  473. package/node_modules/@earendil-works/pi-tui/dist/components/editor.d.ts +6 -0
  474. package/node_modules/@earendil-works/pi-tui/dist/components/editor.d.ts.map +1 -1
  475. package/node_modules/@earendil-works/pi-tui/dist/components/editor.js.map +1 -1
  476. package/node_modules/@earendil-works/pi-tui/dist/components/select-list.d.ts +32 -0
  477. package/node_modules/@earendil-works/pi-tui/dist/components/select-list.d.ts.map +1 -1
  478. package/node_modules/@earendil-works/pi-tui/dist/components/select-list.js +15 -7
  479. package/node_modules/@earendil-works/pi-tui/dist/components/select-list.js.map +1 -1
  480. package/node_modules/@earendil-works/pi-tui/dist/index.d.ts +1 -1
  481. package/node_modules/@earendil-works/pi-tui/dist/index.d.ts.map +1 -1
  482. package/node_modules/@earendil-works/pi-tui/dist/index.js.map +1 -1
  483. package/node_modules/@earendil-works/pi-tui/package.json +1 -1
  484. package/package.json +8 -8
  485. package/dist/cli/neo/build-argv.d.ts +0 -19
  486. package/dist/cli/neo/build-argv.d.ts.map +0 -1
  487. package/dist/cli/neo/build-argv.js +0 -84
  488. package/dist/cli/neo/build-argv.js.map +0 -1
  489. package/dist/cli/neo/daemon-launch.d.ts +0 -25
  490. package/dist/cli/neo/daemon-launch.d.ts.map +0 -1
  491. package/dist/cli/neo/daemon-launch.js +0 -97
  492. package/dist/cli/neo/daemon-launch.js.map +0 -1
  493. package/dist/cli/neo/gate.d.ts +0 -15
  494. package/dist/cli/neo/gate.d.ts.map +0 -1
  495. package/dist/cli/neo/gate.js +0 -21
  496. package/dist/cli/neo/gate.js.map +0 -1
  497. package/dist/cli/neo/launch.d.ts +0 -24
  498. package/dist/cli/neo/launch.d.ts.map +0 -1
  499. package/dist/cli/neo/launch.js +0 -66
  500. package/dist/cli/neo/launch.js.map +0 -1
  501. package/dist/cli/neo/platform.d.ts +0 -38
  502. package/dist/cli/neo/platform.d.ts.map +0 -1
  503. package/dist/cli/neo/platform.js +0 -54
  504. package/dist/cli/neo/platform.js.map +0 -1
  505. package/dist/cli/neo/resolve-binary.d.ts +0 -39
  506. package/dist/cli/neo/resolve-binary.d.ts.map +0 -1
  507. package/dist/cli/neo/resolve-binary.js +0 -66
  508. package/dist/cli/neo/resolve-binary.js.map +0 -1
  509. package/dist/core/extensions/builtin/session-observer/index.d.ts +0 -5
  510. package/dist/core/extensions/builtin/session-observer/index.d.ts.map +0 -1
  511. package/dist/core/extensions/builtin/session-observer/index.js +0 -36
  512. package/dist/core/extensions/builtin/session-observer/index.js.map +0 -1
  513. package/dist/core/extensions/builtin/session-observer/loader.d.ts +0 -3
  514. package/dist/core/extensions/builtin/session-observer/loader.d.ts.map +0 -1
  515. package/dist/core/extensions/builtin/session-observer/loader.js +0 -20
  516. package/dist/core/extensions/builtin/session-observer/loader.js.map +0 -1
  517. package/dist/core/extensions/builtin/session-observer/overlay-format.d.ts +0 -7
  518. package/dist/core/extensions/builtin/session-observer/overlay-format.d.ts.map +0 -1
  519. package/dist/core/extensions/builtin/session-observer/overlay-format.js +0 -30
  520. package/dist/core/extensions/builtin/session-observer/overlay-format.js.map +0 -1
  521. package/dist/core/extensions/builtin/session-observer/overlay.d.ts +0 -51
  522. package/dist/core/extensions/builtin/session-observer/overlay.d.ts.map +0 -1
  523. package/dist/core/extensions/builtin/session-observer/overlay.js +0 -229
  524. package/dist/core/extensions/builtin/session-observer/overlay.js.map +0 -1
  525. package/dist/core/extensions/builtin/session-observer/scanner.d.ts +0 -10
  526. package/dist/core/extensions/builtin/session-observer/scanner.d.ts.map +0 -1
  527. package/dist/core/extensions/builtin/session-observer/scanner.js +0 -142
  528. package/dist/core/extensions/builtin/session-observer/scanner.js.map +0 -1
  529. package/dist/core/extensions/builtin/session-observer/text.d.ts +0 -7
  530. package/dist/core/extensions/builtin/session-observer/text.d.ts.map +0 -1
  531. package/dist/core/extensions/builtin/session-observer/text.js +0 -37
  532. package/dist/core/extensions/builtin/session-observer/text.js.map +0 -1
  533. package/dist/core/extensions/builtin/session-observer/transcript-entries.d.ts +0 -7
  534. package/dist/core/extensions/builtin/session-observer/transcript-entries.d.ts.map +0 -1
  535. package/dist/core/extensions/builtin/session-observer/transcript-entries.js +0 -71
  536. package/dist/core/extensions/builtin/session-observer/transcript-entries.js.map +0 -1
  537. package/dist/core/extensions/builtin/session-observer/transcript-format.d.ts +0 -11
  538. package/dist/core/extensions/builtin/session-observer/transcript-format.d.ts.map +0 -1
  539. package/dist/core/extensions/builtin/session-observer/transcript-format.js +0 -65
  540. package/dist/core/extensions/builtin/session-observer/transcript-format.js.map +0 -1
  541. package/dist/core/extensions/builtin/session-observer/transcript.d.ts +0 -4
  542. package/dist/core/extensions/builtin/session-observer/transcript.d.ts.map +0 -1
  543. package/dist/core/extensions/builtin/session-observer/transcript.js +0 -81
  544. package/dist/core/extensions/builtin/session-observer/transcript.js.map +0 -1
  545. package/dist/core/extensions/builtin/session-observer/types.d.ts +0 -33
  546. package/dist/core/extensions/builtin/session-observer/types.d.ts.map +0 -1
  547. package/dist/core/extensions/builtin/session-observer/types.js +0 -2
  548. package/dist/core/extensions/builtin/session-observer/types.js.map +0 -1
  549. package/dist/modes/rpc/neo-daemon-child-worker.d.ts +0 -29
  550. package/dist/modes/rpc/neo-daemon-child-worker.d.ts.map +0 -1
  551. package/dist/modes/rpc/neo-daemon-child-worker.js +0 -95
  552. package/dist/modes/rpc/neo-daemon-child-worker.js.map +0 -1
  553. package/dist/modes/rpc/neo-daemon-mode.d.ts +0 -110
  554. package/dist/modes/rpc/neo-daemon-mode.d.ts.map +0 -1
  555. package/dist/modes/rpc/neo-daemon-mode.js +0 -267
  556. package/dist/modes/rpc/neo-daemon-mode.js.map +0 -1
  557. package/dist/modes/rpc/neo-daemon-protocol.d.ts +0 -50
  558. package/dist/modes/rpc/neo-daemon-protocol.d.ts.map +0 -1
  559. package/dist/modes/rpc/neo-daemon-protocol.js +0 -66
  560. package/dist/modes/rpc/neo-daemon-protocol.js.map +0 -1
  561. package/dist/modes/rpc/neo-daemon-registry.d.ts +0 -98
  562. package/dist/modes/rpc/neo-daemon-registry.d.ts.map +0 -1
  563. package/dist/modes/rpc/neo-daemon-registry.js +0 -209
  564. package/dist/modes/rpc/neo-daemon-registry.js.map +0 -1
  565. package/dist/modes/rpc/neo-runtime-options-argv.d.ts +0 -17
  566. package/dist/modes/rpc/neo-runtime-options-argv.d.ts.map +0 -1
  567. package/dist/modes/rpc/neo-runtime-options-argv.js +0 -79
  568. package/dist/modes/rpc/neo-runtime-options-argv.js.map +0 -1
  569. package/dist/modes/rpc/neo-runtime-options.d.ts +0 -84
  570. package/dist/modes/rpc/neo-runtime-options.d.ts.map +0 -1
  571. package/dist/modes/rpc/neo-runtime-options.js +0 -92
  572. package/dist/modes/rpc/neo-runtime-options.js.map +0 -1
  573. package/docs/neo.md +0 -111
  574. package/node_modules/@code-yeongyu/senpi-codemode/src/codemode/runtime.ts +0 -258
  575. package/node_modules/@code-yeongyu/senpi-codemode/src/codemode/tools.ts +0 -106
@@ -24,8 +24,10 @@ import { formatMissingSessionCwdPrompt, MissingSessionCwdError } from "../../cor
24
24
  import { SessionManager, sessionEntryToContextMessages } from "../../core/session-manager.js";
25
25
  import { BUILTIN_SLASH_COMMANDS } from "../../core/slash-commands.js";
26
26
  import { isInstallTelemetryEnabled } from "../../core/telemetry.js";
27
+ import { formatTimings, time } from "../../core/timings.js";
27
28
  import { hasTrustRequiringProjectResources, ProjectTrustStore } from "../../core/trust-manager.js";
28
29
  import { getUsageCostBreakdown } from "../../core/usage-totals.js";
30
+ import { consumeEarlyInspectorVmImportRecoveries, INSPECTOR_VM_IMPORT_WARNING, isRecoverableInspectorVmImportError, } from "../../inspector-policy.js";
29
31
  import { getChangelogPath, getNewEntries, normalizeChangelogLinks, parseChangelog } from "../../utils/changelog.js";
30
32
  import { copyToClipboard, readClipboardText } from "../../utils/clipboard.js";
31
33
  import { extensionForImageMimeType, readClipboardImage } from "../../utils/clipboard-image.js";
@@ -68,6 +70,7 @@ import { TrustSelectorComponent } from "./components/trust-selector.js";
68
70
  import { UserMessageComponent } from "./components/user-message.js";
69
71
  import { UserMessageSelectorComponent } from "./components/user-message-selector.js";
70
72
  import { editInExternalEditor } from "./external-editor.js";
73
+ import { GrokChrome } from "./grok/chrome.js";
71
74
  import { restoreInteractiveStderr, takeOverInteractiveStderr } from "./interactive-stderr-guard.js";
72
75
  import { getModelSearchText } from "./model-search.js";
73
76
  import { resolveStartupToolPaths } from "./startup-tools.js";
@@ -197,9 +200,9 @@ export function formatResumeCommand(sessionManager) {
197
200
  function hasDefaultModelProvider(providerId) {
198
201
  return providerId in defaultModelPerProvider;
199
202
  }
200
- // isApiKeyLoginProvider now lives in core/auth-providers.ts so the RPC login path
201
- // (neo) and the classic selectors share ONE source of truth. Re-exported here to
202
- // keep the existing public import (test/oauth-selector.test.ts) working, and used
203
+ // isApiKeyLoginProvider now lives in core/auth-providers.ts so RPC clients and
204
+ // the classic selectors share ONE source of truth. Re-exported here to keep the
205
+ // existing public import (test/oauth-selector.test.ts) working, and used
203
206
  // locally by getLoginProviderOptions below.
204
207
  export { isApiKeyLoginProvider };
205
208
  const AUTH_TYPE_ORDER = { oauth: 0, api_key: 1 };
@@ -345,6 +348,7 @@ export class InteractiveMode {
345
348
  this.isShuttingDown = false;
346
349
  this.runtimeHost = runtimeHost;
347
350
  this.options = options;
351
+ this.chrome = options.chrome === "grok" ? new GrokChrome() : options.chrome;
348
352
  this.autoTrustOnReloadCwd = options.autoTrustOnReloadCwd;
349
353
  this.runtimeHost.setBeforeSessionInvalidate(() => {
350
354
  InteractiveMode.restoreCompactionEscapeOverride(this);
@@ -385,15 +389,26 @@ export class InteractiveMode {
385
389
  setKeybindings(this.keybindings);
386
390
  const editorPaddingX = this.settingsManager.getEditorPaddingX();
387
391
  const autocompleteMaxVisible = this.settingsManager.getAutocompleteMaxVisible();
388
- this.defaultEditor = new CustomEditor(this.ui, getEditorTheme(), this.keybindings, {
389
- paddingX: editorPaddingX,
390
- autocompleteMaxVisible,
391
- });
392
+ if (this.chrome) {
393
+ this.defaultEditor = this.chrome.createBaseEditor({
394
+ ui: this.ui,
395
+ keybindings: this.keybindings,
396
+ editorOptions: { paddingX: editorPaddingX, autocompleteMaxVisible },
397
+ });
398
+ }
399
+ else {
400
+ this.defaultEditor = new CustomEditor(this.ui, getEditorTheme(), this.keybindings, {
401
+ paddingX: editorPaddingX,
402
+ autocompleteMaxVisible,
403
+ });
404
+ }
392
405
  this.editor = this.defaultEditor;
393
406
  this.editorContainer = new Container();
394
407
  this.editorContainer.addChild(this.editor);
395
408
  this.footerDataProvider = new FooterDataProvider(this.sessionManager.getCwd());
396
- this.footer = new FooterComponent(this.session, this.footerDataProvider);
409
+ this.footer = this.chrome
410
+ ? this.chrome.createFooter(this.session, this.footerDataProvider)
411
+ : new FooterComponent(this.session, this.footerDataProvider);
397
412
  this.footer.setAutoCompactEnabled(this.session.autoCompactionEnabled);
398
413
  // Load hide thinking block setting
399
414
  this.hideThinkingBlock = this.settingsManager.getHideThinkingBlock();
@@ -579,17 +594,36 @@ export class InteractiveMode {
579
594
  }
580
595
  // Add header container as first child. Populate it after applying theme settings.
581
596
  // Keep loaded resources before chat so restored session messages never precede them.
582
- this.ui.addChild(this.headerContainer);
583
- this.ui.addChild(this.loadedResourcesContainer);
584
- this.ui.addChild(this.chatContainer);
585
- this.ui.addChild(this.pendingMessagesContainer);
586
- this.ui.addChild(this.statusContainer);
587
- this.ui.addChild(this.hookStatusContainer);
588
- this.renderWidgets(); // Initialize with default spacer
589
- this.ui.addChild(this.widgetContainerAbove);
590
- this.ui.addChild(this.editorContainer);
591
- this.ui.addChild(this.widgetContainerBelow);
592
- this.ui.addChild(this.footer);
597
+ if (this.chrome) {
598
+ this.renderWidgets(); // Initialize with default spacer
599
+ for (const component of this.chrome.arrangeRoot([
600
+ this.headerContainer,
601
+ this.loadedResourcesContainer,
602
+ this.chatContainer,
603
+ this.pendingMessagesContainer,
604
+ this.statusContainer,
605
+ this.hookStatusContainer,
606
+ this.widgetContainerAbove,
607
+ this.editorContainer,
608
+ this.widgetContainerBelow,
609
+ this.footer,
610
+ ], this.ui)) {
611
+ this.ui.addChild(component);
612
+ }
613
+ }
614
+ else {
615
+ this.ui.addChild(this.headerContainer);
616
+ this.ui.addChild(this.loadedResourcesContainer);
617
+ this.ui.addChild(this.chatContainer);
618
+ this.ui.addChild(this.pendingMessagesContainer);
619
+ this.ui.addChild(this.statusContainer);
620
+ this.ui.addChild(this.hookStatusContainer);
621
+ this.renderWidgets(); // Initialize with default spacer
622
+ this.ui.addChild(this.widgetContainerAbove);
623
+ this.ui.addChild(this.editorContainer);
624
+ this.ui.addChild(this.widgetContainerBelow);
625
+ this.ui.addChild(this.footer);
626
+ }
593
627
  this.ui.setFocus(this.editor);
594
628
  this.setupKeyHandlers();
595
629
  this.setupEditorSubmitHandler();
@@ -605,7 +639,13 @@ export class InteractiveMode {
605
639
  this.isInitialized = true;
606
640
  await this.themeController.applyFromSettings();
607
641
  // Add header with keybindings from config (unless silenced)
608
- if (this.options.verbose || !this.settingsManager.getQuietStartup()) {
642
+ if (this.chrome) {
643
+ this.builtInHeader = this.chrome.createWelcomeContent(APP_NAME, this.version);
644
+ this.headerContainer.addChild(new Spacer(1));
645
+ this.headerContainer.addChild(this.builtInHeader);
646
+ this.headerContainer.addChild(new Spacer(1));
647
+ }
648
+ else if (this.options.verbose || !this.settingsManager.getQuietStartup()) {
609
649
  const logo = theme.bold(theme.fg("accent", APP_NAME)) + theme.fg("dim", ` v${this.version}`);
610
650
  // Build startup instructions using keybinding hint helpers
611
651
  const hint = (keybinding, description) => keyHint(keybinding, description);
@@ -1760,7 +1800,9 @@ export class InteractiveMode {
1760
1800
  return;
1761
1801
  }
1762
1802
  if (this.session.isStreaming && this.activeStatusIndicator?.kind !== "working") {
1763
- this.showStatusIndicator(new WorkingStatusIndicator(this.ui, this.workingMessage ?? this.defaultWorkingMessage, this.getWorkingIndicatorOptions()));
1803
+ this.showStatusIndicator(this.chrome
1804
+ ? this.chrome.createWorkingIndicator(this.ui, this.workingMessage ?? this.defaultWorkingMessage, this.getWorkingIndicatorOptions())
1805
+ : new WorkingStatusIndicator(this.ui, this.workingMessage ?? this.defaultWorkingMessage, this.getWorkingIndicatorOptions()));
1764
1806
  }
1765
1807
  this.ui.requestRender();
1766
1808
  }
@@ -2174,7 +2216,7 @@ export class InteractiveMode {
2174
2216
  this.editorContainer.clear();
2175
2217
  if (factory) {
2176
2218
  // Create the custom editor with tui, theme, and keybindings
2177
- const newEditor = factory(this.ui, getEditorTheme(), this.keybindings);
2219
+ const newEditor = factory(this.ui, this.chrome ? this.chrome.getEditorTheme() : getEditorTheme(), this.keybindings);
2178
2220
  // Wire up callbacks from the default editor
2179
2221
  newEditor.onSubmit = this.defaultEditor.onSubmit;
2180
2222
  newEditor.onChange = this.defaultEditor.onChange;
@@ -2284,7 +2326,8 @@ export class InteractiveMode {
2284
2326
  const w = component.width;
2285
2327
  return w ? { width: w } : undefined;
2286
2328
  };
2287
- const handle = this.ui.showOverlay(component, resolveOptions());
2329
+ const overlayOptions = resolveOptions();
2330
+ const handle = this.ui.showOverlay(component, overlayOptions);
2288
2331
  // Expose handle to caller for visibility control
2289
2332
  options?.onHandle?.(handle);
2290
2333
  }
@@ -2380,14 +2423,6 @@ export class InteractiveMode {
2380
2423
  this.showError(`Failed to open history search: ${error instanceof Error ? error.message : String(error)}`);
2381
2424
  }
2382
2425
  });
2383
- this.defaultEditor.onAction("app.sessions.observe", async () => {
2384
- try {
2385
- await this.session.prompt("/sessions");
2386
- }
2387
- catch (error) {
2388
- this.showError(`Failed to open session observer: ${error instanceof Error ? error.message : String(error)}`);
2389
- }
2390
- });
2391
2426
  this.defaultEditor.onAction("app.tools.expand", () => this.toggleToolOutputExpansion());
2392
2427
  this.defaultEditor.onAction("app.thinking.toggle", () => this.toggleThinkingBlockVisibility());
2393
2428
  this.defaultEditor.onAction("app.editor.external", () => void this.handleOpenExternalEditor());
@@ -2563,7 +2598,7 @@ export class InteractiveMode {
2563
2598
  this.editor.setText("");
2564
2599
  return;
2565
2600
  }
2566
- if (text === "/quit") {
2601
+ if (text === "/quit" || text === "/exit") {
2567
2602
  this.editor.setText("");
2568
2603
  await this.shutdown();
2569
2604
  return;
@@ -2650,7 +2685,9 @@ export class InteractiveMode {
2650
2685
  this.retryEscapeHandler = undefined;
2651
2686
  }
2652
2687
  if (this.workingVisible) {
2653
- this.showStatusIndicator(new WorkingStatusIndicator(this.ui, this.workingMessage ?? this.defaultWorkingMessage, this.getWorkingIndicatorOptions()));
2688
+ this.showStatusIndicator(this.chrome
2689
+ ? this.chrome.createWorkingIndicator(this.ui, this.workingMessage ?? this.defaultWorkingMessage, this.getWorkingIndicatorOptions())
2690
+ : new WorkingStatusIndicator(this.ui, this.workingMessage ?? this.defaultWorkingMessage, this.getWorkingIndicatorOptions()));
2654
2691
  }
2655
2692
  else {
2656
2693
  this.clearStatusIndicator();
@@ -2706,10 +2743,7 @@ export class InteractiveMode {
2706
2743
  if (content.type === "toolCall") {
2707
2744
  let component = this.pendingTools.get(content.id);
2708
2745
  if (!component) {
2709
- component = new ToolExecutionComponent(content.name, content.id, content.arguments, {
2710
- showImages: this.settingsManager.getShowImages(),
2711
- imageWidthCells: this.settingsManager.getImageWidthCells(),
2712
- }, this.getRegisteredToolDefinition(content.name), this.ui, this.sessionManager.getCwd());
2746
+ component = this.createToolExecutionComponent(content.name, content.id, content.arguments);
2713
2747
  component.setExpanded(this.toolOutputExpanded);
2714
2748
  this.chatContainer.addChild(component);
2715
2749
  this.pendingTools.set(content.id, component);
@@ -2780,10 +2814,7 @@ export class InteractiveMode {
2780
2814
  this.handleToolExecutionStart(event);
2781
2815
  let component = this.pendingTools.get(event.toolCallId);
2782
2816
  if (!component) {
2783
- component = new ToolExecutionComponent(event.toolName, event.toolCallId, event.args, {
2784
- showImages: this.settingsManager.getShowImages(),
2785
- imageWidthCells: this.settingsManager.getImageWidthCells(),
2786
- }, this.getRegisteredToolDefinition(event.toolName), this.ui, this.sessionManager.getCwd());
2817
+ component = this.createToolExecutionComponent(event.toolName, event.toolCallId, event.args);
2787
2818
  component.setExpanded(this.toolOutputExpanded);
2788
2819
  this.chatContainer.addChild(component);
2789
2820
  this.pendingTools.set(event.toolCallId, component);
@@ -2968,6 +2999,11 @@ export class InteractiveMode {
2968
2999
  this.showError(`Fallback chain exhausted for ${event.chainKey}: ${event.lastError}`);
2969
3000
  this.setExtensionStatus(FALLBACK_STATUS_KEY, undefined);
2970
3001
  break;
3002
+ case "server_fallback_aborted":
3003
+ this.showWarning(event.chainConfigured
3004
+ ? `Server fallback ${event.from} -> ${event.to} aborted; retrying on your fallback chain`
3005
+ : `Server fallback ${event.from} -> ${event.to} aborted; no chain configured (set one with /fallback)`);
3006
+ break;
2971
3007
  case "auto_retry_start": {
2972
3008
  // During retry waits, isStreaming flips false between attempts. The main Esc handler
2973
3009
  // keys off both isStreaming and retryAttempt so we keep the same close-out path here;
@@ -3102,7 +3138,7 @@ export class InteractiveMode {
3102
3138
  case "custom": {
3103
3139
  if (message.display) {
3104
3140
  const renderer = this.session.extensionRunner.getMessageRenderer(message.customType);
3105
- const component = new CustomMessageComponent(message, renderer, this.getMarkdownThemeWithSettings());
3141
+ const component = new CustomMessageComponent(message, renderer, this.getMarkdownThemeWithSettings(), this.outputPad);
3106
3142
  component.setExpanded(this.toolOutputExpanded);
3107
3143
  this.chatContainer.addChild(component);
3108
3144
  }
@@ -3167,6 +3203,18 @@ export class InteractiveMode {
3167
3203
  }
3168
3204
  }
3169
3205
  }
3206
+ createToolExecutionComponent(toolName, toolCallId, args) {
3207
+ if (this.chrome) {
3208
+ return new ToolExecutionComponent(toolName, toolCallId, args, {
3209
+ showImages: this.settingsManager.getShowImages(),
3210
+ imageWidthCells: this.settingsManager.getImageWidthCells(),
3211
+ }, this.getRegisteredToolDefinition(toolName), this.ui, this.sessionManager.getCwd(), this.chrome.toolPresentation);
3212
+ }
3213
+ return new ToolExecutionComponent(toolName, toolCallId, args, {
3214
+ showImages: this.settingsManager.getShowImages(),
3215
+ imageWidthCells: this.settingsManager.getImageWidthCells(),
3216
+ }, this.getRegisteredToolDefinition(toolName), this.ui, this.sessionManager.getCwd());
3217
+ }
3170
3218
  renderSessionItems(items, options = {}) {
3171
3219
  this.clearPendingTools();
3172
3220
  const renderedPendingTools = new Map();
@@ -3191,10 +3239,7 @@ export class InteractiveMode {
3191
3239
  // Render tool call components
3192
3240
  for (const content of message.content) {
3193
3241
  if (content.type === "toolCall") {
3194
- const component = new ToolExecutionComponent(content.name, content.id, content.arguments, {
3195
- showImages: this.settingsManager.getShowImages(),
3196
- imageWidthCells: this.settingsManager.getImageWidthCells(),
3197
- }, this.getRegisteredToolDefinition(content.name), this.ui, this.sessionManager.getCwd());
3242
+ const component = this.createToolExecutionComponent(content.name, content.id, content.arguments);
3198
3243
  component.setExpanded(this.toolOutputExpanded);
3199
3244
  this.chatContainer.addChild(component);
3200
3245
  if (message.stopReason === "aborted" || message.stopReason === "error") {
@@ -3391,10 +3436,14 @@ export class InteractiveMode {
3391
3436
  * call ui.stop() to restore cooked mode, the cursor, and disable bracketed
3392
3437
  * paste / Kitty / modifyOtherKeys sequences.
3393
3438
  */
3394
- uncaughtCrash(error) {
3439
+ uncaughtCrash(error, origin) {
3395
3440
  if (this.isShuttingDown) {
3396
3441
  process.exit(1);
3397
3442
  }
3443
+ if (isRecoverableInspectorVmImportError(error, origin)) {
3444
+ this.showWarning(INSPECTOR_VM_IMPORT_WARNING);
3445
+ return;
3446
+ }
3398
3447
  this.isShuttingDown = true;
3399
3448
  try {
3400
3449
  this.unregisterSignalHandlers();
@@ -3452,9 +3501,14 @@ export class InteractiveMode {
3452
3501
  // Restore the terminal before the process dies on any uncaught throw.
3453
3502
  // Without this, an unhandled exception from extension code (or anywhere
3454
3503
  // in pi) leaves the terminal in raw mode with no cursor.
3455
- const uncaughtExceptionHandler = (error) => this.uncaughtCrash(error);
3504
+ const uncaughtExceptionHandler = (error, origin) => this.uncaughtCrash(error, origin);
3456
3505
  process.prependListener("uncaughtException", uncaughtExceptionHandler);
3457
3506
  this.signalCleanupHandlers.push(() => process.off("uncaughtException", uncaughtExceptionHandler));
3507
+ // Surface Inspector rejections that the early bootstrap seam recovered before this
3508
+ // handler (and the TUI warning surface) existed.
3509
+ if (consumeEarlyInspectorVmImportRecoveries() > 0) {
3510
+ this.showWarning(INSPECTOR_VM_IMPORT_WARNING);
3511
+ }
3458
3512
  }
3459
3513
  unregisterSignalHandlers() {
3460
3514
  for (const cleanup of this.signalCleanupHandlers) {
@@ -3537,7 +3591,13 @@ export class InteractiveMode {
3537
3591
  }
3538
3592
  }
3539
3593
  updateEditorBorderColor() {
3540
- if (this.isBashMode) {
3594
+ if (this.chrome) {
3595
+ this.editor.borderColor = this.chrome.getEditorBorderColor({
3596
+ isBashMode: this.isBashMode,
3597
+ thinkingLevel: this.session.thinkingLevel || "off",
3598
+ });
3599
+ }
3600
+ else if (this.isBashMode) {
3541
3601
  this.editor.borderColor = theme.getBashModeBorderColor();
3542
3602
  }
3543
3603
  else {
@@ -4049,7 +4109,9 @@ export class InteractiveMode {
4049
4109
  this.outputPad = padding;
4050
4110
  if (this.streamingComponent || this.session.isStreaming) {
4051
4111
  for (const child of this.chatContainer.children) {
4052
- if (child instanceof AssistantMessageComponent || child instanceof UserMessageComponent) {
4112
+ if (child instanceof AssistantMessageComponent ||
4113
+ child instanceof CustomMessageComponent ||
4114
+ child instanceof UserMessageComponent) {
4053
4115
  child.setOutputPad(padding);
4054
4116
  }
4055
4117
  }
@@ -4969,6 +5031,7 @@ export class InteractiveMode {
4969
5031
  this.hideThinkingBlock = this.settingsManager.getHideThinkingBlock();
4970
5032
  this.outputPad = this.settingsManager.getOutputPad();
4971
5033
  this.rebuildChatFromMessages();
5034
+ time("chatRebuild", "reload");
4972
5035
  chatRestoredBeforeSessionStart = true;
4973
5036
  };
4974
5037
  try {
@@ -5008,9 +5071,11 @@ export class InteractiveMode {
5008
5071
  if (modelsJsonError) {
5009
5072
  this.showError(`models.json error: ${modelsJsonError}`);
5010
5073
  }
5011
- this.showStatus(savedImplicitProjectTrust
5074
+ const reloadedMessage = savedImplicitProjectTrust
5012
5075
  ? "Reloaded keybindings, extensions, skills, prompts, themes, and context files; saved project trust"
5013
- : "Reloaded keybindings, extensions, skills, prompts, themes, and context files");
5076
+ : "Reloaded keybindings, extensions, skills, prompts, themes, and context files";
5077
+ const reloadTimings = formatTimings("reload");
5078
+ this.showStatus(reloadTimings === undefined ? reloadedMessage : `${reloadedMessage} | reload timings: ${reloadTimings}`);
5014
5079
  dismissReloadBox(this.editor);
5015
5080
  reloadBoxDismissed = true;
5016
5081
  }
@@ -5347,7 +5412,6 @@ export class InteractiveMode {
5347
5412
  const cycleThinkingLevel = this.getAppKeyDisplay("app.thinking.cycle");
5348
5413
  const cycleModelForward = this.getAppKeyDisplay("app.model.cycleForward");
5349
5414
  const selectModel = this.getAppKeyDisplay("app.model.select");
5350
- const observeSessions = this.getAppKeyDisplay("app.sessions.observe");
5351
5415
  const expandTools = this.getAppKeyDisplay("app.tools.expand");
5352
5416
  const toggleThinking = this.getAppKeyDisplay("app.thinking.toggle");
5353
5417
  const externalEditor = this.getAppKeyDisplay("app.editor.external");
@@ -5392,7 +5456,6 @@ export class InteractiveMode {
5392
5456
  | \`${cycleThinkingLevel}\` | Cycle thinking level |
5393
5457
  | \`${cycleModelForward}\` / \`${cycleModelBackward}\` | Cycle models |
5394
5458
  | \`${selectModel}\` | Open model selector |
5395
- | \`${observeSessions}\` | Observe session transcripts |
5396
5459
  | \`${expandTools}\` | Toggle tool output expansion |
5397
5460
  | \`${toggleThinking}\` | Toggle thinking block visibility |
5398
5461
  | \`${externalEditor}\` | Edit message in external editor |