@code-yeongyu/senpi 2026.9.9 → 2026.9.10-2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1088) hide show
  1. package/CHANGELOG.md +117 -1
  2. package/README.md +2 -0
  3. package/dist/beta/omo-local-update-worker.js.map +1 -1
  4. package/dist/beta/omo-local-update.d.ts.map +1 -1
  5. package/dist/brand-dir-migration.js.map +1 -1
  6. package/dist/cli/args.d.ts.map +1 -1
  7. package/dist/cli/args.js +1 -0
  8. package/dist/cli/args.js.map +1 -1
  9. package/dist/cli/auth-check.js.map +1 -1
  10. package/dist/cli/experimental/command.d.ts.map +1 -1
  11. package/dist/cli/grok-neo-gate.js.map +1 -1
  12. package/dist/cli/startup-ui.js.map +1 -1
  13. package/dist/cli.js.map +1 -1
  14. package/dist/client/remote-session.d.ts.map +1 -1
  15. package/dist/client/remote-session.js.map +1 -1
  16. package/dist/config.d.ts.map +1 -1
  17. package/dist/config.js +43 -19
  18. package/dist/config.js.map +1 -1
  19. package/dist/core/agent-abort-provenance.d.ts.map +1 -1
  20. package/dist/core/agent-session-runtime.d.ts.map +1 -1
  21. package/dist/core/agent-session-runtime.js.map +1 -1
  22. package/dist/core/agent-session.d.ts +82 -7
  23. package/dist/core/agent-session.d.ts.map +1 -1
  24. package/dist/core/agent-session.js +194 -24
  25. package/dist/core/agent-session.js.map +1 -1
  26. package/dist/core/agent-settled-delivery.d.ts.map +1 -1
  27. package/dist/core/auth-providers.js.map +1 -1
  28. package/dist/core/auth-storage.d.ts.map +1 -1
  29. package/dist/core/auth-storage.js.map +1 -1
  30. package/dist/core/brand.js.map +1 -1
  31. package/dist/core/compaction/branch-summarization.js.map +1 -1
  32. package/dist/core/compaction/compaction.js.map +1 -1
  33. package/dist/core/compaction/lifecycle.d.ts.map +1 -1
  34. package/dist/core/compaction/stream-watchdog.d.ts.map +1 -1
  35. package/dist/core/compaction/utils.js.map +1 -1
  36. package/dist/core/credential-accounts.js.map +1 -1
  37. package/dist/core/credential-pool/classify.js.map +1 -1
  38. package/dist/core/credential-pool/failover.d.ts.map +1 -1
  39. package/dist/core/credential-pool/rotation-stream.js.map +1 -1
  40. package/dist/core/credential-pool/state-store.d.ts +2 -2
  41. package/dist/core/credential-pool/state-store.d.ts.map +1 -1
  42. package/dist/core/credential-pool/state-store.js.map +1 -1
  43. package/dist/core/dynamic-prompt/verification.d.ts.map +1 -1
  44. package/dist/core/edited-assistant-message.d.ts +24 -0
  45. package/dist/core/edited-assistant-message.d.ts.map +1 -0
  46. package/dist/core/edited-assistant-message.js +57 -0
  47. package/dist/core/edited-assistant-message.js.map +1 -0
  48. package/dist/core/experimental.d.ts.map +1 -1
  49. package/dist/core/extensions/builtin/ask-user/extension.d.ts +3 -0
  50. package/dist/core/extensions/builtin/ask-user/extension.d.ts.map +1 -0
  51. package/dist/core/extensions/builtin/ask-user/extension.js +47 -0
  52. package/dist/core/extensions/builtin/ask-user/extension.js.map +1 -0
  53. package/dist/core/extensions/builtin/ask-user/family.d.ts +8 -0
  54. package/dist/core/extensions/builtin/ask-user/family.d.ts.map +1 -0
  55. package/dist/core/extensions/builtin/ask-user/family.js +6 -0
  56. package/dist/core/extensions/builtin/ask-user/family.js.map +1 -0
  57. package/dist/core/extensions/builtin/ask-user/format.d.ts +22 -0
  58. package/dist/core/extensions/builtin/ask-user/format.d.ts.map +1 -0
  59. package/dist/core/extensions/builtin/ask-user/format.js +109 -0
  60. package/dist/core/extensions/builtin/ask-user/format.js.map +1 -0
  61. package/dist/core/extensions/builtin/ask-user/index.d.ts +4 -0
  62. package/dist/core/extensions/builtin/ask-user/index.d.ts.map +1 -0
  63. package/dist/core/extensions/builtin/ask-user/index.js +4 -0
  64. package/dist/core/extensions/builtin/ask-user/index.js.map +1 -0
  65. package/dist/core/extensions/builtin/ask-user/params.d.ts +27 -0
  66. package/dist/core/extensions/builtin/ask-user/params.d.ts.map +1 -0
  67. package/dist/core/extensions/builtin/ask-user/params.js +78 -0
  68. package/dist/core/extensions/builtin/ask-user/params.js.map +1 -0
  69. package/dist/core/extensions/builtin/ask-user/pending.d.ts +58 -0
  70. package/dist/core/extensions/builtin/ask-user/pending.d.ts.map +1 -0
  71. package/dist/core/extensions/builtin/ask-user/pending.js +130 -0
  72. package/dist/core/extensions/builtin/ask-user/pending.js.map +1 -0
  73. package/dist/core/extensions/builtin/ask-user/registry.d.ts +21 -0
  74. package/dist/core/extensions/builtin/ask-user/registry.d.ts.map +1 -0
  75. package/dist/core/extensions/builtin/ask-user/registry.js +20 -0
  76. package/dist/core/extensions/builtin/ask-user/registry.js.map +1 -0
  77. package/dist/core/extensions/builtin/ask-user/render.d.ts +4 -0
  78. package/dist/core/extensions/builtin/ask-user/render.d.ts.map +1 -0
  79. package/dist/core/extensions/builtin/ask-user/render.js +25 -0
  80. package/dist/core/extensions/builtin/ask-user/render.js.map +1 -0
  81. package/dist/core/extensions/builtin/ask-user/resume.d.ts +4 -0
  82. package/dist/core/extensions/builtin/ask-user/resume.d.ts.map +1 -0
  83. package/dist/core/extensions/builtin/ask-user/resume.js +85 -0
  84. package/dist/core/extensions/builtin/ask-user/resume.js.map +1 -0
  85. package/dist/core/extensions/builtin/ask-user/schema.d.ts +40 -0
  86. package/dist/core/extensions/builtin/ask-user/schema.d.ts.map +1 -0
  87. package/dist/core/extensions/builtin/ask-user/schema.js +102 -0
  88. package/dist/core/extensions/builtin/ask-user/schema.js.map +1 -0
  89. package/dist/core/extensions/builtin/ask-user/tool.d.ts +8 -0
  90. package/dist/core/extensions/builtin/ask-user/tool.d.ts.map +1 -0
  91. package/dist/core/extensions/builtin/ask-user/tool.js +195 -0
  92. package/dist/core/extensions/builtin/ask-user/tool.js.map +1 -0
  93. package/dist/core/extensions/builtin/bash-timeout/timeout.js.map +1 -1
  94. package/dist/core/extensions/builtin/btw/panel.d.ts.map +1 -1
  95. package/dist/core/extensions/builtin/btw/side-query.js.map +1 -1
  96. package/dist/core/extensions/builtin/cache-keepalive/index.d.ts.map +1 -1
  97. package/dist/core/extensions/builtin/cache-keepalive/index.js.map +1 -1
  98. package/dist/core/extensions/builtin/claude-sdk-oauth/account-command.js.map +1 -1
  99. package/dist/core/extensions/builtin/claude-sdk-oauth/account-management.js.map +1 -1
  100. package/dist/core/extensions/builtin/claude-sdk-oauth/accounts.d.ts.map +1 -1
  101. package/dist/core/extensions/builtin/claude-sdk-oauth/accounts.js.map +1 -1
  102. package/dist/core/extensions/builtin/claude-sdk-oauth/affinity.d.ts.map +1 -1
  103. package/dist/core/extensions/builtin/claude-sdk-oauth/affinity.js.map +1 -1
  104. package/dist/core/extensions/builtin/claude-sdk-oauth/availability.d.ts +11 -0
  105. package/dist/core/extensions/builtin/claude-sdk-oauth/availability.d.ts.map +1 -1
  106. package/dist/core/extensions/builtin/claude-sdk-oauth/availability.js +12 -1
  107. package/dist/core/extensions/builtin/claude-sdk-oauth/availability.js.map +1 -1
  108. package/dist/core/extensions/builtin/claude-sdk-oauth/bounded-queue.d.ts.map +1 -1
  109. package/dist/core/extensions/builtin/claude-sdk-oauth/custom-tools.d.ts.map +1 -1
  110. package/dist/core/extensions/builtin/claude-sdk-oauth/errors.d.ts.map +1 -1
  111. package/dist/core/extensions/builtin/claude-sdk-oauth/executable-path-lookup.d.ts +14 -0
  112. package/dist/core/extensions/builtin/claude-sdk-oauth/executable-path-lookup.d.ts.map +1 -0
  113. package/dist/core/extensions/builtin/claude-sdk-oauth/executable-path-lookup.js +42 -0
  114. package/dist/core/extensions/builtin/claude-sdk-oauth/executable-path-lookup.js.map +1 -0
  115. package/dist/core/extensions/builtin/claude-sdk-oauth/executable.d.ts +18 -0
  116. package/dist/core/extensions/builtin/claude-sdk-oauth/executable.d.ts.map +1 -1
  117. package/dist/core/extensions/builtin/claude-sdk-oauth/executable.js +105 -36
  118. package/dist/core/extensions/builtin/claude-sdk-oauth/executable.js.map +1 -1
  119. package/dist/core/extensions/builtin/claude-sdk-oauth/failover.d.ts.map +1 -1
  120. package/dist/core/extensions/builtin/claude-sdk-oauth/index.js.map +1 -1
  121. package/dist/core/extensions/builtin/claude-sdk-oauth/refusal.d.ts.map +1 -1
  122. package/dist/core/extensions/builtin/claude-sdk-oauth/sdk-boundary.d.ts.map +1 -1
  123. package/dist/core/extensions/builtin/claude-sdk-oauth/session-binding.d.ts.map +1 -1
  124. package/dist/core/extensions/builtin/claude-sdk-oauth/session-binding.js +3 -0
  125. package/dist/core/extensions/builtin/claude-sdk-oauth/session-binding.js.map +1 -1
  126. package/dist/core/extensions/builtin/claude-sdk-oauth/session-commit-boundary.d.ts.map +1 -1
  127. package/dist/core/extensions/builtin/claude-sdk-oauth/session-reaper.d.ts.map +1 -1
  128. package/dist/core/extensions/builtin/claude-sdk-oauth/session-reattach.d.ts.map +1 -1
  129. package/dist/core/extensions/builtin/claude-sdk-oauth/session-reattach.js +19 -10
  130. package/dist/core/extensions/builtin/claude-sdk-oauth/session-reattach.js.map +1 -1
  131. package/dist/core/extensions/builtin/claude-sdk-oauth/session-registry-pump.d.ts.map +1 -1
  132. package/dist/core/extensions/builtin/claude-sdk-oauth/session-registry-pump.js.map +1 -1
  133. package/dist/core/extensions/builtin/claude-sdk-oauth/session-registry-state.d.ts.map +1 -1
  134. package/dist/core/extensions/builtin/claude-sdk-oauth/session-registry.d.ts.map +1 -1
  135. package/dist/core/extensions/builtin/claude-sdk-oauth/session-stream.d.ts.map +1 -1
  136. package/dist/core/extensions/builtin/claude-sdk-oauth/session-stream.js +4 -1
  137. package/dist/core/extensions/builtin/claude-sdk-oauth/session-stream.js.map +1 -1
  138. package/dist/core/extensions/builtin/claude-sdk-oauth/session-sync.js.map +1 -1
  139. package/dist/core/extensions/builtin/claude-sdk-oauth/session-turn-attempt.d.ts.map +1 -1
  140. package/dist/core/extensions/builtin/claude-sdk-oauth/session-turn-types.d.ts.map +1 -1
  141. package/dist/core/extensions/builtin/claude-sdk-oauth/settings.js.map +1 -1
  142. package/dist/core/extensions/builtin/claude-sdk-oauth/stream-protocol.d.ts +1 -1
  143. package/dist/core/extensions/builtin/claude-sdk-oauth/tool-watch.js.map +1 -1
  144. package/dist/core/extensions/builtin/claude-sdk-oauth/tools.d.ts.map +1 -1
  145. package/dist/core/extensions/builtin/compaction/context-reduction.js.map +1 -1
  146. package/dist/core/extensions/builtin/compaction/deterministic-fallback.js.map +1 -1
  147. package/dist/core/extensions/builtin/compaction/index.js.map +1 -1
  148. package/dist/core/extensions/builtin/compaction/lane-policy.js.map +1 -1
  149. package/dist/core/extensions/builtin/compaction/log.js.map +1 -1
  150. package/dist/core/extensions/builtin/compaction/model-usability-budget.d.ts.map +1 -1
  151. package/dist/core/extensions/builtin/compaction/openai-remote-convert.js.map +1 -1
  152. package/dist/core/extensions/builtin/compaction/openai-remote.js.map +1 -1
  153. package/dist/core/extensions/builtin/compaction/overflow-retry.d.ts.map +1 -1
  154. package/dist/core/extensions/builtin/compaction/resume-admission.d.ts +7 -0
  155. package/dist/core/extensions/builtin/compaction/resume-admission.d.ts.map +1 -0
  156. package/dist/core/extensions/builtin/compaction/resume-admission.js +7 -0
  157. package/dist/core/extensions/builtin/compaction/resume-admission.js.map +1 -0
  158. package/dist/core/extensions/builtin/compaction/resume-slice.d.ts +23 -0
  159. package/dist/core/extensions/builtin/compaction/resume-slice.d.ts.map +1 -0
  160. package/dist/core/extensions/builtin/compaction/resume-slice.js +99 -0
  161. package/dist/core/extensions/builtin/compaction/resume-slice.js.map +1 -0
  162. package/dist/core/extensions/builtin/compaction/speculative.d.ts.map +1 -1
  163. package/dist/core/extensions/builtin/compaction/summarization-retry.js.map +1 -1
  164. package/dist/core/extensions/builtin/config-reload/index.d.ts.map +1 -1
  165. package/dist/core/extensions/builtin/config-reload/index.js.map +1 -1
  166. package/dist/core/extensions/builtin/config-reload/log.js.map +1 -1
  167. package/dist/core/extensions/builtin/config-reload/protocol.d.ts.map +1 -1
  168. package/dist/core/extensions/builtin/config-reload/reload-deferral.d.ts.map +1 -1
  169. package/dist/core/extensions/builtin/config-reload/watch-engine.d.ts.map +1 -1
  170. package/dist/core/extensions/builtin/config-reload/watch-event-source.js.map +1 -1
  171. package/dist/core/extensions/builtin/cursor-cli-oauth/account-command.js.map +1 -1
  172. package/dist/core/extensions/builtin/cursor-cli-oauth/accounts.d.ts.map +1 -1
  173. package/dist/core/extensions/builtin/cursor-cli-oauth/affinity.d.ts.map +1 -1
  174. package/dist/core/extensions/builtin/cursor-cli-oauth/affinity.js.map +1 -1
  175. package/dist/core/extensions/builtin/cursor-cli-oauth/diagnostics.d.ts.map +1 -1
  176. package/dist/core/extensions/builtin/cursor-cli-oauth/diagnostics.js.map +1 -1
  177. package/dist/core/extensions/builtin/cursor-cli-oauth/executable.d.ts.map +1 -1
  178. package/dist/core/extensions/builtin/cursor-cli-oauth/executable.js.map +1 -1
  179. package/dist/core/extensions/builtin/cursor-cli-oauth/failover.d.ts.map +1 -1
  180. package/dist/core/extensions/builtin/cursor-cli-oauth/guardrails.d.ts.map +1 -1
  181. package/dist/core/extensions/builtin/cursor-cli-oauth/guardrails.js.map +1 -1
  182. package/dist/core/extensions/builtin/cursor-cli-oauth/index.js.map +1 -1
  183. package/dist/core/extensions/builtin/cursor-cli-oauth/oauth-login.js.map +1 -1
  184. package/dist/core/extensions/builtin/cursor-cli-oauth/session-router.d.ts.map +1 -1
  185. package/dist/core/extensions/builtin/cursor-cli-oauth/session-router.js.map +1 -1
  186. package/dist/core/extensions/builtin/cursor-cli-oauth/stream-parser.d.ts.map +1 -1
  187. package/dist/core/extensions/builtin/cursor-cli-oauth/stream-parser.js.map +1 -1
  188. package/dist/core/extensions/builtin/cursor-cli-oauth/stream.js.map +1 -1
  189. package/dist/core/extensions/builtin/cursor-cli-oauth/transport.d.ts.map +1 -1
  190. package/dist/core/extensions/builtin/goal/cache-warm-renderer.js.map +1 -1
  191. package/dist/core/extensions/builtin/goal/command-registration.js.map +1 -1
  192. package/dist/core/extensions/builtin/goal/direct-input-lifecycle.d.ts.map +1 -1
  193. package/dist/core/extensions/builtin/goal/elapsed-ticker.d.ts.map +1 -1
  194. package/dist/core/extensions/builtin/goal/errors.d.ts.map +1 -1
  195. package/dist/core/extensions/builtin/goal/monitor-continuation.d.ts.map +1 -1
  196. package/dist/core/extensions/builtin/goal/monitor-continuation.js +57 -4
  197. package/dist/core/extensions/builtin/goal/monitor-continuation.js.map +1 -1
  198. package/dist/core/extensions/builtin/goal/persistence.js.map +1 -1
  199. package/dist/core/extensions/builtin/goal/prompt.d.ts.map +1 -1
  200. package/dist/core/extensions/builtin/goal/prompt.js +9 -6
  201. package/dist/core/extensions/builtin/goal/prompt.js.map +1 -1
  202. package/dist/core/extensions/builtin/goal/store.js.map +1 -1
  203. package/dist/core/extensions/builtin/goal/tool-registration.js +1 -1
  204. package/dist/core/extensions/builtin/goal/tool-registration.js.map +1 -1
  205. package/dist/core/extensions/builtin/goal/turn-usage.d.ts.map +1 -1
  206. package/dist/core/extensions/builtin/goal/types.d.ts.map +1 -1
  207. package/dist/core/extensions/builtin/goal/ui.js.map +1 -1
  208. package/dist/core/extensions/builtin/goal/wait-progress.js.map +1 -1
  209. package/dist/core/extensions/builtin/goal/wait-ticker.d.ts.map +1 -1
  210. package/dist/core/extensions/builtin/gpt-account.d.ts.map +1 -1
  211. package/dist/core/extensions/builtin/gpt-account.js +1 -0
  212. package/dist/core/extensions/builtin/gpt-account.js.map +1 -1
  213. package/dist/core/extensions/builtin/gpt-apply-patch/apply.js.map +1 -1
  214. package/dist/core/extensions/builtin/gpt-apply-patch/errors.d.ts.map +1 -1
  215. package/dist/core/extensions/builtin/gpt-apply-patch/extension.d.ts.map +1 -1
  216. package/dist/core/extensions/builtin/gpt-apply-patch/preview-format.js.map +1 -1
  217. package/dist/core/extensions/builtin/gpt-apply-patch/preview.js.map +1 -1
  218. package/dist/core/extensions/builtin/gpt-apply-patch/streaming-parser.d.ts.map +1 -1
  219. package/dist/core/extensions/builtin/gpt-apply-patch/tool.js.map +1 -1
  220. package/dist/core/extensions/builtin/help/panel.d.ts.map +1 -1
  221. package/dist/core/extensions/builtin/history-search/index.js.map +1 -1
  222. package/dist/core/extensions/builtin/history-search/overlay.d.ts.map +1 -1
  223. package/dist/core/extensions/builtin/hooks/command-runner.js.map +1 -1
  224. package/dist/core/extensions/builtin/hooks/dispatcher.js.map +1 -1
  225. package/dist/core/extensions/builtin/hooks/plugin-loader.js.map +1 -1
  226. package/dist/core/extensions/builtin/hooks/tool-adapter.js.map +1 -1
  227. package/dist/core/extensions/builtin/hooks/trust-storage.d.ts.map +1 -1
  228. package/dist/core/extensions/builtin/hooks/trust.js.map +1 -1
  229. package/dist/core/extensions/builtin/hooks/types.d.ts.map +1 -1
  230. package/dist/core/extensions/builtin/imagegen/index.js.map +1 -1
  231. package/dist/core/extensions/builtin/imagegen/params.d.ts +45 -0
  232. package/dist/core/extensions/builtin/imagegen/params.d.ts.map +1 -0
  233. package/dist/core/extensions/builtin/imagegen/params.js +81 -0
  234. package/dist/core/extensions/builtin/imagegen/params.js.map +1 -0
  235. package/dist/core/extensions/builtin/imagegen/paths.d.ts +10 -4
  236. package/dist/core/extensions/builtin/imagegen/paths.d.ts.map +1 -1
  237. package/dist/core/extensions/builtin/imagegen/paths.js +43 -10
  238. package/dist/core/extensions/builtin/imagegen/paths.js.map +1 -1
  239. package/dist/core/extensions/builtin/imagegen/reference-images.d.ts +20 -0
  240. package/dist/core/extensions/builtin/imagegen/reference-images.d.ts.map +1 -0
  241. package/dist/core/extensions/builtin/imagegen/reference-images.js +70 -0
  242. package/dist/core/extensions/builtin/imagegen/reference-images.js.map +1 -0
  243. package/dist/core/extensions/builtin/imagegen/skill/SKILL.md +58 -33
  244. package/dist/core/extensions/builtin/imagegen/tool.d.ts +15 -19
  245. package/dist/core/extensions/builtin/imagegen/tool.d.ts.map +1 -1
  246. package/dist/core/extensions/builtin/imagegen/tool.js +74 -52
  247. package/dist/core/extensions/builtin/imagegen/tool.js.map +1 -1
  248. package/dist/core/extensions/builtin/index.d.ts.map +1 -1
  249. package/dist/core/extensions/builtin/index.js +2 -0
  250. package/dist/core/extensions/builtin/index.js.map +1 -1
  251. package/dist/core/extensions/builtin/look-at/model-selector.d.ts.map +1 -1
  252. package/dist/core/extensions/builtin/look-at/runner.js.map +1 -1
  253. package/dist/core/extensions/builtin/loop/command.js.map +1 -1
  254. package/dist/core/extensions/builtin/loop/cron-planner.js.map +1 -1
  255. package/dist/core/extensions/builtin/loop/index.d.ts.map +1 -1
  256. package/dist/core/extensions/builtin/loop/index.js.map +1 -1
  257. package/dist/core/extensions/builtin/loop/loopfile.d.ts.map +1 -1
  258. package/dist/core/extensions/builtin/loop/scheduler.js.map +1 -1
  259. package/dist/core/extensions/builtin/loop/status.d.ts.map +1 -1
  260. package/dist/core/extensions/builtin/loop/store.d.ts.map +1 -1
  261. package/dist/core/extensions/builtin/loop/types.d.ts.map +1 -1
  262. package/dist/core/extensions/builtin/loop-guard/detectors.d.ts.map +1 -1
  263. package/dist/core/extensions/builtin/loop-guard/escalation.d.ts.map +1 -1
  264. package/dist/core/extensions/builtin/loop-guard/escalation.js.map +1 -1
  265. package/dist/core/extensions/builtin/loop-guard/index.js.map +1 -1
  266. package/dist/core/extensions/builtin/loop-guard/notice.js.map +1 -1
  267. package/dist/core/extensions/builtin/loop-guard/renderer.js.map +1 -1
  268. package/dist/core/extensions/builtin/loop-guard/tracker.d.ts.map +1 -1
  269. package/dist/core/extensions/builtin/mcp/active-set.js.map +1 -1
  270. package/dist/core/extensions/builtin/mcp/auth/callback.d.ts.map +1 -1
  271. package/dist/core/extensions/builtin/mcp/auth/oauth-errors.d.ts.map +1 -1
  272. package/dist/core/extensions/builtin/mcp/auth/oauth-errors.js.map +1 -1
  273. package/dist/core/extensions/builtin/mcp/auth/oauth-provider.d.ts.map +1 -1
  274. package/dist/core/extensions/builtin/mcp/auth/oauth-refresh.d.ts.map +1 -1
  275. package/dist/core/extensions/builtin/mcp/auth/oauth-refresh.js.map +1 -1
  276. package/dist/core/extensions/builtin/mcp/auth/oauth.js.map +1 -1
  277. package/dist/core/extensions/builtin/mcp/auth/token-store.d.ts.map +1 -1
  278. package/dist/core/extensions/builtin/mcp/catalog.js.map +1 -1
  279. package/dist/core/extensions/builtin/mcp/config-schema.d.ts +28 -28
  280. package/dist/core/extensions/builtin/mcp/config.d.ts.map +1 -1
  281. package/dist/core/extensions/builtin/mcp/connection.d.ts.map +1 -1
  282. package/dist/core/extensions/builtin/mcp/elicitation.d.ts.map +1 -1
  283. package/dist/core/extensions/builtin/mcp/elicitation.js.map +1 -1
  284. package/dist/core/extensions/builtin/mcp/errors.d.ts.map +1 -1
  285. package/dist/core/extensions/builtin/mcp/errors.js.map +1 -1
  286. package/dist/core/extensions/builtin/mcp/expose/register.js.map +1 -1
  287. package/dist/core/extensions/builtin/mcp/expose/session.js.map +1 -1
  288. package/dist/core/extensions/builtin/mcp/guard/output-guard.d.ts.map +1 -1
  289. package/dist/core/extensions/builtin/mcp/guard/output-guard.js.map +1 -1
  290. package/dist/core/extensions/builtin/mcp/log.js.map +1 -1
  291. package/dist/core/extensions/builtin/mcp/reconnect.d.ts.map +1 -1
  292. package/dist/core/extensions/builtin/mcp/service-register.js.map +1 -1
  293. package/dist/core/extensions/builtin/mcp/service.d.ts.map +1 -1
  294. package/dist/core/extensions/builtin/mcp/service.js.map +1 -1
  295. package/dist/core/extensions/builtin/nested-agents-md/core/errors.d.ts.map +1 -1
  296. package/dist/core/extensions/builtin/nested-agents-md/core/injection-cache.d.ts.map +1 -1
  297. package/dist/core/extensions/builtin/nested-agents-md/core/types.d.ts.map +1 -1
  298. package/dist/core/extensions/builtin/oauth-login-interaction.d.ts +13 -6
  299. package/dist/core/extensions/builtin/oauth-login-interaction.d.ts.map +1 -1
  300. package/dist/core/extensions/builtin/oauth-login-interaction.js +43 -19
  301. package/dist/core/extensions/builtin/oauth-login-interaction.js.map +1 -1
  302. package/dist/core/extensions/builtin/openai-image-gen/inject.d.ts +5 -3
  303. package/dist/core/extensions/builtin/openai-image-gen/inject.d.ts.map +1 -1
  304. package/dist/core/extensions/builtin/openai-image-gen/inject.js +7 -4
  305. package/dist/core/extensions/builtin/openai-image-gen/inject.js.map +1 -1
  306. package/dist/core/extensions/builtin/permission-system/arity.d.ts.map +1 -1
  307. package/dist/core/extensions/builtin/permission-system/parsers.d.ts.map +1 -1
  308. package/dist/core/extensions/builtin/permission-system/prompt.js.map +1 -1
  309. package/dist/core/extensions/builtin/permission-system/service.d.ts.map +1 -1
  310. package/dist/core/extensions/builtin/permission-system/service.js.map +1 -1
  311. package/dist/core/extensions/builtin/permission-system/types.d.ts.map +1 -1
  312. package/dist/core/extensions/builtin/permission-system/wildcard.d.ts.map +1 -1
  313. package/dist/core/extensions/builtin/prompt-preset/claude-fable-5-1.js +1 -1
  314. package/dist/core/extensions/builtin/prompt-preset/claude-fable-5-1.js.map +1 -1
  315. package/dist/core/extensions/builtin/prompt-preset/claude-fable-5.js +1 -1
  316. package/dist/core/extensions/builtin/prompt-preset/claude-fable-5.js.map +1 -1
  317. package/dist/core/extensions/builtin/prompt-preset/claude-opus-5.js +1 -1
  318. package/dist/core/extensions/builtin/prompt-preset/claude-opus-5.js.map +1 -1
  319. package/dist/core/extensions/builtin/prompt-preset/execution-tooling.d.ts.map +1 -1
  320. package/dist/core/extensions/builtin/prompt-preset/glm-5.d.ts +1 -1
  321. package/dist/core/extensions/builtin/prompt-preset/glm-5.d.ts.map +1 -1
  322. package/dist/core/extensions/builtin/prompt-preset/glm-5.js +1 -1
  323. package/dist/core/extensions/builtin/prompt-preset/glm-5.js.map +1 -1
  324. package/dist/core/extensions/builtin/prompt-preset/gpt-5.6.d.ts.map +1 -1
  325. package/dist/core/extensions/builtin/prompt-preset/gpt-5.6.js +1 -1
  326. package/dist/core/extensions/builtin/prompt-preset/gpt-5.6.js.map +1 -1
  327. package/dist/core/extensions/builtin/prompt-preset/gpt-6-astra.d.ts +4 -4
  328. package/dist/core/extensions/builtin/prompt-preset/gpt-6-astra.d.ts.map +1 -1
  329. package/dist/core/extensions/builtin/prompt-preset/gpt-6-astra.js +4 -4
  330. package/dist/core/extensions/builtin/prompt-preset/gpt-6-astra.js.map +1 -1
  331. package/dist/core/extensions/builtin/prompt-preset/kimi-k3.js +1 -1
  332. package/dist/core/extensions/builtin/prompt-preset/kimi-k3.js.map +1 -1
  333. package/dist/core/extensions/builtin/prompt-preset/presets.js.map +1 -1
  334. package/dist/core/extensions/builtin/rule-activation/renderer.js.map +1 -1
  335. package/dist/core/extensions/builtin/rules/commands.js.map +1 -1
  336. package/dist/core/extensions/builtin/rules/config.js.map +1 -1
  337. package/dist/core/extensions/builtin/rules/rules/errors.d.ts.map +1 -1
  338. package/dist/core/extensions/builtin/rules/rules/project-root.js.map +1 -1
  339. package/dist/core/extensions/builtin/rules/ui/dynamic-border.d.ts.map +1 -1
  340. package/dist/core/extensions/builtin/rules/ui/rules-banner.d.ts.map +1 -1
  341. package/dist/core/extensions/builtin/terminal/extension.d.ts.map +1 -1
  342. package/dist/core/extensions/builtin/terminal/manager.d.ts.map +1 -1
  343. package/dist/core/extensions/builtin/terminal/manager.js.map +1 -1
  344. package/dist/core/extensions/builtin/terminal/monitor-notify.d.ts.map +1 -1
  345. package/dist/core/extensions/builtin/terminal/monitor-registry.d.ts.map +1 -1
  346. package/dist/core/extensions/builtin/terminal/monitor-status-ticker.d.ts.map +1 -1
  347. package/dist/core/extensions/builtin/terminal/notify.d.ts.map +1 -1
  348. package/dist/core/extensions/builtin/terminal/restore.d.ts.map +1 -1
  349. package/dist/core/extensions/builtin/terminal/runtime-session.d.ts.map +1 -1
  350. package/dist/core/extensions/builtin/terminal/session-bundle.d.ts.map +1 -1
  351. package/dist/core/extensions/builtin/terminal/terminal-manifest.d.ts.map +1 -1
  352. package/dist/core/extensions/builtin/terminal/tools/render.d.ts.map +1 -1
  353. package/dist/core/extensions/builtin/todotools/index.js.map +1 -1
  354. package/dist/core/extensions/builtin/todotools/normalize.js.map +1 -1
  355. package/dist/core/extensions/builtin/todotools/todo-operations.js.map +1 -1
  356. package/dist/core/extensions/builtin/todotools/todo-widget-component.d.ts.map +1 -1
  357. package/dist/core/extensions/builtin/todotools/todo-widget-component.js.map +1 -1
  358. package/dist/core/extensions/builtin/todotools/tools/todo.js.map +1 -1
  359. package/dist/core/extensions/builtin/tool-search/native-search.d.ts.map +1 -1
  360. package/dist/core/extensions/builtin/tool-search/service.d.ts.map +1 -1
  361. package/dist/core/extensions/builtin/tool-search/service.js.map +1 -1
  362. package/dist/core/extensions/builtin/ttsr/detectors/leak-context.d.ts.map +1 -1
  363. package/dist/core/extensions/builtin/ttsr/detectors/token-grammar.d.ts.map +1 -1
  364. package/dist/core/extensions/builtin/ttsr/manager.d.ts.map +1 -1
  365. package/dist/core/extensions/builtin/ttsr/message-update.js.map +1 -1
  366. package/dist/core/extensions/builtin/ttsr/repetitive-turns-lane.d.ts.map +1 -1
  367. package/dist/core/extensions/builtin/ttsr/stream-utils.d.ts.map +1 -1
  368. package/dist/core/extensions/builtin/ttsr/watch.d.ts.map +1 -1
  369. package/dist/core/extensions/builtin/webfetch/webfetch/errors.d.ts.map +1 -1
  370. package/dist/core/extensions/builtin/webfetch/webfetch/tool.d.ts +1 -1
  371. package/dist/core/extensions/builtin/websearch/websearch/native.js.map +1 -1
  372. package/dist/core/extensions/loader.d.ts +2 -1
  373. package/dist/core/extensions/loader.d.ts.map +1 -1
  374. package/dist/core/extensions/loader.js +17 -8
  375. package/dist/core/extensions/loader.js.map +1 -1
  376. package/dist/core/extensions/notice/box.d.ts.map +1 -1
  377. package/dist/core/extensions/notice/box.js +13 -5
  378. package/dist/core/extensions/notice/box.js.map +1 -1
  379. package/dist/core/extensions/runner.d.ts +11 -0
  380. package/dist/core/extensions/runner.d.ts.map +1 -1
  381. package/dist/core/extensions/runner.js +23 -0
  382. package/dist/core/extensions/runner.js.map +1 -1
  383. package/dist/core/extensions/types.d.ts +76 -1
  384. package/dist/core/extensions/types.d.ts.map +1 -1
  385. package/dist/core/extensions/types.js.map +1 -1
  386. package/dist/core/footer-data-provider.d.ts.map +1 -1
  387. package/dist/core/footer-data-provider.js.map +1 -1
  388. package/dist/core/high-reasoning-warning.d.ts.map +1 -1
  389. package/dist/core/high-reasoning-warning.js +5 -1
  390. package/dist/core/high-reasoning-warning.js.map +1 -1
  391. package/dist/core/http-dispatcher.d.ts.map +1 -1
  392. package/dist/core/http-dispatcher.js.map +1 -1
  393. package/dist/core/keybindings.d.ts +182 -177
  394. package/dist/core/keybindings.d.ts.map +1 -1
  395. package/dist/core/keybindings.js +5 -0
  396. package/dist/core/keybindings.js.map +1 -1
  397. package/dist/core/lockfile-policy.d.ts.map +1 -1
  398. package/dist/core/manual-continue.d.ts +14 -0
  399. package/dist/core/manual-continue.d.ts.map +1 -1
  400. package/dist/core/manual-continue.js +13 -0
  401. package/dist/core/manual-continue.js.map +1 -1
  402. package/dist/core/messages.js.map +1 -1
  403. package/dist/core/model-config-schema.d.ts +150 -150
  404. package/dist/core/model-config-schema.d.ts.map +1 -1
  405. package/dist/core/model-config.d.ts.map +1 -1
  406. package/dist/core/model-config.js.map +1 -1
  407. package/dist/core/model-registry.d.ts.map +1 -1
  408. package/dist/core/model-registry.js.map +1 -1
  409. package/dist/core/model-resolver.d.ts.map +1 -1
  410. package/dist/core/model-resolver.js +1 -0
  411. package/dist/core/model-resolver.js.map +1 -1
  412. package/dist/core/model-runtime.d.ts.map +1 -1
  413. package/dist/core/model-runtime.js.map +1 -1
  414. package/dist/core/models-store.d.ts.map +1 -1
  415. package/dist/core/models-store.js.map +1 -1
  416. package/dist/core/package-manager.d.ts.map +1 -1
  417. package/dist/core/provider-display-names.d.ts.map +1 -1
  418. package/dist/core/provider-display-names.js +1 -0
  419. package/dist/core/provider-display-names.js.map +1 -1
  420. package/dist/core/remote-catalog-provider.js.map +1 -1
  421. package/dist/core/resource-loader.d.ts +2 -0
  422. package/dist/core/resource-loader.d.ts.map +1 -1
  423. package/dist/core/resource-loader.js +11 -7
  424. package/dist/core/resource-loader.js.map +1 -1
  425. package/dist/core/retry-fallback/controller.d.ts.map +1 -1
  426. package/dist/core/retry-fallback/cooldown.d.ts.map +1 -1
  427. package/dist/core/retry-fallback/cooldown.js.map +1 -1
  428. package/dist/core/retry-fallback/expansion.js.map +1 -1
  429. package/dist/core/retry-fallback/log.js.map +1 -1
  430. package/dist/core/retry-fallback/probe-scheduler.d.ts.map +1 -1
  431. package/dist/core/runtime-credentials.d.ts.map +1 -1
  432. package/dist/core/sdk.d.ts.map +1 -1
  433. package/dist/core/sdk.js +24 -1
  434. package/dist/core/sdk.js.map +1 -1
  435. package/dist/core/session-activity.d.ts.map +1 -1
  436. package/dist/core/session-cwd.d.ts.map +1 -1
  437. package/dist/core/session-log.js.map +1 -1
  438. package/dist/core/session-manager.d.ts +35 -1
  439. package/dist/core/session-manager.d.ts.map +1 -1
  440. package/dist/core/session-manager.js +15 -0
  441. package/dist/core/session-manager.js.map +1 -1
  442. package/dist/core/session-resident-store.d.ts.map +1 -1
  443. package/dist/core/session-sidecar-store.d.ts.map +1 -1
  444. package/dist/core/session-summary-lru.d.ts.map +1 -1
  445. package/dist/core/session-work-barrier.d.ts.map +1 -1
  446. package/dist/core/settings-manager.d.ts +6 -1
  447. package/dist/core/settings-manager.d.ts.map +1 -1
  448. package/dist/core/settings-manager.js +14 -0
  449. package/dist/core/settings-manager.js.map +1 -1
  450. package/dist/core/settings-shapes.d.ts +7 -0
  451. package/dist/core/settings-shapes.d.ts.map +1 -1
  452. package/dist/core/settings-shapes.js +3 -1
  453. package/dist/core/settings-shapes.js.map +1 -1
  454. package/dist/core/telemetry.js.map +1 -1
  455. package/dist/core/timings.js.map +1 -1
  456. package/dist/core/tools/bash.d.ts.map +1 -1
  457. package/dist/core/tools/bounded-realpath.js.map +1 -1
  458. package/dist/core/tools/edit.d.ts.map +1 -1
  459. package/dist/core/tools/find.d.ts.map +1 -1
  460. package/dist/core/tools/find.js.map +1 -1
  461. package/dist/core/tools/grep.d.ts.map +1 -1
  462. package/dist/core/tools/ls.d.ts.map +1 -1
  463. package/dist/core/tools/output-accumulator.d.ts.map +1 -1
  464. package/dist/core/tools/output-accumulator.js.map +1 -1
  465. package/dist/core/tools/powershell.d.ts.map +1 -1
  466. package/dist/core/tools/read-classifiers.d.ts +17 -0
  467. package/dist/core/tools/read-classifiers.d.ts.map +1 -0
  468. package/dist/core/tools/read-classifiers.js +26 -0
  469. package/dist/core/tools/read-classifiers.js.map +1 -0
  470. package/dist/core/tools/read.d.ts +5 -1
  471. package/dist/core/tools/read.d.ts.map +1 -1
  472. package/dist/core/tools/read.js +21 -1
  473. package/dist/core/tools/read.js.map +1 -1
  474. package/dist/core/tools/tail-window.d.ts.map +1 -1
  475. package/dist/core/tools/truncate.js.map +1 -1
  476. package/dist/core/tools/write-result.js.map +1 -1
  477. package/dist/core/tools/write.d.ts.map +1 -1
  478. package/dist/core/trust-manager.d.ts.map +1 -1
  479. package/dist/extensions/llama/client.d.ts.map +1 -1
  480. package/dist/extensions/llama/client.js.map +1 -1
  481. package/dist/extensions/llama/huggingface.d.ts.map +1 -1
  482. package/dist/extensions/llama/huggingface.js.map +1 -1
  483. package/dist/extensions/llama/provider.js.map +1 -1
  484. package/dist/from-source-config-guard.js.map +1 -1
  485. package/dist/index.d.ts +1 -0
  486. package/dist/index.d.ts.map +1 -1
  487. package/dist/index.js +1 -0
  488. package/dist/index.js.map +1 -1
  489. package/dist/main.d.ts.map +1 -1
  490. package/dist/main.js +4 -0
  491. package/dist/main.js.map +1 -1
  492. package/dist/modes/app-server/daemon/occupancy.d.ts.map +1 -1
  493. package/dist/modes/app-server/daemon/process.d.ts.map +1 -1
  494. package/dist/modes/app-server/daemon/process.js.map +1 -1
  495. package/dist/modes/app-server/daemon.js.map +1 -1
  496. package/dist/modes/app-server/protocol/collaboration-mode.d.ts.map +1 -1
  497. package/dist/modes/app-server/protocol/generated/v2/ToolRequestUserInputAnswer.d.ts +7 -0
  498. package/dist/modes/app-server/protocol/generated/v2/ToolRequestUserInputAnswer.d.ts.map +1 -0
  499. package/dist/modes/app-server/protocol/generated/v2/ToolRequestUserInputAnswer.js +4 -0
  500. package/dist/modes/app-server/protocol/generated/v2/ToolRequestUserInputAnswer.js.map +1 -0
  501. package/dist/modes/app-server/protocol/generated/v2/ToolRequestUserInputOption.d.ts +8 -0
  502. package/dist/modes/app-server/protocol/generated/v2/ToolRequestUserInputOption.d.ts.map +1 -0
  503. package/dist/modes/app-server/protocol/generated/v2/ToolRequestUserInputOption.js +4 -0
  504. package/dist/modes/app-server/protocol/generated/v2/ToolRequestUserInputOption.js.map +1 -0
  505. package/dist/modes/app-server/protocol/generated/v2/ToolRequestUserInputParams.d.ts +12 -0
  506. package/dist/modes/app-server/protocol/generated/v2/ToolRequestUserInputParams.d.ts.map +1 -0
  507. package/dist/modes/app-server/protocol/generated/v2/ToolRequestUserInputParams.js +4 -0
  508. package/dist/modes/app-server/protocol/generated/v2/ToolRequestUserInputParams.js.map +1 -0
  509. package/dist/modes/app-server/protocol/generated/v2/ToolRequestUserInputQuestion.d.ts +13 -0
  510. package/dist/modes/app-server/protocol/generated/v2/ToolRequestUserInputQuestion.d.ts.map +1 -0
  511. package/dist/modes/app-server/protocol/generated/v2/ToolRequestUserInputQuestion.js +4 -0
  512. package/dist/modes/app-server/protocol/generated/v2/ToolRequestUserInputQuestion.js.map +1 -0
  513. package/dist/modes/app-server/protocol/generated/v2/ToolRequestUserInputResponse.d.ts +10 -0
  514. package/dist/modes/app-server/protocol/generated/v2/ToolRequestUserInputResponse.d.ts.map +1 -0
  515. package/dist/modes/app-server/protocol/generated/v2/ToolRequestUserInputResponse.js +4 -0
  516. package/dist/modes/app-server/protocol/generated/v2/ToolRequestUserInputResponse.js.map +1 -0
  517. package/dist/modes/app-server/protocol/index.d.ts +2 -0
  518. package/dist/modes/app-server/protocol/index.d.ts.map +1 -1
  519. package/dist/modes/app-server/protocol/index.js.map +1 -1
  520. package/dist/modes/app-server/protocol/methods.d.ts +1 -0
  521. package/dist/modes/app-server/protocol/methods.d.ts.map +1 -1
  522. package/dist/modes/app-server/protocol/methods.js +1 -0
  523. package/dist/modes/app-server/protocol/methods.js.map +1 -1
  524. package/dist/modes/app-server/rpc/errors.d.ts.map +1 -1
  525. package/dist/modes/app-server/runtime.d.ts.map +1 -1
  526. package/dist/modes/app-server/runtime.js +22 -6
  527. package/dist/modes/app-server/runtime.js.map +1 -1
  528. package/dist/modes/app-server/search/fuzzy-files.js.map +1 -1
  529. package/dist/modes/app-server/search/fuzzy-search-service.d.ts.map +1 -1
  530. package/dist/modes/app-server/server/account.js.map +1 -1
  531. package/dist/modes/app-server/server/approval-bridge.d.ts.map +1 -1
  532. package/dist/modes/app-server/server/approval-types.d.ts.map +1 -1
  533. package/dist/modes/app-server/server/approval-ui-context.d.ts +2 -1
  534. package/dist/modes/app-server/server/approval-ui-context.d.ts.map +1 -1
  535. package/dist/modes/app-server/server/approval-ui-context.js +9 -1
  536. package/dist/modes/app-server/server/approval-ui-context.js.map +1 -1
  537. package/dist/modes/app-server/server/catalogs.js.map +1 -1
  538. package/dist/modes/app-server/server/config.js.map +1 -1
  539. package/dist/modes/app-server/server/connection.d.ts.map +1 -1
  540. package/dist/modes/app-server/server/models.js.map +1 -1
  541. package/dist/modes/app-server/server/notifications.d.ts.map +1 -1
  542. package/dist/modes/app-server/server/notifications.js.map +1 -1
  543. package/dist/modes/app-server/server/server-core.d.ts.map +1 -1
  544. package/dist/modes/app-server/server/server-core.js.map +1 -1
  545. package/dist/modes/app-server/server/skills.js.map +1 -1
  546. package/dist/modes/app-server/server/user-input-bridge.d.ts +16 -0
  547. package/dist/modes/app-server/server/user-input-bridge.d.ts.map +1 -0
  548. package/dist/modes/app-server/server/user-input-bridge.js +142 -0
  549. package/dist/modes/app-server/server/user-input-bridge.js.map +1 -0
  550. package/dist/modes/app-server/server/user-input-types.d.ts +43 -0
  551. package/dist/modes/app-server/server/user-input-types.d.ts.map +1 -0
  552. package/dist/modes/app-server/server/user-input-types.js +51 -0
  553. package/dist/modes/app-server/server/user-input-types.js.map +1 -0
  554. package/dist/modes/app-server/threads/archive-state.d.ts.map +1 -1
  555. package/dist/modes/app-server/threads/handlers.js.map +1 -1
  556. package/dist/modes/app-server/threads/mcp-wire-status.d.ts.map +1 -1
  557. package/dist/modes/app-server/threads/metadata-state.d.ts.map +1 -1
  558. package/dist/modes/app-server/threads/projection-file-changes.js.map +1 -1
  559. package/dist/modes/app-server/threads/projection-message-items.d.ts.map +1 -1
  560. package/dist/modes/app-server/threads/projection-turn-diff.d.ts.map +1 -1
  561. package/dist/modes/app-server/threads/projection-web-search.js.map +1 -1
  562. package/dist/modes/app-server/threads/projection.d.ts.map +1 -1
  563. package/dist/modes/app-server/threads/registry.d.ts.map +1 -1
  564. package/dist/modes/app-server/threads/registry.js.map +1 -1
  565. package/dist/modes/app-server/threads/search-cache.d.ts.map +1 -1
  566. package/dist/modes/app-server/threads/turn-log.d.ts.map +1 -1
  567. package/dist/modes/app-server/threads/turn-runtime.d.ts.map +1 -1
  568. package/dist/modes/app-server/threads/turn-runtime.js.map +1 -1
  569. package/dist/modes/app-server/threads/turns.js.map +1 -1
  570. package/dist/modes/app-server/threads/wire-thread.js.map +1 -1
  571. package/dist/modes/app-server/transports/unix-socket.d.ts.map +1 -1
  572. package/dist/modes/app-server/transports/unix-socket.js.map +1 -1
  573. package/dist/modes/app-server/transports/websocket.d.ts.map +1 -1
  574. package/dist/modes/app-server/turn-adapter.d.ts +3 -3
  575. package/dist/modes/app-server/turn-adapter.d.ts.map +1 -1
  576. package/dist/modes/app-server/turn-adapter.js +36 -5
  577. package/dist/modes/app-server/turn-adapter.js.map +1 -1
  578. package/dist/modes/interactive/compaction-queue-transfer.js.map +1 -1
  579. package/dist/modes/interactive/components/armin.d.ts.map +1 -1
  580. package/dist/modes/interactive/components/armin.js.map +1 -1
  581. package/dist/modes/interactive/components/ask-user-async-widget.d.ts +39 -0
  582. package/dist/modes/interactive/components/ask-user-async-widget.d.ts.map +1 -0
  583. package/dist/modes/interactive/components/ask-user-async-widget.js +82 -0
  584. package/dist/modes/interactive/components/ask-user-async-widget.js.map +1 -0
  585. package/dist/modes/interactive/components/ask-user-question-keys.d.ts +21 -0
  586. package/dist/modes/interactive/components/ask-user-question-keys.d.ts.map +1 -0
  587. package/dist/modes/interactive/components/ask-user-question-keys.js +115 -0
  588. package/dist/modes/interactive/components/ask-user-question-keys.js.map +1 -0
  589. package/dist/modes/interactive/components/ask-user-question-render.d.ts +17 -0
  590. package/dist/modes/interactive/components/ask-user-question-render.d.ts.map +1 -0
  591. package/dist/modes/interactive/components/ask-user-question-render.js +75 -0
  592. package/dist/modes/interactive/components/ask-user-question-render.js.map +1 -0
  593. package/dist/modes/interactive/components/ask-user-question-state.d.ts +52 -0
  594. package/dist/modes/interactive/components/ask-user-question-state.d.ts.map +1 -0
  595. package/dist/modes/interactive/components/ask-user-question-state.js +134 -0
  596. package/dist/modes/interactive/components/ask-user-question-state.js.map +1 -0
  597. package/dist/modes/interactive/components/ask-user-question.d.ts +50 -0
  598. package/dist/modes/interactive/components/ask-user-question.d.ts.map +1 -0
  599. package/dist/modes/interactive/components/ask-user-question.js +148 -0
  600. package/dist/modes/interactive/components/ask-user-question.js.map +1 -0
  601. package/dist/modes/interactive/components/assistant-message.d.ts.map +1 -1
  602. package/dist/modes/interactive/components/assistant-message.js.map +1 -1
  603. package/dist/modes/interactive/components/assistant-render-descriptors.js.map +1 -1
  604. package/dist/modes/interactive/components/bash-execution.d.ts.map +1 -1
  605. package/dist/modes/interactive/components/bordered-loader.d.ts.map +1 -1
  606. package/dist/modes/interactive/components/branch-summary-message.d.ts.map +1 -1
  607. package/dist/modes/interactive/components/branch-summary-message.js.map +1 -1
  608. package/dist/modes/interactive/components/compaction-summary-message.d.ts.map +1 -1
  609. package/dist/modes/interactive/components/compaction-summary-message.js.map +1 -1
  610. package/dist/modes/interactive/components/config-selector.d.ts.map +1 -1
  611. package/dist/modes/interactive/components/config-selector.js.map +1 -1
  612. package/dist/modes/interactive/components/continuity-notice.d.ts.map +1 -1
  613. package/dist/modes/interactive/components/countdown-timer.d.ts.map +1 -1
  614. package/dist/modes/interactive/components/custom-editor.d.ts.map +1 -1
  615. package/dist/modes/interactive/components/custom-entry.d.ts.map +1 -1
  616. package/dist/modes/interactive/components/custom-message.d.ts.map +1 -1
  617. package/dist/modes/interactive/components/custom-message.js.map +1 -1
  618. package/dist/modes/interactive/components/daxnuts.d.ts.map +1 -1
  619. package/dist/modes/interactive/components/diff.js.map +1 -1
  620. package/dist/modes/interactive/components/dynamic-border.d.ts.map +1 -1
  621. package/dist/modes/interactive/components/dynamic-border.js.map +1 -1
  622. package/dist/modes/interactive/components/earendil-announcement.d.ts.map +1 -1
  623. package/dist/modes/interactive/components/extension-editor.d.ts.map +1 -1
  624. package/dist/modes/interactive/components/extension-input.d.ts.map +1 -1
  625. package/dist/modes/interactive/components/extension-selector.d.ts.map +1 -1
  626. package/dist/modes/interactive/components/extension-selector.js.map +1 -1
  627. package/dist/modes/interactive/components/favorite-models-selector.d.ts.map +1 -1
  628. package/dist/modes/interactive/components/first-time-setup.d.ts.map +1 -1
  629. package/dist/modes/interactive/components/footer.d.ts.map +1 -1
  630. package/dist/modes/interactive/components/keybinding-hints.js.map +1 -1
  631. package/dist/modes/interactive/components/login-dialog.d.ts.map +1 -1
  632. package/dist/modes/interactive/components/login-dialog.js.map +1 -1
  633. package/dist/modes/interactive/components/model-selector.d.ts.map +1 -1
  634. package/dist/modes/interactive/components/oauth-selector.d.ts.map +1 -1
  635. package/dist/modes/interactive/components/progressive-transcript-container.d.ts.map +1 -1
  636. package/dist/modes/interactive/components/render-signature.js.map +1 -1
  637. package/dist/modes/interactive/components/scoped-models-selector.d.ts.map +1 -1
  638. package/dist/modes/interactive/components/session-selector-search.js.map +1 -1
  639. package/dist/modes/interactive/components/session-selector.d.ts.map +1 -1
  640. package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
  641. package/dist/modes/interactive/components/settings-selector.js.map +1 -1
  642. package/dist/modes/interactive/components/shortcut-overlay.d.ts.map +1 -1
  643. package/dist/modes/interactive/components/show-images-selector.d.ts.map +1 -1
  644. package/dist/modes/interactive/components/skill-invocation-message.d.ts.map +1 -1
  645. package/dist/modes/interactive/components/skill-invocation-message.js.map +1 -1
  646. package/dist/modes/interactive/components/status-indicator.d.ts.map +1 -1
  647. package/dist/modes/interactive/components/theme-selector.d.ts.map +1 -1
  648. package/dist/modes/interactive/components/thinking-selector.d.ts.map +1 -1
  649. package/dist/modes/interactive/components/tool-execution-images.d.ts.map +1 -1
  650. package/dist/modes/interactive/components/tool-execution-renderer.d.ts.map +1 -1
  651. package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
  652. package/dist/modes/interactive/components/tool-execution.js.map +1 -1
  653. package/dist/modes/interactive/components/tool-renderer-boundary.d.ts.map +1 -1
  654. package/dist/modes/interactive/components/tree-selector.d.ts +4 -0
  655. package/dist/modes/interactive/components/tree-selector.d.ts.map +1 -1
  656. package/dist/modes/interactive/components/tree-selector.js +24 -0
  657. package/dist/modes/interactive/components/tree-selector.js.map +1 -1
  658. package/dist/modes/interactive/components/trust-selector.d.ts.map +1 -1
  659. package/dist/modes/interactive/components/user-message-selector.d.ts.map +1 -1
  660. package/dist/modes/interactive/components/user-message.d.ts.map +1 -1
  661. package/dist/modes/interactive/components/user-message.js.map +1 -1
  662. package/dist/modes/interactive/components/visual-truncate.js.map +1 -1
  663. package/dist/modes/interactive/grok/chrome.d.ts.map +1 -1
  664. package/dist/modes/interactive/grok/footer.d.ts.map +1 -1
  665. package/dist/modes/interactive/grok/input-card.d.ts.map +1 -1
  666. package/dist/modes/interactive/grok/palette.d.ts.map +1 -1
  667. package/dist/modes/interactive/grok/tool-row.d.ts.map +1 -1
  668. package/dist/modes/interactive/grok/welcome-card.d.ts.map +1 -1
  669. package/dist/modes/interactive/interactive-host-runtime.d.ts +6 -0
  670. package/dist/modes/interactive/interactive-host-runtime.d.ts.map +1 -1
  671. package/dist/modes/interactive/interactive-host-runtime.js +32 -3
  672. package/dist/modes/interactive/interactive-host-runtime.js.map +1 -1
  673. package/dist/modes/interactive/interactive-mode.d.ts +48 -4
  674. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  675. package/dist/modes/interactive/interactive-mode.js +436 -103
  676. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  677. package/dist/modes/interactive/login-outcome.d.ts +20 -0
  678. package/dist/modes/interactive/login-outcome.d.ts.map +1 -0
  679. package/dist/modes/interactive/login-outcome.js +35 -0
  680. package/dist/modes/interactive/login-outcome.js.map +1 -0
  681. package/dist/modes/interactive/startup-tools.js.map +1 -1
  682. package/dist/modes/interactive/streaming-reveal-content.d.ts.map +1 -1
  683. package/dist/modes/interactive/streaming-reveal-content.js.map +1 -1
  684. package/dist/modes/interactive/streaming-reveal.d.ts.map +1 -1
  685. package/dist/modes/interactive/theme/theme-controller.d.ts.map +1 -1
  686. package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
  687. package/dist/modes/interactive/theme/theme.js.map +1 -1
  688. package/dist/modes/interactive/tips/catalog/input-tips.d.ts +7 -7
  689. package/dist/modes/interactive/tips/catalog/input-tips.d.ts.map +1 -1
  690. package/dist/modes/interactive/tips/catalog/input-tips.js +5 -0
  691. package/dist/modes/interactive/tips/catalog/input-tips.js.map +1 -1
  692. package/dist/modes/interactive/tips/catalog/model-tips.d.ts +1 -1
  693. package/dist/modes/interactive/tips/catalog/workspace-tips.d.ts +1 -1
  694. package/dist/modes/interactive/tips/scheduler.js.map +1 -1
  695. package/dist/modes/interactive/tips/working-tip.d.ts.map +1 -1
  696. package/dist/modes/interactive/tool-args-reveal.d.ts.map +1 -1
  697. package/dist/modes/interactive/tool-result-reveal.d.ts.map +1 -1
  698. package/dist/modes/print-mode.d.ts.map +1 -1
  699. package/dist/modes/print-mode.js +8 -0
  700. package/dist/modes/print-mode.js.map +1 -1
  701. package/dist/modes/provider-native-rendering.d.ts.map +1 -1
  702. package/dist/modes/provider-native-rendering.js +35 -0
  703. package/dist/modes/provider-native-rendering.js.map +1 -1
  704. package/dist/modes/rpc/connection-handler.d.ts.map +1 -1
  705. package/dist/modes/rpc/connection-handler.js +75 -2
  706. package/dist/modes/rpc/connection-handler.js.map +1 -1
  707. package/dist/modes/rpc/connection-question-bridge.d.ts +18 -0
  708. package/dist/modes/rpc/connection-question-bridge.d.ts.map +1 -0
  709. package/dist/modes/rpc/connection-question-bridge.js +156 -0
  710. package/dist/modes/rpc/connection-question-bridge.js.map +1 -0
  711. package/dist/modes/rpc/custom-capability.d.ts +2 -0
  712. package/dist/modes/rpc/custom-capability.d.ts.map +1 -1
  713. package/dist/modes/rpc/custom-capability.js +2 -0
  714. package/dist/modes/rpc/custom-capability.js.map +1 -1
  715. package/dist/modes/rpc/event-output-buffer.js.map +1 -1
  716. package/dist/modes/rpc/host-ensure.js.map +1 -1
  717. package/dist/modes/rpc/host-lifecycle.d.ts.map +1 -1
  718. package/dist/modes/rpc/host-lifecycle.js.map +1 -1
  719. package/dist/modes/rpc/host-watchdog.js.map +1 -1
  720. package/dist/modes/rpc/jsonl.js.map +1 -1
  721. package/dist/modes/rpc/multi-session-host.js.map +1 -1
  722. package/dist/modes/rpc/ownership-safe-lock.d.ts.map +1 -1
  723. package/dist/modes/rpc/ownership-safe-lock.js.map +1 -1
  724. package/dist/modes/rpc/rpc-client.d.ts +20 -1
  725. package/dist/modes/rpc/rpc-client.d.ts.map +1 -1
  726. package/dist/modes/rpc/rpc-client.js +35 -3
  727. package/dist/modes/rpc/rpc-client.js.map +1 -1
  728. package/dist/modes/rpc/rpc-input-validation.d.ts.map +1 -1
  729. package/dist/modes/rpc/rpc-input-validation.js +2 -0
  730. package/dist/modes/rpc/rpc-input-validation.js.map +1 -1
  731. package/dist/modes/rpc/rpc-types.d.ts +103 -3
  732. package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
  733. package/dist/modes/rpc/rpc-types.js +6 -0
  734. package/dist/modes/rpc/rpc-types.js.map +1 -1
  735. package/dist/modes/rpc/session-binding.js.map +1 -1
  736. package/dist/modes/rpc/session-command-router.d.ts +4 -4
  737. package/dist/modes/rpc/session-command-router.d.ts.map +1 -1
  738. package/dist/modes/rpc/session-command-router.js +14 -8
  739. package/dist/modes/rpc/session-command-router.js.map +1 -1
  740. package/dist/modes/rpc/session-event-fanout.d.ts +2 -0
  741. package/dist/modes/rpc/session-event-fanout.d.ts.map +1 -1
  742. package/dist/modes/rpc/session-event-fanout.js +25 -1
  743. package/dist/modes/rpc/session-event-fanout.js.map +1 -1
  744. package/dist/modes/rpc/session-event-writer.d.ts +7 -1
  745. package/dist/modes/rpc/session-event-writer.d.ts.map +1 -1
  746. package/dist/modes/rpc/session-event-writer.js +17 -4
  747. package/dist/modes/rpc/session-event-writer.js.map +1 -1
  748. package/dist/modes/rpc/session-extension-ui-requests.d.ts.map +1 -1
  749. package/dist/modes/rpc/session-registry.d.ts.map +1 -1
  750. package/dist/modes/rpc/session-registry.js +11 -1
  751. package/dist/modes/rpc/session-registry.js.map +1 -1
  752. package/dist/modes/rpc/session-worker-client.d.ts.map +1 -1
  753. package/dist/modes/rpc/session-worker-client.js.map +1 -1
  754. package/dist/modes/rpc/session-worker-protocol.d.ts.map +1 -1
  755. package/dist/modes/rpc/session-worker-requests.d.ts.map +1 -1
  756. package/dist/modes/rpc/session-worker-requests.js +1 -1
  757. package/dist/modes/rpc/session-worker-requests.js.map +1 -1
  758. package/dist/modes/rpc/session-worker.js +10 -2
  759. package/dist/modes/rpc/session-worker.js.map +1 -1
  760. package/dist/modes/rpc/socket-event-fanout.d.ts +14 -1
  761. package/dist/modes/rpc/socket-event-fanout.d.ts.map +1 -1
  762. package/dist/modes/rpc/socket-event-fanout.js +48 -2
  763. package/dist/modes/rpc/socket-event-fanout.js.map +1 -1
  764. package/dist/modes/rpc/socket-ownership.js.map +1 -1
  765. package/dist/modes/rpc/worker-session-registry.d.ts.map +1 -1
  766. package/dist/modes/rpc/worker-session-registry.js +2 -1
  767. package/dist/modes/rpc/worker-session-registry.js.map +1 -1
  768. package/dist/package-manager-cli.js.map +1 -1
  769. package/dist/self-update-bootstrap.js.map +1 -1
  770. package/dist/utils/ansi.js.map +1 -1
  771. package/dist/utils/clipboard-image.js.map +1 -1
  772. package/dist/utils/clipboard-native.js.map +1 -1
  773. package/dist/utils/clipboard.js.map +1 -1
  774. package/dist/utils/exif-orientation.js.map +1 -1
  775. package/dist/utils/frontmatter.d.ts.map +1 -1
  776. package/dist/utils/image-resize.js.map +1 -1
  777. package/dist/utils/management-http.js.map +1 -1
  778. package/dist/utils/paths.js.map +1 -1
  779. package/dist/utils/photon.js.map +1 -1
  780. package/dist/utils/pi-user-agent.js.map +1 -1
  781. package/dist/utils/shell.d.ts.map +1 -1
  782. package/dist/utils/shell.js.map +1 -1
  783. package/dist/utils/syntax-highlight.js.map +1 -1
  784. package/dist/utils/version-check.js.map +1 -1
  785. package/docs/app-server.md +14 -0
  786. package/docs/extensions.md +28 -1
  787. package/docs/keybindings.md +1 -0
  788. package/docs/providers.md +1 -0
  789. package/docs/rpc.md +95 -3
  790. package/docs/settings.md +18 -0
  791. package/docs/skills.md +1 -1
  792. package/docs/tui.md +6 -0
  793. package/docs/usage.md +2 -1
  794. package/node_modules/@code-yeongyu/senpi-codemode/CHANGELOG.md +42 -0
  795. package/node_modules/@code-yeongyu/senpi-codemode/README.md +17 -2
  796. package/node_modules/@code-yeongyu/senpi-codemode/package.json +4 -4
  797. package/node_modules/@code-yeongyu/senpi-codemode/src/config/settings.ts +35 -15
  798. package/node_modules/@code-yeongyu/senpi-codemode/src/index.ts +13 -2
  799. package/node_modules/@code-yeongyu/senpi-codemode/src/prompt/eval-prompt-template.ts +76 -0
  800. package/node_modules/@code-yeongyu/senpi-codemode/src/prompt/eval-prompt.ts +6 -77
  801. package/node_modules/@code-yeongyu/senpi-codemode/src/timeouts/run-budget.ts +107 -0
  802. package/node_modules/@code-yeongyu/senpi-codemode/src/tool/cell-deadlines.ts +76 -0
  803. package/node_modules/@code-yeongyu/senpi-codemode/src/tool/cell-execution.ts +25 -14
  804. package/node_modules/@code-yeongyu/senpi-codemode/src/tool/detached-cell-contract.ts +4 -0
  805. package/node_modules/@code-yeongyu/senpi-codemode/src/tool/detached-cell-manager.ts +47 -40
  806. package/node_modules/@code-yeongyu/senpi-codemode/src/tool/detached-cell-notification.ts +2 -0
  807. package/node_modules/@code-yeongyu/senpi-codemode/src/tool/detached-cell-snapshot.ts +5 -0
  808. package/node_modules/@code-yeongyu/senpi-codemode/src/tool/eval-tool-options.ts +8 -3
  809. package/node_modules/@code-yeongyu/senpi-codemode/src/tool/eval-tool.ts +17 -187
  810. package/node_modules/@code-yeongyu/senpi-codemode/src/tool/run-eval-cell.ts +189 -0
  811. package/node_modules/@code-yeongyu/senpi-codemode/src/tool/types.ts +66 -56
  812. package/node_modules/@earendil-works/pi-agent-core/dist/agent-loop.d.ts.map +1 -1
  813. package/node_modules/@earendil-works/pi-agent-core/dist/agent-loop.js +1 -1
  814. package/node_modules/@earendil-works/pi-agent-core/dist/agent-loop.js.map +1 -1
  815. package/node_modules/@earendil-works/pi-agent-core/dist/agent.d.ts.map +1 -1
  816. package/node_modules/@earendil-works/pi-agent-core/dist/agent.js.map +1 -1
  817. package/node_modules/@earendil-works/pi-agent-core/dist/assistant-terminal-state.d.ts.map +1 -1
  818. package/node_modules/@earendil-works/pi-agent-core/dist/harness/agent-harness.d.ts.map +1 -1
  819. package/node_modules/@earendil-works/pi-agent-core/dist/harness/compaction/branch-summarization.js.map +1 -1
  820. package/node_modules/@earendil-works/pi-agent-core/dist/harness/compaction/compaction.js.map +1 -1
  821. package/node_modules/@earendil-works/pi-agent-core/dist/harness/env/nodejs.d.ts.map +1 -1
  822. package/node_modules/@earendil-works/pi-agent-core/dist/harness/env/nodejs.js.map +1 -1
  823. package/node_modules/@earendil-works/pi-agent-core/dist/harness/events.d.ts.map +1 -1
  824. package/node_modules/@earendil-works/pi-agent-core/dist/harness/messages.js.map +1 -1
  825. package/node_modules/@earendil-works/pi-agent-core/dist/harness/prompt-templates.js.map +1 -1
  826. package/node_modules/@earendil-works/pi-agent-core/dist/harness/reducer.d.ts.map +1 -1
  827. package/node_modules/@earendil-works/pi-agent-core/dist/harness/reducer.js.map +1 -1
  828. package/node_modules/@earendil-works/pi-agent-core/dist/harness/result.d.ts.map +1 -1
  829. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/context.js.map +1 -1
  830. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl/errors.d.ts.map +1 -1
  831. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl/repo.d.ts.map +1 -1
  832. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl/repo.js.map +1 -1
  833. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl/storage.d.ts.map +1 -1
  834. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl/storage.js.map +1 -1
  835. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/memory.d.ts.map +1 -1
  836. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/memory.js.map +1 -1
  837. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/session.d.ts.map +1 -1
  838. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/session.js.map +1 -1
  839. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/state.d.ts.map +1 -1
  840. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/state.js.map +1 -1
  841. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/testing/conformance.js.map +1 -1
  842. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/types.d.ts.map +1 -1
  843. package/node_modules/@earendil-works/pi-agent-core/dist/harness/telemetry.d.ts +36 -36
  844. package/node_modules/@earendil-works/pi-agent-core/dist/harness/telemetry.d.ts.map +1 -1
  845. package/node_modules/@earendil-works/pi-agent-core/dist/harness/types.d.ts.map +1 -1
  846. package/node_modules/@earendil-works/pi-agent-core/dist/harness/utils/truncate.js.map +1 -1
  847. package/node_modules/@earendil-works/pi-agent-core/dist/proxy.d.ts.map +1 -1
  848. package/node_modules/@earendil-works/pi-agent-core/dist/proxy.js.map +1 -1
  849. package/node_modules/@earendil-works/pi-agent-core/dist/search/scanning.js.map +1 -1
  850. package/node_modules/@earendil-works/pi-agent-core/dist/types.d.ts +5 -0
  851. package/node_modules/@earendil-works/pi-agent-core/dist/types.d.ts.map +1 -1
  852. package/node_modules/@earendil-works/pi-agent-core/dist/types.js.map +1 -1
  853. package/node_modules/@earendil-works/pi-agent-core/package.json +4 -4
  854. package/node_modules/@earendil-works/pi-ai/README.md +1 -0
  855. package/node_modules/@earendil-works/pi-ai/dist/api/anthropic-messages.d.ts +3 -1
  856. package/node_modules/@earendil-works/pi-ai/dist/api/anthropic-messages.d.ts.map +1 -1
  857. package/node_modules/@earendil-works/pi-ai/dist/api/anthropic-messages.js +6 -2
  858. package/node_modules/@earendil-works/pi-ai/dist/api/anthropic-messages.js.map +1 -1
  859. package/node_modules/@earendil-works/pi-ai/dist/api/azure-openai-responses.js.map +1 -1
  860. package/node_modules/@earendil-works/pi-ai/dist/api/bedrock-converse-stream.js.map +1 -1
  861. package/node_modules/@earendil-works/pi-ai/dist/api/bedrock-converse-stream.lazy.js.map +1 -1
  862. package/node_modules/@earendil-works/pi-ai/dist/api/context-room.d.ts.map +1 -1
  863. package/node_modules/@earendil-works/pi-ai/dist/api/cursor-agent/gen/agent_pb.d.ts.map +1 -1
  864. package/node_modules/@earendil-works/pi-ai/dist/api/cursor-agent/measure.js.map +1 -1
  865. package/node_modules/@earendil-works/pi-ai/dist/api/cursor-agent/stream-retry.d.ts.map +1 -1
  866. package/node_modules/@earendil-works/pi-ai/dist/api/cursor-agent.js.map +1 -1
  867. package/node_modules/@earendil-works/pi-ai/dist/api/cursor-agent.lazy.js.map +1 -1
  868. package/node_modules/@earendil-works/pi-ai/dist/api/cursor-conversation-rotation.js.map +1 -1
  869. package/node_modules/@earendil-works/pi-ai/dist/api/google-generative-ai.js.map +1 -1
  870. package/node_modules/@earendil-works/pi-ai/dist/api/google-shared.js.map +1 -1
  871. package/node_modules/@earendil-works/pi-ai/dist/api/google-vertex.js.map +1 -1
  872. package/node_modules/@earendil-works/pi-ai/dist/api/openai-codex-responses.js.map +1 -1
  873. package/node_modules/@earendil-works/pi-ai/dist/api/openai-completions.d.ts.map +1 -1
  874. package/node_modules/@earendil-works/pi-ai/dist/api/openai-completions.js +5 -0
  875. package/node_modules/@earendil-works/pi-ai/dist/api/openai-completions.js.map +1 -1
  876. package/node_modules/@earendil-works/pi-ai/dist/api/openai-images-edit.d.ts +4 -0
  877. package/node_modules/@earendil-works/pi-ai/dist/api/openai-images-edit.d.ts.map +1 -0
  878. package/node_modules/@earendil-works/pi-ai/dist/api/openai-images-edit.js +15 -0
  879. package/node_modules/@earendil-works/pi-ai/dist/api/openai-images-edit.js.map +1 -0
  880. package/node_modules/@earendil-works/pi-ai/dist/api/openai-images-params.d.ts +60 -0
  881. package/node_modules/@earendil-works/pi-ai/dist/api/openai-images-params.d.ts.map +1 -0
  882. package/node_modules/@earendil-works/pi-ai/dist/api/openai-images-params.js +93 -0
  883. package/node_modules/@earendil-works/pi-ai/dist/api/openai-images-params.js.map +1 -0
  884. package/node_modules/@earendil-works/pi-ai/dist/api/openai-images-result.d.ts +12 -0
  885. package/node_modules/@earendil-works/pi-ai/dist/api/openai-images-result.d.ts.map +1 -0
  886. package/node_modules/@earendil-works/pi-ai/dist/api/openai-images-result.js +96 -0
  887. package/node_modules/@earendil-works/pi-ai/dist/api/openai-images-result.js.map +1 -0
  888. package/node_modules/@earendil-works/pi-ai/dist/api/openai-images.d.ts +3 -6
  889. package/node_modules/@earendil-works/pi-ai/dist/api/openai-images.d.ts.map +1 -1
  890. package/node_modules/@earendil-works/pi-ai/dist/api/openai-images.js +26 -119
  891. package/node_modules/@earendil-works/pi-ai/dist/api/openai-images.js.map +1 -1
  892. package/node_modules/@earendil-works/pi-ai/dist/api/openai-responses-shared.js.map +1 -1
  893. package/node_modules/@earendil-works/pi-ai/dist/api/openai-responses.js.map +1 -1
  894. package/node_modules/@earendil-works/pi-ai/dist/api/pi-messages.d.ts.map +1 -1
  895. package/node_modules/@earendil-works/pi-ai/dist/api/pi-messages.js.map +1 -1
  896. package/node_modules/@earendil-works/pi-ai/dist/api/transform-messages.js.map +1 -1
  897. package/node_modules/@earendil-works/pi-ai/dist/api/warm-prompt-cache.js.map +1 -1
  898. package/node_modules/@earendil-works/pi-ai/dist/auth/credential-store.d.ts.map +1 -1
  899. package/node_modules/@earendil-works/pi-ai/dist/auth/oauth/kimi-coding.d.ts.map +1 -1
  900. package/node_modules/@earendil-works/pi-ai/dist/auth/oauth/kimi-coding.js +5 -1
  901. package/node_modules/@earendil-works/pi-ai/dist/auth/oauth/kimi-coding.js.map +1 -1
  902. package/node_modules/@earendil-works/pi-ai/dist/auth/oauth/kimi-identity.d.ts +24 -0
  903. package/node_modules/@earendil-works/pi-ai/dist/auth/oauth/kimi-identity.d.ts.map +1 -0
  904. package/node_modules/@earendil-works/pi-ai/dist/auth/oauth/kimi-identity.js +86 -0
  905. package/node_modules/@earendil-works/pi-ai/dist/auth/oauth/kimi-identity.js.map +1 -0
  906. package/node_modules/@earendil-works/pi-ai/dist/auth/oauth/load.d.ts.map +1 -1
  907. package/node_modules/@earendil-works/pi-ai/dist/auth/oauth/load.js.map +1 -1
  908. package/node_modules/@earendil-works/pi-ai/dist/auth/oauth/openai-codex.js.map +1 -1
  909. package/node_modules/@earendil-works/pi-ai/dist/auth/oauth-refresh.d.ts +47 -0
  910. package/node_modules/@earendil-works/pi-ai/dist/auth/oauth-refresh.d.ts.map +1 -0
  911. package/node_modules/@earendil-works/pi-ai/dist/auth/oauth-refresh.js +126 -0
  912. package/node_modules/@earendil-works/pi-ai/dist/auth/oauth-refresh.js.map +1 -0
  913. package/node_modules/@earendil-works/pi-ai/dist/auth/pool/failover.d.ts.map +1 -1
  914. package/node_modules/@earendil-works/pi-ai/dist/auth/pool/select.d.ts.map +1 -1
  915. package/node_modules/@earendil-works/pi-ai/dist/auth/refresh-credential.d.ts +12 -0
  916. package/node_modules/@earendil-works/pi-ai/dist/auth/refresh-credential.d.ts.map +1 -0
  917. package/node_modules/@earendil-works/pi-ai/dist/auth/refresh-credential.js +44 -0
  918. package/node_modules/@earendil-works/pi-ai/dist/auth/refresh-credential.js.map +1 -0
  919. package/node_modules/@earendil-works/pi-ai/dist/auth/resolve.d.ts +2 -0
  920. package/node_modules/@earendil-works/pi-ai/dist/auth/resolve.d.ts.map +1 -1
  921. package/node_modules/@earendil-works/pi-ai/dist/auth/resolve.js +26 -35
  922. package/node_modules/@earendil-works/pi-ai/dist/auth/resolve.js.map +1 -1
  923. package/node_modules/@earendil-works/pi-ai/dist/compat.js.map +1 -1
  924. package/node_modules/@earendil-works/pi-ai/dist/cursor/model-capabilities.js.map +1 -1
  925. package/node_modules/@earendil-works/pi-ai/dist/cursor/selection-descriptor.js.map +1 -1
  926. package/node_modules/@earendil-works/pi-ai/dist/env-api-keys.d.ts.map +1 -1
  927. package/node_modules/@earendil-works/pi-ai/dist/env-api-keys.js +1 -0
  928. package/node_modules/@earendil-works/pi-ai/dist/env-api-keys.js.map +1 -1
  929. package/node_modules/@earendil-works/pi-ai/dist/image-models.generated.d.ts +99 -66
  930. package/node_modules/@earendil-works/pi-ai/dist/image-models.generated.d.ts.map +1 -1
  931. package/node_modules/@earendil-works/pi-ai/dist/image-models.generated.js +35 -2
  932. package/node_modules/@earendil-works/pi-ai/dist/image-models.generated.js.map +1 -1
  933. package/node_modules/@earendil-works/pi-ai/dist/images.d.ts +1 -0
  934. package/node_modules/@earendil-works/pi-ai/dist/images.d.ts.map +1 -1
  935. package/node_modules/@earendil-works/pi-ai/dist/images.js +1 -0
  936. package/node_modules/@earendil-works/pi-ai/dist/images.js.map +1 -1
  937. package/node_modules/@earendil-works/pi-ai/dist/models-store.d.ts.map +1 -1
  938. package/node_modules/@earendil-works/pi-ai/dist/models.d.ts.map +1 -1
  939. package/node_modules/@earendil-works/pi-ai/dist/models.generated.d.ts +2 -0
  940. package/node_modules/@earendil-works/pi-ai/dist/models.generated.d.ts.map +1 -1
  941. package/node_modules/@earendil-works/pi-ai/dist/models.generated.js +2 -0
  942. package/node_modules/@earendil-works/pi-ai/dist/models.generated.js.map +1 -1
  943. package/node_modules/@earendil-works/pi-ai/dist/models.js +3 -28
  944. package/node_modules/@earendil-works/pi-ai/dist/models.js.map +1 -1
  945. package/node_modules/@earendil-works/pi-ai/dist/node/provider-scope.d.ts.map +1 -1
  946. package/node_modules/@earendil-works/pi-ai/dist/providers/all.d.ts.map +1 -1
  947. package/node_modules/@earendil-works/pi-ai/dist/providers/all.js +2 -0
  948. package/node_modules/@earendil-works/pi-ai/dist/providers/all.js.map +1 -1
  949. package/node_modules/@earendil-works/pi-ai/dist/providers/data/.manifest.json +1 -1
  950. package/node_modules/@earendil-works/pi-ai/dist/providers/data/amazon-bedrock.json +1 -1
  951. package/node_modules/@earendil-works/pi-ai/dist/providers/data/nvidia.json +1 -1
  952. package/node_modules/@earendil-works/pi-ai/dist/providers/data/opencode-go.json +1 -1
  953. package/node_modules/@earendil-works/pi-ai/dist/providers/data/openrouter.json +1 -1
  954. package/node_modules/@earendil-works/pi-ai/dist/providers/data/venice.json +1 -0
  955. package/node_modules/@earendil-works/pi-ai/dist/providers/data/vercel-ai-gateway.json +1 -1
  956. package/node_modules/@earendil-works/pi-ai/dist/providers/faux.js.map +1 -1
  957. package/node_modules/@earendil-works/pi-ai/dist/providers/ollama.js.map +1 -1
  958. package/node_modules/@earendil-works/pi-ai/dist/providers/radius.js.map +1 -1
  959. package/node_modules/@earendil-works/pi-ai/dist/providers/venice.d.ts +3 -0
  960. package/node_modules/@earendil-works/pi-ai/dist/providers/venice.d.ts.map +1 -0
  961. package/node_modules/@earendil-works/pi-ai/dist/providers/venice.js +15 -0
  962. package/node_modules/@earendil-works/pi-ai/dist/providers/venice.js.map +1 -0
  963. package/node_modules/@earendil-works/pi-ai/dist/providers/venice.models.d.ts +4 -0
  964. package/node_modules/@earendil-works/pi-ai/dist/providers/venice.models.d.ts.map +1 -0
  965. package/node_modules/@earendil-works/pi-ai/dist/providers/venice.models.js +6 -0
  966. package/node_modules/@earendil-works/pi-ai/dist/providers/venice.models.js.map +1 -0
  967. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/context-transformer.js.map +1 -1
  968. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/protocols/anthropic-xml/recovery-wrapper-state.d.ts.map +1 -1
  969. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/protocols/kimi-xtml/parse.js.map +1 -1
  970. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/recovery-content-lifecycle.d.ts.map +1 -1
  971. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/recovery-event-stream.d.ts.map +1 -1
  972. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/recovery-native-projection.d.ts.map +1 -1
  973. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/recovery-native-projection.js.map +1 -1
  974. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/recovery-stream-terminal.d.ts.map +1 -1
  975. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/recovery-stream-wrapper.js.map +1 -1
  976. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/recovery-text-projection.d.ts.map +1 -1
  977. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/recovery-text-projection.js.map +1 -1
  978. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/stream-thinking-projection.d.ts.map +1 -1
  979. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/stream-wrapper-shared.d.ts.map +1 -1
  980. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/stream-wrapper-shared.js.map +1 -1
  981. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/stream-wrapper.js.map +1 -1
  982. package/node_modules/@earendil-works/pi-ai/dist/types.d.ts +20 -3
  983. package/node_modules/@earendil-works/pi-ai/dist/types.d.ts.map +1 -1
  984. package/node_modules/@earendil-works/pi-ai/dist/types.js.map +1 -1
  985. package/node_modules/@earendil-works/pi-ai/dist/utils/deferred-tools.js.map +1 -1
  986. package/node_modules/@earendil-works/pi-ai/dist/utils/event-stream.d.ts.map +1 -1
  987. package/node_modules/@earendil-works/pi-ai/dist/utils/prompt-cache-ttl.d.ts +3 -1
  988. package/node_modules/@earendil-works/pi-ai/dist/utils/prompt-cache-ttl.d.ts.map +1 -1
  989. package/node_modules/@earendil-works/pi-ai/dist/utils/prompt-cache-ttl.js.map +1 -1
  990. package/node_modules/@earendil-works/pi-ai/dist/utils/provider-retry.js.map +1 -1
  991. package/node_modules/@earendil-works/pi-ai/dist/utils/retry.js.map +1 -1
  992. package/node_modules/@earendil-works/pi-ai/dist/utils/validation.js.map +1 -1
  993. package/node_modules/@earendil-works/pi-ai/package.json +3 -3
  994. package/node_modules/@earendil-works/pi-pty/dist/loader.d.ts.map +1 -1
  995. package/node_modules/@earendil-works/pi-pty/dist/loader.js.map +1 -1
  996. package/node_modules/@earendil-works/pi-pty/dist/pipe-fallback.d.ts.map +1 -1
  997. package/node_modules/@earendil-works/pi-pty/dist/pipe-fallback.js.map +1 -1
  998. package/node_modules/@earendil-works/pi-pty/dist/quarantine.js.map +1 -1
  999. package/node_modules/@earendil-works/pi-pty/dist/registry-types.d.ts.map +1 -1
  1000. package/node_modules/@earendil-works/pi-pty/dist/registry.d.ts.map +1 -1
  1001. package/node_modules/@earendil-works/pi-pty/dist/registry.js.map +1 -1
  1002. package/node_modules/@earendil-works/pi-pty/dist/screen.d.ts.map +1 -1
  1003. package/node_modules/@earendil-works/pi-pty/dist/screen.js.map +1 -1
  1004. package/node_modules/@earendil-works/pi-pty/dist/session-bun.js.map +1 -1
  1005. package/node_modules/@earendil-works/pi-pty/dist/session.d.ts.map +1 -1
  1006. package/node_modules/@earendil-works/pi-pty/dist/session.js.map +1 -1
  1007. package/node_modules/@earendil-works/pi-pty/package.json +2 -2
  1008. package/node_modules/@earendil-works/pi-telemetry/package.json +1 -1
  1009. package/node_modules/@earendil-works/pi-tui/dist/alt-screen-search.d.ts.map +1 -1
  1010. package/node_modules/@earendil-works/pi-tui/dist/autocomplete.d.ts.map +1 -1
  1011. package/node_modules/@earendil-works/pi-tui/dist/autocomplete.js.map +1 -1
  1012. package/node_modules/@earendil-works/pi-tui/dist/components/alt-screen-flash.d.ts.map +1 -1
  1013. package/node_modules/@earendil-works/pi-tui/dist/components/box.d.ts.map +1 -1
  1014. package/node_modules/@earendil-works/pi-tui/dist/components/cancellable-loader.d.ts.map +1 -1
  1015. package/node_modules/@earendil-works/pi-tui/dist/components/editor.d.ts.map +1 -1
  1016. package/node_modules/@earendil-works/pi-tui/dist/components/editor.js.map +1 -1
  1017. package/node_modules/@earendil-works/pi-tui/dist/components/h-stack.d.ts.map +1 -1
  1018. package/node_modules/@earendil-works/pi-tui/dist/components/h-stack.js.map +1 -1
  1019. package/node_modules/@earendil-works/pi-tui/dist/components/image.d.ts.map +1 -1
  1020. package/node_modules/@earendil-works/pi-tui/dist/components/image.js.map +1 -1
  1021. package/node_modules/@earendil-works/pi-tui/dist/components/input.d.ts.map +1 -1
  1022. package/node_modules/@earendil-works/pi-tui/dist/components/latex.d.ts.map +1 -1
  1023. package/node_modules/@earendil-works/pi-tui/dist/components/loader.d.ts.map +1 -1
  1024. package/node_modules/@earendil-works/pi-tui/dist/components/loader.js.map +1 -1
  1025. package/node_modules/@earendil-works/pi-tui/dist/components/markdown.d.ts.map +1 -1
  1026. package/node_modules/@earendil-works/pi-tui/dist/components/markdown.js.map +1 -1
  1027. package/node_modules/@earendil-works/pi-tui/dist/components/scroll-view.d.ts.map +1 -1
  1028. package/node_modules/@earendil-works/pi-tui/dist/components/scroll-view.js.map +1 -1
  1029. package/node_modules/@earendil-works/pi-tui/dist/components/select-list.d.ts.map +1 -1
  1030. package/node_modules/@earendil-works/pi-tui/dist/components/select-list.js.map +1 -1
  1031. package/node_modules/@earendil-works/pi-tui/dist/components/settings-list.d.ts.map +1 -1
  1032. package/node_modules/@earendil-works/pi-tui/dist/components/settings-list.js.map +1 -1
  1033. package/node_modules/@earendil-works/pi-tui/dist/components/spacer.d.ts.map +1 -1
  1034. package/node_modules/@earendil-works/pi-tui/dist/components/spacer.js.map +1 -1
  1035. package/node_modules/@earendil-works/pi-tui/dist/components/stack.d.ts.map +1 -1
  1036. package/node_modules/@earendil-works/pi-tui/dist/components/stack.js.map +1 -1
  1037. package/node_modules/@earendil-works/pi-tui/dist/components/text.d.ts.map +1 -1
  1038. package/node_modules/@earendil-works/pi-tui/dist/components/text.js.map +1 -1
  1039. package/node_modules/@earendil-works/pi-tui/dist/components/truncated-text.d.ts.map +1 -1
  1040. package/node_modules/@earendil-works/pi-tui/dist/components/truncated-text.js.map +1 -1
  1041. package/node_modules/@earendil-works/pi-tui/dist/components/v-stack.d.ts.map +1 -1
  1042. package/node_modules/@earendil-works/pi-tui/dist/components/v-stack.js.map +1 -1
  1043. package/node_modules/@earendil-works/pi-tui/dist/image-markers.d.ts.map +1 -1
  1044. package/node_modules/@earendil-works/pi-tui/dist/index.js.map +1 -1
  1045. package/node_modules/@earendil-works/pi-tui/dist/keybindings.d.ts.map +1 -1
  1046. package/node_modules/@earendil-works/pi-tui/dist/keybindings.js.map +1 -1
  1047. package/node_modules/@earendil-works/pi-tui/dist/keys.d.ts.map +1 -1
  1048. package/node_modules/@earendil-works/pi-tui/dist/keys.js.map +1 -1
  1049. package/node_modules/@earendil-works/pi-tui/dist/kill-ring.d.ts.map +1 -1
  1050. package/node_modules/@earendil-works/pi-tui/dist/mux.js.map +1 -1
  1051. package/node_modules/@earendil-works/pi-tui/dist/native-modifiers.js.map +1 -1
  1052. package/node_modules/@earendil-works/pi-tui/dist/native-module-path.js.map +1 -1
  1053. package/node_modules/@earendil-works/pi-tui/dist/paste-markers.d.ts.map +1 -1
  1054. package/node_modules/@earendil-works/pi-tui/dist/stdin-buffer.d.ts.map +1 -1
  1055. package/node_modules/@earendil-works/pi-tui/dist/stdin-buffer.js.map +1 -1
  1056. package/node_modules/@earendil-works/pi-tui/dist/terminal-capabilities.js.map +1 -1
  1057. package/node_modules/@earendil-works/pi-tui/dist/terminal-image.js.map +1 -1
  1058. package/node_modules/@earendil-works/pi-tui/dist/terminal.d.ts.map +1 -1
  1059. package/node_modules/@earendil-works/pi-tui/dist/terminal.js.map +1 -1
  1060. package/node_modules/@earendil-works/pi-tui/dist/tmux-image-probe.js.map +1 -1
  1061. package/node_modules/@earendil-works/pi-tui/dist/tui-alt-screen.d.ts.map +1 -1
  1062. package/node_modules/@earendil-works/pi-tui/dist/tui-alt-screen.js.map +1 -1
  1063. package/node_modules/@earendil-works/pi-tui/dist/tui-main-screen.d.ts.map +1 -1
  1064. package/node_modules/@earendil-works/pi-tui/dist/tui.d.ts.map +1 -1
  1065. package/node_modules/@earendil-works/pi-tui/dist/tui.js.map +1 -1
  1066. package/node_modules/@earendil-works/pi-tui/dist/undo-stack.d.ts.map +1 -1
  1067. package/node_modules/@earendil-works/pi-tui/dist/utils.js.map +1 -1
  1068. package/node_modules/@earendil-works/pi-tui/package.json +2 -2
  1069. package/node_modules/css-tree/cjs/data-patch.cjs +853 -5
  1070. package/node_modules/css-tree/cjs/data.cjs +13598 -3
  1071. package/node_modules/css-tree/cjs/version.cjs +1 -3
  1072. package/node_modules/css-tree/lib/data-patch.js +853 -4
  1073. package/node_modules/css-tree/lib/data.js +13598 -5
  1074. package/node_modules/css-tree/lib/version.js +1 -5
  1075. package/package.json +8 -8
  1076. package/vendor/pi-client/client.d.ts.map +1 -1
  1077. package/vendor/pi-client/client.js.map +1 -1
  1078. package/vendor/pi-client/connection.d.ts.map +1 -1
  1079. package/vendor/pi-client/connection.js.map +1 -1
  1080. package/vendor/pi-client/errors.d.ts.map +1 -1
  1081. package/vendor/pi-client/session-handle.d.ts.map +1 -1
  1082. package/vendor/pi-client/state.d.ts.map +1 -1
  1083. package/vendor/pi-protocol/cbor/decoder.js.map +1 -1
  1084. package/vendor/pi-protocol/cbor/options.d.ts.map +1 -1
  1085. package/vendor/pi-protocol/codec.d.ts.map +1 -1
  1086. package/vendor/pi-protocol/codec.js.map +1 -1
  1087. package/vendor/pi-protocol/framing.d.ts.map +1 -1
  1088. package/vendor/pi-protocol/schemas.d.ts +678 -678
@@ -1 +1 @@
1
- {"version":3,"file":"footer-data-provider.js","sourceRoot":"","sources":["../../src/core/footer-data-provider.ts"],"names":[],"mappings":"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","sourcesContent":["import { type ExecFileException, execFile, spawnSync } from \"child_process\";\nimport { existsSync, type FSWatcher, readFileSync, type Stats, statSync, unwatchFile, watchFile } from \"fs\";\nimport { dirname, join, resolve } from \"path\";\nimport { closeWatcher, FS_WATCH_RETRY_DELAY_MS, watchWithErrorHandler } from \"../utils/fs-watch.ts\";\n\nexport type GitPaths = {\n\trepoDir: string;\n\tcommonGitDir: string;\n\theadPath: string;\n};\n\n/**\n * Find git metadata paths by walking up from cwd.\n * Handles both regular git repos (.git is a directory) and worktrees (.git is a file).\n */\nexport function findGitPaths(cwd: string): GitPaths | null {\n\tlet dir = cwd;\n\twhile (true) {\n\t\tconst gitPath = join(dir, \".git\");\n\t\tif (existsSync(gitPath)) {\n\t\t\ttry {\n\t\t\t\tconst stat = statSync(gitPath);\n\t\t\t\tif (stat.isFile()) {\n\t\t\t\t\tconst content = readFileSync(gitPath, \"utf8\").trim();\n\t\t\t\t\tif (content.startsWith(\"gitdir: \")) {\n\t\t\t\t\t\tconst gitDir = resolve(dir, content.slice(8).trim());\n\t\t\t\t\t\tconst headPath = join(gitDir, \"HEAD\");\n\t\t\t\t\t\tif (!existsSync(headPath)) return null;\n\t\t\t\t\t\tconst commonDirPath = join(gitDir, \"commondir\");\n\t\t\t\t\t\tconst commonGitDir = existsSync(commonDirPath)\n\t\t\t\t\t\t\t? resolve(gitDir, readFileSync(commonDirPath, \"utf8\").trim())\n\t\t\t\t\t\t\t: gitDir;\n\t\t\t\t\t\treturn { repoDir: dir, commonGitDir, headPath };\n\t\t\t\t\t}\n\t\t\t\t} else if (stat.isDirectory()) {\n\t\t\t\t\tconst headPath = join(gitPath, \"HEAD\");\n\t\t\t\t\tif (!existsSync(headPath)) return null;\n\t\t\t\t\treturn { repoDir: dir, commonGitDir: gitPath, headPath };\n\t\t\t\t}\n\t\t\t} catch {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t}\n\t\tconst parent = dirname(dir);\n\t\tif (parent === dir) return null;\n\t\tdir = parent;\n\t}\n}\n\n/** Ask git for the current branch. Returns null on detached HEAD or if git is unavailable. */\nfunction resolveBranchWithGitSync(repoDir: string): string | null {\n\tconst result = spawnSync(\"git\", [\"--no-optional-locks\", \"symbolic-ref\", \"--quiet\", \"--short\", \"HEAD\"], {\n\t\tcwd: repoDir,\n\t\tencoding: \"utf8\",\n\t\tstdio: [\"ignore\", \"pipe\", \"ignore\"],\n\t});\n\tconst branch = result.status === 0 ? result.stdout.trim() : \"\";\n\treturn branch || null;\n}\n\n/** Ask git for the current branch asynchronously. Returns null on detached HEAD or if git is unavailable. */\nfunction resolveBranchWithGitAsync(repoDir: string): Promise<string | null> {\n\treturn new Promise((resolvePromise) => {\n\t\texecFile(\n\t\t\t\"git\",\n\t\t\t[\"--no-optional-locks\", \"symbolic-ref\", \"--quiet\", \"--short\", \"HEAD\"],\n\t\t\t{\n\t\t\t\tcwd: repoDir,\n\t\t\t\tencoding: \"utf8\",\n\t\t\t},\n\t\t\t(error: ExecFileException | null, stdout: string) => {\n\t\t\t\tif (error) {\n\t\t\t\t\tresolvePromise(null);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst branch = stdout.trim();\n\t\t\t\tresolvePromise(branch || null);\n\t\t\t},\n\t\t);\n\t});\n}\n\nfunction isWslEnvironment(): boolean {\n\treturn process.platform === \"linux\" && !!(process.env.WSL_DISTRO_NAME || process.env.WSL_INTEROP);\n}\n\nfunction isWindowsMountedRepoPath(repoDir: string): boolean {\n\treturn /^\\/mnt\\/[a-z](?:\\/|$)/i.test(repoDir);\n}\n\nfunction shouldPollGitHead(repoDir: string): boolean {\n\treturn isWslEnvironment() && isWindowsMountedRepoPath(repoDir);\n}\n\n/**\n * Provides git branch and extension statuses - data not otherwise accessible to extensions.\n * Context usage on ctx.getContextUsage(), token stats on ctx.sessionManager.getEntries(), model info on ctx.model.\n */\nexport class FooterDataProvider {\n\tprivate cwd: string;\n\tprivate static readonly WATCH_DEBOUNCE_MS = 500;\n\n\tprivate extensionStatuses = new Map<string, string>();\n\tprivate cachedBranch: string | null | undefined = undefined;\n\tprivate gitPaths: GitPaths | null | undefined = undefined;\n\tprivate headWatcher: FSWatcher | null = null;\n\tprivate headWatchFilePath: string | null = null;\n\tprivate headWatchFileListener: ((current: Stats, previous: Stats) => void) | null = null;\n\tprivate reftableWatcher: FSWatcher | null = null;\n\tprivate reftableTablesListWatcher: FSWatcher | null = null;\n\tprivate reftableTablesListPath: string | null = null;\n\tprivate branchChangeCallbacks = new Set<() => void>();\n\tprivate availableProviderCount = 0;\n\tprivate refreshTimer: ReturnType<typeof setTimeout> | null = null;\n\tprivate gitWatcherRetryTimer: ReturnType<typeof setTimeout> | null = null;\n\tprivate refreshInFlight = false;\n\tprivate refreshPending = false;\n\tprivate disposed = false;\n\n\tconstructor(cwd: string) {\n\t\tthis.cwd = cwd;\n\t\tthis.gitPaths = findGitPaths(cwd);\n\t\tthis.setupGitWatcher();\n\t}\n\n\t/** Current git branch, null if not in repo, \"detached\" if detached HEAD */\n\tgetGitBranch(): string | null {\n\t\tif (this.cachedBranch === undefined) {\n\t\t\tthis.cachedBranch = this.resolveGitBranchSync();\n\t\t}\n\t\treturn this.cachedBranch;\n\t}\n\n\t/** Extension status texts set via ctx.ui.setStatus() */\n\tgetExtensionStatuses(): ReadonlyMap<string, string> {\n\t\treturn this.extensionStatuses;\n\t}\n\n\t/** Subscribe to git branch changes. Returns unsubscribe function. */\n\tonBranchChange(callback: () => void): () => void {\n\t\tthis.branchChangeCallbacks.add(callback);\n\t\treturn () => this.branchChangeCallbacks.delete(callback);\n\t}\n\n\t/** Internal: set extension status */\n\tsetExtensionStatus(key: string, text: string | undefined): void {\n\t\tif (text === undefined) {\n\t\t\tthis.extensionStatuses.delete(key);\n\t\t} else {\n\t\t\tthis.extensionStatuses.set(key, text);\n\t\t}\n\t}\n\n\t/** Internal: clear extension statuses */\n\tclearExtensionStatuses(): void {\n\t\tthis.extensionStatuses.clear();\n\t}\n\n\t/** Number of unique providers with available models (for footer display) */\n\tgetAvailableProviderCount(): number {\n\t\treturn this.availableProviderCount;\n\t}\n\n\t/** Internal: update available provider count */\n\tsetAvailableProviderCount(count: number): void {\n\t\tthis.availableProviderCount = count;\n\t}\n\n\tsetCwd(cwd: string): void {\n\t\tif (this.cwd === cwd) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.cwd = cwd;\n\t\tif (this.refreshTimer) {\n\t\t\tclearTimeout(this.refreshTimer);\n\t\t\tthis.refreshTimer = null;\n\t\t}\n\t\tthis.clearGitWatchers();\n\t\tthis.cachedBranch = undefined;\n\t\tthis.gitPaths = findGitPaths(cwd);\n\t\tthis.setupGitWatcher();\n\t\tthis.notifyBranchChange();\n\t}\n\n\t/** Internal: cleanup */\n\tdispose(): void {\n\t\tthis.disposed = true;\n\t\tif (this.refreshTimer) {\n\t\t\tclearTimeout(this.refreshTimer);\n\t\t\tthis.refreshTimer = null;\n\t\t}\n\t\tthis.clearGitWatchers();\n\t\tthis.branchChangeCallbacks.clear();\n\t}\n\n\tprivate notifyBranchChange(): void {\n\t\tfor (const cb of this.branchChangeCallbacks) cb();\n\t}\n\n\tprivate scheduleRefresh(): void {\n\t\tif (this.disposed || this.refreshTimer) return;\n\t\tif (this.refreshInFlight) {\n\t\t\tthis.refreshPending = true;\n\t\t\treturn;\n\t\t}\n\t\tthis.refreshTimer = setTimeout(() => {\n\t\t\tthis.refreshTimer = null;\n\t\t\tvoid this.refreshGitBranchAsync();\n\t\t}, FooterDataProvider.WATCH_DEBOUNCE_MS);\n\t}\n\n\tprivate async refreshGitBranchAsync(): Promise<void> {\n\t\tif (this.disposed) return;\n\t\tif (this.refreshInFlight) {\n\t\t\tthis.refreshPending = true;\n\t\t\treturn;\n\t\t}\n\n\t\tthis.refreshInFlight = true;\n\t\ttry {\n\t\t\tconst nextBranch = await this.resolveGitBranchAsync();\n\t\t\tif (this.disposed) return;\n\t\t\tif (this.cachedBranch !== undefined && this.cachedBranch !== nextBranch) {\n\t\t\t\tthis.cachedBranch = nextBranch;\n\t\t\t\tthis.notifyBranchChange();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.cachedBranch = nextBranch;\n\t\t} finally {\n\t\t\tthis.refreshInFlight = false;\n\t\t\tif (this.refreshPending && !this.disposed) {\n\t\t\t\tthis.refreshPending = false;\n\t\t\t\tthis.scheduleRefresh();\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate resolveGitBranchSync(): string | null {\n\t\ttry {\n\t\t\tif (!this.gitPaths) return null;\n\t\t\tconst content = readFileSync(this.gitPaths.headPath, \"utf8\").trim();\n\t\t\tif (content.startsWith(\"ref: refs/heads/\")) {\n\t\t\t\tconst branch = content.slice(16);\n\t\t\t\treturn branch === \".invalid\" ? (resolveBranchWithGitSync(this.gitPaths.repoDir) ?? \"detached\") : branch;\n\t\t\t}\n\t\t\treturn \"detached\";\n\t\t} catch {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\tprivate async resolveGitBranchAsync(): Promise<string | null> {\n\t\ttry {\n\t\t\tif (!this.gitPaths) return null;\n\t\t\tconst content = readFileSync(this.gitPaths.headPath, \"utf8\").trim();\n\t\t\tif (content.startsWith(\"ref: refs/heads/\")) {\n\t\t\t\tconst branch = content.slice(16);\n\t\t\t\treturn branch === \".invalid\"\n\t\t\t\t\t? ((await resolveBranchWithGitAsync(this.gitPaths.repoDir)) ?? \"detached\")\n\t\t\t\t\t: branch;\n\t\t\t}\n\t\t\treturn \"detached\";\n\t\t} catch {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\tprivate clearGitWatchers(): void {\n\t\tcloseWatcher(this.headWatcher);\n\t\tthis.headWatcher = null;\n\t\tif (this.headWatchFilePath && this.headWatchFileListener) {\n\t\t\tunwatchFile(this.headWatchFilePath, this.headWatchFileListener);\n\t\t\tthis.headWatchFilePath = null;\n\t\t\tthis.headWatchFileListener = null;\n\t\t}\n\t\tcloseWatcher(this.reftableWatcher);\n\t\tthis.reftableWatcher = null;\n\t\tcloseWatcher(this.reftableTablesListWatcher);\n\t\tthis.reftableTablesListWatcher = null;\n\t\tif (this.reftableTablesListPath) {\n\t\t\tunwatchFile(this.reftableTablesListPath);\n\t\t\tthis.reftableTablesListPath = null;\n\t\t}\n\t\tif (this.gitWatcherRetryTimer) {\n\t\t\tclearTimeout(this.gitWatcherRetryTimer);\n\t\t\tthis.gitWatcherRetryTimer = null;\n\t\t}\n\t}\n\n\tprivate scheduleGitWatcherRetry(): void {\n\t\tif (this.disposed || this.gitWatcherRetryTimer) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.gitWatcherRetryTimer = setTimeout(() => {\n\t\t\tthis.gitWatcherRetryTimer = null;\n\t\t\tthis.setupGitWatcher();\n\t\t}, FS_WATCH_RETRY_DELAY_MS);\n\t}\n\n\tprivate handleGitWatcherError(): void {\n\t\tthis.clearGitWatchers();\n\t\tthis.scheduleGitWatcherRetry();\n\t}\n\n\tprivate setupGitWatcher(): void {\n\t\tthis.clearGitWatchers();\n\t\tif (!this.gitPaths) return;\n\n\t\tconst pollGitHead = shouldPollGitHead(this.gitPaths.repoDir);\n\n\t\t// Watch the directory containing HEAD, not HEAD itself.\n\t\t// Git uses atomic writes (write temp, rename over HEAD), which changes the inode.\n\t\t// fs.watch on a file stops working after the inode changes.\n\t\tthis.headWatcher = watchWithErrorHandler(\n\t\t\tdirname(this.gitPaths.headPath),\n\t\t\t(_eventType, filename) => {\n\t\t\t\tif (!filename || filename === \"HEAD\") {\n\t\t\t\t\tthis.scheduleRefresh();\n\t\t\t\t}\n\t\t\t},\n\t\t\t() => this.handleGitWatcherError(),\n\t\t);\n\t\tif (pollGitHead) {\n\t\t\tthis.headWatchFilePath = this.gitPaths.headPath;\n\t\t\tthis.headWatchFileListener = (current, previous) => {\n\t\t\t\tif (\n\t\t\t\t\tcurrent.mtimeMs !== previous.mtimeMs ||\n\t\t\t\t\tcurrent.ctimeMs !== previous.ctimeMs ||\n\t\t\t\t\tcurrent.size !== previous.size\n\t\t\t\t) {\n\t\t\t\t\tthis.scheduleRefresh();\n\t\t\t\t}\n\t\t\t};\n\t\t\twatchFile(this.headWatchFilePath, { interval: 1000 }, this.headWatchFileListener);\n\t\t}\n\t\t// In reftable repos, branch switches update files in the reftable directory\n\t\t// instead of HEAD. Watch it separately so the footer picks up those changes.\n\t\tconst reftableDir = join(this.gitPaths.commonGitDir, \"reftable\");\n\t\tif (existsSync(reftableDir)) {\n\t\t\tthis.reftableWatcher = watchWithErrorHandler(\n\t\t\t\treftableDir,\n\t\t\t\t() => {\n\t\t\t\t\tthis.scheduleRefresh();\n\t\t\t\t},\n\t\t\t\t() => this.handleGitWatcherError(),\n\t\t\t);\n\n\t\t\tconst tablesListPath = join(reftableDir, \"tables.list\");\n\t\t\tif (existsSync(tablesListPath)) {\n\t\t\t\tthis.reftableTablesListWatcher = watchWithErrorHandler(\n\t\t\t\t\ttablesListPath,\n\t\t\t\t\t() => {\n\t\t\t\t\t\tthis.scheduleRefresh();\n\t\t\t\t\t},\n\t\t\t\t\t() => this.handleGitWatcherError(),\n\t\t\t\t);\n\t\t\t\t// Polling is the fallback for environments where fs.watch is unusable\n\t\t\t\t// (descriptor limits, unsupported filesystems), so it must be armed even\n\t\t\t\t// when watcher creation just failed. The path is recorded after the\n\t\t\t\t// attempt because a failure synchronously clears watcher state.\n\t\t\t\tthis.reftableTablesListPath = tablesListPath;\n\t\t\t\tlet previousTablesListContent: string | undefined;\n\t\t\t\ttry {\n\t\t\t\t\tpreviousTablesListContent = readFileSync(tablesListPath, \"utf8\");\n\t\t\t\t} catch {\n\t\t\t\t\t// The file may disappear between existsSync and the first poll.\n\t\t\t\t}\n\t\t\t\twatchFile(tablesListPath, { interval: 250 }, (current, previous) => {\n\t\t\t\t\tlet contentChanged = false;\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst currentContent = readFileSync(tablesListPath, \"utf8\");\n\t\t\t\t\t\tcontentChanged = previousTablesListContent !== currentContent;\n\t\t\t\t\t\tpreviousTablesListContent = currentContent;\n\t\t\t\t\t} catch {\n\t\t\t\t\t\tcontentChanged = true;\n\t\t\t\t\t}\n\t\t\t\t\tif (\n\t\t\t\t\t\tcontentChanged ||\n\t\t\t\t\t\tcurrent.mtimeMs !== previous.mtimeMs ||\n\t\t\t\t\t\tcurrent.ctimeMs !== previous.ctimeMs ||\n\t\t\t\t\t\tcurrent.size !== previous.size\n\t\t\t\t\t) {\n\t\t\t\t\t\tthis.scheduleRefresh();\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n}\n\n/** Read-only view for extensions - excludes setExtensionStatus, setAvailableProviderCount and dispose */\nexport type ReadonlyFooterDataProvider = Pick<\n\tFooterDataProvider,\n\t\"getGitBranch\" | \"getExtensionStatuses\" | \"getAvailableProviderCount\" | \"onBranchChange\"\n>;\n"]}
1
+ {"version":3,"file":"footer-data-provider.js","sourceRoot":"","sources":["../../src/core/footer-data-provider.ts"],"names":[],"mappings":"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","sourcesContent":["import { type ExecFileException, execFile, spawnSync } from \"child_process\";\nimport { existsSync, type FSWatcher, readFileSync, type Stats, statSync, unwatchFile, watchFile } from \"fs\";\nimport { dirname, join, resolve } from \"path\";\nimport { closeWatcher, FS_WATCH_RETRY_DELAY_MS, watchWithErrorHandler } from \"../utils/fs-watch.ts\";\n\nexport type GitPaths = {\n\trepoDir: string;\n\tcommonGitDir: string;\n\theadPath: string;\n};\n\n/**\n * Find git metadata paths by walking up from cwd.\n * Handles both regular git repos (.git is a directory) and worktrees (.git is a file).\n */\nexport function findGitPaths(cwd: string): GitPaths | null {\n\tlet dir = cwd;\n\twhile (true) {\n\t\tconst gitPath = join(dir, \".git\");\n\t\tif (existsSync(gitPath)) {\n\t\t\ttry {\n\t\t\t\tconst stat = statSync(gitPath);\n\t\t\t\tif (stat.isFile()) {\n\t\t\t\t\tconst content = readFileSync(gitPath, \"utf8\").trim();\n\t\t\t\t\tif (content.startsWith(\"gitdir: \")) {\n\t\t\t\t\t\tconst gitDir = resolve(dir, content.slice(8).trim());\n\t\t\t\t\t\tconst headPath = join(gitDir, \"HEAD\");\n\t\t\t\t\t\tif (!existsSync(headPath)) return null;\n\t\t\t\t\t\tconst commonDirPath = join(gitDir, \"commondir\");\n\t\t\t\t\t\tconst commonGitDir = existsSync(commonDirPath)\n\t\t\t\t\t\t\t? resolve(gitDir, readFileSync(commonDirPath, \"utf8\").trim())\n\t\t\t\t\t\t\t: gitDir;\n\t\t\t\t\t\treturn { repoDir: dir, commonGitDir, headPath };\n\t\t\t\t\t}\n\t\t\t\t} else if (stat.isDirectory()) {\n\t\t\t\t\tconst headPath = join(gitPath, \"HEAD\");\n\t\t\t\t\tif (!existsSync(headPath)) return null;\n\t\t\t\t\treturn { repoDir: dir, commonGitDir: gitPath, headPath };\n\t\t\t\t}\n\t\t\t} catch {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t}\n\t\tconst parent = dirname(dir);\n\t\tif (parent === dir) return null;\n\t\tdir = parent;\n\t}\n}\n\n/** Ask git for the current branch. Returns null on detached HEAD or if git is unavailable. */\nfunction resolveBranchWithGitSync(repoDir: string): string | null {\n\tconst result = spawnSync(\"git\", [\"--no-optional-locks\", \"symbolic-ref\", \"--quiet\", \"--short\", \"HEAD\"], {\n\t\tcwd: repoDir,\n\t\tencoding: \"utf8\",\n\t\tstdio: [\"ignore\", \"pipe\", \"ignore\"],\n\t});\n\tconst branch = result.status === 0 ? result.stdout.trim() : \"\";\n\treturn branch || null;\n}\n\n/** Ask git for the current branch asynchronously. Returns null on detached HEAD or if git is unavailable. */\nfunction resolveBranchWithGitAsync(repoDir: string): Promise<string | null> {\n\treturn new Promise((resolvePromise) => {\n\t\texecFile(\n\t\t\t\"git\",\n\t\t\t[\"--no-optional-locks\", \"symbolic-ref\", \"--quiet\", \"--short\", \"HEAD\"],\n\t\t\t{\n\t\t\t\tcwd: repoDir,\n\t\t\t\tencoding: \"utf8\",\n\t\t\t},\n\t\t\t(error: ExecFileException | null, stdout: string) => {\n\t\t\t\tif (error) {\n\t\t\t\t\tresolvePromise(null);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst branch = stdout.trim();\n\t\t\t\tresolvePromise(branch || null);\n\t\t\t},\n\t\t);\n\t});\n}\n\nfunction isWslEnvironment(): boolean {\n\treturn process.platform === \"linux\" && !!(process.env.WSL_DISTRO_NAME || process.env.WSL_INTEROP);\n}\n\nfunction isWindowsMountedRepoPath(repoDir: string): boolean {\n\treturn /^\\/mnt\\/[a-z](?:\\/|$)/i.test(repoDir);\n}\n\nfunction shouldPollGitHead(repoDir: string): boolean {\n\treturn isWslEnvironment() && isWindowsMountedRepoPath(repoDir);\n}\n\n/**\n * Provides git branch and extension statuses - data not otherwise accessible to extensions.\n * Context usage on ctx.getContextUsage(), token stats on ctx.sessionManager.getEntries(), model info on ctx.model.\n */\nexport class FooterDataProvider {\n\tprivate cwd: string;\n\tprivate static readonly WATCH_DEBOUNCE_MS = 500;\n\n\tprivate extensionStatuses = new Map<string, string>();\n\tprivate cachedBranch: string | null | undefined = undefined;\n\tprivate gitPaths: GitPaths | null | undefined = undefined;\n\tprivate headWatcher: FSWatcher | null = null;\n\tprivate headWatchFilePath: string | null = null;\n\tprivate headWatchFileListener: ((current: Stats, previous: Stats) => void) | null = null;\n\tprivate reftableWatcher: FSWatcher | null = null;\n\tprivate reftableTablesListWatcher: FSWatcher | null = null;\n\tprivate reftableTablesListPath: string | null = null;\n\tprivate branchChangeCallbacks = new Set<() => void>();\n\tprivate availableProviderCount = 0;\n\tprivate refreshTimer: ReturnType<typeof setTimeout> | null = null;\n\tprivate gitWatcherRetryTimer: ReturnType<typeof setTimeout> | null = null;\n\tprivate refreshInFlight = false;\n\tprivate refreshPending = false;\n\tprivate disposed = false;\n\n\tconstructor(cwd: string) {\n\t\tthis.cwd = cwd;\n\t\tthis.gitPaths = findGitPaths(cwd);\n\t\tthis.setupGitWatcher();\n\t}\n\n\t/** Current git branch, null if not in repo, \"detached\" if detached HEAD */\n\tgetGitBranch(): string | null {\n\t\tif (this.cachedBranch === undefined) {\n\t\t\tthis.cachedBranch = this.resolveGitBranchSync();\n\t\t}\n\t\treturn this.cachedBranch;\n\t}\n\n\t/** Extension status texts set via ctx.ui.setStatus() */\n\tgetExtensionStatuses(): ReadonlyMap<string, string> {\n\t\treturn this.extensionStatuses;\n\t}\n\n\t/** Subscribe to git branch changes. Returns unsubscribe function. */\n\tonBranchChange(callback: () => void): () => void {\n\t\tthis.branchChangeCallbacks.add(callback);\n\t\treturn () => this.branchChangeCallbacks.delete(callback);\n\t}\n\n\t/** Internal: set extension status */\n\tsetExtensionStatus(key: string, text: string | undefined): void {\n\t\tif (text === undefined) {\n\t\t\tthis.extensionStatuses.delete(key);\n\t\t} else {\n\t\t\tthis.extensionStatuses.set(key, text);\n\t\t}\n\t}\n\n\t/** Internal: clear extension statuses */\n\tclearExtensionStatuses(): void {\n\t\tthis.extensionStatuses.clear();\n\t}\n\n\t/** Number of unique providers with available models (for footer display) */\n\tgetAvailableProviderCount(): number {\n\t\treturn this.availableProviderCount;\n\t}\n\n\t/** Internal: update available provider count */\n\tsetAvailableProviderCount(count: number): void {\n\t\tthis.availableProviderCount = count;\n\t}\n\n\tsetCwd(cwd: string): void {\n\t\tif (this.cwd === cwd) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.cwd = cwd;\n\t\tif (this.refreshTimer) {\n\t\t\tclearTimeout(this.refreshTimer);\n\t\t\tthis.refreshTimer = null;\n\t\t}\n\t\tthis.clearGitWatchers();\n\t\tthis.cachedBranch = undefined;\n\t\tthis.gitPaths = findGitPaths(cwd);\n\t\tthis.setupGitWatcher();\n\t\tthis.notifyBranchChange();\n\t}\n\n\t/** Internal: cleanup */\n\tdispose(): void {\n\t\tthis.disposed = true;\n\t\tif (this.refreshTimer) {\n\t\t\tclearTimeout(this.refreshTimer);\n\t\t\tthis.refreshTimer = null;\n\t\t}\n\t\tthis.clearGitWatchers();\n\t\tthis.branchChangeCallbacks.clear();\n\t}\n\n\tprivate notifyBranchChange(): void {\n\t\tfor (const cb of this.branchChangeCallbacks) cb();\n\t}\n\n\tprivate scheduleRefresh(): void {\n\t\tif (this.disposed || this.refreshTimer) return;\n\t\tif (this.refreshInFlight) {\n\t\t\tthis.refreshPending = true;\n\t\t\treturn;\n\t\t}\n\t\tthis.refreshTimer = setTimeout(() => {\n\t\t\tthis.refreshTimer = null;\n\t\t\tvoid this.refreshGitBranchAsync();\n\t\t}, FooterDataProvider.WATCH_DEBOUNCE_MS);\n\t}\n\n\tprivate async refreshGitBranchAsync(): Promise<void> {\n\t\tif (this.disposed) return;\n\t\tif (this.refreshInFlight) {\n\t\t\tthis.refreshPending = true;\n\t\t\treturn;\n\t\t}\n\n\t\tthis.refreshInFlight = true;\n\t\ttry {\n\t\t\tconst nextBranch = await this.resolveGitBranchAsync();\n\t\t\tif (this.disposed) return;\n\t\t\tif (this.cachedBranch !== undefined && this.cachedBranch !== nextBranch) {\n\t\t\t\tthis.cachedBranch = nextBranch;\n\t\t\t\tthis.notifyBranchChange();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.cachedBranch = nextBranch;\n\t\t} finally {\n\t\t\tthis.refreshInFlight = false;\n\t\t\tif (this.refreshPending && !this.disposed) {\n\t\t\t\tthis.refreshPending = false;\n\t\t\t\tthis.scheduleRefresh();\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate resolveGitBranchSync(): string | null {\n\t\ttry {\n\t\t\tif (!this.gitPaths) return null;\n\t\t\tconst content = readFileSync(this.gitPaths.headPath, \"utf8\").trim();\n\t\t\tif (content.startsWith(\"ref: refs/heads/\")) {\n\t\t\t\tconst branch = content.slice(16);\n\t\t\t\treturn branch === \".invalid\" ? (resolveBranchWithGitSync(this.gitPaths.repoDir) ?? \"detached\") : branch;\n\t\t\t}\n\t\t\treturn \"detached\";\n\t\t} catch {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\tprivate async resolveGitBranchAsync(): Promise<string | null> {\n\t\ttry {\n\t\t\tif (!this.gitPaths) return null;\n\t\t\tconst content = readFileSync(this.gitPaths.headPath, \"utf8\").trim();\n\t\t\tif (content.startsWith(\"ref: refs/heads/\")) {\n\t\t\t\tconst branch = content.slice(16);\n\t\t\t\treturn branch === \".invalid\"\n\t\t\t\t\t? ((await resolveBranchWithGitAsync(this.gitPaths.repoDir)) ?? \"detached\")\n\t\t\t\t\t: branch;\n\t\t\t}\n\t\t\treturn \"detached\";\n\t\t} catch {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\tprivate clearGitWatchers(): void {\n\t\tcloseWatcher(this.headWatcher);\n\t\tthis.headWatcher = null;\n\t\tif (this.headWatchFilePath && this.headWatchFileListener) {\n\t\t\tunwatchFile(this.headWatchFilePath, this.headWatchFileListener);\n\t\t\tthis.headWatchFilePath = null;\n\t\t\tthis.headWatchFileListener = null;\n\t\t}\n\t\tcloseWatcher(this.reftableWatcher);\n\t\tthis.reftableWatcher = null;\n\t\tcloseWatcher(this.reftableTablesListWatcher);\n\t\tthis.reftableTablesListWatcher = null;\n\t\tif (this.reftableTablesListPath) {\n\t\t\tunwatchFile(this.reftableTablesListPath);\n\t\t\tthis.reftableTablesListPath = null;\n\t\t}\n\t\tif (this.gitWatcherRetryTimer) {\n\t\t\tclearTimeout(this.gitWatcherRetryTimer);\n\t\t\tthis.gitWatcherRetryTimer = null;\n\t\t}\n\t}\n\n\tprivate scheduleGitWatcherRetry(): void {\n\t\tif (this.disposed || this.gitWatcherRetryTimer) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.gitWatcherRetryTimer = setTimeout(() => {\n\t\t\tthis.gitWatcherRetryTimer = null;\n\t\t\tthis.setupGitWatcher();\n\t\t}, FS_WATCH_RETRY_DELAY_MS);\n\t}\n\n\tprivate handleGitWatcherError(): void {\n\t\tthis.clearGitWatchers();\n\t\tthis.scheduleGitWatcherRetry();\n\t}\n\n\tprivate setupGitWatcher(): void {\n\t\tthis.clearGitWatchers();\n\t\tif (!this.gitPaths) return;\n\n\t\tconst pollGitHead = shouldPollGitHead(this.gitPaths.repoDir);\n\n\t\t// Watch the directory containing HEAD, not HEAD itself.\n\t\t// Git uses atomic writes (write temp, rename over HEAD), which changes the inode.\n\t\t// fs.watch on a file stops working after the inode changes.\n\t\tthis.headWatcher = watchWithErrorHandler(\n\t\t\tdirname(this.gitPaths.headPath),\n\t\t\t(_eventType, filename) => {\n\t\t\t\tif (!filename || filename === \"HEAD\") {\n\t\t\t\t\tthis.scheduleRefresh();\n\t\t\t\t}\n\t\t\t},\n\t\t\t() => this.handleGitWatcherError(),\n\t\t);\n\t\tif (pollGitHead) {\n\t\t\tthis.headWatchFilePath = this.gitPaths.headPath;\n\t\t\tthis.headWatchFileListener = (current, previous) => {\n\t\t\t\tif (\n\t\t\t\t\tcurrent.mtimeMs !== previous.mtimeMs ||\n\t\t\t\t\tcurrent.ctimeMs !== previous.ctimeMs ||\n\t\t\t\t\tcurrent.size !== previous.size\n\t\t\t\t) {\n\t\t\t\t\tthis.scheduleRefresh();\n\t\t\t\t}\n\t\t\t};\n\t\t\twatchFile(this.headWatchFilePath, { interval: 1000 }, this.headWatchFileListener);\n\t\t}\n\t\t// In reftable repos, branch switches update files in the reftable directory\n\t\t// instead of HEAD. Watch it separately so the footer picks up those changes.\n\t\tconst reftableDir = join(this.gitPaths.commonGitDir, \"reftable\");\n\t\tif (existsSync(reftableDir)) {\n\t\t\tthis.reftableWatcher = watchWithErrorHandler(\n\t\t\t\treftableDir,\n\t\t\t\t() => {\n\t\t\t\t\tthis.scheduleRefresh();\n\t\t\t\t},\n\t\t\t\t() => this.handleGitWatcherError(),\n\t\t\t);\n\n\t\t\tconst tablesListPath = join(reftableDir, \"tables.list\");\n\t\t\tif (existsSync(tablesListPath)) {\n\t\t\t\tthis.reftableTablesListWatcher = watchWithErrorHandler(\n\t\t\t\t\ttablesListPath,\n\t\t\t\t\t() => {\n\t\t\t\t\t\tthis.scheduleRefresh();\n\t\t\t\t\t},\n\t\t\t\t\t() => this.handleGitWatcherError(),\n\t\t\t\t);\n\t\t\t\t// Polling is the fallback for environments where fs.watch is unusable\n\t\t\t\t// (descriptor limits, unsupported filesystems), so it must be armed even\n\t\t\t\t// when watcher creation just failed. The path is recorded after the\n\t\t\t\t// attempt because a failure synchronously clears watcher state.\n\t\t\t\tthis.reftableTablesListPath = tablesListPath;\n\t\t\t\tlet previousTablesListContent: string | undefined;\n\t\t\t\ttry {\n\t\t\t\t\tpreviousTablesListContent = readFileSync(tablesListPath, \"utf8\");\n\t\t\t\t} catch {\n\t\t\t\t\t// The file may disappear between existsSync and the first poll.\n\t\t\t\t}\n\t\t\t\twatchFile(tablesListPath, { interval: 250 }, (current, previous) => {\n\t\t\t\t\tlet contentChanged = false;\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst currentContent = readFileSync(tablesListPath, \"utf8\");\n\t\t\t\t\t\tcontentChanged = previousTablesListContent !== currentContent;\n\t\t\t\t\t\tpreviousTablesListContent = currentContent;\n\t\t\t\t\t} catch {\n\t\t\t\t\t\tcontentChanged = true;\n\t\t\t\t\t}\n\t\t\t\t\tif (\n\t\t\t\t\t\tcontentChanged ||\n\t\t\t\t\t\tcurrent.mtimeMs !== previous.mtimeMs ||\n\t\t\t\t\t\tcurrent.ctimeMs !== previous.ctimeMs ||\n\t\t\t\t\t\tcurrent.size !== previous.size\n\t\t\t\t\t) {\n\t\t\t\t\t\tthis.scheduleRefresh();\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n}\n\n/** Read-only view for extensions - excludes setExtensionStatus, setAvailableProviderCount and dispose */\nexport type ReadonlyFooterDataProvider = Pick<\n\tFooterDataProvider,\n\t\"getGitBranch\" | \"getExtensionStatuses\" | \"getAvailableProviderCount\" | \"onBranchChange\"\n>;\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"high-reasoning-warning.d.ts","sourceRoot":"","sources":["../../src/core/high-reasoning-warning.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAMxD,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,OAAO,CAEpF;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,aAAa,EAAE,aAAa,GAAG,OAAO,CAE5G;AAED,MAAM,WAAW,2BAA2B;IAC3C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;CACjC;AAED,wBAAgB,yBAAyB,CACxC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,UAAU,CAAC,EAC1C,aAAa,EAAE,aAAa,GAC1B,2BAA2B,CAe7B"}
1
+ {"version":3,"file":"high-reasoning-warning.d.ts","sourceRoot":"","sources":["../../src/core/high-reasoning-warning.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAOxD,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,OAAO,CAEpF;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,aAAa,EAAE,aAAa,GAAG,OAAO,CAK5G;AAED,MAAM,WAAW,2BAA2B;IAC3C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;CACjC;AAED,wBAAgB,yBAAyB,CACxC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,UAAU,CAAC,EAC1C,aAAa,EAAE,aAAa,GAC1B,2BAA2B,CAe7B"}
@@ -1,11 +1,15 @@
1
1
  // Matches GPT-5.x Sol and GPT-6 Astra variants, including provider-prefixed
2
2
  // forms. The trailing lookahead excludes unrelated ids that continue with letters.
3
3
  const SENSITIVE_MODEL_ID_PATTERN = /(?:gpt-5(?:\.\d+)?-sol|gpt-6-astra)(?![a-z])/i;
4
+ const ASTRA_MODEL_ID_PATTERN = /gpt-6-astra(?![a-z])/i;
4
5
  export function isSensitiveHighReasoningModel(model) {
5
6
  return SENSITIVE_MODEL_ID_PATTERN.test(model.id);
6
7
  }
7
8
  export function shouldWarnHighReasoning(model, thinkingLevel) {
8
- return (thinkingLevel === "xhigh" || thinkingLevel === "max") && isSensitiveHighReasoningModel(model);
9
+ const isWarningLevel = ASTRA_MODEL_ID_PATTERN.test(model.id)
10
+ ? thinkingLevel === "max"
11
+ : thinkingLevel === "xhigh" || thinkingLevel === "max";
12
+ return isWarningLevel && isSensitiveHighReasoningModel(model);
9
13
  }
10
14
  export function buildHighReasoningWarning(model, thinkingLevel) {
11
15
  const modelId = model.id;
@@ -1 +1 @@
1
- {"version":3,"file":"high-reasoning-warning.js","sourceRoot":"","sources":["../../src/core/high-reasoning-warning.ts"],"names":[],"mappings":"AAGA,4EAA4E;AAC5E,mFAAmF;AACnF,MAAM,0BAA0B,GAAG,+CAA+C,CAAC;AAEnF,MAAM,UAAU,6BAA6B,CAAC,KAA6B;IAC1E,OAAO,0BAA0B,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AAClD,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,KAA6B,EAAE,aAA4B;IAClG,OAAO,CAAC,aAAa,KAAK,OAAO,IAAI,aAAa,KAAK,KAAK,CAAC,IAAI,6BAA6B,CAAC,KAAK,CAAC,CAAC;AACvG,CAAC;AAOD,MAAM,UAAU,yBAAyB,CACxC,KAA0C,EAC1C,aAA4B;IAE5B,MAAM,OAAO,GAAG,KAAK,CAAC,EAAE,CAAC;IACzB,MAAM,KAAK,GAAG,oCAAoC,KAAK,CAAC,QAAQ,IAAI,OAAO,MAAM,aAAa,EAAE,CAAC;IACjG,MAAM,IAAI,GAAG;QACZ,GAAG,OAAO,kDAAkD,aAAa,wDAAwD;QACjI,oFAAoF;QACpF,gFAAgF;QAChF,yEAAyE;QACzE,gFAAgF;QAChF,4EAA4E;QAC5E,wJAAwJ;QACxJ,wEAAwE;QACxE,uCAAuC,aAAa,uDAAuD;KAC3G,CAAC;IACF,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AACxB,CAAC","sourcesContent":["import type { ThinkingLevel } from \"@earendil-works/pi-agent-core\";\nimport type { Api, Model } from \"@earendil-works/pi-ai\";\n\n// Matches GPT-5.x Sol and GPT-6 Astra variants, including provider-prefixed\n// forms. The trailing lookahead excludes unrelated ids that continue with letters.\nconst SENSITIVE_MODEL_ID_PATTERN = /(?:gpt-5(?:\\.\\d+)?-sol|gpt-6-astra)(?![a-z])/i;\n\nexport function isSensitiveHighReasoningModel(model: Pick<Model<Api>, \"id\">): boolean {\n\treturn SENSITIVE_MODEL_ID_PATTERN.test(model.id);\n}\n\nexport function shouldWarnHighReasoning(model: Pick<Model<Api>, \"id\">, thinkingLevel: ThinkingLevel): boolean {\n\treturn (thinkingLevel === \"xhigh\" || thinkingLevel === \"max\") && isSensitiveHighReasoningModel(model);\n}\n\nexport interface HighReasoningWarningContent {\n\treadonly title: string;\n\treadonly body: readonly string[];\n}\n\nexport function buildHighReasoningWarning(\n\tmodel: Pick<Model<Api>, \"id\" | \"provider\">,\n\tthinkingLevel: ThinkingLevel,\n): HighReasoningWarningContent {\n\tconst modelId = model.id;\n\tconst title = `⚠ HIGH-REASONING MODEL WARNING — ${model.provider}/${modelId} @ ${thinkingLevel}`;\n\tconst body = [\n\t\t`${modelId} is a frontier reasoning model. Running it at \"${thinkingLevel}\" effort makes it acutely sensitive to prompt quality.`,\n\t\t\"Driving this model directly from a human prompt is NOT recommended. Risks include:\",\n\t\t\" • The model may refuse to stop, looping or working far past the stated goal.\",\n\t\t' • It may perform unrequested actions in order to \"complete\" the task.',\n\t\t\" • It may take risky, irreversible, or dangerous actions to force completion.\",\n\t\t\"Strongly recommended: use this model ONLY through the ultrabrain subagent.\",\n\t\t\"Human prompts leave gaps; an agent-authored prompt is denser and stricter than a human's — exactly what these high-effort models need to stay bounded.\",\n\t\t'From the main agent, delegate instead: \"query ultrabrain with <task>\".',\n\t\t`If you drive this model directly at ${thinkingLevel}, YOU assume ALL responsibility for the consequences.`,\n\t];\n\treturn { title, body };\n}\n"]}
1
+ {"version":3,"file":"high-reasoning-warning.js","sourceRoot":"","sources":["../../src/core/high-reasoning-warning.ts"],"names":[],"mappings":"AAGA,4EAA4E;AAC5E,mFAAmF;AACnF,MAAM,0BAA0B,GAAG,+CAA+C,CAAC;AACnF,MAAM,sBAAsB,GAAG,uBAAuB,CAAC;AAEvD,MAAM,UAAU,6BAA6B,CAAC,KAA6B;IAC1E,OAAO,0BAA0B,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AAClD,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,KAA6B,EAAE,aAA4B;IAClG,MAAM,cAAc,GAAG,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QAC3D,CAAC,CAAC,aAAa,KAAK,KAAK;QACzB,CAAC,CAAC,aAAa,KAAK,OAAO,IAAI,aAAa,KAAK,KAAK,CAAC;IACxD,OAAO,cAAc,IAAI,6BAA6B,CAAC,KAAK,CAAC,CAAC;AAC/D,CAAC;AAOD,MAAM,UAAU,yBAAyB,CACxC,KAA0C,EAC1C,aAA4B;IAE5B,MAAM,OAAO,GAAG,KAAK,CAAC,EAAE,CAAC;IACzB,MAAM,KAAK,GAAG,oCAAoC,KAAK,CAAC,QAAQ,IAAI,OAAO,MAAM,aAAa,EAAE,CAAC;IACjG,MAAM,IAAI,GAAG;QACZ,GAAG,OAAO,kDAAkD,aAAa,wDAAwD;QACjI,oFAAoF;QACpF,gFAAgF;QAChF,yEAAyE;QACzE,gFAAgF;QAChF,4EAA4E;QAC5E,wJAAwJ;QACxJ,wEAAwE;QACxE,uCAAuC,aAAa,uDAAuD;KAC3G,CAAC;IACF,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AACxB,CAAC","sourcesContent":["import type { ThinkingLevel } from \"@earendil-works/pi-agent-core\";\nimport type { Api, Model } from \"@earendil-works/pi-ai\";\n\n// Matches GPT-5.x Sol and GPT-6 Astra variants, including provider-prefixed\n// forms. The trailing lookahead excludes unrelated ids that continue with letters.\nconst SENSITIVE_MODEL_ID_PATTERN = /(?:gpt-5(?:\\.\\d+)?-sol|gpt-6-astra)(?![a-z])/i;\nconst ASTRA_MODEL_ID_PATTERN = /gpt-6-astra(?![a-z])/i;\n\nexport function isSensitiveHighReasoningModel(model: Pick<Model<Api>, \"id\">): boolean {\n\treturn SENSITIVE_MODEL_ID_PATTERN.test(model.id);\n}\n\nexport function shouldWarnHighReasoning(model: Pick<Model<Api>, \"id\">, thinkingLevel: ThinkingLevel): boolean {\n\tconst isWarningLevel = ASTRA_MODEL_ID_PATTERN.test(model.id)\n\t\t? thinkingLevel === \"max\"\n\t\t: thinkingLevel === \"xhigh\" || thinkingLevel === \"max\";\n\treturn isWarningLevel && isSensitiveHighReasoningModel(model);\n}\n\nexport interface HighReasoningWarningContent {\n\treadonly title: string;\n\treadonly body: readonly string[];\n}\n\nexport function buildHighReasoningWarning(\n\tmodel: Pick<Model<Api>, \"id\" | \"provider\">,\n\tthinkingLevel: ThinkingLevel,\n): HighReasoningWarningContent {\n\tconst modelId = model.id;\n\tconst title = `⚠ HIGH-REASONING MODEL WARNING — ${model.provider}/${modelId} @ ${thinkingLevel}`;\n\tconst body = [\n\t\t`${modelId} is a frontier reasoning model. Running it at \"${thinkingLevel}\" effort makes it acutely sensitive to prompt quality.`,\n\t\t\"Driving this model directly from a human prompt is NOT recommended. Risks include:\",\n\t\t\" • The model may refuse to stop, looping or working far past the stated goal.\",\n\t\t' • It may perform unrequested actions in order to \"complete\" the task.',\n\t\t\" • It may take risky, irreversible, or dangerous actions to force completion.\",\n\t\t\"Strongly recommended: use this model ONLY through the ultrabrain subagent.\",\n\t\t\"Human prompts leave gaps; an agent-authored prompt is denser and stricter than a human's — exactly what these high-effort models need to stay bounded.\",\n\t\t'From the main agent, delegate instead: \"query ultrabrain with <task>\".',\n\t\t`If you drive this model directly at ${thinkingLevel}, YOU assume ALL responsibility for the consequences.`,\n\t];\n\treturn { title, body };\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"http-dispatcher.d.ts","sourceRoot":"","sources":["../../src/core/http-dispatcher.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,4BAA4B,SAAU,CAAC;AAIpD,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;EAM5B,CAAC;AAUX,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAgBzE;AAED,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAMjE;AAED,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAa1E;AA+BD,wBAAgB,uBAAuB,CAAC,SAAS,GAAE,MAAqC,GAAG,IAAI,CAwC9F"}
1
+ {"version":3,"file":"http-dispatcher.d.ts","sourceRoot":"","sources":["../../src/core/http-dispatcher.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,4BAA4B,SAAU,CAAC;AAIpD,eAAO,MAAM,yBAAyB;aACnC,KAAK,EAAE,QAAQ;aAAE,SAAS,EAAE,KAAM;;aAClC,KAAK,EAAE,OAAO;aAAE,SAAS,EAAE,KAAM;;aACjC,KAAK,EAAE,OAAO;aAAE,SAAS,EAAE,MAAO;;aAClC,KAAK,EAAE,OAAO;aAAE,SAAS,EAAE,MAAO;;aAClC,KAAK,EAAE,UAAU;aAAE,SAAS,EAAE,CAAC;EACxB,CAAC;AAUX,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAgBzE;AAED,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAMjE;AAED,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAa1E;AA+BD,wBAAgB,uBAAuB,CAAC,SAAS,GAAE,MAAqC,GAAG,IAAI,CAwC9F"}
@@ -1 +1 @@
1
- {"version":3,"file":"http-dispatcher.js","sourceRoot":"","sources":["../../src/core/http-dispatcher.ts"],"names":[],"mappings":"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","sourcesContent":["import { EventEmitter } from \"node:events\";\nimport * as undici from \"undici\";\n\nexport const DEFAULT_HTTP_IDLE_TIMEOUT_MS = 300_000;\n// Node's 250ms default can terminate valid connection attempts on high-latency routes.\nconst DEFAULT_AUTO_SELECT_FAMILY_ATTEMPT_TIMEOUT_MS = 2_000;\n\nexport const HTTP_IDLE_TIMEOUT_CHOICES = [\n\t{ label: \"30 sec\", timeoutMs: 30_000 },\n\t{ label: \"1 min\", timeoutMs: 60_000 },\n\t{ label: \"2 min\", timeoutMs: 120_000 },\n\t{ label: \"5 min\", timeoutMs: 300_000 },\n\t{ label: \"disabled\", timeoutMs: 0 },\n] as const;\n\nconst originalGlobalFetch = globalThis.fetch;\nlet installedGlobalFetch: typeof globalThis.fetch | undefined;\nlet multiSessionDispatcherTimeoutMs: number | undefined;\n\nfunction isMultiSessionRpcProcess(): boolean {\n\treturn process.argv.includes(\"--multi-session\");\n}\n\nexport function parseHttpIdleTimeoutMs(value: unknown): number | undefined {\n\tif (typeof value === \"string\") {\n\t\tconst trimmed = value.trim();\n\t\tif (trimmed.toLowerCase() === \"disabled\") {\n\t\t\treturn 0;\n\t\t}\n\t\tif (trimmed.length === 0) {\n\t\t\treturn undefined;\n\t\t}\n\t\treturn parseHttpIdleTimeoutMs(Number(trimmed));\n\t}\n\n\tif (typeof value !== \"number\" || !Number.isFinite(value) || value < 0) {\n\t\treturn undefined;\n\t}\n\treturn Math.floor(value);\n}\n\nexport function formatHttpIdleTimeoutMs(timeoutMs: number): string {\n\tconst choice = HTTP_IDLE_TIMEOUT_CHOICES.find((item) => item.timeoutMs === timeoutMs);\n\tif (choice) {\n\t\treturn choice.label;\n\t}\n\treturn `${timeoutMs / 1000} sec`;\n}\n\nexport function applyHttpProxySettings(httpProxy: string | undefined): void {\n\tconst proxy = httpProxy?.trim();\n\tif (!proxy) return;\n\tif (isMultiSessionRpcProcess()) {\n\t\tconst existing = process.env.HTTP_PROXY ?? process.env.HTTPS_PROXY;\n\t\tif (existing !== undefined && existing !== proxy) {\n\t\t\tthrow new Error(\n\t\t\t\t\"Multi-session RPC shares one process-global HTTP proxy; proxy settings must be fixed at process startup.\",\n\t\t\t);\n\t\t}\n\t}\n\tprocess.env.HTTP_PROXY ??= proxy;\n\tprocess.env.HTTPS_PROXY ??= proxy;\n}\n\nconst ignoreUndiciDispatcherError = (_error: unknown): void => {};\n\n// Undici can emit an internal Client \"error\" while terminating a mid-stream\n// fetch body. The body stream still rejects through reader.read(); this listener\n// only prevents EventEmitter's unhandled \"error\" special case from crashing pi.\nfunction withUndiciErrorListener<T extends undici.Dispatcher>(dispatcher: T): T {\n\tif (dispatcher instanceof EventEmitter) {\n\t\tEventEmitter.prototype.on.call(dispatcher, \"error\", ignoreUndiciDispatcherError);\n\t}\n\treturn dispatcher;\n}\n\nfunction createUndiciClient(origin: string | URL, options: object): undici.Dispatcher {\n\treturn withUndiciErrorListener(new undici.Client(origin, options as undici.Client.Options));\n}\n\nfunction createUndiciOriginDispatcher(origin: string | URL, options: object): undici.Dispatcher {\n\tconst dispatcherOptions = options as undici.Pool.Options;\n\tif (dispatcherOptions.connections === 1) {\n\t\treturn createUndiciClient(origin, dispatcherOptions);\n\t}\n\treturn withUndiciErrorListener(\n\t\tnew undici.Pool(origin, {\n\t\t\t...dispatcherOptions,\n\t\t\tfactory: createUndiciClient,\n\t\t}),\n\t);\n}\n\nexport function configureHttpDispatcher(timeoutMs: number = DEFAULT_HTTP_IDLE_TIMEOUT_MS): void {\n\tconst normalizedTimeoutMs = parseHttpIdleTimeoutMs(timeoutMs);\n\tif (normalizedTimeoutMs === undefined) {\n\t\tthrow new Error(`Invalid HTTP idle timeout: ${String(timeoutMs)}`);\n\t}\n\tif (isMultiSessionRpcProcess()) {\n\t\tif (multiSessionDispatcherTimeoutMs !== undefined && multiSessionDispatcherTimeoutMs !== normalizedTimeoutMs) {\n\t\t\tthrow new Error(\n\t\t\t\t\"Multi-session RPC shares one process-global Undici dispatcher; HTTP idle timeout must be fixed at process startup.\",\n\t\t\t);\n\t\t}\n\t\tmultiSessionDispatcherTimeoutMs = normalizedTimeoutMs;\n\t}\n\tconst dispatcher = withUndiciErrorListener(\n\t\tnew undici.EnvHttpProxyAgent({\n\t\t\tallowH2: false,\n\t\t\t// Keep HTTP origins on CONNECT tunnels as they were before Undici 8.7.\n\t\t\tproxyTunnel: true,\n\t\t\tbodyTimeout: normalizedTimeoutMs,\n\t\t\tconnect: {\n\t\t\t\tautoSelectFamilyAttemptTimeout: DEFAULT_AUTO_SELECT_FAMILY_ATTEMPT_TIMEOUT_MS,\n\t\t\t},\n\t\t\theadersTimeout: normalizedTimeoutMs,\n\t\t\tclientFactory: createUndiciClient,\n\t\t\tfactory: createUndiciOriginDispatcher,\n\t\t}),\n\t);\n\tundici.setGlobalDispatcher(dispatcher);\n\t// Keep fetch and the dispatcher on the same undici implementation. Node 26.0's\n\t// bundled fetch can otherwise consume compressed responses through npm undici's\n\t// dispatcher without decompressing them, causing response.json() failures.\n\t// If a caller replaced fetch after module load, preserve that deliberate override.\n\tconst shouldInstallGlobals =\n\t\tinstalledGlobalFetch === undefined\n\t\t\t? globalThis.fetch === originalGlobalFetch\n\t\t\t: globalThis.fetch === installedGlobalFetch;\n\tif (shouldInstallGlobals) {\n\t\tundici.install?.();\n\t\tinstalledGlobalFetch = globalThis.fetch;\n\t}\n}\n"]}
1
+ {"version":3,"file":"http-dispatcher.js","sourceRoot":"","sources":["../../src/core/http-dispatcher.ts"],"names":[],"mappings":"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","sourcesContent":["import { EventEmitter } from \"node:events\";\nimport * as undici from \"undici\";\n\nexport const DEFAULT_HTTP_IDLE_TIMEOUT_MS = 300_000;\n// Node's 250ms default can terminate valid connection attempts on high-latency routes.\nconst DEFAULT_AUTO_SELECT_FAMILY_ATTEMPT_TIMEOUT_MS = 2_000;\n\nexport const HTTP_IDLE_TIMEOUT_CHOICES = [\n\t{ label: \"30 sec\", timeoutMs: 30_000 },\n\t{ label: \"1 min\", timeoutMs: 60_000 },\n\t{ label: \"2 min\", timeoutMs: 120_000 },\n\t{ label: \"5 min\", timeoutMs: 300_000 },\n\t{ label: \"disabled\", timeoutMs: 0 },\n] as const;\n\nconst originalGlobalFetch = globalThis.fetch;\nlet installedGlobalFetch: typeof globalThis.fetch | undefined;\nlet multiSessionDispatcherTimeoutMs: number | undefined;\n\nfunction isMultiSessionRpcProcess(): boolean {\n\treturn process.argv.includes(\"--multi-session\");\n}\n\nexport function parseHttpIdleTimeoutMs(value: unknown): number | undefined {\n\tif (typeof value === \"string\") {\n\t\tconst trimmed = value.trim();\n\t\tif (trimmed.toLowerCase() === \"disabled\") {\n\t\t\treturn 0;\n\t\t}\n\t\tif (trimmed.length === 0) {\n\t\t\treturn undefined;\n\t\t}\n\t\treturn parseHttpIdleTimeoutMs(Number(trimmed));\n\t}\n\n\tif (typeof value !== \"number\" || !Number.isFinite(value) || value < 0) {\n\t\treturn undefined;\n\t}\n\treturn Math.floor(value);\n}\n\nexport function formatHttpIdleTimeoutMs(timeoutMs: number): string {\n\tconst choice = HTTP_IDLE_TIMEOUT_CHOICES.find((item) => item.timeoutMs === timeoutMs);\n\tif (choice) {\n\t\treturn choice.label;\n\t}\n\treturn `${timeoutMs / 1000} sec`;\n}\n\nexport function applyHttpProxySettings(httpProxy: string | undefined): void {\n\tconst proxy = httpProxy?.trim();\n\tif (!proxy) return;\n\tif (isMultiSessionRpcProcess()) {\n\t\tconst existing = process.env.HTTP_PROXY ?? process.env.HTTPS_PROXY;\n\t\tif (existing !== undefined && existing !== proxy) {\n\t\t\tthrow new Error(\n\t\t\t\t\"Multi-session RPC shares one process-global HTTP proxy; proxy settings must be fixed at process startup.\",\n\t\t\t);\n\t\t}\n\t}\n\tprocess.env.HTTP_PROXY ??= proxy;\n\tprocess.env.HTTPS_PROXY ??= proxy;\n}\n\nconst ignoreUndiciDispatcherError = (_error: unknown): void => {};\n\n// Undici can emit an internal Client \"error\" while terminating a mid-stream\n// fetch body. The body stream still rejects through reader.read(); this listener\n// only prevents EventEmitter's unhandled \"error\" special case from crashing pi.\nfunction withUndiciErrorListener<T extends undici.Dispatcher>(dispatcher: T): T {\n\tif (dispatcher instanceof EventEmitter) {\n\t\tEventEmitter.prototype.on.call(dispatcher, \"error\", ignoreUndiciDispatcherError);\n\t}\n\treturn dispatcher;\n}\n\nfunction createUndiciClient(origin: string | URL, options: object): undici.Dispatcher {\n\treturn withUndiciErrorListener(new undici.Client(origin, options as undici.Client.Options));\n}\n\nfunction createUndiciOriginDispatcher(origin: string | URL, options: object): undici.Dispatcher {\n\tconst dispatcherOptions = options as undici.Pool.Options;\n\tif (dispatcherOptions.connections === 1) {\n\t\treturn createUndiciClient(origin, dispatcherOptions);\n\t}\n\treturn withUndiciErrorListener(\n\t\tnew undici.Pool(origin, {\n\t\t\t...dispatcherOptions,\n\t\t\tfactory: createUndiciClient,\n\t\t}),\n\t);\n}\n\nexport function configureHttpDispatcher(timeoutMs: number = DEFAULT_HTTP_IDLE_TIMEOUT_MS): void {\n\tconst normalizedTimeoutMs = parseHttpIdleTimeoutMs(timeoutMs);\n\tif (normalizedTimeoutMs === undefined) {\n\t\tthrow new Error(`Invalid HTTP idle timeout: ${String(timeoutMs)}`);\n\t}\n\tif (isMultiSessionRpcProcess()) {\n\t\tif (multiSessionDispatcherTimeoutMs !== undefined && multiSessionDispatcherTimeoutMs !== normalizedTimeoutMs) {\n\t\t\tthrow new Error(\n\t\t\t\t\"Multi-session RPC shares one process-global Undici dispatcher; HTTP idle timeout must be fixed at process startup.\",\n\t\t\t);\n\t\t}\n\t\tmultiSessionDispatcherTimeoutMs = normalizedTimeoutMs;\n\t}\n\tconst dispatcher = withUndiciErrorListener(\n\t\tnew undici.EnvHttpProxyAgent({\n\t\t\tallowH2: false,\n\t\t\t// Keep HTTP origins on CONNECT tunnels as they were before Undici 8.7.\n\t\t\tproxyTunnel: true,\n\t\t\tbodyTimeout: normalizedTimeoutMs,\n\t\t\tconnect: {\n\t\t\t\tautoSelectFamilyAttemptTimeout: DEFAULT_AUTO_SELECT_FAMILY_ATTEMPT_TIMEOUT_MS,\n\t\t\t},\n\t\t\theadersTimeout: normalizedTimeoutMs,\n\t\t\tclientFactory: createUndiciClient,\n\t\t\tfactory: createUndiciOriginDispatcher,\n\t\t}),\n\t);\n\tundici.setGlobalDispatcher(dispatcher);\n\t// Keep fetch and the dispatcher on the same undici implementation. Node 26.0's\n\t// bundled fetch can otherwise consume compressed responses through npm undici's\n\t// dispatcher without decompressing them, causing response.json() failures.\n\t// If a caller replaced fetch after module load, preserve that deliberate override.\n\tconst shouldInstallGlobals =\n\t\tinstalledGlobalFetch === undefined\n\t\t\t? globalThis.fetch === originalGlobalFetch\n\t\t\t: globalThis.fetch === installedGlobalFetch;\n\tif (shouldInstallGlobals) {\n\t\tundici.install?.();\n\t\tinstalledGlobalFetch = globalThis.fetch;\n\t}\n}\n"]}
@@ -24,6 +24,7 @@ export interface AppKeybindings {
24
24
  "app.tree.foldOrUp": true;
25
25
  "app.tree.unfoldOrDown": true;
26
26
  "app.tree.editLabel": true;
27
+ "app.tree.editMessage": true;
27
28
  "app.tree.toggleLabelTimestamp": true;
28
29
  "app.session.togglePath": true;
29
30
  "app.session.toggleSort": true;
@@ -52,21 +53,193 @@ declare module "@earendil-works/pi-tui" {
52
53
  }
53
54
  }
54
55
  export declare const KEYBINDINGS: {
56
+ readonly "tui.editor.cursorUp": {
57
+ readonly defaultKeys: "up";
58
+ readonly description: "Move cursor up";
59
+ };
60
+ readonly "tui.editor.cursorDown": {
61
+ readonly defaultKeys: "down";
62
+ readonly description: "Move cursor down";
63
+ };
64
+ readonly "tui.editor.historyPrevious": {
65
+ readonly defaultKeys: [];
66
+ readonly description: "Select previous prompt history entry";
67
+ };
68
+ readonly "tui.editor.historyNext": {
69
+ readonly defaultKeys: [];
70
+ readonly description: "Select next prompt history entry";
71
+ };
72
+ readonly "tui.editor.cursorLeft": {
73
+ readonly defaultKeys: ["left", "ctrl+b"];
74
+ readonly description: "Move cursor left";
75
+ };
76
+ readonly "tui.editor.cursorRight": {
77
+ readonly defaultKeys: ["right", "ctrl+f"];
78
+ readonly description: "Move cursor right";
79
+ };
80
+ readonly "tui.editor.cursorWordLeft": {
81
+ readonly defaultKeys: ["alt+left", "ctrl+left", "alt+b"];
82
+ readonly description: "Move cursor word left";
83
+ };
84
+ readonly "tui.editor.cursorWordRight": {
85
+ readonly defaultKeys: ["alt+right", "ctrl+right", "alt+f"];
86
+ readonly description: "Move cursor word right";
87
+ };
88
+ readonly "tui.editor.cursorLineStart": {
89
+ readonly defaultKeys: ["home", "ctrl+home", "ctrl+a"];
90
+ readonly description: "Move to line start";
91
+ };
92
+ readonly "tui.editor.cursorLineEnd": {
93
+ readonly defaultKeys: ["end", "ctrl+end", "ctrl+e"];
94
+ readonly description: "Move to line end";
95
+ };
96
+ readonly "tui.editor.jumpForward": {
97
+ readonly defaultKeys: "ctrl+]";
98
+ readonly description: "Jump forward to character";
99
+ };
100
+ readonly "tui.editor.jumpBackward": {
101
+ readonly defaultKeys: "ctrl+alt+]";
102
+ readonly description: "Jump backward to character";
103
+ };
104
+ readonly "tui.editor.pageUp": {
105
+ readonly defaultKeys: ["pageUp", "ctrl+pageUp"];
106
+ readonly description: "Page up";
107
+ };
108
+ readonly "tui.editor.pageDown": {
109
+ readonly defaultKeys: ["pageDown", "ctrl+pageDown"];
110
+ readonly description: "Page down";
111
+ };
112
+ readonly "tui.editor.deleteCharBackward": {
113
+ readonly defaultKeys: "backspace";
114
+ readonly description: "Delete character backward";
115
+ };
116
+ readonly "tui.editor.deleteCharForward": {
117
+ readonly defaultKeys: ["delete", "ctrl+d"];
118
+ readonly description: "Delete character forward";
119
+ };
120
+ readonly "tui.editor.deleteWordBackward": {
121
+ readonly defaultKeys: ["ctrl+w", "alt+backspace"];
122
+ readonly description: "Delete word backward";
123
+ };
124
+ readonly "tui.editor.deleteWordForward": {
125
+ readonly defaultKeys: ["alt+d", "alt+delete"];
126
+ readonly description: "Delete word forward";
127
+ };
128
+ readonly "tui.editor.deleteToLineStart": {
129
+ readonly defaultKeys: "ctrl+u";
130
+ readonly description: "Delete to line start";
131
+ };
132
+ readonly "tui.editor.deleteToLineEnd": {
133
+ readonly defaultKeys: "ctrl+k";
134
+ readonly description: "Delete to line end";
135
+ };
136
+ readonly "tui.editor.yank": {
137
+ readonly defaultKeys: "ctrl+y";
138
+ readonly description: "Yank";
139
+ };
140
+ readonly "tui.editor.yankPop": {
141
+ readonly defaultKeys: "alt+y";
142
+ readonly description: "Yank pop";
143
+ };
144
+ readonly "tui.input.newLine": {
145
+ readonly defaultKeys: ["shift+enter", "ctrl+j"];
146
+ readonly description: "Insert newline";
147
+ };
148
+ readonly "tui.input.submit": {
149
+ readonly defaultKeys: "enter";
150
+ readonly description: "Submit input";
151
+ };
152
+ readonly "tui.input.tab": {
153
+ readonly defaultKeys: "tab";
154
+ readonly description: "Tab / autocomplete";
155
+ };
156
+ readonly "tui.input.copy": {
157
+ readonly defaultKeys: "ctrl+c";
158
+ readonly description: "Copy selection";
159
+ };
160
+ readonly "tui.select.up": {
161
+ readonly defaultKeys: "up";
162
+ readonly description: "Move selection up";
163
+ };
164
+ readonly "tui.select.down": {
165
+ readonly defaultKeys: "down";
166
+ readonly description: "Move selection down";
167
+ };
168
+ readonly "tui.select.pageUp": {
169
+ readonly defaultKeys: "pageUp";
170
+ readonly description: "Selection page up";
171
+ };
172
+ readonly "tui.select.pageDown": {
173
+ readonly defaultKeys: "pageDown";
174
+ readonly description: "Selection page down";
175
+ };
176
+ readonly "tui.select.confirm": {
177
+ readonly defaultKeys: "enter";
178
+ readonly description: "Confirm selection";
179
+ };
180
+ readonly "tui.select.cancel": {
181
+ readonly defaultKeys: ["escape", "ctrl+c"];
182
+ readonly description: "Cancel selection";
183
+ };
184
+ readonly "tui.altScreen.pageUp": {
185
+ readonly defaultKeys: "pageUp";
186
+ readonly description: "Scroll viewport up one page";
187
+ };
188
+ readonly "tui.altScreen.pageDown": {
189
+ readonly defaultKeys: "pageDown";
190
+ readonly description: "Scroll viewport down one page";
191
+ };
192
+ readonly "tui.altScreen.halfPageUp": {
193
+ readonly defaultKeys: [];
194
+ readonly description: "Scroll viewport up half a page";
195
+ };
196
+ readonly "tui.altScreen.halfPageDown": {
197
+ readonly defaultKeys: [];
198
+ readonly description: "Scroll viewport down half a page";
199
+ };
200
+ readonly "tui.altScreen.lineUp": {
201
+ readonly defaultKeys: [];
202
+ readonly description: "Scroll viewport up one line";
203
+ };
204
+ readonly "tui.altScreen.lineDown": {
205
+ readonly defaultKeys: [];
206
+ readonly description: "Scroll viewport down one line";
207
+ };
208
+ readonly "tui.altScreen.searchNext": {
209
+ readonly defaultKeys: ["enter", "ctrl+g"];
210
+ readonly description: "Select the next search match";
211
+ };
212
+ readonly "tui.altScreen.searchPrevious": {
213
+ readonly defaultKeys: ["shift+enter", "ctrl+shift+g"];
214
+ readonly description: "Select the previous search match";
215
+ };
216
+ readonly "tui.altScreen.searchClose": {
217
+ readonly defaultKeys: "escape";
218
+ readonly description: "Close transcript search";
219
+ };
220
+ readonly "tui.altScreen.top": {
221
+ readonly defaultKeys: "home";
222
+ readonly description: "Scroll viewport to top";
223
+ };
224
+ readonly "tui.altScreen.bottom": {
225
+ readonly defaultKeys: "end";
226
+ readonly description: "Scroll viewport to bottom";
227
+ };
55
228
  readonly "tui.editor.undo": {
56
- readonly defaultKeys: "alt+z" | "ctrl+z" | "ctrl+-";
57
229
  readonly description: "Undo";
230
+ readonly defaultKeys: "alt+z" | "ctrl+-" | "ctrl+z";
58
231
  };
59
232
  readonly "tui.altScreen.previousPrompt": {
60
- readonly defaultKeys: "ctrl+up" | ("ctrl+up" | "ctrl+shift+up")[];
61
233
  readonly description: "Jump to previous semantic prompt";
234
+ readonly defaultKeys: "ctrl+up" | ("ctrl+shift+up" | "ctrl+up")[];
62
235
  };
63
236
  readonly "tui.altScreen.nextPrompt": {
64
- readonly defaultKeys: "ctrl+down" | ("ctrl+down" | "ctrl+shift+down")[];
65
237
  readonly description: "Jump to next semantic prompt";
238
+ readonly defaultKeys: "ctrl+down" | ("ctrl+down" | "ctrl+shift+down")[];
66
239
  };
67
240
  readonly "tui.altScreen.search": {
68
- readonly defaultKeys: "ctrl+f" | "ctrl+shift+f";
69
241
  readonly description: "Search the primary scroll view";
242
+ readonly defaultKeys: "ctrl+f" | "ctrl+shift+f";
70
243
  };
71
244
  readonly "app.interrupt": {
72
245
  readonly defaultKeys: "escape";
@@ -81,7 +254,7 @@ export declare const KEYBINDINGS: {
81
254
  readonly description: "Exit when editor is empty";
82
255
  };
83
256
  readonly "app.suspend": {
84
- readonly defaultKeys: never[] | "ctrl+z";
257
+ readonly defaultKeys: "ctrl+z" | never[];
85
258
  readonly description: "Suspend to background";
86
259
  };
87
260
  readonly "app.thinking.cycle": {
@@ -164,6 +337,10 @@ export declare const KEYBINDINGS: {
164
337
  readonly defaultKeys: "shift+l";
165
338
  readonly description: "Edit tree label";
166
339
  };
340
+ readonly "app.tree.editMessage": {
341
+ readonly defaultKeys: "ctrl+e";
342
+ readonly description: "Edit the selected assistant response, or reopen a user message in the editor";
343
+ };
167
344
  readonly "app.tree.toggleLabelTimestamp": {
168
345
  readonly defaultKeys: "shift+t";
169
346
  readonly description: "Toggle tree label timestamps";
@@ -244,178 +421,6 @@ export declare const KEYBINDINGS: {
244
421
  readonly defaultKeys: "shift+ctrl+o";
245
422
  readonly description: "Tree filter: cycle backward";
246
423
  };
247
- readonly "tui.editor.cursorUp": {
248
- readonly defaultKeys: "up";
249
- readonly description: "Move cursor up";
250
- };
251
- readonly "tui.editor.cursorDown": {
252
- readonly defaultKeys: "down";
253
- readonly description: "Move cursor down";
254
- };
255
- readonly "tui.editor.historyPrevious": {
256
- readonly defaultKeys: [];
257
- readonly description: "Select previous prompt history entry";
258
- };
259
- readonly "tui.editor.historyNext": {
260
- readonly defaultKeys: [];
261
- readonly description: "Select next prompt history entry";
262
- };
263
- readonly "tui.editor.cursorLeft": {
264
- readonly defaultKeys: ["left", "ctrl+b"];
265
- readonly description: "Move cursor left";
266
- };
267
- readonly "tui.editor.cursorRight": {
268
- readonly defaultKeys: ["right", "ctrl+f"];
269
- readonly description: "Move cursor right";
270
- };
271
- readonly "tui.editor.cursorWordLeft": {
272
- readonly defaultKeys: ["alt+left", "ctrl+left", "alt+b"];
273
- readonly description: "Move cursor word left";
274
- };
275
- readonly "tui.editor.cursorWordRight": {
276
- readonly defaultKeys: ["alt+right", "ctrl+right", "alt+f"];
277
- readonly description: "Move cursor word right";
278
- };
279
- readonly "tui.editor.cursorLineStart": {
280
- readonly defaultKeys: ["home", "ctrl+home", "ctrl+a"];
281
- readonly description: "Move to line start";
282
- };
283
- readonly "tui.editor.cursorLineEnd": {
284
- readonly defaultKeys: ["end", "ctrl+end", "ctrl+e"];
285
- readonly description: "Move to line end";
286
- };
287
- readonly "tui.editor.jumpForward": {
288
- readonly defaultKeys: "ctrl+]";
289
- readonly description: "Jump forward to character";
290
- };
291
- readonly "tui.editor.jumpBackward": {
292
- readonly defaultKeys: "ctrl+alt+]";
293
- readonly description: "Jump backward to character";
294
- };
295
- readonly "tui.editor.pageUp": {
296
- readonly defaultKeys: ["pageUp", "ctrl+pageUp"];
297
- readonly description: "Page up";
298
- };
299
- readonly "tui.editor.pageDown": {
300
- readonly defaultKeys: ["pageDown", "ctrl+pageDown"];
301
- readonly description: "Page down";
302
- };
303
- readonly "tui.editor.deleteCharBackward": {
304
- readonly defaultKeys: "backspace";
305
- readonly description: "Delete character backward";
306
- };
307
- readonly "tui.editor.deleteCharForward": {
308
- readonly defaultKeys: ["delete", "ctrl+d"];
309
- readonly description: "Delete character forward";
310
- };
311
- readonly "tui.editor.deleteWordBackward": {
312
- readonly defaultKeys: ["ctrl+w", "alt+backspace"];
313
- readonly description: "Delete word backward";
314
- };
315
- readonly "tui.editor.deleteWordForward": {
316
- readonly defaultKeys: ["alt+d", "alt+delete"];
317
- readonly description: "Delete word forward";
318
- };
319
- readonly "tui.editor.deleteToLineStart": {
320
- readonly defaultKeys: "ctrl+u";
321
- readonly description: "Delete to line start";
322
- };
323
- readonly "tui.editor.deleteToLineEnd": {
324
- readonly defaultKeys: "ctrl+k";
325
- readonly description: "Delete to line end";
326
- };
327
- readonly "tui.editor.yank": {
328
- readonly defaultKeys: "ctrl+y";
329
- readonly description: "Yank";
330
- };
331
- readonly "tui.editor.yankPop": {
332
- readonly defaultKeys: "alt+y";
333
- readonly description: "Yank pop";
334
- };
335
- readonly "tui.input.newLine": {
336
- readonly defaultKeys: ["shift+enter", "ctrl+j"];
337
- readonly description: "Insert newline";
338
- };
339
- readonly "tui.input.submit": {
340
- readonly defaultKeys: "enter";
341
- readonly description: "Submit input";
342
- };
343
- readonly "tui.input.tab": {
344
- readonly defaultKeys: "tab";
345
- readonly description: "Tab / autocomplete";
346
- };
347
- readonly "tui.input.copy": {
348
- readonly defaultKeys: "ctrl+c";
349
- readonly description: "Copy selection";
350
- };
351
- readonly "tui.select.up": {
352
- readonly defaultKeys: "up";
353
- readonly description: "Move selection up";
354
- };
355
- readonly "tui.select.down": {
356
- readonly defaultKeys: "down";
357
- readonly description: "Move selection down";
358
- };
359
- readonly "tui.select.pageUp": {
360
- readonly defaultKeys: "pageUp";
361
- readonly description: "Selection page up";
362
- };
363
- readonly "tui.select.pageDown": {
364
- readonly defaultKeys: "pageDown";
365
- readonly description: "Selection page down";
366
- };
367
- readonly "tui.select.confirm": {
368
- readonly defaultKeys: "enter";
369
- readonly description: "Confirm selection";
370
- };
371
- readonly "tui.select.cancel": {
372
- readonly defaultKeys: ["escape", "ctrl+c"];
373
- readonly description: "Cancel selection";
374
- };
375
- readonly "tui.altScreen.pageUp": {
376
- readonly defaultKeys: "pageUp";
377
- readonly description: "Scroll viewport up one page";
378
- };
379
- readonly "tui.altScreen.pageDown": {
380
- readonly defaultKeys: "pageDown";
381
- readonly description: "Scroll viewport down one page";
382
- };
383
- readonly "tui.altScreen.halfPageUp": {
384
- readonly defaultKeys: [];
385
- readonly description: "Scroll viewport up half a page";
386
- };
387
- readonly "tui.altScreen.halfPageDown": {
388
- readonly defaultKeys: [];
389
- readonly description: "Scroll viewport down half a page";
390
- };
391
- readonly "tui.altScreen.lineUp": {
392
- readonly defaultKeys: [];
393
- readonly description: "Scroll viewport up one line";
394
- };
395
- readonly "tui.altScreen.lineDown": {
396
- readonly defaultKeys: [];
397
- readonly description: "Scroll viewport down one line";
398
- };
399
- readonly "tui.altScreen.searchNext": {
400
- readonly defaultKeys: ["enter", "ctrl+g"];
401
- readonly description: "Select the next search match";
402
- };
403
- readonly "tui.altScreen.searchPrevious": {
404
- readonly defaultKeys: ["shift+enter", "ctrl+shift+g"];
405
- readonly description: "Select the previous search match";
406
- };
407
- readonly "tui.altScreen.searchClose": {
408
- readonly defaultKeys: "escape";
409
- readonly description: "Close transcript search";
410
- };
411
- readonly "tui.altScreen.top": {
412
- readonly defaultKeys: "home";
413
- readonly description: "Scroll viewport to top";
414
- };
415
- readonly "tui.altScreen.bottom": {
416
- readonly defaultKeys: "end";
417
- readonly description: "Scroll viewport to bottom";
418
- };
419
424
  };
420
425
  export declare function migrateKeybindingsConfig(rawConfig: Record<string, unknown>): {
421
426
  config: Record<string, unknown>;
@@ -1 +1 @@
1
- {"version":3,"file":"keybindings.d.ts","sourceRoot":"","sources":["../../src/core/keybindings.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"keybindings.d.ts","sourceRoot":"","sources":["../../src/core/keybindings.ts"],"names":[],"mappings":"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"}