@code-yeongyu/senpi 2026.6.4 → 2026.6.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 (1190) hide show
  1. package/CHANGELOG.md +69 -1
  2. package/README.md +116 -99
  3. package/dist/bun/cli.d.ts.map +1 -1
  4. package/dist/bun/cli.js.map +1 -1
  5. package/dist/bun/register-bedrock.d.ts.map +1 -1
  6. package/dist/bun/restore-sandbox-env.d.ts.map +1 -1
  7. package/dist/bun/restore-sandbox-env.js.map +1 -1
  8. package/dist/cli/args.d.ts +1 -0
  9. package/dist/cli/args.d.ts.map +1 -1
  10. package/dist/cli/args.js +13 -4
  11. package/dist/cli/args.js.map +1 -1
  12. package/dist/cli/config-selector.d.ts.map +1 -1
  13. package/dist/cli/config-selector.js.map +1 -1
  14. package/dist/cli/file-processor.d.ts.map +1 -1
  15. package/dist/cli/file-processor.js.map +1 -1
  16. package/dist/cli/initial-message.d.ts +1 -1
  17. package/dist/cli/initial-message.d.ts.map +1 -1
  18. package/dist/cli/initial-message.js.map +1 -1
  19. package/dist/cli/list-models.d.ts.map +1 -1
  20. package/dist/cli/list-models.js.map +1 -1
  21. package/dist/cli/project-trust.d.ts +10 -0
  22. package/dist/cli/project-trust.d.ts.map +1 -0
  23. package/dist/cli/project-trust.js +48 -0
  24. package/dist/cli/project-trust.js.map +1 -0
  25. package/dist/cli/session-picker.d.ts.map +1 -1
  26. package/dist/cli/session-picker.js.map +1 -1
  27. package/dist/cli/startup-ui.d.ts +7 -0
  28. package/dist/cli/startup-ui.d.ts.map +1 -0
  29. package/dist/cli/startup-ui.js +59 -0
  30. package/dist/cli/startup-ui.js.map +1 -0
  31. package/dist/cli-main.d.ts.map +1 -1
  32. package/dist/cli-main.js.map +1 -1
  33. package/dist/cli.d.ts.map +1 -1
  34. package/dist/cli.js +10 -1
  35. package/dist/cli.js.map +1 -1
  36. package/dist/config.d.ts.map +1 -1
  37. package/dist/config.js.map +1 -1
  38. package/dist/core/agent-session-runtime.d.ts +3 -1
  39. package/dist/core/agent-session-runtime.d.ts.map +1 -1
  40. package/dist/core/agent-session-runtime.js +4 -9
  41. package/dist/core/agent-session-runtime.js.map +1 -1
  42. package/dist/core/agent-session-services.d.ts +2 -1
  43. package/dist/core/agent-session-services.d.ts.map +1 -1
  44. package/dist/core/agent-session-services.js +2 -2
  45. package/dist/core/agent-session-services.js.map +1 -1
  46. package/dist/core/agent-session.d.ts +33 -0
  47. package/dist/core/agent-session.d.ts.map +1 -1
  48. package/dist/core/agent-session.js +57 -79
  49. package/dist/core/agent-session.js.map +1 -1
  50. package/dist/core/auth-guidance.d.ts.map +1 -1
  51. package/dist/core/auth-guidance.js.map +1 -1
  52. package/dist/core/auth-storage.d.ts +4 -0
  53. package/dist/core/auth-storage.d.ts.map +1 -1
  54. package/dist/core/auth-storage.js +4 -8
  55. package/dist/core/auth-storage.js.map +1 -1
  56. package/dist/core/bash-executor.d.ts.map +1 -1
  57. package/dist/core/bash-executor.js.map +1 -1
  58. package/dist/core/compaction/branch-summarization.d.ts.map +1 -1
  59. package/dist/core/compaction/branch-summarization.js.map +1 -1
  60. package/dist/core/compaction/compaction.d.ts.map +1 -1
  61. package/dist/core/compaction/compaction.js.map +1 -1
  62. package/dist/core/compaction/index.d.ts.map +1 -1
  63. package/dist/core/compaction/utils.d.ts +1 -1
  64. package/dist/core/compaction/utils.d.ts.map +1 -1
  65. package/dist/core/compaction/utils.js +1 -1
  66. package/dist/core/compaction/utils.js.map +1 -1
  67. package/dist/core/defaults.d.ts.map +1 -1
  68. package/dist/core/diagnostics.d.ts.map +1 -1
  69. package/dist/core/dynamic-prompt/build.d.ts.map +1 -1
  70. package/dist/core/dynamic-prompt/build.js.map +1 -1
  71. package/dist/core/dynamic-prompt/exploration.d.ts.map +1 -1
  72. package/dist/core/dynamic-prompt/exploration.js.map +1 -1
  73. package/dist/core/dynamic-prompt/identity.d.ts.map +1 -1
  74. package/dist/core/dynamic-prompt/identity.js.map +1 -1
  75. package/dist/core/dynamic-prompt/index.d.ts.map +1 -1
  76. package/dist/core/dynamic-prompt/intent-gate.d.ts.map +1 -1
  77. package/dist/core/dynamic-prompt/intent-gate.js.map +1 -1
  78. package/dist/core/dynamic-prompt/parallel-tools.d.ts.map +1 -1
  79. package/dist/core/dynamic-prompt/parallel-tools.js.map +1 -1
  80. package/dist/core/dynamic-prompt/policies.d.ts.map +1 -1
  81. package/dist/core/dynamic-prompt/policies.js.map +1 -1
  82. package/dist/core/dynamic-prompt/style.d.ts.map +1 -1
  83. package/dist/core/dynamic-prompt/style.js.map +1 -1
  84. package/dist/core/dynamic-prompt/tool-categorization.d.ts.map +1 -1
  85. package/dist/core/dynamic-prompt/tool-categorization.js.map +1 -1
  86. package/dist/core/dynamic-prompt/tool-section.d.ts.map +1 -1
  87. package/dist/core/dynamic-prompt/tool-section.js.map +1 -1
  88. package/dist/core/dynamic-prompt/types.d.ts.map +1 -1
  89. package/dist/core/dynamic-prompt/verification.d.ts.map +1 -1
  90. package/dist/core/dynamic-prompt/verification.js.map +1 -1
  91. package/dist/core/event-bus.d.ts.map +1 -1
  92. package/dist/core/event-bus.js.map +1 -1
  93. package/dist/core/exec.d.ts.map +1 -1
  94. package/dist/core/exec.js.map +1 -1
  95. package/dist/core/export-html/ansi-to-html.d.ts.map +1 -1
  96. package/dist/core/export-html/ansi-to-html.js.map +1 -1
  97. package/dist/core/export-html/index.d.ts.map +1 -1
  98. package/dist/core/export-html/index.js.map +1 -1
  99. package/dist/core/export-html/tool-renderer.d.ts.map +1 -1
  100. package/dist/core/export-html/tool-renderer.js.map +1 -1
  101. package/dist/core/extensions/builtin/anthropic-bash/index.d.ts.map +1 -1
  102. package/dist/core/extensions/builtin/anthropic-bash/index.js.map +1 -1
  103. package/dist/core/extensions/builtin/anthropic-web-search/index.d.ts.map +1 -1
  104. package/dist/core/extensions/builtin/anthropic-web-search/index.js.map +1 -1
  105. package/dist/core/extensions/builtin/bash-timeout/index.d.ts.map +1 -1
  106. package/dist/core/extensions/builtin/bash-timeout/index.js.map +1 -1
  107. package/dist/core/extensions/builtin/bash-timeout/timeout.d.ts.map +1 -1
  108. package/dist/core/extensions/builtin/bash-timeout/timeout.js.map +1 -1
  109. package/dist/core/extensions/builtin/compaction/checkpoint-state.d.ts.map +1 -1
  110. package/dist/core/extensions/builtin/compaction/checkpoint-state.js.map +1 -1
  111. package/dist/core/extensions/builtin/compaction/circuit-breaker.d.ts.map +1 -1
  112. package/dist/core/extensions/builtin/compaction/circuit-breaker.js.map +1 -1
  113. package/dist/core/extensions/builtin/compaction/context-reduction.d.ts.map +1 -1
  114. package/dist/core/extensions/builtin/compaction/context-reduction.js +1 -1
  115. package/dist/core/extensions/builtin/compaction/context-reduction.js.map +1 -1
  116. package/dist/core/extensions/builtin/compaction/degradation-monitor.d.ts +0 -1
  117. package/dist/core/extensions/builtin/compaction/degradation-monitor.d.ts.map +1 -1
  118. package/dist/core/extensions/builtin/compaction/degradation-monitor.js +0 -1
  119. package/dist/core/extensions/builtin/compaction/degradation-monitor.js.map +1 -1
  120. package/dist/core/extensions/builtin/compaction/index.d.ts.map +1 -1
  121. package/dist/core/extensions/builtin/compaction/index.js +4 -4
  122. package/dist/core/extensions/builtin/compaction/index.js.map +1 -1
  123. package/dist/core/extensions/builtin/compaction/openai-remote.d.ts.map +1 -1
  124. package/dist/core/extensions/builtin/compaction/openai-remote.js.map +1 -1
  125. package/dist/core/extensions/builtin/compaction/per-turn-cap.d.ts.map +1 -1
  126. package/dist/core/extensions/builtin/compaction/per-turn-cap.js.map +1 -1
  127. package/dist/core/extensions/builtin/compaction/policy.d.ts +0 -5
  128. package/dist/core/extensions/builtin/compaction/policy.d.ts.map +1 -1
  129. package/dist/core/extensions/builtin/compaction/policy.js +0 -4
  130. package/dist/core/extensions/builtin/compaction/policy.js.map +1 -1
  131. package/dist/core/extensions/builtin/compaction/prompts.d.ts.map +1 -1
  132. package/dist/core/extensions/builtin/compaction/prompts.js.map +1 -1
  133. package/dist/core/extensions/builtin/compaction/repair-tool-pairs.d.ts.map +1 -1
  134. package/dist/core/extensions/builtin/compaction/repair-tool-pairs.js.map +1 -1
  135. package/dist/core/extensions/builtin/compaction/restoration-tracker.d.ts.map +1 -1
  136. package/dist/core/extensions/builtin/compaction/restoration-tracker.js.map +1 -1
  137. package/dist/core/extensions/builtin/compaction/speculative.d.ts +0 -6
  138. package/dist/core/extensions/builtin/compaction/speculative.d.ts.map +1 -1
  139. package/dist/core/extensions/builtin/compaction/speculative.js +0 -3
  140. package/dist/core/extensions/builtin/compaction/speculative.js.map +1 -1
  141. package/dist/core/extensions/builtin/compaction/state.d.ts.map +1 -1
  142. package/dist/core/extensions/builtin/compaction/state.js.map +1 -1
  143. package/dist/core/extensions/builtin/compaction/todo-bridge.d.ts.map +1 -1
  144. package/dist/core/extensions/builtin/compaction/todo-bridge.js.map +1 -1
  145. package/dist/core/extensions/builtin/compaction/tool-truncation.d.ts.map +1 -1
  146. package/dist/core/extensions/builtin/compaction/tool-truncation.js.map +1 -1
  147. package/dist/core/extensions/builtin/diff.d.ts.map +1 -1
  148. package/dist/core/extensions/builtin/diff.js.map +1 -1
  149. package/dist/core/extensions/builtin/files.d.ts.map +1 -1
  150. package/dist/core/extensions/builtin/files.js.map +1 -1
  151. package/dist/core/extensions/builtin/gpt-apply-patch/apply.d.ts.map +1 -1
  152. package/dist/core/extensions/builtin/gpt-apply-patch/apply.js.map +1 -1
  153. package/dist/core/extensions/builtin/gpt-apply-patch/constants.d.ts.map +1 -1
  154. package/dist/core/extensions/builtin/gpt-apply-patch/constants.js.map +1 -1
  155. package/dist/core/extensions/builtin/gpt-apply-patch/errors.d.ts.map +1 -1
  156. package/dist/core/extensions/builtin/gpt-apply-patch/errors.js +0 -2
  157. package/dist/core/extensions/builtin/gpt-apply-patch/errors.js.map +1 -1
  158. package/dist/core/extensions/builtin/gpt-apply-patch/extension.d.ts +1 -1
  159. package/dist/core/extensions/builtin/gpt-apply-patch/extension.d.ts.map +1 -1
  160. package/dist/core/extensions/builtin/gpt-apply-patch/extension.js +10 -2
  161. package/dist/core/extensions/builtin/gpt-apply-patch/extension.js.map +1 -1
  162. package/dist/core/extensions/builtin/gpt-apply-patch/index.d.ts.map +1 -1
  163. package/dist/core/extensions/builtin/gpt-apply-patch/params.d.ts.map +1 -1
  164. package/dist/core/extensions/builtin/gpt-apply-patch/params.js.map +1 -1
  165. package/dist/core/extensions/builtin/gpt-apply-patch/parser.d.ts.map +1 -1
  166. package/dist/core/extensions/builtin/gpt-apply-patch/parser.js.map +1 -1
  167. package/dist/core/extensions/builtin/gpt-apply-patch/patch-diff.d.ts.map +1 -1
  168. package/dist/core/extensions/builtin/gpt-apply-patch/patch-diff.js.map +1 -1
  169. package/dist/core/extensions/builtin/gpt-apply-patch/patch-replace.d.ts.map +1 -1
  170. package/dist/core/extensions/builtin/gpt-apply-patch/patch-replace.js.map +1 -1
  171. package/dist/core/extensions/builtin/gpt-apply-patch/preview-format.d.ts.map +1 -1
  172. package/dist/core/extensions/builtin/gpt-apply-patch/preview-format.js.map +1 -1
  173. package/dist/core/extensions/builtin/gpt-apply-patch/preview.d.ts.map +1 -1
  174. package/dist/core/extensions/builtin/gpt-apply-patch/preview.js.map +1 -1
  175. package/dist/core/extensions/builtin/gpt-apply-patch/seek-sequence.d.ts.map +1 -1
  176. package/dist/core/extensions/builtin/gpt-apply-patch/seek-sequence.js.map +1 -1
  177. package/dist/core/extensions/builtin/gpt-apply-patch/streaming-parser.d.ts.map +1 -1
  178. package/dist/core/extensions/builtin/gpt-apply-patch/streaming-parser.js +7 -5
  179. package/dist/core/extensions/builtin/gpt-apply-patch/streaming-parser.js.map +1 -1
  180. package/dist/core/extensions/builtin/gpt-apply-patch/streaming-render.d.ts.map +1 -1
  181. package/dist/core/extensions/builtin/gpt-apply-patch/streaming-render.js.map +1 -1
  182. package/dist/core/extensions/builtin/gpt-apply-patch/text.d.ts.map +1 -1
  183. package/dist/core/extensions/builtin/gpt-apply-patch/text.js.map +1 -1
  184. package/dist/core/extensions/builtin/gpt-apply-patch/tool.d.ts.map +1 -1
  185. package/dist/core/extensions/builtin/gpt-apply-patch/tool.js.map +1 -1
  186. package/dist/core/extensions/builtin/gpt-apply-patch/types.d.ts.map +1 -1
  187. package/dist/core/extensions/builtin/gpt-apply-patch/workspace.d.ts.map +1 -1
  188. package/dist/core/extensions/builtin/gpt-apply-patch/workspace.js.map +1 -1
  189. package/dist/core/extensions/builtin/history-search/filter.d.ts.map +1 -1
  190. package/dist/core/extensions/builtin/history-search/filter.js.map +1 -1
  191. package/dist/core/extensions/builtin/history-search/index.d.ts.map +1 -1
  192. package/dist/core/extensions/builtin/history-search/index.js.map +1 -1
  193. package/dist/core/extensions/builtin/history-search/indexer.d.ts.map +1 -1
  194. package/dist/core/extensions/builtin/history-search/indexer.js.map +1 -1
  195. package/dist/core/extensions/builtin/history-search/overlay.d.ts.map +1 -1
  196. package/dist/core/extensions/builtin/history-search/overlay.js +3 -6
  197. package/dist/core/extensions/builtin/history-search/overlay.js.map +1 -1
  198. package/dist/core/extensions/builtin/history-search/types.d.ts.map +1 -1
  199. package/dist/core/extensions/builtin/index.d.ts.map +1 -1
  200. package/dist/core/extensions/builtin/kimi-web-search/index.d.ts.map +1 -1
  201. package/dist/core/extensions/builtin/kimi-web-search/index.js.map +1 -1
  202. package/dist/core/extensions/builtin/openai-web-search/index.d.ts.map +1 -1
  203. package/dist/core/extensions/builtin/openai-web-search/index.js.map +1 -1
  204. package/dist/core/extensions/builtin/permission-system/arity.d.ts.map +1 -1
  205. package/dist/core/extensions/builtin/permission-system/arity.js.map +1 -1
  206. package/dist/core/extensions/builtin/permission-system/cli.d.ts +0 -3
  207. package/dist/core/extensions/builtin/permission-system/cli.d.ts.map +1 -1
  208. package/dist/core/extensions/builtin/permission-system/cli.js +0 -13
  209. package/dist/core/extensions/builtin/permission-system/cli.js.map +1 -1
  210. package/dist/core/extensions/builtin/permission-system/config.d.ts.map +1 -1
  211. package/dist/core/extensions/builtin/permission-system/config.js.map +1 -1
  212. package/dist/core/extensions/builtin/permission-system/evaluate.d.ts.map +1 -1
  213. package/dist/core/extensions/builtin/permission-system/evaluate.js.map +1 -1
  214. package/dist/core/extensions/builtin/permission-system/events.d.ts.map +1 -1
  215. package/dist/core/extensions/builtin/permission-system/events.js.map +1 -1
  216. package/dist/core/extensions/builtin/permission-system/external-dir.d.ts.map +1 -1
  217. package/dist/core/extensions/builtin/permission-system/external-dir.js.map +1 -1
  218. package/dist/core/extensions/builtin/permission-system/index.d.ts.map +1 -1
  219. package/dist/core/extensions/builtin/permission-system/index.js.map +1 -1
  220. package/dist/core/extensions/builtin/permission-system/non-interactive.d.ts.map +1 -1
  221. package/dist/core/extensions/builtin/permission-system/non-interactive.js.map +1 -1
  222. package/dist/core/extensions/builtin/permission-system/parsers.d.ts.map +1 -1
  223. package/dist/core/extensions/builtin/permission-system/parsers.js +3 -1
  224. package/dist/core/extensions/builtin/permission-system/parsers.js.map +1 -1
  225. package/dist/core/extensions/builtin/permission-system/prompt.d.ts.map +1 -1
  226. package/dist/core/extensions/builtin/permission-system/prompt.js.map +1 -1
  227. package/dist/core/extensions/builtin/permission-system/service.d.ts.map +1 -1
  228. package/dist/core/extensions/builtin/permission-system/service.js +2 -5
  229. package/dist/core/extensions/builtin/permission-system/service.js.map +1 -1
  230. package/dist/core/extensions/builtin/permission-system/settings.d.ts.map +1 -1
  231. package/dist/core/extensions/builtin/permission-system/settings.js.map +1 -1
  232. package/dist/core/extensions/builtin/permission-system/storage.d.ts.map +1 -1
  233. package/dist/core/extensions/builtin/permission-system/storage.js.map +1 -1
  234. package/dist/core/extensions/builtin/permission-system/types.d.ts.map +1 -1
  235. package/dist/core/extensions/builtin/permission-system/types.js +3 -5
  236. package/dist/core/extensions/builtin/permission-system/types.js.map +1 -1
  237. package/dist/core/extensions/builtin/permission-system/wildcard.d.ts.map +1 -1
  238. package/dist/core/extensions/builtin/permission-system/wildcard.js.map +1 -1
  239. package/dist/core/extensions/builtin/prompt-preset/claude-opus-4-5.d.ts.map +1 -1
  240. package/dist/core/extensions/builtin/prompt-preset/claude-opus-4-5.js.map +1 -1
  241. package/dist/core/extensions/builtin/prompt-preset/claude-opus-4-6.d.ts.map +1 -1
  242. package/dist/core/extensions/builtin/prompt-preset/claude-opus-4-6.js.map +1 -1
  243. package/dist/core/extensions/builtin/prompt-preset/claude-opus-4-7.d.ts.map +1 -1
  244. package/dist/core/extensions/builtin/prompt-preset/claude-opus-4-7.js.map +1 -1
  245. package/dist/core/extensions/builtin/prompt-preset/file-operations.d.ts.map +1 -1
  246. package/dist/core/extensions/builtin/prompt-preset/file-operations.js.map +1 -1
  247. package/dist/core/extensions/builtin/prompt-preset/gpt-5.2.d.ts.map +1 -1
  248. package/dist/core/extensions/builtin/prompt-preset/gpt-5.2.js.map +1 -1
  249. package/dist/core/extensions/builtin/prompt-preset/gpt-5.3-codex.d.ts.map +1 -1
  250. package/dist/core/extensions/builtin/prompt-preset/gpt-5.3-codex.js.map +1 -1
  251. package/dist/core/extensions/builtin/prompt-preset/gpt-5.4.d.ts.map +1 -1
  252. package/dist/core/extensions/builtin/prompt-preset/gpt-5.4.js.map +1 -1
  253. package/dist/core/extensions/builtin/prompt-preset/gpt-5.5.d.ts.map +1 -1
  254. package/dist/core/extensions/builtin/prompt-preset/gpt-5.5.js.map +1 -1
  255. package/dist/core/extensions/builtin/prompt-preset/gpt-5.d.ts.map +1 -1
  256. package/dist/core/extensions/builtin/prompt-preset/gpt-5.js.map +1 -1
  257. package/dist/core/extensions/builtin/prompt-preset/index.d.ts.map +1 -1
  258. package/dist/core/extensions/builtin/prompt-preset/index.js.map +1 -1
  259. package/dist/core/extensions/builtin/prompt-preset/kimi-k2-6.d.ts.map +1 -1
  260. package/dist/core/extensions/builtin/prompt-preset/kimi-k2-6.js.map +1 -1
  261. package/dist/core/extensions/builtin/prompt-preset/presets.d.ts.map +1 -1
  262. package/dist/core/extensions/builtin/prompt-preset/presets.js.map +1 -1
  263. package/dist/core/extensions/builtin/prompt-preset/settings.d.ts.map +1 -1
  264. package/dist/core/extensions/builtin/prompt-preset/settings.js.map +1 -1
  265. package/dist/core/extensions/builtin/prompt-url-widget.d.ts.map +1 -1
  266. package/dist/core/extensions/builtin/prompt-url-widget.js.map +1 -1
  267. package/dist/core/extensions/builtin/redraws.d.ts.map +1 -1
  268. package/dist/core/extensions/builtin/redraws.js.map +1 -1
  269. package/dist/core/extensions/builtin/service-tier.d.ts.map +1 -1
  270. package/dist/core/extensions/builtin/service-tier.js.map +1 -1
  271. package/dist/core/extensions/builtin/session-observer/index.d.ts.map +1 -1
  272. package/dist/core/extensions/builtin/session-observer/index.js.map +1 -1
  273. package/dist/core/extensions/builtin/session-observer/loader.d.ts.map +1 -1
  274. package/dist/core/extensions/builtin/session-observer/loader.js.map +1 -1
  275. package/dist/core/extensions/builtin/session-observer/overlay-format.d.ts.map +1 -1
  276. package/dist/core/extensions/builtin/session-observer/overlay-format.js.map +1 -1
  277. package/dist/core/extensions/builtin/session-observer/overlay.d.ts.map +1 -1
  278. package/dist/core/extensions/builtin/session-observer/overlay.js +13 -18
  279. package/dist/core/extensions/builtin/session-observer/overlay.js.map +1 -1
  280. package/dist/core/extensions/builtin/session-observer/scanner.d.ts.map +1 -1
  281. package/dist/core/extensions/builtin/session-observer/scanner.js.map +1 -1
  282. package/dist/core/extensions/builtin/session-observer/text.d.ts.map +1 -1
  283. package/dist/core/extensions/builtin/session-observer/text.js.map +1 -1
  284. package/dist/core/extensions/builtin/session-observer/transcript-entries.d.ts.map +1 -1
  285. package/dist/core/extensions/builtin/session-observer/transcript-entries.js.map +1 -1
  286. package/dist/core/extensions/builtin/session-observer/transcript-format.d.ts.map +1 -1
  287. package/dist/core/extensions/builtin/session-observer/transcript-format.js.map +1 -1
  288. package/dist/core/extensions/builtin/session-observer/transcript.d.ts.map +1 -1
  289. package/dist/core/extensions/builtin/session-observer/transcript.js.map +1 -1
  290. package/dist/core/extensions/builtin/session-observer/types.d.ts.map +1 -1
  291. package/dist/core/extensions/builtin/todotools/index.d.ts.map +1 -1
  292. package/dist/core/extensions/builtin/todotools/index.js +0 -2
  293. package/dist/core/extensions/builtin/todotools/index.js.map +1 -1
  294. package/dist/core/extensions/builtin/todotools/prompt.d.ts +1 -1
  295. package/dist/core/extensions/builtin/todotools/prompt.d.ts.map +1 -1
  296. package/dist/core/extensions/builtin/todotools/prompt.js +0 -2
  297. package/dist/core/extensions/builtin/todotools/prompt.js.map +1 -1
  298. package/dist/core/extensions/builtin/todotools/state.d.ts.map +1 -1
  299. package/dist/core/extensions/builtin/todotools/state.js.map +1 -1
  300. package/dist/core/extensions/builtin/todotools/tools/todoread.d.ts.map +1 -1
  301. package/dist/core/extensions/builtin/todotools/tools/todoread.js.map +1 -1
  302. package/dist/core/extensions/builtin/todotools/tools/todowrite.d.ts.map +1 -1
  303. package/dist/core/extensions/builtin/todotools/tools/todowrite.js.map +1 -1
  304. package/dist/core/extensions/builtin/tool-pair-guard/index.d.ts.map +1 -1
  305. package/dist/core/extensions/builtin/tool-pair-guard/index.js.map +1 -1
  306. package/dist/core/extensions/builtin/tool-pair-guard/sanitize-anthropic-payload.d.ts.map +1 -1
  307. package/dist/core/extensions/builtin/tool-pair-guard/sanitize-anthropic-payload.js.map +1 -1
  308. package/dist/core/extensions/builtin/tool-pair-guard/sanitize-openai-chat-completions-payload.d.ts.map +1 -1
  309. package/dist/core/extensions/builtin/tool-pair-guard/sanitize-openai-chat-completions-payload.js.map +1 -1
  310. package/dist/core/extensions/builtin/tool-pair-guard/sanitize-openai-responses-payload.d.ts.map +1 -1
  311. package/dist/core/extensions/builtin/tool-pair-guard/sanitize-openai-responses-payload.js.map +1 -1
  312. package/dist/core/extensions/builtin/tps.d.ts.map +1 -1
  313. package/dist/core/extensions/builtin/tps.js.map +1 -1
  314. package/dist/core/extensions/index.d.ts +1 -1
  315. package/dist/core/extensions/index.d.ts.map +1 -1
  316. package/dist/core/extensions/index.js.map +1 -1
  317. package/dist/core/extensions/loader.d.ts +1 -1
  318. package/dist/core/extensions/loader.d.ts.map +1 -1
  319. package/dist/core/extensions/loader.js +4 -4
  320. package/dist/core/extensions/loader.js.map +1 -1
  321. package/dist/core/extensions/runner.d.ts +7 -2
  322. package/dist/core/extensions/runner.d.ts.map +1 -1
  323. package/dist/core/extensions/runner.js +69 -43
  324. package/dist/core/extensions/runner.js.map +1 -1
  325. package/dist/core/extensions/types.d.ts +22 -2
  326. package/dist/core/extensions/types.d.ts.map +1 -1
  327. package/dist/core/extensions/types.js.map +1 -1
  328. package/dist/core/extensions/wrapper.d.ts.map +1 -1
  329. package/dist/core/extensions/wrapper.js.map +1 -1
  330. package/dist/core/footer-data-provider.d.ts.map +1 -1
  331. package/dist/core/footer-data-provider.js +17 -18
  332. package/dist/core/footer-data-provider.js.map +1 -1
  333. package/dist/core/http-dispatcher.d.ts.map +1 -1
  334. package/dist/core/http-dispatcher.js.map +1 -1
  335. package/dist/core/keybindings.d.ts +1 -1
  336. package/dist/core/keybindings.d.ts.map +1 -1
  337. package/dist/core/keybindings.js +0 -1
  338. package/dist/core/keybindings.js.map +1 -1
  339. package/dist/core/messages.d.ts.map +1 -1
  340. package/dist/core/messages.js.map +1 -1
  341. package/dist/core/model-registry.d.ts +3 -4
  342. package/dist/core/model-registry.d.ts.map +1 -1
  343. package/dist/core/model-registry.js +31 -16
  344. package/dist/core/model-registry.js.map +1 -1
  345. package/dist/core/model-resolver.d.ts.map +1 -1
  346. package/dist/core/model-resolver.js.map +1 -1
  347. package/dist/core/output-guard.d.ts.map +1 -1
  348. package/dist/core/output-guard.js.map +1 -1
  349. package/dist/core/package-manager.d.ts +1 -0
  350. package/dist/core/package-manager.d.ts.map +1 -1
  351. package/dist/core/package-manager.js +25 -13
  352. package/dist/core/package-manager.js.map +1 -1
  353. package/dist/core/project-trust.d.ts +15 -0
  354. package/dist/core/project-trust.d.ts.map +1 -0
  355. package/dist/core/project-trust.js +58 -0
  356. package/dist/core/project-trust.js.map +1 -0
  357. package/dist/core/prompt-templates.d.ts +2 -1
  358. package/dist/core/prompt-templates.d.ts.map +1 -1
  359. package/dist/core/prompt-templates.js +24 -26
  360. package/dist/core/prompt-templates.js.map +1 -1
  361. package/dist/core/provider-attribution.d.ts.map +1 -1
  362. package/dist/core/provider-attribution.js.map +1 -1
  363. package/dist/core/provider-display-names.d.ts.map +1 -1
  364. package/dist/core/resolve-config-value.d.ts +0 -4
  365. package/dist/core/resolve-config-value.d.ts.map +1 -1
  366. package/dist/core/resolve-config-value.js +0 -15
  367. package/dist/core/resolve-config-value.js.map +1 -1
  368. package/dist/core/resource-loader.d.ts +14 -2
  369. package/dist/core/resource-loader.d.ts.map +1 -1
  370. package/dist/core/resource-loader.js +117 -74
  371. package/dist/core/resource-loader.js.map +1 -1
  372. package/dist/core/sdk.d.ts.map +1 -1
  373. package/dist/core/sdk.js.map +1 -1
  374. package/dist/core/session-cwd.d.ts.map +1 -1
  375. package/dist/core/session-cwd.js +0 -1
  376. package/dist/core/session-cwd.js.map +1 -1
  377. package/dist/core/session-manager.d.ts +3 -0
  378. package/dist/core/session-manager.d.ts.map +1 -1
  379. package/dist/core/session-manager.js +41 -28
  380. package/dist/core/session-manager.js.map +1 -1
  381. package/dist/core/session-resident-store.d.ts +16 -0
  382. package/dist/core/session-resident-store.d.ts.map +1 -0
  383. package/dist/core/session-resident-store.js +48 -0
  384. package/dist/core/session-resident-store.js.map +1 -0
  385. package/dist/core/session-work-barrier.d.ts.map +1 -1
  386. package/dist/core/session-work-barrier.js +5 -3
  387. package/dist/core/session-work-barrier.js.map +1 -1
  388. package/dist/core/settings-manager.d.ts +14 -2
  389. package/dist/core/settings-manager.d.ts.map +1 -1
  390. package/dist/core/settings-manager.js +86 -46
  391. package/dist/core/settings-manager.js.map +1 -1
  392. package/dist/core/skills.d.ts.map +1 -1
  393. package/dist/core/skills.js.map +1 -1
  394. package/dist/core/slash-commands.d.ts.map +1 -1
  395. package/dist/core/slash-commands.js +1 -0
  396. package/dist/core/slash-commands.js.map +1 -1
  397. package/dist/core/source-info.d.ts.map +1 -1
  398. package/dist/core/source-info.js.map +1 -1
  399. package/dist/core/system-prompt.d.ts.map +1 -1
  400. package/dist/core/system-prompt.js.map +1 -1
  401. package/dist/core/telemetry.d.ts.map +1 -1
  402. package/dist/core/telemetry.js.map +1 -1
  403. package/dist/core/thinking-levels.d.ts.map +1 -1
  404. package/dist/core/thinking-levels.js.map +1 -1
  405. package/dist/core/timings.d.ts.map +1 -1
  406. package/dist/core/timings.js.map +1 -1
  407. package/dist/core/tools/bash.d.ts.map +1 -1
  408. package/dist/core/tools/bash.js +9 -6
  409. package/dist/core/tools/bash.js.map +1 -1
  410. package/dist/core/tools/diff-render.d.ts.map +1 -1
  411. package/dist/core/tools/diff-render.js.map +1 -1
  412. package/dist/core/tools/edit-diff.d.ts +0 -5
  413. package/dist/core/tools/edit-diff.d.ts.map +1 -1
  414. package/dist/core/tools/edit-diff.js +0 -7
  415. package/dist/core/tools/edit-diff.js.map +1 -1
  416. package/dist/core/tools/edit.d.ts.map +1 -1
  417. package/dist/core/tools/edit.js.map +1 -1
  418. package/dist/core/tools/file-mutation-queue.d.ts.map +1 -1
  419. package/dist/core/tools/file-mutation-queue.js.map +1 -1
  420. package/dist/core/tools/find.d.ts.map +1 -1
  421. package/dist/core/tools/find.js +1 -1
  422. package/dist/core/tools/find.js.map +1 -1
  423. package/dist/core/tools/grep.d.ts.map +1 -1
  424. package/dist/core/tools/grep.js +1 -1
  425. package/dist/core/tools/grep.js.map +1 -1
  426. package/dist/core/tools/index.d.ts +0 -5
  427. package/dist/core/tools/index.d.ts.map +1 -1
  428. package/dist/core/tools/index.js +0 -67
  429. package/dist/core/tools/index.js.map +1 -1
  430. package/dist/core/tools/ls.d.ts.map +1 -1
  431. package/dist/core/tools/ls.js +1 -1
  432. package/dist/core/tools/ls.js.map +1 -1
  433. package/dist/core/tools/output-accumulator.d.ts.map +1 -1
  434. package/dist/core/tools/output-accumulator.js +12 -18
  435. package/dist/core/tools/output-accumulator.js.map +1 -1
  436. package/dist/core/tools/path-utils.d.ts.map +1 -1
  437. package/dist/core/tools/path-utils.js.map +1 -1
  438. package/dist/core/tools/read.d.ts.map +1 -1
  439. package/dist/core/tools/read.js +1 -1
  440. package/dist/core/tools/read.js.map +1 -1
  441. package/dist/core/tools/render-utils.d.ts.map +1 -1
  442. package/dist/core/tools/render-utils.js.map +1 -1
  443. package/dist/core/tools/tool-definition-wrapper.d.ts.map +1 -1
  444. package/dist/core/tools/tool-definition-wrapper.js.map +1 -1
  445. package/dist/core/tools/truncate.d.ts.map +1 -1
  446. package/dist/core/tools/truncate.js.map +1 -1
  447. package/dist/core/tools/write.d.ts.map +1 -1
  448. package/dist/core/tools/write.js +1 -2
  449. package/dist/core/tools/write.js.map +1 -1
  450. package/dist/core/trust-manager.d.ts +31 -0
  451. package/dist/core/trust-manager.d.ts.map +1 -0
  452. package/dist/core/trust-manager.js +186 -0
  453. package/dist/core/trust-manager.js.map +1 -0
  454. package/dist/index.d.ts +5 -4
  455. package/dist/index.d.ts.map +1 -1
  456. package/dist/index.js +2 -1
  457. package/dist/index.js.map +1 -1
  458. package/dist/main.d.ts.map +1 -1
  459. package/dist/main.js +101 -86
  460. package/dist/main.js.map +1 -1
  461. package/dist/migrations.d.ts.map +1 -1
  462. package/dist/migrations.js +39 -34
  463. package/dist/migrations.js.map +1 -1
  464. package/dist/modes/index.d.ts +1 -1
  465. package/dist/modes/index.d.ts.map +1 -1
  466. package/dist/modes/index.js.map +1 -1
  467. package/dist/modes/interactive/components/armin.d.ts.map +1 -1
  468. package/dist/modes/interactive/components/armin.js +6 -10
  469. package/dist/modes/interactive/components/armin.js.map +1 -1
  470. package/dist/modes/interactive/components/assistant-message.d.ts.map +1 -1
  471. package/dist/modes/interactive/components/assistant-message.js +2 -11
  472. package/dist/modes/interactive/components/assistant-message.js.map +1 -1
  473. package/dist/modes/interactive/components/bash-execution.d.ts.map +1 -1
  474. package/dist/modes/interactive/components/bash-execution.js +6 -11
  475. package/dist/modes/interactive/components/bash-execution.js.map +1 -1
  476. package/dist/modes/interactive/components/bordered-loader.d.ts.map +1 -1
  477. package/dist/modes/interactive/components/bordered-loader.js +0 -3
  478. package/dist/modes/interactive/components/bordered-loader.js.map +1 -1
  479. package/dist/modes/interactive/components/branch-summary-message.d.ts.map +1 -1
  480. package/dist/modes/interactive/components/branch-summary-message.js +1 -3
  481. package/dist/modes/interactive/components/branch-summary-message.js.map +1 -1
  482. package/dist/modes/interactive/components/compaction-summary-message.d.ts.map +1 -1
  483. package/dist/modes/interactive/components/compaction-summary-message.js +1 -3
  484. package/dist/modes/interactive/components/compaction-summary-message.js.map +1 -1
  485. package/dist/modes/interactive/components/config-selector.d.ts.map +1 -1
  486. package/dist/modes/interactive/components/config-selector.js +5 -15
  487. package/dist/modes/interactive/components/config-selector.js.map +1 -1
  488. package/dist/modes/interactive/components/countdown-timer.d.ts.map +1 -1
  489. package/dist/modes/interactive/components/countdown-timer.js +0 -5
  490. package/dist/modes/interactive/components/countdown-timer.js.map +1 -1
  491. package/dist/modes/interactive/components/custom-editor.d.ts.map +1 -1
  492. package/dist/modes/interactive/components/custom-editor.js +1 -8
  493. package/dist/modes/interactive/components/custom-editor.js.map +1 -1
  494. package/dist/modes/interactive/components/custom-message.d.ts.map +1 -1
  495. package/dist/modes/interactive/components/custom-message.js +1 -6
  496. package/dist/modes/interactive/components/custom-message.js.map +1 -1
  497. package/dist/modes/interactive/components/daxnuts.d.ts.map +1 -1
  498. package/dist/modes/interactive/components/daxnuts.js +6 -8
  499. package/dist/modes/interactive/components/daxnuts.js.map +1 -1
  500. package/dist/modes/interactive/components/diff.d.ts.map +1 -1
  501. package/dist/modes/interactive/components/diff.js +2 -2
  502. package/dist/modes/interactive/components/diff.js.map +1 -1
  503. package/dist/modes/interactive/components/dynamic-border.d.ts.map +1 -1
  504. package/dist/modes/interactive/components/dynamic-border.js +0 -1
  505. package/dist/modes/interactive/components/dynamic-border.js.map +1 -1
  506. package/dist/modes/interactive/components/earendil-announcement.d.ts.map +1 -1
  507. package/dist/modes/interactive/components/earendil-announcement.js.map +1 -1
  508. package/dist/modes/interactive/components/extension-editor.d.ts.map +1 -1
  509. package/dist/modes/interactive/components/extension-editor.js +1 -6
  510. package/dist/modes/interactive/components/extension-editor.js.map +1 -1
  511. package/dist/modes/interactive/components/extension-input.d.ts.map +1 -1
  512. package/dist/modes/interactive/components/extension-input.js +2 -8
  513. package/dist/modes/interactive/components/extension-input.js.map +1 -1
  514. package/dist/modes/interactive/components/extension-selector.d.ts.map +1 -1
  515. package/dist/modes/interactive/components/extension-selector.js +1 -9
  516. package/dist/modes/interactive/components/extension-selector.js.map +1 -1
  517. package/dist/modes/interactive/components/favorite-models-selector.d.ts.map +1 -1
  518. package/dist/modes/interactive/components/favorite-models-selector.js +9 -15
  519. package/dist/modes/interactive/components/favorite-models-selector.js.map +1 -1
  520. package/dist/modes/interactive/components/footer.d.ts.map +1 -1
  521. package/dist/modes/interactive/components/footer.js +10 -3
  522. package/dist/modes/interactive/components/footer.js.map +1 -1
  523. package/dist/modes/interactive/components/index.d.ts +1 -0
  524. package/dist/modes/interactive/components/index.d.ts.map +1 -1
  525. package/dist/modes/interactive/components/index.js +1 -0
  526. package/dist/modes/interactive/components/index.js.map +1 -1
  527. package/dist/modes/interactive/components/keybinding-hints.d.ts.map +1 -1
  528. package/dist/modes/interactive/components/keybinding-hints.js.map +1 -1
  529. package/dist/modes/interactive/components/login-dialog.d.ts +1 -0
  530. package/dist/modes/interactive/components/login-dialog.d.ts.map +1 -1
  531. package/dist/modes/interactive/components/login-dialog.js +10 -10
  532. package/dist/modes/interactive/components/login-dialog.js.map +1 -1
  533. package/dist/modes/interactive/components/model-favorites.d.ts.map +1 -1
  534. package/dist/modes/interactive/components/model-favorites.js.map +1 -1
  535. package/dist/modes/interactive/components/model-selector.d.ts.map +1 -1
  536. package/dist/modes/interactive/components/model-selector.js +9 -22
  537. package/dist/modes/interactive/components/model-selector.js.map +1 -1
  538. package/dist/modes/interactive/components/oauth-selector.d.ts.map +1 -1
  539. package/dist/modes/interactive/components/oauth-selector.js +3 -12
  540. package/dist/modes/interactive/components/oauth-selector.js.map +1 -1
  541. package/dist/modes/interactive/components/session-selector-search.d.ts.map +1 -1
  542. package/dist/modes/interactive/components/session-selector-search.js.map +1 -1
  543. package/dist/modes/interactive/components/session-selector.d.ts.map +1 -1
  544. package/dist/modes/interactive/components/session-selector.js +33 -58
  545. package/dist/modes/interactive/components/session-selector.js.map +1 -1
  546. package/dist/modes/interactive/components/settings-selector.d.ts +3 -1
  547. package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
  548. package/dist/modes/interactive/components/settings-selector.js +20 -4
  549. package/dist/modes/interactive/components/settings-selector.js.map +1 -1
  550. package/dist/modes/interactive/components/show-images-selector.d.ts.map +1 -1
  551. package/dist/modes/interactive/components/show-images-selector.js +0 -1
  552. package/dist/modes/interactive/components/show-images-selector.js.map +1 -1
  553. package/dist/modes/interactive/components/skill-invocation-message.d.ts.map +1 -1
  554. package/dist/modes/interactive/components/skill-invocation-message.js +1 -3
  555. package/dist/modes/interactive/components/skill-invocation-message.js.map +1 -1
  556. package/dist/modes/interactive/components/theme-selector.d.ts.map +1 -1
  557. package/dist/modes/interactive/components/theme-selector.js +0 -2
  558. package/dist/modes/interactive/components/theme-selector.js.map +1 -1
  559. package/dist/modes/interactive/components/thinking-selector.d.ts.map +1 -1
  560. package/dist/modes/interactive/components/thinking-selector.js +0 -1
  561. package/dist/modes/interactive/components/thinking-selector.js.map +1 -1
  562. package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
  563. package/dist/modes/interactive/components/tool-execution.js +35 -32
  564. package/dist/modes/interactive/components/tool-execution.js.map +1 -1
  565. package/dist/modes/interactive/components/tree-selector.d.ts.map +1 -1
  566. package/dist/modes/interactive/components/tree-selector.js +18 -32
  567. package/dist/modes/interactive/components/tree-selector.js.map +1 -1
  568. package/dist/modes/interactive/components/trust-selector.d.ts +23 -0
  569. package/dist/modes/interactive/components/trust-selector.d.ts.map +1 -0
  570. package/dist/modes/interactive/components/trust-selector.js +85 -0
  571. package/dist/modes/interactive/components/trust-selector.js.map +1 -0
  572. package/dist/modes/interactive/components/user-message-selector.d.ts.map +1 -1
  573. package/dist/modes/interactive/components/user-message-selector.js +3 -6
  574. package/dist/modes/interactive/components/user-message-selector.js.map +1 -1
  575. package/dist/modes/interactive/components/user-message.d.ts.map +1 -1
  576. package/dist/modes/interactive/components/user-message.js +0 -1
  577. package/dist/modes/interactive/components/user-message.js.map +1 -1
  578. package/dist/modes/interactive/components/visual-truncate.d.ts.map +1 -1
  579. package/dist/modes/interactive/components/visual-truncate.js.map +1 -1
  580. package/dist/modes/interactive/interactive-mode.d.ts +39 -0
  581. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  582. package/dist/modes/interactive/interactive-mode.js +264 -114
  583. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  584. package/dist/modes/interactive/session-info-format.d.ts.map +1 -1
  585. package/dist/modes/interactive/session-info-format.js.map +1 -1
  586. package/dist/modes/interactive/startup-tools.d.ts.map +1 -1
  587. package/dist/modes/interactive/startup-tools.js.map +1 -1
  588. package/dist/modes/interactive/theme/theme.d.ts +0 -4
  589. package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
  590. package/dist/modes/interactive/theme/theme.js +0 -13
  591. package/dist/modes/interactive/theme/theme.js.map +1 -1
  592. package/dist/modes/interactive/working-status.d.ts +2 -0
  593. package/dist/modes/interactive/working-status.d.ts.map +1 -1
  594. package/dist/modes/interactive/working-status.js +34 -0
  595. package/dist/modes/interactive/working-status.js.map +1 -1
  596. package/dist/modes/print-mode.d.ts.map +1 -1
  597. package/dist/modes/print-mode.js.map +1 -1
  598. package/dist/modes/provider-native-rendering.d.ts.map +1 -1
  599. package/dist/modes/provider-native-rendering.js.map +1 -1
  600. package/dist/modes/rpc/jsonl.d.ts.map +1 -1
  601. package/dist/modes/rpc/jsonl.js.map +1 -1
  602. package/dist/modes/rpc/rpc-client.d.ts.map +1 -1
  603. package/dist/modes/rpc/rpc-client.js +7 -8
  604. package/dist/modes/rpc/rpc-client.js.map +1 -1
  605. package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
  606. package/dist/modes/rpc/rpc-mode.js.map +1 -1
  607. package/dist/modes/rpc/rpc-types.d.ts +0 -1
  608. package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
  609. package/dist/modes/rpc/rpc-types.js.map +1 -1
  610. package/dist/package-manager-cli.d.ts +6 -2
  611. package/dist/package-manager-cli.d.ts.map +1 -1
  612. package/dist/package-manager-cli.js +105 -11
  613. package/dist/package-manager-cli.js.map +1 -1
  614. package/dist/self-update-bootstrap.d.ts.map +1 -1
  615. package/dist/self-update-bootstrap.js.map +1 -1
  616. package/dist/senpi +10 -1
  617. package/dist/utils/ansi.d.ts.map +1 -1
  618. package/dist/utils/ansi.js.map +1 -1
  619. package/dist/utils/changelog.d.ts +1 -0
  620. package/dist/utils/changelog.d.ts.map +1 -1
  621. package/dist/utils/changelog.js +78 -0
  622. package/dist/utils/changelog.js.map +1 -1
  623. package/dist/utils/child-process.d.ts.map +1 -1
  624. package/dist/utils/child-process.js.map +1 -1
  625. package/dist/utils/clipboard-image.d.ts.map +1 -1
  626. package/dist/utils/clipboard-image.js.map +1 -1
  627. package/dist/utils/clipboard-native.d.ts.map +1 -1
  628. package/dist/utils/clipboard-native.js.map +1 -1
  629. package/dist/utils/clipboard.d.ts.map +1 -1
  630. package/dist/utils/clipboard.js.map +1 -1
  631. package/dist/utils/deprecation.d.ts.map +1 -1
  632. package/dist/utils/deprecation.js.map +1 -1
  633. package/dist/utils/exif-orientation.d.ts.map +1 -1
  634. package/dist/utils/exif-orientation.js.map +1 -1
  635. package/dist/utils/frontmatter.d.ts.map +1 -1
  636. package/dist/utils/frontmatter.js.map +1 -1
  637. package/dist/utils/fs-watch.d.ts.map +1 -1
  638. package/dist/utils/fs-watch.js.map +1 -1
  639. package/dist/utils/git.d.ts.map +1 -1
  640. package/dist/utils/git.js.map +1 -1
  641. package/dist/utils/html.d.ts.map +1 -1
  642. package/dist/utils/html.js.map +1 -1
  643. package/dist/utils/image-convert.d.ts.map +1 -1
  644. package/dist/utils/image-convert.js.map +1 -1
  645. package/dist/utils/image-resize-core.d.ts.map +1 -1
  646. package/dist/utils/image-resize-core.js.map +1 -1
  647. package/dist/utils/image-resize-worker.d.ts.map +1 -1
  648. package/dist/utils/image-resize-worker.js.map +1 -1
  649. package/dist/utils/image-resize.d.ts.map +1 -1
  650. package/dist/utils/image-resize.js.map +1 -1
  651. package/dist/utils/json.d.ts.map +1 -1
  652. package/dist/utils/json.js.map +1 -1
  653. package/dist/utils/mime.d.ts.map +1 -1
  654. package/dist/utils/mime.js.map +1 -1
  655. package/dist/utils/open-browser.d.ts.map +1 -1
  656. package/dist/utils/open-browser.js.map +1 -1
  657. package/dist/utils/paths.d.ts.map +1 -1
  658. package/dist/utils/paths.js.map +1 -1
  659. package/dist/utils/photon.d.ts.map +1 -1
  660. package/dist/utils/photon.js.map +1 -1
  661. package/dist/utils/pi-user-agent.d.ts.map +1 -1
  662. package/dist/utils/pi-user-agent.js.map +1 -1
  663. package/dist/utils/shell.d.ts.map +1 -1
  664. package/dist/utils/shell.js.map +1 -1
  665. package/dist/utils/sleep.d.ts.map +1 -1
  666. package/dist/utils/sleep.js.map +1 -1
  667. package/dist/utils/syntax-highlight.d.ts.map +1 -1
  668. package/dist/utils/syntax-highlight.js.map +1 -1
  669. package/dist/utils/tools-manager.d.ts.map +1 -1
  670. package/dist/utils/tools-manager.js.map +1 -1
  671. package/dist/utils/version-check.d.ts.map +1 -1
  672. package/dist/utils/version-check.js.map +1 -1
  673. package/dist/utils/windows-self-update.d.ts.map +1 -1
  674. package/dist/utils/windows-self-update.js.map +1 -1
  675. package/docs/compaction-guide.md +9 -9
  676. package/docs/compaction.md +2 -2
  677. package/docs/containerization.md +22 -22
  678. package/docs/custom-provider.md +13 -13
  679. package/docs/development.md +4 -2
  680. package/docs/docs.json +4 -0
  681. package/docs/extensions.md +46 -18
  682. package/docs/index.md +5 -4
  683. package/docs/json.md +21 -15
  684. package/docs/keybindings.md +6 -3
  685. package/docs/models.md +10 -43
  686. package/docs/packages.md +12 -12
  687. package/docs/prompt-templates.md +11 -4
  688. package/docs/providers.md +9 -9
  689. package/docs/rpc.md +14 -13
  690. package/docs/sdk.md +18 -9
  691. package/docs/security.md +55 -0
  692. package/docs/session-format.md +4 -4
  693. package/docs/sessions.md +14 -14
  694. package/docs/settings.md +20 -7
  695. package/docs/skills.md +11 -11
  696. package/docs/terminal-setup.md +38 -4
  697. package/docs/termux.md +3 -3
  698. package/docs/themes.md +1 -1
  699. package/docs/tmux.md +4 -2
  700. package/docs/tui.md +4 -4
  701. package/docs/usage.md +60 -50
  702. package/examples/extensions/README.md +1 -0
  703. package/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
  704. package/examples/extensions/custom-provider-anthropic/package.json +1 -1
  705. package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
  706. package/examples/extensions/gondolin/package-lock.json +2 -2
  707. package/examples/extensions/gondolin/package.json +1 -1
  708. package/examples/extensions/minimal-mode.ts +6 -6
  709. package/examples/extensions/project-trust.ts +64 -0
  710. package/examples/extensions/sandbox/package-lock.json +2 -2
  711. package/examples/extensions/sandbox/package.json +1 -1
  712. package/examples/extensions/with-deps/package-lock.json +2 -2
  713. package/examples/extensions/with-deps/package.json +1 -1
  714. package/node_modules/@earendil-works/pi-agent-core/README.md +4 -3
  715. package/node_modules/@earendil-works/pi-agent-core/dist/agent-loop.d.ts.map +1 -1
  716. package/node_modules/@earendil-works/pi-agent-core/dist/agent-loop.js +125 -77
  717. package/node_modules/@earendil-works/pi-agent-core/dist/agent-loop.js.map +1 -1
  718. package/node_modules/@earendil-works/pi-agent-core/dist/agent.d.ts +7 -0
  719. package/node_modules/@earendil-works/pi-agent-core/dist/agent.d.ts.map +1 -1
  720. package/node_modules/@earendil-works/pi-agent-core/dist/agent.js +2 -27
  721. package/node_modules/@earendil-works/pi-agent-core/dist/agent.js.map +1 -1
  722. package/node_modules/@earendil-works/pi-agent-core/dist/harness/agent-harness.d.ts.map +1 -1
  723. package/node_modules/@earendil-works/pi-agent-core/dist/harness/agent-harness.js +7 -20
  724. package/node_modules/@earendil-works/pi-agent-core/dist/harness/agent-harness.js.map +1 -1
  725. package/node_modules/@earendil-works/pi-agent-core/dist/harness/compaction/branch-summarization.d.ts.map +1 -1
  726. package/node_modules/@earendil-works/pi-agent-core/dist/harness/compaction/branch-summarization.js.map +1 -1
  727. package/node_modules/@earendil-works/pi-agent-core/dist/harness/compaction/compaction.d.ts +1 -1
  728. package/node_modules/@earendil-works/pi-agent-core/dist/harness/compaction/compaction.d.ts.map +1 -1
  729. package/node_modules/@earendil-works/pi-agent-core/dist/harness/compaction/compaction.js +1 -1
  730. package/node_modules/@earendil-works/pi-agent-core/dist/harness/compaction/compaction.js.map +1 -1
  731. package/node_modules/@earendil-works/pi-agent-core/dist/harness/compaction/utils.d.ts.map +1 -1
  732. package/node_modules/@earendil-works/pi-agent-core/dist/harness/compaction/utils.js.map +1 -1
  733. package/node_modules/@earendil-works/pi-agent-core/dist/harness/env/nodejs.d.ts.map +1 -1
  734. package/node_modules/@earendil-works/pi-agent-core/dist/harness/env/nodejs.js +0 -3
  735. package/node_modules/@earendil-works/pi-agent-core/dist/harness/env/nodejs.js.map +1 -1
  736. package/node_modules/@earendil-works/pi-agent-core/dist/harness/messages.d.ts.map +1 -1
  737. package/node_modules/@earendil-works/pi-agent-core/dist/harness/messages.js.map +1 -1
  738. package/node_modules/@earendil-works/pi-agent-core/dist/harness/prompt-templates.d.ts.map +1 -1
  739. package/node_modules/@earendil-works/pi-agent-core/dist/harness/prompt-templates.js.map +1 -1
  740. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl-repo.d.ts.map +1 -1
  741. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl-repo.js +0 -3
  742. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl-repo.js.map +1 -1
  743. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl-storage.d.ts.map +1 -1
  744. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl-storage.js +0 -7
  745. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl-storage.js.map +1 -1
  746. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/memory-repo.d.ts.map +1 -1
  747. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/memory-repo.js +3 -1
  748. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/memory-repo.js.map +1 -1
  749. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/memory-storage.d.ts.map +1 -1
  750. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/memory-storage.js +0 -5
  751. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/memory-storage.js.map +1 -1
  752. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/repo-utils.d.ts.map +1 -1
  753. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/repo-utils.js.map +1 -1
  754. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/session.d.ts.map +1 -1
  755. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/session.js +0 -1
  756. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/session.js.map +1 -1
  757. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/uuid.d.ts.map +1 -1
  758. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/uuid.js.map +1 -1
  759. package/node_modules/@earendil-works/pi-agent-core/dist/harness/skills.d.ts.map +1 -1
  760. package/node_modules/@earendil-works/pi-agent-core/dist/harness/skills.js.map +1 -1
  761. package/node_modules/@earendil-works/pi-agent-core/dist/harness/system-prompt.d.ts.map +1 -1
  762. package/node_modules/@earendil-works/pi-agent-core/dist/harness/system-prompt.js.map +1 -1
  763. package/node_modules/@earendil-works/pi-agent-core/dist/harness/types.d.ts +0 -2
  764. package/node_modules/@earendil-works/pi-agent-core/dist/harness/types.d.ts.map +1 -1
  765. package/node_modules/@earendil-works/pi-agent-core/dist/harness/types.js +0 -20
  766. package/node_modules/@earendil-works/pi-agent-core/dist/harness/types.js.map +1 -1
  767. package/node_modules/@earendil-works/pi-agent-core/dist/harness/utils/shell-output.d.ts.map +1 -1
  768. package/node_modules/@earendil-works/pi-agent-core/dist/harness/utils/shell-output.js.map +1 -1
  769. package/node_modules/@earendil-works/pi-agent-core/dist/harness/utils/truncate.d.ts.map +1 -1
  770. package/node_modules/@earendil-works/pi-agent-core/dist/harness/utils/truncate.js.map +1 -1
  771. package/node_modules/@earendil-works/pi-agent-core/dist/index.d.ts.map +1 -1
  772. package/node_modules/@earendil-works/pi-agent-core/dist/node.d.ts.map +1 -1
  773. package/node_modules/@earendil-works/pi-agent-core/dist/proxy.d.ts.map +1 -1
  774. package/node_modules/@earendil-works/pi-agent-core/dist/proxy.js.map +1 -1
  775. package/node_modules/@earendil-works/pi-agent-core/dist/types.d.ts +7 -4
  776. package/node_modules/@earendil-works/pi-agent-core/dist/types.d.ts.map +1 -1
  777. package/node_modules/@earendil-works/pi-agent-core/dist/types.js.map +1 -1
  778. package/node_modules/@earendil-works/pi-agent-core/package.json +6 -6
  779. package/node_modules/@earendil-works/pi-ai/README.md +4 -5
  780. package/node_modules/@earendil-works/pi-ai/dist/api-registry.d.ts +0 -1
  781. package/node_modules/@earendil-works/pi-ai/dist/api-registry.d.ts.map +1 -1
  782. package/node_modules/@earendil-works/pi-ai/dist/api-registry.js +0 -3
  783. package/node_modules/@earendil-works/pi-ai/dist/api-registry.js.map +1 -1
  784. package/node_modules/@earendil-works/pi-ai/dist/bedrock-provider.d.ts.map +1 -1
  785. package/node_modules/@earendil-works/pi-ai/dist/cli.d.ts.map +1 -1
  786. package/node_modules/@earendil-works/pi-ai/dist/cli.js.map +1 -1
  787. package/node_modules/@earendil-works/pi-ai/dist/env-api-keys.d.ts.map +1 -1
  788. package/node_modules/@earendil-works/pi-ai/dist/env-api-keys.js.map +1 -1
  789. package/node_modules/@earendil-works/pi-ai/dist/image-models.d.ts.map +1 -1
  790. package/node_modules/@earendil-works/pi-ai/dist/image-models.generated.d.ts +30 -0
  791. package/node_modules/@earendil-works/pi-ai/dist/image-models.generated.d.ts.map +1 -1
  792. package/node_modules/@earendil-works/pi-ai/dist/image-models.generated.js +30 -0
  793. package/node_modules/@earendil-works/pi-ai/dist/image-models.generated.js.map +1 -1
  794. package/node_modules/@earendil-works/pi-ai/dist/image-models.js.map +1 -1
  795. package/node_modules/@earendil-works/pi-ai/dist/images-api-registry.d.ts.map +1 -1
  796. package/node_modules/@earendil-works/pi-ai/dist/images-api-registry.js.map +1 -1
  797. package/node_modules/@earendil-works/pi-ai/dist/images.d.ts.map +1 -1
  798. package/node_modules/@earendil-works/pi-ai/dist/images.js.map +1 -1
  799. package/node_modules/@earendil-works/pi-ai/dist/index.d.ts.map +1 -1
  800. package/node_modules/@earendil-works/pi-ai/dist/models.d.ts.map +1 -1
  801. package/node_modules/@earendil-works/pi-ai/dist/models.generated.d.ts +584 -397
  802. package/node_modules/@earendil-works/pi-ai/dist/models.generated.d.ts.map +1 -1
  803. package/node_modules/@earendil-works/pi-ai/dist/models.generated.js +578 -509
  804. package/node_modules/@earendil-works/pi-ai/dist/models.generated.js.map +1 -1
  805. package/node_modules/@earendil-works/pi-ai/dist/models.js.map +1 -1
  806. package/node_modules/@earendil-works/pi-ai/dist/oauth.d.ts.map +1 -1
  807. package/node_modules/@earendil-works/pi-ai/dist/providers/amazon-bedrock.d.ts.map +1 -1
  808. package/node_modules/@earendil-works/pi-ai/dist/providers/amazon-bedrock.js +15 -7
  809. package/node_modules/@earendil-works/pi-ai/dist/providers/amazon-bedrock.js.map +1 -1
  810. package/node_modules/@earendil-works/pi-ai/dist/providers/anthropic.d.ts +1 -1
  811. package/node_modules/@earendil-works/pi-ai/dist/providers/anthropic.d.ts.map +1 -1
  812. package/node_modules/@earendil-works/pi-ai/dist/providers/anthropic.js +17 -7
  813. package/node_modules/@earendil-works/pi-ai/dist/providers/anthropic.js.map +1 -1
  814. package/node_modules/@earendil-works/pi-ai/dist/providers/azure-openai-responses.d.ts.map +1 -1
  815. package/node_modules/@earendil-works/pi-ai/dist/providers/azure-openai-responses.js +1 -0
  816. package/node_modules/@earendil-works/pi-ai/dist/providers/azure-openai-responses.js.map +1 -1
  817. package/node_modules/@earendil-works/pi-ai/dist/providers/cloudflare.d.ts.map +1 -1
  818. package/node_modules/@earendil-works/pi-ai/dist/providers/cloudflare.js.map +1 -1
  819. package/node_modules/@earendil-works/pi-ai/dist/providers/faux.d.ts.map +1 -1
  820. package/node_modules/@earendil-works/pi-ai/dist/providers/faux.js.map +1 -1
  821. package/node_modules/@earendil-works/pi-ai/dist/providers/github-copilot-headers.d.ts.map +1 -1
  822. package/node_modules/@earendil-works/pi-ai/dist/providers/github-copilot-headers.js.map +1 -1
  823. package/node_modules/@earendil-works/pi-ai/dist/providers/google-shared.d.ts +0 -4
  824. package/node_modules/@earendil-works/pi-ai/dist/providers/google-shared.d.ts.map +1 -1
  825. package/node_modules/@earendil-works/pi-ai/dist/providers/google-shared.js +0 -13
  826. package/node_modules/@earendil-works/pi-ai/dist/providers/google-shared.js.map +1 -1
  827. package/node_modules/@earendil-works/pi-ai/dist/providers/google-vertex.d.ts.map +1 -1
  828. package/node_modules/@earendil-works/pi-ai/dist/providers/google-vertex.js.map +1 -1
  829. package/node_modules/@earendil-works/pi-ai/dist/providers/google.d.ts.map +1 -1
  830. package/node_modules/@earendil-works/pi-ai/dist/providers/google.js.map +1 -1
  831. package/node_modules/@earendil-works/pi-ai/dist/providers/images/openrouter.d.ts.map +1 -1
  832. package/node_modules/@earendil-works/pi-ai/dist/providers/images/openrouter.js.map +1 -1
  833. package/node_modules/@earendil-works/pi-ai/dist/providers/images/register-builtins.d.ts.map +1 -1
  834. package/node_modules/@earendil-works/pi-ai/dist/providers/images/register-builtins.js.map +1 -1
  835. package/node_modules/@earendil-works/pi-ai/dist/providers/mistral.d.ts.map +1 -1
  836. package/node_modules/@earendil-works/pi-ai/dist/providers/mistral.js +3 -3
  837. package/node_modules/@earendil-works/pi-ai/dist/providers/mistral.js.map +1 -1
  838. package/node_modules/@earendil-works/pi-ai/dist/providers/openai-codex-responses.d.ts.map +1 -1
  839. package/node_modules/@earendil-works/pi-ai/dist/providers/openai-codex-responses.js +0 -7
  840. package/node_modules/@earendil-works/pi-ai/dist/providers/openai-codex-responses.js.map +1 -1
  841. package/node_modules/@earendil-works/pi-ai/dist/providers/openai-completions.d.ts.map +1 -1
  842. package/node_modules/@earendil-works/pi-ai/dist/providers/openai-completions.js +5 -4
  843. package/node_modules/@earendil-works/pi-ai/dist/providers/openai-completions.js.map +1 -1
  844. package/node_modules/@earendil-works/pi-ai/dist/providers/openai-prompt-cache.d.ts.map +1 -1
  845. package/node_modules/@earendil-works/pi-ai/dist/providers/openai-prompt-cache.js.map +1 -1
  846. package/node_modules/@earendil-works/pi-ai/dist/providers/openai-responses-shared.d.ts.map +1 -1
  847. package/node_modules/@earendil-works/pi-ai/dist/providers/openai-responses-shared.js +2 -1
  848. package/node_modules/@earendil-works/pi-ai/dist/providers/openai-responses-shared.js.map +1 -1
  849. package/node_modules/@earendil-works/pi-ai/dist/providers/openai-responses.d.ts.map +1 -1
  850. package/node_modules/@earendil-works/pi-ai/dist/providers/openai-responses.js +3 -2
  851. package/node_modules/@earendil-works/pi-ai/dist/providers/openai-responses.js.map +1 -1
  852. package/node_modules/@earendil-works/pi-ai/dist/providers/register-builtins.d.ts.map +1 -1
  853. package/node_modules/@earendil-works/pi-ai/dist/providers/register-builtins.js.map +1 -1
  854. package/node_modules/@earendil-works/pi-ai/dist/providers/simple-options.d.ts +1 -7
  855. package/node_modules/@earendil-works/pi-ai/dist/providers/simple-options.d.ts.map +1 -1
  856. package/node_modules/@earendil-works/pi-ai/dist/providers/simple-options.js +2 -16
  857. package/node_modules/@earendil-works/pi-ai/dist/providers/simple-options.js.map +1 -1
  858. package/node_modules/@earendil-works/pi-ai/dist/providers/transform-messages.d.ts.map +1 -1
  859. package/node_modules/@earendil-works/pi-ai/dist/providers/transform-messages.js.map +1 -1
  860. package/node_modules/@earendil-works/pi-ai/dist/session-resources.d.ts.map +1 -1
  861. package/node_modules/@earendil-works/pi-ai/dist/session-resources.js.map +1 -1
  862. package/node_modules/@earendil-works/pi-ai/dist/stream.d.ts.map +1 -1
  863. package/node_modules/@earendil-works/pi-ai/dist/stream.js.map +1 -1
  864. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/context-transformer.d.ts.map +1 -1
  865. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/context-transformer.js.map +1 -1
  866. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/index.d.ts.map +1 -1
  867. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/index.js.map +1 -1
  868. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/protocols/gemma4.d.ts.map +1 -1
  869. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/protocols/gemma4.js +10 -8
  870. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/protocols/gemma4.js.map +1 -1
  871. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/protocols/hermes.d.ts.map +1 -1
  872. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/protocols/hermes.js.map +1 -1
  873. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/protocols/json-mix.d.ts.map +1 -1
  874. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/protocols/json-mix.js.map +1 -1
  875. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/protocols/morph-xml.d.ts.map +1 -1
  876. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/protocols/morph-xml.js.map +1 -1
  877. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/protocols/xml-tool-tag-scanner.d.ts.map +1 -1
  878. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/protocols/xml-tool-tag-scanner.js.map +1 -1
  879. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/protocols/yaml-xml.d.ts.map +1 -1
  880. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/protocols/yaml-xml.js.map +1 -1
  881. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/stream-wrapper.d.ts.map +1 -1
  882. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/stream-wrapper.js.map +1 -1
  883. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/types.d.ts.map +1 -1
  884. package/node_modules/@earendil-works/pi-ai/dist/types.d.ts +6 -2
  885. package/node_modules/@earendil-works/pi-ai/dist/types.d.ts.map +1 -1
  886. package/node_modules/@earendil-works/pi-ai/dist/types.js.map +1 -1
  887. package/node_modules/@earendil-works/pi-ai/dist/utils/abort-signals.d.ts.map +1 -1
  888. package/node_modules/@earendil-works/pi-ai/dist/utils/abort-signals.js.map +1 -1
  889. package/node_modules/@earendil-works/pi-ai/dist/utils/diagnostics.d.ts.map +1 -1
  890. package/node_modules/@earendil-works/pi-ai/dist/utils/diagnostics.js.map +1 -1
  891. package/node_modules/@earendil-works/pi-ai/dist/utils/event-stream.d.ts.map +1 -1
  892. package/node_modules/@earendil-works/pi-ai/dist/utils/event-stream.js +3 -7
  893. package/node_modules/@earendil-works/pi-ai/dist/utils/event-stream.js.map +1 -1
  894. package/node_modules/@earendil-works/pi-ai/dist/utils/hash.d.ts.map +1 -1
  895. package/node_modules/@earendil-works/pi-ai/dist/utils/hash.js.map +1 -1
  896. package/node_modules/@earendil-works/pi-ai/dist/utils/headers.d.ts.map +1 -1
  897. package/node_modules/@earendil-works/pi-ai/dist/utils/headers.js.map +1 -1
  898. package/node_modules/@earendil-works/pi-ai/dist/utils/json-parse.d.ts.map +1 -1
  899. package/node_modules/@earendil-works/pi-ai/dist/utils/json-parse.js.map +1 -1
  900. package/node_modules/@earendil-works/pi-ai/dist/utils/node-http-proxy.d.ts.map +1 -1
  901. package/node_modules/@earendil-works/pi-ai/dist/utils/node-http-proxy.js.map +1 -1
  902. package/node_modules/@earendil-works/pi-ai/dist/utils/oauth/anthropic.d.ts.map +1 -1
  903. package/node_modules/@earendil-works/pi-ai/dist/utils/oauth/anthropic.js.map +1 -1
  904. package/node_modules/@earendil-works/pi-ai/dist/utils/oauth/device-code.d.ts.map +1 -1
  905. package/node_modules/@earendil-works/pi-ai/dist/utils/oauth/device-code.js.map +1 -1
  906. package/node_modules/@earendil-works/pi-ai/dist/utils/oauth/github-copilot.d.ts.map +1 -1
  907. package/node_modules/@earendil-works/pi-ai/dist/utils/oauth/github-copilot.js.map +1 -1
  908. package/node_modules/@earendil-works/pi-ai/dist/utils/oauth/index.d.ts.map +1 -1
  909. package/node_modules/@earendil-works/pi-ai/dist/utils/oauth/index.js.map +1 -1
  910. package/node_modules/@earendil-works/pi-ai/dist/utils/oauth/oauth-page.d.ts.map +1 -1
  911. package/node_modules/@earendil-works/pi-ai/dist/utils/oauth/oauth-page.js.map +1 -1
  912. package/node_modules/@earendil-works/pi-ai/dist/utils/oauth/openai-codex.d.ts.map +1 -1
  913. package/node_modules/@earendil-works/pi-ai/dist/utils/oauth/openai-codex.js.map +1 -1
  914. package/node_modules/@earendil-works/pi-ai/dist/utils/oauth/pkce.d.ts.map +1 -1
  915. package/node_modules/@earendil-works/pi-ai/dist/utils/oauth/pkce.js.map +1 -1
  916. package/node_modules/@earendil-works/pi-ai/dist/utils/oauth/types.d.ts.map +1 -1
  917. package/node_modules/@earendil-works/pi-ai/dist/utils/overflow.d.ts +0 -4
  918. package/node_modules/@earendil-works/pi-ai/dist/utils/overflow.d.ts.map +1 -1
  919. package/node_modules/@earendil-works/pi-ai/dist/utils/overflow.js +0 -6
  920. package/node_modules/@earendil-works/pi-ai/dist/utils/overflow.js.map +1 -1
  921. package/node_modules/@earendil-works/pi-ai/dist/utils/sanitize-unicode.d.ts.map +1 -1
  922. package/node_modules/@earendil-works/pi-ai/dist/utils/sanitize-unicode.js.map +1 -1
  923. package/node_modules/@earendil-works/pi-ai/dist/utils/tool-pair-repair.d.ts.map +1 -1
  924. package/node_modules/@earendil-works/pi-ai/dist/utils/tool-pair-repair.js.map +1 -1
  925. package/node_modules/@earendil-works/pi-ai/dist/utils/typebox-helpers.d.ts.map +1 -1
  926. package/node_modules/@earendil-works/pi-ai/dist/utils/typebox-helpers.js.map +1 -1
  927. package/node_modules/@earendil-works/pi-ai/dist/utils/validation.d.ts.map +1 -1
  928. package/node_modules/@earendil-works/pi-ai/dist/utils/validation.js.map +1 -1
  929. package/node_modules/@earendil-works/pi-ai/package.json +5 -5
  930. package/node_modules/@earendil-works/pi-tui/README.md +1 -2
  931. package/node_modules/@earendil-works/pi-tui/dist/autocomplete.d.ts +3 -1
  932. package/node_modules/@earendil-works/pi-tui/dist/autocomplete.d.ts.map +1 -1
  933. package/node_modules/@earendil-works/pi-tui/dist/autocomplete.js +0 -3
  934. package/node_modules/@earendil-works/pi-tui/dist/autocomplete.js.map +1 -1
  935. package/node_modules/@earendil-works/pi-tui/dist/components/box.d.ts.map +1 -1
  936. package/node_modules/@earendil-works/pi-tui/dist/components/box.js +1 -6
  937. package/node_modules/@earendil-works/pi-tui/dist/components/box.js.map +1 -1
  938. package/node_modules/@earendil-works/pi-tui/dist/components/cancellable-loader.d.ts.map +1 -1
  939. package/node_modules/@earendil-works/pi-tui/dist/components/cancellable-loader.js +4 -3
  940. package/node_modules/@earendil-works/pi-tui/dist/components/cancellable-loader.js.map +1 -1
  941. package/node_modules/@earendil-works/pi-tui/dist/components/editor.d.ts +6 -1
  942. package/node_modules/@earendil-works/pi-tui/dist/components/editor.d.ts.map +1 -1
  943. package/node_modules/@earendil-works/pi-tui/dist/components/editor.js +132 -93
  944. package/node_modules/@earendil-works/pi-tui/dist/components/editor.js.map +1 -1
  945. package/node_modules/@earendil-works/pi-tui/dist/components/image.d.ts.map +1 -1
  946. package/node_modules/@earendil-works/pi-tui/dist/components/image.js +0 -8
  947. package/node_modules/@earendil-works/pi-tui/dist/components/image.js.map +1 -1
  948. package/node_modules/@earendil-works/pi-tui/dist/components/input.d.ts.map +1 -1
  949. package/node_modules/@earendil-works/pi-tui/dist/components/input.js +14 -14
  950. package/node_modules/@earendil-works/pi-tui/dist/components/input.js.map +1 -1
  951. package/node_modules/@earendil-works/pi-tui/dist/components/loader.d.ts +5 -0
  952. package/node_modules/@earendil-works/pi-tui/dist/components/loader.d.ts.map +1 -1
  953. package/node_modules/@earendil-works/pi-tui/dist/components/loader.js +29 -17
  954. package/node_modules/@earendil-works/pi-tui/dist/components/loader.js.map +1 -1
  955. package/node_modules/@earendil-works/pi-tui/dist/components/markdown.d.ts.map +1 -1
  956. package/node_modules/@earendil-works/pi-tui/dist/components/markdown.js +0 -11
  957. package/node_modules/@earendil-works/pi-tui/dist/components/markdown.js.map +1 -1
  958. package/node_modules/@earendil-works/pi-tui/dist/components/select-list.d.ts.map +1 -1
  959. package/node_modules/@earendil-works/pi-tui/dist/components/select-list.js +4 -9
  960. package/node_modules/@earendil-works/pi-tui/dist/components/select-list.js.map +1 -1
  961. package/node_modules/@earendil-works/pi-tui/dist/components/settings-list.d.ts.map +1 -1
  962. package/node_modules/@earendil-works/pi-tui/dist/components/settings-list.js +4 -12
  963. package/node_modules/@earendil-works/pi-tui/dist/components/settings-list.js.map +1 -1
  964. package/node_modules/@earendil-works/pi-tui/dist/components/spacer.d.ts.map +1 -1
  965. package/node_modules/@earendil-works/pi-tui/dist/components/spacer.js +0 -1
  966. package/node_modules/@earendil-works/pi-tui/dist/components/spacer.js.map +1 -1
  967. package/node_modules/@earendil-works/pi-tui/dist/components/text.d.ts.map +1 -1
  968. package/node_modules/@earendil-works/pi-tui/dist/components/text.js +0 -8
  969. package/node_modules/@earendil-works/pi-tui/dist/components/text.js.map +1 -1
  970. package/node_modules/@earendil-works/pi-tui/dist/components/truncated-text.d.ts.map +1 -1
  971. package/node_modules/@earendil-works/pi-tui/dist/components/truncated-text.js +0 -3
  972. package/node_modules/@earendil-works/pi-tui/dist/components/truncated-text.js.map +1 -1
  973. package/node_modules/@earendil-works/pi-tui/dist/editor-component.d.ts.map +1 -1
  974. package/node_modules/@earendil-works/pi-tui/dist/fuzzy.d.ts.map +1 -1
  975. package/node_modules/@earendil-works/pi-tui/dist/fuzzy.js +131 -61
  976. package/node_modules/@earendil-works/pi-tui/dist/fuzzy.js.map +1 -1
  977. package/node_modules/@earendil-works/pi-tui/dist/index.d.ts +1 -1
  978. package/node_modules/@earendil-works/pi-tui/dist/index.d.ts.map +1 -1
  979. package/node_modules/@earendil-works/pi-tui/dist/index.js +1 -1
  980. package/node_modules/@earendil-works/pi-tui/dist/index.js.map +1 -1
  981. package/node_modules/@earendil-works/pi-tui/dist/keybindings.d.ts.map +1 -1
  982. package/node_modules/@earendil-works/pi-tui/dist/keybindings.js +2 -4
  983. package/node_modules/@earendil-works/pi-tui/dist/keybindings.js.map +1 -1
  984. package/node_modules/@earendil-works/pi-tui/dist/keys.d.ts.map +1 -1
  985. package/node_modules/@earendil-works/pi-tui/dist/keys.js.map +1 -1
  986. package/node_modules/@earendil-works/pi-tui/dist/kill-ring.d.ts.map +1 -1
  987. package/node_modules/@earendil-works/pi-tui/dist/kill-ring.js +3 -1
  988. package/node_modules/@earendil-works/pi-tui/dist/kill-ring.js.map +1 -1
  989. package/node_modules/@earendil-works/pi-tui/dist/native-modifiers.d.ts.map +1 -1
  990. package/node_modules/@earendil-works/pi-tui/dist/native-modifiers.js.map +1 -1
  991. package/node_modules/@earendil-works/pi-tui/dist/slash-command-autocomplete.d.ts.map +1 -1
  992. package/node_modules/@earendil-works/pi-tui/dist/slash-command-autocomplete.js.map +1 -1
  993. package/node_modules/@earendil-works/pi-tui/dist/stdin-buffer.d.ts.map +1 -1
  994. package/node_modules/@earendil-works/pi-tui/dist/stdin-buffer.js +4 -6
  995. package/node_modules/@earendil-works/pi-tui/dist/stdin-buffer.js.map +1 -1
  996. package/node_modules/@earendil-works/pi-tui/dist/terminal-image.d.ts +0 -1
  997. package/node_modules/@earendil-works/pi-tui/dist/terminal-image.d.ts.map +1 -1
  998. package/node_modules/@earendil-works/pi-tui/dist/terminal-image.js +4 -7
  999. package/node_modules/@earendil-works/pi-tui/dist/terminal-image.js.map +1 -1
  1000. package/node_modules/@earendil-works/pi-tui/dist/terminal.d.ts +4 -7
  1001. package/node_modules/@earendil-works/pi-tui/dist/terminal.d.ts.map +1 -1
  1002. package/node_modules/@earendil-works/pi-tui/dist/terminal.js +60 -103
  1003. package/node_modules/@earendil-works/pi-tui/dist/terminal.js.map +1 -1
  1004. package/node_modules/@earendil-works/pi-tui/dist/tui.d.ts.map +1 -1
  1005. package/node_modules/@earendil-works/pi-tui/dist/tui.js +39 -31
  1006. package/node_modules/@earendil-works/pi-tui/dist/tui.js.map +1 -1
  1007. package/node_modules/@earendil-works/pi-tui/dist/undo-stack.d.ts.map +1 -1
  1008. package/node_modules/@earendil-works/pi-tui/dist/undo-stack.js +3 -1
  1009. package/node_modules/@earendil-works/pi-tui/dist/undo-stack.js.map +1 -1
  1010. package/node_modules/@earendil-works/pi-tui/dist/utils.d.ts +0 -4
  1011. package/node_modules/@earendil-works/pi-tui/dist/utils.d.ts.map +1 -1
  1012. package/node_modules/@earendil-works/pi-tui/dist/utils.js +57 -33
  1013. package/node_modules/@earendil-works/pi-tui/dist/utils.js.map +1 -1
  1014. package/node_modules/@earendil-works/pi-tui/dist/word-navigation.d.ts.map +1 -1
  1015. package/node_modules/@earendil-works/pi-tui/dist/word-navigation.js.map +1 -1
  1016. package/node_modules/@earendil-works/pi-tui/package.json +1 -1
  1017. package/node_modules/@types/node/README.md +3 -3
  1018. package/node_modules/@types/node/assert/strict.d.ts +3 -55
  1019. package/node_modules/@types/node/assert.d.ts +49 -177
  1020. package/node_modules/@types/node/async_hooks.d.ts +151 -43
  1021. package/node_modules/@types/node/buffer.buffer.d.ts +2 -8
  1022. package/node_modules/@types/node/buffer.d.ts +43 -212
  1023. package/node_modules/@types/node/child_process.d.ts +23 -133
  1024. package/node_modules/@types/node/cluster.d.ts +238 -384
  1025. package/node_modules/@types/node/compatibility/iterators.d.ts +1 -0
  1026. package/node_modules/@types/node/console.d.ts +45 -404
  1027. package/node_modules/@types/node/constants.d.ts +3 -10
  1028. package/node_modules/@types/node/crypto.d.ts +640 -1127
  1029. package/node_modules/@types/node/dgram.d.ts +14 -77
  1030. package/node_modules/@types/node/diagnostics_channel.d.ts +3 -29
  1031. package/node_modules/@types/node/dns/promises.d.ts +4 -10
  1032. package/node_modules/@types/node/dns.d.ts +130 -177
  1033. package/node_modules/@types/node/domain.d.ts +12 -32
  1034. package/node_modules/@types/node/events.d.ts +872 -840
  1035. package/node_modules/@types/node/fs/promises.d.ts +193 -20
  1036. package/node_modules/@types/node/fs.d.ts +754 -435
  1037. package/node_modules/@types/node/globals.d.ts +8 -30
  1038. package/node_modules/@types/node/globals.typedarray.d.ts +63 -0
  1039. package/node_modules/@types/node/http.d.ts +363 -305
  1040. package/node_modules/@types/node/http2.d.ts +545 -781
  1041. package/node_modules/@types/node/https.d.ts +64 -243
  1042. package/node_modules/@types/node/index.d.ts +26 -6
  1043. package/node_modules/@types/node/inspector/promises.d.ts +35 -0
  1044. package/node_modules/@types/node/inspector.d.ts +68 -57
  1045. package/node_modules/@types/node/inspector.generated.d.ts +764 -410
  1046. package/node_modules/@types/node/module.d.ts +53 -189
  1047. package/node_modules/@types/node/net.d.ts +101 -207
  1048. package/node_modules/@types/node/os.d.ts +11 -19
  1049. package/node_modules/@types/node/package.json +13 -3
  1050. package/node_modules/@types/node/path/posix.d.ts +8 -0
  1051. package/node_modules/@types/node/path/win32.d.ts +8 -0
  1052. package/node_modules/@types/node/path.d.ts +119 -141
  1053. package/node_modules/@types/node/perf_hooks.d.ts +317 -673
  1054. package/node_modules/@types/node/process.d.ts +277 -157
  1055. package/node_modules/@types/node/punycode.d.ts +3 -31
  1056. package/node_modules/@types/node/querystring.d.ts +3 -16
  1057. package/node_modules/@types/node/quic.d.ts +897 -0
  1058. package/node_modules/@types/node/readline/promises.d.ts +3 -6
  1059. package/node_modules/@types/node/readline.d.ts +65 -152
  1060. package/node_modules/@types/node/repl.d.ts +101 -109
  1061. package/node_modules/@types/node/sea.d.ts +9 -115
  1062. package/node_modules/@types/node/sqlite.d.ts +415 -68
  1063. package/node_modules/@types/node/stream/consumers.d.ts +91 -15
  1064. package/node_modules/@types/node/stream/iter.d.ts +301 -0
  1065. package/node_modules/@types/node/stream/promises.d.ts +136 -15
  1066. package/node_modules/@types/node/stream/web.d.ts +179 -501
  1067. package/node_modules/@types/node/stream.d.ts +577 -490
  1068. package/node_modules/@types/node/string_decoder.d.ts +3 -43
  1069. package/node_modules/@types/node/test/reporters.d.ts +59 -0
  1070. package/node_modules/@types/node/test.d.ts +402 -286
  1071. package/node_modules/@types/node/timers/promises.d.ts +3 -18
  1072. package/node_modules/@types/node/timers.d.ts +3 -141
  1073. package/node_modules/@types/node/tls.d.ts +115 -241
  1074. package/node_modules/@types/node/trace_events.d.ts +3 -97
  1075. package/node_modules/@types/node/ts5.6/buffer.buffer.d.ts +2 -8
  1076. package/node_modules/@types/node/ts5.6/compatibility/float16array.d.ts +71 -0
  1077. package/node_modules/@types/node/ts5.6/globals.typedarray.d.ts +2 -0
  1078. package/node_modules/@types/node/ts5.6/index.d.ts +28 -6
  1079. package/node_modules/@types/node/ts5.7/compatibility/float16array.d.ts +72 -0
  1080. package/node_modules/@types/node/ts5.7/index.d.ts +119 -0
  1081. package/node_modules/@types/node/tty.d.ts +57 -40
  1082. package/node_modules/@types/node/url.d.ts +156 -584
  1083. package/node_modules/@types/node/util/types.d.ts +558 -0
  1084. package/node_modules/@types/node/util.d.ts +167 -1096
  1085. package/node_modules/@types/node/v8.d.ts +75 -15
  1086. package/node_modules/@types/node/vm.d.ts +334 -198
  1087. package/node_modules/@types/node/wasi.d.ts +24 -74
  1088. package/node_modules/@types/node/web-globals/abortcontroller.d.ts +27 -2
  1089. package/node_modules/@types/node/web-globals/blob.d.ts +23 -0
  1090. package/node_modules/@types/node/web-globals/console.d.ts +9 -0
  1091. package/node_modules/@types/node/web-globals/crypto.d.ts +39 -0
  1092. package/node_modules/@types/node/web-globals/encoding.d.ts +11 -0
  1093. package/node_modules/@types/node/web-globals/events.d.ts +9 -0
  1094. package/node_modules/@types/node/web-globals/fetch.d.ts +14 -0
  1095. package/node_modules/@types/node/web-globals/importmeta.d.ts +13 -0
  1096. package/node_modules/@types/node/web-globals/messaging.d.ts +23 -0
  1097. package/node_modules/@types/node/web-globals/navigator.d.ts +3 -0
  1098. package/node_modules/@types/node/web-globals/performance.d.ts +45 -0
  1099. package/node_modules/@types/node/web-globals/streams.d.ts +115 -0
  1100. package/node_modules/@types/node/web-globals/timers.d.ts +44 -0
  1101. package/node_modules/@types/node/web-globals/url.d.ts +24 -0
  1102. package/node_modules/@types/node/worker_threads.d.ts +280 -393
  1103. package/node_modules/@types/node/zlib/iter.d.ts +131 -0
  1104. package/node_modules/@types/node/zlib.d.ts +7 -165
  1105. package/node_modules/undici-types/agent.d.ts +13 -12
  1106. package/node_modules/undici-types/api.d.ts +26 -26
  1107. package/node_modules/undici-types/balanced-pool.d.ts +13 -12
  1108. package/node_modules/undici-types/cache-interceptor.d.ts +179 -0
  1109. package/node_modules/undici-types/client-stats.d.ts +15 -0
  1110. package/node_modules/undici-types/client.d.ts +34 -19
  1111. package/node_modules/undici-types/connector.d.ts +4 -2
  1112. package/node_modules/undici-types/cookies.d.ts +2 -0
  1113. package/node_modules/undici-types/diagnostics-channel.d.ts +18 -10
  1114. package/node_modules/undici-types/dispatcher.d.ts +127 -104
  1115. package/node_modules/undici-types/env-http-proxy-agent.d.ts +4 -3
  1116. package/node_modules/undici-types/errors.d.ts +82 -54
  1117. package/node_modules/undici-types/eventsource.d.ts +9 -4
  1118. package/node_modules/undici-types/fetch.d.ts +22 -20
  1119. package/node_modules/undici-types/formdata.d.ts +7 -7
  1120. package/node_modules/undici-types/global-dispatcher.d.ts +4 -4
  1121. package/node_modules/undici-types/global-origin.d.ts +5 -5
  1122. package/node_modules/undici-types/h2c-client.d.ts +73 -0
  1123. package/node_modules/undici-types/handlers.d.ts +8 -8
  1124. package/node_modules/undici-types/header.d.ts +157 -1
  1125. package/node_modules/undici-types/index.d.ts +67 -47
  1126. package/node_modules/undici-types/interceptors.d.ts +71 -8
  1127. package/node_modules/undici-types/mock-agent.d.ts +36 -18
  1128. package/node_modules/undici-types/mock-call-history.d.ts +111 -0
  1129. package/node_modules/undici-types/mock-client.d.ts +6 -4
  1130. package/node_modules/undici-types/mock-errors.d.ts +3 -3
  1131. package/node_modules/undici-types/mock-interceptor.d.ts +21 -20
  1132. package/node_modules/undici-types/mock-pool.d.ts +6 -4
  1133. package/node_modules/undici-types/package.json +1 -1
  1134. package/node_modules/undici-types/patch.d.ts +0 -4
  1135. package/node_modules/undici-types/pool-stats.d.ts +8 -8
  1136. package/node_modules/undici-types/pool.d.ts +15 -13
  1137. package/node_modules/undici-types/proxy-agent.d.ts +5 -4
  1138. package/node_modules/undici-types/readable.d.ts +19 -16
  1139. package/node_modules/undici-types/retry-agent.d.ts +1 -1
  1140. package/node_modules/undici-types/retry-handler.d.ts +19 -10
  1141. package/node_modules/undici-types/round-robin-pool.d.ts +41 -0
  1142. package/node_modules/undici-types/snapshot-agent.d.ts +109 -0
  1143. package/node_modules/undici-types/socks5-proxy-agent.d.ts +25 -0
  1144. package/node_modules/undici-types/util.d.ts +3 -3
  1145. package/node_modules/undici-types/utility.d.ts +7 -0
  1146. package/node_modules/undici-types/webidl.d.ts +148 -29
  1147. package/node_modules/undici-types/websocket.d.ts +48 -10
  1148. package/npm-shrinkwrap.json +21 -21
  1149. package/package.json +13 -12
  1150. package/dist/core/extensions/builtin/compaction/overflow-detection.d.ts +0 -11
  1151. package/dist/core/extensions/builtin/compaction/overflow-detection.d.ts.map +0 -1
  1152. package/dist/core/extensions/builtin/compaction/overflow-detection.js +0 -40
  1153. package/dist/core/extensions/builtin/compaction/overflow-detection.js.map +0 -1
  1154. package/dist/core/extensions/builtin/system-messages.d.ts +0 -47
  1155. package/dist/core/extensions/builtin/system-messages.d.ts.map +0 -1
  1156. package/dist/core/extensions/builtin/system-messages.js +0 -117
  1157. package/dist/core/extensions/builtin/system-messages.js.map +0 -1
  1158. package/dist/core/extensions/builtin/todotools/continuation/config.d.ts +0 -10
  1159. package/dist/core/extensions/builtin/todotools/continuation/config.d.ts.map +0 -1
  1160. package/dist/core/extensions/builtin/todotools/continuation/config.js +0 -33
  1161. package/dist/core/extensions/builtin/todotools/continuation/config.js.map +0 -1
  1162. package/dist/core/extensions/builtin/todotools/continuation/index.d.ts +0 -2
  1163. package/dist/core/extensions/builtin/todotools/continuation/index.d.ts.map +0 -1
  1164. package/dist/core/extensions/builtin/todotools/continuation/index.js +0 -2
  1165. package/dist/core/extensions/builtin/todotools/continuation/index.js.map +0 -1
  1166. package/dist/core/extensions/builtin/todotools/continuation/prompt.d.ts +0 -5
  1167. package/dist/core/extensions/builtin/todotools/continuation/prompt.d.ts.map +0 -1
  1168. package/dist/core/extensions/builtin/todotools/continuation/prompt.js +0 -34
  1169. package/dist/core/extensions/builtin/todotools/continuation/prompt.js.map +0 -1
  1170. package/dist/core/extensions/builtin/todotools/continuation/runtime.d.ts +0 -11
  1171. package/dist/core/extensions/builtin/todotools/continuation/runtime.d.ts.map +0 -1
  1172. package/dist/core/extensions/builtin/todotools/continuation/runtime.js +0 -201
  1173. package/dist/core/extensions/builtin/todotools/continuation/runtime.js.map +0 -1
  1174. package/dist/core/extensions/builtin/todotools/settings.d.ts +0 -6
  1175. package/dist/core/extensions/builtin/todotools/settings.d.ts.map +0 -1
  1176. package/dist/core/extensions/builtin/todotools/settings.js +0 -58
  1177. package/dist/core/extensions/builtin/todotools/settings.js.map +0 -1
  1178. package/dist/core/extensions/builtin/todotools/system-messages.d.ts +0 -34
  1179. package/dist/core/extensions/builtin/todotools/system-messages.d.ts.map +0 -1
  1180. package/dist/core/extensions/builtin/todotools/system-messages.js +0 -82
  1181. package/dist/core/extensions/builtin/todotools/system-messages.js.map +0 -1
  1182. package/dist/core/index.d.ts +0 -12
  1183. package/dist/core/index.d.ts.map +0 -1
  1184. package/dist/core/index.js +0 -12
  1185. package/dist/core/index.js.map +0 -1
  1186. package/node_modules/@types/node/compatibility/disposable.d.ts +0 -14
  1187. package/node_modules/@types/node/compatibility/index.d.ts +0 -9
  1188. package/node_modules/@types/node/compatibility/indexable.d.ts +0 -20
  1189. package/node_modules/undici-types/file.d.ts +0 -39
  1190. package/node_modules/undici-types/filereader.d.ts +0 -54
@@ -1 +1 @@
1
- {"version":3,"file":"gpt-5.3-codex.d.ts","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/prompt-preset/gpt-5.3-codex.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,+BAA+B,EAA4B,MAAM,kCAAkC,CAAC;AAalH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,+BAA+B,GAAG,MAAM,CAEtF","sourcesContent":["import { type BuildDynamicSystemPromptOptions, buildDynamicSystemPrompt } from \"../../../dynamic-prompt/build.ts\";\nimport { buildFileOperationsTuning } from \"./file-operations.ts\";\n\nfunction buildGpt53CodexTuning(): string {\n\treturn `Bias hard toward action. Implement directly with reasonable assumptions rather than stopping to ask. Do not produce upfront plans or preambles before acting — start working immediately.\n\nDo not re-state the goal between steps. When a milestone completes, move to the next without summarizing unless the user asked for a summary.\n\nAfter compaction, continue from the current state rather than re-deriving prior conclusions. Treat compacted items as opaque.\n\n${buildFileOperationsTuning()}`;\n}\n\nexport function buildGpt53CodexPrompt(options: BuildDynamicSystemPromptOptions): string {\n\treturn buildDynamicSystemPrompt({ ...options, tuningSection: buildGpt53CodexTuning() });\n}\n"]}
1
+ {"version":3,"file":"gpt-5.3-codex.d.ts","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/prompt-preset/gpt-5.3-codex.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,+BAA+B,EAA4B,MAAM,kCAAkC,CAAC;AAalH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,+BAA+B,GAAG,MAAM,CAEtF"}
@@ -1 +1 @@
1
- {"version":3,"file":"gpt-5.3-codex.js","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/prompt-preset/gpt-5.3-codex.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwC,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAClH,OAAO,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAEjE,SAAS,qBAAqB,GAAW;IACxC,OAAO;;;;;;EAMN,yBAAyB,EAAE,EAAE,CAAC;AAAA,CAC/B;AAED,MAAM,UAAU,qBAAqB,CAAC,OAAwC,EAAU;IACvF,OAAO,wBAAwB,CAAC,EAAE,GAAG,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,EAAE,CAAC,CAAC;AAAA,CACxF","sourcesContent":["import { type BuildDynamicSystemPromptOptions, buildDynamicSystemPrompt } from \"../../../dynamic-prompt/build.ts\";\nimport { buildFileOperationsTuning } from \"./file-operations.ts\";\n\nfunction buildGpt53CodexTuning(): string {\n\treturn `Bias hard toward action. Implement directly with reasonable assumptions rather than stopping to ask. Do not produce upfront plans or preambles before acting — start working immediately.\n\nDo not re-state the goal between steps. When a milestone completes, move to the next without summarizing unless the user asked for a summary.\n\nAfter compaction, continue from the current state rather than re-deriving prior conclusions. Treat compacted items as opaque.\n\n${buildFileOperationsTuning()}`;\n}\n\nexport function buildGpt53CodexPrompt(options: BuildDynamicSystemPromptOptions): string {\n\treturn buildDynamicSystemPrompt({ ...options, tuningSection: buildGpt53CodexTuning() });\n}\n"]}
1
+ {"version":3,"file":"gpt-5.3-codex.js","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/prompt-preset/gpt-5.3-codex.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwC,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAClH,OAAO,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAEjE,SAAS,qBAAqB;IAC7B,OAAO;;;;;;EAMN,yBAAyB,EAAE,EAAE,CAAC;AAChC,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,OAAwC;IAC7E,OAAO,wBAAwB,CAAC,EAAE,GAAG,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,EAAE,CAAC,CAAC;AACzF,CAAC","sourcesContent":["import { type BuildDynamicSystemPromptOptions, buildDynamicSystemPrompt } from \"../../../dynamic-prompt/build.ts\";\nimport { buildFileOperationsTuning } from \"./file-operations.ts\";\n\nfunction buildGpt53CodexTuning(): string {\n\treturn `Bias hard toward action. Implement directly with reasonable assumptions rather than stopping to ask. Do not produce upfront plans or preambles before acting — start working immediately.\n\nDo not re-state the goal between steps. When a milestone completes, move to the next without summarizing unless the user asked for a summary.\n\nAfter compaction, continue from the current state rather than re-deriving prior conclusions. Treat compacted items as opaque.\n\n${buildFileOperationsTuning()}`;\n}\n\nexport function buildGpt53CodexPrompt(options: BuildDynamicSystemPromptOptions): string {\n\treturn buildDynamicSystemPrompt({ ...options, tuningSection: buildGpt53CodexTuning() });\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"gpt-5.4.d.ts","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/prompt-preset/gpt-5.4.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,+BAA+B,EAA4B,MAAM,kCAAkC,CAAC;AAalH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,+BAA+B,GAAG,MAAM,CAEjF","sourcesContent":["import { type BuildDynamicSystemPromptOptions, buildDynamicSystemPrompt } from \"../../../dynamic-prompt/build.ts\";\nimport { buildFileOperationsTuning } from \"./file-operations.ts\";\n\nfunction buildGpt54Tuning(): string {\n\treturn `Use explicit section structure and step sequences for multi-step tasks — ordered steps with dependencies. When a specific response shape is needed, declare exact fields and order upfront, no extra text.\n\nDefault to medium reasoning effort. Escalate to high only for multi-constraint optimization, subtle bugs, or novel architecture decisions. Use low for classification, extraction, formatting.\n\nState when each tool should and should not be called. Specify parallel vs sequential tool use.\n\n${buildFileOperationsTuning()}`;\n}\n\nexport function buildGpt54Prompt(options: BuildDynamicSystemPromptOptions): string {\n\treturn buildDynamicSystemPrompt({ ...options, tuningSection: buildGpt54Tuning() });\n}\n"]}
1
+ {"version":3,"file":"gpt-5.4.d.ts","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/prompt-preset/gpt-5.4.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,+BAA+B,EAA4B,MAAM,kCAAkC,CAAC;AAalH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,+BAA+B,GAAG,MAAM,CAEjF"}
@@ -1 +1 @@
1
- {"version":3,"file":"gpt-5.4.js","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/prompt-preset/gpt-5.4.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwC,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAClH,OAAO,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAEjE,SAAS,gBAAgB,GAAW;IACnC,OAAO;;;;;;EAMN,yBAAyB,EAAE,EAAE,CAAC;AAAA,CAC/B;AAED,MAAM,UAAU,gBAAgB,CAAC,OAAwC,EAAU;IAClF,OAAO,wBAAwB,CAAC,EAAE,GAAG,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,EAAE,CAAC,CAAC;AAAA,CACnF","sourcesContent":["import { type BuildDynamicSystemPromptOptions, buildDynamicSystemPrompt } from \"../../../dynamic-prompt/build.ts\";\nimport { buildFileOperationsTuning } from \"./file-operations.ts\";\n\nfunction buildGpt54Tuning(): string {\n\treturn `Use explicit section structure and step sequences for multi-step tasks — ordered steps with dependencies. When a specific response shape is needed, declare exact fields and order upfront, no extra text.\n\nDefault to medium reasoning effort. Escalate to high only for multi-constraint optimization, subtle bugs, or novel architecture decisions. Use low for classification, extraction, formatting.\n\nState when each tool should and should not be called. Specify parallel vs sequential tool use.\n\n${buildFileOperationsTuning()}`;\n}\n\nexport function buildGpt54Prompt(options: BuildDynamicSystemPromptOptions): string {\n\treturn buildDynamicSystemPrompt({ ...options, tuningSection: buildGpt54Tuning() });\n}\n"]}
1
+ {"version":3,"file":"gpt-5.4.js","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/prompt-preset/gpt-5.4.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwC,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAClH,OAAO,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAEjE,SAAS,gBAAgB;IACxB,OAAO;;;;;;EAMN,yBAAyB,EAAE,EAAE,CAAC;AAChC,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,OAAwC;IACxE,OAAO,wBAAwB,CAAC,EAAE,GAAG,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,EAAE,CAAC,CAAC;AACpF,CAAC","sourcesContent":["import { type BuildDynamicSystemPromptOptions, buildDynamicSystemPrompt } from \"../../../dynamic-prompt/build.ts\";\nimport { buildFileOperationsTuning } from \"./file-operations.ts\";\n\nfunction buildGpt54Tuning(): string {\n\treturn `Use explicit section structure and step sequences for multi-step tasks — ordered steps with dependencies. When a specific response shape is needed, declare exact fields and order upfront, no extra text.\n\nDefault to medium reasoning effort. Escalate to high only for multi-constraint optimization, subtle bugs, or novel architecture decisions. Use low for classification, extraction, formatting.\n\nState when each tool should and should not be called. Specify parallel vs sequential tool use.\n\n${buildFileOperationsTuning()}`;\n}\n\nexport function buildGpt54Prompt(options: BuildDynamicSystemPromptOptions): string {\n\treturn buildDynamicSystemPrompt({ ...options, tuningSection: buildGpt54Tuning() });\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"gpt-5.5.d.ts","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/prompt-preset/gpt-5.5.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,+BAA+B,EAA4B,MAAM,kCAAkC,CAAC;AAmBlH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,+BAA+B,GAAG,MAAM,CAEjF","sourcesContent":["import { type BuildDynamicSystemPromptOptions, buildDynamicSystemPrompt } from \"../../../dynamic-prompt/build.ts\";\nimport { buildFileOperationsTuning } from \"./file-operations.ts\";\n\nfunction buildGpt55Tuning(): string {\n\treturn `Reason efficiently. Default to low or medium reasoning effort and re-evaluate before escalating; what earlier models needed walked through step by step, you can now hand off as an outcome plus a stopping condition. Skip mechanical step-by-step recitation when the goal is concrete - long process prompts narrow the search space and make answers feel mechanical. Prefer outcome-first framing: define the destination, the constraints, and the stopping condition, then let the path emerge from the work.\n\nThe intent gate routing line is non-optional. Every turn opens with one short read of what the user wants and what you are doing about it. If the latest message overrides earlier intent, drop the earlier path and serve the current request - do not keep pursuing an authorization the user did not re-issue this turn.\n\nPreamble: before the first tool call on any multi-step or tool-heavy task, send one short visible update that names your first concrete step. One or two sentences, then act. No \"Got it -\", \"Sure thing\", \"Done -\", or \"Great question\" openers.\n\nTodo discipline. For any non-trivial task (2+ steps, uncertain scope, multiple items), call \\`todowrite\\` with atomic items before starting. Mark exactly one item \\`in_progress\\` at a time. Mark items \\`completed\\` immediately when finished; never batch. Update the todo list when scope shifts. Trivial single-step asks do not need a todo list.\n\nDig deeper. The first plausible answer is often a symptom, not the root cause. When a finding feels too simple for the complexity of the question, walk one more layer down - callers, error paths, ownership, side effects - before settling. A null check on \\`foo()\\` is not the fix when the real problem is the upstream parser swallowing errors. Prefer the root fix unless the time budget forces otherwise.\n\nReserve absolutes (NEVER, ALWAYS, must, only) for true invariants - safety, type-safety, required output fields, actions that should never happen. For judgment calls (when to search, when to ask, when to use a tool, when to verify), use decision rules; the model follows them better than scolding language and they generalize to cases a hard rule did not anticipate.\n\n${buildFileOperationsTuning()}`;\n}\n\nexport function buildGpt55Prompt(options: BuildDynamicSystemPromptOptions): string {\n\treturn buildDynamicSystemPrompt({ ...options, tuningSection: buildGpt55Tuning() });\n}\n"]}
1
+ {"version":3,"file":"gpt-5.5.d.ts","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/prompt-preset/gpt-5.5.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,+BAA+B,EAA4B,MAAM,kCAAkC,CAAC;AAmBlH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,+BAA+B,GAAG,MAAM,CAEjF"}
@@ -1 +1 @@
1
- {"version":3,"file":"gpt-5.5.js","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/prompt-preset/gpt-5.5.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwC,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAClH,OAAO,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAEjE,SAAS,gBAAgB,GAAW;IACnC,OAAO;;;;;;;;;;;;EAYN,yBAAyB,EAAE,EAAE,CAAC;AAAA,CAC/B;AAED,MAAM,UAAU,gBAAgB,CAAC,OAAwC,EAAU;IAClF,OAAO,wBAAwB,CAAC,EAAE,GAAG,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,EAAE,CAAC,CAAC;AAAA,CACnF","sourcesContent":["import { type BuildDynamicSystemPromptOptions, buildDynamicSystemPrompt } from \"../../../dynamic-prompt/build.ts\";\nimport { buildFileOperationsTuning } from \"./file-operations.ts\";\n\nfunction buildGpt55Tuning(): string {\n\treturn `Reason efficiently. Default to low or medium reasoning effort and re-evaluate before escalating; what earlier models needed walked through step by step, you can now hand off as an outcome plus a stopping condition. Skip mechanical step-by-step recitation when the goal is concrete - long process prompts narrow the search space and make answers feel mechanical. Prefer outcome-first framing: define the destination, the constraints, and the stopping condition, then let the path emerge from the work.\n\nThe intent gate routing line is non-optional. Every turn opens with one short read of what the user wants and what you are doing about it. If the latest message overrides earlier intent, drop the earlier path and serve the current request - do not keep pursuing an authorization the user did not re-issue this turn.\n\nPreamble: before the first tool call on any multi-step or tool-heavy task, send one short visible update that names your first concrete step. One or two sentences, then act. No \"Got it -\", \"Sure thing\", \"Done -\", or \"Great question\" openers.\n\nTodo discipline. For any non-trivial task (2+ steps, uncertain scope, multiple items), call \\`todowrite\\` with atomic items before starting. Mark exactly one item \\`in_progress\\` at a time. Mark items \\`completed\\` immediately when finished; never batch. Update the todo list when scope shifts. Trivial single-step asks do not need a todo list.\n\nDig deeper. The first plausible answer is often a symptom, not the root cause. When a finding feels too simple for the complexity of the question, walk one more layer down - callers, error paths, ownership, side effects - before settling. A null check on \\`foo()\\` is not the fix when the real problem is the upstream parser swallowing errors. Prefer the root fix unless the time budget forces otherwise.\n\nReserve absolutes (NEVER, ALWAYS, must, only) for true invariants - safety, type-safety, required output fields, actions that should never happen. For judgment calls (when to search, when to ask, when to use a tool, when to verify), use decision rules; the model follows them better than scolding language and they generalize to cases a hard rule did not anticipate.\n\n${buildFileOperationsTuning()}`;\n}\n\nexport function buildGpt55Prompt(options: BuildDynamicSystemPromptOptions): string {\n\treturn buildDynamicSystemPrompt({ ...options, tuningSection: buildGpt55Tuning() });\n}\n"]}
1
+ {"version":3,"file":"gpt-5.5.js","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/prompt-preset/gpt-5.5.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwC,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAClH,OAAO,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAEjE,SAAS,gBAAgB;IACxB,OAAO;;;;;;;;;;;;EAYN,yBAAyB,EAAE,EAAE,CAAC;AAChC,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,OAAwC;IACxE,OAAO,wBAAwB,CAAC,EAAE,GAAG,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,EAAE,CAAC,CAAC;AACpF,CAAC","sourcesContent":["import { type BuildDynamicSystemPromptOptions, buildDynamicSystemPrompt } from \"../../../dynamic-prompt/build.ts\";\nimport { buildFileOperationsTuning } from \"./file-operations.ts\";\n\nfunction buildGpt55Tuning(): string {\n\treturn `Reason efficiently. Default to low or medium reasoning effort and re-evaluate before escalating; what earlier models needed walked through step by step, you can now hand off as an outcome plus a stopping condition. Skip mechanical step-by-step recitation when the goal is concrete - long process prompts narrow the search space and make answers feel mechanical. Prefer outcome-first framing: define the destination, the constraints, and the stopping condition, then let the path emerge from the work.\n\nThe intent gate routing line is non-optional. Every turn opens with one short read of what the user wants and what you are doing about it. If the latest message overrides earlier intent, drop the earlier path and serve the current request - do not keep pursuing an authorization the user did not re-issue this turn.\n\nPreamble: before the first tool call on any multi-step or tool-heavy task, send one short visible update that names your first concrete step. One or two sentences, then act. No \"Got it -\", \"Sure thing\", \"Done -\", or \"Great question\" openers.\n\nTodo discipline. For any non-trivial task (2+ steps, uncertain scope, multiple items), call \\`todowrite\\` with atomic items before starting. Mark exactly one item \\`in_progress\\` at a time. Mark items \\`completed\\` immediately when finished; never batch. Update the todo list when scope shifts. Trivial single-step asks do not need a todo list.\n\nDig deeper. The first plausible answer is often a symptom, not the root cause. When a finding feels too simple for the complexity of the question, walk one more layer down - callers, error paths, ownership, side effects - before settling. A null check on \\`foo()\\` is not the fix when the real problem is the upstream parser swallowing errors. Prefer the root fix unless the time budget forces otherwise.\n\nReserve absolutes (NEVER, ALWAYS, must, only) for true invariants - safety, type-safety, required output fields, actions that should never happen. For judgment calls (when to search, when to ask, when to use a tool, when to verify), use decision rules; the model follows them better than scolding language and they generalize to cases a hard rule did not anticipate.\n\n${buildFileOperationsTuning()}`;\n}\n\nexport function buildGpt55Prompt(options: BuildDynamicSystemPromptOptions): string {\n\treturn buildDynamicSystemPrompt({ ...options, tuningSection: buildGpt55Tuning() });\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"gpt-5.d.ts","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/prompt-preset/gpt-5.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,+BAA+B,EAA4B,MAAM,kCAAkC,CAAC;AAWlH,wBAAgB,eAAe,CAAC,OAAO,EAAE,+BAA+B,GAAG,MAAM,CAEhF","sourcesContent":["import { type BuildDynamicSystemPromptOptions, buildDynamicSystemPrompt } from \"../../../dynamic-prompt/build.ts\";\nimport { buildFileOperationsTuning } from \"./file-operations.ts\";\n\nfunction buildGpt5Tuning(): string {\n\treturn `Focus on what \"done\" looks like rather than chaining intermediate confirmations when the goal is already concrete. Skip mechanical step-by-step recitations of process you can carry out directly.\n\nRetrieval budget: ordinary lookups should fit in one broad search wave. Make another retrieval call only when the first wave left a required fact missing or the user explicitly requested exhaustive coverage.\n\n${buildFileOperationsTuning()}`;\n}\n\nexport function buildGpt5Prompt(options: BuildDynamicSystemPromptOptions): string {\n\treturn buildDynamicSystemPrompt({ ...options, tuningSection: buildGpt5Tuning() });\n}\n"]}
1
+ {"version":3,"file":"gpt-5.d.ts","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/prompt-preset/gpt-5.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,+BAA+B,EAA4B,MAAM,kCAAkC,CAAC;AAWlH,wBAAgB,eAAe,CAAC,OAAO,EAAE,+BAA+B,GAAG,MAAM,CAEhF"}
@@ -1 +1 @@
1
- {"version":3,"file":"gpt-5.js","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/prompt-preset/gpt-5.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwC,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAClH,OAAO,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAEjE,SAAS,eAAe,GAAW;IAClC,OAAO;;;;EAIN,yBAAyB,EAAE,EAAE,CAAC;AAAA,CAC/B;AAED,MAAM,UAAU,eAAe,CAAC,OAAwC,EAAU;IACjF,OAAO,wBAAwB,CAAC,EAAE,GAAG,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,EAAE,CAAC,CAAC;AAAA,CAClF","sourcesContent":["import { type BuildDynamicSystemPromptOptions, buildDynamicSystemPrompt } from \"../../../dynamic-prompt/build.ts\";\nimport { buildFileOperationsTuning } from \"./file-operations.ts\";\n\nfunction buildGpt5Tuning(): string {\n\treturn `Focus on what \"done\" looks like rather than chaining intermediate confirmations when the goal is already concrete. Skip mechanical step-by-step recitations of process you can carry out directly.\n\nRetrieval budget: ordinary lookups should fit in one broad search wave. Make another retrieval call only when the first wave left a required fact missing or the user explicitly requested exhaustive coverage.\n\n${buildFileOperationsTuning()}`;\n}\n\nexport function buildGpt5Prompt(options: BuildDynamicSystemPromptOptions): string {\n\treturn buildDynamicSystemPrompt({ ...options, tuningSection: buildGpt5Tuning() });\n}\n"]}
1
+ {"version":3,"file":"gpt-5.js","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/prompt-preset/gpt-5.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwC,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAClH,OAAO,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAEjE,SAAS,eAAe;IACvB,OAAO;;;;EAIN,yBAAyB,EAAE,EAAE,CAAC;AAChC,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,OAAwC;IACvE,OAAO,wBAAwB,CAAC,EAAE,GAAG,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,EAAE,CAAC,CAAC;AACnF,CAAC","sourcesContent":["import { type BuildDynamicSystemPromptOptions, buildDynamicSystemPrompt } from \"../../../dynamic-prompt/build.ts\";\nimport { buildFileOperationsTuning } from \"./file-operations.ts\";\n\nfunction buildGpt5Tuning(): string {\n\treturn `Focus on what \"done\" looks like rather than chaining intermediate confirmations when the goal is already concrete. Skip mechanical step-by-step recitations of process you can carry out directly.\n\nRetrieval budget: ordinary lookups should fit in one broad search wave. Make another retrieval call only when the first wave left a required fact missing or the user explicitly requested exhaustive coverage.\n\n${buildFileOperationsTuning()}`;\n}\n\nexport function buildGpt5Prompt(options: BuildDynamicSystemPromptOptions): string {\n\treturn buildDynamicSystemPrompt({ ...options, tuningSection: buildGpt5Tuning() });\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/prompt-preset/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAsC,MAAM,gBAAgB,CAAC;AAgDvF,MAAM,CAAC,OAAO,UAAU,qBAAqB,CAAC,EAAE,EAAE,YAAY,GAAG,IAAI,CA2BpE","sourcesContent":["import type { BuildDynamicSystemPromptOptions } from \"../../../dynamic-prompt/build.ts\";\nimport { SettingsManager } from \"../../../settings-manager.ts\";\nimport type { ExtensionAPI, ExtensionContext, ModelSelectEvent } from \"../../types.ts\";\nimport { resolvePreset, resolvePresetName } from \"./presets.ts\";\nimport { loadPromptPresetSettings } from \"./settings.ts\";\n\ninterface SystemPromptOptionsLike {\n\tcwd?: string;\n\tselectedTools?: string[];\n\ttoolSnippets?: Record<string, string>;\n\tpromptGuidelines?: string[];\n\tcontextFiles?: Array<{ path: string; content: string }>;\n\tskills?: BuildDynamicSystemPromptOptions[\"skills\"];\n}\n\nfunction eventOptionsToBuilderInput(\n\tevent: { systemPromptOptions: SystemPromptOptionsLike | undefined },\n\tctx: Pick<ExtensionContext, \"cwd\">,\n): Partial<BuildDynamicSystemPromptOptions> {\n\tconst options = event.systemPromptOptions ?? {};\n\treturn {\n\t\tcwd: options.cwd ?? ctx.cwd,\n\t\tselectedTools: options.selectedTools,\n\t\ttoolSnippets: options.toolSnippets,\n\t\tpromptGuidelines: options.promptGuidelines,\n\t\tcontextFiles: options.contextFiles,\n\t\tskills: options.skills,\n\t};\n}\n\nfunction getSettings(ctx: ExtensionContext): ReturnType<typeof loadPromptPresetSettings> {\n\treturn loadPromptPresetSettings(SettingsManager.create(ctx.cwd));\n}\n\nfunction getPresetName(ctx: ExtensionContext, event?: Pick<ModelSelectEvent, \"model\">): string {\n\tconst model = event?.model ?? ctx.model;\n\tif (!model) {\n\t\treturn \"fallback (senpi-current)\";\n\t}\n\treturn resolvePresetName(model, getSettings(ctx)) ?? \"fallback (senpi-current)\";\n}\n\nfunction refreshHeader(ctx: ExtensionContext, event?: Pick<ModelSelectEvent, \"model\">): void {\n\tconst presetName = getPresetName(ctx, event);\n\tctx.ui.setHeader((_tui, theme) => ({\n\t\trender: () => [theme.fg(\"accent\", theme.bold(`Prompt preset: ${presetName}`))],\n\t\tinvalidate: () => {},\n\t}));\n}\n\nexport default function promptPresetExtension(pi: ExtensionAPI): void {\n\tpi.on(\"before_agent_start\", async (event, ctx) => {\n\t\tconst model = ctx.model;\n\t\tif (!model) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tconst preset = resolvePreset(model, getSettings(ctx), eventOptionsToBuilderInput(event, ctx));\n\t\tif (!preset) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\treturn { systemPrompt: preset.prompt };\n\t});\n\n\tpi.on(\"session_start\", async (_event, ctx) => {\n\t\trefreshHeader(ctx);\n\t});\n\n\tpi.on(\"model_select\", async (event, ctx) => {\n\t\trefreshHeader(ctx, event);\n\t\tconst preset = resolvePreset(event.model, getSettings(ctx), eventOptionsToBuilderInput(event, ctx));\n\t\treturn {\n\t\t\tsystemPrompt: preset?.prompt ?? null,\n\t\t\tsystemPromptName: preset?.name ?? \"fallback (senpi-current)\",\n\t\t};\n\t});\n}\n"]}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/prompt-preset/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAsC,MAAM,gBAAgB,CAAC;AAgDvF,MAAM,CAAC,OAAO,UAAU,qBAAqB,CAAC,EAAE,EAAE,YAAY,GAAG,IAAI,CA2BpE"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/prompt-preset/index.ts"],"names":[],"mappings":"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","sourcesContent":["import type { BuildDynamicSystemPromptOptions } from \"../../../dynamic-prompt/build.ts\";\nimport { SettingsManager } from \"../../../settings-manager.ts\";\nimport type { ExtensionAPI, ExtensionContext, ModelSelectEvent } from \"../../types.ts\";\nimport { resolvePreset, resolvePresetName } from \"./presets.ts\";\nimport { loadPromptPresetSettings } from \"./settings.ts\";\n\ninterface SystemPromptOptionsLike {\n\tcwd?: string;\n\tselectedTools?: string[];\n\ttoolSnippets?: Record<string, string>;\n\tpromptGuidelines?: string[];\n\tcontextFiles?: Array<{ path: string; content: string }>;\n\tskills?: BuildDynamicSystemPromptOptions[\"skills\"];\n}\n\nfunction eventOptionsToBuilderInput(\n\tevent: { systemPromptOptions: SystemPromptOptionsLike | undefined },\n\tctx: Pick<ExtensionContext, \"cwd\">,\n): Partial<BuildDynamicSystemPromptOptions> {\n\tconst options = event.systemPromptOptions ?? {};\n\treturn {\n\t\tcwd: options.cwd ?? ctx.cwd,\n\t\tselectedTools: options.selectedTools,\n\t\ttoolSnippets: options.toolSnippets,\n\t\tpromptGuidelines: options.promptGuidelines,\n\t\tcontextFiles: options.contextFiles,\n\t\tskills: options.skills,\n\t};\n}\n\nfunction getSettings(ctx: ExtensionContext): ReturnType<typeof loadPromptPresetSettings> {\n\treturn loadPromptPresetSettings(SettingsManager.create(ctx.cwd));\n}\n\nfunction getPresetName(ctx: ExtensionContext, event?: Pick<ModelSelectEvent, \"model\">): string {\n\tconst model = event?.model ?? ctx.model;\n\tif (!model) {\n\t\treturn \"fallback (senpi-current)\";\n\t}\n\treturn resolvePresetName(model, getSettings(ctx)) ?? \"fallback (senpi-current)\";\n}\n\nfunction refreshHeader(ctx: ExtensionContext, event?: Pick<ModelSelectEvent, \"model\">): void {\n\tconst presetName = getPresetName(ctx, event);\n\tctx.ui.setHeader((_tui, theme) => ({\n\t\trender: () => [theme.fg(\"accent\", theme.bold(`Prompt preset: ${presetName}`))],\n\t\tinvalidate: () => {},\n\t}));\n}\n\nexport default function promptPresetExtension(pi: ExtensionAPI): void {\n\tpi.on(\"before_agent_start\", async (event, ctx) => {\n\t\tconst model = ctx.model;\n\t\tif (!model) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tconst preset = resolvePreset(model, getSettings(ctx), eventOptionsToBuilderInput(event, ctx));\n\t\tif (!preset) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\treturn { systemPrompt: preset.prompt };\n\t});\n\n\tpi.on(\"session_start\", async (_event, ctx) => {\n\t\trefreshHeader(ctx);\n\t});\n\n\tpi.on(\"model_select\", async (event, ctx) => {\n\t\trefreshHeader(ctx, event);\n\t\tconst preset = resolvePreset(event.model, getSettings(ctx), eventOptionsToBuilderInput(event, ctx));\n\t\treturn {\n\t\t\tsystemPrompt: preset?.prompt ?? null,\n\t\t\tsystemPromptName: preset?.name ?? \"fallback (senpi-current)\",\n\t\t};\n\t});\n}\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/prompt-preset/index.ts"],"names":[],"mappings":"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","sourcesContent":["import type { BuildDynamicSystemPromptOptions } from \"../../../dynamic-prompt/build.ts\";\nimport { SettingsManager } from \"../../../settings-manager.ts\";\nimport type { ExtensionAPI, ExtensionContext, ModelSelectEvent } from \"../../types.ts\";\nimport { resolvePreset, resolvePresetName } from \"./presets.ts\";\nimport { loadPromptPresetSettings } from \"./settings.ts\";\n\ninterface SystemPromptOptionsLike {\n\tcwd?: string;\n\tselectedTools?: string[];\n\ttoolSnippets?: Record<string, string>;\n\tpromptGuidelines?: string[];\n\tcontextFiles?: Array<{ path: string; content: string }>;\n\tskills?: BuildDynamicSystemPromptOptions[\"skills\"];\n}\n\nfunction eventOptionsToBuilderInput(\n\tevent: { systemPromptOptions: SystemPromptOptionsLike | undefined },\n\tctx: Pick<ExtensionContext, \"cwd\">,\n): Partial<BuildDynamicSystemPromptOptions> {\n\tconst options = event.systemPromptOptions ?? {};\n\treturn {\n\t\tcwd: options.cwd ?? ctx.cwd,\n\t\tselectedTools: options.selectedTools,\n\t\ttoolSnippets: options.toolSnippets,\n\t\tpromptGuidelines: options.promptGuidelines,\n\t\tcontextFiles: options.contextFiles,\n\t\tskills: options.skills,\n\t};\n}\n\nfunction getSettings(ctx: ExtensionContext): ReturnType<typeof loadPromptPresetSettings> {\n\treturn loadPromptPresetSettings(SettingsManager.create(ctx.cwd));\n}\n\nfunction getPresetName(ctx: ExtensionContext, event?: Pick<ModelSelectEvent, \"model\">): string {\n\tconst model = event?.model ?? ctx.model;\n\tif (!model) {\n\t\treturn \"fallback (senpi-current)\";\n\t}\n\treturn resolvePresetName(model, getSettings(ctx)) ?? \"fallback (senpi-current)\";\n}\n\nfunction refreshHeader(ctx: ExtensionContext, event?: Pick<ModelSelectEvent, \"model\">): void {\n\tconst presetName = getPresetName(ctx, event);\n\tctx.ui.setHeader((_tui, theme) => ({\n\t\trender: () => [theme.fg(\"accent\", theme.bold(`Prompt preset: ${presetName}`))],\n\t\tinvalidate: () => {},\n\t}));\n}\n\nexport default function promptPresetExtension(pi: ExtensionAPI): void {\n\tpi.on(\"before_agent_start\", async (event, ctx) => {\n\t\tconst model = ctx.model;\n\t\tif (!model) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tconst preset = resolvePreset(model, getSettings(ctx), eventOptionsToBuilderInput(event, ctx));\n\t\tif (!preset) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\treturn { systemPrompt: preset.prompt };\n\t});\n\n\tpi.on(\"session_start\", async (_event, ctx) => {\n\t\trefreshHeader(ctx);\n\t});\n\n\tpi.on(\"model_select\", async (event, ctx) => {\n\t\trefreshHeader(ctx, event);\n\t\tconst preset = resolvePreset(event.model, getSettings(ctx), eventOptionsToBuilderInput(event, ctx));\n\t\treturn {\n\t\t\tsystemPrompt: preset?.prompt ?? null,\n\t\t\tsystemPromptName: preset?.name ?? \"fallback (senpi-current)\",\n\t\t};\n\t});\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"kimi-k2-6.d.ts","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/prompt-preset/kimi-k2-6.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,+BAA+B,EAA4B,MAAM,kCAAkC,CAAC;AAQlH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,+BAA+B,GAAG,MAAM,CAEnF","sourcesContent":["import { type BuildDynamicSystemPromptOptions, buildDynamicSystemPrompt } from \"../../../dynamic-prompt/build.ts\";\n\nfunction buildKimiK26Tuning(): string {\n\treturn `Avoid restating the user's request, do not re-derive facts you already established this turn, and skip filler verification language (\"let me confirm again\", \"to be sure\", \"just to double-check\").\n\nThe intent gate routing line is required every turn. On confirmation turns where the user already chose an option in plain words, acknowledge that choice and execute, not re-litigate alternatives the user already eliminated.`;\n}\n\nexport function buildKimiK26Prompt(options: BuildDynamicSystemPromptOptions): string {\n\treturn buildDynamicSystemPrompt({ ...options, tuningSection: buildKimiK26Tuning() });\n}\n"]}
1
+ {"version":3,"file":"kimi-k2-6.d.ts","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/prompt-preset/kimi-k2-6.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,+BAA+B,EAA4B,MAAM,kCAAkC,CAAC;AAQlH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,+BAA+B,GAAG,MAAM,CAEnF"}
@@ -1 +1 @@
1
- {"version":3,"file":"kimi-k2-6.js","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/prompt-preset/kimi-k2-6.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwC,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAElH,SAAS,kBAAkB,GAAW;IACrC,OAAO;;iOAEyN,CAAC;AAAA,CACjO;AAED,MAAM,UAAU,kBAAkB,CAAC,OAAwC,EAAU;IACpF,OAAO,wBAAwB,CAAC,EAAE,GAAG,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,EAAE,CAAC,CAAC;AAAA,CACrF","sourcesContent":["import { type BuildDynamicSystemPromptOptions, buildDynamicSystemPrompt } from \"../../../dynamic-prompt/build.ts\";\n\nfunction buildKimiK26Tuning(): string {\n\treturn `Avoid restating the user's request, do not re-derive facts you already established this turn, and skip filler verification language (\"let me confirm again\", \"to be sure\", \"just to double-check\").\n\nThe intent gate routing line is required every turn. On confirmation turns where the user already chose an option in plain words, acknowledge that choice and execute, not re-litigate alternatives the user already eliminated.`;\n}\n\nexport function buildKimiK26Prompt(options: BuildDynamicSystemPromptOptions): string {\n\treturn buildDynamicSystemPrompt({ ...options, tuningSection: buildKimiK26Tuning() });\n}\n"]}
1
+ {"version":3,"file":"kimi-k2-6.js","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/prompt-preset/kimi-k2-6.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwC,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAElH,SAAS,kBAAkB;IAC1B,OAAO;;iOAEyN,CAAC;AAClO,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,OAAwC;IAC1E,OAAO,wBAAwB,CAAC,EAAE,GAAG,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,EAAE,CAAC,CAAC;AACtF,CAAC","sourcesContent":["import { type BuildDynamicSystemPromptOptions, buildDynamicSystemPrompt } from \"../../../dynamic-prompt/build.ts\";\n\nfunction buildKimiK26Tuning(): string {\n\treturn `Avoid restating the user's request, do not re-derive facts you already established this turn, and skip filler verification language (\"let me confirm again\", \"to be sure\", \"just to double-check\").\n\nThe intent gate routing line is required every turn. On confirmation turns where the user already chose an option in plain words, acknowledge that choice and execute, not re-litigate alternatives the user already eliminated.`;\n}\n\nexport function buildKimiK26Prompt(options: BuildDynamicSystemPromptOptions): string {\n\treturn buildDynamicSystemPrompt({ ...options, tuningSection: buildKimiK26Tuning() });\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"presets.d.ts","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/prompt-preset/presets.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,kCAAkC,CAAC;AAUxF,OAAO,EAAE,KAAK,gBAAgB,EAAE,KAAK,oBAAoB,EAAqB,MAAM,eAAe,CAAC;AAEpG,YAAY,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAE1D,KAAK,kBAAkB,GAAG,OAAO,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;AAC5D,KAAK,6BAA6B,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,UAAU,CAAC,GAAG;IAC1E,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,WAAW,oBAAoB;IACpC,IAAI,EAAE,kBAAkB,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;CACf;AAiDD,wBAAgB,iBAAiB,CAChC,KAAK,EAAE,6BAA6B,EACpC,QAAQ,EAAE,oBAAoB,GAC5B,kBAAkB,GAAG,SAAS,CAsBhC;AAoCD,wBAAgB,aAAa,CAC5B,KAAK,EAAE,6BAA6B,EACpC,QAAQ,EAAE,oBAAoB,EAC9B,OAAO,CAAC,EAAE,OAAO,CAAC,+BAA+B,CAAC,GAChD,oBAAoB,GAAG,SAAS,CAMlC","sourcesContent":["import type { Api, Model } from \"@earendil-works/pi-ai\";\nimport type { BuildDynamicSystemPromptOptions } from \"../../../dynamic-prompt/build.ts\";\nimport { buildClaudeOpus45Prompt } from \"./claude-opus-4-5.ts\";\nimport { buildClaudeOpus46Prompt } from \"./claude-opus-4-6.ts\";\nimport { buildClaudeOpus47Prompt } from \"./claude-opus-4-7.ts\";\nimport { buildGpt52Prompt } from \"./gpt-5.2.ts\";\nimport { buildGpt53CodexPrompt } from \"./gpt-5.3-codex.ts\";\nimport { buildGpt54Prompt } from \"./gpt-5.4.ts\";\nimport { buildGpt55Prompt } from \"./gpt-5.5.ts\";\nimport { buildGpt5Prompt } from \"./gpt-5.ts\";\nimport { buildKimiK26Prompt } from \"./kimi-k2-6.ts\";\nimport { type PromptPresetName, type PromptPresetSettings, parsePromptPreset } from \"./settings.ts\";\n\nexport type { PromptPresetSettings } from \"./settings.ts\";\n\ntype ResolvedPresetName = Exclude<PromptPresetName, \"auto\">;\ntype ModelWithPromptPresetMetadata = Pick<Model<Api>, \"id\" | \"provider\"> & {\n\tname?: string;\n\tpromptPreset?: string;\n};\n\nexport interface ResolvedPromptPreset {\n\tname: ResolvedPresetName;\n\tprompt: string;\n}\n\nfunction normalizeModelId(modelId: string): string {\n\treturn modelId.toLowerCase().replace(/\\s+/g, \"-\");\n}\n\ntype Gpt5Version = \"gpt-5.2\" | \"gpt-5.3-codex\" | \"gpt-5.4\" | \"gpt-5.5\";\n\nfunction extractGpt5Version(modelId: string): Gpt5Version | undefined {\n\tconst normalized = normalizeModelId(modelId);\n\tif (normalized.includes(\"gpt-5.5\")) {\n\t\treturn \"gpt-5.5\";\n\t}\n\tif (normalized.includes(\"gpt-5.4\")) {\n\t\treturn \"gpt-5.4\";\n\t}\n\tif (normalized.includes(\"gpt-5.3\")) {\n\t\treturn \"gpt-5.3-codex\";\n\t}\n\tif (normalized.includes(\"gpt-5.2\")) {\n\t\treturn \"gpt-5.2\";\n\t}\n\treturn undefined;\n}\n\nfunction hasKimiK26Signal(value: string): boolean {\n\treturn /(?:^|[/@._-])kimi-k2(?:[._-]|p)6(?:$|[/@._-])/.test(normalizeModelId(value));\n}\n\nfunction isKimiK26Model(model: ModelWithPromptPresetMetadata): boolean {\n\treturn hasKimiK26Signal(model.id) || (model.name !== undefined && hasKimiK26Signal(model.name));\n}\n\ntype ClaudeOpusVersion = \"claude-opus-4-7\" | \"claude-opus-4-6\" | \"claude-opus-4-5\";\n\nfunction extractClaudeOpusVersion(modelId: string): ClaudeOpusVersion | undefined {\n\tconst normalized = normalizeModelId(modelId);\n\tif (normalized.includes(\"opus-4-7\")) {\n\t\treturn \"claude-opus-4-7\";\n\t}\n\tif (normalized.includes(\"opus-4-6\")) {\n\t\treturn \"claude-opus-4-6\";\n\t}\n\tif (normalized.includes(\"opus-4-5\") || normalized.includes(\"opus-4.5\")) {\n\t\treturn \"claude-opus-4-5\";\n\t}\n\treturn undefined;\n}\n\nexport function resolvePresetName(\n\tmodel: ModelWithPromptPresetMetadata,\n\tsettings: PromptPresetSettings,\n): ResolvedPresetName | undefined {\n\tif (settings.promptPreset !== \"auto\") {\n\t\treturn settings.promptPreset;\n\t}\n\n\tconst modelPromptPreset = parsePromptPreset(model.promptPreset);\n\tif (modelPromptPreset && modelPromptPreset !== \"auto\") {\n\t\treturn modelPromptPreset;\n\t}\n\n\tconst gpt5Version = extractGpt5Version(model.id);\n\tif (gpt5Version) {\n\t\treturn gpt5Version;\n\t}\n\tif (isKimiK26Model(model)) {\n\t\treturn \"kimi-k2-6\";\n\t}\n\tconst claudeVersion = extractClaudeOpusVersion(model.id);\n\tif (claudeVersion) {\n\t\treturn claudeVersion;\n\t}\n\treturn undefined;\n}\n\nfunction buildPreset(name: ResolvedPresetName, options: BuildDynamicSystemPromptOptions): ResolvedPromptPreset {\n\tswitch (name) {\n\t\tcase \"gpt-5.5\":\n\t\t\treturn { name, prompt: buildGpt55Prompt(options) };\n\t\tcase \"gpt-5.4\":\n\t\t\treturn { name, prompt: buildGpt54Prompt(options) };\n\t\tcase \"gpt-5.3-codex\":\n\t\t\treturn { name, prompt: buildGpt53CodexPrompt(options) };\n\t\tcase \"gpt-5.2\":\n\t\t\treturn { name, prompt: buildGpt52Prompt(options) };\n\t\tcase \"gpt-5\":\n\t\t\treturn { name, prompt: buildGpt5Prompt(options) };\n\t\tcase \"kimi-k2-6\":\n\t\t\treturn { name, prompt: buildKimiK26Prompt(options) };\n\t\tcase \"claude-opus-4-7\":\n\t\t\treturn { name, prompt: buildClaudeOpus47Prompt(options) };\n\t\tcase \"claude-opus-4-6\":\n\t\t\treturn { name, prompt: buildClaudeOpus46Prompt(options) };\n\t\tcase \"claude-opus-4-5\":\n\t\t\treturn { name, prompt: buildClaudeOpus45Prompt(options) };\n\t}\n}\n\nfunction withDefaults(options: Partial<BuildDynamicSystemPromptOptions> = {}): BuildDynamicSystemPromptOptions {\n\treturn {\n\t\tcwd: options.cwd ?? \"\",\n\t\tselectedTools: options.selectedTools ?? [],\n\t\ttoolSnippets: options.toolSnippets ?? {},\n\t\tpromptGuidelines: options.promptGuidelines ?? [],\n\t\tcontextFiles: options.contextFiles ?? [],\n\t\tskills: options.skills ?? [],\n\t};\n}\n\nexport function resolvePreset(\n\tmodel: ModelWithPromptPresetMetadata,\n\tsettings: PromptPresetSettings,\n\toptions?: Partial<BuildDynamicSystemPromptOptions>,\n): ResolvedPromptPreset | undefined {\n\tconst name = resolvePresetName(model, settings);\n\tif (!name) {\n\t\treturn undefined;\n\t}\n\treturn buildPreset(name, withDefaults(options));\n}\n"]}
1
+ {"version":3,"file":"presets.d.ts","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/prompt-preset/presets.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,kCAAkC,CAAC;AAUxF,OAAO,EAAE,KAAK,gBAAgB,EAAE,KAAK,oBAAoB,EAAqB,MAAM,eAAe,CAAC;AAEpG,YAAY,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAE1D,KAAK,kBAAkB,GAAG,OAAO,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;AAC5D,KAAK,6BAA6B,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,UAAU,CAAC,GAAG;IAC1E,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,WAAW,oBAAoB;IACpC,IAAI,EAAE,kBAAkB,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;CACf;AAiDD,wBAAgB,iBAAiB,CAChC,KAAK,EAAE,6BAA6B,EACpC,QAAQ,EAAE,oBAAoB,GAC5B,kBAAkB,GAAG,SAAS,CAsBhC;AAoCD,wBAAgB,aAAa,CAC5B,KAAK,EAAE,6BAA6B,EACpC,QAAQ,EAAE,oBAAoB,EAC9B,OAAO,CAAC,EAAE,OAAO,CAAC,+BAA+B,CAAC,GAChD,oBAAoB,GAAG,SAAS,CAMlC"}
@@ -1 +1 @@
1
- {"version":3,"file":"presets.js","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/prompt-preset/presets.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Api, Model } from \"@earendil-works/pi-ai\";\nimport type { BuildDynamicSystemPromptOptions } from \"../../../dynamic-prompt/build.ts\";\nimport { buildClaudeOpus45Prompt } from \"./claude-opus-4-5.ts\";\nimport { buildClaudeOpus46Prompt } from \"./claude-opus-4-6.ts\";\nimport { buildClaudeOpus47Prompt } from \"./claude-opus-4-7.ts\";\nimport { buildGpt52Prompt } from \"./gpt-5.2.ts\";\nimport { buildGpt53CodexPrompt } from \"./gpt-5.3-codex.ts\";\nimport { buildGpt54Prompt } from \"./gpt-5.4.ts\";\nimport { buildGpt55Prompt } from \"./gpt-5.5.ts\";\nimport { buildGpt5Prompt } from \"./gpt-5.ts\";\nimport { buildKimiK26Prompt } from \"./kimi-k2-6.ts\";\nimport { type PromptPresetName, type PromptPresetSettings, parsePromptPreset } from \"./settings.ts\";\n\nexport type { PromptPresetSettings } from \"./settings.ts\";\n\ntype ResolvedPresetName = Exclude<PromptPresetName, \"auto\">;\ntype ModelWithPromptPresetMetadata = Pick<Model<Api>, \"id\" | \"provider\"> & {\n\tname?: string;\n\tpromptPreset?: string;\n};\n\nexport interface ResolvedPromptPreset {\n\tname: ResolvedPresetName;\n\tprompt: string;\n}\n\nfunction normalizeModelId(modelId: string): string {\n\treturn modelId.toLowerCase().replace(/\\s+/g, \"-\");\n}\n\ntype Gpt5Version = \"gpt-5.2\" | \"gpt-5.3-codex\" | \"gpt-5.4\" | \"gpt-5.5\";\n\nfunction extractGpt5Version(modelId: string): Gpt5Version | undefined {\n\tconst normalized = normalizeModelId(modelId);\n\tif (normalized.includes(\"gpt-5.5\")) {\n\t\treturn \"gpt-5.5\";\n\t}\n\tif (normalized.includes(\"gpt-5.4\")) {\n\t\treturn \"gpt-5.4\";\n\t}\n\tif (normalized.includes(\"gpt-5.3\")) {\n\t\treturn \"gpt-5.3-codex\";\n\t}\n\tif (normalized.includes(\"gpt-5.2\")) {\n\t\treturn \"gpt-5.2\";\n\t}\n\treturn undefined;\n}\n\nfunction hasKimiK26Signal(value: string): boolean {\n\treturn /(?:^|[/@._-])kimi-k2(?:[._-]|p)6(?:$|[/@._-])/.test(normalizeModelId(value));\n}\n\nfunction isKimiK26Model(model: ModelWithPromptPresetMetadata): boolean {\n\treturn hasKimiK26Signal(model.id) || (model.name !== undefined && hasKimiK26Signal(model.name));\n}\n\ntype ClaudeOpusVersion = \"claude-opus-4-7\" | \"claude-opus-4-6\" | \"claude-opus-4-5\";\n\nfunction extractClaudeOpusVersion(modelId: string): ClaudeOpusVersion | undefined {\n\tconst normalized = normalizeModelId(modelId);\n\tif (normalized.includes(\"opus-4-7\")) {\n\t\treturn \"claude-opus-4-7\";\n\t}\n\tif (normalized.includes(\"opus-4-6\")) {\n\t\treturn \"claude-opus-4-6\";\n\t}\n\tif (normalized.includes(\"opus-4-5\") || normalized.includes(\"opus-4.5\")) {\n\t\treturn \"claude-opus-4-5\";\n\t}\n\treturn undefined;\n}\n\nexport function resolvePresetName(\n\tmodel: ModelWithPromptPresetMetadata,\n\tsettings: PromptPresetSettings,\n): ResolvedPresetName | undefined {\n\tif (settings.promptPreset !== \"auto\") {\n\t\treturn settings.promptPreset;\n\t}\n\n\tconst modelPromptPreset = parsePromptPreset(model.promptPreset);\n\tif (modelPromptPreset && modelPromptPreset !== \"auto\") {\n\t\treturn modelPromptPreset;\n\t}\n\n\tconst gpt5Version = extractGpt5Version(model.id);\n\tif (gpt5Version) {\n\t\treturn gpt5Version;\n\t}\n\tif (isKimiK26Model(model)) {\n\t\treturn \"kimi-k2-6\";\n\t}\n\tconst claudeVersion = extractClaudeOpusVersion(model.id);\n\tif (claudeVersion) {\n\t\treturn claudeVersion;\n\t}\n\treturn undefined;\n}\n\nfunction buildPreset(name: ResolvedPresetName, options: BuildDynamicSystemPromptOptions): ResolvedPromptPreset {\n\tswitch (name) {\n\t\tcase \"gpt-5.5\":\n\t\t\treturn { name, prompt: buildGpt55Prompt(options) };\n\t\tcase \"gpt-5.4\":\n\t\t\treturn { name, prompt: buildGpt54Prompt(options) };\n\t\tcase \"gpt-5.3-codex\":\n\t\t\treturn { name, prompt: buildGpt53CodexPrompt(options) };\n\t\tcase \"gpt-5.2\":\n\t\t\treturn { name, prompt: buildGpt52Prompt(options) };\n\t\tcase \"gpt-5\":\n\t\t\treturn { name, prompt: buildGpt5Prompt(options) };\n\t\tcase \"kimi-k2-6\":\n\t\t\treturn { name, prompt: buildKimiK26Prompt(options) };\n\t\tcase \"claude-opus-4-7\":\n\t\t\treturn { name, prompt: buildClaudeOpus47Prompt(options) };\n\t\tcase \"claude-opus-4-6\":\n\t\t\treturn { name, prompt: buildClaudeOpus46Prompt(options) };\n\t\tcase \"claude-opus-4-5\":\n\t\t\treturn { name, prompt: buildClaudeOpus45Prompt(options) };\n\t}\n}\n\nfunction withDefaults(options: Partial<BuildDynamicSystemPromptOptions> = {}): BuildDynamicSystemPromptOptions {\n\treturn {\n\t\tcwd: options.cwd ?? \"\",\n\t\tselectedTools: options.selectedTools ?? [],\n\t\ttoolSnippets: options.toolSnippets ?? {},\n\t\tpromptGuidelines: options.promptGuidelines ?? [],\n\t\tcontextFiles: options.contextFiles ?? [],\n\t\tskills: options.skills ?? [],\n\t};\n}\n\nexport function resolvePreset(\n\tmodel: ModelWithPromptPresetMetadata,\n\tsettings: PromptPresetSettings,\n\toptions?: Partial<BuildDynamicSystemPromptOptions>,\n): ResolvedPromptPreset | undefined {\n\tconst name = resolvePresetName(model, settings);\n\tif (!name) {\n\t\treturn undefined;\n\t}\n\treturn buildPreset(name, withDefaults(options));\n}\n"]}
1
+ {"version":3,"file":"presets.js","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/prompt-preset/presets.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Api, Model } from \"@earendil-works/pi-ai\";\nimport type { BuildDynamicSystemPromptOptions } from \"../../../dynamic-prompt/build.ts\";\nimport { buildClaudeOpus45Prompt } from \"./claude-opus-4-5.ts\";\nimport { buildClaudeOpus46Prompt } from \"./claude-opus-4-6.ts\";\nimport { buildClaudeOpus47Prompt } from \"./claude-opus-4-7.ts\";\nimport { buildGpt52Prompt } from \"./gpt-5.2.ts\";\nimport { buildGpt53CodexPrompt } from \"./gpt-5.3-codex.ts\";\nimport { buildGpt54Prompt } from \"./gpt-5.4.ts\";\nimport { buildGpt55Prompt } from \"./gpt-5.5.ts\";\nimport { buildGpt5Prompt } from \"./gpt-5.ts\";\nimport { buildKimiK26Prompt } from \"./kimi-k2-6.ts\";\nimport { type PromptPresetName, type PromptPresetSettings, parsePromptPreset } from \"./settings.ts\";\n\nexport type { PromptPresetSettings } from \"./settings.ts\";\n\ntype ResolvedPresetName = Exclude<PromptPresetName, \"auto\">;\ntype ModelWithPromptPresetMetadata = Pick<Model<Api>, \"id\" | \"provider\"> & {\n\tname?: string;\n\tpromptPreset?: string;\n};\n\nexport interface ResolvedPromptPreset {\n\tname: ResolvedPresetName;\n\tprompt: string;\n}\n\nfunction normalizeModelId(modelId: string): string {\n\treturn modelId.toLowerCase().replace(/\\s+/g, \"-\");\n}\n\ntype Gpt5Version = \"gpt-5.2\" | \"gpt-5.3-codex\" | \"gpt-5.4\" | \"gpt-5.5\";\n\nfunction extractGpt5Version(modelId: string): Gpt5Version | undefined {\n\tconst normalized = normalizeModelId(modelId);\n\tif (normalized.includes(\"gpt-5.5\")) {\n\t\treturn \"gpt-5.5\";\n\t}\n\tif (normalized.includes(\"gpt-5.4\")) {\n\t\treturn \"gpt-5.4\";\n\t}\n\tif (normalized.includes(\"gpt-5.3\")) {\n\t\treturn \"gpt-5.3-codex\";\n\t}\n\tif (normalized.includes(\"gpt-5.2\")) {\n\t\treturn \"gpt-5.2\";\n\t}\n\treturn undefined;\n}\n\nfunction hasKimiK26Signal(value: string): boolean {\n\treturn /(?:^|[/@._-])kimi-k2(?:[._-]|p)6(?:$|[/@._-])/.test(normalizeModelId(value));\n}\n\nfunction isKimiK26Model(model: ModelWithPromptPresetMetadata): boolean {\n\treturn hasKimiK26Signal(model.id) || (model.name !== undefined && hasKimiK26Signal(model.name));\n}\n\ntype ClaudeOpusVersion = \"claude-opus-4-7\" | \"claude-opus-4-6\" | \"claude-opus-4-5\";\n\nfunction extractClaudeOpusVersion(modelId: string): ClaudeOpusVersion | undefined {\n\tconst normalized = normalizeModelId(modelId);\n\tif (normalized.includes(\"opus-4-7\")) {\n\t\treturn \"claude-opus-4-7\";\n\t}\n\tif (normalized.includes(\"opus-4-6\")) {\n\t\treturn \"claude-opus-4-6\";\n\t}\n\tif (normalized.includes(\"opus-4-5\") || normalized.includes(\"opus-4.5\")) {\n\t\treturn \"claude-opus-4-5\";\n\t}\n\treturn undefined;\n}\n\nexport function resolvePresetName(\n\tmodel: ModelWithPromptPresetMetadata,\n\tsettings: PromptPresetSettings,\n): ResolvedPresetName | undefined {\n\tif (settings.promptPreset !== \"auto\") {\n\t\treturn settings.promptPreset;\n\t}\n\n\tconst modelPromptPreset = parsePromptPreset(model.promptPreset);\n\tif (modelPromptPreset && modelPromptPreset !== \"auto\") {\n\t\treturn modelPromptPreset;\n\t}\n\n\tconst gpt5Version = extractGpt5Version(model.id);\n\tif (gpt5Version) {\n\t\treturn gpt5Version;\n\t}\n\tif (isKimiK26Model(model)) {\n\t\treturn \"kimi-k2-6\";\n\t}\n\tconst claudeVersion = extractClaudeOpusVersion(model.id);\n\tif (claudeVersion) {\n\t\treturn claudeVersion;\n\t}\n\treturn undefined;\n}\n\nfunction buildPreset(name: ResolvedPresetName, options: BuildDynamicSystemPromptOptions): ResolvedPromptPreset {\n\tswitch (name) {\n\t\tcase \"gpt-5.5\":\n\t\t\treturn { name, prompt: buildGpt55Prompt(options) };\n\t\tcase \"gpt-5.4\":\n\t\t\treturn { name, prompt: buildGpt54Prompt(options) };\n\t\tcase \"gpt-5.3-codex\":\n\t\t\treturn { name, prompt: buildGpt53CodexPrompt(options) };\n\t\tcase \"gpt-5.2\":\n\t\t\treturn { name, prompt: buildGpt52Prompt(options) };\n\t\tcase \"gpt-5\":\n\t\t\treturn { name, prompt: buildGpt5Prompt(options) };\n\t\tcase \"kimi-k2-6\":\n\t\t\treturn { name, prompt: buildKimiK26Prompt(options) };\n\t\tcase \"claude-opus-4-7\":\n\t\t\treturn { name, prompt: buildClaudeOpus47Prompt(options) };\n\t\tcase \"claude-opus-4-6\":\n\t\t\treturn { name, prompt: buildClaudeOpus46Prompt(options) };\n\t\tcase \"claude-opus-4-5\":\n\t\t\treturn { name, prompt: buildClaudeOpus45Prompt(options) };\n\t}\n}\n\nfunction withDefaults(options: Partial<BuildDynamicSystemPromptOptions> = {}): BuildDynamicSystemPromptOptions {\n\treturn {\n\t\tcwd: options.cwd ?? \"\",\n\t\tselectedTools: options.selectedTools ?? [],\n\t\ttoolSnippets: options.toolSnippets ?? {},\n\t\tpromptGuidelines: options.promptGuidelines ?? [],\n\t\tcontextFiles: options.contextFiles ?? [],\n\t\tskills: options.skills ?? [],\n\t};\n}\n\nexport function resolvePreset(\n\tmodel: ModelWithPromptPresetMetadata,\n\tsettings: PromptPresetSettings,\n\toptions?: Partial<BuildDynamicSystemPromptOptions>,\n): ResolvedPromptPreset | undefined {\n\tconst name = resolvePresetName(model, settings);\n\tif (!name) {\n\t\treturn undefined;\n\t}\n\treturn buildPreset(name, withDefaults(options));\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/prompt-preset/settings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAY,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAE9E,MAAM,MAAM,gBAAgB,GACzB,MAAM,GACN,iBAAiB,GACjB,iBAAiB,GACjB,iBAAiB,GACjB,WAAW,GACX,OAAO,GACP,SAAS,GACT,eAAe,GACf,SAAS,GACT,SAAS,CAAC;AAEb,MAAM,WAAW,oBAAoB;IACpC,YAAY,EAAE,gBAAgB,CAAC;CAC/B;AAiBD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,gBAAgB,GAAG,SAAS,CAKzF;AAED,wBAAgB,wBAAwB,CAAC,eAAe,EAAE,eAAe,GAAG,oBAAoB,CAQ/F","sourcesContent":["import type { Settings, SettingsManager } from \"../../../settings-manager.ts\";\n\nexport type PromptPresetName =\n\t| \"auto\"\n\t| \"claude-opus-4-7\"\n\t| \"claude-opus-4-6\"\n\t| \"claude-opus-4-5\"\n\t| \"kimi-k2-6\"\n\t| \"gpt-5\"\n\t| \"gpt-5.2\"\n\t| \"gpt-5.3-codex\"\n\t| \"gpt-5.4\"\n\t| \"gpt-5.5\";\n\nexport interface PromptPresetSettings {\n\tpromptPreset: PromptPresetName;\n}\n\ntype SettingsWithPromptPreset = Settings & { promptPreset?: string };\n\nconst VALID_PRESETS: ReadonlySet<string> = new Set<PromptPresetName>([\n\t\"auto\",\n\t\"claude-opus-4-7\",\n\t\"claude-opus-4-6\",\n\t\"claude-opus-4-5\",\n\t\"kimi-k2-6\",\n\t\"gpt-5\",\n\t\"gpt-5.2\",\n\t\"gpt-5.3-codex\",\n\t\"gpt-5.4\",\n\t\"gpt-5.5\",\n]);\n\nexport function parsePromptPreset(value: string | undefined): PromptPresetName | undefined {\n\tif (value && VALID_PRESETS.has(value)) {\n\t\treturn value as PromptPresetName;\n\t}\n\treturn undefined;\n}\n\nexport function loadPromptPresetSettings(settingsManager: SettingsManager): PromptPresetSettings {\n\tconst globalSettings = settingsManager.getGlobalSettings() as SettingsWithPromptPreset;\n\tconst projectSettings = settingsManager.getProjectSettings() as SettingsWithPromptPreset;\n\n\treturn {\n\t\tpromptPreset:\n\t\t\tparsePromptPreset(projectSettings.promptPreset) ?? parsePromptPreset(globalSettings.promptPreset) ?? \"auto\",\n\t};\n}\n"]}
1
+ {"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/prompt-preset/settings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAY,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAE9E,MAAM,MAAM,gBAAgB,GACzB,MAAM,GACN,iBAAiB,GACjB,iBAAiB,GACjB,iBAAiB,GACjB,WAAW,GACX,OAAO,GACP,SAAS,GACT,eAAe,GACf,SAAS,GACT,SAAS,CAAC;AAEb,MAAM,WAAW,oBAAoB;IACpC,YAAY,EAAE,gBAAgB,CAAC;CAC/B;AAiBD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,gBAAgB,GAAG,SAAS,CAKzF;AAED,wBAAgB,wBAAwB,CAAC,eAAe,EAAE,eAAe,GAAG,oBAAoB,CAQ/F"}
@@ -1 +1 @@
1
- {"version":3,"file":"settings.js","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/prompt-preset/settings.ts"],"names":[],"mappings":"AAoBA,MAAM,aAAa,GAAwB,IAAI,GAAG,CAAmB;IACpE,MAAM;IACN,iBAAiB;IACjB,iBAAiB;IACjB,iBAAiB;IACjB,WAAW;IACX,OAAO;IACP,SAAS;IACT,eAAe;IACf,SAAS;IACT,SAAS;CACT,CAAC,CAAC;AAEH,MAAM,UAAU,iBAAiB,CAAC,KAAyB,EAAgC;IAC1F,IAAI,KAAK,IAAI,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;QACvC,OAAO,KAAyB,CAAC;IAClC,CAAC;IACD,OAAO,SAAS,CAAC;AAAA,CACjB;AAED,MAAM,UAAU,wBAAwB,CAAC,eAAgC,EAAwB;IAChG,MAAM,cAAc,GAAG,eAAe,CAAC,iBAAiB,EAA8B,CAAC;IACvF,MAAM,eAAe,GAAG,eAAe,CAAC,kBAAkB,EAA8B,CAAC;IAEzF,OAAO;QACN,YAAY,EACX,iBAAiB,CAAC,eAAe,CAAC,YAAY,CAAC,IAAI,iBAAiB,CAAC,cAAc,CAAC,YAAY,CAAC,IAAI,MAAM;KAC5G,CAAC;AAAA,CACF","sourcesContent":["import type { Settings, SettingsManager } from \"../../../settings-manager.ts\";\n\nexport type PromptPresetName =\n\t| \"auto\"\n\t| \"claude-opus-4-7\"\n\t| \"claude-opus-4-6\"\n\t| \"claude-opus-4-5\"\n\t| \"kimi-k2-6\"\n\t| \"gpt-5\"\n\t| \"gpt-5.2\"\n\t| \"gpt-5.3-codex\"\n\t| \"gpt-5.4\"\n\t| \"gpt-5.5\";\n\nexport interface PromptPresetSettings {\n\tpromptPreset: PromptPresetName;\n}\n\ntype SettingsWithPromptPreset = Settings & { promptPreset?: string };\n\nconst VALID_PRESETS: ReadonlySet<string> = new Set<PromptPresetName>([\n\t\"auto\",\n\t\"claude-opus-4-7\",\n\t\"claude-opus-4-6\",\n\t\"claude-opus-4-5\",\n\t\"kimi-k2-6\",\n\t\"gpt-5\",\n\t\"gpt-5.2\",\n\t\"gpt-5.3-codex\",\n\t\"gpt-5.4\",\n\t\"gpt-5.5\",\n]);\n\nexport function parsePromptPreset(value: string | undefined): PromptPresetName | undefined {\n\tif (value && VALID_PRESETS.has(value)) {\n\t\treturn value as PromptPresetName;\n\t}\n\treturn undefined;\n}\n\nexport function loadPromptPresetSettings(settingsManager: SettingsManager): PromptPresetSettings {\n\tconst globalSettings = settingsManager.getGlobalSettings() as SettingsWithPromptPreset;\n\tconst projectSettings = settingsManager.getProjectSettings() as SettingsWithPromptPreset;\n\n\treturn {\n\t\tpromptPreset:\n\t\t\tparsePromptPreset(projectSettings.promptPreset) ?? parsePromptPreset(globalSettings.promptPreset) ?? \"auto\",\n\t};\n}\n"]}
1
+ {"version":3,"file":"settings.js","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/prompt-preset/settings.ts"],"names":[],"mappings":"AAoBA,MAAM,aAAa,GAAwB,IAAI,GAAG,CAAmB;IACpE,MAAM;IACN,iBAAiB;IACjB,iBAAiB;IACjB,iBAAiB;IACjB,WAAW;IACX,OAAO;IACP,SAAS;IACT,eAAe;IACf,SAAS;IACT,SAAS;CACT,CAAC,CAAC;AAEH,MAAM,UAAU,iBAAiB,CAAC,KAAyB;IAC1D,IAAI,KAAK,IAAI,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;QACvC,OAAO,KAAyB,CAAC;IAClC,CAAC;IACD,OAAO,SAAS,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,eAAgC;IACxE,MAAM,cAAc,GAAG,eAAe,CAAC,iBAAiB,EAA8B,CAAC;IACvF,MAAM,eAAe,GAAG,eAAe,CAAC,kBAAkB,EAA8B,CAAC;IAEzF,OAAO;QACN,YAAY,EACX,iBAAiB,CAAC,eAAe,CAAC,YAAY,CAAC,IAAI,iBAAiB,CAAC,cAAc,CAAC,YAAY,CAAC,IAAI,MAAM;KAC5G,CAAC;AACH,CAAC","sourcesContent":["import type { Settings, SettingsManager } from \"../../../settings-manager.ts\";\n\nexport type PromptPresetName =\n\t| \"auto\"\n\t| \"claude-opus-4-7\"\n\t| \"claude-opus-4-6\"\n\t| \"claude-opus-4-5\"\n\t| \"kimi-k2-6\"\n\t| \"gpt-5\"\n\t| \"gpt-5.2\"\n\t| \"gpt-5.3-codex\"\n\t| \"gpt-5.4\"\n\t| \"gpt-5.5\";\n\nexport interface PromptPresetSettings {\n\tpromptPreset: PromptPresetName;\n}\n\ntype SettingsWithPromptPreset = Settings & { promptPreset?: string };\n\nconst VALID_PRESETS: ReadonlySet<string> = new Set<PromptPresetName>([\n\t\"auto\",\n\t\"claude-opus-4-7\",\n\t\"claude-opus-4-6\",\n\t\"claude-opus-4-5\",\n\t\"kimi-k2-6\",\n\t\"gpt-5\",\n\t\"gpt-5.2\",\n\t\"gpt-5.3-codex\",\n\t\"gpt-5.4\",\n\t\"gpt-5.5\",\n]);\n\nexport function parsePromptPreset(value: string | undefined): PromptPresetName | undefined {\n\tif (value && VALID_PRESETS.has(value)) {\n\t\treturn value as PromptPresetName;\n\t}\n\treturn undefined;\n}\n\nexport function loadPromptPresetSettings(settingsManager: SettingsManager): PromptPresetSettings {\n\tconst globalSettings = settingsManager.getGlobalSettings() as SettingsWithPromptPreset;\n\tconst projectSettings = settingsManager.getProjectSettings() as SettingsWithPromptPreset;\n\n\treturn {\n\t\tpromptPreset:\n\t\t\tparsePromptPreset(projectSettings.promptPreset) ?? parsePromptPreset(globalSettings.promptPreset) ?? \"auto\",\n\t};\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"prompt-url-widget.d.ts","sourceRoot":"","sources":["../../../../src/core/extensions/builtin/prompt-url-widget.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAoB,MAAM,aAAa,CAAC;AA2DlE,MAAM,CAAC,OAAO,UAAU,wBAAwB,CAAC,EAAE,EAAE,YAAY,QA6FhE","sourcesContent":["import { Container, Text } from \"@earendil-works/pi-tui\";\nimport { DynamicBorder } from \"../../../modes/interactive/components/dynamic-border.ts\";\nimport type { ExtensionAPI, ExtensionContext } from \"../types.ts\";\n\nconst PR_PROMPT_PATTERN = /^\\s*You are given one or more GitHub PR URLs:\\s*(\\S+)/im;\nconst ISSUE_PROMPT_PATTERN = /^\\s*Analyze GitHub issue\\(s\\):\\s*(\\S+)/im;\n\ntype PromptMatch = {\n\tkind: \"pr\" | \"issue\";\n\turl: string;\n};\n\ntype GhMetadata = {\n\ttitle?: string;\n\tauthor?: {\n\t\tlogin?: string;\n\t\tname?: string | null;\n\t};\n};\n\nfunction extractPromptMatch(prompt: string): PromptMatch | undefined {\n\tconst prMatch = prompt.match(PR_PROMPT_PATTERN);\n\tif (prMatch?.[1]) {\n\t\treturn { kind: \"pr\", url: prMatch[1].trim() };\n\t}\n\n\tconst issueMatch = prompt.match(ISSUE_PROMPT_PATTERN);\n\tif (issueMatch?.[1]) {\n\t\treturn { kind: \"issue\", url: issueMatch[1].trim() };\n\t}\n\n\treturn undefined;\n}\n\nasync function fetchGhMetadata(\n\tpi: ExtensionAPI,\n\tkind: PromptMatch[\"kind\"],\n\turl: string,\n): Promise<GhMetadata | undefined> {\n\tconst args =\n\t\tkind === \"pr\" ? [\"pr\", \"view\", url, \"--json\", \"title,author\"] : [\"issue\", \"view\", url, \"--json\", \"title,author\"];\n\n\ttry {\n\t\tconst result = await pi.exec(\"gh\", args);\n\t\tif (result.code !== 0 || !result.stdout) return undefined;\n\t\treturn JSON.parse(result.stdout) as GhMetadata;\n\t} catch {\n\t\treturn undefined;\n\t}\n}\n\nfunction formatAuthor(author?: GhMetadata[\"author\"]): string | undefined {\n\tif (!author) return undefined;\n\tconst name = author.name?.trim();\n\tconst login = author.login?.trim();\n\tif (name && login) return `${name} (@${login})`;\n\tif (login) return `@${login}`;\n\tif (name) return name;\n\treturn undefined;\n}\n\nexport default function promptUrlWidgetExtension(pi: ExtensionAPI) {\n\tconst setWidget = (ctx: ExtensionContext, match: PromptMatch, title?: string, authorText?: string) => {\n\t\tctx.ui.setWidget(\"prompt-url\", (_tui, thm) => {\n\t\t\tconst titleText = title ? thm.fg(\"accent\", title) : thm.fg(\"accent\", match.url);\n\t\t\tconst authorLine = authorText ? thm.fg(\"muted\", authorText) : undefined;\n\t\t\tconst urlLine = thm.fg(\"dim\", match.url);\n\n\t\t\tconst lines = [titleText];\n\t\t\tif (authorLine) lines.push(authorLine);\n\t\t\tlines.push(urlLine);\n\n\t\t\tconst container = new Container();\n\t\t\tcontainer.addChild(new DynamicBorder((s: string) => thm.fg(\"muted\", s)));\n\t\t\tcontainer.addChild(new Text(lines.join(\"\\n\"), 1, 0));\n\t\t\treturn container;\n\t\t});\n\t};\n\n\tconst applySessionName = (_ctx: ExtensionContext, match: PromptMatch, title?: string) => {\n\t\tconst label = match.kind === \"pr\" ? \"PR\" : \"Issue\";\n\t\tconst trimmedTitle = title?.trim();\n\t\tconst fallbackName = `${label}: ${match.url}`;\n\t\tconst desiredName = trimmedTitle ? `${label}: ${trimmedTitle} (${match.url})` : fallbackName;\n\t\tconst currentName = pi.getSessionName()?.trim();\n\t\tif (!currentName) {\n\t\t\tpi.setSessionName(desiredName);\n\t\t\treturn;\n\t\t}\n\t\tif (currentName === match.url || currentName === fallbackName) {\n\t\t\tpi.setSessionName(desiredName);\n\t\t}\n\t};\n\n\tpi.on(\"before_agent_start\", async (event, ctx) => {\n\t\tif (!ctx.hasUI) return;\n\t\tconst match = extractPromptMatch(event.prompt);\n\t\tif (!match) {\n\t\t\treturn;\n\t\t}\n\n\t\tsetWidget(ctx, match);\n\t\tapplySessionName(ctx, match);\n\t\tvoid fetchGhMetadata(pi, match.kind, match.url).then((meta) => {\n\t\t\tconst title = meta?.title?.trim();\n\t\t\tconst authorText = formatAuthor(meta?.author);\n\t\t\tsetWidget(ctx, match, title, authorText);\n\t\t\tapplySessionName(ctx, match, title);\n\t\t});\n\t});\n\n\tconst getUserText = (content: string | { type: string; text?: string }[] | undefined): string => {\n\t\tif (!content) return \"\";\n\t\tif (typeof content === \"string\") return content;\n\t\treturn (\n\t\t\tcontent\n\t\t\t\t.filter((block): block is { type: \"text\"; text: string } => block.type === \"text\")\n\t\t\t\t.map((block) => block.text)\n\t\t\t\t.join(\"\\n\") ?? \"\"\n\t\t);\n\t};\n\n\tconst rebuildFromSession = (ctx: ExtensionContext) => {\n\t\tif (!ctx.hasUI) return;\n\n\t\tconst entries = ctx.sessionManager.getEntries();\n\t\tconst lastMatch = [...entries].reverse().find((entry) => {\n\t\t\tif (entry.type !== \"message\" || entry.message.role !== \"user\") return false;\n\t\t\tconst text = getUserText(entry.message.content);\n\t\t\treturn !!extractPromptMatch(text);\n\t\t});\n\n\t\tconst content =\n\t\t\tlastMatch?.type === \"message\" && lastMatch.message.role === \"user\" ? lastMatch.message.content : undefined;\n\t\tconst text = getUserText(content);\n\t\tconst match = text ? extractPromptMatch(text) : undefined;\n\t\tif (!match) {\n\t\t\tctx.ui.setWidget(\"prompt-url\", undefined);\n\t\t\treturn;\n\t\t}\n\n\t\tsetWidget(ctx, match);\n\t\tapplySessionName(ctx, match);\n\t\tvoid fetchGhMetadata(pi, match.kind, match.url).then((meta) => {\n\t\t\tconst title = meta?.title?.trim();\n\t\t\tconst authorText = formatAuthor(meta?.author);\n\t\t\tsetWidget(ctx, match, title, authorText);\n\t\t\tapplySessionName(ctx, match, title);\n\t\t});\n\t};\n\n\tpi.on(\"session_start\", async (_event, ctx) => {\n\t\trebuildFromSession(ctx);\n\t});\n}\n"]}
1
+ {"version":3,"file":"prompt-url-widget.d.ts","sourceRoot":"","sources":["../../../../src/core/extensions/builtin/prompt-url-widget.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAoB,MAAM,aAAa,CAAC;AA2DlE,MAAM,CAAC,OAAO,UAAU,wBAAwB,CAAC,EAAE,EAAE,YAAY,QA6FhE"}
@@ -1 +1 @@
1
- {"version":3,"file":"prompt-url-widget.js","sourceRoot":"","sources":["../../../../src/core/extensions/builtin/prompt-url-widget.ts"],"names":[],"mappings":"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","sourcesContent":["import { Container, Text } from \"@earendil-works/pi-tui\";\nimport { DynamicBorder } from \"../../../modes/interactive/components/dynamic-border.ts\";\nimport type { ExtensionAPI, ExtensionContext } from \"../types.ts\";\n\nconst PR_PROMPT_PATTERN = /^\\s*You are given one or more GitHub PR URLs:\\s*(\\S+)/im;\nconst ISSUE_PROMPT_PATTERN = /^\\s*Analyze GitHub issue\\(s\\):\\s*(\\S+)/im;\n\ntype PromptMatch = {\n\tkind: \"pr\" | \"issue\";\n\turl: string;\n};\n\ntype GhMetadata = {\n\ttitle?: string;\n\tauthor?: {\n\t\tlogin?: string;\n\t\tname?: string | null;\n\t};\n};\n\nfunction extractPromptMatch(prompt: string): PromptMatch | undefined {\n\tconst prMatch = prompt.match(PR_PROMPT_PATTERN);\n\tif (prMatch?.[1]) {\n\t\treturn { kind: \"pr\", url: prMatch[1].trim() };\n\t}\n\n\tconst issueMatch = prompt.match(ISSUE_PROMPT_PATTERN);\n\tif (issueMatch?.[1]) {\n\t\treturn { kind: \"issue\", url: issueMatch[1].trim() };\n\t}\n\n\treturn undefined;\n}\n\nasync function fetchGhMetadata(\n\tpi: ExtensionAPI,\n\tkind: PromptMatch[\"kind\"],\n\turl: string,\n): Promise<GhMetadata | undefined> {\n\tconst args =\n\t\tkind === \"pr\" ? [\"pr\", \"view\", url, \"--json\", \"title,author\"] : [\"issue\", \"view\", url, \"--json\", \"title,author\"];\n\n\ttry {\n\t\tconst result = await pi.exec(\"gh\", args);\n\t\tif (result.code !== 0 || !result.stdout) return undefined;\n\t\treturn JSON.parse(result.stdout) as GhMetadata;\n\t} catch {\n\t\treturn undefined;\n\t}\n}\n\nfunction formatAuthor(author?: GhMetadata[\"author\"]): string | undefined {\n\tif (!author) return undefined;\n\tconst name = author.name?.trim();\n\tconst login = author.login?.trim();\n\tif (name && login) return `${name} (@${login})`;\n\tif (login) return `@${login}`;\n\tif (name) return name;\n\treturn undefined;\n}\n\nexport default function promptUrlWidgetExtension(pi: ExtensionAPI) {\n\tconst setWidget = (ctx: ExtensionContext, match: PromptMatch, title?: string, authorText?: string) => {\n\t\tctx.ui.setWidget(\"prompt-url\", (_tui, thm) => {\n\t\t\tconst titleText = title ? thm.fg(\"accent\", title) : thm.fg(\"accent\", match.url);\n\t\t\tconst authorLine = authorText ? thm.fg(\"muted\", authorText) : undefined;\n\t\t\tconst urlLine = thm.fg(\"dim\", match.url);\n\n\t\t\tconst lines = [titleText];\n\t\t\tif (authorLine) lines.push(authorLine);\n\t\t\tlines.push(urlLine);\n\n\t\t\tconst container = new Container();\n\t\t\tcontainer.addChild(new DynamicBorder((s: string) => thm.fg(\"muted\", s)));\n\t\t\tcontainer.addChild(new Text(lines.join(\"\\n\"), 1, 0));\n\t\t\treturn container;\n\t\t});\n\t};\n\n\tconst applySessionName = (_ctx: ExtensionContext, match: PromptMatch, title?: string) => {\n\t\tconst label = match.kind === \"pr\" ? \"PR\" : \"Issue\";\n\t\tconst trimmedTitle = title?.trim();\n\t\tconst fallbackName = `${label}: ${match.url}`;\n\t\tconst desiredName = trimmedTitle ? `${label}: ${trimmedTitle} (${match.url})` : fallbackName;\n\t\tconst currentName = pi.getSessionName()?.trim();\n\t\tif (!currentName) {\n\t\t\tpi.setSessionName(desiredName);\n\t\t\treturn;\n\t\t}\n\t\tif (currentName === match.url || currentName === fallbackName) {\n\t\t\tpi.setSessionName(desiredName);\n\t\t}\n\t};\n\n\tpi.on(\"before_agent_start\", async (event, ctx) => {\n\t\tif (!ctx.hasUI) return;\n\t\tconst match = extractPromptMatch(event.prompt);\n\t\tif (!match) {\n\t\t\treturn;\n\t\t}\n\n\t\tsetWidget(ctx, match);\n\t\tapplySessionName(ctx, match);\n\t\tvoid fetchGhMetadata(pi, match.kind, match.url).then((meta) => {\n\t\t\tconst title = meta?.title?.trim();\n\t\t\tconst authorText = formatAuthor(meta?.author);\n\t\t\tsetWidget(ctx, match, title, authorText);\n\t\t\tapplySessionName(ctx, match, title);\n\t\t});\n\t});\n\n\tconst getUserText = (content: string | { type: string; text?: string }[] | undefined): string => {\n\t\tif (!content) return \"\";\n\t\tif (typeof content === \"string\") return content;\n\t\treturn (\n\t\t\tcontent\n\t\t\t\t.filter((block): block is { type: \"text\"; text: string } => block.type === \"text\")\n\t\t\t\t.map((block) => block.text)\n\t\t\t\t.join(\"\\n\") ?? \"\"\n\t\t);\n\t};\n\n\tconst rebuildFromSession = (ctx: ExtensionContext) => {\n\t\tif (!ctx.hasUI) return;\n\n\t\tconst entries = ctx.sessionManager.getEntries();\n\t\tconst lastMatch = [...entries].reverse().find((entry) => {\n\t\t\tif (entry.type !== \"message\" || entry.message.role !== \"user\") return false;\n\t\t\tconst text = getUserText(entry.message.content);\n\t\t\treturn !!extractPromptMatch(text);\n\t\t});\n\n\t\tconst content =\n\t\t\tlastMatch?.type === \"message\" && lastMatch.message.role === \"user\" ? lastMatch.message.content : undefined;\n\t\tconst text = getUserText(content);\n\t\tconst match = text ? extractPromptMatch(text) : undefined;\n\t\tif (!match) {\n\t\t\tctx.ui.setWidget(\"prompt-url\", undefined);\n\t\t\treturn;\n\t\t}\n\n\t\tsetWidget(ctx, match);\n\t\tapplySessionName(ctx, match);\n\t\tvoid fetchGhMetadata(pi, match.kind, match.url).then((meta) => {\n\t\t\tconst title = meta?.title?.trim();\n\t\t\tconst authorText = formatAuthor(meta?.author);\n\t\t\tsetWidget(ctx, match, title, authorText);\n\t\t\tapplySessionName(ctx, match, title);\n\t\t});\n\t};\n\n\tpi.on(\"session_start\", async (_event, ctx) => {\n\t\trebuildFromSession(ctx);\n\t});\n}\n"]}
1
+ {"version":3,"file":"prompt-url-widget.js","sourceRoot":"","sources":["../../../../src/core/extensions/builtin/prompt-url-widget.ts"],"names":[],"mappings":"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","sourcesContent":["import { Container, Text } from \"@earendil-works/pi-tui\";\nimport { DynamicBorder } from \"../../../modes/interactive/components/dynamic-border.ts\";\nimport type { ExtensionAPI, ExtensionContext } from \"../types.ts\";\n\nconst PR_PROMPT_PATTERN = /^\\s*You are given one or more GitHub PR URLs:\\s*(\\S+)/im;\nconst ISSUE_PROMPT_PATTERN = /^\\s*Analyze GitHub issue\\(s\\):\\s*(\\S+)/im;\n\ntype PromptMatch = {\n\tkind: \"pr\" | \"issue\";\n\turl: string;\n};\n\ntype GhMetadata = {\n\ttitle?: string;\n\tauthor?: {\n\t\tlogin?: string;\n\t\tname?: string | null;\n\t};\n};\n\nfunction extractPromptMatch(prompt: string): PromptMatch | undefined {\n\tconst prMatch = prompt.match(PR_PROMPT_PATTERN);\n\tif (prMatch?.[1]) {\n\t\treturn { kind: \"pr\", url: prMatch[1].trim() };\n\t}\n\n\tconst issueMatch = prompt.match(ISSUE_PROMPT_PATTERN);\n\tif (issueMatch?.[1]) {\n\t\treturn { kind: \"issue\", url: issueMatch[1].trim() };\n\t}\n\n\treturn undefined;\n}\n\nasync function fetchGhMetadata(\n\tpi: ExtensionAPI,\n\tkind: PromptMatch[\"kind\"],\n\turl: string,\n): Promise<GhMetadata | undefined> {\n\tconst args =\n\t\tkind === \"pr\" ? [\"pr\", \"view\", url, \"--json\", \"title,author\"] : [\"issue\", \"view\", url, \"--json\", \"title,author\"];\n\n\ttry {\n\t\tconst result = await pi.exec(\"gh\", args);\n\t\tif (result.code !== 0 || !result.stdout) return undefined;\n\t\treturn JSON.parse(result.stdout) as GhMetadata;\n\t} catch {\n\t\treturn undefined;\n\t}\n}\n\nfunction formatAuthor(author?: GhMetadata[\"author\"]): string | undefined {\n\tif (!author) return undefined;\n\tconst name = author.name?.trim();\n\tconst login = author.login?.trim();\n\tif (name && login) return `${name} (@${login})`;\n\tif (login) return `@${login}`;\n\tif (name) return name;\n\treturn undefined;\n}\n\nexport default function promptUrlWidgetExtension(pi: ExtensionAPI) {\n\tconst setWidget = (ctx: ExtensionContext, match: PromptMatch, title?: string, authorText?: string) => {\n\t\tctx.ui.setWidget(\"prompt-url\", (_tui, thm) => {\n\t\t\tconst titleText = title ? thm.fg(\"accent\", title) : thm.fg(\"accent\", match.url);\n\t\t\tconst authorLine = authorText ? thm.fg(\"muted\", authorText) : undefined;\n\t\t\tconst urlLine = thm.fg(\"dim\", match.url);\n\n\t\t\tconst lines = [titleText];\n\t\t\tif (authorLine) lines.push(authorLine);\n\t\t\tlines.push(urlLine);\n\n\t\t\tconst container = new Container();\n\t\t\tcontainer.addChild(new DynamicBorder((s: string) => thm.fg(\"muted\", s)));\n\t\t\tcontainer.addChild(new Text(lines.join(\"\\n\"), 1, 0));\n\t\t\treturn container;\n\t\t});\n\t};\n\n\tconst applySessionName = (_ctx: ExtensionContext, match: PromptMatch, title?: string) => {\n\t\tconst label = match.kind === \"pr\" ? \"PR\" : \"Issue\";\n\t\tconst trimmedTitle = title?.trim();\n\t\tconst fallbackName = `${label}: ${match.url}`;\n\t\tconst desiredName = trimmedTitle ? `${label}: ${trimmedTitle} (${match.url})` : fallbackName;\n\t\tconst currentName = pi.getSessionName()?.trim();\n\t\tif (!currentName) {\n\t\t\tpi.setSessionName(desiredName);\n\t\t\treturn;\n\t\t}\n\t\tif (currentName === match.url || currentName === fallbackName) {\n\t\t\tpi.setSessionName(desiredName);\n\t\t}\n\t};\n\n\tpi.on(\"before_agent_start\", async (event, ctx) => {\n\t\tif (!ctx.hasUI) return;\n\t\tconst match = extractPromptMatch(event.prompt);\n\t\tif (!match) {\n\t\t\treturn;\n\t\t}\n\n\t\tsetWidget(ctx, match);\n\t\tapplySessionName(ctx, match);\n\t\tvoid fetchGhMetadata(pi, match.kind, match.url).then((meta) => {\n\t\t\tconst title = meta?.title?.trim();\n\t\t\tconst authorText = formatAuthor(meta?.author);\n\t\t\tsetWidget(ctx, match, title, authorText);\n\t\t\tapplySessionName(ctx, match, title);\n\t\t});\n\t});\n\n\tconst getUserText = (content: string | { type: string; text?: string }[] | undefined): string => {\n\t\tif (!content) return \"\";\n\t\tif (typeof content === \"string\") return content;\n\t\treturn (\n\t\t\tcontent\n\t\t\t\t.filter((block): block is { type: \"text\"; text: string } => block.type === \"text\")\n\t\t\t\t.map((block) => block.text)\n\t\t\t\t.join(\"\\n\") ?? \"\"\n\t\t);\n\t};\n\n\tconst rebuildFromSession = (ctx: ExtensionContext) => {\n\t\tif (!ctx.hasUI) return;\n\n\t\tconst entries = ctx.sessionManager.getEntries();\n\t\tconst lastMatch = [...entries].reverse().find((entry) => {\n\t\t\tif (entry.type !== \"message\" || entry.message.role !== \"user\") return false;\n\t\t\tconst text = getUserText(entry.message.content);\n\t\t\treturn !!extractPromptMatch(text);\n\t\t});\n\n\t\tconst content =\n\t\t\tlastMatch?.type === \"message\" && lastMatch.message.role === \"user\" ? lastMatch.message.content : undefined;\n\t\tconst text = getUserText(content);\n\t\tconst match = text ? extractPromptMatch(text) : undefined;\n\t\tif (!match) {\n\t\t\tctx.ui.setWidget(\"prompt-url\", undefined);\n\t\t\treturn;\n\t\t}\n\n\t\tsetWidget(ctx, match);\n\t\tapplySessionName(ctx, match);\n\t\tvoid fetchGhMetadata(pi, match.kind, match.url).then((meta) => {\n\t\t\tconst title = meta?.title?.trim();\n\t\t\tconst authorText = formatAuthor(meta?.author);\n\t\t\tsetWidget(ctx, match, title, authorText);\n\t\t\tapplySessionName(ctx, match, title);\n\t\t});\n\t};\n\n\tpi.on(\"session_start\", async (_event, ctx) => {\n\t\trebuildFromSession(ctx);\n\t});\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"redraws.d.ts","sourceRoot":"","sources":["../../../../src/core/extensions/builtin/redraws.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,MAAM,CAAC,OAAO,WAAW,EAAE,EAAE,YAAY,QAcxC","sourcesContent":["/**\n * Redraws Extension\n *\n * Exposes /tui to show TUI redraw stats.\n */\n\nimport { Text } from \"@earendil-works/pi-tui\";\nimport type { ExtensionAPI } from \"../types.ts\";\n\nexport default function (pi: ExtensionAPI) {\n\tpi.registerCommand(\"tui\", {\n\t\tdescription: \"Show TUI stats\",\n\t\thandler: async (_args, ctx) => {\n\t\t\tif (!ctx.hasUI) return;\n\t\t\tlet redraws = 0;\n\t\t\tawait ctx.ui.custom<void>((tui, _theme, _keybindings, done) => {\n\t\t\t\tredraws = tui.fullRedraws;\n\t\t\t\tdone(undefined);\n\t\t\t\treturn new Text(\"\", 0, 0);\n\t\t\t});\n\t\t\tctx.ui.notify(`TUI full redraws: ${redraws}`, \"info\");\n\t\t},\n\t});\n}\n"]}
1
+ {"version":3,"file":"redraws.d.ts","sourceRoot":"","sources":["../../../../src/core/extensions/builtin/redraws.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,MAAM,CAAC,OAAO,WAAW,EAAE,EAAE,YAAY,QAcxC"}
@@ -1 +1 @@
1
- {"version":3,"file":"redraws.js","sourceRoot":"","sources":["../../../../src/core/extensions/builtin/redraws.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAG9C,MAAM,CAAC,OAAO,WAAW,EAAgB,EAAE;IAC1C,EAAE,CAAC,eAAe,CAAC,KAAK,EAAE;QACzB,WAAW,EAAE,gBAAgB;QAC7B,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC;YAC9B,IAAI,CAAC,GAAG,CAAC,KAAK;gBAAE,OAAO;YACvB,IAAI,OAAO,GAAG,CAAC,CAAC;YAChB,MAAM,GAAG,CAAC,EAAE,CAAC,MAAM,CAAO,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,CAAC;gBAC9D,OAAO,GAAG,GAAG,CAAC,WAAW,CAAC;gBAC1B,IAAI,CAAC,SAAS,CAAC,CAAC;gBAChB,OAAO,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YAAA,CAC1B,CAAC,CAAC;YACH,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,qBAAqB,OAAO,EAAE,EAAE,MAAM,CAAC,CAAC;QAAA,CACtD;KACD,CAAC,CAAC;AAAA,CACH","sourcesContent":["/**\n * Redraws Extension\n *\n * Exposes /tui to show TUI redraw stats.\n */\n\nimport { Text } from \"@earendil-works/pi-tui\";\nimport type { ExtensionAPI } from \"../types.ts\";\n\nexport default function (pi: ExtensionAPI) {\n\tpi.registerCommand(\"tui\", {\n\t\tdescription: \"Show TUI stats\",\n\t\thandler: async (_args, ctx) => {\n\t\t\tif (!ctx.hasUI) return;\n\t\t\tlet redraws = 0;\n\t\t\tawait ctx.ui.custom<void>((tui, _theme, _keybindings, done) => {\n\t\t\t\tredraws = tui.fullRedraws;\n\t\t\t\tdone(undefined);\n\t\t\t\treturn new Text(\"\", 0, 0);\n\t\t\t});\n\t\t\tctx.ui.notify(`TUI full redraws: ${redraws}`, \"info\");\n\t\t},\n\t});\n}\n"]}
1
+ {"version":3,"file":"redraws.js","sourceRoot":"","sources":["../../../../src/core/extensions/builtin/redraws.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAG9C,MAAM,CAAC,OAAO,WAAW,EAAgB;IACxC,EAAE,CAAC,eAAe,CAAC,KAAK,EAAE;QACzB,WAAW,EAAE,gBAAgB;QAC7B,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;YAC7B,IAAI,CAAC,GAAG,CAAC,KAAK;gBAAE,OAAO;YACvB,IAAI,OAAO,GAAG,CAAC,CAAC;YAChB,MAAM,GAAG,CAAC,EAAE,CAAC,MAAM,CAAO,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE;gBAC7D,OAAO,GAAG,GAAG,CAAC,WAAW,CAAC;gBAC1B,IAAI,CAAC,SAAS,CAAC,CAAC;gBAChB,OAAO,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YAC3B,CAAC,CAAC,CAAC;YACH,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,qBAAqB,OAAO,EAAE,EAAE,MAAM,CAAC,CAAC;QACvD,CAAC;KACD,CAAC,CAAC;AACJ,CAAC","sourcesContent":["/**\n * Redraws Extension\n *\n * Exposes /tui to show TUI redraw stats.\n */\n\nimport { Text } from \"@earendil-works/pi-tui\";\nimport type { ExtensionAPI } from \"../types.ts\";\n\nexport default function (pi: ExtensionAPI) {\n\tpi.registerCommand(\"tui\", {\n\t\tdescription: \"Show TUI stats\",\n\t\thandler: async (_args, ctx) => {\n\t\t\tif (!ctx.hasUI) return;\n\t\t\tlet redraws = 0;\n\t\t\tawait ctx.ui.custom<void>((tui, _theme, _keybindings, done) => {\n\t\t\t\tredraws = tui.fullRedraws;\n\t\t\t\tdone(undefined);\n\t\t\t\treturn new Text(\"\", 0, 0);\n\t\t\t});\n\t\t\tctx.ui.notify(`TUI full redraws: ${redraws}`, \"info\");\n\t\t},\n\t});\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"service-tier.d.ts","sourceRoot":"","sources":["../../../../src/core/extensions/builtin/service-tier.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,uBAAuB,CAAC;AAEjD,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE7D,YAAY,EAAE,WAAW,EAAE,CAAC;AAS5B,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,GAAG,GAAG,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,CAAC,EAAE,WAAW,GAAG,OAAO,CAalH;AAED,MAAM,CAAC,OAAO,UAAU,oBAAoB,CAAC,EAAE,EAAE,YAAY,GAAG,IAAI,CAYnE","sourcesContent":["import type { Api } from \"@earendil-works/pi-ai\";\nimport { SettingsManager } from \"../../settings-manager.ts\";\nimport type { ExtensionAPI, ServiceTier } from \"../types.ts\";\n\nexport type { ServiceTier };\ntype ProviderPayload = Record<string, unknown>;\n\nconst SERVICE_TIER_APIS: ReadonlySet<Api> = new Set([\"openai-responses\"]);\n\nfunction isRecord(value: unknown): value is ProviderPayload {\n\treturn typeof value === \"object\" && value !== null;\n}\n\nexport function addServiceTierToPayload(api: Api | undefined, payload: unknown, serviceTier?: ServiceTier): unknown {\n\tif (!api || !SERVICE_TIER_APIS.has(api) || !serviceTier) {\n\t\treturn payload;\n\t}\n\n\tif (!isRecord(payload) || payload.service_tier !== undefined) {\n\t\treturn payload;\n\t}\n\n\treturn {\n\t\t...payload,\n\t\tservice_tier: serviceTier,\n\t};\n}\n\nexport default function serviceTierExtension(pi: ExtensionAPI): void {\n\tlet settingsServiceTier: ServiceTier | undefined;\n\n\tpi.on(\"session_start\", async (_event, ctx) => {\n\t\tconst settingsManager = SettingsManager.create(ctx.cwd);\n\t\tsettingsServiceTier = settingsManager.getOpenAIServiceTier();\n\t});\n\n\tpi.on(\"before_provider_request\", (event, ctx) => {\n\t\tconst effectiveServiceTier = ctx.serviceTier ?? settingsServiceTier;\n\t\treturn addServiceTierToPayload(ctx.model?.api, event.payload, effectiveServiceTier);\n\t});\n}\n"]}
1
+ {"version":3,"file":"service-tier.d.ts","sourceRoot":"","sources":["../../../../src/core/extensions/builtin/service-tier.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,uBAAuB,CAAC;AAEjD,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE7D,YAAY,EAAE,WAAW,EAAE,CAAC;AAU5B,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,GAAG,GAAG,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,CAAC,EAAE,WAAW,GAAG,OAAO,CAalH;AAED,MAAM,CAAC,OAAO,UAAU,oBAAoB,CAAC,EAAE,EAAE,YAAY,GAAG,IAAI,CAYnE"}
@@ -1 +1 @@
1
- {"version":3,"file":"service-tier.js","sourceRoot":"","sources":["../../../../src/core/extensions/builtin/service-tier.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAM5D,MAAM,iBAAiB,GAAqB,IAAI,GAAG,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC;AAE1E,SAAS,QAAQ,CAAC,KAAc,EAA4B;IAC3D,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,CAAC;AAAA,CACnD;AAED,MAAM,UAAU,uBAAuB,CAAC,GAAoB,EAAE,OAAgB,EAAE,WAAyB,EAAW;IACnH,IAAI,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QACzD,OAAO,OAAO,CAAC;IAChB,CAAC;IAED,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;QAC9D,OAAO,OAAO,CAAC;IAChB,CAAC;IAED,OAAO;QACN,GAAG,OAAO;QACV,YAAY,EAAE,WAAW;KACzB,CAAC;AAAA,CACF;AAED,MAAM,CAAC,OAAO,UAAU,oBAAoB,CAAC,EAAgB,EAAQ;IACpE,IAAI,mBAA4C,CAAC;IAEjD,EAAE,CAAC,EAAE,CAAC,eAAe,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC;QAC7C,MAAM,eAAe,GAAG,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACxD,mBAAmB,GAAG,eAAe,CAAC,oBAAoB,EAAE,CAAC;IAAA,CAC7D,CAAC,CAAC;IAEH,EAAE,CAAC,EAAE,CAAC,yBAAyB,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC;QAChD,MAAM,oBAAoB,GAAG,GAAG,CAAC,WAAW,IAAI,mBAAmB,CAAC;QACpE,OAAO,uBAAuB,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,OAAO,EAAE,oBAAoB,CAAC,CAAC;IAAA,CACpF,CAAC,CAAC;AAAA,CACH","sourcesContent":["import type { Api } from \"@earendil-works/pi-ai\";\nimport { SettingsManager } from \"../../settings-manager.ts\";\nimport type { ExtensionAPI, ServiceTier } from \"../types.ts\";\n\nexport type { ServiceTier };\ntype ProviderPayload = Record<string, unknown>;\n\nconst SERVICE_TIER_APIS: ReadonlySet<Api> = new Set([\"openai-responses\"]);\n\nfunction isRecord(value: unknown): value is ProviderPayload {\n\treturn typeof value === \"object\" && value !== null;\n}\n\nexport function addServiceTierToPayload(api: Api | undefined, payload: unknown, serviceTier?: ServiceTier): unknown {\n\tif (!api || !SERVICE_TIER_APIS.has(api) || !serviceTier) {\n\t\treturn payload;\n\t}\n\n\tif (!isRecord(payload) || payload.service_tier !== undefined) {\n\t\treturn payload;\n\t}\n\n\treturn {\n\t\t...payload,\n\t\tservice_tier: serviceTier,\n\t};\n}\n\nexport default function serviceTierExtension(pi: ExtensionAPI): void {\n\tlet settingsServiceTier: ServiceTier | undefined;\n\n\tpi.on(\"session_start\", async (_event, ctx) => {\n\t\tconst settingsManager = SettingsManager.create(ctx.cwd);\n\t\tsettingsServiceTier = settingsManager.getOpenAIServiceTier();\n\t});\n\n\tpi.on(\"before_provider_request\", (event, ctx) => {\n\t\tconst effectiveServiceTier = ctx.serviceTier ?? settingsServiceTier;\n\t\treturn addServiceTierToPayload(ctx.model?.api, event.payload, effectiveServiceTier);\n\t});\n}\n"]}
1
+ {"version":3,"file":"service-tier.js","sourceRoot":"","sources":["../../../../src/core/extensions/builtin/service-tier.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAO5D,MAAM,iBAAiB,GAAqB,IAAI,GAAG,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC;AAE1E,SAAS,QAAQ,CAAC,KAAc;IAC/B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,GAAoB,EAAE,OAAgB,EAAE,WAAyB;IACxG,IAAI,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QACzD,OAAO,OAAO,CAAC;IAChB,CAAC;IAED,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;QAC9D,OAAO,OAAO,CAAC;IAChB,CAAC;IAED,OAAO;QACN,GAAG,OAAO;QACV,YAAY,EAAE,WAAW;KACzB,CAAC;AACH,CAAC;AAED,MAAM,CAAC,OAAO,UAAU,oBAAoB,CAAC,EAAgB;IAC5D,IAAI,mBAA4C,CAAC;IAEjD,EAAE,CAAC,EAAE,CAAC,eAAe,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE;QAC5C,MAAM,eAAe,GAAG,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACxD,mBAAmB,GAAG,eAAe,CAAC,oBAAoB,EAAE,CAAC;IAC9D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,EAAE,CAAC,yBAAyB,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;QAC/C,MAAM,oBAAoB,GAAG,GAAG,CAAC,WAAW,IAAI,mBAAmB,CAAC;QACpE,OAAO,uBAAuB,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,OAAO,EAAE,oBAAoB,CAAC,CAAC;IACrF,CAAC,CAAC,CAAC;AACJ,CAAC","sourcesContent":["import type { Api } from \"@earendil-works/pi-ai\";\nimport { SettingsManager } from \"../../settings-manager.ts\";\nimport type { ExtensionAPI, ServiceTier } from \"../types.ts\";\n\nexport type { ServiceTier };\n\ntype ProviderPayload = Record<string, unknown>;\n\nconst SERVICE_TIER_APIS: ReadonlySet<Api> = new Set([\"openai-responses\"]);\n\nfunction isRecord(value: unknown): value is ProviderPayload {\n\treturn typeof value === \"object\" && value !== null;\n}\n\nexport function addServiceTierToPayload(api: Api | undefined, payload: unknown, serviceTier?: ServiceTier): unknown {\n\tif (!api || !SERVICE_TIER_APIS.has(api) || !serviceTier) {\n\t\treturn payload;\n\t}\n\n\tif (!isRecord(payload) || payload.service_tier !== undefined) {\n\t\treturn payload;\n\t}\n\n\treturn {\n\t\t...payload,\n\t\tservice_tier: serviceTier,\n\t};\n}\n\nexport default function serviceTierExtension(pi: ExtensionAPI): void {\n\tlet settingsServiceTier: ServiceTier | undefined;\n\n\tpi.on(\"session_start\", async (_event, ctx) => {\n\t\tconst settingsManager = SettingsManager.create(ctx.cwd);\n\t\tsettingsServiceTier = settingsManager.getOpenAIServiceTier();\n\t});\n\n\tpi.on(\"before_provider_request\", (event, ctx) => {\n\t\tconst effectiveServiceTier = ctx.serviceTier ?? settingsServiceTier;\n\t\treturn addServiceTierToPayload(ctx.model?.api, event.payload, effectiveServiceTier);\n\t});\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/session-observer/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAKnD,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAC5E,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAEnD,MAAM,CAAC,OAAO,UAAU,mBAAmB,CAAC,EAAE,EAAE,YAAY,GAAG,IAAI,CAmClE","sourcesContent":["import { getSessionsDir } from \"../../../../config.ts\";\nimport type { ExtensionAPI } from \"../../types.ts\";\nimport { SessionHudOverlay } from \"./overlay.ts\";\nimport { resolveSessionHudRoot, scanSessionHudEntries } from \"./scanner.ts\";\nimport type { SessionHudEntry } from \"./types.ts\";\n\nexport { resolveSessionHudRoot, scanSessionHudEntries } from \"./scanner.ts\";\nexport { renderTranscript } from \"./transcript.ts\";\n\nexport default function sessionHudExtension(pi: ExtensionAPI): void {\n\tpi.registerCommand(\"sessions\", {\n\t\tdescription: \"Peek at previous session transcripts in a HUD\",\n\t\thandler: async (_args, ctx) => {\n\t\t\tif (!ctx.hasUI) {\n\t\t\t\tctx.ui.notify(\"No UI available\", \"info\");\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlet sessions: readonly SessionHudEntry[];\n\t\t\ttry {\n\t\t\t\tconst root = resolveSessionHudRoot(ctx.sessionManager.getSessionDir(), getSessionsDir());\n\t\t\t\tsessions = await scanSessionHudEntries(root, ctx.sessionManager.getSessionFile());\n\t\t\t} catch (error) {\n\t\t\t\tconst message = error instanceof Error ? error.message : String(error);\n\t\t\t\tctx.ui.notify(`Failed to read sessions: ${message}`, \"error\");\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (sessions.length === 0) {\n\t\t\t\tctx.ui.notify(\"No sessions found\", \"info\");\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tawait ctx.ui.custom<void>(\n\t\t\t\t(tui, _theme, _keybindings, done) =>\n\t\t\t\t\tnew SessionHudOverlay({\n\t\t\t\t\t\tsessions,\n\t\t\t\t\t\tdone,\n\t\t\t\t\t\trequestRender: () => tui.requestRender(),\n\t\t\t\t\t}),\n\t\t\t\t{ overlay: true, overlayOptions: { width: \"94%\", maxHeight: \"90%\", minWidth: 72, margin: 1 } },\n\t\t\t);\n\t\t},\n\t});\n}\n"]}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/session-observer/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAKnD,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAC5E,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAEnD,MAAM,CAAC,OAAO,UAAU,mBAAmB,CAAC,EAAE,EAAE,YAAY,GAAG,IAAI,CAmClE"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/session-observer/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAG5E,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAC5E,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAEnD,MAAM,CAAC,OAAO,UAAU,mBAAmB,CAAC,EAAgB,EAAQ;IACnE,EAAE,CAAC,eAAe,CAAC,UAAU,EAAE;QAC9B,WAAW,EAAE,+CAA+C;QAC5D,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC;YAC9B,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;gBAChB,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC;gBACzC,OAAO;YACR,CAAC;YAED,IAAI,QAAoC,CAAC;YACzC,IAAI,CAAC;gBACJ,MAAM,IAAI,GAAG,qBAAqB,CAAC,GAAG,CAAC,cAAc,CAAC,aAAa,EAAE,EAAE,cAAc,EAAE,CAAC,CAAC;gBACzF,QAAQ,GAAG,MAAM,qBAAqB,CAAC,IAAI,EAAE,GAAG,CAAC,cAAc,CAAC,cAAc,EAAE,CAAC,CAAC;YACnF,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBAChB,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBACvE,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,4BAA4B,OAAO,EAAE,EAAE,OAAO,CAAC,CAAC;gBAC9D,OAAO;YACR,CAAC;YAED,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC3B,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC;gBAC3C,OAAO;YACR,CAAC;YAED,MAAM,GAAG,CAAC,EAAE,CAAC,MAAM,CAClB,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,CACnC,IAAI,iBAAiB,CAAC;gBACrB,QAAQ;gBACR,IAAI;gBACJ,aAAa,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,aAAa,EAAE;aACxC,CAAC,EACH,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,CAC9F,CAAC;QAAA,CACF;KACD,CAAC,CAAC;AAAA,CACH","sourcesContent":["import { getSessionsDir } from \"../../../../config.ts\";\nimport type { ExtensionAPI } from \"../../types.ts\";\nimport { SessionHudOverlay } from \"./overlay.ts\";\nimport { resolveSessionHudRoot, scanSessionHudEntries } from \"./scanner.ts\";\nimport type { SessionHudEntry } from \"./types.ts\";\n\nexport { resolveSessionHudRoot, scanSessionHudEntries } from \"./scanner.ts\";\nexport { renderTranscript } from \"./transcript.ts\";\n\nexport default function sessionHudExtension(pi: ExtensionAPI): void {\n\tpi.registerCommand(\"sessions\", {\n\t\tdescription: \"Peek at previous session transcripts in a HUD\",\n\t\thandler: async (_args, ctx) => {\n\t\t\tif (!ctx.hasUI) {\n\t\t\t\tctx.ui.notify(\"No UI available\", \"info\");\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlet sessions: readonly SessionHudEntry[];\n\t\t\ttry {\n\t\t\t\tconst root = resolveSessionHudRoot(ctx.sessionManager.getSessionDir(), getSessionsDir());\n\t\t\t\tsessions = await scanSessionHudEntries(root, ctx.sessionManager.getSessionFile());\n\t\t\t} catch (error) {\n\t\t\t\tconst message = error instanceof Error ? error.message : String(error);\n\t\t\t\tctx.ui.notify(`Failed to read sessions: ${message}`, \"error\");\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (sessions.length === 0) {\n\t\t\t\tctx.ui.notify(\"No sessions found\", \"info\");\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tawait ctx.ui.custom<void>(\n\t\t\t\t(tui, _theme, _keybindings, done) =>\n\t\t\t\t\tnew SessionHudOverlay({\n\t\t\t\t\t\tsessions,\n\t\t\t\t\t\tdone,\n\t\t\t\t\t\trequestRender: () => tui.requestRender(),\n\t\t\t\t\t}),\n\t\t\t\t{ overlay: true, overlayOptions: { width: \"94%\", maxHeight: \"90%\", minWidth: 72, margin: 1 } },\n\t\t\t);\n\t\t},\n\t});\n}\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/session-observer/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAG5E,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAC5E,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAEnD,MAAM,CAAC,OAAO,UAAU,mBAAmB,CAAC,EAAgB;IAC3D,EAAE,CAAC,eAAe,CAAC,UAAU,EAAE;QAC9B,WAAW,EAAE,+CAA+C;QAC5D,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;YAC7B,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;gBAChB,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC;gBACzC,OAAO;YACR,CAAC;YAED,IAAI,QAAoC,CAAC;YACzC,IAAI,CAAC;gBACJ,MAAM,IAAI,GAAG,qBAAqB,CAAC,GAAG,CAAC,cAAc,CAAC,aAAa,EAAE,EAAE,cAAc,EAAE,CAAC,CAAC;gBACzF,QAAQ,GAAG,MAAM,qBAAqB,CAAC,IAAI,EAAE,GAAG,CAAC,cAAc,CAAC,cAAc,EAAE,CAAC,CAAC;YACnF,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBAChB,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBACvE,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,4BAA4B,OAAO,EAAE,EAAE,OAAO,CAAC,CAAC;gBAC9D,OAAO;YACR,CAAC;YAED,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC3B,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC;gBAC3C,OAAO;YACR,CAAC;YAED,MAAM,GAAG,CAAC,EAAE,CAAC,MAAM,CAClB,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,CACnC,IAAI,iBAAiB,CAAC;gBACrB,QAAQ;gBACR,IAAI;gBACJ,aAAa,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,aAAa,EAAE;aACxC,CAAC,EACH,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,CAC9F,CAAC;QACH,CAAC;KACD,CAAC,CAAC;AACJ,CAAC","sourcesContent":["import { getSessionsDir } from \"../../../../config.ts\";\nimport type { ExtensionAPI } from \"../../types.ts\";\nimport { SessionHudOverlay } from \"./overlay.ts\";\nimport { resolveSessionHudRoot, scanSessionHudEntries } from \"./scanner.ts\";\nimport type { SessionHudEntry } from \"./types.ts\";\n\nexport { resolveSessionHudRoot, scanSessionHudEntries } from \"./scanner.ts\";\nexport { renderTranscript } from \"./transcript.ts\";\n\nexport default function sessionHudExtension(pi: ExtensionAPI): void {\n\tpi.registerCommand(\"sessions\", {\n\t\tdescription: \"Peek at previous session transcripts in a HUD\",\n\t\thandler: async (_args, ctx) => {\n\t\t\tif (!ctx.hasUI) {\n\t\t\t\tctx.ui.notify(\"No UI available\", \"info\");\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlet sessions: readonly SessionHudEntry[];\n\t\t\ttry {\n\t\t\t\tconst root = resolveSessionHudRoot(ctx.sessionManager.getSessionDir(), getSessionsDir());\n\t\t\t\tsessions = await scanSessionHudEntries(root, ctx.sessionManager.getSessionFile());\n\t\t\t} catch (error) {\n\t\t\t\tconst message = error instanceof Error ? error.message : String(error);\n\t\t\t\tctx.ui.notify(`Failed to read sessions: ${message}`, \"error\");\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (sessions.length === 0) {\n\t\t\t\tctx.ui.notify(\"No sessions found\", \"info\");\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tawait ctx.ui.custom<void>(\n\t\t\t\t(tui, _theme, _keybindings, done) =>\n\t\t\t\t\tnew SessionHudOverlay({\n\t\t\t\t\t\tsessions,\n\t\t\t\t\t\tdone,\n\t\t\t\t\t\trequestRender: () => tui.requestRender(),\n\t\t\t\t\t}),\n\t\t\t\t{ overlay: true, overlayOptions: { width: \"94%\", maxHeight: \"90%\", minWidth: 72, margin: 1 } },\n\t\t\t);\n\t\t},\n\t});\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/session-observer/loader.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAErD,wBAAsB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAc1F","sourcesContent":["import { readFile } from \"node:fs/promises\";\nimport type { SessionMessageEntry } from \"../../../session-manager.ts\";\nimport { parseSessionEntries } from \"../../../session-manager.ts\";\nimport type { TranscriptSnapshot } from \"./types.ts\";\n\nexport async function loadTranscriptSnapshot(filePath: string): Promise<TranscriptSnapshot> {\n\tconst content = await readFile(filePath, \"utf-8\");\n\tconst entries = parseSessionEntries(content);\n\tconst messages: SessionMessageEntry[] = [];\n\tlet model: string | undefined;\n\tfor (const entry of entries) {\n\t\tif (entry.type === \"message\") {\n\t\t\tmessages.push(entry);\n\t\t\tif (!model && entry.message.role === \"assistant\") model = entry.message.responseModel ?? entry.message.model;\n\t\t} else if (entry.type === \"model_change\") {\n\t\t\tmodel = `${entry.provider}/${entry.modelId}`;\n\t\t}\n\t}\n\treturn { entries: messages, model };\n}\n"]}
1
+ {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/session-observer/loader.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAErD,wBAAsB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAc1F"}
@@ -1 +1 @@
1
- {"version":3,"file":"loader.js","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/session-observer/loader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAGlE,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,QAAgB,EAA+B;IAC3F,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAClD,MAAM,OAAO,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAC7C,MAAM,QAAQ,GAA0B,EAAE,CAAC;IAC3C,IAAI,KAAyB,CAAC;IAC9B,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC9B,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACrB,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,KAAK,WAAW;gBAAE,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,aAAa,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAC9G,CAAC;aAAM,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;YAC1C,KAAK,GAAG,GAAG,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;QAC9C,CAAC;IACF,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;AAAA,CACpC","sourcesContent":["import { readFile } from \"node:fs/promises\";\nimport type { SessionMessageEntry } from \"../../../session-manager.ts\";\nimport { parseSessionEntries } from \"../../../session-manager.ts\";\nimport type { TranscriptSnapshot } from \"./types.ts\";\n\nexport async function loadTranscriptSnapshot(filePath: string): Promise<TranscriptSnapshot> {\n\tconst content = await readFile(filePath, \"utf-8\");\n\tconst entries = parseSessionEntries(content);\n\tconst messages: SessionMessageEntry[] = [];\n\tlet model: string | undefined;\n\tfor (const entry of entries) {\n\t\tif (entry.type === \"message\") {\n\t\t\tmessages.push(entry);\n\t\t\tif (!model && entry.message.role === \"assistant\") model = entry.message.responseModel ?? entry.message.model;\n\t\t} else if (entry.type === \"model_change\") {\n\t\t\tmodel = `${entry.provider}/${entry.modelId}`;\n\t\t}\n\t}\n\treturn { entries: messages, model };\n}\n"]}
1
+ {"version":3,"file":"loader.js","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/session-observer/loader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAGlE,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,QAAgB;IAC5D,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAClD,MAAM,OAAO,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAC7C,MAAM,QAAQ,GAA0B,EAAE,CAAC;IAC3C,IAAI,KAAyB,CAAC;IAC9B,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC9B,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACrB,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,KAAK,WAAW;gBAAE,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,aAAa,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAC9G,CAAC;aAAM,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;YAC1C,KAAK,GAAG,GAAG,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;QAC9C,CAAC;IACF,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;AACrC,CAAC","sourcesContent":["import { readFile } from \"node:fs/promises\";\nimport type { SessionMessageEntry } from \"../../../session-manager.ts\";\nimport { parseSessionEntries } from \"../../../session-manager.ts\";\nimport type { TranscriptSnapshot } from \"./types.ts\";\n\nexport async function loadTranscriptSnapshot(filePath: string): Promise<TranscriptSnapshot> {\n\tconst content = await readFile(filePath, \"utf-8\");\n\tconst entries = parseSessionEntries(content);\n\tconst messages: SessionMessageEntry[] = [];\n\tlet model: string | undefined;\n\tfor (const entry of entries) {\n\t\tif (entry.type === \"message\") {\n\t\t\tmessages.push(entry);\n\t\t\tif (!model && entry.message.role === \"assistant\") model = entry.message.responseModel ?? entry.message.model;\n\t\t} else if (entry.type === \"model_change\") {\n\t\t\tmodel = `${entry.provider}/${entry.modelId}`;\n\t\t}\n\t}\n\treturn { entries: messages, model };\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"overlay-format.d.ts","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/session-observer/overlay-format.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD,wBAAgB,UAAU,CAAC,OAAO,EAAE,eAAe,GAAG,MAAM,CAE3D;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,eAAe,GAAG,MAAM,CAGhE;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,eAAe,GAAG,MAAM,CAE5D;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAE9D;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAUnD","sourcesContent":["import { TruncatedText } from \"@earendil-works/pi-tui\";\nimport { keyHint, keyText } from \"../../../../modes/interactive/components/keybinding-hints.ts\";\nimport { theme } from \"../../../../modes/interactive/theme/theme.ts\";\nimport { shortenPath } from \"../../../../utils/paths.ts\";\nimport type {} from \"../../../keybindings.ts\";\nimport { compactWhitespace, formatSessionDate } from \"./text.ts\";\nimport type { SessionHudEntry } from \"./types.ts\";\n\nexport function sessionAge(session: SessionHudEntry): string {\n\treturn session.isCurrent ? \"live\" : formatSessionDate(new Date(session.modifiedAt));\n}\n\nexport function describeSession(session: SessionHudEntry): string {\n\tconst cwd = shortenPath(session.cwd) || \"unknown\";\n\treturn `${cwd} · ${sessionAge(session)} · ${session.messageCount} msg`;\n}\n\nexport function pickerLabel(session: SessionHudEntry): string {\n\treturn compactWhitespace(session.lastUserText) || \"(no user prompt)\";\n}\n\nexport function renderLine(text: string, width: number): string {\n\treturn new TruncatedText(text, 0, 0).render(width)[0] ?? \"\";\n}\n\nexport function viewerFooter(scroll: string): string {\n\tconst scrollKeys = `${theme.fg(\"dim\", `${keyText(\"tui.select.up\")}/${keyText(\"tui.select.down\")}`)}${theme.fg(\"muted\", \" scroll\")}`;\n\treturn [\n\t\tscrollKeys,\n\t\tkeyHint(\"tui.select.confirm\", \"expand\"),\n\t\tkeyHint(\"tui.select.cancel\", \"sessions\"),\n\t\tkeyHint(\"app.sessions.observe\", \"close\"),\n\t]\n\t\t.join(theme.fg(\"muted\", \" · \"))\n\t\t.concat(scroll);\n}\n"]}
1
+ {"version":3,"file":"overlay-format.d.ts","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/session-observer/overlay-format.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD,wBAAgB,UAAU,CAAC,OAAO,EAAE,eAAe,GAAG,MAAM,CAE3D;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,eAAe,GAAG,MAAM,CAGhE;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,eAAe,GAAG,MAAM,CAE5D;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAE9D;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAUnD"}
@@ -1 +1 @@
1
- {"version":3,"file":"overlay-format.js","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/session-observer/overlay-format.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,8DAA8D,CAAC;AAChG,OAAO,EAAE,KAAK,EAAE,MAAM,8CAA8C,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAEzD,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAGjE,MAAM,UAAU,UAAU,CAAC,OAAwB,EAAU;IAC5D,OAAO,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,iBAAiB,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;AAAA,CACpF;AAED,MAAM,UAAU,eAAe,CAAC,OAAwB,EAAU;IACjE,MAAM,GAAG,GAAG,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,SAAS,CAAC;IAClD,OAAO,GAAG,GAAG,OAAM,UAAU,CAAC,OAAO,CAAC,OAAM,OAAO,CAAC,YAAY,MAAM,CAAC;AAAA,CACvE;AAED,MAAM,UAAU,WAAW,CAAC,OAAwB,EAAU;IAC7D,OAAO,iBAAiB,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,kBAAkB,CAAC;AAAA,CACrE;AAED,MAAM,UAAU,UAAU,CAAC,IAAY,EAAE,KAAa,EAAU;IAC/D,OAAO,IAAI,aAAa,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AAAA,CAC5D;AAED,MAAM,UAAU,YAAY,CAAC,MAAc,EAAU;IACpD,MAAM,UAAU,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,OAAO,CAAC,eAAe,CAAC,IAAI,OAAO,CAAC,iBAAiB,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,CAAC;IACpI,OAAO;QACN,UAAU;QACV,OAAO,CAAC,oBAAoB,EAAE,QAAQ,CAAC;QACvC,OAAO,CAAC,mBAAmB,EAAE,UAAU,CAAC;QACxC,OAAO,CAAC,sBAAsB,EAAE,OAAO,CAAC;KACxC;SACC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,MAAK,CAAC,CAAC;SAC9B,MAAM,CAAC,MAAM,CAAC,CAAC;AAAA,CACjB","sourcesContent":["import { TruncatedText } from \"@earendil-works/pi-tui\";\nimport { keyHint, keyText } from \"../../../../modes/interactive/components/keybinding-hints.ts\";\nimport { theme } from \"../../../../modes/interactive/theme/theme.ts\";\nimport { shortenPath } from \"../../../../utils/paths.ts\";\nimport type {} from \"../../../keybindings.ts\";\nimport { compactWhitespace, formatSessionDate } from \"./text.ts\";\nimport type { SessionHudEntry } from \"./types.ts\";\n\nexport function sessionAge(session: SessionHudEntry): string {\n\treturn session.isCurrent ? \"live\" : formatSessionDate(new Date(session.modifiedAt));\n}\n\nexport function describeSession(session: SessionHudEntry): string {\n\tconst cwd = shortenPath(session.cwd) || \"unknown\";\n\treturn `${cwd} · ${sessionAge(session)} · ${session.messageCount} msg`;\n}\n\nexport function pickerLabel(session: SessionHudEntry): string {\n\treturn compactWhitespace(session.lastUserText) || \"(no user prompt)\";\n}\n\nexport function renderLine(text: string, width: number): string {\n\treturn new TruncatedText(text, 0, 0).render(width)[0] ?? \"\";\n}\n\nexport function viewerFooter(scroll: string): string {\n\tconst scrollKeys = `${theme.fg(\"dim\", `${keyText(\"tui.select.up\")}/${keyText(\"tui.select.down\")}`)}${theme.fg(\"muted\", \" scroll\")}`;\n\treturn [\n\t\tscrollKeys,\n\t\tkeyHint(\"tui.select.confirm\", \"expand\"),\n\t\tkeyHint(\"tui.select.cancel\", \"sessions\"),\n\t\tkeyHint(\"app.sessions.observe\", \"close\"),\n\t]\n\t\t.join(theme.fg(\"muted\", \" · \"))\n\t\t.concat(scroll);\n}\n"]}
1
+ {"version":3,"file":"overlay-format.js","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/session-observer/overlay-format.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,8DAA8D,CAAC;AAChG,OAAO,EAAE,KAAK,EAAE,MAAM,8CAA8C,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAEzD,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAGjE,MAAM,UAAU,UAAU,CAAC,OAAwB;IAClD,OAAO,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,iBAAiB,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;AACrF,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,OAAwB;IACvD,MAAM,GAAG,GAAG,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,SAAS,CAAC;IAClD,OAAO,GAAG,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,MAAM,OAAO,CAAC,YAAY,MAAM,CAAC;AACxE,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,OAAwB;IACnD,OAAO,iBAAiB,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,kBAAkB,CAAC;AACtE,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,IAAY,EAAE,KAAa;IACrD,OAAO,IAAI,aAAa,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AAC7D,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,MAAc;IAC1C,MAAM,UAAU,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,OAAO,CAAC,eAAe,CAAC,IAAI,OAAO,CAAC,iBAAiB,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,CAAC;IACpI,OAAO;QACN,UAAU;QACV,OAAO,CAAC,oBAAoB,EAAE,QAAQ,CAAC;QACvC,OAAO,CAAC,mBAAmB,EAAE,UAAU,CAAC;QACxC,OAAO,CAAC,sBAAsB,EAAE,OAAO,CAAC;KACxC;SACC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;SAC9B,MAAM,CAAC,MAAM,CAAC,CAAC;AAClB,CAAC","sourcesContent":["import { TruncatedText } from \"@earendil-works/pi-tui\";\nimport { keyHint, keyText } from \"../../../../modes/interactive/components/keybinding-hints.ts\";\nimport { theme } from \"../../../../modes/interactive/theme/theme.ts\";\nimport { shortenPath } from \"../../../../utils/paths.ts\";\nimport type {} from \"../../../keybindings.ts\";\nimport { compactWhitespace, formatSessionDate } from \"./text.ts\";\nimport type { SessionHudEntry } from \"./types.ts\";\n\nexport function sessionAge(session: SessionHudEntry): string {\n\treturn session.isCurrent ? \"live\" : formatSessionDate(new Date(session.modifiedAt));\n}\n\nexport function describeSession(session: SessionHudEntry): string {\n\tconst cwd = shortenPath(session.cwd) || \"unknown\";\n\treturn `${cwd} · ${sessionAge(session)} · ${session.messageCount} msg`;\n}\n\nexport function pickerLabel(session: SessionHudEntry): string {\n\treturn compactWhitespace(session.lastUserText) || \"(no user prompt)\";\n}\n\nexport function renderLine(text: string, width: number): string {\n\treturn new TruncatedText(text, 0, 0).render(width)[0] ?? \"\";\n}\n\nexport function viewerFooter(scroll: string): string {\n\tconst scrollKeys = `${theme.fg(\"dim\", `${keyText(\"tui.select.up\")}/${keyText(\"tui.select.down\")}`)}${theme.fg(\"muted\", \" scroll\")}`;\n\treturn [\n\t\tscrollKeys,\n\t\tkeyHint(\"tui.select.confirm\", \"expand\"),\n\t\tkeyHint(\"tui.select.cancel\", \"sessions\"),\n\t\tkeyHint(\"app.sessions.observe\", \"close\"),\n\t]\n\t\t.join(theme.fg(\"muted\", \" · \"))\n\t\t.concat(scroll);\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"overlay.d.ts","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/session-observer/overlay.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,SAAS,EACT,KAAK,SAAS,EAOd,MAAM,wBAAwB,CAAC;AAUhC,OAAO,KAAK,EAAE,eAAe,EAAwC,MAAM,YAAY,CAAC;AAIxF,KAAK,IAAI,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAUhC,UAAU,wBAAwB;IACjC,QAAQ,CAAC,QAAQ,EAAE,SAAS,eAAe,EAAE,CAAC;IAC9C,QAAQ,CAAC,IAAI,EAAE,MAAM,IAAI,CAAC;IAC1B,QAAQ,CAAC,aAAa,EAAE,MAAM,IAAI,CAAC;CACnC;AAED,qBAAa,iBAAkB,SAAQ,SAAU,YAAW,SAAS;IACpE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA2B;IACnD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAsC;IACtE,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAyD;IACnF,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAyD;IACtF,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAyD;IACtF,OAAO,CAAC,IAAI,CAAyB;IACrC,OAAO,CAAC,IAAI,CAAkB;IAC9B,OAAO,CAAC,eAAe,CAA8B;IACrD,OAAO,CAAC,QAAQ,CAAiC;IACjD,OAAO,CAAC,aAAa,CAAyB;IAC9C,OAAO,CAAC,MAAM,CAAmC;IACjD,OAAO,CAAC,kBAAkB,CAAM;IAChC,OAAO,CAAC,sBAAsB,CAAS;IACvC,OAAO,CAAC,eAAe,CAAqB;IAC5C,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,cAAc,CAAM;IAC5B,OAAO,CAAC,WAAW,CAAqB;IACxC,OAAO,CAAC,QAAQ,CAAS;IAEzB,YAAY,OAAO,EAAE,wBAAwB,EAI5C;IAED,IAAI,OAAO,IAAI,OAAO,CAErB;IAED,IAAI,OAAO,CAAC,KAAK,EAAE,OAAO,EAEzB;IAED,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAM/B;IAEQ,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAGvC;IAED,OAAO,IAAI,IAAI,CAEd;IAED,qBAAqB,IAAI,MAAM,CAE9B;IAED,qBAAqB,IAAI,MAAM,CAE9B;IAED,OAAO,CAAC,iBAAiB;IAOzB,OAAO,CAAC,aAAa;IAgCrB,OAAO,CAAC,YAAY;YAMN,WAAW;IAiBzB,OAAO,CAAC,gBAAgB;IASxB,OAAO,CAAC,iBAAiB;IAkBzB,OAAO,CAAC,YAAY;IA4BpB,OAAO,CAAC,iBAAiB;IAgBzB,OAAO,CAAC,YAAY;IAKpB,OAAO,CAAC,aAAa;IAMrB,OAAO,CAAC,MAAM;IAMd,OAAO,CAAC,cAAc;IAMtB,OAAO,CAAC,gBAAgB;CAQxB","sourcesContent":["import {\n\tContainer,\n\ttype Focusable,\n\tgetKeybindings,\n\ttype SelectItem,\n\tSelectList,\n\tSpacer,\n\tText,\n\tTruncatedText,\n} from \"@earendil-works/pi-tui\";\nimport { DynamicBorder } from \"../../../../modes/interactive/components/dynamic-border.ts\";\nimport { keyHint } from \"../../../../modes/interactive/components/keybinding-hints.ts\";\nimport { getMarkdownTheme, theme } from \"../../../../modes/interactive/theme/theme.ts\";\nimport { shortenPath } from \"../../../../utils/paths.ts\";\nimport type {} from \"../../../keybindings.ts\";\nimport { loadTranscriptSnapshot } from \"./loader.ts\";\nimport { describeSession, pickerLabel, renderLine, sessionAge, viewerFooter } from \"./overlay-format.ts\";\nimport { sanitizeLine } from \"./text.ts\";\nimport { renderTranscript } from \"./transcript.ts\";\nimport type { SessionHudEntry, TranscriptSnapshot, ViewerEntryRange } from \"./types.ts\";\n\nconst MAX_VISIBLE_SESSIONS = 12;\n\ntype Mode = \"picker\" | \"viewer\";\ntype PickerAction = \"tui.select.up\" | \"tui.select.down\" | \"tui.select.confirm\" | \"tui.select.cancel\";\n\nconst PICKER_ACTIONS: readonly PickerAction[] = [\n\t\"tui.select.up\",\n\t\"tui.select.down\",\n\t\"tui.select.confirm\",\n\t\"tui.select.cancel\",\n];\n\ninterface SessionHudOverlayOptions {\n\treadonly sessions: readonly SessionHudEntry[];\n\treadonly done: () => void;\n\treadonly requestRender: () => void;\n}\n\nexport class SessionHudOverlay extends Container implements Focusable {\n\tprivate readonly options: SessionHudOverlayOptions;\n\tprivate readonly sessionsByValue = new Map<string, SessionHudEntry>();\n\tprivate readonly topBorder = new DynamicBorder((text) => theme.fg(\"accent\", text));\n\tprivate readonly middleBorder = new DynamicBorder((text) => theme.fg(\"accent\", text));\n\tprivate readonly bottomBorder = new DynamicBorder((text) => theme.fg(\"accent\", text));\n\tprivate list: SelectList | undefined;\n\tprivate mode: Mode = \"picker\";\n\tprivate selectedSession: SessionHudEntry | undefined;\n\tprivate snapshot: TranscriptSnapshot | undefined;\n\tprivate renderedLines: readonly string[] = [];\n\tprivate ranges: readonly ViewerEntryRange[] = [];\n\tprivate selectedEntryIndex = -1;\n\tprivate shouldSelectLastOnLoad = false;\n\tprivate expandedEntries = new Set<number>();\n\tprivate scrollOffset = 0;\n\tprivate viewportHeight = 12;\n\tprivate loadingText: string | undefined;\n\tprivate _focused = false;\n\n\tconstructor(options: SessionHudOverlayOptions) {\n\t\tsuper();\n\t\tthis.options = options;\n\t\tthis.rebuildPicker();\n\t}\n\n\tget focused(): boolean {\n\t\treturn this._focused;\n\t}\n\n\tset focused(value: boolean) {\n\t\tthis._focused = value;\n\t}\n\n\thandleInput(input: string): void {\n\t\tif (this.mode === \"picker\") {\n\t\t\tthis.handlePickerInput(input);\n\t\t\treturn;\n\t\t}\n\t\tthis.handleViewerInput(input);\n\t}\n\n\toverride render(width: number): string[] {\n\t\tif (this.mode === \"picker\") return super.render(width);\n\t\treturn this.renderViewer(width);\n\t}\n\n\tgetMode(): Mode {\n\t\treturn this.mode;\n\t}\n\n\tgetSelectedEntryIndex(): number {\n\t\treturn this.selectedEntryIndex;\n\t}\n\n\tgetExpandedEntryCount(): number {\n\t\treturn this.expandedEntries.size;\n\t}\n\n\tprivate handlePickerInput(input: string): void {\n\t\tconst keybindings = getKeybindings();\n\t\tif (PICKER_ACTIONS.some((action) => keybindings.matches(input, action))) {\n\t\t\tthis.list?.handleInput(input);\n\t\t}\n\t}\n\n\tprivate rebuildPicker(): void {\n\t\tthis.sessionsByValue.clear();\n\t\tconst items = this.options.sessions.map((session, index) => this.toPickerItem(session, index));\n\t\tconst list = new SelectList(items, Math.min(MAX_VISIBLE_SESSIONS, Math.max(1, items.length)), {\n\t\t\tselectedPrefix: (text) => theme.fg(\"accent\", text),\n\t\t\tselectedText: (text) => text,\n\t\t\tdescription: (text) => theme.fg(\"muted\", text),\n\t\t\tscrollInfo: (text) => theme.fg(\"dim\", text),\n\t\t\tnoMatch: (text) => theme.fg(\"warning\", text.replace(\"commands\", \"sessions\")),\n\t\t});\n\t\tlist.onSelect = (item) => {\n\t\t\tconst session = this.sessionsByValue.get(item.value);\n\t\t\tif (session) void this.openSession(session);\n\t\t};\n\t\tlist.onCancel = () => this.options.done();\n\t\tthis.list = list;\n\t\tthis.clear();\n\t\tthis.addChild(\n\t\t\tnew Text(\n\t\t\t\t`${theme.bold(theme.fg(\"accent\", \" Sessions\"))}${theme.fg(\"dim\", ` ${this.options.sessions.length} sessions`)}`,\n\t\t\t\t0,\n\t\t\t\t0,\n\t\t\t),\n\t\t);\n\t\tthis.addChild(new Spacer(1));\n\t\tthis.addChild(list);\n\t\tthis.addChild(new Spacer(1));\n\t\tthis.addChild(\n\t\t\tnew TruncatedText(`${keyHint(\"tui.select.confirm\", \"view\")} ${keyHint(\"tui.select.cancel\", \"close\")}`, 0, 0),\n\t\t);\n\t}\n\n\tprivate toPickerItem(session: SessionHudEntry, index: number): SelectItem {\n\t\tconst value = String(index);\n\t\tthis.sessionsByValue.set(value, session);\n\t\treturn { value, label: pickerLabel(session), description: describeSession(session) };\n\t}\n\n\tprivate async openSession(session: SessionHudEntry): Promise<void> {\n\t\tthis.mode = \"viewer\";\n\t\tthis.selectedSession = session;\n\t\tthis.snapshot = undefined;\n\t\tthis.loadingText = \"Loading session transcript...\";\n\t\tthis.resetViewerState();\n\t\tthis.options.requestRender();\n\t\ttry {\n\t\t\tthis.snapshot = await loadTranscriptSnapshot(session.path);\n\t\t\tthis.loadingText = undefined;\n\t\t} catch (error) {\n\t\t\tthis.loadingText = `Failed to read session: ${error instanceof Error ? error.message : String(error)}`;\n\t\t}\n\t\tthis.rebuildTranscript(process.stdout.columns || 80);\n\t\tthis.options.requestRender();\n\t}\n\n\tprivate resetViewerState(): void {\n\t\tthis.expandedEntries = new Set<number>();\n\t\tthis.scrollOffset = 0;\n\t\tthis.selectedEntryIndex = -1;\n\t\tthis.shouldSelectLastOnLoad = true;\n\t\tthis.renderedLines = [];\n\t\tthis.ranges = [];\n\t}\n\n\tprivate rebuildTranscript(width: number): void {\n\t\tif (!this.snapshot) return;\n\t\tconst rendered = renderTranscript(this.snapshot.entries, {\n\t\t\twidth,\n\t\t\tselectedIndex: this.selectedEntryIndex,\n\t\t\texpandedEntries: this.expandedEntries,\n\t\t\tmarkdownTheme: getMarkdownTheme(),\n\t\t});\n\t\tthis.renderedLines = rendered.lines;\n\t\tthis.ranges = rendered.ranges;\n\t\tif (this.ranges.length > 0 && this.shouldSelectLastOnLoad) {\n\t\t\tthis.shouldSelectLastOnLoad = false;\n\t\t\tthis.selectedEntryIndex = this.ranges.length - 1;\n\t\t\tthis.rebuildTranscript(width);\n\t\t}\n\t\tthis.scrollToSelected();\n\t}\n\n\tprivate renderViewer(width: number): string[] {\n\t\tthis.viewportHeight = Math.max(5, (process.stdout.rows || 32) - 8);\n\t\tthis.rebuildTranscript(width);\n\t\tconst session = this.selectedSession;\n\t\tconst title = session ? `Sessions > ${shortenPath(session.cwd) || \"unknown\"} · ${session.shortId}` : \"Sessions\";\n\t\tconst status = session\n\t\t\t? `${session.messageCount} messages · ${sessionAge(session)}${this.snapshot?.model ? ` · ${this.snapshot.model}` : \"\"}`\n\t\t\t: \"\";\n\t\tconst maxScroll = Math.max(0, this.renderedLines.length - this.viewportHeight);\n\t\tthis.scrollOffset = Math.max(0, Math.min(this.scrollOffset, maxScroll));\n\t\tconst content = this.loadingText ? [theme.fg(\"dim\", this.loadingText)] : this.renderedLines;\n\t\tconst visible = content.slice(this.scrollOffset, this.scrollOffset + this.viewportHeight);\n\t\tconst lines: string[] = [];\n\t\tlines.push(...this.topBorder.render(width));\n\t\tlines.push(renderLine(` ${theme.bold(theme.fg(\"accent\", title))}`, width));\n\t\tif (status) lines.push(renderLine(` ${theme.fg(\"dim\", status)}`, width));\n\t\tlines.push(...this.middleBorder.render(width));\n\t\tfor (const line of visible) lines.push(` ${sanitizeLine(line, width - 2)}`);\n\t\tfor (let index = visible.length; index < this.viewportHeight; index += 1) lines.push(\"\");\n\t\tconst scroll =\n\t\t\tcontent.length > this.viewportHeight\n\t\t\t\t? ` [${this.scrollOffset + 1}-${Math.min(this.scrollOffset + this.viewportHeight, content.length)}/${content.length}]`\n\t\t\t\t: \"\";\n\t\tlines.push(renderLine(` ${viewerFooter(scroll)}`, width));\n\t\tlines.push(...this.bottomBorder.render(width));\n\t\treturn lines;\n\t}\n\n\tprivate handleViewerInput(input: string): void {\n\t\tconst keybindings = getKeybindings();\n\t\tif (keybindings.matches(input, \"app.sessions.observe\")) {\n\t\t\tthis.options.done();\n\t\t\treturn;\n\t\t} else if (keybindings.matches(input, \"tui.select.cancel\")) this.backToPicker();\n\t\telse if (input === \"j\" || keybindings.matches(input, \"tui.select.down\")) this.moveSelection(1);\n\t\telse if (input === \"k\" || keybindings.matches(input, \"tui.select.up\")) this.moveSelection(-1);\n\t\telse if (keybindings.matches(input, \"tui.select.pageDown\")) this.moveSelection(5);\n\t\telse if (keybindings.matches(input, \"tui.select.pageUp\")) this.moveSelection(-5);\n\t\telse if (input === \"g\") this.jumpTo(0);\n\t\telse if (input === \"G\") this.jumpTo(this.ranges.length - 1);\n\t\telse if (keybindings.matches(input, \"tui.select.confirm\")) this.toggleExpanded();\n\t\tthis.options.requestRender();\n\t}\n\n\tprivate backToPicker(): void {\n\t\tthis.mode = \"picker\";\n\t\tthis.rebuildPicker();\n\t}\n\n\tprivate moveSelection(delta: number): void {\n\t\tif (this.ranges.length === 0) return;\n\t\tthis.selectedEntryIndex = Math.max(0, Math.min(this.selectedEntryIndex + delta, this.ranges.length - 1));\n\t\tthis.scrollToSelected();\n\t}\n\n\tprivate jumpTo(index: number): void {\n\t\tif (this.ranges.length === 0) return;\n\t\tthis.selectedEntryIndex = Math.max(0, Math.min(index, this.ranges.length - 1));\n\t\tthis.scrollToSelected();\n\t}\n\n\tprivate toggleExpanded(): void {\n\t\tif (this.ranges.length === 0) return;\n\t\tif (this.expandedEntries.has(this.selectedEntryIndex)) this.expandedEntries.delete(this.selectedEntryIndex);\n\t\telse this.expandedEntries.add(this.selectedEntryIndex);\n\t}\n\n\tprivate scrollToSelected(): void {\n\t\tconst selected = this.ranges[this.selectedEntryIndex];\n\t\tif (!selected) return;\n\t\tconst bottom = selected.lineStart + selected.lineCount;\n\t\tif (selected.lineStart < this.scrollOffset) this.scrollOffset = Math.max(0, selected.lineStart - 1);\n\t\tif (bottom > this.scrollOffset + this.viewportHeight)\n\t\t\tthis.scrollOffset = Math.max(0, bottom - this.viewportHeight + 1);\n\t}\n}\n"]}
1
+ {"version":3,"file":"overlay.d.ts","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/session-observer/overlay.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,SAAS,EACT,KAAK,SAAS,EAOd,MAAM,wBAAwB,CAAC;AAUhC,OAAO,KAAK,EAAE,eAAe,EAAwC,MAAM,YAAY,CAAC;AAIxF,KAAK,IAAI,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAUhC,UAAU,wBAAwB;IACjC,QAAQ,CAAC,QAAQ,EAAE,SAAS,eAAe,EAAE,CAAC;IAC9C,QAAQ,CAAC,IAAI,EAAE,MAAM,IAAI,CAAC;IAC1B,QAAQ,CAAC,aAAa,EAAE,MAAM,IAAI,CAAC;CACnC;AAED,qBAAa,iBAAkB,SAAQ,SAAU,YAAW,SAAS;IACpE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA2B;IACnD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAsC;IACtE,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAyD;IACnF,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAyD;IACtF,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAyD;IACtF,OAAO,CAAC,IAAI,CAAyB;IACrC,OAAO,CAAC,IAAI,CAAkB;IAC9B,OAAO,CAAC,eAAe,CAA8B;IACrD,OAAO,CAAC,QAAQ,CAAiC;IACjD,OAAO,CAAC,aAAa,CAAyB;IAC9C,OAAO,CAAC,MAAM,CAAmC;IACjD,OAAO,CAAC,kBAAkB,CAAM;IAChC,OAAO,CAAC,sBAAsB,CAAS;IACvC,OAAO,CAAC,eAAe,CAAqB;IAC5C,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,cAAc,CAAM;IAC5B,OAAO,CAAC,WAAW,CAAqB;IACxC,OAAO,CAAC,QAAQ,CAAS;IAEzB,YAAY,OAAO,EAAE,wBAAwB,EAI5C;IAED,IAAI,OAAO,IAAI,OAAO,CAErB;IAED,IAAI,OAAO,CAAC,KAAK,EAAE,OAAO,EAEzB;IAED,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAM/B;IAEQ,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAGvC;IAED,OAAO,IAAI,IAAI,CAEd;IAED,qBAAqB,IAAI,MAAM,CAE9B;IAED,qBAAqB,IAAI,MAAM,CAE9B;IAED,OAAO,CAAC,iBAAiB;IAOzB,OAAO,CAAC,aAAa;IAgCrB,OAAO,CAAC,YAAY;YAMN,WAAW;IAiBzB,OAAO,CAAC,gBAAgB;IASxB,OAAO,CAAC,iBAAiB;IAkBzB,OAAO,CAAC,YAAY;IA4BpB,OAAO,CAAC,iBAAiB;IAgBzB,OAAO,CAAC,YAAY;IAKpB,OAAO,CAAC,aAAa;IAMrB,OAAO,CAAC,MAAM;IAMd,OAAO,CAAC,cAAc;IAMtB,OAAO,CAAC,gBAAgB;CAQxB"}
@@ -15,26 +15,21 @@ const PICKER_ACTIONS = [
15
15
  "tui.select.cancel",
16
16
  ];
17
17
  export class SessionHudOverlay extends Container {
18
- options;
19
- sessionsByValue = new Map();
20
- topBorder = new DynamicBorder((text) => theme.fg("accent", text));
21
- middleBorder = new DynamicBorder((text) => theme.fg("accent", text));
22
- bottomBorder = new DynamicBorder((text) => theme.fg("accent", text));
23
- list;
24
- mode = "picker";
25
- selectedSession;
26
- snapshot;
27
- renderedLines = [];
28
- ranges = [];
29
- selectedEntryIndex = -1;
30
- shouldSelectLastOnLoad = false;
31
- expandedEntries = new Set();
32
- scrollOffset = 0;
33
- viewportHeight = 12;
34
- loadingText;
35
- _focused = false;
36
18
  constructor(options) {
37
19
  super();
20
+ this.sessionsByValue = new Map();
21
+ this.topBorder = new DynamicBorder((text) => theme.fg("accent", text));
22
+ this.middleBorder = new DynamicBorder((text) => theme.fg("accent", text));
23
+ this.bottomBorder = new DynamicBorder((text) => theme.fg("accent", text));
24
+ this.mode = "picker";
25
+ this.renderedLines = [];
26
+ this.ranges = [];
27
+ this.selectedEntryIndex = -1;
28
+ this.shouldSelectLastOnLoad = false;
29
+ this.expandedEntries = new Set();
30
+ this.scrollOffset = 0;
31
+ this.viewportHeight = 12;
32
+ this._focused = false;
38
33
  this.options = options;
39
34
  this.rebuildPicker();
40
35
  }