@bastani/atomic 0.9.21-alpha.1 → 0.9.21

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 (516) hide show
  1. package/CHANGELOG.md +56 -0
  2. package/dist/builtin/intercom/package.json +1 -1
  3. package/dist/builtin/mcp/package.json +1 -1
  4. package/dist/builtin/subagents/CHANGELOG.md +22 -0
  5. package/dist/builtin/subagents/package.json +1 -1
  6. package/dist/builtin/subagents/src/extension/index.bundle.mjs +292 -60
  7. package/dist/builtin/web-access/package.json +1 -1
  8. package/dist/builtin/workflows/CHANGELOG.md +23 -0
  9. package/dist/builtin/workflows/builtin/adversarial-verification.js +3 -3
  10. package/dist/builtin/workflows/builtin/{chunk-cw86srkf.js → chunk-632fxeb8.js} +1 -1
  11. package/dist/builtin/workflows/builtin/{chunk-w18kbz63.js → chunk-94f8zfz1.js} +1 -1
  12. package/dist/builtin/workflows/builtin/{chunk-kspvwc24.js → chunk-9cm2ckq2.js} +1 -1
  13. package/dist/builtin/workflows/builtin/{chunk-jaj27rqc.js → chunk-a1ar035d.js} +1 -1
  14. package/dist/builtin/workflows/builtin/{chunk-wh19f5ee.js → chunk-d3xhj946.js} +5 -4
  15. package/dist/builtin/workflows/builtin/{chunk-crw7q5g1.js → chunk-gyjck9z8.js} +1 -1
  16. package/dist/builtin/workflows/builtin/{chunk-maqv731g.js → chunk-hj8mh07f.js} +10 -6
  17. package/dist/builtin/workflows/builtin/{chunk-0nrgfbag.js → chunk-kb7s3gx2.js} +1 -1
  18. package/dist/builtin/workflows/builtin/{chunk-73c5tayt.js → chunk-kgn5wz1c.js} +19 -1
  19. package/dist/builtin/workflows/builtin/{chunk-2hak3b7g.js → chunk-nkj4qhj6.js} +1 -1
  20. package/dist/builtin/workflows/builtin/{chunk-bzdvx2xr.js → chunk-r97ndfvt.js} +1 -1
  21. package/dist/builtin/workflows/builtin/{chunk-vkmpdat4.js → chunk-wf876n16.js} +1 -1
  22. package/dist/builtin/workflows/builtin/classify-and-act.js +3 -3
  23. package/dist/builtin/workflows/builtin/fan-out-and-synthesize.js +3 -3
  24. package/dist/builtin/workflows/builtin/generate-and-filter.js +3 -3
  25. package/dist/builtin/workflows/builtin/goal.js +4 -4
  26. package/dist/builtin/workflows/builtin/index.js +12 -12
  27. package/dist/builtin/workflows/builtin/loop-until-done.js +3 -3
  28. package/dist/builtin/workflows/builtin/open-claude-design.js +3 -3
  29. package/dist/builtin/workflows/builtin/ralph.js +4 -4
  30. package/dist/builtin/workflows/builtin/steering-context.js +1 -1
  31. package/dist/builtin/workflows/builtin/tournament.js +3 -3
  32. package/dist/builtin/workflows/package.json +1 -1
  33. package/dist/builtin/workflows/src/extension/index.bundle.mjs +40 -11
  34. package/dist/builtin/workflows/src/index.js +9 -3
  35. package/dist/builtin/workflows/src/shared/authoring-contract-stage.d.ts +6 -1
  36. package/dist/cli/auth-command.js +5 -0
  37. package/dist/cli/auth-command.js.map +1 -1
  38. package/dist/cli/credential-print.js +2 -0
  39. package/dist/cli/credential-print.js.map +1 -1
  40. package/dist/cli/experimental/command.js +5 -2
  41. package/dist/cli/experimental/command.js.map +1 -1
  42. package/dist/cli.js +1 -1
  43. package/dist/cli.js.map +1 -1
  44. package/dist/config.d.ts +4 -4
  45. package/dist/config.js +4 -4
  46. package/dist/config.js.map +1 -1
  47. package/dist/core/agent-session-extension-bindings.d.ts.map +1 -1
  48. package/dist/core/agent-session-extension-bindings.js +9 -4
  49. package/dist/core/agent-session-extension-bindings.js.map +1 -1
  50. package/dist/core/agent-session-methods.d.ts +4 -4
  51. package/dist/core/agent-session-methods.d.ts.map +1 -1
  52. package/dist/core/agent-session-methods.js.map +1 -1
  53. package/dist/core/agent-session-prompt.d.ts +4 -4
  54. package/dist/core/agent-session-prompt.d.ts.map +1 -1
  55. package/dist/core/agent-session-prompt.js +38 -15
  56. package/dist/core/agent-session-prompt.js.map +1 -1
  57. package/dist/core/agent-session-runtime.d.ts.map +1 -1
  58. package/dist/core/agent-session-runtime.js +14 -9
  59. package/dist/core/agent-session-runtime.js.map +1 -1
  60. package/dist/core/agent-session-types.d.ts +4 -1
  61. package/dist/core/agent-session-types.d.ts.map +1 -1
  62. package/dist/core/agent-session-types.js.map +1 -1
  63. package/dist/core/agent-session.d.ts +1 -1
  64. package/dist/core/agent-session.d.ts.map +1 -1
  65. package/dist/core/agent-session.js +140 -95
  66. package/dist/core/agent-session.js.map +1 -1
  67. package/dist/core/auth-storage-backends.js +2 -3
  68. package/dist/core/auth-storage-backends.js.map +1 -1
  69. package/dist/core/auth-storage.js +4 -1
  70. package/dist/core/auth-storage.js.map +1 -1
  71. package/dist/core/builtin-resource-loader.js +9 -0
  72. package/dist/core/builtin-resource-loader.js.map +1 -1
  73. package/dist/core/cache-warmer.js +8 -1
  74. package/dist/core/cache-warmer.js.map +1 -1
  75. package/dist/core/compaction/range-planner.js +6 -0
  76. package/dist/core/compaction/range-planner.js.map +1 -1
  77. package/dist/core/execution-model-router.d.ts +13 -3
  78. package/dist/core/execution-model-router.d.ts.map +1 -1
  79. package/dist/core/execution-model-router.js +227 -131
  80. package/dist/core/execution-model-router.js.map +1 -1
  81. package/dist/core/export-html/template-js/entries-navigation.js +16 -6
  82. package/dist/core/export-html/template-js/initialization.js +34 -11
  83. package/dist/core/export-html/template.css +10 -0
  84. package/dist/core/export-html/template.js +50 -17
  85. package/dist/core/extensions/context-types.d.ts +2 -0
  86. package/dist/core/extensions/context-types.d.ts.map +1 -1
  87. package/dist/core/extensions/context-types.js.map +1 -1
  88. package/dist/core/extensions/host-input.js +8 -4
  89. package/dist/core/extensions/host-input.js.map +1 -1
  90. package/dist/core/extensions/reactive-widget.js +1 -0
  91. package/dist/core/extensions/reactive-widget.js.map +1 -1
  92. package/dist/core/extensions/runner-context.d.ts +1 -0
  93. package/dist/core/extensions/runner-context.d.ts.map +1 -1
  94. package/dist/core/extensions/runner-context.js +4 -0
  95. package/dist/core/extensions/runner-context.js.map +1 -1
  96. package/dist/core/extensions/runner.d.ts +1 -0
  97. package/dist/core/extensions/runner.d.ts.map +1 -1
  98. package/dist/core/extensions/runner.js +48 -30
  99. package/dist/core/extensions/runner.js.map +1 -1
  100. package/dist/core/extensions/runtime-types.d.ts +1 -0
  101. package/dist/core/extensions/runtime-types.d.ts.map +1 -1
  102. package/dist/core/extensions/runtime-types.js.map +1 -1
  103. package/dist/core/extensions/workflow-activity-hub.js +9 -7
  104. package/dist/core/extensions/workflow-activity-hub.js.map +1 -1
  105. package/dist/core/footer-data-provider.js +24 -23
  106. package/dist/core/footer-data-provider.js.map +1 -1
  107. package/dist/core/keybindings.js +1 -0
  108. package/dist/core/keybindings.js.map +1 -1
  109. package/dist/core/mandatory-resource-loader.js +4 -1
  110. package/dist/core/mandatory-resource-loader.js.map +1 -1
  111. package/dist/core/model-config.js +2 -0
  112. package/dist/core/model-config.js.map +1 -1
  113. package/dist/core/model-registry.js +1 -0
  114. package/dist/core/model-registry.js.map +1 -1
  115. package/dist/core/model-resolver-defaults.js +1 -1
  116. package/dist/core/model-resolver-defaults.js.map +1 -1
  117. package/dist/core/{model-routing-task.d.ts → model-routing-bytes.d.ts} +1 -4
  118. package/dist/core/model-routing-bytes.d.ts.map +1 -0
  119. package/dist/core/model-routing-bytes.js +33 -0
  120. package/dist/core/model-routing-bytes.js.map +1 -0
  121. package/dist/core/model-routing-candidates.d.ts +42 -0
  122. package/dist/core/model-routing-candidates.d.ts.map +1 -0
  123. package/dist/core/model-routing-candidates.js +309 -0
  124. package/dist/core/model-routing-candidates.js.map +1 -0
  125. package/dist/core/model-routing-constraints.d.ts +4 -0
  126. package/dist/core/model-routing-constraints.d.ts.map +1 -1
  127. package/dist/core/model-routing-constraints.js +13 -1
  128. package/dist/core/model-routing-constraints.js.map +1 -1
  129. package/dist/core/model-routing-debug.d.ts +9 -0
  130. package/dist/core/model-routing-debug.d.ts.map +1 -0
  131. package/dist/core/model-routing-debug.js +14 -0
  132. package/dist/core/model-routing-debug.js.map +1 -0
  133. package/dist/core/model-routing-evals.d.ts +50 -0
  134. package/dist/core/model-routing-evals.d.ts.map +1 -0
  135. package/dist/core/model-routing-evals.js +190 -0
  136. package/dist/core/model-routing-evals.js.map +1 -0
  137. package/dist/core/model-routing-needs.d.ts +75 -0
  138. package/dist/core/model-routing-needs.d.ts.map +1 -0
  139. package/dist/core/model-routing-needs.js +176 -0
  140. package/dist/core/model-routing-needs.js.map +1 -0
  141. package/dist/core/model-runtime-streaming.js +3 -0
  142. package/dist/core/model-runtime-streaming.js.map +1 -1
  143. package/dist/core/model-runtime.js +26 -14
  144. package/dist/core/model-runtime.js.map +1 -1
  145. package/dist/core/models-store.js +2 -3
  146. package/dist/core/models-store.js.map +1 -1
  147. package/dist/core/output-guard.js +1 -0
  148. package/dist/core/output-guard.js.map +1 -1
  149. package/dist/core/package-manager-paths.d.ts +2 -1
  150. package/dist/core/package-manager-paths.d.ts.map +1 -1
  151. package/dist/core/package-manager-paths.js +4 -3
  152. package/dist/core/package-manager-paths.js.map +1 -1
  153. package/dist/core/package-manager.js +1 -0
  154. package/dist/core/package-manager.js.map +1 -1
  155. package/dist/core/resource-loader-assets.d.ts.map +1 -1
  156. package/dist/core/resource-loader-assets.js +9 -7
  157. package/dist/core/resource-loader-assets.js.map +1 -1
  158. package/dist/core/resource-loader-core.js +49 -0
  159. package/dist/core/resource-loader-core.js.map +1 -1
  160. package/dist/core/runtime-credentials.js +2 -1
  161. package/dist/core/runtime-credentials.js.map +1 -1
  162. package/dist/core/session-cwd.js +1 -0
  163. package/dist/core/session-cwd.js.map +1 -1
  164. package/dist/core/session-manager-archive.d.ts.map +1 -1
  165. package/dist/core/session-manager-archive.js +4 -2
  166. package/dist/core/session-manager-archive.js.map +1 -1
  167. package/dist/core/session-manager-core.js +11 -7
  168. package/dist/core/session-manager-core.js.map +1 -1
  169. package/dist/core/session-manager-storage.d.ts +10 -4
  170. package/dist/core/session-manager-storage.d.ts.map +1 -1
  171. package/dist/core/session-manager-storage.js +12 -6
  172. package/dist/core/session-manager-storage.js.map +1 -1
  173. package/dist/core/settings-manager-basic-accessors.d.ts +2 -1
  174. package/dist/core/settings-manager-basic-accessors.d.ts.map +1 -1
  175. package/dist/core/settings-manager-basic-accessors.js +21 -0
  176. package/dist/core/settings-manager-basic-accessors.js.map +1 -1
  177. package/dist/core/settings-manager-core.js +13 -7
  178. package/dist/core/settings-manager-core.js.map +1 -1
  179. package/dist/core/settings-manager.d.ts +1 -1
  180. package/dist/core/settings-manager.d.ts.map +1 -1
  181. package/dist/core/settings-manager.js.map +1 -1
  182. package/dist/core/settings-storage.js +6 -0
  183. package/dist/core/settings-storage.js.map +1 -1
  184. package/dist/core/settings-types.d.ts +8 -0
  185. package/dist/core/settings-types.d.ts.map +1 -1
  186. package/dist/core/settings-types.js.map +1 -1
  187. package/dist/core/structured-output/index.d.ts.map +1 -1
  188. package/dist/core/structured-output/index.js +4 -1
  189. package/dist/core/structured-output/index.js.map +1 -1
  190. package/dist/core/structured-output/invalid-output.js +1 -0
  191. package/dist/core/structured-output/invalid-output.js.map +1 -1
  192. package/dist/core/tasks/agent-adapter.js +5 -3
  193. package/dist/core/tasks/agent-adapter.js.map +1 -1
  194. package/dist/core/tasks/child-command-owner.js +3 -7
  195. package/dist/core/tasks/child-command-owner.js.map +1 -1
  196. package/dist/core/tasks/completion.js +5 -1
  197. package/dist/core/tasks/completion.js.map +1 -1
  198. package/dist/core/tasks/owner-store.js +12 -8
  199. package/dist/core/tasks/owner-store.js.map +1 -1
  200. package/dist/core/tasks/supervisor.js +14 -35
  201. package/dist/core/tasks/supervisor.js.map +1 -1
  202. package/dist/core/tools/ask-user-question/state/build-questionnaire.js +13 -4
  203. package/dist/core/tools/ask-user-question/state/build-questionnaire.js.map +1 -1
  204. package/dist/core/tools/ask-user-question/state/questionnaire-session.js +11 -1
  205. package/dist/core/tools/ask-user-question/state/questionnaire-session.js.map +1 -1
  206. package/dist/core/tools/ask-user-question/view/components/chat-row-view.js +1 -0
  207. package/dist/core/tools/ask-user-question/view/components/chat-row-view.js.map +1 -1
  208. package/dist/core/tools/ask-user-question/view/components/multi-select-view.js +1 -0
  209. package/dist/core/tools/ask-user-question/view/components/multi-select-view.js.map +1 -1
  210. package/dist/core/tools/ask-user-question/view/components/option-list-view.js +1 -0
  211. package/dist/core/tools/ask-user-question/view/components/option-list-view.js.map +1 -1
  212. package/dist/core/tools/ask-user-question/view/components/preview/markdown-content-cache.js +5 -0
  213. package/dist/core/tools/ask-user-question/view/components/preview/markdown-content-cache.js.map +1 -1
  214. package/dist/core/tools/ask-user-question/view/components/preview/preview-block-renderer.js +2 -0
  215. package/dist/core/tools/ask-user-question/view/components/preview/preview-block-renderer.js.map +1 -1
  216. package/dist/core/tools/ask-user-question/view/components/preview/preview-pane.js +13 -8
  217. package/dist/core/tools/ask-user-question/view/components/preview/preview-pane.js.map +1 -1
  218. package/dist/core/tools/ask-user-question/view/components/submit-picker.js +1 -0
  219. package/dist/core/tools/ask-user-question/view/components/submit-picker.js.map +1 -1
  220. package/dist/core/tools/ask-user-question/view/components/tab-bar.js +1 -0
  221. package/dist/core/tools/ask-user-question/view/components/tab-bar.js.map +1 -1
  222. package/dist/core/tools/ask-user-question/view/components/wrapping-select.js +30 -24
  223. package/dist/core/tools/ask-user-question/view/components/wrapping-select.js.map +1 -1
  224. package/dist/core/tools/ask-user-question/view/dialog-builder.js +5 -0
  225. package/dist/core/tools/ask-user-question/view/dialog-builder.js.map +1 -1
  226. package/dist/core/tools/ask-user-question/view/props-adapter.js +8 -0
  227. package/dist/core/tools/ask-user-question/view/props-adapter.js.map +1 -1
  228. package/dist/core/tools/ask-user-question/view/tab-content-strategy.js +4 -4
  229. package/dist/core/tools/ask-user-question/view/tab-content-strategy.js.map +1 -1
  230. package/dist/core/tools/bash.js +5 -8
  231. package/dist/core/tools/bash.js.map +1 -1
  232. package/dist/core/tools/edit-batch.js +4 -0
  233. package/dist/core/tools/edit-batch.js.map +1 -1
  234. package/dist/core/tools/edit.js +2 -0
  235. package/dist/core/tools/edit.js.map +1 -1
  236. package/dist/core/tools/file-mutation-coordinator.js +9 -0
  237. package/dist/core/tools/file-mutation-coordinator.js.map +1 -1
  238. package/dist/core/tools/find.js +1 -1
  239. package/dist/core/tools/find.js.map +1 -1
  240. package/dist/core/tools/hashline-engine/fs.js +1 -1
  241. package/dist/core/tools/hashline-engine/fs.js.map +1 -1
  242. package/dist/core/tools/hashline-engine/input.js +4 -0
  243. package/dist/core/tools/hashline-engine/input.js.map +1 -1
  244. package/dist/core/tools/hashline-engine/mismatch.js +6 -0
  245. package/dist/core/tools/hashline-engine/mismatch.js.map +1 -1
  246. package/dist/core/tools/hashline-engine/patcher.js +13 -0
  247. package/dist/core/tools/hashline-engine/patcher.js.map +1 -1
  248. package/dist/core/tools/hashline-engine/recovery.js +1 -0
  249. package/dist/core/tools/hashline-engine/recovery.js.map +1 -1
  250. package/dist/core/tools/output-accumulator.js +20 -13
  251. package/dist/core/tools/output-accumulator.js.map +1 -1
  252. package/dist/core/tools/persisted-output-file.js +9 -3
  253. package/dist/core/tools/persisted-output-file.js.map +1 -1
  254. package/dist/core/tools/resource-selectors.js +1 -0
  255. package/dist/core/tools/resource-selectors.js.map +1 -1
  256. package/dist/core/tools/write.js +1 -0
  257. package/dist/core/tools/write.js.map +1 -1
  258. package/dist/core/trust-manager.js +1 -0
  259. package/dist/core/trust-manager.js.map +1 -1
  260. package/dist/core/workflow-stage-admission.js +17 -10
  261. package/dist/core/workflow-stage-admission.js.map +1 -1
  262. package/dist/extensions/llama/client.js +2 -0
  263. package/dist/extensions/llama/client.js.map +1 -1
  264. package/dist/extensions/llama/huggingface-ui.js +17 -9
  265. package/dist/extensions/llama/huggingface-ui.js.map +1 -1
  266. package/dist/extensions/llama/huggingface.js +2 -0
  267. package/dist/extensions/llama/huggingface.js.map +1 -1
  268. package/dist/extensions/llama/ui.js +11 -3
  269. package/dist/extensions/llama/ui.js.map +1 -1
  270. package/dist/index.d.ts +4 -2
  271. package/dist/index.d.ts.map +1 -1
  272. package/dist/index.js +3 -1
  273. package/dist/index.js.map +1 -1
  274. package/dist/modes/interactive/components/armin.js +10 -6
  275. package/dist/modes/interactive/components/armin.js.map +1 -1
  276. package/dist/modes/interactive/components/assistant-message.js +10 -2
  277. package/dist/modes/interactive/components/assistant-message.js.map +1 -1
  278. package/dist/modes/interactive/components/atomic-working-status.js +10 -2
  279. package/dist/modes/interactive/components/atomic-working-status.js.map +1 -1
  280. package/dist/modes/interactive/components/bash-execution.js +9 -4
  281. package/dist/modes/interactive/components/bash-execution.js.map +1 -1
  282. package/dist/modes/interactive/components/bordered-loader.js +3 -0
  283. package/dist/modes/interactive/components/bordered-loader.js.map +1 -1
  284. package/dist/modes/interactive/components/branch-summary-message.js +4 -1
  285. package/dist/modes/interactive/components/branch-summary-message.js.map +1 -1
  286. package/dist/modes/interactive/components/chat-message-renderer.js +2 -1
  287. package/dist/modes/interactive/components/chat-message-renderer.js.map +1 -1
  288. package/dist/modes/interactive/components/chat-session-host-state.js +63 -31
  289. package/dist/modes/interactive/components/chat-session-host-state.js.map +1 -1
  290. package/dist/modes/interactive/components/chat-session-host.js +8 -1
  291. package/dist/modes/interactive/components/chat-session-host.js.map +1 -1
  292. package/dist/modes/interactive/components/chat-transcript.js +24 -14
  293. package/dist/modes/interactive/components/chat-transcript.js.map +1 -1
  294. package/dist/modes/interactive/components/compaction-boundary-message.js +2 -1
  295. package/dist/modes/interactive/components/compaction-boundary-message.js.map +1 -1
  296. package/dist/modes/interactive/components/config-selector-list.js +15 -6
  297. package/dist/modes/interactive/components/config-selector-list.js.map +1 -1
  298. package/dist/modes/interactive/components/config-selector.js +7 -1
  299. package/dist/modes/interactive/components/config-selector.js.map +1 -1
  300. package/dist/modes/interactive/components/countdown-timer.js +2 -0
  301. package/dist/modes/interactive/components/countdown-timer.js.map +1 -1
  302. package/dist/modes/interactive/components/custom-editor.js +21 -1
  303. package/dist/modes/interactive/components/custom-editor.js.map +1 -1
  304. package/dist/modes/interactive/components/custom-entry.js +4 -1
  305. package/dist/modes/interactive/components/custom-entry.js.map +1 -1
  306. package/dist/modes/interactive/components/custom-message.js +9 -1
  307. package/dist/modes/interactive/components/custom-message.js.map +1 -1
  308. package/dist/modes/interactive/components/daxnuts.js +8 -6
  309. package/dist/modes/interactive/components/daxnuts.js.map +1 -1
  310. package/dist/modes/interactive/components/dynamic-border.js +1 -0
  311. package/dist/modes/interactive/components/dynamic-border.js.map +1 -1
  312. package/dist/modes/interactive/components/extension-editor.js +7 -1
  313. package/dist/modes/interactive/components/extension-editor.js.map +1 -1
  314. package/dist/modes/interactive/components/extension-input.js +8 -2
  315. package/dist/modes/interactive/components/extension-input.js.map +1 -1
  316. package/dist/modes/interactive/components/extension-selector.js +9 -1
  317. package/dist/modes/interactive/components/extension-selector.js.map +1 -1
  318. package/dist/modes/interactive/components/first-time-setup.js +4 -2
  319. package/dist/modes/interactive/components/first-time-setup.js.map +1 -1
  320. package/dist/modes/interactive/components/footer.js +5 -2
  321. package/dist/modes/interactive/components/footer.js.map +1 -1
  322. package/dist/modes/interactive/components/host-input-form.js +13 -2
  323. package/dist/modes/interactive/components/host-input-form.js.map +1 -1
  324. package/dist/modes/interactive/components/login-dialog.js +9 -3
  325. package/dist/modes/interactive/components/login-dialog.js.map +1 -1
  326. package/dist/modes/interactive/components/model-selector.js +24 -12
  327. package/dist/modes/interactive/components/model-selector.js.map +1 -1
  328. package/dist/modes/interactive/components/oauth-selector.js +12 -3
  329. package/dist/modes/interactive/components/oauth-selector.js.map +1 -1
  330. package/dist/modes/interactive/components/reserved-bottom-overlay.js +11 -2
  331. package/dist/modes/interactive/components/reserved-bottom-overlay.js.map +1 -1
  332. package/dist/modes/interactive/components/scoped-models-selector.js +13 -8
  333. package/dist/modes/interactive/components/scoped-models-selector.js.map +1 -1
  334. package/dist/modes/interactive/components/scroll-widget.js +4 -0
  335. package/dist/modes/interactive/components/scroll-widget.js.map +1 -1
  336. package/dist/modes/interactive/components/session-selector-header.js +11 -7
  337. package/dist/modes/interactive/components/session-selector-header.js.map +1 -1
  338. package/dist/modes/interactive/components/session-selector-list.js +25 -12
  339. package/dist/modes/interactive/components/session-selector-list.js.map +1 -1
  340. package/dist/modes/interactive/components/session-selector.js +23 -15
  341. package/dist/modes/interactive/components/session-selector.js.map +1 -1
  342. package/dist/modes/interactive/components/settings-selector-submenus.js +19 -1
  343. package/dist/modes/interactive/components/settings-selector-submenus.js.map +1 -1
  344. package/dist/modes/interactive/components/settings-selector.js +1 -0
  345. package/dist/modes/interactive/components/settings-selector.js.map +1 -1
  346. package/dist/modes/interactive/components/show-images-selector.js +1 -0
  347. package/dist/modes/interactive/components/show-images-selector.js.map +1 -1
  348. package/dist/modes/interactive/components/skill-invocation-message.js +4 -1
  349. package/dist/modes/interactive/components/skill-invocation-message.js.map +1 -1
  350. package/dist/modes/interactive/components/startup-identity.js +8 -3
  351. package/dist/modes/interactive/components/startup-identity.js.map +1 -1
  352. package/dist/modes/interactive/components/task-completion-message.js +2 -0
  353. package/dist/modes/interactive/components/task-completion-message.js.map +1 -1
  354. package/dist/modes/interactive/components/task-detail.js +2 -0
  355. package/dist/modes/interactive/components/task-detail.js.map +1 -1
  356. package/dist/modes/interactive/components/task-inspector.js +22 -12
  357. package/dist/modes/interactive/components/task-inspector.js.map +1 -1
  358. package/dist/modes/interactive/components/task-list.js +2 -0
  359. package/dist/modes/interactive/components/task-list.js.map +1 -1
  360. package/dist/modes/interactive/components/task-live-transcript.js +8 -3
  361. package/dist/modes/interactive/components/task-live-transcript.js.map +1 -1
  362. package/dist/modes/interactive/components/task-navigation.js +5 -2
  363. package/dist/modes/interactive/components/task-navigation.js.map +1 -1
  364. package/dist/modes/interactive/components/task-row.js +2 -0
  365. package/dist/modes/interactive/components/task-row.js.map +1 -1
  366. package/dist/modes/interactive/components/theme-selector.js +2 -0
  367. package/dist/modes/interactive/components/theme-selector.js.map +1 -1
  368. package/dist/modes/interactive/components/thinking-selector.js +7 -1
  369. package/dist/modes/interactive/components/thinking-selector.js.map +1 -1
  370. package/dist/modes/interactive/components/tool-execution.js +25 -10
  371. package/dist/modes/interactive/components/tool-execution.js.map +1 -1
  372. package/dist/modes/interactive/components/transcript-follow-indicator.js +1 -0
  373. package/dist/modes/interactive/components/transcript-follow-indicator.js.map +1 -1
  374. package/dist/modes/interactive/components/tree-selector-component.js +7 -3
  375. package/dist/modes/interactive/components/tree-selector-component.js.map +1 -1
  376. package/dist/modes/interactive/components/tree-selector-help.js +1 -0
  377. package/dist/modes/interactive/components/tree-selector-help.js.map +1 -1
  378. package/dist/modes/interactive/components/tree-selector-label-input.js +6 -2
  379. package/dist/modes/interactive/components/tree-selector-label-input.js.map +1 -1
  380. package/dist/modes/interactive/components/tree-selector-list.js +4 -0
  381. package/dist/modes/interactive/components/tree-selector-list.js.map +1 -1
  382. package/dist/modes/interactive/components/trust-selector.js +6 -0
  383. package/dist/modes/interactive/components/trust-selector.js.map +1 -1
  384. package/dist/modes/interactive/components/user-message-selector.js +6 -3
  385. package/dist/modes/interactive/components/user-message-selector.js.map +1 -1
  386. package/dist/modes/interactive/components/user-message.js +5 -0
  387. package/dist/modes/interactive/components/user-message.js.map +1 -1
  388. package/dist/modes/interactive/components/working-status.js +1 -0
  389. package/dist/modes/interactive/components/working-status.js.map +1 -1
  390. package/dist/modes/interactive/interactive-autocomplete.js +2 -0
  391. package/dist/modes/interactive/interactive-autocomplete.js.map +1 -1
  392. package/dist/modes/interactive/interactive-extension-runtime.js +1 -0
  393. package/dist/modes/interactive/interactive-extension-runtime.js.map +1 -1
  394. package/dist/modes/interactive/interactive-mode-base.js +162 -120
  395. package/dist/modes/interactive/interactive-mode-base.js.map +1 -1
  396. package/dist/modes/interactive/interactive-mode-helpers.js +3 -0
  397. package/dist/modes/interactive/interactive-mode-helpers.js.map +1 -1
  398. package/dist/modes/interactive/interactive-mode-surface.d.ts +0 -6
  399. package/dist/modes/interactive/interactive-mode-surface.d.ts.map +1 -1
  400. package/dist/modes/interactive/interactive-mode-surface.js.map +1 -1
  401. package/dist/modes/interactive/interactive-resource-disclosure.js +0 -4
  402. package/dist/modes/interactive/interactive-resource-disclosure.js.map +1 -1
  403. package/dist/modes/interactive/interactive-resource-rendering.js +0 -12
  404. package/dist/modes/interactive/interactive-resource-rendering.js.map +1 -1
  405. package/dist/modes/interactive/interactive-startup-chat-container.js +1 -4
  406. package/dist/modes/interactive/interactive-startup-chat-container.js.map +1 -1
  407. package/dist/modes/interactive/model-catalog-refresh.js +1 -3
  408. package/dist/modes/interactive/model-catalog-refresh.js.map +1 -1
  409. package/dist/modes/interactive/theme/color-utils.d.ts +5 -0
  410. package/dist/modes/interactive/theme/color-utils.d.ts.map +1 -1
  411. package/dist/modes/interactive/theme/color-utils.js +11 -0
  412. package/dist/modes/interactive/theme/color-utils.js.map +1 -1
  413. package/dist/modes/interactive/theme/global-theme.d.ts.map +1 -1
  414. package/dist/modes/interactive/theme/global-theme.js +4 -3
  415. package/dist/modes/interactive/theme/global-theme.js.map +1 -1
  416. package/dist/modes/interactive/theme/theme-class.js +7 -0
  417. package/dist/modes/interactive/theme/theme-class.js.map +1 -1
  418. package/dist/modes/interactive/theme/theme-controller.js +9 -2
  419. package/dist/modes/interactive/theme/theme-controller.js.map +1 -1
  420. package/dist/modes/interactive-engine/activity-watchdog.js +8 -3
  421. package/dist/modes/interactive-engine/activity-watchdog.js.map +1 -1
  422. package/dist/modes/interactive-engine/engine-custom-ui.js +12 -8
  423. package/dist/modes/interactive-engine/engine-custom-ui.js.map +1 -1
  424. package/dist/modes/interactive-engine/engine-dialog-host.js +7 -3
  425. package/dist/modes/interactive-engine/engine-dialog-host.js.map +1 -1
  426. package/dist/modes/interactive-engine/engine-health.js +23 -13
  427. package/dist/modes/interactive-engine/engine-health.js.map +1 -1
  428. package/dist/modes/interactive-engine/engine-input-form.js +3 -2
  429. package/dist/modes/interactive-engine/engine-input-form.js.map +1 -1
  430. package/dist/modes/interactive-engine/engine-monitor.js +13 -1
  431. package/dist/modes/interactive-engine/engine-monitor.js.map +1 -1
  432. package/dist/modes/interactive-engine/engine-project-trust.js +2 -1
  433. package/dist/modes/interactive-engine/engine-project-trust.js.map +1 -1
  434. package/dist/modes/interactive-engine/engine-render-service.js +7 -4
  435. package/dist/modes/interactive-engine/engine-render-service.js.map +1 -1
  436. package/dist/modes/interactive-engine/engine-session-picker.js +3 -2
  437. package/dist/modes/interactive-engine/engine-session-picker.js.map +1 -1
  438. package/dist/modes/interactive-engine/input-form-host.js +5 -1
  439. package/dist/modes/interactive-engine/input-form-host.js.map +1 -1
  440. package/dist/modes/interactive-engine/isolated-runtime.js +37 -23
  441. package/dist/modes/interactive-engine/isolated-runtime.js.map +1 -1
  442. package/dist/modes/interactive-engine/remote-command-catalog.js +4 -3
  443. package/dist/modes/interactive-engine/remote-command-catalog.js.map +1 -1
  444. package/dist/modes/interactive-engine/remote-component.js +24 -12
  445. package/dist/modes/interactive-engine/remote-component.js.map +1 -1
  446. package/dist/modes/interactive-engine/remote-frame-clamp.js +3 -3
  447. package/dist/modes/interactive-engine/remote-frame-clamp.js.map +1 -1
  448. package/dist/modes/interactive-engine/remote-model-catalog.js +5 -4
  449. package/dist/modes/interactive-engine/remote-model-catalog.js.map +1 -1
  450. package/dist/modes/interactive-engine/remote-queue-pause.js +3 -1
  451. package/dist/modes/interactive-engine/remote-queue-pause.js.map +1 -1
  452. package/dist/modes/interactive-engine/remote-renderer.js +24 -13
  453. package/dist/modes/interactive-engine/remote-renderer.js.map +1 -1
  454. package/dist/modes/interactive-engine/resource-readiness-error.js +1 -0
  455. package/dist/modes/interactive-engine/resource-readiness-error.js.map +1 -1
  456. package/dist/modes/interactive-engine/session-picker-host.js +5 -1
  457. package/dist/modes/interactive-engine/session-picker-host.js.map +1 -1
  458. package/dist/modes/interactive-engine/terminal-mode-controller.js +2 -1
  459. package/dist/modes/interactive-engine/terminal-mode-controller.js.map +1 -1
  460. package/dist/modes/rpc/queued-writer.js +13 -4
  461. package/dist/modes/rpc/queued-writer.js.map +1 -1
  462. package/dist/modes/rpc/rpc-bash-request-owners.js +2 -1
  463. package/dist/modes/rpc/rpc-bash-request-owners.js.map +1 -1
  464. package/dist/modes/rpc/rpc-client-api.d.ts +8 -4
  465. package/dist/modes/rpc/rpc-client-api.d.ts.map +1 -1
  466. package/dist/modes/rpc/rpc-client-api.js +10 -3
  467. package/dist/modes/rpc/rpc-client-api.js.map +1 -1
  468. package/dist/modes/rpc/rpc-client.d.ts.map +1 -1
  469. package/dist/modes/rpc/rpc-client.js +35 -22
  470. package/dist/modes/rpc/rpc-client.js.map +1 -1
  471. package/dist/modes/rpc/rpc-command-handler.js +6 -6
  472. package/dist/modes/rpc/rpc-command-handler.js.map +1 -1
  473. package/dist/modes/rpc/rpc-event-buffer.js +3 -1
  474. package/dist/modes/rpc/rpc-event-buffer.js.map +1 -1
  475. package/dist/modes/rpc/rpc-generation-buffer.js +1 -3
  476. package/dist/modes/rpc/rpc-generation-buffer.js.map +1 -1
  477. package/dist/modes/rpc/rpc-keybindings-reload.js +4 -1
  478. package/dist/modes/rpc/rpc-keybindings-reload.js.map +1 -1
  479. package/dist/modes/rpc/rpc-output-buffer.js +3 -4
  480. package/dist/modes/rpc/rpc-output-buffer.js.map +1 -1
  481. package/dist/modes/rpc/rpc-pending-requests.js +1 -3
  482. package/dist/modes/rpc/rpc-pending-requests.js.map +1 -1
  483. package/dist/modes/rpc/rpc-provider-auth.js +3 -1
  484. package/dist/modes/rpc/rpc-provider-auth.js.map +1 -1
  485. package/dist/modes/rpc/rpc-resource-readiness.js +4 -5
  486. package/dist/modes/rpc/rpc-resource-readiness.js.map +1 -1
  487. package/dist/modes/rpc/rpc-session-binding.js +15 -0
  488. package/dist/modes/rpc/rpc-session-binding.js.map +1 -1
  489. package/dist/modes/rpc/rpc-terminal-drain.js +3 -0
  490. package/dist/modes/rpc/rpc-terminal-drain.js.map +1 -1
  491. package/dist/modes/rpc/rpc-types.d.ts +10 -1
  492. package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
  493. package/dist/modes/rpc/rpc-types.js.map +1 -1
  494. package/docs/models/evals.md +883 -39
  495. package/docs/models/model-selection.md +7 -8
  496. package/docs/rpc/examples.md +1 -1
  497. package/docs/rpc/protocol.md +9 -3
  498. package/docs/sdk/structured-decisions.md +1 -1
  499. package/docs/sdk.md +3 -3
  500. package/docs/settings.md +24 -3
  501. package/docs/subagents/reference.md +22 -4
  502. package/docs/subagents.md +2 -0
  503. package/docs/usage.md +3 -3
  504. package/docs/workflows/api-reference.md +1 -1
  505. package/docs/workflows/authoring.md +1 -7
  506. package/docs/workflows/builtins.md +1 -1
  507. package/docs/workflows/reliable-design.md +1 -1
  508. package/examples/extensions/custom-provider-gitlab-duo/test.ts +5 -5
  509. package/examples/extensions/gondolin/package.json +1 -1
  510. package/examples/rpc-client.ts +1 -1
  511. package/examples/rpc-extension-ui.ts +1 -1
  512. package/npm-shrinkwrap.json +70 -33
  513. package/package.json +6 -7
  514. package/dist/core/model-routing-task.d.ts.map +0 -1
  515. package/dist/core/model-routing-task.js +0 -120
  516. package/dist/core/model-routing-task.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"interactive-mode-helpers.js","sourceRoot":"","sources":["../../../src/modes/interactive/interactive-mode-helpers.ts"],"names":[],"mappings":"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","sourcesContent":["import { builtinProviders } from \"@bastani/pi-ai/providers/all\";\nimport {\n\tAPP_NAME,\n\ttype Api,\n\tBUILTIN_SLASH_COMMANDS,\n\tdefaultModelPerProvider,\n\tfs,\n\ttype Model,\n\ttype SessionManager,\n\tText,\n} from \"./interactive-mode-deps.ts\";\nimport type { Expandable } from \"./interactive-mode-types.ts\";\n\nexport function isExpandable(obj: unknown): obj is Expandable {\n\treturn typeof obj === \"object\" && obj !== null && \"setExpanded\" in obj && typeof obj.setExpanded === \"function\";\n}\n\nexport class ExpandableText extends Text implements Expandable {\n\tprivate expanded: boolean;\n\tprivate contentWidth: number | undefined;\n\tprivate readonly textPaddingX: number;\n\n\tprivate declare readonly getCollapsedText: (width?: number) => string;\n\tprivate declare readonly getExpandedText: (width?: number) => string;\n\n\tconstructor(\n\t\tgetCollapsedText: (width?: number) => string,\n\t\tgetExpandedText: (width?: number) => string,\n\t\texpanded = false,\n\t\tpaddingX = 0,\n\t\tpaddingY = 0,\n\t) {\n\t\tsuper(expanded ? getExpandedText() : getCollapsedText(), paddingX, paddingY);\n\t\tthis.getCollapsedText = getCollapsedText;\n\t\tthis.getExpandedText = getExpandedText;\n\t\tthis.expanded = expanded;\n\t\tthis.textPaddingX = paddingX;\n\t}\n\n\tsetExpanded(expanded: boolean): void {\n\t\tthis.expanded = expanded;\n\t\tthis.refresh();\n\t}\n\n\trefresh(): void {\n\t\tconst width = this.contentWidth;\n\t\tthis.setText(this.expanded ? this.getExpandedText(width) : this.getCollapsedText(width));\n\t}\n\n\toverride render(width: number): string[] {\n\t\t// Text getters may adapt their layout to the available content width\n\t\t// (e.g. the startup banner drops its side-by-side meta column on narrow\n\t\t// terminals), so refresh whenever the render width changes.\n\t\tconst contentWidth = Math.max(1, width - this.textPaddingX * 2);\n\t\tif (contentWidth !== this.contentWidth) {\n\t\t\tthis.contentWidth = contentWidth;\n\t\t\tthis.refresh();\n\t\t}\n\t\treturn super.render(width);\n\t}\n}\n\nconst DEAD_TERMINAL_ERROR_CODES = new Set([\"EIO\", \"EPIPE\", \"ENOTCONN\"]);\n\nexport function isDeadTerminalError(error: unknown): boolean {\n\tif (!error || typeof error !== \"object\" || !(\"code\" in error)) {\n\t\treturn false;\n\t}\n\tconst code = (error as NodeJS.ErrnoException).code;\n\treturn code !== undefined && DEAD_TERMINAL_ERROR_CODES.has(code);\n}\n\nexport function formatCrashExtensionHint(extensionMatches: readonly string[] | undefined): string | undefined {\n\tconst matches = Array.isArray(extensionMatches)\n\t\t? extensionMatches.filter((match): match is string => typeof match === \"string\" && match.length > 0)\n\t\t: [];\n\tif (matches.length === 0) return undefined;\n\tconst quoted = matches.map((match) => `\\`${match}\\``);\n\tconst labels =\n\t\tquoted.length === 1\n\t\t\t? quoted[0]\n\t\t\t: quoted.length === 2\n\t\t\t\t? quoted.join(\" and \")\n\t\t\t\t: `${quoted.slice(0, -1).join(\", \")}, and ${quoted[quoted.length - 1]}`;\n\tconst noun = matches.length === 1 ? \"extension\" : \"extensions\";\n\tconst pronoun = matches.length === 1 ? \"it\" : \"them\";\n\treturn `A stack frame came from loaded ${noun} ${labels}, which may be involved. Try disabling ${pronoun} with \\`${APP_NAME} config\\`, or run \\`${APP_NAME} -ne\\` to confirm.`;\n}\n\nexport const ANTHROPIC_SUBSCRIPTION_AUTH_WARNING =\n\t\"Anthropic subscription auth is active. Third-party harness usage draws from extra usage and is billed per token, not your Claude plan limits. Manage extra usage at https://claude.ai/settings/usage.\";\n\nexport const BUILTIN_SLASH_COMMAND_NAMES = new Set(BUILTIN_SLASH_COMMANDS.map((command) => command.name));\n\nexport function isAnthropicSubscriptionAuthKey(apiKey: string | undefined): boolean {\n\treturn typeof apiKey === \"string\" && apiKey.startsWith(\"sk-ant-oat\");\n}\n\nexport function isUnknownModel(model: Model<Api> | undefined): boolean {\n\treturn !!model && model.provider === \"unknown\" && model.id === \"unknown\" && model.api === \"unknown\";\n}\n\nfunction quoteIfNeeded(value: string): string {\n\tif (value.length > 0 && !/[^a-zA-Z0-9_\\-./~:@]/.test(value)) {\n\t\treturn value;\n\t}\n\treturn `'${value.replace(/'/g, `'\\\\''`)}'`;\n}\n\nexport function formatResumeCommand(sessionManager: SessionManager): string | undefined {\n\tif (!process.stdout.isTTY) return undefined;\n\tif (!sessionManager.isPersisted()) return undefined;\n\n\tconst sessionFile = sessionManager.getSessionFile();\n\tif (!sessionFile || !fs.existsSync(sessionFile)) return undefined;\n\n\tconst args = [APP_NAME];\n\tif (!sessionManager.usesDefaultSessionDir()) {\n\t\targs.push(\"--session-dir\", quoteIfNeeded(sessionManager.getSessionDir()));\n\t}\n\targs.push(\"--session\", sessionManager.getSessionId());\n\treturn args.join(\" \");\n}\n\nexport function hasDefaultModelProvider(providerId: string): providerId is keyof typeof defaultModelPerProvider {\n\treturn providerId in defaultModelPerProvider;\n}\n\nexport const BEDROCK_PROVIDER_ID = \"amazon-bedrock\";\n\n/** @deprecated Login options are now built directly from provider auth metadata. */\nexport function isApiKeyLoginProvider(\n\tproviderId: string,\n\toauthProviderIds: ReadonlySet<string>,\n\t_builtInProviderIds?: ReadonlySet<string>,\n): boolean {\n\tconst builtin = builtinProviders().find((provider) => provider.id === providerId);\n\treturn builtin ? builtin.auth.apiKey !== undefined : !oauthProviderIds.has(providerId);\n}\n"]}
1
+ {"version":3,"file":"interactive-mode-helpers.js","sourceRoot":"","sources":["../../../src/modes/interactive/interactive-mode-helpers.ts"],"names":[],"mappings":"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","sourcesContent":["import { builtinProviders } from \"@bastani/pi-ai/providers/all\";\nimport {\n\tAPP_NAME,\n\ttype Api,\n\tBUILTIN_SLASH_COMMANDS,\n\tdefaultModelPerProvider,\n\tfs,\n\ttype Model,\n\ttype SessionManager,\n\tText,\n} from \"./interactive-mode-deps.ts\";\nimport type { Expandable } from \"./interactive-mode-types.ts\";\n\nexport function isExpandable(obj: unknown): obj is Expandable {\n\treturn typeof obj === \"object\" && obj !== null && \"setExpanded\" in obj && typeof obj.setExpanded === \"function\";\n}\n\nexport class ExpandableText extends Text implements Expandable {\n\tprivate expanded: boolean;\n\tprivate contentWidth: number | undefined;\n\tprivate readonly textPaddingX: number;\n\n\tprivate declare readonly getCollapsedText: (width?: number) => string;\n\tprivate declare readonly getExpandedText: (width?: number) => string;\n\n\tconstructor(\n\t\tgetCollapsedText: (width?: number) => string,\n\t\tgetExpandedText: (width?: number) => string,\n\t\texpanded = false,\n\t\tpaddingX = 0,\n\t\tpaddingY = 0,\n\t) {\n\t\tsuper(expanded ? getExpandedText() : getCollapsedText(), paddingX, paddingY);\n\t\tthis.getCollapsedText = getCollapsedText;\n\t\tthis.getExpandedText = getExpandedText;\n\t\tthis.expanded = expanded;\n\t\tthis.textPaddingX = paddingX;\n\t}\n\n\tsetExpanded(expanded: boolean): void {\n\t\tthis.expanded = expanded;\n\t\tthis.refresh();\n\t}\n\n\trefresh(): void {\n\t\tconst width = this.contentWidth;\n\t\tthis.setText(this.expanded ? this.getExpandedText(width) : this.getCollapsedText(width));\n\t}\n\n\toverride render(width: number): string[] {\n\t\t// Text getters may adapt their layout to the available content width\n\t\t// (e.g. the startup banner drops its side-by-side meta column on narrow\n\t\t// terminals), so refresh whenever the render width changes.\n\t\tconst contentWidth = Math.max(1, width - this.textPaddingX * 2);\n\t\tif (contentWidth !== this.contentWidth) {\n\t\t\tthis.contentWidth = contentWidth;\n\t\t\tthis.refresh();\n\t\t}\n\t\treturn super.render(width);\n\t}\n}\n\nconst DEAD_TERMINAL_ERROR_CODES = new Set([\"EIO\", \"EPIPE\", \"ENOTCONN\"]);\n\nexport function isDeadTerminalError(error: unknown): boolean {\n\tif (!error || typeof error !== \"object\" || !(\"code\" in error)) {\n\t\treturn false;\n\t}\n\tconst code = (error as NodeJS.ErrnoException).code;\n\treturn code !== undefined && DEAD_TERMINAL_ERROR_CODES.has(code);\n}\n\nexport function formatCrashExtensionHint(extensionMatches: readonly string[] | undefined): string | undefined {\n\tconst matches = Array.isArray(extensionMatches)\n\t\t? extensionMatches.filter((match): match is string => typeof match === \"string\" && match.length > 0)\n\t\t: [];\n\tif (matches.length === 0) return undefined;\n\tconst quoted = matches.map((match) => `\\`${match}\\``);\n\tconst labels =\n\t\tquoted.length === 1\n\t\t\t? quoted[0]\n\t\t\t: quoted.length === 2\n\t\t\t\t? quoted.join(\" and \")\n\t\t\t\t: `${quoted.slice(0, -1).join(\", \")}, and ${quoted[quoted.length - 1]}`;\n\tconst noun = matches.length === 1 ? \"extension\" : \"extensions\";\n\tconst pronoun = matches.length === 1 ? \"it\" : \"them\";\n\treturn `A stack frame came from loaded ${noun} ${labels}, which may be involved. Try disabling ${pronoun} with \\`${APP_NAME} config\\`, or run \\`${APP_NAME} -ne\\` to confirm.`;\n}\n\nexport const ANTHROPIC_SUBSCRIPTION_AUTH_WARNING =\n\t\"Anthropic subscription auth is active. Third-party harness usage draws from extra usage and is billed per token, not your Claude plan limits. Manage extra usage at https://claude.ai/settings/usage.\";\n\nexport const BUILTIN_SLASH_COMMAND_NAMES = new Set(BUILTIN_SLASH_COMMANDS.map((command) => command.name));\n\nexport function isAnthropicSubscriptionAuthKey(apiKey: string | undefined): boolean {\n\treturn typeof apiKey === \"string\" && apiKey.startsWith(\"sk-ant-oat\");\n}\n\nexport function isUnknownModel(model: Model<Api> | undefined): boolean {\n\treturn !!model && model.provider === \"unknown\" && model.id === \"unknown\" && model.api === \"unknown\";\n}\n\nfunction quoteIfNeeded(value: string): string {\n\tif (value.length > 0 && !/[^a-zA-Z0-9_\\-./~:@]/.test(value)) {\n\t\treturn value;\n\t}\n\treturn `'${value.replace(/'/g, `'\\\\''`)}'`;\n}\n\nexport function formatResumeCommand(sessionManager: SessionManager): string | undefined {\n\tif (!process.stdout.isTTY) return undefined;\n\tif (!sessionManager.isPersisted()) return undefined;\n\n\tconst sessionFile = sessionManager.getSessionFile();\n\tif (!sessionFile || !fs.existsSync(sessionFile)) return undefined;\n\n\tconst args = [APP_NAME];\n\tif (!sessionManager.usesDefaultSessionDir()) {\n\t\targs.push(\"--session-dir\", quoteIfNeeded(sessionManager.getSessionDir()));\n\t}\n\targs.push(\"--session\", sessionManager.getSessionId());\n\treturn args.join(\" \");\n}\n\nexport function hasDefaultModelProvider(providerId: string): providerId is keyof typeof defaultModelPerProvider {\n\treturn providerId in defaultModelPerProvider;\n}\n\nexport const BEDROCK_PROVIDER_ID = \"amazon-bedrock\";\n\n/** @deprecated Login options are now built directly from provider auth metadata. */\nexport function isApiKeyLoginProvider(\n\tproviderId: string,\n\toauthProviderIds: ReadonlySet<string>,\n\t_builtInProviderIds?: ReadonlySet<string>,\n): boolean {\n\tconst builtin = builtinProviders().find((provider) => provider.id === providerId);\n\treturn builtin ? builtin.auth.apiKey !== undefined : !oauthProviderIds.has(providerId);\n}\n"]}
@@ -117,17 +117,11 @@ declare module "./interactive-mode-base.ts" {
117
117
  path: string;
118
118
  sourceInfo?: SourceInfo;
119
119
  }>;
120
- themes: ReadonlyArray<{
121
- name?: string;
122
- sourcePath?: string;
123
- sourceInfo?: SourceInfo;
124
- }>;
125
120
  expandedSections: {
126
121
  context?: string;
127
122
  skills?: string;
128
123
  prompts?: string;
129
124
  extensions?: string;
130
- themes?: string;
131
125
  };
132
126
  targetContainer?: Container;
133
127
  }): void;
@@ -1 +1 @@
1
- {"version":3,"file":"interactive-mode-surface.d.ts","sourceRoot":"","sources":["../../../src/modes/interactive/interactive-mode-surface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AACnE,4EAA4E;AAE5E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAC1E,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC/E,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAC;AACjF,OAAO,KAAK,EACX,YAAY,EACZ,YAAY,EACZ,iBAAiB,EACjB,GAAG,EACH,aAAa,EACb,oBAAoB,EACpB,oBAAoB,EACpB,gBAAgB,EAChB,wBAAwB,EACxB,SAAS,EACT,SAAS,EACT,aAAa,EACb,uBAAuB,EACvB,wBAAwB,EACxB,uBAAuB,EACvB,eAAe,EACf,0BAA0B,EAC1B,kBAAkB,EAClB,wBAAwB,EACxB,sBAAsB,EACtB,iBAAiB,EACjB,yBAAyB,EACzB,UAAU,EACV,kBAAkB,EAClB,sBAAsB,EACtB,oBAAoB,EACpB,aAAa,EACb,OAAO,EACP,sBAAsB,EACtB,KAAK,EACL,iBAAiB,EACjB,aAAa,EACb,cAAc,EACd,mBAAmB,EACnB,0BAA0B,EAC1B,kBAAkB,EAClB,cAAc,EACd,YAAY,EACZ,UAAU,EACV,KAAK,EACL,GAAG,EACH,wBAAwB,EACxB,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AAEzE,OAAO,QAAQ,4BAA4B,CAAC;IAC3C,UAAU,mBAAmB;QAC5B,wBAAwB,CAAC,UAAU,CAAC,EAAE,UAAU,GAAG,MAAM,GAAG,SAAS,CAAC;QACtE,6BAA6B,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,EAAE,UAAU,CAAC,EAAE,UAAU,GAAG,MAAM,GAAG,SAAS,CAAC;QAC5G,oCAAoC,CAAC,eAAe,EAAE,eAAe,GAAG,kBAAkB,EAAE,CAAC;QAC7F,8BAA8B,IAAI,oBAAoB,CAAC;QACvD,wBAAwB,CAAC,aAAa,EAAE,YAAY,EAAE,GAAG,YAAY,EAAE,CAAC;QACxE,yBAAyB,IAAI,IAAI,CAAC;QAClC,0BAA0B,CAAC,eAAe,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC;QAC9D,yBAAyB,CAAC,eAAe,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC;QAC7D,2BAA2B,EAAE,MAAM,GAAG,SAAS,CAAC;QAChD,gCAAgC,EAAE,OAAO,CAAC;QAC1C,qBAAqB,EAAE,OAAO,CAAC;QAC/B,kCAAkC,EAAE,SAAS,EAAE,CAAC;QAChD,mCAAmC,IAAI,IAAI,CAAC;QAC5C,4BAA4B,IAAI,OAAO,CAAC;QACxC,yBAAyB,IAAI,IAAI,CAAC;QAClC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;QACtB,uBAAuB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;QACzC,yBAAyB,CAAC,eAAe,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QACtE,mBAAmB,IAAI,IAAI,CAAC;QAC5B,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;QACrB,sBAAsB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QAC5C,sBAAsB,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;QACtD,sBAAsB,IAAI,MAAM,GAAG,SAAS,CAAC;QAC7C,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;QAC9C,4BAA4B,IAAI,aAAa,CAAC;QAC9C,uBAAuB,IAAI,mBAAmB,EAAE,CAAC;QACjD,iBAAiB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;QACrC,0BAA0B,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;QACjD,iBAAiB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;QACrC,oBAAoB,IAAI,MAAM,CAAC;QAC/B,sBAAsB,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;QACzF,sBAAsB,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;QAC/C,wBAAwB,IAAI,OAAO,CAAC;QACpC,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,UAAU,GAAG,MAAM,CAAC;QAChE,mBAAmB,CAAC,YAAY,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,UAAU,GAAG,MAAM,CAAC;QAC3E,4BAA4B,CAAC,UAAU,CAAC,EAAE,UAAU,GAAG,MAAM,CAAC;QAC9D,wBAAwB,CAAC,YAAY,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,UAAU,GAAG,MAAM,CAAC;QAChF,6BAA6B,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;QAC9D,kCAAkC,CACjC,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;SAAE,CAAC,GACnD,MAAM,CAAC;QACV,yBAAyB,CAAC,UAAU,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,UAAU,CAAC,EAAE,UAAU,CAAA;SAAE,CAAC,GAAG,MAAM,EAAE,CAAC;QAClG,oBAAoB,CAAC,UAAU,CAAC,EAAE,UAAU,GAAG;YAC9C,KAAK,EAAE,MAAM,CAAC;YACd,UAAU,CAAC,EAAE,MAAM,CAAC;YACpB,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC;SAC1B,CAAC;QACF,aAAa,CAAC,UAAU,CAAC,EAAE,UAAU,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,CAAC;QACpE,eAAe,CAAC,UAAU,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC;QAClD,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,UAAU,CAAC,EAAE,UAAU,CAAA;SAAE,CAAC,GAAG,KAAK,CAAC;YAChF,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAAC;YACnC,KAAK,EAAE,KAAK,CAAC;gBAAE,IAAI,EAAE,MAAM,CAAC;gBAAC,UAAU,CAAC,EAAE,UAAU,CAAA;aAAE,CAAC,CAAC;YACxD,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC;gBAAE,IAAI,EAAE,MAAM,CAAC;gBAAC,UAAU,CAAC,EAAE,UAAU,CAAA;aAAE,CAAC,CAAC,CAAC;SACxE,CAAC,CAAC;QACH,iBAAiB,CAChB,MAAM,EAAE,KAAK,CAAC;YACb,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAAC;YACnC,KAAK,EAAE,KAAK,CAAC;gBAAE,IAAI,EAAE,MAAM,CAAC;gBAAC,UAAU,CAAC,EAAE,UAAU,CAAA;aAAE,CAAC,CAAC;YACxD,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC;gBAAE,IAAI,EAAE,MAAM,CAAC;gBAAC,UAAU,CAAC,EAAE,UAAU,CAAA;aAAE,CAAC,CAAC,CAAC;SACxE,CAAC,EACF,OAAO,EAAE;YACR,UAAU,EAAE,CAAC,IAAI,EAAE;gBAAE,IAAI,EAAE,MAAM,CAAC;gBAAC,UAAU,CAAC,EAAE,UAAU,CAAA;aAAE,KAAK,MAAM,CAAC;YACxE,iBAAiB,EAAE,CAAC,IAAI,EAAE;gBAAE,IAAI,EAAE,MAAM,CAAC;gBAAC,UAAU,CAAC,EAAE,UAAU,CAAA;aAAE,EAAE,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC;SAC/F,GACC,MAAM,CAAC;QACV,qBAAqB,CAAC,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG,UAAU,GAAG,SAAS,CAAC;QAC/F,oBAAoB,CAAC,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,UAAU,GAAG,MAAM,CAAC;QACjE,iBAAiB,CAAC,WAAW,EAAE,SAAS,kBAAkB,EAAE,EAAE,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG,MAAM,CAAC;QAC5G,qBAAqB,CAAC,OAAO,EAAE;YAC9B,YAAY,EAAE,aAAa,CAAC;gBAAE,IAAI,EAAE,MAAM,CAAA;aAAE,CAAC,CAAC;YAC9C,MAAM,EAAE,aAAa,CAAC;gBAAE,QAAQ,EAAE,MAAM,CAAC;gBAAC,IAAI,EAAE,MAAM,CAAA;aAAE,CAAC,CAAC;YAC1D,OAAO,EAAE,aAAa,CAAC;gBAAE,QAAQ,EAAE,MAAM,CAAC;gBAAC,IAAI,EAAE,MAAM,CAAA;aAAE,CAAC,CAAC;YAC3D,UAAU,EAAE,aAAa,CAAC;gBAAE,IAAI,EAAE,MAAM,CAAC;gBAAC,UAAU,CAAC,EAAE,UAAU,CAAA;aAAE,CAAC,CAAC;YACrE,MAAM,EAAE,aAAa,CAAC;gBAAE,IAAI,CAAC,EAAE,MAAM,CAAC;gBAAC,UAAU,CAAC,EAAE,MAAM,CAAC;gBAAC,UAAU,CAAC,EAAE,UAAU,CAAA;aAAE,CAAC,CAAC;YACvF,gBAAgB,EAAE;gBACjB,OAAO,CAAC,EAAE,MAAM,CAAC;gBACjB,MAAM,CAAC,EAAE,MAAM,CAAC;gBAChB,OAAO,CAAC,EAAE,MAAM,CAAC;gBACjB,UAAU,CAAC,EAAE,MAAM,CAAC;gBACpB,MAAM,CAAC,EAAE,MAAM,CAAC;aAChB,CAAC;YACF,eAAe,CAAC,EAAE,SAAS,CAAC;SAC5B,GAAG,IAAI,CAAC;QACT,mBAAmB,CAAC,OAAO,CAAC,EAAE;YAC7B,UAAU,CAAC,EAAE,KAAK,CAAC;gBAAE,IAAI,EAAE,MAAM,CAAC;gBAAC,UAAU,CAAC,EAAE,UAAU,CAAA;aAAE,CAAC,CAAC;YAC9D,KAAK,CAAC,EAAE,OAAO,CAAC;YAChB,wBAAwB,CAAC,EAAE,OAAO,CAAC;YACnC,eAAe,CAAC,EAAE,SAAS,CAAC;SAC5B,GAAG,IAAI,CAAC;QACT,4BAA4B,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;QAC9C,oBAAoB,IAAI,IAAI,CAAC;QAC7B,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;QACtC,uBAAuB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;QACxE,yBAAyB,IAAI,IAAI,CAAC;QAClC,2BAA2B,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,CAAC,YAAY,CAAC,mBAAmB,CAAC,CAAC,CAAC;QAC7F,uBAAuB,CAAC,eAAe,EAAE,eAAe,GAAG,IAAI,CAAC;QAChE,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;QAChE,uBAAuB,IAAI,MAAM,CAAC;QAClC,mBAAmB,IAAI,mBAAmB,CAAC;QAC3C,kBAAkB,IAAI,IAAI,CAAC;QAC3B,iBAAiB,IAAI,IAAI,CAAC;QAC1B,oBAAoB,IAAI,IAAI,CAAC;QAC7B,iBAAiB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;QAC1C,mBAAmB,CAAC,OAAO,CAAC,EAAE,sBAAsB,GAAG,IAAI,CAAC;QAC5D,sBAAsB,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC7C,kBAAkB,CACjB,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,KAAK,SAAS,GAAG;YAAE,OAAO,CAAC,IAAI,IAAI,CAAA;SAAE,CAAC,GAAG,SAAS,EAC5F,OAAO,CAAC,EAAE,sBAAsB,GAC9B,IAAI,CAAC;QACR,qBAAqB,IAAI,IAAI,CAAC;QAC9B,gBAAgB,IAAI,IAAI,CAAC;QACzB,aAAa,IAAI,IAAI,CAAC;QACtB,qBAAqB,CACpB,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,GAAG;YAAE,OAAO,CAAC,IAAI,IAAI,CAAA;SAAE,CAAC,EACtD,eAAe,EAAE,OAAO,EACxB,aAAa,EAAE,OAAO,GACpB,IAAI,CAAC;QACR,kBAAkB,CACjB,OAAO,EACJ,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE,0BAA0B,KAAK,SAAS,GAAG;YAAE,OAAO,CAAC,IAAI,IAAI,CAAA;SAAE,CAAC,GACpG,SAAS,GACV,IAAI,CAAC;QACR,kBAAkB,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,KAAK,SAAS,GAAG;YAAE,OAAO,CAAC,IAAI,IAAI,CAAA;SAAE,CAAC,GAAG,SAAS,GAAG,IAAI,CAAC;QAC5G,iCAAiC,CAChC,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK;YAAE,OAAO,CAAC,EAAE,OAAO,CAAC;YAAC,IAAI,CAAC,EAAE,MAAM,CAAA;SAAE,GAAG,SAAS,GACzE,MAAM,IAAI,CAAC;QACd,oCAAoC,IAAI,IAAI,CAAC;QAC7C,oBAAoB,IAAI,iBAAiB,CAAC;QAC1C,gCAAgC,IAAI,IAAI,CAAC;QACzC,uBAAuB,CAAC,OAAO,CAAC,EAAE,QAAQ,GAAG,YAAY,GAAG,MAAM,IAAI,CAAC;QACvE,gCAAgC,IAAI,MAAM,IAAI,CAAC;QAC/C,8BAA8B,IAAI,OAAO,CAAC;QAC1C,uBAAuB,IAAI,OAAO,CAAC;QACnC,yBAAyB,CAAC,QAAQ,EAAE,yBAAyB,GAAG,MAAM,IAAI,CAAC;QAC3E,wBAAwB,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC;QACxE,4BAA4B,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;QAChD,yBAAyB,CAAC,GAAG,EAAE,MAAM,GAAG,mBAAmB,CAAC;QAC5D,wBAAwB,IAAI,kBAAkB,CAAC;QAC/C,qBAAqB,CACpB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EAAE,EACjB,IAAI,CAAC,EAAE,wBAAwB,GAC7B,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;QAC/B,qBAAqB,CAAC,QAAQ,CAAC,EAAE,0BAA0B,GAAG,IAAI,CAAC;QACnE,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,wBAAwB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;QACxG,0BAA0B,CAAC,KAAK,EAAE,sBAAsB,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;QACvF,kBAAkB,CACjB,KAAK,EAAE,MAAM,EACb,WAAW,CAAC,EAAE,MAAM,EACpB,IAAI,CAAC,EAAE,wBAAwB,GAC7B,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;QAC/B,kBAAkB,CAAC,QAAQ,CAAC,EAAE,uBAAuB,GAAG,IAAI,CAAC;QAC7D,mBAAmB,CAClB,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,MAAM,EAChB,IAAI,CAAC,EAAE,wBAAwB,GAC7B,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;QAC/B,mBAAmB,CAAC,QAAQ,CAAC,EAAE,wBAAwB,GAAG,IAAI,CAAC;QAC/D,wBAAwB,CAAC,OAAO,EAAE,aAAa,GAAG,SAAS,GAAG,IAAI,CAAC;QACnE,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,GAAG,IAAI,CAAC;QAChF,mBAAmB,CAAC,CAAC,EACpB,OAAO,EAAE,CACR,GAAG,EAAE,GAAG,EACR,KAAK,EAAE,KAAK,EACZ,WAAW,EAAE,kBAAkB,EAC/B,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,IAAI,KACrB,CAAC,SAAS,GAAG;YAAE,OAAO,CAAC,IAAI,IAAI,CAAA;SAAE,CAAC,GAAG,OAAO,CAAC,SAAS,GAAG;YAAE,OAAO,CAAC,IAAI,IAAI,CAAA;SAAE,CAAC,EACnF,OAAO,CAAC,EAAE;YACT,OAAO,CAAC,EAAE,QAAQ,GAAG,YAAY,CAAC;YAClC,OAAO,CAAC,EAAE,OAAO,CAAC;YAClB,wBAAwB,CAAC,EAAE,OAAO,CAAC;YACnC,uBAAuB,CAAC,EAAE,OAAO,CAAC;YAClC,4EAA4E;YAC5E,qBAAqB,CAAC,EAAE,OAAO,CAAC;YAChC,MAAM,CAAC,EAAE,WAAW,CAAC;YACrB,cAAc,CAAC,EAAE,cAAc,GAAG,CAAC,MAAM,cAAc,CAAC,CAAC;YACzD,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,IAAI,CAAC;SAC3C,GACC,OAAO,CAAC,CAAC,CAAC,CAAC;QACd,kBAAkB,CAAC,aAAa,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC/E,gBAAgB,IAAI,IAAI,CAAC;QACzB,yBAAyB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;QAC3C,wBAAwB,IAAI,IAAI,CAAC;QACjC,0BAA0B,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;QAC/C,yBAAyB,IAAI,OAAO,CAAC;QACrC,0BAA0B,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;QAC5C,yBAAyB,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;QACvD,gBAAgB,IAAI,IAAI,CAAC;QACzB,WAAW,CAAC,KAAK,EAAE,iBAAiB,GAAG,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QAC7E,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC;QAC7C,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;QACrD,4EAA4E;QAC5E,qBAAqB,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI,CAAC;QAChD,oFAAoF;QACpF,uBAAuB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;QACzC,wBAAwB,IAAI,wBAAwB,CAAC;QACrD,oBAAoB,CAAC,KAAK,EAAE,gBAAgB,GAAG,SAAS,CAAC;QACzD,2BAA2B,CAAC,MAAM,EAAE,wBAAwB,GAAG,IAAI,CAAC;QACpE,uBAAuB,CAAC,IAAI,EAAE,YAAY,GAAG,gBAAgB,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;QACnF,6BAA6B,CAAC,OAAO,EAAE,gBAAgB,GAAG,IAAI,CAAC;QAC/D,gBAAgB,CAAC,OAAO,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE;YAAE,eAAe,CAAC,EAAE,OAAO,CAAA;SAAE,GAAG,IAAI,CAAC;QACvF,oBAAoB,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI,CAAC;QAC/C,oBAAoB,CACnB,cAAc,EAAE,cAAc,EAC9B,OAAO,CAAC,EAAE;YAAE,YAAY,CAAC,EAAE,OAAO,CAAC;YAAC,eAAe,CAAC,EAAE,OAAO,CAAA;SAAE,GAC7D,IAAI,CAAC;QACR,oBAAoB,CACnB,OAAO,EAAE,YAAY,EAAE,EACvB,OAAO,CAAC,EAAE;YACT,YAAY,CAAC,EAAE,OAAO,CAAC;YACvB,eAAe,CAAC,EAAE,OAAO,CAAC;YAC1B,0BAA0B,CAAC,EAAE,wBAAwB,CAAC;SACtD,GACC,IAAI,CAAC;QACR,qBAAqB,IAAI,IAAI,CAAC;QAC9B,6BAA6B,CAAC,OAAO,CAAC,EAAE;YAAE,aAAa,CAAC,EAAE,OAAO,CAAA;SAAE,GAAG,IAAI,CAAC;QAC3E,YAAY,IAAI,OAAO,CAAC,qBAAqB,CAAC,CAAC;QAC/C,iBAAiB,CAAC,UAAU,EAAE,qBAAqB,GAAG,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QAC7E,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;QAC5C,gCAAgC,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;QACxD,gCAAgC,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;QACrD,6BAA6B,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;QAC/C,uBAAuB,CAAC,OAAO,CAAC,EAAE;YACjC,0BAA0B,CAAC,EAAE,wBAAwB,CAAC;YACtD,sBAAsB,CAAC,EAAE,OAAO,CAAC;SACjC,GAAG,IAAI,CAAC;QACT,WAAW,IAAI,IAAI,CAAC;QACpB,wBAAwB,IAAI,OAAO,CAAC;QACpC,WAAW,IAAI,IAAI,CAAC;QACpB,QAAQ,CAAC,OAAO,CAAC,EAAE;YAAE,UAAU,CAAC,EAAE,OAAO,CAAA;SAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QAC5D,qBAAqB,IAAI,KAAK,CAAC;QAC/B,aAAa,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,CAAC;QACnC,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAAC;QAC1D,sBAAsB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;QACxC,sBAAsB,IAAI,IAAI,CAAC;QAC/B,wBAAwB,IAAI,IAAI,CAAC;QACjC,WAAW,IAAI,IAAI,CAAC;QACpB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;QAChC,aAAa,IAAI,IAAI,CAAC;QACtB,oBAAoB,IAAI,IAAI,CAAC;QAC7B,uBAAuB,IAAI,IAAI,CAAC;QAChC,kBAAkB,IAAI,IAAI,CAAC;QAC3B,UAAU,CAAC,SAAS,EAAE,SAAS,GAAG,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QAC7D,yBAAyB,IAAI,IAAI,CAAC;QAClC,gBAAgB,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI,CAAC;QAC1C,6BAA6B,IAAI,IAAI,CAAC;QACtC,6BAA6B,IAAI,IAAI,CAAC;QACtC,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;QACpC,WAAW,IAAI,IAAI,CAAC;QACpB,SAAS,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;QACtC,WAAW,CAAC,cAAc,EAAE,MAAM,EAAE,eAAe,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC;QACvE,0BAA0B,CAAC,UAAU,EAAE,MAAM,EAAE,eAAe,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC;QAClF,6BAA6B,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,eAAe,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC;QACrF,oBAAoB,IAAI;YAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;YAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;SAAE,CAAC;QACnE,cAAc,CAAC,OAAO,CAAC,EAAE;YAAE,iCAAiC,CAAC,EAAE,OAAO,CAAA;SAAE,GAAG;YAC1E,QAAQ,EAAE,MAAM,EAAE,CAAC;YACnB,QAAQ,EAAE,MAAM,EAAE,CAAC;SACnB,CAAC;QACF,4BAA4B,IAAI,IAAI,CAAC;QACrC,6BAA6B,CAAC,OAAO,CAAC,EAAE;YACvC,KAAK,CAAC,EAAE,OAAO,CAAC;YAChB,WAAW,CAAC,EAAE,MAAM,CAAC;YACrB,iCAAiC,CAAC,EAAE,OAAO,CAAC;SAC5C,GAAG,MAAM,CAAC;QACX,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,UAAU,GAAG,IAAI,CAAC;QACvE,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;QAC1C,oBAAoB,CAAC,OAAO,CAAC,EAAE;YAAE,SAAS,CAAC,EAAE,OAAO,CAAA;SAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QACvE,0BAA0B,IAAI,IAAI,CAAC;QACnC,YAAY,CACX,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,IAAI,KAAK;YAAE,SAAS,EAAE,SAAS,CAAC;YAAC,KAAK,EAAE,SAAS,CAAC;YAAC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;SAAE,GAC5F,IAAI,CAAC;QACR,oBAAoB,IAAI,IAAI,CAAC;QAC7B,kBAAkB,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QACvD,qBAAqB,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACjD,mBAAmB,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,CAAC;QAChD,oBAAoB,IAAI,IAAI,CAAC;QAC7B,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,CAAC;QACzE,kBAAkB,IAAI,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC5C,4BAA4B,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;QAC9C,uCAAuC,CACtC,KAAK,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,SAAS,EAC9B,eAAe,CAAC,EAAE,SAAS,GACzB,OAAO,CAAC,IAAI,CAAC,CAAC;QACjB,iBAAiB,CAAC,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACrD,kBAAkB,IAAI,IAAI,CAAC;QAC3B,uBAAuB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;QACzC,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;QACpC,wCAAwC,IAAI,OAAO,CAAC;QACpD,iBAAiB,IAAI,IAAI,CAAC;QAC1B,gBAAgB,CAAC,iBAAiB,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QAC5D,mBAAmB,IAAI,IAAI,CAAC;QAC5B,mBAAmB,CAClB,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE,UAAU,CAAC,uBAAuB,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,GAC/D,OAAO,CAAC;YAAE,SAAS,EAAE,OAAO,CAAA;SAAE,CAAC,CAAC;QACnC,uBAAuB,CAAC,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,GAAG,oBAAoB,EAAE,CAAC;QAChF,wBAAwB,IAAI,oBAAoB,EAAE,CAAC;QACnD,kBAAkB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QACxD,kBAAkB,CAAC,cAAc,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QACxE,yBAAyB,CAAC,eAAe,CAAC,EAAE,oBAAoB,EAAE,GAAG,IAAI,CAAC;QAC1E,yBAAyB,CAAC,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,EAAE,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC7F,iBAAiB,CAAC,IAAI,EAAE,OAAO,GAAG,QAAQ,EAAE,kBAAkB,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QACxF,8BAA8B,CAC7B,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,OAAO,GAAG,SAAS,EAC7B,aAAa,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,SAAS,EACrC,OAAO,CAAC,EAAE;YAAE,eAAe,CAAC,EAAE,OAAO,CAAA;SAAE,GACrC,OAAO,CAAC,IAAI,CAAC,CAAC;QACjB,sBAAsB,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;QACvE,qBAAqB,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QAC/E,oBAAoB,CAAC,MAAM,EAAE,oBAAoB,EAAE,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;QAC3G,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QACzE,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;QACrC,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QACjD,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAAC;QACzF,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QACjD,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;QACpC,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;QACnC,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;QACtC,oBAAoB,IAAI,IAAI,CAAC;QAC7B,sBAAsB,IAAI,IAAI,CAAC;QAC/B,gBAAgB,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAAC;QAChD,mBAAmB,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CAAC;QAChD,mBAAmB,IAAI,IAAI,CAAC;QAC5B,yBAAyB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;QAClD,oBAAoB,IAAI,IAAI,CAAC;QAC7B,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;QACpC,kBAAkB,IAAI,IAAI,CAAC;QAC3B,iBAAiB,IAAI,IAAI,CAAC;QAC1B,oBAAoB,IAAI,IAAI,CAAC;QAC7B,aAAa,IAAI,IAAI,CAAC;QACtB,qBAAqB,CAAC,KAAK,EAAE;YAAE,QAAQ,EAAE,MAAM,CAAC;YAAC,EAAE,EAAE,MAAM,CAAA;SAAE,GAAG,IAAI,CAAC;QACrE,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,kBAAkB,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QAChF,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,CAAC,oBAAoB,CAAC,EAAE,oBAAoB,GAAG,IAAI,CAAC;KACxD;CACD"}
1
+ {"version":3,"file":"interactive-mode-surface.d.ts","sourceRoot":"","sources":["../../../src/modes/interactive/interactive-mode-surface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AACnE,4EAA4E;AAE5E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAC1E,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC/E,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAC;AACjF,OAAO,KAAK,EACX,YAAY,EACZ,YAAY,EACZ,iBAAiB,EACjB,GAAG,EACH,aAAa,EACb,oBAAoB,EACpB,oBAAoB,EACpB,gBAAgB,EAChB,wBAAwB,EACxB,SAAS,EACT,SAAS,EACT,aAAa,EACb,uBAAuB,EACvB,wBAAwB,EACxB,uBAAuB,EACvB,eAAe,EACf,0BAA0B,EAC1B,kBAAkB,EAClB,wBAAwB,EACxB,sBAAsB,EACtB,iBAAiB,EACjB,yBAAyB,EACzB,UAAU,EACV,kBAAkB,EAClB,sBAAsB,EACtB,oBAAoB,EACpB,aAAa,EACb,OAAO,EACP,sBAAsB,EACtB,KAAK,EACL,iBAAiB,EACjB,aAAa,EACb,cAAc,EACd,mBAAmB,EACnB,0BAA0B,EAC1B,kBAAkB,EAClB,cAAc,EACd,YAAY,EACZ,UAAU,EACV,KAAK,EACL,GAAG,EACH,wBAAwB,EACxB,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AAEzE,OAAO,QAAQ,4BAA4B,CAAC;IAC3C,UAAU,mBAAmB;QAC5B,wBAAwB,CAAC,UAAU,CAAC,EAAE,UAAU,GAAG,MAAM,GAAG,SAAS,CAAC;QACtE,6BAA6B,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,EAAE,UAAU,CAAC,EAAE,UAAU,GAAG,MAAM,GAAG,SAAS,CAAC;QAC5G,oCAAoC,CAAC,eAAe,EAAE,eAAe,GAAG,kBAAkB,EAAE,CAAC;QAC7F,8BAA8B,IAAI,oBAAoB,CAAC;QACvD,wBAAwB,CAAC,aAAa,EAAE,YAAY,EAAE,GAAG,YAAY,EAAE,CAAC;QACxE,yBAAyB,IAAI,IAAI,CAAC;QAClC,0BAA0B,CAAC,eAAe,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC;QAC9D,yBAAyB,CAAC,eAAe,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC;QAC7D,2BAA2B,EAAE,MAAM,GAAG,SAAS,CAAC;QAChD,gCAAgC,EAAE,OAAO,CAAC;QAC1C,qBAAqB,EAAE,OAAO,CAAC;QAC/B,kCAAkC,EAAE,SAAS,EAAE,CAAC;QAChD,mCAAmC,IAAI,IAAI,CAAC;QAC5C,4BAA4B,IAAI,OAAO,CAAC;QACxC,yBAAyB,IAAI,IAAI,CAAC;QAClC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;QACtB,uBAAuB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;QACzC,yBAAyB,CAAC,eAAe,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QACtE,mBAAmB,IAAI,IAAI,CAAC;QAC5B,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;QACrB,sBAAsB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QAC5C,sBAAsB,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;QACtD,sBAAsB,IAAI,MAAM,GAAG,SAAS,CAAC;QAC7C,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;QAC9C,4BAA4B,IAAI,aAAa,CAAC;QAC9C,uBAAuB,IAAI,mBAAmB,EAAE,CAAC;QACjD,iBAAiB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;QACrC,0BAA0B,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;QACjD,iBAAiB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;QACrC,oBAAoB,IAAI,MAAM,CAAC;QAC/B,sBAAsB,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;QACzF,sBAAsB,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;QAC/C,wBAAwB,IAAI,OAAO,CAAC;QACpC,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,UAAU,GAAG,MAAM,CAAC;QAChE,mBAAmB,CAAC,YAAY,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,UAAU,GAAG,MAAM,CAAC;QAC3E,4BAA4B,CAAC,UAAU,CAAC,EAAE,UAAU,GAAG,MAAM,CAAC;QAC9D,wBAAwB,CAAC,YAAY,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,UAAU,GAAG,MAAM,CAAC;QAChF,6BAA6B,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;QAC9D,kCAAkC,CACjC,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;SAAE,CAAC,GACnD,MAAM,CAAC;QACV,yBAAyB,CAAC,UAAU,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,UAAU,CAAC,EAAE,UAAU,CAAA;SAAE,CAAC,GAAG,MAAM,EAAE,CAAC;QAClG,oBAAoB,CAAC,UAAU,CAAC,EAAE,UAAU,GAAG;YAC9C,KAAK,EAAE,MAAM,CAAC;YACd,UAAU,CAAC,EAAE,MAAM,CAAC;YACpB,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC;SAC1B,CAAC;QACF,aAAa,CAAC,UAAU,CAAC,EAAE,UAAU,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,CAAC;QACpE,eAAe,CAAC,UAAU,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC;QAClD,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,UAAU,CAAC,EAAE,UAAU,CAAA;SAAE,CAAC,GAAG,KAAK,CAAC;YAChF,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAAC;YACnC,KAAK,EAAE,KAAK,CAAC;gBAAE,IAAI,EAAE,MAAM,CAAC;gBAAC,UAAU,CAAC,EAAE,UAAU,CAAA;aAAE,CAAC,CAAC;YACxD,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC;gBAAE,IAAI,EAAE,MAAM,CAAC;gBAAC,UAAU,CAAC,EAAE,UAAU,CAAA;aAAE,CAAC,CAAC,CAAC;SACxE,CAAC,CAAC;QACH,iBAAiB,CAChB,MAAM,EAAE,KAAK,CAAC;YACb,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAAC;YACnC,KAAK,EAAE,KAAK,CAAC;gBAAE,IAAI,EAAE,MAAM,CAAC;gBAAC,UAAU,CAAC,EAAE,UAAU,CAAA;aAAE,CAAC,CAAC;YACxD,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC;gBAAE,IAAI,EAAE,MAAM,CAAC;gBAAC,UAAU,CAAC,EAAE,UAAU,CAAA;aAAE,CAAC,CAAC,CAAC;SACxE,CAAC,EACF,OAAO,EAAE;YACR,UAAU,EAAE,CAAC,IAAI,EAAE;gBAAE,IAAI,EAAE,MAAM,CAAC;gBAAC,UAAU,CAAC,EAAE,UAAU,CAAA;aAAE,KAAK,MAAM,CAAC;YACxE,iBAAiB,EAAE,CAAC,IAAI,EAAE;gBAAE,IAAI,EAAE,MAAM,CAAC;gBAAC,UAAU,CAAC,EAAE,UAAU,CAAA;aAAE,EAAE,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC;SAC/F,GACC,MAAM,CAAC;QACV,qBAAqB,CAAC,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG,UAAU,GAAG,SAAS,CAAC;QAC/F,oBAAoB,CAAC,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,UAAU,GAAG,MAAM,CAAC;QACjE,iBAAiB,CAAC,WAAW,EAAE,SAAS,kBAAkB,EAAE,EAAE,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG,MAAM,CAAC;QAC5G,qBAAqB,CAAC,OAAO,EAAE;YAC9B,YAAY,EAAE,aAAa,CAAC;gBAAE,IAAI,EAAE,MAAM,CAAA;aAAE,CAAC,CAAC;YAC9C,MAAM,EAAE,aAAa,CAAC;gBAAE,QAAQ,EAAE,MAAM,CAAC;gBAAC,IAAI,EAAE,MAAM,CAAA;aAAE,CAAC,CAAC;YAC1D,OAAO,EAAE,aAAa,CAAC;gBAAE,QAAQ,EAAE,MAAM,CAAC;gBAAC,IAAI,EAAE,MAAM,CAAA;aAAE,CAAC,CAAC;YAC3D,UAAU,EAAE,aAAa,CAAC;gBAAE,IAAI,EAAE,MAAM,CAAC;gBAAC,UAAU,CAAC,EAAE,UAAU,CAAA;aAAE,CAAC,CAAC;YACrE,gBAAgB,EAAE;gBACjB,OAAO,CAAC,EAAE,MAAM,CAAC;gBACjB,MAAM,CAAC,EAAE,MAAM,CAAC;gBAChB,OAAO,CAAC,EAAE,MAAM,CAAC;gBACjB,UAAU,CAAC,EAAE,MAAM,CAAC;aACpB,CAAC;YACF,eAAe,CAAC,EAAE,SAAS,CAAC;SAC5B,GAAG,IAAI,CAAC;QACT,mBAAmB,CAAC,OAAO,CAAC,EAAE;YAC7B,UAAU,CAAC,EAAE,KAAK,CAAC;gBAAE,IAAI,EAAE,MAAM,CAAC;gBAAC,UAAU,CAAC,EAAE,UAAU,CAAA;aAAE,CAAC,CAAC;YAC9D,KAAK,CAAC,EAAE,OAAO,CAAC;YAChB,wBAAwB,CAAC,EAAE,OAAO,CAAC;YACnC,eAAe,CAAC,EAAE,SAAS,CAAC;SAC5B,GAAG,IAAI,CAAC;QACT,4BAA4B,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;QAC9C,oBAAoB,IAAI,IAAI,CAAC;QAC7B,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;QACtC,uBAAuB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;QACxE,yBAAyB,IAAI,IAAI,CAAC;QAClC,2BAA2B,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,CAAC,YAAY,CAAC,mBAAmB,CAAC,CAAC,CAAC;QAC7F,uBAAuB,CAAC,eAAe,EAAE,eAAe,GAAG,IAAI,CAAC;QAChE,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;QAChE,uBAAuB,IAAI,MAAM,CAAC;QAClC,mBAAmB,IAAI,mBAAmB,CAAC;QAC3C,kBAAkB,IAAI,IAAI,CAAC;QAC3B,iBAAiB,IAAI,IAAI,CAAC;QAC1B,oBAAoB,IAAI,IAAI,CAAC;QAC7B,iBAAiB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;QAC1C,mBAAmB,CAAC,OAAO,CAAC,EAAE,sBAAsB,GAAG,IAAI,CAAC;QAC5D,sBAAsB,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC7C,kBAAkB,CACjB,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,KAAK,SAAS,GAAG;YAAE,OAAO,CAAC,IAAI,IAAI,CAAA;SAAE,CAAC,GAAG,SAAS,EAC5F,OAAO,CAAC,EAAE,sBAAsB,GAC9B,IAAI,CAAC;QACR,qBAAqB,IAAI,IAAI,CAAC;QAC9B,gBAAgB,IAAI,IAAI,CAAC;QACzB,aAAa,IAAI,IAAI,CAAC;QACtB,qBAAqB,CACpB,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,GAAG;YAAE,OAAO,CAAC,IAAI,IAAI,CAAA;SAAE,CAAC,EACtD,eAAe,EAAE,OAAO,EACxB,aAAa,EAAE,OAAO,GACpB,IAAI,CAAC;QACR,kBAAkB,CACjB,OAAO,EACJ,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE,0BAA0B,KAAK,SAAS,GAAG;YAAE,OAAO,CAAC,IAAI,IAAI,CAAA;SAAE,CAAC,GACpG,SAAS,GACV,IAAI,CAAC;QACR,kBAAkB,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,KAAK,SAAS,GAAG;YAAE,OAAO,CAAC,IAAI,IAAI,CAAA;SAAE,CAAC,GAAG,SAAS,GAAG,IAAI,CAAC;QAC5G,iCAAiC,CAChC,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK;YAAE,OAAO,CAAC,EAAE,OAAO,CAAC;YAAC,IAAI,CAAC,EAAE,MAAM,CAAA;SAAE,GAAG,SAAS,GACzE,MAAM,IAAI,CAAC;QACd,oCAAoC,IAAI,IAAI,CAAC;QAC7C,oBAAoB,IAAI,iBAAiB,CAAC;QAC1C,gCAAgC,IAAI,IAAI,CAAC;QACzC,uBAAuB,CAAC,OAAO,CAAC,EAAE,QAAQ,GAAG,YAAY,GAAG,MAAM,IAAI,CAAC;QACvE,gCAAgC,IAAI,MAAM,IAAI,CAAC;QAC/C,8BAA8B,IAAI,OAAO,CAAC;QAC1C,uBAAuB,IAAI,OAAO,CAAC;QACnC,yBAAyB,CAAC,QAAQ,EAAE,yBAAyB,GAAG,MAAM,IAAI,CAAC;QAC3E,wBAAwB,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC;QACxE,4BAA4B,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;QAChD,yBAAyB,CAAC,GAAG,EAAE,MAAM,GAAG,mBAAmB,CAAC;QAC5D,wBAAwB,IAAI,kBAAkB,CAAC;QAC/C,qBAAqB,CACpB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EAAE,EACjB,IAAI,CAAC,EAAE,wBAAwB,GAC7B,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;QAC/B,qBAAqB,CAAC,QAAQ,CAAC,EAAE,0BAA0B,GAAG,IAAI,CAAC;QACnE,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,wBAAwB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;QACxG,0BAA0B,CAAC,KAAK,EAAE,sBAAsB,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;QACvF,kBAAkB,CACjB,KAAK,EAAE,MAAM,EACb,WAAW,CAAC,EAAE,MAAM,EACpB,IAAI,CAAC,EAAE,wBAAwB,GAC7B,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;QAC/B,kBAAkB,CAAC,QAAQ,CAAC,EAAE,uBAAuB,GAAG,IAAI,CAAC;QAC7D,mBAAmB,CAClB,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,MAAM,EAChB,IAAI,CAAC,EAAE,wBAAwB,GAC7B,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;QAC/B,mBAAmB,CAAC,QAAQ,CAAC,EAAE,wBAAwB,GAAG,IAAI,CAAC;QAC/D,wBAAwB,CAAC,OAAO,EAAE,aAAa,GAAG,SAAS,GAAG,IAAI,CAAC;QACnE,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,GAAG,IAAI,CAAC;QAChF,mBAAmB,CAAC,CAAC,EACpB,OAAO,EAAE,CACR,GAAG,EAAE,GAAG,EACR,KAAK,EAAE,KAAK,EACZ,WAAW,EAAE,kBAAkB,EAC/B,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,IAAI,KACrB,CAAC,SAAS,GAAG;YAAE,OAAO,CAAC,IAAI,IAAI,CAAA;SAAE,CAAC,GAAG,OAAO,CAAC,SAAS,GAAG;YAAE,OAAO,CAAC,IAAI,IAAI,CAAA;SAAE,CAAC,EACnF,OAAO,CAAC,EAAE;YACT,OAAO,CAAC,EAAE,QAAQ,GAAG,YAAY,CAAC;YAClC,OAAO,CAAC,EAAE,OAAO,CAAC;YAClB,wBAAwB,CAAC,EAAE,OAAO,CAAC;YACnC,uBAAuB,CAAC,EAAE,OAAO,CAAC;YAClC,4EAA4E;YAC5E,qBAAqB,CAAC,EAAE,OAAO,CAAC;YAChC,MAAM,CAAC,EAAE,WAAW,CAAC;YACrB,cAAc,CAAC,EAAE,cAAc,GAAG,CAAC,MAAM,cAAc,CAAC,CAAC;YACzD,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,IAAI,CAAC;SAC3C,GACC,OAAO,CAAC,CAAC,CAAC,CAAC;QACd,kBAAkB,CAAC,aAAa,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC/E,gBAAgB,IAAI,IAAI,CAAC;QACzB,yBAAyB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;QAC3C,wBAAwB,IAAI,IAAI,CAAC;QACjC,0BAA0B,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;QAC/C,yBAAyB,IAAI,OAAO,CAAC;QACrC,0BAA0B,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;QAC5C,yBAAyB,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;QACvD,gBAAgB,IAAI,IAAI,CAAC;QACzB,WAAW,CAAC,KAAK,EAAE,iBAAiB,GAAG,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QAC7E,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC;QAC7C,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;QACrD,4EAA4E;QAC5E,qBAAqB,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI,CAAC;QAChD,oFAAoF;QACpF,uBAAuB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;QACzC,wBAAwB,IAAI,wBAAwB,CAAC;QACrD,oBAAoB,CAAC,KAAK,EAAE,gBAAgB,GAAG,SAAS,CAAC;QACzD,2BAA2B,CAAC,MAAM,EAAE,wBAAwB,GAAG,IAAI,CAAC;QACpE,uBAAuB,CAAC,IAAI,EAAE,YAAY,GAAG,gBAAgB,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;QACnF,6BAA6B,CAAC,OAAO,EAAE,gBAAgB,GAAG,IAAI,CAAC;QAC/D,gBAAgB,CAAC,OAAO,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE;YAAE,eAAe,CAAC,EAAE,OAAO,CAAA;SAAE,GAAG,IAAI,CAAC;QACvF,oBAAoB,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI,CAAC;QAC/C,oBAAoB,CACnB,cAAc,EAAE,cAAc,EAC9B,OAAO,CAAC,EAAE;YAAE,YAAY,CAAC,EAAE,OAAO,CAAC;YAAC,eAAe,CAAC,EAAE,OAAO,CAAA;SAAE,GAC7D,IAAI,CAAC;QACR,oBAAoB,CACnB,OAAO,EAAE,YAAY,EAAE,EACvB,OAAO,CAAC,EAAE;YACT,YAAY,CAAC,EAAE,OAAO,CAAC;YACvB,eAAe,CAAC,EAAE,OAAO,CAAC;YAC1B,0BAA0B,CAAC,EAAE,wBAAwB,CAAC;SACtD,GACC,IAAI,CAAC;QACR,qBAAqB,IAAI,IAAI,CAAC;QAC9B,6BAA6B,CAAC,OAAO,CAAC,EAAE;YAAE,aAAa,CAAC,EAAE,OAAO,CAAA;SAAE,GAAG,IAAI,CAAC;QAC3E,YAAY,IAAI,OAAO,CAAC,qBAAqB,CAAC,CAAC;QAC/C,iBAAiB,CAAC,UAAU,EAAE,qBAAqB,GAAG,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QAC7E,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;QAC5C,gCAAgC,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;QACxD,gCAAgC,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;QACrD,6BAA6B,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;QAC/C,uBAAuB,CAAC,OAAO,CAAC,EAAE;YACjC,0BAA0B,CAAC,EAAE,wBAAwB,CAAC;YACtD,sBAAsB,CAAC,EAAE,OAAO,CAAC;SACjC,GAAG,IAAI,CAAC;QACT,WAAW,IAAI,IAAI,CAAC;QACpB,wBAAwB,IAAI,OAAO,CAAC;QACpC,WAAW,IAAI,IAAI,CAAC;QACpB,QAAQ,CAAC,OAAO,CAAC,EAAE;YAAE,UAAU,CAAC,EAAE,OAAO,CAAA;SAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QAC5D,qBAAqB,IAAI,KAAK,CAAC;QAC/B,aAAa,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,CAAC;QACnC,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAAC;QAC1D,sBAAsB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;QACxC,sBAAsB,IAAI,IAAI,CAAC;QAC/B,wBAAwB,IAAI,IAAI,CAAC;QACjC,WAAW,IAAI,IAAI,CAAC;QACpB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;QAChC,aAAa,IAAI,IAAI,CAAC;QACtB,oBAAoB,IAAI,IAAI,CAAC;QAC7B,uBAAuB,IAAI,IAAI,CAAC;QAChC,kBAAkB,IAAI,IAAI,CAAC;QAC3B,UAAU,CAAC,SAAS,EAAE,SAAS,GAAG,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QAC7D,yBAAyB,IAAI,IAAI,CAAC;QAClC,gBAAgB,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI,CAAC;QAC1C,6BAA6B,IAAI,IAAI,CAAC;QACtC,6BAA6B,IAAI,IAAI,CAAC;QACtC,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;QACpC,WAAW,IAAI,IAAI,CAAC;QACpB,SAAS,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;QACtC,WAAW,CAAC,cAAc,EAAE,MAAM,EAAE,eAAe,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC;QACvE,0BAA0B,CAAC,UAAU,EAAE,MAAM,EAAE,eAAe,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC;QAClF,6BAA6B,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,eAAe,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC;QACrF,oBAAoB,IAAI;YAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;YAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;SAAE,CAAC;QACnE,cAAc,CAAC,OAAO,CAAC,EAAE;YAAE,iCAAiC,CAAC,EAAE,OAAO,CAAA;SAAE,GAAG;YAC1E,QAAQ,EAAE,MAAM,EAAE,CAAC;YACnB,QAAQ,EAAE,MAAM,EAAE,CAAC;SACnB,CAAC;QACF,4BAA4B,IAAI,IAAI,CAAC;QACrC,6BAA6B,CAAC,OAAO,CAAC,EAAE;YACvC,KAAK,CAAC,EAAE,OAAO,CAAC;YAChB,WAAW,CAAC,EAAE,MAAM,CAAC;YACrB,iCAAiC,CAAC,EAAE,OAAO,CAAC;SAC5C,GAAG,MAAM,CAAC;QACX,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,UAAU,GAAG,IAAI,CAAC;QACvE,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;QAC1C,oBAAoB,CAAC,OAAO,CAAC,EAAE;YAAE,SAAS,CAAC,EAAE,OAAO,CAAA;SAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QACvE,0BAA0B,IAAI,IAAI,CAAC;QACnC,YAAY,CACX,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,IAAI,KAAK;YAAE,SAAS,EAAE,SAAS,CAAC;YAAC,KAAK,EAAE,SAAS,CAAC;YAAC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;SAAE,GAC5F,IAAI,CAAC;QACR,oBAAoB,IAAI,IAAI,CAAC;QAC7B,kBAAkB,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QACvD,qBAAqB,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACjD,mBAAmB,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,CAAC;QAChD,oBAAoB,IAAI,IAAI,CAAC;QAC7B,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,CAAC;QACzE,kBAAkB,IAAI,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC5C,4BAA4B,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;QAC9C,uCAAuC,CACtC,KAAK,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,SAAS,EAC9B,eAAe,CAAC,EAAE,SAAS,GACzB,OAAO,CAAC,IAAI,CAAC,CAAC;QACjB,iBAAiB,CAAC,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACrD,kBAAkB,IAAI,IAAI,CAAC;QAC3B,uBAAuB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;QACzC,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;QACpC,wCAAwC,IAAI,OAAO,CAAC;QACpD,iBAAiB,IAAI,IAAI,CAAC;QAC1B,gBAAgB,CAAC,iBAAiB,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QAC5D,mBAAmB,IAAI,IAAI,CAAC;QAC5B,mBAAmB,CAClB,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE,UAAU,CAAC,uBAAuB,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,GAC/D,OAAO,CAAC;YAAE,SAAS,EAAE,OAAO,CAAA;SAAE,CAAC,CAAC;QACnC,uBAAuB,CAAC,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,GAAG,oBAAoB,EAAE,CAAC;QAChF,wBAAwB,IAAI,oBAAoB,EAAE,CAAC;QACnD,kBAAkB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QACxD,kBAAkB,CAAC,cAAc,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QACxE,yBAAyB,CAAC,eAAe,CAAC,EAAE,oBAAoB,EAAE,GAAG,IAAI,CAAC;QAC1E,yBAAyB,CAAC,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,EAAE,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC7F,iBAAiB,CAAC,IAAI,EAAE,OAAO,GAAG,QAAQ,EAAE,kBAAkB,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QACxF,8BAA8B,CAC7B,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,OAAO,GAAG,SAAS,EAC7B,aAAa,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,SAAS,EACrC,OAAO,CAAC,EAAE;YAAE,eAAe,CAAC,EAAE,OAAO,CAAA;SAAE,GACrC,OAAO,CAAC,IAAI,CAAC,CAAC;QACjB,sBAAsB,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;QACvE,qBAAqB,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QAC/E,oBAAoB,CAAC,MAAM,EAAE,oBAAoB,EAAE,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;QAC3G,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QACzE,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;QACrC,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QACjD,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAAC;QACzF,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QACjD,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;QACpC,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;QACnC,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;QACtC,oBAAoB,IAAI,IAAI,CAAC;QAC7B,sBAAsB,IAAI,IAAI,CAAC;QAC/B,gBAAgB,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAAC;QAChD,mBAAmB,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CAAC;QAChD,mBAAmB,IAAI,IAAI,CAAC;QAC5B,yBAAyB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;QAClD,oBAAoB,IAAI,IAAI,CAAC;QAC7B,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;QACpC,kBAAkB,IAAI,IAAI,CAAC;QAC3B,iBAAiB,IAAI,IAAI,CAAC;QAC1B,oBAAoB,IAAI,IAAI,CAAC;QAC7B,aAAa,IAAI,IAAI,CAAC;QACtB,qBAAqB,CAAC,KAAK,EAAE;YAAE,QAAQ,EAAE,MAAM,CAAC;YAAC,EAAE,EAAE,MAAM,CAAA;SAAE,GAAG,IAAI,CAAC;QACrE,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,kBAAkB,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QAChF,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,CAAC,oBAAoB,CAAC,EAAE,oBAAoB,GAAG,IAAI,CAAC;KACxD;CACD"}
@@ -1 +1 @@
1
- {"version":3,"file":"interactive-mode-surface.js","sourceRoot":"","sources":["../../../src/modes/interactive/interactive-mode-surface.ts"],"names":[],"mappings":"","sourcesContent":["import type { AssistantMessage, Usage } from \"@bastani/pi-ai/compat\";\nimport type { ThinkingLevel } from \"@earendil-works/pi-agent-core\";\n/** Method surface installed onto InteractiveModeBase by sibling modules. */\n\nimport type { MarkdownTransformer } from \"../../core/extensions/types.ts\";\nimport type { CustomEntry, SessionEntry } from \"../../core/session-manager.ts\";\nimport type { FullscreenExitOutput } from \"../../core/settings-manager.ts\";\nimport type { ToolStatus } from \"../../utils/tools-manager.ts\";\nimport type { JsonAgentSessionEvent } from \"../json-event.ts\";\nimport type { AtomicWorkingLoader } from \"./components/atomic-working-status.ts\";\nimport type {\n\tAgentMessage,\n\tAgentSession,\n\tAgentSessionEvent,\n\tApi,\n\tAppKeybinding,\n\tAuthSelectorProvider,\n\tAutocompleteProvider,\n\tChatMessageEntry,\n\tChatMessageRenderOptions,\n\tComponent,\n\tContainer,\n\tEditorFactory,\n\tExtensionCommandContext,\n\tExtensionEditorComponent,\n\tExtensionInputComponent,\n\tExtensionRunner,\n\tExtensionSelectorComponent,\n\tExtensionUIContext,\n\tExtensionUIDialogOptions,\n\tExtensionWidgetOptions,\n\tHostCustomUiState,\n\tHostCustomUiStateListener,\n\tKeybinding,\n\tKeybindingsManager,\n\tLoaderIndicatorOptions,\n\tLoginDialogComponent,\n\tMarkdownTheme,\n\tMessage,\n\tMissingSessionCwdError,\n\tModel,\n\tOAuthSelectPrompt,\n\tOverlayHandle,\n\tOverlayOptions,\n\tProjectTrustContext,\n\tReadonlyFooterDataProvider,\n\tResourceDiagnostic,\n\tSessionContext,\n\tSlashCommand,\n\tSourceInfo,\n\tTheme,\n\tTUI,\n\tVerbatimCompactionResult,\n} from \"./interactive-mode-deps.ts\";\nimport type { InteractiveSubmission } from \"./interactive-submission.ts\";\n\ndeclare module \"./interactive-mode-base.ts\" {\n\tinterface InteractiveModeBase {\n\t\tgetAutocompleteSourceTag(sourceInfo?: SourceInfo): string | undefined;\n\t\tprefixAutocompleteDescription(description: string | undefined, sourceInfo?: SourceInfo): string | undefined;\n\t\tgetBuiltInCommandConflictDiagnostics(extensionRunner: ExtensionRunner): ResourceDiagnostic[];\n\t\tcreateBaseAutocompleteProvider(): AutocompleteProvider;\n\t\tbuildRemoteSlashCommands(localCommands: SlashCommand[]): SlashCommand[];\n\t\tsetupAutocompleteProvider(): void;\n\t\tshowStartupNoticesIfNeeded(targetContainer?: Container): void;\n\t\treportModelCatalogWarning(targetContainer?: Container): void;\n\t\treportedModelCatalogWarning: string | undefined;\n\t\thadLastChangelogVersionAtStartup: boolean;\n\t\tfirstRunNoticeVisible: boolean;\n\t\tfirstRunOnboardingNoticeComponents: Component[];\n\t\tinitializeFirstRunOnboardingMarkers(): void;\n\t\tisFirstRunOnboardingEligible(): boolean;\n\t\tclearFirstRunOnboardingUi(): void;\n\t\tinit(): Promise<void>;\n\t\tcompleteDeferredStartup(): Promise<void>;\n\t\tretryDeferredModelRestore(targetContainer?: Container): Promise<void>;\n\t\tupdateTerminalTitle(): void;\n\t\trun(): Promise<void>;\n\t\tcheckForPackageUpdates(): Promise<string[]>;\n\t\tcheckTmuxKeyboardSetup(): Promise<string | undefined>;\n\t\tgetChangelogForDisplay(): string | undefined;\n\t\treportInstallTelemetry(version: string): void;\n\t\tgetMarkdownThemeWithSettings(): MarkdownTheme;\n\t\tgetMarkdownTransformers(): MarkdownTransformer[];\n\t\tformatDisplayPath(p: string): string;\n\t\tformatExtensionDisplayPath(path: string): string;\n\t\tformatContextPath(p: string): string;\n\t\tgetStartupModelLabel(): string;\n\t\tgetStartupIdentityText(maxWidth?: number, gap?: number, manifestoPhase?: number): string;\n\t\tgetAtomicAnsiMarkLines(gap?: number): string[];\n\t\tgetStartupExpansionState(): boolean;\n\t\tgetShortPath(fullPath: string, sourceInfo?: SourceInfo): string;\n\t\tgetCompactPathLabel(resourcePath: string, sourceInfo?: SourceInfo): string;\n\t\tgetCompactPackageSourceLabel(sourceInfo?: SourceInfo): string;\n\t\tgetCompactExtensionLabel(resourcePath: string, sourceInfo?: SourceInfo): string;\n\t\tgetCompactDisplayPathSegments(resourcePath: string): string[];\n\t\tgetCompactNonPackageExtensionLabel(\n\t\t\tresourcePath: string,\n\t\t\tindex: number,\n\t\t\tallPaths: Array<{ path: string; segments: string[] }>,\n\t\t): string;\n\t\tgetCompactExtensionLabels(extensions: Array<{ path: string; sourceInfo?: SourceInfo }>): string[];\n\t\tgetDisplaySourceInfo(sourceInfo?: SourceInfo): {\n\t\t\tlabel: string;\n\t\t\tscopeLabel?: string;\n\t\t\tcolor: \"accent\" | \"muted\";\n\t\t};\n\t\tgetScopeGroup(sourceInfo?: SourceInfo): \"user\" | \"project\" | \"path\";\n\t\tisPackageSource(sourceInfo?: SourceInfo): boolean;\n\t\tbuildScopeGroups(items: Array<{ path: string; sourceInfo?: SourceInfo }>): Array<{\n\t\t\tscope: \"user\" | \"project\" | \"path\";\n\t\t\tpaths: Array<{ path: string; sourceInfo?: SourceInfo }>;\n\t\t\tpackages: Map<string, Array<{ path: string; sourceInfo?: SourceInfo }>>;\n\t\t}>;\n\t\tformatScopeGroups(\n\t\t\tgroups: Array<{\n\t\t\t\tscope: \"user\" | \"project\" | \"path\";\n\t\t\t\tpaths: Array<{ path: string; sourceInfo?: SourceInfo }>;\n\t\t\t\tpackages: Map<string, Array<{ path: string; sourceInfo?: SourceInfo }>>;\n\t\t\t}>,\n\t\t\toptions: {\n\t\t\t\tformatPath: (item: { path: string; sourceInfo?: SourceInfo }) => string;\n\t\t\t\tformatPackagePath: (item: { path: string; sourceInfo?: SourceInfo }, source: string) => string;\n\t\t\t},\n\t\t): string;\n\t\tfindSourceInfoForPath(p: string, sourceInfos: Map<string, SourceInfo>): SourceInfo | undefined;\n\t\tformatPathWithSource(p: string, sourceInfo?: SourceInfo): string;\n\t\tformatDiagnostics(diagnostics: readonly ResourceDiagnostic[], sourceInfos: Map<string, SourceInfo>): string;\n\t\taddResourceDisclosure(options: {\n\t\t\tcontextFiles: ReadonlyArray<{ path: string }>;\n\t\t\tskills: ReadonlyArray<{ filePath: string; name: string }>;\n\t\t\tprompts: ReadonlyArray<{ filePath: string; name: string }>;\n\t\t\textensions: ReadonlyArray<{ path: string; sourceInfo?: SourceInfo }>;\n\t\t\tthemes: ReadonlyArray<{ name?: string; sourcePath?: string; sourceInfo?: SourceInfo }>;\n\t\t\texpandedSections: {\n\t\t\t\tcontext?: string;\n\t\t\t\tskills?: string;\n\t\t\t\tprompts?: string;\n\t\t\t\textensions?: string;\n\t\t\t\tthemes?: string;\n\t\t\t};\n\t\t\ttargetContainer?: Container;\n\t\t}): void;\n\t\tshowLoadedResources(options?: {\n\t\t\textensions?: Array<{ path: string; sourceInfo?: SourceInfo }>;\n\t\t\tforce?: boolean;\n\t\t\tshowDiagnosticsWhenQuiet?: boolean;\n\t\t\ttargetContainer?: Container;\n\t\t}): void;\n\t\tbindCurrentSessionExtensions(): Promise<void>;\n\t\tapplyRuntimeSettings(): void;\n\t\trebindCurrentSession(): Promise<void>;\n\t\thandleFatalRuntimeError(prefix: string, error: unknown): Promise<never>;\n\t\trenderCurrentSessionState(): void;\n\t\tgetRegisteredToolDefinition(toolName: string): ReturnType<AgentSession[\"getToolDefinition\"]>;\n\t\tsetupExtensionShortcuts(extensionRunner: ExtensionRunner): void;\n\t\tsetExtensionStatus(key: string, text: string | undefined): void;\n\t\tgetWorkingLoaderMessage(): string;\n\t\tcreateWorkingLoader(): AtomicWorkingLoader;\n\t\tclearWorkingLoader(): void;\n\t\tstopWorkingLoader(): void;\n\t\tshowWorkingLoaderNow(): void;\n\t\tsetWorkingVisible(visible: boolean): void;\n\t\tsetWorkingIndicator(options?: LoaderIndicatorOptions): void;\n\t\tsetHiddenThinkingLabel(label?: string): void;\n\t\tsetExtensionWidget(\n\t\t\tkey: string,\n\t\t\tcontent: string[] | ((tui: TUI, thm: Theme) => Component & { dispose?(): void }) | undefined,\n\t\t\toptions?: ExtensionWidgetOptions,\n\t\t): void;\n\t\tclearExtensionWidgets(): void;\n\t\tresetExtensionUI(): void;\n\t\trenderWidgets(): void;\n\t\trenderWidgetContainer(\n\t\t\tcontainer: Container,\n\t\t\twidgets: Map<string, Component & { dispose?(): void }>,\n\t\t\tspacerWhenEmpty: boolean,\n\t\t\tleadingSpacer: boolean,\n\t\t): void;\n\t\tsetExtensionFooter(\n\t\t\tfactory:\n\t\t\t\t| ((tui: TUI, thm: Theme, footerData: ReadonlyFooterDataProvider) => Component & { dispose?(): void })\n\t\t\t\t| undefined,\n\t\t): void;\n\t\tsetExtensionHeader(factory: ((tui: TUI, thm: Theme) => Component & { dispose?(): void }) | undefined): void;\n\t\taddExtensionTerminalInputListener(\n\t\t\thandler: (data: string) => { consume?: boolean; data?: string } | undefined,\n\t\t): () => void;\n\t\tclearExtensionTerminalInputListeners(): void;\n\t\tgetHostCustomUiState(): HostCustomUiState;\n\t\tnotifyHostCustomUiStateListeners(): void;\n\t\tbeginHostInlineCustomUi(purpose?: \"prompt\" | \"navigation\"): () => void;\n\t\tbeginInlineCustomUiFocusDeferral(): () => void;\n\t\tshouldDeferInlineCustomUiFocus(): boolean;\n\t\tfocusHostInlineCustomUi(): boolean;\n\t\tonHostCustomUiStateChange(listener: HostCustomUiStateListener): () => void;\n\t\tonExtensionWidgetRelease(key: string, listener: () => void): () => void;\n\t\tnotifyExtensionWidgetRelease(key: string): void;\n\t\tcreateProjectTrustContext(cwd: string): ProjectTrustContext;\n\t\tcreateExtensionUIContext(): ExtensionUIContext;\n\t\tshowExtensionSelector(\n\t\t\ttitle: string,\n\t\t\toptions: string[],\n\t\t\topts?: ExtensionUIDialogOptions,\n\t\t): Promise<string | undefined>;\n\t\thideExtensionSelector(instance?: ExtensionSelectorComponent): void;\n\t\tshowExtensionConfirm(title: string, message: string, opts?: ExtensionUIDialogOptions): Promise<boolean>;\n\t\tpromptForMissingSessionCwd(error: MissingSessionCwdError): Promise<string | undefined>;\n\t\tshowExtensionInput(\n\t\t\ttitle: string,\n\t\t\tplaceholder?: string,\n\t\t\topts?: ExtensionUIDialogOptions,\n\t\t): Promise<string | undefined>;\n\t\thideExtensionInput(instance?: ExtensionInputComponent): void;\n\t\tshowExtensionEditor(\n\t\t\ttitle: string,\n\t\t\tprefill?: string,\n\t\t\topts?: ExtensionUIDialogOptions,\n\t\t): Promise<string | undefined>;\n\t\thideExtensionEditor(instance?: ExtensionEditorComponent): void;\n\t\tsetCustomEditorComponent(factory: EditorFactory | undefined): void;\n\t\tshowExtensionNotify(message: string, type?: \"info\" | \"warning\" | \"error\"): void;\n\t\tshowExtensionCustom<T>(\n\t\t\tfactory: (\n\t\t\t\ttui: TUI,\n\t\t\t\ttheme: Theme,\n\t\t\t\tkeybindings: KeybindingsManager,\n\t\t\t\tdone: (result: T) => void,\n\t\t\t) => (Component & { dispose?(): void }) | Promise<Component & { dispose?(): void }>,\n\t\t\toptions?: {\n\t\t\t\tpurpose?: \"prompt\" | \"navigation\";\n\t\t\t\toverlay?: boolean;\n\t\t\t\tdeferInlineCustomUiFocus?: boolean;\n\t\t\t\thandlesInternalUiAction?: boolean;\n\t\t\t\t/** Overlay-only: bound the overlay and reserve transcript scroll extent. */\n\t\t\t\treserveTranscriptRows?: boolean;\n\t\t\t\tsignal?: AbortSignal;\n\t\t\t\toverlayOptions?: OverlayOptions | (() => OverlayOptions);\n\t\t\t\tonHandle?: (handle: OverlayHandle) => void;\n\t\t\t},\n\t\t): Promise<T>;\n\t\tshowExtensionError(extensionPath: string, error: string, stack?: string): void;\n\t\tsetupKeyHandlers(): void;\n\t\thandleClipboardImagePaste(): Promise<void>;\n\t\tsetupEditorSubmitHandler(): void;\n\t\tdeliverStartupReplayPrompt(text: string): void;\n\t\trecoverCookedStartupInput(): boolean;\n\t\tdrainStartupReplayCommands(): Promise<void>;\n\t\tadvanceStartupInputReplay(submittedText: string): void;\n\t\tsubscribeToAgent(): void;\n\t\thandleEvent(event: AgentSessionEvent | JsonAgentSessionEvent): Promise<void>;\n\t\tgetUserMessageText(message: Message): string;\n\t\tshowStatus(message: string, persist?: boolean): void;\n\t\t/** Report a managed-tool (fd/rg) readiness update inside the transcript. */\n\t\tshowManagedToolStatus(status: ToolStatus): void;\n\t\t/** Bring fd/rg to readiness after first paint; progress lands in the transcript. */\n\t\tensureManagedToolsReady(): Promise<void>;\n\t\tchatMessageRenderOptions(): ChatMessageRenderOptions;\n\t\taddRenderedChatEntry(entry: ChatMessageEntry): Component;\n\t\taddCompactionBoundaryToChat(result: VerbatimCompactionResult): void;\n\t\taddCompactionCostNotice(kind: \"compaction\" | \"branch_summary\", usage: Usage): void;\n\t\tmaybeShowAssistantDiagnostics(message: AssistantMessage): void;\n\t\taddMessageToChat(message: AgentMessage, options?: { populateHistory?: boolean }): void;\n\t\taddCustomEntryToChat(entry: CustomEntry): void;\n\t\trenderSessionContext(\n\t\t\tsessionContext: SessionContext,\n\t\t\toptions?: { updateFooter?: boolean; populateHistory?: boolean },\n\t\t): void;\n\t\trenderSessionEntries(\n\t\t\tentries: SessionEntry[],\n\t\t\toptions?: {\n\t\t\t\tupdateFooter?: boolean;\n\t\t\t\tpopulateHistory?: boolean;\n\t\t\t\tsuppressCompactionBoundary?: VerbatimCompactionResult;\n\t\t\t},\n\t\t): void;\n\t\trenderInitialMessages(): void;\n\t\tattachStartupNoticesContainer(options?: { resetDetached?: boolean }): void;\n\t\tgetUserInput(): Promise<InteractiveSubmission>;\n\t\trunUserPromptTurn(submission: InteractiveSubmission | string): Promise<void>;\n\t\trenderDeferredUserInput(text: string): void;\n\t\tconsumeDeferredRenderedUserInput(text: string): boolean;\n\t\tdiscardDeferredRenderedUserInput(text: string): void;\n\t\tensureDeferredStartupComplete(): Promise<void>;\n\t\trebuildChatFromMessages(options?: {\n\t\t\tsuppressCompactionBoundary?: VerbatimCompactionResult;\n\t\t\tresetStartupDisclosure?: boolean;\n\t\t}): void;\n\t\thandleCtrlC(): void;\n\t\tinterruptActiveOperation(): boolean;\n\t\thandleCtrlD(): void;\n\t\tshutdown(options?: { fromSignal?: boolean }): Promise<void>;\n\t\temergencyTerminalExit(): never;\n\t\tuncaughtCrash(error: Error): never;\n\t\tgetCrashExtensionHint(error: unknown): string | undefined;\n\t\tcheckShutdownRequested(): Promise<void>;\n\t\tregisterSignalHandlers(): void;\n\t\tunregisterSignalHandlers(): void;\n\t\thandleCtrlZ(): void;\n\t\thandleFollowUp(): Promise<void>;\n\t\thandleDequeue(): void;\n\t\trefreshBuiltInHeader(): void;\n\t\tupdateEditorBorderColor(): void;\n\t\tcycleThinkingLevel(): void;\n\t\tcycleModel(direction: \"forward\" | \"backward\"): Promise<void>;\n\t\ttoggleToolOutputExpansion(): void;\n\t\tsetToolsExpanded(expanded: boolean): void;\n\t\ttoggleThinkingBlockVisibility(): void;\n\t\tupdateThinkingBlockVisibility(): void;\n\t\topenExternalEditor(): Promise<void>;\n\t\tclearEditor(): void;\n\t\tshowError(errorMessage: string): void;\n\t\tshowWarning(warningMessage: string, targetContainer?: Container): void;\n\t\tshowNewVersionNotification(newVersion: string, targetContainer?: Container): void;\n\t\tshowPackageUpdateNotification(packages: string[], targetContainer?: Container): void;\n\t\tgetAllQueuedMessages(): { steering: string[]; followUp: string[] };\n\t\tclearAllQueues(options?: { preserveUnprotectedCustomMessages?: boolean }): {\n\t\t\tsteering: string[];\n\t\t\tfollowUp: string[];\n\t\t};\n\t\tupdatePendingMessagesDisplay(): void;\n\t\trestoreQueuedMessagesToEditor(options?: {\n\t\t\tabort?: boolean;\n\t\t\tcurrentText?: string;\n\t\t\tpreserveUnprotectedCustomMessages?: boolean;\n\t\t}): number;\n\t\tqueueCompactionMessage(text: string, mode: \"steer\" | \"followUp\"): void;\n\t\tisExtensionCommand(text: string): boolean;\n\t\tflushCompactionQueue(options?: { willRetry?: boolean }): Promise<void>;\n\t\tflushPendingBashComponents(): void;\n\t\tshowSelector(\n\t\t\tcreate: (done: () => void) => { component: Component; focus: Component; dispose?: () => void },\n\t\t): void;\n\t\tshowSettingsSelector(): void;\n\t\thandleModelCommand(searchTerm?: string): Promise<void>;\n\t\thandleThinkingCommand(searchTerm?: string): void;\n\t\tselectThinkingLevel(level: ThinkingLevel): void;\n\t\tshowThinkingSelector(): void;\n\t\tfindExactModelMatch(searchTerm: string): Promise<Model<Api> | undefined>;\n\t\tgetModelCandidates(): Promise<Model<Api>[]>;\n\t\tupdateAvailableProviderCount(): Promise<void>;\n\t\tmaybeWarnAboutAnthropicSubscriptionAuth(\n\t\t\tmodel?: Model<Api> | undefined,\n\t\t\ttargetContainer?: Container,\n\t\t): Promise<void>;\n\t\tshowModelSelector(initialSearchInput?: string): void;\n\t\tshowModelsSelector(): void;\n\t\tshowUserMessageSelector(): Promise<void>;\n\t\thandleCloneCommand(): Promise<void>;\n\t\tmaybeSaveImplicitProjectTrustAfterReload(): boolean;\n\t\tshowTrustSelector(): void;\n\t\tshowTreeSelector(initialSelectedId?: string): Promise<void>;\n\t\tshowSessionSelector(): void;\n\t\thandleResumeSession(\n\t\t\tsessionPath: string,\n\t\t\toptions?: Parameters<ExtensionCommandContext[\"switchSession\"]>[1],\n\t\t): Promise<{ cancelled: boolean }>;\n\t\tgetLoginProviderOptions(authType?: \"oauth\" | \"api_key\"): AuthSelectorProvider[];\n\t\tgetLogoutProviderOptions(): AuthSelectorProvider[];\n\t\thandleLoginCommand(providerRef?: string): Promise<void>;\n\t\tstartProviderLogin(providerOption: AuthSelectorProvider): Promise<void>;\n\t\tshowLoginAuthTypeSelector(providerOptions?: AuthSelectorProvider[]): void;\n\t\tshowLoginProviderSelector(authType?: \"oauth\" | \"api_key\", initialSearchInput?: string): void;\n\t\tshowOAuthSelector(mode: \"login\" | \"logout\", initialSearchInput?: string): Promise<void>;\n\t\tcompleteProviderAuthentication(\n\t\t\tproviderId: string,\n\t\t\tproviderName: string,\n\t\t\tauthType: \"oauth\" | \"api_key\",\n\t\t\tpreviousModel: Model<Api> | undefined,\n\t\t\toptions?: { modelsRefreshed?: boolean },\n\t\t): Promise<void>;\n\t\tshowBedrockSetupDialog(providerId: string, providerName: string): void;\n\t\tshowApiKeyLoginDialog(providerId: string, providerName: string): Promise<void>;\n\t\tshowOAuthLoginSelect(dialog: LoginDialogComponent, prompt: OAuthSelectPrompt): Promise<string | undefined>;\n\t\tshowLoginDialog(providerId: string, providerName: string): Promise<void>;\n\t\thandleReloadCommand(): Promise<void>;\n\t\thandleExportCommand(text: string): Promise<void>;\n\t\tgetPathCommandArgument(text: string, command: \"/export\" | \"/import\"): string | undefined;\n\t\thandleImportCommand(text: string): Promise<void>;\n\t\thandleShareCommand(): Promise<void>;\n\t\thandleCopyCommand(): Promise<void>;\n\t\thandleNameCommand(text: string): void;\n\t\thandleSessionCommand(): void;\n\t\thandleChangelogCommand(): void;\n\t\tgetAppKeyDisplay(action: AppKeybinding): string;\n\t\tgetEditorKeyDisplay(action: Keybinding): string;\n\t\tjumpToTranscriptEnd(): void;\n\t\tsetFullscreenCopyOnSelect(enabled: boolean): void;\n\t\thandleHotkeysCommand(): void;\n\t\thandleClearCommand(): Promise<void>;\n\t\thandleDebugCommand(): void;\n\t\thandleArminSaysHi(): void;\n\t\thandleDementedDelves(): void;\n\t\thandleDaxnuts(): void;\n\t\tcheckDaxnutsEasterEgg(model: { provider: string; id: string }): void;\n\t\thandleBashCommand(command: string, excludeFromContext?: boolean): Promise<void>;\n\t\thandleCompactCommand(): Promise<void>;\n\t\tstop(fullscreenExitOutput?: FullscreenExitOutput): void;\n\t}\n}\n"]}
1
+ {"version":3,"file":"interactive-mode-surface.js","sourceRoot":"","sources":["../../../src/modes/interactive/interactive-mode-surface.ts"],"names":[],"mappings":"","sourcesContent":["import type { AssistantMessage, Usage } from \"@bastani/pi-ai/compat\";\nimport type { ThinkingLevel } from \"@earendil-works/pi-agent-core\";\n/** Method surface installed onto InteractiveModeBase by sibling modules. */\n\nimport type { MarkdownTransformer } from \"../../core/extensions/types.ts\";\nimport type { CustomEntry, SessionEntry } from \"../../core/session-manager.ts\";\nimport type { FullscreenExitOutput } from \"../../core/settings-manager.ts\";\nimport type { ToolStatus } from \"../../utils/tools-manager.ts\";\nimport type { JsonAgentSessionEvent } from \"../json-event.ts\";\nimport type { AtomicWorkingLoader } from \"./components/atomic-working-status.ts\";\nimport type {\n\tAgentMessage,\n\tAgentSession,\n\tAgentSessionEvent,\n\tApi,\n\tAppKeybinding,\n\tAuthSelectorProvider,\n\tAutocompleteProvider,\n\tChatMessageEntry,\n\tChatMessageRenderOptions,\n\tComponent,\n\tContainer,\n\tEditorFactory,\n\tExtensionCommandContext,\n\tExtensionEditorComponent,\n\tExtensionInputComponent,\n\tExtensionRunner,\n\tExtensionSelectorComponent,\n\tExtensionUIContext,\n\tExtensionUIDialogOptions,\n\tExtensionWidgetOptions,\n\tHostCustomUiState,\n\tHostCustomUiStateListener,\n\tKeybinding,\n\tKeybindingsManager,\n\tLoaderIndicatorOptions,\n\tLoginDialogComponent,\n\tMarkdownTheme,\n\tMessage,\n\tMissingSessionCwdError,\n\tModel,\n\tOAuthSelectPrompt,\n\tOverlayHandle,\n\tOverlayOptions,\n\tProjectTrustContext,\n\tReadonlyFooterDataProvider,\n\tResourceDiagnostic,\n\tSessionContext,\n\tSlashCommand,\n\tSourceInfo,\n\tTheme,\n\tTUI,\n\tVerbatimCompactionResult,\n} from \"./interactive-mode-deps.ts\";\nimport type { InteractiveSubmission } from \"./interactive-submission.ts\";\n\ndeclare module \"./interactive-mode-base.ts\" {\n\tinterface InteractiveModeBase {\n\t\tgetAutocompleteSourceTag(sourceInfo?: SourceInfo): string | undefined;\n\t\tprefixAutocompleteDescription(description: string | undefined, sourceInfo?: SourceInfo): string | undefined;\n\t\tgetBuiltInCommandConflictDiagnostics(extensionRunner: ExtensionRunner): ResourceDiagnostic[];\n\t\tcreateBaseAutocompleteProvider(): AutocompleteProvider;\n\t\tbuildRemoteSlashCommands(localCommands: SlashCommand[]): SlashCommand[];\n\t\tsetupAutocompleteProvider(): void;\n\t\tshowStartupNoticesIfNeeded(targetContainer?: Container): void;\n\t\treportModelCatalogWarning(targetContainer?: Container): void;\n\t\treportedModelCatalogWarning: string | undefined;\n\t\thadLastChangelogVersionAtStartup: boolean;\n\t\tfirstRunNoticeVisible: boolean;\n\t\tfirstRunOnboardingNoticeComponents: Component[];\n\t\tinitializeFirstRunOnboardingMarkers(): void;\n\t\tisFirstRunOnboardingEligible(): boolean;\n\t\tclearFirstRunOnboardingUi(): void;\n\t\tinit(): Promise<void>;\n\t\tcompleteDeferredStartup(): Promise<void>;\n\t\tretryDeferredModelRestore(targetContainer?: Container): Promise<void>;\n\t\tupdateTerminalTitle(): void;\n\t\trun(): Promise<void>;\n\t\tcheckForPackageUpdates(): Promise<string[]>;\n\t\tcheckTmuxKeyboardSetup(): Promise<string | undefined>;\n\t\tgetChangelogForDisplay(): string | undefined;\n\t\treportInstallTelemetry(version: string): void;\n\t\tgetMarkdownThemeWithSettings(): MarkdownTheme;\n\t\tgetMarkdownTransformers(): MarkdownTransformer[];\n\t\tformatDisplayPath(p: string): string;\n\t\tformatExtensionDisplayPath(path: string): string;\n\t\tformatContextPath(p: string): string;\n\t\tgetStartupModelLabel(): string;\n\t\tgetStartupIdentityText(maxWidth?: number, gap?: number, manifestoPhase?: number): string;\n\t\tgetAtomicAnsiMarkLines(gap?: number): string[];\n\t\tgetStartupExpansionState(): boolean;\n\t\tgetShortPath(fullPath: string, sourceInfo?: SourceInfo): string;\n\t\tgetCompactPathLabel(resourcePath: string, sourceInfo?: SourceInfo): string;\n\t\tgetCompactPackageSourceLabel(sourceInfo?: SourceInfo): string;\n\t\tgetCompactExtensionLabel(resourcePath: string, sourceInfo?: SourceInfo): string;\n\t\tgetCompactDisplayPathSegments(resourcePath: string): string[];\n\t\tgetCompactNonPackageExtensionLabel(\n\t\t\tresourcePath: string,\n\t\t\tindex: number,\n\t\t\tallPaths: Array<{ path: string; segments: string[] }>,\n\t\t): string;\n\t\tgetCompactExtensionLabels(extensions: Array<{ path: string; sourceInfo?: SourceInfo }>): string[];\n\t\tgetDisplaySourceInfo(sourceInfo?: SourceInfo): {\n\t\t\tlabel: string;\n\t\t\tscopeLabel?: string;\n\t\t\tcolor: \"accent\" | \"muted\";\n\t\t};\n\t\tgetScopeGroup(sourceInfo?: SourceInfo): \"user\" | \"project\" | \"path\";\n\t\tisPackageSource(sourceInfo?: SourceInfo): boolean;\n\t\tbuildScopeGroups(items: Array<{ path: string; sourceInfo?: SourceInfo }>): Array<{\n\t\t\tscope: \"user\" | \"project\" | \"path\";\n\t\t\tpaths: Array<{ path: string; sourceInfo?: SourceInfo }>;\n\t\t\tpackages: Map<string, Array<{ path: string; sourceInfo?: SourceInfo }>>;\n\t\t}>;\n\t\tformatScopeGroups(\n\t\t\tgroups: Array<{\n\t\t\t\tscope: \"user\" | \"project\" | \"path\";\n\t\t\t\tpaths: Array<{ path: string; sourceInfo?: SourceInfo }>;\n\t\t\t\tpackages: Map<string, Array<{ path: string; sourceInfo?: SourceInfo }>>;\n\t\t\t}>,\n\t\t\toptions: {\n\t\t\t\tformatPath: (item: { path: string; sourceInfo?: SourceInfo }) => string;\n\t\t\t\tformatPackagePath: (item: { path: string; sourceInfo?: SourceInfo }, source: string) => string;\n\t\t\t},\n\t\t): string;\n\t\tfindSourceInfoForPath(p: string, sourceInfos: Map<string, SourceInfo>): SourceInfo | undefined;\n\t\tformatPathWithSource(p: string, sourceInfo?: SourceInfo): string;\n\t\tformatDiagnostics(diagnostics: readonly ResourceDiagnostic[], sourceInfos: Map<string, SourceInfo>): string;\n\t\taddResourceDisclosure(options: {\n\t\t\tcontextFiles: ReadonlyArray<{ path: string }>;\n\t\t\tskills: ReadonlyArray<{ filePath: string; name: string }>;\n\t\t\tprompts: ReadonlyArray<{ filePath: string; name: string }>;\n\t\t\textensions: ReadonlyArray<{ path: string; sourceInfo?: SourceInfo }>;\n\t\t\texpandedSections: {\n\t\t\t\tcontext?: string;\n\t\t\t\tskills?: string;\n\t\t\t\tprompts?: string;\n\t\t\t\textensions?: string;\n\t\t\t};\n\t\t\ttargetContainer?: Container;\n\t\t}): void;\n\t\tshowLoadedResources(options?: {\n\t\t\textensions?: Array<{ path: string; sourceInfo?: SourceInfo }>;\n\t\t\tforce?: boolean;\n\t\t\tshowDiagnosticsWhenQuiet?: boolean;\n\t\t\ttargetContainer?: Container;\n\t\t}): void;\n\t\tbindCurrentSessionExtensions(): Promise<void>;\n\t\tapplyRuntimeSettings(): void;\n\t\trebindCurrentSession(): Promise<void>;\n\t\thandleFatalRuntimeError(prefix: string, error: unknown): Promise<never>;\n\t\trenderCurrentSessionState(): void;\n\t\tgetRegisteredToolDefinition(toolName: string): ReturnType<AgentSession[\"getToolDefinition\"]>;\n\t\tsetupExtensionShortcuts(extensionRunner: ExtensionRunner): void;\n\t\tsetExtensionStatus(key: string, text: string | undefined): void;\n\t\tgetWorkingLoaderMessage(): string;\n\t\tcreateWorkingLoader(): AtomicWorkingLoader;\n\t\tclearWorkingLoader(): void;\n\t\tstopWorkingLoader(): void;\n\t\tshowWorkingLoaderNow(): void;\n\t\tsetWorkingVisible(visible: boolean): void;\n\t\tsetWorkingIndicator(options?: LoaderIndicatorOptions): void;\n\t\tsetHiddenThinkingLabel(label?: string): void;\n\t\tsetExtensionWidget(\n\t\t\tkey: string,\n\t\t\tcontent: string[] | ((tui: TUI, thm: Theme) => Component & { dispose?(): void }) | undefined,\n\t\t\toptions?: ExtensionWidgetOptions,\n\t\t): void;\n\t\tclearExtensionWidgets(): void;\n\t\tresetExtensionUI(): void;\n\t\trenderWidgets(): void;\n\t\trenderWidgetContainer(\n\t\t\tcontainer: Container,\n\t\t\twidgets: Map<string, Component & { dispose?(): void }>,\n\t\t\tspacerWhenEmpty: boolean,\n\t\t\tleadingSpacer: boolean,\n\t\t): void;\n\t\tsetExtensionFooter(\n\t\t\tfactory:\n\t\t\t\t| ((tui: TUI, thm: Theme, footerData: ReadonlyFooterDataProvider) => Component & { dispose?(): void })\n\t\t\t\t| undefined,\n\t\t): void;\n\t\tsetExtensionHeader(factory: ((tui: TUI, thm: Theme) => Component & { dispose?(): void }) | undefined): void;\n\t\taddExtensionTerminalInputListener(\n\t\t\thandler: (data: string) => { consume?: boolean; data?: string } | undefined,\n\t\t): () => void;\n\t\tclearExtensionTerminalInputListeners(): void;\n\t\tgetHostCustomUiState(): HostCustomUiState;\n\t\tnotifyHostCustomUiStateListeners(): void;\n\t\tbeginHostInlineCustomUi(purpose?: \"prompt\" | \"navigation\"): () => void;\n\t\tbeginInlineCustomUiFocusDeferral(): () => void;\n\t\tshouldDeferInlineCustomUiFocus(): boolean;\n\t\tfocusHostInlineCustomUi(): boolean;\n\t\tonHostCustomUiStateChange(listener: HostCustomUiStateListener): () => void;\n\t\tonExtensionWidgetRelease(key: string, listener: () => void): () => void;\n\t\tnotifyExtensionWidgetRelease(key: string): void;\n\t\tcreateProjectTrustContext(cwd: string): ProjectTrustContext;\n\t\tcreateExtensionUIContext(): ExtensionUIContext;\n\t\tshowExtensionSelector(\n\t\t\ttitle: string,\n\t\t\toptions: string[],\n\t\t\topts?: ExtensionUIDialogOptions,\n\t\t): Promise<string | undefined>;\n\t\thideExtensionSelector(instance?: ExtensionSelectorComponent): void;\n\t\tshowExtensionConfirm(title: string, message: string, opts?: ExtensionUIDialogOptions): Promise<boolean>;\n\t\tpromptForMissingSessionCwd(error: MissingSessionCwdError): Promise<string | undefined>;\n\t\tshowExtensionInput(\n\t\t\ttitle: string,\n\t\t\tplaceholder?: string,\n\t\t\topts?: ExtensionUIDialogOptions,\n\t\t): Promise<string | undefined>;\n\t\thideExtensionInput(instance?: ExtensionInputComponent): void;\n\t\tshowExtensionEditor(\n\t\t\ttitle: string,\n\t\t\tprefill?: string,\n\t\t\topts?: ExtensionUIDialogOptions,\n\t\t): Promise<string | undefined>;\n\t\thideExtensionEditor(instance?: ExtensionEditorComponent): void;\n\t\tsetCustomEditorComponent(factory: EditorFactory | undefined): void;\n\t\tshowExtensionNotify(message: string, type?: \"info\" | \"warning\" | \"error\"): void;\n\t\tshowExtensionCustom<T>(\n\t\t\tfactory: (\n\t\t\t\ttui: TUI,\n\t\t\t\ttheme: Theme,\n\t\t\t\tkeybindings: KeybindingsManager,\n\t\t\t\tdone: (result: T) => void,\n\t\t\t) => (Component & { dispose?(): void }) | Promise<Component & { dispose?(): void }>,\n\t\t\toptions?: {\n\t\t\t\tpurpose?: \"prompt\" | \"navigation\";\n\t\t\t\toverlay?: boolean;\n\t\t\t\tdeferInlineCustomUiFocus?: boolean;\n\t\t\t\thandlesInternalUiAction?: boolean;\n\t\t\t\t/** Overlay-only: bound the overlay and reserve transcript scroll extent. */\n\t\t\t\treserveTranscriptRows?: boolean;\n\t\t\t\tsignal?: AbortSignal;\n\t\t\t\toverlayOptions?: OverlayOptions | (() => OverlayOptions);\n\t\t\t\tonHandle?: (handle: OverlayHandle) => void;\n\t\t\t},\n\t\t): Promise<T>;\n\t\tshowExtensionError(extensionPath: string, error: string, stack?: string): void;\n\t\tsetupKeyHandlers(): void;\n\t\thandleClipboardImagePaste(): Promise<void>;\n\t\tsetupEditorSubmitHandler(): void;\n\t\tdeliverStartupReplayPrompt(text: string): void;\n\t\trecoverCookedStartupInput(): boolean;\n\t\tdrainStartupReplayCommands(): Promise<void>;\n\t\tadvanceStartupInputReplay(submittedText: string): void;\n\t\tsubscribeToAgent(): void;\n\t\thandleEvent(event: AgentSessionEvent | JsonAgentSessionEvent): Promise<void>;\n\t\tgetUserMessageText(message: Message): string;\n\t\tshowStatus(message: string, persist?: boolean): void;\n\t\t/** Report a managed-tool (fd/rg) readiness update inside the transcript. */\n\t\tshowManagedToolStatus(status: ToolStatus): void;\n\t\t/** Bring fd/rg to readiness after first paint; progress lands in the transcript. */\n\t\tensureManagedToolsReady(): Promise<void>;\n\t\tchatMessageRenderOptions(): ChatMessageRenderOptions;\n\t\taddRenderedChatEntry(entry: ChatMessageEntry): Component;\n\t\taddCompactionBoundaryToChat(result: VerbatimCompactionResult): void;\n\t\taddCompactionCostNotice(kind: \"compaction\" | \"branch_summary\", usage: Usage): void;\n\t\tmaybeShowAssistantDiagnostics(message: AssistantMessage): void;\n\t\taddMessageToChat(message: AgentMessage, options?: { populateHistory?: boolean }): void;\n\t\taddCustomEntryToChat(entry: CustomEntry): void;\n\t\trenderSessionContext(\n\t\t\tsessionContext: SessionContext,\n\t\t\toptions?: { updateFooter?: boolean; populateHistory?: boolean },\n\t\t): void;\n\t\trenderSessionEntries(\n\t\t\tentries: SessionEntry[],\n\t\t\toptions?: {\n\t\t\t\tupdateFooter?: boolean;\n\t\t\t\tpopulateHistory?: boolean;\n\t\t\t\tsuppressCompactionBoundary?: VerbatimCompactionResult;\n\t\t\t},\n\t\t): void;\n\t\trenderInitialMessages(): void;\n\t\tattachStartupNoticesContainer(options?: { resetDetached?: boolean }): void;\n\t\tgetUserInput(): Promise<InteractiveSubmission>;\n\t\trunUserPromptTurn(submission: InteractiveSubmission | string): Promise<void>;\n\t\trenderDeferredUserInput(text: string): void;\n\t\tconsumeDeferredRenderedUserInput(text: string): boolean;\n\t\tdiscardDeferredRenderedUserInput(text: string): void;\n\t\tensureDeferredStartupComplete(): Promise<void>;\n\t\trebuildChatFromMessages(options?: {\n\t\t\tsuppressCompactionBoundary?: VerbatimCompactionResult;\n\t\t\tresetStartupDisclosure?: boolean;\n\t\t}): void;\n\t\thandleCtrlC(): void;\n\t\tinterruptActiveOperation(): boolean;\n\t\thandleCtrlD(): void;\n\t\tshutdown(options?: { fromSignal?: boolean }): Promise<void>;\n\t\temergencyTerminalExit(): never;\n\t\tuncaughtCrash(error: Error): never;\n\t\tgetCrashExtensionHint(error: unknown): string | undefined;\n\t\tcheckShutdownRequested(): Promise<void>;\n\t\tregisterSignalHandlers(): void;\n\t\tunregisterSignalHandlers(): void;\n\t\thandleCtrlZ(): void;\n\t\thandleFollowUp(): Promise<void>;\n\t\thandleDequeue(): void;\n\t\trefreshBuiltInHeader(): void;\n\t\tupdateEditorBorderColor(): void;\n\t\tcycleThinkingLevel(): void;\n\t\tcycleModel(direction: \"forward\" | \"backward\"): Promise<void>;\n\t\ttoggleToolOutputExpansion(): void;\n\t\tsetToolsExpanded(expanded: boolean): void;\n\t\ttoggleThinkingBlockVisibility(): void;\n\t\tupdateThinkingBlockVisibility(): void;\n\t\topenExternalEditor(): Promise<void>;\n\t\tclearEditor(): void;\n\t\tshowError(errorMessage: string): void;\n\t\tshowWarning(warningMessage: string, targetContainer?: Container): void;\n\t\tshowNewVersionNotification(newVersion: string, targetContainer?: Container): void;\n\t\tshowPackageUpdateNotification(packages: string[], targetContainer?: Container): void;\n\t\tgetAllQueuedMessages(): { steering: string[]; followUp: string[] };\n\t\tclearAllQueues(options?: { preserveUnprotectedCustomMessages?: boolean }): {\n\t\t\tsteering: string[];\n\t\t\tfollowUp: string[];\n\t\t};\n\t\tupdatePendingMessagesDisplay(): void;\n\t\trestoreQueuedMessagesToEditor(options?: {\n\t\t\tabort?: boolean;\n\t\t\tcurrentText?: string;\n\t\t\tpreserveUnprotectedCustomMessages?: boolean;\n\t\t}): number;\n\t\tqueueCompactionMessage(text: string, mode: \"steer\" | \"followUp\"): void;\n\t\tisExtensionCommand(text: string): boolean;\n\t\tflushCompactionQueue(options?: { willRetry?: boolean }): Promise<void>;\n\t\tflushPendingBashComponents(): void;\n\t\tshowSelector(\n\t\t\tcreate: (done: () => void) => { component: Component; focus: Component; dispose?: () => void },\n\t\t): void;\n\t\tshowSettingsSelector(): void;\n\t\thandleModelCommand(searchTerm?: string): Promise<void>;\n\t\thandleThinkingCommand(searchTerm?: string): void;\n\t\tselectThinkingLevel(level: ThinkingLevel): void;\n\t\tshowThinkingSelector(): void;\n\t\tfindExactModelMatch(searchTerm: string): Promise<Model<Api> | undefined>;\n\t\tgetModelCandidates(): Promise<Model<Api>[]>;\n\t\tupdateAvailableProviderCount(): Promise<void>;\n\t\tmaybeWarnAboutAnthropicSubscriptionAuth(\n\t\t\tmodel?: Model<Api> | undefined,\n\t\t\ttargetContainer?: Container,\n\t\t): Promise<void>;\n\t\tshowModelSelector(initialSearchInput?: string): void;\n\t\tshowModelsSelector(): void;\n\t\tshowUserMessageSelector(): Promise<void>;\n\t\thandleCloneCommand(): Promise<void>;\n\t\tmaybeSaveImplicitProjectTrustAfterReload(): boolean;\n\t\tshowTrustSelector(): void;\n\t\tshowTreeSelector(initialSelectedId?: string): Promise<void>;\n\t\tshowSessionSelector(): void;\n\t\thandleResumeSession(\n\t\t\tsessionPath: string,\n\t\t\toptions?: Parameters<ExtensionCommandContext[\"switchSession\"]>[1],\n\t\t): Promise<{ cancelled: boolean }>;\n\t\tgetLoginProviderOptions(authType?: \"oauth\" | \"api_key\"): AuthSelectorProvider[];\n\t\tgetLogoutProviderOptions(): AuthSelectorProvider[];\n\t\thandleLoginCommand(providerRef?: string): Promise<void>;\n\t\tstartProviderLogin(providerOption: AuthSelectorProvider): Promise<void>;\n\t\tshowLoginAuthTypeSelector(providerOptions?: AuthSelectorProvider[]): void;\n\t\tshowLoginProviderSelector(authType?: \"oauth\" | \"api_key\", initialSearchInput?: string): void;\n\t\tshowOAuthSelector(mode: \"login\" | \"logout\", initialSearchInput?: string): Promise<void>;\n\t\tcompleteProviderAuthentication(\n\t\t\tproviderId: string,\n\t\t\tproviderName: string,\n\t\t\tauthType: \"oauth\" | \"api_key\",\n\t\t\tpreviousModel: Model<Api> | undefined,\n\t\t\toptions?: { modelsRefreshed?: boolean },\n\t\t): Promise<void>;\n\t\tshowBedrockSetupDialog(providerId: string, providerName: string): void;\n\t\tshowApiKeyLoginDialog(providerId: string, providerName: string): Promise<void>;\n\t\tshowOAuthLoginSelect(dialog: LoginDialogComponent, prompt: OAuthSelectPrompt): Promise<string | undefined>;\n\t\tshowLoginDialog(providerId: string, providerName: string): Promise<void>;\n\t\thandleReloadCommand(): Promise<void>;\n\t\thandleExportCommand(text: string): Promise<void>;\n\t\tgetPathCommandArgument(text: string, command: \"/export\" | \"/import\"): string | undefined;\n\t\thandleImportCommand(text: string): Promise<void>;\n\t\thandleShareCommand(): Promise<void>;\n\t\thandleCopyCommand(): Promise<void>;\n\t\thandleNameCommand(text: string): void;\n\t\thandleSessionCommand(): void;\n\t\thandleChangelogCommand(): void;\n\t\tgetAppKeyDisplay(action: AppKeybinding): string;\n\t\tgetEditorKeyDisplay(action: Keybinding): string;\n\t\tjumpToTranscriptEnd(): void;\n\t\tsetFullscreenCopyOnSelect(enabled: boolean): void;\n\t\thandleHotkeysCommand(): void;\n\t\thandleClearCommand(): Promise<void>;\n\t\thandleDebugCommand(): void;\n\t\thandleArminSaysHi(): void;\n\t\thandleDementedDelves(): void;\n\t\thandleDaxnuts(): void;\n\t\tcheckDaxnutsEasterEgg(model: { provider: string; id: string }): void;\n\t\thandleBashCommand(command: string, excludeFromContext?: boolean): Promise<void>;\n\t\thandleCompactCommand(): Promise<void>;\n\t\tstop(fullscreenExitOutput?: FullscreenExitOutput): void;\n\t}\n}\n"]}
@@ -60,9 +60,5 @@ InteractiveModeBase.prototype.addResourceDisclosure = function (options) {
60
60
  addSection("Skills", options.skills.map((skill) => skill.name), options.expandedSections.skills);
61
61
  addSection("Prompts", options.prompts.map((prompt) => `/${prompt.name}`), options.expandedSections.prompts);
62
62
  addSection("Extensions", this.getCompactExtensionLabels([...options.extensions]), options.expandedSections.extensions);
63
- addSection("Themes", options.themes.map((loadedTheme) => loadedTheme.name ??
64
- (loadedTheme.sourcePath
65
- ? this.getCompactPathLabel(loadedTheme.sourcePath, loadedTheme.sourceInfo)
66
- : "theme")), options.expandedSections.themes);
67
63
  };
68
64
  //# sourceMappingURL=interactive-resource-disclosure.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"interactive-resource-disclosure.js","sourceRoot":"","sources":["../../../src/modes/interactive/interactive-resource-disclosure.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAA4D,MAAM,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAC;AACrH,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAE/D,mBAAmB,CAAC,SAAS,CAAC,iBAAiB,GAAG,UAEjD,WAA0C,EAC1C,WAAoC;IAEpC,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,sCAAsC;IACtC,MAAM,UAAU,GAAG,IAAI,GAAG,EAAgC,CAAC;IAC3D,MAAM,gBAAgB,GAAyB,EAAE,CAAC;IAElD,KAAK,MAAM,CAAC,IAAI,WAAW,EAAE,CAAC;QAC7B,IAAI,CAAC,CAAC,IAAI,KAAK,WAAW,IAAI,CAAC,CAAC,SAAS,EAAE,CAAC;YAC3C,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACpD,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACb,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACxC,CAAC;aAAM,CAAC;YACP,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC1B,CAAC;IACF,CAAC;IAED,+CAA+C;IAC/C,KAAK,MAAM,CAAC,IAAI,EAAE,aAAa,CAAC,IAAI,UAAU,EAAE,CAAC;QAChD,MAAM,KAAK,GAAG,aAAa,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC;QAC1C,IAAI,CAAC,KAAK;YAAE,SAAS;QACrB,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,IAAI,cAAc,CAAC,CAAC,CAAC;QAC1D,KAAK,CAAC,IAAI,CACT,KAAK,CAAC,EAAE,CACP,KAAK,EACL,OAAO,KAAK,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,CAAC,IAAI,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,UAAU,EAAE,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC,GACxI,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,oBAAoB,IAAI,kBAAkB,KAAK,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC,EAC5F,EAAE,CACF,CACD,CAAC;QACF,KAAK,MAAM,CAAC,IAAI,aAAa,EAAE,CAAC;YAC/B,IAAI,CAAC,CAAC,SAAS,EAAE,CAAC;gBACjB,KAAK,CAAC,IAAI,CACT,KAAK,CAAC,EAAE,CACP,KAAK,EACL,OAAO,KAAK,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,GACpL,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,aAAa,GAAG,CAAC,CAAC,CAAC,YACxE,EAAE,CACF,CACD,CAAC;YACH,CAAC;QACF,CAAC;IACF,CAAC;IAED,KAAK,MAAM,CAAC,IAAI,gBAAgB,EAAE,CAAC;QAClC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;YACZ,MAAM,aAAa,GAAG,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC;YACzG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,EAAE,KAAK,aAAa,EAAE,CAAC,CAAC,CAAC;YACrF,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACpF,CAAC;aAAM,CAAC;YACP,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAClF,CAAC;IACF,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACzB,CAAC,CAAC;AAEF,mBAAmB,CAAC,SAAS,CAAC,qBAAqB,GAAG,UAErD,OAcC;IAED,MAAM,eAAe,GAAG,OAAO,CAAC,eAAe,IAAI,IAAI,CAAC,aAAa,CAAC;IACtE,MAAM,WAAW,GAAG,CAAC,MAAgB,EAAE,IAAI,GAAG,IAAI,EAAU,EAAE;QAC7D,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACvF,IAAI,IAAI;YAAE,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;QAClE,OAAO,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAClD,CAAC,CAAC;IACF,MAAM,UAAU,GAAG,CAAC,IAAY,EAAE,MAAgB,EAAE,YAAqB,EAAE,IAAI,GAAG,IAAI,EAAQ,EAAE;QAC/F,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAChC,MAAM,aAAa,GAAG,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAChD,eAAe,CAAC,QAAQ,CACvB,IAAI,cAAc,CACjB,GAAG,EAAE,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,WAAW,EAAE,IAAI,IAAI,GAAG,CAAC,KAAK,aAAa,EAAE,EAC/D,GAAG,EAAE,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,WAAW,EAAE,IAAI,IAAI,GAAG,CAAC,KAAK,YAAY,IAAI,aAAa,EAAE,EAC/E,IAAI,CAAC,wBAAwB,EAAE,EAC/B,CAAC,EACD,CAAC,CACD,CACD,CAAC;QACF,eAAe,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IACzC,CAAC,CAAC;IAEF,UAAU,CACT,SAAS,EACT,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,EACnF,OAAO,CAAC,gBAAgB,CAAC,OAAO,EAChC,KAAK,CACL,CAAC;IACF,UAAU,CACT,QAAQ,EACR,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,EACzC,OAAO,CAAC,gBAAgB,CAAC,MAAM,CAC/B,CAAC;IACF,UAAU,CACT,SAAS,EACT,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC,EAClD,OAAO,CAAC,gBAAgB,CAAC,OAAO,CAChC,CAAC;IACF,UAAU,CACT,YAAY,EACZ,IAAI,CAAC,yBAAyB,CAAC,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,EACvD,OAAO,CAAC,gBAAgB,CAAC,UAAU,CACnC,CAAC;IACF,UAAU,CACT,QAAQ,EACR,OAAO,CAAC,MAAM,CAAC,GAAG,CACjB,CAAC,WAAW,EAAE,EAAE,CACf,WAAW,CAAC,IAAI;QAChB,CAAC,WAAW,CAAC,UAAU;YACtB,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,UAAU,EAAE,WAAW,CAAC,UAAU,CAAC;YAC1E,CAAC,CAAC,OAAO,CAAC,CACZ,EACD,OAAO,CAAC,gBAAgB,CAAC,MAAM,CAC/B,CAAC;AACH,CAAC,CAAC","sourcesContent":["import { InteractiveModeBase } from \"./interactive-mode-base.ts\";\nimport { type Container, type ResourceDiagnostic, type SourceInfo, Spacer, theme } from \"./interactive-mode-deps.ts\";\nimport { ExpandableText } from \"./interactive-mode-helpers.ts\";\n\nInteractiveModeBase.prototype.formatDiagnostics = function (\n\tthis: InteractiveModeBase,\n\tdiagnostics: readonly ResourceDiagnostic[],\n\tsourceInfos: Map<string, SourceInfo>,\n): string {\n\tconst lines: string[] = [];\n\n\t// Group collision diagnostics by name\n\tconst collisions = new Map<string, ResourceDiagnostic[]>();\n\tconst otherDiagnostics: ResourceDiagnostic[] = [];\n\n\tfor (const d of diagnostics) {\n\t\tif (d.type === \"collision\" && d.collision) {\n\t\t\tconst list = collisions.get(d.collision.name) ?? [];\n\t\t\tlist.push(d);\n\t\t\tcollisions.set(d.collision.name, list);\n\t\t} else {\n\t\t\totherDiagnostics.push(d);\n\t\t}\n\t}\n\n\t// Format collision diagnostics grouped by name\n\tfor (const [name, collisionList] of collisions) {\n\t\tconst first = collisionList[0]?.collision;\n\t\tif (!first) continue;\n\t\tlines.push(theme.fg(\"warning\", ` \"${name}\" collision:`));\n\t\tlines.push(\n\t\t\ttheme.fg(\n\t\t\t\t\"dim\",\n\t\t\t\t` ${theme.fg(\"success\", \"✓\")} ${this.formatPathWithSource(first.winnerPath, this.findSourceInfoForPath(first.winnerPath, sourceInfos))}${\n\t\t\t\t\tfirst.winnerSelector ? ` (default /skill:${name}; exact /skill:${first.winnerSelector})` : \"\"\n\t\t\t\t}`,\n\t\t\t),\n\t\t);\n\t\tfor (const d of collisionList) {\n\t\t\tif (d.collision) {\n\t\t\t\tlines.push(\n\t\t\t\t\ttheme.fg(\n\t\t\t\t\t\t\"dim\",\n\t\t\t\t\t\t` ${theme.fg(\"warning\", d.collision.loserSelector ? \"•\" : \"✗\")} ${this.formatPathWithSource(d.collision.loserPath, this.findSourceInfoForPath(d.collision.loserPath, sourceInfos))}${\n\t\t\t\t\t\t\td.collision.loserSelector ? ` (/skill:${d.collision.loserSelector})` : \" (skipped)\"\n\t\t\t\t\t\t}`,\n\t\t\t\t\t),\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tfor (const d of otherDiagnostics) {\n\t\tif (d.path) {\n\t\t\tconst formattedPath = this.formatPathWithSource(d.path, this.findSourceInfoForPath(d.path, sourceInfos));\n\t\t\tlines.push(theme.fg(d.type === \"error\" ? \"error\" : \"warning\", ` ${formattedPath}`));\n\t\t\tlines.push(theme.fg(d.type === \"error\" ? \"error\" : \"warning\", ` ${d.message}`));\n\t\t} else {\n\t\t\tlines.push(theme.fg(d.type === \"error\" ? \"error\" : \"warning\", ` ${d.message}`));\n\t\t}\n\t}\n\n\treturn lines.join(\"\\n\");\n};\n\nInteractiveModeBase.prototype.addResourceDisclosure = function (\n\tthis: InteractiveModeBase,\n\toptions: {\n\t\tcontextFiles: ReadonlyArray<{ path: string }>;\n\t\tskills: ReadonlyArray<{ filePath: string; name: string }>;\n\t\tprompts: ReadonlyArray<{ filePath: string; name: string }>;\n\t\textensions: ReadonlyArray<{ path: string; sourceInfo?: SourceInfo }>;\n\t\tthemes: ReadonlyArray<{ name?: string; sourcePath?: string; sourceInfo?: SourceInfo }>;\n\t\texpandedSections: {\n\t\t\tcontext?: string;\n\t\t\tskills?: string;\n\t\t\tprompts?: string;\n\t\t\textensions?: string;\n\t\t\tthemes?: string;\n\t\t};\n\t\ttargetContainer?: Container;\n\t},\n): void {\n\tconst targetContainer = options.targetContainer ?? this.chatContainer;\n\tconst compactList = (values: string[], sort = true): string => {\n\t\tconst labels = values.map((value) => value.trim()).filter((value) => value.length > 0);\n\t\tif (sort) labels.sort((left, right) => left.localeCompare(right));\n\t\treturn theme.fg(\"dim\", ` ${labels.join(\", \")}`);\n\t};\n\tconst addSection = (name: string, labels: string[], expandedBody?: string, sort = true): void => {\n\t\tif (labels.length === 0) return;\n\t\tconst collapsedBody = compactList(labels, sort);\n\t\ttargetContainer.addChild(\n\t\t\tnew ExpandableText(\n\t\t\t\t() => `${theme.fg(\"mdHeading\", `[${name}]`)}\\n${collapsedBody}`,\n\t\t\t\t() => `${theme.fg(\"mdHeading\", `[${name}]`)}\\n${expandedBody ?? collapsedBody}`,\n\t\t\t\tthis.getStartupExpansionState(),\n\t\t\t\t0,\n\t\t\t\t0,\n\t\t\t),\n\t\t);\n\t\ttargetContainer.addChild(new Spacer(1));\n\t};\n\n\taddSection(\n\t\t\"Context\",\n\t\toptions.contextFiles.map((contextFile) => this.formatContextPath(contextFile.path)),\n\t\toptions.expandedSections.context,\n\t\tfalse,\n\t);\n\taddSection(\n\t\t\"Skills\",\n\t\toptions.skills.map((skill) => skill.name),\n\t\toptions.expandedSections.skills,\n\t);\n\taddSection(\n\t\t\"Prompts\",\n\t\toptions.prompts.map((prompt) => `/${prompt.name}`),\n\t\toptions.expandedSections.prompts,\n\t);\n\taddSection(\n\t\t\"Extensions\",\n\t\tthis.getCompactExtensionLabels([...options.extensions]),\n\t\toptions.expandedSections.extensions,\n\t);\n\taddSection(\n\t\t\"Themes\",\n\t\toptions.themes.map(\n\t\t\t(loadedTheme) =>\n\t\t\t\tloadedTheme.name ??\n\t\t\t\t(loadedTheme.sourcePath\n\t\t\t\t\t? this.getCompactPathLabel(loadedTheme.sourcePath, loadedTheme.sourceInfo)\n\t\t\t\t\t: \"theme\"),\n\t\t),\n\t\toptions.expandedSections.themes,\n\t);\n};\n"]}
1
+ {"version":3,"file":"interactive-resource-disclosure.js","sourceRoot":"","sources":["../../../src/modes/interactive/interactive-resource-disclosure.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAA4D,MAAM,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAC;AACrH,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAE/D,mBAAmB,CAAC,SAAS,CAAC,iBAAiB,GAAG,UAEjD,WAA0C,EAC1C,WAAoC;IAEpC,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,sCAAsC;IACtC,MAAM,UAAU,GAAG,IAAI,GAAG,EAAgC,CAAC;IAC3D,MAAM,gBAAgB,GAAyB,EAAE,CAAC;IAElD,KAAK,MAAM,CAAC,IAAI,WAAW,EAAE,CAAC;QAC7B,IAAI,CAAC,CAAC,IAAI,KAAK,WAAW,IAAI,CAAC,CAAC,SAAS,EAAE,CAAC;YAC3C,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACpD,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACb,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACxC,CAAC;aAAM,CAAC;YACP,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC1B,CAAC;IACF,CAAC;IAED,+CAA+C;IAC/C,KAAK,MAAM,CAAC,IAAI,EAAE,aAAa,CAAC,IAAI,UAAU,EAAE,CAAC;QAChD,MAAM,KAAK,GAAG,aAAa,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC;QAC1C,IAAI,CAAC,KAAK;YAAE,SAAS;QACrB,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,IAAI,cAAc,CAAC,CAAC,CAAC;QAC1D,KAAK,CAAC,IAAI,CACT,KAAK,CAAC,EAAE,CACP,KAAK,EACL,OAAO,KAAK,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,CAAC,IAAI,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,UAAU,EAAE,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC,GACxI,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,oBAAoB,IAAI,kBAAkB,KAAK,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC,EAC5F,EAAE,CACF,CACD,CAAC;QACF,KAAK,MAAM,CAAC,IAAI,aAAa,EAAE,CAAC;YAC/B,IAAI,CAAC,CAAC,SAAS,EAAE,CAAC;gBACjB,KAAK,CAAC,IAAI,CACT,KAAK,CAAC,EAAE,CACP,KAAK,EACL,OAAO,KAAK,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,GACpL,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,aAAa,GAAG,CAAC,CAAC,CAAC,YACxE,EAAE,CACF,CACD,CAAC;YACH,CAAC;QACF,CAAC;IACF,CAAC;IAED,KAAK,MAAM,CAAC,IAAI,gBAAgB,EAAE,CAAC;QAClC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;YACZ,MAAM,aAAa,GAAG,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC;YACzG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,EAAE,KAAK,aAAa,EAAE,CAAC,CAAC,CAAC;YACrF,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACpF,CAAC;aAAM,CAAC;YACP,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAClF,CAAC;IACF,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACzB,CAAC,CAAC;AAEF,mBAAmB,CAAC,SAAS,CAAC,qBAAqB,GAAG,UAErD,OAYC;IAED,MAAM,eAAe,GAAG,OAAO,CAAC,eAAe,IAAI,IAAI,CAAC,aAAa,CAAC;IACtE,MAAM,WAAW,GAAG,CAAC,MAAgB,EAAE,IAAI,GAAG,IAAI,EAAU,EAAE;QAC7D,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACvF,IAAI,IAAI;YAAE,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;QAClE,OAAO,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAClD,CAAC,CAAC;IACF,MAAM,UAAU,GAAG,CAAC,IAAY,EAAE,MAAgB,EAAE,YAAqB,EAAE,IAAI,GAAG,IAAI,EAAQ,EAAE;QAC/F,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAChC,MAAM,aAAa,GAAG,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAChD,eAAe,CAAC,QAAQ,CACvB,IAAI,cAAc,CACjB,GAAG,EAAE,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,WAAW,EAAE,IAAI,IAAI,GAAG,CAAC,KAAK,aAAa,EAAE,EAC/D,GAAG,EAAE,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,WAAW,EAAE,IAAI,IAAI,GAAG,CAAC,KAAK,YAAY,IAAI,aAAa,EAAE,EAC/E,IAAI,CAAC,wBAAwB,EAAE,EAC/B,CAAC,EACD,CAAC,CACD,CACD,CAAC;QACF,eAAe,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IACzC,CAAC,CAAC;IAEF,UAAU,CACT,SAAS,EACT,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,EACnF,OAAO,CAAC,gBAAgB,CAAC,OAAO,EAChC,KAAK,CACL,CAAC;IACF,UAAU,CACT,QAAQ,EACR,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,EACzC,OAAO,CAAC,gBAAgB,CAAC,MAAM,CAC/B,CAAC;IACF,UAAU,CACT,SAAS,EACT,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC,EAClD,OAAO,CAAC,gBAAgB,CAAC,OAAO,CAChC,CAAC;IACF,UAAU,CACT,YAAY,EACZ,IAAI,CAAC,yBAAyB,CAAC,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,EACvD,OAAO,CAAC,gBAAgB,CAAC,UAAU,CACnC,CAAC;AACH,CAAC,CAAC","sourcesContent":["import { InteractiveModeBase } from \"./interactive-mode-base.ts\";\nimport { type Container, type ResourceDiagnostic, type SourceInfo, Spacer, theme } from \"./interactive-mode-deps.ts\";\nimport { ExpandableText } from \"./interactive-mode-helpers.ts\";\n\nInteractiveModeBase.prototype.formatDiagnostics = function (\n\tthis: InteractiveModeBase,\n\tdiagnostics: readonly ResourceDiagnostic[],\n\tsourceInfos: Map<string, SourceInfo>,\n): string {\n\tconst lines: string[] = [];\n\n\t// Group collision diagnostics by name\n\tconst collisions = new Map<string, ResourceDiagnostic[]>();\n\tconst otherDiagnostics: ResourceDiagnostic[] = [];\n\n\tfor (const d of diagnostics) {\n\t\tif (d.type === \"collision\" && d.collision) {\n\t\t\tconst list = collisions.get(d.collision.name) ?? [];\n\t\t\tlist.push(d);\n\t\t\tcollisions.set(d.collision.name, list);\n\t\t} else {\n\t\t\totherDiagnostics.push(d);\n\t\t}\n\t}\n\n\t// Format collision diagnostics grouped by name\n\tfor (const [name, collisionList] of collisions) {\n\t\tconst first = collisionList[0]?.collision;\n\t\tif (!first) continue;\n\t\tlines.push(theme.fg(\"warning\", ` \"${name}\" collision:`));\n\t\tlines.push(\n\t\t\ttheme.fg(\n\t\t\t\t\"dim\",\n\t\t\t\t` ${theme.fg(\"success\", \"✓\")} ${this.formatPathWithSource(first.winnerPath, this.findSourceInfoForPath(first.winnerPath, sourceInfos))}${\n\t\t\t\t\tfirst.winnerSelector ? ` (default /skill:${name}; exact /skill:${first.winnerSelector})` : \"\"\n\t\t\t\t}`,\n\t\t\t),\n\t\t);\n\t\tfor (const d of collisionList) {\n\t\t\tif (d.collision) {\n\t\t\t\tlines.push(\n\t\t\t\t\ttheme.fg(\n\t\t\t\t\t\t\"dim\",\n\t\t\t\t\t\t` ${theme.fg(\"warning\", d.collision.loserSelector ? \"•\" : \"✗\")} ${this.formatPathWithSource(d.collision.loserPath, this.findSourceInfoForPath(d.collision.loserPath, sourceInfos))}${\n\t\t\t\t\t\t\td.collision.loserSelector ? ` (/skill:${d.collision.loserSelector})` : \" (skipped)\"\n\t\t\t\t\t\t}`,\n\t\t\t\t\t),\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tfor (const d of otherDiagnostics) {\n\t\tif (d.path) {\n\t\t\tconst formattedPath = this.formatPathWithSource(d.path, this.findSourceInfoForPath(d.path, sourceInfos));\n\t\t\tlines.push(theme.fg(d.type === \"error\" ? \"error\" : \"warning\", ` ${formattedPath}`));\n\t\t\tlines.push(theme.fg(d.type === \"error\" ? \"error\" : \"warning\", ` ${d.message}`));\n\t\t} else {\n\t\t\tlines.push(theme.fg(d.type === \"error\" ? \"error\" : \"warning\", ` ${d.message}`));\n\t\t}\n\t}\n\n\treturn lines.join(\"\\n\");\n};\n\nInteractiveModeBase.prototype.addResourceDisclosure = function (\n\tthis: InteractiveModeBase,\n\toptions: {\n\t\tcontextFiles: ReadonlyArray<{ path: string }>;\n\t\tskills: ReadonlyArray<{ filePath: string; name: string }>;\n\t\tprompts: ReadonlyArray<{ filePath: string; name: string }>;\n\t\textensions: ReadonlyArray<{ path: string; sourceInfo?: SourceInfo }>;\n\t\texpandedSections: {\n\t\t\tcontext?: string;\n\t\t\tskills?: string;\n\t\t\tprompts?: string;\n\t\t\textensions?: string;\n\t\t};\n\t\ttargetContainer?: Container;\n\t},\n): void {\n\tconst targetContainer = options.targetContainer ?? this.chatContainer;\n\tconst compactList = (values: string[], sort = true): string => {\n\t\tconst labels = values.map((value) => value.trim()).filter((value) => value.length > 0);\n\t\tif (sort) labels.sort((left, right) => left.localeCompare(right));\n\t\treturn theme.fg(\"dim\", ` ${labels.join(\", \")}`);\n\t};\n\tconst addSection = (name: string, labels: string[], expandedBody?: string, sort = true): void => {\n\t\tif (labels.length === 0) return;\n\t\tconst collapsedBody = compactList(labels, sort);\n\t\ttargetContainer.addChild(\n\t\t\tnew ExpandableText(\n\t\t\t\t() => `${theme.fg(\"mdHeading\", `[${name}]`)}\\n${collapsedBody}`,\n\t\t\t\t() => `${theme.fg(\"mdHeading\", `[${name}]`)}\\n${expandedBody ?? collapsedBody}`,\n\t\t\t\tthis.getStartupExpansionState(),\n\t\t\t\t0,\n\t\t\t\t0,\n\t\t\t),\n\t\t);\n\t\ttargetContainer.addChild(new Spacer(1));\n\t};\n\n\taddSection(\n\t\t\"Context\",\n\t\toptions.contextFiles.map((contextFile) => this.formatContextPath(contextFile.path)),\n\t\toptions.expandedSections.context,\n\t\tfalse,\n\t);\n\taddSection(\n\t\t\"Skills\",\n\t\toptions.skills.map((skill) => skill.name),\n\t\toptions.expandedSections.skills,\n\t);\n\taddSection(\n\t\t\"Prompts\",\n\t\toptions.prompts.map((prompt) => `/${prompt.name}`),\n\t\toptions.expandedSections.prompts,\n\t);\n\taddSection(\n\t\t\"Extensions\",\n\t\tthis.getCompactExtensionLabels([...options.extensions]),\n\t\toptions.expandedSections.extensions,\n\t);\n};\n"]}
@@ -156,7 +156,6 @@ InteractiveModeBase.prototype.showLoadedResources = function (options) {
156
156
  ...this.session.resourceLoader.getAppendSystemPromptSources(),
157
157
  ...this.session.resourceLoader.getAgentsFiles().agentsFiles,
158
158
  ];
159
- const customThemes = themesResult.themes.filter((t) => t.sourcePath);
160
159
  const expandedSections = {};
161
160
  if (contextFiles.length > 0) {
162
161
  expandedSections.context = contextFiles
@@ -195,22 +194,11 @@ InteractiveModeBase.prototype.showLoadedResources = function (options) {
195
194
  formatPackagePath: (item) => this.formatExtensionDisplayPath(this.getShortPath(item.path, item.sourceInfo)),
196
195
  });
197
196
  }
198
- if (customThemes.length > 0) {
199
- const groups = this.buildScopeGroups(customThemes.map((loadedTheme) => ({
200
- path: loadedTheme.sourcePath,
201
- sourceInfo: loadedTheme.sourceInfo,
202
- })));
203
- expandedSections.themes = this.formatScopeGroups(groups, {
204
- formatPath: (item) => this.formatDisplayPath(item.path),
205
- formatPackagePath: (item) => this.getShortPath(item.path, item.sourceInfo),
206
- });
207
- }
208
197
  this.addResourceDisclosure({
209
198
  contextFiles,
210
199
  skills,
211
200
  prompts,
212
201
  extensions,
213
- themes: customThemes,
214
202
  expandedSections,
215
203
  targetContainer,
216
204
  });
@@ -1 +1 @@
1
- {"version":3,"file":"interactive-resource-rendering.js","sourceRoot":"","sources":["../../../src/modes/interactive/interactive-resource-rendering.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ResourceOverlap } from \"../../core/diagnostics.ts\";\nimport {\n\tgetInteractiveEngineResourceExtensions,\n\tgetInteractiveEngineResourceOverlaps,\n} from \"../interactive-engine/extension-ui-bridge.ts\";\nimport { InteractiveModeBase } from \"./interactive-mode-base.ts\";\nimport {\n\ttype Container,\n\ttype ResourceDiagnostic,\n\ttype SourceInfo,\n\tSpacer,\n\tText,\n\ttheme,\n} from \"./interactive-mode-deps.ts\";\n\nfunction formatList(values: string[]): string {\n\tif (values.length <= 1) return values[0] ?? \"\";\n\tif (values.length === 2) return `${values[0]} and ${values[1]}`;\n\treturn `${values.slice(0, -1).join(\", \")}, and ${values.at(-1)}`;\n}\n\nfunction getShortestUniqueSourceLabels(sources: string[], reservedLabels: ReadonlySet<string>): Map<string, string> {\n\tconst partsBySource = new Map(\n\t\tsources.map((source) => [source, source.replace(/\\\\/g, \"/\").split(\"/\").filter(Boolean)]),\n\t);\n\tconst depthBySource = new Map(sources.map((source) => [source, 1]));\n\twhile (true) {\n\t\tconst groups = new Map<string, string[]>();\n\t\tfor (const source of sources) {\n\t\t\tconst parts = partsBySource.get(source) ?? [source];\n\t\t\tconst depth = depthBySource.get(source) ?? 1;\n\t\t\tconst label = parts.slice(-depth).join(\"/\") || source;\n\t\t\tgroups.set(label, [...(groups.get(label) ?? []), source]);\n\t\t}\n\t\tconst duplicates = [...groups].filter(([label, group]) => group.length > 1 || reservedLabels.has(label));\n\t\tif (duplicates.length === 0) {\n\t\t\treturn new Map(\n\t\t\t\tsources.map((source) => {\n\t\t\t\t\tconst parts = partsBySource.get(source) ?? [source];\n\t\t\t\t\treturn [source, parts.slice(-(depthBySource.get(source) ?? 1)).join(\"/\") || source];\n\t\t\t\t}),\n\t\t\t);\n\t\t}\n\t\tlet expanded = false;\n\t\tfor (const [, group] of duplicates) {\n\t\t\tfor (const source of group) {\n\t\t\t\tconst maxDepth = partsBySource.get(source)?.length ?? 1;\n\t\t\t\tconst depth = depthBySource.get(source) ?? 1;\n\t\t\t\tif (depth < maxDepth) {\n\t\t\t\t\tdepthBySource.set(source, depth + 1);\n\t\t\t\t\texpanded = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (!expanded) return new Map(sources.map((source) => [source, source]));\n\t}\n}\n\nfunction getExtensionIdentityPath(resourcePath: string): string {\n\tconst normalized = resourcePath.replace(/\\\\/g, \"/\");\n\tconst segments = normalized.split(\"/\").filter(Boolean);\n\tif (/^index\\.[cm]?[jt]sx?$/.test(segments.at(-1) ?? \"\")) segments.pop();\n\treturn segments.join(\"/\") || normalized;\n}\n\nfunction mergeExtensions(\n\thostExtensions: ReadonlyArray<{ path: string; sourceInfo?: SourceInfo; hidden?: boolean }>,\n\tengineExtensions: ReadonlyArray<{ path: string; sourceInfo?: SourceInfo; hidden?: boolean }>,\n): Array<{ path: string; sourceInfo?: SourceInfo }> {\n\tconst merged: Array<{ path: string; sourceInfo?: SourceInfo }> = [];\n\tconst indexByIdentity = new Map<string, number>();\n\tconst hiddenIdentities = new Set<string>();\n\tfor (const extension of [...hostExtensions, ...engineExtensions]) {\n\t\tconst identity = getExtensionIdentityPath(extension.path);\n\t\tif (extension.hidden === true) hiddenIdentities.add(identity);\n\t\tconst existingIndex = indexByIdentity.get(identity);\n\t\tif (existingIndex === undefined) {\n\t\t\tindexByIdentity.set(identity, merged.length);\n\t\t\tmerged.push({ path: extension.path, sourceInfo: extension.sourceInfo });\n\t\t\tcontinue;\n\t\t}\n\t\tconst existing = merged[existingIndex];\n\t\tif (existing && !existing.sourceInfo && extension.sourceInfo) {\n\t\t\tmerged[existingIndex] = { ...existing, sourceInfo: extension.sourceInfo };\n\t\t}\n\t}\n\treturn merged.filter((extension) => !hiddenIdentities.has(getExtensionIdentityPath(extension.path)));\n}\n\nfunction getOverlapLabels(mode: InteractiveModeBase, overlaps: readonly ResourceOverlap[]): string[] {\n\tconst labels = new Set<string>();\n\tconst localPackageSources = new Set<string>();\n\tconst extensionSources = new Set<string>();\n\tfor (const overlap of overlaps) {\n\t\tconst sourceInfo = overlap.inherited;\n\t\tif (sourceInfo.origin !== \"package\") {\n\t\t\textensionSources.add(getExtensionIdentityPath(sourceInfo.path));\n\t\t\tcontinue;\n\t\t}\n\t\tif (!mode.isPackageSource(sourceInfo)) {\n\t\t\tlocalPackageSources.add(sourceInfo.source);\n\t\t\tcontinue;\n\t\t}\n\t\tconst label = mode.getCompactPackageSourceLabel(sourceInfo);\n\t\tif (label) labels.add(label);\n\t}\n\tfor (const label of getShortestUniqueSourceLabels([...localPackageSources], labels).values()) labels.add(label);\n\tfor (const label of getShortestUniqueSourceLabels([...extensionSources], labels).values()) labels.add(label);\n\treturn [...labels];\n}\ninterface DisplayedOverlapNotice {\n\tcomponent: Text;\n\tcontainer: Container;\n\tfingerprint: string;\n}\n\nconst displayedOverlapNotices = new WeakMap<InteractiveModeBase, DisplayedOverlapNotice>();\n\nfunction getOverlapNoticeFingerprint(\n\tmode: InteractiveModeBase,\n\toverlaps: readonly ResourceOverlap[],\n): string | undefined {\n\tif (overlaps.length === 0) return undefined;\n\tconst fingerprint = overlaps\n\t\t.map((overlap) => `${overlap.resourceType}:${overlap.name}:${overlap.inherited.path}:${overlap.bundled.path}`)\n\t\t.sort()\n\t\t.join(\"\\n\");\n\tconst displayed = displayedOverlapNotices.get(mode);\n\tif (displayed?.fingerprint === fingerprint && displayed.container.children.includes(displayed.component)) {\n\t\treturn undefined;\n\t}\n\treturn fingerprint;\n}\n\nInteractiveModeBase.prototype.showLoadedResources = function (\n\tthis: InteractiveModeBase,\n\toptions?: {\n\t\textensions?: Array<{ path: string; sourceInfo?: SourceInfo }>;\n\t\tforce?: boolean;\n\t\tshowDiagnosticsWhenQuiet?: boolean;\n\t\ttargetContainer?: Container;\n\t},\n): void {\n\tconst targetContainer = options?.targetContainer ?? this.chatContainer;\n\tconst showListing = options?.force || this.options.verbose || !this.settingsManager.getQuietStartup();\n\tconst showDiagnostics = showListing || options?.showDiagnosticsWhenQuiet === true;\n\tif (!showListing && !showDiagnostics) {\n\t\treturn;\n\t}\n\tif (targetContainer === this.resourceDisclosureContainer) targetContainer.clear();\n\n\tconst skillsResult = this.session.resourceLoader.getSkills();\n\tconst promptsResult = this.session.resourceLoader.getPrompts();\n\tconst themesResult = this.session.resourceLoader.getThemes();\n\tconst hostExtensions =\n\t\toptions?.extensions ??\n\t\tthis.session.resourceLoader.getExtensions().extensions.map((extension) => ({\n\t\t\tpath: extension.path,\n\t\t\tsourceInfo: extension.sourceInfo,\n\t\t\thidden: extension.hidden,\n\t\t}));\n\tconst extensions = mergeExtensions(hostExtensions, getInteractiveEngineResourceExtensions(this.runtimeHost));\n\tconst sourceInfos = new Map<string, SourceInfo>();\n\tfor (const extension of extensions) {\n\t\tif (extension.sourceInfo) {\n\t\t\tsourceInfos.set(extension.path, extension.sourceInfo);\n\t\t}\n\t}\n\tfor (const skill of skillsResult.skills) {\n\t\tif (skill.sourceInfo) {\n\t\t\tsourceInfos.set(skill.filePath, skill.sourceInfo);\n\t\t}\n\t}\n\tfor (const prompt of promptsResult.prompts) {\n\t\tif (prompt.sourceInfo) {\n\t\t\tsourceInfos.set(prompt.filePath, prompt.sourceInfo);\n\t\t}\n\t}\n\tfor (const loadedTheme of themesResult.themes) {\n\t\tif (loadedTheme.sourcePath && loadedTheme.sourceInfo) {\n\t\t\tsourceInfos.set(loadedTheme.sourcePath, loadedTheme.sourceInfo);\n\t\t}\n\t}\n\n\tif (showListing) {\n\t\t// SYSTEM.md / APPEND_SYSTEM.md shape the prompt exactly like AGENTS.md does,\n\t\t// so the startup CONTEXT listing names them too.\n\t\tconst systemPromptSource = this.session.resourceLoader.getSystemPromptSource();\n\t\tconst contextFiles = [\n\t\t\t...(systemPromptSource ? [systemPromptSource] : []),\n\t\t\t...this.session.resourceLoader.getAppendSystemPromptSources(),\n\t\t\t...this.session.resourceLoader.getAgentsFiles().agentsFiles,\n\t\t];\n\t\tconst customThemes = themesResult.themes.filter((t) => t.sourcePath);\n\n\t\tconst expandedSections: {\n\t\t\tcontext?: string;\n\t\t\tskills?: string;\n\t\t\tprompts?: string;\n\t\t\textensions?: string;\n\t\t\tthemes?: string;\n\t\t} = {};\n\t\tif (contextFiles.length > 0) {\n\t\t\texpandedSections.context = contextFiles\n\t\t\t\t.map((contextFile) => theme.fg(\"dim\", ` ${this.formatDisplayPath(contextFile.path)}`))\n\t\t\t\t.join(\"\\n\");\n\t\t}\n\n\t\tconst skills = skillsResult.skills;\n\t\tif (skills.length > 0) {\n\t\t\tconst groups = this.buildScopeGroups(\n\t\t\t\tskills.map((skill) => ({\n\t\t\t\t\tpath: skill.filePath,\n\t\t\t\t\tsourceInfo: skill.sourceInfo,\n\t\t\t\t})),\n\t\t\t);\n\t\t\texpandedSections.skills = this.formatScopeGroups(groups, {\n\t\t\t\tformatPath: (item) => this.formatDisplayPath(item.path),\n\t\t\t\tformatPackagePath: (item) => this.getShortPath(item.path, item.sourceInfo),\n\t\t\t});\n\t\t}\n\n\t\tconst prompts = promptsResult.prompts;\n\t\tconst promptEntries = prompts.map((prompt) => ({\n\t\t\tpath: prompt.filePath,\n\t\t\tsourceInfo: prompt.sourceInfo,\n\t\t\tlabel: `/${prompt.name}`,\n\t\t}));\n\t\tif (promptEntries.length > 0) {\n\t\t\tconst groups = this.buildScopeGroups(promptEntries);\n\t\t\tconst promptByPath = new Map(promptEntries.map((prompt) => [prompt.path, prompt.label]));\n\t\t\texpandedSections.prompts = this.formatScopeGroups(groups, {\n\t\t\t\tformatPath: (item) => promptByPath.get(item.path) ?? this.formatDisplayPath(item.path),\n\t\t\t\tformatPackagePath: (item) => promptByPath.get(item.path) ?? this.formatDisplayPath(item.path),\n\t\t\t});\n\t\t}\n\n\t\tif (extensions.length > 0) {\n\t\t\tconst groups = this.buildScopeGroups(extensions);\n\t\t\texpandedSections.extensions = this.formatScopeGroups(groups, {\n\t\t\t\tformatPath: (item) => this.formatExtensionDisplayPath(item.path),\n\t\t\t\tformatPackagePath: (item) => this.formatExtensionDisplayPath(this.getShortPath(item.path, item.sourceInfo)),\n\t\t\t});\n\t\t}\n\n\t\tif (customThemes.length > 0) {\n\t\t\tconst groups = this.buildScopeGroups(\n\t\t\t\tcustomThemes.map((loadedTheme) => ({\n\t\t\t\t\tpath: loadedTheme.sourcePath!,\n\t\t\t\t\tsourceInfo: loadedTheme.sourceInfo,\n\t\t\t\t})),\n\t\t\t);\n\t\t\texpandedSections.themes = this.formatScopeGroups(groups, {\n\t\t\t\tformatPath: (item) => this.formatDisplayPath(item.path),\n\t\t\t\tformatPackagePath: (item) => this.getShortPath(item.path, item.sourceInfo),\n\t\t\t});\n\t\t}\n\n\t\tthis.addResourceDisclosure({\n\t\t\tcontextFiles,\n\t\t\tskills,\n\t\t\tprompts,\n\t\t\textensions,\n\t\t\tthemes: customThemes,\n\t\t\texpandedSections,\n\t\t\ttargetContainer,\n\t\t});\n\t}\n\n\tif (showDiagnostics) {\n\t\tconst overlaps = [\n\t\t\t...(this.session.resourceLoader.getExtensions().overlaps ?? []),\n\t\t\t...getInteractiveEngineResourceOverlaps(this.runtimeHost),\n\t\t];\n\t\tconst overlapLabels = getOverlapLabels(this, overlaps);\n\t\tconst overlapFingerprint = getOverlapNoticeFingerprint(this, overlaps);\n\t\tif (overlapFingerprint && overlapLabels.length > 0) {\n\t\t\tconst sources = formatList(overlapLabels.map((label) => `\\`${label}\\``));\n\t\t\tconst verb = overlapLabels.length === 1 ? \"provides\" : \"provide\";\n\t\t\tconst notice = new Text(\n\t\t\t\ttheme.fg(\n\t\t\t\t\t\"warning\",\n\t\t\t\t\t`Extension overlap detected: ${sources} ${verb} resources already bundled with Atomic. Atomic kept its bundled versions; non-conflicting extension features remain available.`,\n\t\t\t\t),\n\t\t\t\t0,\n\t\t\t\t0,\n\t\t\t);\n\t\t\ttargetContainer.addChild(notice);\n\t\t\tdisplayedOverlapNotices.set(this, {\n\t\t\t\tcomponent: notice,\n\t\t\t\tcontainer: targetContainer,\n\t\t\t\tfingerprint: overlapFingerprint,\n\t\t\t});\n\t\t\ttargetContainer.addChild(new Spacer(1));\n\t\t}\n\n\t\tconst skillDiagnostics = skillsResult.diagnostics;\n\t\tif (skillDiagnostics.length > 0) {\n\t\t\tconst warningLines = this.formatDiagnostics(skillDiagnostics, sourceInfos);\n\t\t\ttargetContainer.addChild(new Text(`${theme.fg(\"warning\", \"[Skill conflicts]\")}\\n${warningLines}`, 0, 0));\n\t\t\ttargetContainer.addChild(new Spacer(1));\n\t\t}\n\n\t\tconst promptDiagnostics = promptsResult.diagnostics;\n\t\tif (promptDiagnostics.length > 0) {\n\t\t\tconst warningLines = this.formatDiagnostics(promptDiagnostics, sourceInfos);\n\t\t\ttargetContainer.addChild(new Text(`${theme.fg(\"warning\", \"[Prompt conflicts]\")}\\n${warningLines}`, 0, 0));\n\t\t\ttargetContainer.addChild(new Spacer(1));\n\t\t}\n\n\t\tconst extensionDiagnostics: ResourceDiagnostic[] = [];\n\t\tconst extensionsResult = this.session.resourceLoader.getExtensions();\n\t\tfor (const error of extensionsResult.errors) {\n\t\t\textensionDiagnostics.push({ type: \"error\", message: error.error, path: error.path });\n\t\t}\n\t\tfor (const warning of extensionsResult.warnings ?? []) {\n\t\t\textensionDiagnostics.push({ type: \"warning\", message: warning.warning, path: warning.path });\n\t\t}\n\n\t\tconst commandDiagnostics = this.session.extensionRunner.getCommandDiagnostics();\n\t\textensionDiagnostics.push(...commandDiagnostics);\n\t\textensionDiagnostics.push(...this.getBuiltInCommandConflictDiagnostics(this.session.extensionRunner));\n\n\t\tconst shortcutDiagnostics = this.session.extensionRunner.getShortcutDiagnostics();\n\t\textensionDiagnostics.push(...shortcutDiagnostics);\n\n\t\tif (extensionDiagnostics.length > 0) {\n\t\t\tconst warningLines = this.formatDiagnostics(extensionDiagnostics, sourceInfos);\n\t\t\ttargetContainer.addChild(new Text(`${theme.fg(\"warning\", \"[Extension issues]\")}\\n${warningLines}`, 0, 0));\n\t\t\ttargetContainer.addChild(new Spacer(1));\n\t\t}\n\n\t\tconst themeDiagnostics = themesResult.diagnostics;\n\t\tif (themeDiagnostics.length > 0) {\n\t\t\tconst warningLines = this.formatDiagnostics(themeDiagnostics, sourceInfos);\n\t\t\ttargetContainer.addChild(new Text(`${theme.fg(\"warning\", \"[Theme conflicts]\")}\\n${warningLines}`, 0, 0));\n\t\t\ttargetContainer.addChild(new Spacer(1));\n\t\t}\n\t}\n};\n"]}
1
+ {"version":3,"file":"interactive-resource-rendering.js","sourceRoot":"","sources":["../../../src/modes/interactive/interactive-resource-rendering.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ResourceOverlap } from \"../../core/diagnostics.ts\";\nimport {\n\tgetInteractiveEngineResourceExtensions,\n\tgetInteractiveEngineResourceOverlaps,\n} from \"../interactive-engine/extension-ui-bridge.ts\";\nimport { InteractiveModeBase } from \"./interactive-mode-base.ts\";\nimport {\n\ttype Container,\n\ttype ResourceDiagnostic,\n\ttype SourceInfo,\n\tSpacer,\n\tText,\n\ttheme,\n} from \"./interactive-mode-deps.ts\";\n\nfunction formatList(values: string[]): string {\n\tif (values.length <= 1) return values[0] ?? \"\";\n\tif (values.length === 2) return `${values[0]} and ${values[1]}`;\n\treturn `${values.slice(0, -1).join(\", \")}, and ${values.at(-1)}`;\n}\n\nfunction getShortestUniqueSourceLabels(sources: string[], reservedLabels: ReadonlySet<string>): Map<string, string> {\n\tconst partsBySource = new Map(\n\t\tsources.map((source) => [source, source.replace(/\\\\/g, \"/\").split(\"/\").filter(Boolean)]),\n\t);\n\tconst depthBySource = new Map(sources.map((source) => [source, 1]));\n\twhile (true) {\n\t\tconst groups = new Map<string, string[]>();\n\t\tfor (const source of sources) {\n\t\t\tconst parts = partsBySource.get(source) ?? [source];\n\t\t\tconst depth = depthBySource.get(source) ?? 1;\n\t\t\tconst label = parts.slice(-depth).join(\"/\") || source;\n\t\t\tgroups.set(label, [...(groups.get(label) ?? []), source]);\n\t\t}\n\t\tconst duplicates = [...groups].filter(([label, group]) => group.length > 1 || reservedLabels.has(label));\n\t\tif (duplicates.length === 0) {\n\t\t\treturn new Map(\n\t\t\t\tsources.map((source) => {\n\t\t\t\t\tconst parts = partsBySource.get(source) ?? [source];\n\t\t\t\t\treturn [source, parts.slice(-(depthBySource.get(source) ?? 1)).join(\"/\") || source];\n\t\t\t\t}),\n\t\t\t);\n\t\t}\n\t\tlet expanded = false;\n\t\tfor (const [, group] of duplicates) {\n\t\t\tfor (const source of group) {\n\t\t\t\tconst maxDepth = partsBySource.get(source)?.length ?? 1;\n\t\t\t\tconst depth = depthBySource.get(source) ?? 1;\n\t\t\t\tif (depth < maxDepth) {\n\t\t\t\t\tdepthBySource.set(source, depth + 1);\n\t\t\t\t\texpanded = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (!expanded) return new Map(sources.map((source) => [source, source]));\n\t}\n}\n\nfunction getExtensionIdentityPath(resourcePath: string): string {\n\tconst normalized = resourcePath.replace(/\\\\/g, \"/\");\n\tconst segments = normalized.split(\"/\").filter(Boolean);\n\tif (/^index\\.[cm]?[jt]sx?$/.test(segments.at(-1) ?? \"\")) segments.pop();\n\treturn segments.join(\"/\") || normalized;\n}\n\nfunction mergeExtensions(\n\thostExtensions: ReadonlyArray<{ path: string; sourceInfo?: SourceInfo; hidden?: boolean }>,\n\tengineExtensions: ReadonlyArray<{ path: string; sourceInfo?: SourceInfo; hidden?: boolean }>,\n): Array<{ path: string; sourceInfo?: SourceInfo }> {\n\tconst merged: Array<{ path: string; sourceInfo?: SourceInfo }> = [];\n\tconst indexByIdentity = new Map<string, number>();\n\tconst hiddenIdentities = new Set<string>();\n\tfor (const extension of [...hostExtensions, ...engineExtensions]) {\n\t\tconst identity = getExtensionIdentityPath(extension.path);\n\t\tif (extension.hidden === true) hiddenIdentities.add(identity);\n\t\tconst existingIndex = indexByIdentity.get(identity);\n\t\tif (existingIndex === undefined) {\n\t\t\tindexByIdentity.set(identity, merged.length);\n\t\t\tmerged.push({ path: extension.path, sourceInfo: extension.sourceInfo });\n\t\t\tcontinue;\n\t\t}\n\t\tconst existing = merged[existingIndex];\n\t\tif (existing && !existing.sourceInfo && extension.sourceInfo) {\n\t\t\tmerged[existingIndex] = { ...existing, sourceInfo: extension.sourceInfo };\n\t\t}\n\t}\n\treturn merged.filter((extension) => !hiddenIdentities.has(getExtensionIdentityPath(extension.path)));\n}\n\nfunction getOverlapLabels(mode: InteractiveModeBase, overlaps: readonly ResourceOverlap[]): string[] {\n\tconst labels = new Set<string>();\n\tconst localPackageSources = new Set<string>();\n\tconst extensionSources = new Set<string>();\n\tfor (const overlap of overlaps) {\n\t\tconst sourceInfo = overlap.inherited;\n\t\tif (sourceInfo.origin !== \"package\") {\n\t\t\textensionSources.add(getExtensionIdentityPath(sourceInfo.path));\n\t\t\tcontinue;\n\t\t}\n\t\tif (!mode.isPackageSource(sourceInfo)) {\n\t\t\tlocalPackageSources.add(sourceInfo.source);\n\t\t\tcontinue;\n\t\t}\n\t\tconst label = mode.getCompactPackageSourceLabel(sourceInfo);\n\t\tif (label) labels.add(label);\n\t}\n\tfor (const label of getShortestUniqueSourceLabels([...localPackageSources], labels).values()) labels.add(label);\n\tfor (const label of getShortestUniqueSourceLabels([...extensionSources], labels).values()) labels.add(label);\n\treturn [...labels];\n}\ninterface DisplayedOverlapNotice {\n\tcomponent: Text;\n\tcontainer: Container;\n\tfingerprint: string;\n}\n\nconst displayedOverlapNotices = new WeakMap<InteractiveModeBase, DisplayedOverlapNotice>();\n\nfunction getOverlapNoticeFingerprint(\n\tmode: InteractiveModeBase,\n\toverlaps: readonly ResourceOverlap[],\n): string | undefined {\n\tif (overlaps.length === 0) return undefined;\n\tconst fingerprint = overlaps\n\t\t.map((overlap) => `${overlap.resourceType}:${overlap.name}:${overlap.inherited.path}:${overlap.bundled.path}`)\n\t\t.sort()\n\t\t.join(\"\\n\");\n\tconst displayed = displayedOverlapNotices.get(mode);\n\tif (displayed?.fingerprint === fingerprint && displayed.container.children.includes(displayed.component)) {\n\t\treturn undefined;\n\t}\n\treturn fingerprint;\n}\n\nInteractiveModeBase.prototype.showLoadedResources = function (\n\tthis: InteractiveModeBase,\n\toptions?: {\n\t\textensions?: Array<{ path: string; sourceInfo?: SourceInfo }>;\n\t\tforce?: boolean;\n\t\tshowDiagnosticsWhenQuiet?: boolean;\n\t\ttargetContainer?: Container;\n\t},\n): void {\n\tconst targetContainer = options?.targetContainer ?? this.chatContainer;\n\tconst showListing = options?.force || this.options.verbose || !this.settingsManager.getQuietStartup();\n\tconst showDiagnostics = showListing || options?.showDiagnosticsWhenQuiet === true;\n\tif (!showListing && !showDiagnostics) {\n\t\treturn;\n\t}\n\tif (targetContainer === this.resourceDisclosureContainer) targetContainer.clear();\n\n\tconst skillsResult = this.session.resourceLoader.getSkills();\n\tconst promptsResult = this.session.resourceLoader.getPrompts();\n\tconst themesResult = this.session.resourceLoader.getThemes();\n\tconst hostExtensions =\n\t\toptions?.extensions ??\n\t\tthis.session.resourceLoader.getExtensions().extensions.map((extension) => ({\n\t\t\tpath: extension.path,\n\t\t\tsourceInfo: extension.sourceInfo,\n\t\t\thidden: extension.hidden,\n\t\t}));\n\tconst extensions = mergeExtensions(hostExtensions, getInteractiveEngineResourceExtensions(this.runtimeHost));\n\tconst sourceInfos = new Map<string, SourceInfo>();\n\tfor (const extension of extensions) {\n\t\tif (extension.sourceInfo) {\n\t\t\tsourceInfos.set(extension.path, extension.sourceInfo);\n\t\t}\n\t}\n\tfor (const skill of skillsResult.skills) {\n\t\tif (skill.sourceInfo) {\n\t\t\tsourceInfos.set(skill.filePath, skill.sourceInfo);\n\t\t}\n\t}\n\tfor (const prompt of promptsResult.prompts) {\n\t\tif (prompt.sourceInfo) {\n\t\t\tsourceInfos.set(prompt.filePath, prompt.sourceInfo);\n\t\t}\n\t}\n\tfor (const loadedTheme of themesResult.themes) {\n\t\tif (loadedTheme.sourcePath && loadedTheme.sourceInfo) {\n\t\t\tsourceInfos.set(loadedTheme.sourcePath, loadedTheme.sourceInfo);\n\t\t}\n\t}\n\n\tif (showListing) {\n\t\t// SYSTEM.md / APPEND_SYSTEM.md shape the prompt exactly like AGENTS.md does,\n\t\t// so the startup CONTEXT listing names them too.\n\t\tconst systemPromptSource = this.session.resourceLoader.getSystemPromptSource();\n\t\tconst contextFiles = [\n\t\t\t...(systemPromptSource ? [systemPromptSource] : []),\n\t\t\t...this.session.resourceLoader.getAppendSystemPromptSources(),\n\t\t\t...this.session.resourceLoader.getAgentsFiles().agentsFiles,\n\t\t];\n\n\t\tconst expandedSections: {\n\t\t\tcontext?: string;\n\t\t\tskills?: string;\n\t\t\tprompts?: string;\n\t\t\textensions?: string;\n\t\t} = {};\n\t\tif (contextFiles.length > 0) {\n\t\t\texpandedSections.context = contextFiles\n\t\t\t\t.map((contextFile) => theme.fg(\"dim\", ` ${this.formatDisplayPath(contextFile.path)}`))\n\t\t\t\t.join(\"\\n\");\n\t\t}\n\n\t\tconst skills = skillsResult.skills;\n\t\tif (skills.length > 0) {\n\t\t\tconst groups = this.buildScopeGroups(\n\t\t\t\tskills.map((skill) => ({\n\t\t\t\t\tpath: skill.filePath,\n\t\t\t\t\tsourceInfo: skill.sourceInfo,\n\t\t\t\t})),\n\t\t\t);\n\t\t\texpandedSections.skills = this.formatScopeGroups(groups, {\n\t\t\t\tformatPath: (item) => this.formatDisplayPath(item.path),\n\t\t\t\tformatPackagePath: (item) => this.getShortPath(item.path, item.sourceInfo),\n\t\t\t});\n\t\t}\n\n\t\tconst prompts = promptsResult.prompts;\n\t\tconst promptEntries = prompts.map((prompt) => ({\n\t\t\tpath: prompt.filePath,\n\t\t\tsourceInfo: prompt.sourceInfo,\n\t\t\tlabel: `/${prompt.name}`,\n\t\t}));\n\t\tif (promptEntries.length > 0) {\n\t\t\tconst groups = this.buildScopeGroups(promptEntries);\n\t\t\tconst promptByPath = new Map(promptEntries.map((prompt) => [prompt.path, prompt.label]));\n\t\t\texpandedSections.prompts = this.formatScopeGroups(groups, {\n\t\t\t\tformatPath: (item) => promptByPath.get(item.path) ?? this.formatDisplayPath(item.path),\n\t\t\t\tformatPackagePath: (item) => promptByPath.get(item.path) ?? this.formatDisplayPath(item.path),\n\t\t\t});\n\t\t}\n\n\t\tif (extensions.length > 0) {\n\t\t\tconst groups = this.buildScopeGroups(extensions);\n\t\t\texpandedSections.extensions = this.formatScopeGroups(groups, {\n\t\t\t\tformatPath: (item) => this.formatExtensionDisplayPath(item.path),\n\t\t\t\tformatPackagePath: (item) => this.formatExtensionDisplayPath(this.getShortPath(item.path, item.sourceInfo)),\n\t\t\t});\n\t\t}\n\n\t\tthis.addResourceDisclosure({\n\t\t\tcontextFiles,\n\t\t\tskills,\n\t\t\tprompts,\n\t\t\textensions,\n\t\t\texpandedSections,\n\t\t\ttargetContainer,\n\t\t});\n\t}\n\n\tif (showDiagnostics) {\n\t\tconst overlaps = [\n\t\t\t...(this.session.resourceLoader.getExtensions().overlaps ?? []),\n\t\t\t...getInteractiveEngineResourceOverlaps(this.runtimeHost),\n\t\t];\n\t\tconst overlapLabels = getOverlapLabels(this, overlaps);\n\t\tconst overlapFingerprint = getOverlapNoticeFingerprint(this, overlaps);\n\t\tif (overlapFingerprint && overlapLabels.length > 0) {\n\t\t\tconst sources = formatList(overlapLabels.map((label) => `\\`${label}\\``));\n\t\t\tconst verb = overlapLabels.length === 1 ? \"provides\" : \"provide\";\n\t\t\tconst notice = new Text(\n\t\t\t\ttheme.fg(\n\t\t\t\t\t\"warning\",\n\t\t\t\t\t`Extension overlap detected: ${sources} ${verb} resources already bundled with Atomic. Atomic kept its bundled versions; non-conflicting extension features remain available.`,\n\t\t\t\t),\n\t\t\t\t0,\n\t\t\t\t0,\n\t\t\t);\n\t\t\ttargetContainer.addChild(notice);\n\t\t\tdisplayedOverlapNotices.set(this, {\n\t\t\t\tcomponent: notice,\n\t\t\t\tcontainer: targetContainer,\n\t\t\t\tfingerprint: overlapFingerprint,\n\t\t\t});\n\t\t\ttargetContainer.addChild(new Spacer(1));\n\t\t}\n\n\t\tconst skillDiagnostics = skillsResult.diagnostics;\n\t\tif (skillDiagnostics.length > 0) {\n\t\t\tconst warningLines = this.formatDiagnostics(skillDiagnostics, sourceInfos);\n\t\t\ttargetContainer.addChild(new Text(`${theme.fg(\"warning\", \"[Skill conflicts]\")}\\n${warningLines}`, 0, 0));\n\t\t\ttargetContainer.addChild(new Spacer(1));\n\t\t}\n\n\t\tconst promptDiagnostics = promptsResult.diagnostics;\n\t\tif (promptDiagnostics.length > 0) {\n\t\t\tconst warningLines = this.formatDiagnostics(promptDiagnostics, sourceInfos);\n\t\t\ttargetContainer.addChild(new Text(`${theme.fg(\"warning\", \"[Prompt conflicts]\")}\\n${warningLines}`, 0, 0));\n\t\t\ttargetContainer.addChild(new Spacer(1));\n\t\t}\n\n\t\tconst extensionDiagnostics: ResourceDiagnostic[] = [];\n\t\tconst extensionsResult = this.session.resourceLoader.getExtensions();\n\t\tfor (const error of extensionsResult.errors) {\n\t\t\textensionDiagnostics.push({ type: \"error\", message: error.error, path: error.path });\n\t\t}\n\t\tfor (const warning of extensionsResult.warnings ?? []) {\n\t\t\textensionDiagnostics.push({ type: \"warning\", message: warning.warning, path: warning.path });\n\t\t}\n\n\t\tconst commandDiagnostics = this.session.extensionRunner.getCommandDiagnostics();\n\t\textensionDiagnostics.push(...commandDiagnostics);\n\t\textensionDiagnostics.push(...this.getBuiltInCommandConflictDiagnostics(this.session.extensionRunner));\n\n\t\tconst shortcutDiagnostics = this.session.extensionRunner.getShortcutDiagnostics();\n\t\textensionDiagnostics.push(...shortcutDiagnostics);\n\n\t\tif (extensionDiagnostics.length > 0) {\n\t\t\tconst warningLines = this.formatDiagnostics(extensionDiagnostics, sourceInfos);\n\t\t\ttargetContainer.addChild(new Text(`${theme.fg(\"warning\", \"[Extension issues]\")}\\n${warningLines}`, 0, 0));\n\t\t\ttargetContainer.addChild(new Spacer(1));\n\t\t}\n\n\t\tconst themeDiagnostics = themesResult.diagnostics;\n\t\tif (themeDiagnostics.length > 0) {\n\t\t\tconst warningLines = this.formatDiagnostics(themeDiagnostics, sourceInfos);\n\t\t\ttargetContainer.addChild(new Text(`${theme.fg(\"warning\", \"[Theme conflicts]\")}\\n${warningLines}`, 0, 0));\n\t\t\ttargetContainer.addChild(new Spacer(1));\n\t\t}\n\t}\n};\n"]}
@@ -6,10 +6,7 @@ import { Container } from "./interactive-mode-deps.js";
6
6
  * before an earlier container received content.
7
7
  */
8
8
  export class StartupChatContainer extends Container {
9
- constructor() {
10
- super(...arguments);
11
- this.startupOutputReleased = false;
12
- }
9
+ startupOutputReleased = false;
13
10
  releaseStartupOutput() {
14
11
  this.startupOutputReleased = true;
15
12
  this.invalidate();
@@ -1 +1 @@
1
- {"version":3,"file":"interactive-startup-chat-container.js","sourceRoot":"","sources":["../../../src/modes/interactive/interactive-startup-chat-container.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAEvD;;;;GAIG;AACH,MAAM,OAAO,oBAAqB,SAAQ,SAAS;IAAnD;;QACS,0BAAqB,GAAG,KAAK,CAAC;IAUvC,CAAC;IARA,oBAAoB;QACnB,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;QAClC,IAAI,CAAC,UAAU,EAAE,CAAC;IACnB,CAAC;IAEQ,MAAM,CAAC,KAAa;QAC5B,OAAO,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9D,CAAC;CACD;AAOD,MAAM,UAAU,wBAAwB,CAAC,IAA2B;IACnE,IAAI,IAAI,CAAC,aAAa,YAAY,oBAAoB,EAAE,CAAC;QACxD,IAAI,CAAC,aAAa,CAAC,oBAAoB,EAAE,CAAC;QAC1C,mBAAmB,CAAC,qBAAqB,CAAC,CAAC;QAC3C,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC;IACzB,CAAC;AACF,CAAC","sourcesContent":["import { markLifecycleTiming } from \"../../core/lifecycle-timings.ts\";\nimport { Container } from \"./interactive-mode-deps.ts\";\n\n/**\n * Holds startup chat output off-screen until the resource disclosure slot has\n * been filled. Terminal scrollback cannot reorder lines that were painted\n * before an earlier container received content.\n */\nexport class StartupChatContainer extends Container {\n\tprivate startupOutputReleased = false;\n\n\treleaseStartupOutput(): void {\n\t\tthis.startupOutputReleased = true;\n\t\tthis.invalidate();\n\t}\n\n\toverride render(width: number): string[] {\n\t\treturn this.startupOutputReleased ? super.render(width) : [];\n\t}\n}\n\ninterface StartupChatOutputHost {\n\tchatContainer: Container;\n\tui: { requestRender(): void };\n}\n\nexport function releaseStartupChatOutput(host: StartupChatOutputHost): void {\n\tif (host.chatContainer instanceof StartupChatContainer) {\n\t\thost.chatContainer.releaseStartupOutput();\n\t\tmarkLifecycleTiming(\"chat-output-release\");\n\t\thost.ui.requestRender();\n\t}\n}\n"]}
1
+ {"version":3,"file":"interactive-startup-chat-container.js","sourceRoot":"","sources":["../../../src/modes/interactive/interactive-startup-chat-container.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAEvD;;;;GAIG;AACH,MAAM,OAAO,oBAAqB,SAAQ,SAAS;IAC1C,qBAAqB,GAAG,KAAK,CAAC;IAEtC,oBAAoB;QACnB,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;QAClC,IAAI,CAAC,UAAU,EAAE,CAAC;IACnB,CAAC;IAEQ,MAAM,CAAC,KAAa;QAC5B,OAAO,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9D,CAAC;CACD;AAOD,MAAM,UAAU,wBAAwB,CAAC,IAA2B;IACnE,IAAI,IAAI,CAAC,aAAa,YAAY,oBAAoB,EAAE,CAAC;QACxD,IAAI,CAAC,aAAa,CAAC,oBAAoB,EAAE,CAAC;QAC1C,mBAAmB,CAAC,qBAAqB,CAAC,CAAC;QAC3C,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC;IACzB,CAAC;AACF,CAAC","sourcesContent":["import { markLifecycleTiming } from \"../../core/lifecycle-timings.ts\";\nimport { Container } from \"./interactive-mode-deps.ts\";\n\n/**\n * Holds startup chat output off-screen until the resource disclosure slot has\n * been filled. Terminal scrollback cannot reorder lines that were painted\n * before an earlier container received content.\n */\nexport class StartupChatContainer extends Container {\n\tprivate startupOutputReleased = false;\n\n\treleaseStartupOutput(): void {\n\t\tthis.startupOutputReleased = true;\n\t\tthis.invalidate();\n\t}\n\n\toverride render(width: number): string[] {\n\t\treturn this.startupOutputReleased ? super.render(width) : [];\n\t}\n}\n\ninterface StartupChatOutputHost {\n\tchatContainer: Container;\n\tui: { requestRender(): void };\n}\n\nexport function releaseStartupChatOutput(host: StartupChatOutputHost): void {\n\tif (host.chatContainer instanceof StartupChatContainer) {\n\t\thost.chatContainer.releaseStartupOutput();\n\t\tmarkLifecycleTiming(\"chat-output-release\");\n\t\thost.ui.requestRender();\n\t}\n}\n"]}
@@ -24,9 +24,7 @@ function refreshKey(modelRuntime, options) {
24
24
  return `${policy}:${modelRuntime.getCatalogInputsGeneration()}`;
25
25
  }
26
26
  class ModelCatalogRefreshCoordinator {
27
- constructor() {
28
- this.activeByRuntime = new WeakMap();
29
- }
27
+ activeByRuntime = new WeakMap();
30
28
  refresh(modelRuntime, request) {
31
29
  const { signal, ...options } = request;
32
30
  signal.throwIfAborted();
@@ -1 +1 @@
1
- {"version":3,"file":"model-catalog-refresh.js","sourceRoot":"","sources":["../../../src/modes/interactive/model-catalog-refresh.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ModelsRefreshOptions, ModelsRefreshResult } from \"@bastani/pi-ai\";\nimport type { ModelRuntime } from \"../../core/model-runtime.js\";\nimport { raceWithAbortSignal } from \"../../utils/abort.js\";\n\ntype ModelCatalogRuntime = Pick<ModelRuntime, \"refresh\" | \"isNetworkRefreshEnabled\" | \"getCatalogInputsGeneration\">;\n\n/**\n * The whole-catalog options interactive refreshes vary. `providers` and `force`\n * are deliberately absent: a scoped or forced refresh asks for different work\n * and must never be answered by another caller's in-flight pass.\n */\nexport type ModelCatalogRefreshOptions = Pick<ModelsRefreshOptions, \"allowNetwork\">;\n\nexport interface ModelCatalogRefreshRequest extends ModelCatalogRefreshOptions {\n\t/** Caller's cancellation, independent of the shared refresh it joins. */\n\tsignal: AbortSignal;\n}\n\ninterface ActiveModelCatalogRefresh {\n\tcontroller: AbortController;\n\tpromise: Promise<ModelsRefreshResult>;\n\twaiters: number;\n}\n\n/**\n * A key names WHICH work a caller is asking for, plus WHEN the inputs that work\n * reads last changed. Both halves are needed and neither grows a third term.\n *\n * Which: the policy the runtime will actually apply, not how the caller spelled\n * it. Startup asks for `allowNetwork: true` while the `/model` selector omits the\n * option and lets the runtime decide; on an online runtime those are one pass, and\n * keying the spelling started two. An explicit value that disagrees with the\n * runtime's own policy is still different work and still keys apart.\n *\n * When: `ModelRuntime.getCatalogInputsGeneration()` — one monotonic counter over\n * every input a pass reads (credential writes, provider registrations, and\n * models.json content; see its doc comment). A pass publishes one snapshot built\n * from the inputs it started under, so joining across a bump serves the joiner\n * models and credentials the user already replaced and then overwrites the newer\n * state with them. Keying on the generation makes a request that arrives after\n * any such change start its own pass, and it is deliberately ONE number: this\n * coordinator previously keyed input by input — first the network policy, then\n * credentials, then models.json — and each round left the next input unkeyed.\n */\nfunction refreshKey(modelRuntime: ModelCatalogRuntime, options: ModelCatalogRefreshOptions): string {\n\tconst policy = (options.allowNetwork ?? modelRuntime.isNetworkRefreshEnabled()) ? \"network\" : \"cache\";\n\treturn `${policy}:${modelRuntime.getCatalogInputsGeneration()}`;\n}\n\nclass ModelCatalogRefreshCoordinator {\n\tprivate readonly activeByRuntime = new WeakMap<ModelCatalogRuntime, Map<string, ActiveModelCatalogRefresh>>();\n\n\trefresh(modelRuntime: ModelCatalogRuntime, request: ModelCatalogRefreshRequest): Promise<ModelsRefreshResult> {\n\t\tconst { signal, ...options } = request;\n\t\tsignal.throwIfAborted();\n\n\t\tlet byKey = this.activeByRuntime.get(modelRuntime);\n\t\tif (!byKey) {\n\t\t\tbyKey = new Map<string, ActiveModelCatalogRefresh>();\n\t\t\tthis.activeByRuntime.set(modelRuntime, byKey);\n\t\t}\n\t\tconst active = byKey;\n\t\tconst key = refreshKey(modelRuntime, options);\n\n\t\tlet shared = active.get(key);\n\t\tif (!shared) {\n\t\t\tconst controller = new AbortController();\n\t\t\tlet created!: ActiveModelCatalogRefresh;\n\t\t\tconst operation = modelRuntime.refresh({ ...options, signal: controller.signal });\n\t\t\tconst promise = raceWithAbortSignal(operation, controller.signal).finally(() => {\n\t\t\t\tif (active.get(key) === created) active.delete(key);\n\t\t\t});\n\t\t\tcreated = { controller, promise, waiters: 0 };\n\t\t\tshared = created;\n\t\t\tactive.set(key, shared);\n\t\t}\n\n\t\tconst joined = shared;\n\t\tjoined.waiters++;\n\t\t// Release on the caller's abort rather than only on settlement: a selector\n\t\t// that closes must cancel the underlying refresh in the same tick, which is\n\t\t// what Atomic's callers already observe.\n\t\tlet released = false;\n\t\tconst release = () => {\n\t\t\tif (released) return;\n\t\t\treleased = true;\n\t\t\tsignal.removeEventListener(\"abort\", release);\n\t\t\tjoined.waiters--;\n\t\t\tif (joined.waiters > 0) return;\n\t\t\tif (active.get(key) !== joined) return;\n\t\t\t// Evict before aborting. The abort is synchronous while the shared promise's\n\t\t\t// own cleanup is a microtask, so a caller retrying in this same tick would\n\t\t\t// otherwise join an entry that is already aborted and reject without work.\n\t\t\tactive.delete(key);\n\t\t\tjoined.controller.abort();\n\t\t};\n\t\tsignal.addEventListener(\"abort\", release);\n\t\treturn raceWithAbortSignal(joined.promise, signal).finally(release);\n\t}\n}\n\nconst modelCatalogRefreshCoordinator = new ModelCatalogRefreshCoordinator();\n\n/** Share concurrent interactive all-catalog refreshes while keeping each caller's cancellation independent. */\nexport function refreshModelCatalogs(\n\tmodelRuntime: ModelCatalogRuntime,\n\trequest: ModelCatalogRefreshRequest,\n): Promise<ModelsRefreshResult> {\n\treturn modelCatalogRefreshCoordinator.refresh(modelRuntime, request);\n}\n"]}
1
+ {"version":3,"file":"model-catalog-refresh.js","sourceRoot":"","sources":["../../../src/modes/interactive/model-catalog-refresh.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ModelsRefreshOptions, ModelsRefreshResult } from \"@bastani/pi-ai\";\nimport type { ModelRuntime } from \"../../core/model-runtime.js\";\nimport { raceWithAbortSignal } from \"../../utils/abort.js\";\n\ntype ModelCatalogRuntime = Pick<ModelRuntime, \"refresh\" | \"isNetworkRefreshEnabled\" | \"getCatalogInputsGeneration\">;\n\n/**\n * The whole-catalog options interactive refreshes vary. `providers` and `force`\n * are deliberately absent: a scoped or forced refresh asks for different work\n * and must never be answered by another caller's in-flight pass.\n */\nexport type ModelCatalogRefreshOptions = Pick<ModelsRefreshOptions, \"allowNetwork\">;\n\nexport interface ModelCatalogRefreshRequest extends ModelCatalogRefreshOptions {\n\t/** Caller's cancellation, independent of the shared refresh it joins. */\n\tsignal: AbortSignal;\n}\n\ninterface ActiveModelCatalogRefresh {\n\tcontroller: AbortController;\n\tpromise: Promise<ModelsRefreshResult>;\n\twaiters: number;\n}\n\n/**\n * A key names WHICH work a caller is asking for, plus WHEN the inputs that work\n * reads last changed. Both halves are needed and neither grows a third term.\n *\n * Which: the policy the runtime will actually apply, not how the caller spelled\n * it. Startup asks for `allowNetwork: true` while the `/model` selector omits the\n * option and lets the runtime decide; on an online runtime those are one pass, and\n * keying the spelling started two. An explicit value that disagrees with the\n * runtime's own policy is still different work and still keys apart.\n *\n * When: `ModelRuntime.getCatalogInputsGeneration()` — one monotonic counter over\n * every input a pass reads (credential writes, provider registrations, and\n * models.json content; see its doc comment). A pass publishes one snapshot built\n * from the inputs it started under, so joining across a bump serves the joiner\n * models and credentials the user already replaced and then overwrites the newer\n * state with them. Keying on the generation makes a request that arrives after\n * any such change start its own pass, and it is deliberately ONE number: this\n * coordinator previously keyed input by input — first the network policy, then\n * credentials, then models.json — and each round left the next input unkeyed.\n */\nfunction refreshKey(modelRuntime: ModelCatalogRuntime, options: ModelCatalogRefreshOptions): string {\n\tconst policy = (options.allowNetwork ?? modelRuntime.isNetworkRefreshEnabled()) ? \"network\" : \"cache\";\n\treturn `${policy}:${modelRuntime.getCatalogInputsGeneration()}`;\n}\n\nclass ModelCatalogRefreshCoordinator {\n\tprivate readonly activeByRuntime = new WeakMap<ModelCatalogRuntime, Map<string, ActiveModelCatalogRefresh>>();\n\n\trefresh(modelRuntime: ModelCatalogRuntime, request: ModelCatalogRefreshRequest): Promise<ModelsRefreshResult> {\n\t\tconst { signal, ...options } = request;\n\t\tsignal.throwIfAborted();\n\n\t\tlet byKey = this.activeByRuntime.get(modelRuntime);\n\t\tif (!byKey) {\n\t\t\tbyKey = new Map<string, ActiveModelCatalogRefresh>();\n\t\t\tthis.activeByRuntime.set(modelRuntime, byKey);\n\t\t}\n\t\tconst active = byKey;\n\t\tconst key = refreshKey(modelRuntime, options);\n\n\t\tlet shared = active.get(key);\n\t\tif (!shared) {\n\t\t\tconst controller = new AbortController();\n\t\t\tlet created!: ActiveModelCatalogRefresh;\n\t\t\tconst operation = modelRuntime.refresh({ ...options, signal: controller.signal });\n\t\t\tconst promise = raceWithAbortSignal(operation, controller.signal).finally(() => {\n\t\t\t\tif (active.get(key) === created) active.delete(key);\n\t\t\t});\n\t\t\tcreated = { controller, promise, waiters: 0 };\n\t\t\tshared = created;\n\t\t\tactive.set(key, shared);\n\t\t}\n\n\t\tconst joined = shared;\n\t\tjoined.waiters++;\n\t\t// Release on the caller's abort rather than only on settlement: a selector\n\t\t// that closes must cancel the underlying refresh in the same tick, which is\n\t\t// what Atomic's callers already observe.\n\t\tlet released = false;\n\t\tconst release = () => {\n\t\t\tif (released) return;\n\t\t\treleased = true;\n\t\t\tsignal.removeEventListener(\"abort\", release);\n\t\t\tjoined.waiters--;\n\t\t\tif (joined.waiters > 0) return;\n\t\t\tif (active.get(key) !== joined) return;\n\t\t\t// Evict before aborting. The abort is synchronous while the shared promise's\n\t\t\t// own cleanup is a microtask, so a caller retrying in this same tick would\n\t\t\t// otherwise join an entry that is already aborted and reject without work.\n\t\t\tactive.delete(key);\n\t\t\tjoined.controller.abort();\n\t\t};\n\t\tsignal.addEventListener(\"abort\", release);\n\t\treturn raceWithAbortSignal(joined.promise, signal).finally(release);\n\t}\n}\n\nconst modelCatalogRefreshCoordinator = new ModelCatalogRefreshCoordinator();\n\n/** Share concurrent interactive all-catalog refreshes while keeping each caller's cancellation independent. */\nexport function refreshModelCatalogs(\n\tmodelRuntime: ModelCatalogRuntime,\n\trequest: ModelCatalogRefreshRequest,\n): Promise<ModelsRefreshResult> {\n\treturn modelCatalogRefreshCoordinator.refresh(modelRuntime, request);\n}\n"]}
@@ -1,6 +1,11 @@
1
1
  import type { ColorValue } from "./theme-schema.ts";
2
2
  export type ColorMode = "truecolor" | "256color";
3
3
  export declare function detectColorMode(): ColorMode;
4
+ /**
5
+ * Resolve the color mode for a theme from an explicit `terminal.trueColor` setting, then
6
+ * `PI_TRUE_COLOR=1|0`, then terminal detection.
7
+ */
8
+ export declare function resolveColorMode(trueColorSetting: boolean | undefined): ColorMode;
4
9
  export declare function hexToRgb(hex: string): {
5
10
  r: number;
6
11
  g: number;
@@ -1 +1 @@
1
- {"version":3,"file":"color-utils.d.ts","sourceRoot":"","sources":["../../../../src/modes/interactive/theme/color-utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD,MAAM,MAAM,SAAS,GAAG,WAAW,GAAG,UAAU,CAAC;AAEjD,wBAAgB,eAAe,IAAI,SAAS,CAyB3C;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAYzE;AAgFD,wBAAgB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,IAAI,EAAE,SAAS,GAAG,MAAM,CAatE;AAED,wBAAgB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,IAAI,EAAE,SAAS,GAAG,MAAM,CAatE;AAED,wBAAgB,cAAc,CAC7B,KAAK,EAAE,UAAU,EACjB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,EAChC,OAAO,cAAoB,GACzB,MAAM,GAAG,MAAM,CAYjB;AAED,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,EACtE,MAAM,EAAE,CAAC,EACT,IAAI,GAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAM,GACnC,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,CAMlC;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAsClD"}
1
+ {"version":3,"file":"color-utils.d.ts","sourceRoot":"","sources":["../../../../src/modes/interactive/theme/color-utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD,MAAM,MAAM,SAAS,GAAG,WAAW,GAAG,UAAU,CAAC;AAEjD,wBAAgB,eAAe,IAAI,SAAS,CAyB3C;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,gBAAgB,EAAE,OAAO,GAAG,SAAS,GAAG,SAAS,CAKjF;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAYzE;AAgFD,wBAAgB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,IAAI,EAAE,SAAS,GAAG,MAAM,CAatE;AAED,wBAAgB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,IAAI,EAAE,SAAS,GAAG,MAAM,CAatE;AAED,wBAAgB,cAAc,CAC7B,KAAK,EAAE,UAAU,EACjB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,EAChC,OAAO,cAAoB,GACzB,MAAM,GAAG,MAAM,CAYjB;AAED,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,EACtE,MAAM,EAAE,CAAC,EACT,IAAI,GAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAM,GACnC,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,CAMlC;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAsClD"}
@@ -24,6 +24,17 @@ export function detectColorMode() {
24
24
  // Assume truecolor for everything else - virtually all modern terminals support it
25
25
  return "truecolor";
26
26
  }
27
+ /**
28
+ * Resolve the color mode for a theme from an explicit `terminal.trueColor` setting, then
29
+ * `PI_TRUE_COLOR=1|0`, then terminal detection.
30
+ */
31
+ export function resolveColorMode(trueColorSetting) {
32
+ const envOverride = process.env.PI_TRUE_COLOR;
33
+ const trueColor = trueColorSetting ?? (envOverride === "1" ? true : envOverride === "0" ? false : undefined);
34
+ if (trueColor === undefined)
35
+ return detectColorMode();
36
+ return trueColor ? "truecolor" : "256color";
37
+ }
27
38
  export function hexToRgb(hex) {
28
39
  const cleaned = hex.replace("#", "");
29
40
  if (cleaned.length !== 6) {