openvibe 0.60.2 → 0.60.3

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 (312) hide show
  1. package/dist/cli/args.d.ts +1 -1
  2. package/dist/cli/args.d.ts.map +1 -1
  3. package/dist/cli/args.js.map +1 -1
  4. package/dist/cli/config-selector.d.ts.map +1 -1
  5. package/dist/cli/config-selector.js +1 -1
  6. package/dist/cli/config-selector.js.map +1 -1
  7. package/dist/cli/file-processor.d.ts +1 -1
  8. package/dist/cli/file-processor.d.ts.map +1 -1
  9. package/dist/cli/file-processor.js.map +1 -1
  10. package/dist/cli/session-picker.d.ts.map +1 -1
  11. package/dist/cli/session-picker.js +1 -1
  12. package/dist/cli/session-picker.js.map +1 -1
  13. package/dist/cli.d.ts.map +1 -1
  14. package/dist/cli.js +2 -2
  15. package/dist/cli.js.map +1 -1
  16. package/dist/core/accelerated-client.d.ts +1 -1
  17. package/dist/core/accelerated-client.d.ts.map +1 -1
  18. package/dist/core/accelerated-client.js +2 -2
  19. package/dist/core/accelerated-client.js.map +1 -1
  20. package/dist/core/accelerated-stream.d.ts +1 -1
  21. package/dist/core/accelerated-stream.d.ts.map +1 -1
  22. package/dist/core/accelerated-stream.js.map +1 -1
  23. package/dist/core/agent-session.d.ts +2 -2
  24. package/dist/core/agent-session.d.ts.map +1 -1
  25. package/dist/core/agent-session.js +1 -1
  26. package/dist/core/agent-session.js.map +1 -1
  27. package/dist/core/api-concurrency.d.ts +1 -1
  28. package/dist/core/api-concurrency.d.ts.map +1 -1
  29. package/dist/core/api-concurrency.js +3 -3
  30. package/dist/core/api-concurrency.js.map +1 -1
  31. package/dist/core/auth-storage.d.ts +2 -2
  32. package/dist/core/auth-storage.d.ts.map +1 -1
  33. package/dist/core/auth-storage.js +2 -2
  34. package/dist/core/auth-storage.js.map +1 -1
  35. package/dist/core/branded-ai.d.ts +1 -1
  36. package/dist/core/branded-ai.d.ts.map +1 -1
  37. package/dist/core/branded-ai.js.map +1 -1
  38. package/dist/core/compaction/branch-summarization.d.ts +2 -2
  39. package/dist/core/compaction/branch-summarization.d.ts.map +1 -1
  40. package/dist/core/compaction/branch-summarization.js +1 -1
  41. package/dist/core/compaction/branch-summarization.js.map +1 -1
  42. package/dist/core/compaction/compaction.d.ts +2 -2
  43. package/dist/core/compaction/compaction.d.ts.map +1 -1
  44. package/dist/core/compaction/compaction.js +1 -1
  45. package/dist/core/compaction/compaction.js.map +1 -1
  46. package/dist/core/compaction/utils.d.ts +2 -2
  47. package/dist/core/compaction/utils.d.ts.map +1 -1
  48. package/dist/core/compaction/utils.js.map +1 -1
  49. package/dist/core/context-manager.d.ts +1 -1
  50. package/dist/core/context-manager.d.ts.map +1 -1
  51. package/dist/core/context-manager.js.map +1 -1
  52. package/dist/core/context-provider-interface.d.ts +1 -1
  53. package/dist/core/context-provider-interface.d.ts.map +1 -1
  54. package/dist/core/context-provider-interface.js.map +1 -1
  55. package/dist/core/context-provider-registry.d.ts +1 -1
  56. package/dist/core/context-provider-registry.d.ts.map +1 -1
  57. package/dist/core/context-provider-registry.js.map +1 -1
  58. package/dist/core/defaults.d.ts +1 -1
  59. package/dist/core/defaults.d.ts.map +1 -1
  60. package/dist/core/defaults.js.map +1 -1
  61. package/dist/core/export-html/index.d.ts +1 -1
  62. package/dist/core/export-html/index.d.ts.map +1 -1
  63. package/dist/core/export-html/index.js.map +1 -1
  64. package/dist/core/export-html/tool-renderer.d.ts.map +1 -1
  65. package/dist/core/export-html/tool-renderer.js.map +1 -1
  66. package/dist/core/extensions/loader.d.ts.map +1 -1
  67. package/dist/core/extensions/loader.js +14 -14
  68. package/dist/core/extensions/loader.js.map +1 -1
  69. package/dist/core/extensions/runner.d.ts +3 -3
  70. package/dist/core/extensions/runner.d.ts.map +1 -1
  71. package/dist/core/extensions/runner.js.map +1 -1
  72. package/dist/core/extensions/types.d.ts +3 -3
  73. package/dist/core/extensions/types.d.ts.map +1 -1
  74. package/dist/core/extensions/types.js.map +1 -1
  75. package/dist/core/extensions/wrapper.d.ts +1 -1
  76. package/dist/core/extensions/wrapper.d.ts.map +1 -1
  77. package/dist/core/extensions/wrapper.js.map +1 -1
  78. package/dist/core/keybindings.d.ts +1 -1
  79. package/dist/core/keybindings.d.ts.map +1 -1
  80. package/dist/core/keybindings.js +1 -1
  81. package/dist/core/keybindings.js.map +1 -1
  82. package/dist/core/large-context-provider.d.ts +1 -1
  83. package/dist/core/large-context-provider.d.ts.map +1 -1
  84. package/dist/core/large-context-provider.js.map +1 -1
  85. package/dist/core/messages.d.ts +3 -3
  86. package/dist/core/messages.d.ts.map +1 -1
  87. package/dist/core/messages.js.map +1 -1
  88. package/dist/core/model-registry.d.ts +1 -1
  89. package/dist/core/model-registry.d.ts.map +1 -1
  90. package/dist/core/model-registry.js +1 -1
  91. package/dist/core/model-registry.js.map +1 -1
  92. package/dist/core/model-resolver.d.ts +2 -2
  93. package/dist/core/model-resolver.d.ts.map +1 -1
  94. package/dist/core/model-resolver.js.map +1 -1
  95. package/dist/core/response-accelerator.d.ts +1 -1
  96. package/dist/core/response-accelerator.d.ts.map +1 -1
  97. package/dist/core/response-accelerator.js.map +1 -1
  98. package/dist/core/sdk.d.ts +2 -2
  99. package/dist/core/sdk.d.ts.map +1 -1
  100. package/dist/core/sdk.js +1 -1
  101. package/dist/core/sdk.js.map +1 -1
  102. package/dist/core/session-manager.d.ts +2 -2
  103. package/dist/core/session-manager.d.ts.map +1 -1
  104. package/dist/core/session-manager.js.map +1 -1
  105. package/dist/core/settings-manager.d.ts +1 -1
  106. package/dist/core/settings-manager.d.ts.map +1 -1
  107. package/dist/core/settings-manager.js.map +1 -1
  108. package/dist/core/system-prompt.d.ts +1 -1
  109. package/dist/core/system-prompt.d.ts.map +1 -1
  110. package/dist/core/system-prompt.js.map +1 -1
  111. package/dist/core/tools/bash.d.ts +1 -1
  112. package/dist/core/tools/bash.d.ts.map +1 -1
  113. package/dist/core/tools/bash.js.map +1 -1
  114. package/dist/core/tools/edit.d.ts +1 -1
  115. package/dist/core/tools/edit.d.ts.map +1 -1
  116. package/dist/core/tools/edit.js.map +1 -1
  117. package/dist/core/tools/fast-executor.d.ts +2 -2
  118. package/dist/core/tools/fast-executor.d.ts.map +1 -1
  119. package/dist/core/tools/fast-executor.js.map +1 -1
  120. package/dist/core/tools/find.d.ts +1 -1
  121. package/dist/core/tools/find.d.ts.map +1 -1
  122. package/dist/core/tools/find.js.map +1 -1
  123. package/dist/core/tools/grep.d.ts +1 -1
  124. package/dist/core/tools/grep.d.ts.map +1 -1
  125. package/dist/core/tools/grep.js.map +1 -1
  126. package/dist/core/tools/index.d.ts +1 -1
  127. package/dist/core/tools/index.d.ts.map +1 -1
  128. package/dist/core/tools/index.js.map +1 -1
  129. package/dist/core/tools/ls.d.ts +1 -1
  130. package/dist/core/tools/ls.d.ts.map +1 -1
  131. package/dist/core/tools/ls.js.map +1 -1
  132. package/dist/core/tools/read.d.ts +1 -1
  133. package/dist/core/tools/read.d.ts.map +1 -1
  134. package/dist/core/tools/read.js.map +1 -1
  135. package/dist/core/tools/write.d.ts +1 -1
  136. package/dist/core/tools/write.d.ts.map +1 -1
  137. package/dist/core/tools/write.js.map +1 -1
  138. package/dist/main.d.ts.map +1 -1
  139. package/dist/main.js +1 -1
  140. package/dist/main.js.map +1 -1
  141. package/dist/modes/interactive/components/armin.d.ts +1 -1
  142. package/dist/modes/interactive/components/armin.d.ts.map +1 -1
  143. package/dist/modes/interactive/components/armin.js.map +1 -1
  144. package/dist/modes/interactive/components/assistant-message.d.ts +2 -2
  145. package/dist/modes/interactive/components/assistant-message.d.ts.map +1 -1
  146. package/dist/modes/interactive/components/assistant-message.js +1 -1
  147. package/dist/modes/interactive/components/assistant-message.js.map +1 -1
  148. package/dist/modes/interactive/components/bash-execution.d.ts +1 -1
  149. package/dist/modes/interactive/components/bash-execution.d.ts.map +1 -1
  150. package/dist/modes/interactive/components/bash-execution.js +1 -1
  151. package/dist/modes/interactive/components/bash-execution.js.map +1 -1
  152. package/dist/modes/interactive/components/bordered-loader.d.ts +1 -1
  153. package/dist/modes/interactive/components/bordered-loader.d.ts.map +1 -1
  154. package/dist/modes/interactive/components/bordered-loader.js +1 -1
  155. package/dist/modes/interactive/components/bordered-loader.js.map +1 -1
  156. package/dist/modes/interactive/components/branch-summary-message.d.ts +1 -1
  157. package/dist/modes/interactive/components/branch-summary-message.d.ts.map +1 -1
  158. package/dist/modes/interactive/components/branch-summary-message.js +1 -1
  159. package/dist/modes/interactive/components/branch-summary-message.js.map +1 -1
  160. package/dist/modes/interactive/components/compaction-summary-message.d.ts +1 -1
  161. package/dist/modes/interactive/components/compaction-summary-message.d.ts.map +1 -1
  162. package/dist/modes/interactive/components/compaction-summary-message.js +1 -1
  163. package/dist/modes/interactive/components/compaction-summary-message.js.map +1 -1
  164. package/dist/modes/interactive/components/config-selector.d.ts +1 -1
  165. package/dist/modes/interactive/components/config-selector.d.ts.map +1 -1
  166. package/dist/modes/interactive/components/config-selector.js +1 -1
  167. package/dist/modes/interactive/components/config-selector.js.map +1 -1
  168. package/dist/modes/interactive/components/countdown-timer.d.ts +1 -1
  169. package/dist/modes/interactive/components/countdown-timer.d.ts.map +1 -1
  170. package/dist/modes/interactive/components/countdown-timer.js.map +1 -1
  171. package/dist/modes/interactive/components/custom-editor.d.ts +1 -1
  172. package/dist/modes/interactive/components/custom-editor.d.ts.map +1 -1
  173. package/dist/modes/interactive/components/custom-editor.js +1 -1
  174. package/dist/modes/interactive/components/custom-editor.js.map +1 -1
  175. package/dist/modes/interactive/components/custom-message.d.ts +1 -1
  176. package/dist/modes/interactive/components/custom-message.d.ts.map +1 -1
  177. package/dist/modes/interactive/components/custom-message.js +1 -1
  178. package/dist/modes/interactive/components/custom-message.js.map +1 -1
  179. package/dist/modes/interactive/components/daxnuts.d.ts +1 -1
  180. package/dist/modes/interactive/components/daxnuts.d.ts.map +1 -1
  181. package/dist/modes/interactive/components/daxnuts.js.map +1 -1
  182. package/dist/modes/interactive/components/dynamic-border.d.ts +1 -1
  183. package/dist/modes/interactive/components/dynamic-border.d.ts.map +1 -1
  184. package/dist/modes/interactive/components/dynamic-border.js.map +1 -1
  185. package/dist/modes/interactive/components/extension-editor.d.ts +1 -1
  186. package/dist/modes/interactive/components/extension-editor.d.ts.map +1 -1
  187. package/dist/modes/interactive/components/extension-editor.js +1 -1
  188. package/dist/modes/interactive/components/extension-editor.js.map +1 -1
  189. package/dist/modes/interactive/components/extension-input.d.ts +1 -1
  190. package/dist/modes/interactive/components/extension-input.d.ts.map +1 -1
  191. package/dist/modes/interactive/components/extension-input.js +1 -1
  192. package/dist/modes/interactive/components/extension-input.js.map +1 -1
  193. package/dist/modes/interactive/components/extension-selector.d.ts +1 -1
  194. package/dist/modes/interactive/components/extension-selector.d.ts.map +1 -1
  195. package/dist/modes/interactive/components/extension-selector.js +1 -1
  196. package/dist/modes/interactive/components/extension-selector.js.map +1 -1
  197. package/dist/modes/interactive/components/footer.d.ts +1 -1
  198. package/dist/modes/interactive/components/footer.d.ts.map +1 -1
  199. package/dist/modes/interactive/components/footer.js +1 -1
  200. package/dist/modes/interactive/components/footer.js.map +1 -1
  201. package/dist/modes/interactive/components/keybinding-hints.d.ts +1 -1
  202. package/dist/modes/interactive/components/keybinding-hints.d.ts.map +1 -1
  203. package/dist/modes/interactive/components/keybinding-hints.js +1 -1
  204. package/dist/modes/interactive/components/keybinding-hints.js.map +1 -1
  205. package/dist/modes/interactive/components/onboarding-wizard.d.ts +2 -2
  206. package/dist/modes/interactive/components/onboarding-wizard.d.ts.map +1 -1
  207. package/dist/modes/interactive/components/onboarding-wizard.js +1 -1
  208. package/dist/modes/interactive/components/onboarding-wizard.js.map +1 -1
  209. package/dist/modes/interactive/components/session-selector-search.d.ts.map +1 -1
  210. package/dist/modes/interactive/components/session-selector-search.js +1 -1
  211. package/dist/modes/interactive/components/session-selector-search.js.map +1 -1
  212. package/dist/modes/interactive/components/session-selector.d.ts +1 -1
  213. package/dist/modes/interactive/components/session-selector.d.ts.map +1 -1
  214. package/dist/modes/interactive/components/session-selector.js +1 -1
  215. package/dist/modes/interactive/components/session-selector.js.map +1 -1
  216. package/dist/modes/interactive/components/settings-selector.d.ts +3 -3
  217. package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
  218. package/dist/modes/interactive/components/settings-selector.js +1 -1
  219. package/dist/modes/interactive/components/settings-selector.js.map +1 -1
  220. package/dist/modes/interactive/components/show-images-selector.d.ts +1 -1
  221. package/dist/modes/interactive/components/show-images-selector.d.ts.map +1 -1
  222. package/dist/modes/interactive/components/show-images-selector.js +1 -1
  223. package/dist/modes/interactive/components/show-images-selector.js.map +1 -1
  224. package/dist/modes/interactive/components/skill-invocation-message.d.ts +1 -1
  225. package/dist/modes/interactive/components/skill-invocation-message.d.ts.map +1 -1
  226. package/dist/modes/interactive/components/skill-invocation-message.js +1 -1
  227. package/dist/modes/interactive/components/skill-invocation-message.js.map +1 -1
  228. package/dist/modes/interactive/components/skills-selector.d.ts +1 -1
  229. package/dist/modes/interactive/components/skills-selector.d.ts.map +1 -1
  230. package/dist/modes/interactive/components/skills-selector.js +1 -1
  231. package/dist/modes/interactive/components/skills-selector.js.map +1 -1
  232. package/dist/modes/interactive/components/theme-selector.d.ts +1 -1
  233. package/dist/modes/interactive/components/theme-selector.d.ts.map +1 -1
  234. package/dist/modes/interactive/components/theme-selector.js +1 -1
  235. package/dist/modes/interactive/components/theme-selector.js.map +1 -1
  236. package/dist/modes/interactive/components/thinking-selector.d.ts +2 -2
  237. package/dist/modes/interactive/components/thinking-selector.d.ts.map +1 -1
  238. package/dist/modes/interactive/components/thinking-selector.js +1 -1
  239. package/dist/modes/interactive/components/thinking-selector.js.map +1 -1
  240. package/dist/modes/interactive/components/tool-execution.d.ts +1 -1
  241. package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
  242. package/dist/modes/interactive/components/tool-execution.js +1 -1
  243. package/dist/modes/interactive/components/tool-execution.js.map +1 -1
  244. package/dist/modes/interactive/components/tree-selector.d.ts +1 -1
  245. package/dist/modes/interactive/components/tree-selector.d.ts.map +1 -1
  246. package/dist/modes/interactive/components/tree-selector.js +1 -1
  247. package/dist/modes/interactive/components/tree-selector.js.map +1 -1
  248. package/dist/modes/interactive/components/user-message-selector.d.ts +1 -1
  249. package/dist/modes/interactive/components/user-message-selector.d.ts.map +1 -1
  250. package/dist/modes/interactive/components/user-message-selector.js +1 -1
  251. package/dist/modes/interactive/components/user-message-selector.js.map +1 -1
  252. package/dist/modes/interactive/components/user-message.d.ts +1 -1
  253. package/dist/modes/interactive/components/user-message.d.ts.map +1 -1
  254. package/dist/modes/interactive/components/user-message.js +1 -1
  255. package/dist/modes/interactive/components/user-message.js.map +1 -1
  256. package/dist/modes/interactive/components/visual-truncate.d.ts.map +1 -1
  257. package/dist/modes/interactive/components/visual-truncate.js +1 -1
  258. package/dist/modes/interactive/components/visual-truncate.js.map +1 -1
  259. package/dist/modes/interactive/interactive-mode.d.ts +1 -1
  260. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  261. package/dist/modes/interactive/interactive-mode.js +1 -1
  262. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  263. package/dist/modes/interactive/theme/theme.d.ts +2 -2
  264. package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
  265. package/dist/modes/interactive/theme/theme.js +1 -1
  266. package/dist/modes/interactive/theme/theme.js.map +1 -1
  267. package/dist/modes/print-mode.d.ts +1 -1
  268. package/dist/modes/print-mode.d.ts.map +1 -1
  269. package/dist/modes/print-mode.js.map +1 -1
  270. package/dist/modes/rpc/rpc-client.d.ts +2 -2
  271. package/dist/modes/rpc/rpc-client.d.ts.map +1 -1
  272. package/dist/modes/rpc/rpc-client.js.map +1 -1
  273. package/dist/modes/rpc/rpc-types.d.ts +2 -2
  274. package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
  275. package/dist/modes/rpc/rpc-types.js.map +1 -1
  276. package/dist/utils/image-resize.d.ts +1 -1
  277. package/dist/utils/image-resize.d.ts.map +1 -1
  278. package/dist/utils/image-resize.js.map +1 -1
  279. package/examples/extensions/antigravity-image-gen.ts +1 -1
  280. package/examples/extensions/built-in-tool-renderer.ts +1 -1
  281. package/examples/extensions/custom-compaction.ts +1 -1
  282. package/examples/extensions/custom-footer.ts +2 -2
  283. package/examples/extensions/custom-provider-anthropic/index.ts +1 -1
  284. package/examples/extensions/custom-provider-gitlab-duo/index.ts +1 -1
  285. package/examples/extensions/custom-provider-gitlab-duo/test.ts +1 -1
  286. package/examples/extensions/custom-provider-qwen-cli/index.ts +1 -1
  287. package/examples/extensions/doom-overlay/doom-component.ts +2 -2
  288. package/examples/extensions/doom-overlay/doom-keys.ts +1 -1
  289. package/examples/extensions/handoff.ts +1 -1
  290. package/examples/extensions/hello.ts +1 -1
  291. package/examples/extensions/message-renderer.ts +1 -1
  292. package/examples/extensions/minimal-mode.ts +1 -1
  293. package/examples/extensions/modal-editor.ts +1 -1
  294. package/examples/extensions/overlay-qa-tests.ts +2 -2
  295. package/examples/extensions/overlay-test.ts +1 -1
  296. package/examples/extensions/plan-mode/index.ts +3 -3
  297. package/examples/extensions/preset.ts +1 -1
  298. package/examples/extensions/qna.ts +1 -1
  299. package/examples/extensions/question.ts +1 -1
  300. package/examples/extensions/questionnaire.ts +1 -1
  301. package/examples/extensions/snake.ts +1 -1
  302. package/examples/extensions/space-invaders.ts +1 -1
  303. package/examples/extensions/subagent/index.ts +4 -4
  304. package/examples/extensions/summarize.ts +2 -2
  305. package/examples/extensions/todo.ts +2 -2
  306. package/examples/extensions/tool-override.ts +1 -1
  307. package/examples/extensions/tools.ts +1 -1
  308. package/examples/extensions/truncated-tool.ts +1 -1
  309. package/examples/rpc-extension-ui.ts +1 -1
  310. package/examples/sdk/02-custom-model.ts +1 -1
  311. package/examples/sdk/12-full-control.ts +1 -1
  312. package/package.json +4 -4
@@ -1 +1 @@
1
- {"version":3,"file":"large-context-provider.js","sourceRoot":"","sources":["../../src/core/large-context-provider.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAmBH;;GAEG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAOlC;IACH,gMAAkE;IAClE,6BAA6B;IAC7B,gMAAkE;IAClE,gBAAgB,EAAE;QACjB,aAAa,EAAE,OAAO;QACtB,SAAS,EAAE,IAAI;QACf,YAAY,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE;KACxF;IACD,kBAAkB,EAAE;QACnB,aAAa,EAAE,OAAO;QACtB,SAAS,EAAE,IAAI;QACf,YAAY,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE;KACxF;IACD,kBAAkB,EAAE;QACnB,aAAa,EAAE,OAAO;QACtB,SAAS,EAAE,IAAI;QACf,YAAY,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE;KACxF;IACD,gBAAgB,EAAE;QACjB,aAAa,EAAE,OAAO;QACtB,SAAS,EAAE,IAAI;QACf,YAAY,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE;KACxF;IAED,gMAAkE;IAClE,kCAAkC;IAClC,gMAAkE;IAClE,wBAAwB,EAAE;QACzB,aAAa,EAAE,MAAM;QACrB,SAAS,EAAE,IAAI;QACf,YAAY,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE;KACxF;IACD,0BAA0B,EAAE;QAC3B,aAAa,EAAE,MAAM;QACrB,SAAS,EAAE,IAAI;QACf,YAAY,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE;KACxF;IACD,yBAAyB,EAAE;QAC1B,aAAa,EAAE,MAAM;QACrB,SAAS,EAAE,IAAI;QACf,YAAY,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE;KACxF;IACD,4BAA4B,EAAE;QAC7B,aAAa,EAAE,MAAM;QACrB,SAAS,EAAE,IAAI;QACf,YAAY,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE;KACxF;IACD,2BAA2B,EAAE;QAC5B,aAAa,EAAE,MAAM;QACrB,SAAS,EAAE,IAAI;QACf,YAAY,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE;KACzF;IACD,0BAA0B,EAAE;QAC3B,aAAa,EAAE,MAAM;QACrB,SAAS,EAAE,KAAK;QAChB,YAAY,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE;KACxF;IAED,gMAAkE;IAClE,wBAAwB;IACxB,gMAAkE;IAClE,aAAa,EAAE;QACd,aAAa,EAAE,MAAM;QACrB,SAAS,EAAE,IAAI;QACf,YAAY,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE;KACxF;IACD,qBAAqB,EAAE;QACtB,aAAa,EAAE,MAAM;QACrB,SAAS,EAAE,IAAI;QACf,YAAY,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE;KACzF;IACD,QAAQ,EAAE;QACT,aAAa,EAAE,MAAM;QACrB,SAAS,EAAE,KAAK;QAChB,YAAY,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE;KACxF;IACD,aAAa,EAAE;QACd,aAAa,EAAE,MAAM;QACrB,SAAS,EAAE,KAAK;QAChB,YAAY,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE;KACxF;IACD,oBAAoB,EAAE;QACrB,aAAa,EAAE,MAAM;QACrB,SAAS,EAAE,IAAI;QACf,YAAY,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE;KACzF;IAED,gMAAkE;IAClE,yBAAyB;IACzB,gMAAkE;IAClE,eAAe,EAAE;QAChB,aAAa,EAAE,KAAK;QACpB,SAAS,EAAE,IAAI;QACf,YAAY,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE;KACzF;IACD,gBAAgB,EAAE;QACjB,aAAa,EAAE,KAAK;QACpB,SAAS,EAAE,IAAI;QACf,YAAY,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE;KACzF;IACD,mBAAmB,EAAE;QACpB,aAAa,EAAE,KAAK;QACpB,SAAS,EAAE,IAAI;QACf,YAAY,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE;KACzF;IAED,gMAAkE;IAClE,kCAAkC;IAClC,gMAAkE;IAClE,uBAAuB,EAAE;QACxB,aAAa,EAAE,MAAM;QACrB,SAAS,EAAE,IAAI;QACf,YAAY,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE;KACxF;IACD,uBAAuB,EAAE;QACxB,aAAa,EAAE,MAAM;QACrB,SAAS,EAAE,IAAI;QACf,YAAY,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE;KACzF;IACD,UAAU,EAAE;QACX,aAAa,EAAE,OAAO;QACtB,SAAS,EAAE,KAAK;QAChB,YAAY,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE;KACxF;IACD,sBAAsB,EAAE;QACvB,aAAa,EAAE,OAAO;QACtB,SAAS,EAAE,KAAK;QAChB,YAAY,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE;KACxF;IAED,gMAAkE;IAClE,qCAAqC;IACrC,gMAAkE;IAClE,gBAAgB,EAAE;QACjB,aAAa,EAAE,IAAI;QACnB,SAAS,EAAE,IAAI;QACf,YAAY,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE;KACzF;IACD,iBAAiB,EAAE;QAClB,aAAa,EAAE,KAAK;QACpB,SAAS,EAAE,IAAI;QACf,YAAY,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE;KACzF;IACD,kBAAkB,EAAE;QACnB,aAAa,EAAE,MAAM;QACrB,SAAS,EAAE,IAAI;QACf,YAAY,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE;KACzF;IAED,gMAAkE;IAClE,gCAAgC;IAChC,gMAAkE;IAClE,yBAAyB,EAAE;QAC1B,aAAa,EAAE,MAAM;QACrB,SAAS,EAAE,KAAK;QAChB,YAAY,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE;KACzF;IACD,wBAAwB,EAAE;QACzB,aAAa,EAAE,MAAM;QACrB,SAAS,EAAE,KAAK;QAChB,YAAY,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE;KACzF;IACD,uBAAuB,EAAE;QACxB,aAAa,EAAE,MAAM;QACrB,SAAS,EAAE,KAAK;QAChB,YAAY,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE;KACzF;IAED,gMAAkE;IAClE,+BAA+B;IAC/B,gMAAkE;IAClE,oBAAoB,EAAE;QACrB,aAAa,EAAE,MAAM;QACrB,SAAS,EAAE,IAAI;QACf,YAAY,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE;KACzF;IACD,oBAAoB,EAAE;QACrB,aAAa,EAAE,KAAK;QACpB,SAAS,EAAE,IAAI;QACf,YAAY,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE;KACzF;IAED,gMAAkE;IAClE,+BAA+B;IAC/B,gMAAkE;IAClE,cAAc,EAAE;QACf,aAAa,EAAE,KAAK;QACpB,SAAS,EAAE,IAAI;QACf,YAAY,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE;KACzF;IACD,UAAU,EAAE;QACX,aAAa,EAAE,KAAK;QACpB,SAAS,EAAE,IAAI;QACf,YAAY,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE;KACzF;IAED,gMAAkE;IAClE,2BAA2B;IAC3B,gMAAkE;IAClE,OAAO,EAAE;QACR,aAAa,EAAE,MAAM;QACrB,SAAS,EAAE,IAAI;QACf,YAAY,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE;KACxF;IACD,YAAY,EAAE;QACb,aAAa,EAAE,MAAM;QACrB,SAAS,EAAE,IAAI;QACf,YAAY,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE;KACxF;IAED,gMAAkE;IAClE,uBAAuB;IACvB,gMAAkE;IAClE,yBAAyB,EAAE;QAC1B,aAAa,EAAE,MAAM;QACrB,SAAS,EAAE,IAAI;QACf,YAAY,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE;KACzF;IACD,uBAAuB,EAAE;QACxB,aAAa,EAAE,IAAI;QACnB,SAAS,EAAE,IAAI;QACf,YAAY,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE;KAC1F;CACD,CAAC;AAEF;;;GAGG;AACH,MAAM,OAAO,oBAAoB;IACvB,IAAI,GAAG,eAAe,CAAC;IACvB,OAAO,GAAG,OAAO,CAAC;IAEnB,YAAY,GACnB,IAAI,GAAG,EAAE,CAAC;IAEX;;OAEG;IACH,aAAa,CAAC,OAAe,EAAW;QACvC,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAClD,OAAO,UAAU,IAAI,yBAAyB,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAAA,CACpF;IAED;;OAEG;IACH,gBAAgB,CAAC,OAAe,EAAU;QACzC,OAAO,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,aAAa,CAAC;IAAA,CACpD;IAED;;OAEG;IACH,YAAY,CAAC,OAAe,EAAU;QACrC,OAAO,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC;IAAA,CAChD;IAED;;OAEG;IACH,gBAAgB,CAAC,OAAe,EAAuB;QACtD,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAElD,4BAA4B;QAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACjD,IAAI,MAAM,EAAE,CAAC;YACZ,OAAO;gBACN,aAAa,EAAE,MAAM,CAAC,aAAa;gBACnC,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC3B,iBAAiB,EAAE,MAAM,CAAC,YAAY,CAAC,iBAAiB;gBACxD,cAAc,EAAE,MAAM,CAAC,YAAY,CAAC,cAAc;gBAClD,iBAAiB,EAAE,MAAM,CAAC,YAAY,CAAC,iBAAiB;aACxD,CAAC;QACH,CAAC;QAED,qBAAqB;QACrB,MAAM,UAAU,GAAG,yBAAyB,CAAC,UAAU,CAAC,CAAC;QACzD,IAAI,UAAU,EAAE,CAAC;YAChB,OAAO;gBACN,aAAa,EAAE,UAAU,CAAC,aAAa;gBACvC,SAAS,EAAE,UAAU,CAAC,SAAS;gBAC/B,iBAAiB,EAAE,UAAU,CAAC,YAAY,CAAC,iBAAiB;gBAC5D,cAAc,EAAE,UAAU,CAAC,YAAY,CAAC,cAAc;gBACtD,iBAAiB,EAAE,UAAU,CAAC,YAAY,CAAC,iBAAiB;aAC5D,CAAC;QACH,CAAC;QAED,yCAAyC;QACzC,OAAO;YACN,aAAa,EAAE,OAAO;YACtB,SAAS,EAAE,KAAK;YAChB,iBAAiB,EAAE,IAAI;YACvB,cAAc,EAAE,IAAI;YACpB,iBAAiB,EAAE,IAAI;SACvB,CAAC;IAAA,CACF;IAED;;OAEG;IACH,eAAe,CAAC,QAAmB,EAAE,OAAe,EAAqB;QACxE,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAC9C,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QAC5C,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAEzD,OAAO;YACN,QAAQ;YACR,UAAU,EAAE,eAAe;YAC3B,QAAQ,EAAE,KAAK;YACf,QAAQ,EAAE;gBACT,SAAS,EAAE,eAAe,GAAG,MAAM,CAAC,aAAa;aACjD;SACD,CAAC;IAAA,CACF;IAED;;OAEG;IACH,cAAc,CAAC,QAAmB,EAAE,OAAe,EAAE,UAAkB,EAAmB;QACzF,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAE9C,IAAI,UAAU,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;YACxC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC;QACzC,CAAC;QAED,4DAA4D;QAC5D,IAAI,MAAM,CAAC,aAAa,IAAI,MAAM,EAAE,CAAC;YACpC,8CAA8C;YAC9C,OAAO;gBACN,MAAM,EAAE,UAAU;gBAClB,QAAQ;gBACR,QAAQ,EAAE;oBACT,cAAc,EAAE,UAAU;oBAC1B,aAAa,EAAE,MAAM,CAAC,aAAa;oBACnC,SAAS,EAAE,MAAM,CAAC,aAAa,GAAG,UAAU;iBAC5C;aACD,CAAC;QACH,CAAC;QAED,OAAO;YACN,MAAM,EAAE,WAAW;YACnB,QAAQ,EAAE;gBACT,cAAc,EAAE,UAAU;gBAC1B,aAAa,EAAE,MAAM,CAAC,aAAa;aACnC;SACD,CAAC;IAAA,CACF;IAED;;OAEG;IACH,mBAAmB,CAClB,OAAe,EACf,MAKC,EACM;QACP,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAClD,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,EAAE;YACjC,aAAa,EAAE,MAAM,CAAC,aAAa;YACnC,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,YAAY,EAAE;gBACb,iBAAiB,EAAE,IAAI;gBACvB,cAAc,EAAE,MAAM,CAAC,cAAc,IAAI,IAAI;gBAC7C,iBAAiB,EAAE,MAAM,CAAC,iBAAiB,IAAI,IAAI;aACnD;SACD,CAAC,CAAC;IAAA,CACH;IAED;;OAEG;IACH,YAAY,CAAkB,KAAiB,EAAc;QAC5D,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAE/C,OAAO;YACN,GAAG,KAAK;YACR,aAAa,EAAE,MAAM,CAAC,aAAa;YACnC,SAAS,EAAE,MAAM,CAAC,SAAS;SAC3B,CAAC;IAAA,CACF;IAED;;OAEG;IACH,cAAc,GAAa;QAC1B,OAAO,MAAM,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;IAAA,CAC9C;IAED;;OAEG;IACH,qBAAqB,CAAC,OAAe,EAAW;QAC/C,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAC9C,OAAO,MAAM,CAAC,aAAa,IAAI,OAAO,CAAC;IAAA,CACvC;IAED;;OAEG;IACK,gBAAgB,CAAC,OAAe,EAAU;QACjD,OAAO,OAAO,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC;IAAA,CACpC;CACD;AAED;;GAEG;AACH,IAAI,4BAA4B,GAAgC,IAAI,CAAC;AAErE;;GAEG;AACH,MAAM,UAAU,uBAAuB,GAAyB;IAC/D,IAAI,CAAC,4BAA4B,EAAE,CAAC;QACnC,4BAA4B,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC3D,CAAC;IACD,OAAO,4BAA4B,CAAC;AAAA,CACpC","sourcesContent":["/**\n * Large Context Provider Implementation\n * Provides 1M context window support for compatible models\n * This is a third-party architecture implementation\n */\n\nimport type { Api, Model } from \"@mariozechner/pi-ai\";\nimport type {\n\tIContextProvider,\n\tIModelContextConfig,\n\tIOverflowResult,\n\tIProcessedContext,\n} from \"./context-provider-interface.js\";\n\n/**\n * Model capability flags\n */\ninterface ModelCapabilities {\n\tsupportsStreaming: boolean;\n\tsupportsVision: boolean;\n\tsupportsFunctions: boolean;\n}\n\n/**\n * Large context model definitions\n */\nexport const LARGE_CONTEXT_DEFINITIONS: Record<\n\tstring,\n\t{\n\t\tcontextWindow: number;\n\t\tmaxTokens: number;\n\t\tcapabilities: ModelCapabilities;\n\t}\n> = {\n\t// ═══════════════════════════════════════════════════════════════\n\t// Google Gemini - 1M Context\n\t// ═══════════════════════════════════════════════════════════════\n\t\"gemini-1.5-pro\": {\n\t\tcontextWindow: 1000000,\n\t\tmaxTokens: 8192,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: true, supportsFunctions: true },\n\t},\n\t\"gemini-1.5-flash\": {\n\t\tcontextWindow: 1000000,\n\t\tmaxTokens: 8192,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: true, supportsFunctions: true },\n\t},\n\t\"gemini-2.0-flash\": {\n\t\tcontextWindow: 1000000,\n\t\tmaxTokens: 8192,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: true, supportsFunctions: true },\n\t},\n\t\"gemini-2.0-pro\": {\n\t\tcontextWindow: 1000000,\n\t\tmaxTokens: 8192,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: true, supportsFunctions: true },\n\t},\n\n\t// ═══════════════════════════════════════════════════════════════\n\t// Anthropic Claude - 200K Context\n\t// ═══════════════════════════════════════════════════════════════\n\t\"claude-3-opus-20240229\": {\n\t\tcontextWindow: 200000,\n\t\tmaxTokens: 4096,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: true, supportsFunctions: true },\n\t},\n\t\"claude-3-sonnet-20240229\": {\n\t\tcontextWindow: 200000,\n\t\tmaxTokens: 4096,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: true, supportsFunctions: true },\n\t},\n\t\"claude-3-haiku-20240307\": {\n\t\tcontextWindow: 200000,\n\t\tmaxTokens: 4096,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: true, supportsFunctions: true },\n\t},\n\t\"claude-3-5-sonnet-20241022\": {\n\t\tcontextWindow: 200000,\n\t\tmaxTokens: 8192,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: true, supportsFunctions: true },\n\t},\n\t\"claude-3-5-haiku-20241022\": {\n\t\tcontextWindow: 200000,\n\t\tmaxTokens: 8192,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: false, supportsFunctions: true },\n\t},\n\t\"claude-sonnet-4-20250514\": {\n\t\tcontextWindow: 200000,\n\t\tmaxTokens: 16384,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: true, supportsFunctions: true },\n\t},\n\n\t// ═══════════════════════════════════════════════════════════════\n\t// OpenAI - 128K Context\n\t// ═══════════════════════════════════════════════════════════════\n\t\"gpt-4-turbo\": {\n\t\tcontextWindow: 128000,\n\t\tmaxTokens: 4096,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: true, supportsFunctions: true },\n\t},\n\t\"gpt-4-turbo-preview\": {\n\t\tcontextWindow: 128000,\n\t\tmaxTokens: 4096,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: false, supportsFunctions: true },\n\t},\n\t\"gpt-4o\": {\n\t\tcontextWindow: 128000,\n\t\tmaxTokens: 16384,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: true, supportsFunctions: true },\n\t},\n\t\"gpt-4o-mini\": {\n\t\tcontextWindow: 128000,\n\t\tmaxTokens: 16384,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: true, supportsFunctions: true },\n\t},\n\t\"gpt-4-0125-preview\": {\n\t\tcontextWindow: 128000,\n\t\tmaxTokens: 4096,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: false, supportsFunctions: true },\n\t},\n\n\t// ═══════════════════════════════════════════════════════════════\n\t// DeepSeek - 64K Context\n\t// ═══════════════════════════════════════════════════════════════\n\t\"deepseek-chat\": {\n\t\tcontextWindow: 64000,\n\t\tmaxTokens: 4096,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: false, supportsFunctions: true },\n\t},\n\t\"deepseek-coder\": {\n\t\tcontextWindow: 64000,\n\t\tmaxTokens: 4096,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: false, supportsFunctions: true },\n\t},\n\t\"deepseek-reasoner\": {\n\t\tcontextWindow: 64000,\n\t\tmaxTokens: 8192,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: false, supportsFunctions: true },\n\t},\n\n\t// ═══════════════════════════════════════════════════════════════\n\t// Alibaba Qwen - Up to 1M Context\n\t// ═══════════════════════════════════════════════════════════════\n\t\"qwen-2.5-72b-instruct\": {\n\t\tcontextWindow: 131072,\n\t\tmaxTokens: 8192,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: true, supportsFunctions: true },\n\t},\n\t\"qwen-2.5-32b-instruct\": {\n\t\tcontextWindow: 131072,\n\t\tmaxTokens: 8192,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: false, supportsFunctions: true },\n\t},\n\t\"qwen-max\": {\n\t\tcontextWindow: 1000000,\n\t\tmaxTokens: 65536,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: true, supportsFunctions: true },\n\t},\n\t\"qwen-max-longcontext\": {\n\t\tcontextWindow: 1000000,\n\t\tmaxTokens: 65536,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: true, supportsFunctions: true },\n\t},\n\n\t// ═══════════════════════════════════════════════════════════════\n\t// Moonshot Kimi - Up to 128K Context\n\t// ═══════════════════════════════════════════════════════════════\n\t\"moonshot-v1-8k\": {\n\t\tcontextWindow: 8192,\n\t\tmaxTokens: 4096,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: false, supportsFunctions: true },\n\t},\n\t\"moonshot-v1-32k\": {\n\t\tcontextWindow: 32768,\n\t\tmaxTokens: 4096,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: false, supportsFunctions: true },\n\t},\n\t\"moonshot-v1-128k\": {\n\t\tcontextWindow: 131072,\n\t\tmaxTokens: 4096,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: false, supportsFunctions: true },\n\t},\n\n\t// ═══════════════════════════════════════════════════════════════\n\t// Meta Llama 3.1 - 128K Context\n\t// ═══════════════════════════════════════════════════════════════\n\t\"llama-3.1-405b-instruct\": {\n\t\tcontextWindow: 128000,\n\t\tmaxTokens: 16384,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: false, supportsFunctions: true },\n\t},\n\t\"llama-3.1-70b-instruct\": {\n\t\tcontextWindow: 128000,\n\t\tmaxTokens: 16384,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: false, supportsFunctions: true },\n\t},\n\t\"llama-3.1-8b-instruct\": {\n\t\tcontextWindow: 128000,\n\t\tmaxTokens: 16384,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: false, supportsFunctions: true },\n\t},\n\n\t// ═══════════════════════════════════════════════════════════════\n\t// Mistral - Up to 128K Context\n\t// ═══════════════════════════════════════════════════════════════\n\t\"mistral-large-2407\": {\n\t\tcontextWindow: 128000,\n\t\tmaxTokens: 8192,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: false, supportsFunctions: true },\n\t},\n\t\"mistral-large-2402\": {\n\t\tcontextWindow: 32000,\n\t\tmaxTokens: 8192,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: false, supportsFunctions: true },\n\t},\n\n\t// ═══════════════════════════════════════════════════════════════\n\t// 01.AI Yi - Up to 32K Context\n\t// ═══════════════════════════════════════════════════════════════\n\t\"yi-lightning\": {\n\t\tcontextWindow: 16384,\n\t\tmaxTokens: 4096,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: false, supportsFunctions: true },\n\t},\n\t\"yi-large\": {\n\t\tcontextWindow: 32768,\n\t\tmaxTokens: 4096,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: false, supportsFunctions: true },\n\t},\n\n\t// ═══════════════════════════════════════════════════════════════\n\t// Zhipu GLM - 128K Context\n\t// ═══════════════════════════════════════════════════════════════\n\t\"glm-4\": {\n\t\tcontextWindow: 128000,\n\t\tmaxTokens: 4096,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: true, supportsFunctions: true },\n\t},\n\t\"glm-4-plus\": {\n\t\tcontextWindow: 128000,\n\t\tmaxTokens: 4096,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: true, supportsFunctions: true },\n\t},\n\n\t// ═══════════════════════════════════════════════════════════════\n\t// Groq Models - Varies\n\t// ═══════════════════════════════════════════════════════════════\n\t\"llama-3.3-70b-versatile\": {\n\t\tcontextWindow: 128000,\n\t\tmaxTokens: 8192,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: false, supportsFunctions: true },\n\t},\n\t\"llama-3.3-70b-specdec\": {\n\t\tcontextWindow: 8192,\n\t\tmaxTokens: 8192,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: false, supportsFunctions: false },\n\t},\n};\n\n/**\n * Large Context Provider\n * Implements the IContextProvider interface for 1M context support\n */\nexport class LargeContextProvider implements IContextProvider {\n\treadonly name = \"large-context\";\n\treadonly version = \"1.0.0\";\n\n\tprivate customModels: Map<string, { contextWindow: number; maxTokens: number; capabilities: ModelCapabilities }> =\n\t\tnew Map();\n\n\t/**\n\t * Check if this provider supports a given model\n\t */\n\tsupportsModel(modelId: string): boolean {\n\t\tconst normalized = this.normalizeModelId(modelId);\n\t\treturn normalized in LARGE_CONTEXT_DEFINITIONS || this.customModels.has(normalized);\n\t}\n\n\t/**\n\t * Get context window for a model\n\t */\n\tgetContextWindow(modelId: string): number {\n\t\treturn this.getContextConfig(modelId).contextWindow;\n\t}\n\n\t/**\n\t * Get max output tokens for a model\n\t */\n\tgetMaxTokens(modelId: string): number {\n\t\treturn this.getContextConfig(modelId).maxTokens;\n\t}\n\n\t/**\n\t * Get full context configuration for a model\n\t */\n\tgetContextConfig(modelId: string): IModelContextConfig {\n\t\tconst normalized = this.normalizeModelId(modelId);\n\n\t\t// Check custom models first\n\t\tconst custom = this.customModels.get(normalized);\n\t\tif (custom) {\n\t\t\treturn {\n\t\t\t\tcontextWindow: custom.contextWindow,\n\t\t\t\tmaxTokens: custom.maxTokens,\n\t\t\t\tsupportsStreaming: custom.capabilities.supportsStreaming,\n\t\t\t\tsupportsVision: custom.capabilities.supportsVision,\n\t\t\t\tsupportsFunctions: custom.capabilities.supportsFunctions,\n\t\t\t};\n\t\t}\n\n\t\t// Check known models\n\t\tconst definition = LARGE_CONTEXT_DEFINITIONS[normalized];\n\t\tif (definition) {\n\t\t\treturn {\n\t\t\t\tcontextWindow: definition.contextWindow,\n\t\t\t\tmaxTokens: definition.maxTokens,\n\t\t\t\tsupportsStreaming: definition.capabilities.supportsStreaming,\n\t\t\t\tsupportsVision: definition.capabilities.supportsVision,\n\t\t\t\tsupportsFunctions: definition.capabilities.supportsFunctions,\n\t\t\t};\n\t\t}\n\n\t\t// Default: 1M context for unknown models\n\t\treturn {\n\t\t\tcontextWindow: 1000000,\n\t\t\tmaxTokens: 65536,\n\t\t\tsupportsStreaming: true,\n\t\t\tsupportsVision: true,\n\t\t\tsupportsFunctions: true,\n\t\t};\n\t}\n\n\t/**\n\t * Process messages before sending to API\n\t */\n\tprocessMessages(messages: unknown[], modelId: string): IProcessedContext {\n\t\tconst config = this.getContextConfig(modelId);\n\t\tconst messageStr = JSON.stringify(messages);\n\t\tconst estimatedTokens = Math.ceil(messageStr.length / 4);\n\n\t\treturn {\n\t\t\tmessages,\n\t\t\ttokenCount: estimatedTokens,\n\t\t\tmodified: false,\n\t\t\tmetadata: {\n\t\t\t\ttruncated: estimatedTokens > config.contextWindow,\n\t\t\t},\n\t\t};\n\t}\n\n\t/**\n\t * Handle context overflow\n\t */\n\thandleOverflow(messages: unknown[], modelId: string, tokenCount: number): IOverflowResult {\n\t\tconst config = this.getContextConfig(modelId);\n\n\t\tif (tokenCount <= config.contextWindow) {\n\t\t\treturn { action: \"truncate\", messages };\n\t\t}\n\n\t\t// For large context models, try to keep as much as possible\n\t\tif (config.contextWindow >= 100000) {\n\t\t\t// For 1M context, we likely have enough space\n\t\t\treturn {\n\t\t\t\taction: \"truncate\",\n\t\t\t\tmessages,\n\t\t\t\tmetadata: {\n\t\t\t\t\toriginalTokens: tokenCount,\n\t\t\t\t\tcontextWindow: config.contextWindow,\n\t\t\t\t\tkeepRatio: config.contextWindow / tokenCount,\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\n\t\treturn {\n\t\t\taction: \"summarize\",\n\t\t\tmetadata: {\n\t\t\t\toriginalTokens: tokenCount,\n\t\t\t\tcontextWindow: config.contextWindow,\n\t\t\t},\n\t\t};\n\t}\n\n\t/**\n\t * Register a custom model with context configuration\n\t */\n\tregisterCustomModel(\n\t\tmodelId: string,\n\t\tconfig: {\n\t\t\tcontextWindow: number;\n\t\t\tmaxTokens: number;\n\t\t\tsupportsVision?: boolean;\n\t\t\tsupportsFunctions?: boolean;\n\t\t},\n\t): void {\n\t\tconst normalized = this.normalizeModelId(modelId);\n\t\tthis.customModels.set(normalized, {\n\t\t\tcontextWindow: config.contextWindow,\n\t\t\tmaxTokens: config.maxTokens,\n\t\t\tcapabilities: {\n\t\t\t\tsupportsStreaming: true,\n\t\t\t\tsupportsVision: config.supportsVision ?? true,\n\t\t\t\tsupportsFunctions: config.supportsFunctions ?? true,\n\t\t\t},\n\t\t});\n\t}\n\n\t/**\n\t * Enhance a model with large context configuration\n\t */\n\tenhanceModel<API extends Api>(model: Model<API>): Model<API> {\n\t\tconst config = this.getContextConfig(model.id);\n\n\t\treturn {\n\t\t\t...model,\n\t\t\tcontextWindow: config.contextWindow,\n\t\t\tmaxTokens: config.maxTokens,\n\t\t};\n\t}\n\n\t/**\n\t * Get all known large context models\n\t */\n\tgetKnownModels(): string[] {\n\t\treturn Object.keys(LARGE_CONTEXT_DEFINITIONS);\n\t}\n\n\t/**\n\t * Check if a model has 1M context\n\t */\n\tisMillionContextModel(modelId: string): boolean {\n\t\tconst config = this.getContextConfig(modelId);\n\t\treturn config.contextWindow >= 1000000;\n\t}\n\n\t/**\n\t * Normalize model ID for matching\n\t */\n\tprivate normalizeModelId(modelId: string): string {\n\t\treturn modelId.toLowerCase().trim();\n\t}\n}\n\n/**\n * Singleton instance\n */\nlet largeContextProviderInstance: LargeContextProvider | null = null;\n\n/**\n * Get the singleton instance\n */\nexport function getLargeContextProvider(): LargeContextProvider {\n\tif (!largeContextProviderInstance) {\n\t\tlargeContextProviderInstance = new LargeContextProvider();\n\t}\n\treturn largeContextProviderInstance;\n}\n"]}
1
+ {"version":3,"file":"large-context-provider.js","sourceRoot":"","sources":["../../src/core/large-context-provider.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAmBH;;GAEG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAOlC;IACH,gMAAkE;IAClE,6BAA6B;IAC7B,gMAAkE;IAClE,gBAAgB,EAAE;QACjB,aAAa,EAAE,OAAO;QACtB,SAAS,EAAE,IAAI;QACf,YAAY,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE;KACxF;IACD,kBAAkB,EAAE;QACnB,aAAa,EAAE,OAAO;QACtB,SAAS,EAAE,IAAI;QACf,YAAY,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE;KACxF;IACD,kBAAkB,EAAE;QACnB,aAAa,EAAE,OAAO;QACtB,SAAS,EAAE,IAAI;QACf,YAAY,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE;KACxF;IACD,gBAAgB,EAAE;QACjB,aAAa,EAAE,OAAO;QACtB,SAAS,EAAE,IAAI;QACf,YAAY,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE;KACxF;IAED,gMAAkE;IAClE,kCAAkC;IAClC,gMAAkE;IAClE,wBAAwB,EAAE;QACzB,aAAa,EAAE,MAAM;QACrB,SAAS,EAAE,IAAI;QACf,YAAY,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE;KACxF;IACD,0BAA0B,EAAE;QAC3B,aAAa,EAAE,MAAM;QACrB,SAAS,EAAE,IAAI;QACf,YAAY,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE;KACxF;IACD,yBAAyB,EAAE;QAC1B,aAAa,EAAE,MAAM;QACrB,SAAS,EAAE,IAAI;QACf,YAAY,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE;KACxF;IACD,4BAA4B,EAAE;QAC7B,aAAa,EAAE,MAAM;QACrB,SAAS,EAAE,IAAI;QACf,YAAY,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE;KACxF;IACD,2BAA2B,EAAE;QAC5B,aAAa,EAAE,MAAM;QACrB,SAAS,EAAE,IAAI;QACf,YAAY,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE;KACzF;IACD,0BAA0B,EAAE;QAC3B,aAAa,EAAE,MAAM;QACrB,SAAS,EAAE,KAAK;QAChB,YAAY,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE;KACxF;IAED,gMAAkE;IAClE,wBAAwB;IACxB,gMAAkE;IAClE,aAAa,EAAE;QACd,aAAa,EAAE,MAAM;QACrB,SAAS,EAAE,IAAI;QACf,YAAY,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE;KACxF;IACD,qBAAqB,EAAE;QACtB,aAAa,EAAE,MAAM;QACrB,SAAS,EAAE,IAAI;QACf,YAAY,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE;KACzF;IACD,QAAQ,EAAE;QACT,aAAa,EAAE,MAAM;QACrB,SAAS,EAAE,KAAK;QAChB,YAAY,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE;KACxF;IACD,aAAa,EAAE;QACd,aAAa,EAAE,MAAM;QACrB,SAAS,EAAE,KAAK;QAChB,YAAY,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE;KACxF;IACD,oBAAoB,EAAE;QACrB,aAAa,EAAE,MAAM;QACrB,SAAS,EAAE,IAAI;QACf,YAAY,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE;KACzF;IAED,gMAAkE;IAClE,yBAAyB;IACzB,gMAAkE;IAClE,eAAe,EAAE;QAChB,aAAa,EAAE,KAAK;QACpB,SAAS,EAAE,IAAI;QACf,YAAY,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE;KACzF;IACD,gBAAgB,EAAE;QACjB,aAAa,EAAE,KAAK;QACpB,SAAS,EAAE,IAAI;QACf,YAAY,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE;KACzF;IACD,mBAAmB,EAAE;QACpB,aAAa,EAAE,KAAK;QACpB,SAAS,EAAE,IAAI;QACf,YAAY,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE;KACzF;IAED,gMAAkE;IAClE,kCAAkC;IAClC,gMAAkE;IAClE,uBAAuB,EAAE;QACxB,aAAa,EAAE,MAAM;QACrB,SAAS,EAAE,IAAI;QACf,YAAY,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE;KACxF;IACD,uBAAuB,EAAE;QACxB,aAAa,EAAE,MAAM;QACrB,SAAS,EAAE,IAAI;QACf,YAAY,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE;KACzF;IACD,UAAU,EAAE;QACX,aAAa,EAAE,OAAO;QACtB,SAAS,EAAE,KAAK;QAChB,YAAY,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE;KACxF;IACD,sBAAsB,EAAE;QACvB,aAAa,EAAE,OAAO;QACtB,SAAS,EAAE,KAAK;QAChB,YAAY,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE;KACxF;IAED,gMAAkE;IAClE,qCAAqC;IACrC,gMAAkE;IAClE,gBAAgB,EAAE;QACjB,aAAa,EAAE,IAAI;QACnB,SAAS,EAAE,IAAI;QACf,YAAY,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE;KACzF;IACD,iBAAiB,EAAE;QAClB,aAAa,EAAE,KAAK;QACpB,SAAS,EAAE,IAAI;QACf,YAAY,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE;KACzF;IACD,kBAAkB,EAAE;QACnB,aAAa,EAAE,MAAM;QACrB,SAAS,EAAE,IAAI;QACf,YAAY,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE;KACzF;IAED,gMAAkE;IAClE,gCAAgC;IAChC,gMAAkE;IAClE,yBAAyB,EAAE;QAC1B,aAAa,EAAE,MAAM;QACrB,SAAS,EAAE,KAAK;QAChB,YAAY,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE;KACzF;IACD,wBAAwB,EAAE;QACzB,aAAa,EAAE,MAAM;QACrB,SAAS,EAAE,KAAK;QAChB,YAAY,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE;KACzF;IACD,uBAAuB,EAAE;QACxB,aAAa,EAAE,MAAM;QACrB,SAAS,EAAE,KAAK;QAChB,YAAY,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE;KACzF;IAED,gMAAkE;IAClE,+BAA+B;IAC/B,gMAAkE;IAClE,oBAAoB,EAAE;QACrB,aAAa,EAAE,MAAM;QACrB,SAAS,EAAE,IAAI;QACf,YAAY,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE;KACzF;IACD,oBAAoB,EAAE;QACrB,aAAa,EAAE,KAAK;QACpB,SAAS,EAAE,IAAI;QACf,YAAY,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE;KACzF;IAED,gMAAkE;IAClE,+BAA+B;IAC/B,gMAAkE;IAClE,cAAc,EAAE;QACf,aAAa,EAAE,KAAK;QACpB,SAAS,EAAE,IAAI;QACf,YAAY,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE;KACzF;IACD,UAAU,EAAE;QACX,aAAa,EAAE,KAAK;QACpB,SAAS,EAAE,IAAI;QACf,YAAY,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE;KACzF;IAED,gMAAkE;IAClE,2BAA2B;IAC3B,gMAAkE;IAClE,OAAO,EAAE;QACR,aAAa,EAAE,MAAM;QACrB,SAAS,EAAE,IAAI;QACf,YAAY,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE;KACxF;IACD,YAAY,EAAE;QACb,aAAa,EAAE,MAAM;QACrB,SAAS,EAAE,IAAI;QACf,YAAY,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE;KACxF;IAED,gMAAkE;IAClE,uBAAuB;IACvB,gMAAkE;IAClE,yBAAyB,EAAE;QAC1B,aAAa,EAAE,MAAM;QACrB,SAAS,EAAE,IAAI;QACf,YAAY,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE;KACzF;IACD,uBAAuB,EAAE;QACxB,aAAa,EAAE,IAAI;QACnB,SAAS,EAAE,IAAI;QACf,YAAY,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE;KAC1F;CACD,CAAC;AAEF;;;GAGG;AACH,MAAM,OAAO,oBAAoB;IACvB,IAAI,GAAG,eAAe,CAAC;IACvB,OAAO,GAAG,OAAO,CAAC;IAEnB,YAAY,GACnB,IAAI,GAAG,EAAE,CAAC;IAEX;;OAEG;IACH,aAAa,CAAC,OAAe,EAAW;QACvC,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAClD,OAAO,UAAU,IAAI,yBAAyB,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAAA,CACpF;IAED;;OAEG;IACH,gBAAgB,CAAC,OAAe,EAAU;QACzC,OAAO,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,aAAa,CAAC;IAAA,CACpD;IAED;;OAEG;IACH,YAAY,CAAC,OAAe,EAAU;QACrC,OAAO,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC;IAAA,CAChD;IAED;;OAEG;IACH,gBAAgB,CAAC,OAAe,EAAuB;QACtD,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAElD,4BAA4B;QAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACjD,IAAI,MAAM,EAAE,CAAC;YACZ,OAAO;gBACN,aAAa,EAAE,MAAM,CAAC,aAAa;gBACnC,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC3B,iBAAiB,EAAE,MAAM,CAAC,YAAY,CAAC,iBAAiB;gBACxD,cAAc,EAAE,MAAM,CAAC,YAAY,CAAC,cAAc;gBAClD,iBAAiB,EAAE,MAAM,CAAC,YAAY,CAAC,iBAAiB;aACxD,CAAC;QACH,CAAC;QAED,qBAAqB;QACrB,MAAM,UAAU,GAAG,yBAAyB,CAAC,UAAU,CAAC,CAAC;QACzD,IAAI,UAAU,EAAE,CAAC;YAChB,OAAO;gBACN,aAAa,EAAE,UAAU,CAAC,aAAa;gBACvC,SAAS,EAAE,UAAU,CAAC,SAAS;gBAC/B,iBAAiB,EAAE,UAAU,CAAC,YAAY,CAAC,iBAAiB;gBAC5D,cAAc,EAAE,UAAU,CAAC,YAAY,CAAC,cAAc;gBACtD,iBAAiB,EAAE,UAAU,CAAC,YAAY,CAAC,iBAAiB;aAC5D,CAAC;QACH,CAAC;QAED,yCAAyC;QACzC,OAAO;YACN,aAAa,EAAE,OAAO;YACtB,SAAS,EAAE,KAAK;YAChB,iBAAiB,EAAE,IAAI;YACvB,cAAc,EAAE,IAAI;YACpB,iBAAiB,EAAE,IAAI;SACvB,CAAC;IAAA,CACF;IAED;;OAEG;IACH,eAAe,CAAC,QAAmB,EAAE,OAAe,EAAqB;QACxE,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAC9C,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QAC5C,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAEzD,OAAO;YACN,QAAQ;YACR,UAAU,EAAE,eAAe;YAC3B,QAAQ,EAAE,KAAK;YACf,QAAQ,EAAE;gBACT,SAAS,EAAE,eAAe,GAAG,MAAM,CAAC,aAAa;aACjD;SACD,CAAC;IAAA,CACF;IAED;;OAEG;IACH,cAAc,CAAC,QAAmB,EAAE,OAAe,EAAE,UAAkB,EAAmB;QACzF,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAE9C,IAAI,UAAU,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;YACxC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC;QACzC,CAAC;QAED,4DAA4D;QAC5D,IAAI,MAAM,CAAC,aAAa,IAAI,MAAM,EAAE,CAAC;YACpC,8CAA8C;YAC9C,OAAO;gBACN,MAAM,EAAE,UAAU;gBAClB,QAAQ;gBACR,QAAQ,EAAE;oBACT,cAAc,EAAE,UAAU;oBAC1B,aAAa,EAAE,MAAM,CAAC,aAAa;oBACnC,SAAS,EAAE,MAAM,CAAC,aAAa,GAAG,UAAU;iBAC5C;aACD,CAAC;QACH,CAAC;QAED,OAAO;YACN,MAAM,EAAE,WAAW;YACnB,QAAQ,EAAE;gBACT,cAAc,EAAE,UAAU;gBAC1B,aAAa,EAAE,MAAM,CAAC,aAAa;aACnC;SACD,CAAC;IAAA,CACF;IAED;;OAEG;IACH,mBAAmB,CAClB,OAAe,EACf,MAKC,EACM;QACP,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAClD,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,EAAE;YACjC,aAAa,EAAE,MAAM,CAAC,aAAa;YACnC,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,YAAY,EAAE;gBACb,iBAAiB,EAAE,IAAI;gBACvB,cAAc,EAAE,MAAM,CAAC,cAAc,IAAI,IAAI;gBAC7C,iBAAiB,EAAE,MAAM,CAAC,iBAAiB,IAAI,IAAI;aACnD;SACD,CAAC,CAAC;IAAA,CACH;IAED;;OAEG;IACH,YAAY,CAAkB,KAAiB,EAAc;QAC5D,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAE/C,OAAO;YACN,GAAG,KAAK;YACR,aAAa,EAAE,MAAM,CAAC,aAAa;YACnC,SAAS,EAAE,MAAM,CAAC,SAAS;SAC3B,CAAC;IAAA,CACF;IAED;;OAEG;IACH,cAAc,GAAa;QAC1B,OAAO,MAAM,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;IAAA,CAC9C;IAED;;OAEG;IACH,qBAAqB,CAAC,OAAe,EAAW;QAC/C,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAC9C,OAAO,MAAM,CAAC,aAAa,IAAI,OAAO,CAAC;IAAA,CACvC;IAED;;OAEG;IACK,gBAAgB,CAAC,OAAe,EAAU;QACjD,OAAO,OAAO,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC;IAAA,CACpC;CACD;AAED;;GAEG;AACH,IAAI,4BAA4B,GAAgC,IAAI,CAAC;AAErE;;GAEG;AACH,MAAM,UAAU,uBAAuB,GAAyB;IAC/D,IAAI,CAAC,4BAA4B,EAAE,CAAC;QACnC,4BAA4B,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC3D,CAAC;IACD,OAAO,4BAA4B,CAAC;AAAA,CACpC","sourcesContent":["/**\n * Large Context Provider Implementation\n * Provides 1M context window support for compatible models\n * This is a third-party architecture implementation\n */\n\nimport type { Api, Model } from \"@boxiaolanya2008/pi-ai\";\nimport type {\n\tIContextProvider,\n\tIModelContextConfig,\n\tIOverflowResult,\n\tIProcessedContext,\n} from \"./context-provider-interface.js\";\n\n/**\n * Model capability flags\n */\ninterface ModelCapabilities {\n\tsupportsStreaming: boolean;\n\tsupportsVision: boolean;\n\tsupportsFunctions: boolean;\n}\n\n/**\n * Large context model definitions\n */\nexport const LARGE_CONTEXT_DEFINITIONS: Record<\n\tstring,\n\t{\n\t\tcontextWindow: number;\n\t\tmaxTokens: number;\n\t\tcapabilities: ModelCapabilities;\n\t}\n> = {\n\t// ═══════════════════════════════════════════════════════════════\n\t// Google Gemini - 1M Context\n\t// ═══════════════════════════════════════════════════════════════\n\t\"gemini-1.5-pro\": {\n\t\tcontextWindow: 1000000,\n\t\tmaxTokens: 8192,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: true, supportsFunctions: true },\n\t},\n\t\"gemini-1.5-flash\": {\n\t\tcontextWindow: 1000000,\n\t\tmaxTokens: 8192,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: true, supportsFunctions: true },\n\t},\n\t\"gemini-2.0-flash\": {\n\t\tcontextWindow: 1000000,\n\t\tmaxTokens: 8192,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: true, supportsFunctions: true },\n\t},\n\t\"gemini-2.0-pro\": {\n\t\tcontextWindow: 1000000,\n\t\tmaxTokens: 8192,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: true, supportsFunctions: true },\n\t},\n\n\t// ═══════════════════════════════════════════════════════════════\n\t// Anthropic Claude - 200K Context\n\t// ═══════════════════════════════════════════════════════════════\n\t\"claude-3-opus-20240229\": {\n\t\tcontextWindow: 200000,\n\t\tmaxTokens: 4096,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: true, supportsFunctions: true },\n\t},\n\t\"claude-3-sonnet-20240229\": {\n\t\tcontextWindow: 200000,\n\t\tmaxTokens: 4096,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: true, supportsFunctions: true },\n\t},\n\t\"claude-3-haiku-20240307\": {\n\t\tcontextWindow: 200000,\n\t\tmaxTokens: 4096,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: true, supportsFunctions: true },\n\t},\n\t\"claude-3-5-sonnet-20241022\": {\n\t\tcontextWindow: 200000,\n\t\tmaxTokens: 8192,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: true, supportsFunctions: true },\n\t},\n\t\"claude-3-5-haiku-20241022\": {\n\t\tcontextWindow: 200000,\n\t\tmaxTokens: 8192,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: false, supportsFunctions: true },\n\t},\n\t\"claude-sonnet-4-20250514\": {\n\t\tcontextWindow: 200000,\n\t\tmaxTokens: 16384,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: true, supportsFunctions: true },\n\t},\n\n\t// ═══════════════════════════════════════════════════════════════\n\t// OpenAI - 128K Context\n\t// ═══════════════════════════════════════════════════════════════\n\t\"gpt-4-turbo\": {\n\t\tcontextWindow: 128000,\n\t\tmaxTokens: 4096,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: true, supportsFunctions: true },\n\t},\n\t\"gpt-4-turbo-preview\": {\n\t\tcontextWindow: 128000,\n\t\tmaxTokens: 4096,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: false, supportsFunctions: true },\n\t},\n\t\"gpt-4o\": {\n\t\tcontextWindow: 128000,\n\t\tmaxTokens: 16384,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: true, supportsFunctions: true },\n\t},\n\t\"gpt-4o-mini\": {\n\t\tcontextWindow: 128000,\n\t\tmaxTokens: 16384,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: true, supportsFunctions: true },\n\t},\n\t\"gpt-4-0125-preview\": {\n\t\tcontextWindow: 128000,\n\t\tmaxTokens: 4096,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: false, supportsFunctions: true },\n\t},\n\n\t// ═══════════════════════════════════════════════════════════════\n\t// DeepSeek - 64K Context\n\t// ═══════════════════════════════════════════════════════════════\n\t\"deepseek-chat\": {\n\t\tcontextWindow: 64000,\n\t\tmaxTokens: 4096,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: false, supportsFunctions: true },\n\t},\n\t\"deepseek-coder\": {\n\t\tcontextWindow: 64000,\n\t\tmaxTokens: 4096,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: false, supportsFunctions: true },\n\t},\n\t\"deepseek-reasoner\": {\n\t\tcontextWindow: 64000,\n\t\tmaxTokens: 8192,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: false, supportsFunctions: true },\n\t},\n\n\t// ═══════════════════════════════════════════════════════════════\n\t// Alibaba Qwen - Up to 1M Context\n\t// ═══════════════════════════════════════════════════════════════\n\t\"qwen-2.5-72b-instruct\": {\n\t\tcontextWindow: 131072,\n\t\tmaxTokens: 8192,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: true, supportsFunctions: true },\n\t},\n\t\"qwen-2.5-32b-instruct\": {\n\t\tcontextWindow: 131072,\n\t\tmaxTokens: 8192,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: false, supportsFunctions: true },\n\t},\n\t\"qwen-max\": {\n\t\tcontextWindow: 1000000,\n\t\tmaxTokens: 65536,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: true, supportsFunctions: true },\n\t},\n\t\"qwen-max-longcontext\": {\n\t\tcontextWindow: 1000000,\n\t\tmaxTokens: 65536,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: true, supportsFunctions: true },\n\t},\n\n\t// ═══════════════════════════════════════════════════════════════\n\t// Moonshot Kimi - Up to 128K Context\n\t// ═══════════════════════════════════════════════════════════════\n\t\"moonshot-v1-8k\": {\n\t\tcontextWindow: 8192,\n\t\tmaxTokens: 4096,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: false, supportsFunctions: true },\n\t},\n\t\"moonshot-v1-32k\": {\n\t\tcontextWindow: 32768,\n\t\tmaxTokens: 4096,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: false, supportsFunctions: true },\n\t},\n\t\"moonshot-v1-128k\": {\n\t\tcontextWindow: 131072,\n\t\tmaxTokens: 4096,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: false, supportsFunctions: true },\n\t},\n\n\t// ═══════════════════════════════════════════════════════════════\n\t// Meta Llama 3.1 - 128K Context\n\t// ═══════════════════════════════════════════════════════════════\n\t\"llama-3.1-405b-instruct\": {\n\t\tcontextWindow: 128000,\n\t\tmaxTokens: 16384,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: false, supportsFunctions: true },\n\t},\n\t\"llama-3.1-70b-instruct\": {\n\t\tcontextWindow: 128000,\n\t\tmaxTokens: 16384,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: false, supportsFunctions: true },\n\t},\n\t\"llama-3.1-8b-instruct\": {\n\t\tcontextWindow: 128000,\n\t\tmaxTokens: 16384,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: false, supportsFunctions: true },\n\t},\n\n\t// ═══════════════════════════════════════════════════════════════\n\t// Mistral - Up to 128K Context\n\t// ═══════════════════════════════════════════════════════════════\n\t\"mistral-large-2407\": {\n\t\tcontextWindow: 128000,\n\t\tmaxTokens: 8192,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: false, supportsFunctions: true },\n\t},\n\t\"mistral-large-2402\": {\n\t\tcontextWindow: 32000,\n\t\tmaxTokens: 8192,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: false, supportsFunctions: true },\n\t},\n\n\t// ═══════════════════════════════════════════════════════════════\n\t// 01.AI Yi - Up to 32K Context\n\t// ═══════════════════════════════════════════════════════════════\n\t\"yi-lightning\": {\n\t\tcontextWindow: 16384,\n\t\tmaxTokens: 4096,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: false, supportsFunctions: true },\n\t},\n\t\"yi-large\": {\n\t\tcontextWindow: 32768,\n\t\tmaxTokens: 4096,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: false, supportsFunctions: true },\n\t},\n\n\t// ═══════════════════════════════════════════════════════════════\n\t// Zhipu GLM - 128K Context\n\t// ═══════════════════════════════════════════════════════════════\n\t\"glm-4\": {\n\t\tcontextWindow: 128000,\n\t\tmaxTokens: 4096,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: true, supportsFunctions: true },\n\t},\n\t\"glm-4-plus\": {\n\t\tcontextWindow: 128000,\n\t\tmaxTokens: 4096,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: true, supportsFunctions: true },\n\t},\n\n\t// ═══════════════════════════════════════════════════════════════\n\t// Groq Models - Varies\n\t// ═══════════════════════════════════════════════════════════════\n\t\"llama-3.3-70b-versatile\": {\n\t\tcontextWindow: 128000,\n\t\tmaxTokens: 8192,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: false, supportsFunctions: true },\n\t},\n\t\"llama-3.3-70b-specdec\": {\n\t\tcontextWindow: 8192,\n\t\tmaxTokens: 8192,\n\t\tcapabilities: { supportsStreaming: true, supportsVision: false, supportsFunctions: false },\n\t},\n};\n\n/**\n * Large Context Provider\n * Implements the IContextProvider interface for 1M context support\n */\nexport class LargeContextProvider implements IContextProvider {\n\treadonly name = \"large-context\";\n\treadonly version = \"1.0.0\";\n\n\tprivate customModels: Map<string, { contextWindow: number; maxTokens: number; capabilities: ModelCapabilities }> =\n\t\tnew Map();\n\n\t/**\n\t * Check if this provider supports a given model\n\t */\n\tsupportsModel(modelId: string): boolean {\n\t\tconst normalized = this.normalizeModelId(modelId);\n\t\treturn normalized in LARGE_CONTEXT_DEFINITIONS || this.customModels.has(normalized);\n\t}\n\n\t/**\n\t * Get context window for a model\n\t */\n\tgetContextWindow(modelId: string): number {\n\t\treturn this.getContextConfig(modelId).contextWindow;\n\t}\n\n\t/**\n\t * Get max output tokens for a model\n\t */\n\tgetMaxTokens(modelId: string): number {\n\t\treturn this.getContextConfig(modelId).maxTokens;\n\t}\n\n\t/**\n\t * Get full context configuration for a model\n\t */\n\tgetContextConfig(modelId: string): IModelContextConfig {\n\t\tconst normalized = this.normalizeModelId(modelId);\n\n\t\t// Check custom models first\n\t\tconst custom = this.customModels.get(normalized);\n\t\tif (custom) {\n\t\t\treturn {\n\t\t\t\tcontextWindow: custom.contextWindow,\n\t\t\t\tmaxTokens: custom.maxTokens,\n\t\t\t\tsupportsStreaming: custom.capabilities.supportsStreaming,\n\t\t\t\tsupportsVision: custom.capabilities.supportsVision,\n\t\t\t\tsupportsFunctions: custom.capabilities.supportsFunctions,\n\t\t\t};\n\t\t}\n\n\t\t// Check known models\n\t\tconst definition = LARGE_CONTEXT_DEFINITIONS[normalized];\n\t\tif (definition) {\n\t\t\treturn {\n\t\t\t\tcontextWindow: definition.contextWindow,\n\t\t\t\tmaxTokens: definition.maxTokens,\n\t\t\t\tsupportsStreaming: definition.capabilities.supportsStreaming,\n\t\t\t\tsupportsVision: definition.capabilities.supportsVision,\n\t\t\t\tsupportsFunctions: definition.capabilities.supportsFunctions,\n\t\t\t};\n\t\t}\n\n\t\t// Default: 1M context for unknown models\n\t\treturn {\n\t\t\tcontextWindow: 1000000,\n\t\t\tmaxTokens: 65536,\n\t\t\tsupportsStreaming: true,\n\t\t\tsupportsVision: true,\n\t\t\tsupportsFunctions: true,\n\t\t};\n\t}\n\n\t/**\n\t * Process messages before sending to API\n\t */\n\tprocessMessages(messages: unknown[], modelId: string): IProcessedContext {\n\t\tconst config = this.getContextConfig(modelId);\n\t\tconst messageStr = JSON.stringify(messages);\n\t\tconst estimatedTokens = Math.ceil(messageStr.length / 4);\n\n\t\treturn {\n\t\t\tmessages,\n\t\t\ttokenCount: estimatedTokens,\n\t\t\tmodified: false,\n\t\t\tmetadata: {\n\t\t\t\ttruncated: estimatedTokens > config.contextWindow,\n\t\t\t},\n\t\t};\n\t}\n\n\t/**\n\t * Handle context overflow\n\t */\n\thandleOverflow(messages: unknown[], modelId: string, tokenCount: number): IOverflowResult {\n\t\tconst config = this.getContextConfig(modelId);\n\n\t\tif (tokenCount <= config.contextWindow) {\n\t\t\treturn { action: \"truncate\", messages };\n\t\t}\n\n\t\t// For large context models, try to keep as much as possible\n\t\tif (config.contextWindow >= 100000) {\n\t\t\t// For 1M context, we likely have enough space\n\t\t\treturn {\n\t\t\t\taction: \"truncate\",\n\t\t\t\tmessages,\n\t\t\t\tmetadata: {\n\t\t\t\t\toriginalTokens: tokenCount,\n\t\t\t\t\tcontextWindow: config.contextWindow,\n\t\t\t\t\tkeepRatio: config.contextWindow / tokenCount,\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\n\t\treturn {\n\t\t\taction: \"summarize\",\n\t\t\tmetadata: {\n\t\t\t\toriginalTokens: tokenCount,\n\t\t\t\tcontextWindow: config.contextWindow,\n\t\t\t},\n\t\t};\n\t}\n\n\t/**\n\t * Register a custom model with context configuration\n\t */\n\tregisterCustomModel(\n\t\tmodelId: string,\n\t\tconfig: {\n\t\t\tcontextWindow: number;\n\t\t\tmaxTokens: number;\n\t\t\tsupportsVision?: boolean;\n\t\t\tsupportsFunctions?: boolean;\n\t\t},\n\t): void {\n\t\tconst normalized = this.normalizeModelId(modelId);\n\t\tthis.customModels.set(normalized, {\n\t\t\tcontextWindow: config.contextWindow,\n\t\t\tmaxTokens: config.maxTokens,\n\t\t\tcapabilities: {\n\t\t\t\tsupportsStreaming: true,\n\t\t\t\tsupportsVision: config.supportsVision ?? true,\n\t\t\t\tsupportsFunctions: config.supportsFunctions ?? true,\n\t\t\t},\n\t\t});\n\t}\n\n\t/**\n\t * Enhance a model with large context configuration\n\t */\n\tenhanceModel<API extends Api>(model: Model<API>): Model<API> {\n\t\tconst config = this.getContextConfig(model.id);\n\n\t\treturn {\n\t\t\t...model,\n\t\t\tcontextWindow: config.contextWindow,\n\t\t\tmaxTokens: config.maxTokens,\n\t\t};\n\t}\n\n\t/**\n\t * Get all known large context models\n\t */\n\tgetKnownModels(): string[] {\n\t\treturn Object.keys(LARGE_CONTEXT_DEFINITIONS);\n\t}\n\n\t/**\n\t * Check if a model has 1M context\n\t */\n\tisMillionContextModel(modelId: string): boolean {\n\t\tconst config = this.getContextConfig(modelId);\n\t\treturn config.contextWindow >= 1000000;\n\t}\n\n\t/**\n\t * Normalize model ID for matching\n\t */\n\tprivate normalizeModelId(modelId: string): string {\n\t\treturn modelId.toLowerCase().trim();\n\t}\n}\n\n/**\n * Singleton instance\n */\nlet largeContextProviderInstance: LargeContextProvider | null = null;\n\n/**\n * Get the singleton instance\n */\nexport function getLargeContextProvider(): LargeContextProvider {\n\tif (!largeContextProviderInstance) {\n\t\tlargeContextProviderInstance = new LargeContextProvider();\n\t}\n\treturn largeContextProviderInstance;\n}\n"]}
@@ -1,5 +1,5 @@
1
- import type { AgentMessage } from "@mariozechner/pi-agent-core";
2
- import type { ImageContent, Message, TextContent } from "@mariozechner/pi-ai";
1
+ import type { AgentMessage } from "@boxiaolanya2008/pi-agent-core";
2
+ import type { ImageContent, Message, TextContent } from "@boxiaolanya2008/pi-ai";
3
3
  export declare const COMPACTION_SUMMARY_PREFIX = "The conversation history before this point was compacted into the following summary:\n<summary>\n";
4
4
  export declare const COMPACTION_SUMMARY_SUFFIX = "\n</summary>";
5
5
  export declare const BRANCH_SUMMARY_PREFIX = "The following is a summary of a branch that this conversation came back from:\n<summary>\n";
@@ -35,7 +35,7 @@ export interface CompactionSummaryMessage {
35
35
  tokensBefore: number;
36
36
  timestamp: number;
37
37
  }
38
- declare module "@mariozechner/pi-agent-core" {
38
+ declare module "@boxiaolanya2008/pi-agent-core" {
39
39
  interface CustomAgentMessages {
40
40
  bashExecution: BashExecutionMessage;
41
41
  custom: CustomMessage;
@@ -1 +1 @@
1
- {"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../src/core/messages.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAC9E,eAAO,MAAM,yBAAyB,sGAErC,CAAC;AACF,eAAO,MAAM,yBAAyB,iBAC3B,CAAC;AACZ,eAAO,MAAM,qBAAqB,+FAEjC,CAAC;AACF,eAAO,MAAM,qBAAqB,eAAe,CAAC;AAClD,MAAM,WAAW,oBAAoB;IACpC,IAAI,EAAE,eAAe,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC7B;AACD,MAAM,WAAW,aAAa,CAAC,CAAC,GAAG,OAAO;IACzC,IAAI,EAAE,QAAQ,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,GAAG,CAAC,WAAW,GAAG,YAAY,CAAC,EAAE,CAAC;IACjD,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,CAAC,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;CAClB;AACD,MAAM,WAAW,oBAAoB;IACpC,IAAI,EAAE,eAAe,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CAClB;AACD,MAAM,WAAW,wBAAwB;IACxC,IAAI,EAAE,mBAAmB,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;CAClB;AACD,OAAO,QAAQ,6BAA6B,CAAC,CAAC;IAC7C,UAAU,mBAAmB;QAC5B,aAAa,EAAE,oBAAoB,CAAC;QACpC,MAAM,EAAE,aAAa,CAAC;QACtB,aAAa,EAAE,oBAAoB,CAAC;QACpC,iBAAiB,EAAE,wBAAwB,CAAC;KAC5C;CACD;AACD,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,oBAAoB,GAAG,MAAM,CAgBrE;AACD,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,oBAAoB,CAOnH;AACD,wBAAgB,8BAA8B,CAC7C,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,MAAM,GACf,wBAAwB,CAO1B;AACD,wBAAgB,mBAAmB,CAClC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,GAAG,CAAC,WAAW,GAAG,YAAY,CAAC,EAAE,EAChD,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,OAAO,GAAG,SAAS,EAC5B,SAAS,EAAE,MAAM,GACf,aAAa,CASf;AACD,wBAAgB,YAAY,CAAC,QAAQ,EAAE,YAAY,EAAE,GAAG,OAAO,EAAE,CA8ChE","sourcesContent":["import type { AgentMessage } from \"@mariozechner/pi-agent-core\";\nimport type { ImageContent, Message, TextContent } from \"@mariozechner/pi-ai\";\nexport const COMPACTION_SUMMARY_PREFIX = `The conversation history before this point was compacted into the following summary:\n<summary>\n`;\nexport const COMPACTION_SUMMARY_SUFFIX = `\n</summary>`;\nexport const BRANCH_SUMMARY_PREFIX = `The following is a summary of a branch that this conversation came back from:\n<summary>\n`;\nexport const BRANCH_SUMMARY_SUFFIX = `</summary>`;\nexport interface BashExecutionMessage {\n\trole: \"bashExecution\";\n\tcommand: string;\n\toutput: string;\n\texitCode: number | undefined;\n\tcancelled: boolean;\n\ttruncated: boolean;\n\tfullOutputPath?: string;\n\ttimestamp: number;\n\texcludeFromContext?: boolean;\n}\nexport interface CustomMessage<T = unknown> {\n\trole: \"custom\";\n\tcustomType: string;\n\tcontent: string | (TextContent | ImageContent)[];\n\tdisplay: boolean;\n\tdetails?: T;\n\ttimestamp: number;\n}\nexport interface BranchSummaryMessage {\n\trole: \"branchSummary\";\n\tsummary: string;\n\tfromId: string;\n\ttimestamp: number;\n}\nexport interface CompactionSummaryMessage {\n\trole: \"compactionSummary\";\n\tsummary: string;\n\ttokensBefore: number;\n\ttimestamp: number;\n}\ndeclare module \"@mariozechner/pi-agent-core\" {\n\tinterface CustomAgentMessages {\n\t\tbashExecution: BashExecutionMessage;\n\t\tcustom: CustomMessage;\n\t\tbranchSummary: BranchSummaryMessage;\n\t\tcompactionSummary: CompactionSummaryMessage;\n\t}\n}\nexport function bashExecutionToText(msg: BashExecutionMessage): string {\n\tlet text = `Ran \\`${msg.command}\\`\\n`;\n\tif (msg.output) {\n\t\ttext += `\\`\\`\\`\\n${msg.output}\\n\\`\\`\\``;\n\t} else {\n\t\ttext += \"(no output)\";\n\t}\n\tif (msg.cancelled) {\n\t\ttext += \"\\n\\n(command cancelled)\";\n\t} else if (msg.exitCode !== null && msg.exitCode !== undefined && msg.exitCode !== 0) {\n\t\ttext += `\\n\\nCommand exited with code ${msg.exitCode}`;\n\t}\n\tif (msg.truncated && msg.fullOutputPath) {\n\t\ttext += `\\n\\n[Output truncated. Full output: ${msg.fullOutputPath}]`;\n\t}\n\treturn text;\n}\nexport function createBranchSummaryMessage(summary: string, fromId: string, timestamp: string): BranchSummaryMessage {\n\treturn {\n\t\trole: \"branchSummary\",\n\t\tsummary,\n\t\tfromId,\n\t\ttimestamp: new Date(timestamp).getTime(),\n\t};\n}\nexport function createCompactionSummaryMessage(\n\tsummary: string,\n\ttokensBefore: number,\n\ttimestamp: string,\n): CompactionSummaryMessage {\n\treturn {\n\t\trole: \"compactionSummary\",\n\t\tsummary: summary,\n\t\ttokensBefore,\n\t\ttimestamp: new Date(timestamp).getTime(),\n\t};\n}\nexport function createCustomMessage(\n\tcustomType: string,\n\tcontent: string | (TextContent | ImageContent)[],\n\tdisplay: boolean,\n\tdetails: unknown | undefined,\n\ttimestamp: string,\n): CustomMessage {\n\treturn {\n\t\trole: \"custom\",\n\t\tcustomType,\n\t\tcontent,\n\t\tdisplay,\n\t\tdetails,\n\t\ttimestamp: new Date(timestamp).getTime(),\n\t};\n}\nexport function convertToLlm(messages: AgentMessage[]): Message[] {\n\treturn messages\n\t\t.map((m): Message | undefined => {\n\t\t\tswitch (m.role) {\n\t\t\t\tcase \"bashExecution\":\n\t\t\t\t\tif (m.excludeFromContext) {\n\t\t\t\t\t\treturn undefined;\n\t\t\t\t\t}\n\t\t\t\t\treturn {\n\t\t\t\t\t\trole: \"user\",\n\t\t\t\t\t\tcontent: [{ type: \"text\", text: bashExecutionToText(m) }],\n\t\t\t\t\t\ttimestamp: m.timestamp,\n\t\t\t\t\t};\n\t\t\t\tcase \"custom\": {\n\t\t\t\t\tconst content = typeof m.content === \"string\" ? [{ type: \"text\" as const, text: m.content }] : m.content;\n\t\t\t\t\treturn {\n\t\t\t\t\t\trole: \"user\",\n\t\t\t\t\t\tcontent,\n\t\t\t\t\t\ttimestamp: m.timestamp,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tcase \"branchSummary\":\n\t\t\t\t\treturn {\n\t\t\t\t\t\trole: \"user\",\n\t\t\t\t\t\tcontent: [{ type: \"text\" as const, text: BRANCH_SUMMARY_PREFIX + m.summary + BRANCH_SUMMARY_SUFFIX }],\n\t\t\t\t\t\ttimestamp: m.timestamp,\n\t\t\t\t\t};\n\t\t\t\tcase \"compactionSummary\":\n\t\t\t\t\treturn {\n\t\t\t\t\t\trole: \"user\",\n\t\t\t\t\t\tcontent: [\n\t\t\t\t\t\t\t{ type: \"text\" as const, text: COMPACTION_SUMMARY_PREFIX + m.summary + COMPACTION_SUMMARY_SUFFIX },\n\t\t\t\t\t\t],\n\t\t\t\t\t\ttimestamp: m.timestamp,\n\t\t\t\t\t};\n\t\t\t\tcase \"user\":\n\t\t\t\tcase \"assistant\":\n\t\t\t\tcase \"toolResult\":\n\t\t\t\t\treturn m;\n\t\t\t\tdefault: {\n\t\t\t\t\tconst _exhaustiveCheck: never = m;\n\t\t\t\t\treturn undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\t\t.filter((m) => m !== undefined);\n}\n"]}
1
+ {"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../src/core/messages.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACjF,eAAO,MAAM,yBAAyB,sGAErC,CAAC;AACF,eAAO,MAAM,yBAAyB,iBAC3B,CAAC;AACZ,eAAO,MAAM,qBAAqB,+FAEjC,CAAC;AACF,eAAO,MAAM,qBAAqB,eAAe,CAAC;AAClD,MAAM,WAAW,oBAAoB;IACpC,IAAI,EAAE,eAAe,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC7B;AACD,MAAM,WAAW,aAAa,CAAC,CAAC,GAAG,OAAO;IACzC,IAAI,EAAE,QAAQ,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,GAAG,CAAC,WAAW,GAAG,YAAY,CAAC,EAAE,CAAC;IACjD,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,CAAC,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;CAClB;AACD,MAAM,WAAW,oBAAoB;IACpC,IAAI,EAAE,eAAe,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CAClB;AACD,MAAM,WAAW,wBAAwB;IACxC,IAAI,EAAE,mBAAmB,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;CAClB;AACD,OAAO,QAAQ,gCAAgC,CAAC,CAAC;IAChD,UAAU,mBAAmB;QAC5B,aAAa,EAAE,oBAAoB,CAAC;QACpC,MAAM,EAAE,aAAa,CAAC;QACtB,aAAa,EAAE,oBAAoB,CAAC;QACpC,iBAAiB,EAAE,wBAAwB,CAAC;KAC5C;CACD;AACD,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,oBAAoB,GAAG,MAAM,CAgBrE;AACD,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,oBAAoB,CAOnH;AACD,wBAAgB,8BAA8B,CAC7C,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,MAAM,GACf,wBAAwB,CAO1B;AACD,wBAAgB,mBAAmB,CAClC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,GAAG,CAAC,WAAW,GAAG,YAAY,CAAC,EAAE,EAChD,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,OAAO,GAAG,SAAS,EAC5B,SAAS,EAAE,MAAM,GACf,aAAa,CASf;AACD,wBAAgB,YAAY,CAAC,QAAQ,EAAE,YAAY,EAAE,GAAG,OAAO,EAAE,CA8ChE","sourcesContent":["import type { AgentMessage } from \"@boxiaolanya2008/pi-agent-core\";\nimport type { ImageContent, Message, TextContent } from \"@boxiaolanya2008/pi-ai\";\nexport const COMPACTION_SUMMARY_PREFIX = `The conversation history before this point was compacted into the following summary:\n<summary>\n`;\nexport const COMPACTION_SUMMARY_SUFFIX = `\n</summary>`;\nexport const BRANCH_SUMMARY_PREFIX = `The following is a summary of a branch that this conversation came back from:\n<summary>\n`;\nexport const BRANCH_SUMMARY_SUFFIX = `</summary>`;\nexport interface BashExecutionMessage {\n\trole: \"bashExecution\";\n\tcommand: string;\n\toutput: string;\n\texitCode: number | undefined;\n\tcancelled: boolean;\n\ttruncated: boolean;\n\tfullOutputPath?: string;\n\ttimestamp: number;\n\texcludeFromContext?: boolean;\n}\nexport interface CustomMessage<T = unknown> {\n\trole: \"custom\";\n\tcustomType: string;\n\tcontent: string | (TextContent | ImageContent)[];\n\tdisplay: boolean;\n\tdetails?: T;\n\ttimestamp: number;\n}\nexport interface BranchSummaryMessage {\n\trole: \"branchSummary\";\n\tsummary: string;\n\tfromId: string;\n\ttimestamp: number;\n}\nexport interface CompactionSummaryMessage {\n\trole: \"compactionSummary\";\n\tsummary: string;\n\ttokensBefore: number;\n\ttimestamp: number;\n}\ndeclare module \"@boxiaolanya2008/pi-agent-core\" {\n\tinterface CustomAgentMessages {\n\t\tbashExecution: BashExecutionMessage;\n\t\tcustom: CustomMessage;\n\t\tbranchSummary: BranchSummaryMessage;\n\t\tcompactionSummary: CompactionSummaryMessage;\n\t}\n}\nexport function bashExecutionToText(msg: BashExecutionMessage): string {\n\tlet text = `Ran \\`${msg.command}\\`\\n`;\n\tif (msg.output) {\n\t\ttext += `\\`\\`\\`\\n${msg.output}\\n\\`\\`\\``;\n\t} else {\n\t\ttext += \"(no output)\";\n\t}\n\tif (msg.cancelled) {\n\t\ttext += \"\\n\\n(command cancelled)\";\n\t} else if (msg.exitCode !== null && msg.exitCode !== undefined && msg.exitCode !== 0) {\n\t\ttext += `\\n\\nCommand exited with code ${msg.exitCode}`;\n\t}\n\tif (msg.truncated && msg.fullOutputPath) {\n\t\ttext += `\\n\\n[Output truncated. Full output: ${msg.fullOutputPath}]`;\n\t}\n\treturn text;\n}\nexport function createBranchSummaryMessage(summary: string, fromId: string, timestamp: string): BranchSummaryMessage {\n\treturn {\n\t\trole: \"branchSummary\",\n\t\tsummary,\n\t\tfromId,\n\t\ttimestamp: new Date(timestamp).getTime(),\n\t};\n}\nexport function createCompactionSummaryMessage(\n\tsummary: string,\n\ttokensBefore: number,\n\ttimestamp: string,\n): CompactionSummaryMessage {\n\treturn {\n\t\trole: \"compactionSummary\",\n\t\tsummary: summary,\n\t\ttokensBefore,\n\t\ttimestamp: new Date(timestamp).getTime(),\n\t};\n}\nexport function createCustomMessage(\n\tcustomType: string,\n\tcontent: string | (TextContent | ImageContent)[],\n\tdisplay: boolean,\n\tdetails: unknown | undefined,\n\ttimestamp: string,\n): CustomMessage {\n\treturn {\n\t\trole: \"custom\",\n\t\tcustomType,\n\t\tcontent,\n\t\tdisplay,\n\t\tdetails,\n\t\ttimestamp: new Date(timestamp).getTime(),\n\t};\n}\nexport function convertToLlm(messages: AgentMessage[]): Message[] {\n\treturn messages\n\t\t.map((m): Message | undefined => {\n\t\t\tswitch (m.role) {\n\t\t\t\tcase \"bashExecution\":\n\t\t\t\t\tif (m.excludeFromContext) {\n\t\t\t\t\t\treturn undefined;\n\t\t\t\t\t}\n\t\t\t\t\treturn {\n\t\t\t\t\t\trole: \"user\",\n\t\t\t\t\t\tcontent: [{ type: \"text\", text: bashExecutionToText(m) }],\n\t\t\t\t\t\ttimestamp: m.timestamp,\n\t\t\t\t\t};\n\t\t\t\tcase \"custom\": {\n\t\t\t\t\tconst content = typeof m.content === \"string\" ? [{ type: \"text\" as const, text: m.content }] : m.content;\n\t\t\t\t\treturn {\n\t\t\t\t\t\trole: \"user\",\n\t\t\t\t\t\tcontent,\n\t\t\t\t\t\ttimestamp: m.timestamp,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tcase \"branchSummary\":\n\t\t\t\t\treturn {\n\t\t\t\t\t\trole: \"user\",\n\t\t\t\t\t\tcontent: [{ type: \"text\" as const, text: BRANCH_SUMMARY_PREFIX + m.summary + BRANCH_SUMMARY_SUFFIX }],\n\t\t\t\t\t\ttimestamp: m.timestamp,\n\t\t\t\t\t};\n\t\t\t\tcase \"compactionSummary\":\n\t\t\t\t\treturn {\n\t\t\t\t\t\trole: \"user\",\n\t\t\t\t\t\tcontent: [\n\t\t\t\t\t\t\t{ type: \"text\" as const, text: COMPACTION_SUMMARY_PREFIX + m.summary + COMPACTION_SUMMARY_SUFFIX },\n\t\t\t\t\t\t],\n\t\t\t\t\t\ttimestamp: m.timestamp,\n\t\t\t\t\t};\n\t\t\t\tcase \"user\":\n\t\t\t\tcase \"assistant\":\n\t\t\t\tcase \"toolResult\":\n\t\t\t\t\treturn m;\n\t\t\t\tdefault: {\n\t\t\t\t\tconst _exhaustiveCheck: never = m;\n\t\t\t\t\treturn undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\t\t.filter((m) => m !== undefined);\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"messages.js","sourceRoot":"","sources":["../../src/core/messages.ts"],"names":[],"mappings":"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","sourcesContent":["import type { AgentMessage } from \"@mariozechner/pi-agent-core\";\nimport type { ImageContent, Message, TextContent } from \"@mariozechner/pi-ai\";\nexport const COMPACTION_SUMMARY_PREFIX = `The conversation history before this point was compacted into the following summary:\n<summary>\n`;\nexport const COMPACTION_SUMMARY_SUFFIX = `\n</summary>`;\nexport const BRANCH_SUMMARY_PREFIX = `The following is a summary of a branch that this conversation came back from:\n<summary>\n`;\nexport const BRANCH_SUMMARY_SUFFIX = `</summary>`;\nexport interface BashExecutionMessage {\n\trole: \"bashExecution\";\n\tcommand: string;\n\toutput: string;\n\texitCode: number | undefined;\n\tcancelled: boolean;\n\ttruncated: boolean;\n\tfullOutputPath?: string;\n\ttimestamp: number;\n\texcludeFromContext?: boolean;\n}\nexport interface CustomMessage<T = unknown> {\n\trole: \"custom\";\n\tcustomType: string;\n\tcontent: string | (TextContent | ImageContent)[];\n\tdisplay: boolean;\n\tdetails?: T;\n\ttimestamp: number;\n}\nexport interface BranchSummaryMessage {\n\trole: \"branchSummary\";\n\tsummary: string;\n\tfromId: string;\n\ttimestamp: number;\n}\nexport interface CompactionSummaryMessage {\n\trole: \"compactionSummary\";\n\tsummary: string;\n\ttokensBefore: number;\n\ttimestamp: number;\n}\ndeclare module \"@mariozechner/pi-agent-core\" {\n\tinterface CustomAgentMessages {\n\t\tbashExecution: BashExecutionMessage;\n\t\tcustom: CustomMessage;\n\t\tbranchSummary: BranchSummaryMessage;\n\t\tcompactionSummary: CompactionSummaryMessage;\n\t}\n}\nexport function bashExecutionToText(msg: BashExecutionMessage): string {\n\tlet text = `Ran \\`${msg.command}\\`\\n`;\n\tif (msg.output) {\n\t\ttext += `\\`\\`\\`\\n${msg.output}\\n\\`\\`\\``;\n\t} else {\n\t\ttext += \"(no output)\";\n\t}\n\tif (msg.cancelled) {\n\t\ttext += \"\\n\\n(command cancelled)\";\n\t} else if (msg.exitCode !== null && msg.exitCode !== undefined && msg.exitCode !== 0) {\n\t\ttext += `\\n\\nCommand exited with code ${msg.exitCode}`;\n\t}\n\tif (msg.truncated && msg.fullOutputPath) {\n\t\ttext += `\\n\\n[Output truncated. Full output: ${msg.fullOutputPath}]`;\n\t}\n\treturn text;\n}\nexport function createBranchSummaryMessage(summary: string, fromId: string, timestamp: string): BranchSummaryMessage {\n\treturn {\n\t\trole: \"branchSummary\",\n\t\tsummary,\n\t\tfromId,\n\t\ttimestamp: new Date(timestamp).getTime(),\n\t};\n}\nexport function createCompactionSummaryMessage(\n\tsummary: string,\n\ttokensBefore: number,\n\ttimestamp: string,\n): CompactionSummaryMessage {\n\treturn {\n\t\trole: \"compactionSummary\",\n\t\tsummary: summary,\n\t\ttokensBefore,\n\t\ttimestamp: new Date(timestamp).getTime(),\n\t};\n}\nexport function createCustomMessage(\n\tcustomType: string,\n\tcontent: string | (TextContent | ImageContent)[],\n\tdisplay: boolean,\n\tdetails: unknown | undefined,\n\ttimestamp: string,\n): CustomMessage {\n\treturn {\n\t\trole: \"custom\",\n\t\tcustomType,\n\t\tcontent,\n\t\tdisplay,\n\t\tdetails,\n\t\ttimestamp: new Date(timestamp).getTime(),\n\t};\n}\nexport function convertToLlm(messages: AgentMessage[]): Message[] {\n\treturn messages\n\t\t.map((m): Message | undefined => {\n\t\t\tswitch (m.role) {\n\t\t\t\tcase \"bashExecution\":\n\t\t\t\t\tif (m.excludeFromContext) {\n\t\t\t\t\t\treturn undefined;\n\t\t\t\t\t}\n\t\t\t\t\treturn {\n\t\t\t\t\t\trole: \"user\",\n\t\t\t\t\t\tcontent: [{ type: \"text\", text: bashExecutionToText(m) }],\n\t\t\t\t\t\ttimestamp: m.timestamp,\n\t\t\t\t\t};\n\t\t\t\tcase \"custom\": {\n\t\t\t\t\tconst content = typeof m.content === \"string\" ? [{ type: \"text\" as const, text: m.content }] : m.content;\n\t\t\t\t\treturn {\n\t\t\t\t\t\trole: \"user\",\n\t\t\t\t\t\tcontent,\n\t\t\t\t\t\ttimestamp: m.timestamp,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tcase \"branchSummary\":\n\t\t\t\t\treturn {\n\t\t\t\t\t\trole: \"user\",\n\t\t\t\t\t\tcontent: [{ type: \"text\" as const, text: BRANCH_SUMMARY_PREFIX + m.summary + BRANCH_SUMMARY_SUFFIX }],\n\t\t\t\t\t\ttimestamp: m.timestamp,\n\t\t\t\t\t};\n\t\t\t\tcase \"compactionSummary\":\n\t\t\t\t\treturn {\n\t\t\t\t\t\trole: \"user\",\n\t\t\t\t\t\tcontent: [\n\t\t\t\t\t\t\t{ type: \"text\" as const, text: COMPACTION_SUMMARY_PREFIX + m.summary + COMPACTION_SUMMARY_SUFFIX },\n\t\t\t\t\t\t],\n\t\t\t\t\t\ttimestamp: m.timestamp,\n\t\t\t\t\t};\n\t\t\t\tcase \"user\":\n\t\t\t\tcase \"assistant\":\n\t\t\t\tcase \"toolResult\":\n\t\t\t\t\treturn m;\n\t\t\t\tdefault: {\n\t\t\t\t\tconst _exhaustiveCheck: never = m;\n\t\t\t\t\treturn undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\t\t.filter((m) => m !== undefined);\n}\n"]}
1
+ {"version":3,"file":"messages.js","sourceRoot":"","sources":["../../src/core/messages.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,yBAAyB,GAAG;;CAExC,CAAC;AACF,MAAM,CAAC,MAAM,yBAAyB,GAAG;WAC9B,CAAC;AACZ,MAAM,CAAC,MAAM,qBAAqB,GAAG;;CAEpC,CAAC;AACF,MAAM,CAAC,MAAM,qBAAqB,GAAG,YAAY,CAAC;AAwClD,MAAM,UAAU,mBAAmB,CAAC,GAAyB,EAAU;IACtE,IAAI,IAAI,GAAG,SAAS,GAAG,CAAC,OAAO,MAAM,CAAC;IACtC,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;QAChB,IAAI,IAAI,WAAW,GAAG,CAAC,MAAM,UAAU,CAAC;IACzC,CAAC;SAAM,CAAC;QACP,IAAI,IAAI,aAAa,CAAC;IACvB,CAAC;IACD,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC;QACnB,IAAI,IAAI,yBAAyB,CAAC;IACnC,CAAC;SAAM,IAAI,GAAG,CAAC,QAAQ,KAAK,IAAI,IAAI,GAAG,CAAC,QAAQ,KAAK,SAAS,IAAI,GAAG,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;QACtF,IAAI,IAAI,gCAAgC,GAAG,CAAC,QAAQ,EAAE,CAAC;IACxD,CAAC;IACD,IAAI,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,cAAc,EAAE,CAAC;QACzC,IAAI,IAAI,uCAAuC,GAAG,CAAC,cAAc,GAAG,CAAC;IACtE,CAAC;IACD,OAAO,IAAI,CAAC;AAAA,CACZ;AACD,MAAM,UAAU,0BAA0B,CAAC,OAAe,EAAE,MAAc,EAAE,SAAiB,EAAwB;IACpH,OAAO;QACN,IAAI,EAAE,eAAe;QACrB,OAAO;QACP,MAAM;QACN,SAAS,EAAE,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE;KACxC,CAAC;AAAA,CACF;AACD,MAAM,UAAU,8BAA8B,CAC7C,OAAe,EACf,YAAoB,EACpB,SAAiB,EACU;IAC3B,OAAO;QACN,IAAI,EAAE,mBAAmB;QACzB,OAAO,EAAE,OAAO;QAChB,YAAY;QACZ,SAAS,EAAE,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE;KACxC,CAAC;AAAA,CACF;AACD,MAAM,UAAU,mBAAmB,CAClC,UAAkB,EAClB,OAAgD,EAChD,OAAgB,EAChB,OAA4B,EAC5B,SAAiB,EACD;IAChB,OAAO;QACN,IAAI,EAAE,QAAQ;QACd,UAAU;QACV,OAAO;QACP,OAAO;QACP,OAAO;QACP,SAAS,EAAE,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE;KACxC,CAAC;AAAA,CACF;AACD,MAAM,UAAU,YAAY,CAAC,QAAwB,EAAa;IACjE,OAAO,QAAQ;SACb,GAAG,CAAC,CAAC,CAAC,EAAuB,EAAE,CAAC;QAChC,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;YAChB,KAAK,eAAe;gBACnB,IAAI,CAAC,CAAC,kBAAkB,EAAE,CAAC;oBAC1B,OAAO,SAAS,CAAC;gBAClB,CAAC;gBACD,OAAO;oBACN,IAAI,EAAE,MAAM;oBACZ,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,mBAAmB,CAAC,CAAC,CAAC,EAAE,CAAC;oBACzD,SAAS,EAAE,CAAC,CAAC,SAAS;iBACtB,CAAC;YACH,KAAK,QAAQ,EAAE,CAAC;gBACf,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;gBACzG,OAAO;oBACN,IAAI,EAAE,MAAM;oBACZ,OAAO;oBACP,SAAS,EAAE,CAAC,CAAC,SAAS;iBACtB,CAAC;YACH,CAAC;YACD,KAAK,eAAe;gBACnB,OAAO;oBACN,IAAI,EAAE,MAAM;oBACZ,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,qBAAqB,GAAG,CAAC,CAAC,OAAO,GAAG,qBAAqB,EAAE,CAAC;oBACrG,SAAS,EAAE,CAAC,CAAC,SAAS;iBACtB,CAAC;YACH,KAAK,mBAAmB;gBACvB,OAAO;oBACN,IAAI,EAAE,MAAM;oBACZ,OAAO,EAAE;wBACR,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,yBAAyB,GAAG,CAAC,CAAC,OAAO,GAAG,yBAAyB,EAAE;qBAClG;oBACD,SAAS,EAAE,CAAC,CAAC,SAAS;iBACtB,CAAC;YACH,KAAK,MAAM,CAAC;YACZ,KAAK,WAAW,CAAC;YACjB,KAAK,YAAY;gBAChB,OAAO,CAAC,CAAC;YACV,SAAS,CAAC;gBACT,MAAM,gBAAgB,GAAU,CAAC,CAAC;gBAClC,OAAO,SAAS,CAAC;YAClB,CAAC;QACF,CAAC;IAAA,CACD,CAAC;SACD,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC;AAAA,CACjC","sourcesContent":["import type { AgentMessage } from \"@boxiaolanya2008/pi-agent-core\";\nimport type { ImageContent, Message, TextContent } from \"@boxiaolanya2008/pi-ai\";\nexport const COMPACTION_SUMMARY_PREFIX = `The conversation history before this point was compacted into the following summary:\n<summary>\n`;\nexport const COMPACTION_SUMMARY_SUFFIX = `\n</summary>`;\nexport const BRANCH_SUMMARY_PREFIX = `The following is a summary of a branch that this conversation came back from:\n<summary>\n`;\nexport const BRANCH_SUMMARY_SUFFIX = `</summary>`;\nexport interface BashExecutionMessage {\n\trole: \"bashExecution\";\n\tcommand: string;\n\toutput: string;\n\texitCode: number | undefined;\n\tcancelled: boolean;\n\ttruncated: boolean;\n\tfullOutputPath?: string;\n\ttimestamp: number;\n\texcludeFromContext?: boolean;\n}\nexport interface CustomMessage<T = unknown> {\n\trole: \"custom\";\n\tcustomType: string;\n\tcontent: string | (TextContent | ImageContent)[];\n\tdisplay: boolean;\n\tdetails?: T;\n\ttimestamp: number;\n}\nexport interface BranchSummaryMessage {\n\trole: \"branchSummary\";\n\tsummary: string;\n\tfromId: string;\n\ttimestamp: number;\n}\nexport interface CompactionSummaryMessage {\n\trole: \"compactionSummary\";\n\tsummary: string;\n\ttokensBefore: number;\n\ttimestamp: number;\n}\ndeclare module \"@boxiaolanya2008/pi-agent-core\" {\n\tinterface CustomAgentMessages {\n\t\tbashExecution: BashExecutionMessage;\n\t\tcustom: CustomMessage;\n\t\tbranchSummary: BranchSummaryMessage;\n\t\tcompactionSummary: CompactionSummaryMessage;\n\t}\n}\nexport function bashExecutionToText(msg: BashExecutionMessage): string {\n\tlet text = `Ran \\`${msg.command}\\`\\n`;\n\tif (msg.output) {\n\t\ttext += `\\`\\`\\`\\n${msg.output}\\n\\`\\`\\``;\n\t} else {\n\t\ttext += \"(no output)\";\n\t}\n\tif (msg.cancelled) {\n\t\ttext += \"\\n\\n(command cancelled)\";\n\t} else if (msg.exitCode !== null && msg.exitCode !== undefined && msg.exitCode !== 0) {\n\t\ttext += `\\n\\nCommand exited with code ${msg.exitCode}`;\n\t}\n\tif (msg.truncated && msg.fullOutputPath) {\n\t\ttext += `\\n\\n[Output truncated. Full output: ${msg.fullOutputPath}]`;\n\t}\n\treturn text;\n}\nexport function createBranchSummaryMessage(summary: string, fromId: string, timestamp: string): BranchSummaryMessage {\n\treturn {\n\t\trole: \"branchSummary\",\n\t\tsummary,\n\t\tfromId,\n\t\ttimestamp: new Date(timestamp).getTime(),\n\t};\n}\nexport function createCompactionSummaryMessage(\n\tsummary: string,\n\ttokensBefore: number,\n\ttimestamp: string,\n): CompactionSummaryMessage {\n\treturn {\n\t\trole: \"compactionSummary\",\n\t\tsummary: summary,\n\t\ttokensBefore,\n\t\ttimestamp: new Date(timestamp).getTime(),\n\t};\n}\nexport function createCustomMessage(\n\tcustomType: string,\n\tcontent: string | (TextContent | ImageContent)[],\n\tdisplay: boolean,\n\tdetails: unknown | undefined,\n\ttimestamp: string,\n): CustomMessage {\n\treturn {\n\t\trole: \"custom\",\n\t\tcustomType,\n\t\tcontent,\n\t\tdisplay,\n\t\tdetails,\n\t\ttimestamp: new Date(timestamp).getTime(),\n\t};\n}\nexport function convertToLlm(messages: AgentMessage[]): Message[] {\n\treturn messages\n\t\t.map((m): Message | undefined => {\n\t\t\tswitch (m.role) {\n\t\t\t\tcase \"bashExecution\":\n\t\t\t\t\tif (m.excludeFromContext) {\n\t\t\t\t\t\treturn undefined;\n\t\t\t\t\t}\n\t\t\t\t\treturn {\n\t\t\t\t\t\trole: \"user\",\n\t\t\t\t\t\tcontent: [{ type: \"text\", text: bashExecutionToText(m) }],\n\t\t\t\t\t\ttimestamp: m.timestamp,\n\t\t\t\t\t};\n\t\t\t\tcase \"custom\": {\n\t\t\t\t\tconst content = typeof m.content === \"string\" ? [{ type: \"text\" as const, text: m.content }] : m.content;\n\t\t\t\t\treturn {\n\t\t\t\t\t\trole: \"user\",\n\t\t\t\t\t\tcontent,\n\t\t\t\t\t\ttimestamp: m.timestamp,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tcase \"branchSummary\":\n\t\t\t\t\treturn {\n\t\t\t\t\t\trole: \"user\",\n\t\t\t\t\t\tcontent: [{ type: \"text\" as const, text: BRANCH_SUMMARY_PREFIX + m.summary + BRANCH_SUMMARY_SUFFIX }],\n\t\t\t\t\t\ttimestamp: m.timestamp,\n\t\t\t\t\t};\n\t\t\t\tcase \"compactionSummary\":\n\t\t\t\t\treturn {\n\t\t\t\t\t\trole: \"user\",\n\t\t\t\t\t\tcontent: [\n\t\t\t\t\t\t\t{ type: \"text\" as const, text: COMPACTION_SUMMARY_PREFIX + m.summary + COMPACTION_SUMMARY_SUFFIX },\n\t\t\t\t\t\t],\n\t\t\t\t\t\ttimestamp: m.timestamp,\n\t\t\t\t\t};\n\t\t\t\tcase \"user\":\n\t\t\t\tcase \"assistant\":\n\t\t\t\tcase \"toolResult\":\n\t\t\t\t\treturn m;\n\t\t\t\tdefault: {\n\t\t\t\t\tconst _exhaustiveCheck: never = m;\n\t\t\t\t\treturn undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\t\t.filter((m) => m !== undefined);\n}\n"]}
@@ -1,4 +1,4 @@
1
- import { type Api, type AssistantMessageEventStream, type Context, type Model, type SimpleStreamOptions } from "@mariozechner/pi-ai";
1
+ import { type Api, type AssistantMessageEventStream, type Context, type Model, type SimpleStreamOptions } from "@boxiaolanya2008/pi-ai";
2
2
  import type { AuthStorage } from "./auth-storage.js";
3
3
  import { clearConfigValueCache } from "./resolve-config-value.js";
4
4
  export declare const clearApiKeyCache: typeof clearConfigValueCache;
@@ -1 +1 @@
1
- {"version":3,"file":"model-registry.d.ts","sourceRoot":"","sources":["../../src/core/model-registry.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,KAAK,GAAG,EACR,KAAK,2BAA2B,EAChC,KAAK,OAAO,EACZ,KAAK,KAAK,EAEV,KAAK,mBAAmB,EACxB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAGlE,eAAO,MAAM,gBAAgB,8BAAwB,CAAC;AAEtD,qBAAa,aAAa;IAMxB,QAAQ,CAAC,WAAW,EAAE,WAAW;IALlC,OAAO,CAAC,KAAK,CAA2B;IACxC,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,OAAO,CAAuB;IAEtC,YACU,WAAW,EAAE,WAAW,EACjC,eAAe,CAAC,EAAE,MAAM,EAGxB;IAED,OAAO,IAAI,IAAI,CAGd;IAED,OAAO,CAAC,uBAAuB;IAkC/B,QAAQ,IAAI,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAE5B;IAED,SAAS,IAAI,MAAM,GAAG,IAAI,CAEzB;IAED,UAAU,IAAI,MAAM,GAAG,IAAI,CAE1B;IAED,YAAY,IAAI,OAAO,CAEtB;CACD;AAED,MAAM,WAAW,mBAAmB;IACnC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,GAAG,CAAC;IACV,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,mBAAmB,KAAK,2BAA2B,CAAC;IACnH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,UAAU,CAAC,EAAE,OAAO,CAAC;CACrB","sourcesContent":["import {\n\ttype Api,\n\ttype AssistantMessageEventStream,\n\ttype Context,\n\ttype Model,\n\tresetApiProviders,\n\ttype SimpleStreamOptions,\n} from \"@mariozechner/pi-ai\";\nimport type { AuthStorage } from \"./auth-storage.js\";\nimport { clearConfigValueCache } from \"./resolve-config-value.js\";\nimport { loadUserConfig } from \"./user-config.js\";\n\nexport const clearApiKeyCache = clearConfigValueCache;\n\nexport class ModelRegistry {\n\tprivate model: Model<Api> | null = null;\n\tprivate apiKey: string | null = null;\n\tprivate baseUrl: string | null = null;\n\n\tconstructor(\n\t\treadonly authStorage: AuthStorage,\n\t\t_modelsJsonPath?: string,\n\t) {\n\t\tthis.loadUserConfiguredModel();\n\t}\n\n\trefresh(): void {\n\t\tresetApiProviders();\n\t\tthis.loadUserConfiguredModel();\n\t}\n\n\tprivate loadUserConfiguredModel(): void {\n\t\tconst config = loadUserConfig();\n\t\tif (!config.model) {\n\t\t\tthis.model = null;\n\t\t\treturn;\n\t\t}\n\n\t\tconst userModel = config.model;\n\t\tthis.apiKey = userModel.apiKey;\n\t\tthis.baseUrl = userModel.baseUrl;\n\n\t\tthis.model = {\n\t\t\tid: userModel.id,\n\t\t\tname: userModel.name || userModel.id,\n\t\t\tapi: \"openai-completions\" as Api,\n\t\t\tprovider: \"custom\",\n\t\t\tbaseUrl: userModel.baseUrl,\n\t\t\treasoning: false,\n\t\t\tinput: [\"text\", \"image\"],\n\t\t\tcost: {\n\t\t\t\tinput: 0,\n\t\t\t\toutput: 0,\n\t\t\t\tcacheRead: 0,\n\t\t\t\tcacheWrite: 0,\n\t\t\t},\n\t\t\tcontextWindow: 128000,\n\t\t\tmaxTokens: 4096,\n\t\t};\n\n\t\tif (this.apiKey) {\n\t\t\tthis.authStorage.set(\"custom\", { type: \"api_key\", key: this.apiKey });\n\t\t}\n\t}\n\n\tgetModel(): Model<Api> | null {\n\t\treturn this.model;\n\t}\n\n\tgetApiKey(): string | null {\n\t\treturn this.apiKey;\n\t}\n\n\tgetBaseUrl(): string | null {\n\t\treturn this.baseUrl;\n\t}\n\n\tisConfigured(): boolean {\n\t\treturn this.model !== null && this.apiKey !== null;\n\t}\n}\n\nexport interface ProviderConfigInput {\n\tbaseUrl?: string;\n\tapiKey?: string;\n\tapi?: Api;\n\tstreamSimple?: (model: Model<Api>, context: Context, options?: SimpleStreamOptions) => AssistantMessageEventStream;\n\theaders?: Record<string, string>;\n\tauthHeader?: boolean;\n}\n"]}
1
+ {"version":3,"file":"model-registry.d.ts","sourceRoot":"","sources":["../../src/core/model-registry.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,KAAK,GAAG,EACR,KAAK,2BAA2B,EAChC,KAAK,OAAO,EACZ,KAAK,KAAK,EAEV,KAAK,mBAAmB,EACxB,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAGlE,eAAO,MAAM,gBAAgB,8BAAwB,CAAC;AAEtD,qBAAa,aAAa;IAMxB,QAAQ,CAAC,WAAW,EAAE,WAAW;IALlC,OAAO,CAAC,KAAK,CAA2B;IACxC,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,OAAO,CAAuB;IAEtC,YACU,WAAW,EAAE,WAAW,EACjC,eAAe,CAAC,EAAE,MAAM,EAGxB;IAED,OAAO,IAAI,IAAI,CAGd;IAED,OAAO,CAAC,uBAAuB;IAkC/B,QAAQ,IAAI,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAE5B;IAED,SAAS,IAAI,MAAM,GAAG,IAAI,CAEzB;IAED,UAAU,IAAI,MAAM,GAAG,IAAI,CAE1B;IAED,YAAY,IAAI,OAAO,CAEtB;CACD;AAED,MAAM,WAAW,mBAAmB;IACnC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,GAAG,CAAC;IACV,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,mBAAmB,KAAK,2BAA2B,CAAC;IACnH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,UAAU,CAAC,EAAE,OAAO,CAAC;CACrB","sourcesContent":["import {\n\ttype Api,\n\ttype AssistantMessageEventStream,\n\ttype Context,\n\ttype Model,\n\tresetApiProviders,\n\ttype SimpleStreamOptions,\n} from \"@boxiaolanya2008/pi-ai\";\nimport type { AuthStorage } from \"./auth-storage.js\";\nimport { clearConfigValueCache } from \"./resolve-config-value.js\";\nimport { loadUserConfig } from \"./user-config.js\";\n\nexport const clearApiKeyCache = clearConfigValueCache;\n\nexport class ModelRegistry {\n\tprivate model: Model<Api> | null = null;\n\tprivate apiKey: string | null = null;\n\tprivate baseUrl: string | null = null;\n\n\tconstructor(\n\t\treadonly authStorage: AuthStorage,\n\t\t_modelsJsonPath?: string,\n\t) {\n\t\tthis.loadUserConfiguredModel();\n\t}\n\n\trefresh(): void {\n\t\tresetApiProviders();\n\t\tthis.loadUserConfiguredModel();\n\t}\n\n\tprivate loadUserConfiguredModel(): void {\n\t\tconst config = loadUserConfig();\n\t\tif (!config.model) {\n\t\t\tthis.model = null;\n\t\t\treturn;\n\t\t}\n\n\t\tconst userModel = config.model;\n\t\tthis.apiKey = userModel.apiKey;\n\t\tthis.baseUrl = userModel.baseUrl;\n\n\t\tthis.model = {\n\t\t\tid: userModel.id,\n\t\t\tname: userModel.name || userModel.id,\n\t\t\tapi: \"openai-completions\" as Api,\n\t\t\tprovider: \"custom\",\n\t\t\tbaseUrl: userModel.baseUrl,\n\t\t\treasoning: false,\n\t\t\tinput: [\"text\", \"image\"],\n\t\t\tcost: {\n\t\t\t\tinput: 0,\n\t\t\t\toutput: 0,\n\t\t\t\tcacheRead: 0,\n\t\t\t\tcacheWrite: 0,\n\t\t\t},\n\t\t\tcontextWindow: 128000,\n\t\t\tmaxTokens: 4096,\n\t\t};\n\n\t\tif (this.apiKey) {\n\t\t\tthis.authStorage.set(\"custom\", { type: \"api_key\", key: this.apiKey });\n\t\t}\n\t}\n\n\tgetModel(): Model<Api> | null {\n\t\treturn this.model;\n\t}\n\n\tgetApiKey(): string | null {\n\t\treturn this.apiKey;\n\t}\n\n\tgetBaseUrl(): string | null {\n\t\treturn this.baseUrl;\n\t}\n\n\tisConfigured(): boolean {\n\t\treturn this.model !== null && this.apiKey !== null;\n\t}\n}\n\nexport interface ProviderConfigInput {\n\tbaseUrl?: string;\n\tapiKey?: string;\n\tapi?: Api;\n\tstreamSimple?: (model: Model<Api>, context: Context, options?: SimpleStreamOptions) => AssistantMessageEventStream;\n\theaders?: Record<string, string>;\n\tauthHeader?: boolean;\n}\n"]}
@@ -1,4 +1,4 @@
1
- import { resetApiProviders, } from "@mariozechner/pi-ai";
1
+ import { resetApiProviders, } from "@boxiaolanya2008/pi-ai";
2
2
  import { clearConfigValueCache } from "./resolve-config-value.js";
3
3
  import { loadUserConfig } from "./user-config.js";
4
4
  export const clearApiKeyCache = clearConfigValueCache;
@@ -1 +1 @@
1
- {"version":3,"file":"model-registry.js","sourceRoot":"","sources":["../../src/core/model-registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAKN,iBAAiB,GAEjB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,MAAM,CAAC,MAAM,gBAAgB,GAAG,qBAAqB,CAAC;AAEtD,MAAM,OAAO,aAAa;IAMf,WAAW;IALb,KAAK,GAAsB,IAAI,CAAC;IAChC,MAAM,GAAkB,IAAI,CAAC;IAC7B,OAAO,GAAkB,IAAI,CAAC;IAEtC,YACU,WAAwB,EACjC,eAAwB,EACvB;2BAFQ,WAAW;QAGpB,IAAI,CAAC,uBAAuB,EAAE,CAAC;IAAA,CAC/B;IAED,OAAO,GAAS;QACf,iBAAiB,EAAE,CAAC;QACpB,IAAI,CAAC,uBAAuB,EAAE,CAAC;IAAA,CAC/B;IAEO,uBAAuB,GAAS;QACvC,MAAM,MAAM,GAAG,cAAc,EAAE,CAAC;QAChC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YACnB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;YAClB,OAAO;QACR,CAAC;QAED,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC;QAC/B,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;QAC/B,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC;QAEjC,IAAI,CAAC,KAAK,GAAG;YACZ,EAAE,EAAE,SAAS,CAAC,EAAE;YAChB,IAAI,EAAE,SAAS,CAAC,IAAI,IAAI,SAAS,CAAC,EAAE;YACpC,GAAG,EAAE,oBAA2B;YAChC,QAAQ,EAAE,QAAQ;YAClB,OAAO,EAAE,SAAS,CAAC,OAAO;YAC1B,SAAS,EAAE,KAAK;YAChB,KAAK,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC;YACxB,IAAI,EAAE;gBACL,KAAK,EAAE,CAAC;gBACR,MAAM,EAAE,CAAC;gBACT,SAAS,EAAE,CAAC;gBACZ,UAAU,EAAE,CAAC;aACb;YACD,aAAa,EAAE,MAAM;YACrB,SAAS,EAAE,IAAI;SACf,CAAC;QAEF,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QACvE,CAAC;IAAA,CACD;IAED,QAAQ,GAAsB;QAC7B,OAAO,IAAI,CAAC,KAAK,CAAC;IAAA,CAClB;IAED,SAAS,GAAkB;QAC1B,OAAO,IAAI,CAAC,MAAM,CAAC;IAAA,CACnB;IAED,UAAU,GAAkB;QAC3B,OAAO,IAAI,CAAC,OAAO,CAAC;IAAA,CACpB;IAED,YAAY,GAAY;QACvB,OAAO,IAAI,CAAC,KAAK,KAAK,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC;IAAA,CACnD;CACD","sourcesContent":["import {\n\ttype Api,\n\ttype AssistantMessageEventStream,\n\ttype Context,\n\ttype Model,\n\tresetApiProviders,\n\ttype SimpleStreamOptions,\n} from \"@mariozechner/pi-ai\";\nimport type { AuthStorage } from \"./auth-storage.js\";\nimport { clearConfigValueCache } from \"./resolve-config-value.js\";\nimport { loadUserConfig } from \"./user-config.js\";\n\nexport const clearApiKeyCache = clearConfigValueCache;\n\nexport class ModelRegistry {\n\tprivate model: Model<Api> | null = null;\n\tprivate apiKey: string | null = null;\n\tprivate baseUrl: string | null = null;\n\n\tconstructor(\n\t\treadonly authStorage: AuthStorage,\n\t\t_modelsJsonPath?: string,\n\t) {\n\t\tthis.loadUserConfiguredModel();\n\t}\n\n\trefresh(): void {\n\t\tresetApiProviders();\n\t\tthis.loadUserConfiguredModel();\n\t}\n\n\tprivate loadUserConfiguredModel(): void {\n\t\tconst config = loadUserConfig();\n\t\tif (!config.model) {\n\t\t\tthis.model = null;\n\t\t\treturn;\n\t\t}\n\n\t\tconst userModel = config.model;\n\t\tthis.apiKey = userModel.apiKey;\n\t\tthis.baseUrl = userModel.baseUrl;\n\n\t\tthis.model = {\n\t\t\tid: userModel.id,\n\t\t\tname: userModel.name || userModel.id,\n\t\t\tapi: \"openai-completions\" as Api,\n\t\t\tprovider: \"custom\",\n\t\t\tbaseUrl: userModel.baseUrl,\n\t\t\treasoning: false,\n\t\t\tinput: [\"text\", \"image\"],\n\t\t\tcost: {\n\t\t\t\tinput: 0,\n\t\t\t\toutput: 0,\n\t\t\t\tcacheRead: 0,\n\t\t\t\tcacheWrite: 0,\n\t\t\t},\n\t\t\tcontextWindow: 128000,\n\t\t\tmaxTokens: 4096,\n\t\t};\n\n\t\tif (this.apiKey) {\n\t\t\tthis.authStorage.set(\"custom\", { type: \"api_key\", key: this.apiKey });\n\t\t}\n\t}\n\n\tgetModel(): Model<Api> | null {\n\t\treturn this.model;\n\t}\n\n\tgetApiKey(): string | null {\n\t\treturn this.apiKey;\n\t}\n\n\tgetBaseUrl(): string | null {\n\t\treturn this.baseUrl;\n\t}\n\n\tisConfigured(): boolean {\n\t\treturn this.model !== null && this.apiKey !== null;\n\t}\n}\n\nexport interface ProviderConfigInput {\n\tbaseUrl?: string;\n\tapiKey?: string;\n\tapi?: Api;\n\tstreamSimple?: (model: Model<Api>, context: Context, options?: SimpleStreamOptions) => AssistantMessageEventStream;\n\theaders?: Record<string, string>;\n\tauthHeader?: boolean;\n}\n"]}
1
+ {"version":3,"file":"model-registry.js","sourceRoot":"","sources":["../../src/core/model-registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAKN,iBAAiB,GAEjB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,MAAM,CAAC,MAAM,gBAAgB,GAAG,qBAAqB,CAAC;AAEtD,MAAM,OAAO,aAAa;IAMf,WAAW;IALb,KAAK,GAAsB,IAAI,CAAC;IAChC,MAAM,GAAkB,IAAI,CAAC;IAC7B,OAAO,GAAkB,IAAI,CAAC;IAEtC,YACU,WAAwB,EACjC,eAAwB,EACvB;2BAFQ,WAAW;QAGpB,IAAI,CAAC,uBAAuB,EAAE,CAAC;IAAA,CAC/B;IAED,OAAO,GAAS;QACf,iBAAiB,EAAE,CAAC;QACpB,IAAI,CAAC,uBAAuB,EAAE,CAAC;IAAA,CAC/B;IAEO,uBAAuB,GAAS;QACvC,MAAM,MAAM,GAAG,cAAc,EAAE,CAAC;QAChC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YACnB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;YAClB,OAAO;QACR,CAAC;QAED,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC;QAC/B,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;QAC/B,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC;QAEjC,IAAI,CAAC,KAAK,GAAG;YACZ,EAAE,EAAE,SAAS,CAAC,EAAE;YAChB,IAAI,EAAE,SAAS,CAAC,IAAI,IAAI,SAAS,CAAC,EAAE;YACpC,GAAG,EAAE,oBAA2B;YAChC,QAAQ,EAAE,QAAQ;YAClB,OAAO,EAAE,SAAS,CAAC,OAAO;YAC1B,SAAS,EAAE,KAAK;YAChB,KAAK,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC;YACxB,IAAI,EAAE;gBACL,KAAK,EAAE,CAAC;gBACR,MAAM,EAAE,CAAC;gBACT,SAAS,EAAE,CAAC;gBACZ,UAAU,EAAE,CAAC;aACb;YACD,aAAa,EAAE,MAAM;YACrB,SAAS,EAAE,IAAI;SACf,CAAC;QAEF,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QACvE,CAAC;IAAA,CACD;IAED,QAAQ,GAAsB;QAC7B,OAAO,IAAI,CAAC,KAAK,CAAC;IAAA,CAClB;IAED,SAAS,GAAkB;QAC1B,OAAO,IAAI,CAAC,MAAM,CAAC;IAAA,CACnB;IAED,UAAU,GAAkB;QAC3B,OAAO,IAAI,CAAC,OAAO,CAAC;IAAA,CACpB;IAED,YAAY,GAAY;QACvB,OAAO,IAAI,CAAC,KAAK,KAAK,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC;IAAA,CACnD;CACD","sourcesContent":["import {\n\ttype Api,\n\ttype AssistantMessageEventStream,\n\ttype Context,\n\ttype Model,\n\tresetApiProviders,\n\ttype SimpleStreamOptions,\n} from \"@boxiaolanya2008/pi-ai\";\nimport type { AuthStorage } from \"./auth-storage.js\";\nimport { clearConfigValueCache } from \"./resolve-config-value.js\";\nimport { loadUserConfig } from \"./user-config.js\";\n\nexport const clearApiKeyCache = clearConfigValueCache;\n\nexport class ModelRegistry {\n\tprivate model: Model<Api> | null = null;\n\tprivate apiKey: string | null = null;\n\tprivate baseUrl: string | null = null;\n\n\tconstructor(\n\t\treadonly authStorage: AuthStorage,\n\t\t_modelsJsonPath?: string,\n\t) {\n\t\tthis.loadUserConfiguredModel();\n\t}\n\n\trefresh(): void {\n\t\tresetApiProviders();\n\t\tthis.loadUserConfiguredModel();\n\t}\n\n\tprivate loadUserConfiguredModel(): void {\n\t\tconst config = loadUserConfig();\n\t\tif (!config.model) {\n\t\t\tthis.model = null;\n\t\t\treturn;\n\t\t}\n\n\t\tconst userModel = config.model;\n\t\tthis.apiKey = userModel.apiKey;\n\t\tthis.baseUrl = userModel.baseUrl;\n\n\t\tthis.model = {\n\t\t\tid: userModel.id,\n\t\t\tname: userModel.name || userModel.id,\n\t\t\tapi: \"openai-completions\" as Api,\n\t\t\tprovider: \"custom\",\n\t\t\tbaseUrl: userModel.baseUrl,\n\t\t\treasoning: false,\n\t\t\tinput: [\"text\", \"image\"],\n\t\t\tcost: {\n\t\t\t\tinput: 0,\n\t\t\t\toutput: 0,\n\t\t\t\tcacheRead: 0,\n\t\t\t\tcacheWrite: 0,\n\t\t\t},\n\t\t\tcontextWindow: 128000,\n\t\t\tmaxTokens: 4096,\n\t\t};\n\n\t\tif (this.apiKey) {\n\t\t\tthis.authStorage.set(\"custom\", { type: \"api_key\", key: this.apiKey });\n\t\t}\n\t}\n\n\tgetModel(): Model<Api> | null {\n\t\treturn this.model;\n\t}\n\n\tgetApiKey(): string | null {\n\t\treturn this.apiKey;\n\t}\n\n\tgetBaseUrl(): string | null {\n\t\treturn this.baseUrl;\n\t}\n\n\tisConfigured(): boolean {\n\t\treturn this.model !== null && this.apiKey !== null;\n\t}\n}\n\nexport interface ProviderConfigInput {\n\tbaseUrl?: string;\n\tapiKey?: string;\n\tapi?: Api;\n\tstreamSimple?: (model: Model<Api>, context: Context, options?: SimpleStreamOptions) => AssistantMessageEventStream;\n\theaders?: Record<string, string>;\n\tauthHeader?: boolean;\n}\n"]}
@@ -1,5 +1,5 @@
1
- import type { ThinkingLevel } from "@mariozechner/pi-agent-core";
2
- import type { Api, Model } from "@mariozechner/pi-ai";
1
+ import type { ThinkingLevel } from "@boxiaolanya2008/pi-agent-core";
2
+ import type { Api, Model } from "@boxiaolanya2008/pi-ai";
3
3
  import type { ModelRegistry } from "./model-registry.js";
4
4
  export interface ScopedModel {
5
5
  model: Model<Api>;
@@ -1 +1 @@
1
- {"version":3,"file":"model-resolver.d.ts","sourceRoot":"","sources":["../../src/core/model-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAGtD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGzD,MAAM,WAAW,WAAW;IAC3B,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;IAClB,aAAa,CAAC,EAAE,aAAa,CAAC;CAC9B;AAED,qBAAa,aAAa;IAIxB,OAAO,CAAC,QAAQ;IAEhB,OAAO,CAAC,sBAAsB,CAAC;IALhC,OAAO,CAAC,aAAa,CAAyC;IAE9D,YACS,QAAQ,EAAE,aAAa,EAC/B,iBAAiB,CAAC,EAAE,MAAM,EAClB,sBAAsB,CAAC,oBAAQ,EAGvC;IAED,OAAO,CAAC,oBAAoB;IAQ5B,YAAY,IAAI,WAAW,GAAG,IAAI,CASjC;IAED,gBAAgB,IAAI,aAAa,CAEhC;IAED,gBAAgB,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,CAE3C;IAED,mBAAmB,IAAI,MAAM,CAM5B;CACD","sourcesContent":["import type { ThinkingLevel } from \"@mariozechner/pi-agent-core\";\nimport type { Api, Model } from \"@mariozechner/pi-ai\";\nimport { isValidThinkingLevel } from \"../cli/args.js\";\nimport { DEFAULT_THINKING_LEVEL } from \"./defaults.js\";\nimport type { ModelRegistry } from \"./model-registry.js\";\nimport { loadUserConfig } from \"./user-config.js\";\n\nexport interface ScopedModel {\n\tmodel: Model<Api>;\n\tthinkingLevel?: ThinkingLevel;\n}\n\nexport class ModelResolver {\n\tprivate thinkingLevel: ThinkingLevel = DEFAULT_THINKING_LEVEL;\n\n\tconstructor(\n\t\tprivate registry: ModelRegistry,\n\t\t_requestedModelId?: string,\n\t\tprivate requestedThinkingLevel?: string,\n\t) {\n\t\tthis.resolveThinkingLevel();\n\t}\n\n\tprivate resolveThinkingLevel(): void {\n\t\tif (this.requestedThinkingLevel && isValidThinkingLevel(this.requestedThinkingLevel)) {\n\t\t\tthis.thinkingLevel = this.requestedThinkingLevel;\n\t\t} else {\n\t\t\tthis.thinkingLevel = DEFAULT_THINKING_LEVEL;\n\t\t}\n\t}\n\n\tresolveModel(): ScopedModel | null {\n\t\tconst model = this.registry.getModel();\n\t\tif (!model) {\n\t\t\treturn null;\n\t\t}\n\t\treturn {\n\t\t\tmodel,\n\t\t\tthinkingLevel: this.thinkingLevel,\n\t\t};\n\t}\n\n\tgetThinkingLevel(): ThinkingLevel {\n\t\treturn this.thinkingLevel;\n\t}\n\n\tsetThinkingLevel(level: ThinkingLevel): void {\n\t\tthis.thinkingLevel = level;\n\t}\n\n\tgetModelDisplayName(): string {\n\t\tconst config = loadUserConfig();\n\t\tif (config.model) {\n\t\t\treturn config.model.name || config.model.id;\n\t\t}\n\t\treturn \"Unknown Model\";\n\t}\n}\n"]}
1
+ {"version":3,"file":"model-resolver.d.ts","sourceRoot":"","sources":["../../src/core/model-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAGzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGzD,MAAM,WAAW,WAAW;IAC3B,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;IAClB,aAAa,CAAC,EAAE,aAAa,CAAC;CAC9B;AAED,qBAAa,aAAa;IAIxB,OAAO,CAAC,QAAQ;IAEhB,OAAO,CAAC,sBAAsB,CAAC;IALhC,OAAO,CAAC,aAAa,CAAyC;IAE9D,YACS,QAAQ,EAAE,aAAa,EAC/B,iBAAiB,CAAC,EAAE,MAAM,EAClB,sBAAsB,CAAC,oBAAQ,EAGvC;IAED,OAAO,CAAC,oBAAoB;IAQ5B,YAAY,IAAI,WAAW,GAAG,IAAI,CASjC;IAED,gBAAgB,IAAI,aAAa,CAEhC;IAED,gBAAgB,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,CAE3C;IAED,mBAAmB,IAAI,MAAM,CAM5B;CACD","sourcesContent":["import type { ThinkingLevel } from \"@boxiaolanya2008/pi-agent-core\";\nimport type { Api, Model } from \"@boxiaolanya2008/pi-ai\";\nimport { isValidThinkingLevel } from \"../cli/args.js\";\nimport { DEFAULT_THINKING_LEVEL } from \"./defaults.js\";\nimport type { ModelRegistry } from \"./model-registry.js\";\nimport { loadUserConfig } from \"./user-config.js\";\n\nexport interface ScopedModel {\n\tmodel: Model<Api>;\n\tthinkingLevel?: ThinkingLevel;\n}\n\nexport class ModelResolver {\n\tprivate thinkingLevel: ThinkingLevel = DEFAULT_THINKING_LEVEL;\n\n\tconstructor(\n\t\tprivate registry: ModelRegistry,\n\t\t_requestedModelId?: string,\n\t\tprivate requestedThinkingLevel?: string,\n\t) {\n\t\tthis.resolveThinkingLevel();\n\t}\n\n\tprivate resolveThinkingLevel(): void {\n\t\tif (this.requestedThinkingLevel && isValidThinkingLevel(this.requestedThinkingLevel)) {\n\t\t\tthis.thinkingLevel = this.requestedThinkingLevel;\n\t\t} else {\n\t\t\tthis.thinkingLevel = DEFAULT_THINKING_LEVEL;\n\t\t}\n\t}\n\n\tresolveModel(): ScopedModel | null {\n\t\tconst model = this.registry.getModel();\n\t\tif (!model) {\n\t\t\treturn null;\n\t\t}\n\t\treturn {\n\t\t\tmodel,\n\t\t\tthinkingLevel: this.thinkingLevel,\n\t\t};\n\t}\n\n\tgetThinkingLevel(): ThinkingLevel {\n\t\treturn this.thinkingLevel;\n\t}\n\n\tsetThinkingLevel(level: ThinkingLevel): void {\n\t\tthis.thinkingLevel = level;\n\t}\n\n\tgetModelDisplayName(): string {\n\t\tconst config = loadUserConfig();\n\t\tif (config.model) {\n\t\t\treturn config.model.name || config.model.id;\n\t\t}\n\t\treturn \"Unknown Model\";\n\t}\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"model-resolver.js","sourceRoot":"","sources":["../../src/core/model-resolver.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAEvD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAOlD,MAAM,OAAO,aAAa;IAIhB,QAAQ;IAER,sBAAsB;IALvB,aAAa,GAAkB,sBAAsB,CAAC;IAE9D,YACS,QAAuB,EAC/B,iBAA0B,EAClB,sBAA+B,EACtC;wBAHO,QAAQ;sCAER,sBAAsB;QAE9B,IAAI,CAAC,oBAAoB,EAAE,CAAC;IAAA,CAC5B;IAEO,oBAAoB,GAAS;QACpC,IAAI,IAAI,CAAC,sBAAsB,IAAI,oBAAoB,CAAC,IAAI,CAAC,sBAAsB,CAAC,EAAE,CAAC;YACtF,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,sBAAsB,CAAC;QAClD,CAAC;aAAM,CAAC;YACP,IAAI,CAAC,aAAa,GAAG,sBAAsB,CAAC;QAC7C,CAAC;IAAA,CACD;IAED,YAAY,GAAuB;QAClC,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;QACvC,IAAI,CAAC,KAAK,EAAE,CAAC;YACZ,OAAO,IAAI,CAAC;QACb,CAAC;QACD,OAAO;YACN,KAAK;YACL,aAAa,EAAE,IAAI,CAAC,aAAa;SACjC,CAAC;IAAA,CACF;IAED,gBAAgB,GAAkB;QACjC,OAAO,IAAI,CAAC,aAAa,CAAC;IAAA,CAC1B;IAED,gBAAgB,CAAC,KAAoB,EAAQ;QAC5C,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;IAAA,CAC3B;IAED,mBAAmB,GAAW;QAC7B,MAAM,MAAM,GAAG,cAAc,EAAE,CAAC;QAChC,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YAClB,OAAO,MAAM,CAAC,KAAK,CAAC,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QAC7C,CAAC;QACD,OAAO,eAAe,CAAC;IAAA,CACvB;CACD","sourcesContent":["import type { ThinkingLevel } from \"@mariozechner/pi-agent-core\";\nimport type { Api, Model } from \"@mariozechner/pi-ai\";\nimport { isValidThinkingLevel } from \"../cli/args.js\";\nimport { DEFAULT_THINKING_LEVEL } from \"./defaults.js\";\nimport type { ModelRegistry } from \"./model-registry.js\";\nimport { loadUserConfig } from \"./user-config.js\";\n\nexport interface ScopedModel {\n\tmodel: Model<Api>;\n\tthinkingLevel?: ThinkingLevel;\n}\n\nexport class ModelResolver {\n\tprivate thinkingLevel: ThinkingLevel = DEFAULT_THINKING_LEVEL;\n\n\tconstructor(\n\t\tprivate registry: ModelRegistry,\n\t\t_requestedModelId?: string,\n\t\tprivate requestedThinkingLevel?: string,\n\t) {\n\t\tthis.resolveThinkingLevel();\n\t}\n\n\tprivate resolveThinkingLevel(): void {\n\t\tif (this.requestedThinkingLevel && isValidThinkingLevel(this.requestedThinkingLevel)) {\n\t\t\tthis.thinkingLevel = this.requestedThinkingLevel;\n\t\t} else {\n\t\t\tthis.thinkingLevel = DEFAULT_THINKING_LEVEL;\n\t\t}\n\t}\n\n\tresolveModel(): ScopedModel | null {\n\t\tconst model = this.registry.getModel();\n\t\tif (!model) {\n\t\t\treturn null;\n\t\t}\n\t\treturn {\n\t\t\tmodel,\n\t\t\tthinkingLevel: this.thinkingLevel,\n\t\t};\n\t}\n\n\tgetThinkingLevel(): ThinkingLevel {\n\t\treturn this.thinkingLevel;\n\t}\n\n\tsetThinkingLevel(level: ThinkingLevel): void {\n\t\tthis.thinkingLevel = level;\n\t}\n\n\tgetModelDisplayName(): string {\n\t\tconst config = loadUserConfig();\n\t\tif (config.model) {\n\t\t\treturn config.model.name || config.model.id;\n\t\t}\n\t\treturn \"Unknown Model\";\n\t}\n}\n"]}
1
+ {"version":3,"file":"model-resolver.js","sourceRoot":"","sources":["../../src/core/model-resolver.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAEvD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAOlD,MAAM,OAAO,aAAa;IAIhB,QAAQ;IAER,sBAAsB;IALvB,aAAa,GAAkB,sBAAsB,CAAC;IAE9D,YACS,QAAuB,EAC/B,iBAA0B,EAClB,sBAA+B,EACtC;wBAHO,QAAQ;sCAER,sBAAsB;QAE9B,IAAI,CAAC,oBAAoB,EAAE,CAAC;IAAA,CAC5B;IAEO,oBAAoB,GAAS;QACpC,IAAI,IAAI,CAAC,sBAAsB,IAAI,oBAAoB,CAAC,IAAI,CAAC,sBAAsB,CAAC,EAAE,CAAC;YACtF,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,sBAAsB,CAAC;QAClD,CAAC;aAAM,CAAC;YACP,IAAI,CAAC,aAAa,GAAG,sBAAsB,CAAC;QAC7C,CAAC;IAAA,CACD;IAED,YAAY,GAAuB;QAClC,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;QACvC,IAAI,CAAC,KAAK,EAAE,CAAC;YACZ,OAAO,IAAI,CAAC;QACb,CAAC;QACD,OAAO;YACN,KAAK;YACL,aAAa,EAAE,IAAI,CAAC,aAAa;SACjC,CAAC;IAAA,CACF;IAED,gBAAgB,GAAkB;QACjC,OAAO,IAAI,CAAC,aAAa,CAAC;IAAA,CAC1B;IAED,gBAAgB,CAAC,KAAoB,EAAQ;QAC5C,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;IAAA,CAC3B;IAED,mBAAmB,GAAW;QAC7B,MAAM,MAAM,GAAG,cAAc,EAAE,CAAC;QAChC,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YAClB,OAAO,MAAM,CAAC,KAAK,CAAC,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QAC7C,CAAC;QACD,OAAO,eAAe,CAAC;IAAA,CACvB;CACD","sourcesContent":["import type { ThinkingLevel } from \"@boxiaolanya2008/pi-agent-core\";\nimport type { Api, Model } from \"@boxiaolanya2008/pi-ai\";\nimport { isValidThinkingLevel } from \"../cli/args.js\";\nimport { DEFAULT_THINKING_LEVEL } from \"./defaults.js\";\nimport type { ModelRegistry } from \"./model-registry.js\";\nimport { loadUserConfig } from \"./user-config.js\";\n\nexport interface ScopedModel {\n\tmodel: Model<Api>;\n\tthinkingLevel?: ThinkingLevel;\n}\n\nexport class ModelResolver {\n\tprivate thinkingLevel: ThinkingLevel = DEFAULT_THINKING_LEVEL;\n\n\tconstructor(\n\t\tprivate registry: ModelRegistry,\n\t\t_requestedModelId?: string,\n\t\tprivate requestedThinkingLevel?: string,\n\t) {\n\t\tthis.resolveThinkingLevel();\n\t}\n\n\tprivate resolveThinkingLevel(): void {\n\t\tif (this.requestedThinkingLevel && isValidThinkingLevel(this.requestedThinkingLevel)) {\n\t\t\tthis.thinkingLevel = this.requestedThinkingLevel;\n\t\t} else {\n\t\t\tthis.thinkingLevel = DEFAULT_THINKING_LEVEL;\n\t\t}\n\t}\n\n\tresolveModel(): ScopedModel | null {\n\t\tconst model = this.registry.getModel();\n\t\tif (!model) {\n\t\t\treturn null;\n\t\t}\n\t\treturn {\n\t\t\tmodel,\n\t\t\tthinkingLevel: this.thinkingLevel,\n\t\t};\n\t}\n\n\tgetThinkingLevel(): ThinkingLevel {\n\t\treturn this.thinkingLevel;\n\t}\n\n\tsetThinkingLevel(level: ThinkingLevel): void {\n\t\tthis.thinkingLevel = level;\n\t}\n\n\tgetModelDisplayName(): string {\n\t\tconst config = loadUserConfig();\n\t\tif (config.model) {\n\t\t\treturn config.model.name || config.model.id;\n\t\t}\n\t\treturn \"Unknown Model\";\n\t}\n}\n"]}
@@ -1,4 +1,4 @@
1
- import type { AssistantMessage, AssistantMessageEvent, Model } from "@mariozechner/pi-ai";
1
+ import type { AssistantMessage, AssistantMessageEvent, Model } from "@boxiaolanya2008/pi-ai";
2
2
  interface AcceleratedStreamOptions {
3
3
  prefetch?: boolean;
4
4
  bufferSize?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"response-accelerator.d.ts","sourceRoot":"","sources":["../../src/core/response-accelerator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAE1F,UAAU,wBAAwB;IACjC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,GAAG,UAAU,CAAC;CAC5C;AACD,qBAAa,cAAc;IAC1B,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,WAAW,CAAqB;IACxC,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CASvC;IACD,OAAO,IAAI,MAAM,CAIhB;IACD,SAAS,IAAI,MAAM,EAAE,CAEpB;IACD,KAAK,IAAI,IAAI,CAGZ;IACD,IAAI,MAAM,IAAI,MAAM,CAEnB;CACD;AACD,qBAAa,oBAAoB;IAChC,OAAO,CAAC,YAAY,CAAwC;IAC5D,OAAO,CAAC,UAAU,CAAwC;IACnD,YAAY,CAClB,SAAS,EAAE,cAAc,CAAC,qBAAqB,CAAC,EAChD,OAAO,GAAE,wBAA6B,GACpC,cAAc,CAAC,qBAAqB,CAAC,CAevC;IACD,kBAAkB,IAAI,MAAM,CAE3B;CACD;AACD,qBAAa,cAAc;IAC1B,OAAO,CAAC,WAAW,CAA0B;IAC7C,OAAO,CAAC,cAAc,CAAS;IAC/B,YAAY,cAAc,GAAE,MAAU,EAErC;IACD,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,GAAG,CAalC;IACD,OAAO,CAAC,gBAAgB;IAGxB,KAAK,IAAI,IAAI,CAEZ;CACD;AACD,qBAAa,aAAa;IACzB,OAAO,CAAC,KAAK,CAAwE;IACrF,OAAO,CAAC,GAAG,CAAS;IACpB,YAAY,KAAK,GAAE,MAAc,EAEhC;IACD,OAAO,CAAC,WAAW;IAInB,GAAG,CAAC,QAAQ,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,gBAAgB,GAAG,SAAS,CAUpE;IACD,GAAG,CAAC,QAAQ,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,gBAAgB,GAAG,IAAI,CAIxE;IACD,OAAO,CAAC,OAAO;IAQf,KAAK,IAAI,IAAI,CAEZ;CACD;AACD,wBAAsB,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAElE;AACD,wBAAgB,eAAe,CAAC,QAAQ,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,CAUtD;AACD,eAAO,MAAM,iBAAiB,sBAA6B,CAAC;AAC5D,eAAO,MAAM,oBAAoB,gBAAuB,CAAC;AACzD,eAAO,MAAM,mBAAmB,eAAsB,CAAC;AACvD,wBAAuB,gBAAgB,CACtC,SAAS,EAAE,cAAc,CAAC,qBAAqB,CAAC,EAChD,OAAO,CAAC,EAAE,wBAAwB,GAChC,cAAc,CAAC,qBAAqB,CAAC,CAEvC;AACD,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,gBAAgB,GAAG,SAAS,CAElG;AACD,wBAAgB,aAAa,CAAC,QAAQ,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,gBAAgB,GAAG,IAAI,CAElG","sourcesContent":["import type { AssistantMessage, AssistantMessageEvent, Model } from \"@mariozechner/pi-ai\";\n\ninterface AcceleratedStreamOptions {\n\tprefetch?: boolean;\n\tbufferSize?: number;\n\tpriority?: \"speed\" | \"quality\" | \"balanced\";\n}\nexport class ResponseBuffer {\n\tprivate chunks: string[] = [];\n\tprivate totalLength = 0;\n\tprivate textDecoder = new TextDecoder();\n\tappend(chunk: string | Uint8Array): void {\n\t\tif (typeof chunk === \"string\") {\n\t\t\tthis.chunks.push(chunk);\n\t\t\tthis.totalLength += chunk.length;\n\t\t} else {\n\t\t\tconst text = this.textDecoder.decode(chunk, { stream: true });\n\t\t\tthis.chunks.push(text);\n\t\t\tthis.totalLength += text.length;\n\t\t}\n\t}\n\tgetText(): string {\n\t\tif (this.chunks.length === 0) return \"\";\n\t\tif (this.chunks.length === 1) return this.chunks[0];\n\t\treturn this.chunks.join(\"\");\n\t}\n\tgetChunks(): string[] {\n\t\treturn this.chunks;\n\t}\n\tclear(): void {\n\t\tthis.chunks = [];\n\t\tthis.totalLength = 0;\n\t}\n\tget length(): number {\n\t\treturn this.totalLength;\n\t}\n}\nexport class StreamingAccelerator {\n\tprivate activeBuffer: ResponseBuffer = new ResponseBuffer();\n\tprivate backBuffer: ResponseBuffer = new ResponseBuffer();\n\tasync *streamChunks(\n\t\tgenerator: AsyncGenerator<AssistantMessageEvent>,\n\t\toptions: AcceleratedStreamOptions = {},\n\t): AsyncGenerator<AssistantMessageEvent> {\n\t\tconst { priority = \"balanced\" } = options;\n\t\tif (priority === \"speed\") {\n\t\t\tprocess.env.NODE_OPTIONS = \"--max-old-space-size=8192\";\n\t\t}\n\t\tfor await (const event of generator) {\n\t\t\tyield event;\n\t\t\tif (event.type === \"text_delta\" && event.delta) {\n\t\t\t\tthis.activeBuffer.append(event.delta);\n\t\t\t}\n\t\t}\n\t\tconst temp = this.activeBuffer;\n\t\tthis.activeBuffer = this.backBuffer;\n\t\tthis.backBuffer = temp;\n\t\tthis.backBuffer.clear();\n\t}\n\tgetAccumulatedText(): string {\n\t\treturn this.activeBuffer.getText();\n\t}\n}\nexport class ConnectionPool {\n\tprivate connections = new Map<string, any>();\n\tprivate maxConnections: number;\n\tconstructor(maxConnections: number = 4) {\n\t\tthis.maxConnections = maxConnections;\n\t}\n\tgetConnection(modelId: string): any {\n\t\tif (this.connections.has(modelId)) {\n\t\t\treturn this.connections.get(modelId);\n\t\t}\n\t\tconst connection = this.createConnection(modelId);\n\t\tif (this.connections.size >= this.maxConnections) {\n\t\t\tconst firstKey = this.connections.keys().next().value;\n\t\t\tif (firstKey !== undefined) {\n\t\t\t\tthis.connections.delete(firstKey);\n\t\t\t}\n\t\t}\n\t\tthis.connections.set(modelId, connection);\n\t\treturn connection;\n\t}\n\tprivate createConnection(modelId: string): any {\n\t\treturn { modelId, createdAt: Date.now() };\n\t}\n\tclear(): void {\n\t\tthis.connections.clear();\n\t}\n}\nexport class ResponseCache {\n\tprivate cache = new Map<string, { response: AssistantMessage; timestamp: number }>();\n\tprivate ttl: number;\n\tconstructor(ttlMs: number = 60000) {\n\t\tthis.ttl = ttlMs;\n\t}\n\tprivate generateKey(messages: any[], model: Model<any>): string {\n\t\tconst messageHash = JSON.stringify(messages).slice(0, 200);\n\t\treturn `${model.provider}:${model.id ?? \"unknown\"}:${messageHash}`;\n\t}\n\tget(messages: any[], model: Model<any>): AssistantMessage | undefined {\n\t\tconst key = this.generateKey(messages, model);\n\t\tconst entry = this.cache.get(key);\n\t\tif (entry && Date.now() - entry.timestamp < this.ttl) {\n\t\t\treturn entry.response;\n\t\t}\n\t\tif (entry) {\n\t\t\tthis.cache.delete(key);\n\t\t}\n\t\treturn undefined;\n\t}\n\tset(messages: any[], model: Model<any>, response: AssistantMessage): void {\n\t\tconst key = this.generateKey(messages, model);\n\t\tthis.cache.set(key, { response, timestamp: Date.now() });\n\t\tthis.cleanup();\n\t}\n\tprivate cleanup(): void {\n\t\tconst now = Date.now();\n\t\tfor (const [key, entry] of this.cache) {\n\t\t\tif (now - entry.timestamp > this.ttl) {\n\t\t\t\tthis.cache.delete(key);\n\t\t\t}\n\t\t}\n\t}\n\tclear(): void {\n\t\tthis.cache.clear();\n\t}\n}\nexport async function warmupModel(model: Model<any>): Promise<void> {\n\tconsole.log(`Warming up model: ${model.id}`);\n}\nexport function optimizeContext(messages: any[]): any[] {\n\treturn messages.map((msg) => {\n\t\tif (typeof msg.content === \"string\") {\n\t\t\treturn {\n\t\t\t\t...msg,\n\t\t\t\tcontent: msg.content.replace(/\\n{3,}/g, \"\\n\\n\").trim(),\n\t\t\t};\n\t\t}\n\t\treturn msg;\n\t});\n}\nexport const globalAccelerator = new StreamingAccelerator();\nexport const globalConnectionPool = new ConnectionPool();\nexport const globalResponseCache = new ResponseCache();\nexport async function* accelerateStream(\n\tgenerator: AsyncGenerator<AssistantMessageEvent>,\n\toptions?: AcceleratedStreamOptions,\n): AsyncGenerator<AssistantMessageEvent> {\n\tyield* globalAccelerator.streamChunks(generator, options);\n}\nexport function getCachedResponse(messages: any[], model: Model<any>): AssistantMessage | undefined {\n\treturn globalResponseCache.get(messages, model);\n}\nexport function cacheResponse(messages: any[], model: Model<any>, response: AssistantMessage): void {\n\tglobalResponseCache.set(messages, model, response);\n}\n"]}
1
+ {"version":3,"file":"response-accelerator.d.ts","sourceRoot":"","sources":["../../src/core/response-accelerator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAE7F,UAAU,wBAAwB;IACjC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,GAAG,UAAU,CAAC;CAC5C;AACD,qBAAa,cAAc;IAC1B,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,WAAW,CAAqB;IACxC,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CASvC;IACD,OAAO,IAAI,MAAM,CAIhB;IACD,SAAS,IAAI,MAAM,EAAE,CAEpB;IACD,KAAK,IAAI,IAAI,CAGZ;IACD,IAAI,MAAM,IAAI,MAAM,CAEnB;CACD;AACD,qBAAa,oBAAoB;IAChC,OAAO,CAAC,YAAY,CAAwC;IAC5D,OAAO,CAAC,UAAU,CAAwC;IACnD,YAAY,CAClB,SAAS,EAAE,cAAc,CAAC,qBAAqB,CAAC,EAChD,OAAO,GAAE,wBAA6B,GACpC,cAAc,CAAC,qBAAqB,CAAC,CAevC;IACD,kBAAkB,IAAI,MAAM,CAE3B;CACD;AACD,qBAAa,cAAc;IAC1B,OAAO,CAAC,WAAW,CAA0B;IAC7C,OAAO,CAAC,cAAc,CAAS;IAC/B,YAAY,cAAc,GAAE,MAAU,EAErC;IACD,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,GAAG,CAalC;IACD,OAAO,CAAC,gBAAgB;IAGxB,KAAK,IAAI,IAAI,CAEZ;CACD;AACD,qBAAa,aAAa;IACzB,OAAO,CAAC,KAAK,CAAwE;IACrF,OAAO,CAAC,GAAG,CAAS;IACpB,YAAY,KAAK,GAAE,MAAc,EAEhC;IACD,OAAO,CAAC,WAAW;IAInB,GAAG,CAAC,QAAQ,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,gBAAgB,GAAG,SAAS,CAUpE;IACD,GAAG,CAAC,QAAQ,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,gBAAgB,GAAG,IAAI,CAIxE;IACD,OAAO,CAAC,OAAO;IAQf,KAAK,IAAI,IAAI,CAEZ;CACD;AACD,wBAAsB,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAElE;AACD,wBAAgB,eAAe,CAAC,QAAQ,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,CAUtD;AACD,eAAO,MAAM,iBAAiB,sBAA6B,CAAC;AAC5D,eAAO,MAAM,oBAAoB,gBAAuB,CAAC;AACzD,eAAO,MAAM,mBAAmB,eAAsB,CAAC;AACvD,wBAAuB,gBAAgB,CACtC,SAAS,EAAE,cAAc,CAAC,qBAAqB,CAAC,EAChD,OAAO,CAAC,EAAE,wBAAwB,GAChC,cAAc,CAAC,qBAAqB,CAAC,CAEvC;AACD,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,gBAAgB,GAAG,SAAS,CAElG;AACD,wBAAgB,aAAa,CAAC,QAAQ,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,gBAAgB,GAAG,IAAI,CAElG","sourcesContent":["import type { AssistantMessage, AssistantMessageEvent, Model } from \"@boxiaolanya2008/pi-ai\";\n\ninterface AcceleratedStreamOptions {\n\tprefetch?: boolean;\n\tbufferSize?: number;\n\tpriority?: \"speed\" | \"quality\" | \"balanced\";\n}\nexport class ResponseBuffer {\n\tprivate chunks: string[] = [];\n\tprivate totalLength = 0;\n\tprivate textDecoder = new TextDecoder();\n\tappend(chunk: string | Uint8Array): void {\n\t\tif (typeof chunk === \"string\") {\n\t\t\tthis.chunks.push(chunk);\n\t\t\tthis.totalLength += chunk.length;\n\t\t} else {\n\t\t\tconst text = this.textDecoder.decode(chunk, { stream: true });\n\t\t\tthis.chunks.push(text);\n\t\t\tthis.totalLength += text.length;\n\t\t}\n\t}\n\tgetText(): string {\n\t\tif (this.chunks.length === 0) return \"\";\n\t\tif (this.chunks.length === 1) return this.chunks[0];\n\t\treturn this.chunks.join(\"\");\n\t}\n\tgetChunks(): string[] {\n\t\treturn this.chunks;\n\t}\n\tclear(): void {\n\t\tthis.chunks = [];\n\t\tthis.totalLength = 0;\n\t}\n\tget length(): number {\n\t\treturn this.totalLength;\n\t}\n}\nexport class StreamingAccelerator {\n\tprivate activeBuffer: ResponseBuffer = new ResponseBuffer();\n\tprivate backBuffer: ResponseBuffer = new ResponseBuffer();\n\tasync *streamChunks(\n\t\tgenerator: AsyncGenerator<AssistantMessageEvent>,\n\t\toptions: AcceleratedStreamOptions = {},\n\t): AsyncGenerator<AssistantMessageEvent> {\n\t\tconst { priority = \"balanced\" } = options;\n\t\tif (priority === \"speed\") {\n\t\t\tprocess.env.NODE_OPTIONS = \"--max-old-space-size=8192\";\n\t\t}\n\t\tfor await (const event of generator) {\n\t\t\tyield event;\n\t\t\tif (event.type === \"text_delta\" && event.delta) {\n\t\t\t\tthis.activeBuffer.append(event.delta);\n\t\t\t}\n\t\t}\n\t\tconst temp = this.activeBuffer;\n\t\tthis.activeBuffer = this.backBuffer;\n\t\tthis.backBuffer = temp;\n\t\tthis.backBuffer.clear();\n\t}\n\tgetAccumulatedText(): string {\n\t\treturn this.activeBuffer.getText();\n\t}\n}\nexport class ConnectionPool {\n\tprivate connections = new Map<string, any>();\n\tprivate maxConnections: number;\n\tconstructor(maxConnections: number = 4) {\n\t\tthis.maxConnections = maxConnections;\n\t}\n\tgetConnection(modelId: string): any {\n\t\tif (this.connections.has(modelId)) {\n\t\t\treturn this.connections.get(modelId);\n\t\t}\n\t\tconst connection = this.createConnection(modelId);\n\t\tif (this.connections.size >= this.maxConnections) {\n\t\t\tconst firstKey = this.connections.keys().next().value;\n\t\t\tif (firstKey !== undefined) {\n\t\t\t\tthis.connections.delete(firstKey);\n\t\t\t}\n\t\t}\n\t\tthis.connections.set(modelId, connection);\n\t\treturn connection;\n\t}\n\tprivate createConnection(modelId: string): any {\n\t\treturn { modelId, createdAt: Date.now() };\n\t}\n\tclear(): void {\n\t\tthis.connections.clear();\n\t}\n}\nexport class ResponseCache {\n\tprivate cache = new Map<string, { response: AssistantMessage; timestamp: number }>();\n\tprivate ttl: number;\n\tconstructor(ttlMs: number = 60000) {\n\t\tthis.ttl = ttlMs;\n\t}\n\tprivate generateKey(messages: any[], model: Model<any>): string {\n\t\tconst messageHash = JSON.stringify(messages).slice(0, 200);\n\t\treturn `${model.provider}:${model.id ?? \"unknown\"}:${messageHash}`;\n\t}\n\tget(messages: any[], model: Model<any>): AssistantMessage | undefined {\n\t\tconst key = this.generateKey(messages, model);\n\t\tconst entry = this.cache.get(key);\n\t\tif (entry && Date.now() - entry.timestamp < this.ttl) {\n\t\t\treturn entry.response;\n\t\t}\n\t\tif (entry) {\n\t\t\tthis.cache.delete(key);\n\t\t}\n\t\treturn undefined;\n\t}\n\tset(messages: any[], model: Model<any>, response: AssistantMessage): void {\n\t\tconst key = this.generateKey(messages, model);\n\t\tthis.cache.set(key, { response, timestamp: Date.now() });\n\t\tthis.cleanup();\n\t}\n\tprivate cleanup(): void {\n\t\tconst now = Date.now();\n\t\tfor (const [key, entry] of this.cache) {\n\t\t\tif (now - entry.timestamp > this.ttl) {\n\t\t\t\tthis.cache.delete(key);\n\t\t\t}\n\t\t}\n\t}\n\tclear(): void {\n\t\tthis.cache.clear();\n\t}\n}\nexport async function warmupModel(model: Model<any>): Promise<void> {\n\tconsole.log(`Warming up model: ${model.id}`);\n}\nexport function optimizeContext(messages: any[]): any[] {\n\treturn messages.map((msg) => {\n\t\tif (typeof msg.content === \"string\") {\n\t\t\treturn {\n\t\t\t\t...msg,\n\t\t\t\tcontent: msg.content.replace(/\\n{3,}/g, \"\\n\\n\").trim(),\n\t\t\t};\n\t\t}\n\t\treturn msg;\n\t});\n}\nexport const globalAccelerator = new StreamingAccelerator();\nexport const globalConnectionPool = new ConnectionPool();\nexport const globalResponseCache = new ResponseCache();\nexport async function* accelerateStream(\n\tgenerator: AsyncGenerator<AssistantMessageEvent>,\n\toptions?: AcceleratedStreamOptions,\n): AsyncGenerator<AssistantMessageEvent> {\n\tyield* globalAccelerator.streamChunks(generator, options);\n}\nexport function getCachedResponse(messages: any[], model: Model<any>): AssistantMessage | undefined {\n\treturn globalResponseCache.get(messages, model);\n}\nexport function cacheResponse(messages: any[], model: Model<any>, response: AssistantMessage): void {\n\tglobalResponseCache.set(messages, model, response);\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"response-accelerator.js","sourceRoot":"","sources":["../../src/core/response-accelerator.ts"],"names":[],"mappings":"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","sourcesContent":["import type { AssistantMessage, AssistantMessageEvent, Model } from \"@mariozechner/pi-ai\";\n\ninterface AcceleratedStreamOptions {\n\tprefetch?: boolean;\n\tbufferSize?: number;\n\tpriority?: \"speed\" | \"quality\" | \"balanced\";\n}\nexport class ResponseBuffer {\n\tprivate chunks: string[] = [];\n\tprivate totalLength = 0;\n\tprivate textDecoder = new TextDecoder();\n\tappend(chunk: string | Uint8Array): void {\n\t\tif (typeof chunk === \"string\") {\n\t\t\tthis.chunks.push(chunk);\n\t\t\tthis.totalLength += chunk.length;\n\t\t} else {\n\t\t\tconst text = this.textDecoder.decode(chunk, { stream: true });\n\t\t\tthis.chunks.push(text);\n\t\t\tthis.totalLength += text.length;\n\t\t}\n\t}\n\tgetText(): string {\n\t\tif (this.chunks.length === 0) return \"\";\n\t\tif (this.chunks.length === 1) return this.chunks[0];\n\t\treturn this.chunks.join(\"\");\n\t}\n\tgetChunks(): string[] {\n\t\treturn this.chunks;\n\t}\n\tclear(): void {\n\t\tthis.chunks = [];\n\t\tthis.totalLength = 0;\n\t}\n\tget length(): number {\n\t\treturn this.totalLength;\n\t}\n}\nexport class StreamingAccelerator {\n\tprivate activeBuffer: ResponseBuffer = new ResponseBuffer();\n\tprivate backBuffer: ResponseBuffer = new ResponseBuffer();\n\tasync *streamChunks(\n\t\tgenerator: AsyncGenerator<AssistantMessageEvent>,\n\t\toptions: AcceleratedStreamOptions = {},\n\t): AsyncGenerator<AssistantMessageEvent> {\n\t\tconst { priority = \"balanced\" } = options;\n\t\tif (priority === \"speed\") {\n\t\t\tprocess.env.NODE_OPTIONS = \"--max-old-space-size=8192\";\n\t\t}\n\t\tfor await (const event of generator) {\n\t\t\tyield event;\n\t\t\tif (event.type === \"text_delta\" && event.delta) {\n\t\t\t\tthis.activeBuffer.append(event.delta);\n\t\t\t}\n\t\t}\n\t\tconst temp = this.activeBuffer;\n\t\tthis.activeBuffer = this.backBuffer;\n\t\tthis.backBuffer = temp;\n\t\tthis.backBuffer.clear();\n\t}\n\tgetAccumulatedText(): string {\n\t\treturn this.activeBuffer.getText();\n\t}\n}\nexport class ConnectionPool {\n\tprivate connections = new Map<string, any>();\n\tprivate maxConnections: number;\n\tconstructor(maxConnections: number = 4) {\n\t\tthis.maxConnections = maxConnections;\n\t}\n\tgetConnection(modelId: string): any {\n\t\tif (this.connections.has(modelId)) {\n\t\t\treturn this.connections.get(modelId);\n\t\t}\n\t\tconst connection = this.createConnection(modelId);\n\t\tif (this.connections.size >= this.maxConnections) {\n\t\t\tconst firstKey = this.connections.keys().next().value;\n\t\t\tif (firstKey !== undefined) {\n\t\t\t\tthis.connections.delete(firstKey);\n\t\t\t}\n\t\t}\n\t\tthis.connections.set(modelId, connection);\n\t\treturn connection;\n\t}\n\tprivate createConnection(modelId: string): any {\n\t\treturn { modelId, createdAt: Date.now() };\n\t}\n\tclear(): void {\n\t\tthis.connections.clear();\n\t}\n}\nexport class ResponseCache {\n\tprivate cache = new Map<string, { response: AssistantMessage; timestamp: number }>();\n\tprivate ttl: number;\n\tconstructor(ttlMs: number = 60000) {\n\t\tthis.ttl = ttlMs;\n\t}\n\tprivate generateKey(messages: any[], model: Model<any>): string {\n\t\tconst messageHash = JSON.stringify(messages).slice(0, 200);\n\t\treturn `${model.provider}:${model.id ?? \"unknown\"}:${messageHash}`;\n\t}\n\tget(messages: any[], model: Model<any>): AssistantMessage | undefined {\n\t\tconst key = this.generateKey(messages, model);\n\t\tconst entry = this.cache.get(key);\n\t\tif (entry && Date.now() - entry.timestamp < this.ttl) {\n\t\t\treturn entry.response;\n\t\t}\n\t\tif (entry) {\n\t\t\tthis.cache.delete(key);\n\t\t}\n\t\treturn undefined;\n\t}\n\tset(messages: any[], model: Model<any>, response: AssistantMessage): void {\n\t\tconst key = this.generateKey(messages, model);\n\t\tthis.cache.set(key, { response, timestamp: Date.now() });\n\t\tthis.cleanup();\n\t}\n\tprivate cleanup(): void {\n\t\tconst now = Date.now();\n\t\tfor (const [key, entry] of this.cache) {\n\t\t\tif (now - entry.timestamp > this.ttl) {\n\t\t\t\tthis.cache.delete(key);\n\t\t\t}\n\t\t}\n\t}\n\tclear(): void {\n\t\tthis.cache.clear();\n\t}\n}\nexport async function warmupModel(model: Model<any>): Promise<void> {\n\tconsole.log(`Warming up model: ${model.id}`);\n}\nexport function optimizeContext(messages: any[]): any[] {\n\treturn messages.map((msg) => {\n\t\tif (typeof msg.content === \"string\") {\n\t\t\treturn {\n\t\t\t\t...msg,\n\t\t\t\tcontent: msg.content.replace(/\\n{3,}/g, \"\\n\\n\").trim(),\n\t\t\t};\n\t\t}\n\t\treturn msg;\n\t});\n}\nexport const globalAccelerator = new StreamingAccelerator();\nexport const globalConnectionPool = new ConnectionPool();\nexport const globalResponseCache = new ResponseCache();\nexport async function* accelerateStream(\n\tgenerator: AsyncGenerator<AssistantMessageEvent>,\n\toptions?: AcceleratedStreamOptions,\n): AsyncGenerator<AssistantMessageEvent> {\n\tyield* globalAccelerator.streamChunks(generator, options);\n}\nexport function getCachedResponse(messages: any[], model: Model<any>): AssistantMessage | undefined {\n\treturn globalResponseCache.get(messages, model);\n}\nexport function cacheResponse(messages: any[], model: Model<any>, response: AssistantMessage): void {\n\tglobalResponseCache.set(messages, model, response);\n}\n"]}
1
+ {"version":3,"file":"response-accelerator.js","sourceRoot":"","sources":["../../src/core/response-accelerator.ts"],"names":[],"mappings":"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","sourcesContent":["import type { AssistantMessage, AssistantMessageEvent, Model } from \"@boxiaolanya2008/pi-ai\";\n\ninterface AcceleratedStreamOptions {\n\tprefetch?: boolean;\n\tbufferSize?: number;\n\tpriority?: \"speed\" | \"quality\" | \"balanced\";\n}\nexport class ResponseBuffer {\n\tprivate chunks: string[] = [];\n\tprivate totalLength = 0;\n\tprivate textDecoder = new TextDecoder();\n\tappend(chunk: string | Uint8Array): void {\n\t\tif (typeof chunk === \"string\") {\n\t\t\tthis.chunks.push(chunk);\n\t\t\tthis.totalLength += chunk.length;\n\t\t} else {\n\t\t\tconst text = this.textDecoder.decode(chunk, { stream: true });\n\t\t\tthis.chunks.push(text);\n\t\t\tthis.totalLength += text.length;\n\t\t}\n\t}\n\tgetText(): string {\n\t\tif (this.chunks.length === 0) return \"\";\n\t\tif (this.chunks.length === 1) return this.chunks[0];\n\t\treturn this.chunks.join(\"\");\n\t}\n\tgetChunks(): string[] {\n\t\treturn this.chunks;\n\t}\n\tclear(): void {\n\t\tthis.chunks = [];\n\t\tthis.totalLength = 0;\n\t}\n\tget length(): number {\n\t\treturn this.totalLength;\n\t}\n}\nexport class StreamingAccelerator {\n\tprivate activeBuffer: ResponseBuffer = new ResponseBuffer();\n\tprivate backBuffer: ResponseBuffer = new ResponseBuffer();\n\tasync *streamChunks(\n\t\tgenerator: AsyncGenerator<AssistantMessageEvent>,\n\t\toptions: AcceleratedStreamOptions = {},\n\t): AsyncGenerator<AssistantMessageEvent> {\n\t\tconst { priority = \"balanced\" } = options;\n\t\tif (priority === \"speed\") {\n\t\t\tprocess.env.NODE_OPTIONS = \"--max-old-space-size=8192\";\n\t\t}\n\t\tfor await (const event of generator) {\n\t\t\tyield event;\n\t\t\tif (event.type === \"text_delta\" && event.delta) {\n\t\t\t\tthis.activeBuffer.append(event.delta);\n\t\t\t}\n\t\t}\n\t\tconst temp = this.activeBuffer;\n\t\tthis.activeBuffer = this.backBuffer;\n\t\tthis.backBuffer = temp;\n\t\tthis.backBuffer.clear();\n\t}\n\tgetAccumulatedText(): string {\n\t\treturn this.activeBuffer.getText();\n\t}\n}\nexport class ConnectionPool {\n\tprivate connections = new Map<string, any>();\n\tprivate maxConnections: number;\n\tconstructor(maxConnections: number = 4) {\n\t\tthis.maxConnections = maxConnections;\n\t}\n\tgetConnection(modelId: string): any {\n\t\tif (this.connections.has(modelId)) {\n\t\t\treturn this.connections.get(modelId);\n\t\t}\n\t\tconst connection = this.createConnection(modelId);\n\t\tif (this.connections.size >= this.maxConnections) {\n\t\t\tconst firstKey = this.connections.keys().next().value;\n\t\t\tif (firstKey !== undefined) {\n\t\t\t\tthis.connections.delete(firstKey);\n\t\t\t}\n\t\t}\n\t\tthis.connections.set(modelId, connection);\n\t\treturn connection;\n\t}\n\tprivate createConnection(modelId: string): any {\n\t\treturn { modelId, createdAt: Date.now() };\n\t}\n\tclear(): void {\n\t\tthis.connections.clear();\n\t}\n}\nexport class ResponseCache {\n\tprivate cache = new Map<string, { response: AssistantMessage; timestamp: number }>();\n\tprivate ttl: number;\n\tconstructor(ttlMs: number = 60000) {\n\t\tthis.ttl = ttlMs;\n\t}\n\tprivate generateKey(messages: any[], model: Model<any>): string {\n\t\tconst messageHash = JSON.stringify(messages).slice(0, 200);\n\t\treturn `${model.provider}:${model.id ?? \"unknown\"}:${messageHash}`;\n\t}\n\tget(messages: any[], model: Model<any>): AssistantMessage | undefined {\n\t\tconst key = this.generateKey(messages, model);\n\t\tconst entry = this.cache.get(key);\n\t\tif (entry && Date.now() - entry.timestamp < this.ttl) {\n\t\t\treturn entry.response;\n\t\t}\n\t\tif (entry) {\n\t\t\tthis.cache.delete(key);\n\t\t}\n\t\treturn undefined;\n\t}\n\tset(messages: any[], model: Model<any>, response: AssistantMessage): void {\n\t\tconst key = this.generateKey(messages, model);\n\t\tthis.cache.set(key, { response, timestamp: Date.now() });\n\t\tthis.cleanup();\n\t}\n\tprivate cleanup(): void {\n\t\tconst now = Date.now();\n\t\tfor (const [key, entry] of this.cache) {\n\t\t\tif (now - entry.timestamp > this.ttl) {\n\t\t\t\tthis.cache.delete(key);\n\t\t\t}\n\t\t}\n\t}\n\tclear(): void {\n\t\tthis.cache.clear();\n\t}\n}\nexport async function warmupModel(model: Model<any>): Promise<void> {\n\tconsole.log(`Warming up model: ${model.id}`);\n}\nexport function optimizeContext(messages: any[]): any[] {\n\treturn messages.map((msg) => {\n\t\tif (typeof msg.content === \"string\") {\n\t\t\treturn {\n\t\t\t\t...msg,\n\t\t\t\tcontent: msg.content.replace(/\\n{3,}/g, \"\\n\\n\").trim(),\n\t\t\t};\n\t\t}\n\t\treturn msg;\n\t});\n}\nexport const globalAccelerator = new StreamingAccelerator();\nexport const globalConnectionPool = new ConnectionPool();\nexport const globalResponseCache = new ResponseCache();\nexport async function* accelerateStream(\n\tgenerator: AsyncGenerator<AssistantMessageEvent>,\n\toptions?: AcceleratedStreamOptions,\n): AsyncGenerator<AssistantMessageEvent> {\n\tyield* globalAccelerator.streamChunks(generator, options);\n}\nexport function getCachedResponse(messages: any[], model: Model<any>): AssistantMessage | undefined {\n\treturn globalResponseCache.get(messages, model);\n}\nexport function cacheResponse(messages: any[], model: Model<any>, response: AssistantMessage): void {\n\tglobalResponseCache.set(messages, model, response);\n}\n"]}
@@ -1,5 +1,5 @@
1
- import { type ThinkingLevel } from "@mariozechner/pi-agent-core";
2
- import type { Model } from "@mariozechner/pi-ai";
1
+ import { type ThinkingLevel } from "@boxiaolanya2008/pi-agent-core";
2
+ import type { Model } from "@boxiaolanya2008/pi-ai";
3
3
  import { AgentSession } from "./agent-session.js";
4
4
  import { AuthStorage } from "./auth-storage.js";
5
5
  import type { LoadExtensionsResult, ToolDefinition } from "./extensions/index.js";
@@ -1 +1 @@
1
- {"version":3,"file":"sdk.d.ts","sourceRoot":"","sources":["../../src/core/sdk.ts"],"names":[],"mappings":"AACA,OAAO,EAA4B,KAAK,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC3F,OAAO,KAAK,EAAW,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAE1D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,KAAK,EAAmB,oBAAoB,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEnG,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD,OAAO,EACN,QAAQ,EACR,QAAQ,EACR,WAAW,EACX,cAAc,EACd,iBAAiB,EACjB,cAAc,EACd,cAAc,EACd,cAAc,EACd,YAAY,EACZ,mBAAmB,EACnB,cAAc,EACd,eAAe,EACf,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,aAAa,EACb,QAAQ,EACR,KAAK,IAAI,EAET,SAAS,EACT,MAAM,kBAAkB,CAAC;AAC1B,MAAM,WAAW,yBAAyB;IACzC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,KAAK,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;IACnB,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,YAAY,CAAC,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;QAAC,aAAa,CAAC,EAAE,aAAa,CAAA;KAAE,CAAC,CAAC;IAC3E,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC;IACf,WAAW,CAAC,EAAE,cAAc,EAAE,CAAC;IAC/B,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,eAAe,CAAC,EAAE,eAAe,CAAC;CAClC;AACD,MAAM,WAAW,wBAAwB;IACxC,OAAO,EAAE,YAAY,CAAC;IACtB,gBAAgB,EAAE,oBAAoB,CAAC;IACvC,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC9B;AACD,YAAY,EACX,YAAY,EACZ,uBAAuB,EACvB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,oBAAoB,EACpB,kBAAkB,EAClB,cAAc,GACd,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,YAAY,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACzC,YAAY,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EACN,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,WAAW,EACX,aAAa,EACb,QAAQ,IAAI,eAAe,EAC3B,iBAAiB,EACjB,mBAAmB,EACnB,cAAc,EACd,cAAc,EACd,cAAc,EACd,eAAe,EACf,cAAc,EACd,cAAc,EACd,YAAY,GACZ,CAAC;AAIF,wBAAsB,kBAAkB,CAAC,OAAO,GAAE,yBAA8B,GAAG,OAAO,CAAC,wBAAwB,CAAC,CA4InH","sourcesContent":["import { join } from \"node:path\";\nimport { Agent, type AgentMessage, type ThinkingLevel } from \"@mariozechner/pi-agent-core\";\nimport type { Message, Model } from \"@mariozechner/pi-ai\";\nimport { getAgentDir } from \"../config.js\";\nimport { AgentSession } from \"./agent-session.js\";\nimport { AuthStorage } from \"./auth-storage.js\";\nimport { DEFAULT_THINKING_LEVEL } from \"./defaults.js\";\nimport type { ExtensionRunner, LoadExtensionsResult, ToolDefinition } from \"./extensions/index.js\";\nimport { convertToLlm } from \"./messages.js\";\nimport { ModelRegistry } from \"./model-registry.js\";\nimport type { ResourceLoader } from \"./resource-loader.js\";\nimport { DefaultResourceLoader } from \"./resource-loader.js\";\nimport { SessionManager } from \"./session-manager.js\";\nimport { SettingsManager } from \"./settings-manager.js\";\nimport { time } from \"./timings.js\";\nimport {\n\tallTools,\n\tbashTool,\n\tcodingTools,\n\tcreateBashTool,\n\tcreateCodingTools,\n\tcreateEditTool,\n\tcreateFindTool,\n\tcreateGrepTool,\n\tcreateLsTool,\n\tcreateReadOnlyTools,\n\tcreateReadTool,\n\tcreateWriteTool,\n\teditTool,\n\tfindTool,\n\tgrepTool,\n\tlsTool,\n\treadOnlyTools,\n\treadTool,\n\ttype Tool,\n\ttype ToolName,\n\twriteTool,\n} from \"./tools/index.js\";\nexport interface CreateAgentSessionOptions {\n\tcwd?: string;\n\tagentDir?: string;\n\tauthStorage?: AuthStorage;\n\tmodelRegistry?: ModelRegistry;\n\tmodel?: Model<any>;\n\tthinkingLevel?: ThinkingLevel;\n\tscopedModels?: Array<{ model: Model<any>; thinkingLevel?: ThinkingLevel }>;\n\ttools?: Tool[];\n\tcustomTools?: ToolDefinition[];\n\tresourceLoader?: ResourceLoader;\n\tsessionManager?: SessionManager;\n\tsettingsManager?: SettingsManager;\n}\nexport interface CreateAgentSessionResult {\n\tsession: AgentSession;\n\textensionsResult: LoadExtensionsResult;\n\tmodelFallbackMessage?: string;\n}\nexport type {\n\tExtensionAPI,\n\tExtensionCommandContext,\n\tExtensionContext,\n\tExtensionFactory,\n\tSlashCommandInfo,\n\tSlashCommandLocation,\n\tSlashCommandSource,\n\tToolDefinition,\n} from \"./extensions/index.js\";\nexport type { PromptTemplate } from \"./prompt-templates.js\";\nexport type { Skill } from \"./skills.js\";\nexport type { Tool } from \"./tools/index.js\";\nexport {\n\treadTool,\n\tbashTool,\n\teditTool,\n\twriteTool,\n\tgrepTool,\n\tfindTool,\n\tlsTool,\n\tcodingTools,\n\treadOnlyTools,\n\tallTools as allBuiltInTools,\n\tcreateCodingTools,\n\tcreateReadOnlyTools,\n\tcreateReadTool,\n\tcreateBashTool,\n\tcreateEditTool,\n\tcreateWriteTool,\n\tcreateGrepTool,\n\tcreateFindTool,\n\tcreateLsTool,\n};\nfunction getDefaultAgentDir(): string {\n\treturn getAgentDir();\n}\nexport async function createAgentSession(options: CreateAgentSessionOptions = {}): Promise<CreateAgentSessionResult> {\n\tconst cwd = options.cwd ?? process.cwd();\n\tconst agentDir = options.agentDir ?? getDefaultAgentDir();\n\tlet resourceLoader = options.resourceLoader;\n\tconst authPath = options.agentDir ? join(agentDir, \"auth.json\") : undefined;\n\tconst modelsPath = options.agentDir ? join(agentDir, \"models.json\") : undefined;\n\tconst authStorage = options.authStorage ?? AuthStorage.create(authPath);\n\tconst modelRegistry = options.modelRegistry ?? new ModelRegistry(authStorage, modelsPath);\n\tconst settingsManager = options.settingsManager ?? SettingsManager.create(cwd, agentDir);\n\tconst sessionManager = options.sessionManager ?? SessionManager.create(cwd);\n\tif (!resourceLoader) {\n\t\tresourceLoader = new DefaultResourceLoader({ cwd, agentDir, settingsManager });\n\t\tawait resourceLoader.reload();\n\t\ttime(\"resourceLoader.reload\");\n\t}\n\tconst existingSession = sessionManager.buildSessionContext();\n\tconst hasExistingSession = existingSession.messages.length > 0;\n\tconst hasThinkingEntry = sessionManager.getBranch().some((entry) => entry.type === \"thinking_level_change\");\n\n\t// Get model from registry (user-configured single model)\n\tconst model = options.model ?? modelRegistry.getModel() ?? undefined;\n\tlet modelFallbackMessage: string | undefined;\n\n\tif (!model) {\n\t\tmodelFallbackMessage = \"No model configured. Please run onboarding first.\";\n\t}\n\n\tlet thinkingLevel = options.thinkingLevel;\n\tif (thinkingLevel === undefined && hasExistingSession) {\n\t\tthinkingLevel = hasThinkingEntry\n\t\t\t? (existingSession.thinkingLevel as ThinkingLevel)\n\t\t\t: (settingsManager.getDefaultThinkingLevel() ?? DEFAULT_THINKING_LEVEL);\n\t}\n\tif (thinkingLevel === undefined) {\n\t\tthinkingLevel = settingsManager.getDefaultThinkingLevel() ?? DEFAULT_THINKING_LEVEL;\n\t}\n\tif (!model || !model.reasoning) {\n\t\tthinkingLevel = \"off\";\n\t}\n\tconst defaultActiveToolNames: ToolName[] = [\"read\", \"bash\", \"edit\", \"write\"];\n\tconst initialActiveToolNames: ToolName[] = options.tools\n\t\t? options.tools.map((t) => t.name).filter((n): n is ToolName => n in allTools)\n\t\t: defaultActiveToolNames;\n\tlet agent: Agent;\n\tconst convertToLlmWithBlockImages = (messages: AgentMessage[]): Message[] => {\n\t\tconst converted = convertToLlm(messages);\n\t\tif (!settingsManager.getBlockImages()) {\n\t\t\treturn converted;\n\t\t}\n\t\treturn converted.map((msg) => {\n\t\t\tif (msg.role === \"user\" || msg.role === \"toolResult\") {\n\t\t\t\tconst content = msg.content;\n\t\t\t\tif (Array.isArray(content)) {\n\t\t\t\t\tconst hasImages = content.some((c) => c.type === \"image\");\n\t\t\t\t\tif (hasImages) {\n\t\t\t\t\t\tconst filteredContent = content\n\t\t\t\t\t\t\t.map((c) =>\n\t\t\t\t\t\t\t\tc.type === \"image\" ? { type: \"text\" as const, text: \"Image reading is disabled.\" } : c,\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t.filter(\n\t\t\t\t\t\t\t\t(c, i, arr) =>\n\t\t\t\t\t\t\t\t\t!(\n\t\t\t\t\t\t\t\t\t\tc.type === \"text\" &&\n\t\t\t\t\t\t\t\t\t\tc.text === \"Image reading is disabled.\" &&\n\t\t\t\t\t\t\t\t\t\ti > 0 &&\n\t\t\t\t\t\t\t\t\t\tarr[i - 1].type === \"text\" &&\n\t\t\t\t\t\t\t\t\t\t(arr[i - 1] as { type: \"text\"; text: string }).text === \"Image reading is disabled.\"\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\treturn { ...msg, content: filteredContent };\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn msg;\n\t\t});\n\t};\n\tconst extensionRunnerRef: { current?: ExtensionRunner } = {};\n\tagent = new Agent({\n\t\tinitialState: {\n\t\t\tsystemPrompt: \"\",\n\t\t\tmodel,\n\t\t\tthinkingLevel,\n\t\t\ttools: [],\n\t\t},\n\t\tconvertToLlm: convertToLlmWithBlockImages,\n\t\tonPayload: async (payload, _model) => {\n\t\t\tconst runner = extensionRunnerRef.current;\n\t\t\tif (!runner?.hasHandlers(\"before_provider_request\")) {\n\t\t\t\treturn payload;\n\t\t\t}\n\t\t\treturn runner.emitBeforeProviderRequest(payload);\n\t\t},\n\t\tsessionId: sessionManager.getSessionId(),\n\t\ttransformContext: async (messages) => {\n\t\t\tconst runner = extensionRunnerRef.current;\n\t\t\tif (!runner) return messages;\n\t\t\treturn runner.emitContext(messages);\n\t\t},\n\t\tsteeringMode: settingsManager.getSteeringMode(),\n\t\tfollowUpMode: settingsManager.getFollowUpMode(),\n\t\ttransport: settingsManager.getTransport(),\n\t\tthinkingBudgets: settingsManager.getThinkingBudgets(),\n\t\tmaxRetryDelayMs: settingsManager.getRetrySettings().maxDelayMs,\n\t\tgetApiKey: async (_provider) => {\n\t\t\tconst key = modelRegistry.getApiKey();\n\t\t\tif (!key) {\n\t\t\t\tthrow new Error(\"No API key configured. Please check your configuration.\");\n\t\t\t}\n\t\t\treturn key;\n\t\t},\n\t});\n\tif (hasExistingSession) {\n\t\tagent.replaceMessages(existingSession.messages);\n\t\tif (!hasThinkingEntry) {\n\t\t\tsessionManager.appendThinkingLevelChange(thinkingLevel);\n\t\t}\n\t} else {\n\t\tif (model) {\n\t\t\tsessionManager.appendModelChange(model.provider, model.id);\n\t\t}\n\t\tsessionManager.appendThinkingLevelChange(thinkingLevel);\n\t}\n\tconst session = new AgentSession({\n\t\tagent,\n\t\tsessionManager,\n\t\tsettingsManager,\n\t\tcwd,\n\t\tscopedModels: options.scopedModels,\n\t\tresourceLoader,\n\t\tcustomTools: options.customTools,\n\t\tmodelRegistry,\n\t\tinitialActiveToolNames,\n\t\textensionRunnerRef,\n\t});\n\tconst extensionsResult = resourceLoader.getExtensions();\n\treturn {\n\t\tsession,\n\t\textensionsResult,\n\t\tmodelFallbackMessage,\n\t};\n}\n"]}
1
+ {"version":3,"file":"sdk.d.ts","sourceRoot":"","sources":["../../src/core/sdk.ts"],"names":[],"mappings":"AACA,OAAO,EAA4B,KAAK,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC9F,OAAO,KAAK,EAAW,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAE7D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,KAAK,EAAmB,oBAAoB,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEnG,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD,OAAO,EACN,QAAQ,EACR,QAAQ,EACR,WAAW,EACX,cAAc,EACd,iBAAiB,EACjB,cAAc,EACd,cAAc,EACd,cAAc,EACd,YAAY,EACZ,mBAAmB,EACnB,cAAc,EACd,eAAe,EACf,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,aAAa,EACb,QAAQ,EACR,KAAK,IAAI,EAET,SAAS,EACT,MAAM,kBAAkB,CAAC;AAC1B,MAAM,WAAW,yBAAyB;IACzC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,KAAK,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;IACnB,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,YAAY,CAAC,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;QAAC,aAAa,CAAC,EAAE,aAAa,CAAA;KAAE,CAAC,CAAC;IAC3E,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC;IACf,WAAW,CAAC,EAAE,cAAc,EAAE,CAAC;IAC/B,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,eAAe,CAAC,EAAE,eAAe,CAAC;CAClC;AACD,MAAM,WAAW,wBAAwB;IACxC,OAAO,EAAE,YAAY,CAAC;IACtB,gBAAgB,EAAE,oBAAoB,CAAC;IACvC,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC9B;AACD,YAAY,EACX,YAAY,EACZ,uBAAuB,EACvB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,oBAAoB,EACpB,kBAAkB,EAClB,cAAc,GACd,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,YAAY,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACzC,YAAY,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EACN,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,WAAW,EACX,aAAa,EACb,QAAQ,IAAI,eAAe,EAC3B,iBAAiB,EACjB,mBAAmB,EACnB,cAAc,EACd,cAAc,EACd,cAAc,EACd,eAAe,EACf,cAAc,EACd,cAAc,EACd,YAAY,GACZ,CAAC;AAIF,wBAAsB,kBAAkB,CAAC,OAAO,GAAE,yBAA8B,GAAG,OAAO,CAAC,wBAAwB,CAAC,CA4InH","sourcesContent":["import { join } from \"node:path\";\nimport { Agent, type AgentMessage, type ThinkingLevel } from \"@boxiaolanya2008/pi-agent-core\";\nimport type { Message, Model } from \"@boxiaolanya2008/pi-ai\";\nimport { getAgentDir } from \"../config.js\";\nimport { AgentSession } from \"./agent-session.js\";\nimport { AuthStorage } from \"./auth-storage.js\";\nimport { DEFAULT_THINKING_LEVEL } from \"./defaults.js\";\nimport type { ExtensionRunner, LoadExtensionsResult, ToolDefinition } from \"./extensions/index.js\";\nimport { convertToLlm } from \"./messages.js\";\nimport { ModelRegistry } from \"./model-registry.js\";\nimport type { ResourceLoader } from \"./resource-loader.js\";\nimport { DefaultResourceLoader } from \"./resource-loader.js\";\nimport { SessionManager } from \"./session-manager.js\";\nimport { SettingsManager } from \"./settings-manager.js\";\nimport { time } from \"./timings.js\";\nimport {\n\tallTools,\n\tbashTool,\n\tcodingTools,\n\tcreateBashTool,\n\tcreateCodingTools,\n\tcreateEditTool,\n\tcreateFindTool,\n\tcreateGrepTool,\n\tcreateLsTool,\n\tcreateReadOnlyTools,\n\tcreateReadTool,\n\tcreateWriteTool,\n\teditTool,\n\tfindTool,\n\tgrepTool,\n\tlsTool,\n\treadOnlyTools,\n\treadTool,\n\ttype Tool,\n\ttype ToolName,\n\twriteTool,\n} from \"./tools/index.js\";\nexport interface CreateAgentSessionOptions {\n\tcwd?: string;\n\tagentDir?: string;\n\tauthStorage?: AuthStorage;\n\tmodelRegistry?: ModelRegistry;\n\tmodel?: Model<any>;\n\tthinkingLevel?: ThinkingLevel;\n\tscopedModels?: Array<{ model: Model<any>; thinkingLevel?: ThinkingLevel }>;\n\ttools?: Tool[];\n\tcustomTools?: ToolDefinition[];\n\tresourceLoader?: ResourceLoader;\n\tsessionManager?: SessionManager;\n\tsettingsManager?: SettingsManager;\n}\nexport interface CreateAgentSessionResult {\n\tsession: AgentSession;\n\textensionsResult: LoadExtensionsResult;\n\tmodelFallbackMessage?: string;\n}\nexport type {\n\tExtensionAPI,\n\tExtensionCommandContext,\n\tExtensionContext,\n\tExtensionFactory,\n\tSlashCommandInfo,\n\tSlashCommandLocation,\n\tSlashCommandSource,\n\tToolDefinition,\n} from \"./extensions/index.js\";\nexport type { PromptTemplate } from \"./prompt-templates.js\";\nexport type { Skill } from \"./skills.js\";\nexport type { Tool } from \"./tools/index.js\";\nexport {\n\treadTool,\n\tbashTool,\n\teditTool,\n\twriteTool,\n\tgrepTool,\n\tfindTool,\n\tlsTool,\n\tcodingTools,\n\treadOnlyTools,\n\tallTools as allBuiltInTools,\n\tcreateCodingTools,\n\tcreateReadOnlyTools,\n\tcreateReadTool,\n\tcreateBashTool,\n\tcreateEditTool,\n\tcreateWriteTool,\n\tcreateGrepTool,\n\tcreateFindTool,\n\tcreateLsTool,\n};\nfunction getDefaultAgentDir(): string {\n\treturn getAgentDir();\n}\nexport async function createAgentSession(options: CreateAgentSessionOptions = {}): Promise<CreateAgentSessionResult> {\n\tconst cwd = options.cwd ?? process.cwd();\n\tconst agentDir = options.agentDir ?? getDefaultAgentDir();\n\tlet resourceLoader = options.resourceLoader;\n\tconst authPath = options.agentDir ? join(agentDir, \"auth.json\") : undefined;\n\tconst modelsPath = options.agentDir ? join(agentDir, \"models.json\") : undefined;\n\tconst authStorage = options.authStorage ?? AuthStorage.create(authPath);\n\tconst modelRegistry = options.modelRegistry ?? new ModelRegistry(authStorage, modelsPath);\n\tconst settingsManager = options.settingsManager ?? SettingsManager.create(cwd, agentDir);\n\tconst sessionManager = options.sessionManager ?? SessionManager.create(cwd);\n\tif (!resourceLoader) {\n\t\tresourceLoader = new DefaultResourceLoader({ cwd, agentDir, settingsManager });\n\t\tawait resourceLoader.reload();\n\t\ttime(\"resourceLoader.reload\");\n\t}\n\tconst existingSession = sessionManager.buildSessionContext();\n\tconst hasExistingSession = existingSession.messages.length > 0;\n\tconst hasThinkingEntry = sessionManager.getBranch().some((entry) => entry.type === \"thinking_level_change\");\n\n\t// Get model from registry (user-configured single model)\n\tconst model = options.model ?? modelRegistry.getModel() ?? undefined;\n\tlet modelFallbackMessage: string | undefined;\n\n\tif (!model) {\n\t\tmodelFallbackMessage = \"No model configured. Please run onboarding first.\";\n\t}\n\n\tlet thinkingLevel = options.thinkingLevel;\n\tif (thinkingLevel === undefined && hasExistingSession) {\n\t\tthinkingLevel = hasThinkingEntry\n\t\t\t? (existingSession.thinkingLevel as ThinkingLevel)\n\t\t\t: (settingsManager.getDefaultThinkingLevel() ?? DEFAULT_THINKING_LEVEL);\n\t}\n\tif (thinkingLevel === undefined) {\n\t\tthinkingLevel = settingsManager.getDefaultThinkingLevel() ?? DEFAULT_THINKING_LEVEL;\n\t}\n\tif (!model || !model.reasoning) {\n\t\tthinkingLevel = \"off\";\n\t}\n\tconst defaultActiveToolNames: ToolName[] = [\"read\", \"bash\", \"edit\", \"write\"];\n\tconst initialActiveToolNames: ToolName[] = options.tools\n\t\t? options.tools.map((t) => t.name).filter((n): n is ToolName => n in allTools)\n\t\t: defaultActiveToolNames;\n\tlet agent: Agent;\n\tconst convertToLlmWithBlockImages = (messages: AgentMessage[]): Message[] => {\n\t\tconst converted = convertToLlm(messages);\n\t\tif (!settingsManager.getBlockImages()) {\n\t\t\treturn converted;\n\t\t}\n\t\treturn converted.map((msg) => {\n\t\t\tif (msg.role === \"user\" || msg.role === \"toolResult\") {\n\t\t\t\tconst content = msg.content;\n\t\t\t\tif (Array.isArray(content)) {\n\t\t\t\t\tconst hasImages = content.some((c) => c.type === \"image\");\n\t\t\t\t\tif (hasImages) {\n\t\t\t\t\t\tconst filteredContent = content\n\t\t\t\t\t\t\t.map((c) =>\n\t\t\t\t\t\t\t\tc.type === \"image\" ? { type: \"text\" as const, text: \"Image reading is disabled.\" } : c,\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t.filter(\n\t\t\t\t\t\t\t\t(c, i, arr) =>\n\t\t\t\t\t\t\t\t\t!(\n\t\t\t\t\t\t\t\t\t\tc.type === \"text\" &&\n\t\t\t\t\t\t\t\t\t\tc.text === \"Image reading is disabled.\" &&\n\t\t\t\t\t\t\t\t\t\ti > 0 &&\n\t\t\t\t\t\t\t\t\t\tarr[i - 1].type === \"text\" &&\n\t\t\t\t\t\t\t\t\t\t(arr[i - 1] as { type: \"text\"; text: string }).text === \"Image reading is disabled.\"\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\treturn { ...msg, content: filteredContent };\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn msg;\n\t\t});\n\t};\n\tconst extensionRunnerRef: { current?: ExtensionRunner } = {};\n\tagent = new Agent({\n\t\tinitialState: {\n\t\t\tsystemPrompt: \"\",\n\t\t\tmodel,\n\t\t\tthinkingLevel,\n\t\t\ttools: [],\n\t\t},\n\t\tconvertToLlm: convertToLlmWithBlockImages,\n\t\tonPayload: async (payload, _model) => {\n\t\t\tconst runner = extensionRunnerRef.current;\n\t\t\tif (!runner?.hasHandlers(\"before_provider_request\")) {\n\t\t\t\treturn payload;\n\t\t\t}\n\t\t\treturn runner.emitBeforeProviderRequest(payload);\n\t\t},\n\t\tsessionId: sessionManager.getSessionId(),\n\t\ttransformContext: async (messages) => {\n\t\t\tconst runner = extensionRunnerRef.current;\n\t\t\tif (!runner) return messages;\n\t\t\treturn runner.emitContext(messages);\n\t\t},\n\t\tsteeringMode: settingsManager.getSteeringMode(),\n\t\tfollowUpMode: settingsManager.getFollowUpMode(),\n\t\ttransport: settingsManager.getTransport(),\n\t\tthinkingBudgets: settingsManager.getThinkingBudgets(),\n\t\tmaxRetryDelayMs: settingsManager.getRetrySettings().maxDelayMs,\n\t\tgetApiKey: async (_provider) => {\n\t\t\tconst key = modelRegistry.getApiKey();\n\t\t\tif (!key) {\n\t\t\t\tthrow new Error(\"No API key configured. Please check your configuration.\");\n\t\t\t}\n\t\t\treturn key;\n\t\t},\n\t});\n\tif (hasExistingSession) {\n\t\tagent.replaceMessages(existingSession.messages);\n\t\tif (!hasThinkingEntry) {\n\t\t\tsessionManager.appendThinkingLevelChange(thinkingLevel);\n\t\t}\n\t} else {\n\t\tif (model) {\n\t\t\tsessionManager.appendModelChange(model.provider, model.id);\n\t\t}\n\t\tsessionManager.appendThinkingLevelChange(thinkingLevel);\n\t}\n\tconst session = new AgentSession({\n\t\tagent,\n\t\tsessionManager,\n\t\tsettingsManager,\n\t\tcwd,\n\t\tscopedModels: options.scopedModels,\n\t\tresourceLoader,\n\t\tcustomTools: options.customTools,\n\t\tmodelRegistry,\n\t\tinitialActiveToolNames,\n\t\textensionRunnerRef,\n\t});\n\tconst extensionsResult = resourceLoader.getExtensions();\n\treturn {\n\t\tsession,\n\t\textensionsResult,\n\t\tmodelFallbackMessage,\n\t};\n}\n"]}
package/dist/core/sdk.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { join } from "node:path";
2
- import { Agent } from "@mariozechner/pi-agent-core";
2
+ import { Agent } from "@boxiaolanya2008/pi-agent-core";
3
3
  import { getAgentDir } from "../config.js";
4
4
  import { AgentSession } from "./agent-session.js";
5
5
  import { AuthStorage } from "./auth-storage.js";
@@ -1 +1 @@
1
- {"version":3,"file":"sdk.js","sourceRoot":"","sources":["../../src/core/sdk.ts"],"names":[],"mappings":"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","sourcesContent":["import { join } from \"node:path\";\nimport { Agent, type AgentMessage, type ThinkingLevel } from \"@mariozechner/pi-agent-core\";\nimport type { Message, Model } from \"@mariozechner/pi-ai\";\nimport { getAgentDir } from \"../config.js\";\nimport { AgentSession } from \"./agent-session.js\";\nimport { AuthStorage } from \"./auth-storage.js\";\nimport { DEFAULT_THINKING_LEVEL } from \"./defaults.js\";\nimport type { ExtensionRunner, LoadExtensionsResult, ToolDefinition } from \"./extensions/index.js\";\nimport { convertToLlm } from \"./messages.js\";\nimport { ModelRegistry } from \"./model-registry.js\";\nimport type { ResourceLoader } from \"./resource-loader.js\";\nimport { DefaultResourceLoader } from \"./resource-loader.js\";\nimport { SessionManager } from \"./session-manager.js\";\nimport { SettingsManager } from \"./settings-manager.js\";\nimport { time } from \"./timings.js\";\nimport {\n\tallTools,\n\tbashTool,\n\tcodingTools,\n\tcreateBashTool,\n\tcreateCodingTools,\n\tcreateEditTool,\n\tcreateFindTool,\n\tcreateGrepTool,\n\tcreateLsTool,\n\tcreateReadOnlyTools,\n\tcreateReadTool,\n\tcreateWriteTool,\n\teditTool,\n\tfindTool,\n\tgrepTool,\n\tlsTool,\n\treadOnlyTools,\n\treadTool,\n\ttype Tool,\n\ttype ToolName,\n\twriteTool,\n} from \"./tools/index.js\";\nexport interface CreateAgentSessionOptions {\n\tcwd?: string;\n\tagentDir?: string;\n\tauthStorage?: AuthStorage;\n\tmodelRegistry?: ModelRegistry;\n\tmodel?: Model<any>;\n\tthinkingLevel?: ThinkingLevel;\n\tscopedModels?: Array<{ model: Model<any>; thinkingLevel?: ThinkingLevel }>;\n\ttools?: Tool[];\n\tcustomTools?: ToolDefinition[];\n\tresourceLoader?: ResourceLoader;\n\tsessionManager?: SessionManager;\n\tsettingsManager?: SettingsManager;\n}\nexport interface CreateAgentSessionResult {\n\tsession: AgentSession;\n\textensionsResult: LoadExtensionsResult;\n\tmodelFallbackMessage?: string;\n}\nexport type {\n\tExtensionAPI,\n\tExtensionCommandContext,\n\tExtensionContext,\n\tExtensionFactory,\n\tSlashCommandInfo,\n\tSlashCommandLocation,\n\tSlashCommandSource,\n\tToolDefinition,\n} from \"./extensions/index.js\";\nexport type { PromptTemplate } from \"./prompt-templates.js\";\nexport type { Skill } from \"./skills.js\";\nexport type { Tool } from \"./tools/index.js\";\nexport {\n\treadTool,\n\tbashTool,\n\teditTool,\n\twriteTool,\n\tgrepTool,\n\tfindTool,\n\tlsTool,\n\tcodingTools,\n\treadOnlyTools,\n\tallTools as allBuiltInTools,\n\tcreateCodingTools,\n\tcreateReadOnlyTools,\n\tcreateReadTool,\n\tcreateBashTool,\n\tcreateEditTool,\n\tcreateWriteTool,\n\tcreateGrepTool,\n\tcreateFindTool,\n\tcreateLsTool,\n};\nfunction getDefaultAgentDir(): string {\n\treturn getAgentDir();\n}\nexport async function createAgentSession(options: CreateAgentSessionOptions = {}): Promise<CreateAgentSessionResult> {\n\tconst cwd = options.cwd ?? process.cwd();\n\tconst agentDir = options.agentDir ?? getDefaultAgentDir();\n\tlet resourceLoader = options.resourceLoader;\n\tconst authPath = options.agentDir ? join(agentDir, \"auth.json\") : undefined;\n\tconst modelsPath = options.agentDir ? join(agentDir, \"models.json\") : undefined;\n\tconst authStorage = options.authStorage ?? AuthStorage.create(authPath);\n\tconst modelRegistry = options.modelRegistry ?? new ModelRegistry(authStorage, modelsPath);\n\tconst settingsManager = options.settingsManager ?? SettingsManager.create(cwd, agentDir);\n\tconst sessionManager = options.sessionManager ?? SessionManager.create(cwd);\n\tif (!resourceLoader) {\n\t\tresourceLoader = new DefaultResourceLoader({ cwd, agentDir, settingsManager });\n\t\tawait resourceLoader.reload();\n\t\ttime(\"resourceLoader.reload\");\n\t}\n\tconst existingSession = sessionManager.buildSessionContext();\n\tconst hasExistingSession = existingSession.messages.length > 0;\n\tconst hasThinkingEntry = sessionManager.getBranch().some((entry) => entry.type === \"thinking_level_change\");\n\n\t// Get model from registry (user-configured single model)\n\tconst model = options.model ?? modelRegistry.getModel() ?? undefined;\n\tlet modelFallbackMessage: string | undefined;\n\n\tif (!model) {\n\t\tmodelFallbackMessage = \"No model configured. Please run onboarding first.\";\n\t}\n\n\tlet thinkingLevel = options.thinkingLevel;\n\tif (thinkingLevel === undefined && hasExistingSession) {\n\t\tthinkingLevel = hasThinkingEntry\n\t\t\t? (existingSession.thinkingLevel as ThinkingLevel)\n\t\t\t: (settingsManager.getDefaultThinkingLevel() ?? DEFAULT_THINKING_LEVEL);\n\t}\n\tif (thinkingLevel === undefined) {\n\t\tthinkingLevel = settingsManager.getDefaultThinkingLevel() ?? DEFAULT_THINKING_LEVEL;\n\t}\n\tif (!model || !model.reasoning) {\n\t\tthinkingLevel = \"off\";\n\t}\n\tconst defaultActiveToolNames: ToolName[] = [\"read\", \"bash\", \"edit\", \"write\"];\n\tconst initialActiveToolNames: ToolName[] = options.tools\n\t\t? options.tools.map((t) => t.name).filter((n): n is ToolName => n in allTools)\n\t\t: defaultActiveToolNames;\n\tlet agent: Agent;\n\tconst convertToLlmWithBlockImages = (messages: AgentMessage[]): Message[] => {\n\t\tconst converted = convertToLlm(messages);\n\t\tif (!settingsManager.getBlockImages()) {\n\t\t\treturn converted;\n\t\t}\n\t\treturn converted.map((msg) => {\n\t\t\tif (msg.role === \"user\" || msg.role === \"toolResult\") {\n\t\t\t\tconst content = msg.content;\n\t\t\t\tif (Array.isArray(content)) {\n\t\t\t\t\tconst hasImages = content.some((c) => c.type === \"image\");\n\t\t\t\t\tif (hasImages) {\n\t\t\t\t\t\tconst filteredContent = content\n\t\t\t\t\t\t\t.map((c) =>\n\t\t\t\t\t\t\t\tc.type === \"image\" ? { type: \"text\" as const, text: \"Image reading is disabled.\" } : c,\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t.filter(\n\t\t\t\t\t\t\t\t(c, i, arr) =>\n\t\t\t\t\t\t\t\t\t!(\n\t\t\t\t\t\t\t\t\t\tc.type === \"text\" &&\n\t\t\t\t\t\t\t\t\t\tc.text === \"Image reading is disabled.\" &&\n\t\t\t\t\t\t\t\t\t\ti > 0 &&\n\t\t\t\t\t\t\t\t\t\tarr[i - 1].type === \"text\" &&\n\t\t\t\t\t\t\t\t\t\t(arr[i - 1] as { type: \"text\"; text: string }).text === \"Image reading is disabled.\"\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\treturn { ...msg, content: filteredContent };\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn msg;\n\t\t});\n\t};\n\tconst extensionRunnerRef: { current?: ExtensionRunner } = {};\n\tagent = new Agent({\n\t\tinitialState: {\n\t\t\tsystemPrompt: \"\",\n\t\t\tmodel,\n\t\t\tthinkingLevel,\n\t\t\ttools: [],\n\t\t},\n\t\tconvertToLlm: convertToLlmWithBlockImages,\n\t\tonPayload: async (payload, _model) => {\n\t\t\tconst runner = extensionRunnerRef.current;\n\t\t\tif (!runner?.hasHandlers(\"before_provider_request\")) {\n\t\t\t\treturn payload;\n\t\t\t}\n\t\t\treturn runner.emitBeforeProviderRequest(payload);\n\t\t},\n\t\tsessionId: sessionManager.getSessionId(),\n\t\ttransformContext: async (messages) => {\n\t\t\tconst runner = extensionRunnerRef.current;\n\t\t\tif (!runner) return messages;\n\t\t\treturn runner.emitContext(messages);\n\t\t},\n\t\tsteeringMode: settingsManager.getSteeringMode(),\n\t\tfollowUpMode: settingsManager.getFollowUpMode(),\n\t\ttransport: settingsManager.getTransport(),\n\t\tthinkingBudgets: settingsManager.getThinkingBudgets(),\n\t\tmaxRetryDelayMs: settingsManager.getRetrySettings().maxDelayMs,\n\t\tgetApiKey: async (_provider) => {\n\t\t\tconst key = modelRegistry.getApiKey();\n\t\t\tif (!key) {\n\t\t\t\tthrow new Error(\"No API key configured. Please check your configuration.\");\n\t\t\t}\n\t\t\treturn key;\n\t\t},\n\t});\n\tif (hasExistingSession) {\n\t\tagent.replaceMessages(existingSession.messages);\n\t\tif (!hasThinkingEntry) {\n\t\t\tsessionManager.appendThinkingLevelChange(thinkingLevel);\n\t\t}\n\t} else {\n\t\tif (model) {\n\t\t\tsessionManager.appendModelChange(model.provider, model.id);\n\t\t}\n\t\tsessionManager.appendThinkingLevelChange(thinkingLevel);\n\t}\n\tconst session = new AgentSession({\n\t\tagent,\n\t\tsessionManager,\n\t\tsettingsManager,\n\t\tcwd,\n\t\tscopedModels: options.scopedModels,\n\t\tresourceLoader,\n\t\tcustomTools: options.customTools,\n\t\tmodelRegistry,\n\t\tinitialActiveToolNames,\n\t\textensionRunnerRef,\n\t});\n\tconst extensionsResult = resourceLoader.getExtensions();\n\treturn {\n\t\tsession,\n\t\textensionsResult,\n\t\tmodelFallbackMessage,\n\t};\n}\n"]}
1
+ {"version":3,"file":"sdk.js","sourceRoot":"","sources":["../../src/core/sdk.ts"],"names":[],"mappings":"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","sourcesContent":["import { join } from \"node:path\";\nimport { Agent, type AgentMessage, type ThinkingLevel } from \"@boxiaolanya2008/pi-agent-core\";\nimport type { Message, Model } from \"@boxiaolanya2008/pi-ai\";\nimport { getAgentDir } from \"../config.js\";\nimport { AgentSession } from \"./agent-session.js\";\nimport { AuthStorage } from \"./auth-storage.js\";\nimport { DEFAULT_THINKING_LEVEL } from \"./defaults.js\";\nimport type { ExtensionRunner, LoadExtensionsResult, ToolDefinition } from \"./extensions/index.js\";\nimport { convertToLlm } from \"./messages.js\";\nimport { ModelRegistry } from \"./model-registry.js\";\nimport type { ResourceLoader } from \"./resource-loader.js\";\nimport { DefaultResourceLoader } from \"./resource-loader.js\";\nimport { SessionManager } from \"./session-manager.js\";\nimport { SettingsManager } from \"./settings-manager.js\";\nimport { time } from \"./timings.js\";\nimport {\n\tallTools,\n\tbashTool,\n\tcodingTools,\n\tcreateBashTool,\n\tcreateCodingTools,\n\tcreateEditTool,\n\tcreateFindTool,\n\tcreateGrepTool,\n\tcreateLsTool,\n\tcreateReadOnlyTools,\n\tcreateReadTool,\n\tcreateWriteTool,\n\teditTool,\n\tfindTool,\n\tgrepTool,\n\tlsTool,\n\treadOnlyTools,\n\treadTool,\n\ttype Tool,\n\ttype ToolName,\n\twriteTool,\n} from \"./tools/index.js\";\nexport interface CreateAgentSessionOptions {\n\tcwd?: string;\n\tagentDir?: string;\n\tauthStorage?: AuthStorage;\n\tmodelRegistry?: ModelRegistry;\n\tmodel?: Model<any>;\n\tthinkingLevel?: ThinkingLevel;\n\tscopedModels?: Array<{ model: Model<any>; thinkingLevel?: ThinkingLevel }>;\n\ttools?: Tool[];\n\tcustomTools?: ToolDefinition[];\n\tresourceLoader?: ResourceLoader;\n\tsessionManager?: SessionManager;\n\tsettingsManager?: SettingsManager;\n}\nexport interface CreateAgentSessionResult {\n\tsession: AgentSession;\n\textensionsResult: LoadExtensionsResult;\n\tmodelFallbackMessage?: string;\n}\nexport type {\n\tExtensionAPI,\n\tExtensionCommandContext,\n\tExtensionContext,\n\tExtensionFactory,\n\tSlashCommandInfo,\n\tSlashCommandLocation,\n\tSlashCommandSource,\n\tToolDefinition,\n} from \"./extensions/index.js\";\nexport type { PromptTemplate } from \"./prompt-templates.js\";\nexport type { Skill } from \"./skills.js\";\nexport type { Tool } from \"./tools/index.js\";\nexport {\n\treadTool,\n\tbashTool,\n\teditTool,\n\twriteTool,\n\tgrepTool,\n\tfindTool,\n\tlsTool,\n\tcodingTools,\n\treadOnlyTools,\n\tallTools as allBuiltInTools,\n\tcreateCodingTools,\n\tcreateReadOnlyTools,\n\tcreateReadTool,\n\tcreateBashTool,\n\tcreateEditTool,\n\tcreateWriteTool,\n\tcreateGrepTool,\n\tcreateFindTool,\n\tcreateLsTool,\n};\nfunction getDefaultAgentDir(): string {\n\treturn getAgentDir();\n}\nexport async function createAgentSession(options: CreateAgentSessionOptions = {}): Promise<CreateAgentSessionResult> {\n\tconst cwd = options.cwd ?? process.cwd();\n\tconst agentDir = options.agentDir ?? getDefaultAgentDir();\n\tlet resourceLoader = options.resourceLoader;\n\tconst authPath = options.agentDir ? join(agentDir, \"auth.json\") : undefined;\n\tconst modelsPath = options.agentDir ? join(agentDir, \"models.json\") : undefined;\n\tconst authStorage = options.authStorage ?? AuthStorage.create(authPath);\n\tconst modelRegistry = options.modelRegistry ?? new ModelRegistry(authStorage, modelsPath);\n\tconst settingsManager = options.settingsManager ?? SettingsManager.create(cwd, agentDir);\n\tconst sessionManager = options.sessionManager ?? SessionManager.create(cwd);\n\tif (!resourceLoader) {\n\t\tresourceLoader = new DefaultResourceLoader({ cwd, agentDir, settingsManager });\n\t\tawait resourceLoader.reload();\n\t\ttime(\"resourceLoader.reload\");\n\t}\n\tconst existingSession = sessionManager.buildSessionContext();\n\tconst hasExistingSession = existingSession.messages.length > 0;\n\tconst hasThinkingEntry = sessionManager.getBranch().some((entry) => entry.type === \"thinking_level_change\");\n\n\t// Get model from registry (user-configured single model)\n\tconst model = options.model ?? modelRegistry.getModel() ?? undefined;\n\tlet modelFallbackMessage: string | undefined;\n\n\tif (!model) {\n\t\tmodelFallbackMessage = \"No model configured. Please run onboarding first.\";\n\t}\n\n\tlet thinkingLevel = options.thinkingLevel;\n\tif (thinkingLevel === undefined && hasExistingSession) {\n\t\tthinkingLevel = hasThinkingEntry\n\t\t\t? (existingSession.thinkingLevel as ThinkingLevel)\n\t\t\t: (settingsManager.getDefaultThinkingLevel() ?? DEFAULT_THINKING_LEVEL);\n\t}\n\tif (thinkingLevel === undefined) {\n\t\tthinkingLevel = settingsManager.getDefaultThinkingLevel() ?? DEFAULT_THINKING_LEVEL;\n\t}\n\tif (!model || !model.reasoning) {\n\t\tthinkingLevel = \"off\";\n\t}\n\tconst defaultActiveToolNames: ToolName[] = [\"read\", \"bash\", \"edit\", \"write\"];\n\tconst initialActiveToolNames: ToolName[] = options.tools\n\t\t? options.tools.map((t) => t.name).filter((n): n is ToolName => n in allTools)\n\t\t: defaultActiveToolNames;\n\tlet agent: Agent;\n\tconst convertToLlmWithBlockImages = (messages: AgentMessage[]): Message[] => {\n\t\tconst converted = convertToLlm(messages);\n\t\tif (!settingsManager.getBlockImages()) {\n\t\t\treturn converted;\n\t\t}\n\t\treturn converted.map((msg) => {\n\t\t\tif (msg.role === \"user\" || msg.role === \"toolResult\") {\n\t\t\t\tconst content = msg.content;\n\t\t\t\tif (Array.isArray(content)) {\n\t\t\t\t\tconst hasImages = content.some((c) => c.type === \"image\");\n\t\t\t\t\tif (hasImages) {\n\t\t\t\t\t\tconst filteredContent = content\n\t\t\t\t\t\t\t.map((c) =>\n\t\t\t\t\t\t\t\tc.type === \"image\" ? { type: \"text\" as const, text: \"Image reading is disabled.\" } : c,\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t.filter(\n\t\t\t\t\t\t\t\t(c, i, arr) =>\n\t\t\t\t\t\t\t\t\t!(\n\t\t\t\t\t\t\t\t\t\tc.type === \"text\" &&\n\t\t\t\t\t\t\t\t\t\tc.text === \"Image reading is disabled.\" &&\n\t\t\t\t\t\t\t\t\t\ti > 0 &&\n\t\t\t\t\t\t\t\t\t\tarr[i - 1].type === \"text\" &&\n\t\t\t\t\t\t\t\t\t\t(arr[i - 1] as { type: \"text\"; text: string }).text === \"Image reading is disabled.\"\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\treturn { ...msg, content: filteredContent };\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn msg;\n\t\t});\n\t};\n\tconst extensionRunnerRef: { current?: ExtensionRunner } = {};\n\tagent = new Agent({\n\t\tinitialState: {\n\t\t\tsystemPrompt: \"\",\n\t\t\tmodel,\n\t\t\tthinkingLevel,\n\t\t\ttools: [],\n\t\t},\n\t\tconvertToLlm: convertToLlmWithBlockImages,\n\t\tonPayload: async (payload, _model) => {\n\t\t\tconst runner = extensionRunnerRef.current;\n\t\t\tif (!runner?.hasHandlers(\"before_provider_request\")) {\n\t\t\t\treturn payload;\n\t\t\t}\n\t\t\treturn runner.emitBeforeProviderRequest(payload);\n\t\t},\n\t\tsessionId: sessionManager.getSessionId(),\n\t\ttransformContext: async (messages) => {\n\t\t\tconst runner = extensionRunnerRef.current;\n\t\t\tif (!runner) return messages;\n\t\t\treturn runner.emitContext(messages);\n\t\t},\n\t\tsteeringMode: settingsManager.getSteeringMode(),\n\t\tfollowUpMode: settingsManager.getFollowUpMode(),\n\t\ttransport: settingsManager.getTransport(),\n\t\tthinkingBudgets: settingsManager.getThinkingBudgets(),\n\t\tmaxRetryDelayMs: settingsManager.getRetrySettings().maxDelayMs,\n\t\tgetApiKey: async (_provider) => {\n\t\t\tconst key = modelRegistry.getApiKey();\n\t\t\tif (!key) {\n\t\t\t\tthrow new Error(\"No API key configured. Please check your configuration.\");\n\t\t\t}\n\t\t\treturn key;\n\t\t},\n\t});\n\tif (hasExistingSession) {\n\t\tagent.replaceMessages(existingSession.messages);\n\t\tif (!hasThinkingEntry) {\n\t\t\tsessionManager.appendThinkingLevelChange(thinkingLevel);\n\t\t}\n\t} else {\n\t\tif (model) {\n\t\t\tsessionManager.appendModelChange(model.provider, model.id);\n\t\t}\n\t\tsessionManager.appendThinkingLevelChange(thinkingLevel);\n\t}\n\tconst session = new AgentSession({\n\t\tagent,\n\t\tsessionManager,\n\t\tsettingsManager,\n\t\tcwd,\n\t\tscopedModels: options.scopedModels,\n\t\tresourceLoader,\n\t\tcustomTools: options.customTools,\n\t\tmodelRegistry,\n\t\tinitialActiveToolNames,\n\t\textensionRunnerRef,\n\t});\n\tconst extensionsResult = resourceLoader.getExtensions();\n\treturn {\n\t\tsession,\n\t\textensionsResult,\n\t\tmodelFallbackMessage,\n\t};\n}\n"]}
@@ -1,5 +1,5 @@
1
- import type { AgentMessage } from "@mariozechner/pi-agent-core";
2
- import type { ImageContent, Message, TextContent } from "@mariozechner/pi-ai";
1
+ import type { AgentMessage } from "@boxiaolanya2008/pi-agent-core";
2
+ import type { ImageContent, Message, TextContent } from "@boxiaolanya2008/pi-ai";
3
3
  import { type BashExecutionMessage, type CustomMessage } from "./messages.js";
4
4
  export declare const CURRENT_SESSION_VERSION = 3;
5
5
  export interface SessionHeader {