@ashx-j/lunr 0.2.25 → 0.2.27

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 (729) hide show
  1. package/CHANGELOG.md +31 -1
  2. package/LICENSE +22 -0
  3. package/dist/builtin-extensions/ashxj-thinking.d.ts +1 -1
  4. package/dist/builtin-extensions/ashxj-thinking.d.ts.map +1 -1
  5. package/dist/builtin-extensions/ashxj-thinking.js +1 -1
  6. package/dist/builtin-extensions/ashxj-thinking.js.map +1 -1
  7. package/dist/builtin-extensions/ashxj-tui.d.ts +11 -1
  8. package/dist/builtin-extensions/ashxj-tui.d.ts.map +1 -1
  9. package/dist/builtin-extensions/ashxj-tui.js +6 -10
  10. package/dist/builtin-extensions/ashxj-tui.js.map +1 -1
  11. package/dist/builtin-extensions/index.d.ts.map +1 -1
  12. package/dist/builtin-extensions/index.js +1 -0
  13. package/dist/builtin-extensions/index.js.map +1 -1
  14. package/dist/builtin-extensions/lunr-computer-use.d.ts +3 -0
  15. package/dist/builtin-extensions/lunr-computer-use.d.ts.map +1 -0
  16. package/dist/builtin-extensions/lunr-computer-use.js +179 -0
  17. package/dist/builtin-extensions/lunr-computer-use.js.map +1 -0
  18. package/dist/builtin-extensions/lunr-cron.d.ts +4 -5
  19. package/dist/builtin-extensions/lunr-cron.d.ts.map +1 -1
  20. package/dist/builtin-extensions/lunr-cron.js +94 -108
  21. package/dist/builtin-extensions/lunr-cron.js.map +1 -1
  22. package/dist/builtin-extensions/lunr-local-providers/local-servers.d.ts.map +1 -1
  23. package/dist/builtin-extensions/lunr-local-providers/local-servers.js +3 -1
  24. package/dist/builtin-extensions/lunr-local-providers/local-servers.js.map +1 -1
  25. package/dist/builtin-extensions/narumiruna-pi-goal/src/commands.d.ts.map +1 -1
  26. package/dist/builtin-extensions/narumiruna-pi-goal/src/commands.js +2 -2
  27. package/dist/builtin-extensions/narumiruna-pi-goal/src/commands.js.map +1 -1
  28. package/dist/builtin-extensions/narumiruna-pi-goal/src/goal.d.ts.map +1 -1
  29. package/dist/builtin-extensions/narumiruna-pi-goal/src/goal.js +1 -1
  30. package/dist/builtin-extensions/narumiruna-pi-goal/src/goal.js.map +1 -1
  31. package/dist/builtin-extensions/narumiruna-pi-goal/src/runtime.d.ts.map +1 -1
  32. package/dist/builtin-extensions/narumiruna-pi-goal/src/runtime.js +1 -1
  33. package/dist/builtin-extensions/narumiruna-pi-goal/src/runtime.js.map +1 -1
  34. package/dist/builtin-extensions/pi-intercom/index.d.ts.map +1 -1
  35. package/dist/builtin-extensions/pi-intercom/index.js +2 -2
  36. package/dist/builtin-extensions/pi-intercom/index.js.map +1 -1
  37. package/dist/builtin-extensions/pi-lsp-extension/bemol-extension/index.d.ts +1 -1
  38. package/dist/builtin-extensions/pi-lsp-extension/bemol-extension/index.d.ts.map +1 -1
  39. package/dist/builtin-extensions/pi-lsp-extension/bemol-extension/index.js +1 -1
  40. package/dist/builtin-extensions/pi-lsp-extension/bemol-extension/index.js.map +1 -1
  41. package/dist/builtin-extensions/pi-lsp-extension/src/index.d.ts.map +1 -1
  42. package/dist/builtin-extensions/pi-lsp-extension/src/index.js +1 -15
  43. package/dist/builtin-extensions/pi-lsp-extension/src/index.js.map +1 -1
  44. package/dist/builtin-extensions/pi-lsp-extension/src/lsp-client.d.ts +6 -0
  45. package/dist/builtin-extensions/pi-lsp-extension/src/lsp-client.d.ts.map +1 -1
  46. package/dist/builtin-extensions/pi-lsp-extension/src/lsp-client.js +187 -132
  47. package/dist/builtin-extensions/pi-lsp-extension/src/lsp-client.js.map +1 -1
  48. package/dist/builtin-extensions/pi-lsp-extension/src/lsp-manager.d.ts +8 -0
  49. package/dist/builtin-extensions/pi-lsp-extension/src/lsp-manager.d.ts.map +1 -1
  50. package/dist/builtin-extensions/pi-lsp-extension/src/lsp-manager.js +142 -112
  51. package/dist/builtin-extensions/pi-lsp-extension/src/lsp-manager.js.map +1 -1
  52. package/dist/builtin-extensions/pi-lsp-extension/src/tools/code-rewrite.d.ts +12 -1
  53. package/dist/builtin-extensions/pi-lsp-extension/src/tools/code-rewrite.d.ts.map +1 -1
  54. package/dist/builtin-extensions/pi-lsp-extension/src/tools/code-rewrite.js +14 -7
  55. package/dist/builtin-extensions/pi-lsp-extension/src/tools/code-rewrite.js.map +1 -1
  56. package/dist/builtin-extensions/pi-lsp-extension/src/tree-sitter/rewrite-engine.d.ts +11 -3
  57. package/dist/builtin-extensions/pi-lsp-extension/src/tree-sitter/rewrite-engine.d.ts.map +1 -1
  58. package/dist/builtin-extensions/pi-lsp-extension/src/tree-sitter/rewrite-engine.js +67 -41
  59. package/dist/builtin-extensions/pi-lsp-extension/src/tree-sitter/rewrite-engine.js.map +1 -1
  60. package/dist/builtin-extensions/pi-lsp-extension/src/tree-sitter/search-engine.d.ts +4 -2
  61. package/dist/builtin-extensions/pi-lsp-extension/src/tree-sitter/search-engine.d.ts.map +1 -1
  62. package/dist/builtin-extensions/pi-lsp-extension/src/tree-sitter/search-engine.js +3 -0
  63. package/dist/builtin-extensions/pi-lsp-extension/src/tree-sitter/search-engine.js.map +1 -1
  64. package/dist/builtin-extensions/pi-mcp-adapter/commands.d.ts +2 -1
  65. package/dist/builtin-extensions/pi-mcp-adapter/commands.d.ts.map +1 -1
  66. package/dist/builtin-extensions/pi-mcp-adapter/commands.js +6 -6
  67. package/dist/builtin-extensions/pi-mcp-adapter/commands.js.map +1 -1
  68. package/dist/builtin-extensions/pi-mcp-adapter/config.d.ts +1 -1
  69. package/dist/builtin-extensions/pi-mcp-adapter/config.d.ts.map +1 -1
  70. package/dist/builtin-extensions/pi-mcp-adapter/config.js +11 -5
  71. package/dist/builtin-extensions/pi-mcp-adapter/config.js.map +1 -1
  72. package/dist/builtin-extensions/pi-mcp-adapter/direct-tool-executor.d.ts.map +1 -1
  73. package/dist/builtin-extensions/pi-mcp-adapter/direct-tool-executor.js +2 -2
  74. package/dist/builtin-extensions/pi-mcp-adapter/direct-tool-executor.js.map +1 -1
  75. package/dist/builtin-extensions/pi-mcp-adapter/host-html-template.d.ts.map +1 -1
  76. package/dist/builtin-extensions/pi-mcp-adapter/host-html-template.js +1 -1
  77. package/dist/builtin-extensions/pi-mcp-adapter/host-html-template.js.map +1 -1
  78. package/dist/builtin-extensions/pi-mcp-adapter/index.d.ts.map +1 -1
  79. package/dist/builtin-extensions/pi-mcp-adapter/index.js +48 -40
  80. package/dist/builtin-extensions/pi-mcp-adapter/index.js.map +1 -1
  81. package/dist/builtin-extensions/pi-mcp-adapter/init.d.ts.map +1 -1
  82. package/dist/builtin-extensions/pi-mcp-adapter/init.js +3 -1
  83. package/dist/builtin-extensions/pi-mcp-adapter/init.js.map +1 -1
  84. package/dist/builtin-extensions/pi-mcp-adapter/mcp-auth-flow.d.ts +12 -40
  85. package/dist/builtin-extensions/pi-mcp-adapter/mcp-auth-flow.d.ts.map +1 -1
  86. package/dist/builtin-extensions/pi-mcp-adapter/mcp-auth-flow.js +166 -235
  87. package/dist/builtin-extensions/pi-mcp-adapter/mcp-auth-flow.js.map +1 -1
  88. package/dist/builtin-extensions/pi-mcp-adapter/mcp-callback-server.d.ts +5 -0
  89. package/dist/builtin-extensions/pi-mcp-adapter/mcp-callback-server.d.ts.map +1 -1
  90. package/dist/builtin-extensions/pi-mcp-adapter/mcp-callback-server.js +43 -13
  91. package/dist/builtin-extensions/pi-mcp-adapter/mcp-callback-server.js.map +1 -1
  92. package/dist/builtin-extensions/pi-mcp-adapter/mcp-oauth-provider.d.ts +14 -3
  93. package/dist/builtin-extensions/pi-mcp-adapter/mcp-oauth-provider.d.ts.map +1 -1
  94. package/dist/builtin-extensions/pi-mcp-adapter/mcp-oauth-provider.js +73 -21
  95. package/dist/builtin-extensions/pi-mcp-adapter/mcp-oauth-provider.js.map +1 -1
  96. package/dist/builtin-extensions/pi-mcp-adapter/proxy-modes.d.ts.map +1 -1
  97. package/dist/builtin-extensions/pi-mcp-adapter/proxy-modes.js +4 -4
  98. package/dist/builtin-extensions/pi-mcp-adapter/proxy-modes.js.map +1 -1
  99. package/dist/builtin-extensions/pi-mcp-adapter/server-manager.d.ts.map +1 -1
  100. package/dist/builtin-extensions/pi-mcp-adapter/server-manager.js +2 -2
  101. package/dist/builtin-extensions/pi-mcp-adapter/server-manager.js.map +1 -1
  102. package/dist/builtin-extensions/pi-mcp-adapter/state.d.ts +2 -0
  103. package/dist/builtin-extensions/pi-mcp-adapter/state.d.ts.map +1 -1
  104. package/dist/builtin-extensions/pi-mcp-adapter/state.js.map +1 -1
  105. package/dist/builtin-extensions/pi-ollama-cloud/index.d.ts +1 -1
  106. package/dist/builtin-extensions/pi-ollama-cloud/index.d.ts.map +1 -1
  107. package/dist/builtin-extensions/pi-ollama-cloud/index.js +1 -1
  108. package/dist/builtin-extensions/pi-ollama-cloud/index.js.map +1 -1
  109. package/dist/builtin-extensions/pi-ollama-cloud/models.d.ts +11 -5
  110. package/dist/builtin-extensions/pi-ollama-cloud/models.d.ts.map +1 -1
  111. package/dist/builtin-extensions/pi-ollama-cloud/models.js +12 -32
  112. package/dist/builtin-extensions/pi-ollama-cloud/models.js.map +1 -1
  113. package/dist/builtin-extensions/pi-prompt-template-model/index.d.ts.map +1 -1
  114. package/dist/builtin-extensions/pi-prompt-template-model/index.js +5 -3
  115. package/dist/builtin-extensions/pi-prompt-template-model/index.js.map +1 -1
  116. package/dist/builtin-extensions/pi-prompt-template-model/prompt-loader.d.ts +2 -1
  117. package/dist/builtin-extensions/pi-prompt-template-model/prompt-loader.d.ts.map +1 -1
  118. package/dist/builtin-extensions/pi-prompt-template-model/prompt-loader.js +21 -12
  119. package/dist/builtin-extensions/pi-prompt-template-model/prompt-loader.js.map +1 -1
  120. package/dist/builtin-extensions/pi-prompt-template-model/tool-manager.d.ts.map +1 -1
  121. package/dist/builtin-extensions/pi-prompt-template-model/tool-manager.js +7 -24
  122. package/dist/builtin-extensions/pi-prompt-template-model/tool-manager.js.map +1 -1
  123. package/dist/builtin-extensions/pi-subagents/src/extension/index.d.ts.map +1 -1
  124. package/dist/builtin-extensions/pi-subagents/src/extension/index.js +39 -77
  125. package/dist/builtin-extensions/pi-subagents/src/extension/index.js.map +1 -1
  126. package/dist/builtin-extensions/pi-subagents/src/extension/schemas.d.ts.map +1 -1
  127. package/dist/builtin-extensions/pi-subagents/src/extension/schemas.js +1 -1
  128. package/dist/builtin-extensions/pi-subagents/src/extension/schemas.js.map +1 -1
  129. package/dist/builtin-extensions/pi-subagents/src/extension/tool-description.d.ts +4 -4
  130. package/dist/builtin-extensions/pi-subagents/src/extension/tool-description.d.ts.map +1 -1
  131. package/dist/builtin-extensions/pi-subagents/src/extension/tool-description.js +8 -5
  132. package/dist/builtin-extensions/pi-subagents/src/extension/tool-description.js.map +1 -1
  133. package/dist/builtin-extensions/pi-subagents/src/runs/background/notify.d.ts +1 -1
  134. package/dist/builtin-extensions/pi-subagents/src/runs/background/notify.d.ts.map +1 -1
  135. package/dist/builtin-extensions/pi-subagents/src/runs/background/notify.js +15 -31
  136. package/dist/builtin-extensions/pi-subagents/src/runs/background/notify.js.map +1 -1
  137. package/dist/builtin-extensions/pi-subagents/src/runs/background/result-watcher.d.ts.map +1 -1
  138. package/dist/builtin-extensions/pi-subagents/src/runs/background/result-watcher.js +7 -2
  139. package/dist/builtin-extensions/pi-subagents/src/runs/background/result-watcher.js.map +1 -1
  140. package/dist/builtin-extensions/pi-subagents/src/runs/background/subagent-runner.d.ts +1 -0
  141. package/dist/builtin-extensions/pi-subagents/src/runs/background/subagent-runner.d.ts.map +1 -1
  142. package/dist/builtin-extensions/pi-subagents/src/runs/background/subagent-runner.js +21 -4
  143. package/dist/builtin-extensions/pi-subagents/src/runs/background/subagent-runner.js.map +1 -1
  144. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/chain-execution.d.ts.map +1 -1
  145. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/chain-execution.js +11 -4
  146. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/chain-execution.js.map +1 -1
  147. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/execution.d.ts.map +1 -1
  148. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/execution.js +121 -25
  149. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/execution.js.map +1 -1
  150. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/subagent-executor.d.ts.map +1 -1
  151. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/subagent-executor.js +25 -5
  152. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/subagent-executor.js.map +1 -1
  153. package/dist/builtin-extensions/pi-subagents/src/runs/shared/chain-outputs.d.ts +1 -0
  154. package/dist/builtin-extensions/pi-subagents/src/runs/shared/chain-outputs.d.ts.map +1 -1
  155. package/dist/builtin-extensions/pi-subagents/src/runs/shared/chain-outputs.js +5 -0
  156. package/dist/builtin-extensions/pi-subagents/src/runs/shared/chain-outputs.js.map +1 -1
  157. package/dist/builtin-extensions/pi-subagents/src/runs/shared/child-tools.d.ts +1 -1
  158. package/dist/builtin-extensions/pi-subagents/src/runs/shared/child-tools.d.ts.map +1 -1
  159. package/dist/builtin-extensions/pi-subagents/src/runs/shared/child-tools.js +2 -0
  160. package/dist/builtin-extensions/pi-subagents/src/runs/shared/child-tools.js.map +1 -1
  161. package/dist/builtin-extensions/pi-subagents/src/runs/shared/model-fallback.d.ts +1 -1
  162. package/dist/builtin-extensions/pi-subagents/src/runs/shared/model-fallback.d.ts.map +1 -1
  163. package/dist/builtin-extensions/pi-subagents/src/runs/shared/model-fallback.js +1 -1
  164. package/dist/builtin-extensions/pi-subagents/src/runs/shared/model-fallback.js.map +1 -1
  165. package/dist/builtin-extensions/pi-subagents/src/runs/shared/parallel-utils.d.ts +7 -8
  166. package/dist/builtin-extensions/pi-subagents/src/runs/shared/parallel-utils.d.ts.map +1 -1
  167. package/dist/builtin-extensions/pi-subagents/src/runs/shared/parallel-utils.js +60 -32
  168. package/dist/builtin-extensions/pi-subagents/src/runs/shared/parallel-utils.js.map +1 -1
  169. package/dist/builtin-extensions/pi-subagents/src/shared/utils.d.ts +1 -1
  170. package/dist/builtin-extensions/pi-subagents/src/shared/utils.d.ts.map +1 -1
  171. package/dist/builtin-extensions/pi-subagents/src/shared/utils.js +15 -5
  172. package/dist/builtin-extensions/pi-subagents/src/shared/utils.js.map +1 -1
  173. package/dist/builtin-extensions/pi-subagents/src/slash/prompt-workflows.d.ts.map +1 -1
  174. package/dist/builtin-extensions/pi-subagents/src/slash/prompt-workflows.js +4 -3
  175. package/dist/builtin-extensions/pi-subagents/src/slash/prompt-workflows.js.map +1 -1
  176. package/dist/builtin-extensions/pi-subagents/src/tui/communication.d.ts.map +1 -1
  177. package/dist/builtin-extensions/pi-subagents/src/tui/communication.js +1 -1
  178. package/dist/builtin-extensions/pi-subagents/src/tui/communication.js.map +1 -1
  179. package/dist/builtin-extensions/pi-subagents/src/tui/render.d.ts +2 -1
  180. package/dist/builtin-extensions/pi-subagents/src/tui/render.d.ts.map +1 -1
  181. package/dist/builtin-extensions/pi-subagents/src/tui/render.js +22 -11
  182. package/dist/builtin-extensions/pi-subagents/src/tui/render.js.map +1 -1
  183. package/dist/builtin-extensions/pi-subagents/src/watchdog/review.d.ts.map +1 -1
  184. package/dist/builtin-extensions/pi-subagents/src/watchdog/review.js +3 -3
  185. package/dist/builtin-extensions/pi-subagents/src/watchdog/review.js.map +1 -1
  186. package/dist/builtin-extensions/pi-tps.d.ts.map +1 -1
  187. package/dist/builtin-extensions/pi-tps.js +20 -17
  188. package/dist/builtin-extensions/pi-tps.js.map +1 -1
  189. package/dist/builtin-extensions/pi-web-access/activity.d.ts +1 -0
  190. package/dist/builtin-extensions/pi-web-access/activity.d.ts.map +1 -1
  191. package/dist/builtin-extensions/pi-web-access/activity.js +27 -5
  192. package/dist/builtin-extensions/pi-web-access/activity.js.map +1 -1
  193. package/dist/builtin-extensions/pi-web-access/bounded-body.d.ts +3 -0
  194. package/dist/builtin-extensions/pi-web-access/bounded-body.d.ts.map +1 -0
  195. package/dist/builtin-extensions/pi-web-access/bounded-body.js +43 -0
  196. package/dist/builtin-extensions/pi-web-access/bounded-body.js.map +1 -0
  197. package/dist/builtin-extensions/pi-web-access/content-page.d.ts +24 -0
  198. package/dist/builtin-extensions/pi-web-access/content-page.d.ts.map +1 -0
  199. package/dist/builtin-extensions/pi-web-access/content-page.js +57 -0
  200. package/dist/builtin-extensions/pi-web-access/content-page.js.map +1 -0
  201. package/dist/builtin-extensions/pi-web-access/extract.d.ts.map +1 -1
  202. package/dist/builtin-extensions/pi-web-access/extract.js +7 -2
  203. package/dist/builtin-extensions/pi-web-access/extract.js.map +1 -1
  204. package/dist/builtin-extensions/pi-web-access/github-extract.d.ts +0 -1
  205. package/dist/builtin-extensions/pi-web-access/github-extract.d.ts.map +1 -1
  206. package/dist/builtin-extensions/pi-web-access/github-extract.js +147 -36
  207. package/dist/builtin-extensions/pi-web-access/github-extract.js.map +1 -1
  208. package/dist/builtin-extensions/pi-web-access/index.d.ts.map +1 -1
  209. package/dist/builtin-extensions/pi-web-access/index.js +48 -73
  210. package/dist/builtin-extensions/pi-web-access/index.js.map +1 -1
  211. package/dist/builtin-extensions/pi-web-access/session-cleanup.d.ts +12 -4
  212. package/dist/builtin-extensions/pi-web-access/session-cleanup.d.ts.map +1 -1
  213. package/dist/builtin-extensions/pi-web-access/session-cleanup.js +35 -12
  214. package/dist/builtin-extensions/pi-web-access/session-cleanup.js.map +1 -1
  215. package/dist/builtin-extensions/pi-web-access/storage.d.ts +9 -6
  216. package/dist/builtin-extensions/pi-web-access/storage.d.ts.map +1 -1
  217. package/dist/builtin-extensions/pi-web-access/storage.js +36 -24
  218. package/dist/builtin-extensions/pi-web-access/storage.js.map +1 -1
  219. package/dist/builtin-extensions/simple-pi-memory.d.ts +1 -1
  220. package/dist/builtin-extensions/simple-pi-memory.d.ts.map +1 -1
  221. package/dist/builtin-extensions/simple-pi-memory.js +1 -1
  222. package/dist/builtin-extensions/simple-pi-memory.js.map +1 -1
  223. package/dist/cli/install-cli.d.ts.map +1 -1
  224. package/dist/cli/install-cli.js +38 -30
  225. package/dist/cli/install-cli.js.map +1 -1
  226. package/dist/core/agent-session-runtime.d.ts +13 -0
  227. package/dist/core/agent-session-runtime.d.ts.map +1 -1
  228. package/dist/core/agent-session-runtime.js +75 -11
  229. package/dist/core/agent-session-runtime.js.map +1 -1
  230. package/dist/core/agent-session-services.d.ts +1 -0
  231. package/dist/core/agent-session-services.d.ts.map +1 -1
  232. package/dist/core/agent-session-services.js +1 -0
  233. package/dist/core/agent-session-services.js.map +1 -1
  234. package/dist/core/agent-session.d.ts +40 -6
  235. package/dist/core/agent-session.d.ts.map +1 -1
  236. package/dist/core/agent-session.js +309 -76
  237. package/dist/core/agent-session.js.map +1 -1
  238. package/dist/core/browser/runtime.d.ts +2 -0
  239. package/dist/core/browser/runtime.d.ts.map +1 -1
  240. package/dist/core/browser/runtime.js +80 -45
  241. package/dist/core/browser/runtime.js.map +1 -1
  242. package/dist/core/browser/setup.d.ts.map +1 -1
  243. package/dist/core/browser/setup.js +12 -1
  244. package/dist/core/browser/setup.js.map +1 -1
  245. package/dist/core/computer-use/adapter.d.ts +28 -0
  246. package/dist/core/computer-use/adapter.d.ts.map +1 -0
  247. package/dist/core/computer-use/adapter.js +138 -0
  248. package/dist/core/computer-use/adapter.js.map +1 -0
  249. package/dist/core/computer-use/image.d.ts +27 -0
  250. package/dist/core/computer-use/image.d.ts.map +1 -0
  251. package/dist/core/computer-use/image.js +84 -0
  252. package/dist/core/computer-use/image.js.map +1 -0
  253. package/dist/core/computer-use/lease.d.ts +18 -0
  254. package/dist/core/computer-use/lease.d.ts.map +1 -0
  255. package/dist/core/computer-use/lease.js +129 -0
  256. package/dist/core/computer-use/lease.js.map +1 -0
  257. package/dist/core/computer-use/macos-runtime.d.ts +14 -0
  258. package/dist/core/computer-use/macos-runtime.d.ts.map +1 -0
  259. package/dist/core/computer-use/macos-runtime.js +148 -0
  260. package/dist/core/computer-use/macos-runtime.js.map +1 -0
  261. package/dist/core/computer-use/policy.d.ts +19 -0
  262. package/dist/core/computer-use/policy.d.ts.map +1 -0
  263. package/dist/core/computer-use/policy.js +67 -0
  264. package/dist/core/computer-use/policy.js.map +1 -0
  265. package/dist/core/computer-use/release.generated.d.ts +31 -0
  266. package/dist/core/computer-use/release.generated.d.ts.map +1 -0
  267. package/dist/core/computer-use/release.generated.js +36 -0
  268. package/dist/core/computer-use/release.generated.js.map +1 -0
  269. package/dist/core/computer-use/runtime.d.ts +13 -0
  270. package/dist/core/computer-use/runtime.d.ts.map +1 -0
  271. package/dist/core/computer-use/runtime.js +158 -0
  272. package/dist/core/computer-use/runtime.js.map +1 -0
  273. package/dist/core/computer-use/schemas.d.ts +100 -0
  274. package/dist/core/computer-use/schemas.d.ts.map +1 -0
  275. package/dist/core/computer-use/schemas.js +96 -0
  276. package/dist/core/computer-use/schemas.js.map +1 -0
  277. package/dist/core/computer-use/windows-desktop.d.ts +3 -0
  278. package/dist/core/computer-use/windows-desktop.d.ts.map +1 -0
  279. package/dist/core/computer-use/windows-desktop.js +48 -0
  280. package/dist/core/computer-use/windows-desktop.js.map +1 -0
  281. package/dist/core/computer-use/workflow.d.ts +38 -0
  282. package/dist/core/computer-use/workflow.d.ts.map +1 -0
  283. package/dist/core/computer-use/workflow.js +900 -0
  284. package/dist/core/computer-use/workflow.js.map +1 -0
  285. package/dist/core/cron/jobs.d.ts +26 -8
  286. package/dist/core/cron/jobs.d.ts.map +1 -1
  287. package/dist/core/cron/jobs.js +357 -232
  288. package/dist/core/cron/jobs.js.map +1 -1
  289. package/dist/core/cron/origin-context.d.ts +1 -0
  290. package/dist/core/cron/origin-context.d.ts.map +1 -1
  291. package/dist/core/cron/origin-context.js.map +1 -1
  292. package/dist/core/cron/scheduler.d.ts +22 -17
  293. package/dist/core/cron/scheduler.d.ts.map +1 -1
  294. package/dist/core/cron/scheduler.js +153 -73
  295. package/dist/core/cron/scheduler.js.map +1 -1
  296. package/dist/core/extensions/index.d.ts +1 -1
  297. package/dist/core/extensions/index.d.ts.map +1 -1
  298. package/dist/core/extensions/index.js.map +1 -1
  299. package/dist/core/extensions/loader.d.ts.map +1 -1
  300. package/dist/core/extensions/loader.js +4 -0
  301. package/dist/core/extensions/loader.js.map +1 -1
  302. package/dist/core/extensions/runner.d.ts +1 -0
  303. package/dist/core/extensions/runner.d.ts.map +1 -1
  304. package/dist/core/extensions/runner.js +8 -0
  305. package/dist/core/extensions/runner.js.map +1 -1
  306. package/dist/core/extensions/types.d.ts +8 -0
  307. package/dist/core/extensions/types.d.ts.map +1 -1
  308. package/dist/core/extensions/types.js.map +1 -1
  309. package/dist/core/footer-data-provider.d.ts +4 -0
  310. package/dist/core/footer-data-provider.d.ts.map +1 -1
  311. package/dist/core/footer-data-provider.js +22 -1
  312. package/dist/core/footer-data-provider.js.map +1 -1
  313. package/dist/core/large-subagent-launch.d.ts +1 -1
  314. package/dist/core/large-subagent-launch.d.ts.map +1 -1
  315. package/dist/core/large-subagent-launch.js +7 -7
  316. package/dist/core/large-subagent-launch.js.map +1 -1
  317. package/dist/core/model-registry.d.ts +2 -0
  318. package/dist/core/model-registry.d.ts.map +1 -1
  319. package/dist/core/model-registry.js +5 -0
  320. package/dist/core/model-registry.js.map +1 -1
  321. package/dist/core/model-runtime.d.ts +4 -1
  322. package/dist/core/model-runtime.d.ts.map +1 -1
  323. package/dist/core/model-runtime.js +40 -4
  324. package/dist/core/model-runtime.js.map +1 -1
  325. package/dist/core/package-manager.d.ts.map +1 -1
  326. package/dist/core/package-manager.js.map +1 -1
  327. package/dist/core/permissions.d.ts +4 -4
  328. package/dist/core/permissions.d.ts.map +1 -1
  329. package/dist/core/permissions.js +25 -38
  330. package/dist/core/permissions.js.map +1 -1
  331. package/dist/core/plan-mode.d.ts +5 -13
  332. package/dist/core/plan-mode.d.ts.map +1 -1
  333. package/dist/core/plan-mode.js +135 -116
  334. package/dist/core/plan-mode.js.map +1 -1
  335. package/dist/core/project-trust.d.ts.map +1 -1
  336. package/dist/core/project-trust.js +1 -1
  337. package/dist/core/project-trust.js.map +1 -1
  338. package/dist/core/prompt-resource-bridge.d.ts +12 -0
  339. package/dist/core/prompt-resource-bridge.d.ts.map +1 -0
  340. package/dist/core/prompt-resource-bridge.js +9 -0
  341. package/dist/core/prompt-resource-bridge.js.map +1 -0
  342. package/dist/core/protected-targets.d.ts +6 -0
  343. package/dist/core/protected-targets.d.ts.map +1 -0
  344. package/dist/core/protected-targets.js +45 -0
  345. package/dist/core/protected-targets.js.map +1 -0
  346. package/dist/core/resource-loader.d.ts.map +1 -1
  347. package/dist/core/resource-loader.js +7 -0
  348. package/dist/core/resource-loader.js.map +1 -1
  349. package/dist/core/rollback.d.ts +19 -3
  350. package/dist/core/rollback.d.ts.map +1 -1
  351. package/dist/core/rollback.js +172 -56
  352. package/dist/core/rollback.js.map +1 -1
  353. package/dist/core/runtime-credentials.d.ts +3 -0
  354. package/dist/core/runtime-credentials.d.ts.map +1 -1
  355. package/dist/core/runtime-credentials.js +14 -1
  356. package/dist/core/runtime-credentials.js.map +1 -1
  357. package/dist/core/sdk.d.ts +3 -0
  358. package/dist/core/sdk.d.ts.map +1 -1
  359. package/dist/core/sdk.js +1 -0
  360. package/dist/core/sdk.js.map +1 -1
  361. package/dist/core/session-manager.d.ts +6 -0
  362. package/dist/core/session-manager.d.ts.map +1 -1
  363. package/dist/core/session-manager.js +95 -32
  364. package/dist/core/session-manager.js.map +1 -1
  365. package/dist/core/session-ownership.d.ts.map +1 -1
  366. package/dist/core/session-ownership.js +8 -3
  367. package/dist/core/session-ownership.js.map +1 -1
  368. package/dist/core/session-retention.d.ts.map +1 -1
  369. package/dist/core/session-retention.js +18 -7
  370. package/dist/core/session-retention.js.map +1 -1
  371. package/dist/core/session-startup-settings.d.ts +10 -0
  372. package/dist/core/session-startup-settings.d.ts.map +1 -0
  373. package/dist/core/session-startup-settings.js +70 -0
  374. package/dist/core/session-startup-settings.js.map +1 -0
  375. package/dist/core/settings-manager.d.ts +6 -0
  376. package/dist/core/settings-manager.d.ts.map +1 -1
  377. package/dist/core/settings-manager.js +19 -0
  378. package/dist/core/settings-manager.js.map +1 -1
  379. package/dist/core/subagent-event-transport.d.ts +3 -0
  380. package/dist/core/subagent-event-transport.d.ts.map +1 -0
  381. package/dist/core/subagent-event-transport.js +61 -0
  382. package/dist/core/subagent-event-transport.js.map +1 -0
  383. package/dist/core/subscriptions.d.ts +16 -7
  384. package/dist/core/subscriptions.d.ts.map +1 -1
  385. package/dist/core/subscriptions.js +96 -55
  386. package/dist/core/subscriptions.js.map +1 -1
  387. package/dist/core/trust-manager.d.ts +2 -1
  388. package/dist/core/trust-manager.d.ts.map +1 -1
  389. package/dist/core/trust-manager.js +6 -1
  390. package/dist/core/trust-manager.js.map +1 -1
  391. package/dist/core/update-check.d.ts.map +1 -1
  392. package/dist/core/update-check.js.map +1 -1
  393. package/dist/core/usage-adapters/kimi-coding.d.ts +2 -2
  394. package/dist/core/usage-adapters/kimi-coding.d.ts.map +1 -1
  395. package/dist/core/usage-adapters/kimi-coding.js +2 -2
  396. package/dist/core/usage-adapters/kimi-coding.js.map +1 -1
  397. package/dist/core/usage-adapters/openai-codex.d.ts +3 -2
  398. package/dist/core/usage-adapters/openai-codex.d.ts.map +1 -1
  399. package/dist/core/usage-adapters/openai-codex.js +3 -3
  400. package/dist/core/usage-adapters/openai-codex.js.map +1 -1
  401. package/dist/core/usage-adapters/xai.d.ts +2 -2
  402. package/dist/core/usage-adapters/xai.d.ts.map +1 -1
  403. package/dist/core/usage-adapters/xai.js +3 -3
  404. package/dist/core/usage-adapters/xai.js.map +1 -1
  405. package/dist/core/usage-adapters/zai.d.ts +2 -2
  406. package/dist/core/usage-adapters/zai.d.ts.map +1 -1
  407. package/dist/core/usage-adapters/zai.js +2 -2
  408. package/dist/core/usage-adapters/zai.js.map +1 -1
  409. package/dist/core/usage-service.d.ts +9 -2
  410. package/dist/core/usage-service.d.ts.map +1 -1
  411. package/dist/core/usage-service.js +95 -50
  412. package/dist/core/usage-service.js.map +1 -1
  413. package/dist/gateway/adapters/discord.d.ts.map +1 -1
  414. package/dist/gateway/adapters/discord.js +2 -2
  415. package/dist/gateway/adapters/discord.js.map +1 -1
  416. package/dist/gateway/agent-bridge.d.ts +9 -1
  417. package/dist/gateway/agent-bridge.d.ts.map +1 -1
  418. package/dist/gateway/agent-bridge.js +91 -37
  419. package/dist/gateway/agent-bridge.js.map +1 -1
  420. package/dist/gateway/approval.d.ts.map +1 -1
  421. package/dist/gateway/approval.js +3 -3
  422. package/dist/gateway/approval.js.map +1 -1
  423. package/dist/gateway/authz.d.ts +4 -4
  424. package/dist/gateway/authz.d.ts.map +1 -1
  425. package/dist/gateway/authz.js +8 -12
  426. package/dist/gateway/authz.js.map +1 -1
  427. package/dist/gateway/buttons.d.ts +8 -1
  428. package/dist/gateway/buttons.d.ts.map +1 -1
  429. package/dist/gateway/buttons.js +76 -18
  430. package/dist/gateway/buttons.js.map +1 -1
  431. package/dist/gateway/commands.d.ts +1 -0
  432. package/dist/gateway/commands.d.ts.map +1 -1
  433. package/dist/gateway/commands.js +12 -10
  434. package/dist/gateway/commands.js.map +1 -1
  435. package/dist/gateway/cron.d.ts +12 -11
  436. package/dist/gateway/cron.d.ts.map +1 -1
  437. package/dist/gateway/cron.js +85 -62
  438. package/dist/gateway/cron.js.map +1 -1
  439. package/dist/gateway/index.d.ts.map +1 -1
  440. package/dist/gateway/index.js +5 -4
  441. package/dist/gateway/index.js.map +1 -1
  442. package/dist/gateway/mobile-commands.d.ts +1 -0
  443. package/dist/gateway/mobile-commands.d.ts.map +1 -1
  444. package/dist/gateway/mobile-commands.js +64 -22
  445. package/dist/gateway/mobile-commands.js.map +1 -1
  446. package/dist/gateway/presenter.d.ts +12 -2
  447. package/dist/gateway/presenter.d.ts.map +1 -1
  448. package/dist/gateway/presenter.js +74 -39
  449. package/dist/gateway/presenter.js.map +1 -1
  450. package/dist/gateway/router.d.ts +2 -2
  451. package/dist/gateway/router.d.ts.map +1 -1
  452. package/dist/gateway/router.js +22 -9
  453. package/dist/gateway/router.js.map +1 -1
  454. package/dist/gateway/service.d.ts +2 -0
  455. package/dist/gateway/service.d.ts.map +1 -1
  456. package/dist/gateway/service.js +153 -0
  457. package/dist/gateway/service.js.map +1 -1
  458. package/dist/gateway/setup.d.ts.map +1 -1
  459. package/dist/gateway/setup.js +6 -4
  460. package/dist/gateway/setup.js.map +1 -1
  461. package/dist/main.d.ts.map +1 -1
  462. package/dist/main.js +86 -33
  463. package/dist/main.js.map +1 -1
  464. package/dist/modes/interactive/components/assistant-message.d.ts.map +1 -1
  465. package/dist/modes/interactive/components/assistant-message.js +6 -4
  466. package/dist/modes/interactive/components/assistant-message.js.map +1 -1
  467. package/dist/modes/interactive/components/copyable-text.d.ts.map +1 -1
  468. package/dist/modes/interactive/components/copyable-text.js +3 -2
  469. package/dist/modes/interactive/components/copyable-text.js.map +1 -1
  470. package/dist/modes/interactive/components/extension-editor.d.ts.map +1 -1
  471. package/dist/modes/interactive/components/extension-editor.js +1 -1
  472. package/dist/modes/interactive/components/extension-editor.js.map +1 -1
  473. package/dist/modes/interactive/components/settings-selector.d.ts +4 -0
  474. package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
  475. package/dist/modes/interactive/components/settings-selector.js +20 -0
  476. package/dist/modes/interactive/components/settings-selector.js.map +1 -1
  477. package/dist/modes/interactive/interactive-mode.d.ts +2 -2
  478. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  479. package/dist/modes/interactive/interactive-mode.js +104 -109
  480. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  481. package/dist/modes/interactive/smooth-streaming.d.ts.map +1 -1
  482. package/dist/modes/interactive/smooth-streaming.js.map +1 -1
  483. package/dist/modes/print-mode.d.ts.map +1 -1
  484. package/dist/modes/print-mode.js +9 -1
  485. package/dist/modes/print-mode.js.map +1 -1
  486. package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
  487. package/dist/modes/rpc/rpc-mode.js +2 -1
  488. package/dist/modes/rpc/rpc-mode.js.map +1 -1
  489. package/dist/node-runtime/adapter-247RTYLS.js +16 -0
  490. package/dist/node-runtime/agent-session-services-KDMSPQDY.js +53 -0
  491. package/dist/node-runtime/{brave-UWDA3I22.js → brave-2AFFAXNN.js} +1 -1
  492. package/dist/node-runtime/{builtin-extensions-ZLAX7TUH.js → builtin-extensions-OX6KELNX.js} +9 -7
  493. package/dist/node-runtime/{chunk-QH6YL7VK.js → chunk-252ZVPPF.js} +3 -3
  494. package/dist/node-runtime/{chunk-PCEW76PM.js → chunk-2OIPYKLZ.js} +6 -6
  495. package/dist/node-runtime/{chunk-XBWPBZBN.js → chunk-2SWW7KMW.js} +1 -1
  496. package/dist/node-runtime/{chunk-UQUCFAJ3.js → chunk-2VIW3IMF.js} +40 -7
  497. package/dist/node-runtime/{chunk-UOEDI7RP.js → chunk-4KNKQGHM.js} +2 -2
  498. package/dist/node-runtime/{chunk-FQMM2EZ2.js → chunk-64XTQNLA.js} +29 -7
  499. package/dist/node-runtime/{chunk-NRKGMJYU.js → chunk-6O3IW3IA.js} +2 -2
  500. package/dist/node-runtime/{chunk-5ZQXRPMC.js → chunk-6ZZHGUSA.js} +2 -2
  501. package/dist/node-runtime/chunk-A2WO6WIN.js +1197 -0
  502. package/dist/node-runtime/{chunk-ZXSGTGJ6.js → chunk-APVM5NEU.js} +169 -148
  503. package/dist/node-runtime/{chunk-RC7DMV45.js → chunk-AYHH7YSD.js} +205 -144
  504. package/dist/node-runtime/{chunk-LWYIVUGV.js → chunk-B2IBAXNX.js} +48 -31
  505. package/dist/node-runtime/{chunk-M3LZLQW2.js → chunk-BDRGN3L2.js} +1 -0
  506. package/dist/node-runtime/{chunk-GJ2RDBRL.js → chunk-BYC6RKCN.js} +4 -2
  507. package/dist/node-runtime/{chunk-KWIYUUZK.js → chunk-C3P6Q3B2.js} +469 -283
  508. package/dist/node-runtime/{chunk-YCUZEGJG.js → chunk-DQSCFU7R.js} +17 -8
  509. package/dist/node-runtime/chunk-EBLAZVSA.js +4170 -0
  510. package/dist/node-runtime/{chunk-2KIPT4HJ.js → chunk-EPR2F3GU.js} +68 -20
  511. package/dist/node-runtime/{chunk-CSFI6YXL.js → chunk-ES6PBSIE.js} +1 -1
  512. package/dist/node-runtime/{chunk-IF24A3FH.js → chunk-EVM653DD.js} +4 -4
  513. package/dist/node-runtime/{chunk-HTFRRDSF.js → chunk-F2SMQ6ES.js} +3 -2
  514. package/dist/node-runtime/chunk-F2V2F4ZG.js +114 -0
  515. package/dist/node-runtime/chunk-FE3WZI7F.js +290 -0
  516. package/dist/node-runtime/{chunk-GYIXXQAO.js → chunk-FIRA54AC.js} +2 -5
  517. package/dist/node-runtime/{chunk-6VYZ5UFP.js → chunk-FLGEEH27.js} +1 -1
  518. package/dist/node-runtime/{chunk-5EFIU3OM.js → chunk-FTKEZL27.js} +1 -1
  519. package/dist/node-runtime/chunk-FY4A63RK.js +73 -0
  520. package/dist/node-runtime/chunk-FYIFPFXE.js +98 -0
  521. package/dist/node-runtime/{chunk-HMBGROQK.js → chunk-GLDXBBL6.js} +3 -3
  522. package/dist/node-runtime/{chunk-KWA4OC2J.js → chunk-H6YBCWKG.js} +1 -1
  523. package/dist/node-runtime/{chunk-2MI5OPMN.js → chunk-HNNHHJAB.js} +68 -50
  524. package/dist/node-runtime/{chunk-6XL67VVY.js → chunk-HUD2RFJW.js} +17 -2
  525. package/dist/node-runtime/{chunk-I54LGHWM.js → chunk-I2H5QMWW.js} +3 -3
  526. package/dist/node-runtime/chunk-IAZSK7KK.js +108 -0
  527. package/dist/node-runtime/{chunk-2HHLJWGD.js → chunk-IHHTWSXN.js} +9 -9
  528. package/dist/node-runtime/{chunk-DAPBPCBP.js → chunk-IPP5BIV5.js} +25 -3
  529. package/dist/node-runtime/{chunk-QFWG2RVL.js → chunk-IXG6F4NT.js} +11 -0
  530. package/dist/node-runtime/{chunk-RDDAZOMU.js → chunk-JL4HYQXK.js} +1 -1
  531. package/dist/node-runtime/{chunk-CDVHZOOK.js → chunk-JQYNHAKX.js} +1 -1
  532. package/dist/node-runtime/{chunk-WF7PGWRZ.js → chunk-JWEVT363.js} +37 -28
  533. package/dist/node-runtime/{chunk-2HMIRK7W.js → chunk-LHV3V67B.js} +5 -5
  534. package/dist/node-runtime/{chunk-UAEOTO52.js → chunk-MNQXDFPV.js} +6 -2
  535. package/dist/node-runtime/{chunk-IJIFHRTB.js → chunk-MQPKUHRN.js} +165 -85
  536. package/dist/node-runtime/{chunk-MPKSOJBT.js → chunk-NHATCSOI.js} +4 -7
  537. package/dist/node-runtime/{chunk-RMQZU2YU.js → chunk-NNNR3QIY.js} +1 -1
  538. package/dist/node-runtime/{chunk-RWTKOC3B.js → chunk-QBTJG3UM.js} +1 -1
  539. package/dist/node-runtime/{chunk-E4D3IGP2.js → chunk-QNVMKNNN.js} +20 -17
  540. package/dist/node-runtime/{chunk-GS42T6MX.js → chunk-QW3AAHWN.js} +1 -1
  541. package/dist/node-runtime/{chunk-7S3T6YEA.js → chunk-R4WSB2MQ.js} +5 -5
  542. package/dist/node-runtime/{chunk-B4HP6ZWM.js → chunk-RHCGYWO7.js} +1 -1
  543. package/dist/node-runtime/{chunk-3XPLBUEM.js → chunk-RLGY2QIL.js} +49 -59
  544. package/dist/node-runtime/{chunk-KKUTQQV7.js → chunk-RYRGL7P4.js} +1 -1
  545. package/dist/node-runtime/{chunk-AD6VXAO7.js → chunk-TCT6PCUR.js} +47 -115
  546. package/dist/node-runtime/chunk-U5F4IC7R.js +53 -0
  547. package/dist/node-runtime/{chunk-OCVIXVTZ.js → chunk-UBWW2PID.js} +13 -2
  548. package/dist/node-runtime/{chunk-HFVZUPFJ.js → chunk-UNUZICC4.js} +3 -3
  549. package/dist/node-runtime/{chunk-LQP3RB67.js → chunk-UYRKUKFE.js} +1 -1
  550. package/dist/node-runtime/{chunk-DSIKTUPW.js → chunk-VSUEAI7O.js} +2993 -3820
  551. package/dist/node-runtime/{chunk-NAY6UUQZ.js → chunk-WDIVLMOH.js} +1 -1
  552. package/dist/node-runtime/{chunk-E24EO34J.js → chunk-WPXUR3HE.js} +1 -1
  553. package/dist/node-runtime/{chunk-SLVOAQOY.js → chunk-WXYNALHD.js} +113 -1
  554. package/dist/node-runtime/{chunk-KJ6DWS3K.js → chunk-XEOCUEUJ.js} +121 -60
  555. package/dist/node-runtime/chunk-YD3IZAZ7.js +47 -0
  556. package/dist/node-runtime/chunk-YSB6URMT.js +41 -0
  557. package/dist/node-runtime/{chunk-VQFSUJJG.js → chunk-ZDJUR45D.js} +430 -129
  558. package/dist/node-runtime/{chunk-YDO2F2IA.js → chunk-ZEVFBFNF.js} +95 -142
  559. package/dist/node-runtime/chunk-ZIQUS5QO.js +180 -0
  560. package/dist/node-runtime/cli-runtime.js +4 -4
  561. package/dist/node-runtime/{command-6WDOYKS6.js → command-3HMSY6W2.js} +5 -5
  562. package/dist/node-runtime/{commands-NZLSOHPE.js → commands-D6A6H4TS.js} +11 -16
  563. package/dist/node-runtime/commands-OCSSEEWJ.js +37 -0
  564. package/dist/node-runtime/{config-QDD5PUE2.js → config-CU7M7BTK.js} +1 -1
  565. package/dist/node-runtime/{config-D4QUPAHX.js → config-DS7XLMEM.js} +2 -2
  566. package/dist/node-runtime/{direct-tool-executor-77GW4F5P.js → direct-tool-executor-2QJXVQD2.js} +8 -10
  567. package/dist/node-runtime/{exa-LL64QZR2.js → exa-6VBZNPGE.js} +1 -1
  568. package/dist/node-runtime/{export-html-VM4J2MNR.js → export-html-BRWF5AHI.js} +4 -4
  569. package/dist/node-runtime/{extension-input-E7BJZ35H.js → extension-input-VBBMX7YV.js} +5 -5
  570. package/dist/node-runtime/{extension-selector-WU42XDTU.js → extension-selector-T5AOG5XB.js} +5 -5
  571. package/dist/node-runtime/{extract-EQJE7FZZ.js → extract-BFX2N35A.js} +3 -3
  572. package/dist/node-runtime/{gateway-INAYBF4Q.js → gateway-6623C2U3.js} +61 -53
  573. package/dist/node-runtime/{gemini-search-35OCRFLN.js → gemini-search-C66QHDT6.js} +2 -2
  574. package/dist/node-runtime/{gemini-url-context-UQY3PHHW.js → gemini-url-context-T7DEK73R.js} +3 -3
  575. package/dist/node-runtime/{github-extract-F64RZOEA.js → github-extract-HOGE3D6F.js} +107 -38
  576. package/dist/node-runtime/{goal-NJEE5CTU.js → goal-AIHEDUYA.js} +5 -5
  577. package/dist/node-runtime/index.js +54 -48
  578. package/dist/node-runtime/{init-HS6NQXSK.js → init-JBQJIPYI.js} +3 -4
  579. package/dist/node-runtime/{install-cli-KL4UDDAD.js → install-cli-INGHIVBY.js} +30 -25
  580. package/dist/node-runtime/interactive-mode-FM5DNUSW.js +74 -0
  581. package/dist/node-runtime/{interactive-view-NGFAMHPW.js → interactive-view-K33PM4OS.js} +8 -8
  582. package/dist/node-runtime/{lsp-manager-3ASUSO4T.js → lsp-manager-S554V5HR.js} +240 -155
  583. package/dist/node-runtime/{lunr-browser-IR7TL3J7.js → lunr-browser-H4FDOR3C.js} +7 -7
  584. package/dist/node-runtime/lunr-computer-use-VDP2QNRQ.js +158 -0
  585. package/dist/node-runtime/{lunr-cron-LWIZJM2N.js → lunr-cron-LKVA5CZZ.js} +94 -79
  586. package/dist/node-runtime/main.js +42 -39
  587. package/dist/node-runtime/{mobile-commands-J7OJEKFO.js → mobile-commands-XT3NQXLD.js} +13 -12
  588. package/dist/node-runtime/{model-runtime-OO5HFLWE.js → model-runtime-MZ2JMDV4.js} +4 -4
  589. package/dist/node-runtime/{openai-search-B3MSNCQA.js → openai-search-K72LJDYN.js} +1 -1
  590. package/dist/node-runtime/{package-manager-cli-VYZM5WHN.js → package-manager-cli-CYM262SI.js} +20 -19
  591. package/dist/node-runtime/{parallel-AI2MNSCU.js → parallel-X724NCNU.js} +1 -1
  592. package/dist/node-runtime/{perplexity-QVJW3I35.js → perplexity-RDHQHVMK.js} +2 -2
  593. package/dist/node-runtime/{pi-intercom-QM53RLTS.js → pi-intercom-NHHEPBMI.js} +2 -2
  594. package/dist/node-runtime/{pi-mcp-adapter-5UKBZP44.js → pi-mcp-adapter-PP3GQJQ2.js} +98 -94
  595. package/dist/node-runtime/{pi-ollama-cloud-2F3Y2QNM.js → pi-ollama-cloud-4MNWIMFN.js} +11 -24
  596. package/dist/node-runtime/{pi-prompt-template-model-QWTCGLJU.js → pi-prompt-template-model-FTGELLS5.js} +32 -36
  597. package/dist/node-runtime/{pi-subagents-DNY7EAIG.js → pi-subagents-LT3CTO4E.js} +114 -116
  598. package/dist/node-runtime/{pi-web-access-WTGMNZ32.js → pi-web-access-Z3LP246C.js} +144 -108
  599. package/dist/node-runtime/{print-mode-XSFM26EL.js → print-mode-2XHN5SUA.js} +4 -3
  600. package/dist/node-runtime/{process-registry-4FAKZQOL.js → process-registry-Q4QWIU33.js} +3 -3
  601. package/dist/node-runtime/{proxy-modes-LGEUYD7R.js → proxy-modes-VEGC6QG5.js} +9 -13
  602. package/dist/node-runtime/rpc-entry.js +42 -39
  603. package/dist/node-runtime/{rpc-mode-O3XV4SID.js → rpc-mode-32DHJPEJ.js} +4 -4
  604. package/dist/node-runtime/{runtime-4VA6JKNF.js → runtime-EDUUGAQD.js} +56 -46
  605. package/dist/node-runtime/runtime-UGXM4NPQ.js +21 -0
  606. package/dist/node-runtime/{runtime-bridges-VRDDR73P.js → runtime-bridges-DNKMNJCF.js} +8 -7
  607. package/dist/node-runtime/{service-MDQIPQ26.js → service-IHLGFLBT.js} +6 -4
  608. package/dist/node-runtime/{session-handoff-GWARVEWT.js → session-handoff-LNSPDTKY.js} +4 -4
  609. package/dist/node-runtime/{session-manager-JB5J6XBN.js → session-manager-YIFIAVGC.js} +3 -3
  610. package/dist/node-runtime/{session-selector-GIM4DHQ2.js → session-selector-I73U3EIO.js} +7 -7
  611. package/dist/node-runtime/{settings-manager-J4SPQPDJ.js → settings-manager-P2TKGYTR.js} +6 -5
  612. package/dist/node-runtime/{setup-JBKOLJ6F.js → setup-H7CCELIL.js} +15 -1
  613. package/dist/node-runtime/{setup-CQ2NLVK5.js → setup-OLQ4GXWS.js} +22 -21
  614. package/dist/node-runtime/{src-IVPNZ2BX.js → src-6RV4PXKJ.js} +64 -36
  615. package/dist/node-runtime/{subagent-executor-KZZQGAKV.js → subagent-executor-Q5F7DBVM.js} +141 -62
  616. package/dist/node-runtime/{tavily-WEZFVFP7.js → tavily-KZBFYQB6.js} +1 -1
  617. package/dist/node-runtime/{theme-UOO5RVFN.js → theme-YLVZKKZD.js} +2 -2
  618. package/dist/node-runtime/{trust-manager-MMISNCYO.js → trust-manager-ZCU76D23.js} +2 -2
  619. package/dist/node-runtime/{update-cli-GTFJC7XK.js → update-cli-F3XXJANQ.js} +7 -6
  620. package/dist/node-runtime/{usage-service-LFB2SWYV.js → usage-service-CPAGBED5.js} +1 -1
  621. package/dist/node-runtime/{video-extract-OOZHR7SU.js → video-extract-UPKYIBW3.js} +3 -3
  622. package/dist/node-runtime/workflow-ICDI4N3J.js +767 -0
  623. package/dist/node-runtime/{youtube-extract-FNPAUNHU.js → youtube-extract-77NT7FWH.js} +4 -4
  624. package/dist/utils/clipboard-image.d.ts.map +1 -1
  625. package/dist/utils/clipboard-image.js.map +1 -1
  626. package/dist/utils/exif-orientation.d.ts.map +1 -1
  627. package/dist/utils/exif-orientation.js +25 -10
  628. package/dist/utils/exif-orientation.js.map +1 -1
  629. package/dist/utils/image-resize-core.d.ts +2 -0
  630. package/dist/utils/image-resize-core.d.ts.map +1 -1
  631. package/dist/utils/image-resize-core.js +12 -0
  632. package/dist/utils/image-resize-core.js.map +1 -1
  633. package/dist/utils/paths.d.ts +4 -0
  634. package/dist/utils/paths.d.ts.map +1 -1
  635. package/dist/utils/paths.js +33 -2
  636. package/dist/utils/paths.js.map +1 -1
  637. package/dist/utils/sanitize-terminal-text.d.ts +7 -0
  638. package/dist/utils/sanitize-terminal-text.d.ts.map +1 -0
  639. package/dist/utils/sanitize-terminal-text.js +67 -0
  640. package/dist/utils/sanitize-terminal-text.js.map +1 -0
  641. package/docs/browser.md +1 -1
  642. package/docs/computer-use.md +362 -0
  643. package/docs/custom-provider.md +3 -3
  644. package/docs/extensions.md +8 -4
  645. package/docs/features.md +22 -12
  646. package/docs/keybindings.md +1 -1
  647. package/docs/models.md +5 -5
  648. package/docs/packages.md +1 -1
  649. package/docs/providers.md +2 -2
  650. package/docs/rpc.md +7 -7
  651. package/docs/security.md +10 -5
  652. package/docs/sessions.md +2 -2
  653. package/docs/skills.md +1 -1
  654. package/docs/terminal-setup.md +7 -7
  655. package/docs/themes.md +1 -1
  656. package/docs/usage.md +1 -1
  657. package/examples/extensions/auto-commit-on-exit.ts +1 -1
  658. package/examples/extensions/bash-spawn-hook.ts +1 -1
  659. package/examples/extensions/built-in-tool-renderer.ts +1 -1
  660. package/examples/extensions/claude-rules.ts +1 -1
  661. package/examples/extensions/commands.ts +1 -1
  662. package/examples/extensions/custom-compaction.ts +1 -1
  663. package/examples/extensions/custom-provider-anthropic/index.ts +3 -3
  664. package/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
  665. package/examples/extensions/custom-provider-anthropic/package.json +1 -1
  666. package/examples/extensions/custom-provider-gitlab-duo/index.ts +1 -1
  667. package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
  668. package/examples/extensions/doom-overlay/index.ts +1 -1
  669. package/examples/extensions/git-merge-and-resolve.ts +2 -2
  670. package/examples/extensions/gondolin/index.ts +1 -1
  671. package/examples/extensions/gondolin/package-lock.json +2 -2
  672. package/examples/extensions/gondolin/package.json +1 -1
  673. package/examples/extensions/hidden-thinking-label.ts +1 -1
  674. package/examples/extensions/inline-bash.ts +2 -2
  675. package/examples/extensions/input-transform-streaming.ts +2 -2
  676. package/examples/extensions/input-transform.ts +2 -2
  677. package/examples/extensions/interactive-shell.ts +1 -1
  678. package/examples/extensions/kimi-deferred-tools.ts +1 -1
  679. package/examples/extensions/mac-system-theme.ts +1 -1
  680. package/examples/extensions/minimal-mode.ts +1 -1
  681. package/examples/extensions/modal-editor.ts +1 -1
  682. package/examples/extensions/model-status.ts +1 -1
  683. package/examples/extensions/notify.ts +3 -3
  684. package/examples/extensions/overlay-qa-tests.ts +1 -1
  685. package/examples/extensions/overlay-test.ts +1 -1
  686. package/examples/extensions/pirate.ts +1 -1
  687. package/examples/extensions/preset.ts +3 -3
  688. package/examples/extensions/project-trust.ts +4 -4
  689. package/examples/extensions/prompt-customizer.ts +1 -1
  690. package/examples/extensions/rainbow-editor.ts +1 -1
  691. package/examples/extensions/rpc-demo.ts +1 -1
  692. package/examples/extensions/sandbox/index.ts +7 -7
  693. package/examples/extensions/sandbox/package-lock.json +2 -2
  694. package/examples/extensions/sandbox/package.json +1 -1
  695. package/examples/extensions/shutdown-command.ts +5 -5
  696. package/examples/extensions/ssh.ts +2 -2
  697. package/examples/extensions/subagent/README.md +3 -3
  698. package/examples/extensions/subagent/index.ts +2 -2
  699. package/examples/extensions/titlebar-spinner.ts +1 -1
  700. package/examples/extensions/tool-override.ts +1 -1
  701. package/examples/extensions/tools.ts +1 -1
  702. package/examples/extensions/with-deps/package-lock.json +2 -2
  703. package/examples/extensions/with-deps/package.json +1 -1
  704. package/examples/extensions/working-indicator.ts +1 -1
  705. package/examples/extensions/working-message-test.ts +1 -1
  706. package/examples/sdk/01-minimal.ts +1 -1
  707. package/examples/sdk/03-custom-prompt.ts +1 -1
  708. package/examples/sdk/04-skills.ts +1 -1
  709. package/examples/sdk/06-extensions.ts +2 -2
  710. package/examples/sdk/08-prompt-templates.ts +1 -1
  711. package/install-lock/package-lock.json +3841 -0
  712. package/install-lock/package.json +18 -0
  713. package/native/computer-use/LICENSE.md +21 -0
  714. package/npm-shrinkwrap.json +3858 -0
  715. package/package.json +15 -9
  716. package/dist/modes/interactive/components/exit-card.d.ts +0 -22
  717. package/dist/modes/interactive/components/exit-card.d.ts.map +0 -1
  718. package/dist/modes/interactive/components/exit-card.js +0 -69
  719. package/dist/modes/interactive/components/exit-card.js.map +0 -1
  720. package/dist/node-runtime/agent-session-services-YXXFCP5J.js +0 -49
  721. package/dist/node-runtime/chunk-4HXHDDCF.js +0 -16
  722. package/dist/node-runtime/chunk-4TLO4PO2.js +0 -3427
  723. package/dist/node-runtime/chunk-AUXVGBO4.js +0 -19
  724. package/dist/node-runtime/chunk-OVX6X377.js +0 -50
  725. package/dist/node-runtime/chunk-QTU6AKNJ.js +0 -773
  726. package/dist/node-runtime/chunk-TORR5XBV.js +0 -356
  727. package/dist/node-runtime/commands-QC6VUZJQ.js +0 -36
  728. package/dist/node-runtime/interactive-mode-Z5M7WYYZ.js +0 -72
  729. package/dist/node-runtime/mcp-auth-flow-QIXHW6QN.js +0 -32
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../../../src/builtin-extensions/narumiruna-pi-goal/src/runtime.ts"],"names":[],"mappings":"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","sourcesContent":["// @ts-nocheck\nimport { randomUUID } from \"node:crypto\";\nimport {\n\tisContextOverflow,\n\ttype AssistantMessage as PiAssistantMessage,\n\ttype Usage,\n} from \"@ashx-j/lunr-ai\";\nimport type { ExtensionAPI } from \"@ashx-j/lunr\";\nimport {\n\tassistantUsageTokens,\n\tcheckpointGoalActiveTime,\n\tformatDuration,\n\tformatTokenCount,\n\tnonNegativeFiniteNumber,\n\tupdateGoalUsage,\n} from \"./accounting.js\";\nimport {\n\ttype ActiveGoal,\n\tclearLegacyPersistedGoal,\n\ttype PendingQueueAction,\n\tserializeGoalState,\n} from \"./persistence.js\";\nimport { buildContinuePrompt, type GoalStatus } from \"./prompts.js\";\nimport { DEFAULT_GOAL_SETTINGS, type GoalSettings } from \"./settings.js\";\nimport { enterGoalAuto, leaveGoalAuto } from \"../../../core/permission-mode-control.js\";\n\nexport type AgentStopReason = \"stop\" | \"length\" | \"toolUse\" | \"error\" | \"aborted\";\n\nexport interface ContinuationTicket {\n\tgoalId: string;\n\titeration: number;\n\tmarker: string;\n\tprompt: string;\n}\n\nexport interface BudgetWrapUp {\n\tgoalId: string;\n\tdelivered: boolean;\n}\n\nexport type GoalRecoveryKind = \"provider_retry\" | \"compaction_retry\";\n\nexport interface GoalRecovery {\n\tgoalId: string;\n\tkind: GoalRecoveryKind;\n}\n\nexport interface AssistantMessageLike {\n\trole: \"assistant\";\n\tstopReason?: AgentStopReason;\n\terrorMessage?: string;\n\tcontent?: PiAssistantMessage[\"content\"];\n\tapi?: PiAssistantMessage[\"api\"];\n\tprovider?: PiAssistantMessage[\"provider\"];\n\tmodel?: string;\n\tusage?: Usage;\n\ttimestamp?: number;\n}\n\nexport interface StatusContext {\n\tcwd: string;\n\tui: {\n\t\tconfirm: (title: string, message: string) => Promise<boolean>;\n\t\tnotify: (message: string, level?: \"info\" | \"warning\" | \"error\") => void;\n\t\tsetStatus: (key: string, value: string | undefined) => void;\n\t};\n\tisIdle?: () => boolean;\n\thasPendingMessages?: () => boolean;\n\tabort?: () => void;\n\tsessionManager?: unknown;\n}\n\nexport interface GoalToolVisibilitySnapshot {\n\tactiveTools: string[];\n\tgoalToolsUnlocked: boolean;\n\tgoalToolsHiddenByPolicy: string[];\n}\n\nexport const STATUS_KEY = \"goal\";\nexport const GOAL_STATE_ENTRY_TYPE = \"goal-state\";\nexport const GOAL_COMPLETE_TOOL = \"goal_complete\";\nexport const GOAL_BLOCKED_TOOL = \"goal_blocked\";\nexport const GOAL_TOOL_NAMES = [GOAL_COMPLETE_TOOL, GOAL_BLOCKED_TOOL] as const;\n\nconst MAX_CANCELLED_CONTINUATION_PROMPTS = 20;\nconst MAX_PENDING_GOAL_PROMPTS = 20;\nconst GOAL_PROMPT_MARKER_PREFIX = \"pi-goal-prompt:\";\nconst CONTINUATION_MARKER_PREFIX = \"pi-goal-continuation:\";\nconst BUDGET_WRAP_UP_MESSAGE_TYPE = \"goal-budget-wrap-up\";\nconst BUDGET_WRAP_UP_PROMPT =\n\t\"The active /goal token budget is exhausted. Stop substantive work and do not call substantive tools. Summarize progress, verified results, remaining work, and blockers concisely. Treat completion as unproven. Do not call goal_complete unless authoritative, requirement-by-requirement evidence already proves every requirement is complete. Weak, indirect, or missing evidence is not enough. Budget exhaustion is not completion.\";\nconst CONTRADICTORY_COMPLETION_PATTERNS = [\n\t/(?<!could\\s)\\bnot\\s+(?:yet\\s+)?(?:complete|completed|done|finished)\\b/i,\n\t/\\bstill\\s+(?:incomplete|failing|failing\\s+tests?|fails?)\\b/i,\n\t/\\btests?\\s+(?:still\\s+)?fail(?:ing)?\\b/i,\n] as const;\nconst USAGE_LIMIT_GOAL_ERROR_PATTERNS = [\n\t/usage[_\\s-]*(?:limit|cap)|chatgpt.{0,32}usage/i,\n\t/quota.{0,32}(?:reached|exceeded|exhausted|depleted)|(?:reached|exceeded|exhausted|depleted).{0,32}quota/i,\n\t/insufficient[_\\s-]*(?:quota|credits?)|out of credits|out of budget|available balance|payment required/i,\n\t/(?:credit|balance).{0,32}(?:low|exhausted|depleted)|billing/i,\n] as const;\nconst NON_RETRYABLE_GOAL_ERROR_RE =\n\t/multi-auth rotation failed|credentials tried|unauthori[sz]ed|invalid api key/i;\n// Pi 0.79 does not export its assistant-error retry classifier. Keep this\n// compatibility mirror aligned with Pi's public retry utility in newer versions.\nconst RETRYABLE_GOAL_ERROR_PATTERNS = [\n\t/overloaded|rate.?limit|too many requests|\\b(?:429|500|502|503|504)\\b|service.?unavailable|server.?error|internal.?error/i,\n\t/provider.?returned.?error|you can retry your request|try your request again|please retry your request/i,\n\t/network.?error|connection.?(?:error|refused|lost)|other side closed|fetch failed|upstream.?connect|reset before headers|socket hang up/i,\n\t/timed? out|timeout|terminated|websocket.?(?:closed|error)|ended without|stream ended before message_stop|http2 request did not get a response|retry delay/i,\n\t/context[_\\s-]*length[_\\s-]*exceeded|input exceeds the context window/i,\n] as const;\n\n// One instance belongs to one extension factory. It owns all mutable session state\n// and the cross-cutting invariants used by command and lifecycle orchestration.\nexport class GoalRuntime {\n\tsettings: GoalSettings = DEFAULT_GOAL_SETTINGS;\n\tactiveGoal?: ActiveGoal;\n\tqueuedGoals: ActiveGoal[] = [];\n\tpendingQueueAction?: PendingQueueAction;\n\tqueueFrozen = false;\n\tcompletionStatusTimer?: NodeJS.Timeout;\n\t// lunr: 30s footer refresh timer so the goal indicator's elapsed minutes tick while active\n\tstatusRefreshTimer?: NodeJS.Timeout;\n\tstatusRefreshCtx?: StatusContext;\n\tcontinuationIntent?: ContinuationTicket;\n\tcontinuationDelivery?: ContinuationTicket;\n\tgoalRecovery?: GoalRecovery;\n\tbudgetWrapUp?: BudgetWrapUp;\n\t/** `null` marks a run that must not be charged to the active goal. */\n\tagentRunGoalId?: string | null;\n\tstaleGoalToolCallsBlocked = false;\n\t/** Once true, goal tools stay in the active set for this runtime (prompt-cache stable). */\n\tgoalToolsUnlocked = false;\n\t/** Exact lazy goal tools this runtime removed and may restore on a mode change. */\n\tgoalToolsHiddenByPolicy = new Set<string>();\n\tpendingGoalPromptMarkers = new Map<string, string>();\n\tcancelledContinuationMarkers = new Set<string>();\n\n\treadonly pi: ExtensionAPI;\n\n\tconstructor(pi: ExtensionAPI) {\n\t\tthis.pi = pi;\n\t}\n\n\tcanRecordGoalUsage() {\n\t\treturn (\n\t\t\tthis.agentRunGoalId !== null &&\n\t\t\t!(\n\t\t\t\tthis.pendingQueueAction?.kind === \"prioritize\" &&\n\t\t\t\tthis.pendingQueueAction.displacedUsageFinalized === true\n\t\t\t)\n\t\t);\n\t}\n\n\thasActiveBudgetWrapUp() {\n\t\treturn (\n\t\t\tthis.activeGoal?.status === \"budget_limited\" &&\n\t\t\tthis.budgetWrapUp?.goalId === this.activeGoal.id &&\n\t\t\tthis.budgetWrapUp.delivered\n\t\t);\n\t}\n\n\thasActiveGoalRecovery() {\n\t\treturn Boolean(this.activeGoal && this.goalRecovery?.goalId === this.activeGoal.id);\n\t}\n\n\trecordGoalUsage(\n\t\tgoal: ActiveGoal,\n\t\tctx: StatusContext,\n\t\tcheckpointActiveTime = goal.status === \"active\",\n\t) {\n\t\tif (!this.canRecordGoalUsage()) return false;\n\t\tupdateGoalUsage(goal, ctx, checkpointActiveTime);\n\t\treturn true;\n\t}\n\n\trequestContinuation(goal: ActiveGoal) {\n\t\tif (this.hasContinuationWorkForGoal(goal.id)) return false;\n\t\tconst marker = continuationMarker(goal);\n\t\tthis.continuationIntent = {\n\t\t\tgoalId: goal.id,\n\t\t\titeration: goal.iteration,\n\t\t\tmarker,\n\t\t\tprompt: buildContinuePrompt(goal, marker),\n\t\t};\n\t\treturn true;\n\t}\n\n\tdispatchContinuationIfSettled(ctx: StatusContext) {\n\t\tconst intent = this.continuationIntent;\n\t\tif (!intent) return false;\n\t\tif (this.activeGoal?.status === \"active\" && !this.goalToolsAvailable()) {\n\t\t\tthis.pauseGoalForUnavailableTools(ctx);\n\t\t\treturn false;\n\t\t}\n\t\tif (\n\t\t\t!this.activeGoal ||\n\t\t\tthis.activeGoal.id !== intent.goalId ||\n\t\t\tthis.activeGoal.status !== \"active\"\n\t\t) {\n\t\t\tthis.continuationIntent = undefined;\n\t\t\treturn false;\n\t\t}\n\t\tif (ctx.isIdle?.() !== true || hasPendingMessages(ctx)) return false;\n\n\t\tthis.continuationIntent = undefined;\n\t\tthis.continuationDelivery = intent;\n\t\ttry {\n\t\t\tthis.pi.sendUserMessage(intent.prompt, { deliverAs: \"followUp\" });\n\t\t\treturn true;\n\t\t} catch (error) {\n\t\t\tif (this.continuationDelivery?.marker === intent.marker) {\n\t\t\t\tthis.continuationDelivery = undefined;\n\t\t\t}\n\t\t\tif (this.activeGoal?.id === intent.goalId && this.activeGoal.status === \"active\") {\n\t\t\t\tthis.continuationIntent = intent;\n\t\t\t}\n\t\t\tctx.ui.notify(`Goal prompt failed: ${formatError(error)}`, \"error\");\n\t\t\treturn false;\n\t\t}\n\t}\n\n\thasContinuationWorkForGoal(goalId: string) {\n\t\treturn (\n\t\t\tthis.continuationIntent?.goalId === goalId || this.continuationDelivery?.goalId === goalId\n\t\t);\n\t}\n\n\tsyncGoalPermissionMode(goal?: ActiveGoal) {\n\t\tif (goal?.status === \"active\") enterGoalAuto();\n\t\telse leaveGoalAuto();\n\t}\n\n\tupdateStatus(ctx: StatusContext, goal: ActiveGoal) {\n\t\tthis.clearCompletionStatusTimer();\n\t\tthis.syncGoalPermissionMode(goal);\n\t\tctx.ui.setStatus(STATUS_KEY, formatStatus(goal));\n\t\t// lunr: refresh the footer every 30s while a goal is active so the elapsed time ticks\n\t\tthis.clearStatusRefreshTimer();\n\t\tif (goal.status === \"active\") {\n\t\t\tthis.statusRefreshCtx = ctx;\n\t\t\tthis.statusRefreshTimer = setInterval(() => {\n\t\t\t\tconst currentGoal = this.activeGoal;\n\t\t\t\tconst refreshCtx = this.statusRefreshCtx;\n\t\t\t\tif (!currentGoal || currentGoal.status !== \"active\" || !refreshCtx) {\n\t\t\t\t\tthis.clearStatusRefreshTimer();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\ttry {\n\t\t\t\t\trefreshCtx.ui.setStatus(STATUS_KEY, formatStatus(currentGoal));\n\t\t\t\t} catch {\n\t\t\t\t\t// The captured ctx may be stale after session replacement or reload.\n\t\t\t\t\tthis.clearStatusRefreshTimer();\n\t\t\t\t}\n\t\t\t}, 30_000);\n\t\t\tthis.statusRefreshTimer.unref?.();\n\t\t}\n\t}\n\n\t// lunr: paired with the status refresh interval started in updateStatus()\n\tclearStatusRefreshTimer() {\n\t\tif (!this.statusRefreshTimer) return;\n\t\tclearInterval(this.statusRefreshTimer);\n\t\tthis.statusRefreshTimer = undefined;\n\t\tthis.statusRefreshCtx = undefined;\n\t}\n\n\tblockStaleGoalToolCalls() {\n\t\tthis.staleGoalToolCallsBlocked = true;\n\t}\n\n\tclearStaleGoalToolCallBlock() {\n\t\tthis.staleGoalToolCallsBlocked = false;\n\t}\n\n\tclearGoalRecovery() {\n\t\tthis.goalRecovery = undefined;\n\t}\n\n\tclearBudgetWrapUp() {\n\t\tthis.budgetWrapUp = undefined;\n\t}\n\n\tkeepBudgetWrapUpMessage(message: unknown) {\n\t\tif (!message || typeof message !== \"object\") return true;\n\t\tconst candidate = message as {\n\t\t\trole?: unknown;\n\t\t\tcustomType?: unknown;\n\t\t\tdetails?: { goalId?: unknown };\n\t\t};\n\t\tif (candidate.role !== \"custom\" || candidate.customType !== BUDGET_WRAP_UP_MESSAGE_TYPE) {\n\t\t\treturn true;\n\t\t}\n\t\treturn (\n\t\t\ttypeof candidate.details?.goalId === \"string\" &&\n\t\t\tcandidate.details.goalId === this.budgetWrapUp?.goalId &&\n\t\t\tcandidate.details.goalId === this.activeGoal?.id\n\t\t);\n\t}\n\n\tqueueBudgetWrapUp(ctx: StatusContext, goal: ActiveGoal) {\n\t\tif (!this.budgetWrapUp || this.budgetWrapUp.goalId !== goal.id) {\n\t\t\tthis.budgetWrapUp = { goalId: goal.id, delivered: false };\n\t\t}\n\t\tif (this.budgetWrapUp.delivered) return true;\n\t\tthis.budgetWrapUp.delivered = true;\n\t\ttry {\n\t\t\tthis.pi.sendMessage(\n\t\t\t\t{\n\t\t\t\t\tcustomType: BUDGET_WRAP_UP_MESSAGE_TYPE,\n\t\t\t\t\tcontent: BUDGET_WRAP_UP_PROMPT,\n\t\t\t\t\tdisplay: true,\n\t\t\t\t\tdetails: { goalId: goal.id },\n\t\t\t\t},\n\t\t\t\t{ deliverAs: \"steer\" },\n\t\t\t);\n\t\t\treturn true;\n\t\t} catch (error) {\n\t\t\tthis.budgetWrapUp.delivered = false;\n\t\t\tctx.ui.notify(`Goal budget wrap-up failed: ${formatError(error)}`, \"error\");\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tlimitActiveGoalForBudget(ctx: StatusContext, sendWrapUp: boolean) {\n\t\tconst goal = this.activeGoal;\n\t\tif (\n\t\t\tgoal?.status !== \"active\" ||\n\t\t\tgoal.tokenBudget === undefined ||\n\t\t\tgoal.tokensUsed < goal.tokenBudget\n\t\t) {\n\t\t\treturn false;\n\t\t}\n\n\t\tthis.cancelContinuationWork();\n\t\tthis.clearGoalRecoveryForGoal(goal.id);\n\t\tthis.clearBudgetWrapUp();\n\t\tthis.activeGoal = transitionGoal(goal, \"budget_limited\");\n\t\tthis.persistGoal(this.activeGoal);\n\t\tthis.updateStatus(ctx, this.activeGoal);\n\t\tctx.ui.notify(`Goal token budget reached: ${formatBudget(this.activeGoal)}`, \"warning\");\n\t\tif (sendWrapUp) this.queueBudgetWrapUp(ctx, this.activeGoal);\n\t\treturn true;\n\t}\n\n\tclearGoalRecoveryForGoal(goalId: string) {\n\t\tif (this.goalRecovery?.goalId === goalId) this.goalRecovery = undefined;\n\t}\n\n\tisPiOwnedCompactionRetry(event: unknown, goalId: string) {\n\t\tconst compaction = event as { reason?: unknown; willRetry?: unknown };\n\t\tif (compaction.willRetry === true) return true;\n\t\treturn (\n\t\t\tthis.goalRecovery?.goalId === goalId &&\n\t\t\tthis.goalRecovery.kind === \"compaction_retry\" &&\n\t\t\t(compaction.reason === undefined || compaction.reason === \"overflow\")\n\t\t);\n\t}\n\n\tclearContinuationTracking() {\n\t\tthis.continuationIntent = undefined;\n\t\tthis.continuationDelivery = undefined;\n\t\tthis.cancelledContinuationMarkers.clear();\n\t}\n\n\tclearPendingGoalPrompts() {\n\t\tthis.pendingGoalPromptMarkers.clear();\n\t}\n\n\tasync sendOwnedGoalPrompt(ctx: StatusContext, goalId: string, prompt: string) {\n\t\tconst pending = this.rememberPendingGoalPrompt(goalId, prompt);\n\t\tconst sent = await sendPrompt(this.pi, ctx, pending.prompt);\n\t\tif (!sent) this.pendingGoalPromptMarkers.delete(pending.marker);\n\t\treturn sent;\n\t}\n\n\tcancelContinuationWork() {\n\t\tif (this.continuationDelivery) {\n\t\t\tthis.rememberCancelledContinuationMarker(this.continuationDelivery.marker);\n\t\t}\n\t\tthis.continuationIntent = undefined;\n\t\tthis.continuationDelivery = undefined;\n\t}\n\n\tconsumeCancelledContinuationPrompt(prompt: string) {\n\t\tconst marker = extractContinuationMarker(prompt);\n\t\treturn marker ? this.cancelledContinuationMarkers.delete(marker) : false;\n\t}\n\n\tconsumeStaleOwnedGoalPrompt(prompt: string) {\n\t\tconst marker = extractGoalPromptMarker(prompt);\n\t\tif (!marker) return false;\n\t\tconst goalId = this.pendingGoalPromptMarkers.get(marker);\n\t\tif (!goalId) return false;\n\t\tif (\n\t\t\t!this.queueFrozen &&\n\t\t\t!this.pendingQueueAction &&\n\t\t\tthis.activeGoal?.id === goalId &&\n\t\t\tthis.activeGoal.status === \"active\"\n\t\t) {\n\t\t\treturn false;\n\t\t}\n\t\tthis.pendingGoalPromptMarkers.delete(marker);\n\t\treturn true;\n\t}\n\n\tmarkContinuationStarted(prompt: string) {\n\t\tconst marker = extractContinuationMarker(prompt);\n\t\tif (!marker) {\n\t\t\t// A user, retry, or another extension started newer work. Cancel both an\n\t\t\t// unsent intent and a delivery that may have lost the non-atomic idle race;\n\t\t\t// the newer work's agent_end will record a fresh intent.\n\t\t\tthis.cancelContinuationWork();\n\t\t\treturn undefined;\n\t\t}\n\t\tif (this.continuationDelivery?.marker === marker) this.continuationDelivery = undefined;\n\t\treturn marker.split(\":\", 1)[0];\n\t}\n\n\tpersistGoal(goal: ActiveGoal) {\n\t\tthis.pi.appendEntry(\n\t\t\tGOAL_STATE_ENTRY_TYPE,\n\t\t\tserializeGoalState(goal, this.queuedGoals, this.pendingQueueAction),\n\t\t);\n\t}\n\n\tclearPersistedGoal(cwd: string) {\n\t\tthis.pi.appendEntry(GOAL_STATE_ENTRY_TYPE, serializeGoalState(undefined, [], undefined));\n\t\tclearLegacyPersistedGoal(cwd);\n\t}\n\n\tclearActiveGoal(ctx: StatusContext) {\n\t\tthis.clearStatusRefreshTimer(); // lunr: stop the footer refresh when the goal is cleared\n\t\tthis.syncGoalPermissionMode(undefined);\n\t\tthis.cancelContinuationWork();\n\t\tthis.clearGoalRecovery();\n\t\tthis.clearBudgetWrapUp();\n\t\tthis.clearStaleGoalToolCallBlock();\n\t\tthis.activeGoal = undefined;\n\t\tthis.queuedGoals = [];\n\t\tthis.pendingQueueAction = undefined;\n\t\tthis.queueFrozen = false;\n\t\tthis.clearPersistedGoal(ctx.cwd);\n\t\tctx.ui.setStatus(STATUS_KEY, undefined);\n\t\t// Do not clear goalToolsUnlocked: after first activation, keep tools visible\n\t\t// for the rest of this extension runtime to avoid repeated goal-tool schema\n\t\t// churn within the same runtime.\n\t}\n\n\tisGoalToolName(name: string) {\n\t\treturn (GOAL_TOOL_NAMES as readonly string[]).includes(name);\n\t}\n\n\tgoalToolsAvailable() {\n\t\tconst active = new Set(this.pi.getActiveTools());\n\t\treturn GOAL_TOOL_NAMES.every((name) => active.has(name));\n\t}\n\n\thideGoalToolsIfLocked() {\n\t\tif (this.goalToolsUnlocked) return;\n\t\tconst active = this.pi.getActiveTools();\n\t\tconst hidden = active.filter((name) => this.isGoalToolName(name));\n\t\tif (hidden.length === 0) return;\n\t\t// lunr: do not mutate the active tool list (Anthropic tools sit at the\n\t\t// front of the cache prefix). Locked goal tools stay registered; the\n\t\t// tool_call gate rejects them until a /goal is activated.\n\t\tfor (const name of hidden) this.goalToolsHiddenByPolicy.add(name);\n\t}\n\n\trestoreGoalToolsHiddenByPolicy() {\n\t\t// lunr: flags only — the tool list is never rewritten at runtime.\n\t\tthis.goalToolsHiddenByPolicy.clear();\n\t}\n\n\tassertGoalToolsAvailable() {\n\t\tif (this.goalToolsAvailable()) return;\n\t\tthrow new Error(\n\t\t\t\"goal_complete and goal_blocked are unavailable; include them in the active tool allowlist or leave the restrictive tool mode first.\",\n\t\t);\n\t}\n\n\tensureGoalToolsVisible() {\n\t\t// lunr: never add/remove tools mid-session. Assert they were already\n\t\t// registered at session start so the wire bytes stay stable.\n\t\tthis.assertGoalToolsAvailable();\n\t}\n\n\tprepareGoalToolsForActivation(ctx: StatusContext) {\n\t\tif (this.settings.toolVisibility === \"after-first-goal\") {\n\t\t\tif (!this.goalToolsAvailable() && ctx.isIdle?.() !== true) {\n\t\t\t\tthrow new Error(\"wait until Pi is idle before revealing the goal tools\");\n\t\t\t}\n\t\t\tthis.revealGoalTools();\n\t\t\treturn;\n\t\t}\n\t\tthis.assertGoalToolsAvailable();\n\t}\n\n\t/** Mark lazy tools permanently desired for this runtime and make them active now. */\n\trevealGoalTools() {\n\t\tconst wasUnlocked = this.goalToolsUnlocked;\n\t\ttry {\n\t\t\tthis.ensureGoalToolsVisible();\n\t\t\tthis.goalToolsUnlocked = true;\n\t\t\tthis.goalToolsHiddenByPolicy.clear();\n\t\t} catch (error) {\n\t\t\tthis.goalToolsUnlocked = wasUnlocked;\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\tsnapshotGoalToolVisibility(): GoalToolVisibilitySnapshot {\n\t\treturn {\n\t\t\tactiveTools: this.pi.getActiveTools(),\n\t\t\tgoalToolsUnlocked: this.goalToolsUnlocked,\n\t\t\tgoalToolsHiddenByPolicy: [...this.goalToolsHiddenByPolicy],\n\t\t};\n\t}\n\n\t/**\n\t * lunr: reactivate a stopped (usage_limited / paused / blocked / budget_limited)\n\t * goal back to active WITHOUT sending a prompt. Shared by the /goal resume\n\t * command and the auto-resume hook (cron wake-up). Returns the reactivated goal\n\t * or undefined if reactivation was rejected (tools unavailable, budget reached).\n\t * Consumes resumeAfter so a single schedule only fires once.\n\t */\n\treactivateGoalForResume(ctx: StatusContext): ActiveGoal | undefined {\n\t\tif (!this.activeGoal) return undefined;\n\t\tif (!isResumableGoalStatus(this.activeGoal.status)) return undefined;\n\t\tif (\n\t\t\tthis.activeGoal.tokenBudget !== undefined &&\n\t\t\tthis.activeGoal.tokensUsed >= this.activeGoal.tokenBudget\n\t\t) {\n\t\t\treturn undefined;\n\t\t}\n\t\ttry {\n\t\t\tthis.prepareGoalToolsForActivation(ctx);\n\t\t} catch (error) {\n\t\t\tctx.ui.notify(`Cannot resume /goal: ${formatError(error)}`, \"error\");\n\t\t\treturn undefined;\n\t\t}\n\t\tthis.cancelContinuationWork();\n\t\tthis.clearGoalRecovery();\n\t\tthis.clearBudgetWrapUp();\n\t\tthis.clearStaleGoalToolCallBlock();\n\t\tconst next = transitionGoal(nextGoalInstance(this.activeGoal), \"active\");\n\t\tthis.activeGoal = { ...next, resumeAfter: undefined };\n\t\tthis.persistGoal(this.activeGoal);\n\t\tthis.updateStatus(ctx, this.activeGoal);\n\t\tif (this.activeGoal.status !== \"active\") return undefined;\n\t\treturn this.activeGoal;\n\t}\n\n\trestoreGoalToolVisibility(snapshot: GoalToolVisibilitySnapshot) {\n\t\t// lunr: restore unlock/hidden flags only — never rewrite the tool list.\n\t\tthis.goalToolsUnlocked = snapshot.goalToolsUnlocked;\n\t\tthis.goalToolsHiddenByPolicy.clear();\n\t\tfor (const name of snapshot.goalToolsHiddenByPolicy) {\n\t\t\tthis.goalToolsHiddenByPolicy.add(name);\n\t\t}\n\t}\n\n\tareGoalToolsLocked() {\n\t\treturn !this.goalToolsUnlocked && this.settings.toolVisibility === \"after-first-goal\";\n\t}\n\n\tpauseGoalForUnavailableTools(ctx: StatusContext, abortTurn = true, recordUsage = true) {\n\t\tconst goal = this.activeGoal;\n\t\tif (goal?.status !== \"active\") return false;\n\t\tif (recordUsage) this.recordGoalUsage(goal, ctx);\n\t\tthis.cancelContinuationWork();\n\t\tthis.clearGoalRecoveryForGoal(goal.id);\n\t\tthis.clearBudgetWrapUp();\n\t\tif (abortTurn) {\n\t\t\tthis.blockStaleGoalToolCalls();\n\t\t\tabortCurrentTurn(ctx);\n\t\t} else {\n\t\t\tthis.clearStaleGoalToolCallBlock();\n\t\t}\n\t\tthis.activeGoal = transitionGoal(goal, \"paused\");\n\t\tthis.persistGoal(this.activeGoal);\n\t\tthis.updateStatus(ctx, this.activeGoal);\n\t\tctx.ui.notify(\n\t\t\t\"Goal tools are unavailable, so the active goal was paused. Restore the tools and run /goal resume.\",\n\t\t\t\"warning\",\n\t\t);\n\t\treturn true;\n\t}\n\n\tshowCompletionStatus(ctx: StatusContext) {\n\t\tthis.clearCompletionStatusTimer();\n\t\tthis.clearStatusRefreshTimer(); // lunr: stop the footer refresh on completion\n\t\tthis.syncGoalPermissionMode(undefined);\n\t\t// lunr: enriched footer status format\n\t\tctx.ui.setStatus(STATUS_KEY, \"goal ✓ complete\");\n\t\tthis.completionStatusTimer = setTimeout(() => {\n\t\t\tthis.completionStatusTimer = undefined;\n\t\t\ttry {\n\t\t\t\tctx.ui.setStatus(STATUS_KEY, undefined);\n\t\t\t} catch {\n\t\t\t\t// The completion status is best-effort; the captured ctx may be stale after\n\t\t\t\t// session replacement or reload before this timer fires.\n\t\t\t}\n\t\t}, 8_000);\n\t}\n\n\tclearCompletionStatusTimer() {\n\t\tif (!this.completionStatusTimer) return;\n\t\tclearTimeout(this.completionStatusTimer);\n\t\tthis.completionStatusTimer = undefined;\n\t}\n\n\tprivate rememberPendingGoalPrompt(goalId: string, prompt: string) {\n\t\tconst marker = randomUUID();\n\t\tthis.pendingGoalPromptMarkers.set(marker, goalId);\n\t\tif (this.pendingGoalPromptMarkers.size > MAX_PENDING_GOAL_PROMPTS) {\n\t\t\tconst oldest = this.pendingGoalPromptMarkers.keys().next().value;\n\t\t\tif (oldest) this.pendingGoalPromptMarkers.delete(oldest);\n\t\t}\n\t\treturn { marker, prompt: `${prompt}\\n\\n<!-- ${GOAL_PROMPT_MARKER_PREFIX}${marker} -->` };\n\t}\n\n\tprivate consumePendingGoalPrompt(prompt: string) {\n\t\tconst marker = extractGoalPromptMarker(prompt);\n\t\tif (!marker) return undefined;\n\t\tconst goalId = this.pendingGoalPromptMarkers.get(marker);\n\t\tthis.pendingGoalPromptMarkers.delete(marker);\n\t\treturn goalId;\n\t}\n\n\tconsumeOwnedGoalPrompt(prompt: string) {\n\t\treturn this.consumePendingGoalPrompt(prompt);\n\t}\n\n\tprivate rememberCancelledContinuationMarker(marker: string) {\n\t\tthis.cancelledContinuationMarkers.add(marker);\n\t\tif (this.cancelledContinuationMarkers.size <= MAX_CANCELLED_CONTINUATION_PROMPTS) return;\n\t\tconst oldest = this.cancelledContinuationMarkers.values().next().value;\n\t\tif (oldest) this.cancelledContinuationMarkers.delete(oldest);\n\t}\n}\n\nexport function createGoal(\n\ttext: string,\n\ttokenBudget: number | undefined,\n\tbaselineTokens: number,\n): ActiveGoal {\n\tconst now = Date.now();\n\treturn {\n\t\tid: randomUUID(),\n\t\ttext,\n\t\tstatus: \"active\",\n\t\tstartedAt: now,\n\t\tupdatedAt: now,\n\t\titeration: 0,\n\t\ttokenBudget,\n\t\ttokensUsed: 0,\n\t\ttimeUsedSeconds: 0,\n\t\tbaselineTokens,\n\t\tactiveStartedAt: now,\n\t};\n}\n\nexport function transitionGoal(goal: ActiveGoal, requestedStatus: GoalStatus): ActiveGoal {\n\tconst now = Date.now();\n\tconst status =\n\t\trequestedStatus === \"active\" &&\n\t\tgoal.tokenBudget !== undefined &&\n\t\tgoal.tokensUsed >= goal.tokenBudget\n\t\t\t? \"budget_limited\"\n\t\t\t: requestedStatus;\n\tconst next = { ...goal, status, updatedAt: now };\n\tcheckpointGoalActiveTime(next, now, status === \"active\");\n\treturn next;\n}\n\nexport function nextGoalInstance(goal: ActiveGoal): ActiveGoal {\n\treturn { ...goal, id: randomUUID(), updatedAt: Date.now() };\n}\n\nexport function editedGoalStatus(status: GoalStatus): GoalStatus {\n\tif (status === \"paused\" || status === \"blocked\" || status === \"usage_limited\") return status;\n\treturn \"active\";\n}\n\nexport function incrementGoal(goal: ActiveGoal): ActiveGoal {\n\treturn { ...goal, iteration: goal.iteration + 1, updatedAt: Date.now() };\n}\n\n// lunr: footer status — active is just `goal` (elapsed/turns stay on paused)\nexport function formatStatus(goal: ActiveGoal | undefined) {\n\tif (!goal) return undefined;\n\tif (goal.status === \"complete\") return \"goal ✓ complete\";\n\tif (goal.status === \"queued\") return \"goal queued\";\n\tif (goal.status === \"paused\") {\n\t\treturn `goal ◌ paused · ${formatGoalElapsed(goal)} · ${formatGoalTurns(goal)}`;\n\t}\n\tif (goal.status === \"blocked\") return \"goal ✗ blocked\";\n\tif (goal.status === \"usage_limited\") return \"goal usage-limited\";\n\tif (goal.status === \"budget_limited\") return `goal budget ${formatBudget(goal)}`;\n\t// lunr: active (and budget-suffixed active) display text is exactly `goal`\n\tif (goal.tokenBudget !== undefined) return `goal · ${formatBudget(goal)}`;\n\treturn \"goal\";\n}\n\n// lunr: live elapsed = accumulated active time + the in-progress active segment\nfunction goalElapsedSeconds(goal: ActiveGoal) {\n\tlet seconds = nonNegativeFiniteNumber(goal.timeUsedSeconds);\n\tif (typeof goal.activeStartedAt === \"number\" && Number.isFinite(goal.activeStartedAt)) {\n\t\tseconds += Math.max(0, Date.now() - goal.activeStartedAt) / 1000;\n\t}\n\treturn seconds;\n}\n\n// lunr: footer elapsed format — `Xm` under 1h, `XhYm` after\nfunction formatGoalElapsed(goal: ActiveGoal) {\n\tconst totalMinutes = Math.floor(goalElapsedSeconds(goal) / 60);\n\tif (totalMinutes < 60) return `${totalMinutes}m`;\n\treturn `${Math.floor(totalMinutes / 60)}h${totalMinutes % 60}m`;\n}\n\n// lunr: footer turn count, singular at 1\nfunction formatGoalTurns(goal: ActiveGoal) {\n\treturn goal.iteration === 1 ? \"1 turn\" : `${goal.iteration} turns`;\n}\n\nexport function formatBudget(goal: ActiveGoal) {\n\treturn `${formatTokenCount(goal.tokensUsed)}/${formatTokenCount(goal.tokenBudget ?? 0)}`;\n}\n\nexport function goalSummary(\n\tgoal: ActiveGoal,\n\tqueuedGoals: readonly ActiveGoal[] = [],\n\texperimentalGoals = false,\n\tqueueFrozen = false,\n) {\n\tconst summary = [\n\t\t`Goal: ${goal.text}`,\n\t\t`Status: ${queueFrozen ? \"queue off\" : goal.status}`,\n\t\t`Iteration: ${goal.iteration}`,\n\t\t`Active elapsed: ${formatDuration(goal.timeUsedSeconds)}`,\n\t\t`Tokens: ${goal.tokenBudget === undefined ? formatTokenCount(goal.tokensUsed) : formatBudget(goal)}`,\n\t];\n\tif (experimentalGoals || queuedGoals.length > 0 || queueFrozen) {\n\t\tsummary.push(\n\t\t\t`Goals (${queuedGoals.length + 1}):`,\n\t\t\t...[goal, ...queuedGoals].map(\n\t\t\t\t(queuedGoal, index) => `${index + 1}. [${queuedGoal.status}] ${queuedGoal.text}`,\n\t\t\t),\n\t\t);\n\t}\n\tif (queueFrozen) {\n\t\tsummary.push(\n\t\t\t\"Queue is frozen. Re-enable experimental.goals and run /reload, or use /goal clear.\",\n\t\t\t\"Commands: /goal, /goal clear\",\n\t\t);\n\t} else {\n\t\tsummary.push(`Commands: ${goalCommandHint(goal.status, experimentalGoals)}`);\n\t}\n\treturn summary.join(\"\\n\");\n}\n\nexport function hasPendingMessages(ctx: StatusContext) {\n\treturn ctx.hasPendingMessages?.() ?? false;\n}\n\nexport function abortCurrentTurn(ctx: StatusContext) {\n\ttry {\n\t\tctx.abort?.();\n\t} catch {\n\t\t// Best effort: stale goal guards still prevent follow-on tool calls.\n\t}\n}\n\nexport function blocksStaleGoalToolCalls(status: GoalStatus) {\n\treturn status === \"paused\" || status === \"blocked\" || status === \"usage_limited\";\n}\n\nexport function isResumableGoalStatus(status: GoalStatus) {\n\treturn blocksStaleGoalToolCalls(status) || status === \"budget_limited\";\n}\n\nexport function stoppedStatusLabel(status: GoalStatus) {\n\tif (status === \"usage_limited\") return \"usage-limited\";\n\tif (status === \"budget_limited\") return \"budget-limited\";\n\treturn status;\n}\n\nexport function isContradictoryCompletionSummary(summary: string) {\n\treturn CONTRADICTORY_COMPLETION_PATTERNS.some((pattern) => pattern.test(summary));\n}\n\nexport function goalIdRejectionReason(goal: ActiveGoal, requestedGoalId: string) {\n\tif (!requestedGoalId) return \"missing goal_id\";\n\tif (requestedGoalId !== goal.id) return \"goal_id does not match the active goal\";\n\treturn undefined;\n}\n\nexport function isUsageLimitedGoalInterruption(assistant: AssistantMessageLike) {\n\tconst errorMessage = assistant.errorMessage;\n\treturn (\n\t\tassistant.stopReason === \"error\" &&\n\t\ttypeof errorMessage === \"string\" &&\n\t\tUSAGE_LIMIT_GOAL_ERROR_PATTERNS.some((pattern) => pattern.test(errorMessage))\n\t);\n}\n\nexport function isRetryableGoalInterruption(assistant: AssistantMessageLike) {\n\tif (assistant.stopReason !== \"error\") return false;\n\tif (!assistant.errorMessage) return false;\n\tif (\n\t\tisUsageLimitedGoalInterruption(assistant) ||\n\t\tNON_RETRYABLE_GOAL_ERROR_RE.test(assistant.errorMessage)\n\t) {\n\t\treturn false;\n\t}\n\treturn (\n\t\tisGoalContextOverflow(assistant) ||\n\t\tRETRYABLE_GOAL_ERROR_PATTERNS.some((pattern) => pattern.test(assistant.errorMessage ?? \"\"))\n\t);\n}\n\nexport function isGoalContextOverflow(assistant: AssistantMessageLike) {\n\treturn isContextOverflow(toPiAssistantMessage(assistant));\n}\n\n/**\n * lunr: best-effort extraction of a usage-limit reset time from a provider error\n * message. Returns an absolute epoch ms to resume after, or undefined. Handles\n * relative delays (\"reset in 2h\", \"try again in 30m\", \"available in 3600s\") and\n * ISO-8601 timestamps. Most provider errors omit this, so undefined is the norm.\n */\nconst USAGE_RESET_TIME_PATTERNS = [\n\t/reset(?:s|ting)?\\s*(?:in|after|at)?\\s*(\\d+)\\s*s(ec)?/i,\n\t/reset(?:s|ting)?\\s*(?:in|after|at)?\\s*(\\d+)\\s*m(in)?/i,\n\t/reset(?:s|ting)?\\s*(?:in|after|at)?\\s*(\\d+)\\s*h(our|r)?/i,\n\t/(?:retry|try(?:\\s+again)?|available)\\s+(?:in|after|at)\\s*(\\d+)\\s*s(ec)?/i,\n\t/(?:retry|try(?:\\s+again)?|available)\\s+(?:in|after|at)\\s*(\\d+)\\s*m(in)?/i,\n\t/(?:retry|try(?:\\s+again)?|available)\\s+(?:in|after|at)\\s*(\\d+)\\s*h(our|r)?/i,\n] as const;\n\nexport function parseUsageResetTimeMs(errorMessage: string | undefined): number | undefined {\n\tif (!errorMessage) return undefined;\n\tconst now = Date.now();\n\tfor (const pattern of USAGE_RESET_TIME_PATTERNS) {\n\t\tconst match = errorMessage.match(pattern);\n\t\tif (!match) continue;\n\t\tconst value = Number.parseInt(match[1] ?? \"\", 10);\n\t\tif (!Number.isFinite(value) || value <= 0) continue;\n\t\tconst unit = pattern.source.includes(\"\\\\s*h\") ? 3600_000 : pattern.source.includes(\"\\\\s*m\") ? 60_000 : 1_000;\n\t\treturn now + value * unit;\n\t}\n\t// ISO-8601 timestamp fallback (e.g. \"reset at 2026-08-01T09:00:00Z\").\n\tconst isoMatch = errorMessage.match(/(?:reset|available).{0,12}(\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}(:\\d{2})?(?:Z|[+-]\\d{2}:?\\d{2})?)/i);\n\tif (isoMatch?.[1]) {\n\t\tconst parsed = Date.parse(isoMatch[1]);\n\t\tif (Number.isFinite(parsed) && parsed > now) return parsed;\n\t}\n\treturn undefined;\n}\n\nexport function findFinalAssistantMessage(messages: unknown[]): AssistantMessageLike | undefined {\n\tfor (let i = messages.length - 1; i >= 0; i--) {\n\t\tconst message = messages[i];\n\t\tif (!message || typeof message !== \"object\") continue;\n\t\tconst candidate = message as Record<string, unknown>;\n\t\tif (candidate.role !== \"assistant\") continue;\n\t\tconst assistant: AssistantMessageLike = {\n\t\t\trole: \"assistant\",\n\t\t\tstopReason: isAgentStopReason(candidate.stopReason) ? candidate.stopReason : undefined,\n\t\t\terrorMessage: typeof candidate.errorMessage === \"string\" ? candidate.errorMessage : undefined,\n\t\t};\n\t\tif (Array.isArray(candidate.content)) {\n\t\t\tassistant.content = candidate.content as PiAssistantMessage[\"content\"];\n\t\t}\n\t\tif (typeof candidate.api === \"string\") assistant.api = candidate.api;\n\t\tif (typeof candidate.provider === \"string\") assistant.provider = candidate.provider;\n\t\tif (typeof candidate.model === \"string\") assistant.model = candidate.model;\n\t\tif (typeof candidate.timestamp === \"number\") assistant.timestamp = candidate.timestamp;\n\t\tconst usage = normalizeUsage(candidate.usage);\n\t\tif (usage) assistant.usage = usage;\n\t\treturn assistant;\n\t}\n\treturn undefined;\n}\n\nexport function formatError(error: unknown) {\n\treturn truncateNotification(error instanceof Error ? error.message : String(error));\n}\n\nexport function truncateNotification(value: string) {\n\treturn value.length > 160 ? `${value.slice(0, 157)}...` : value;\n}\n\nasync function sendPrompt(pi: ExtensionAPI, ctx: StatusContext, prompt: string) {\n\ttry {\n\t\tawait pi.sendUserMessage(prompt, { deliverAs: \"followUp\" });\n\t\treturn true;\n\t} catch (error) {\n\t\tctx.ui.notify(`Goal prompt failed: ${formatError(error)}`, \"error\");\n\t\treturn false;\n\t}\n}\n\nfunction goalCommandHint(status: GoalStatus, experimentalGoals = false) {\n\tconst queueCommands = experimentalGoals\n\t\t? \", /goal add <objective>, /goal prioritize <objective>, /goal drop-last, /goal skip\"\n\t\t: \"\";\n\tif (status === \"active\") {\n\t\treturn `/goal edit <objective>, /goal pause, /goal clear${queueCommands}`;\n\t}\n\tif (isResumableGoalStatus(status)) {\n\t\treturn `/goal edit <objective>, /goal resume, /goal clear${queueCommands}`;\n\t}\n\treturn `/goal edit <objective>, /goal clear${queueCommands}`;\n}\n\nfunction toPiAssistantMessage(assistant: AssistantMessageLike): PiAssistantMessage {\n\treturn {\n\t\trole: \"assistant\",\n\t\tcontent: assistant.content ?? [],\n\t\tapi: assistant.api ?? \"openai-responses\",\n\t\tprovider: assistant.provider ?? \"unknown\",\n\t\tmodel: assistant.model ?? \"unknown\",\n\t\tusage: assistant.usage ?? zeroUsage(),\n\t\tstopReason: assistant.stopReason ?? \"error\",\n\t\terrorMessage: assistant.errorMessage,\n\t\ttimestamp: assistant.timestamp ?? Date.now(),\n\t};\n}\n\nfunction zeroUsage(): Usage {\n\treturn {\n\t\tinput: 0,\n\t\toutput: 0,\n\t\tcacheRead: 0,\n\t\tcacheWrite: 0,\n\t\ttotalTokens: 0,\n\t\tcost: {\n\t\t\tinput: 0,\n\t\t\toutput: 0,\n\t\t\tcacheRead: 0,\n\t\t\tcacheWrite: 0,\n\t\t\ttotal: 0,\n\t\t},\n\t};\n}\n\nfunction continuationMarker(goal: ActiveGoal) {\n\treturn `${goal.id}:${goal.iteration}:${randomUUID()}`;\n}\n\nfunction escapeRegExpText(value: string) {\n\treturn value.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n}\n\nconst GOAL_PROMPT_MARKER_PATTERN = new RegExp(\n\t`<!--\\\\s*${escapeRegExpText(GOAL_PROMPT_MARKER_PREFIX)}([^\\\\s>]+)\\\\s*-->`,\n);\nconst CONTINUATION_MARKER_PATTERN = new RegExp(\n\t`<!--\\\\s*${escapeRegExpText(CONTINUATION_MARKER_PREFIX)}([^\\\\s>]+)\\\\s*-->`,\n);\n\nfunction extractGoalPromptMarker(prompt: string) {\n\treturn GOAL_PROMPT_MARKER_PATTERN.exec(prompt)?.[1];\n}\n\nfunction extractContinuationMarker(prompt: string) {\n\treturn CONTINUATION_MARKER_PATTERN.exec(prompt)?.[1];\n}\n\nfunction isAgentStopReason(value: unknown): value is AgentStopReason {\n\treturn [\"stop\", \"length\", \"toolUse\", \"error\", \"aborted\"].includes(String(value));\n}\n\nfunction normalizeUsage(value: unknown): Usage | undefined {\n\tif (!value || typeof value !== \"object\") return undefined;\n\tconst usage = value as Partial<Usage>;\n\tif (typeof usage.input !== \"number\" || typeof usage.output !== \"number\") return undefined;\n\treturn {\n\t\tinput: nonNegativeFiniteNumber(usage.input),\n\t\toutput: nonNegativeFiniteNumber(usage.output),\n\t\tcacheRead: nonNegativeFiniteNumber(usage.cacheRead),\n\t\tcacheWrite: nonNegativeFiniteNumber(usage.cacheWrite),\n\t\ttotalTokens: assistantUsageTokens(usage),\n\t\tcost: {\n\t\t\tinput: usage.cost?.input ?? 0,\n\t\t\toutput: usage.cost?.output ?? 0,\n\t\t\tcacheRead: usage.cost?.cacheRead ?? 0,\n\t\t\tcacheWrite: usage.cost?.cacheWrite ?? 0,\n\t\t\ttotal: usage.cost?.total ?? 0,\n\t\t},\n\t};\n}\n"]}
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../../../src/builtin-extensions/narumiruna-pi-goal/src/runtime.ts"],"names":[],"mappings":"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","sourcesContent":["// @ts-nocheck\nimport { randomUUID } from \"node:crypto\";\nimport {\n\tisContextOverflow,\n\ttype AssistantMessage as PiAssistantMessage,\n\ttype Usage,\n} from \"@ashx-j/lunr-ai\";\nimport type { ExtensionAPI } from \"@ashx-j/lunr\";\nimport {\n\tassistantUsageTokens,\n\tcheckpointGoalActiveTime,\n\tformatDuration,\n\tformatTokenCount,\n\tnonNegativeFiniteNumber,\n\tupdateGoalUsage,\n} from \"./accounting.js\";\nimport {\n\ttype ActiveGoal,\n\tclearLegacyPersistedGoal,\n\ttype PendingQueueAction,\n\tserializeGoalState,\n} from \"./persistence.js\";\nimport { buildContinuePrompt, type GoalStatus } from \"./prompts.js\";\nimport { DEFAULT_GOAL_SETTINGS, type GoalSettings } from \"./settings.js\";\nimport { enterGoalAuto, leaveGoalAuto } from \"../../../core/permission-mode-control.js\";\n\nexport type AgentStopReason = \"stop\" | \"length\" | \"toolUse\" | \"error\" | \"aborted\";\n\nexport interface ContinuationTicket {\n\tgoalId: string;\n\titeration: number;\n\tmarker: string;\n\tprompt: string;\n}\n\nexport interface BudgetWrapUp {\n\tgoalId: string;\n\tdelivered: boolean;\n}\n\nexport type GoalRecoveryKind = \"provider_retry\" | \"compaction_retry\";\n\nexport interface GoalRecovery {\n\tgoalId: string;\n\tkind: GoalRecoveryKind;\n}\n\nexport interface AssistantMessageLike {\n\trole: \"assistant\";\n\tstopReason?: AgentStopReason;\n\terrorMessage?: string;\n\tcontent?: PiAssistantMessage[\"content\"];\n\tapi?: PiAssistantMessage[\"api\"];\n\tprovider?: PiAssistantMessage[\"provider\"];\n\tmodel?: string;\n\tusage?: Usage;\n\ttimestamp?: number;\n}\n\nexport interface StatusContext {\n\tcwd: string;\n\tui: {\n\t\tconfirm: (title: string, message: string) => Promise<boolean>;\n\t\tnotify: (message: string, level?: \"info\" | \"warning\" | \"error\") => void;\n\t\tsetStatus: (key: string, value: string | undefined) => void;\n\t};\n\tisIdle?: () => boolean;\n\thasPendingMessages?: () => boolean;\n\tabort?: () => void;\n\tsessionManager?: unknown;\n}\n\nexport interface GoalToolVisibilitySnapshot {\n\tactiveTools: string[];\n\tgoalToolsUnlocked: boolean;\n\tgoalToolsHiddenByPolicy: string[];\n}\n\nexport const STATUS_KEY = \"goal\";\nexport const GOAL_STATE_ENTRY_TYPE = \"goal-state\";\nexport const GOAL_COMPLETE_TOOL = \"goal_complete\";\nexport const GOAL_BLOCKED_TOOL = \"goal_blocked\";\nexport const GOAL_TOOL_NAMES = [GOAL_COMPLETE_TOOL, GOAL_BLOCKED_TOOL] as const;\n\nconst MAX_CANCELLED_CONTINUATION_PROMPTS = 20;\nconst MAX_PENDING_GOAL_PROMPTS = 20;\nconst GOAL_PROMPT_MARKER_PREFIX = \"pi-goal-prompt:\";\nconst CONTINUATION_MARKER_PREFIX = \"pi-goal-continuation:\";\nconst BUDGET_WRAP_UP_MESSAGE_TYPE = \"goal-budget-wrap-up\";\nconst BUDGET_WRAP_UP_PROMPT =\n\t\"The active /goal token budget is exhausted. Stop substantive work and do not call substantive tools. Summarize progress, verified results, remaining work, and blockers concisely. Treat completion as unproven. Do not call goal_complete unless authoritative, requirement-by-requirement evidence already proves every requirement is complete. Weak, indirect, or missing evidence is not enough. Budget exhaustion is not completion.\";\nconst CONTRADICTORY_COMPLETION_PATTERNS = [\n\t/(?<!could\\s)\\bnot\\s+(?:yet\\s+)?(?:complete|completed|done|finished)\\b/i,\n\t/\\bstill\\s+(?:incomplete|failing|failing\\s+tests?|fails?)\\b/i,\n\t/\\btests?\\s+(?:still\\s+)?fail(?:ing)?\\b/i,\n] as const;\nconst USAGE_LIMIT_GOAL_ERROR_PATTERNS = [\n\t/usage[_\\s-]*(?:limit|cap)|chatgpt.{0,32}usage/i,\n\t/quota.{0,32}(?:reached|exceeded|exhausted|depleted)|(?:reached|exceeded|exhausted|depleted).{0,32}quota/i,\n\t/insufficient[_\\s-]*(?:quota|credits?)|out of credits|out of budget|available balance|payment required/i,\n\t/(?:credit|balance).{0,32}(?:low|exhausted|depleted)|billing/i,\n] as const;\nconst NON_RETRYABLE_GOAL_ERROR_RE =\n\t/multi-auth rotation failed|credentials tried|unauthori[sz]ed|invalid api key/i;\n// Pi 0.79 does not export its assistant-error retry classifier. Keep this\n// compatibility mirror aligned with Pi's public retry utility in newer versions.\nconst RETRYABLE_GOAL_ERROR_PATTERNS = [\n\t/overloaded|rate.?limit|too many requests|\\b(?:429|500|502|503|504)\\b|service.?unavailable|server.?error|internal.?error/i,\n\t/provider.?returned.?error|you can retry your request|try your request again|please retry your request/i,\n\t/network.?error|connection.?(?:error|refused|lost)|other side closed|fetch failed|upstream.?connect|reset before headers|socket hang up/i,\n\t/timed? out|timeout|terminated|websocket.?(?:closed|error)|ended without|stream ended before message_stop|http2 request did not get a response|retry delay/i,\n\t/context[_\\s-]*length[_\\s-]*exceeded|input exceeds the context window/i,\n] as const;\n\n// One instance belongs to one extension factory. It owns all mutable session state\n// and the cross-cutting invariants used by command and lifecycle orchestration.\nexport class GoalRuntime {\n\tsettings: GoalSettings = DEFAULT_GOAL_SETTINGS;\n\tactiveGoal?: ActiveGoal;\n\tqueuedGoals: ActiveGoal[] = [];\n\tpendingQueueAction?: PendingQueueAction;\n\tqueueFrozen = false;\n\tcompletionStatusTimer?: NodeJS.Timeout;\n\t// lunr: 30s footer refresh timer so the goal indicator's elapsed minutes tick while active\n\tstatusRefreshTimer?: NodeJS.Timeout;\n\tstatusRefreshCtx?: StatusContext;\n\tcontinuationIntent?: ContinuationTicket;\n\tcontinuationDelivery?: ContinuationTicket;\n\tgoalRecovery?: GoalRecovery;\n\tbudgetWrapUp?: BudgetWrapUp;\n\t/** `null` marks a run that must not be charged to the active goal. */\n\tagentRunGoalId?: string | null;\n\tstaleGoalToolCallsBlocked = false;\n\t/** Once true, goal tools stay in the active set for this runtime (prompt-cache stable). */\n\tgoalToolsUnlocked = false;\n\t/** Exact lazy goal tools this runtime removed and may restore on a mode change. */\n\tgoalToolsHiddenByPolicy = new Set<string>();\n\tpendingGoalPromptMarkers = new Map<string, string>();\n\tcancelledContinuationMarkers = new Set<string>();\n\n\treadonly pi: ExtensionAPI;\n\n\tconstructor(pi: ExtensionAPI) {\n\t\tthis.pi = pi;\n\t}\n\n\tcanRecordGoalUsage() {\n\t\treturn (\n\t\t\tthis.agentRunGoalId !== null &&\n\t\t\t!(\n\t\t\t\tthis.pendingQueueAction?.kind === \"prioritize\" &&\n\t\t\t\tthis.pendingQueueAction.displacedUsageFinalized === true\n\t\t\t)\n\t\t);\n\t}\n\n\thasActiveBudgetWrapUp() {\n\t\treturn (\n\t\t\tthis.activeGoal?.status === \"budget_limited\" &&\n\t\t\tthis.budgetWrapUp?.goalId === this.activeGoal.id &&\n\t\t\tthis.budgetWrapUp.delivered\n\t\t);\n\t}\n\n\thasActiveGoalRecovery() {\n\t\treturn Boolean(this.activeGoal && this.goalRecovery?.goalId === this.activeGoal.id);\n\t}\n\n\trecordGoalUsage(\n\t\tgoal: ActiveGoal,\n\t\tctx: StatusContext,\n\t\tcheckpointActiveTime = goal.status === \"active\",\n\t) {\n\t\tif (!this.canRecordGoalUsage()) return false;\n\t\tupdateGoalUsage(goal, ctx, checkpointActiveTime);\n\t\treturn true;\n\t}\n\n\trequestContinuation(goal: ActiveGoal) {\n\t\tif (this.hasContinuationWorkForGoal(goal.id)) return false;\n\t\tconst marker = continuationMarker(goal);\n\t\tthis.continuationIntent = {\n\t\t\tgoalId: goal.id,\n\t\t\titeration: goal.iteration,\n\t\t\tmarker,\n\t\t\tprompt: buildContinuePrompt(goal, marker),\n\t\t};\n\t\treturn true;\n\t}\n\n\tdispatchContinuationIfSettled(ctx: StatusContext) {\n\t\tconst intent = this.continuationIntent;\n\t\tif (!intent) return false;\n\t\tif (this.activeGoal?.status === \"active\" && !this.goalToolsAvailable()) {\n\t\t\tthis.pauseGoalForUnavailableTools(ctx);\n\t\t\treturn false;\n\t\t}\n\t\tif (\n\t\t\t!this.activeGoal ||\n\t\t\tthis.activeGoal.id !== intent.goalId ||\n\t\t\tthis.activeGoal.status !== \"active\"\n\t\t) {\n\t\t\tthis.continuationIntent = undefined;\n\t\t\treturn false;\n\t\t}\n\t\tif (ctx.isIdle?.() !== true || hasPendingMessages(ctx)) return false;\n\n\t\tthis.continuationIntent = undefined;\n\t\tthis.continuationDelivery = intent;\n\t\ttry {\n\t\t\tthis.pi.sendUserMessage(intent.prompt, { deliverAs: \"followUp\" });\n\t\t\treturn true;\n\t\t} catch (error) {\n\t\t\tif (this.continuationDelivery?.marker === intent.marker) {\n\t\t\t\tthis.continuationDelivery = undefined;\n\t\t\t}\n\t\t\tif (this.activeGoal?.id === intent.goalId && this.activeGoal.status === \"active\") {\n\t\t\t\tthis.continuationIntent = intent;\n\t\t\t}\n\t\t\tctx.ui.notify(`Goal prompt failed: ${formatError(error)}`, \"error\");\n\t\t\treturn false;\n\t\t}\n\t}\n\n\thasContinuationWorkForGoal(goalId: string) {\n\t\treturn (\n\t\t\tthis.continuationIntent?.goalId === goalId || this.continuationDelivery?.goalId === goalId\n\t\t);\n\t}\n\n\tsyncGoalPermissionMode(goal?: ActiveGoal) {\n\t\tif (goal?.status === \"active\") enterGoalAuto();\n\t\telse leaveGoalAuto();\n\t}\n\n\tupdateStatus(ctx: StatusContext, goal: ActiveGoal) {\n\t\tthis.clearCompletionStatusTimer();\n\t\tthis.syncGoalPermissionMode(goal);\n\t\tctx.ui.setStatus(STATUS_KEY, formatStatus(goal));\n\t\t// lunr: refresh the footer every 30s while a goal is active so the elapsed time ticks\n\t\tthis.clearStatusRefreshTimer();\n\t\tif (goal.status === \"active\") {\n\t\t\tthis.statusRefreshCtx = ctx;\n\t\t\tthis.statusRefreshTimer = setInterval(() => {\n\t\t\t\tconst currentGoal = this.activeGoal;\n\t\t\t\tconst refreshCtx = this.statusRefreshCtx;\n\t\t\t\tif (!currentGoal || currentGoal.status !== \"active\" || !refreshCtx) {\n\t\t\t\t\tthis.clearStatusRefreshTimer();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\ttry {\n\t\t\t\t\trefreshCtx.ui.setStatus(STATUS_KEY, formatStatus(currentGoal));\n\t\t\t\t} catch {\n\t\t\t\t\t// The captured ctx may be stale after session replacement or reload.\n\t\t\t\t\tthis.clearStatusRefreshTimer();\n\t\t\t\t}\n\t\t\t}, 30_000);\n\t\t\tthis.statusRefreshTimer.unref?.();\n\t\t}\n\t}\n\n\t// lunr: paired with the status refresh interval started in updateStatus()\n\tclearStatusRefreshTimer() {\n\t\tif (!this.statusRefreshTimer) return;\n\t\tclearInterval(this.statusRefreshTimer);\n\t\tthis.statusRefreshTimer = undefined;\n\t\tthis.statusRefreshCtx = undefined;\n\t}\n\n\tblockStaleGoalToolCalls() {\n\t\tthis.staleGoalToolCallsBlocked = true;\n\t}\n\n\tclearStaleGoalToolCallBlock() {\n\t\tthis.staleGoalToolCallsBlocked = false;\n\t}\n\n\tclearGoalRecovery() {\n\t\tthis.goalRecovery = undefined;\n\t}\n\n\tclearBudgetWrapUp() {\n\t\tthis.budgetWrapUp = undefined;\n\t}\n\n\tkeepBudgetWrapUpMessage(message: unknown) {\n\t\tif (!message || typeof message !== \"object\") return true;\n\t\tconst candidate = message as {\n\t\t\trole?: unknown;\n\t\t\tcustomType?: unknown;\n\t\t\tdetails?: { goalId?: unknown };\n\t\t};\n\t\tif (candidate.role !== \"custom\" || candidate.customType !== BUDGET_WRAP_UP_MESSAGE_TYPE) {\n\t\t\treturn true;\n\t\t}\n\t\treturn (\n\t\t\ttypeof candidate.details?.goalId === \"string\" &&\n\t\t\tcandidate.details.goalId === this.budgetWrapUp?.goalId &&\n\t\t\tcandidate.details.goalId === this.activeGoal?.id\n\t\t);\n\t}\n\n\tqueueBudgetWrapUp(ctx: StatusContext, goal: ActiveGoal) {\n\t\tif (!this.budgetWrapUp || this.budgetWrapUp.goalId !== goal.id) {\n\t\t\tthis.budgetWrapUp = { goalId: goal.id, delivered: false };\n\t\t}\n\t\tif (this.budgetWrapUp.delivered) return true;\n\t\tthis.budgetWrapUp.delivered = true;\n\t\ttry {\n\t\t\tthis.pi.sendMessage(\n\t\t\t\t{\n\t\t\t\t\tcustomType: BUDGET_WRAP_UP_MESSAGE_TYPE,\n\t\t\t\t\tcontent: BUDGET_WRAP_UP_PROMPT,\n\t\t\t\t\tdisplay: true,\n\t\t\t\t\tdetails: { goalId: goal.id },\n\t\t\t\t},\n\t\t\t\t{ deliverAs: \"steer\" },\n\t\t\t);\n\t\t\treturn true;\n\t\t} catch (error) {\n\t\t\tthis.budgetWrapUp.delivered = false;\n\t\t\tctx.ui.notify(`Goal budget wrap-up failed: ${formatError(error)}`, \"error\");\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tlimitActiveGoalForBudget(ctx: StatusContext, sendWrapUp: boolean) {\n\t\tconst goal = this.activeGoal;\n\t\tif (\n\t\t\tgoal?.status !== \"active\" ||\n\t\t\tgoal.tokenBudget === undefined ||\n\t\t\tgoal.tokensUsed < goal.tokenBudget\n\t\t) {\n\t\t\treturn false;\n\t\t}\n\n\t\tthis.cancelContinuationWork();\n\t\tthis.clearGoalRecoveryForGoal(goal.id);\n\t\tthis.clearBudgetWrapUp();\n\t\tthis.activeGoal = transitionGoal(goal, \"budget_limited\");\n\t\tthis.persistGoal(this.activeGoal);\n\t\tthis.updateStatus(ctx, this.activeGoal);\n\t\tctx.ui.notify(`Goal token budget reached: ${formatBudget(this.activeGoal)}`, \"warning\");\n\t\tif (sendWrapUp) this.queueBudgetWrapUp(ctx, this.activeGoal);\n\t\treturn true;\n\t}\n\n\tclearGoalRecoveryForGoal(goalId: string) {\n\t\tif (this.goalRecovery?.goalId === goalId) this.goalRecovery = undefined;\n\t}\n\n\tisPiOwnedCompactionRetry(event: unknown, goalId: string) {\n\t\tconst compaction = event as { reason?: unknown; willRetry?: unknown };\n\t\tif (compaction.willRetry === true) return true;\n\t\treturn (\n\t\t\tthis.goalRecovery?.goalId === goalId &&\n\t\t\tthis.goalRecovery.kind === \"compaction_retry\" &&\n\t\t\t(compaction.reason === undefined || compaction.reason === \"overflow\")\n\t\t);\n\t}\n\n\tclearContinuationTracking() {\n\t\tthis.continuationIntent = undefined;\n\t\tthis.continuationDelivery = undefined;\n\t\tthis.cancelledContinuationMarkers.clear();\n\t}\n\n\tclearPendingGoalPrompts() {\n\t\tthis.pendingGoalPromptMarkers.clear();\n\t}\n\n\tasync sendOwnedGoalPrompt(ctx: StatusContext, goalId: string, prompt: string) {\n\t\tconst pending = this.rememberPendingGoalPrompt(goalId, prompt);\n\t\tconst sent = await sendPrompt(this.pi, ctx, pending.prompt);\n\t\tif (!sent) this.pendingGoalPromptMarkers.delete(pending.marker);\n\t\treturn sent;\n\t}\n\n\tcancelContinuationWork() {\n\t\tif (this.continuationDelivery) {\n\t\t\tthis.rememberCancelledContinuationMarker(this.continuationDelivery.marker);\n\t\t}\n\t\tthis.continuationIntent = undefined;\n\t\tthis.continuationDelivery = undefined;\n\t}\n\n\tconsumeCancelledContinuationPrompt(prompt: string) {\n\t\tconst marker = extractContinuationMarker(prompt);\n\t\treturn marker ? this.cancelledContinuationMarkers.delete(marker) : false;\n\t}\n\n\tconsumeStaleOwnedGoalPrompt(prompt: string) {\n\t\tconst marker = extractGoalPromptMarker(prompt);\n\t\tif (!marker) return false;\n\t\tconst goalId = this.pendingGoalPromptMarkers.get(marker);\n\t\tif (!goalId) return false;\n\t\tif (\n\t\t\t!this.queueFrozen &&\n\t\t\t!this.pendingQueueAction &&\n\t\t\tthis.activeGoal?.id === goalId &&\n\t\t\tthis.activeGoal.status === \"active\"\n\t\t) {\n\t\t\treturn false;\n\t\t}\n\t\tthis.pendingGoalPromptMarkers.delete(marker);\n\t\treturn true;\n\t}\n\n\tmarkContinuationStarted(prompt: string) {\n\t\tconst marker = extractContinuationMarker(prompt);\n\t\tif (!marker) {\n\t\t\t// A user, retry, or another extension started newer work. Cancel both an\n\t\t\t// unsent intent and a delivery that may have lost the non-atomic idle race;\n\t\t\t// the newer work's agent_end will record a fresh intent.\n\t\t\tthis.cancelContinuationWork();\n\t\t\treturn undefined;\n\t\t}\n\t\tif (this.continuationDelivery?.marker === marker) this.continuationDelivery = undefined;\n\t\treturn marker.split(\":\", 1)[0];\n\t}\n\n\tpersistGoal(goal: ActiveGoal) {\n\t\tthis.pi.appendEntry(\n\t\t\tGOAL_STATE_ENTRY_TYPE,\n\t\t\tserializeGoalState(goal, this.queuedGoals, this.pendingQueueAction),\n\t\t);\n\t}\n\n\tclearPersistedGoal(cwd: string) {\n\t\tthis.pi.appendEntry(GOAL_STATE_ENTRY_TYPE, serializeGoalState(undefined, [], undefined));\n\t\tclearLegacyPersistedGoal(cwd);\n\t}\n\n\tclearActiveGoal(ctx: StatusContext) {\n\t\tthis.clearStatusRefreshTimer(); // lunr: stop the footer refresh when the goal is cleared\n\t\tthis.syncGoalPermissionMode(undefined);\n\t\tthis.cancelContinuationWork();\n\t\tthis.clearGoalRecovery();\n\t\tthis.clearBudgetWrapUp();\n\t\tthis.clearStaleGoalToolCallBlock();\n\t\tthis.activeGoal = undefined;\n\t\tthis.queuedGoals = [];\n\t\tthis.pendingQueueAction = undefined;\n\t\tthis.queueFrozen = false;\n\t\tthis.clearPersistedGoal(ctx.cwd);\n\t\tctx.ui.setStatus(STATUS_KEY, undefined);\n\t\t// Do not clear goalToolsUnlocked: after first activation, keep tools visible\n\t\t// for the rest of this extension runtime to avoid repeated goal-tool schema\n\t\t// churn within the same runtime.\n\t}\n\n\tisGoalToolName(name: string) {\n\t\treturn (GOAL_TOOL_NAMES as readonly string[]).includes(name);\n\t}\n\n\tgoalToolsAvailable() {\n\t\tconst active = new Set(this.pi.getActiveTools());\n\t\treturn GOAL_TOOL_NAMES.every((name) => active.has(name));\n\t}\n\n\thideGoalToolsIfLocked() {\n\t\tif (this.goalToolsUnlocked) return;\n\t\tconst active = this.pi.getActiveTools();\n\t\tconst hidden = active.filter((name) => this.isGoalToolName(name));\n\t\tif (hidden.length === 0) return;\n\t\t// lunr: do not mutate the active tool list (Anthropic tools sit at the\n\t\t// front of the cache prefix). Locked goal tools stay registered; the\n\t\t// tool_call gate rejects them until a /goal is activated.\n\t\tfor (const name of hidden) this.goalToolsHiddenByPolicy.add(name);\n\t}\n\n\trestoreGoalToolsHiddenByPolicy() {\n\t\t// lunr: flags only — the tool list is never rewritten at runtime.\n\t\tthis.goalToolsHiddenByPolicy.clear();\n\t}\n\n\tassertGoalToolsAvailable() {\n\t\tif (this.goalToolsAvailable()) return;\n\t\tthrow new Error(\n\t\t\t\"goal_complete and goal_blocked are unavailable; include them in the active tool allowlist or leave the restrictive tool mode first.\",\n\t\t);\n\t}\n\n\tensureGoalToolsVisible() {\n\t\t// lunr: never add/remove tools mid-session. Assert they were already\n\t\t// registered at session start so the wire bytes stay stable.\n\t\tthis.assertGoalToolsAvailable();\n\t}\n\n\tprepareGoalToolsForActivation(ctx: StatusContext) {\n\t\tif (this.settings.toolVisibility === \"after-first-goal\") {\n\t\t\tif (!this.goalToolsAvailable() && ctx.isIdle?.() !== true) {\n\t\t\t\tthrow new Error(\"wait until lunR is idle before revealing the goal tools\");\n\t\t\t}\n\t\t\tthis.revealGoalTools();\n\t\t\treturn;\n\t\t}\n\t\tthis.assertGoalToolsAvailable();\n\t}\n\n\t/** Mark lazy tools permanently desired for this runtime and make them active now. */\n\trevealGoalTools() {\n\t\tconst wasUnlocked = this.goalToolsUnlocked;\n\t\ttry {\n\t\t\tthis.ensureGoalToolsVisible();\n\t\t\tthis.goalToolsUnlocked = true;\n\t\t\tthis.goalToolsHiddenByPolicy.clear();\n\t\t} catch (error) {\n\t\t\tthis.goalToolsUnlocked = wasUnlocked;\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\tsnapshotGoalToolVisibility(): GoalToolVisibilitySnapshot {\n\t\treturn {\n\t\t\tactiveTools: this.pi.getActiveTools(),\n\t\t\tgoalToolsUnlocked: this.goalToolsUnlocked,\n\t\t\tgoalToolsHiddenByPolicy: [...this.goalToolsHiddenByPolicy],\n\t\t};\n\t}\n\n\t/**\n\t * lunr: reactivate a stopped (usage_limited / paused / blocked / budget_limited)\n\t * goal back to active WITHOUT sending a prompt. Shared by the /goal resume\n\t * command and the auto-resume hook (cron wake-up). Returns the reactivated goal\n\t * or undefined if reactivation was rejected (tools unavailable, budget reached).\n\t * Consumes resumeAfter so a single schedule only fires once.\n\t */\n\treactivateGoalForResume(ctx: StatusContext): ActiveGoal | undefined {\n\t\tif (!this.activeGoal) return undefined;\n\t\tif (!isResumableGoalStatus(this.activeGoal.status)) return undefined;\n\t\tif (\n\t\t\tthis.activeGoal.tokenBudget !== undefined &&\n\t\t\tthis.activeGoal.tokensUsed >= this.activeGoal.tokenBudget\n\t\t) {\n\t\t\treturn undefined;\n\t\t}\n\t\ttry {\n\t\t\tthis.prepareGoalToolsForActivation(ctx);\n\t\t} catch (error) {\n\t\t\tctx.ui.notify(`Cannot resume /goal: ${formatError(error)}`, \"error\");\n\t\t\treturn undefined;\n\t\t}\n\t\tthis.cancelContinuationWork();\n\t\tthis.clearGoalRecovery();\n\t\tthis.clearBudgetWrapUp();\n\t\tthis.clearStaleGoalToolCallBlock();\n\t\tconst next = transitionGoal(nextGoalInstance(this.activeGoal), \"active\");\n\t\tthis.activeGoal = { ...next, resumeAfter: undefined };\n\t\tthis.persistGoal(this.activeGoal);\n\t\tthis.updateStatus(ctx, this.activeGoal);\n\t\tif (this.activeGoal.status !== \"active\") return undefined;\n\t\treturn this.activeGoal;\n\t}\n\n\trestoreGoalToolVisibility(snapshot: GoalToolVisibilitySnapshot) {\n\t\t// lunr: restore unlock/hidden flags only — never rewrite the tool list.\n\t\tthis.goalToolsUnlocked = snapshot.goalToolsUnlocked;\n\t\tthis.goalToolsHiddenByPolicy.clear();\n\t\tfor (const name of snapshot.goalToolsHiddenByPolicy) {\n\t\t\tthis.goalToolsHiddenByPolicy.add(name);\n\t\t}\n\t}\n\n\tareGoalToolsLocked() {\n\t\treturn !this.goalToolsUnlocked && this.settings.toolVisibility === \"after-first-goal\";\n\t}\n\n\tpauseGoalForUnavailableTools(ctx: StatusContext, abortTurn = true, recordUsage = true) {\n\t\tconst goal = this.activeGoal;\n\t\tif (goal?.status !== \"active\") return false;\n\t\tif (recordUsage) this.recordGoalUsage(goal, ctx);\n\t\tthis.cancelContinuationWork();\n\t\tthis.clearGoalRecoveryForGoal(goal.id);\n\t\tthis.clearBudgetWrapUp();\n\t\tif (abortTurn) {\n\t\t\tthis.blockStaleGoalToolCalls();\n\t\t\tabortCurrentTurn(ctx);\n\t\t} else {\n\t\t\tthis.clearStaleGoalToolCallBlock();\n\t\t}\n\t\tthis.activeGoal = transitionGoal(goal, \"paused\");\n\t\tthis.persistGoal(this.activeGoal);\n\t\tthis.updateStatus(ctx, this.activeGoal);\n\t\tctx.ui.notify(\n\t\t\t\"Goal tools are unavailable, so the active goal was paused. Restore the tools and run /goal resume.\",\n\t\t\t\"warning\",\n\t\t);\n\t\treturn true;\n\t}\n\n\tshowCompletionStatus(ctx: StatusContext) {\n\t\tthis.clearCompletionStatusTimer();\n\t\tthis.clearStatusRefreshTimer(); // lunr: stop the footer refresh on completion\n\t\tthis.syncGoalPermissionMode(undefined);\n\t\t// lunr: enriched footer status format\n\t\tctx.ui.setStatus(STATUS_KEY, \"goal ✓ complete\");\n\t\tthis.completionStatusTimer = setTimeout(() => {\n\t\t\tthis.completionStatusTimer = undefined;\n\t\t\ttry {\n\t\t\t\tctx.ui.setStatus(STATUS_KEY, undefined);\n\t\t\t} catch {\n\t\t\t\t// The completion status is best-effort; the captured ctx may be stale after\n\t\t\t\t// session replacement or reload before this timer fires.\n\t\t\t}\n\t\t}, 8_000);\n\t}\n\n\tclearCompletionStatusTimer() {\n\t\tif (!this.completionStatusTimer) return;\n\t\tclearTimeout(this.completionStatusTimer);\n\t\tthis.completionStatusTimer = undefined;\n\t}\n\n\tprivate rememberPendingGoalPrompt(goalId: string, prompt: string) {\n\t\tconst marker = randomUUID();\n\t\tthis.pendingGoalPromptMarkers.set(marker, goalId);\n\t\tif (this.pendingGoalPromptMarkers.size > MAX_PENDING_GOAL_PROMPTS) {\n\t\t\tconst oldest = this.pendingGoalPromptMarkers.keys().next().value;\n\t\t\tif (oldest) this.pendingGoalPromptMarkers.delete(oldest);\n\t\t}\n\t\treturn { marker, prompt: `${prompt}\\n\\n<!-- ${GOAL_PROMPT_MARKER_PREFIX}${marker} -->` };\n\t}\n\n\tprivate consumePendingGoalPrompt(prompt: string) {\n\t\tconst marker = extractGoalPromptMarker(prompt);\n\t\tif (!marker) return undefined;\n\t\tconst goalId = this.pendingGoalPromptMarkers.get(marker);\n\t\tthis.pendingGoalPromptMarkers.delete(marker);\n\t\treturn goalId;\n\t}\n\n\tconsumeOwnedGoalPrompt(prompt: string) {\n\t\treturn this.consumePendingGoalPrompt(prompt);\n\t}\n\n\tprivate rememberCancelledContinuationMarker(marker: string) {\n\t\tthis.cancelledContinuationMarkers.add(marker);\n\t\tif (this.cancelledContinuationMarkers.size <= MAX_CANCELLED_CONTINUATION_PROMPTS) return;\n\t\tconst oldest = this.cancelledContinuationMarkers.values().next().value;\n\t\tif (oldest) this.cancelledContinuationMarkers.delete(oldest);\n\t}\n}\n\nexport function createGoal(\n\ttext: string,\n\ttokenBudget: number | undefined,\n\tbaselineTokens: number,\n): ActiveGoal {\n\tconst now = Date.now();\n\treturn {\n\t\tid: randomUUID(),\n\t\ttext,\n\t\tstatus: \"active\",\n\t\tstartedAt: now,\n\t\tupdatedAt: now,\n\t\titeration: 0,\n\t\ttokenBudget,\n\t\ttokensUsed: 0,\n\t\ttimeUsedSeconds: 0,\n\t\tbaselineTokens,\n\t\tactiveStartedAt: now,\n\t};\n}\n\nexport function transitionGoal(goal: ActiveGoal, requestedStatus: GoalStatus): ActiveGoal {\n\tconst now = Date.now();\n\tconst status =\n\t\trequestedStatus === \"active\" &&\n\t\tgoal.tokenBudget !== undefined &&\n\t\tgoal.tokensUsed >= goal.tokenBudget\n\t\t\t? \"budget_limited\"\n\t\t\t: requestedStatus;\n\tconst next = { ...goal, status, updatedAt: now };\n\tcheckpointGoalActiveTime(next, now, status === \"active\");\n\treturn next;\n}\n\nexport function nextGoalInstance(goal: ActiveGoal): ActiveGoal {\n\treturn { ...goal, id: randomUUID(), updatedAt: Date.now() };\n}\n\nexport function editedGoalStatus(status: GoalStatus): GoalStatus {\n\tif (status === \"paused\" || status === \"blocked\" || status === \"usage_limited\") return status;\n\treturn \"active\";\n}\n\nexport function incrementGoal(goal: ActiveGoal): ActiveGoal {\n\treturn { ...goal, iteration: goal.iteration + 1, updatedAt: Date.now() };\n}\n\n// lunr: footer status — active is just `goal` (elapsed/turns stay on paused)\nexport function formatStatus(goal: ActiveGoal | undefined) {\n\tif (!goal) return undefined;\n\tif (goal.status === \"complete\") return \"goal ✓ complete\";\n\tif (goal.status === \"queued\") return \"goal queued\";\n\tif (goal.status === \"paused\") {\n\t\treturn `goal ◌ paused · ${formatGoalElapsed(goal)} · ${formatGoalTurns(goal)}`;\n\t}\n\tif (goal.status === \"blocked\") return \"goal ✗ blocked\";\n\tif (goal.status === \"usage_limited\") return \"goal usage-limited\";\n\tif (goal.status === \"budget_limited\") return `goal budget ${formatBudget(goal)}`;\n\t// lunr: active (and budget-suffixed active) display text is exactly `goal`\n\tif (goal.tokenBudget !== undefined) return `goal · ${formatBudget(goal)}`;\n\treturn \"goal\";\n}\n\n// lunr: live elapsed = accumulated active time + the in-progress active segment\nfunction goalElapsedSeconds(goal: ActiveGoal) {\n\tlet seconds = nonNegativeFiniteNumber(goal.timeUsedSeconds);\n\tif (typeof goal.activeStartedAt === \"number\" && Number.isFinite(goal.activeStartedAt)) {\n\t\tseconds += Math.max(0, Date.now() - goal.activeStartedAt) / 1000;\n\t}\n\treturn seconds;\n}\n\n// lunr: footer elapsed format — `Xm` under 1h, `XhYm` after\nfunction formatGoalElapsed(goal: ActiveGoal) {\n\tconst totalMinutes = Math.floor(goalElapsedSeconds(goal) / 60);\n\tif (totalMinutes < 60) return `${totalMinutes}m`;\n\treturn `${Math.floor(totalMinutes / 60)}h${totalMinutes % 60}m`;\n}\n\n// lunr: footer turn count, singular at 1\nfunction formatGoalTurns(goal: ActiveGoal) {\n\treturn goal.iteration === 1 ? \"1 turn\" : `${goal.iteration} turns`;\n}\n\nexport function formatBudget(goal: ActiveGoal) {\n\treturn `${formatTokenCount(goal.tokensUsed)}/${formatTokenCount(goal.tokenBudget ?? 0)}`;\n}\n\nexport function goalSummary(\n\tgoal: ActiveGoal,\n\tqueuedGoals: readonly ActiveGoal[] = [],\n\texperimentalGoals = false,\n\tqueueFrozen = false,\n) {\n\tconst summary = [\n\t\t`Goal: ${goal.text}`,\n\t\t`Status: ${queueFrozen ? \"queue off\" : goal.status}`,\n\t\t`Iteration: ${goal.iteration}`,\n\t\t`Active elapsed: ${formatDuration(goal.timeUsedSeconds)}`,\n\t\t`Tokens: ${goal.tokenBudget === undefined ? formatTokenCount(goal.tokensUsed) : formatBudget(goal)}`,\n\t];\n\tif (experimentalGoals || queuedGoals.length > 0 || queueFrozen) {\n\t\tsummary.push(\n\t\t\t`Goals (${queuedGoals.length + 1}):`,\n\t\t\t...[goal, ...queuedGoals].map(\n\t\t\t\t(queuedGoal, index) => `${index + 1}. [${queuedGoal.status}] ${queuedGoal.text}`,\n\t\t\t),\n\t\t);\n\t}\n\tif (queueFrozen) {\n\t\tsummary.push(\n\t\t\t\"Queue is frozen. Re-enable experimental.goals and run /reload, or use /goal clear.\",\n\t\t\t\"Commands: /goal, /goal clear\",\n\t\t);\n\t} else {\n\t\tsummary.push(`Commands: ${goalCommandHint(goal.status, experimentalGoals)}`);\n\t}\n\treturn summary.join(\"\\n\");\n}\n\nexport function hasPendingMessages(ctx: StatusContext) {\n\treturn ctx.hasPendingMessages?.() ?? false;\n}\n\nexport function abortCurrentTurn(ctx: StatusContext) {\n\ttry {\n\t\tctx.abort?.();\n\t} catch {\n\t\t// Best effort: stale goal guards still prevent follow-on tool calls.\n\t}\n}\n\nexport function blocksStaleGoalToolCalls(status: GoalStatus) {\n\treturn status === \"paused\" || status === \"blocked\" || status === \"usage_limited\";\n}\n\nexport function isResumableGoalStatus(status: GoalStatus) {\n\treturn blocksStaleGoalToolCalls(status) || status === \"budget_limited\";\n}\n\nexport function stoppedStatusLabel(status: GoalStatus) {\n\tif (status === \"usage_limited\") return \"usage-limited\";\n\tif (status === \"budget_limited\") return \"budget-limited\";\n\treturn status;\n}\n\nexport function isContradictoryCompletionSummary(summary: string) {\n\treturn CONTRADICTORY_COMPLETION_PATTERNS.some((pattern) => pattern.test(summary));\n}\n\nexport function goalIdRejectionReason(goal: ActiveGoal, requestedGoalId: string) {\n\tif (!requestedGoalId) return \"missing goal_id\";\n\tif (requestedGoalId !== goal.id) return \"goal_id does not match the active goal\";\n\treturn undefined;\n}\n\nexport function isUsageLimitedGoalInterruption(assistant: AssistantMessageLike) {\n\tconst errorMessage = assistant.errorMessage;\n\treturn (\n\t\tassistant.stopReason === \"error\" &&\n\t\ttypeof errorMessage === \"string\" &&\n\t\tUSAGE_LIMIT_GOAL_ERROR_PATTERNS.some((pattern) => pattern.test(errorMessage))\n\t);\n}\n\nexport function isRetryableGoalInterruption(assistant: AssistantMessageLike) {\n\tif (assistant.stopReason !== \"error\") return false;\n\tif (!assistant.errorMessage) return false;\n\tif (\n\t\tisUsageLimitedGoalInterruption(assistant) ||\n\t\tNON_RETRYABLE_GOAL_ERROR_RE.test(assistant.errorMessage)\n\t) {\n\t\treturn false;\n\t}\n\treturn (\n\t\tisGoalContextOverflow(assistant) ||\n\t\tRETRYABLE_GOAL_ERROR_PATTERNS.some((pattern) => pattern.test(assistant.errorMessage ?? \"\"))\n\t);\n}\n\nexport function isGoalContextOverflow(assistant: AssistantMessageLike) {\n\treturn isContextOverflow(toPiAssistantMessage(assistant));\n}\n\n/**\n * lunr: best-effort extraction of a usage-limit reset time from a provider error\n * message. Returns an absolute epoch ms to resume after, or undefined. Handles\n * relative delays (\"reset in 2h\", \"try again in 30m\", \"available in 3600s\") and\n * ISO-8601 timestamps. Most provider errors omit this, so undefined is the norm.\n */\nconst USAGE_RESET_TIME_PATTERNS = [\n\t/reset(?:s|ting)?\\s*(?:in|after|at)?\\s*(\\d+)\\s*s(ec)?/i,\n\t/reset(?:s|ting)?\\s*(?:in|after|at)?\\s*(\\d+)\\s*m(in)?/i,\n\t/reset(?:s|ting)?\\s*(?:in|after|at)?\\s*(\\d+)\\s*h(our|r)?/i,\n\t/(?:retry|try(?:\\s+again)?|available)\\s+(?:in|after|at)\\s*(\\d+)\\s*s(ec)?/i,\n\t/(?:retry|try(?:\\s+again)?|available)\\s+(?:in|after|at)\\s*(\\d+)\\s*m(in)?/i,\n\t/(?:retry|try(?:\\s+again)?|available)\\s+(?:in|after|at)\\s*(\\d+)\\s*h(our|r)?/i,\n] as const;\n\nexport function parseUsageResetTimeMs(errorMessage: string | undefined): number | undefined {\n\tif (!errorMessage) return undefined;\n\tconst now = Date.now();\n\tfor (const pattern of USAGE_RESET_TIME_PATTERNS) {\n\t\tconst match = errorMessage.match(pattern);\n\t\tif (!match) continue;\n\t\tconst value = Number.parseInt(match[1] ?? \"\", 10);\n\t\tif (!Number.isFinite(value) || value <= 0) continue;\n\t\tconst unit = pattern.source.includes(\"\\\\s*h\") ? 3600_000 : pattern.source.includes(\"\\\\s*m\") ? 60_000 : 1_000;\n\t\treturn now + value * unit;\n\t}\n\t// ISO-8601 timestamp fallback (e.g. \"reset at 2026-08-01T09:00:00Z\").\n\tconst isoMatch = errorMessage.match(/(?:reset|available).{0,12}(\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}(:\\d{2})?(?:Z|[+-]\\d{2}:?\\d{2})?)/i);\n\tif (isoMatch?.[1]) {\n\t\tconst parsed = Date.parse(isoMatch[1]);\n\t\tif (Number.isFinite(parsed) && parsed > now) return parsed;\n\t}\n\treturn undefined;\n}\n\nexport function findFinalAssistantMessage(messages: unknown[]): AssistantMessageLike | undefined {\n\tfor (let i = messages.length - 1; i >= 0; i--) {\n\t\tconst message = messages[i];\n\t\tif (!message || typeof message !== \"object\") continue;\n\t\tconst candidate = message as Record<string, unknown>;\n\t\tif (candidate.role !== \"assistant\") continue;\n\t\tconst assistant: AssistantMessageLike = {\n\t\t\trole: \"assistant\",\n\t\t\tstopReason: isAgentStopReason(candidate.stopReason) ? candidate.stopReason : undefined,\n\t\t\terrorMessage: typeof candidate.errorMessage === \"string\" ? candidate.errorMessage : undefined,\n\t\t};\n\t\tif (Array.isArray(candidate.content)) {\n\t\t\tassistant.content = candidate.content as PiAssistantMessage[\"content\"];\n\t\t}\n\t\tif (typeof candidate.api === \"string\") assistant.api = candidate.api;\n\t\tif (typeof candidate.provider === \"string\") assistant.provider = candidate.provider;\n\t\tif (typeof candidate.model === \"string\") assistant.model = candidate.model;\n\t\tif (typeof candidate.timestamp === \"number\") assistant.timestamp = candidate.timestamp;\n\t\tconst usage = normalizeUsage(candidate.usage);\n\t\tif (usage) assistant.usage = usage;\n\t\treturn assistant;\n\t}\n\treturn undefined;\n}\n\nexport function formatError(error: unknown) {\n\treturn truncateNotification(error instanceof Error ? error.message : String(error));\n}\n\nexport function truncateNotification(value: string) {\n\treturn value.length > 160 ? `${value.slice(0, 157)}...` : value;\n}\n\nasync function sendPrompt(pi: ExtensionAPI, ctx: StatusContext, prompt: string) {\n\ttry {\n\t\tawait pi.sendUserMessage(prompt, { deliverAs: \"followUp\" });\n\t\treturn true;\n\t} catch (error) {\n\t\tctx.ui.notify(`Goal prompt failed: ${formatError(error)}`, \"error\");\n\t\treturn false;\n\t}\n}\n\nfunction goalCommandHint(status: GoalStatus, experimentalGoals = false) {\n\tconst queueCommands = experimentalGoals\n\t\t? \", /goal add <objective>, /goal prioritize <objective>, /goal drop-last, /goal skip\"\n\t\t: \"\";\n\tif (status === \"active\") {\n\t\treturn `/goal edit <objective>, /goal pause, /goal clear${queueCommands}`;\n\t}\n\tif (isResumableGoalStatus(status)) {\n\t\treturn `/goal edit <objective>, /goal resume, /goal clear${queueCommands}`;\n\t}\n\treturn `/goal edit <objective>, /goal clear${queueCommands}`;\n}\n\nfunction toPiAssistantMessage(assistant: AssistantMessageLike): PiAssistantMessage {\n\treturn {\n\t\trole: \"assistant\",\n\t\tcontent: assistant.content ?? [],\n\t\tapi: assistant.api ?? \"openai-responses\",\n\t\tprovider: assistant.provider ?? \"unknown\",\n\t\tmodel: assistant.model ?? \"unknown\",\n\t\tusage: assistant.usage ?? zeroUsage(),\n\t\tstopReason: assistant.stopReason ?? \"error\",\n\t\terrorMessage: assistant.errorMessage,\n\t\ttimestamp: assistant.timestamp ?? Date.now(),\n\t};\n}\n\nfunction zeroUsage(): Usage {\n\treturn {\n\t\tinput: 0,\n\t\toutput: 0,\n\t\tcacheRead: 0,\n\t\tcacheWrite: 0,\n\t\ttotalTokens: 0,\n\t\tcost: {\n\t\t\tinput: 0,\n\t\t\toutput: 0,\n\t\t\tcacheRead: 0,\n\t\t\tcacheWrite: 0,\n\t\t\ttotal: 0,\n\t\t},\n\t};\n}\n\nfunction continuationMarker(goal: ActiveGoal) {\n\treturn `${goal.id}:${goal.iteration}:${randomUUID()}`;\n}\n\nfunction escapeRegExpText(value: string) {\n\treturn value.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n}\n\nconst GOAL_PROMPT_MARKER_PATTERN = new RegExp(\n\t`<!--\\\\s*${escapeRegExpText(GOAL_PROMPT_MARKER_PREFIX)}([^\\\\s>]+)\\\\s*-->`,\n);\nconst CONTINUATION_MARKER_PATTERN = new RegExp(\n\t`<!--\\\\s*${escapeRegExpText(CONTINUATION_MARKER_PREFIX)}([^\\\\s>]+)\\\\s*-->`,\n);\n\nfunction extractGoalPromptMarker(prompt: string) {\n\treturn GOAL_PROMPT_MARKER_PATTERN.exec(prompt)?.[1];\n}\n\nfunction extractContinuationMarker(prompt: string) {\n\treturn CONTINUATION_MARKER_PATTERN.exec(prompt)?.[1];\n}\n\nfunction isAgentStopReason(value: unknown): value is AgentStopReason {\n\treturn [\"stop\", \"length\", \"toolUse\", \"error\", \"aborted\"].includes(String(value));\n}\n\nfunction normalizeUsage(value: unknown): Usage | undefined {\n\tif (!value || typeof value !== \"object\") return undefined;\n\tconst usage = value as Partial<Usage>;\n\tif (typeof usage.input !== \"number\" || typeof usage.output !== \"number\") return undefined;\n\treturn {\n\t\tinput: nonNegativeFiniteNumber(usage.input),\n\t\toutput: nonNegativeFiniteNumber(usage.output),\n\t\tcacheRead: nonNegativeFiniteNumber(usage.cacheRead),\n\t\tcacheWrite: nonNegativeFiniteNumber(usage.cacheWrite),\n\t\ttotalTokens: assistantUsageTokens(usage),\n\t\tcost: {\n\t\t\tinput: usage.cost?.input ?? 0,\n\t\t\toutput: usage.cost?.output ?? 0,\n\t\t\tcacheRead: usage.cost?.cacheRead ?? 0,\n\t\t\tcacheWrite: usage.cost?.cacheWrite ?? 0,\n\t\t\ttotal: usage.cost?.total ?? 0,\n\t\t},\n\t};\n}\n"]}