@pasko70/pibo 2.0.0 → 2.2.0

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 (388) hide show
  1. package/dist/agent-runtime/capabilities.js +68 -0
  2. package/dist/agent-runtime/context-build.js +13 -5
  3. package/dist/agent-runtime/portable-history.js +526 -0
  4. package/dist/agent-runtime/profile-validation.js +13 -7
  5. package/dist/agent-runtime/resource-files.js +26 -10
  6. package/dist/agent-runtime/resource-service.js +216 -13
  7. package/dist/agent-runtimes/codex-native/adapter.js +38 -1
  8. package/dist/agent-runtimes/codex-native/auth.js +24 -3
  9. package/dist/agent-runtimes/codex-native/portable-history.js +73 -0
  10. package/dist/agent-runtimes/codex-native/process.js +38 -27
  11. package/dist/agent-runtimes/codex-native/resource-delivery.js +39 -16
  12. package/dist/agent-runtimes/codex-native/turn.js +68 -5
  13. package/dist/agent-runtimes/omp/adapter.js +616 -0
  14. package/dist/agent-runtimes/omp/auth.js +109 -0
  15. package/dist/agent-runtimes/omp/client.js +460 -0
  16. package/dist/agent-runtimes/omp/config.js +188 -0
  17. package/dist/agent-runtimes/omp/history.js +108 -0
  18. package/dist/agent-runtimes/omp/host-tools.js +201 -0
  19. package/dist/agent-runtimes/omp/models.js +86 -0
  20. package/dist/agent-runtimes/omp/process.js +299 -0
  21. package/dist/agent-runtimes/omp/protocol-types.js +17 -0
  22. package/dist/agent-runtimes/omp/resource-delivery.js +228 -0
  23. package/dist/agent-runtimes/omp/thread.js +141 -0
  24. package/dist/agent-runtimes/omp/turn.js +325 -0
  25. package/dist/agent-runtimes/pi/adapter.js +32 -1
  26. package/dist/agent-runtimes/pi/auth.js +34 -29
  27. package/dist/agent-runtimes/pi/credentials.js +43 -0
  28. package/dist/agent-runtimes/pi/model-catalog.js +7 -3
  29. package/dist/agent-runtimes/pi/portable-history.js +99 -0
  30. package/dist/agent-runtimes/pi/routed-session.js +1 -1
  31. package/dist/agent-runtimes/pi/runtime.js +31 -15
  32. package/dist/apps/chat/agent-profiles.js +1 -0
  33. package/dist/apps/chat/agent-store.js +20 -7
  34. package/dist/apps/chat/chat-files.js +19 -6
  35. package/dist/apps/chat/chat-request-normalizers.js +13 -0
  36. package/dist/apps/chat/web-app.js +55 -6
  37. package/dist/apps/chat-ui/assets/{apl-14BqhLYK.js → apl-gfMMiTNf.js} +1 -1
  38. package/dist/apps/chat-ui/assets/asciiarmor-C_eisQCp.js +1 -0
  39. package/dist/apps/{context-files-ui/assets/asn1-Bg4FbdCg.js → chat-ui/assets/asn1-DCl_8MCW.js} +1 -1
  40. package/dist/apps/{context-files-ui/assets/asterisk-B2MO-X4d.js → chat-ui/assets/asterisk-BEn0Cwpx.js} +1 -1
  41. package/dist/apps/chat-ui/assets/clike-D_6L3tnO.js +1 -0
  42. package/dist/apps/chat-ui/assets/cmake-84nbDH0I.js +1 -0
  43. package/dist/apps/chat-ui/assets/cobol-DHLQUbN7.js +1 -0
  44. package/dist/apps/chat-ui/assets/coffeescript-De_zI4J0.js +1 -0
  45. package/dist/apps/chat-ui/assets/commonlisp-DgAKBe0r.js +1 -0
  46. package/dist/apps/chat-ui/assets/crystal-Bsdphhtm.js +1 -0
  47. package/dist/apps/chat-ui/assets/css-CnaYoQib.js +1 -0
  48. package/dist/apps/chat-ui/assets/{d-TPqSVaHM.js → d-DWkQyNnU.js} +1 -1
  49. package/dist/apps/{context-files-ui/assets/dist-DxEGebCR.js → chat-ui/assets/dist-BB8loWTa.js} +1 -1
  50. package/dist/apps/chat-ui/assets/dist-BJ-TIk3N.js +1 -0
  51. package/dist/apps/chat-ui/assets/dist-CBPDkWd4.js +1 -0
  52. package/dist/apps/chat-ui/assets/dist-CHInEWhr.js +1 -0
  53. package/dist/apps/chat-ui/assets/dist-CqM4On9D.js +13 -0
  54. package/dist/apps/chat-ui/assets/dist-CswnpKik.js +1 -0
  55. package/dist/apps/{context-files-ui/assets/dist-B7gXtTZC.js → chat-ui/assets/dist-CwS16H7k.js} +1 -1
  56. package/dist/apps/chat-ui/assets/dist-DHvUPfrF.js +1 -0
  57. package/dist/apps/chat-ui/assets/dist-DLJCGrGQ.js +1 -0
  58. package/dist/apps/chat-ui/assets/{dist-DLMjd26T.js → dist-DMiglryg.js} +1 -1
  59. package/dist/apps/chat-ui/assets/dist-DTeLDijr.js +9 -0
  60. package/dist/apps/chat-ui/assets/{dist-DKoyMSNr.js → dist-DpF08Yd7.js} +1 -1
  61. package/dist/apps/chat-ui/assets/dist-LCx98fA_.js +11 -0
  62. package/dist/apps/chat-ui/assets/{dist-DotDq_kD.js → dist-RKTRnzGb.js} +1 -1
  63. package/dist/apps/chat-ui/assets/dist-S3zJGntM.js +1 -0
  64. package/dist/apps/{context-files-ui/assets/dist-BkUONE3N.js → chat-ui/assets/dist-XVYGiB-c.js} +1 -1
  65. package/dist/apps/chat-ui/assets/dist-eddbbGyw.js +1 -0
  66. package/dist/apps/chat-ui/assets/dist-fPhZsAUX.js +1 -0
  67. package/dist/apps/chat-ui/assets/dist-mpRGeo_R.js +2 -0
  68. package/dist/apps/chat-ui/assets/{dist-sZgJkWZb.js → dist-nU3BVpFi.js} +1 -1
  69. package/dist/apps/chat-ui/assets/{dockerfile-CJb2sekW.js → dockerfile-DJkHQgkl.js} +1 -1
  70. package/dist/apps/chat-ui/assets/{dylan-08Azy1NK.js → dylan-BCDoL_-p.js} +1 -1
  71. package/dist/apps/chat-ui/assets/{ecl-dhxjHL8y.js → ecl-BVIeWmwY.js} +1 -1
  72. package/dist/apps/{context-files-ui/assets/erlang-BD5LkVkR.js → chat-ui/assets/erlang-BV0c4Hdn.js} +1 -1
  73. package/dist/apps/chat-ui/assets/{factor-B2EMQZkP.js → factor-LKH5gN8L.js} +1 -1
  74. package/dist/apps/chat-ui/assets/groovy-CUpZ7dEl.js +1 -0
  75. package/dist/apps/chat-ui/assets/{haxe-BJVKtprM.js → haxe-DjVOVvNP.js} +1 -1
  76. package/dist/apps/chat-ui/assets/index-CQuka3bs.js +226 -0
  77. package/dist/apps/chat-ui/assets/index-DUXboQnI.css +1 -0
  78. package/dist/apps/chat-ui/assets/javascript-DoL9Wb-Q.js +1 -0
  79. package/dist/apps/chat-ui/assets/{lua-BxuTHaF7.js → lua-CiA1ziua.js} +1 -1
  80. package/dist/apps/chat-ui/assets/{mumps-Ds_ZaumL.js → mumps-BSzj6Xyz.js} +1 -1
  81. package/dist/apps/{context-files-ui/assets/nsis-DOo3SJmd.js → chat-ui/assets/nsis-CfSuhXs5.js} +1 -1
  82. package/dist/apps/chat-ui/assets/{ntriples-DLHGTvHs.js → ntriples-B9h1VB_g.js} +1 -1
  83. package/dist/apps/chat-ui/assets/perl-BkSkiI9m.js +1 -0
  84. package/dist/apps/chat-ui/assets/{powershell-B4IPkVxR.js → powershell-BcIto6Sf.js} +1 -1
  85. package/dist/apps/{context-files-ui/assets/pug-QU72BPAa.js → chat-ui/assets/pug-Gsm0M45u.js} +1 -1
  86. package/dist/apps/chat-ui/assets/puppet-BZyAS7I4.js +1 -0
  87. package/dist/apps/chat-ui/assets/python-B_1Jd8HM.js +1 -0
  88. package/dist/apps/chat-ui/assets/r-CxDmU1I4.js +1 -0
  89. package/dist/apps/chat-ui/assets/ruby-BjXV7-Qa.js +1 -0
  90. package/dist/apps/chat-ui/assets/scheme-D9qYN0V5.js +1 -0
  91. package/dist/apps/chat-ui/assets/{shell-BjiMLAaM.js → shell-DwuoZtxw.js} +1 -1
  92. package/dist/apps/chat-ui/assets/{simple-mode-DnMbQuKW.js → simple-mode-DXiLM1-G.js} +1 -1
  93. package/dist/apps/chat-ui/assets/sql-DuQMFDvy.js +1 -0
  94. package/dist/apps/chat-ui/assets/{stex-BCRT8IJ3.js → stex-DNzd62Q_.js} +1 -1
  95. package/dist/apps/chat-ui/assets/{stylus-CARoeVE9.js → stylus-BOVgKnng.js} +1 -1
  96. package/dist/apps/chat-ui/assets/textile-C4jVoHG1.js +1 -0
  97. package/dist/apps/chat-ui/assets/tiki-AK6FwT8q.js +1 -0
  98. package/dist/apps/chat-ui/assets/toml-BPTmHmyx.js +1 -0
  99. package/dist/apps/chat-ui/assets/{ttcn-GvRgs2AT.js → ttcn-PPSTk1ow.js} +1 -1
  100. package/dist/apps/chat-ui/assets/{ttcn-cfg-CGCXz7Vo.js → ttcn-cfg-2b4Gb5sE.js} +1 -1
  101. package/dist/apps/chat-ui/assets/turtle-Cx3rYX2g.js +1 -0
  102. package/dist/apps/chat-ui/assets/{verilog-DVCHmufx.js → verilog-7LoJAqYT.js} +1 -1
  103. package/dist/apps/chat-ui/assets/vhdl-kS471soi.js +1 -0
  104. package/dist/apps/{context-files-ui/assets/xquery-5f0hn7cg.js → chat-ui/assets/xquery-BKJx4mf9.js} +1 -1
  105. package/dist/apps/chat-ui/assets/z80-Co3PbHdE.js +1 -0
  106. package/dist/apps/chat-ui/index.html +5 -3
  107. package/dist/apps/chat-vscode-web/assets/index-CF1-9PKU.css +2 -0
  108. package/dist/apps/chat-vscode-web/assets/index-Dp1TzeRL.js +41 -0
  109. package/dist/apps/chat-vscode-web/index.html +2 -2
  110. package/dist/apps/context-files-ui/assets/{apl-14BqhLYK.js → apl-gfMMiTNf.js} +1 -1
  111. package/dist/apps/context-files-ui/assets/asciiarmor-C_eisQCp.js +1 -0
  112. package/dist/apps/{chat-ui/assets/asn1-Bg4FbdCg.js → context-files-ui/assets/asn1-DCl_8MCW.js} +1 -1
  113. package/dist/apps/{chat-ui/assets/asterisk-B2MO-X4d.js → context-files-ui/assets/asterisk-BEn0Cwpx.js} +1 -1
  114. package/dist/apps/context-files-ui/assets/clike-D_6L3tnO.js +1 -0
  115. package/dist/apps/context-files-ui/assets/cmake-84nbDH0I.js +1 -0
  116. package/dist/apps/context-files-ui/assets/cobol-DHLQUbN7.js +1 -0
  117. package/dist/apps/context-files-ui/assets/coffeescript-De_zI4J0.js +1 -0
  118. package/dist/apps/context-files-ui/assets/commonlisp-DgAKBe0r.js +1 -0
  119. package/dist/apps/context-files-ui/assets/crystal-Bsdphhtm.js +1 -0
  120. package/dist/apps/context-files-ui/assets/css-CnaYoQib.js +1 -0
  121. package/dist/apps/context-files-ui/assets/{d-TPqSVaHM.js → d-DWkQyNnU.js} +1 -1
  122. package/dist/apps/{chat-ui/assets/dist-C6LPDFXU.js → context-files-ui/assets/dist-BAqbgxUS.js} +1 -1
  123. package/dist/apps/context-files-ui/assets/dist-BJ-TIk3N.js +1 -0
  124. package/dist/apps/context-files-ui/assets/dist-BcauuFwf.js +1 -0
  125. package/dist/apps/context-files-ui/assets/dist-BecMXs79.js +1 -0
  126. package/dist/apps/context-files-ui/assets/{dist-C-Jm45P4.js → dist-Ci2NSlf1.js} +1 -1
  127. package/dist/apps/context-files-ui/assets/dist-CqM4On9D.js +13 -0
  128. package/dist/apps/context-files-ui/assets/dist-CswnpKik.js +1 -0
  129. package/dist/apps/{chat-ui/assets/dist-I26VB0QO.js → context-files-ui/assets/dist-D-xpsbZI.js} +1 -1
  130. package/dist/apps/context-files-ui/assets/dist-DHvUPfrF.js +1 -0
  131. package/dist/apps/context-files-ui/assets/dist-DLJCGrGQ.js +1 -0
  132. package/dist/apps/context-files-ui/assets/{dist-DLMjd26T.js → dist-DMiglryg.js} +1 -1
  133. package/dist/apps/context-files-ui/assets/dist-DTeLDijr.js +9 -0
  134. package/dist/apps/context-files-ui/assets/{dist-DKoyMSNr.js → dist-DpF08Yd7.js} +1 -1
  135. package/dist/apps/context-files-ui/assets/dist-LCx98fA_.js +11 -0
  136. package/dist/apps/context-files-ui/assets/{dist-DotDq_kD.js → dist-RKTRnzGb.js} +1 -1
  137. package/dist/apps/context-files-ui/assets/dist-S3zJGntM.js +1 -0
  138. package/dist/apps/{chat-ui/assets/dist-BkUONE3N.js → context-files-ui/assets/dist-XVYGiB-c.js} +1 -1
  139. package/dist/apps/context-files-ui/assets/dist-eddbbGyw.js +1 -0
  140. package/dist/apps/context-files-ui/assets/dist-fPhZsAUX.js +1 -0
  141. package/dist/apps/context-files-ui/assets/dist-mpRGeo_R.js +2 -0
  142. package/dist/apps/context-files-ui/assets/{dockerfile-CJb2sekW.js → dockerfile-DJkHQgkl.js} +1 -1
  143. package/dist/apps/context-files-ui/assets/{dylan-08Azy1NK.js → dylan-BCDoL_-p.js} +1 -1
  144. package/dist/apps/context-files-ui/assets/{ecl-dhxjHL8y.js → ecl-BVIeWmwY.js} +1 -1
  145. package/dist/apps/{chat-ui/assets/erlang-BD5LkVkR.js → context-files-ui/assets/erlang-BV0c4Hdn.js} +1 -1
  146. package/dist/apps/context-files-ui/assets/{factor-B2EMQZkP.js → factor-LKH5gN8L.js} +1 -1
  147. package/dist/apps/context-files-ui/assets/groovy-CUpZ7dEl.js +1 -0
  148. package/dist/apps/context-files-ui/assets/{haxe-BJVKtprM.js → haxe-DjVOVvNP.js} +1 -1
  149. package/dist/apps/context-files-ui/assets/index-CkWXlBNn.js +191 -0
  150. package/dist/apps/context-files-ui/assets/{index-Cs4XQITe.css → index-D8TsUizd.css} +1 -1
  151. package/dist/apps/context-files-ui/assets/javascript-DoL9Wb-Q.js +1 -0
  152. package/dist/apps/context-files-ui/assets/{lua-BxuTHaF7.js → lua-CiA1ziua.js} +1 -1
  153. package/dist/apps/context-files-ui/assets/{mumps-Ds_ZaumL.js → mumps-BSzj6Xyz.js} +1 -1
  154. package/dist/apps/{chat-ui/assets/nsis-DOo3SJmd.js → context-files-ui/assets/nsis-CfSuhXs5.js} +1 -1
  155. package/dist/apps/context-files-ui/assets/{ntriples-DLHGTvHs.js → ntriples-B9h1VB_g.js} +1 -1
  156. package/dist/apps/context-files-ui/assets/perl-BkSkiI9m.js +1 -0
  157. package/dist/apps/context-files-ui/assets/{powershell-B4IPkVxR.js → powershell-BcIto6Sf.js} +1 -1
  158. package/dist/apps/{chat-ui/assets/pug-QU72BPAa.js → context-files-ui/assets/pug-Gsm0M45u.js} +1 -1
  159. package/dist/apps/context-files-ui/assets/puppet-BZyAS7I4.js +1 -0
  160. package/dist/apps/context-files-ui/assets/python-B_1Jd8HM.js +1 -0
  161. package/dist/apps/context-files-ui/assets/r-CxDmU1I4.js +1 -0
  162. package/dist/apps/context-files-ui/assets/ruby-BjXV7-Qa.js +1 -0
  163. package/dist/apps/context-files-ui/assets/scheme-D9qYN0V5.js +1 -0
  164. package/dist/apps/context-files-ui/assets/{shell-BjiMLAaM.js → shell-DwuoZtxw.js} +1 -1
  165. package/dist/apps/context-files-ui/assets/{simple-mode-DnMbQuKW.js → simple-mode-DXiLM1-G.js} +1 -1
  166. package/dist/apps/context-files-ui/assets/sql-DuQMFDvy.js +1 -0
  167. package/dist/apps/context-files-ui/assets/{stex-BCRT8IJ3.js → stex-DNzd62Q_.js} +1 -1
  168. package/dist/apps/context-files-ui/assets/{stylus-CARoeVE9.js → stylus-BOVgKnng.js} +1 -1
  169. package/dist/apps/context-files-ui/assets/textile-C4jVoHG1.js +1 -0
  170. package/dist/apps/context-files-ui/assets/tiki-AK6FwT8q.js +1 -0
  171. package/dist/apps/context-files-ui/assets/toml-BPTmHmyx.js +1 -0
  172. package/dist/apps/context-files-ui/assets/{ttcn-GvRgs2AT.js → ttcn-PPSTk1ow.js} +1 -1
  173. package/dist/apps/context-files-ui/assets/{ttcn-cfg-CGCXz7Vo.js → ttcn-cfg-2b4Gb5sE.js} +1 -1
  174. package/dist/apps/context-files-ui/assets/turtle-Cx3rYX2g.js +1 -0
  175. package/dist/apps/context-files-ui/assets/{verilog-DVCHmufx.js → verilog-7LoJAqYT.js} +1 -1
  176. package/dist/apps/context-files-ui/assets/vhdl-kS471soi.js +1 -0
  177. package/dist/apps/{chat-ui/assets/xquery-5f0hn7cg.js → context-files-ui/assets/xquery-BKJx4mf9.js} +1 -1
  178. package/dist/apps/context-files-ui/assets/z80-Co3PbHdE.js +1 -0
  179. package/dist/apps/context-files-ui/index.html +5 -3
  180. package/dist/apps/vscode-artifacts/latest.vsix +0 -0
  181. package/dist/apps/vscode-artifacts/pibo-vscode-ext-2.2.0.vsix +0 -0
  182. package/dist/auth/better-auth.js +223 -30
  183. package/dist/auth/cli.js +10 -1
  184. package/dist/auth/machine-keys.js +8 -4
  185. package/dist/auth/openai-codex-usage.js +4 -4
  186. package/dist/cli-session/fakeSessionSource.js +2 -2
  187. package/dist/cli-session/localSessionSource.js +2 -2
  188. package/dist/cli.js +3 -1
  189. package/dist/config/config.js +9 -4
  190. package/dist/core/compaction-prompt.js +3 -1
  191. package/dist/core/context-build.js +1 -0
  192. package/dist/core/pibo-home.js +24 -1
  193. package/dist/core/private-path.js +146 -0
  194. package/dist/core/profiles.js +8 -0
  195. package/dist/core/sensitive-data-redaction.js +36 -0
  196. package/dist/core/session-model.js +1 -0
  197. package/dist/core/session-router.js +219 -29
  198. package/dist/data/pibo-store.js +5 -1
  199. package/dist/gateway/server.js +9 -0
  200. package/dist/index.js +1 -1
  201. package/dist/plugins/builtin.js +4 -2
  202. package/dist/plugins/context-files.js +11 -0
  203. package/dist/plugins/omp.js +57 -0
  204. package/dist/plugins/registry.js +1 -0
  205. package/dist/providers/openai-gpt56.js +0 -11
  206. package/dist/reliability/store.js +5 -1
  207. package/dist/resources/lifecycle.js +13 -3
  208. package/dist/runs/resource-isolation.js +159 -8
  209. package/dist/runs/tools.js +44 -1
  210. package/dist/sessions/pibo-data-store.js +3 -0
  211. package/dist/tools/codex-browser-node-repl.js +4 -2
  212. package/dist/tools/codex-browser.js +1 -1
  213. package/dist/tools/codex-image-generation.js +4 -4
  214. package/dist/tools/runtime/node-backend.js +4 -1
  215. package/dist/tools/runtime/python-backend.js +4 -1
  216. package/dist/web-annotations/api.js +22 -2
  217. package/npm-shrinkwrap.json +16707 -0
  218. package/package.json +19 -14
  219. package/dist/apps/chat-ui/assets/asciiarmor-WLvjqI7d.js +0 -1
  220. package/dist/apps/chat-ui/assets/clike-CjmcUpt6.js +0 -1
  221. package/dist/apps/chat-ui/assets/cmake-i2VDNaRq.js +0 -1
  222. package/dist/apps/chat-ui/assets/cobol-BwO6DF08.js +0 -1
  223. package/dist/apps/chat-ui/assets/coffeescript-BtivDvRz.js +0 -1
  224. package/dist/apps/chat-ui/assets/commonlisp-DFkEQdLP.js +0 -1
  225. package/dist/apps/chat-ui/assets/crystal-CU0NkcVL.js +0 -1
  226. package/dist/apps/chat-ui/assets/css-CbMZAQ1W.js +0 -1
  227. package/dist/apps/chat-ui/assets/dist-9v2ZXT6V.js +0 -11
  228. package/dist/apps/chat-ui/assets/dist-B1LVAytl.js +0 -9
  229. package/dist/apps/chat-ui/assets/dist-B5PTVnox.js +0 -1
  230. package/dist/apps/chat-ui/assets/dist-B5ZAfwf5.js +0 -1
  231. package/dist/apps/chat-ui/assets/dist-D1KyNDg5.js +0 -13
  232. package/dist/apps/chat-ui/assets/dist-DVtXxfHc.js +0 -1
  233. package/dist/apps/chat-ui/assets/dist-DW4Qrfbd.js +0 -2
  234. package/dist/apps/chat-ui/assets/dist-DmbsHdMC.js +0 -1
  235. package/dist/apps/chat-ui/assets/dist-DyvwuSFO.js +0 -1
  236. package/dist/apps/chat-ui/assets/dist-QQuDy4KA.js +0 -1
  237. package/dist/apps/chat-ui/assets/dist-RtHbJRPV.js +0 -1
  238. package/dist/apps/chat-ui/assets/groovy-Cmduloe1.js +0 -1
  239. package/dist/apps/chat-ui/assets/index-BPbNvcZe.css +0 -1
  240. package/dist/apps/chat-ui/assets/index-CIOf2uL2.js +0 -237
  241. package/dist/apps/chat-ui/assets/javascript-C5pDVaoP.js +0 -1
  242. package/dist/apps/chat-ui/assets/perl-D6YJObi_.js +0 -1
  243. package/dist/apps/chat-ui/assets/puppet-B_0GFuyD.js +0 -1
  244. package/dist/apps/chat-ui/assets/python-Cs7sNzy_.js +0 -1
  245. package/dist/apps/chat-ui/assets/r-CN5s4f3o.js +0 -1
  246. package/dist/apps/chat-ui/assets/ruby-BVPradRk.js +0 -1
  247. package/dist/apps/chat-ui/assets/scheme-CvNgHAnh.js +0 -1
  248. package/dist/apps/chat-ui/assets/sql-DYI2GwJR.js +0 -1
  249. package/dist/apps/chat-ui/assets/textile-Yg_UWn-t.js +0 -1
  250. package/dist/apps/chat-ui/assets/tiki-CC_ic8g0.js +0 -1
  251. package/dist/apps/chat-ui/assets/toml-B7gGzVkJ.js +0 -1
  252. package/dist/apps/chat-ui/assets/turtle-CwIpz2yy.js +0 -1
  253. package/dist/apps/chat-ui/assets/vhdl-BGDk4f1d.js +0 -1
  254. package/dist/apps/chat-ui/assets/z80-B7Dfb4UO.js +0 -1
  255. package/dist/apps/chat-vscode-web/assets/index-1ivRyjFs.js +0 -41
  256. package/dist/apps/chat-vscode-web/assets/index-Dupu1DzQ.css +0 -2
  257. package/dist/apps/context-files-ui/assets/asciiarmor-WLvjqI7d.js +0 -1
  258. package/dist/apps/context-files-ui/assets/clike-CjmcUpt6.js +0 -1
  259. package/dist/apps/context-files-ui/assets/cmake-i2VDNaRq.js +0 -1
  260. package/dist/apps/context-files-ui/assets/cobol-BwO6DF08.js +0 -1
  261. package/dist/apps/context-files-ui/assets/coffeescript-BtivDvRz.js +0 -1
  262. package/dist/apps/context-files-ui/assets/commonlisp-DFkEQdLP.js +0 -1
  263. package/dist/apps/context-files-ui/assets/crystal-CU0NkcVL.js +0 -1
  264. package/dist/apps/context-files-ui/assets/css-CbMZAQ1W.js +0 -1
  265. package/dist/apps/context-files-ui/assets/dist-B5PTVnox.js +0 -1
  266. package/dist/apps/context-files-ui/assets/dist-B5ZAfwf5.js +0 -1
  267. package/dist/apps/context-files-ui/assets/dist-BD262Ouw.js +0 -1
  268. package/dist/apps/context-files-ui/assets/dist-BKuGdcnX.js +0 -9
  269. package/dist/apps/context-files-ui/assets/dist-CHdx1Jri.js +0 -1
  270. package/dist/apps/context-files-ui/assets/dist-CULMH-fB.js +0 -11
  271. package/dist/apps/context-files-ui/assets/dist-Cjq6RWEt.js +0 -1
  272. package/dist/apps/context-files-ui/assets/dist-CntqFySz.js +0 -1
  273. package/dist/apps/context-files-ui/assets/dist-D1KyNDg5.js +0 -13
  274. package/dist/apps/context-files-ui/assets/dist-QQuDy4KA.js +0 -1
  275. package/dist/apps/context-files-ui/assets/dist-kPuQud7t.js +0 -2
  276. package/dist/apps/context-files-ui/assets/groovy-Cmduloe1.js +0 -1
  277. package/dist/apps/context-files-ui/assets/index-DZWsbuvg.js +0 -202
  278. package/dist/apps/context-files-ui/assets/javascript-C5pDVaoP.js +0 -1
  279. package/dist/apps/context-files-ui/assets/perl-D6YJObi_.js +0 -1
  280. package/dist/apps/context-files-ui/assets/puppet-B_0GFuyD.js +0 -1
  281. package/dist/apps/context-files-ui/assets/python-Cs7sNzy_.js +0 -1
  282. package/dist/apps/context-files-ui/assets/r-CN5s4f3o.js +0 -1
  283. package/dist/apps/context-files-ui/assets/ruby-BVPradRk.js +0 -1
  284. package/dist/apps/context-files-ui/assets/scheme-CvNgHAnh.js +0 -1
  285. package/dist/apps/context-files-ui/assets/sql-DYI2GwJR.js +0 -1
  286. package/dist/apps/context-files-ui/assets/textile-Yg_UWn-t.js +0 -1
  287. package/dist/apps/context-files-ui/assets/tiki-CC_ic8g0.js +0 -1
  288. package/dist/apps/context-files-ui/assets/toml-B7gGzVkJ.js +0 -1
  289. package/dist/apps/context-files-ui/assets/turtle-CwIpz2yy.js +0 -1
  290. package/dist/apps/context-files-ui/assets/vhdl-BGDk4f1d.js +0 -1
  291. package/dist/apps/context-files-ui/assets/z80-B7Dfb4UO.js +0 -1
  292. package/dist/apps/vscode-artifacts/pibo-vscode-ext-2.0.0.vsix +0 -0
  293. /package/dist/apps/chat-ui/assets/{brainfuck-CV9kufud.js → brainfuck-D5EjA2JK.js} +0 -0
  294. /package/dist/apps/chat-ui/assets/{clojure-De3QGfx6.js → clojure-BflJGmDX.js} +0 -0
  295. /package/dist/apps/chat-ui/assets/{cypher-Dke5QOzv.js → cypher-p9eYesGn.js} +0 -0
  296. /package/dist/apps/chat-ui/assets/{diff-B365LSoZ.js → diff-ChtP43wD.js} +0 -0
  297. /package/dist/apps/chat-ui/assets/{dtd-CBMymJ7O.js → dtd-DTF72YNO.js} +0 -0
  298. /package/dist/apps/chat-ui/assets/{ebnf-Dkum_1J8.js → ebnf-D4c0_ac3.js} +0 -0
  299. /package/dist/apps/chat-ui/assets/{eiffel-C446m6dI.js → eiffel-BEjRio4Q.js} +0 -0
  300. /package/dist/apps/chat-ui/assets/{elm-po1E9de0.js → elm-Cshzl8qu.js} +0 -0
  301. /package/dist/apps/chat-ui/assets/{fcl-DkEOamHd.js → fcl-ClOhbFR7.js} +0 -0
  302. /package/dist/apps/chat-ui/assets/{forth-dCg2_HVB.js → forth-Cezjo90N.js} +0 -0
  303. /package/dist/apps/chat-ui/assets/{fortran-3ZpXLFh1.js → fortran-Bt6PBEDR.js} +0 -0
  304. /package/dist/apps/chat-ui/assets/{gas-DMmxLZRI.js → gas-BHEdbvp9.js} +0 -0
  305. /package/dist/apps/chat-ui/assets/{gherkin-DUSFg2R6.js → gherkin-oBAE_ms0.js} +0 -0
  306. /package/dist/apps/chat-ui/assets/{haskell-Cyr255R9.js → haskell-BRsoo5mP.js} +0 -0
  307. /package/dist/apps/chat-ui/assets/{http-DszHFpc-.js → http-CLVgA2GD.js} +0 -0
  308. /package/dist/apps/chat-ui/assets/{idl-Cati9Nrv.js → idl-BUZw3wgd.js} +0 -0
  309. /package/dist/apps/chat-ui/assets/{julia-DlqY1cTU.js → julia-CQfgDRfP.js} +0 -0
  310. /package/dist/apps/chat-ui/assets/{livescript-C6p8-2W1.js → livescript-BXxG0Yva.js} +0 -0
  311. /package/dist/apps/chat-ui/assets/{mathematica-nDHZUMJT.js → mathematica-u8YMmbU0.js} +0 -0
  312. /package/dist/apps/chat-ui/assets/{mbox-DAaR0Hcz.js → mbox-BEMVcqjs.js} +0 -0
  313. /package/dist/apps/chat-ui/assets/{mirc-CCA0FRfl.js → mirc-C9zpzAZU.js} +0 -0
  314. /package/dist/apps/chat-ui/assets/{mllike-Cw3Iccsb.js → mllike-B45xgp2S.js} +0 -0
  315. /package/dist/apps/chat-ui/assets/{modelica-Czx80fNR.js → modelica-CqHI_q-D.js} +0 -0
  316. /package/dist/apps/chat-ui/assets/{mscgen-BmfuTbzG.js → mscgen-qgSLujhx.js} +0 -0
  317. /package/dist/apps/chat-ui/assets/{nginx-D9M2PQ4U.js → nginx-BMaDbqW3.js} +0 -0
  318. /package/dist/apps/chat-ui/assets/{octave-8jj96JiC.js → octave-D2Q8cUp1.js} +0 -0
  319. /package/dist/apps/chat-ui/assets/{oz-BmMq7iC4.js → oz-BwTct_5T.js} +0 -0
  320. /package/dist/apps/chat-ui/assets/{pascal-BgMr6XpT.js → pascal-Dp_KdFgX.js} +0 -0
  321. /package/dist/apps/chat-ui/assets/{pig-nx7uchs8.js → pig-AF4Hwhju.js} +0 -0
  322. /package/dist/apps/chat-ui/assets/{properties-CoavQdLC.js → properties-C357ku5U.js} +0 -0
  323. /package/dist/apps/chat-ui/assets/{protobuf-D5EWhcmc.js → protobuf-D1ij_kNL.js} +0 -0
  324. /package/dist/apps/chat-ui/assets/{q-BIB9pPtI.js → q-B9NhS7L_.js} +0 -0
  325. /package/dist/apps/chat-ui/assets/{rpm-Ct_Ck8mQ.js → rpm-gpDK5sbt.js} +0 -0
  326. /package/dist/apps/chat-ui/assets/{sas-DN4j74IF.js → sas-C2OyD2Y6.js} +0 -0
  327. /package/dist/apps/chat-ui/assets/{sieve-C2U1O5Z4.js → sieve-BAxa3IjF.js} +0 -0
  328. /package/dist/apps/chat-ui/assets/{smalltalk-DkYwYufV.js → smalltalk-BLp5-jwC.js} +0 -0
  329. /package/dist/apps/chat-ui/assets/{solr-BopnSD-v.js → solr-BBopId9w.js} +0 -0
  330. /package/dist/apps/chat-ui/assets/{sparql-Cpg3YQfd.js → sparql-Dz-mlCAC.js} +0 -0
  331. /package/dist/apps/chat-ui/assets/{spreadsheet-kRxtVt9J.js → spreadsheet-CTIncYxj.js} +0 -0
  332. /package/dist/apps/chat-ui/assets/{swift-DKNaLAK6.js → swift-DKB6_1j6.js} +0 -0
  333. /package/dist/apps/chat-ui/assets/{tcl-CQyXkgMH.js → tcl-BGfruO1u.js} +0 -0
  334. /package/dist/apps/chat-ui/assets/{tiddlywiki-dqVbkfX4.js → tiddlywiki-VlUiK86J.js} +0 -0
  335. /package/dist/apps/chat-ui/assets/{troff-Bq3z6oAu.js → troff-C2dAgh7P.js} +0 -0
  336. /package/dist/apps/chat-ui/assets/{vb-BmcHUM2C.js → vb-BthdM_4N.js} +0 -0
  337. /package/dist/apps/chat-ui/assets/{vbscript-Cs9dylre.js → vbscript-D9f6rSsU.js} +0 -0
  338. /package/dist/apps/chat-ui/assets/{velocity-CBWU0VCy.js → velocity-CqftRsjg.js} +0 -0
  339. /package/dist/apps/chat-ui/assets/{webidl-egXQEWlC.js → webidl-D5jiJvOU.js} +0 -0
  340. /package/dist/apps/chat-ui/assets/{yacas-DNs9XkmQ.js → yacas-CXXgtw0p.js} +0 -0
  341. /package/dist/apps/context-files-ui/assets/{brainfuck-CV9kufud.js → brainfuck-D5EjA2JK.js} +0 -0
  342. /package/dist/apps/context-files-ui/assets/{clojure-De3QGfx6.js → clojure-BflJGmDX.js} +0 -0
  343. /package/dist/apps/context-files-ui/assets/{cypher-Dke5QOzv.js → cypher-p9eYesGn.js} +0 -0
  344. /package/dist/apps/context-files-ui/assets/{diff-B365LSoZ.js → diff-ChtP43wD.js} +0 -0
  345. /package/dist/apps/context-files-ui/assets/{dtd-CBMymJ7O.js → dtd-DTF72YNO.js} +0 -0
  346. /package/dist/apps/context-files-ui/assets/{ebnf-Dkum_1J8.js → ebnf-D4c0_ac3.js} +0 -0
  347. /package/dist/apps/context-files-ui/assets/{eiffel-C446m6dI.js → eiffel-BEjRio4Q.js} +0 -0
  348. /package/dist/apps/context-files-ui/assets/{elm-po1E9de0.js → elm-Cshzl8qu.js} +0 -0
  349. /package/dist/apps/context-files-ui/assets/{fcl-DkEOamHd.js → fcl-ClOhbFR7.js} +0 -0
  350. /package/dist/apps/context-files-ui/assets/{forth-dCg2_HVB.js → forth-Cezjo90N.js} +0 -0
  351. /package/dist/apps/context-files-ui/assets/{fortran-3ZpXLFh1.js → fortran-Bt6PBEDR.js} +0 -0
  352. /package/dist/apps/context-files-ui/assets/{gas-DMmxLZRI.js → gas-BHEdbvp9.js} +0 -0
  353. /package/dist/apps/context-files-ui/assets/{gherkin-DUSFg2R6.js → gherkin-oBAE_ms0.js} +0 -0
  354. /package/dist/apps/context-files-ui/assets/{haskell-Cyr255R9.js → haskell-BRsoo5mP.js} +0 -0
  355. /package/dist/apps/context-files-ui/assets/{http-DszHFpc-.js → http-CLVgA2GD.js} +0 -0
  356. /package/dist/apps/context-files-ui/assets/{idl-Cati9Nrv.js → idl-BUZw3wgd.js} +0 -0
  357. /package/dist/apps/context-files-ui/assets/{julia-DlqY1cTU.js → julia-CQfgDRfP.js} +0 -0
  358. /package/dist/apps/context-files-ui/assets/{livescript-C6p8-2W1.js → livescript-BXxG0Yva.js} +0 -0
  359. /package/dist/apps/context-files-ui/assets/{mathematica-nDHZUMJT.js → mathematica-u8YMmbU0.js} +0 -0
  360. /package/dist/apps/context-files-ui/assets/{mbox-DAaR0Hcz.js → mbox-BEMVcqjs.js} +0 -0
  361. /package/dist/apps/context-files-ui/assets/{mirc-CCA0FRfl.js → mirc-C9zpzAZU.js} +0 -0
  362. /package/dist/apps/context-files-ui/assets/{mllike-Cw3Iccsb.js → mllike-B45xgp2S.js} +0 -0
  363. /package/dist/apps/context-files-ui/assets/{modelica-Czx80fNR.js → modelica-CqHI_q-D.js} +0 -0
  364. /package/dist/apps/context-files-ui/assets/{mscgen-BmfuTbzG.js → mscgen-qgSLujhx.js} +0 -0
  365. /package/dist/apps/context-files-ui/assets/{nginx-D9M2PQ4U.js → nginx-BMaDbqW3.js} +0 -0
  366. /package/dist/apps/context-files-ui/assets/{octave-8jj96JiC.js → octave-D2Q8cUp1.js} +0 -0
  367. /package/dist/apps/context-files-ui/assets/{oz-BmMq7iC4.js → oz-BwTct_5T.js} +0 -0
  368. /package/dist/apps/context-files-ui/assets/{pascal-BgMr6XpT.js → pascal-Dp_KdFgX.js} +0 -0
  369. /package/dist/apps/context-files-ui/assets/{pig-nx7uchs8.js → pig-AF4Hwhju.js} +0 -0
  370. /package/dist/apps/context-files-ui/assets/{properties-CoavQdLC.js → properties-C357ku5U.js} +0 -0
  371. /package/dist/apps/context-files-ui/assets/{protobuf-D5EWhcmc.js → protobuf-D1ij_kNL.js} +0 -0
  372. /package/dist/apps/context-files-ui/assets/{q-BIB9pPtI.js → q-B9NhS7L_.js} +0 -0
  373. /package/dist/apps/context-files-ui/assets/{rpm-Ct_Ck8mQ.js → rpm-gpDK5sbt.js} +0 -0
  374. /package/dist/apps/context-files-ui/assets/{sas-DN4j74IF.js → sas-C2OyD2Y6.js} +0 -0
  375. /package/dist/apps/context-files-ui/assets/{sieve-C2U1O5Z4.js → sieve-BAxa3IjF.js} +0 -0
  376. /package/dist/apps/context-files-ui/assets/{smalltalk-DkYwYufV.js → smalltalk-BLp5-jwC.js} +0 -0
  377. /package/dist/apps/context-files-ui/assets/{solr-BopnSD-v.js → solr-BBopId9w.js} +0 -0
  378. /package/dist/apps/context-files-ui/assets/{sparql-Cpg3YQfd.js → sparql-Dz-mlCAC.js} +0 -0
  379. /package/dist/apps/context-files-ui/assets/{spreadsheet-kRxtVt9J.js → spreadsheet-CTIncYxj.js} +0 -0
  380. /package/dist/apps/context-files-ui/assets/{swift-DKNaLAK6.js → swift-DKB6_1j6.js} +0 -0
  381. /package/dist/apps/context-files-ui/assets/{tcl-CQyXkgMH.js → tcl-BGfruO1u.js} +0 -0
  382. /package/dist/apps/context-files-ui/assets/{tiddlywiki-dqVbkfX4.js → tiddlywiki-VlUiK86J.js} +0 -0
  383. /package/dist/apps/context-files-ui/assets/{troff-Bq3z6oAu.js → troff-C2dAgh7P.js} +0 -0
  384. /package/dist/apps/context-files-ui/assets/{vb-BmcHUM2C.js → vb-BthdM_4N.js} +0 -0
  385. /package/dist/apps/context-files-ui/assets/{vbscript-Cs9dylre.js → vbscript-D9f6rSsU.js} +0 -0
  386. /package/dist/apps/context-files-ui/assets/{velocity-CBWU0VCy.js → velocity-CqftRsjg.js} +0 -0
  387. /package/dist/apps/context-files-ui/assets/{webidl-egXQEWlC.js → webidl-D5jiJvOU.js} +0 -0
  388. /package/dist/apps/context-files-ui/assets/{yacas-DNs9XkmQ.js → yacas-CXXgtw0p.js} +0 -0
@@ -0,0 +1,616 @@
1
+ import { randomUUID } from "node:crypto";
2
+ import { unsupportedAgentRuntimeCapability, } from "../../agent-runtime/capabilities.js";
3
+ import { AgentRuntimeAuthError, AgentRuntimeBindingMissingError, AgentRuntimeUnavailableError, } from "../../agent-runtime/errors.js";
4
+ import { OmpAuthController, OMP_AUTH_METHODS, unknownOmpStatusForAdapter } from "./auth.js";
5
+ import { OmpRpcClient, OmpRpcResponseError } from "./client.js";
6
+ import { defaultOmpRuntimeConfig, OMP_RUNTIME_CONFIG_SCHEMA, parseOmpRuntimeConfig } from "./config.js";
7
+ import { OmpHostToolBridge } from "./host-tools.js";
8
+ import { emptyOmpHistoryPage, inspectOmpHistory, readOmpHistory } from "./history.js";
9
+ import { OMP_MODEL_OPTIONS_SCHEMA, OMP_MODEL_PROVIDER_ID, OMP_REASONING_VALUES, parseOmpReasoning, readOmpModelCatalog, setOmpModel, } from "./models.js";
10
+ import { buildOmpProcessEnvironment, diagnoseOmpRuntime, disposeOmpSessionPaths, prepareOmpSessionPaths, resetOmpNativeSession, resolveOmpCommand, } from "./process.js";
11
+ import { OmpResourceDelivery } from "./resource-delivery.js";
12
+ import { OMP_ADAPTER_ID, OMP_ADAPTER_VERSION, OmpThreadController, readOmpAvailableCommands } from "./thread.js";
13
+ import { OmpRpcTurnController } from "./turn.js";
14
+ export { OMP_ADAPTER_ID } from "./thread.js";
15
+ export const OMP_RUNTIME_PROTOCOL_NAME = "omp-rpc";
16
+ export const OMP_RUNTIME_SUPPORTED_RANGE = "2";
17
+ function ompCapabilities() {
18
+ return {
19
+ lifecycle: {
20
+ persistent: true,
21
+ lazyBinding: false,
22
+ resume: true,
23
+ attach: true,
24
+ listNativeSessions: true,
25
+ fork: true,
26
+ clone: false,
27
+ tree: false,
28
+ },
29
+ input: {
30
+ text: true,
31
+ images: true,
32
+ audio: false,
33
+ steering: true,
34
+ structuredOutput: false,
35
+ },
36
+ output: {
37
+ assistantDeltas: true,
38
+ reasoning: true,
39
+ toolEvents: true,
40
+ usage: true,
41
+ plans: false,
42
+ diffs: false,
43
+ rawNativeEvents: false,
44
+ },
45
+ tools: {
46
+ piboManaged: { support: "direct" },
47
+ nativeToolInspection: {
48
+ support: "degraded",
49
+ mode: "observed-runtime-items",
50
+ reason: "OMP exposes its native tool inventory via get_state.dumpTools and runtime tool_execution items; a complete pre-turn inventory is only partially exposed through RPC.",
51
+ },
52
+ nativeToolYielding: unsupportedAgentRuntimeCapability("OMP native tools remain harness-owned and are not wrapped as Pibo yielded tools."),
53
+ },
54
+ mcp: {
55
+ externalServers: { support: "unsupported", reason: "OMP manages its own MCP; external MCP delivery is not wired in the initial OMP adapter." },
56
+ statusInspection: false,
57
+ },
58
+ skills: { support: "materialized", modes: ["omp-custom-directories"] },
59
+ context: { support: "materialized", modes: ["native-project-discovery", "omp-append-system-prompt"] },
60
+ contextDiscovery: {
61
+ supported: true,
62
+ configurable: false,
63
+ enabledByDefault: true,
64
+ strategy: "omp-project",
65
+ knownFileNames: ["AGENTS.md"],
66
+ knownUserRelativePaths: [
67
+ ".claude/CLAUDE.md",
68
+ ".codex/AGENTS.md",
69
+ ".gemini/GEMINI.md",
70
+ ".config/opencode/AGENTS.md",
71
+ ".copilot/copilot-instructions.md",
72
+ ],
73
+ knownCwdRelativePaths: [
74
+ ".claude/CLAUDE.md",
75
+ ".gemini/GEMINI.md",
76
+ ".github/copilot-instructions.md",
77
+ ],
78
+ knownRelativePaths: [
79
+ ".omp/AGENTS.md",
80
+ ],
81
+ knownAncestorRelativePaths: [
82
+ ".agent/AGENTS.md",
83
+ ".agents/AGENTS.md",
84
+ ],
85
+ },
86
+ nativeSubagents: {
87
+ supported: true,
88
+ configurable: true,
89
+ enabledByDefault: true,
90
+ },
91
+ historyImport: true,
92
+ auth: {
93
+ status: true,
94
+ methods: OMP_AUTH_METHODS,
95
+ cancel: true,
96
+ logout: true,
97
+ credentialScope: "runtime-instance",
98
+ },
99
+ models: {
100
+ catalog: true,
101
+ switchInSession: true,
102
+ optionsSchema: OMP_MODEL_OPTIONS_SCHEMA,
103
+ },
104
+ reasoning: {
105
+ supported: true,
106
+ values: [...OMP_REASONING_VALUES],
107
+ },
108
+ approvals: {
109
+ supported: false,
110
+ structuredUserInput: false,
111
+ },
112
+ maintenance: {
113
+ compaction: true,
114
+ contextUsage: true,
115
+ history: true,
116
+ health: true,
117
+ },
118
+ };
119
+ }
120
+ export const OMP_RUNTIME_CAPABILITIES = ompCapabilities();
121
+ function validateOpenBinding(input, runtimeInstanceId) {
122
+ const binding = input.binding
123
+ ? structuredClone(input.binding)
124
+ : {
125
+ piboSessionId: input.piboSession.id,
126
+ runtimeInstanceId,
127
+ adapterId: OMP_ADAPTER_ID,
128
+ state: "unbound",
129
+ };
130
+ if (binding.piboSessionId !== input.piboSession.id) {
131
+ throw new AgentRuntimeUnavailableError(runtimeInstanceId, "The OMP binding belongs to a different Pibo Session.");
132
+ }
133
+ if (binding.runtimeInstanceId !== runtimeInstanceId || binding.adapterId !== OMP_ADAPTER_ID) {
134
+ throw new AgentRuntimeUnavailableError(runtimeInstanceId, "The OMP binding does not match the configured runtime instance.");
135
+ }
136
+ if (binding.state === "missing") {
137
+ throw new AgentRuntimeBindingMissingError(binding.piboSessionId, runtimeInstanceId, binding.nativeSessionId);
138
+ }
139
+ if (binding.state === "error") {
140
+ throw new AgentRuntimeUnavailableError(runtimeInstanceId, "The persisted OMP binding is in an error state.");
141
+ }
142
+ return binding;
143
+ }
144
+ function bindingForOmp(piboSessionId, runtimeInstanceId, previous) {
145
+ return {
146
+ ...(previous ? structuredClone(previous) : {}),
147
+ piboSessionId,
148
+ runtimeInstanceId,
149
+ adapterId: OMP_ADAPTER_ID,
150
+ protocol: OMP_RUNTIME_PROTOCOL_NAME,
151
+ protocolVersion: OMP_RUNTIME_SUPPORTED_RANGE,
152
+ adapterVersion: OMP_ADAPTER_VERSION,
153
+ locator: { kind: "adapter-resolved" },
154
+ state: "bound",
155
+ };
156
+ }
157
+ export class OmpSession {
158
+ runtimeInstanceId;
159
+ bundle;
160
+ config;
161
+ emitWarning;
162
+ adapter;
163
+ adapterId = OMP_ADAPTER_ID;
164
+ cwd;
165
+ capabilities;
166
+ controls;
167
+ listeners = new Set();
168
+ binding;
169
+ disposed = false;
170
+ operationInFlight = false;
171
+ client;
172
+ paths;
173
+ turn;
174
+ thread;
175
+ hostTools;
176
+ resourceDelivery;
177
+ constructor(runtimeInstanceId, bundle, config, emitWarning, adapter) {
178
+ this.runtimeInstanceId = runtimeInstanceId;
179
+ this.bundle = bundle;
180
+ this.config = config;
181
+ this.emitWarning = emitWarning;
182
+ this.adapter = adapter;
183
+ this.client = bundle.client;
184
+ this.paths = bundle.paths;
185
+ this.thread = bundle.threads;
186
+ this.resourceDelivery = bundle.resourceDelivery;
187
+ this.cwd = bundle.threads.current.cwd;
188
+ this.binding = bindingForOmp("", runtimeInstanceId, undefined);
189
+ this.capabilities = ompCapabilities();
190
+ this.turn = new OmpRpcTurnController(this.client, (event) => this.emit(event));
191
+ this.hostTools = new OmpHostToolBridge(this.client, undefined, this.toolExecutionContext(), (m) => this.emitWarning(m));
192
+ this.controls = {
193
+ getCurrentSession: () => this.thread.getSessionSnapshot(this.runtimeInstanceId),
194
+ listSessions: () => this.thread.listSessions(this.runtimeInstanceId),
195
+ getForkCandidates: () => this.forkCandidates(),
196
+ forkSession: async (entryId) => await this.runIdleOperation(async () => {
197
+ const previous = this.thread.getSessionSnapshot(this.runtimeInstanceId);
198
+ const result = await this.thread.forkSession(this.runtimeInstanceId, entryId);
199
+ this.updateBinding();
200
+ return { previous, current: result.current, cancelled: result.cancelled };
201
+ }),
202
+ getReasoning: () => parseOmpReasoning(undefined),
203
+ setReasoning: (value) => {
204
+ this.assertIdle();
205
+ const info = parseOmpReasoning(value);
206
+ // Send the real OMP thinking-level change (best-effort; contract is sync).
207
+ const level = info.value ?? "medium";
208
+ void this.client.request({ type: "set_thinking_level", level }, "set_thinking_level").catch((error) => {
209
+ this.emitWarning("OMP set_thinking_level failed: " + (error instanceof Error ? error.message : String(error)));
210
+ });
211
+ return info;
212
+ },
213
+ setFastMode: (enabled) => {
214
+ this.assertIdle();
215
+ void this.client.request({ type: "set_fast_mode", enabled }, "set_fast_mode").catch((error) => {
216
+ this.emitWarning("OMP set_fast_mode failed: " + (error instanceof Error ? error.message : String(error)));
217
+ });
218
+ return { mode: enabled ? "fast" : "normal", supported: true, changed: true };
219
+ },
220
+ getFastMode: () => ({ mode: "normal", supported: true }),
221
+ setModel: async (model) => await this.runIdleOperation(async () => {
222
+ const provider = model.provider ?? this.config.defaultProvider ?? "";
223
+ const modelId = model.id ?? this.config.defaultModel ?? "";
224
+ if (!provider || !modelId) {
225
+ throw new Error("OMP model switch requires a provider and model id.");
226
+ }
227
+ await setOmpModel(this.client, provider, modelId);
228
+ return { provider, id: modelId };
229
+ }),
230
+ compact: async (customInstructions) => {
231
+ this.assertIdle();
232
+ return await this.client.request({ type: "compact", ...(customInstructions ? { customInstructions } : {}) }, "compact");
233
+ },
234
+ };
235
+ }
236
+ toolExecutionContext() {
237
+ return {
238
+ cwd: this.cwd,
239
+ runtimeInstanceId: this.runtimeInstanceId,
240
+ adapterId: OMP_ADAPTER_ID,
241
+ };
242
+ }
243
+ forkCandidates() {
244
+ return this.thread.cachedForkCandidates();
245
+ }
246
+ async setOmpModel(provider, modelId) {
247
+ const info = await setOmpModel(this.client, provider, modelId);
248
+ return info;
249
+ }
250
+ updateBinding() {
251
+ const snapshot = this.thread.getSessionSnapshot(this.runtimeInstanceId);
252
+ if (snapshot.nativeSessionId) {
253
+ this.binding = bindingForOmp(this.binding.piboSessionId, this.runtimeInstanceId, this.binding);
254
+ this.binding = {
255
+ ...this.binding,
256
+ nativeSessionId: snapshot.nativeSessionId,
257
+ locator: snapshot.locator,
258
+ metadata: {
259
+ ...(this.binding.metadata ?? {}),
260
+ nativePresenceExpected: true,
261
+ ...(snapshot.name ? { sessionName: snapshot.name } : {}),
262
+ },
263
+ };
264
+ }
265
+ }
266
+ setPiboSessionId(sessionId) {
267
+ this.binding = { ...this.binding, piboSessionId: sessionId };
268
+ }
269
+ /** Apply the resolved native session id from OMP state. */
270
+ bindNativeSessionId(sessionId) {
271
+ this.binding = {
272
+ ...this.binding,
273
+ nativeSessionId: sessionId,
274
+ state: "bound",
275
+ locator: { kind: "adapter-resolved", value: sessionId },
276
+ };
277
+ }
278
+ /**
279
+ * Persist the on-disk OMP transcript path so a later `openSession` can pass
280
+ * it to `switch_session` (which expects the .jsonl file path, NOT the
281
+ * nativeSessionId UUID) to resume the same transcript.
282
+ */
283
+ bindNativeSessionFile(sessionFile) {
284
+ if (!sessionFile)
285
+ return;
286
+ this.binding = {
287
+ ...this.binding,
288
+ metadata: { ...(this.binding.metadata ?? {}), nativeSessionFile: sessionFile },
289
+ };
290
+ }
291
+ /** Wire a real host-tool bridge backed by the Pibo portable tool session. */
292
+ attachHostToolBridge(bridge) {
293
+ this.hostTools = bridge;
294
+ }
295
+ /** Adapter-level reads route history/models/auth through the live client. */
296
+ getClient() {
297
+ return this.client;
298
+ }
299
+ getBinding() {
300
+ this.updateBinding();
301
+ return structuredClone(this.binding);
302
+ }
303
+ subscribe(listener) {
304
+ this.assertActive();
305
+ this.listeners.add(listener);
306
+ return () => this.listeners.delete(listener);
307
+ }
308
+ emit(event) {
309
+ for (const listener of this.listeners)
310
+ listener(event);
311
+ }
312
+ async prompt(input) {
313
+ this.assertActive();
314
+ this.operationInFlight = true;
315
+ try {
316
+ await this.turn.prompt(input.text);
317
+ this.updateBinding();
318
+ }
319
+ finally {
320
+ this.operationInFlight = false;
321
+ }
322
+ }
323
+ async steer(input) {
324
+ this.assertActive();
325
+ await this.turn.steer(input.text);
326
+ }
327
+ async abort() {
328
+ this.assertActive();
329
+ await this.turn.interrupt();
330
+ }
331
+ async dispose() {
332
+ if (this.disposed)
333
+ return;
334
+ this.disposed = true;
335
+ this.turn.dispose();
336
+ await this.hostTools.cancelAll();
337
+ this.hostTools.dispose();
338
+ this.client.dispose();
339
+ await disposeOmpSessionPaths(this.paths);
340
+ // Notify the owning adapter so adapter-level reads stop routing to us.
341
+ this.adapter?.detachLiveSession(this);
342
+ }
343
+ getStatus() {
344
+ const hostInstalled = this.hostTools?.installedNames ?? [];
345
+ // Report the tools Pibo actually mounted (host-tool bridge). OMP's own
346
+ // native tools (bash/edit/…) remain engine-owned and are intentionally
347
+ // not exported here — we do not claim an inventory we do not observe.
348
+ return {
349
+ streaming: this.turn.streaming,
350
+ enabledTools: hostInstalled,
351
+ cwd: this.cwd,
352
+ reasoning: {
353
+ supported: true,
354
+ availableValues: [...OMP_REASONING_VALUES],
355
+ },
356
+ };
357
+ }
358
+ assertIdle() {
359
+ this.assertActive();
360
+ if (this.operationInFlight)
361
+ throw new Error("OMP session is busy with another operation.");
362
+ }
363
+ assertActive() {
364
+ if (this.disposed)
365
+ throw new Error("OMP session is disposed.");
366
+ }
367
+ async runIdleOperation(operation) {
368
+ this.assertIdle();
369
+ this.operationInFlight = true;
370
+ try {
371
+ return await operation();
372
+ }
373
+ finally {
374
+ this.operationInFlight = false;
375
+ }
376
+ }
377
+ }
378
+ export class OmpAgentRuntimeAdapter {
379
+ instanceId;
380
+ descriptor;
381
+ config;
382
+ displayName;
383
+ enabled;
384
+ parsed;
385
+ /** Handle to the currently-open session so history/auth/models route to it. */
386
+ live;
387
+ constructor(input, driver) {
388
+ this.instanceId = input.instanceId;
389
+ this.descriptor = driver.descriptor;
390
+ this.config = structuredClone(input.config);
391
+ this.displayName = input.displayName;
392
+ this.enabled = input.enabled;
393
+ this.parsed = parseOmpRuntimeConfig(input.config);
394
+ }
395
+ async diagnose() {
396
+ return await diagnoseOmpRuntime(this.parsed, this.instanceId);
397
+ }
398
+ validateProfile(input) {
399
+ // Truthful capability validation is delegated to the profile resolver;
400
+ // unsupported selections are rejected by the registry.
401
+ return [];
402
+ }
403
+ async openSession(input) {
404
+ const binding = validateOpenBinding(input, this.instanceId);
405
+ if (binding.state === "bound" && !binding.nativeSessionId) {
406
+ throw new AgentRuntimeUnavailableError(this.instanceId, "The persisted OMP binding has no native session id.");
407
+ }
408
+ const paths = await prepareOmpSessionPaths({
409
+ config: this.parsed,
410
+ runtimeInstanceId: this.instanceId,
411
+ piboSessionId: input.piboSession.id,
412
+ sessionGeneration: randomUUID(),
413
+ });
414
+ if (binding.state === "unbound")
415
+ await resetOmpNativeSession(paths);
416
+ if (input.historyHandoff?.mode === "import" && binding.state === "bound") {
417
+ throw new Error("OMP portable history import requires a new native session.");
418
+ }
419
+ // Materialize BEFORE spawn: OMP reads config.yml and append-system-prompt at startup.
420
+ const resourceDelivery = new OmpResourceDelivery(this.parsed, paths, input.services?.resources, input.historyHandoff, input.profile.nativeSubagents ?? this.descriptor.capabilities.nativeSubagents.enabledByDefault);
421
+ const resourceResult = await resourceDelivery.prepare();
422
+ input.services?.resources?.recordAdapterDelivery?.(resourceResult.reports, resourceResult.diagnostics);
423
+ const environment = buildOmpProcessEnvironment({
424
+ paths,
425
+ config: this.parsed,
426
+ baseEnvironment: process.env,
427
+ });
428
+ const command = resolveOmpCommand(this.parsed, paths, resourceDelivery.appendSystemPromptPath);
429
+ const client = new OmpRpcClient({
430
+ startupTimeoutMs: this.parsed.startupTimeoutMs,
431
+ requestTimeoutMs: this.parsed.requestTimeoutMs,
432
+ });
433
+ try {
434
+ await client.connect(command, { cwd: input.workspace, env: environment });
435
+ }
436
+ catch (error) {
437
+ await client.dispose();
438
+ await disposeOmpSessionPaths(paths);
439
+ if (error instanceof OmpRpcResponseError)
440
+ throw error;
441
+ throw new AgentRuntimeUnavailableError(this.instanceId, `Failed to start OMP: ${error instanceof Error ? error.message : String(error)}`);
442
+ }
443
+ // Determine native session id (+ transcript file path for later resume).
444
+ let nativeSessionId = binding.nativeSessionId;
445
+ let nativeSessionFile;
446
+ try {
447
+ const state = await client.request({ type: "get_state" }, "get_state");
448
+ const data = state["data"];
449
+ if (data && typeof data === "object" && !Array.isArray(data)) {
450
+ const record = data;
451
+ if (typeof record.sessionId === "string")
452
+ nativeSessionId = record.sessionId;
453
+ if (typeof record.sessionFile === "string")
454
+ nativeSessionFile = record.sessionFile;
455
+ }
456
+ }
457
+ catch {
458
+ // state is best-effort; binding stays as resolved
459
+ }
460
+ const initial = {
461
+ sessionId: nativeSessionId ?? binding.nativeSessionId ?? randomUUID(),
462
+ cwd: input.workspace,
463
+ };
464
+ // Build the session and thread controllers with a client that supports
465
+ // host-tool frames.
466
+ const threads = new OmpThreadController(client, input.workspace, { sessionId: initial.sessionId });
467
+ const bundle = { client, paths, threads, resourceDelivery };
468
+ const session = new OmpSession(this.instanceId, bundle, this.parsed, (m) => {
469
+ // Warning surfaced via session events is delivered by the turn controller.
470
+ }, this);
471
+ session.setPiboSessionId(input.piboSession.id);
472
+ // Wire host tools after session construction so the executor is available.
473
+ const portableTools = input.services?.portableTools;
474
+ // Rebuild the session's hostTools with the real portable session (the
475
+ // constructor used a placeholder). We recreate the bridge to avoid keeping
476
+ // a hidden reference.
477
+ const hb = new OmpHostToolBridge(client, portableTools, {
478
+ cwd: input.workspace,
479
+ runtimeInstanceId: this.instanceId,
480
+ adapterId: OMP_ADAPTER_ID,
481
+ }, (m) => session["emitWarning"]?.(m));
482
+ client.subscribeFrames((frame) => {
483
+ if (frame && typeof frame === "object" && frame.type === "host_tool_call") {
484
+ void hb.handleFrame(frame);
485
+ }
486
+ });
487
+ try {
488
+ await hb.install();
489
+ await threads.refresh();
490
+ // Resume/F4: if this Pibo Session was previously bound to an OMP
491
+ // native session, switch the new child into that persisted transcript
492
+ // so history/context carry over instead of starting a fresh session.
493
+ if (binding.state === "bound" && binding.nativeSessionId) {
494
+ // switch_session takes the .jsonl transcript PATH, not the session
495
+ // id UUID. Prefer the persisted transcript file (F4); fall back to
496
+ // the id only when no file was recorded.
497
+ const resumePath = (binding.metadata && typeof binding.metadata.nativeSessionFile === "string"
498
+ ? binding.metadata.nativeSessionFile
499
+ : undefined) ?? binding.nativeSessionId;
500
+ try {
501
+ await client.request({ type: "switch_session", sessionPath: resumePath }, "switch_session");
502
+ await threads.refresh();
503
+ // OMP regenerates the session id on switch but restores the
504
+ // transcript FILE. Re-read state so we persist the RESUMED
505
+ // transcript path (not the fresh pre-switch session's file).
506
+ const resumed = await client.request({ type: "get_state" }, "get_state");
507
+ const resumedData = resumed["data"];
508
+ if (resumedData && typeof resumedData === "object" && !Array.isArray(resumedData)) {
509
+ const rr = resumedData;
510
+ if (typeof rr.sessionFile === "string")
511
+ nativeSessionFile = rr.sessionFile;
512
+ }
513
+ }
514
+ catch (resumeError) {
515
+ // Keep the fresh session; a failed switch is not fatal.
516
+ // (bindNativeSessionId below still sets the binding.)
517
+ }
518
+ }
519
+ // Prime fork candidates (get_branch_messages) for the sync SPI.
520
+ void threads.loadForkCandidates(this.instanceId);
521
+ }
522
+ catch (error) {
523
+ await client.dispose();
524
+ await disposeOmpSessionPaths(paths);
525
+ throw error;
526
+ }
527
+ session.attachHostToolBridge(hb);
528
+ session.bindNativeSessionId(threads.current.sessionId);
529
+ session.bindNativeSessionFile(nativeSessionFile);
530
+ this.attachLiveSession(session);
531
+ return session;
532
+ }
533
+ /** Record the live session so adapter-level reads can route to it. */
534
+ attachLiveSession(session) {
535
+ this.live = session;
536
+ }
537
+ detachLiveSession(session) {
538
+ if (this.live === session)
539
+ this.live = undefined;
540
+ }
541
+ async listModels() {
542
+ if (this.live) {
543
+ try {
544
+ return await readOmpModelCatalog(this.live.getClient(), this.instanceId);
545
+ }
546
+ catch {
547
+ // fall through to empty on transient engine error
548
+ }
549
+ }
550
+ return { runtimeInstanceId: this.instanceId, models: [] };
551
+ }
552
+ async getAuthStatus() {
553
+ if (this.live) {
554
+ try {
555
+ const controller = new OmpAuthController(this.live.getClient());
556
+ return await controller.getStatus();
557
+ }
558
+ catch {
559
+ // fall through to unknown on transient engine error
560
+ }
561
+ }
562
+ return [unknownOmpStatusForAdapter()];
563
+ }
564
+ async startAuth(input) {
565
+ throw new AgentRuntimeAuthError("orp_auth_unavailable", "OMP auth requires an open session.");
566
+ }
567
+ async cancelAuth(input) {
568
+ return { providerId: input.providerId, configured: false, state: "disconnected", message: "Login canceled." };
569
+ }
570
+ async logoutAuth(input) {
571
+ return { providerId: input.providerId, configured: false, state: "disconnected" };
572
+ }
573
+ async inspectHistory(input) {
574
+ return inspectOmpHistory(input, this.instanceId);
575
+ }
576
+ async readHistory(input) {
577
+ if (this.live) {
578
+ return await readOmpHistory(this.live.getClient(), input, this.instanceId, input.binding);
579
+ }
580
+ return emptyOmpHistoryPage(this.instanceId);
581
+ }
582
+ async resolveBinding() {
583
+ return {
584
+ piboSessionId: "",
585
+ runtimeInstanceId: this.instanceId,
586
+ adapterId: OMP_ADAPTER_ID,
587
+ state: "unbound",
588
+ };
589
+ }
590
+ }
591
+ export const OMP_AGENT_RUNTIME_DRIVER = {
592
+ descriptor: {
593
+ id: OMP_ADAPTER_ID,
594
+ displayName: "Oh My Pi",
595
+ transport: "stdio-rpc",
596
+ configSchema: OMP_RUNTIME_CONFIG_SCHEMA,
597
+ capabilities: ompCapabilities(),
598
+ protocol: { name: OMP_RUNTIME_PROTOCOL_NAME, supportedRange: OMP_RUNTIME_SUPPORTED_RANGE },
599
+ supportsMultipleInstances: true,
600
+ },
601
+ defaultConfig() {
602
+ return defaultOmpRuntimeConfig();
603
+ },
604
+ parseConfig(value) {
605
+ return parseOmpRuntimeConfig(value);
606
+ },
607
+ create(input) {
608
+ return new OmpAgentRuntimeAdapter({ instanceId: input.instanceId, displayName: input.displayName ?? "Oh My Pi", enabled: input.enabled, config: input.config }, { descriptor: OMP_AGENT_RUNTIME_DRIVER.descriptor });
609
+ },
610
+ };
611
+ void OMP_MODEL_PROVIDER_ID;
612
+ void OmpAuthController;
613
+ void OmpRpcResponseError;
614
+ void readOmpAvailableCommands;
615
+ void inspectOmpHistory;
616
+ void OMP_RUNTIME_CAPABILITIES;