@daniel156161/prism 0.2.76 → 0.2.81

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 (2431) hide show
  1. package/dist/pi/pi-env.d.ts +1 -1
  2. package/dist/pi/pi-env.js +1 -1
  3. package/dist/pi/pi-patch-extension-loader.js +2 -0
  4. package/dist/pi/pi-patch-extension-loader.js.map +1 -1
  5. package/dist/pi/pi-patch-interactive.js +8 -5
  6. package/dist/pi/pi-patch-interactive.js.map +1 -1
  7. package/dist/prism-extensions/integrations/ai-memory-errors.d.ts +16 -0
  8. package/dist/prism-extensions/integrations/ai-memory-errors.js +52 -0
  9. package/dist/prism-extensions/integrations/ai-memory-errors.js.map +1 -0
  10. package/dist/prism-extensions/integrations/ai-memory-system.d.ts +3 -0
  11. package/dist/prism-extensions/integrations/ai-memory-system.js +335 -7
  12. package/dist/prism-extensions/integrations/ai-memory-system.js.map +1 -1
  13. package/dist/prism-extensions/integrations/research-tools.js +5 -2
  14. package/dist/prism-extensions/integrations/research-tools.js.map +1 -1
  15. package/dist/prism-extensions/integrations/youtube.d.ts +32 -0
  16. package/dist/prism-extensions/integrations/youtube.js +250 -0
  17. package/dist/prism-extensions/integrations/youtube.js.map +1 -0
  18. package/node_modules/@earendil-works/pi-agent-core/README.md +13 -7
  19. package/node_modules/@earendil-works/pi-agent-core/dist/agent-loop.d.ts.map +1 -1
  20. package/node_modules/@earendil-works/pi-agent-core/dist/agent-loop.js +5 -1
  21. package/node_modules/@earendil-works/pi-agent-core/dist/agent-loop.js.map +1 -1
  22. package/node_modules/@earendil-works/pi-agent-core/dist/agent.d.ts +3 -1
  23. package/node_modules/@earendil-works/pi-agent-core/dist/agent.d.ts.map +1 -1
  24. package/node_modules/@earendil-works/pi-agent-core/dist/agent.js +9 -0
  25. package/node_modules/@earendil-works/pi-agent-core/dist/agent.js.map +1 -1
  26. package/node_modules/@earendil-works/pi-agent-core/dist/harness/agent-harness.d.ts +452 -85
  27. package/node_modules/@earendil-works/pi-agent-core/dist/harness/agent-harness.d.ts.map +1 -1
  28. package/node_modules/@earendil-works/pi-agent-core/dist/harness/agent-harness.js +204 -917
  29. package/node_modules/@earendil-works/pi-agent-core/dist/harness/agent-harness.js.map +1 -1
  30. package/node_modules/@earendil-works/pi-agent-core/dist/harness/compaction/branch-summarization.d.ts +13 -6
  31. package/node_modules/@earendil-works/pi-agent-core/dist/harness/compaction/branch-summarization.d.ts.map +1 -1
  32. package/node_modules/@earendil-works/pi-agent-core/dist/harness/compaction/branch-summarization.js +11 -15
  33. package/node_modules/@earendil-works/pi-agent-core/dist/harness/compaction/branch-summarization.js.map +1 -1
  34. package/node_modules/@earendil-works/pi-agent-core/dist/harness/compaction/compaction.d.ts +14 -17
  35. package/node_modules/@earendil-works/pi-agent-core/dist/harness/compaction/compaction.d.ts.map +1 -1
  36. package/node_modules/@earendil-works/pi-agent-core/dist/harness/compaction/compaction.js +23 -36
  37. package/node_modules/@earendil-works/pi-agent-core/dist/harness/compaction/compaction.js.map +1 -1
  38. package/node_modules/@earendil-works/pi-agent-core/dist/harness/env/nodejs.d.ts +1 -0
  39. package/node_modules/@earendil-works/pi-agent-core/dist/harness/env/nodejs.d.ts.map +1 -1
  40. package/node_modules/@earendil-works/pi-agent-core/dist/harness/env/nodejs.js +23 -7
  41. package/node_modules/@earendil-works/pi-agent-core/dist/harness/env/nodejs.js.map +1 -1
  42. package/node_modules/@earendil-works/pi-agent-core/dist/harness/messages.d.ts +3 -3
  43. package/node_modules/@earendil-works/pi-agent-core/dist/harness/messages.d.ts.map +1 -1
  44. package/node_modules/@earendil-works/pi-agent-core/dist/harness/messages.js +3 -3
  45. package/node_modules/@earendil-works/pi-agent-core/dist/harness/messages.js.map +1 -1
  46. package/node_modules/@earendil-works/pi-agent-core/dist/harness/prompt-templates.d.ts.map +1 -1
  47. package/node_modules/@earendil-works/pi-agent-core/dist/harness/prompt-templates.js +4 -9
  48. package/node_modules/@earendil-works/pi-agent-core/dist/harness/prompt-templates.js.map +1 -1
  49. package/node_modules/@earendil-works/pi-agent-core/dist/harness/reducer.d.ts +100 -0
  50. package/node_modules/@earendil-works/pi-agent-core/dist/harness/reducer.d.ts.map +1 -0
  51. package/node_modules/@earendil-works/pi-agent-core/dist/harness/reducer.js +415 -0
  52. package/node_modules/@earendil-works/pi-agent-core/dist/harness/reducer.js.map +1 -0
  53. package/node_modules/@earendil-works/pi-agent-core/dist/harness/result.d.ts +40 -0
  54. package/node_modules/@earendil-works/pi-agent-core/dist/harness/result.d.ts.map +1 -0
  55. package/node_modules/@earendil-works/pi-agent-core/dist/harness/result.js +41 -0
  56. package/node_modules/@earendil-works/pi-agent-core/dist/harness/result.js.map +1 -0
  57. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/context.d.ts +22 -0
  58. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/context.d.ts.map +1 -0
  59. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/context.js +67 -0
  60. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/context.js.map +1 -0
  61. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/index.d.ts +7 -0
  62. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/index.d.ts.map +1 -0
  63. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/index.js +6 -0
  64. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/index.js.map +1 -0
  65. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl/codec.d.ts +8 -0
  66. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl/codec.d.ts.map +1 -0
  67. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl/codec.js +190 -0
  68. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl/codec.js.map +1 -0
  69. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl/errors.d.ts +5 -0
  70. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl/errors.d.ts.map +1 -0
  71. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl/errors.js +11 -0
  72. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl/errors.js.map +1 -0
  73. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl/repo.d.ts +23 -0
  74. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl/repo.d.ts.map +1 -0
  75. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl/repo.js +132 -0
  76. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl/repo.js.map +1 -0
  77. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl/storage.d.ts +43 -0
  78. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl/storage.d.ts.map +1 -0
  79. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl/storage.js +208 -0
  80. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl/storage.js.map +1 -0
  81. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl/types.d.ts +38 -0
  82. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl/types.d.ts.map +1 -0
  83. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl/types.js +2 -0
  84. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl/types.js.map +1 -0
  85. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl.d.ts +3 -0
  86. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl.d.ts.map +1 -0
  87. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl.js +2 -0
  88. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl.js.map +1 -0
  89. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/memory.d.ts +44 -0
  90. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/memory.d.ts.map +1 -0
  91. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/memory.js +141 -0
  92. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/memory.js.map +1 -0
  93. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/search.d.ts +19 -0
  94. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/search.d.ts.map +1 -0
  95. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/search.js +42 -0
  96. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/search.js.map +1 -0
  97. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/session.d.ts +43 -42
  98. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/session.d.ts.map +1 -1
  99. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/session.js +187 -228
  100. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/session.js.map +1 -1
  101. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/state.d.ts +65 -0
  102. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/state.d.ts.map +1 -0
  103. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/state.js +319 -0
  104. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/state.js.map +1 -0
  105. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/testing/conformance.d.ts +4 -0
  106. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/testing/conformance.d.ts.map +1 -0
  107. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/testing/conformance.js +743 -0
  108. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/testing/conformance.js.map +1 -0
  109. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/testing/index.d.ts +3 -0
  110. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/testing/index.d.ts.map +1 -0
  111. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/testing/index.js +2 -0
  112. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/testing/index.js.map +1 -0
  113. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/testing/types.d.ts +14 -0
  114. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/testing/types.d.ts.map +1 -0
  115. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/testing/types.js +2 -0
  116. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/testing/types.js.map +1 -0
  117. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/types.d.ts +333 -0
  118. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/types.d.ts.map +1 -0
  119. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/types.js +10 -0
  120. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/types.js.map +1 -0
  121. package/node_modules/@earendil-works/pi-agent-core/dist/harness/skills.d.ts.map +1 -1
  122. package/node_modules/@earendil-works/pi-agent-core/dist/harness/skills.js +21 -19
  123. package/node_modules/@earendil-works/pi-agent-core/dist/harness/skills.js.map +1 -1
  124. package/node_modules/@earendil-works/pi-agent-core/dist/harness/telemetry.d.ts +1221 -0
  125. package/node_modules/@earendil-works/pi-agent-core/dist/harness/telemetry.d.ts.map +1 -0
  126. package/node_modules/@earendil-works/pi-agent-core/dist/harness/telemetry.js +508 -0
  127. package/node_modules/@earendil-works/pi-agent-core/dist/harness/telemetry.js.map +1 -0
  128. package/node_modules/@earendil-works/pi-agent-core/dist/harness/types.d.ts +6 -459
  129. package/node_modules/@earendil-works/pi-agent-core/dist/harness/types.d.ts.map +1 -1
  130. package/node_modules/@earendil-works/pi-agent-core/dist/harness/types.js +0 -19
  131. package/node_modules/@earendil-works/pi-agent-core/dist/harness/types.js.map +1 -1
  132. package/node_modules/@earendil-works/pi-agent-core/dist/index.d.ts +10 -9
  133. package/node_modules/@earendil-works/pi-agent-core/dist/index.d.ts.map +1 -1
  134. package/node_modules/@earendil-works/pi-agent-core/dist/index.js +7 -8
  135. package/node_modules/@earendil-works/pi-agent-core/dist/index.js.map +1 -1
  136. package/node_modules/@earendil-works/pi-agent-core/dist/proxy.d.ts +1 -1
  137. package/node_modules/@earendil-works/pi-agent-core/dist/proxy.d.ts.map +1 -1
  138. package/node_modules/@earendil-works/pi-agent-core/dist/proxy.js +1 -0
  139. package/node_modules/@earendil-works/pi-agent-core/dist/proxy.js.map +1 -1
  140. package/node_modules/@earendil-works/pi-agent-core/dist/types.d.ts +6 -0
  141. package/node_modules/@earendil-works/pi-agent-core/dist/types.d.ts.map +1 -1
  142. package/node_modules/@earendil-works/pi-agent-core/dist/types.js.map +1 -1
  143. package/node_modules/@earendil-works/pi-agent-core/package.json +9 -2
  144. package/node_modules/@earendil-works/pi-ai/README.md +24 -8
  145. package/node_modules/@earendil-works/pi-ai/dist/api/anthropic-messages.d.ts.map +1 -1
  146. package/node_modules/@earendil-works/pi-ai/dist/api/anthropic-messages.js +3 -3
  147. package/node_modules/@earendil-works/pi-ai/dist/api/anthropic-messages.js.map +1 -1
  148. package/node_modules/@earendil-works/pi-ai/dist/api/azure-openai-responses.d.ts.map +1 -1
  149. package/node_modules/@earendil-works/pi-ai/dist/api/azure-openai-responses.js +5 -1
  150. package/node_modules/@earendil-works/pi-ai/dist/api/azure-openai-responses.js.map +1 -1
  151. package/node_modules/@earendil-works/pi-ai/dist/api/bedrock-converse-stream.d.ts.map +1 -1
  152. package/node_modules/@earendil-works/pi-ai/dist/api/bedrock-converse-stream.js +48 -0
  153. package/node_modules/@earendil-works/pi-ai/dist/api/bedrock-converse-stream.js.map +1 -1
  154. package/node_modules/@earendil-works/pi-ai/dist/api/google-generative-ai.d.ts.map +1 -1
  155. package/node_modules/@earendil-works/pi-ai/dist/api/google-generative-ai.js +2 -2
  156. package/node_modules/@earendil-works/pi-ai/dist/api/google-generative-ai.js.map +1 -1
  157. package/node_modules/@earendil-works/pi-ai/dist/api/google-shared.d.ts +11 -1
  158. package/node_modules/@earendil-works/pi-ai/dist/api/google-shared.d.ts.map +1 -1
  159. package/node_modules/@earendil-works/pi-ai/dist/api/google-shared.js +44 -7
  160. package/node_modules/@earendil-works/pi-ai/dist/api/google-shared.js.map +1 -1
  161. package/node_modules/@earendil-works/pi-ai/dist/api/google-vertex.d.ts.map +1 -1
  162. package/node_modules/@earendil-works/pi-ai/dist/api/google-vertex.js +2 -2
  163. package/node_modules/@earendil-works/pi-ai/dist/api/google-vertex.js.map +1 -1
  164. package/node_modules/@earendil-works/pi-ai/dist/api/lazy.d.ts +5 -1
  165. package/node_modules/@earendil-works/pi-ai/dist/api/lazy.d.ts.map +1 -1
  166. package/node_modules/@earendil-works/pi-ai/dist/api/lazy.js +19 -7
  167. package/node_modules/@earendil-works/pi-ai/dist/api/lazy.js.map +1 -1
  168. package/node_modules/@earendil-works/pi-ai/dist/api/openai-codex-responses.d.ts.map +1 -1
  169. package/node_modules/@earendil-works/pi-ai/dist/api/openai-codex-responses.js +39 -19
  170. package/node_modules/@earendil-works/pi-ai/dist/api/openai-codex-responses.js.map +1 -1
  171. package/node_modules/@earendil-works/pi-ai/dist/api/openai-completions.d.ts +5 -2
  172. package/node_modules/@earendil-works/pi-ai/dist/api/openai-completions.d.ts.map +1 -1
  173. package/node_modules/@earendil-works/pi-ai/dist/api/openai-completions.js +57 -8
  174. package/node_modules/@earendil-works/pi-ai/dist/api/openai-completions.js.map +1 -1
  175. package/node_modules/@earendil-works/pi-ai/dist/api/openai-responses-shared.d.ts.map +1 -1
  176. package/node_modules/@earendil-works/pi-ai/dist/api/openai-responses-shared.js +22 -9
  177. package/node_modules/@earendil-works/pi-ai/dist/api/openai-responses-shared.js.map +1 -1
  178. package/node_modules/@earendil-works/pi-ai/dist/api/openai-responses.d.ts.map +1 -1
  179. package/node_modules/@earendil-works/pi-ai/dist/api/openai-responses.js +5 -1
  180. package/node_modules/@earendil-works/pi-ai/dist/api/openai-responses.js.map +1 -1
  181. package/node_modules/@earendil-works/pi-ai/dist/api/simple-options.d.ts +2 -0
  182. package/node_modules/@earendil-works/pi-ai/dist/api/simple-options.d.ts.map +1 -1
  183. package/node_modules/@earendil-works/pi-ai/dist/api/simple-options.js +8 -2
  184. package/node_modules/@earendil-works/pi-ai/dist/api/simple-options.js.map +1 -1
  185. package/node_modules/@earendil-works/pi-ai/dist/auth/credential-store.d.ts +6 -6
  186. package/node_modules/@earendil-works/pi-ai/dist/auth/credential-store.d.ts.map +1 -1
  187. package/node_modules/@earendil-works/pi-ai/dist/auth/credential-store.js +22 -11
  188. package/node_modules/@earendil-works/pi-ai/dist/auth/credential-store.js.map +1 -1
  189. package/node_modules/@earendil-works/pi-ai/dist/auth/helpers.d.ts +1 -0
  190. package/node_modules/@earendil-works/pi-ai/dist/auth/helpers.d.ts.map +1 -1
  191. package/node_modules/@earendil-works/pi-ai/dist/auth/helpers.js +7 -2
  192. package/node_modules/@earendil-works/pi-ai/dist/auth/helpers.js.map +1 -1
  193. package/node_modules/@earendil-works/pi-ai/dist/auth/oauth/anthropic.d.ts.map +1 -1
  194. package/node_modules/@earendil-works/pi-ai/dist/auth/oauth/anthropic.js +14 -8
  195. package/node_modules/@earendil-works/pi-ai/dist/auth/oauth/anthropic.js.map +1 -1
  196. package/node_modules/@earendil-works/pi-ai/dist/auth/oauth/device-code.d.ts +1 -1
  197. package/node_modules/@earendil-works/pi-ai/dist/auth/oauth/device-code.d.ts.map +1 -1
  198. package/node_modules/@earendil-works/pi-ai/dist/auth/oauth/device-code.js +4 -4
  199. package/node_modules/@earendil-works/pi-ai/dist/auth/oauth/device-code.js.map +1 -1
  200. package/node_modules/@earendil-works/pi-ai/dist/auth/oauth/github-copilot.d.ts.map +1 -1
  201. package/node_modules/@earendil-works/pi-ai/dist/auth/oauth/github-copilot.js +43 -30
  202. package/node_modules/@earendil-works/pi-ai/dist/auth/oauth/github-copilot.js.map +1 -1
  203. package/node_modules/@earendil-works/pi-ai/dist/auth/oauth/kimi-coding.d.ts.map +1 -1
  204. package/node_modules/@earendil-works/pi-ai/dist/auth/oauth/kimi-coding.js +17 -5
  205. package/node_modules/@earendil-works/pi-ai/dist/auth/oauth/kimi-coding.js.map +1 -1
  206. package/node_modules/@earendil-works/pi-ai/dist/auth/oauth/openai-codex.d.ts.map +1 -1
  207. package/node_modules/@earendil-works/pi-ai/dist/auth/oauth/openai-codex.js +12 -5
  208. package/node_modules/@earendil-works/pi-ai/dist/auth/oauth/openai-codex.js.map +1 -1
  209. package/node_modules/@earendil-works/pi-ai/dist/auth/oauth/openrouter.d.ts.map +1 -1
  210. package/node_modules/@earendil-works/pi-ai/dist/auth/oauth/openrouter.js +10 -10
  211. package/node_modules/@earendil-works/pi-ai/dist/auth/oauth/openrouter.js.map +1 -1
  212. package/node_modules/@earendil-works/pi-ai/dist/auth/oauth/radius.d.ts.map +1 -1
  213. package/node_modules/@earendil-works/pi-ai/dist/auth/oauth/radius.js +8 -7
  214. package/node_modules/@earendil-works/pi-ai/dist/auth/oauth/radius.js.map +1 -1
  215. package/node_modules/@earendil-works/pi-ai/dist/auth/oauth/xai.d.ts.map +1 -1
  216. package/node_modules/@earendil-works/pi-ai/dist/auth/oauth/xai.js +3 -2
  217. package/node_modules/@earendil-works/pi-ai/dist/auth/oauth/xai.js.map +1 -1
  218. package/node_modules/@earendil-works/pi-ai/dist/auth/resolve.d.ts +1 -0
  219. package/node_modules/@earendil-works/pi-ai/dist/auth/resolve.d.ts.map +1 -1
  220. package/node_modules/@earendil-works/pi-ai/dist/auth/resolve.js +24 -13
  221. package/node_modules/@earendil-works/pi-ai/dist/auth/resolve.js.map +1 -1
  222. package/node_modules/@earendil-works/pi-ai/dist/auth/types.d.ts +20 -8
  223. package/node_modules/@earendil-works/pi-ai/dist/auth/types.d.ts.map +1 -1
  224. package/node_modules/@earendil-works/pi-ai/dist/auth/types.js.map +1 -1
  225. package/node_modules/@earendil-works/pi-ai/dist/cli.d.ts.map +1 -1
  226. package/node_modules/@earendil-works/pi-ai/dist/cli.js +1 -0
  227. package/node_modules/@earendil-works/pi-ai/dist/cli.js.map +1 -1
  228. package/node_modules/@earendil-works/pi-ai/dist/env-api-keys.d.ts.map +1 -1
  229. package/node_modules/@earendil-works/pi-ai/dist/env-api-keys.js +2 -0
  230. package/node_modules/@earendil-works/pi-ai/dist/env-api-keys.js.map +1 -1
  231. package/node_modules/@earendil-works/pi-ai/dist/image-models.generated.d.ts +30 -0
  232. package/node_modules/@earendil-works/pi-ai/dist/image-models.generated.d.ts.map +1 -1
  233. package/node_modules/@earendil-works/pi-ai/dist/image-models.generated.js +32 -2
  234. package/node_modules/@earendil-works/pi-ai/dist/image-models.generated.js.map +1 -1
  235. package/node_modules/@earendil-works/pi-ai/dist/images-models.d.ts.map +1 -1
  236. package/node_modules/@earendil-works/pi-ai/dist/images-models.js +1 -0
  237. package/node_modules/@earendil-works/pi-ai/dist/images-models.js.map +1 -1
  238. package/node_modules/@earendil-works/pi-ai/dist/models-store.d.ts +9 -12
  239. package/node_modules/@earendil-works/pi-ai/dist/models-store.d.ts.map +1 -1
  240. package/node_modules/@earendil-works/pi-ai/dist/models-store.js +6 -3
  241. package/node_modules/@earendil-works/pi-ai/dist/models-store.js.map +1 -1
  242. package/node_modules/@earendil-works/pi-ai/dist/models.d.ts +40 -18
  243. package/node_modules/@earendil-works/pi-ai/dist/models.d.ts.map +1 -1
  244. package/node_modules/@earendil-works/pi-ai/dist/models.generated.d.ts +4 -0
  245. package/node_modules/@earendil-works/pi-ai/dist/models.generated.d.ts.map +1 -1
  246. package/node_modules/@earendil-works/pi-ai/dist/models.generated.js +4 -0
  247. package/node_modules/@earendil-works/pi-ai/dist/models.generated.js.map +1 -1
  248. package/node_modules/@earendil-works/pi-ai/dist/models.js +245 -89
  249. package/node_modules/@earendil-works/pi-ai/dist/models.js.map +1 -1
  250. package/node_modules/@earendil-works/pi-ai/dist/providers/all.d.ts.map +1 -1
  251. package/node_modules/@earendil-works/pi-ai/dist/providers/all.js +4 -0
  252. package/node_modules/@earendil-works/pi-ai/dist/providers/all.js.map +1 -1
  253. package/node_modules/@earendil-works/pi-ai/dist/providers/amazon-bedrock.d.ts.map +1 -1
  254. package/node_modules/@earendil-works/pi-ai/dist/providers/amazon-bedrock.js +15 -7
  255. package/node_modules/@earendil-works/pi-ai/dist/providers/amazon-bedrock.js.map +1 -1
  256. package/node_modules/@earendil-works/pi-ai/dist/providers/anthropic.d.ts.map +1 -1
  257. package/node_modules/@earendil-works/pi-ai/dist/providers/anthropic.js +15 -6
  258. package/node_modules/@earendil-works/pi-ai/dist/providers/anthropic.js.map +1 -1
  259. package/node_modules/@earendil-works/pi-ai/dist/providers/baseten.d.ts +3 -0
  260. package/node_modules/@earendil-works/pi-ai/dist/providers/baseten.d.ts.map +1 -0
  261. package/node_modules/@earendil-works/pi-ai/dist/providers/baseten.js +15 -0
  262. package/node_modules/@earendil-works/pi-ai/dist/providers/baseten.js.map +1 -0
  263. package/node_modules/@earendil-works/pi-ai/dist/providers/baseten.models.d.ts +4 -0
  264. package/node_modules/@earendil-works/pi-ai/dist/providers/baseten.models.d.ts.map +1 -0
  265. package/node_modules/@earendil-works/pi-ai/dist/providers/baseten.models.js +6 -0
  266. package/node_modules/@earendil-works/pi-ai/dist/providers/baseten.models.js.map +1 -0
  267. package/node_modules/@earendil-works/pi-ai/dist/providers/cloudflare-auth.d.ts.map +1 -1
  268. package/node_modules/@earendil-works/pi-ai/dist/providers/cloudflare-auth.js +15 -10
  269. package/node_modules/@earendil-works/pi-ai/dist/providers/cloudflare-auth.js.map +1 -1
  270. package/node_modules/@earendil-works/pi-ai/dist/providers/data/.manifest.json +1 -1
  271. package/node_modules/@earendil-works/pi-ai/dist/providers/data/amazon-bedrock.json +1 -1
  272. package/node_modules/@earendil-works/pi-ai/dist/providers/data/anthropic.json +1 -1
  273. package/node_modules/@earendil-works/pi-ai/dist/providers/data/azure-openai-responses.json +1 -1
  274. package/node_modules/@earendil-works/pi-ai/dist/providers/data/baseten.json +1 -0
  275. package/node_modules/@earendil-works/pi-ai/dist/providers/data/cloudflare-ai-gateway.json +1 -1
  276. package/node_modules/@earendil-works/pi-ai/dist/providers/data/fireworks.json +1 -1
  277. package/node_modules/@earendil-works/pi-ai/dist/providers/data/github-copilot.json +1 -1
  278. package/node_modules/@earendil-works/pi-ai/dist/providers/data/groq.json +1 -1
  279. package/node_modules/@earendil-works/pi-ai/dist/providers/data/huggingface.json +1 -1
  280. package/node_modules/@earendil-works/pi-ai/dist/providers/data/mistral.json +1 -1
  281. package/node_modules/@earendil-works/pi-ai/dist/providers/data/openai-codex.json +1 -1
  282. package/node_modules/@earendil-works/pi-ai/dist/providers/data/openai.json +1 -1
  283. package/node_modules/@earendil-works/pi-ai/dist/providers/data/opencode-go.json +1 -1
  284. package/node_modules/@earendil-works/pi-ai/dist/providers/data/opencode.json +1 -1
  285. package/node_modules/@earendil-works/pi-ai/dist/providers/data/openrouter.json +1 -1
  286. package/node_modules/@earendil-works/pi-ai/dist/providers/data/qwen-token-plan-cn.json +1 -1
  287. package/node_modules/@earendil-works/pi-ai/dist/providers/data/qwen-token-plan-individual.json +1 -0
  288. package/node_modules/@earendil-works/pi-ai/dist/providers/data/qwen-token-plan.json +1 -1
  289. package/node_modules/@earendil-works/pi-ai/dist/providers/data/together.json +1 -1
  290. package/node_modules/@earendil-works/pi-ai/dist/providers/data/vercel-ai-gateway.json +1 -1
  291. package/node_modules/@earendil-works/pi-ai/dist/providers/data/zai-coding-cn.json +1 -1
  292. package/node_modules/@earendil-works/pi-ai/dist/providers/data/zai.json +1 -1
  293. package/node_modules/@earendil-works/pi-ai/dist/providers/faux.d.ts +18 -13
  294. package/node_modules/@earendil-works/pi-ai/dist/providers/faux.d.ts.map +1 -1
  295. package/node_modules/@earendil-works/pi-ai/dist/providers/faux.js +95 -5
  296. package/node_modules/@earendil-works/pi-ai/dist/providers/faux.js.map +1 -1
  297. package/node_modules/@earendil-works/pi-ai/dist/providers/github-copilot.d.ts.map +1 -1
  298. package/node_modules/@earendil-works/pi-ai/dist/providers/github-copilot.js +1 -1
  299. package/node_modules/@earendil-works/pi-ai/dist/providers/github-copilot.js.map +1 -1
  300. package/node_modules/@earendil-works/pi-ai/dist/providers/google-vertex.d.ts.map +1 -1
  301. package/node_modules/@earendil-works/pi-ai/dist/providers/google-vertex.js +15 -7
  302. package/node_modules/@earendil-works/pi-ai/dist/providers/google-vertex.js.map +1 -1
  303. package/node_modules/@earendil-works/pi-ai/dist/providers/kimi-coding.d.ts.map +1 -1
  304. package/node_modules/@earendil-works/pi-ai/dist/providers/kimi-coding.js +1 -0
  305. package/node_modules/@earendil-works/pi-ai/dist/providers/kimi-coding.js.map +1 -1
  306. package/node_modules/@earendil-works/pi-ai/dist/providers/openai-codex.d.ts.map +1 -1
  307. package/node_modules/@earendil-works/pi-ai/dist/providers/openai-codex.js +5 -1
  308. package/node_modules/@earendil-works/pi-ai/dist/providers/openai-codex.js.map +1 -1
  309. package/node_modules/@earendil-works/pi-ai/dist/providers/opencode-go.d.ts.map +1 -1
  310. package/node_modules/@earendil-works/pi-ai/dist/providers/opencode-go.js +1 -1
  311. package/node_modules/@earendil-works/pi-ai/dist/providers/opencode-go.js.map +1 -1
  312. package/node_modules/@earendil-works/pi-ai/dist/providers/qwen-token-plan-individual.d.ts +3 -0
  313. package/node_modules/@earendil-works/pi-ai/dist/providers/qwen-token-plan-individual.d.ts.map +1 -0
  314. package/node_modules/@earendil-works/pi-ai/dist/providers/qwen-token-plan-individual.js +15 -0
  315. package/node_modules/@earendil-works/pi-ai/dist/providers/qwen-token-plan-individual.js.map +1 -0
  316. package/node_modules/@earendil-works/pi-ai/dist/providers/qwen-token-plan-individual.models.d.ts +4 -0
  317. package/node_modules/@earendil-works/pi-ai/dist/providers/qwen-token-plan-individual.models.d.ts.map +1 -0
  318. package/node_modules/@earendil-works/pi-ai/dist/providers/qwen-token-plan-individual.models.js +6 -0
  319. package/node_modules/@earendil-works/pi-ai/dist/providers/qwen-token-plan-individual.models.js.map +1 -0
  320. package/node_modules/@earendil-works/pi-ai/dist/providers/radius.d.ts.map +1 -1
  321. package/node_modules/@earendil-works/pi-ai/dist/providers/radius.js +36 -26
  322. package/node_modules/@earendil-works/pi-ai/dist/providers/radius.js.map +1 -1
  323. package/node_modules/@earendil-works/pi-ai/dist/providers/xai.d.ts.map +1 -1
  324. package/node_modules/@earendil-works/pi-ai/dist/providers/xai.js +1 -0
  325. package/node_modules/@earendil-works/pi-ai/dist/providers/xai.js.map +1 -1
  326. package/node_modules/@earendil-works/pi-ai/dist/types.d.ts +96 -80
  327. package/node_modules/@earendil-works/pi-ai/dist/types.d.ts.map +1 -1
  328. package/node_modules/@earendil-works/pi-ai/dist/types.js.map +1 -1
  329. package/node_modules/@earendil-works/pi-ai/dist/utils/abort.d.ts +8 -0
  330. package/node_modules/@earendil-works/pi-ai/dist/utils/abort.d.ts.map +1 -0
  331. package/node_modules/@earendil-works/pi-ai/dist/utils/abort.js +49 -0
  332. package/node_modules/@earendil-works/pi-ai/dist/utils/abort.js.map +1 -0
  333. package/node_modules/@earendil-works/pi-ai/dist/utils/error-body.d.ts.map +1 -1
  334. package/node_modules/@earendil-works/pi-ai/dist/utils/error-body.js +23 -4
  335. package/node_modules/@earendil-works/pi-ai/dist/utils/error-body.js.map +1 -1
  336. package/node_modules/@earendil-works/pi-ai/dist/utils/overflow.d.ts +10 -1
  337. package/node_modules/@earendil-works/pi-ai/dist/utils/overflow.d.ts.map +1 -1
  338. package/node_modules/@earendil-works/pi-ai/dist/utils/overflow.js +12 -1
  339. package/node_modules/@earendil-works/pi-ai/dist/utils/overflow.js.map +1 -1
  340. package/node_modules/@earendil-works/pi-ai/dist/utils/validation.d.ts.map +1 -1
  341. package/node_modules/@earendil-works/pi-ai/dist/utils/validation.js +6 -0
  342. package/node_modules/@earendil-works/pi-ai/dist/utils/validation.js.map +1 -1
  343. package/node_modules/@earendil-works/pi-ai/package.json +2 -1
  344. package/node_modules/@earendil-works/pi-client/CHANGELOG.md +13 -0
  345. package/node_modules/@earendil-works/pi-client/README.md +63 -0
  346. package/node_modules/@earendil-works/pi-client/dist/client.d.ts +25 -0
  347. package/node_modules/@earendil-works/pi-client/dist/client.d.ts.map +1 -0
  348. package/node_modules/@earendil-works/pi-client/dist/client.js +385 -0
  349. package/node_modules/@earendil-works/pi-client/dist/client.js.map +1 -0
  350. package/node_modules/@earendil-works/pi-client/dist/connection.d.ts +24 -0
  351. package/node_modules/@earendil-works/pi-client/dist/connection.d.ts.map +1 -0
  352. package/node_modules/@earendil-works/pi-client/dist/connection.js +204 -0
  353. package/node_modules/@earendil-works/pi-client/dist/connection.js.map +1 -0
  354. package/node_modules/@earendil-works/pi-client/dist/errors.d.ts +23 -0
  355. package/node_modules/@earendil-works/pi-client/dist/errors.d.ts.map +1 -0
  356. package/node_modules/@earendil-works/pi-client/dist/errors.js +46 -0
  357. package/node_modules/@earendil-works/pi-client/dist/errors.js.map +1 -0
  358. package/node_modules/@earendil-works/pi-client/dist/index.d.ts +6 -0
  359. package/node_modules/@earendil-works/pi-client/dist/index.d.ts.map +1 -0
  360. package/node_modules/@earendil-works/pi-client/dist/index.js +3 -0
  361. package/node_modules/@earendil-works/pi-client/dist/index.js.map +1 -0
  362. package/node_modules/@earendil-works/pi-client/dist/promise.d.ts +8 -0
  363. package/node_modules/@earendil-works/pi-client/dist/promise.d.ts.map +1 -0
  364. package/node_modules/@earendil-works/pi-client/dist/promise.js +11 -0
  365. package/node_modules/@earendil-works/pi-client/dist/promise.js.map +1 -0
  366. package/node_modules/@earendil-works/pi-client/dist/session-handle.d.ts +54 -0
  367. package/node_modules/@earendil-works/pi-client/dist/session-handle.d.ts.map +1 -0
  368. package/node_modules/@earendil-works/pi-client/dist/session-handle.js +51 -0
  369. package/node_modules/@earendil-works/pi-client/dist/session-handle.js.map +1 -0
  370. package/node_modules/@earendil-works/pi-client/dist/state.d.ts +22 -0
  371. package/node_modules/@earendil-works/pi-client/dist/state.d.ts.map +1 -0
  372. package/node_modules/@earendil-works/pi-client/dist/state.js +145 -0
  373. package/node_modules/@earendil-works/pi-client/dist/state.js.map +1 -0
  374. package/node_modules/@earendil-works/pi-client/dist/transport.d.ts +17 -0
  375. package/node_modules/@earendil-works/pi-client/dist/transport.d.ts.map +1 -0
  376. package/node_modules/@earendil-works/pi-client/dist/transport.js +2 -0
  377. package/node_modules/@earendil-works/pi-client/dist/transport.js.map +1 -0
  378. package/node_modules/@earendil-works/pi-client/dist/types.d.ts +22 -0
  379. package/node_modules/@earendil-works/pi-client/dist/types.d.ts.map +1 -0
  380. package/node_modules/@earendil-works/pi-client/dist/types.js +2 -0
  381. package/node_modules/@earendil-works/pi-client/dist/types.js.map +1 -0
  382. package/node_modules/@earendil-works/pi-client/dist/unix.d.ts +8 -0
  383. package/node_modules/@earendil-works/pi-client/dist/unix.d.ts.map +1 -0
  384. package/node_modules/@earendil-works/pi-client/dist/unix.js +151 -0
  385. package/node_modules/@earendil-works/pi-client/dist/unix.js.map +1 -0
  386. package/node_modules/@earendil-works/pi-client/package.json +56 -0
  387. package/node_modules/@earendil-works/pi-coding-agent/CHANGELOG.md +227 -0
  388. package/node_modules/@earendil-works/pi-coding-agent/README.md +5 -0
  389. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/args.d.ts +2 -0
  390. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/args.d.ts.map +1 -1
  391. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/args.js +22 -3
  392. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/args.js.map +1 -1
  393. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/auth-check.d.ts +19 -0
  394. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/auth-check.d.ts.map +1 -0
  395. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/auth-check.js +50 -0
  396. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/auth-check.js.map +1 -0
  397. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/auth-command.d.ts +24 -0
  398. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/auth-command.d.ts.map +1 -0
  399. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/auth-command.js +102 -0
  400. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/auth-command.js.map +1 -0
  401. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/config-selector.d.ts.map +1 -1
  402. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/config-selector.js +2 -2
  403. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/config-selector.js.map +1 -1
  404. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/credential-print.d.ts +5 -15
  405. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/credential-print.d.ts.map +1 -1
  406. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/credential-print.js +42 -82
  407. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/credential-print.js.map +1 -1
  408. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/experimental/auth.d.ts +16 -0
  409. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/experimental/auth.d.ts.map +1 -0
  410. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/experimental/auth.js +13 -0
  411. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/experimental/auth.js.map +1 -0
  412. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/experimental/cli.d.ts +6 -0
  413. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/experimental/cli.d.ts.map +1 -0
  414. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/experimental/cli.js +5 -0
  415. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/experimental/cli.js.map +1 -0
  416. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/experimental/command-options.d.ts +17 -0
  417. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/experimental/command-options.d.ts.map +1 -0
  418. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/experimental/command-options.js +35 -0
  419. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/experimental/command-options.js.map +1 -0
  420. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/experimental/command.d.ts +63 -0
  421. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/experimental/command.d.ts.map +1 -0
  422. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/experimental/command.js +130 -0
  423. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/experimental/command.js.map +1 -0
  424. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/experimental/commands/client.d.ts +13 -0
  425. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/experimental/commands/client.d.ts.map +1 -0
  426. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/experimental/commands/client.js +25 -0
  427. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/experimental/commands/client.js.map +1 -0
  428. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/experimental/commands/pi.d.ts +15 -0
  429. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/experimental/commands/pi.d.ts.map +1 -0
  430. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/experimental/commands/pi.js +28 -0
  431. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/experimental/commands/pi.js.map +1 -0
  432. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/experimental/commands/server.d.ts +13 -0
  433. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/experimental/commands/server.d.ts.map +1 -0
  434. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/experimental/commands/server.js +25 -0
  435. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/experimental/commands/server.js.map +1 -0
  436. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/experimental/transport-address.d.ts +10 -0
  437. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/experimental/transport-address.d.ts.map +1 -0
  438. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/experimental/transport-address.js +38 -0
  439. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/experimental/transport-address.js.map +1 -0
  440. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/list-models.d.ts +1 -1
  441. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/list-models.d.ts.map +1 -1
  442. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/list-models.js +2 -2
  443. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/list-models.js.map +1 -1
  444. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/startup-ui.d.ts +1 -1
  445. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/startup-ui.d.ts.map +1 -1
  446. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/startup-ui.js +2 -2
  447. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/startup-ui.js.map +1 -1
  448. package/node_modules/@earendil-works/pi-coding-agent/dist/cli.d.ts.map +1 -1
  449. package/node_modules/@earendil-works/pi-coding-agent/dist/cli.js +1 -0
  450. package/node_modules/@earendil-works/pi-coding-agent/dist/cli.js.map +1 -1
  451. package/node_modules/@earendil-works/pi-coding-agent/dist/client/index.d.ts +3 -0
  452. package/node_modules/@earendil-works/pi-coding-agent/dist/client/index.d.ts.map +1 -0
  453. package/node_modules/@earendil-works/pi-coding-agent/dist/client/index.js +3 -0
  454. package/node_modules/@earendil-works/pi-coding-agent/dist/client/index.js.map +1 -0
  455. package/node_modules/@earendil-works/pi-coding-agent/dist/client/remote-session.d.ts +53 -0
  456. package/node_modules/@earendil-works/pi-coding-agent/dist/client/remote-session.d.ts.map +1 -0
  457. package/node_modules/@earendil-works/pi-coding-agent/dist/client/remote-session.js +340 -0
  458. package/node_modules/@earendil-works/pi-coding-agent/dist/client/remote-session.js.map +1 -0
  459. package/node_modules/@earendil-works/pi-coding-agent/dist/client/transcript.d.ts +12 -0
  460. package/node_modules/@earendil-works/pi-coding-agent/dist/client/transcript.d.ts.map +1 -0
  461. package/node_modules/@earendil-works/pi-coding-agent/dist/client/transcript.js +98 -0
  462. package/node_modules/@earendil-works/pi-coding-agent/dist/client/transcript.js.map +1 -0
  463. package/node_modules/@earendil-works/pi-coding-agent/dist/core/agent-session-services.d.ts +1 -0
  464. package/node_modules/@earendil-works/pi-coding-agent/dist/core/agent-session-services.d.ts.map +1 -1
  465. package/node_modules/@earendil-works/pi-coding-agent/dist/core/agent-session-services.js +1 -0
  466. package/node_modules/@earendil-works/pi-coding-agent/dist/core/agent-session-services.js.map +1 -1
  467. package/node_modules/@earendil-works/pi-coding-agent/dist/core/agent-session.d.ts +1 -10
  468. package/node_modules/@earendil-works/pi-coding-agent/dist/core/agent-session.d.ts.map +1 -1
  469. package/node_modules/@earendil-works/pi-coding-agent/dist/core/agent-session.js +72 -70
  470. package/node_modules/@earendil-works/pi-coding-agent/dist/core/agent-session.js.map +1 -1
  471. package/node_modules/@earendil-works/pi-coding-agent/dist/core/auth-storage.d.ts +25 -9
  472. package/node_modules/@earendil-works/pi-coding-agent/dist/core/auth-storage.d.ts.map +1 -1
  473. package/node_modules/@earendil-works/pi-coding-agent/dist/core/auth-storage.js +237 -39
  474. package/node_modules/@earendil-works/pi-coding-agent/dist/core/auth-storage.js.map +1 -1
  475. package/node_modules/@earendil-works/pi-coding-agent/dist/core/extensions/index.d.ts +1 -1
  476. package/node_modules/@earendil-works/pi-coding-agent/dist/core/extensions/index.d.ts.map +1 -1
  477. package/node_modules/@earendil-works/pi-coding-agent/dist/core/extensions/index.js.map +1 -1
  478. package/node_modules/@earendil-works/pi-coding-agent/dist/core/extensions/loader.d.ts.map +1 -1
  479. package/node_modules/@earendil-works/pi-coding-agent/dist/core/extensions/loader.js +43 -20
  480. package/node_modules/@earendil-works/pi-coding-agent/dist/core/extensions/loader.js.map +1 -1
  481. package/node_modules/@earendil-works/pi-coding-agent/dist/core/extensions/runner.d.ts +2 -1
  482. package/node_modules/@earendil-works/pi-coding-agent/dist/core/extensions/runner.d.ts.map +1 -1
  483. package/node_modules/@earendil-works/pi-coding-agent/dist/core/extensions/runner.js +3 -0
  484. package/node_modules/@earendil-works/pi-coding-agent/dist/core/extensions/runner.js.map +1 -1
  485. package/node_modules/@earendil-works/pi-coding-agent/dist/core/extensions/types.d.ts +26 -3
  486. package/node_modules/@earendil-works/pi-coding-agent/dist/core/extensions/types.d.ts.map +1 -1
  487. package/node_modules/@earendil-works/pi-coding-agent/dist/core/extensions/types.js.map +1 -1
  488. package/node_modules/@earendil-works/pi-coding-agent/dist/core/http-dispatcher.d.ts.map +1 -1
  489. package/node_modules/@earendil-works/pi-coding-agent/dist/core/http-dispatcher.js +5 -0
  490. package/node_modules/@earendil-works/pi-coding-agent/dist/core/http-dispatcher.js.map +1 -1
  491. package/node_modules/@earendil-works/pi-coding-agent/dist/core/keybindings.d.ts +44 -4
  492. package/node_modules/@earendil-works/pi-coding-agent/dist/core/keybindings.d.ts.map +1 -1
  493. package/node_modules/@earendil-works/pi-coding-agent/dist/core/model-config.d.ts +29 -5
  494. package/node_modules/@earendil-works/pi-coding-agent/dist/core/model-config.d.ts.map +1 -1
  495. package/node_modules/@earendil-works/pi-coding-agent/dist/core/model-config.js +4 -0
  496. package/node_modules/@earendil-works/pi-coding-agent/dist/core/model-config.js.map +1 -1
  497. package/node_modules/@earendil-works/pi-coding-agent/dist/core/model-registry.d.ts +5 -3
  498. package/node_modules/@earendil-works/pi-coding-agent/dist/core/model-registry.d.ts.map +1 -1
  499. package/node_modules/@earendil-works/pi-coding-agent/dist/core/model-registry.js +13 -10
  500. package/node_modules/@earendil-works/pi-coding-agent/dist/core/model-registry.js.map +1 -1
  501. package/node_modules/@earendil-works/pi-coding-agent/dist/core/model-resolver.d.ts +4 -3
  502. package/node_modules/@earendil-works/pi-coding-agent/dist/core/model-resolver.d.ts.map +1 -1
  503. package/node_modules/@earendil-works/pi-coding-agent/dist/core/model-resolver.js +42 -10
  504. package/node_modules/@earendil-works/pi-coding-agent/dist/core/model-resolver.js.map +1 -1
  505. package/node_modules/@earendil-works/pi-coding-agent/dist/core/model-runtime.d.ts +30 -13
  506. package/node_modules/@earendil-works/pi-coding-agent/dist/core/model-runtime.d.ts.map +1 -1
  507. package/node_modules/@earendil-works/pi-coding-agent/dist/core/model-runtime.js +233 -73
  508. package/node_modules/@earendil-works/pi-coding-agent/dist/core/model-runtime.js.map +1 -1
  509. package/node_modules/@earendil-works/pi-coding-agent/dist/core/models-store.d.ts +12 -7
  510. package/node_modules/@earendil-works/pi-coding-agent/dist/core/models-store.d.ts.map +1 -1
  511. package/node_modules/@earendil-works/pi-coding-agent/dist/core/models-store.js +83 -14
  512. package/node_modules/@earendil-works/pi-coding-agent/dist/core/models-store.js.map +1 -1
  513. package/node_modules/@earendil-works/pi-coding-agent/dist/core/package-manager.d.ts +4 -1
  514. package/node_modules/@earendil-works/pi-coding-agent/dist/core/package-manager.d.ts.map +1 -1
  515. package/node_modules/@earendil-works/pi-coding-agent/dist/core/package-manager.js +63 -36
  516. package/node_modules/@earendil-works/pi-coding-agent/dist/core/package-manager.js.map +1 -1
  517. package/node_modules/@earendil-works/pi-coding-agent/dist/core/pi-manifest.d.ts +8 -0
  518. package/node_modules/@earendil-works/pi-coding-agent/dist/core/pi-manifest.d.ts.map +1 -0
  519. package/node_modules/@earendil-works/pi-coding-agent/dist/core/pi-manifest.js +25 -0
  520. package/node_modules/@earendil-works/pi-coding-agent/dist/core/pi-manifest.js.map +1 -0
  521. package/node_modules/@earendil-works/pi-coding-agent/dist/core/provider-composer.d.ts +4 -1
  522. package/node_modules/@earendil-works/pi-coding-agent/dist/core/provider-composer.d.ts.map +1 -1
  523. package/node_modules/@earendil-works/pi-coding-agent/dist/core/provider-composer.js +36 -15
  524. package/node_modules/@earendil-works/pi-coding-agent/dist/core/provider-composer.js.map +1 -1
  525. package/node_modules/@earendil-works/pi-coding-agent/dist/core/remote-catalog-provider.d.ts.map +1 -1
  526. package/node_modules/@earendil-works/pi-coding-agent/dist/core/remote-catalog-provider.js +73 -67
  527. package/node_modules/@earendil-works/pi-coding-agent/dist/core/remote-catalog-provider.js.map +1 -1
  528. package/node_modules/@earendil-works/pi-coding-agent/dist/core/resource-loader.d.ts.map +1 -1
  529. package/node_modules/@earendil-works/pi-coding-agent/dist/core/resource-loader.js +2 -2
  530. package/node_modules/@earendil-works/pi-coding-agent/dist/core/resource-loader.js.map +1 -1
  531. package/node_modules/@earendil-works/pi-coding-agent/dist/core/runtime-credentials.d.ts +5 -5
  532. package/node_modules/@earendil-works/pi-coding-agent/dist/core/runtime-credentials.d.ts.map +1 -1
  533. package/node_modules/@earendil-works/pi-coding-agent/dist/core/runtime-credentials.js +11 -8
  534. package/node_modules/@earendil-works/pi-coding-agent/dist/core/runtime-credentials.js.map +1 -1
  535. package/node_modules/@earendil-works/pi-coding-agent/dist/core/sdk.js +267 -0
  536. package/node_modules/@earendil-works/pi-coding-agent/dist/core/session-manager.d.ts.map +1 -1
  537. package/node_modules/@earendil-works/pi-coding-agent/dist/core/session-manager.js +24 -10
  538. package/node_modules/@earendil-works/pi-coding-agent/dist/core/session-manager.js.map +1 -1
  539. package/node_modules/@earendil-works/pi-coding-agent/dist/core/settings-manager.d.ts +12 -0
  540. package/node_modules/@earendil-works/pi-coding-agent/dist/core/settings-manager.d.ts.map +1 -1
  541. package/node_modules/@earendil-works/pi-coding-agent/dist/core/settings-manager.js +40 -16
  542. package/node_modules/@earendil-works/pi-coding-agent/dist/core/settings-manager.js.map +1 -1
  543. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/bash.d.ts +4 -0
  544. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/bash.d.ts.map +1 -1
  545. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/bash.js +6 -4
  546. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/bash.js.map +1 -1
  547. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/edit.d.ts +4 -0
  548. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/edit.d.ts.map +1 -1
  549. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/edit.js +11 -7
  550. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/edit.js.map +1 -1
  551. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/find.d.ts +7 -0
  552. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/find.d.ts.map +1 -1
  553. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/find.js +16 -19
  554. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/find.js.map +1 -1
  555. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/grep.d.ts +4 -0
  556. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/grep.d.ts.map +1 -1
  557. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/grep.js +5 -1
  558. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/grep.js.map +1 -1
  559. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/ls.d.ts +4 -0
  560. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/ls.d.ts.map +1 -1
  561. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/ls.js +5 -1
  562. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/ls.js.map +1 -1
  563. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/read.d.ts +4 -0
  564. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/read.d.ts.map +1 -1
  565. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/read.js +7 -3
  566. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/read.js.map +1 -1
  567. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/write.d.ts +4 -0
  568. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/write.d.ts.map +1 -1
  569. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/write.js +6 -2
  570. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/write.js.map +1 -1
  571. package/node_modules/@earendil-works/pi-coding-agent/dist/extensions/llama/index.d.ts.map +1 -1
  572. package/node_modules/@earendil-works/pi-coding-agent/dist/extensions/llama/index.js +11 -2
  573. package/node_modules/@earendil-works/pi-coding-agent/dist/extensions/llama/index.js.map +1 -1
  574. package/node_modules/@earendil-works/pi-coding-agent/dist/extensions/llama/provider.d.ts.map +1 -1
  575. package/node_modules/@earendil-works/pi-coding-agent/dist/extensions/llama/provider.js +21 -7
  576. package/node_modules/@earendil-works/pi-coding-agent/dist/extensions/llama/provider.js.map +1 -1
  577. package/node_modules/@earendil-works/pi-coding-agent/dist/index.d.ts +4 -4
  578. package/node_modules/@earendil-works/pi-coding-agent/dist/index.d.ts.map +1 -1
  579. package/node_modules/@earendil-works/pi-coding-agent/dist/index.js +1 -1
  580. package/node_modules/@earendil-works/pi-coding-agent/dist/index.js.map +1 -1
  581. package/node_modules/@earendil-works/pi-coding-agent/dist/main.d.ts.map +1 -1
  582. package/node_modules/@earendil-works/pi-coding-agent/dist/main.js +70 -25
  583. package/node_modules/@earendil-works/pi-coding-agent/dist/main.js.map +1 -1
  584. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/index.d.ts +1 -0
  585. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/index.d.ts.map +1 -1
  586. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/index.js.map +1 -1
  587. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/assistant-message.d.ts +5 -2
  588. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/assistant-message.d.ts.map +1 -1
  589. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/assistant-message.js +13 -4
  590. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/assistant-message.js.map +1 -1
  591. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/custom-editor.d.ts.map +1 -1
  592. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/custom-editor.js +7 -0
  593. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/custom-editor.js.map +1 -1
  594. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/footer.d.ts.map +1 -1
  595. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/footer.js +1 -1
  596. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/footer.js.map +1 -1
  597. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/markdown-transform.d.ts +3 -0
  598. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/markdown-transform.d.ts.map +1 -0
  599. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/markdown-transform.js +19 -0
  600. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/markdown-transform.js.map +1 -0
  601. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/mermaid.d.ts +11 -0
  602. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/mermaid.d.ts.map +1 -0
  603. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/mermaid.js +75 -0
  604. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/mermaid.js.map +1 -0
  605. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/model-selector.d.ts +1 -1
  606. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/model-selector.d.ts.map +1 -1
  607. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/model-selector.js +16 -4
  608. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/model-selector.js.map +1 -1
  609. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/scoped-models-selector.d.ts +4 -0
  610. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/scoped-models-selector.d.ts.map +1 -1
  611. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/scoped-models-selector.js +26 -0
  612. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/scoped-models-selector.js.map +1 -1
  613. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/settings-selector.d.ts +8 -2
  614. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
  615. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/settings-selector.js +30 -0
  616. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/settings-selector.js.map +1 -1
  617. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/user-message.d.ts +3 -1
  618. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/user-message.d.ts.map +1 -1
  619. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/user-message.js +9 -2
  620. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/user-message.js.map +1 -1
  621. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/interactive-mode.d.ts +36 -2
  622. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  623. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/interactive-mode.js +435 -2477
  624. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/interactive-mode.js.map +1 -1
  625. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/theme/dark.json +1 -0
  626. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/theme/light.json +1 -0
  627. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/theme/theme-controller.d.ts +3 -0
  628. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/theme/theme-controller.d.ts.map +1 -1
  629. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/theme/theme-controller.js +10 -1
  630. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/theme/theme-controller.js.map +1 -1
  631. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/theme/theme-schema.json +5 -1
  632. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/theme/theme.d.ts +2 -2
  633. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/theme/theme.d.ts.map +1 -1
  634. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/theme/theme.js +24 -6
  635. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/theme/theme.js.map +1 -1
  636. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/json-event.d.ts +28 -0
  637. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/json-event.d.ts.map +1 -0
  638. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/json-event.js +12 -0
  639. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/json-event.js.map +1 -0
  640. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/print-mode.d.ts.map +1 -1
  641. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/print-mode.js +12 -2
  642. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/print-mode.js.map +1 -1
  643. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/rpc/rpc-client.d.ts +5 -4
  644. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/rpc/rpc-client.d.ts.map +1 -1
  645. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/rpc/rpc-client.js.map +1 -1
  646. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
  647. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/rpc/rpc-mode.js +4 -3
  648. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/rpc/rpc-mode.js.map +1 -1
  649. package/node_modules/@earendil-works/pi-coding-agent/dist/package-manager-cli.d.ts.map +1 -1
  650. package/node_modules/@earendil-works/pi-coding-agent/dist/package-manager-cli.js +11 -9
  651. package/node_modules/@earendil-works/pi-coding-agent/dist/package-manager-cli.js.map +1 -1
  652. package/node_modules/@earendil-works/pi-coding-agent/dist/rpc-entry.d.ts.map +1 -1
  653. package/node_modules/@earendil-works/pi-coding-agent/dist/rpc-entry.js +1 -0
  654. package/node_modules/@earendil-works/pi-coding-agent/dist/rpc-entry.js.map +1 -1
  655. package/node_modules/@earendil-works/pi-coding-agent/dist/server/create-harness.d.ts +26 -0
  656. package/node_modules/@earendil-works/pi-coding-agent/dist/server/create-harness.d.ts.map +1 -0
  657. package/node_modules/@earendil-works/pi-coding-agent/dist/server/create-harness.js +104 -0
  658. package/node_modules/@earendil-works/pi-coding-agent/dist/server/create-harness.js.map +1 -0
  659. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/abort.d.ts +5 -0
  660. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/abort.d.ts.map +1 -0
  661. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/abort.js +48 -0
  662. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/abort.js.map +1 -0
  663. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/clipboard.d.ts +1 -1
  664. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/clipboard.d.ts.map +1 -1
  665. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/clipboard.js +22 -2
  666. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/clipboard.js.map +1 -1
  667. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/management-http.d.ts +23 -0
  668. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/management-http.d.ts.map +1 -0
  669. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/management-http.js +50 -0
  670. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/management-http.js.map +1 -0
  671. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/paths.d.ts +3 -0
  672. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/paths.d.ts.map +1 -1
  673. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/paths.js +23 -1
  674. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/paths.js.map +1 -1
  675. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/tool-result-images.d.ts +19 -0
  676. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/tool-result-images.d.ts.map +1 -0
  677. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/tool-result-images.js +45 -0
  678. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/tool-result-images.js.map +1 -0
  679. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/tools-manager.d.ts.map +1 -1
  680. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/tools-manager.js +4 -6
  681. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/tools-manager.js.map +1 -1
  682. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/version-check.d.ts +4 -0
  683. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/version-check.d.ts.map +1 -1
  684. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/version-check.js +20 -2
  685. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/version-check.js.map +1 -1
  686. package/node_modules/@earendil-works/pi-coding-agent/docs/compaction.md +2 -2
  687. package/node_modules/@earendil-works/pi-coding-agent/docs/custom-provider.md +7 -5
  688. package/node_modules/@earendil-works/pi-coding-agent/docs/extensions.md +30 -5
  689. package/node_modules/@earendil-works/pi-coding-agent/docs/json.md +19 -14
  690. package/node_modules/@earendil-works/pi-coding-agent/docs/keybindings.md +46 -14
  691. package/node_modules/@earendil-works/pi-coding-agent/docs/models.md +24 -3
  692. package/node_modules/@earendil-works/pi-coding-agent/docs/providers.md +9 -1
  693. package/node_modules/@earendil-works/pi-coding-agent/docs/quickstart.md +2 -0
  694. package/node_modules/@earendil-works/pi-coding-agent/docs/rpc.md +13 -11
  695. package/node_modules/@earendil-works/pi-coding-agent/docs/sdk.md +21 -2
  696. package/node_modules/@earendil-works/pi-coding-agent/docs/security.md +1 -1
  697. package/node_modules/@earendil-works/pi-coding-agent/docs/settings.md +4 -1
  698. package/node_modules/@earendil-works/pi-coding-agent/docs/themes.md +5 -3
  699. package/node_modules/@earendil-works/pi-coding-agent/docs/usage.md +7 -0
  700. package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/custom-compaction.ts +1 -16
  701. package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/custom-provider-anthropic/index.ts +2 -1
  702. package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
  703. package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/custom-provider-anthropic/package.json +1 -1
  704. package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/custom-provider-gitlab-duo/index.ts +2 -1
  705. package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
  706. package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/doom-overlay/wad-finder.ts +7 -3
  707. package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/gondolin/package-lock.json +2 -2
  708. package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/gondolin/package.json +1 -1
  709. package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/handoff.ts +2 -11
  710. package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/qna.ts +3 -7
  711. package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/sandbox/package-lock.json +2 -2
  712. package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/sandbox/package.json +1 -1
  713. package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/summarize.ts +7 -18
  714. package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/with-deps/package-lock.json +2 -2
  715. package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/with-deps/package.json +1 -1
  716. package/node_modules/@earendil-works/pi-coding-agent/examples/rpc-extension-ui.ts +11 -2
  717. package/node_modules/@earendil-works/pi-coding-agent/examples/sdk/02-custom-model.ts +1 -2
  718. package/node_modules/@earendil-works/pi-coding-agent/examples/sdk/09-api-keys-and-oauth.ts +1 -1
  719. package/node_modules/@earendil-works/pi-coding-agent/examples/sdk/12-full-control.ts +1 -1
  720. package/node_modules/@earendil-works/pi-coding-agent/examples/sdk/README.md +1 -1
  721. package/node_modules/@earendil-works/pi-coding-agent/package.json +13 -6
  722. package/node_modules/@earendil-works/pi-protocol/README.md +69 -0
  723. package/node_modules/@earendil-works/pi-protocol/dist/cbor/decoder.d.ts +4 -0
  724. package/node_modules/@earendil-works/pi-protocol/dist/cbor/decoder.d.ts.map +1 -0
  725. package/node_modules/@earendil-works/pi-protocol/dist/cbor/decoder.js +165 -0
  726. package/node_modules/@earendil-works/pi-protocol/dist/cbor/decoder.js.map +1 -0
  727. package/node_modules/@earendil-works/pi-protocol/dist/cbor/encoder.d.ts +4 -0
  728. package/node_modules/@earendil-works/pi-protocol/dist/cbor/encoder.d.ts.map +1 -0
  729. package/node_modules/@earendil-works/pi-protocol/dist/cbor/encoder.js +201 -0
  730. package/node_modules/@earendil-works/pi-protocol/dist/cbor/encoder.js.map +1 -0
  731. package/node_modules/@earendil-works/pi-protocol/dist/cbor/index.d.ts +4 -0
  732. package/node_modules/@earendil-works/pi-protocol/dist/cbor/index.d.ts.map +1 -0
  733. package/node_modules/@earendil-works/pi-protocol/dist/cbor/index.js +4 -0
  734. package/node_modules/@earendil-works/pi-protocol/dist/cbor/index.js.map +1 -0
  735. package/node_modules/@earendil-works/pi-protocol/dist/cbor/options.d.ts +26 -0
  736. package/node_modules/@earendil-works/pi-protocol/dist/cbor/options.d.ts.map +1 -0
  737. package/node_modules/@earendil-works/pi-protocol/dist/cbor/options.js +29 -0
  738. package/node_modules/@earendil-works/pi-protocol/dist/cbor/options.js.map +1 -0
  739. package/node_modules/@earendil-works/pi-protocol/dist/codec.d.ts +29 -0
  740. package/node_modules/@earendil-works/pi-protocol/dist/codec.d.ts.map +1 -0
  741. package/node_modules/@earendil-works/pi-protocol/dist/codec.js +146 -0
  742. package/node_modules/@earendil-works/pi-protocol/dist/codec.js.map +1 -0
  743. package/node_modules/@earendil-works/pi-protocol/dist/framing.d.ts +29 -0
  744. package/node_modules/@earendil-works/pi-protocol/dist/framing.d.ts.map +1 -0
  745. package/node_modules/@earendil-works/pi-protocol/dist/framing.js +155 -0
  746. package/node_modules/@earendil-works/pi-protocol/dist/framing.js.map +1 -0
  747. package/node_modules/@earendil-works/pi-protocol/dist/index.d.ts +5 -0
  748. package/node_modules/@earendil-works/pi-protocol/dist/index.d.ts.map +1 -0
  749. package/node_modules/@earendil-works/pi-protocol/dist/index.js +5 -0
  750. package/node_modules/@earendil-works/pi-protocol/dist/index.js.map +1 -0
  751. package/node_modules/@earendil-works/pi-protocol/dist/schemas.d.ts +13739 -0
  752. package/node_modules/@earendil-works/pi-protocol/dist/schemas.d.ts.map +1 -0
  753. package/node_modules/@earendil-works/pi-protocol/dist/schemas.js +386 -0
  754. package/node_modules/@earendil-works/pi-protocol/dist/schemas.js.map +1 -0
  755. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/compile/code.d.mts +12 -0
  756. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/compile/code.mjs +65 -0
  757. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/compile/compile.d.mts +6 -0
  758. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/compile/compile.mjs +12 -0
  759. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/compile/index.d.mts +8 -0
  760. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/compile/index.mjs +14 -0
  761. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/compile/validator.d.mts +35 -0
  762. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/compile/validator.mjs +91 -0
  763. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/error/errors.d.mts +208 -0
  764. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/error/errors.mjs +18 -0
  765. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/error/index.d.mts +1 -0
  766. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/error/index.mjs +1 -0
  767. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/format/_idna.d.mts +2 -0
  768. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/format/_idna.mjs +246 -0
  769. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/format/_puny.d.mts +1 -0
  770. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/format/_puny.mjs +77 -0
  771. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/format/_registry.d.mts +15 -0
  772. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/format/_registry.mjs +96 -0
  773. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/format/date.d.mts +6 -0
  774. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/format/date.mjs +19 -0
  775. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/format/date_time.d.mts +6 -0
  776. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/format/date_time.mjs +11 -0
  777. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/format/duration.d.mts +5 -0
  778. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/format/duration.mjs +8 -0
  779. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/format/email.d.mts +5 -0
  780. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/format/email.mjs +8 -0
  781. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/format/format.d.mts +22 -0
  782. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/format/format.mjs +22 -0
  783. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/format/hostname.d.mts +7 -0
  784. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/format/hostname.mjs +18 -0
  785. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/format/idn_email.d.mts +5 -0
  786. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/format/idn_email.mjs +8 -0
  787. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/format/idn_hostname.d.mts +7 -0
  788. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/format/idn_hostname.mjs +19 -0
  789. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/format/index.d.mts +4 -0
  790. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/format/index.mjs +4 -0
  791. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/format/ipv4.d.mts +6 -0
  792. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/format/ipv4.mjs +38 -0
  793. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/format/ipv6.d.mts +5 -0
  794. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/format/ipv6.mjs +67 -0
  795. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/format/iri.d.mts +5 -0
  796. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/format/iri.mjs +13 -0
  797. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/format/iri_reference.d.mts +5 -0
  798. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/format/iri_reference.mjs +60 -0
  799. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/format/json_pointer.d.mts +6 -0
  800. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/format/json_pointer.mjs +9 -0
  801. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/format/json_pointer_uri_fragment.d.mts +6 -0
  802. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/format/json_pointer_uri_fragment.mjs +9 -0
  803. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/format/regex.d.mts +6 -0
  804. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/format/regex.mjs +17 -0
  805. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/format/relative_json_pointer.d.mts +6 -0
  806. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/format/relative_json_pointer.mjs +9 -0
  807. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/format/time.d.mts +5 -0
  808. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/format/time.mjs +27 -0
  809. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/format/uri.d.mts +5 -0
  810. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/format/uri.mjs +135 -0
  811. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/format/uri_reference.d.mts +5 -0
  812. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/format/uri_reference.mjs +9 -0
  813. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/format/uri_template.d.mts +6 -0
  814. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/format/uri_template.mjs +10 -0
  815. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/format/url.d.mts +6 -0
  816. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/format/url.mjs +9 -0
  817. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/format/uuid.d.mts +6 -0
  818. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/format/uuid.mjs +9 -0
  819. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/guard/emit.d.mts +54 -0
  820. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/guard/emit.mjs +186 -0
  821. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/guard/globals.d.mts +35 -0
  822. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/guard/globals.mjs +90 -0
  823. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/guard/guard.d.mts +65 -0
  824. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/guard/guard.mjs +212 -0
  825. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/guard/index.d.mts +6 -0
  826. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/guard/index.mjs +6 -0
  827. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/guard/native.d.mts +20 -0
  828. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/guard/native.mjs +60 -0
  829. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/guard/string.d.mts +6 -0
  830. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/guard/string.mjs +176 -0
  831. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/index.d.mts +8 -0
  832. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/index.mjs +14 -0
  833. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/build.d.mts +39 -0
  834. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/build.mjs +118 -0
  835. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/check.d.mts +6 -0
  836. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/check.mjs +14 -0
  837. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/compile.d.mts +22 -0
  838. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/compile.mjs +46 -0
  839. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/engine/_context.d.mts +35 -0
  840. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/engine/_context.mjs +129 -0
  841. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/engine/_exact_optional.d.mts +3 -0
  842. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/engine/_exact_optional.mjs +20 -0
  843. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/engine/_externals.d.mts +7 -0
  844. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/engine/_externals.mjs +25 -0
  845. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/engine/_functions.d.mts +6 -0
  846. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/engine/_functions.mjs +66 -0
  847. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/engine/_reducer.d.mts +4 -0
  848. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/engine/_reducer.mjs +45 -0
  849. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/engine/_refine.d.mts +6 -0
  850. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/engine/_refine.mjs +29 -0
  851. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/engine/_stack.d.mts +18 -0
  852. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/engine/_stack.mjs +107 -0
  853. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/engine/_unique.d.mts +2 -0
  854. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/engine/_unique.mjs +5 -0
  855. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/engine/additionalItems.d.mts +6 -0
  856. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/engine/additionalItems.mjs +50 -0
  857. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/engine/additionalProperties.d.mts +9 -0
  858. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/engine/additionalProperties.mjs +110 -0
  859. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/engine/allOf.d.mts +6 -0
  860. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/engine/allOf.mjs +47 -0
  861. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/engine/anyOf.d.mts +6 -0
  862. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/engine/anyOf.mjs +52 -0
  863. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/engine/boolean.d.mts +5 -0
  864. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/engine/boolean.mjs +25 -0
  865. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/engine/const.d.mts +6 -0
  866. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/engine/const.mjs +30 -0
  867. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/engine/contains.d.mts +6 -0
  868. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/engine/contains.mjs +42 -0
  869. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/engine/dependencies.d.mts +6 -0
  870. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/engine/dependencies.mjs +45 -0
  871. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/engine/dependentRequired.d.mts +6 -0
  872. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/engine/dependentRequired.mjs +40 -0
  873. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/engine/dependentSchemas.d.mts +6 -0
  874. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/engine/dependentSchemas.mjs +38 -0
  875. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/engine/dynamicRef.d.mts +6 -0
  876. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/engine/dynamicRef.mjs +25 -0
  877. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/engine/enum.d.mts +6 -0
  878. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/engine/enum.mjs +33 -0
  879. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/engine/exclusiveMaximum.d.mts +6 -0
  880. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/engine/exclusiveMaximum.mjs +25 -0
  881. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/engine/exclusiveMinimum.d.mts +6 -0
  882. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/engine/exclusiveMinimum.mjs +25 -0
  883. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/engine/format.d.mts +6 -0
  884. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/engine/format.mjs +26 -0
  885. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/engine/if.d.mts +6 -0
  886. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/engine/if.mjs +47 -0
  887. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/engine/index.d.mts +48 -0
  888. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/engine/index.mjs +54 -0
  889. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/engine/items.d.mts +6 -0
  890. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/engine/items.mjs +68 -0
  891. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/engine/maxContains.d.mts +6 -0
  892. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/engine/maxContains.mjs +42 -0
  893. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/engine/maxItems.d.mts +6 -0
  894. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/engine/maxItems.mjs +25 -0
  895. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/engine/maxLength.d.mts +6 -0
  896. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/engine/maxLength.mjs +25 -0
  897. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/engine/maxProperties.d.mts +6 -0
  898. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/engine/maxProperties.mjs +25 -0
  899. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/engine/maximum.d.mts +6 -0
  900. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/engine/maximum.mjs +25 -0
  901. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/engine/minContains.d.mts +6 -0
  902. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/engine/minContains.mjs +41 -0
  903. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/engine/minItems.d.mts +6 -0
  904. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/engine/minItems.mjs +25 -0
  905. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/engine/minLength.d.mts +6 -0
  906. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/engine/minLength.mjs +25 -0
  907. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/engine/minProperties.d.mts +6 -0
  908. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/engine/minProperties.mjs +25 -0
  909. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/engine/minimum.d.mts +6 -0
  910. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/engine/minimum.mjs +25 -0
  911. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/engine/multipleOf.d.mts +6 -0
  912. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/engine/multipleOf.mjs +25 -0
  913. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/engine/not.d.mts +6 -0
  914. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/engine/not.mjs +37 -0
  915. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/engine/oneOf.d.mts +6 -0
  916. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/engine/oneOf.mjs +58 -0
  917. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/engine/pattern.d.mts +6 -0
  918. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/engine/pattern.mjs +28 -0
  919. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/engine/patternProperties.d.mts +6 -0
  920. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/engine/patternProperties.mjs +44 -0
  921. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/engine/prefixItems.d.mts +6 -0
  922. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/engine/prefixItems.mjs +35 -0
  923. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/engine/properties.d.mts +6 -0
  924. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/engine/properties.mjs +75 -0
  925. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/engine/propertyNames.d.mts +6 -0
  926. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/engine/propertyNames.mjs +39 -0
  927. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/engine/recursiveRef.d.mts +6 -0
  928. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/engine/recursiveRef.mjs +25 -0
  929. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/engine/ref.d.mts +6 -0
  930. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/engine/ref.mjs +58 -0
  931. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/engine/required.d.mts +6 -0
  932. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/engine/required.mjs +32 -0
  933. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/engine/schema.d.mts +9 -0
  934. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/engine/schema.mjs +347 -0
  935. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/engine/type.d.mts +6 -0
  936. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/engine/type.mjs +70 -0
  937. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/engine/unevaluatedItems.d.mts +6 -0
  938. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/engine/unevaluatedItems.mjs +51 -0
  939. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/engine/unevaluatedProperties.d.mts +6 -0
  940. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/engine/unevaluatedProperties.mjs +51 -0
  941. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/engine/uniqueItems.d.mts +6 -0
  942. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/engine/uniqueItems.mjs +51 -0
  943. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/errors.d.mts +6 -0
  944. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/errors.mjs +24 -0
  945. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/index.d.mts +3 -0
  946. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/index.mjs +9 -0
  947. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/parse.d.mts +13 -0
  948. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/parse.mjs +27 -0
  949. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/pointer/index.d.mts +2 -0
  950. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/pointer/index.mjs +2 -0
  951. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/pointer/pointer.d.mts +10 -0
  952. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/pointer/pointer.mjs +106 -0
  953. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/pointer/pointer_get.d.mts +9 -0
  954. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/pointer/pointer_get.mjs +2 -0
  955. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/resolve/index.d.mts +1 -0
  956. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/resolve/index.mjs +1 -0
  957. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/resolve/ref.d.mts +3 -0
  958. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/resolve/ref.mjs +146 -0
  959. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/resolve/resolve.d.mts +1 -0
  960. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/resolve/resolve.mjs +1 -0
  961. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/schema.d.mts +10 -0
  962. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/schema.mjs +10 -0
  963. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/static/_canonical.d.mts +7 -0
  964. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/static/_canonical.mjs +2 -0
  965. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/static/_comparer.d.mts +6 -0
  966. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/static/_comparer.mjs +2 -0
  967. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/static/_elements.d.mts +18 -0
  968. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/static/_elements.mjs +2 -0
  969. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/static/additionalProperties.d.mts +7 -0
  970. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/static/additionalProperties.mjs +3 -0
  971. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/static/allOf.d.mts +3 -0
  972. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/static/allOf.mjs +2 -0
  973. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/static/anyOf.d.mts +3 -0
  974. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/static/anyOf.mjs +2 -0
  975. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/static/const.d.mts +1 -0
  976. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/static/const.mjs +2 -0
  977. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/static/enum.d.mts +1 -0
  978. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/static/enum.mjs +2 -0
  979. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/static/if.d.mts +15 -0
  980. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/static/if.mjs +2 -0
  981. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/static/index.d.mts +1 -0
  982. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/static/index.mjs +1 -0
  983. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/static/items.d.mts +7 -0
  984. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/static/items.mjs +2 -0
  985. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/static/oneOf.d.mts +3 -0
  986. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/static/oneOf.mjs +2 -0
  987. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/static/patternProperties.d.mts +7 -0
  988. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/static/patternProperties.mjs +2 -0
  989. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/static/prefixItems.d.mts +3 -0
  990. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/static/prefixItems.mjs +2 -0
  991. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/static/properties.d.mts +32 -0
  992. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/static/properties.mjs +2 -0
  993. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/static/ref.d.mts +8 -0
  994. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/static/ref.mjs +3 -0
  995. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/static/required.d.mts +3 -0
  996. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/static/required.mjs +3 -0
  997. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/static/schema.d.mts +56 -0
  998. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/static/schema.mjs +2 -0
  999. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/static/static.d.mts +4 -0
  1000. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/static/static.mjs +3 -0
  1001. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/static/type.d.mts +4 -0
  1002. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/static/type.mjs +3 -0
  1003. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/static/unevaluatedProperties.d.mts +7 -0
  1004. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/static/unevaluatedProperties.mjs +3 -0
  1005. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/types/_refine.d.mts +13 -0
  1006. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/types/_refine.mjs +18 -0
  1007. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/types/additionalItems.d.mts +9 -0
  1008. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/types/additionalItems.mjs +14 -0
  1009. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/types/additionalProperties.d.mts +9 -0
  1010. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/types/additionalProperties.mjs +14 -0
  1011. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/types/allOf.d.mts +9 -0
  1012. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/types/allOf.mjs +15 -0
  1013. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/types/anchor.d.mts +8 -0
  1014. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/types/anchor.mjs +12 -0
  1015. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/types/anyOf.d.mts +9 -0
  1016. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/types/anyOf.mjs +15 -0
  1017. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/types/const.d.mts +9 -0
  1018. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/types/const.mjs +12 -0
  1019. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/types/contains.d.mts +9 -0
  1020. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/types/contains.mjs +14 -0
  1021. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/types/contentEncoding.d.mts +9 -0
  1022. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/types/contentEncoding.mjs +13 -0
  1023. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/types/contentMediaType.d.mts +9 -0
  1024. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/types/contentMediaType.mjs +13 -0
  1025. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/types/default.d.mts +9 -0
  1026. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/types/default.mjs +12 -0
  1027. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/types/defs.d.mts +6 -0
  1028. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/types/defs.mjs +12 -0
  1029. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/types/dependencies.d.mts +11 -0
  1030. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/types/dependencies.mjs +16 -0
  1031. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/types/dependentRequired.d.mts +9 -0
  1032. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/types/dependentRequired.mjs +15 -0
  1033. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/types/dependentSchemas.d.mts +9 -0
  1034. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/types/dependentSchemas.mjs +15 -0
  1035. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/types/dynamicAnchor.d.mts +8 -0
  1036. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/types/dynamicAnchor.mjs +12 -0
  1037. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/types/dynamicRef.d.mts +8 -0
  1038. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/types/dynamicRef.mjs +12 -0
  1039. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/types/else.d.mts +9 -0
  1040. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/types/else.mjs +14 -0
  1041. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/types/enum.d.mts +9 -0
  1042. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/types/enum.mjs +13 -0
  1043. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/types/exclusiveMaximum.d.mts +9 -0
  1044. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/types/exclusiveMaximum.mjs +13 -0
  1045. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/types/exclusiveMinimum.d.mts +9 -0
  1046. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/types/exclusiveMinimum.mjs +13 -0
  1047. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/types/format.d.mts +9 -0
  1048. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/types/format.mjs +13 -0
  1049. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/types/id.d.mts +9 -0
  1050. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/types/id.mjs +13 -0
  1051. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/types/if.d.mts +9 -0
  1052. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/types/if.mjs +14 -0
  1053. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/types/index.d.mts +53 -0
  1054. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/types/index.mjs +59 -0
  1055. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/types/items.d.mts +19 -0
  1056. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/types/items.mjs +26 -0
  1057. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/types/maxContains.d.mts +9 -0
  1058. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/types/maxContains.mjs +13 -0
  1059. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/types/maxItems.d.mts +9 -0
  1060. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/types/maxItems.mjs +13 -0
  1061. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/types/maxLength.d.mts +9 -0
  1062. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/types/maxLength.mjs +13 -0
  1063. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/types/maxProperties.d.mts +9 -0
  1064. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/types/maxProperties.mjs +13 -0
  1065. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/types/maximum.d.mts +9 -0
  1066. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/types/maximum.mjs +13 -0
  1067. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/types/minContains.d.mts +9 -0
  1068. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/types/minContains.mjs +13 -0
  1069. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/types/minItems.d.mts +9 -0
  1070. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/types/minItems.mjs +13 -0
  1071. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/types/minLength.d.mts +9 -0
  1072. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/types/minLength.mjs +13 -0
  1073. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/types/minProperties.d.mts +9 -0
  1074. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/types/minProperties.mjs +13 -0
  1075. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/types/minimum.d.mts +9 -0
  1076. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/types/minimum.mjs +13 -0
  1077. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/types/multipleOf.d.mts +9 -0
  1078. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/types/multipleOf.mjs +13 -0
  1079. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/types/not.d.mts +9 -0
  1080. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/types/not.mjs +14 -0
  1081. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/types/oneOf.d.mts +9 -0
  1082. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/types/oneOf.mjs +15 -0
  1083. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/types/pattern.d.mts +9 -0
  1084. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/types/pattern.mjs +14 -0
  1085. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/types/patternProperties.d.mts +9 -0
  1086. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/types/patternProperties.mjs +15 -0
  1087. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/types/prefixItems.d.mts +8 -0
  1088. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/types/prefixItems.mjs +14 -0
  1089. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/types/properties.d.mts +9 -0
  1090. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/types/properties.mjs +15 -0
  1091. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/types/propertyNames.d.mts +9 -0
  1092. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/types/propertyNames.mjs +15 -0
  1093. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/types/recursiveAnchor.d.mts +12 -0
  1094. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/types/recursiveAnchor.mjs +19 -0
  1095. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/types/recursiveRef.d.mts +8 -0
  1096. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/types/recursiveRef.mjs +12 -0
  1097. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/types/ref.d.mts +9 -0
  1098. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/types/ref.mjs +13 -0
  1099. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/types/required.d.mts +9 -0
  1100. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/types/required.mjs +14 -0
  1101. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/types/schema.d.mts +9 -0
  1102. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/types/schema.mjs +14 -0
  1103. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/types/then.d.mts +9 -0
  1104. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/types/then.mjs +14 -0
  1105. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/types/type.d.mts +9 -0
  1106. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/types/type.mjs +15 -0
  1107. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/types/unevaluatedItems.d.mts +9 -0
  1108. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/types/unevaluatedItems.mjs +14 -0
  1109. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/types/unevaluatedProperties.d.mts +9 -0
  1110. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/types/unevaluatedProperties.mjs +14 -0
  1111. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/types/uniqueItems.d.mts +9 -0
  1112. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/schema/types/uniqueItems.mjs +13 -0
  1113. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/system/arguments/arguments.d.mts +5 -0
  1114. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/system/arguments/arguments.mjs +9 -0
  1115. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/system/arguments/index.d.mts +1 -0
  1116. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/system/arguments/index.mjs +1 -0
  1117. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/system/environment/environment.d.mts +1 -0
  1118. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/system/environment/environment.mjs +1 -0
  1119. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/system/environment/evaluate.d.mts +9 -0
  1120. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/system/environment/evaluate.mjs +37 -0
  1121. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/system/environment/index.d.mts +1 -0
  1122. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/system/environment/index.mjs +1 -0
  1123. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/system/hashing/hash.d.mts +4 -0
  1124. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/system/hashing/hash.mjs +232 -0
  1125. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/system/hashing/index.d.mts +1 -0
  1126. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/system/hashing/index.mjs +1 -0
  1127. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/system/index.d.mts +4 -0
  1128. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/system/index.mjs +4 -0
  1129. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/system/locale/_config.d.mts +7 -0
  1130. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/system/locale/_config.mjs +15 -0
  1131. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/system/locale/_locale.d.mts +40 -0
  1132. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/system/locale/_locale.mjs +40 -0
  1133. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/system/locale/ar_001.d.mts +3 -0
  1134. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/system/locale/ar_001.mjs +40 -0
  1135. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/system/locale/bn_BD.d.mts +3 -0
  1136. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/system/locale/bn_BD.mjs +40 -0
  1137. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/system/locale/cs_CZ.d.mts +3 -0
  1138. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/system/locale/cs_CZ.mjs +40 -0
  1139. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/system/locale/de_DE.d.mts +3 -0
  1140. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/system/locale/de_DE.mjs +40 -0
  1141. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/system/locale/el_GR.d.mts +3 -0
  1142. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/system/locale/el_GR.mjs +40 -0
  1143. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/system/locale/en_US.d.mts +3 -0
  1144. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/system/locale/en_US.mjs +39 -0
  1145. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/system/locale/es_419.d.mts +3 -0
  1146. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/system/locale/es_419.mjs +40 -0
  1147. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/system/locale/es_AR.d.mts +3 -0
  1148. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/system/locale/es_AR.mjs +40 -0
  1149. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/system/locale/es_ES.d.mts +3 -0
  1150. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/system/locale/es_ES.mjs +40 -0
  1151. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/system/locale/es_MX.d.mts +3 -0
  1152. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/system/locale/es_MX.mjs +40 -0
  1153. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/system/locale/fa_IR.d.mts +3 -0
  1154. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/system/locale/fa_IR.mjs +40 -0
  1155. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/system/locale/fil_PH.d.mts +3 -0
  1156. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/system/locale/fil_PH.mjs +40 -0
  1157. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/system/locale/fr_CA.d.mts +3 -0
  1158. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/system/locale/fr_CA.mjs +40 -0
  1159. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/system/locale/fr_FR.d.mts +3 -0
  1160. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/system/locale/fr_FR.mjs +40 -0
  1161. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/system/locale/ha_NG.d.mts +3 -0
  1162. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/system/locale/ha_NG.mjs +40 -0
  1163. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/system/locale/hi_IN.d.mts +3 -0
  1164. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/system/locale/hi_IN.mjs +40 -0
  1165. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/system/locale/hu_HU.d.mts +3 -0
  1166. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/system/locale/hu_HU.mjs +40 -0
  1167. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/system/locale/id_ID.d.mts +3 -0
  1168. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/system/locale/id_ID.mjs +40 -0
  1169. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/system/locale/index.d.mts +1 -0
  1170. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/system/locale/index.mjs +1 -0
  1171. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/system/locale/it_IT.d.mts +3 -0
  1172. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/system/locale/it_IT.mjs +40 -0
  1173. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/system/locale/ja_JP.d.mts +3 -0
  1174. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/system/locale/ja_JP.mjs +40 -0
  1175. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/system/locale/ko_KR.d.mts +3 -0
  1176. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/system/locale/ko_KR.mjs +40 -0
  1177. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/system/locale/ms_MY.d.mts +3 -0
  1178. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/system/locale/ms_MY.mjs +40 -0
  1179. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/system/locale/nl_NL.d.mts +3 -0
  1180. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/system/locale/nl_NL.mjs +40 -0
  1181. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/system/locale/pl_PL.d.mts +3 -0
  1182. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/system/locale/pl_PL.mjs +40 -0
  1183. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/system/locale/pt_BR.d.mts +3 -0
  1184. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/system/locale/pt_BR.mjs +40 -0
  1185. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/system/locale/pt_PT.d.mts +3 -0
  1186. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/system/locale/pt_PT.mjs +40 -0
  1187. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/system/locale/ro_RO.d.mts +3 -0
  1188. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/system/locale/ro_RO.mjs +40 -0
  1189. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/system/locale/ru_RU.d.mts +3 -0
  1190. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/system/locale/ru_RU.mjs +40 -0
  1191. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/system/locale/sv_SE.d.mts +3 -0
  1192. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/system/locale/sv_SE.mjs +40 -0
  1193. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/system/locale/sw_TZ.d.mts +3 -0
  1194. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/system/locale/sw_TZ.mjs +40 -0
  1195. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/system/locale/th_TH.d.mts +3 -0
  1196. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/system/locale/th_TH.mjs +40 -0
  1197. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/system/locale/tr_TR.d.mts +3 -0
  1198. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/system/locale/tr_TR.mjs +40 -0
  1199. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/system/locale/uk_UA.d.mts +3 -0
  1200. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/system/locale/uk_UA.mjs +40 -0
  1201. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/system/locale/ur_PK.d.mts +3 -0
  1202. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/system/locale/ur_PK.mjs +40 -0
  1203. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/system/locale/vi_VN.d.mts +3 -0
  1204. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/system/locale/vi_VN.mjs +40 -0
  1205. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/system/locale/yo_NG.d.mts +3 -0
  1206. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/system/locale/yo_NG.mjs +40 -0
  1207. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/system/locale/zh_Hans.d.mts +3 -0
  1208. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/system/locale/zh_Hans.mjs +40 -0
  1209. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/system/locale/zh_Hant.d.mts +3 -0
  1210. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/system/locale/zh_Hant.mjs +40 -0
  1211. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/system/memory/assign.d.mts +14 -0
  1212. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/system/memory/assign.mjs +11 -0
  1213. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/system/memory/clone.d.mts +5 -0
  1214. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/system/memory/clone.mjs +110 -0
  1215. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/system/memory/create.d.mts +8 -0
  1216. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/system/memory/create.mjs +30 -0
  1217. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/system/memory/discard.d.mts +4 -0
  1218. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/system/memory/discard.mjs +17 -0
  1219. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/system/memory/index.d.mts +1 -0
  1220. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/system/memory/index.mjs +1 -0
  1221. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/system/memory/memory.d.mts +6 -0
  1222. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/system/memory/memory.mjs +7 -0
  1223. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/system/memory/metrics.d.mts +14 -0
  1224. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/system/memory/metrics.mjs +8 -0
  1225. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/system/memory/update.d.mts +7 -0
  1226. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/system/memory/update.mjs +32 -0
  1227. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/system/settings/index.d.mts +1 -0
  1228. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/system/settings/index.mjs +1 -0
  1229. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/system/settings/settings.d.mts +71 -0
  1230. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/system/settings/settings.mjs +34 -0
  1231. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/system/system.d.mts +6 -0
  1232. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/system/system.mjs +6 -0
  1233. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/system/unreachable/index.d.mts +1 -0
  1234. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/system/unreachable/index.mjs +1 -0
  1235. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/system/unreachable/unreachable.d.mts +3 -0
  1236. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/system/unreachable/unreachable.mjs +6 -0
  1237. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/action/_add_immutable.d.mts +11 -0
  1238. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/action/_add_immutable.mjs +11 -0
  1239. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/action/_add_optional.d.mts +11 -0
  1240. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/action/_add_optional.mjs +11 -0
  1241. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/action/_add_readonly.d.mts +11 -0
  1242. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/action/_add_readonly.mjs +11 -0
  1243. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/action/_remove_immutable.d.mts +11 -0
  1244. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/action/_remove_immutable.mjs +11 -0
  1245. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/action/_remove_optional.d.mts +11 -0
  1246. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/action/_remove_optional.mjs +11 -0
  1247. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/action/_remove_readonly.d.mts +11 -0
  1248. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/action/_remove_readonly.mjs +11 -0
  1249. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/action/capitalize.d.mts +11 -0
  1250. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/action/capitalize.mjs +11 -0
  1251. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/action/conditional.d.mts +12 -0
  1252. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/action/conditional.mjs +13 -0
  1253. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/action/constructor_parameters.d.mts +11 -0
  1254. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/action/constructor_parameters.mjs +11 -0
  1255. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/action/evaluate.d.mts +11 -0
  1256. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/action/evaluate.mjs +11 -0
  1257. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/action/exclude.d.mts +11 -0
  1258. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/action/exclude.mjs +11 -0
  1259. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/action/extract.d.mts +11 -0
  1260. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/action/extract.mjs +11 -0
  1261. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/action/index.d.mts +30 -0
  1262. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/action/index.mjs +30 -0
  1263. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/action/indexed.d.mts +14 -0
  1264. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/action/indexed.mjs +14 -0
  1265. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/action/instance_type.d.mts +11 -0
  1266. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/action/instance_type.mjs +11 -0
  1267. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/action/interface.d.mts +14 -0
  1268. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/action/interface.mjs +22 -0
  1269. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/action/keyof.d.mts +11 -0
  1270. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/action/keyof.mjs +11 -0
  1271. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/action/lowercase.d.mts +11 -0
  1272. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/action/lowercase.mjs +11 -0
  1273. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/action/mapped.d.mts +13 -0
  1274. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/action/mapped.mjs +13 -0
  1275. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/action/module.d.mts +13 -0
  1276. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/action/module.mjs +13 -0
  1277. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/action/non_nullable.d.mts +11 -0
  1278. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/action/non_nullable.mjs +11 -0
  1279. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/action/omit.d.mts +14 -0
  1280. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/action/omit.mjs +14 -0
  1281. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/action/parameters.d.mts +11 -0
  1282. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/action/parameters.mjs +11 -0
  1283. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/action/partial.d.mts +11 -0
  1284. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/action/partial.mjs +11 -0
  1285. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/action/pick.d.mts +14 -0
  1286. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/action/pick.mjs +14 -0
  1287. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/action/readonly_object.d.mts +16 -0
  1288. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/action/readonly_object.mjs +19 -0
  1289. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/action/required.d.mts +11 -0
  1290. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/action/required.mjs +11 -0
  1291. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/action/return_type.d.mts +11 -0
  1292. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/action/return_type.mjs +11 -0
  1293. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/action/uncapitalize.d.mts +11 -0
  1294. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/action/uncapitalize.mjs +11 -0
  1295. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/action/uppercase.d.mts +11 -0
  1296. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/action/uppercase.mjs +11 -0
  1297. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/action/with.d.mts +11 -0
  1298. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/action/with.mjs +11 -0
  1299. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/call/distribute_arguments.d.mts +15 -0
  1300. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/call/distribute_arguments.mjs +53 -0
  1301. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/call/instantiate.d.mts +21 -0
  1302. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/call/instantiate.mjs +49 -0
  1303. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/call/resolve_arguments.d.mts +13 -0
  1304. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/call/resolve_arguments.mjs +33 -0
  1305. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/call/resolve_target.d.mts +25 -0
  1306. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/call/resolve_target.mjs +27 -0
  1307. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/conditional/index.d.mts +1 -0
  1308. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/conditional/index.mjs +1 -0
  1309. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/conditional/instantiate.d.mts +12 -0
  1310. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/conditional/instantiate.mjs +23 -0
  1311. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/constructor_parameters/index.d.mts +1 -0
  1312. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/constructor_parameters/index.mjs +1 -0
  1313. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/constructor_parameters/instantiate.d.mts +14 -0
  1314. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/constructor_parameters/instantiate.mjs +25 -0
  1315. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/cyclic/candidates.d.mts +8 -0
  1316. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/cyclic/candidates.mjs +16 -0
  1317. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/cyclic/check.d.mts +21 -0
  1318. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/cyclic/check.mjs +45 -0
  1319. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/cyclic/dependencies.d.mts +22 -0
  1320. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/cyclic/dependencies.mjs +47 -0
  1321. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/cyclic/extends.d.mts +28 -0
  1322. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/cyclic/extends.mjs +47 -0
  1323. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/cyclic/index.d.mts +6 -0
  1324. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/cyclic/index.mjs +6 -0
  1325. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/cyclic/instantiate.d.mts +17 -0
  1326. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/cyclic/instantiate.mjs +31 -0
  1327. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/cyclic/target.d.mts +10 -0
  1328. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/cyclic/target.mjs +16 -0
  1329. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/enum/index.d.mts +1 -0
  1330. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/enum/index.mjs +1 -0
  1331. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/enum/typescript_enum_to_enum_values.d.mts +8 -0
  1332. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/enum/typescript_enum_to_enum_values.mjs +9 -0
  1333. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/evaluate/broaden.d.mts +15 -0
  1334. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/evaluate/broaden.mjs +43 -0
  1335. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/evaluate/compare.d.mts +15 -0
  1336. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/evaluate/compare.mjs +22 -0
  1337. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/evaluate/composite.d.mts +34 -0
  1338. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/evaluate/composite.mjs +67 -0
  1339. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/evaluate/distribute.d.mts +28 -0
  1340. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/evaluate/distribute.mjs +45 -0
  1341. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/evaluate/evaluate.d.mts +26 -0
  1342. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/evaluate/evaluate.mjs +53 -0
  1343. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/evaluate/flatten.d.mts +6 -0
  1344. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/evaluate/flatten.mjs +11 -0
  1345. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/evaluate/index.d.mts +8 -0
  1346. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/evaluate/index.mjs +8 -0
  1347. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/evaluate/instantiate.d.mts +8 -0
  1348. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/evaluate/instantiate.mjs +12 -0
  1349. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/evaluate/narrow.d.mts +5 -0
  1350. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/evaluate/narrow.mjs +11 -0
  1351. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/exclude/index.d.mts +1 -0
  1352. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/exclude/index.mjs +1 -0
  1353. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/exclude/instantiate.d.mts +9 -0
  1354. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/exclude/instantiate.mjs +16 -0
  1355. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/exclude/operation.d.mts +10 -0
  1356. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/exclude/operation.mjs +23 -0
  1357. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/extract/index.d.mts +1 -0
  1358. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/extract/index.mjs +1 -0
  1359. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/extract/instantiate.d.mts +9 -0
  1360. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/extract/instantiate.mjs +16 -0
  1361. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/extract/operation.d.mts +10 -0
  1362. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/extract/operation.mjs +23 -0
  1363. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/helpers/index.d.mts +3 -0
  1364. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/helpers/index.mjs +3 -0
  1365. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/helpers/keys.d.mts +3 -0
  1366. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/helpers/keys.mjs +8 -0
  1367. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/helpers/keys_to_indexer.d.mts +7 -0
  1368. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/helpers/keys_to_indexer.mjs +15 -0
  1369. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/helpers/union.d.mts +7 -0
  1370. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/helpers/union.mjs +3 -0
  1371. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/immutable/instantiate_add.d.mts +10 -0
  1372. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/immutable/instantiate_add.mjs +14 -0
  1373. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/immutable/instantiate_remove.d.mts +10 -0
  1374. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/immutable/instantiate_remove.mjs +14 -0
  1375. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/index.d.mts +31 -0
  1376. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/index.mjs +37 -0
  1377. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/indexable/from_cyclic.d.mts +6 -0
  1378. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/indexable/from_cyclic.mjs +8 -0
  1379. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/indexable/from_dependent.d.mts +5 -0
  1380. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/indexable/from_dependent.mjs +8 -0
  1381. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/indexable/from_enum.d.mts +6 -0
  1382. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/indexable/from_enum.mjs +8 -0
  1383. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/indexable/from_intersect.d.mts +5 -0
  1384. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/indexable/from_intersect.mjs +8 -0
  1385. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/indexable/from_literal.d.mts +3 -0
  1386. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/indexable/from_literal.mjs +5 -0
  1387. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/indexable/from_template_literal.d.mts +5 -0
  1388. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/indexable/from_template_literal.mjs +8 -0
  1389. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/indexable/from_type.d.mts +19 -0
  1390. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/indexable/from_type.mjs +25 -0
  1391. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/indexable/from_union.d.mts +4 -0
  1392. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/indexable/from_union.mjs +7 -0
  1393. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/indexable/to_indexable.d.mts +9 -0
  1394. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/indexable/to_indexable.mjs +14 -0
  1395. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/indexable/to_indexable_keys.d.mts +10 -0
  1396. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/indexable/to_indexable_keys.mjs +12 -0
  1397. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/indexed/array_indexer.d.mts +12 -0
  1398. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/indexed/array_indexer.mjs +18 -0
  1399. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/indexed/from_array.d.mts +15 -0
  1400. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/indexed/from_array.mjs +35 -0
  1401. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/indexed/from_object.d.mts +16 -0
  1402. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/indexed/from_object.mjs +40 -0
  1403. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/indexed/from_tuple.d.mts +13 -0
  1404. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/indexed/from_tuple.mjs +35 -0
  1405. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/indexed/from_type.d.mts +11 -0
  1406. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/indexed/from_type.mjs +14 -0
  1407. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/indexed/index.d.mts +1 -0
  1408. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/indexed/index.mjs +1 -0
  1409. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/indexed/instantiate.d.mts +16 -0
  1410. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/indexed/instantiate.mjs +28 -0
  1411. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/instance_type/index.d.mts +1 -0
  1412. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/instance_type/index.mjs +1 -0
  1413. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/instance_type/instantiate.d.mts +12 -0
  1414. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/instance_type/instantiate.mjs +21 -0
  1415. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/instantiate.d.mts +178 -0
  1416. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/instantiate.mjs +158 -0
  1417. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/interface/index.d.mts +1 -0
  1418. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/interface/index.mjs +1 -0
  1419. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/interface/instantiate.d.mts +15 -0
  1420. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/interface/instantiate.mjs +23 -0
  1421. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/intrinsics/from_literal.d.mts +5 -0
  1422. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/intrinsics/from_literal.mjs +9 -0
  1423. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/intrinsics/from_template_literal.d.mts +6 -0
  1424. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/intrinsics/from_template_literal.mjs +8 -0
  1425. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/intrinsics/from_type.d.mts +10 -0
  1426. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/intrinsics/from_type.mjs +13 -0
  1427. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/intrinsics/from_union.d.mts +6 -0
  1428. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/intrinsics/from_union.mjs +7 -0
  1429. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/intrinsics/index.d.mts +1 -0
  1430. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/intrinsics/index.mjs +1 -0
  1431. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/intrinsics/instantiate.d.mts +38 -0
  1432. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/intrinsics/instantiate.mjs +52 -0
  1433. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/intrinsics/mapping.d.mts +9 -0
  1434. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/intrinsics/mapping.mjs +4 -0
  1435. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/keyof/from_any.d.mts +6 -0
  1436. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/keyof/from_any.mjs +8 -0
  1437. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/keyof/from_array.d.mts +4 -0
  1438. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/keyof/from_array.mjs +5 -0
  1439. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/keyof/from_object.d.mts +10 -0
  1440. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/keyof/from_object.mjs +20 -0
  1441. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/keyof/from_record.d.mts +4 -0
  1442. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/keyof/from_record.mjs +5 -0
  1443. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/keyof/from_tuple.d.mts +5 -0
  1444. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/keyof/from_tuple.mjs +7 -0
  1445. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/keyof/from_type.d.mts +15 -0
  1446. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/keyof/from_type.mjs +23 -0
  1447. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/keyof/index.d.mts +1 -0
  1448. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/keyof/index.mjs +1 -0
  1449. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/keyof/instantiate.d.mts +16 -0
  1450. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/keyof/instantiate.mjs +29 -0
  1451. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/mapped/index.d.mts +1 -0
  1452. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/mapped/index.mjs +1 -0
  1453. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/mapped/instantiate.d.mts +10 -0
  1454. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/mapped/instantiate.mjs +15 -0
  1455. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/mapped/mapped_operation.d.mts +22 -0
  1456. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/mapped/mapped_operation.mjs +42 -0
  1457. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/mapped/mapped_variants.d.mts +17 -0
  1458. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/mapped/mapped_variants.mjs +39 -0
  1459. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/module/index.d.mts +1 -0
  1460. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/module/index.mjs +1 -0
  1461. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/module/instantiate.d.mts +19 -0
  1462. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/module/instantiate.mjs +36 -0
  1463. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/non_nullable/index.d.mts +1 -0
  1464. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/non_nullable/index.mjs +1 -0
  1465. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/non_nullable/instantiate.d.mts +14 -0
  1466. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/non_nullable/instantiate.mjs +22 -0
  1467. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/object/collapse.d.mts +12 -0
  1468. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/object/collapse.mjs +14 -0
  1469. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/object/from_cyclic.d.mts +6 -0
  1470. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/object/from_cyclic.mjs +8 -0
  1471. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/object/from_dependent.d.mts +5 -0
  1472. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/object/from_dependent.mjs +8 -0
  1473. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/object/from_intersect.d.mts +17 -0
  1474. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/object/from_intersect.mjs +22 -0
  1475. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/object/from_object.d.mts +3 -0
  1476. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/object/from_object.mjs +4 -0
  1477. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/object/from_tuple.d.mts +6 -0
  1478. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/object/from_tuple.mjs +9 -0
  1479. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/object/from_type.d.mts +16 -0
  1480. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/object/from_type.mjs +23 -0
  1481. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/object/from_union.d.mts +12 -0
  1482. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/object/from_union.mjs +19 -0
  1483. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/object/index.d.mts +1 -0
  1484. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/object/index.mjs +1 -0
  1485. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/omit/from_type.d.mts +12 -0
  1486. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/omit/from_type.mjs +18 -0
  1487. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/omit/index.d.mts +1 -0
  1488. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/omit/index.mjs +1 -0
  1489. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/omit/instantiate.d.mts +9 -0
  1490. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/omit/instantiate.mjs +16 -0
  1491. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/optional/instantiate_add.d.mts +10 -0
  1492. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/optional/instantiate_add.mjs +14 -0
  1493. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/optional/instantiate_remove.d.mts +10 -0
  1494. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/optional/instantiate_remove.mjs +14 -0
  1495. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/parameters/index.d.mts +1 -0
  1496. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/parameters/index.mjs +1 -0
  1497. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/parameters/instantiate.d.mts +14 -0
  1498. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/parameters/instantiate.mjs +25 -0
  1499. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/partial/from_cyclic.d.mts +10 -0
  1500. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/partial/from_cyclic.mjs +11 -0
  1501. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/partial/from_dependent.d.mts +5 -0
  1502. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/partial/from_dependent.mjs +8 -0
  1503. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/partial/from_intersect.d.mts +5 -0
  1504. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/partial/from_intersect.mjs +8 -0
  1505. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/partial/from_object.d.mts +8 -0
  1506. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/partial/from_object.mjs +11 -0
  1507. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/partial/from_type.d.mts +14 -0
  1508. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/partial/from_type.mjs +20 -0
  1509. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/partial/from_union.d.mts +5 -0
  1510. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/partial/from_union.mjs +7 -0
  1511. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/partial/index.d.mts +1 -0
  1512. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/partial/index.mjs +1 -0
  1513. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/partial/instantiate.d.mts +9 -0
  1514. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/partial/instantiate.mjs +15 -0
  1515. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/patterns/index.d.mts +2 -0
  1516. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/patterns/index.mjs +2 -0
  1517. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/patterns/pattern.d.mts +6 -0
  1518. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/patterns/pattern.mjs +11 -0
  1519. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/patterns/template.d.mts +7 -0
  1520. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/patterns/template.mjs +20 -0
  1521. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/pick/from_type.d.mts +13 -0
  1522. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/pick/from_type.mjs +20 -0
  1523. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/pick/index.d.mts +1 -0
  1524. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/pick/index.mjs +1 -0
  1525. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/pick/instantiate.d.mts +9 -0
  1526. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/pick/instantiate.mjs +16 -0
  1527. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/priority/index.d.mts +1 -0
  1528. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/priority/index.mjs +1 -0
  1529. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/priority/priority.d.mts +20 -0
  1530. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/priority/priority.mjs +28 -0
  1531. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/readonly/instantiate_add.d.mts +10 -0
  1532. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/readonly/instantiate_add.mjs +14 -0
  1533. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/readonly/instantiate_remove.d.mts +10 -0
  1534. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/readonly/instantiate_remove.mjs +14 -0
  1535. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/readonly_object/from_array.d.mts +5 -0
  1536. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/readonly_object/from_array.mjs +7 -0
  1537. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/readonly_object/from_cyclic.d.mts +10 -0
  1538. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/readonly_object/from_cyclic.mjs +11 -0
  1539. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/readonly_object/from_dependent.d.mts +5 -0
  1540. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/readonly_object/from_dependent.mjs +8 -0
  1541. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/readonly_object/from_intersect.d.mts +5 -0
  1542. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/readonly_object/from_intersect.mjs +8 -0
  1543. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/readonly_object/from_object.d.mts +8 -0
  1544. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/readonly_object/from_object.mjs +11 -0
  1545. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/readonly_object/from_tuple.d.mts +5 -0
  1546. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/readonly_object/from_tuple.mjs +7 -0
  1547. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/readonly_object/from_type.d.mts +18 -0
  1548. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/readonly_object/from_type.mjs +25 -0
  1549. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/readonly_object/from_union.d.mts +5 -0
  1550. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/readonly_object/from_union.mjs +7 -0
  1551. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/readonly_object/index.d.mts +1 -0
  1552. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/readonly_object/index.mjs +1 -0
  1553. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/readonly_object/instantiate.d.mts +9 -0
  1554. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/readonly_object/instantiate.mjs +15 -0
  1555. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/record/from_key.d.mts +24 -0
  1556. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/record/from_key.mjs +40 -0
  1557. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/record/from_key_any.d.mts +4 -0
  1558. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/record/from_key_any.mjs +6 -0
  1559. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/record/from_key_boolean.d.mts +7 -0
  1560. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/record/from_key_boolean.mjs +5 -0
  1561. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/record/from_key_enum.d.mts +6 -0
  1562. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/record/from_key_enum.mjs +8 -0
  1563. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/record/from_key_integer.d.mts +5 -0
  1564. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/record/from_key_integer.mjs +7 -0
  1565. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/record/from_key_intersect.d.mts +5 -0
  1566. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/record/from_key_intersect.mjs +8 -0
  1567. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/record/from_key_literal.d.mts +11 -0
  1568. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/record/from_key_literal.mjs +10 -0
  1569. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/record/from_key_number.d.mts +5 -0
  1570. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/record/from_key_number.mjs +7 -0
  1571. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/record/from_key_string.d.mts +5 -0
  1572. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/record/from_key_string.mjs +12 -0
  1573. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/record/from_key_template_literal.d.mts +8 -0
  1574. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/record/from_key_template_literal.mjs +12 -0
  1575. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/record/from_key_union.d.mts +20 -0
  1576. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/record/from_key_union.mjs +39 -0
  1577. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/record/index.d.mts +1 -0
  1578. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/record/index.mjs +1 -0
  1579. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/record/instantiate.d.mts +9 -0
  1580. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/record/instantiate.mjs +17 -0
  1581. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/record/record_create.d.mts +3 -0
  1582. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/record/record_create.mjs +7 -0
  1583. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/ref/index.d.mts +1 -0
  1584. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/ref/index.mjs +1 -0
  1585. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/ref/instantiate.d.mts +6 -0
  1586. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/ref/instantiate.mjs +10 -0
  1587. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/required/from_cyclic.d.mts +10 -0
  1588. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/required/from_cyclic.mjs +11 -0
  1589. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/required/from_dependent.d.mts +5 -0
  1590. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/required/from_dependent.mjs +8 -0
  1591. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/required/from_intersect.d.mts +5 -0
  1592. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/required/from_intersect.mjs +8 -0
  1593. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/required/from_object.d.mts +8 -0
  1594. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/required/from_object.mjs +11 -0
  1595. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/required/from_type.d.mts +14 -0
  1596. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/required/from_type.mjs +20 -0
  1597. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/required/from_union.d.mts +5 -0
  1598. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/required/from_union.mjs +7 -0
  1599. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/required/index.d.mts +1 -0
  1600. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/required/index.mjs +1 -0
  1601. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/required/instantiate.d.mts +9 -0
  1602. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/required/instantiate.mjs +15 -0
  1603. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/rest/index.d.mts +1 -0
  1604. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/rest/index.mjs +1 -0
  1605. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/rest/spread.d.mts +12 -0
  1606. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/rest/spread.mjs +19 -0
  1607. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/return_type/index.d.mts +1 -0
  1608. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/return_type/index.mjs +1 -0
  1609. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/return_type/instantiate.d.mts +12 -0
  1610. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/return_type/instantiate.mjs +21 -0
  1611. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/template_literal/create.d.mts +1 -0
  1612. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/template_literal/create.mjs +5 -0
  1613. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/template_literal/decode.d.mts +30 -0
  1614. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/template_literal/decode.mjs +81 -0
  1615. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/template_literal/encode.d.mts +33 -0
  1616. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/template_literal/encode.mjs +81 -0
  1617. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/template_literal/index.d.mts +6 -0
  1618. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/template_literal/index.mjs +6 -0
  1619. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/template_literal/instantiate.d.mts +9 -0
  1620. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/template_literal/instantiate.mjs +15 -0
  1621. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/template_literal/is_finite.d.mts +12 -0
  1622. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/template_literal/is_finite.mjs +26 -0
  1623. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/template_literal/is_pattern.d.mts +6 -0
  1624. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/template_literal/is_pattern.mjs +10 -0
  1625. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/template_literal/static.d.mts +18 -0
  1626. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/template_literal/static.mjs +2 -0
  1627. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/this/expand_this.d.mts +16 -0
  1628. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/this/expand_this.mjs +26 -0
  1629. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/tuple/to_object.d.mts +12 -0
  1630. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/tuple/to_object.mjs +14 -0
  1631. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/with/index.d.mts +1 -0
  1632. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/with/index.mjs +1 -0
  1633. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/with/instantiate.d.mts +8 -0
  1634. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/engine/with/instantiate.mjs +14 -0
  1635. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/extends/any.d.mts +9 -0
  1636. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/extends/any.mjs +12 -0
  1637. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/extends/array.d.mts +20 -0
  1638. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/extends/array.mjs +21 -0
  1639. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/extends/bigint.d.mts +7 -0
  1640. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/extends/bigint.mjs +9 -0
  1641. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/extends/boolean.d.mts +7 -0
  1642. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/extends/boolean.mjs +9 -0
  1643. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/extends/constructor.d.mts +10 -0
  1644. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/extends/constructor.mjs +17 -0
  1645. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/extends/dependent.d.mts +6 -0
  1646. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/extends/dependent.mjs +6 -0
  1647. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/extends/enum.d.mts +7 -0
  1648. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/extends/enum.mjs +7 -0
  1649. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/extends/extends.d.mts +13 -0
  1650. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/extends/extends.mjs +17 -0
  1651. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/extends/extends_left.d.mts +53 -0
  1652. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/extends/extends_left.mjs +80 -0
  1653. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/extends/extends_right.d.mts +27 -0
  1654. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/extends/extends_right.mjs +49 -0
  1655. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/extends/function.d.mts +10 -0
  1656. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/extends/function.mjs +17 -0
  1657. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/extends/index.d.mts +2 -0
  1658. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/extends/index.mjs +2 -0
  1659. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/extends/inference.d.mts +34 -0
  1660. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/extends/inference.mjs +62 -0
  1661. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/extends/integer.d.mts +8 -0
  1662. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/extends/integer.mjs +10 -0
  1663. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/extends/intersect.d.mts +6 -0
  1664. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/extends/intersect.mjs +15 -0
  1665. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/extends/literal.d.mts +18 -0
  1666. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/extends/literal.mjs +44 -0
  1667. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/extends/never.d.mts +8 -0
  1668. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/extends/never.mjs +9 -0
  1669. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/extends/null.d.mts +7 -0
  1670. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/extends/null.mjs +9 -0
  1671. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/extends/number.d.mts +7 -0
  1672. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/extends/number.mjs +9 -0
  1673. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/extends/object.d.mts +32 -0
  1674. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/extends/object.mjs +109 -0
  1675. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/extends/parameters.d.mts +15 -0
  1676. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/extends/parameters.mjs +28 -0
  1677. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/extends/record.d.mts +13 -0
  1678. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/extends/record.mjs +23 -0
  1679. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/extends/result.d.mts +24 -0
  1680. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/extends/result.mjs +36 -0
  1681. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/extends/return_type.d.mts +7 -0
  1682. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/extends/return_type.mjs +9 -0
  1683. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/extends/string.d.mts +7 -0
  1684. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/extends/string.mjs +9 -0
  1685. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/extends/symbol.d.mts +7 -0
  1686. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/extends/symbol.mjs +9 -0
  1687. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/extends/template_literal.d.mts +6 -0
  1688. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/extends/template_literal.mjs +7 -0
  1689. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/extends/tuple.d.mts +22 -0
  1690. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/extends/tuple.mjs +61 -0
  1691. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/extends/undefined.d.mts +8 -0
  1692. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/extends/undefined.mjs +10 -0
  1693. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/extends/union.d.mts +11 -0
  1694. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/extends/union.mjs +24 -0
  1695. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/extends/unknown.d.mts +9 -0
  1696. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/extends/unknown.mjs +12 -0
  1697. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/extends/void.d.mts +7 -0
  1698. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/extends/void.mjs +9 -0
  1699. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/index.d.mts +5 -0
  1700. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/index.mjs +5 -0
  1701. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/script/index.d.mts +1 -0
  1702. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/script/index.mjs +1 -0
  1703. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/script/mapping.d.mts +353 -0
  1704. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/script/mapping.mjs +535 -0
  1705. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/script/parser.d.mts +262 -0
  1706. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/script/parser.mjs +136 -0
  1707. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/script/script.d.mts +16 -0
  1708. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/script/script.mjs +22 -0
  1709. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/script/token/bigint.d.mts +8 -0
  1710. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/script/token/bigint.mjs +14 -0
  1711. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/script/token/const.d.mts +11 -0
  1712. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/script/token/const.mjs +18 -0
  1713. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/script/token/ident.d.mts +16 -0
  1714. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/script/token/ident.mjs +26 -0
  1715. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/script/token/index.d.mts +12 -0
  1716. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/script/token/index.mjs +12 -0
  1717. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/script/token/integer.d.mts +11 -0
  1718. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/script/token/integer.mjs +19 -0
  1719. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/script/token/internal/char.d.mts +75 -0
  1720. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/script/token/internal/char.mjs +26 -0
  1721. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/script/token/internal/guard.d.mts +1 -0
  1722. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/script/token/internal/guard.mjs +15 -0
  1723. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/script/token/internal/many.d.mts +7 -0
  1724. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/script/token/internal/many.mjs +14 -0
  1725. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/script/token/internal/match.d.mts +6 -0
  1726. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/script/token/internal/match.mjs +11 -0
  1727. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/script/token/internal/optional.d.mts +5 -0
  1728. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/script/token/internal/optional.mjs +9 -0
  1729. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/script/token/internal/take.d.mts +6 -0
  1730. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/script/token/internal/take.mjs +30 -0
  1731. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/script/token/internal/trim.d.mts +19 -0
  1732. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/script/token/internal/trim.mjs +34 -0
  1733. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/script/token/number.d.mts +11 -0
  1734. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/script/token/number.mjs +19 -0
  1735. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/script/token/rest.d.mts +4 -0
  1736. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/script/token/rest.mjs +9 -0
  1737. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/script/token/span.d.mts +11 -0
  1738. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/script/token/span.mjs +24 -0
  1739. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/script/token/string.d.mts +11 -0
  1740. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/script/token/string.mjs +20 -0
  1741. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/script/token/unsigned_integer.d.mts +16 -0
  1742. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/script/token/unsigned_integer.mjs +26 -0
  1743. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/script/token/unsigned_number.d.mts +17 -0
  1744. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/script/token/unsigned_number.mjs +38 -0
  1745. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/script/token/until.d.mts +7 -0
  1746. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/script/token/until.mjs +21 -0
  1747. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/script/token/until_1.d.mts +5 -0
  1748. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/script/token/until_1.mjs +12 -0
  1749. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/types/_codec.d.mts +30 -0
  1750. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/types/_codec.mjs +60 -0
  1751. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/types/_immutable.d.mts +9 -0
  1752. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/types/_immutable.mjs +18 -0
  1753. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/types/_optional.d.mts +9 -0
  1754. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/types/_optional.mjs +18 -0
  1755. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/types/_readonly.d.mts +9 -0
  1756. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/types/_readonly.mjs +18 -0
  1757. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/types/_refine.d.mts +24 -0
  1758. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/types/_refine.mjs +36 -0
  1759. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/types/any.d.mts +10 -0
  1760. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/types/any.mjs +18 -0
  1761. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/types/array.d.mts +18 -0
  1762. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/types/array.mjs +25 -0
  1763. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/types/bigint.d.mts +12 -0
  1764. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/types/bigint.mjs +21 -0
  1765. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/types/boolean.d.mts +11 -0
  1766. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/types/boolean.mjs +17 -0
  1767. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/types/call.d.mts +16 -0
  1768. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/types/call.mjs +23 -0
  1769. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/types/constructor.d.mts +18 -0
  1770. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/types/constructor.mjs +24 -0
  1771. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/types/cyclic.d.mts +16 -0
  1772. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/types/cyclic.mjs +29 -0
  1773. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/types/deferred.d.mts +13 -0
  1774. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/types/deferred.mjs +16 -0
  1775. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/types/dependent.d.mts +17 -0
  1776. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/types/dependent.mjs +24 -0
  1777. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/types/enum.d.mts +18 -0
  1778. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/types/enum.mjs +22 -0
  1779. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/types/function.d.mts +21 -0
  1780. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/types/function.mjs +25 -0
  1781. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/types/generic.d.mts +13 -0
  1782. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/types/generic.mjs +17 -0
  1783. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/types/identifier.d.mts +11 -0
  1784. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/types/identifier.mjs +17 -0
  1785. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/types/index.d.mts +45 -0
  1786. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/types/index.mjs +51 -0
  1787. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/types/infer.d.mts +15 -0
  1788. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/types/infer.mjs +20 -0
  1789. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/types/integer.d.mts +12 -0
  1790. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/types/integer.mjs +21 -0
  1791. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/types/intersect.d.mts +15 -0
  1792. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/types/intersect.mjs +24 -0
  1793. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/types/literal.d.mts +31 -0
  1794. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/types/literal.mjs +62 -0
  1795. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/types/never.d.mts +12 -0
  1796. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/types/never.mjs +22 -0
  1797. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/types/null.d.mts +11 -0
  1798. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/types/null.mjs +17 -0
  1799. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/types/number.d.mts +12 -0
  1800. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/types/number.mjs +21 -0
  1801. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/types/object.d.mts +18 -0
  1802. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/types/object.mjs +28 -0
  1803. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/types/parameter.d.mts +17 -0
  1804. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/types/parameter.mjs +21 -0
  1805. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/types/properties.d.mts +43 -0
  1806. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/types/properties.mjs +15 -0
  1807. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/types/record.d.mts +52 -0
  1808. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/types/record.mjs +66 -0
  1809. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/types/ref.d.mts +19 -0
  1810. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/types/ref.mjs +18 -0
  1811. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/types/rest.d.mts +11 -0
  1812. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/types/rest.mjs +17 -0
  1813. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/types/schema.d.mts +176 -0
  1814. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/types/schema.mjs +15 -0
  1815. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/types/static.d.mts +45 -0
  1816. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/types/static.mjs +3 -0
  1817. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/types/string.d.mts +12 -0
  1818. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/types/string.mjs +22 -0
  1819. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/types/symbol.d.mts +11 -0
  1820. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/types/symbol.mjs +17 -0
  1821. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/types/template_literal.d.mts +28 -0
  1822. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/types/template_literal.mjs +37 -0
  1823. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/types/this.d.mts +14 -0
  1824. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/types/this.mjs +17 -0
  1825. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/types/tuple.d.mts +38 -0
  1826. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/types/tuple.mjs +25 -0
  1827. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/types/undefined.d.mts +11 -0
  1828. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/types/undefined.mjs +17 -0
  1829. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/types/union.d.mts +15 -0
  1830. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/types/union.mjs +24 -0
  1831. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/types/unknown.d.mts +10 -0
  1832. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/types/unknown.mjs +17 -0
  1833. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/types/unsafe.d.mts +10 -0
  1834. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/types/unsafe.mjs +20 -0
  1835. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/types/void.d.mts +11 -0
  1836. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/type/types/void.mjs +17 -0
  1837. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/typebox.d.mts +69 -0
  1838. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/typebox.mjs +85 -0
  1839. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/assert/assert.d.mts +14 -0
  1840. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/assert/assert.mjs +28 -0
  1841. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/assert/index.d.mts +1 -0
  1842. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/assert/index.mjs +1 -0
  1843. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/check/check.d.mts +5 -0
  1844. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/check/check.mjs +11 -0
  1845. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/check/index.d.mts +1 -0
  1846. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/check/index.mjs +1 -0
  1847. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/clean/additional.d.mts +2 -0
  1848. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/clean/additional.mjs +6 -0
  1849. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/clean/clean.d.mts +15 -0
  1850. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/clean/clean.mjs +17 -0
  1851. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/clean/from_array.d.mts +2 -0
  1852. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/clean/from_array.mjs +8 -0
  1853. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/clean/from_cyclic.d.mts +2 -0
  1854. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/clean/from_cyclic.mjs +6 -0
  1855. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/clean/from_intersect.d.mts +2 -0
  1856. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/clean/from_intersect.mjs +26 -0
  1857. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/clean/from_object.d.mts +2 -0
  1858. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/clean/from_object.mjs +31 -0
  1859. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/clean/from_record.d.mts +2 -0
  1860. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/clean/from_record.mjs +32 -0
  1861. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/clean/from_ref.d.mts +2 -0
  1862. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/clean/from_ref.mjs +8 -0
  1863. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/clean/from_tuple.d.mts +2 -0
  1864. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/clean/from_tuple.mjs +14 -0
  1865. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/clean/from_type.d.mts +2 -0
  1866. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/clean/from_type.mjs +21 -0
  1867. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/clean/from_union.d.mts +2 -0
  1868. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/clean/from_union.mjs +12 -0
  1869. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/clean/index.d.mts +1 -0
  1870. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/clean/index.mjs +1 -0
  1871. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/clone/clone.d.mts +5 -0
  1872. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/clone/clone.mjs +12 -0
  1873. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/clone/index.d.mts +1 -0
  1874. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/clone/index.mjs +1 -0
  1875. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/codec/callback.d.mts +2 -0
  1876. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/codec/callback.mjs +25 -0
  1877. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/codec/decode.d.mts +12 -0
  1878. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/codec/decode.mjs +52 -0
  1879. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/codec/encode.d.mts +12 -0
  1880. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/codec/encode.mjs +52 -0
  1881. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/codec/from_array.d.mts +2 -0
  1882. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/codec/from_array.mjs +35 -0
  1883. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/codec/from_cyclic.d.mts +2 -0
  1884. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/codec/from_cyclic.mjs +8 -0
  1885. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/codec/from_intersect.d.mts +2 -0
  1886. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/codec/from_intersect.mjs +58 -0
  1887. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/codec/from_object.d.mts +2 -0
  1888. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/codec/from_object.mjs +42 -0
  1889. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/codec/from_record.d.mts +2 -0
  1890. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/codec/from_record.mjs +39 -0
  1891. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/codec/from_ref.d.mts +2 -0
  1892. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/codec/from_ref.mjs +31 -0
  1893. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/codec/from_tuple.d.mts +2 -0
  1894. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/codec/from_tuple.mjs +32 -0
  1895. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/codec/from_type.d.mts +2 -0
  1896. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/codec/from_type.mjs +22 -0
  1897. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/codec/from_union.d.mts +2 -0
  1898. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/codec/from_union.mjs +39 -0
  1899. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/codec/has.d.mts +5 -0
  1900. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/codec/has.mjs +93 -0
  1901. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/codec/index.d.mts +3 -0
  1902. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/codec/index.mjs +3 -0
  1903. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/convert/convert.d.mts +13 -0
  1904. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/convert/convert.mjs +15 -0
  1905. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/convert/from_additional.d.mts +6 -0
  1906. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/convert/from_additional.mjs +18 -0
  1907. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/convert/from_array.d.mts +2 -0
  1908. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/convert/from_array.mjs +7 -0
  1909. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/convert/from_bigint.d.mts +2 -0
  1910. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/convert/from_bigint.mjs +6 -0
  1911. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/convert/from_boolean.d.mts +2 -0
  1912. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/convert/from_boolean.mjs +6 -0
  1913. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/convert/from_cyclic.d.mts +2 -0
  1914. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/convert/from_cyclic.mjs +6 -0
  1915. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/convert/from_enum.d.mts +2 -0
  1916. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/convert/from_enum.mjs +6 -0
  1917. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/convert/from_integer.d.mts +2 -0
  1918. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/convert/from_integer.mjs +6 -0
  1919. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/convert/from_intersect.d.mts +2 -0
  1920. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/convert/from_intersect.mjs +8 -0
  1921. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/convert/from_literal.d.mts +2 -0
  1922. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/convert/from_literal.mjs +44 -0
  1923. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/convert/from_null.d.mts +2 -0
  1924. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/convert/from_null.mjs +6 -0
  1925. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/convert/from_number.d.mts +2 -0
  1926. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/convert/from_number.mjs +6 -0
  1927. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/convert/from_object.d.mts +2 -0
  1928. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/convert/from_object.mjs +28 -0
  1929. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/convert/from_record.d.mts +2 -0
  1930. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/convert/from_record.mjs +23 -0
  1931. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/convert/from_ref.d.mts +2 -0
  1932. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/convert/from_ref.mjs +8 -0
  1933. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/convert/from_string.d.mts +2 -0
  1934. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/convert/from_string.mjs +6 -0
  1935. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/convert/from_template_literal.d.mts +2 -0
  1936. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/convert/from_template_literal.mjs +6 -0
  1937. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/convert/from_tuple.d.mts +2 -0
  1938. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/convert/from_tuple.mjs +11 -0
  1939. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/convert/from_type.d.mts +2 -0
  1940. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/convert/from_type.mjs +43 -0
  1941. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/convert/from_undefined.d.mts +2 -0
  1942. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/convert/from_undefined.mjs +6 -0
  1943. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/convert/from_union.d.mts +2 -0
  1944. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/convert/from_union.mjs +13 -0
  1945. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/convert/from_void.d.mts +2 -0
  1946. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/convert/from_void.mjs +6 -0
  1947. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/convert/index.d.mts +1 -0
  1948. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/convert/index.mjs +1 -0
  1949. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/convert/try/index.d.mts +1 -0
  1950. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/convert/try/index.mjs +1 -0
  1951. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/convert/try/try.d.mts +8 -0
  1952. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/convert/try/try.mjs +8 -0
  1953. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/convert/try/try_array.d.mts +2 -0
  1954. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/convert/try/try_array.mjs +6 -0
  1955. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/convert/try/try_bigint.d.mts +2 -0
  1956. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/convert/try/try_bigint.mjs +45 -0
  1957. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/convert/try/try_boolean.d.mts +2 -0
  1958. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/convert/try/try_boolean.mjs +41 -0
  1959. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/convert/try/try_null.d.mts +2 -0
  1960. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/convert/try/try_null.mjs +44 -0
  1961. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/convert/try/try_number.d.mts +2 -0
  1962. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/convert/try/try_number.mjs +44 -0
  1963. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/convert/try/try_result.d.mts +8 -0
  1964. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/convert/try/try_result.mjs +17 -0
  1965. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/convert/try/try_string.d.mts +2 -0
  1966. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/convert/try/try_string.mjs +12 -0
  1967. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/convert/try/try_undefined.d.mts +2 -0
  1968. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/convert/try/try_undefined.mjs +44 -0
  1969. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/create/create.d.mts +5 -0
  1970. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/create/create.mjs +11 -0
  1971. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/create/error.d.mts +5 -0
  1972. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/create/error.mjs +7 -0
  1973. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/create/from_array.d.mts +2 -0
  1974. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/create/from_array.mjs +10 -0
  1975. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/create/from_bigint.d.mts +2 -0
  1976. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/create/from_bigint.mjs +7 -0
  1977. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/create/from_boolean.d.mts +2 -0
  1978. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/create/from_boolean.mjs +4 -0
  1979. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/create/from_constructor.d.mts +2 -0
  1980. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/create/from_constructor.mjs +10 -0
  1981. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/create/from_cyclic.d.mts +2 -0
  1982. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/create/from_cyclic.mjs +6 -0
  1983. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/create/from_default.d.mts +3 -0
  1984. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/create/from_default.mjs +10 -0
  1985. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/create/from_enum.d.mts +2 -0
  1986. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/create/from_enum.mjs +6 -0
  1987. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/create/from_function.d.mts +2 -0
  1988. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/create/from_function.mjs +6 -0
  1989. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/create/from_integer.d.mts +2 -0
  1990. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/create/from_integer.mjs +8 -0
  1991. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/create/from_intersect.d.mts +2 -0
  1992. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/create/from_intersect.mjs +8 -0
  1993. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/create/from_literal.d.mts +2 -0
  1994. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/create/from_literal.mjs +4 -0
  1995. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/create/from_never.d.mts +2 -0
  1996. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/create/from_never.mjs +5 -0
  1997. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/create/from_null.d.mts +2 -0
  1998. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/create/from_null.mjs +4 -0
  1999. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/create/from_number.d.mts +2 -0
  2000. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/create/from_number.mjs +8 -0
  2001. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/create/from_object.d.mts +2 -0
  2002. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/create/from_object.mjs +9 -0
  2003. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/create/from_record.d.mts +2 -0
  2004. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/create/from_record.mjs +8 -0
  2005. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/create/from_ref.d.mts +2 -0
  2006. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/create/from_ref.mjs +9 -0
  2007. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/create/from_string.d.mts +2 -0
  2008. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/create/from_string.mjs +9 -0
  2009. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/create/from_symbol.d.mts +2 -0
  2010. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/create/from_symbol.mjs +4 -0
  2011. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/create/from_template_literal.d.mts +2 -0
  2012. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/create/from_template_literal.mjs +11 -0
  2013. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/create/from_tuple.d.mts +2 -0
  2014. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/create/from_tuple.mjs +5 -0
  2015. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/create/from_type.d.mts +2 -0
  2016. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/create/from_type.mjs +61 -0
  2017. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/create/from_undefined.d.mts +2 -0
  2018. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/create/from_undefined.mjs +4 -0
  2019. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/create/from_union.d.mts +2 -0
  2020. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/create/from_union.mjs +9 -0
  2021. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/create/from_void.d.mts +2 -0
  2022. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/create/from_void.mjs +4 -0
  2023. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/create/index.d.mts +2 -0
  2024. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/create/index.mjs +2 -0
  2025. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/default/default.d.mts +13 -0
  2026. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/default/default.mjs +15 -0
  2027. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/default/from_array.d.mts +2 -0
  2028. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/default/from_array.mjs +12 -0
  2029. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/default/from_cyclic.d.mts +2 -0
  2030. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/default/from_cyclic.mjs +7 -0
  2031. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/default/from_default.d.mts +3 -0
  2032. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/default/from_default.mjs +13 -0
  2033. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/default/from_intersect.d.mts +2 -0
  2034. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/default/from_intersect.mjs +9 -0
  2035. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/default/from_object.d.mts +2 -0
  2036. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/default/from_object.mjs +32 -0
  2037. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/default/from_record.d.mts +2 -0
  2038. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/default/from_record.mjs +26 -0
  2039. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/default/from_ref.d.mts +2 -0
  2040. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/default/from_ref.mjs +9 -0
  2041. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/default/from_tuple.d.mts +2 -0
  2042. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/default/from_tuple.mjs +14 -0
  2043. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/default/from_type.d.mts +2 -0
  2044. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/default/from_type.mjs +25 -0
  2045. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/default/from_union.d.mts +2 -0
  2046. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/default/from_union.mjs +14 -0
  2047. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/default/index.d.mts +1 -0
  2048. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/default/index.mjs +1 -0
  2049. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/delta/diff.d.mts +10 -0
  2050. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/delta/diff.mjs +135 -0
  2051. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/delta/edit.d.mts +24 -0
  2052. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/delta/edit.mjs +17 -0
  2053. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/delta/index.d.mts +3 -0
  2054. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/delta/index.mjs +3 -0
  2055. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/delta/patch.d.mts +8 -0
  2056. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/delta/patch.mjs +42 -0
  2057. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/equal/equal.d.mts +2 -0
  2058. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/equal/equal.mjs +6 -0
  2059. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/equal/index.d.mts +1 -0
  2060. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/equal/index.mjs +1 -0
  2061. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/errors/errors.d.mts +16 -0
  2062. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/errors/errors.mjs +17 -0
  2063. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/errors/index.d.mts +1 -0
  2064. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/errors/index.mjs +1 -0
  2065. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/hash/hash.d.mts +6 -0
  2066. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/hash/hash.mjs +10 -0
  2067. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/hash/index.d.mts +1 -0
  2068. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/hash/index.mjs +1 -0
  2069. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/index.d.mts +20 -0
  2070. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/index.mjs +29 -0
  2071. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/parse/index.d.mts +1 -0
  2072. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/parse/index.mjs +1 -0
  2073. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/parse/parse.d.mts +11 -0
  2074. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/parse/parse.mjs +47 -0
  2075. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/pipeline/index.d.mts +1 -0
  2076. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/pipeline/index.mjs +1 -0
  2077. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/pipeline/pipeline.d.mts +10 -0
  2078. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/pipeline/pipeline.mjs +15 -0
  2079. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/pointer/index.d.mts +1 -0
  2080. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/pointer/index.mjs +1 -0
  2081. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/repair/error.d.mts +7 -0
  2082. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/repair/error.mjs +8 -0
  2083. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/repair/from_array.d.mts +2 -0
  2084. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/repair/from_array.mjs +39 -0
  2085. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/repair/from_enum.d.mts +2 -0
  2086. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/repair/from_enum.mjs +6 -0
  2087. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/repair/from_intersect.d.mts +2 -0
  2088. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/repair/from_intersect.mjs +8 -0
  2089. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/repair/from_object.d.mts +2 -0
  2090. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/repair/from_object.mjs +33 -0
  2091. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/repair/from_record.d.mts +2 -0
  2092. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/repair/from_record.mjs +33 -0
  2093. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/repair/from_ref.d.mts +2 -0
  2094. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/repair/from_ref.mjs +9 -0
  2095. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/repair/from_template_literal.d.mts +2 -0
  2096. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/repair/from_template_literal.mjs +7 -0
  2097. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/repair/from_tuple.d.mts +2 -0
  2098. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/repair/from_tuple.mjs +12 -0
  2099. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/repair/from_type.d.mts +2 -0
  2100. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/repair/from_type.mjs +88 -0
  2101. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/repair/from_union.d.mts +2 -0
  2102. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/repair/from_union.mjs +24 -0
  2103. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/repair/from_unknown.d.mts +2 -0
  2104. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/repair/from_unknown.mjs +12 -0
  2105. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/repair/index.d.mts +1 -0
  2106. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/repair/index.mjs +1 -0
  2107. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/repair/repair.d.mts +17 -0
  2108. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/repair/repair.mjs +20 -0
  2109. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/shared/index.d.mts +3 -0
  2110. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/shared/index.mjs +4 -0
  2111. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/shared/optional_undefined.d.mts +2 -0
  2112. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/shared/optional_undefined.mjs +15 -0
  2113. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/shared/union_priority_sort.d.mts +7 -0
  2114. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/shared/union_priority_sort.mjs +72 -0
  2115. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/shared/union_score_select.d.mts +3 -0
  2116. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/shared/union_score_select.mjs +51 -0
  2117. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/value.d.mts +15 -0
  2118. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/build/value/value.mjs +15 -0
  2119. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/license +23 -0
  2120. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/package.json +87 -0
  2121. package/node_modules/@earendil-works/pi-protocol/node_modules/typebox/readme.md +370 -0
  2122. package/node_modules/@earendil-works/pi-protocol/package.json +48 -0
  2123. package/node_modules/@earendil-works/pi-telemetry/README.md +464 -0
  2124. package/node_modules/@earendil-works/pi-telemetry/dist/index.d.ts +194 -0
  2125. package/node_modules/@earendil-works/pi-telemetry/dist/index.d.ts.map +1 -0
  2126. package/node_modules/@earendil-works/pi-telemetry/dist/index.js +18 -0
  2127. package/node_modules/@earendil-works/pi-telemetry/dist/index.js.map +1 -0
  2128. package/node_modules/@earendil-works/pi-telemetry/dist/memory.d.ts +26 -0
  2129. package/node_modules/@earendil-works/pi-telemetry/dist/memory.d.ts.map +1 -0
  2130. package/node_modules/@earendil-works/pi-telemetry/dist/memory.js +154 -0
  2131. package/node_modules/@earendil-works/pi-telemetry/dist/memory.js.map +1 -0
  2132. package/node_modules/@earendil-works/pi-telemetry/dist/noop.d.ts +4 -0
  2133. package/node_modules/@earendil-works/pi-telemetry/dist/noop.d.ts.map +1 -0
  2134. package/node_modules/@earendil-works/pi-telemetry/dist/noop.js +18 -0
  2135. package/node_modules/@earendil-works/pi-telemetry/dist/noop.js.map +1 -0
  2136. package/node_modules/@earendil-works/pi-telemetry/dist/testing/conformance.d.ts +4 -0
  2137. package/node_modules/@earendil-works/pi-telemetry/dist/testing/conformance.d.ts.map +1 -0
  2138. package/node_modules/@earendil-works/pi-telemetry/dist/testing/conformance.js +294 -0
  2139. package/node_modules/@earendil-works/pi-telemetry/dist/testing/conformance.js.map +1 -0
  2140. package/node_modules/@earendil-works/pi-telemetry/dist/testing/index.d.ts +3 -0
  2141. package/node_modules/@earendil-works/pi-telemetry/dist/testing/index.d.ts.map +1 -0
  2142. package/node_modules/@earendil-works/pi-telemetry/dist/testing/index.js +2 -0
  2143. package/node_modules/@earendil-works/pi-telemetry/dist/testing/index.js.map +1 -0
  2144. package/node_modules/@earendil-works/pi-telemetry/dist/testing/types.d.ts +16 -0
  2145. package/node_modules/@earendil-works/pi-telemetry/dist/testing/types.d.ts.map +1 -0
  2146. package/node_modules/@earendil-works/pi-telemetry/dist/testing/types.js +2 -0
  2147. package/node_modules/@earendil-works/pi-telemetry/dist/testing/types.js.map +1 -0
  2148. package/node_modules/@earendil-works/pi-telemetry/package.json +47 -0
  2149. package/node_modules/@earendil-works/pi-tui/README.md +77 -14
  2150. package/node_modules/@earendil-works/pi-tui/dist/components/alt-screen-flash.d.ts +13 -0
  2151. package/node_modules/@earendil-works/pi-tui/dist/components/alt-screen-flash.d.ts.map +1 -0
  2152. package/node_modules/@earendil-works/pi-tui/dist/components/alt-screen-flash.js +37 -0
  2153. package/node_modules/@earendil-works/pi-tui/dist/components/alt-screen-flash.js.map +1 -0
  2154. package/node_modules/@earendil-works/pi-tui/dist/components/editor.d.ts.map +1 -1
  2155. package/node_modules/@earendil-works/pi-tui/dist/components/editor.js +11 -0
  2156. package/node_modules/@earendil-works/pi-tui/dist/components/editor.js.map +1 -1
  2157. package/node_modules/@earendil-works/pi-tui/dist/components/h-stack.d.ts +7 -0
  2158. package/node_modules/@earendil-works/pi-tui/dist/components/h-stack.d.ts.map +1 -0
  2159. package/node_modules/@earendil-works/pi-tui/dist/components/h-stack.js +43 -0
  2160. package/node_modules/@earendil-works/pi-tui/dist/components/h-stack.js.map +1 -0
  2161. package/node_modules/@earendil-works/pi-tui/dist/components/markdown.d.ts +4 -0
  2162. package/node_modules/@earendil-works/pi-tui/dist/components/markdown.d.ts.map +1 -1
  2163. package/node_modules/@earendil-works/pi-tui/dist/components/markdown.js +128 -2
  2164. package/node_modules/@earendil-works/pi-tui/dist/components/markdown.js.map +1 -1
  2165. package/node_modules/@earendil-works/pi-tui/dist/components/scroll-view.d.ts +51 -0
  2166. package/node_modules/@earendil-works/pi-tui/dist/components/scroll-view.d.ts.map +1 -0
  2167. package/node_modules/@earendil-works/pi-tui/dist/components/scroll-view.js +173 -0
  2168. package/node_modules/@earendil-works/pi-tui/dist/components/scroll-view.js.map +1 -0
  2169. package/node_modules/@earendil-works/pi-tui/dist/components/settings-list.d.ts.map +1 -1
  2170. package/node_modules/@earendil-works/pi-tui/dist/components/settings-list.js +3 -6
  2171. package/node_modules/@earendil-works/pi-tui/dist/components/settings-list.js.map +1 -1
  2172. package/node_modules/@earendil-works/pi-tui/dist/components/stack.d.ts +32 -0
  2173. package/node_modules/@earendil-works/pi-tui/dist/components/stack.d.ts.map +1 -0
  2174. package/node_modules/@earendil-works/pi-tui/dist/components/stack.js +111 -0
  2175. package/node_modules/@earendil-works/pi-tui/dist/components/stack.js.map +1 -0
  2176. package/node_modules/@earendil-works/pi-tui/dist/components/v-stack.d.ts +8 -0
  2177. package/node_modules/@earendil-works/pi-tui/dist/components/v-stack.d.ts.map +1 -0
  2178. package/node_modules/@earendil-works/pi-tui/dist/components/v-stack.js +26 -0
  2179. package/node_modules/@earendil-works/pi-tui/dist/components/v-stack.js.map +1 -0
  2180. package/node_modules/@earendil-works/pi-tui/dist/index.d.ts +9 -2
  2181. package/node_modules/@earendil-works/pi-tui/dist/index.d.ts.map +1 -1
  2182. package/node_modules/@earendil-works/pi-tui/dist/index.js +10 -2
  2183. package/node_modules/@earendil-works/pi-tui/dist/index.js.map +1 -1
  2184. package/node_modules/@earendil-works/pi-tui/dist/keybindings.d.ts +54 -4
  2185. package/node_modules/@earendil-works/pi-tui/dist/keybindings.d.ts.map +1 -1
  2186. package/node_modules/@earendil-works/pi-tui/dist/keybindings.js +39 -4
  2187. package/node_modules/@earendil-works/pi-tui/dist/keybindings.js.map +1 -1
  2188. package/node_modules/@earendil-works/pi-tui/dist/latex.d.ts +10 -0
  2189. package/node_modules/@earendil-works/pi-tui/dist/latex.d.ts.map +1 -0
  2190. package/node_modules/@earendil-works/pi-tui/dist/latex.js +1264 -0
  2191. package/node_modules/@earendil-works/pi-tui/dist/latex.js.map +1 -0
  2192. package/node_modules/@earendil-works/pi-tui/dist/layout-node.d.ts +40 -0
  2193. package/node_modules/@earendil-works/pi-tui/dist/layout-node.d.ts.map +1 -0
  2194. package/node_modules/@earendil-works/pi-tui/dist/layout-node.js +6 -0
  2195. package/node_modules/@earendil-works/pi-tui/dist/layout-node.js.map +1 -0
  2196. package/node_modules/@earendil-works/pi-tui/dist/layout.d.ts +40 -0
  2197. package/node_modules/@earendil-works/pi-tui/dist/layout.d.ts.map +1 -0
  2198. package/node_modules/@earendil-works/pi-tui/dist/layout.js +314 -0
  2199. package/node_modules/@earendil-works/pi-tui/dist/layout.js.map +1 -0
  2200. package/node_modules/@earendil-works/pi-tui/dist/native-modifiers.d.ts.map +1 -1
  2201. package/node_modules/@earendil-works/pi-tui/dist/native-modifiers.js +10 -3
  2202. package/node_modules/@earendil-works/pi-tui/dist/native-modifiers.js.map +1 -1
  2203. package/node_modules/@earendil-works/pi-tui/dist/terminal-colors.d.ts.map +1 -1
  2204. package/node_modules/@earendil-works/pi-tui/dist/terminal-colors.js +1 -1
  2205. package/node_modules/@earendil-works/pi-tui/dist/terminal-colors.js.map +1 -1
  2206. package/node_modules/@earendil-works/pi-tui/dist/terminal-image.d.ts +21 -0
  2207. package/node_modules/@earendil-works/pi-tui/dist/terminal-image.d.ts.map +1 -1
  2208. package/node_modules/@earendil-works/pi-tui/dist/terminal-image.js +128 -3
  2209. package/node_modules/@earendil-works/pi-tui/dist/terminal-image.js.map +1 -1
  2210. package/node_modules/@earendil-works/pi-tui/dist/terminal.d.ts +1 -0
  2211. package/node_modules/@earendil-works/pi-tui/dist/terminal.d.ts.map +1 -1
  2212. package/node_modules/@earendil-works/pi-tui/dist/terminal.js +10 -7
  2213. package/node_modules/@earendil-works/pi-tui/dist/terminal.js.map +1 -1
  2214. package/node_modules/@earendil-works/pi-tui/dist/tui-alt-screen.d.ts +97 -0
  2215. package/node_modules/@earendil-works/pi-tui/dist/tui-alt-screen.d.ts.map +1 -0
  2216. package/node_modules/@earendil-works/pi-tui/dist/tui-alt-screen.js +902 -0
  2217. package/node_modules/@earendil-works/pi-tui/dist/tui-alt-screen.js.map +1 -0
  2218. package/node_modules/@earendil-works/pi-tui/dist/tui-main-screen.d.ts +39 -0
  2219. package/node_modules/@earendil-works/pi-tui/dist/tui-main-screen.d.ts.map +1 -0
  2220. package/node_modules/@earendil-works/pi-tui/dist/tui-main-screen.js +533 -0
  2221. package/node_modules/@earendil-works/pi-tui/dist/tui-main-screen.js.map +1 -0
  2222. package/node_modules/@earendil-works/pi-tui/dist/tui.d.ts +75 -38
  2223. package/node_modules/@earendil-works/pi-tui/dist/tui.d.ts.map +1 -1
  2224. package/node_modules/@earendil-works/pi-tui/dist/tui.js +98 -573
  2225. package/node_modules/@earendil-works/pi-tui/dist/tui.js.map +1 -1
  2226. package/node_modules/@earendil-works/pi-tui/dist/utils.d.ts +11 -0
  2227. package/node_modules/@earendil-works/pi-tui/dist/utils.d.ts.map +1 -1
  2228. package/node_modules/@earendil-works/pi-tui/dist/utils.js +119 -6
  2229. package/node_modules/@earendil-works/pi-tui/dist/utils.js.map +1 -1
  2230. package/node_modules/@earendil-works/pi-tui/native/darwin/README.md +20 -0
  2231. package/node_modules/@earendil-works/pi-tui/native/darwin/build.sh +62 -0
  2232. package/node_modules/@earendil-works/pi-tui/native/darwin/src/darwin-modifiers.c +70 -0
  2233. package/node_modules/@earendil-works/pi-tui/native/win32/README.md +22 -0
  2234. package/node_modules/@earendil-works/pi-tui/native/win32/build.mjs +229 -0
  2235. package/node_modules/@earendil-works/pi-tui/native/win32/prebuilds/win32-arm64/win32-console-mode.node +0 -0
  2236. package/node_modules/@earendil-works/pi-tui/native/win32/prebuilds/win32-x64/win32-console-mode.node +0 -0
  2237. package/node_modules/@earendil-works/pi-tui/native/win32/src/win32-console-mode.c +119 -0
  2238. package/node_modules/@earendil-works/pi-tui/package.json +9 -1
  2239. package/node_modules/@types/node/README.md +1 -1
  2240. package/node_modules/@types/node/child_process.d.ts +0 -1
  2241. package/node_modules/@types/node/crypto.d.ts +6 -6
  2242. package/node_modules/@types/node/dns/promises.d.ts +5 -5
  2243. package/node_modules/@types/node/dns.d.ts +5 -5
  2244. package/node_modules/@types/node/fs.d.ts +7 -0
  2245. package/node_modules/@types/node/http.d.ts +30 -0
  2246. package/node_modules/@types/node/http2.d.ts +4 -4
  2247. package/node_modules/@types/node/os.d.ts +30 -30
  2248. package/node_modules/@types/node/package.json +2 -2
  2249. package/node_modules/@types/node/perf_hooks.d.ts +2 -1
  2250. package/node_modules/@types/node/process.d.ts +42 -43
  2251. package/node_modules/@types/node/quic.d.ts +1049 -84
  2252. package/node_modules/@types/node/sqlite.d.ts +14 -1
  2253. package/node_modules/@types/node/stream/iter.d.ts +3 -2
  2254. package/node_modules/@types/node/test.d.ts +61 -0
  2255. package/node_modules/@types/node/v8.d.ts +20 -23
  2256. package/node_modules/grok-mermaid/CHANGELOG.md +40 -0
  2257. package/node_modules/grok-mermaid/LICENSE +205 -0
  2258. package/node_modules/grok-mermaid/README.md +191 -0
  2259. package/node_modules/grok-mermaid/dist/ansi.d.ts +16 -0
  2260. package/node_modules/grok-mermaid/dist/ansi.d.ts.map +1 -0
  2261. package/node_modules/grok-mermaid/dist/ansi.js +23 -0
  2262. package/node_modules/grok-mermaid/dist/ansi.js.map +1 -0
  2263. package/node_modules/grok-mermaid/dist/canvas.d.ts +87 -0
  2264. package/node_modules/grok-mermaid/dist/canvas.d.ts.map +1 -0
  2265. package/node_modules/grok-mermaid/dist/canvas.js +366 -0
  2266. package/node_modules/grok-mermaid/dist/canvas.js.map +1 -0
  2267. package/node_modules/grok-mermaid/dist/graph.d.ts +74 -0
  2268. package/node_modules/grok-mermaid/dist/graph.d.ts.map +1 -0
  2269. package/node_modules/grok-mermaid/dist/graph.js +91 -0
  2270. package/node_modules/grok-mermaid/dist/graph.js.map +1 -0
  2271. package/node_modules/grok-mermaid/dist/index.d.ts +32 -0
  2272. package/node_modules/grok-mermaid/dist/index.d.ts.map +1 -0
  2273. package/node_modules/grok-mermaid/dist/index.js +100 -0
  2274. package/node_modules/grok-mermaid/dist/index.js.map +1 -0
  2275. package/node_modules/grok-mermaid/dist/labels.d.ts +62 -0
  2276. package/node_modules/grok-mermaid/dist/labels.d.ts.map +1 -0
  2277. package/node_modules/grok-mermaid/dist/labels.js +324 -0
  2278. package/node_modules/grok-mermaid/dist/labels.js.map +1 -0
  2279. package/node_modules/grok-mermaid/dist/layout-seq.d.ts +12 -0
  2280. package/node_modules/grok-mermaid/dist/layout-seq.d.ts.map +1 -0
  2281. package/node_modules/grok-mermaid/dist/layout-seq.js +194 -0
  2282. package/node_modules/grok-mermaid/dist/layout-seq.js.map +1 -0
  2283. package/node_modules/grok-mermaid/dist/layout.d.ts +87 -0
  2284. package/node_modules/grok-mermaid/dist/layout.d.ts.map +1 -0
  2285. package/node_modules/grok-mermaid/dist/layout.js +881 -0
  2286. package/node_modules/grok-mermaid/dist/layout.js.map +1 -0
  2287. package/node_modules/grok-mermaid/dist/parse.d.ts +83 -0
  2288. package/node_modules/grok-mermaid/dist/parse.d.ts.map +1 -0
  2289. package/node_modules/grok-mermaid/dist/parse.js +1108 -0
  2290. package/node_modules/grok-mermaid/dist/parse.js.map +1 -0
  2291. package/node_modules/grok-mermaid/dist/source-box.d.ts +18 -0
  2292. package/node_modules/grok-mermaid/dist/source-box.d.ts.map +1 -0
  2293. package/node_modules/grok-mermaid/dist/source-box.js +78 -0
  2294. package/node_modules/grok-mermaid/dist/source-box.js.map +1 -0
  2295. package/node_modules/grok-mermaid/dist/types.d.ts +42 -0
  2296. package/node_modules/grok-mermaid/dist/types.d.ts.map +1 -0
  2297. package/node_modules/grok-mermaid/dist/types.js +1 -0
  2298. package/node_modules/grok-mermaid/dist/types.js.map +1 -0
  2299. package/node_modules/grok-mermaid/dist/width-data.d.ts +2 -0
  2300. package/node_modules/grok-mermaid/dist/width-data.d.ts.map +1 -0
  2301. package/node_modules/grok-mermaid/dist/width-data.js +994 -0
  2302. package/node_modules/grok-mermaid/dist/width-data.js.map +1 -0
  2303. package/node_modules/grok-mermaid/dist/width.d.ts +18 -0
  2304. package/node_modules/grok-mermaid/dist/width.d.ts.map +1 -0
  2305. package/node_modules/grok-mermaid/dist/width.js +76 -0
  2306. package/node_modules/grok-mermaid/dist/width.js.map +1 -0
  2307. package/node_modules/grok-mermaid/package.json +49 -0
  2308. package/node_modules/grok-mermaid/src/ansi.ts +34 -0
  2309. package/node_modules/grok-mermaid/src/canvas.ts +373 -0
  2310. package/node_modules/grok-mermaid/src/graph.ts +142 -0
  2311. package/node_modules/grok-mermaid/src/index.ts +104 -0
  2312. package/node_modules/grok-mermaid/src/labels.ts +326 -0
  2313. package/node_modules/grok-mermaid/src/layout-seq.ts +203 -0
  2314. package/node_modules/grok-mermaid/src/layout.ts +1015 -0
  2315. package/node_modules/grok-mermaid/src/parse.ts +1150 -0
  2316. package/node_modules/grok-mermaid/src/source-box.ts +89 -0
  2317. package/node_modules/grok-mermaid/src/types.ts +43 -0
  2318. package/node_modules/grok-mermaid/src/width-data.ts +993 -0
  2319. package/node_modules/grok-mermaid/src/width.ts +74 -0
  2320. package/node_modules/undici/README.md +8 -2
  2321. package/node_modules/undici/docs/docs/api/Agent.md +248 -44
  2322. package/node_modules/undici/docs/docs/api/BalancedPool.md +246 -48
  2323. package/node_modules/undici/docs/docs/api/CacheStorage.md +171 -13
  2324. package/node_modules/undici/docs/docs/api/CacheStore.md +294 -98
  2325. package/node_modules/undici/docs/docs/api/Client.md +369 -179
  2326. package/node_modules/undici/docs/docs/api/ClientStats.md +80 -14
  2327. package/node_modules/undici/docs/docs/api/Connector.md +118 -36
  2328. package/node_modules/undici/docs/docs/api/ContentType.md +65 -25
  2329. package/node_modules/undici/docs/docs/api/Cookies.md +122 -71
  2330. package/node_modules/undici/docs/docs/api/Debug.md +34 -18
  2331. package/node_modules/undici/docs/docs/api/DiagnosticsChannel.md +364 -164
  2332. package/node_modules/undici/docs/docs/api/Dispatcher.md +485 -1102
  2333. package/node_modules/undici/docs/docs/api/EnvHttpProxyAgent.md +101 -87
  2334. package/node_modules/undici/docs/docs/api/Errors.md +503 -40
  2335. package/node_modules/undici/docs/docs/api/EventSource.md +294 -32
  2336. package/node_modules/undici/docs/docs/api/Fetch.md +680 -31
  2337. package/node_modules/undici/docs/docs/api/GlobalInstallation.md +78 -98
  2338. package/node_modules/undici/docs/docs/api/H2CClient.md +298 -176
  2339. package/node_modules/undici/docs/docs/api/Interceptors.md +414 -0
  2340. package/node_modules/undici/docs/docs/api/MockAgent.md +333 -314
  2341. package/node_modules/undici/docs/docs/api/MockCallHistory.md +272 -98
  2342. package/node_modules/undici/docs/docs/api/MockCallHistoryLog.md +189 -26
  2343. package/node_modules/undici/docs/docs/api/MockClient.md +151 -33
  2344. package/node_modules/undici/docs/docs/api/MockErrors.md +56 -5
  2345. package/node_modules/undici/docs/docs/api/MockPool.md +321 -258
  2346. package/node_modules/undici/docs/docs/api/Pool.md +235 -43
  2347. package/node_modules/undici/docs/docs/api/PoolStats.md +119 -13
  2348. package/node_modules/undici/docs/docs/api/ProxyAgent.md +179 -160
  2349. package/node_modules/undici/docs/docs/api/RedirectHandler.md +238 -63
  2350. package/node_modules/undici/docs/docs/api/RetryAgent.md +113 -26
  2351. package/node_modules/undici/docs/docs/api/RetryHandler.md +161 -77
  2352. package/node_modules/undici/docs/docs/api/RoundRobinPool.md +166 -72
  2353. package/node_modules/undici/docs/docs/api/SnapshotAgent.md +264 -542
  2354. package/node_modules/undici/docs/docs/api/Socks5ProxyAgent.md +162 -187
  2355. package/node_modules/undici/docs/docs/api/Util.md +68 -11
  2356. package/node_modules/undici/docs/docs/api/WebSocket.md +475 -80
  2357. package/node_modules/undici/docs/docs/api/api-lifecycle.md +100 -32
  2358. package/node_modules/undici/docs/docs/best-practices/client-certificate.md +2 -0
  2359. package/node_modules/undici/docs/docs/best-practices/crawling.md +3 -1
  2360. package/node_modules/undici/docs/docs/best-practices/migrating-from-v7-to-v8.md +6 -4
  2361. package/node_modules/undici/docs/docs/best-practices/mocking-request.md +9 -7
  2362. package/node_modules/undici/docs/docs/best-practices/proxy.md +3 -1
  2363. package/node_modules/undici/docs/docs/best-practices/undici-vs-builtin-fetch.md +10 -8
  2364. package/node_modules/undici/docs/docs/best-practices/writing-tests.md +2 -0
  2365. package/node_modules/undici/docs/docs/{GettingStarted.md → getting-started.md} +22 -19
  2366. package/node_modules/undici/docs/docs/index.md +784 -0
  2367. package/node_modules/undici/docs/docs/site.json +125 -0
  2368. package/node_modules/undici/docs/docs/type-map.json +79 -0
  2369. package/node_modules/undici/lib/api/api-request.js +7 -1
  2370. package/node_modules/undici/lib/api/readable.js +47 -2
  2371. package/node_modules/undici/lib/cache/memory-cache-store.js +54 -9
  2372. package/node_modules/undici/lib/cache/sqlite-cache-store.js +7 -1
  2373. package/node_modules/undici/lib/core/errors.js +20 -0
  2374. package/node_modules/undici/lib/core/request.js +14 -3
  2375. package/node_modules/undici/lib/core/util.js +30 -2
  2376. package/node_modules/undici/lib/dispatcher/agent.js +3 -3
  2377. package/node_modules/undici/lib/dispatcher/client-h1.js +65 -8
  2378. package/node_modules/undici/lib/dispatcher/client-h2.js +265 -142
  2379. package/node_modules/undici/lib/dispatcher/proxy-agent.js +40 -6
  2380. package/node_modules/undici/lib/global.js +36 -16
  2381. package/node_modules/undici/lib/handler/cache-handler.js +269 -61
  2382. package/node_modules/undici/lib/handler/cache-revalidation-handler.js +13 -3
  2383. package/node_modules/undici/lib/handler/redirect-handler.js +6 -2
  2384. package/node_modules/undici/lib/handler/retry-handler.js +87 -23
  2385. package/node_modules/undici/lib/interceptor/cache.js +159 -52
  2386. package/node_modules/undici/lib/interceptor/decompress.js +9 -2
  2387. package/node_modules/undici/lib/mock/mock-interceptor.js +25 -7
  2388. package/node_modules/undici/lib/mock/mock-utils.js +39 -10
  2389. package/node_modules/undici/lib/util/cache.js +372 -68
  2390. package/node_modules/undici/lib/util/date.js +23 -6
  2391. package/node_modules/undici/lib/web/cookies/parse.js +3 -2
  2392. package/node_modules/undici/lib/web/cookies/util.js +79 -9
  2393. package/node_modules/undici/lib/web/eventsource/util.js +1 -1
  2394. package/node_modules/undici/lib/web/fetch/body.js +2 -1
  2395. package/node_modules/undici/lib/web/fetch/constants.js +1 -1
  2396. package/node_modules/undici/lib/web/fetch/index.js +11 -2
  2397. package/node_modules/undici/lib/web/fetch/response.js +1 -3
  2398. package/node_modules/undici/lib/web/fetch/util.js +4 -1
  2399. package/node_modules/undici/package.json +2 -2
  2400. package/node_modules/undici/types/client.d.ts +3 -3
  2401. package/node_modules/undici/types/cookies.d.ts +1 -1
  2402. package/node_modules/undici/types/dispatcher.d.ts +3 -3
  2403. package/node_modules/undici/types/errors.d.ts +10 -0
  2404. package/node_modules/undici/types/handlers.d.ts +2 -0
  2405. package/node_modules/undici/types/mock-interceptor.d.ts +5 -1
  2406. package/node_modules/undici/types/proxy-agent.d.ts +7 -0
  2407. package/package.json +8 -8
  2408. package/src/prism-extensions/integrations/ai-memory-errors.ts +53 -0
  2409. package/src/prism-extensions/integrations/ai-memory-system.ts +357 -8
  2410. package/src/prism-extensions/integrations/research-tools.ts +4 -2
  2411. package/src/prism-extensions/integrations/youtube.ts +292 -0
  2412. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl-repo.d.ts +0 -26
  2413. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl-repo.d.ts.map +0 -1
  2414. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl-repo.js +0 -103
  2415. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl-repo.js.map +0 -1
  2416. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl-storage.d.ts +0 -42
  2417. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl-storage.d.ts.map +0 -1
  2418. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl-storage.js +0 -293
  2419. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl-storage.js.map +0 -1
  2420. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/memory-repo.d.ts +0 -18
  2421. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/memory-repo.d.ts.map +0 -1
  2422. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/memory-repo.js +0 -42
  2423. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/memory-repo.js.map +0 -1
  2424. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/memory-storage.d.ts +0 -33
  2425. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/memory-storage.d.ts.map +0 -1
  2426. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/memory-storage.js +0 -168
  2427. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/memory-storage.js.map +0 -1
  2428. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/repo-utils.d.ts +0 -11
  2429. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/repo-utils.d.ts.map +0 -1
  2430. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/repo-utils.js +0 -39
  2431. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/repo-utils.js.map +0 -1
@@ -6,7 +6,8 @@ import * as crypto from "node:crypto";
6
6
  import * as fs from "node:fs";
7
7
  import * as os from "node:os";
8
8
  import * as path from "node:path";
9
- import { CombinedAutocompleteProvider, Container, fuzzyFilter, getCapabilities, hyperlink, Markdown, matchesKey, ProcessTerminal, Spacer, setKeybindings, Text, TruncatedText, TUI, visibleWidth, } from "@earendil-works/pi-tui";
9
+ import * as TuiLayouts from "@earendil-works/pi-tui";
10
+ import { CombinedAutocompleteProvider, Container, fuzzyFilter, getCapabilities, hyperlink, Markdown, matchesKey, ProcessTerminal, Spacer, setKeybindings, Text, TruncatedText, TuiAltScreen, TuiMainScreen, visibleWidth, } from "@earendil-works/pi-tui";
10
11
  import chalk from "chalk";
11
12
  import { spawn, spawnSync } from "child_process";
12
13
  import { APP_NAME, APP_TITLE, CONFIG_DIR_NAME, getAgentDir, getAuthPath, getDebugLogPath, getDocsPath, getShareViewerUrl, VERSION, } from "../../config.js";
@@ -17,7 +18,8 @@ import { FooterDataProvider } from "../../core/footer-data-provider.js";
17
18
  import { configureHttpDispatcher, formatHttpIdleTimeoutMs } from "../../core/http-dispatcher.js";
18
19
  import { KeybindingsManager } from "../../core/keybindings.js";
19
20
  import { createCompactionSummaryMessage } from "../../core/messages.js";
20
- import { defaultModelPerProvider, findExactModelReferenceMatch, resolveModelScope, resolveModelScopeWithDiagnostics, } from "../../core/model-resolver.js";
21
+ import { defaultModelPerProvider, findExactModelReferenceMatch, resolveModelScopeFromModels, } from "../../core/model-resolver.js";
22
+ import { CredentialSynchronizationError } from "../../core/model-runtime.js";
21
23
  import { DefaultPackageManager } from "../../core/package-manager.js";
22
24
  import { formatMissingSessionCwdPrompt, MissingSessionCwdError } from "../../core/session-cwd.js";
23
25
  import { SessionManager, sessionEntryToContextMessages } from "../../core/session-manager.js";
@@ -29,6 +31,7 @@ import { getChangelogPath, getNewEntries, normalizeChangelogLinks, parseChangelo
29
31
  import { copyToClipboard, readClipboardText } from "../../utils/clipboard.js";
30
32
  import { extensionForImageMimeType, readClipboardImage } from "../../utils/clipboard-image.js";
31
33
  import { parseGitUrl } from "../../utils/git.js";
34
+ import { openBrowser } from "../../utils/open-browser.js";
32
35
  import { getCwdRelativePath } from "../../utils/paths.js";
33
36
  import { getPiUserAgent } from "../../utils/pi-user-agent.js";
34
37
  import { killTrackedDetachedChildren } from "../../utils/shell.js";
@@ -52,6 +55,7 @@ import { ExtensionSelectorComponent } from "./components/extension-selector.js";
52
55
  import { FooterComponent, formatTokens } from "./components/footer.js";
53
56
  import { formatKeyText, keyDisplayText, keyHint, keyText, rawKeyHint } from "./components/keybinding-hints.js";
54
57
  import { LoginDialogComponent } from "./components/login-dialog.js";
58
+ import { createMermaidMarkdownTransformer } from "./components/mermaid.js";
55
59
  import { ModelSelectorComponent } from "./components/model-selector.js";
56
60
  import { formatAuthSelectorProviderType, OAuthSelectorComponent, } from "./components/oauth-selector.js";
57
61
  import { ScopedModelsSelectorComponent } from "./components/scoped-models-selector.js";
@@ -161,11 +165,58 @@ function formatLoginProviderCompletionDescription(provider) {
161
165
  const authTypes = provider.authTypes.map(formatAuthSelectorProviderType).join("/");
162
166
  return provider.name === provider.id ? authTypes : `${provider.name} · ${authTypes}`;
163
167
  }
168
+ /** Composition root for selecting the interactive terminal renderer. */
169
+ export function createInteractiveTui(options) {
170
+ const terminal = options.terminal ?? new ProcessTerminal();
171
+ if (options.tuiMode === "fullscreen") {
172
+ return new TuiAltScreen(terminal, options.showHardwareCursor, options.logDirectory, {
173
+ openUrl: openBrowser,
174
+ onRightClickPaste: options.onRightClickPaste,
175
+ });
176
+ }
177
+ return new TuiMainScreen(terminal, options.showHardwareCursor, options.logDirectory);
178
+ }
179
+ /** Stable reference for components while InteractiveMode replaces the active renderer. */
180
+ export function createInteractiveTuiReference(getTui) {
181
+ return new Proxy({}, {
182
+ get: (_target, property) => {
183
+ const tui = getTui();
184
+ const value = Reflect.get(tui, property, tui);
185
+ if (typeof value !== "function")
186
+ return value;
187
+ let methodTui = tui;
188
+ let method = value;
189
+ return (...args) => {
190
+ const currentTui = getTui();
191
+ if (currentTui !== methodTui) {
192
+ const currentMethod = Reflect.get(currentTui, property, currentTui);
193
+ if (typeof currentMethod !== "function") {
194
+ throw new TypeError(`TUI property ${String(property)} is not callable`);
195
+ }
196
+ methodTui = currentTui;
197
+ method = currentMethod;
198
+ }
199
+ return Reflect.apply(method, methodTui, args);
200
+ };
201
+ },
202
+ set: (_target, property, value) => {
203
+ const tui = getTui();
204
+ return Reflect.set(tui, property, value, tui);
205
+ },
206
+ has: (_target, property) => Reflect.has(getTui(), property),
207
+ getPrototypeOf: () => Reflect.getPrototypeOf(getTui()),
208
+ });
209
+ }
164
210
  export class InteractiveMode {
165
211
  runtimeHost;
212
+ renderer;
166
213
  ui;
214
+ mainScreenRenderState;
167
215
  loadedResourcesContainer;
168
216
  chatContainer;
217
+ documentContainer;
218
+ transcriptScrollView;
219
+ fullscreenLayoutRoot;
169
220
  pendingMessagesContainer;
170
221
  statusContainer;
171
222
  defaultEditor;
@@ -175,7 +226,10 @@ export class InteractiveMode {
175
226
  autocompleteProviderWrappers = [];
176
227
  fdPath;
177
228
  editorContainer;
229
+ activeSelectorToken;
230
+ activeSelectorDispose;
178
231
  footer;
232
+ footerContainer;
179
233
  footerDataProvider;
180
234
  // Stored so the same manager can be injected into custom editors, selectors, and extension UI.
181
235
  keybindings;
@@ -209,6 +263,10 @@ export class InteractiveMode {
209
263
  // Thinking block visibility state
210
264
  hideThinkingBlock = false;
211
265
  outputPad = 1;
266
+ mermaidMarkdownTransformer = createMermaidMarkdownTransformer({
267
+ getMode: () => this.settingsManager.getMermaidRenderingMode(),
268
+ theme,
269
+ });
212
270
  // Skill commands: command name -> skill file path
213
271
  skillCommands = new Map();
214
272
  // Agent subscription unsubscribe function
@@ -232,7 +290,7 @@ export class InteractiveMode {
232
290
  extensionSelector = undefined;
233
291
  extensionInput = undefined;
234
292
  extensionEditor = undefined;
235
- extensionTerminalInputUnsubscribers = new Set();
293
+ extensionTerminalInputSubscriptions = new Set();
236
294
  // Extension widgets (components rendered above/below the editor)
237
295
  extensionWidgetsAbove = new Map();
238
296
  extensionWidgetsBelow = new Map();
@@ -247,6 +305,9 @@ export class InteractiveMode {
247
305
  // Custom header from extension (undefined = use built-in header)
248
306
  customHeader = undefined;
249
307
  options;
308
+ onRightClickPaste = () => {
309
+ void this.handleRightClickPaste();
310
+ };
250
311
  autoTrustOnReloadCwd;
251
312
  themeController;
252
313
  // Convenience accessors
@@ -264,7 +325,8 @@ export class InteractiveMode {
264
325
  }
265
326
  constructor(runtimeHost, options = {}) {
266
327
  this.runtimeHost = runtimeHost;
267
- this.options = options;
328
+ const tuiMode = options.tuiMode ?? this.settingsManager.getTuiMode();
329
+ this.options = { ...options, tuiMode };
268
330
  this.autoTrustOnReloadCwd = options.autoTrustOnReloadCwd;
269
331
  this.runtimeHost.setBeforeSessionInvalidate(() => {
270
332
  this.resetExtensionUI();
@@ -273,11 +335,21 @@ export class InteractiveMode {
273
335
  await this.rebindCurrentSession({ renderBeforeBind: true });
274
336
  });
275
337
  this.version = VERSION;
276
- this.ui = new TUI(new ProcessTerminal(), this.settingsManager.getShowHardwareCursor(), getAgentDir());
338
+ this.renderer = createInteractiveTui({
339
+ tuiMode,
340
+ showHardwareCursor: this.settingsManager.getShowHardwareCursor(),
341
+ logDirectory: getAgentDir(),
342
+ onRightClickPaste: this.onRightClickPaste,
343
+ });
344
+ this.ui = createInteractiveTuiReference(() => this.renderer);
277
345
  this.ui.setClearOnShrink(this.settingsManager.getClearOnShrink());
278
346
  this.headerContainer = new Container();
279
347
  this.loadedResourcesContainer = new Container();
280
348
  this.chatContainer = new Container();
349
+ this.documentContainer = new Container();
350
+ this.documentContainer.addChild(this.headerContainer);
351
+ this.documentContainer.addChild(this.loadedResourcesContainer);
352
+ this.documentContainer.addChild(this.chatContainer);
281
353
  this.pendingMessagesContainer = new Container();
282
354
  this.statusContainer = new Container();
283
355
  this.widgetContainerAbove = new Container();
@@ -296,6 +368,8 @@ export class InteractiveMode {
296
368
  this.footerDataProvider = new FooterDataProvider(this.sessionManager.getCwd());
297
369
  this.footer = new FooterComponent(this.session, this.footerDataProvider);
298
370
  this.footer.setAutoCompactEnabled(this.session.autoCompactionEnabled);
371
+ this.footerContainer = new Container();
372
+ this.footerContainer.addChild(this.footer);
299
373
  // Load hide thinking block setting
300
374
  this.hideThinkingBlock = this.settingsManager.getHideThinkingBlock();
301
375
  this.outputPad = this.settingsManager.getOutputPad();
@@ -351,11 +425,10 @@ export class InteractiveMode {
351
425
  }));
352
426
  const modelCommand = slashCommands.find((command) => command.name === "model");
353
427
  if (modelCommand) {
354
- modelCommand.getArgumentCompletions = async (prefix) => {
355
- // Get available models (scoped or from registry)
428
+ modelCommand.getArgumentCompletions = (prefix) => {
356
429
  const models = this.session.scopedModels.length > 0
357
430
  ? this.session.scopedModels.map((s) => s.model)
358
- : await this.session.modelRuntime.getAvailable();
431
+ : this.session.modelRuntime.getAvailableSnapshot();
359
432
  if (models.length === 0)
360
433
  return null;
361
434
  // Create items with provider/id format
@@ -459,6 +532,73 @@ export class InteractiveMode {
459
532
  }
460
533
  this.chatContainer.addChild(new DynamicBorder());
461
534
  }
535
+ mountInteractiveTui(tui, components) {
536
+ for (const component of components)
537
+ tui.addChild(component);
538
+ if (TuiLayouts.isViewportTUI(tui)) {
539
+ if (!this.fullscreenLayoutRoot)
540
+ throw new Error("Fullscreen layout is not initialized");
541
+ tui.setLayoutRoot(this.fullscreenLayoutRoot);
542
+ }
543
+ }
544
+ stopInteractiveTui() {
545
+ if (this.renderer.mode === "fullscreen") {
546
+ while (this.renderer.hasOverlayEntries)
547
+ this.renderer.hideOverlay();
548
+ this.switchTuiMode("regular", false, false);
549
+ this.renderer.renderNow();
550
+ }
551
+ this.ui.stop();
552
+ }
553
+ switchTuiMode(mode, restoreProgress = true, startRenderer = true) {
554
+ const previousUi = this.renderer;
555
+ if (mode === previousUi.mode)
556
+ return true;
557
+ if (previousUi.hasOverlayEntries)
558
+ return false;
559
+ const components = [...previousUi.children];
560
+ const focus = previousUi.getFocusedComponent();
561
+ const terminal = previousUi.terminal;
562
+ const showHardwareCursor = previousUi.getShowHardwareCursor();
563
+ const clearOnShrink = previousUi.getClearOnShrink();
564
+ const onDebug = previousUi.onDebug;
565
+ if (previousUi instanceof TuiMainScreen) {
566
+ this.mainScreenRenderState = previousUi.captureRenderState();
567
+ }
568
+ previousUi.stop({ preserveScreen: true });
569
+ previousUi.setFocus(null);
570
+ previousUi.clear();
571
+ if (TuiLayouts.isViewportTUI(previousUi))
572
+ previousUi.setLayoutRoot(undefined);
573
+ const nextUi = createInteractiveTui({
574
+ tuiMode: mode,
575
+ showHardwareCursor,
576
+ logDirectory: getAgentDir(),
577
+ terminal,
578
+ onRightClickPaste: this.onRightClickPaste,
579
+ });
580
+ nextUi.setClearOnShrink(clearOnShrink);
581
+ nextUi.onDebug = onDebug;
582
+ if (nextUi instanceof TuiMainScreen && this.mainScreenRenderState) {
583
+ nextUi.restoreRenderState(this.mainScreenRenderState);
584
+ }
585
+ this.renderer = nextUi;
586
+ this.options.tuiMode = mode;
587
+ this.mountInteractiveTui(nextUi, components);
588
+ nextUi.invalidate();
589
+ nextUi.setFocus(focus);
590
+ if (!startRenderer)
591
+ return true;
592
+ nextUi.start();
593
+ this.themeController.rebindTui();
594
+ this.rebindExtensionTerminalInputListeners();
595
+ if (restoreProgress &&
596
+ this.settingsManager.getShowTerminalProgress() &&
597
+ (this.session.isStreaming || this.session.isCompacting)) {
598
+ terminal.setProgress(true);
599
+ }
600
+ return true;
601
+ }
462
602
  async init() {
463
603
  if (this.isInitialized)
464
604
  return;
@@ -482,18 +622,36 @@ export class InteractiveMode {
482
622
  : "";
483
623
  console.log(theme.fg("dim", `Model scope: ${modelList}${cycleHint}`));
484
624
  }
485
- // Add header container as first child. Populate it after applying theme settings.
486
- // Keep loaded resources before chat so restored session messages never precede them.
487
- this.ui.addChild(this.headerContainer);
488
- this.ui.addChild(this.loadedResourcesContainer);
489
- this.ui.addChild(this.chatContainer);
490
- this.ui.addChild(this.pendingMessagesContainer);
491
- this.ui.addChild(this.statusContainer);
625
+ // Keep one component tree and remount it when changing renderers.
492
626
  this.renderWidgets(); // Initialize with default spacer
493
- this.ui.addChild(this.widgetContainerAbove);
494
- this.ui.addChild(this.editorContainer);
495
- this.ui.addChild(this.widgetContainerBelow);
496
- this.ui.addChild(this.footer);
627
+ this.transcriptScrollView = new TuiLayouts.ScrollView(this.documentContainer, {
628
+ follow: "end",
629
+ primary: true,
630
+ overscroll: "chain",
631
+ scrollbar: this.settingsManager.getFullscreenScrollbar(),
632
+ scrollbarStyle: (text) => theme.bg("scrollbarThumb", text),
633
+ });
634
+ const dock = new TuiLayouts.VStack([
635
+ { component: this.pendingMessagesContainer, shrink: 1, minSize: 0 },
636
+ { component: this.statusContainer, shrink: 1, minSize: 0 },
637
+ { component: this.widgetContainerAbove, shrink: 1, minSize: 0 },
638
+ { component: this.editorContainer, shrink: 1, minSize: 3 },
639
+ { component: this.widgetContainerBelow, shrink: 1, minSize: 0 },
640
+ { component: this.footerContainer, shrink: 1, minSize: 1 },
641
+ ]);
642
+ this.fullscreenLayoutRoot = new TuiLayouts.VStack([
643
+ { component: this.transcriptScrollView, basis: 0, grow: 1, shrink: 1, minSize: 1 },
644
+ { component: dock, basis: "auto", grow: 0, shrink: 1, minSize: 1 },
645
+ ]);
646
+ this.mountInteractiveTui(this.renderer, [
647
+ this.documentContainer,
648
+ this.pendingMessagesContainer,
649
+ this.statusContainer,
650
+ this.widgetContainerAbove,
651
+ this.editorContainer,
652
+ this.widgetContainerBelow,
653
+ this.footerContainer,
654
+ ]);
497
655
  this.ui.setFocus(this.editor);
498
656
  this.setupKeyHandlers();
499
657
  this.setupEditorSubmitHandler();
@@ -503,7 +661,7 @@ export class InteractiveMode {
503
661
  await this.themeController.applyFromSettings();
504
662
  // Add header with keybindings from config (unless silenced)
505
663
  if (this.options.verbose || !this.settingsManager.getQuietStartup()) {
506
- const logo = "▲ \u001b[38;5;196mp\u001b[38;5;202mr\u001b[38;5;226mi\u001b[38;5;46ms\u001b[38;5;51mm\u001b[0m v0.2.75";
664
+ const logo = "▲ \u001b[38;5;196mp\u001b[38;5;202mr\u001b[38;5;226mi\u001b[38;5;46ms\u001b[38;5;51mm\u001b[0m v0.2.81";
507
665
  // Build startup instructions using keybinding hint helpers
508
666
  const hint = (keybinding, description) => keyHint(keybinding, description);
509
667
  const expandedInstructions = [
@@ -585,10 +743,13 @@ export class InteractiveMode {
585
743
  async run() {
586
744
  await this.init();
587
745
  if (!process.env.PI_OFFLINE) {
746
+ const controller = new AbortController();
747
+ const timeout = setTimeout(() => controller.abort(), 15_000);
588
748
  void this.session.modelRuntime
589
- .refresh()
749
+ .refresh({ signal: controller.signal })
590
750
  .then(() => this.updateAvailableProviderCount())
591
- .catch(() => { });
751
+ .catch(() => { })
752
+ .finally(() => clearTimeout(timeout));
592
753
  }
593
754
  // Start version check asynchronously
594
755
  checkForNewPiVersion(this.version).then((newRelease) => {
@@ -636,6 +797,7 @@ export class InteractiveMode {
636
797
  }
637
798
  catch (error) {
638
799
  const errorMessage = error instanceof Error ? error.message : "Unknown error occurred";
800
+ errorMessage = this.humanizeUsageLimitError(errorMessage);
639
801
  this.showError(errorMessage);
640
802
  }
641
803
  }
@@ -646,7 +808,8 @@ export class InteractiveMode {
646
808
  }
647
809
  catch (error) {
648
810
  const errorMessage = error instanceof Error ? error.message : "Unknown error occurred";
649
- this.showError(errorMessage);
811
+ errorMessage = this.humanizeUsageLimitError(errorMessage);
812
+ this.showError(errorMessage);
650
813
  }
651
814
  }
652
815
  }
@@ -658,6 +821,7 @@ export class InteractiveMode {
658
821
  }
659
822
  catch (error) {
660
823
  const errorMessage = error instanceof Error ? error.message : "Unknown error occurred";
824
+ errorMessage = this.humanizeUsageLimitError(errorMessage);
661
825
  this.showError(errorMessage);
662
826
  }
663
827
  }
@@ -734,19 +898,19 @@ export class InteractiveMode {
734
898
  const entries = parseChangelog(changelogPath);
735
899
  if (!lastVersion) {
736
900
  // Fresh install - record the version, send telemetry, don't show changelog
737
- this.settingsManager.setLastChangelogVersion("0.83.0");
738
- this.reportInstallTelemetry("0.83.0");
901
+ this.settingsManager.setLastChangelogVersion("0.84.1");
902
+ this.reportInstallTelemetry("0.84.1");
739
903
  return undefined;
740
904
  }
741
905
  const newEntries = getNewEntries(entries, lastVersion);
742
906
  if (entries.length > 0 && newEntries.length === entries.length) {
743
- this.settingsManager.setLastChangelogVersion("0.83.0");
744
- this.reportInstallTelemetry("0.83.0");
907
+ this.settingsManager.setLastChangelogVersion("0.84.1");
908
+ this.reportInstallTelemetry("0.84.1");
745
909
  return normalizeChangelogLinks(entries[0].content, entries[0]);
746
910
  }
747
911
  if (newEntries.length > 0) {
748
- this.settingsManager.setLastChangelogVersion("0.83.0");
749
- this.reportInstallTelemetry("0.83.0");
912
+ this.settingsManager.setLastChangelogVersion("0.84.1");
913
+ this.reportInstallTelemetry("0.84.1");
750
914
  return newEntries.map((e) => normalizeChangelogLinks(e.content, e)).join("\n\n");
751
915
  }
752
916
  return undefined;
@@ -1300,8 +1464,12 @@ export class InteractiveMode {
1300
1464
  this.showLoadedResources({ force: false, showDiagnosticsWhenQuiet: true });
1301
1465
  this.showStartupNoticesIfNeeded();
1302
1466
  }
1467
+ applyFullscreenScrollbarSetting() {
1468
+ this.transcriptScrollView?.setScrollbar(this.settingsManager.getFullscreenScrollbar());
1469
+ }
1303
1470
  applyRuntimeSettings() {
1304
1471
  configureHttpDispatcher(this.settingsManager.getHttpIdleTimeoutMs());
1472
+ this.applyFullscreenScrollbarSetting();
1305
1473
  this.footer.setSession(this.session);
1306
1474
  this.footer.setAutoCompactEnabled(this.session.autoCompactionEnabled);
1307
1475
  this.footerDataProvider.setCwd(this.sessionManager.getCwd());
@@ -1365,6 +1533,9 @@ export class InteractiveMode {
1365
1533
  getRegisteredToolDefinition(toolName) {
1366
1534
  return this.session.getToolDefinition(toolName);
1367
1535
  }
1536
+ getMarkdownTransformers() {
1537
+ return [this.mermaidMarkdownTransformer, ...this.session.extensionRunner.getMarkdownTransformers()];
1538
+ }
1368
1539
  /**
1369
1540
  * Set up keyboard shortcuts registered by extensions.
1370
1541
  */
@@ -1444,7 +1615,7 @@ export class InteractiveMode {
1444
1615
  this.activeStatusIndicator?.dispose();
1445
1616
  this.activeStatusIndicator = undefined;
1446
1617
  this.statusContainer.clear();
1447
- if (hadActiveStatusIndicator && this.ui.getClearOnShrink()) {
1618
+ if (hadActiveStatusIndicator && this.options.tuiMode === "regular" && this.ui.getClearOnShrink()) {
1448
1619
  this.statusContainer.addChild(this.idleStatus);
1449
1620
  }
1450
1621
  }
@@ -1592,22 +1763,16 @@ export class InteractiveMode {
1592
1763
  if (this.customFooter?.dispose) {
1593
1764
  this.customFooter.dispose();
1594
1765
  }
1595
- // Remove current footer from UI
1596
- if (this.customFooter) {
1597
- this.ui.removeChild(this.customFooter);
1598
- }
1599
- else {
1600
- this.ui.removeChild(this.footer);
1601
- }
1766
+ this.footerContainer.clear();
1602
1767
  if (factory) {
1603
1768
  // Create and add custom footer, passing the data provider
1604
1769
  this.customFooter = factory(this.ui, theme, this.footerDataProvider);
1605
- this.ui.addChild(this.customFooter);
1770
+ this.footerContainer.addChild(this.customFooter);
1606
1771
  }
1607
1772
  else {
1608
1773
  // Restore built-in footer
1609
1774
  this.customFooter = undefined;
1610
- this.ui.addChild(this.footer);
1775
+ this.footerContainer.addChild(this.footer);
1611
1776
  }
1612
1777
  this.ui.requestRender();
1613
1778
  }
@@ -1653,18 +1818,23 @@ export class InteractiveMode {
1653
1818
  this.ui.requestRender();
1654
1819
  }
1655
1820
  addExtensionTerminalInputListener(handler) {
1656
- const unsubscribe = this.ui.addInputListener(handler);
1657
- this.extensionTerminalInputUnsubscribers.add(unsubscribe);
1821
+ const subscription = { handler, unsubscribe: this.ui.addInputListener(handler) };
1822
+ this.extensionTerminalInputSubscriptions.add(subscription);
1658
1823
  return () => {
1659
- unsubscribe();
1660
- this.extensionTerminalInputUnsubscribers.delete(unsubscribe);
1824
+ subscription.unsubscribe();
1825
+ this.extensionTerminalInputSubscriptions.delete(subscription);
1661
1826
  };
1662
1827
  }
1663
- clearExtensionTerminalInputListeners() {
1664
- for (const unsubscribe of this.extensionTerminalInputUnsubscribers) {
1665
- unsubscribe();
1828
+ rebindExtensionTerminalInputListeners() {
1829
+ for (const subscription of this.extensionTerminalInputSubscriptions) {
1830
+ subscription.unsubscribe();
1831
+ subscription.unsubscribe = this.ui.addInputListener(subscription.handler);
1666
1832
  }
1667
- this.extensionTerminalInputUnsubscribers.clear();
1833
+ }
1834
+ clearExtensionTerminalInputListeners() {
1835
+ for (const subscription of this.extensionTerminalInputSubscriptions)
1836
+ subscription.unsubscribe();
1837
+ this.extensionTerminalInputSubscriptions.clear();
1668
1838
  }
1669
1839
  /**
1670
1840
  * Create the ExtensionUIContext for extensions.
@@ -1759,6 +1929,7 @@ export class InteractiveMode {
1759
1929
  this.hideExtensionSelector();
1760
1930
  resolve(undefined);
1761
1931
  }, { tui: this.ui, timeout: opts?.timeout, onToggleToolsExpanded: () => this.toggleToolOutputExpansion() });
1932
+ this.disposeActiveSelector();
1762
1933
  this.editorContainer.clear();
1763
1934
  this.editorContainer.addChild(this.extensionSelector);
1764
1935
  this.ui.setFocus(this.extensionSelector);
@@ -1810,6 +1981,7 @@ export class InteractiveMode {
1810
1981
  this.hideExtensionInput();
1811
1982
  resolve(undefined);
1812
1983
  }, { tui: this.ui, timeout: opts?.timeout });
1984
+ this.disposeActiveSelector();
1813
1985
  this.editorContainer.clear();
1814
1986
  this.editorContainer.addChild(this.extensionInput);
1815
1987
  this.ui.setFocus(this.extensionInput);
@@ -1839,6 +2011,7 @@ export class InteractiveMode {
1839
2011
  this.hideExtensionEditor();
1840
2012
  resolve(undefined);
1841
2013
  }, undefined, this.settingsManager.getExternalEditorCommand());
2014
+ this.disposeActiveSelector();
1842
2015
  this.editorContainer.clear();
1843
2016
  this.editorContainer.addChild(this.extensionEditor);
1844
2017
  this.ui.setFocus(this.extensionEditor);
@@ -1863,6 +2036,7 @@ export class InteractiveMode {
1863
2036
  this.editorComponentFactory = factory;
1864
2037
  // Save text from current editor before switching
1865
2038
  const currentText = this.editor.getText();
2039
+ this.disposeActiveSelector();
1866
2040
  this.editorContainer.clear();
1867
2041
  if (factory) {
1868
2042
  // Create the custom editor with tui, theme, and keybindings
@@ -1879,6 +2053,9 @@ export class InteractiveMode {
1879
2053
  if (newEditor.setPaddingX !== undefined) {
1880
2054
  newEditor.setPaddingX(this.defaultEditor.getPaddingX());
1881
2055
  }
2056
+ if (newEditor.setAutocompleteMaxVisible !== undefined) {
2057
+ newEditor.setAutocompleteMaxVisible(this.defaultEditor.getAutocompleteMaxVisible());
2058
+ }
1882
2059
  // Set autocomplete if supported
1883
2060
  if (newEditor.setAutocompleteProvider && this.autocompleteProvider) {
1884
2061
  newEditor.setAutocompleteProvider(this.autocompleteProvider);
@@ -1983,6 +2160,7 @@ export class InteractiveMode {
1983
2160
  options?.onHandle?.(handle);
1984
2161
  }
1985
2162
  else {
2163
+ this.disposeActiveSelector();
1986
2164
  this.editorContainer.clear();
1987
2165
  this.editorContainer.addChild(component);
1988
2166
  this.ui.setFocus(component);
@@ -2069,7 +2247,7 @@ export class InteractiveMode {
2069
2247
  this.defaultEditor.onAction("app.tools.expand", () => this.toggleToolOutputExpansion());
2070
2248
  this.defaultEditor.onAction("app.thinking.toggle", () => this.toggleThinkingBlockVisibility());
2071
2249
  this.defaultEditor.onAction("app.editor.external", () => void this.handleOpenExternalEditor());
2072
- this.defaultEditor.onAction("app.message.copy", () => void this.handleCopyCommand());
2250
+ this.defaultEditor.onAction("app.message.copy", () => void this.handleCopyCommand({ flashConfirmation: true }));
2073
2251
  this.defaultEditor.onAction("app.message.followUp", () => this.handleFollowUp());
2074
2252
  this.defaultEditor.onAction("app.message.dequeue", () => this.handleDequeue());
2075
2253
  this.defaultEditor.onAction("app.session.new", () => this.handleClearCommand());
@@ -2089,6 +2267,22 @@ export class InteractiveMode {
2089
2267
  void this.handleClipboardPaste();
2090
2268
  };
2091
2269
  }
2270
+ async handleRightClickPaste() {
2271
+ const target = this.renderer.getFocusedComponent();
2272
+ const handleInput = target?.handleInput;
2273
+ if (!target || !handleInput)
2274
+ return;
2275
+ try {
2276
+ const text = await readClipboardText();
2277
+ if (!text || this.renderer.getFocusedComponent() !== target)
2278
+ return;
2279
+ handleInput.call(target, `\x1b[200~${text}\x1b[201~`);
2280
+ this.ui.requestRender();
2281
+ }
2282
+ catch {
2283
+ // Silently ignore clipboard errors (may not have permission, etc.)
2284
+ }
2285
+ }
2092
2286
  async handleClipboardPaste() {
2093
2287
  try {
2094
2288
  const image = await readClipboardImage();
@@ -2378,17 +2572,17 @@ export class InteractiveMode {
2378
2572
  this.ui.requestRender();
2379
2573
  }
2380
2574
  else if (event.message.role === "assistant") {
2381
- this.streamingComponent = new AssistantMessageComponent(undefined, this.hideThinkingBlock, this.getMarkdownThemeWithSettings(), this.hiddenThinkingLabel, this.outputPad);
2575
+ this.streamingComponent = new AssistantMessageComponent(undefined, this.hideThinkingBlock, this.getMarkdownThemeWithSettings(), this.hiddenThinkingLabel, this.outputPad, this.getMarkdownTransformers());
2382
2576
  this.streamingMessage = event.message;
2383
2577
  this.chatContainer.addChild(this.streamingComponent);
2384
- this.streamingComponent.updateContent(this.streamingMessage);
2578
+ this.streamingComponent.updateContent(this.streamingMessage, true);
2385
2579
  this.ui.requestRender();
2386
2580
  }
2387
2581
  break;
2388
2582
  case "message_update":
2389
2583
  if (this.streamingComponent && event.message.role === "assistant") {
2390
2584
  this.streamingMessage = event.message;
2391
- this.streamingComponent.updateContent(this.streamingMessage);
2585
+ this.streamingComponent.updateContent(this.streamingMessage, true);
2392
2586
  for (const content of this.streamingMessage.content) {
2393
2587
  if (content.type === "toolCall") {
2394
2588
  if (!this.pendingTools.has(content.id)) {
@@ -2425,7 +2619,7 @@ export class InteractiveMode {
2425
2619
  : "Operation aborted";
2426
2620
  this.streamingMessage.errorMessage = errorMessage;
2427
2621
  }
2428
- this.streamingComponent.updateContent(this.streamingMessage);
2622
+ this.streamingComponent.updateContent(this.streamingMessage, false);
2429
2623
  if (this.streamingMessage.stopReason === "aborted" || this.streamingMessage.stopReason === "error") {
2430
2624
  if (!errorMessage) {
2431
2625
  errorMessage = this.streamingMessage.errorMessage || "Error";
@@ -2501,6 +2695,8 @@ export class InteractiveMode {
2501
2695
  break;
2502
2696
  case "agent_settled":
2503
2697
  await this.checkShutdownRequested();
2698
+ void this.maybeShowUsageLimitRecoveryMenu(event);
2699
+ void this.maybeShowPrismPlanApprovalMenu(event);
2504
2700
  break;
2505
2701
  case "compaction_start": {
2506
2702
  if (this.settingsManager.getShowTerminalProgress()) {
@@ -2599,6 +2795,189 @@ export class InteractiveMode {
2599
2795
  }
2600
2796
  }
2601
2797
  }
2798
+ formatUsageLimitDuration(ms) {
2799
+ const totalMinutes = Math.ceil(ms / 60000);
2800
+ const hours = Math.floor(totalMinutes / 60);
2801
+ const minutes = totalMinutes % 60;
2802
+ const parts = [];
2803
+ if (hours > 0) parts.push(hours + "h");
2804
+ if (minutes > 0 || parts.length === 0) parts.push(minutes + "min");
2805
+ return parts.join(" ");
2806
+ }
2807
+ humanizeUsageLimitError(errorMessage) {
2808
+ return String(errorMessage || "").replace(/(~|about\s*)?(\d+)\s*min\b/gi, (_match, prefix, minutes) => {
2809
+ return (prefix || "") + this.formatUsageLimitDuration(Number(minutes) * 60 * 1000);
2810
+ });
2811
+ }
2812
+ extractUsageLimitWaitMs(errorMessage) {
2813
+ const text = String(errorMessage || "");
2814
+ const parsedSeconds = text.match(/"(?:resets_in_seconds|X-Codex-Primary-Reset-After-Seconds|Retry-After)"\s*:?\s*"?(\d+)"?/i)?.[1];
2815
+ if (parsedSeconds) return Number(parsedSeconds) * 1000;
2816
+ const resetAt = text.match(/"(?:resets_at|X-Codex-Primary-Reset-At)"\s*:?\s*"?(\d+)"?/i)?.[1];
2817
+ if (resetAt) {
2818
+ const resetMs = Number(resetAt) * 1000 - Date.now();
2819
+ if (Number.isFinite(resetMs) && resetMs > 0) return resetMs;
2820
+ }
2821
+ const hours = text.match(/(?:~|about\s*)?(\d+)\s*h(?:our)?/i)?.[1];
2822
+ if (hours) return Number(hours) * 60 * 60 * 1000;
2823
+ const minutes = text.match(/(?:~|about\s*)?(\d+)\s*min/i)?.[1];
2824
+ if (minutes) return Number(minutes) * 60 * 1000;
2825
+ const seconds = text.match(/(?:~|about\s*)?(\d+)\s*s(?:ec|econd)?/i)?.[1];
2826
+ if (seconds) return Number(seconds) * 1000;
2827
+ return 5 * 60 * 1000;
2828
+ }
2829
+ getUsageLimitError(event) {
2830
+ const last = event?.messages?.[event.messages.length - 1];
2831
+ let errorMessage = last?.errorMessage || last?.content?.find?.((block) => block?.type === "text")?.text || "";
2832
+ if (last?.role !== "assistant" || last?.stopReason !== "error") return undefined;
2833
+ errorMessage = this.humanizeUsageLimitError(errorMessage);
2834
+ return /usage limit|try again in/i.test(errorMessage) ? String(errorMessage) : undefined;
2835
+ }
2836
+ removeLastAssistantErrorFromState() {
2837
+ const messages = this.agent.state.messages;
2838
+ const last = messages[messages.length - 1];
2839
+ if (last?.role === "assistant" && last?.stopReason === "error") this.agent.state.messages = messages.slice(0, -1);
2840
+ }
2841
+ async continueAfterUsageLimitRecovery() {
2842
+ try {
2843
+ await this.agent.continue();
2844
+ } catch (error) {
2845
+ this.showError(error instanceof Error ? error.message : String(error));
2846
+ }
2847
+ }
2848
+ maybeShowUsageLimitRecoveryMenu(event) {
2849
+ const errorMessage = this.getUsageLimitError(event);
2850
+ if (!errorMessage) return;
2851
+ const delayMs = this.extractUsageLimitWaitMs(errorMessage);
2852
+ const waitLabel = "Wait " + this.formatUsageLimitDuration(delayMs) + " then retry";
2853
+ this.showSelector((done) => {
2854
+ const selector = new ExtensionSelectorComponent("Usage limit hit", [waitLabel, "Change model and retry", "Cancel"], async (selected) => {
2855
+ done();
2856
+ if (selected === "Cancel") return;
2857
+ this.removeLastAssistantErrorFromState();
2858
+ if (selected === waitLabel) {
2859
+ const endTime = Date.now() + delayMs;
2860
+ const updateCountdown = () => {
2861
+ const remaining = Math.max(0, endTime - Date.now());
2862
+ this.showStatus("Waiting " + this.formatUsageLimitDuration(remaining) + " for usage limit, then retrying...");
2863
+ this.ui.requestRender();
2864
+ };
2865
+ updateCountdown();
2866
+ const countdownInterval = setInterval(updateCountdown, 60000);
2867
+ setTimeout(() => { clearInterval(countdownInterval); void this.continueAfterUsageLimitRecovery(); }, delayMs);
2868
+ return;
2869
+ }
2870
+ this.showUsageLimitModelSelector();
2871
+ }, () => {
2872
+ done();
2873
+ this.ui.requestRender();
2874
+ }, { tui: this.ui });
2875
+ return { component: selector, focus: selector };
2876
+ });
2877
+ }
2878
+ showUsageLimitModelSelector(initialSearchInput) {
2879
+ this.showSelector((done) => {
2880
+ const selector = new ModelSelectorComponent(this.ui, this.session.model, this.settingsManager, this.session.modelRegistry, this.session.scopedModels, async (model) => {
2881
+ try {
2882
+ await this.session.setModel(model);
2883
+ this.footer.invalidate();
2884
+ this.updateEditorBorderColor();
2885
+ done();
2886
+ this.showStatus("Model: " + model.id + "; retrying...");
2887
+ void this.maybeWarnAboutAnthropicSubscriptionAuth(model);
2888
+ this.checkDaxnutsEasterEgg(model);
2889
+ void this.continueAfterUsageLimitRecovery();
2890
+ } catch (error) {
2891
+ done();
2892
+ this.showError(error instanceof Error ? error.message : String(error));
2893
+ }
2894
+ }, () => {
2895
+ done();
2896
+ this.ui.requestRender();
2897
+ }, initialSearchInput);
2898
+ return { component: selector, focus: selector };
2899
+ });
2900
+ }
2901
+ getPrismReadOnlyToolNames() {
2902
+ const readOnly = new Set(["read", "grep", "find", "ls", "obsidian_memory_read", "obsidian_memory_search", "obsidian_memory_list", "web_search", "web_fetch"]);
2903
+ return this.session.getActiveToolNames().filter((name) => readOnly.has(name));
2904
+ }
2905
+ setPrismPlanStatus(enabled) {
2906
+ this.prismPlanMode = enabled;
2907
+ this.setExtensionStatus("prism-mode", enabled ? "[Plan]" : undefined);
2908
+ this.footer.invalidate();
2909
+ }
2910
+ async startPrismPlanMode(task) {
2911
+ if (!this.prismPlanPreviousTools) this.prismPlanPreviousTools = this.session.getActiveToolNames();
2912
+ if (this.prismPlanLeafId === undefined) this.prismPlanLeafId = this.session.sessionManager.getLeafId();
2913
+ this.session.setActiveToolsByName(this.getPrismReadOnlyToolNames());
2914
+ this.setPrismPlanStatus(true);
2915
+ globalThis.__PRISM_MANIFEST_TIER_OVERRIDE__ = "plan";
2916
+ const prompt = "PLAN MODE ACTIVE. You must only inspect and plan. Do not modify files or run mutating commands. Ask concise clarification questions if needed. When ready, write the full implementation plan, then end with exactly: /plan:ready\n\nTask: " + (task || "Create an implementation plan for the user's next change.");
2917
+ await this.session.prompt(prompt);
2918
+ }
2919
+ getPrismLastAssistantText(event) {
2920
+ const last = event?.messages?.[event.messages.length - 1];
2921
+ if (last?.role !== "assistant") return "";
2922
+ return (last.content || []).map((block) => block?.type === "text" ? block.text || "" : "").join("\n");
2923
+ }
2924
+ maybeShowPrismPlanApprovalMenu(event) {
2925
+ if (!this.prismPlanMode) return;
2926
+ const text = this.getPrismLastAssistantText(event);
2927
+ if (!text.includes("/plan:ready")) return;
2928
+ this.prismPlanText = text.replace("/plan:ready", "").trim();
2929
+ this.showSelector((done) => {
2930
+ const selector = new ExtensionSelectorComponent("Plan ready", ["Approve -> make changes", "Reject -> add more context", "Cancel plan"], async (selected) => {
2931
+ done();
2932
+ if (selected.startsWith("Approve")) return void this.approvePrismPlan();
2933
+ if (selected.startsWith("Reject")) return this.rejectPrismPlan();
2934
+ this.cancelPrismPlan();
2935
+ }, () => {
2936
+ done();
2937
+ this.ui.requestRender();
2938
+ }, { tui: this.ui });
2939
+ return { component: selector, focus: selector };
2940
+ });
2941
+ }
2942
+ restorePrismPlanTools() {
2943
+ if (this.prismPlanPreviousTools) this.session.setActiveToolsByName(this.prismPlanPreviousTools);
2944
+ this.prismPlanPreviousTools = undefined;
2945
+ if (globalThis.__PRISM_MANIFEST_TIER_OVERRIDE__ === "plan") globalThis.__PRISM_MANIFEST_TIER_OVERRIDE__ = undefined;
2946
+ this.setPrismPlanStatus(false);
2947
+ }
2948
+ restorePrismPlanBranch() {
2949
+ if (this.prismPlanLeafId === undefined) return;
2950
+ if (this.prismPlanLeafId === null) {
2951
+ this.session.sessionManager.resetLeaf();
2952
+ } else {
2953
+ this.session.sessionManager.branch(this.prismPlanLeafId);
2954
+ }
2955
+ this.agent.state.messages = this.session.sessionManager.buildSessionContext().messages;
2956
+ this.prismPlanLeafId = undefined;
2957
+ }
2958
+ async approvePrismPlan() {
2959
+ if (!this.prismPlanMode) return this.showWarning("No active plan to approve.");
2960
+ const planText = this.prismPlanText || "";
2961
+ this.prismPlanText = undefined;
2962
+ this.restorePrismPlanBranch();
2963
+ this.restorePrismPlanTools();
2964
+ await this.session.prompt("Implement this plan:\n\n" + planText);
2965
+ }
2966
+ rejectPrismPlan() {
2967
+ if (!this.prismPlanMode) return this.showWarning("No active plan to reject.");
2968
+ this.prismPlanText = undefined;
2969
+ this.editor.setText("/plan ");
2970
+ this.showStatus("Add more context after /plan and submit.");
2971
+ this.ui.requestRender();
2972
+ }
2973
+ cancelPrismPlan() {
2974
+ if (!this.prismPlanMode) return this.showWarning("No active plan to cancel.");
2975
+ this.restorePrismPlanBranch();
2976
+ this.prismPlanText = undefined;
2977
+ this.restorePrismPlanTools();
2978
+ this.showStatus("Plan cancelled");
2979
+ this.ui.requestRender();
2980
+ }
2602
2981
  /** Extract text content from a user message */
2603
2982
  getUserMessageText(message) {
2604
2983
  if (message.role !== "user")
@@ -2699,12 +3078,12 @@ export class InteractiveMode {
2699
3078
  // Render user message separately if present
2700
3079
  if (skillBlock.userMessage) {
2701
3080
  this.chatContainer.addChild(new Spacer(1));
2702
- const userComponent = new UserMessageComponent(skillBlock.userMessage, this.getMarkdownThemeWithSettings(), this.outputPad);
3081
+ const userComponent = new UserMessageComponent(skillBlock.userMessage, this.getMarkdownThemeWithSettings(), this.outputPad, this.getMarkdownTransformers());
2703
3082
  this.chatContainer.addChild(userComponent);
2704
3083
  }
2705
3084
  }
2706
3085
  else {
2707
- const userComponent = new UserMessageComponent(textContent, this.getMarkdownThemeWithSettings(), this.outputPad);
3086
+ const userComponent = new UserMessageComponent(textContent, this.getMarkdownThemeWithSettings(), this.outputPad, this.getMarkdownTransformers());
2708
3087
  this.chatContainer.addChild(userComponent);
2709
3088
  }
2710
3089
  if (options?.populateHistory) {
@@ -2714,7 +3093,7 @@ export class InteractiveMode {
2714
3093
  break;
2715
3094
  }
2716
3095
  case "assistant": {
2717
- const assistantComponent = new AssistantMessageComponent(message, this.hideThinkingBlock, this.getMarkdownThemeWithSettings(), this.hiddenThinkingLabel, this.outputPad);
3096
+ const assistantComponent = new AssistantMessageComponent(message, this.hideThinkingBlock, this.getMarkdownThemeWithSettings(), this.hiddenThinkingLabel, this.outputPad, this.getMarkdownTransformers());
2718
3097
  this.chatContainer.addChild(assistantComponent);
2719
3098
  break;
2720
3099
  }
@@ -2863,2425 +3242,4 @@ export class InteractiveMode {
2863
3242
  if (this.settingsManager.isProjectTrusted() || !hasTrustRequiringProjectResources(this.sessionManager.getCwd())) {
2864
3243
  return;
2865
3244
  }
2866
- if (this.chatContainer.children.length > 0) {
2867
- this.chatContainer.addChild(new Spacer(1));
2868
- }
2869
- this.chatContainer.addChild(new Text(theme.fg("warning", `This project is not trusted. Project ${CONFIG_DIR_NAME} resources and packages are ignored. Use /trust to save a trust decision, then restart pi.`), 1, 0));
2870
- }
2871
- async getUserInput() {
2872
- const queuedInput = this.pendingUserInputs.shift();
2873
- if (queuedInput !== undefined) {
2874
- return queuedInput;
2875
- }
2876
- return new Promise((resolve) => {
2877
- this.onInputCallback = (text) => {
2878
- this.onInputCallback = undefined;
2879
- resolve(text);
2880
- };
2881
- });
2882
- }
2883
- rebuildChatFromMessages() {
2884
- this.chatContainer.clear();
2885
- this.renderSessionEntries(this.sessionManager.buildContextEntries());
2886
- }
2887
- // =========================================================================
2888
- // Key handlers
2889
- // =========================================================================
2890
- handleCtrlC() {
2891
- const now = Date.now();
2892
- if (now - this.lastSigintTime < 500) {
2893
- void this.shutdown();
2894
- }
2895
- else {
2896
- this.clearEditor();
2897
- this.lastSigintTime = now;
2898
- }
2899
- }
2900
- handleCtrlD() {
2901
- // Only called when editor is empty (enforced by CustomEditor)
2902
- void this.shutdown();
2903
- }
2904
- /**
2905
- * Gracefully shutdown the agent.
2906
- * Stops the TUI before emitting shutdown events so extension UI cleanup cannot
2907
- * repaint the final frame while the process is exiting.
2908
- */
2909
- isShuttingDown = false;
2910
- async shutdown(options) {
2911
- if (this.isShuttingDown)
2912
- return;
2913
- this.isShuttingDown = true;
2914
- // Keep signal handlers registered until terminal cleanup has completed.
2915
- // `signal-exit` checks the listener list during the same SIGTERM/SIGHUP
2916
- // dispatch and re-sends the signal if only its own listeners remain.
2917
- if (options?.fromSignal) {
2918
- // Signal-triggered shutdown (SIGTERM/SIGHUP). Emit extension cleanup
2919
- // (session_shutdown) BEFORE touching the terminal. Extension teardown
2920
- // such as removing sockets does not write to the tty, so it must not be
2921
- // skipped if a later terminal-restore write fails on a dead or stalled
2922
- // terminal. If the terminal is gone, the restore writes below emit EIO,
2923
- // which the stdout/stderr error handler turns into emergencyTerminalExit;
2924
- // the render loop is already idle, so this cannot hot-spin (see #4144).
2925
- await this.runtimeHost.dispose();
2926
- this.themeController.disableAutoSync();
2927
- await this.ui.terminal.drainInput(1000);
2928
- this.stop();
2929
- process.exit(0);
2930
- }
2931
- // Interactive quit (Ctrl+D, Ctrl+C, /quit, extension shutdown()). Stop the
2932
- // TUI before emitting shutdown events so extension UI cleanup cannot repaint
2933
- // the final frame while the process is exiting.
2934
- // Drain any in-flight Kitty key release events before stopping.
2935
- // This prevents escape sequences from leaking to the parent shell over slow SSH.
2936
- this.themeController.disableAutoSync();
2937
- await this.ui.terminal.drainInput(1000);
2938
- this.stop();
2939
- await this.runtimeHost.dispose();
2940
- const resumeCommand = formatResumeCommand(this.sessionManager);
2941
- if (resumeCommand) {
2942
- process.stdout.write(`${chalk.dim("To resume this session:")} ${resumeCommand}\n`);
2943
- }
2944
- process.exit(0);
2945
- }
2946
- emergencyTerminalExit() {
2947
- this.isShuttingDown = true;
2948
- this.unregisterSignalHandlers();
2949
- killTrackedDetachedChildren();
2950
- // The terminal is gone. Do not run normal shutdown because TUI and
2951
- // extension cleanup can write restore sequences and re-trigger EIO.
2952
- process.exit(129);
2953
- }
2954
- /**
2955
- * Last-resort handler for uncaught exceptions. The TUI puts stdin into raw
2956
- * mode and hides the cursor; without this handler, an uncaught throw from
2957
- * anywhere (e.g. an extension's async `ChildProcess.on("exit")` callback)
2958
- * tears down the process while leaving the terminal in raw mode with no
2959
- * cursor, requiring `stty sane && reset` to recover.
2960
- *
2961
- * Unlike emergencyTerminalExit, the terminal is still alive here, so we
2962
- * call ui.stop() to restore cooked mode, the cursor, and disable bracketed
2963
- * paste / Kitty / modifyOtherKeys sequences.
2964
- */
2965
- uncaughtCrash(error) {
2966
- if (this.isShuttingDown) {
2967
- process.exit(1);
2968
- }
2969
- this.isShuttingDown = true;
2970
- try {
2971
- this.unregisterSignalHandlers();
2972
- }
2973
- catch { }
2974
- try {
2975
- killTrackedDetachedChildren();
2976
- }
2977
- catch { }
2978
- try {
2979
- this.ui.stop();
2980
- }
2981
- catch { }
2982
- console.error("pi exiting due to uncaughtException:");
2983
- console.error(error);
2984
- process.exit(1);
2985
- }
2986
- /**
2987
- * Check if shutdown was requested and perform shutdown if so.
2988
- */
2989
- async checkShutdownRequested() {
2990
- if (!this.shutdownRequested)
2991
- return;
2992
- await this.shutdown();
2993
- }
2994
- registerSignalHandlers() {
2995
- this.unregisterSignalHandlers();
2996
- const signals = ["SIGTERM"];
2997
- if (process.platform !== "win32") {
2998
- signals.push("SIGHUP");
2999
- }
3000
- for (const signal of signals) {
3001
- const handler = () => {
3002
- // SIGHUP no longer hard-exits: graceful shutdown emits session_shutdown
3003
- // first, then attempts terminal restore. A genuinely dead terminal
3004
- // surfaces as an EIO on the restore writes, which the stdout/stderr
3005
- // error handler converts into emergencyTerminalExit (see #4144, #5080).
3006
- killTrackedDetachedChildren();
3007
- void this.shutdown({ fromSignal: true });
3008
- };
3009
- process.prependListener(signal, handler);
3010
- this.signalCleanupHandlers.push(() => process.off(signal, handler));
3011
- }
3012
- const terminalErrorHandler = (error) => {
3013
- if (isDeadTerminalError(error)) {
3014
- this.emergencyTerminalExit();
3015
- }
3016
- throw error;
3017
- };
3018
- process.stdout.on("error", terminalErrorHandler);
3019
- process.stderr.on("error", terminalErrorHandler);
3020
- this.signalCleanupHandlers.push(() => process.stdout.off("error", terminalErrorHandler));
3021
- this.signalCleanupHandlers.push(() => process.stderr.off("error", terminalErrorHandler));
3022
- // Restore the terminal before the process dies on any uncaught throw.
3023
- // Without this, an unhandled exception from extension code (or anywhere
3024
- // in pi) leaves the terminal in raw mode with no cursor.
3025
- const uncaughtExceptionHandler = (error) => this.uncaughtCrash(error);
3026
- process.prependListener("uncaughtException", uncaughtExceptionHandler);
3027
- this.signalCleanupHandlers.push(() => process.off("uncaughtException", uncaughtExceptionHandler));
3028
- }
3029
- unregisterSignalHandlers() {
3030
- for (const cleanup of this.signalCleanupHandlers) {
3031
- cleanup();
3032
- }
3033
- this.signalCleanupHandlers = [];
3034
- }
3035
- handleCtrlZ() {
3036
- if (process.platform === "win32") {
3037
- this.showStatus("Suspend to background is not supported on Windows");
3038
- return;
3039
- }
3040
- // Keep the event loop alive while suspended. Without this, stopping the TUI
3041
- // can leave Node with no ref'ed handles, causing the process to exit on fg
3042
- // before the SIGCONT handler gets a chance to restore the terminal.
3043
- const suspendKeepAlive = setInterval(() => { }, 2 ** 30);
3044
- // Ignore SIGINT while suspended so Ctrl+C in the terminal does not
3045
- // kill the backgrounded process. The handler is removed on resume.
3046
- const ignoreSigint = () => { };
3047
- process.on("SIGINT", ignoreSigint);
3048
- // Set up handler to restore TUI when resumed
3049
- process.once("SIGCONT", () => {
3050
- clearInterval(suspendKeepAlive);
3051
- process.removeListener("SIGINT", ignoreSigint);
3052
- this.ui.start();
3053
- this.ui.requestRender(true);
3054
- });
3055
- try {
3056
- // Stop the TUI (restore terminal to normal mode)
3057
- this.ui.stop();
3058
- // Send SIGTSTP to process group (pid=0 means all processes in group)
3059
- process.kill(0, "SIGTSTP");
3060
- }
3061
- catch (error) {
3062
- clearInterval(suspendKeepAlive);
3063
- process.removeListener("SIGINT", ignoreSigint);
3064
- throw error;
3065
- }
3066
- }
3067
- async handleFollowUp() {
3068
- const text = (this.editor.getExpandedText?.() ?? this.editor.getText()).trim();
3069
- if (!text)
3070
- return;
3071
- // Queue input during compaction (extension commands execute immediately)
3072
- if (this.session.isCompacting) {
3073
- if (this.isExtensionCommand(text)) {
3074
- this.editor.addToHistory?.(text);
3075
- this.editor.setText("");
3076
- await this.session.prompt(text);
3077
- }
3078
- else {
3079
- this.queueCompactionMessage(text, "followUp");
3080
- }
3081
- return;
3082
- }
3083
- // Alt+Enter queues a follow-up message (waits until agent finishes)
3084
- // This handles extension commands (execute immediately), prompt template expansion, and queueing
3085
- if (this.session.isStreaming) {
3086
- this.editor.addToHistory?.(text);
3087
- this.editor.setText("");
3088
- await this.session.prompt(text, { streamingBehavior: "followUp" });
3089
- this.updatePendingMessagesDisplay();
3090
- this.ui.requestRender();
3091
- }
3092
- // If not streaming, Alt+Enter acts like regular Enter (trigger onSubmit)
3093
- else if (this.editor.onSubmit) {
3094
- this.editor.setText("");
3095
- this.editor.onSubmit(text);
3096
- }
3097
- }
3098
- handleDequeue() {
3099
- const restored = this.restoreQueuedMessagesToEditor();
3100
- if (restored === 0) {
3101
- this.showStatus("No queued messages to restore");
3102
- }
3103
- else {
3104
- this.showStatus(`Restored ${restored} queued message${restored > 1 ? "s" : ""} to editor`);
3105
- }
3106
- }
3107
- updateEditorBorderColor() {
3108
- if (this.isBashMode) {
3109
- this.editor.borderColor = theme.getBashModeBorderColor();
3110
- }
3111
- else {
3112
- const level = this.session.thinkingLevel || "off";
3113
- this.editor.borderColor = theme.getThinkingBorderColor(level);
3114
- }
3115
- this.ui.requestRender();
3116
- }
3117
- cycleThinkingLevel() {
3118
- const newLevel = this.session.cycleThinkingLevel();
3119
- if (newLevel === undefined) {
3120
- this.showStatus("Current model does not support thinking");
3121
- }
3122
- else {
3123
- this.footer.invalidate();
3124
- this.updateEditorBorderColor();
3125
- this.showStatus(`Thinking level: ${newLevel}`);
3126
- }
3127
- }
3128
- async cycleModel(direction) {
3129
- try {
3130
- const result = await this.session.cycleModel(direction);
3131
- if (result === undefined) {
3132
- const msg = this.session.scopedModels.length > 0 ? "Only one model in scope" : "Only one model available";
3133
- this.showStatus(msg);
3134
- }
3135
- else {
3136
- this.footer.invalidate();
3137
- this.updateEditorBorderColor();
3138
- const thinkingStr = result.model.reasoning && result.thinkingLevel !== "off" ? ` (thinking: ${result.thinkingLevel})` : "";
3139
- this.showStatus(`Switched to ${result.model.name || result.model.id}${thinkingStr}`);
3140
- void this.maybeWarnAboutAnthropicSubscriptionAuth(result.model);
3141
- }
3142
- }
3143
- catch (error) {
3144
- this.showError(error instanceof Error ? error.message : String(error));
3145
- }
3146
- }
3147
- toggleToolOutputExpansion() {
3148
- this.setToolsExpanded(!this.toolOutputExpanded);
3149
- }
3150
- setToolsExpanded(expanded) {
3151
- this.toolOutputExpanded = expanded;
3152
- const activeHeader = this.customHeader ?? this.builtInHeader;
3153
- if (isExpandable(activeHeader)) {
3154
- activeHeader.setExpanded(expanded);
3155
- }
3156
- for (const container of [this.loadedResourcesContainer, this.chatContainer]) {
3157
- for (const child of container.children) {
3158
- if (isExpandable(child)) {
3159
- child.setExpanded(expanded);
3160
- }
3161
- }
3162
- }
3163
- this.showStatus(`Tool output: ${expanded ? "expanded" : "collapsed"}`);
3164
- }
3165
- toggleThinkingBlockVisibility() {
3166
- this.hideThinkingBlock = !this.hideThinkingBlock;
3167
- this.settingsManager.setHideThinkingBlock(this.hideThinkingBlock);
3168
- // Rebuild chat from session messages
3169
- this.chatContainer.clear();
3170
- this.rebuildChatFromMessages();
3171
- // If streaming, re-add the streaming component with updated visibility and re-render
3172
- if (this.streamingComponent && this.streamingMessage) {
3173
- this.streamingComponent.setHideThinkingBlock(this.hideThinkingBlock);
3174
- this.streamingComponent.updateContent(this.streamingMessage);
3175
- this.chatContainer.addChild(this.streamingComponent);
3176
- }
3177
- this.showStatus(`Thinking blocks: ${this.hideThinkingBlock ? "hidden" : "visible"}`);
3178
- }
3179
- async handleOpenExternalEditor() {
3180
- const editorCmd = this.settingsManager.getExternalEditorCommand();
3181
- const content = this.editor.getExpandedText?.() ?? this.editor.getText();
3182
- this.ui.stop();
3183
- try {
3184
- const result = await editInExternalEditor({
3185
- command: editorCmd,
3186
- content,
3187
- });
3188
- if (result.status === "complete") {
3189
- this.editor.setText(result.content);
3190
- }
3191
- }
3192
- finally {
3193
- this.ui.start();
3194
- this.ui.requestRender(true);
3195
- }
3196
- }
3197
- // =========================================================================
3198
- // UI helpers
3199
- // =========================================================================
3200
- clearEditor() {
3201
- this.editor.setText("");
3202
- this.ui.requestRender();
3203
- }
3204
- showError(errorMessage) {
3205
- errorMessage = this.humanizeUsageLimitError(errorMessage);
3206
- this.chatContainer.addChild(new Spacer(1));
3207
- this.chatContainer.addChild(new Text(theme.fg("error", `Error: ${errorMessage}`), 1, 0));
3208
- this.ui.requestRender();
3209
- }
3210
- showWarning(warningMessage) {
3211
- this.chatContainer.addChild(new Spacer(1));
3212
- this.chatContainer.addChild(new Text(theme.fg("warning", `Warning: ${warningMessage}`), 1, 0));
3213
- this.ui.requestRender();
3214
- }
3215
- showNewVersionNotification(release) {
3216
- const action = theme.fg("accent", `${APP_NAME} update`);
3217
- const updateInstruction = theme.fg("muted", `New version ${release.version} is available. Run `) + action;
3218
- const changelogUrl = "https://pi.dev/changelog";
3219
- const changelogLink = getCapabilities().hyperlinks
3220
- ? hyperlink(theme.fg("accent", changelogUrl), changelogUrl)
3221
- : theme.fg("accent", changelogUrl);
3222
- const changelogLine = theme.fg("muted", "Changelog: ") + changelogLink;
3223
- const note = release.note?.trim();
3224
- this.chatContainer.addChild(new Spacer(1));
3225
- this.chatContainer.addChild(new DynamicBorder((text) => theme.fg("warning", text)));
3226
- this.chatContainer.addChild(new Text(`${theme.bold(theme.fg("warning", "Update Available"))}\n${updateInstruction}`, 1, 0));
3227
- if (note) {
3228
- this.chatContainer.addChild(new Spacer(1));
3229
- this.chatContainer.addChild(new Markdown(note, 1, 0, this.getMarkdownThemeWithSettings(), {
3230
- color: (text) => theme.fg("muted", text),
3231
- }));
3232
- this.chatContainer.addChild(new Spacer(1));
3233
- }
3234
- this.chatContainer.addChild(new Text(changelogLine, 1, 0));
3235
- this.chatContainer.addChild(new DynamicBorder((text) => theme.fg("warning", text)));
3236
- this.ui.requestRender();
3237
- }
3238
- showPackageUpdateNotification(packages) {
3239
- const action = theme.fg("accent", `${APP_NAME} update --extensions`);
3240
- const updateInstruction = theme.fg("muted", "Package updates are available. Run ") + action;
3241
- const packageLines = packages.map((pkg) => `- ${pkg}`).join("\n");
3242
- this.chatContainer.addChild(new Spacer(1));
3243
- this.chatContainer.addChild(new DynamicBorder((text) => theme.fg("warning", text)));
3244
- this.chatContainer.addChild(new Text(`${theme.bold(theme.fg("warning", "Package Updates Available"))}\n${updateInstruction}\n${theme.fg("muted", "Packages:")}\n${packageLines}`, 1, 0));
3245
- this.chatContainer.addChild(new DynamicBorder((text) => theme.fg("warning", text)));
3246
- this.ui.requestRender();
3247
- }
3248
- /**
3249
- * Get all queued messages (read-only).
3250
- * Combines session queue and compaction queue.
3251
- */
3252
- getAllQueuedMessages() {
3253
- return {
3254
- steering: [
3255
- ...this.session.getSteeringMessages(),
3256
- ...this.compactionQueuedMessages.filter((msg) => msg.mode === "steer").map((msg) => msg.text),
3257
- ],
3258
- followUp: [
3259
- ...this.session.getFollowUpMessages(),
3260
- ...this.compactionQueuedMessages.filter((msg) => msg.mode === "followUp").map((msg) => msg.text),
3261
- ],
3262
- };
3263
- }
3264
- /**
3265
- * Clear all queued messages and return their contents.
3266
- * Clears both session queue and compaction queue.
3267
- */
3268
- clearAllQueues() {
3269
- const { steering, followUp } = this.session.clearQueue();
3270
- const compactionSteering = this.compactionQueuedMessages
3271
- .filter((msg) => msg.mode === "steer")
3272
- .map((msg) => msg.text);
3273
- const compactionFollowUp = this.compactionQueuedMessages
3274
- .filter((msg) => msg.mode === "followUp")
3275
- .map((msg) => msg.text);
3276
- this.compactionQueuedMessages = [];
3277
- return {
3278
- steering: [...steering, ...compactionSteering],
3279
- followUp: [...followUp, ...compactionFollowUp],
3280
- };
3281
- }
3282
- updatePendingMessagesDisplay() {
3283
- this.pendingMessagesContainer.clear();
3284
- const { steering: steeringMessages, followUp: followUpMessages } = this.getAllQueuedMessages();
3285
- if (steeringMessages.length > 0 || followUpMessages.length > 0) {
3286
- this.pendingMessagesContainer.addChild(new Spacer(1));
3287
- for (const message of steeringMessages) {
3288
- const text = theme.fg("dim", `Steering: ${message}`);
3289
- this.pendingMessagesContainer.addChild(new TruncatedText(text, 1, 0));
3290
- }
3291
- for (const message of followUpMessages) {
3292
- const text = theme.fg("dim", `Follow-up: ${message}`);
3293
- this.pendingMessagesContainer.addChild(new TruncatedText(text, 1, 0));
3294
- }
3295
- const dequeueHint = this.getAppKeyDisplay("app.message.dequeue");
3296
- const hintText = theme.fg("dim", `↳ ${dequeueHint} to edit all queued messages`);
3297
- this.pendingMessagesContainer.addChild(new TruncatedText(hintText, 1, 0));
3298
- }
3299
- }
3300
- restoreQueuedMessagesToEditor(options) {
3301
- const { steering, followUp } = this.clearAllQueues();
3302
- const allQueued = [...steering, ...followUp];
3303
- if (allQueued.length === 0) {
3304
- this.updatePendingMessagesDisplay();
3305
- if (options?.abort) {
3306
- this.agent.abort();
3307
- }
3308
- return 0;
3309
- }
3310
- const queuedText = allQueued.join("\n\n");
3311
- const currentText = options?.currentText ?? this.editor.getText();
3312
- const combinedText = [queuedText, currentText].filter((t) => t.trim()).join("\n\n");
3313
- this.editor.setText(combinedText);
3314
- this.updatePendingMessagesDisplay();
3315
- if (options?.abort) {
3316
- this.agent.abort();
3317
- }
3318
- return allQueued.length;
3319
- }
3320
- queueCompactionMessage(text, mode) {
3321
- this.compactionQueuedMessages.push({ text, mode });
3322
- this.editor.addToHistory?.(text);
3323
- this.editor.setText("");
3324
- this.updatePendingMessagesDisplay();
3325
- this.showStatus("Queued message for after compaction");
3326
- }
3327
- isExtensionCommand(text) {
3328
- if (!text.startsWith("/"))
3329
- return false;
3330
- const extensionRunner = this.session.extensionRunner;
3331
- const spaceIndex = text.indexOf(" ");
3332
- const commandName = spaceIndex === -1 ? text.slice(1) : text.slice(1, spaceIndex);
3333
- return !!extensionRunner.getCommand(commandName);
3334
- }
3335
- async flushCompactionQueue(options) {
3336
- if (this.compactionQueuedMessages.length === 0) {
3337
- return;
3338
- }
3339
- const queuedMessages = [...this.compactionQueuedMessages];
3340
- this.compactionQueuedMessages = [];
3341
- this.updatePendingMessagesDisplay();
3342
- const restoreQueue = (error) => {
3343
- this.session.clearQueue();
3344
- this.compactionQueuedMessages = queuedMessages;
3345
- this.updatePendingMessagesDisplay();
3346
- this.showError(`Failed to send queued message${queuedMessages.length > 1 ? "s" : ""}: ${error instanceof Error ? error.message : String(error)}`);
3347
- };
3348
- try {
3349
- if (options?.willRetry) {
3350
- // When retry is pending, queue messages for the retry turn
3351
- for (const message of queuedMessages) {
3352
- if (this.isExtensionCommand(message.text)) {
3353
- await this.session.prompt(message.text);
3354
- }
3355
- else if (message.mode === "followUp") {
3356
- await this.session.followUp(message.text);
3357
- }
3358
- else {
3359
- await this.session.steer(message.text);
3360
- }
3361
- }
3362
- this.updatePendingMessagesDisplay();
3363
- return;
3364
- }
3365
- // Find first non-extension-command message to use as prompt
3366
- const firstPromptIndex = queuedMessages.findIndex((message) => !this.isExtensionCommand(message.text));
3367
- if (firstPromptIndex === -1) {
3368
- // All extension commands - execute them all
3369
- for (const message of queuedMessages) {
3370
- await this.session.prompt(message.text);
3371
- }
3372
- return;
3373
- }
3374
- // Execute any extension commands before the first prompt
3375
- const preCommands = queuedMessages.slice(0, firstPromptIndex);
3376
- const firstPrompt = queuedMessages[firstPromptIndex];
3377
- const rest = queuedMessages.slice(firstPromptIndex + 1);
3378
- for (const message of preCommands) {
3379
- await this.session.prompt(message.text);
3380
- }
3381
- // Start a prompt when idle, or queue it into a run still finishing compaction.
3382
- const promptPromise = this.session
3383
- .prompt(firstPrompt.text, { streamingBehavior: firstPrompt.mode })
3384
- .catch((error) => {
3385
- restoreQueue(error);
3386
- });
3387
- // Queue remaining messages
3388
- for (const message of rest) {
3389
- if (this.isExtensionCommand(message.text)) {
3390
- await this.session.prompt(message.text);
3391
- }
3392
- else if (message.mode === "followUp") {
3393
- await this.session.followUp(message.text);
3394
- }
3395
- else {
3396
- await this.session.steer(message.text);
3397
- }
3398
- }
3399
- this.updatePendingMessagesDisplay();
3400
- void promptPromise;
3401
- }
3402
- catch (error) {
3403
- restoreQueue(error);
3404
- }
3405
- }
3406
- /** Move pending bash components from pending area to chat */
3407
- flushPendingBashComponents() {
3408
- for (const component of this.pendingBashComponents) {
3409
- this.pendingMessagesContainer.removeChild(component);
3410
- this.chatContainer.addChild(component);
3411
- }
3412
- this.pendingBashComponents = [];
3413
- }
3414
- // =========================================================================
3415
- // Selectors
3416
- // =========================================================================
3417
- /**
3418
- * Shows a selector component in place of the editor.
3419
- * @param create Factory that receives a `done` callback and returns the component and focus target
3420
- */
3421
- showSelector(create) {
3422
- const done = () => {
3423
- this.editorContainer.clear();
3424
- this.editorContainer.addChild(this.editor);
3425
- this.ui.setFocus(this.editor);
3426
- };
3427
- const { component, focus } = create(done);
3428
- this.editorContainer.clear();
3429
- this.editorContainer.addChild(component);
3430
- this.ui.setFocus(focus);
3431
- this.ui.requestRender();
3432
- }
3433
- showSettingsSelector() {
3434
- this.showSelector((done) => {
3435
- const selector = new SettingsSelectorComponent({
3436
- autoCompact: this.session.autoCompactionEnabled,
3437
- showImages: this.settingsManager.getShowImages(),
3438
- imageWidthCells: this.settingsManager.getImageWidthCells(),
3439
- autoResizeImages: this.settingsManager.getImageAutoResize(),
3440
- blockImages: this.settingsManager.getBlockImages(),
3441
- enableSkillCommands: this.settingsManager.getEnableSkillCommands(),
3442
- steeringMode: this.session.steeringMode,
3443
- followUpMode: this.session.followUpMode,
3444
- transport: this.settingsManager.getTransport(),
3445
- httpIdleTimeoutMs: this.settingsManager.getHttpIdleTimeoutMs(),
3446
- thinkingLevel: this.session.thinkingLevel,
3447
- availableThinkingLevels: this.session.getAvailableThinkingLevels(),
3448
- currentTheme: this.settingsManager.getThemeSetting() || "dark",
3449
- terminalTheme: this.themeController.getTerminalTheme(),
3450
- availableThemes: getAvailableThemes(),
3451
- hideThinkingBlock: this.hideThinkingBlock,
3452
- collapseChangelog: this.settingsManager.getCollapseChangelog(),
3453
- enableInstallTelemetry: this.settingsManager.getEnableInstallTelemetry(),
3454
- doubleEscapeAction: this.settingsManager.getDoubleEscapeAction(),
3455
- treeFilterMode: this.settingsManager.getTreeFilterMode(),
3456
- showHardwareCursor: this.settingsManager.getShowHardwareCursor(),
3457
- showCacheMissNotices: this.settingsManager.getShowCacheMissNotices(),
3458
- defaultProjectTrust: this.settingsManager.getDefaultProjectTrust(),
3459
- editorPaddingX: this.settingsManager.getEditorPaddingX(),
3460
- outputPad: this.settingsManager.getOutputPad(),
3461
- autocompleteMaxVisible: this.settingsManager.getAutocompleteMaxVisible(),
3462
- quietStartup: this.settingsManager.getQuietStartup(),
3463
- clearOnShrink: this.settingsManager.getClearOnShrink(),
3464
- showTerminalProgress: this.settingsManager.getShowTerminalProgress(),
3465
- warnings: this.settingsManager.getWarnings(),
3466
- }, {
3467
- onAutoCompactChange: (enabled) => {
3468
- this.session.setAutoCompactionEnabled(enabled);
3469
- this.footer.setAutoCompactEnabled(enabled);
3470
- },
3471
- onShowImagesChange: (enabled) => {
3472
- this.settingsManager.setShowImages(enabled);
3473
- for (const child of this.chatContainer.children) {
3474
- if (child instanceof ToolExecutionComponent) {
3475
- child.setShowImages(enabled);
3476
- }
3477
- }
3478
- },
3479
- onImageWidthCellsChange: (width) => {
3480
- this.settingsManager.setImageWidthCells(width);
3481
- for (const child of this.chatContainer.children) {
3482
- if (child instanceof ToolExecutionComponent) {
3483
- child.setImageWidthCells(width);
3484
- }
3485
- }
3486
- },
3487
- onAutoResizeImagesChange: (enabled) => {
3488
- this.settingsManager.setImageAutoResize(enabled);
3489
- },
3490
- onBlockImagesChange: (blocked) => {
3491
- this.settingsManager.setBlockImages(blocked);
3492
- },
3493
- onEnableSkillCommandsChange: (enabled) => {
3494
- this.settingsManager.setEnableSkillCommands(enabled);
3495
- this.setupAutocompleteProvider();
3496
- },
3497
- onSteeringModeChange: (mode) => {
3498
- this.session.setSteeringMode(mode);
3499
- },
3500
- onFollowUpModeChange: (mode) => {
3501
- this.session.setFollowUpMode(mode);
3502
- },
3503
- onTransportChange: (transport) => {
3504
- this.settingsManager.setTransport(transport);
3505
- this.session.agent.transport = transport;
3506
- },
3507
- onHttpIdleTimeoutMsChange: (timeoutMs) => {
3508
- this.settingsManager.setHttpIdleTimeoutMs(timeoutMs);
3509
- configureHttpDispatcher(timeoutMs);
3510
- this.showStatus(`HTTP idle timeout: ${formatHttpIdleTimeoutMs(timeoutMs)}`);
3511
- },
3512
- onThinkingLevelChange: (level) => {
3513
- this.session.setThinkingLevel(level);
3514
- this.footer.invalidate();
3515
- this.updateEditorBorderColor();
3516
- },
3517
- onThemeChange: (themeSetting) => {
3518
- this.settingsManager.setTheme(themeSetting);
3519
- void this.themeController.applyFromSettings();
3520
- },
3521
- onThemePreview: (themeName) => this.themeController.preview(themeName),
3522
- onHideThinkingBlockChange: (hidden) => {
3523
- this.hideThinkingBlock = hidden;
3524
- this.settingsManager.setHideThinkingBlock(hidden);
3525
- for (const child of this.chatContainer.children) {
3526
- if (child instanceof AssistantMessageComponent) {
3527
- child.setHideThinkingBlock(hidden);
3528
- }
3529
- }
3530
- this.chatContainer.clear();
3531
- this.rebuildChatFromMessages();
3532
- },
3533
- onShowCacheMissNoticesChange: (shown) => {
3534
- this.settingsManager.setShowCacheMissNotices(shown);
3535
- this.rebuildChatFromMessages();
3536
- },
3537
- onCollapseChangelogChange: (collapsed) => {
3538
- this.settingsManager.setCollapseChangelog(collapsed);
3539
- },
3540
- onEnableInstallTelemetryChange: (enabled) => {
3541
- this.settingsManager.setEnableInstallTelemetry(enabled);
3542
- },
3543
- onQuietStartupChange: (enabled) => {
3544
- this.settingsManager.setQuietStartup(enabled);
3545
- },
3546
- onDefaultProjectTrustChange: (defaultProjectTrust) => {
3547
- this.settingsManager.setDefaultProjectTrust(defaultProjectTrust);
3548
- },
3549
- onDoubleEscapeActionChange: (action) => {
3550
- this.settingsManager.setDoubleEscapeAction(action);
3551
- },
3552
- onTreeFilterModeChange: (mode) => {
3553
- this.settingsManager.setTreeFilterMode(mode);
3554
- },
3555
- onShowHardwareCursorChange: (enabled) => {
3556
- this.settingsManager.setShowHardwareCursor(enabled);
3557
- this.ui.setShowHardwareCursor(enabled);
3558
- },
3559
- onEditorPaddingXChange: (padding) => {
3560
- this.settingsManager.setEditorPaddingX(padding);
3561
- this.defaultEditor.setPaddingX(padding);
3562
- if (this.editor !== this.defaultEditor && this.editor.setPaddingX !== undefined) {
3563
- this.editor.setPaddingX(padding);
3564
- }
3565
- },
3566
- onOutputPadChange: (padding) => {
3567
- this.settingsManager.setOutputPad(padding);
3568
- this.outputPad = padding;
3569
- if (this.streamingComponent || this.session.isStreaming) {
3570
- for (const child of this.chatContainer.children) {
3571
- if (child instanceof AssistantMessageComponent ||
3572
- child instanceof CustomMessageComponent ||
3573
- child instanceof UserMessageComponent) {
3574
- child.setOutputPad(padding);
3575
- }
3576
- }
3577
- if (this.streamingComponent) {
3578
- this.streamingComponent.setOutputPad(padding);
3579
- }
3580
- this.ui.requestRender();
3581
- return;
3582
- }
3583
- this.rebuildChatFromMessages();
3584
- },
3585
- onAutocompleteMaxVisibleChange: (maxVisible) => {
3586
- this.settingsManager.setAutocompleteMaxVisible(maxVisible);
3587
- this.defaultEditor.setAutocompleteMaxVisible(maxVisible);
3588
- if (this.editor !== this.defaultEditor && this.editor.setAutocompleteMaxVisible !== undefined) {
3589
- this.editor.setAutocompleteMaxVisible(maxVisible);
3590
- }
3591
- },
3592
- onClearOnShrinkChange: (enabled) => {
3593
- this.settingsManager.setClearOnShrink(enabled);
3594
- this.ui.setClearOnShrink(enabled);
3595
- if (!enabled && !this.activeStatusIndicator) {
3596
- this.statusContainer.clear();
3597
- }
3598
- },
3599
- onShowTerminalProgressChange: (enabled) => {
3600
- this.settingsManager.setShowTerminalProgress(enabled);
3601
- },
3602
- onWarningsChange: (warnings) => {
3603
- this.settingsManager.setWarnings(warnings);
3604
- },
3605
- onCancel: () => {
3606
- done();
3607
- this.ui.requestRender();
3608
- },
3609
- });
3610
- return { component: selector, focus: selector.getSettingsList() };
3611
- });
3612
- }
3613
- async handleModelCommand(searchTerm) {
3614
- if (!searchTerm) {
3615
- this.showModelSelector();
3616
- return;
3617
- }
3618
- const model = await this.findExactModelMatch(searchTerm);
3619
- if (model) {
3620
- try {
3621
- await this.session.setModel(model);
3622
- this.footer.invalidate();
3623
- this.updateEditorBorderColor();
3624
- this.showStatus(`Model: ${model.id}`);
3625
- void this.maybeWarnAboutAnthropicSubscriptionAuth(model);
3626
- this.checkDaxnutsEasterEgg(model);
3627
- }
3628
- catch (error) {
3629
- this.showError(error instanceof Error ? error.message : String(error));
3630
- }
3631
- return;
3632
- }
3633
- this.showModelSelector(searchTerm);
3634
- }
3635
- async findExactModelMatch(searchTerm) {
3636
- const models = await this.getModelCandidates();
3637
- return findExactModelReferenceMatch(searchTerm, models);
3638
- }
3639
- async getModelCandidates() {
3640
- if (this.session.scopedModels.length > 0) {
3641
- return this.session.scopedModels.map((scoped) => scoped.model);
3642
- }
3643
- try {
3644
- await this.session.modelRuntime.refresh();
3645
- return [...(await this.session.modelRuntime.getAvailable())];
3646
- }
3647
- catch {
3648
- return [];
3649
- }
3650
- }
3651
- /** Update the footer's available provider count from the current snapshot without refreshing catalogs. */
3652
- updateAvailableProviderCount() {
3653
- const models = this.session.scopedModels.length > 0
3654
- ? this.session.scopedModels.map((scoped) => scoped.model)
3655
- : this.session.modelRuntime.getAvailableSnapshot();
3656
- const uniqueProviders = new Set(models.map((model) => model.provider));
3657
- this.footerDataProvider.setAvailableProviderCount(uniqueProviders.size);
3658
- }
3659
- async maybeWarnAboutAnthropicSubscriptionAuth(model = this.session.model) {
3660
- if (this.settingsManager.getWarnings().anthropicExtraUsage === false) {
3661
- return;
3662
- }
3663
- if (this.anthropicSubscriptionWarningShown) {
3664
- return;
3665
- }
3666
- if (!model || model.provider !== "anthropic") {
3667
- return;
3668
- }
3669
- try {
3670
- if ((await this.session.modelRuntime.checkAuth("anthropic"))?.type === "oauth") {
3671
- this.anthropicSubscriptionWarningShown = true;
3672
- this.showWarning(ANTHROPIC_SUBSCRIPTION_AUTH_WARNING);
3673
- return;
3674
- }
3675
- const apiKey = (await this.session.modelRuntime.getAuth(model.provider))?.auth.apiKey;
3676
- if (!isAnthropicSubscriptionAuthKey(apiKey)) {
3677
- return;
3678
- }
3679
- this.anthropicSubscriptionWarningShown = true;
3680
- this.showWarning(ANTHROPIC_SUBSCRIPTION_AUTH_WARNING);
3681
- }
3682
- catch {
3683
- // Ignore auth lookup failures for warning-only checks.
3684
- }
3685
- }
3686
- maybeSaveImplicitProjectTrustAfterReload() {
3687
- const cwd = this.sessionManager.getCwd();
3688
- if (this.autoTrustOnReloadCwd !== cwd) {
3689
- return false;
3690
- }
3691
- if (!this.settingsManager.isProjectTrusted() || !hasTrustRequiringProjectResources(cwd)) {
3692
- return false;
3693
- }
3694
- const trustStore = new ProjectTrustStore(this.runtimeHost.services.agentDir);
3695
- try {
3696
- if (trustStore.get(cwd) !== null) {
3697
- this.autoTrustOnReloadCwd = undefined;
3698
- return false;
3699
- }
3700
- trustStore.set(cwd, true);
3701
- this.autoTrustOnReloadCwd = undefined;
3702
- return true;
3703
- }
3704
- catch (error) {
3705
- this.showWarning(`Could not save project trust after reload: ${error instanceof Error ? error.message : String(error)}`);
3706
- return false;
3707
- }
3708
- }
3709
- showTrustSelector() {
3710
- const cwd = this.sessionManager.getCwd();
3711
- const trustStore = new ProjectTrustStore(this.runtimeHost.services.agentDir);
3712
- const savedDecision = trustStore.getEntry(cwd);
3713
- this.showSelector((done) => {
3714
- const selector = new TrustSelectorComponent({
3715
- cwd,
3716
- savedDecision,
3717
- projectTrusted: this.settingsManager.isProjectTrusted(),
3718
- onSelect: (selection) => {
3719
- trustStore.setMany(selection.updates);
3720
- done();
3721
- this.showStatus(`Saved trust decision: ${selection.trusted ? "trusted" : "untrusted"}. Restart pi for this to take effect.`);
3722
- },
3723
- onCancel: () => {
3724
- done();
3725
- this.ui.requestRender();
3726
- },
3727
- });
3728
- return { component: selector, focus: selector };
3729
- });
3730
- }
3731
- formatUsageLimitDuration(ms) {
3732
- const totalMinutes = Math.ceil(ms / 60000);
3733
- const hours = Math.floor(totalMinutes / 60);
3734
- const minutes = totalMinutes % 60;
3735
- const parts = [];
3736
- if (hours > 0) parts.push(hours + "h");
3737
- if (minutes > 0 || parts.length === 0) parts.push(minutes + "min");
3738
- return parts.join(" ");
3739
- }
3740
- humanizeUsageLimitError(errorMessage) {
3741
- return String(errorMessage || "").replace(/(~|about\s*)?(\d+)\s*min\b/gi, (_match, prefix, minutes) => {
3742
- return (prefix || "") + this.formatUsageLimitDuration(Number(minutes) * 60 * 1000);
3743
- });
3744
- }
3745
- extractUsageLimitWaitMs(errorMessage) {
3746
- const text = String(errorMessage || "");
3747
- const parsedSeconds = text.match(/"(?:resets_in_seconds|X-Codex-Primary-Reset-After-Seconds|Retry-After)"\s*:?\s*"?(\d+)"?/i)?.[1];
3748
- if (parsedSeconds) return Number(parsedSeconds) * 1000;
3749
- const resetAt = text.match(/"(?:resets_at|X-Codex-Primary-Reset-At)"\s*:?\s*"?(\d+)"?/i)?.[1];
3750
- if (resetAt) {
3751
- const resetMs = Number(resetAt) * 1000 - Date.now();
3752
- if (Number.isFinite(resetMs) && resetMs > 0) return resetMs;
3753
- }
3754
- const hours = text.match(/(?:~|about\s*)?(\d+)\s*h(?:our)?/i)?.[1];
3755
- if (hours) return Number(hours) * 60 * 60 * 1000;
3756
- const minutes = text.match(/(?:~|about\s*)?(\d+)\s*min/i)?.[1];
3757
- if (minutes) return Number(minutes) * 60 * 1000;
3758
- const seconds = text.match(/(?:~|about\s*)?(\d+)\s*s(?:ec|econd)?/i)?.[1];
3759
- if (seconds) return Number(seconds) * 1000;
3760
- return 5 * 60 * 1000;
3761
- }
3762
- getUsageLimitError(event) {
3763
- const last = event?.messages?.[event.messages.length - 1];
3764
- const errorMessage = last?.errorMessage || last?.content?.find?.((block) => block?.type === "text")?.text || "";
3765
- if (last?.role !== "assistant" || last?.stopReason !== "error") return undefined;
3766
- return /usage limit|try again in/i.test(errorMessage) ? String(errorMessage) : undefined;
3767
- }
3768
- removeLastAssistantErrorFromState() {
3769
- const messages = this.agent.state.messages;
3770
- const last = messages[messages.length - 1];
3771
- if (last?.role === "assistant" && last?.stopReason === "error") this.agent.state.messages = messages.slice(0, -1);
3772
- }
3773
- async continueAfterUsageLimitRecovery() {
3774
- try {
3775
- await this.agent.continue();
3776
- } catch (error) {
3777
- this.showError(error instanceof Error ? error.message : String(error));
3778
- }
3779
- }
3780
- maybeShowUsageLimitRecoveryMenu(event) {
3781
- const errorMessage = this.getUsageLimitError(event);
3782
- if (!errorMessage) return;
3783
- const delayMs = this.extractUsageLimitWaitMs(errorMessage);
3784
- const waitLabel = "Wait " + this.formatUsageLimitDuration(delayMs) + " then retry";
3785
- this.showSelector((done) => {
3786
- const selector = new ExtensionSelectorComponent("Usage limit hit", [waitLabel, "Change model and retry", "Cancel"], async (selected) => {
3787
- done();
3788
- if (selected === "Cancel") return;
3789
- this.removeLastAssistantErrorFromState();
3790
- if (selected === waitLabel) {
3791
- const endTime = Date.now() + delayMs;
3792
- const updateCountdown = () => {
3793
- const remaining = Math.max(0, endTime - Date.now());
3794
- this.showStatus("Waiting " + this.formatUsageLimitDuration(remaining) + " for usage limit, then retrying...");
3795
- this.ui.requestRender();
3796
- };
3797
- updateCountdown();
3798
- const countdownInterval = setInterval(updateCountdown, 60000);
3799
- setTimeout(() => { clearInterval(countdownInterval); void this.continueAfterUsageLimitRecovery(); }, delayMs);
3800
- return;
3801
- }
3802
- this.showUsageLimitModelSelector();
3803
- }, () => {
3804
- done();
3805
- this.ui.requestRender();
3806
- }, { tui: this.ui });
3807
- return { component: selector, focus: selector };
3808
- });
3809
- }
3810
- showUsageLimitModelSelector(initialSearchInput) {
3811
- this.showSelector((done) => {
3812
- const selector = new ModelSelectorComponent(this.ui, this.session.model, this.settingsManager, this.session.modelRegistry, this.session.scopedModels, async (model) => {
3813
- try {
3814
- await this.session.setModel(model);
3815
- this.footer.invalidate();
3816
- this.updateEditorBorderColor();
3817
- done();
3818
- this.showStatus("Model: " + model.id + "; retrying...");
3819
- void this.maybeWarnAboutAnthropicSubscriptionAuth(model);
3820
- this.checkDaxnutsEasterEgg(model);
3821
- void this.continueAfterUsageLimitRecovery();
3822
- } catch (error) {
3823
- done();
3824
- this.showError(error instanceof Error ? error.message : String(error));
3825
- }
3826
- }, () => {
3827
- done();
3828
- this.ui.requestRender();
3829
- }, initialSearchInput);
3830
- return { component: selector, focus: selector };
3831
- });
3832
- }
3833
- getPrismReadOnlyToolNames() {
3834
- const readOnly = new Set(["read", "grep", "find", "ls", "obsidian_memory_read", "obsidian_memory_search", "obsidian_memory_list", "web_search", "web_fetch"]);
3835
- return this.session.getActiveToolNames().filter((name) => readOnly.has(name));
3836
- }
3837
- setPrismPlanStatus(enabled) {
3838
- this.prismPlanMode = enabled;
3839
- this.setExtensionStatus("prism-mode", enabled ? "[Plan]" : undefined);
3840
- this.footer.invalidate();
3841
- }
3842
- async startPrismPlanMode(task) {
3843
- if (!this.prismPlanPreviousTools) this.prismPlanPreviousTools = this.session.getActiveToolNames();
3844
- if (this.prismPlanLeafId === undefined) this.prismPlanLeafId = this.session.sessionManager.getLeafId();
3845
- this.session.setActiveToolsByName(this.getPrismReadOnlyToolNames());
3846
- this.setPrismPlanStatus(true);
3847
- globalThis.__PRISM_MANIFEST_TIER_OVERRIDE__ = "plan";
3848
- const prompt = "PLAN MODE ACTIVE. You must only inspect and plan. Do not modify files or run mutating commands. Ask concise clarification questions if needed. When ready, write the full implementation plan, then end with exactly: /plan:ready\n\nTask: " + (task || "Create an implementation plan for the user's next change.");
3849
- await this.session.prompt(prompt);
3850
- }
3851
- getPrismLastAssistantText(event) {
3852
- const last = event?.messages?.[event.messages.length - 1];
3853
- if (last?.role !== "assistant") return "";
3854
- return (last.content || []).map((block) => block?.type === "text" ? block.text || "" : "").join("\n");
3855
- }
3856
- maybeShowPrismPlanApprovalMenu(event) {
3857
- if (!this.prismPlanMode) return;
3858
- const text = this.getPrismLastAssistantText(event);
3859
- if (!text.includes("/plan:ready")) return;
3860
- this.prismPlanText = text.replace("/plan:ready", "").trim();
3861
- this.showSelector((done) => {
3862
- const selector = new ExtensionSelectorComponent("Plan ready", ["Approve -> make changes", "Reject -> add more context", "Cancel plan"], async (selected) => {
3863
- done();
3864
- if (selected.startsWith("Approve")) return void this.approvePrismPlan();
3865
- if (selected.startsWith("Reject")) return this.rejectPrismPlan();
3866
- this.cancelPrismPlan();
3867
- }, () => {
3868
- done();
3869
- this.ui.requestRender();
3870
- }, { tui: this.ui });
3871
- return { component: selector, focus: selector };
3872
- });
3873
- }
3874
- restorePrismPlanTools() {
3875
- if (this.prismPlanPreviousTools) this.session.setActiveToolsByName(this.prismPlanPreviousTools);
3876
- this.prismPlanPreviousTools = undefined;
3877
- if (globalThis.__PRISM_MANIFEST_TIER_OVERRIDE__ === "plan") globalThis.__PRISM_MANIFEST_TIER_OVERRIDE__ = undefined;
3878
- this.setPrismPlanStatus(false);
3879
- }
3880
- restorePrismPlanBranch() {
3881
- if (this.prismPlanLeafId === undefined) return;
3882
- if (this.prismPlanLeafId === null) {
3883
- this.session.sessionManager.resetLeaf();
3884
- } else {
3885
- this.session.sessionManager.branch(this.prismPlanLeafId);
3886
- }
3887
- this.agent.state.messages = this.session.sessionManager.buildSessionContext().messages;
3888
- this.prismPlanLeafId = undefined;
3889
- }
3890
- async approvePrismPlan() {
3891
- if (!this.prismPlanMode) return this.showWarning("No active plan to approve.");
3892
- const planText = this.prismPlanText || "";
3893
- this.prismPlanText = undefined;
3894
- this.restorePrismPlanBranch();
3895
- this.restorePrismPlanTools();
3896
- await this.session.prompt("Implement this plan:\n\n" + planText);
3897
- }
3898
- rejectPrismPlan() {
3899
- if (!this.prismPlanMode) return this.showWarning("No active plan to reject.");
3900
- this.prismPlanText = undefined;
3901
- this.editor.setText("/plan ");
3902
- this.showStatus("Add more context after /plan and submit.");
3903
- this.ui.requestRender();
3904
- }
3905
- cancelPrismPlan() {
3906
- if (!this.prismPlanMode) return this.showWarning("No active plan to cancel.");
3907
- this.restorePrismPlanBranch();
3908
- this.prismPlanText = undefined;
3909
- this.restorePrismPlanTools();
3910
- this.showStatus("Plan cancelled");
3911
- this.ui.requestRender();
3912
- }
3913
- showModelSelector(initialSearchInput) {
3914
- this.showSelector((done) => {
3915
- const selector = new ModelSelectorComponent(this.ui, this.session.model, this.settingsManager, this.session.modelRuntime, this.session.scopedModels, async (model) => {
3916
- try {
3917
- await this.session.setModel(model);
3918
- this.footer.invalidate();
3919
- this.updateEditorBorderColor();
3920
- done();
3921
- this.showStatus(`Model: ${model.id}`);
3922
- void this.maybeWarnAboutAnthropicSubscriptionAuth(model);
3923
- this.checkDaxnutsEasterEgg(model);
3924
- }
3925
- catch (error) {
3926
- done();
3927
- this.showError(error instanceof Error ? error.message : String(error));
3928
- }
3929
- }, () => {
3930
- done();
3931
- this.ui.requestRender();
3932
- }, initialSearchInput);
3933
- return { component: selector, focus: selector };
3934
- });
3935
- }
3936
- async showModelsSelector() {
3937
- // Get all available models
3938
- await this.session.modelRuntime.refresh();
3939
- const allModels = [...(await this.session.modelRuntime.getAvailable())];
3940
- const allModelIds = new Set(allModels.map((model) => `${model.provider}/${model.id}`));
3941
- const configuredPatterns = this.settingsManager.getEnabledModels();
3942
- const sessionScopedModels = this.session.scopedModels;
3943
- if (allModels.length === 0 && !configuredPatterns?.length && sessionScopedModels.length === 0) {
3944
- this.showStatus("No models available");
3945
- return;
3946
- }
3947
- const configuredScope = configuredPatterns?.length
3948
- ? await resolveModelScopeWithDiagnostics(configuredPatterns, this.session.modelRuntime)
3949
- : undefined;
3950
- // Check if session has scoped models (from previous session-only changes or CLI --models)
3951
- const hasSessionScope = sessionScopedModels.length > 0;
3952
- // Build enabled model IDs from session state or settings
3953
- let currentEnabledIds = null;
3954
- if (hasSessionScope) {
3955
- // Use current session's scoped models
3956
- currentEnabledIds = sessionScopedModels.map((scoped) => `${scoped.model.provider}/${scoped.model.id}`);
3957
- }
3958
- else if (configuredScope) {
3959
- currentEnabledIds = configuredScope.scopedModels.map((scoped) => `${scoped.model.provider}/${scoped.model.id}`);
3960
- }
3961
- for (const diagnostic of configuredScope?.diagnostics ?? []) {
3962
- if (diagnostic.code !== "no-match")
3963
- continue;
3964
- currentEnabledIds ??= [];
3965
- if (!currentEnabledIds.includes(diagnostic.pattern))
3966
- currentEnabledIds.push(diagnostic.pattern);
3967
- }
3968
- // Helper to update session's scoped models (session-only, no persist)
3969
- const updateSessionModels = async (enabledIds) => {
3970
- currentEnabledIds = enabledIds === null ? null : [...enabledIds];
3971
- const hasEnabledAvailableModel = enabledIds?.some((id) => allModelIds.has(id)) ?? false;
3972
- const allAvailableModelsEnabled = enabledIds !== null && [...allModelIds].every((id) => enabledIds.includes(id));
3973
- if (enabledIds && hasEnabledAvailableModel && !allAvailableModelsEnabled) {
3974
- const newScopedModels = await resolveModelScope(enabledIds, this.session.modelRuntime);
3975
- this.session.setScopedModels(newScopedModels.map((sm) => ({
3976
- model: sm.model,
3977
- thinkingLevel: sm.thinkingLevel,
3978
- })));
3979
- }
3980
- else {
3981
- // All enabled or none enabled = no filter
3982
- this.session.setScopedModels([]);
3983
- }
3984
- await this.updateAvailableProviderCount();
3985
- this.ui.requestRender();
3986
- };
3987
- this.showSelector((done) => {
3988
- const selector = new ScopedModelsSelectorComponent({
3989
- allModels,
3990
- enabledModelIds: currentEnabledIds,
3991
- }, {
3992
- onChange: async (enabledIds) => {
3993
- await updateSessionModels(enabledIds);
3994
- },
3995
- onPersist: (enabledIds) => {
3996
- // Persist to settings
3997
- const allEnabled = enabledIds !== null &&
3998
- enabledIds.length === allModels.length &&
3999
- enabledIds.every((id) => allModelIds.has(id));
4000
- const newPatterns = enabledIds === null || allEnabled ? undefined : enabledIds;
4001
- this.settingsManager.setEnabledModels(newPatterns ? [...newPatterns] : undefined);
4002
- this.showStatus("Model selection saved to settings");
4003
- },
4004
- onCancel: () => {
4005
- done();
4006
- this.ui.requestRender();
4007
- },
4008
- });
4009
- return { component: selector, focus: selector };
4010
- });
4011
- }
4012
- showUserMessageSelector() {
4013
- const userMessages = this.session.getUserMessagesForForking();
4014
- if (userMessages.length === 0) {
4015
- this.showStatus("No messages to fork from");
4016
- return;
4017
- }
4018
- const initialSelectedId = userMessages[userMessages.length - 1]?.entryId;
4019
- this.showSelector((done) => {
4020
- const selector = new UserMessageSelectorComponent(userMessages.map((m) => ({ id: m.entryId, text: m.text })), async (entryId) => {
4021
- done();
4022
- try {
4023
- const result = await this.runtimeHost.fork(entryId);
4024
- if (result.cancelled) {
4025
- this.ui.requestRender();
4026
- return;
4027
- }
4028
- this.editor.setText(result.selectedText ?? "");
4029
- this.showStatus("Forked to new session");
4030
- }
4031
- catch (error) {
4032
- this.showError(error instanceof Error ? error.message : String(error));
4033
- }
4034
- }, () => {
4035
- done();
4036
- this.ui.requestRender();
4037
- }, initialSelectedId);
4038
- return { component: selector, focus: selector.getMessageList() };
4039
- });
4040
- }
4041
- async handleCloneCommand() {
4042
- const leafId = this.sessionManager.getLeafId();
4043
- if (!leafId) {
4044
- this.showStatus("Nothing to clone yet");
4045
- return;
4046
- }
4047
- try {
4048
- const result = await this.runtimeHost.fork(leafId, { position: "at" });
4049
- if (result.cancelled) {
4050
- this.ui.requestRender();
4051
- return;
4052
- }
4053
- this.editor.setText("");
4054
- this.showStatus("Cloned to new session");
4055
- }
4056
- catch (error) {
4057
- this.showError(error instanceof Error ? error.message : String(error));
4058
- }
4059
- }
4060
- showTreeSelector(initialSelectedId) {
4061
- const tree = this.sessionManager.getTree();
4062
- const realLeafId = this.sessionManager.getLeafId();
4063
- const initialFilterMode = this.settingsManager.getTreeFilterMode();
4064
- if (tree.length === 0) {
4065
- this.showStatus("No entries in session");
4066
- return;
4067
- }
4068
- this.showSelector((done) => {
4069
- const selector = new TreeSelectorComponent(tree, realLeafId, this.ui.terminal.rows, async (entryId) => {
4070
- // Selecting the current leaf is a no-op (already there)
4071
- if (entryId === this.sessionManager.getLeafId()) {
4072
- done();
4073
- this.showStatus("Already at this point");
4074
- return;
4075
- }
4076
- // Ask about summarization
4077
- done(); // Close selector first
4078
- // Loop until user makes a complete choice or cancels to tree
4079
- let wantsSummary = false;
4080
- let customInstructions;
4081
- // Check if we should skip the prompt (user preference to always default to no summary)
4082
- if (!this.settingsManager.getBranchSummarySkipPrompt()) {
4083
- while (true) {
4084
- const summaryChoice = await this.showExtensionSelector("Summarize branch?", [
4085
- "No summary",
4086
- "Summarize",
4087
- "Summarize with custom prompt",
4088
- ]);
4089
- if (summaryChoice === undefined) {
4090
- // User pressed escape - re-show tree selector with same selection
4091
- this.showTreeSelector(entryId);
4092
- return;
4093
- }
4094
- wantsSummary = summaryChoice !== "No summary";
4095
- if (summaryChoice === "Summarize with custom prompt") {
4096
- customInstructions = await this.showExtensionEditor("Custom summarization instructions");
4097
- if (customInstructions === undefined) {
4098
- // User cancelled - loop back to summary selector
4099
- continue;
4100
- }
4101
- }
4102
- // User made a complete choice
4103
- break;
4104
- }
4105
- }
4106
- // The user committed to navigating: stop the active response first.
4107
- if (this.session.isStreaming) {
4108
- this.restoreQueuedMessagesToEditor();
4109
- await this.session.abort();
4110
- }
4111
- // Set up escape handler and status indicator if summarizing
4112
- let showingSummaryIndicator = false;
4113
- const originalOnEscape = this.defaultEditor.onEscape;
4114
- if (wantsSummary) {
4115
- this.defaultEditor.onEscape = () => {
4116
- this.session.abortBranchSummary();
4117
- };
4118
- this.chatContainer.addChild(new Spacer(1));
4119
- this.showStatusIndicator(new BranchSummaryStatusIndicator(this.ui));
4120
- showingSummaryIndicator = true;
4121
- this.ui.requestRender();
4122
- }
4123
- try {
4124
- const result = await this.session.navigateTree(entryId, {
4125
- summarize: wantsSummary,
4126
- customInstructions,
4127
- });
4128
- if (result.aborted) {
4129
- // Summarization aborted - re-show tree selector with same selection
4130
- this.showStatus("Branch summarization cancelled");
4131
- this.showTreeSelector(entryId);
4132
- return;
4133
- }
4134
- if (result.cancelled) {
4135
- this.showStatus("Navigation cancelled");
4136
- return;
4137
- }
4138
- // Update UI
4139
- this.chatContainer.clear();
4140
- this.renderInitialMessages();
4141
- if (result.editorText && !this.editor.getText().trim()) {
4142
- this.editor.setText(result.editorText);
4143
- }
4144
- this.showStatus("Navigated to selected point");
4145
- void this.flushCompactionQueue({ willRetry: false });
4146
- }
4147
- catch (error) {
4148
- this.showError(error instanceof Error ? error.message : String(error));
4149
- }
4150
- finally {
4151
- if (showingSummaryIndicator) {
4152
- this.clearStatusIndicator("branchSummary");
4153
- }
4154
- this.defaultEditor.onEscape = originalOnEscape;
4155
- }
4156
- }, () => {
4157
- done();
4158
- this.ui.requestRender();
4159
- }, (entryId, label) => {
4160
- this.sessionManager.appendLabelChange(entryId, label);
4161
- this.ui.requestRender();
4162
- }, initialSelectedId, initialFilterMode);
4163
- selector.onCopy = async (text) => {
4164
- if (!text) {
4165
- this.showError("Selected entry has no text to copy");
4166
- return;
4167
- }
4168
- try {
4169
- await copyToClipboard(text);
4170
- this.showStatus("Copied selected message to clipboard");
4171
- }
4172
- catch (error) {
4173
- this.showError(error instanceof Error ? error.message : String(error));
4174
- }
4175
- };
4176
- return { component: selector, focus: selector };
4177
- });
4178
- }
4179
- showSessionSelector() {
4180
- this.showSelector((done) => {
4181
- const selector = new SessionSelectorComponent((onProgress) => SessionManager.list(this.sessionManager.getCwd(), this.sessionManager.getSessionDir(), onProgress), (onProgress) => this.sessionManager.usesDefaultSessionDir()
4182
- ? SessionManager.listAll(onProgress)
4183
- : SessionManager.listAll(this.sessionManager.getSessionDir(), onProgress), async (sessionPath) => {
4184
- done();
4185
- await this.handleResumeSession(sessionPath);
4186
- }, () => {
4187
- done();
4188
- this.ui.requestRender();
4189
- }, () => {
4190
- void this.shutdown();
4191
- }, () => this.ui.requestRender(), {
4192
- renameSession: async (sessionFilePath, nextName) => {
4193
- const next = (nextName ?? "").trim();
4194
- if (!next)
4195
- return;
4196
- const mgr = SessionManager.open(sessionFilePath);
4197
- mgr.appendSessionInfo(next);
4198
- },
4199
- showRenameHint: true,
4200
- keybindings: this.keybindings,
4201
- }, this.sessionManager.getSessionFile());
4202
- return { component: selector, focus: selector };
4203
- });
4204
- }
4205
- async handleResumeSession(sessionPath, options) {
4206
- this.clearStatusIndicator();
4207
- try {
4208
- const result = await this.runtimeHost.switchSession(sessionPath, {
4209
- withSession: options?.withSession,
4210
- projectTrustContextFactory: (cwd) => this.createProjectTrustContext(cwd),
4211
- });
4212
- if (result.cancelled) {
4213
- return result;
4214
- }
4215
- this.showStatus("Resumed session");
4216
- return result;
4217
- }
4218
- catch (error) {
4219
- if (error instanceof MissingSessionCwdError) {
4220
- const selectedCwd = await this.promptForMissingSessionCwd(error);
4221
- if (!selectedCwd) {
4222
- this.showStatus("Resume cancelled");
4223
- return { cancelled: true };
4224
- }
4225
- const result = await this.runtimeHost.switchSession(sessionPath, {
4226
- cwdOverride: selectedCwd,
4227
- withSession: options?.withSession,
4228
- projectTrustContextFactory: (cwd) => this.createProjectTrustContext(cwd),
4229
- });
4230
- if (result.cancelled) {
4231
- return result;
4232
- }
4233
- this.showStatus("Resumed session in current cwd");
4234
- return result;
4235
- }
4236
- return this.handleFatalRuntimeError("Failed to resume session", error);
4237
- }
4238
- }
4239
- getLoginProviderOptions(authType) {
4240
- const options = [];
4241
- for (const provider of this.session.modelRuntime.getProviders()) {
4242
- const authStatus = this.session.modelRuntime.getProviderAuthStatus(provider.id);
4243
- const status = authStatus.configured
4244
- ? {
4245
- type: this.session.modelRuntime.isUsingOAuth(provider.id) ? "oauth" : "api_key",
4246
- source: authStatus.label ?? authStatus.source,
4247
- }
4248
- : undefined;
4249
- if ((!authType || authType === "oauth") && provider.auth.oauth) {
4250
- options.push({
4251
- id: provider.id,
4252
- name: provider.name,
4253
- authType: "oauth",
4254
- method: provider.auth.oauth,
4255
- status,
4256
- });
4257
- }
4258
- if ((!authType || authType === "api_key") && provider.auth.apiKey) {
4259
- options.push({
4260
- id: provider.id,
4261
- name: provider.name,
4262
- authType: "api_key",
4263
- method: provider.auth.apiKey,
4264
- status,
4265
- });
4266
- }
4267
- }
4268
- return options.sort((a, b) => a.name.localeCompare(b.name));
4269
- }
4270
- async getLogoutProviderOptions() {
4271
- return (await this.session.modelRuntime.listCredentials())
4272
- .map(({ providerId, type }) => ({
4273
- id: providerId,
4274
- name: this.session.modelRuntime.getProvider(providerId)?.name ?? providerId,
4275
- authType: type,
4276
- status: { type, source: "stored credential" },
4277
- }))
4278
- .sort((a, b) => a.name.localeCompare(b.name));
4279
- }
4280
- findLoginProviderOptions(providerRef) {
4281
- const normalizedProviderRef = providerRef.trim().toLowerCase();
4282
- if (!normalizedProviderRef) {
4283
- return [];
4284
- }
4285
- return this.getLoginProviderOptions().filter((provider) => provider.id.toLowerCase() === normalizedProviderRef ||
4286
- provider.name.toLowerCase() === normalizedProviderRef);
4287
- }
4288
- async handleLoginCommand(providerRef) {
4289
- await this.session.modelRuntime.getAvailable();
4290
- if (!providerRef) {
4291
- this.showLoginAuthTypeSelector();
4292
- return;
4293
- }
4294
- const providerOptions = this.findLoginProviderOptions(providerRef);
4295
- if (providerOptions.length === 1) {
4296
- await this.startProviderLogin(providerOptions[0]);
4297
- return;
4298
- }
4299
- if (providerOptions.length > 1) {
4300
- const providerIds = new Set(providerOptions.map((provider) => provider.id));
4301
- if (providerIds.size === 1) {
4302
- this.showLoginAuthTypeSelector(providerOptions);
4303
- return;
4304
- }
4305
- }
4306
- this.showLoginProviderSelector(undefined, providerRef);
4307
- }
4308
- async startProviderLogin(providerOption) {
4309
- if (providerOption.authType === "oauth") {
4310
- await this.showLoginDialog(providerOption.id, providerOption.name);
4311
- }
4312
- else if (providerOption.method?.login) {
4313
- await this.showApiKeyLoginDialog(providerOption.id, providerOption.name);
4314
- }
4315
- else {
4316
- this.showAmbientAuthDialog(providerOption);
4317
- }
4318
- }
4319
- showLoginAuthTypeSelector(providerOptions) {
4320
- const oauthProvider = providerOptions?.find((provider) => provider.authType === "oauth");
4321
- const oauthLoginLabel = oauthProvider?.method && "loginLabel" in oauthProvider.method ? oauthProvider.method.loginLabel : undefined;
4322
- const subscriptionLabel = oauthLoginLabel ?? "Sign in with an account";
4323
- const apiKeyLabel = "Sign in with an API key";
4324
- const availableAuthTypes = providerOptions
4325
- ? new Set(providerOptions.map((provider) => provider.authType))
4326
- : new Set(["oauth", "api_key"]);
4327
- const options = [];
4328
- if (availableAuthTypes.has("oauth")) {
4329
- options.push(subscriptionLabel);
4330
- }
4331
- if (availableAuthTypes.has("api_key")) {
4332
- options.push(apiKeyLabel);
4333
- }
4334
- if (options.length === 0) {
4335
- this.showStatus("No login methods available.");
4336
- return;
4337
- }
4338
- if (providerOptions && options.length === 1) {
4339
- const providerOption = providerOptions[0];
4340
- if (providerOption) {
4341
- void this.startProviderLogin(providerOption);
4342
- }
4343
- return;
4344
- }
4345
- const title = providerOptions?.[0]
4346
- ? `Select authentication method for ${providerOptions[0].name}:`
4347
- : "Select authentication method:";
4348
- this.showSelector((done) => {
4349
- const selector = new ExtensionSelectorComponent(title, options, (option) => {
4350
- done();
4351
- const authType = option === subscriptionLabel ? "oauth" : "api_key";
4352
- if (providerOptions) {
4353
- const providerOption = providerOptions.find((provider) => provider.authType === authType);
4354
- if (providerOption) {
4355
- void this.startProviderLogin(providerOption);
4356
- }
4357
- return;
4358
- }
4359
- this.showLoginProviderSelector(authType);
4360
- }, () => {
4361
- done();
4362
- this.ui.requestRender();
4363
- });
4364
- return { component: selector, focus: selector };
4365
- });
4366
- }
4367
- showLoginProviderSelector(authType, initialSearchInput) {
4368
- const providerOptions = this.getLoginProviderOptions(authType);
4369
- if (providerOptions.length === 0) {
4370
- const message = authType === "oauth"
4371
- ? "No subscription providers available."
4372
- : authType === "api_key"
4373
- ? "No API key providers available."
4374
- : "No login providers available.";
4375
- this.showStatus(message);
4376
- return;
4377
- }
4378
- this.showSelector((done) => {
4379
- const selector = new OAuthSelectorComponent("login", providerOptions, async (providerId, selectedAuthType) => {
4380
- done();
4381
- const providerOption = providerOptions.find((provider) => provider.id === providerId && provider.authType === selectedAuthType);
4382
- if (!providerOption) {
4383
- return;
4384
- }
4385
- await this.startProviderLogin(providerOption);
4386
- }, () => {
4387
- done();
4388
- if (authType) {
4389
- this.showLoginAuthTypeSelector();
4390
- }
4391
- else {
4392
- this.ui.requestRender();
4393
- }
4394
- }, initialSearchInput);
4395
- return { component: selector, focus: selector };
4396
- });
4397
- }
4398
- async showOAuthSelector(mode) {
4399
- if (mode === "login") {
4400
- this.showLoginAuthTypeSelector();
4401
- return;
4402
- }
4403
- const providerOptions = await this.getLogoutProviderOptions();
4404
- if (providerOptions.length === 0) {
4405
- this.showStatus("No stored credentials to remove. /logout only removes credentials saved by /login; environment variables and models.json config are unchanged.");
4406
- return;
4407
- }
4408
- this.showSelector((done) => {
4409
- const selector = new OAuthSelectorComponent(mode, providerOptions, async (providerId) => {
4410
- done();
4411
- const providerOption = providerOptions.find((provider) => provider.id === providerId);
4412
- if (!providerOption) {
4413
- return;
4414
- }
4415
- try {
4416
- await this.session.modelRuntime.logout(providerOption.id);
4417
- await this.updateAvailableProviderCount();
4418
- const message = providerOption.authType === "oauth"
4419
- ? `Logged out of ${providerOption.name}`
4420
- : `Removed stored API key for ${providerOption.name}. Environment variables and models.json config are unchanged.`;
4421
- this.showStatus(message);
4422
- }
4423
- catch (error) {
4424
- this.showError(`Logout failed: ${error instanceof Error ? error.message : String(error)}`);
4425
- }
4426
- }, () => {
4427
- done();
4428
- this.ui.requestRender();
4429
- });
4430
- return { component: selector, focus: selector };
4431
- });
4432
- }
4433
- async completeProviderAuthentication(providerId, providerName, authType, previousModel) {
4434
- await this.session.modelRuntime.getAvailable();
4435
- const actionLabel = authType === "oauth" ? `Logged in to ${providerName}` : `Saved API key for ${providerName}`;
4436
- let selectedModel;
4437
- let selectionError;
4438
- if (isUnknownModel(previousModel)) {
4439
- const availableModels = await this.session.modelRuntime.getAvailable();
4440
- const providerModels = availableModels.filter((model) => model.provider === providerId);
4441
- if (!hasDefaultModelProvider(providerId)) {
4442
- selectionError = `${actionLabel}, but no default model is configured for provider "${providerId}". Use /model to select a model.`;
4443
- }
4444
- else if (providerModels.length === 0) {
4445
- selectionError = `${actionLabel}, but no models are available for that provider. Use /model to select a model.`;
4446
- }
4447
- else {
4448
- const defaultModelId = defaultModelPerProvider[providerId];
4449
- selectedModel = providerModels.find((model) => model.id === defaultModelId);
4450
- if (!selectedModel) {
4451
- selectionError = `${actionLabel}, but its default model "${defaultModelId}" is not available. Use /model to select a model.`;
4452
- }
4453
- else {
4454
- try {
4455
- await this.session.setModel(selectedModel);
4456
- }
4457
- catch (error) {
4458
- selectedModel = undefined;
4459
- const errorMessage = error instanceof Error ? error.message : String(error);
4460
- selectionError = `${actionLabel}, but selecting its default model failed: ${errorMessage}. Use /model to select a model.`;
4461
- }
4462
- }
4463
- }
4464
- }
4465
- await this.updateAvailableProviderCount();
4466
- this.footer.invalidate();
4467
- this.updateEditorBorderColor();
4468
- if (selectedModel) {
4469
- this.showStatus(`${actionLabel}. Selected ${selectedModel.id}. Credentials saved to ${getAuthPath()}`);
4470
- void this.maybeWarnAboutAnthropicSubscriptionAuth(selectedModel);
4471
- this.checkDaxnutsEasterEgg(selectedModel);
4472
- }
4473
- else {
4474
- this.showStatus(`${actionLabel}. Credentials saved to ${getAuthPath()}`);
4475
- if (selectionError) {
4476
- this.showError(selectionError);
4477
- }
4478
- else {
4479
- void this.maybeWarnAboutAnthropicSubscriptionAuth();
4480
- }
4481
- }
4482
- }
4483
- showAmbientAuthDialog(providerOption) {
4484
- const restoreEditor = () => {
4485
- this.editorContainer.clear();
4486
- this.editorContainer.addChild(this.editor);
4487
- this.ui.setFocus(this.editor);
4488
- this.ui.requestRender();
4489
- };
4490
- const dialog = new LoginDialogComponent(this.ui, providerOption.id, () => restoreEditor(), providerOption.name, `${providerOption.name} setup`);
4491
- dialog.showInfo(`${providerOption.method?.name ?? "Authentication"} is configured outside pi.`, [], true);
4492
- this.editorContainer.clear();
4493
- this.editorContainer.addChild(dialog);
4494
- this.ui.setFocus(dialog);
4495
- this.ui.requestRender();
4496
- }
4497
- async showApiKeyLoginDialog(providerId, providerName) {
4498
- const previousModel = this.session.model;
4499
- const dialog = new LoginDialogComponent(this.ui, providerId, (_success, _message) => {
4500
- // Completion handled below
4501
- }, providerName);
4502
- if (providerId === "amazon-bedrock") {
4503
- dialog.showDetails([
4504
- theme.fg("text", "You can also use an AWS profile, IAM keys, or role-based credentials."),
4505
- theme.fg("muted", "See:"),
4506
- theme.fg("accent", ` ${path.join(getDocsPath(), "providers.md")}`),
4507
- ]);
4508
- }
4509
- this.editorContainer.clear();
4510
- this.editorContainer.addChild(dialog);
4511
- this.ui.setFocus(dialog);
4512
- this.ui.requestRender();
4513
- const restoreEditor = () => {
4514
- this.editorContainer.clear();
4515
- this.editorContainer.addChild(this.editor);
4516
- this.ui.setFocus(this.editor);
4517
- this.ui.requestRender();
4518
- };
4519
- try {
4520
- await this.loginProvider(dialog, providerId, "api_key");
4521
- restoreEditor();
4522
- await this.completeProviderAuthentication(providerId, providerName, "api_key", previousModel);
4523
- }
4524
- catch (error) {
4525
- restoreEditor();
4526
- const errorMsg = error instanceof Error ? error.message : String(error);
4527
- if (errorMsg !== "Login cancelled") {
4528
- this.showError(`Failed to save API key for ${providerName}: ${errorMsg}`);
4529
- }
4530
- }
4531
- }
4532
- showAuthSelect(dialog, prompt) {
4533
- return new Promise((resolve, reject) => {
4534
- const restoreDialog = () => {
4535
- this.editorContainer.clear();
4536
- this.editorContainer.addChild(dialog);
4537
- this.ui.setFocus(dialog);
4538
- this.ui.requestRender();
4539
- };
4540
- const labels = prompt.options.map((option) => option.label);
4541
- const selector = new ExtensionSelectorComponent(prompt.message, labels, (optionLabel) => {
4542
- restoreDialog();
4543
- const id = prompt.options.find((option) => option.label === optionLabel)?.id;
4544
- if (id)
4545
- resolve(id);
4546
- else
4547
- reject(new Error("Login cancelled"));
4548
- }, () => {
4549
- restoreDialog();
4550
- reject(new Error("Login cancelled"));
4551
- });
4552
- this.editorContainer.clear();
4553
- this.editorContainer.addChild(selector);
4554
- this.ui.setFocus(selector);
4555
- this.ui.requestRender();
4556
- });
4557
- }
4558
- async showAuthPrompt(dialog, prompt) {
4559
- let response;
4560
- if (prompt.type === "select") {
4561
- response = this.showAuthSelect(dialog, prompt);
4562
- }
4563
- else if (prompt.type === "manual_code") {
4564
- response = dialog.showManualInput(prompt.message);
4565
- }
4566
- else {
4567
- response = dialog.showPrompt(prompt.message, prompt.placeholder);
4568
- }
4569
- if (!prompt.signal)
4570
- return response;
4571
- if (prompt.signal.aborted)
4572
- throw new Error("Login cancelled");
4573
- const signal = prompt.signal;
4574
- let onAbort;
4575
- const aborted = new Promise((_resolve, reject) => {
4576
- onAbort = () => reject(new Error("Login cancelled"));
4577
- signal.addEventListener("abort", onAbort, { once: true });
4578
- });
4579
- try {
4580
- return await Promise.race([response, aborted]);
4581
- }
4582
- finally {
4583
- if (onAbort)
4584
- signal.removeEventListener("abort", onAbort);
4585
- }
4586
- }
4587
- notifyAuthDialog(dialog, event) {
4588
- if (event.type === "auth_url") {
4589
- dialog.showAuth(event.url, event.instructions);
4590
- }
4591
- else if (event.type === "device_code") {
4592
- dialog.showDeviceCode(event);
4593
- dialog.showWaiting("Waiting for authentication...");
4594
- }
4595
- else if (event.type === "info") {
4596
- dialog.showInfo(event.message, event.links);
4597
- }
4598
- else {
4599
- dialog.showProgress(event.message);
4600
- }
4601
- }
4602
- async loginProvider(dialog, providerId, method) {
4603
- await this.session.modelRuntime.login(providerId, method, {
4604
- signal: dialog.signal,
4605
- prompt: (prompt) => this.showAuthPrompt(dialog, prompt),
4606
- notify: (event) => this.notifyAuthDialog(dialog, event),
4607
- });
4608
- }
4609
- async showLoginDialog(providerId, providerName) {
4610
- const previousModel = this.session.model;
4611
- const dialog = new LoginDialogComponent(this.ui, providerId, (_success, _message) => { }, providerName);
4612
- this.editorContainer.clear();
4613
- this.editorContainer.addChild(dialog);
4614
- this.ui.setFocus(dialog);
4615
- this.ui.requestRender();
4616
- const restoreEditor = () => {
4617
- this.editorContainer.clear();
4618
- this.editorContainer.addChild(this.editor);
4619
- this.ui.setFocus(this.editor);
4620
- this.ui.requestRender();
4621
- };
4622
- try {
4623
- await this.loginProvider(dialog, providerId, "oauth");
4624
- restoreEditor();
4625
- await this.completeProviderAuthentication(providerId, providerName, "oauth", previousModel);
4626
- }
4627
- catch (error) {
4628
- restoreEditor();
4629
- const errorMsg = error instanceof Error ? error.message : String(error);
4630
- if (errorMsg !== "Login cancelled") {
4631
- this.showError(`Failed to login to ${providerName}: ${errorMsg}`);
4632
- }
4633
- }
4634
- }
4635
- // =========================================================================
4636
- // Command handlers
4637
- // =========================================================================
4638
- async handleReloadCommand() {
4639
- if (this.session.isStreaming) {
4640
- this.showWarning("Wait for the current response to finish before reloading.");
4641
- return;
4642
- }
4643
- if (this.session.isCompacting) {
4644
- this.showWarning("Wait for compaction to finish before reloading.");
4645
- return;
4646
- }
4647
- this.resetExtensionUI();
4648
- const reloadBox = new Container();
4649
- const borderColor = (s) => theme.fg("border", s);
4650
- reloadBox.addChild(new DynamicBorder(borderColor));
4651
- reloadBox.addChild(new Spacer(1));
4652
- reloadBox.addChild(new Text(theme.fg("muted", "Reloading keybindings, extensions, skills, prompts, themes, and context files..."), 1, 0));
4653
- reloadBox.addChild(new Spacer(1));
4654
- reloadBox.addChild(new DynamicBorder(borderColor));
4655
- const previousEditor = this.editor;
4656
- this.editorContainer.clear();
4657
- this.editorContainer.addChild(reloadBox);
4658
- this.ui.setFocus(reloadBox);
4659
- this.ui.requestRender(true);
4660
- await new Promise((resolve) => process.nextTick(resolve));
4661
- const dismissReloadBox = (editor) => {
4662
- this.editorContainer.clear();
4663
- this.editorContainer.addChild(editor);
4664
- this.ui.setFocus(editor);
4665
- this.ui.requestRender();
4666
- };
4667
- let chatRestoredBeforeSessionStart = false;
4668
- let reloadBoxDismissed = false;
4669
- const restoreChatBeforeSessionStart = () => {
4670
- if (chatRestoredBeforeSessionStart) {
4671
- return;
4672
- }
4673
- this.hideThinkingBlock = this.settingsManager.getHideThinkingBlock();
4674
- this.outputPad = this.settingsManager.getOutputPad();
4675
- this.rebuildChatFromMessages();
4676
- chatRestoredBeforeSessionStart = true;
4677
- };
4678
- try {
4679
- await this.session.reload({ beforeSessionStart: restoreChatBeforeSessionStart });
4680
- restoreChatBeforeSessionStart();
4681
- configureHttpDispatcher(this.settingsManager.getHttpIdleTimeoutMs());
4682
- this.keybindings.reload();
4683
- const activeHeader = this.customHeader ?? this.builtInHeader;
4684
- if (isExpandable(activeHeader)) {
4685
- activeHeader.setExpanded(this.toolOutputExpanded);
4686
- }
4687
- setRegisteredThemes(this.session.resourceLoader.getThemes().themes);
4688
- await this.themeController.applyFromSettings();
4689
- const editorPaddingX = this.settingsManager.getEditorPaddingX();
4690
- const autocompleteMaxVisible = this.settingsManager.getAutocompleteMaxVisible();
4691
- this.defaultEditor.setPaddingX(editorPaddingX);
4692
- this.defaultEditor.setAutocompleteMaxVisible(autocompleteMaxVisible);
4693
- if (this.editor !== this.defaultEditor) {
4694
- this.editor.setPaddingX?.(editorPaddingX);
4695
- this.editor.setAutocompleteMaxVisible?.(autocompleteMaxVisible);
4696
- }
4697
- this.ui.setShowHardwareCursor(this.settingsManager.getShowHardwareCursor());
4698
- const clearOnShrink = this.settingsManager.getClearOnShrink();
4699
- this.ui.setClearOnShrink(clearOnShrink);
4700
- if (!clearOnShrink && !this.activeStatusIndicator) {
4701
- this.statusContainer.clear();
4702
- }
4703
- this.setupAutocompleteProvider();
4704
- const runner = this.session.extensionRunner;
4705
- this.setupExtensionShortcuts(runner);
4706
- this.showLoadedResources({
4707
- force: false,
4708
- showDiagnosticsWhenQuiet: true,
4709
- });
4710
- const savedImplicitProjectTrust = this.maybeSaveImplicitProjectTrustAfterReload();
4711
- const modelsJsonError = this.session.modelRuntime.getError();
4712
- if (modelsJsonError) {
4713
- this.showError(`models.json error: ${modelsJsonError}`);
4714
- }
4715
- this.showStatus(savedImplicitProjectTrust
4716
- ? "Reloaded keybindings, extensions, skills, prompts, themes, and context files; saved project trust"
4717
- : "Reloaded keybindings, extensions, skills, prompts, themes, and context files");
4718
- dismissReloadBox(this.editor);
4719
- reloadBoxDismissed = true;
4720
- }
4721
- catch (error) {
4722
- if (!reloadBoxDismissed) {
4723
- dismissReloadBox(previousEditor);
4724
- }
4725
- this.showError(`Reload failed: ${error instanceof Error ? error.message : String(error)}`);
4726
- }
4727
- }
4728
- async handleExportCommand(text) {
4729
- const outputPath = this.getPathCommandArgument(text, "/export");
4730
- try {
4731
- if (outputPath?.endsWith(".jsonl")) {
4732
- const filePath = this.session.exportToJsonl(outputPath);
4733
- this.showStatus(`Session exported to: ${filePath}`);
4734
- }
4735
- else {
4736
- const filePath = await this.session.exportToHtml(outputPath);
4737
- this.showStatus(`Session exported to: ${filePath}`);
4738
- }
4739
- }
4740
- catch (error) {
4741
- this.showError(`Failed to export session: ${error instanceof Error ? error.message : "Unknown error"}`);
4742
- }
4743
- }
4744
- getPathCommandArgument(text, command) {
4745
- if (text === command) {
4746
- return undefined;
4747
- }
4748
- if (!text.startsWith(`${command} `)) {
4749
- return undefined;
4750
- }
4751
- const argsString = text.slice(command.length + 1).trimStart();
4752
- if (!argsString) {
4753
- return undefined;
4754
- }
4755
- const firstChar = argsString[0];
4756
- if (firstChar === '"' || firstChar === "'") {
4757
- const closingQuoteIndex = argsString.indexOf(firstChar, 1);
4758
- if (closingQuoteIndex < 0) {
4759
- return undefined;
4760
- }
4761
- return argsString.slice(1, closingQuoteIndex);
4762
- }
4763
- const firstWhitespaceIndex = argsString.search(/\s/);
4764
- if (firstWhitespaceIndex < 0) {
4765
- return argsString;
4766
- }
4767
- return argsString.slice(0, firstWhitespaceIndex);
4768
- }
4769
- async handleImportCommand(text) {
4770
- const inputPath = this.getPathCommandArgument(text, "/import");
4771
- if (!inputPath) {
4772
- this.showError("Usage: /import <path.jsonl>");
4773
- return;
4774
- }
4775
- const confirmed = await this.showExtensionConfirm("Import session", `Replace current session with ${inputPath}?`);
4776
- if (!confirmed) {
4777
- this.showStatus("Import cancelled");
4778
- return;
4779
- }
4780
- try {
4781
- this.clearStatusIndicator();
4782
- const result = await this.runtimeHost.importFromJsonl(inputPath);
4783
- if (result.cancelled) {
4784
- this.showStatus("Import cancelled");
4785
- return;
4786
- }
4787
- this.showStatus(`Session imported from: ${inputPath}`);
4788
- }
4789
- catch (error) {
4790
- if (error instanceof MissingSessionCwdError) {
4791
- const selectedCwd = await this.promptForMissingSessionCwd(error);
4792
- if (!selectedCwd) {
4793
- this.showStatus("Import cancelled");
4794
- return;
4795
- }
4796
- const result = await this.runtimeHost.importFromJsonl(inputPath, selectedCwd);
4797
- if (result.cancelled) {
4798
- this.showStatus("Import cancelled");
4799
- return;
4800
- }
4801
- this.showStatus(`Session imported from: ${inputPath}`);
4802
- return;
4803
- }
4804
- if (error instanceof SessionImportFileNotFoundError) {
4805
- this.showError(`Failed to import session: ${error.message}`);
4806
- return;
4807
- }
4808
- await this.handleFatalRuntimeError("Failed to import session", error);
4809
- }
4810
- }
4811
- async handleShareCommand() {
4812
- // Check if gh is available and logged in
4813
- try {
4814
- const authResult = spawnSync("gh", ["auth", "status"], { encoding: "utf-8" });
4815
- if (authResult.status !== 0) {
4816
- this.showError("GitHub CLI is not logged in. Run 'gh auth login' first.");
4817
- return;
4818
- }
4819
- }
4820
- catch {
4821
- this.showError("GitHub CLI (gh) is not installed. Install it from https://cli.github.com/");
4822
- return;
4823
- }
4824
- // Export to a temp file
4825
- const tmpFile = path.join(os.tmpdir(), "session.html");
4826
- try {
4827
- await this.session.exportToHtml(tmpFile);
4828
- }
4829
- catch (error) {
4830
- this.showError(`Failed to export session: ${error instanceof Error ? error.message : "Unknown error"}`);
4831
- return;
4832
- }
4833
- // Show cancellable loader, replacing the editor
4834
- const loader = new BorderedLoader(this.ui, theme, "Creating gist...");
4835
- this.editorContainer.clear();
4836
- this.editorContainer.addChild(loader);
4837
- this.ui.setFocus(loader);
4838
- this.ui.requestRender();
4839
- const restoreEditor = () => {
4840
- loader.dispose();
4841
- this.editorContainer.clear();
4842
- this.editorContainer.addChild(this.editor);
4843
- this.ui.setFocus(this.editor);
4844
- try {
4845
- fs.unlinkSync(tmpFile);
4846
- }
4847
- catch {
4848
- // Ignore cleanup errors
4849
- }
4850
- };
4851
- // Create a secret gist asynchronously
4852
- let proc = null;
4853
- loader.onAbort = () => {
4854
- proc?.kill();
4855
- restoreEditor();
4856
- this.showStatus("Share cancelled");
4857
- };
4858
- try {
4859
- const result = await new Promise((resolve) => {
4860
- proc = spawn("gh", ["gist", "create", "--public=false", tmpFile]);
4861
- let stdout = "";
4862
- let stderr = "";
4863
- proc.stdout?.on("data", (data) => {
4864
- stdout += data.toString();
4865
- });
4866
- proc.stderr?.on("data", (data) => {
4867
- stderr += data.toString();
4868
- });
4869
- proc.on("close", (code) => resolve({ stdout, stderr, code }));
4870
- });
4871
- if (loader.signal.aborted)
4872
- return;
4873
- restoreEditor();
4874
- if (result.code !== 0) {
4875
- const errorMsg = result.stderr?.trim() || "Unknown error";
4876
- this.showError(`Failed to create gist: ${errorMsg}`);
4877
- return;
4878
- }
4879
- // Extract gist ID from the URL returned by gh
4880
- // gh returns something like: https://gist.github.com/username/GIST_ID
4881
- const gistUrl = result.stdout?.trim();
4882
- const gistId = gistUrl?.split("/").pop();
4883
- if (!gistId) {
4884
- this.showError("Failed to parse gist ID from gh output");
4885
- return;
4886
- }
4887
- // Create the preview URL
4888
- const previewUrl = getShareViewerUrl(gistId);
4889
- this.showStatus(`Share URL: ${previewUrl}\nGist: ${gistUrl}`);
4890
- }
4891
- catch (error) {
4892
- if (!loader.signal.aborted) {
4893
- restoreEditor();
4894
- this.showError(`Failed to create gist: ${error instanceof Error ? error.message : "Unknown error"}`);
4895
- }
4896
- }
4897
- }
4898
- async handleCopyCommand() {
4899
- const text = this.session.getLastAssistantText();
4900
- if (!text) {
4901
- this.showError("No agent messages to copy yet.");
4902
- return;
4903
- }
4904
- try {
4905
- await copyToClipboard(text);
4906
- this.showStatus("Copied last agent message to clipboard");
4907
- }
4908
- catch (error) {
4909
- this.showError(error instanceof Error ? error.message : String(error));
4910
- }
4911
- }
4912
- handleNameCommand(text) {
4913
- const name = text.replace(/^\/name\s*/, "").trim();
4914
- if (!name) {
4915
- const currentName = this.sessionManager.getSessionName();
4916
- if (currentName) {
4917
- this.chatContainer.addChild(new Spacer(1));
4918
- this.chatContainer.addChild(new Text(theme.fg("dim", `Session name: ${currentName}`), 1, 0));
4919
- }
4920
- else {
4921
- this.showWarning("Usage: /name <name>");
4922
- }
4923
- this.ui.requestRender();
4924
- return;
4925
- }
4926
- this.session.setSessionName(name);
4927
- const sessionName = this.sessionManager.getSessionName();
4928
- if (sessionName !== name) {
4929
- this.showWarning(`Session name was normalized from ${JSON.stringify(name)} to ${JSON.stringify(sessionName)}`);
4930
- }
4931
- this.chatContainer.addChild(new Spacer(1));
4932
- this.chatContainer.addChild(new Text(theme.fg("dim", `Session name set: ${sessionName ?? name}`), 1, 0));
4933
- this.ui.requestRender();
4934
- }
4935
- handleSessionCommand() {
4936
- const stats = this.session.getSessionStats();
4937
- const sessionName = this.sessionManager.getSessionName();
4938
- const entries = this.sessionManager.getEntries();
4939
- const cacheWaste = computeCacheWaste(entries, this.session.modelRuntime);
4940
- // Cost/token totals per provider/model actually used (e.g. OpenRouter `auto`
4941
- // resolves to a concrete responseModel). Usage without model attribution is
4942
- // grouped separately so the breakdown reconciles with the session total.
4943
- const usageBreakdown = getUsageCostBreakdown(entries);
4944
- let info = `${theme.bold("Session Info")}\n\n`;
4945
- if (sessionName) {
4946
- info += `${theme.fg("dim", "Name:")} ${sessionName}\n`;
4947
- }
4948
- info += `${theme.fg("dim", "File:")} ${stats.sessionFile ?? "In-memory"}\n`;
4949
- info += `${theme.fg("dim", "ID:")} ${stats.sessionId}\n\n`;
4950
- info += `${theme.bold("Messages")}\n`;
4951
- info += `${theme.fg("dim", "Total:")} ${stats.totalMessages}\n`;
4952
- info += `${theme.fg("dim", "User:")} ${stats.userMessages}\n`;
4953
- info += `${theme.fg("dim", "Assistant:")} ${stats.assistantMessages}\n`;
4954
- info += `${theme.fg("dim", "Tools:")} ${stats.toolCalls} calls, ${stats.toolResults} results\n\n`;
4955
- info += `${theme.bold("Tokens")}\n`;
4956
- // "Input" is the full prompt volume. With cache activity, split it into
4957
- // cached (served from cache) vs uncached (everything else) - the only
4958
- // provider-independent split. Cache writes, where reported, are a detail
4959
- // of the uncached portion.
4960
- const { input, cacheRead, cacheWrite } = stats.tokens;
4961
- const promptTokens = input + cacheRead + cacheWrite;
4962
- info += `${theme.fg("dim", "Input:")} ${promptTokens.toLocaleString()}\n`;
4963
- if (promptTokens > 0 && (cacheRead > 0 || cacheWrite > 0)) {
4964
- const hitRate = theme.fg("dim", `(${((cacheRead / promptTokens) * 100).toFixed(1)}%)`);
4965
- info += ` ${theme.fg("dim", "Cached:")} ${cacheRead.toLocaleString()} ${hitRate}\n`;
4966
- const written = cacheWrite > 0 ? ` ${theme.fg("dim", `(${cacheWrite.toLocaleString()} written to cache)`)}` : "";
4967
- info += ` ${theme.fg("dim", "Uncached:")} ${(input + cacheWrite).toLocaleString()}${written}\n`;
4968
- }
4969
- info += `${theme.fg("dim", "Output:")} ${stats.tokens.output.toLocaleString()}\n`;
4970
- info += `${theme.fg("dim", "Total:")} ${stats.tokens.total.toLocaleString()}\n`;
4971
- if (stats.cost > 0 || cacheWaste.missedTokens > 0) {
4972
- info += `\n${theme.bold("Cost")}\n`;
4973
- info += `${theme.fg("dim", "Total:")} $${stats.cost.toFixed(3)}`;
4974
- if (usageBreakdown.length > 1) {
4975
- for (const entry of usageBreakdown) {
4976
- info += `\n ${theme.fg("dim", `${entry.key}:`)} $${entry.cost.toFixed(3)} ${theme.fg("dim", `(${formatTokens(entry.tokens)} tokens)`)}`;
4977
- }
4978
- }
4979
- if (cacheWaste.missedTokens > 0) {
4980
- const missLabel = cacheWaste.missCount === 1 ? "1 miss" : `${cacheWaste.missCount} misses`;
4981
- const detail = `${cacheWaste.missedTokens.toLocaleString()} tokens, ${missLabel}`;
4982
- info +=
4983
- cacheWaste.missedCost >= 0.0001
4984
- ? `\n${theme.fg("dim", "Cache Re-billed:")} $${cacheWaste.missedCost.toFixed(3)} ${theme.fg("dim", `(${detail})`)}`
4985
- : `\n${theme.fg("dim", "Cache Re-billed:")} ${detail}`;
4986
- }
4987
- }
4988
- this.chatContainer.addChild(new Spacer(1));
4989
- this.chatContainer.addChild(new Text(info, 1, 0));
4990
- this.ui.requestRender();
4991
- }
4992
- handleChangelogCommand() {
4993
- const changelogPath = getChangelogPath();
4994
- const allEntries = parseChangelog(changelogPath);
4995
- const changelogMarkdown = allEntries.length > 0
4996
- ? allEntries
4997
- .reverse()
4998
- .map((e) => normalizeChangelogLinks(e.content, e))
4999
- .join("\n\n")
5000
- : "No changelog entries found.";
5001
- this.chatContainer.addChild(new Spacer(1));
5002
- this.chatContainer.addChild(new DynamicBorder());
5003
- this.chatContainer.addChild(new Text(theme.bold(theme.fg("accent", "What's New")), 1, 0));
5004
- this.chatContainer.addChild(new Spacer(1));
5005
- this.chatContainer.addChild(new Markdown(changelogMarkdown, 1, 1, this.getMarkdownThemeWithSettings()));
5006
- this.chatContainer.addChild(new DynamicBorder());
5007
- this.ui.requestRender();
5008
- }
5009
- /**
5010
- * Get capitalized display string for an app keybinding action.
5011
- */
5012
- getAppKeyDisplay(action) {
5013
- return keyDisplayText(action);
5014
- }
5015
- /**
5016
- * Get capitalized display string for an editor keybinding action.
5017
- */
5018
- getEditorKeyDisplay(action) {
5019
- return keyDisplayText(action);
5020
- }
5021
- handleHotkeysCommand() {
5022
- // Navigation keybindings
5023
- const cursorUp = this.getEditorKeyDisplay("tui.editor.cursorUp");
5024
- const cursorDown = this.getEditorKeyDisplay("tui.editor.cursorDown");
5025
- const cursorLeft = this.getEditorKeyDisplay("tui.editor.cursorLeft");
5026
- const cursorRight = this.getEditorKeyDisplay("tui.editor.cursorRight");
5027
- const cursorWordLeft = this.getEditorKeyDisplay("tui.editor.cursorWordLeft");
5028
- const cursorWordRight = this.getEditorKeyDisplay("tui.editor.cursorWordRight");
5029
- const cursorLineStart = this.getEditorKeyDisplay("tui.editor.cursorLineStart");
5030
- const cursorLineEnd = this.getEditorKeyDisplay("tui.editor.cursorLineEnd");
5031
- const jumpForward = this.getEditorKeyDisplay("tui.editor.jumpForward");
5032
- const jumpBackward = this.getEditorKeyDisplay("tui.editor.jumpBackward");
5033
- const pageUp = this.getEditorKeyDisplay("tui.editor.pageUp");
5034
- const pageDown = this.getEditorKeyDisplay("tui.editor.pageDown");
5035
- // Editing keybindings
5036
- const submit = this.getEditorKeyDisplay("tui.input.submit");
5037
- const newLine = this.getEditorKeyDisplay("tui.input.newLine");
5038
- const deleteWordBackward = this.getEditorKeyDisplay("tui.editor.deleteWordBackward");
5039
- const deleteWordForward = this.getEditorKeyDisplay("tui.editor.deleteWordForward");
5040
- const deleteToLineStart = this.getEditorKeyDisplay("tui.editor.deleteToLineStart");
5041
- const deleteToLineEnd = this.getEditorKeyDisplay("tui.editor.deleteToLineEnd");
5042
- const yank = this.getEditorKeyDisplay("tui.editor.yank");
5043
- const yankPop = this.getEditorKeyDisplay("tui.editor.yankPop");
5044
- const undo = this.getEditorKeyDisplay("tui.editor.undo");
5045
- const tab = this.getEditorKeyDisplay("tui.input.tab");
5046
- // App keybindings
5047
- const interrupt = this.getAppKeyDisplay("app.interrupt");
5048
- const clear = this.getAppKeyDisplay("app.clear");
5049
- const exit = this.getAppKeyDisplay("app.exit");
5050
- const suspend = this.getAppKeyDisplay("app.suspend");
5051
- const cycleThinkingLevel = this.getAppKeyDisplay("app.thinking.cycle");
5052
- const cycleModelForward = this.getAppKeyDisplay("app.model.cycleForward");
5053
- const selectModel = this.getAppKeyDisplay("app.model.select");
5054
- const expandTools = this.getAppKeyDisplay("app.tools.expand");
5055
- const toggleThinking = this.getAppKeyDisplay("app.thinking.toggle");
5056
- const externalEditor = this.getAppKeyDisplay("app.editor.external");
5057
- const cycleModelBackward = this.getAppKeyDisplay("app.model.cycleBackward");
5058
- const copyMessage = this.getAppKeyDisplay("app.message.copy");
5059
- const followUp = this.getAppKeyDisplay("app.message.followUp");
5060
- const dequeue = this.getAppKeyDisplay("app.message.dequeue");
5061
- const pasteImage = this.getAppKeyDisplay("app.clipboard.pasteImage");
5062
- let hotkeys = `
5063
- **Navigation**
5064
- | Key | Action |
5065
- |-----|--------|
5066
- | \`${cursorUp}\` / \`${cursorDown}\` / \`${cursorLeft}\` / \`${cursorRight}\` | Move cursor / browse history |
5067
- | \`${cursorWordLeft}\` / \`${cursorWordRight}\` | Move by word |
5068
- | \`${cursorLineStart}\` | Start of line |
5069
- | \`${cursorLineEnd}\` | End of line |
5070
- | \`${jumpForward}\` | Jump forward to character |
5071
- | \`${jumpBackward}\` | Jump backward to character |
5072
- | \`${pageUp}\` / \`${pageDown}\` | Scroll by page |
5073
-
5074
- **Editing**
5075
- | Key | Action |
5076
- |-----|--------|
5077
- | \`${submit}\` | Send message |
5078
- | \`${newLine}\` | New line${process.platform === "win32" ? " (Ctrl+Enter on Windows Terminal)" : ""} |
5079
- | \`${deleteWordBackward}\` | Delete word backwards |
5080
- | \`${deleteWordForward}\` | Delete word forwards |
5081
- | \`${deleteToLineStart}\` | Delete to start of line |
5082
- | \`${deleteToLineEnd}\` | Delete to end of line |
5083
- | \`${yank}\` | Paste the most-recently-deleted text |
5084
- | \`${yankPop}\` | Cycle through the deleted text after pasting |
5085
- | \`${undo}\` | Undo |
5086
-
5087
- **Other**
5088
- | Key | Action |
5089
- |-----|--------|
5090
- | \`${tab}\` | Path completion / accept autocomplete |
5091
- | \`${interrupt}\` | Cancel autocomplete / abort streaming |
5092
- | \`${clear}\` | Clear editor (first) / exit (second) |
5093
- | \`${exit}\` | Exit (when editor is empty) |
5094
- | \`${suspend}\` | Suspend to background |
5095
- | \`${cycleThinkingLevel}\` | Cycle thinking level |
5096
- | \`${cycleModelForward}\` / \`${cycleModelBackward}\` | Cycle models |
5097
- | \`${selectModel}\` | Open model selector |
5098
- | \`${expandTools}\` | Toggle tool output expansion |
5099
- | \`${toggleThinking}\` | Toggle thinking block visibility |
5100
- | \`${externalEditor}\` | Edit message in external editor |
5101
- | \`${copyMessage}\` | Copy last assistant message |
5102
- | \`${followUp}\` | Queue follow-up message |
5103
- | \`${dequeue}\` | Restore queued messages |
5104
- | \`${pasteImage}\` | Paste image or text from clipboard |
5105
- | \`/\` | Slash commands |
5106
- | \`!\` | Run bash command |
5107
- | \`!!\` | Run bash command (excluded from context) |
5108
- `;
5109
- // Add extension-registered shortcuts
5110
- const extensionRunner = this.session.extensionRunner;
5111
- const shortcuts = extensionRunner.getShortcuts(this.keybindings.getEffectiveConfig());
5112
- if (shortcuts.size > 0) {
5113
- hotkeys += `
5114
- **Extensions**
5115
- | Key | Action |
5116
- |-----|--------|
5117
- `;
5118
- for (const [key, shortcut] of shortcuts) {
5119
- const description = shortcut.description ?? shortcut.extensionPath;
5120
- const keyDisplay = formatKeyText(key, { capitalize: true });
5121
- hotkeys += `| \`${keyDisplay}\` | ${description} |\n`;
5122
- }
5123
- }
5124
- this.chatContainer.addChild(new Spacer(1));
5125
- this.chatContainer.addChild(new DynamicBorder());
5126
- this.chatContainer.addChild(new Text(theme.bold(theme.fg("accent", "Keyboard Shortcuts")), 1, 0));
5127
- this.chatContainer.addChild(new Spacer(1));
5128
- this.chatContainer.addChild(new Markdown(hotkeys.trim(), 1, 1, this.getMarkdownThemeWithSettings()));
5129
- this.chatContainer.addChild(new DynamicBorder());
5130
- this.ui.requestRender();
5131
- }
5132
- async handleClearCommand() {
5133
- this.clearStatusIndicator();
5134
- try {
5135
- const result = await this.runtimeHost.newSession();
5136
- if (result.cancelled) {
5137
- return;
5138
- }
5139
- this.chatContainer.addChild(new Spacer(1));
5140
- this.chatContainer.addChild(new Text(`${theme.fg("accent", "✓ New session started")}`, 1, 1));
5141
- this.ui.requestRender();
5142
- }
5143
- catch (error) {
5144
- await this.handleFatalRuntimeError("Failed to create session", error);
5145
- }
5146
- }
5147
- handleDebugCommand() {
5148
- const width = this.ui.terminal.columns;
5149
- const height = this.ui.terminal.rows;
5150
- const allLines = this.ui.render(width);
5151
- const debugLogPath = getDebugLogPath();
5152
- const debugData = [
5153
- `Debug output at ${new Date().toISOString()}`,
5154
- `Terminal: ${width}x${height}`,
5155
- `Total lines: ${allLines.length}`,
5156
- "",
5157
- "=== All rendered lines with visible widths ===",
5158
- ...allLines.map((line, idx) => {
5159
- const vw = visibleWidth(line);
5160
- const escaped = JSON.stringify(line);
5161
- return `[${idx}] (w=${vw}) ${escaped}`;
5162
- }),
5163
- "",
5164
- "=== Agent messages (JSONL) ===",
5165
- ...this.session.messages.map((msg) => JSON.stringify(msg)),
5166
- "",
5167
- ].join("\n");
5168
- fs.mkdirSync(path.dirname(debugLogPath), { recursive: true });
5169
- fs.writeFileSync(debugLogPath, debugData);
5170
- this.chatContainer.addChild(new Spacer(1));
5171
- this.chatContainer.addChild(new Text(`${theme.fg("accent", "✓ Debug log written")}\n${theme.fg("muted", debugLogPath)}`, 1, 1));
5172
- this.ui.requestRender();
5173
- }
5174
- handleArminSaysHi() {
5175
- this.chatContainer.addChild(new Spacer(1));
5176
- this.chatContainer.addChild(new ArminComponent(this.ui));
5177
- this.ui.requestRender();
5178
- }
5179
- handleDementedDelves() {
5180
- this.chatContainer.addChild(new Spacer(1));
5181
- this.chatContainer.addChild(new EarendilAnnouncementComponent());
5182
- this.ui.requestRender();
5183
- }
5184
- handleDaxnuts() {
5185
- this.chatContainer.addChild(new Spacer(1));
5186
- this.chatContainer.addChild(new DaxnutsComponent(this.ui));
5187
- this.ui.requestRender();
5188
- }
5189
- checkDaxnutsEasterEgg(model) {
5190
- if (model.provider === "opencode" && model.id.toLowerCase().includes("kimi-k2.5")) {
5191
- this.handleDaxnuts();
5192
- }
5193
- }
5194
- async handleBashCommand(command, excludeFromContext = false) {
5195
- const extensionRunner = this.session.extensionRunner;
5196
- // Emit user_bash event to let extensions intercept
5197
- const eventResult = await extensionRunner.emitUserBash({
5198
- type: "user_bash",
5199
- command,
5200
- excludeFromContext,
5201
- cwd: this.sessionManager.getCwd(),
5202
- });
5203
- // If extension returned a full result, use it directly
5204
- if (eventResult?.result) {
5205
- const result = eventResult.result;
5206
- // Create UI component for display
5207
- this.bashComponent = new BashExecutionComponent(command, this.ui, excludeFromContext);
5208
- if (this.session.isStreaming) {
5209
- this.pendingMessagesContainer.addChild(this.bashComponent);
5210
- this.pendingBashComponents.push(this.bashComponent);
5211
- }
5212
- else {
5213
- this.chatContainer.addChild(this.bashComponent);
5214
- }
5215
- // Show output and complete
5216
- if (result.output) {
5217
- this.bashComponent.appendOutput(result.output);
5218
- }
5219
- this.bashComponent.setComplete(result.exitCode, result.cancelled, result.truncated ? { truncated: true, content: result.output } : undefined, result.fullOutputPath);
5220
- // Record the result in session
5221
- this.session.recordBashResult(command, result, { excludeFromContext });
5222
- this.bashComponent = undefined;
5223
- this.ui.requestRender();
5224
- return;
5225
- }
5226
- // Normal execution path (possibly with custom operations)
5227
- const isDeferred = this.session.isStreaming;
5228
- this.bashComponent = new BashExecutionComponent(command, this.ui, excludeFromContext);
5229
- if (isDeferred) {
5230
- // Show in pending area when agent is streaming
5231
- this.pendingMessagesContainer.addChild(this.bashComponent);
5232
- this.pendingBashComponents.push(this.bashComponent);
5233
- }
5234
- else {
5235
- // Show in chat immediately when agent is idle
5236
- this.chatContainer.addChild(this.bashComponent);
5237
- }
5238
- this.ui.requestRender();
5239
- try {
5240
- const result = await this.session.executeBash(command, (chunk) => {
5241
- if (this.bashComponent) {
5242
- this.bashComponent.appendOutput(chunk);
5243
- this.ui.requestRender();
5244
- }
5245
- }, { excludeFromContext, operations: eventResult?.operations });
5246
- if (this.bashComponent) {
5247
- this.bashComponent.setComplete(result.exitCode, result.cancelled, result.truncated ? { truncated: true, content: result.output } : undefined, result.fullOutputPath);
5248
- }
5249
- }
5250
- catch (error) {
5251
- if (this.bashComponent) {
5252
- this.bashComponent.setComplete(undefined, false);
5253
- }
5254
- this.showError(`Bash command failed: ${error instanceof Error ? error.message : "Unknown error"}`);
5255
- }
5256
- this.bashComponent = undefined;
5257
- this.ui.requestRender();
5258
- }
5259
- async handleCompactCommand(customInstructions) {
5260
- this.clearStatusIndicator();
5261
- try {
5262
- await this.session.compact(customInstructions);
5263
- }
5264
- catch {
5265
- // Ignore, will be emitted as an event
5266
- }
5267
- }
5268
- stop() {
5269
- if (this.settingsManager.getShowTerminalProgress()) {
5270
- this.ui.terminal.setProgress(false);
5271
- }
5272
- this.clearStatusIndicator();
5273
- this.themeController.disableAutoSync();
5274
- this.clearExtensionTerminalInputListeners();
5275
- this.footer.dispose();
5276
- this.footerDataProvider.dispose();
5277
- if (this.unsubscribe) {
5278
- this.unsubscribe();
5279
- }
5280
- if (this.isInitialized) {
5281
- this.ui.stop();
5282
- this.isInitialized = false;
5283
- }
5284
- this.unregisterSignalHandlers();
5285
- }
5286
- }
5287
- //# sourceMappingURL=interactive-mode.js.map
3245
+ if (this.chatContainer.children.length >