@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.
- package/dist/agent-runtime/capabilities.js +68 -0
- package/dist/agent-runtime/context-build.js +13 -5
- package/dist/agent-runtime/portable-history.js +526 -0
- package/dist/agent-runtime/profile-validation.js +13 -7
- package/dist/agent-runtime/resource-files.js +26 -10
- package/dist/agent-runtime/resource-service.js +216 -13
- package/dist/agent-runtimes/codex-native/adapter.js +38 -1
- package/dist/agent-runtimes/codex-native/auth.js +24 -3
- package/dist/agent-runtimes/codex-native/portable-history.js +73 -0
- package/dist/agent-runtimes/codex-native/process.js +38 -27
- package/dist/agent-runtimes/codex-native/resource-delivery.js +39 -16
- package/dist/agent-runtimes/codex-native/turn.js +68 -5
- package/dist/agent-runtimes/omp/adapter.js +616 -0
- package/dist/agent-runtimes/omp/auth.js +109 -0
- package/dist/agent-runtimes/omp/client.js +460 -0
- package/dist/agent-runtimes/omp/config.js +188 -0
- package/dist/agent-runtimes/omp/history.js +108 -0
- package/dist/agent-runtimes/omp/host-tools.js +201 -0
- package/dist/agent-runtimes/omp/models.js +86 -0
- package/dist/agent-runtimes/omp/process.js +299 -0
- package/dist/agent-runtimes/omp/protocol-types.js +17 -0
- package/dist/agent-runtimes/omp/resource-delivery.js +228 -0
- package/dist/agent-runtimes/omp/thread.js +141 -0
- package/dist/agent-runtimes/omp/turn.js +325 -0
- package/dist/agent-runtimes/pi/adapter.js +32 -1
- package/dist/agent-runtimes/pi/auth.js +34 -29
- package/dist/agent-runtimes/pi/credentials.js +43 -0
- package/dist/agent-runtimes/pi/model-catalog.js +7 -3
- package/dist/agent-runtimes/pi/portable-history.js +99 -0
- package/dist/agent-runtimes/pi/routed-session.js +1 -1
- package/dist/agent-runtimes/pi/runtime.js +31 -15
- package/dist/apps/chat/agent-profiles.js +1 -0
- package/dist/apps/chat/agent-store.js +20 -7
- package/dist/apps/chat/chat-files.js +19 -6
- package/dist/apps/chat/chat-request-normalizers.js +13 -0
- package/dist/apps/chat/web-app.js +55 -6
- package/dist/apps/chat-ui/assets/{apl-14BqhLYK.js → apl-gfMMiTNf.js} +1 -1
- package/dist/apps/chat-ui/assets/asciiarmor-C_eisQCp.js +1 -0
- package/dist/apps/{context-files-ui/assets/asn1-Bg4FbdCg.js → chat-ui/assets/asn1-DCl_8MCW.js} +1 -1
- package/dist/apps/{context-files-ui/assets/asterisk-B2MO-X4d.js → chat-ui/assets/asterisk-BEn0Cwpx.js} +1 -1
- package/dist/apps/chat-ui/assets/clike-D_6L3tnO.js +1 -0
- package/dist/apps/chat-ui/assets/cmake-84nbDH0I.js +1 -0
- package/dist/apps/chat-ui/assets/cobol-DHLQUbN7.js +1 -0
- package/dist/apps/chat-ui/assets/coffeescript-De_zI4J0.js +1 -0
- package/dist/apps/chat-ui/assets/commonlisp-DgAKBe0r.js +1 -0
- package/dist/apps/chat-ui/assets/crystal-Bsdphhtm.js +1 -0
- package/dist/apps/chat-ui/assets/css-CnaYoQib.js +1 -0
- package/dist/apps/chat-ui/assets/{d-TPqSVaHM.js → d-DWkQyNnU.js} +1 -1
- package/dist/apps/{context-files-ui/assets/dist-DxEGebCR.js → chat-ui/assets/dist-BB8loWTa.js} +1 -1
- package/dist/apps/chat-ui/assets/dist-BJ-TIk3N.js +1 -0
- package/dist/apps/chat-ui/assets/dist-CBPDkWd4.js +1 -0
- package/dist/apps/chat-ui/assets/dist-CHInEWhr.js +1 -0
- package/dist/apps/chat-ui/assets/dist-CqM4On9D.js +13 -0
- package/dist/apps/chat-ui/assets/dist-CswnpKik.js +1 -0
- package/dist/apps/{context-files-ui/assets/dist-B7gXtTZC.js → chat-ui/assets/dist-CwS16H7k.js} +1 -1
- package/dist/apps/chat-ui/assets/dist-DHvUPfrF.js +1 -0
- package/dist/apps/chat-ui/assets/dist-DLJCGrGQ.js +1 -0
- package/dist/apps/chat-ui/assets/{dist-DLMjd26T.js → dist-DMiglryg.js} +1 -1
- package/dist/apps/chat-ui/assets/dist-DTeLDijr.js +9 -0
- package/dist/apps/chat-ui/assets/{dist-DKoyMSNr.js → dist-DpF08Yd7.js} +1 -1
- package/dist/apps/chat-ui/assets/dist-LCx98fA_.js +11 -0
- package/dist/apps/chat-ui/assets/{dist-DotDq_kD.js → dist-RKTRnzGb.js} +1 -1
- package/dist/apps/chat-ui/assets/dist-S3zJGntM.js +1 -0
- package/dist/apps/{context-files-ui/assets/dist-BkUONE3N.js → chat-ui/assets/dist-XVYGiB-c.js} +1 -1
- package/dist/apps/chat-ui/assets/dist-eddbbGyw.js +1 -0
- package/dist/apps/chat-ui/assets/dist-fPhZsAUX.js +1 -0
- package/dist/apps/chat-ui/assets/dist-mpRGeo_R.js +2 -0
- package/dist/apps/chat-ui/assets/{dist-sZgJkWZb.js → dist-nU3BVpFi.js} +1 -1
- package/dist/apps/chat-ui/assets/{dockerfile-CJb2sekW.js → dockerfile-DJkHQgkl.js} +1 -1
- package/dist/apps/chat-ui/assets/{dylan-08Azy1NK.js → dylan-BCDoL_-p.js} +1 -1
- package/dist/apps/chat-ui/assets/{ecl-dhxjHL8y.js → ecl-BVIeWmwY.js} +1 -1
- package/dist/apps/{context-files-ui/assets/erlang-BD5LkVkR.js → chat-ui/assets/erlang-BV0c4Hdn.js} +1 -1
- package/dist/apps/chat-ui/assets/{factor-B2EMQZkP.js → factor-LKH5gN8L.js} +1 -1
- package/dist/apps/chat-ui/assets/groovy-CUpZ7dEl.js +1 -0
- package/dist/apps/chat-ui/assets/{haxe-BJVKtprM.js → haxe-DjVOVvNP.js} +1 -1
- package/dist/apps/chat-ui/assets/index-CQuka3bs.js +226 -0
- package/dist/apps/chat-ui/assets/index-DUXboQnI.css +1 -0
- package/dist/apps/chat-ui/assets/javascript-DoL9Wb-Q.js +1 -0
- package/dist/apps/chat-ui/assets/{lua-BxuTHaF7.js → lua-CiA1ziua.js} +1 -1
- package/dist/apps/chat-ui/assets/{mumps-Ds_ZaumL.js → mumps-BSzj6Xyz.js} +1 -1
- package/dist/apps/{context-files-ui/assets/nsis-DOo3SJmd.js → chat-ui/assets/nsis-CfSuhXs5.js} +1 -1
- package/dist/apps/chat-ui/assets/{ntriples-DLHGTvHs.js → ntriples-B9h1VB_g.js} +1 -1
- package/dist/apps/chat-ui/assets/perl-BkSkiI9m.js +1 -0
- package/dist/apps/chat-ui/assets/{powershell-B4IPkVxR.js → powershell-BcIto6Sf.js} +1 -1
- package/dist/apps/{context-files-ui/assets/pug-QU72BPAa.js → chat-ui/assets/pug-Gsm0M45u.js} +1 -1
- package/dist/apps/chat-ui/assets/puppet-BZyAS7I4.js +1 -0
- package/dist/apps/chat-ui/assets/python-B_1Jd8HM.js +1 -0
- package/dist/apps/chat-ui/assets/r-CxDmU1I4.js +1 -0
- package/dist/apps/chat-ui/assets/ruby-BjXV7-Qa.js +1 -0
- package/dist/apps/chat-ui/assets/scheme-D9qYN0V5.js +1 -0
- package/dist/apps/chat-ui/assets/{shell-BjiMLAaM.js → shell-DwuoZtxw.js} +1 -1
- package/dist/apps/chat-ui/assets/{simple-mode-DnMbQuKW.js → simple-mode-DXiLM1-G.js} +1 -1
- package/dist/apps/chat-ui/assets/sql-DuQMFDvy.js +1 -0
- package/dist/apps/chat-ui/assets/{stex-BCRT8IJ3.js → stex-DNzd62Q_.js} +1 -1
- package/dist/apps/chat-ui/assets/{stylus-CARoeVE9.js → stylus-BOVgKnng.js} +1 -1
- package/dist/apps/chat-ui/assets/textile-C4jVoHG1.js +1 -0
- package/dist/apps/chat-ui/assets/tiki-AK6FwT8q.js +1 -0
- package/dist/apps/chat-ui/assets/toml-BPTmHmyx.js +1 -0
- package/dist/apps/chat-ui/assets/{ttcn-GvRgs2AT.js → ttcn-PPSTk1ow.js} +1 -1
- package/dist/apps/chat-ui/assets/{ttcn-cfg-CGCXz7Vo.js → ttcn-cfg-2b4Gb5sE.js} +1 -1
- package/dist/apps/chat-ui/assets/turtle-Cx3rYX2g.js +1 -0
- package/dist/apps/chat-ui/assets/{verilog-DVCHmufx.js → verilog-7LoJAqYT.js} +1 -1
- package/dist/apps/chat-ui/assets/vhdl-kS471soi.js +1 -0
- package/dist/apps/{context-files-ui/assets/xquery-5f0hn7cg.js → chat-ui/assets/xquery-BKJx4mf9.js} +1 -1
- package/dist/apps/chat-ui/assets/z80-Co3PbHdE.js +1 -0
- package/dist/apps/chat-ui/index.html +5 -3
- package/dist/apps/chat-vscode-web/assets/index-CF1-9PKU.css +2 -0
- package/dist/apps/chat-vscode-web/assets/index-Dp1TzeRL.js +41 -0
- package/dist/apps/chat-vscode-web/index.html +2 -2
- package/dist/apps/context-files-ui/assets/{apl-14BqhLYK.js → apl-gfMMiTNf.js} +1 -1
- package/dist/apps/context-files-ui/assets/asciiarmor-C_eisQCp.js +1 -0
- package/dist/apps/{chat-ui/assets/asn1-Bg4FbdCg.js → context-files-ui/assets/asn1-DCl_8MCW.js} +1 -1
- package/dist/apps/{chat-ui/assets/asterisk-B2MO-X4d.js → context-files-ui/assets/asterisk-BEn0Cwpx.js} +1 -1
- package/dist/apps/context-files-ui/assets/clike-D_6L3tnO.js +1 -0
- package/dist/apps/context-files-ui/assets/cmake-84nbDH0I.js +1 -0
- package/dist/apps/context-files-ui/assets/cobol-DHLQUbN7.js +1 -0
- package/dist/apps/context-files-ui/assets/coffeescript-De_zI4J0.js +1 -0
- package/dist/apps/context-files-ui/assets/commonlisp-DgAKBe0r.js +1 -0
- package/dist/apps/context-files-ui/assets/crystal-Bsdphhtm.js +1 -0
- package/dist/apps/context-files-ui/assets/css-CnaYoQib.js +1 -0
- package/dist/apps/context-files-ui/assets/{d-TPqSVaHM.js → d-DWkQyNnU.js} +1 -1
- package/dist/apps/{chat-ui/assets/dist-C6LPDFXU.js → context-files-ui/assets/dist-BAqbgxUS.js} +1 -1
- package/dist/apps/context-files-ui/assets/dist-BJ-TIk3N.js +1 -0
- package/dist/apps/context-files-ui/assets/dist-BcauuFwf.js +1 -0
- package/dist/apps/context-files-ui/assets/dist-BecMXs79.js +1 -0
- package/dist/apps/context-files-ui/assets/{dist-C-Jm45P4.js → dist-Ci2NSlf1.js} +1 -1
- package/dist/apps/context-files-ui/assets/dist-CqM4On9D.js +13 -0
- package/dist/apps/context-files-ui/assets/dist-CswnpKik.js +1 -0
- package/dist/apps/{chat-ui/assets/dist-I26VB0QO.js → context-files-ui/assets/dist-D-xpsbZI.js} +1 -1
- package/dist/apps/context-files-ui/assets/dist-DHvUPfrF.js +1 -0
- package/dist/apps/context-files-ui/assets/dist-DLJCGrGQ.js +1 -0
- package/dist/apps/context-files-ui/assets/{dist-DLMjd26T.js → dist-DMiglryg.js} +1 -1
- package/dist/apps/context-files-ui/assets/dist-DTeLDijr.js +9 -0
- package/dist/apps/context-files-ui/assets/{dist-DKoyMSNr.js → dist-DpF08Yd7.js} +1 -1
- package/dist/apps/context-files-ui/assets/dist-LCx98fA_.js +11 -0
- package/dist/apps/context-files-ui/assets/{dist-DotDq_kD.js → dist-RKTRnzGb.js} +1 -1
- package/dist/apps/context-files-ui/assets/dist-S3zJGntM.js +1 -0
- package/dist/apps/{chat-ui/assets/dist-BkUONE3N.js → context-files-ui/assets/dist-XVYGiB-c.js} +1 -1
- package/dist/apps/context-files-ui/assets/dist-eddbbGyw.js +1 -0
- package/dist/apps/context-files-ui/assets/dist-fPhZsAUX.js +1 -0
- package/dist/apps/context-files-ui/assets/dist-mpRGeo_R.js +2 -0
- package/dist/apps/context-files-ui/assets/{dockerfile-CJb2sekW.js → dockerfile-DJkHQgkl.js} +1 -1
- package/dist/apps/context-files-ui/assets/{dylan-08Azy1NK.js → dylan-BCDoL_-p.js} +1 -1
- package/dist/apps/context-files-ui/assets/{ecl-dhxjHL8y.js → ecl-BVIeWmwY.js} +1 -1
- package/dist/apps/{chat-ui/assets/erlang-BD5LkVkR.js → context-files-ui/assets/erlang-BV0c4Hdn.js} +1 -1
- package/dist/apps/context-files-ui/assets/{factor-B2EMQZkP.js → factor-LKH5gN8L.js} +1 -1
- package/dist/apps/context-files-ui/assets/groovy-CUpZ7dEl.js +1 -0
- package/dist/apps/context-files-ui/assets/{haxe-BJVKtprM.js → haxe-DjVOVvNP.js} +1 -1
- package/dist/apps/context-files-ui/assets/index-CkWXlBNn.js +191 -0
- package/dist/apps/context-files-ui/assets/{index-Cs4XQITe.css → index-D8TsUizd.css} +1 -1
- package/dist/apps/context-files-ui/assets/javascript-DoL9Wb-Q.js +1 -0
- package/dist/apps/context-files-ui/assets/{lua-BxuTHaF7.js → lua-CiA1ziua.js} +1 -1
- package/dist/apps/context-files-ui/assets/{mumps-Ds_ZaumL.js → mumps-BSzj6Xyz.js} +1 -1
- package/dist/apps/{chat-ui/assets/nsis-DOo3SJmd.js → context-files-ui/assets/nsis-CfSuhXs5.js} +1 -1
- package/dist/apps/context-files-ui/assets/{ntriples-DLHGTvHs.js → ntriples-B9h1VB_g.js} +1 -1
- package/dist/apps/context-files-ui/assets/perl-BkSkiI9m.js +1 -0
- package/dist/apps/context-files-ui/assets/{powershell-B4IPkVxR.js → powershell-BcIto6Sf.js} +1 -1
- package/dist/apps/{chat-ui/assets/pug-QU72BPAa.js → context-files-ui/assets/pug-Gsm0M45u.js} +1 -1
- package/dist/apps/context-files-ui/assets/puppet-BZyAS7I4.js +1 -0
- package/dist/apps/context-files-ui/assets/python-B_1Jd8HM.js +1 -0
- package/dist/apps/context-files-ui/assets/r-CxDmU1I4.js +1 -0
- package/dist/apps/context-files-ui/assets/ruby-BjXV7-Qa.js +1 -0
- package/dist/apps/context-files-ui/assets/scheme-D9qYN0V5.js +1 -0
- package/dist/apps/context-files-ui/assets/{shell-BjiMLAaM.js → shell-DwuoZtxw.js} +1 -1
- package/dist/apps/context-files-ui/assets/{simple-mode-DnMbQuKW.js → simple-mode-DXiLM1-G.js} +1 -1
- package/dist/apps/context-files-ui/assets/sql-DuQMFDvy.js +1 -0
- package/dist/apps/context-files-ui/assets/{stex-BCRT8IJ3.js → stex-DNzd62Q_.js} +1 -1
- package/dist/apps/context-files-ui/assets/{stylus-CARoeVE9.js → stylus-BOVgKnng.js} +1 -1
- package/dist/apps/context-files-ui/assets/textile-C4jVoHG1.js +1 -0
- package/dist/apps/context-files-ui/assets/tiki-AK6FwT8q.js +1 -0
- package/dist/apps/context-files-ui/assets/toml-BPTmHmyx.js +1 -0
- package/dist/apps/context-files-ui/assets/{ttcn-GvRgs2AT.js → ttcn-PPSTk1ow.js} +1 -1
- package/dist/apps/context-files-ui/assets/{ttcn-cfg-CGCXz7Vo.js → ttcn-cfg-2b4Gb5sE.js} +1 -1
- package/dist/apps/context-files-ui/assets/turtle-Cx3rYX2g.js +1 -0
- package/dist/apps/context-files-ui/assets/{verilog-DVCHmufx.js → verilog-7LoJAqYT.js} +1 -1
- package/dist/apps/context-files-ui/assets/vhdl-kS471soi.js +1 -0
- package/dist/apps/{chat-ui/assets/xquery-5f0hn7cg.js → context-files-ui/assets/xquery-BKJx4mf9.js} +1 -1
- package/dist/apps/context-files-ui/assets/z80-Co3PbHdE.js +1 -0
- package/dist/apps/context-files-ui/index.html +5 -3
- package/dist/apps/vscode-artifacts/latest.vsix +0 -0
- package/dist/apps/vscode-artifacts/pibo-vscode-ext-2.2.0.vsix +0 -0
- package/dist/auth/better-auth.js +223 -30
- package/dist/auth/cli.js +10 -1
- package/dist/auth/machine-keys.js +8 -4
- package/dist/auth/openai-codex-usage.js +4 -4
- package/dist/cli-session/fakeSessionSource.js +2 -2
- package/dist/cli-session/localSessionSource.js +2 -2
- package/dist/cli.js +3 -1
- package/dist/config/config.js +9 -4
- package/dist/core/compaction-prompt.js +3 -1
- package/dist/core/context-build.js +1 -0
- package/dist/core/pibo-home.js +24 -1
- package/dist/core/private-path.js +146 -0
- package/dist/core/profiles.js +8 -0
- package/dist/core/sensitive-data-redaction.js +36 -0
- package/dist/core/session-model.js +1 -0
- package/dist/core/session-router.js +219 -29
- package/dist/data/pibo-store.js +5 -1
- package/dist/gateway/server.js +9 -0
- package/dist/index.js +1 -1
- package/dist/plugins/builtin.js +4 -2
- package/dist/plugins/context-files.js +11 -0
- package/dist/plugins/omp.js +57 -0
- package/dist/plugins/registry.js +1 -0
- package/dist/providers/openai-gpt56.js +0 -11
- package/dist/reliability/store.js +5 -1
- package/dist/resources/lifecycle.js +13 -3
- package/dist/runs/resource-isolation.js +159 -8
- package/dist/runs/tools.js +44 -1
- package/dist/sessions/pibo-data-store.js +3 -0
- package/dist/tools/codex-browser-node-repl.js +4 -2
- package/dist/tools/codex-browser.js +1 -1
- package/dist/tools/codex-image-generation.js +4 -4
- package/dist/tools/runtime/node-backend.js +4 -1
- package/dist/tools/runtime/python-backend.js +4 -1
- package/dist/web-annotations/api.js +22 -2
- package/npm-shrinkwrap.json +16707 -0
- package/package.json +19 -14
- package/dist/apps/chat-ui/assets/asciiarmor-WLvjqI7d.js +0 -1
- package/dist/apps/chat-ui/assets/clike-CjmcUpt6.js +0 -1
- package/dist/apps/chat-ui/assets/cmake-i2VDNaRq.js +0 -1
- package/dist/apps/chat-ui/assets/cobol-BwO6DF08.js +0 -1
- package/dist/apps/chat-ui/assets/coffeescript-BtivDvRz.js +0 -1
- package/dist/apps/chat-ui/assets/commonlisp-DFkEQdLP.js +0 -1
- package/dist/apps/chat-ui/assets/crystal-CU0NkcVL.js +0 -1
- package/dist/apps/chat-ui/assets/css-CbMZAQ1W.js +0 -1
- package/dist/apps/chat-ui/assets/dist-9v2ZXT6V.js +0 -11
- package/dist/apps/chat-ui/assets/dist-B1LVAytl.js +0 -9
- package/dist/apps/chat-ui/assets/dist-B5PTVnox.js +0 -1
- package/dist/apps/chat-ui/assets/dist-B5ZAfwf5.js +0 -1
- package/dist/apps/chat-ui/assets/dist-D1KyNDg5.js +0 -13
- package/dist/apps/chat-ui/assets/dist-DVtXxfHc.js +0 -1
- package/dist/apps/chat-ui/assets/dist-DW4Qrfbd.js +0 -2
- package/dist/apps/chat-ui/assets/dist-DmbsHdMC.js +0 -1
- package/dist/apps/chat-ui/assets/dist-DyvwuSFO.js +0 -1
- package/dist/apps/chat-ui/assets/dist-QQuDy4KA.js +0 -1
- package/dist/apps/chat-ui/assets/dist-RtHbJRPV.js +0 -1
- package/dist/apps/chat-ui/assets/groovy-Cmduloe1.js +0 -1
- package/dist/apps/chat-ui/assets/index-BPbNvcZe.css +0 -1
- package/dist/apps/chat-ui/assets/index-CIOf2uL2.js +0 -237
- package/dist/apps/chat-ui/assets/javascript-C5pDVaoP.js +0 -1
- package/dist/apps/chat-ui/assets/perl-D6YJObi_.js +0 -1
- package/dist/apps/chat-ui/assets/puppet-B_0GFuyD.js +0 -1
- package/dist/apps/chat-ui/assets/python-Cs7sNzy_.js +0 -1
- package/dist/apps/chat-ui/assets/r-CN5s4f3o.js +0 -1
- package/dist/apps/chat-ui/assets/ruby-BVPradRk.js +0 -1
- package/dist/apps/chat-ui/assets/scheme-CvNgHAnh.js +0 -1
- package/dist/apps/chat-ui/assets/sql-DYI2GwJR.js +0 -1
- package/dist/apps/chat-ui/assets/textile-Yg_UWn-t.js +0 -1
- package/dist/apps/chat-ui/assets/tiki-CC_ic8g0.js +0 -1
- package/dist/apps/chat-ui/assets/toml-B7gGzVkJ.js +0 -1
- package/dist/apps/chat-ui/assets/turtle-CwIpz2yy.js +0 -1
- package/dist/apps/chat-ui/assets/vhdl-BGDk4f1d.js +0 -1
- package/dist/apps/chat-ui/assets/z80-B7Dfb4UO.js +0 -1
- package/dist/apps/chat-vscode-web/assets/index-1ivRyjFs.js +0 -41
- package/dist/apps/chat-vscode-web/assets/index-Dupu1DzQ.css +0 -2
- package/dist/apps/context-files-ui/assets/asciiarmor-WLvjqI7d.js +0 -1
- package/dist/apps/context-files-ui/assets/clike-CjmcUpt6.js +0 -1
- package/dist/apps/context-files-ui/assets/cmake-i2VDNaRq.js +0 -1
- package/dist/apps/context-files-ui/assets/cobol-BwO6DF08.js +0 -1
- package/dist/apps/context-files-ui/assets/coffeescript-BtivDvRz.js +0 -1
- package/dist/apps/context-files-ui/assets/commonlisp-DFkEQdLP.js +0 -1
- package/dist/apps/context-files-ui/assets/crystal-CU0NkcVL.js +0 -1
- package/dist/apps/context-files-ui/assets/css-CbMZAQ1W.js +0 -1
- package/dist/apps/context-files-ui/assets/dist-B5PTVnox.js +0 -1
- package/dist/apps/context-files-ui/assets/dist-B5ZAfwf5.js +0 -1
- package/dist/apps/context-files-ui/assets/dist-BD262Ouw.js +0 -1
- package/dist/apps/context-files-ui/assets/dist-BKuGdcnX.js +0 -9
- package/dist/apps/context-files-ui/assets/dist-CHdx1Jri.js +0 -1
- package/dist/apps/context-files-ui/assets/dist-CULMH-fB.js +0 -11
- package/dist/apps/context-files-ui/assets/dist-Cjq6RWEt.js +0 -1
- package/dist/apps/context-files-ui/assets/dist-CntqFySz.js +0 -1
- package/dist/apps/context-files-ui/assets/dist-D1KyNDg5.js +0 -13
- package/dist/apps/context-files-ui/assets/dist-QQuDy4KA.js +0 -1
- package/dist/apps/context-files-ui/assets/dist-kPuQud7t.js +0 -2
- package/dist/apps/context-files-ui/assets/groovy-Cmduloe1.js +0 -1
- package/dist/apps/context-files-ui/assets/index-DZWsbuvg.js +0 -202
- package/dist/apps/context-files-ui/assets/javascript-C5pDVaoP.js +0 -1
- package/dist/apps/context-files-ui/assets/perl-D6YJObi_.js +0 -1
- package/dist/apps/context-files-ui/assets/puppet-B_0GFuyD.js +0 -1
- package/dist/apps/context-files-ui/assets/python-Cs7sNzy_.js +0 -1
- package/dist/apps/context-files-ui/assets/r-CN5s4f3o.js +0 -1
- package/dist/apps/context-files-ui/assets/ruby-BVPradRk.js +0 -1
- package/dist/apps/context-files-ui/assets/scheme-CvNgHAnh.js +0 -1
- package/dist/apps/context-files-ui/assets/sql-DYI2GwJR.js +0 -1
- package/dist/apps/context-files-ui/assets/textile-Yg_UWn-t.js +0 -1
- package/dist/apps/context-files-ui/assets/tiki-CC_ic8g0.js +0 -1
- package/dist/apps/context-files-ui/assets/toml-B7gGzVkJ.js +0 -1
- package/dist/apps/context-files-ui/assets/turtle-CwIpz2yy.js +0 -1
- package/dist/apps/context-files-ui/assets/vhdl-BGDk4f1d.js +0 -1
- package/dist/apps/context-files-ui/assets/z80-B7Dfb4UO.js +0 -1
- package/dist/apps/vscode-artifacts/pibo-vscode-ext-2.0.0.vsix +0 -0
- /package/dist/apps/chat-ui/assets/{brainfuck-CV9kufud.js → brainfuck-D5EjA2JK.js} +0 -0
- /package/dist/apps/chat-ui/assets/{clojure-De3QGfx6.js → clojure-BflJGmDX.js} +0 -0
- /package/dist/apps/chat-ui/assets/{cypher-Dke5QOzv.js → cypher-p9eYesGn.js} +0 -0
- /package/dist/apps/chat-ui/assets/{diff-B365LSoZ.js → diff-ChtP43wD.js} +0 -0
- /package/dist/apps/chat-ui/assets/{dtd-CBMymJ7O.js → dtd-DTF72YNO.js} +0 -0
- /package/dist/apps/chat-ui/assets/{ebnf-Dkum_1J8.js → ebnf-D4c0_ac3.js} +0 -0
- /package/dist/apps/chat-ui/assets/{eiffel-C446m6dI.js → eiffel-BEjRio4Q.js} +0 -0
- /package/dist/apps/chat-ui/assets/{elm-po1E9de0.js → elm-Cshzl8qu.js} +0 -0
- /package/dist/apps/chat-ui/assets/{fcl-DkEOamHd.js → fcl-ClOhbFR7.js} +0 -0
- /package/dist/apps/chat-ui/assets/{forth-dCg2_HVB.js → forth-Cezjo90N.js} +0 -0
- /package/dist/apps/chat-ui/assets/{fortran-3ZpXLFh1.js → fortran-Bt6PBEDR.js} +0 -0
- /package/dist/apps/chat-ui/assets/{gas-DMmxLZRI.js → gas-BHEdbvp9.js} +0 -0
- /package/dist/apps/chat-ui/assets/{gherkin-DUSFg2R6.js → gherkin-oBAE_ms0.js} +0 -0
- /package/dist/apps/chat-ui/assets/{haskell-Cyr255R9.js → haskell-BRsoo5mP.js} +0 -0
- /package/dist/apps/chat-ui/assets/{http-DszHFpc-.js → http-CLVgA2GD.js} +0 -0
- /package/dist/apps/chat-ui/assets/{idl-Cati9Nrv.js → idl-BUZw3wgd.js} +0 -0
- /package/dist/apps/chat-ui/assets/{julia-DlqY1cTU.js → julia-CQfgDRfP.js} +0 -0
- /package/dist/apps/chat-ui/assets/{livescript-C6p8-2W1.js → livescript-BXxG0Yva.js} +0 -0
- /package/dist/apps/chat-ui/assets/{mathematica-nDHZUMJT.js → mathematica-u8YMmbU0.js} +0 -0
- /package/dist/apps/chat-ui/assets/{mbox-DAaR0Hcz.js → mbox-BEMVcqjs.js} +0 -0
- /package/dist/apps/chat-ui/assets/{mirc-CCA0FRfl.js → mirc-C9zpzAZU.js} +0 -0
- /package/dist/apps/chat-ui/assets/{mllike-Cw3Iccsb.js → mllike-B45xgp2S.js} +0 -0
- /package/dist/apps/chat-ui/assets/{modelica-Czx80fNR.js → modelica-CqHI_q-D.js} +0 -0
- /package/dist/apps/chat-ui/assets/{mscgen-BmfuTbzG.js → mscgen-qgSLujhx.js} +0 -0
- /package/dist/apps/chat-ui/assets/{nginx-D9M2PQ4U.js → nginx-BMaDbqW3.js} +0 -0
- /package/dist/apps/chat-ui/assets/{octave-8jj96JiC.js → octave-D2Q8cUp1.js} +0 -0
- /package/dist/apps/chat-ui/assets/{oz-BmMq7iC4.js → oz-BwTct_5T.js} +0 -0
- /package/dist/apps/chat-ui/assets/{pascal-BgMr6XpT.js → pascal-Dp_KdFgX.js} +0 -0
- /package/dist/apps/chat-ui/assets/{pig-nx7uchs8.js → pig-AF4Hwhju.js} +0 -0
- /package/dist/apps/chat-ui/assets/{properties-CoavQdLC.js → properties-C357ku5U.js} +0 -0
- /package/dist/apps/chat-ui/assets/{protobuf-D5EWhcmc.js → protobuf-D1ij_kNL.js} +0 -0
- /package/dist/apps/chat-ui/assets/{q-BIB9pPtI.js → q-B9NhS7L_.js} +0 -0
- /package/dist/apps/chat-ui/assets/{rpm-Ct_Ck8mQ.js → rpm-gpDK5sbt.js} +0 -0
- /package/dist/apps/chat-ui/assets/{sas-DN4j74IF.js → sas-C2OyD2Y6.js} +0 -0
- /package/dist/apps/chat-ui/assets/{sieve-C2U1O5Z4.js → sieve-BAxa3IjF.js} +0 -0
- /package/dist/apps/chat-ui/assets/{smalltalk-DkYwYufV.js → smalltalk-BLp5-jwC.js} +0 -0
- /package/dist/apps/chat-ui/assets/{solr-BopnSD-v.js → solr-BBopId9w.js} +0 -0
- /package/dist/apps/chat-ui/assets/{sparql-Cpg3YQfd.js → sparql-Dz-mlCAC.js} +0 -0
- /package/dist/apps/chat-ui/assets/{spreadsheet-kRxtVt9J.js → spreadsheet-CTIncYxj.js} +0 -0
- /package/dist/apps/chat-ui/assets/{swift-DKNaLAK6.js → swift-DKB6_1j6.js} +0 -0
- /package/dist/apps/chat-ui/assets/{tcl-CQyXkgMH.js → tcl-BGfruO1u.js} +0 -0
- /package/dist/apps/chat-ui/assets/{tiddlywiki-dqVbkfX4.js → tiddlywiki-VlUiK86J.js} +0 -0
- /package/dist/apps/chat-ui/assets/{troff-Bq3z6oAu.js → troff-C2dAgh7P.js} +0 -0
- /package/dist/apps/chat-ui/assets/{vb-BmcHUM2C.js → vb-BthdM_4N.js} +0 -0
- /package/dist/apps/chat-ui/assets/{vbscript-Cs9dylre.js → vbscript-D9f6rSsU.js} +0 -0
- /package/dist/apps/chat-ui/assets/{velocity-CBWU0VCy.js → velocity-CqftRsjg.js} +0 -0
- /package/dist/apps/chat-ui/assets/{webidl-egXQEWlC.js → webidl-D5jiJvOU.js} +0 -0
- /package/dist/apps/chat-ui/assets/{yacas-DNs9XkmQ.js → yacas-CXXgtw0p.js} +0 -0
- /package/dist/apps/context-files-ui/assets/{brainfuck-CV9kufud.js → brainfuck-D5EjA2JK.js} +0 -0
- /package/dist/apps/context-files-ui/assets/{clojure-De3QGfx6.js → clojure-BflJGmDX.js} +0 -0
- /package/dist/apps/context-files-ui/assets/{cypher-Dke5QOzv.js → cypher-p9eYesGn.js} +0 -0
- /package/dist/apps/context-files-ui/assets/{diff-B365LSoZ.js → diff-ChtP43wD.js} +0 -0
- /package/dist/apps/context-files-ui/assets/{dtd-CBMymJ7O.js → dtd-DTF72YNO.js} +0 -0
- /package/dist/apps/context-files-ui/assets/{ebnf-Dkum_1J8.js → ebnf-D4c0_ac3.js} +0 -0
- /package/dist/apps/context-files-ui/assets/{eiffel-C446m6dI.js → eiffel-BEjRio4Q.js} +0 -0
- /package/dist/apps/context-files-ui/assets/{elm-po1E9de0.js → elm-Cshzl8qu.js} +0 -0
- /package/dist/apps/context-files-ui/assets/{fcl-DkEOamHd.js → fcl-ClOhbFR7.js} +0 -0
- /package/dist/apps/context-files-ui/assets/{forth-dCg2_HVB.js → forth-Cezjo90N.js} +0 -0
- /package/dist/apps/context-files-ui/assets/{fortran-3ZpXLFh1.js → fortran-Bt6PBEDR.js} +0 -0
- /package/dist/apps/context-files-ui/assets/{gas-DMmxLZRI.js → gas-BHEdbvp9.js} +0 -0
- /package/dist/apps/context-files-ui/assets/{gherkin-DUSFg2R6.js → gherkin-oBAE_ms0.js} +0 -0
- /package/dist/apps/context-files-ui/assets/{haskell-Cyr255R9.js → haskell-BRsoo5mP.js} +0 -0
- /package/dist/apps/context-files-ui/assets/{http-DszHFpc-.js → http-CLVgA2GD.js} +0 -0
- /package/dist/apps/context-files-ui/assets/{idl-Cati9Nrv.js → idl-BUZw3wgd.js} +0 -0
- /package/dist/apps/context-files-ui/assets/{julia-DlqY1cTU.js → julia-CQfgDRfP.js} +0 -0
- /package/dist/apps/context-files-ui/assets/{livescript-C6p8-2W1.js → livescript-BXxG0Yva.js} +0 -0
- /package/dist/apps/context-files-ui/assets/{mathematica-nDHZUMJT.js → mathematica-u8YMmbU0.js} +0 -0
- /package/dist/apps/context-files-ui/assets/{mbox-DAaR0Hcz.js → mbox-BEMVcqjs.js} +0 -0
- /package/dist/apps/context-files-ui/assets/{mirc-CCA0FRfl.js → mirc-C9zpzAZU.js} +0 -0
- /package/dist/apps/context-files-ui/assets/{mllike-Cw3Iccsb.js → mllike-B45xgp2S.js} +0 -0
- /package/dist/apps/context-files-ui/assets/{modelica-Czx80fNR.js → modelica-CqHI_q-D.js} +0 -0
- /package/dist/apps/context-files-ui/assets/{mscgen-BmfuTbzG.js → mscgen-qgSLujhx.js} +0 -0
- /package/dist/apps/context-files-ui/assets/{nginx-D9M2PQ4U.js → nginx-BMaDbqW3.js} +0 -0
- /package/dist/apps/context-files-ui/assets/{octave-8jj96JiC.js → octave-D2Q8cUp1.js} +0 -0
- /package/dist/apps/context-files-ui/assets/{oz-BmMq7iC4.js → oz-BwTct_5T.js} +0 -0
- /package/dist/apps/context-files-ui/assets/{pascal-BgMr6XpT.js → pascal-Dp_KdFgX.js} +0 -0
- /package/dist/apps/context-files-ui/assets/{pig-nx7uchs8.js → pig-AF4Hwhju.js} +0 -0
- /package/dist/apps/context-files-ui/assets/{properties-CoavQdLC.js → properties-C357ku5U.js} +0 -0
- /package/dist/apps/context-files-ui/assets/{protobuf-D5EWhcmc.js → protobuf-D1ij_kNL.js} +0 -0
- /package/dist/apps/context-files-ui/assets/{q-BIB9pPtI.js → q-B9NhS7L_.js} +0 -0
- /package/dist/apps/context-files-ui/assets/{rpm-Ct_Ck8mQ.js → rpm-gpDK5sbt.js} +0 -0
- /package/dist/apps/context-files-ui/assets/{sas-DN4j74IF.js → sas-C2OyD2Y6.js} +0 -0
- /package/dist/apps/context-files-ui/assets/{sieve-C2U1O5Z4.js → sieve-BAxa3IjF.js} +0 -0
- /package/dist/apps/context-files-ui/assets/{smalltalk-DkYwYufV.js → smalltalk-BLp5-jwC.js} +0 -0
- /package/dist/apps/context-files-ui/assets/{solr-BopnSD-v.js → solr-BBopId9w.js} +0 -0
- /package/dist/apps/context-files-ui/assets/{sparql-Cpg3YQfd.js → sparql-Dz-mlCAC.js} +0 -0
- /package/dist/apps/context-files-ui/assets/{spreadsheet-kRxtVt9J.js → spreadsheet-CTIncYxj.js} +0 -0
- /package/dist/apps/context-files-ui/assets/{swift-DKNaLAK6.js → swift-DKB6_1j6.js} +0 -0
- /package/dist/apps/context-files-ui/assets/{tcl-CQyXkgMH.js → tcl-BGfruO1u.js} +0 -0
- /package/dist/apps/context-files-ui/assets/{tiddlywiki-dqVbkfX4.js → tiddlywiki-VlUiK86J.js} +0 -0
- /package/dist/apps/context-files-ui/assets/{troff-Bq3z6oAu.js → troff-C2dAgh7P.js} +0 -0
- /package/dist/apps/context-files-ui/assets/{vb-BmcHUM2C.js → vb-BthdM_4N.js} +0 -0
- /package/dist/apps/context-files-ui/assets/{vbscript-Cs9dylre.js → vbscript-D9f6rSsU.js} +0 -0
- /package/dist/apps/context-files-ui/assets/{velocity-CBWU0VCy.js → velocity-CqftRsjg.js} +0 -0
- /package/dist/apps/context-files-ui/assets/{webidl-egXQEWlC.js → webidl-D5jiJvOU.js} +0 -0
- /package/dist/apps/context-files-ui/assets/{yacas-DNs9XkmQ.js → yacas-CXXgtw0p.js} +0 -0
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { spawn } from "node:child_process";
|
|
2
2
|
import { createHash, randomUUID } from "node:crypto";
|
|
3
|
-
import {
|
|
4
|
-
import { isAbsolute, join, relative, resolve, sep } from "node:path";
|
|
3
|
+
import { lstat, mkdir, realpath, rm, rmdir, writeFile, } from "node:fs/promises";
|
|
4
|
+
import { extname, isAbsolute, join, relative, resolve, sep } from "node:path";
|
|
5
|
+
import { protectPrivatePathsSync } from "../../core/private-path.js";
|
|
5
6
|
import { CodexAppServerClient } from "./client.js";
|
|
6
7
|
import { CODEX_APP_SERVER_PROTOCOL_NAME, CODEX_APP_SERVER_SUPPORTED_RANGE, CODEX_APP_SERVER_VERSION, } from "./protocol-version.js";
|
|
7
8
|
const MAX_VERSION_OUTPUT_BYTES = 64 * 1024;
|
|
@@ -59,12 +60,13 @@ function isInside(root, candidate) {
|
|
|
59
60
|
const child = relative(root, candidate);
|
|
60
61
|
return child === "" || (!child.startsWith(`..${sep}`) && child !== ".." && !isAbsolute(child));
|
|
61
62
|
}
|
|
62
|
-
async function
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
63
|
+
async function ensurePrivateDirectories(paths) {
|
|
64
|
+
for (const path of paths) {
|
|
65
|
+
await mkdir(path, { recursive: true, mode: PRIVATE_DIRECTORY_MODE });
|
|
66
|
+
const metadata = await lstat(path);
|
|
67
|
+
if (metadata.isSymbolicLink() || !metadata.isDirectory())
|
|
68
|
+
throw new Error("runtime path is not a private directory");
|
|
69
|
+
}
|
|
68
70
|
}
|
|
69
71
|
async function ensurePrivateConfig(path) {
|
|
70
72
|
try {
|
|
@@ -77,12 +79,17 @@ async function ensurePrivateConfig(path) {
|
|
|
77
79
|
const metadata = await lstat(path);
|
|
78
80
|
if (metadata.isSymbolicLink() || !metadata.isFile())
|
|
79
81
|
throw new Error("runtime config is not a private regular file");
|
|
80
|
-
await chmod(path, PRIVATE_FILE_MODE);
|
|
81
82
|
}
|
|
82
83
|
function nodeErrorCode(error) {
|
|
83
84
|
const code = error?.code;
|
|
84
85
|
return typeof code === "string" && /^[A-Z0-9_]+$/.test(code) ? code : undefined;
|
|
85
86
|
}
|
|
87
|
+
function codexExecutableInvocation(executable, args) {
|
|
88
|
+
if (process.platform === "win32" && isAbsolute(executable) && [".js", ".cjs", ".mjs"].includes(extname(executable).toLowerCase())) {
|
|
89
|
+
return { command: process.execPath, args: [executable, ...args] };
|
|
90
|
+
}
|
|
91
|
+
return { command: executable, args: [...args] };
|
|
92
|
+
}
|
|
86
93
|
export async function prepareCodexNativeInstancePaths(config, runtimeInstanceId) {
|
|
87
94
|
if (!runtimeInstanceId.trim())
|
|
88
95
|
throw new CodexNativeProcessError("home_unavailable", "Codex runtime instance id is required.");
|
|
@@ -92,8 +99,7 @@ export async function prepareCodexNativeInstancePaths(config, runtimeInstanceId)
|
|
|
92
99
|
const root = join(canonicalHomeRoot, safeSegment(runtimeInstanceId));
|
|
93
100
|
const codexHome = join(root, "codex-home");
|
|
94
101
|
const sessions = join(root, "sessions");
|
|
95
|
-
|
|
96
|
-
await ensurePrivateDirectory(path);
|
|
102
|
+
await ensurePrivateDirectories([canonicalHomeRoot, root, codexHome, sessions]);
|
|
97
103
|
const canonicalRoot = await realpath(root);
|
|
98
104
|
for (const path of [codexHome, sessions]) {
|
|
99
105
|
const canonical = await realpath(path);
|
|
@@ -102,6 +108,10 @@ export async function prepareCodexNativeInstancePaths(config, runtimeInstanceId)
|
|
|
102
108
|
}
|
|
103
109
|
const configFile = join(codexHome, "config.toml");
|
|
104
110
|
await ensurePrivateConfig(configFile);
|
|
111
|
+
protectPrivatePathsSync([
|
|
112
|
+
...([canonicalHomeRoot, root, codexHome, sessions].map((path) => ({ path, kind: "directory" }))),
|
|
113
|
+
{ path: configFile, kind: "file" },
|
|
114
|
+
]);
|
|
105
115
|
return { root: canonicalRoot, codexHome: await realpath(codexHome), configFile, sessions: await realpath(sessions) };
|
|
106
116
|
}
|
|
107
117
|
catch {
|
|
@@ -117,17 +127,16 @@ export async function prepareCodexNativeSessionPaths(input) {
|
|
|
117
127
|
const generationRoot = join(sessionRoot, safeSegment(input.sessionGeneration));
|
|
118
128
|
let sessionDirectoryReady = false;
|
|
119
129
|
try {
|
|
120
|
-
await ensurePrivateDirectory(sessionRoot);
|
|
121
|
-
sessionDirectoryReady = true;
|
|
122
130
|
const processHome = join(generationRoot, "home");
|
|
123
131
|
const temp = join(generationRoot, "tmp");
|
|
124
132
|
const xdgCache = join(processHome, ".cache");
|
|
125
133
|
const xdgConfig = join(processHome, ".config");
|
|
126
134
|
const xdgData = join(processHome, ".local", "share");
|
|
127
135
|
const xdgState = join(processHome, ".local", "state");
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
}
|
|
136
|
+
const privateDirectories = [sessionRoot, generationRoot, processHome, temp, xdgCache, xdgConfig, xdgData, xdgState];
|
|
137
|
+
await ensurePrivateDirectories(privateDirectories);
|
|
138
|
+
protectPrivatePathsSync(privateDirectories.map((path) => ({ path, kind: "directory" })));
|
|
139
|
+
sessionDirectoryReady = true;
|
|
131
140
|
const canonicalGenerationRoot = await realpath(generationRoot);
|
|
132
141
|
if (!isInside(instance.sessions, canonicalGenerationRoot))
|
|
133
142
|
throw new Error("runtime generation escaped its session root");
|
|
@@ -209,7 +218,8 @@ async function probeCodexVersion(config, environment) {
|
|
|
209
218
|
return await new Promise((resolveProbe) => {
|
|
210
219
|
let child;
|
|
211
220
|
try {
|
|
212
|
-
|
|
221
|
+
const invocation = codexExecutableInvocation(config.executable, ["--version"]);
|
|
222
|
+
child = spawn(invocation.command, invocation.args, { env: environment, stdio: ["ignore", "pipe", "pipe"] });
|
|
213
223
|
}
|
|
214
224
|
catch (error) {
|
|
215
225
|
resolveProbe({ status: "failed", errorCode: nodeErrorCode(error) });
|
|
@@ -413,18 +423,19 @@ export async function startCodexNativeAppServer(input) {
|
|
|
413
423
|
let client;
|
|
414
424
|
try {
|
|
415
425
|
const capabilities = { experimentalApi: false };
|
|
426
|
+
const invocation = codexExecutableInvocation(input.config.executable, [
|
|
427
|
+
"app-server",
|
|
428
|
+
"--stdio",
|
|
429
|
+
"--strict-config",
|
|
430
|
+
"-c",
|
|
431
|
+
`tools.experimental_request_user_input.enabled=${input.config.experimentalUserInput}`,
|
|
432
|
+
"-c",
|
|
433
|
+
`features.default_mode_request_user_input=${input.config.experimentalUserInput}`,
|
|
434
|
+
]);
|
|
416
435
|
client = await CodexAppServerClient.start({
|
|
417
|
-
command:
|
|
436
|
+
command: invocation.command,
|
|
418
437
|
fileCreationMask: 0o077,
|
|
419
|
-
args:
|
|
420
|
-
"app-server",
|
|
421
|
-
"--stdio",
|
|
422
|
-
"--strict-config",
|
|
423
|
-
"-c",
|
|
424
|
-
`tools.experimental_request_user_input.enabled=${input.config.experimentalUserInput}`,
|
|
425
|
-
"-c",
|
|
426
|
-
`features.default_mode_request_user_input=${input.config.experimentalUserInput}`,
|
|
427
|
-
],
|
|
438
|
+
args: invocation.args,
|
|
428
439
|
cwd: resolve(input.workspace),
|
|
429
440
|
env: buildCodexNativeProcessEnvironment({
|
|
430
441
|
config: input.config,
|
|
@@ -56,7 +56,9 @@ function optionalStringArray(value, label, maxItems = 512, maxLength = 256) {
|
|
|
56
56
|
function buildDeveloperInstructions(resources) {
|
|
57
57
|
if (!resources)
|
|
58
58
|
return undefined;
|
|
59
|
-
const contributions = resources.getContextContributions().filter((contribution) => contribution.id !== ENABLED_MCP_CONTEXT_ID
|
|
59
|
+
const contributions = resources.getContextContributions().filter((contribution) => contribution.id !== ENABLED_MCP_CONTEXT_ID
|
|
60
|
+
&& !contribution.nativeDiscovered
|
|
61
|
+
&& contribution.content?.trim());
|
|
60
62
|
if (contributions.length === 0)
|
|
61
63
|
return undefined;
|
|
62
64
|
if (contributions.length > MAX_CONTEXT_CONTRIBUTIONS) {
|
|
@@ -252,18 +254,18 @@ export class CodexNativeResourceDelivery {
|
|
|
252
254
|
threadConfig;
|
|
253
255
|
developerInstructions;
|
|
254
256
|
skillRoots;
|
|
255
|
-
|
|
257
|
+
selectedSkills;
|
|
256
258
|
expectedMcpServers;
|
|
257
259
|
portableTools;
|
|
258
260
|
mcpAccess;
|
|
259
261
|
credentialIssuedAtMs;
|
|
260
262
|
credentialExpiresAtMs;
|
|
261
|
-
constructor(environment, threadConfig, developerInstructions, skillRoots,
|
|
263
|
+
constructor(environment, threadConfig, developerInstructions, skillRoots, selectedSkills, expectedMcpServers, portableTools, mcpAccess, credentialIssuedAtMs, credentialExpiresAtMs) {
|
|
262
264
|
this.environment = environment;
|
|
263
265
|
this.threadConfig = threadConfig;
|
|
264
266
|
this.developerInstructions = developerInstructions;
|
|
265
267
|
this.skillRoots = skillRoots;
|
|
266
|
-
this.
|
|
268
|
+
this.selectedSkills = selectedSkills;
|
|
267
269
|
this.expectedMcpServers = expectedMcpServers;
|
|
268
270
|
this.portableTools = portableTools;
|
|
269
271
|
this.mcpAccess = mcpAccess;
|
|
@@ -318,17 +320,26 @@ export class CodexNativeResourceDelivery {
|
|
|
318
320
|
};
|
|
319
321
|
expectedMcpServers.push({ name: serverName, toolNames: [...mcpAccess.allowedToolNames] });
|
|
320
322
|
}
|
|
321
|
-
const
|
|
322
|
-
? await Promise.all(input.resources.
|
|
323
|
+
const selectedSkills = input.resources
|
|
324
|
+
? await Promise.all(input.resources.getInspection().skills.flatMap((skill) => {
|
|
325
|
+
const path = skill.materializedPath;
|
|
326
|
+
return path ? [{ name: skill.name, path }] : [];
|
|
327
|
+
}).map(async (skill) => ({ ...skill, path: await realpath(skill.path) })))
|
|
323
328
|
: [];
|
|
324
329
|
const materializedSkillsRoot = input.resources?.getInspection().paths?.skills;
|
|
325
|
-
const skillRoots =
|
|
330
|
+
const skillRoots = selectedSkills.length > 0 && materializedSkillsRoot
|
|
326
331
|
? [await realpath(materializedSkillsRoot)]
|
|
327
332
|
: [];
|
|
328
|
-
const threadConfig =
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
333
|
+
const threadConfig = {};
|
|
334
|
+
if (Object.keys(codexMcpServers).length > 0)
|
|
335
|
+
threadConfig.mcp_servers = asJsonValue(codexMcpServers);
|
|
336
|
+
if (input.nativeSubagentsEnabled !== undefined) {
|
|
337
|
+
threadConfig.features = input.nativeSubagentsEnabled
|
|
338
|
+
? { multi_agent: true, multi_agent_v2: true }
|
|
339
|
+
: { multi_agent: false, multi_agent_v2: false };
|
|
340
|
+
threadConfig.agents = { enabled: input.nativeSubagentsEnabled };
|
|
341
|
+
}
|
|
342
|
+
return new CodexNativeResourceDelivery(resourceEnvironment, Object.keys(threadConfig).length > 0 ? threadConfig : undefined, buildDeveloperInstructions(input.resources), skillRoots, selectedSkills, expectedMcpServers, input.portableTools, mcpAccess, credentialIssuedAtMs, credentialExpiresAtMs);
|
|
332
343
|
}
|
|
333
344
|
catch (error) {
|
|
334
345
|
if (mcpAccess && input.portableTools)
|
|
@@ -382,20 +393,32 @@ export class CodexNativeResourceDelivery {
|
|
|
382
393
|
throw new Error("Codex could not load the selected Pibo skills.");
|
|
383
394
|
}
|
|
384
395
|
const loadedPaths = new Set();
|
|
396
|
+
const loadedSkills = new Map();
|
|
385
397
|
for (const entry of response.data) {
|
|
386
398
|
if (!isRecord(entry) || !Array.isArray(entry.skills) || !Array.isArray(entry.errors)) {
|
|
387
399
|
throw new Error("Codex skills/list returned an invalid entry.");
|
|
388
400
|
}
|
|
389
401
|
for (const skill of entry.skills) {
|
|
390
|
-
if (!isRecord(skill) || typeof skill.path !== "string" || typeof skill.enabled !== "boolean") {
|
|
402
|
+
if (!isRecord(skill) || typeof skill.name !== "string" || typeof skill.path !== "string" || typeof skill.enabled !== "boolean") {
|
|
391
403
|
throw new Error("Codex skills/list returned an invalid skill.");
|
|
392
404
|
}
|
|
393
|
-
if (skill.enabled)
|
|
394
|
-
|
|
405
|
+
if (skill.enabled) {
|
|
406
|
+
const path = await realpath(skill.path).catch(() => skill.path);
|
|
407
|
+
loadedPaths.add(path);
|
|
408
|
+
const sameNamePaths = loadedSkills.get(skill.name) ?? new Set();
|
|
409
|
+
sameNamePaths.add(path);
|
|
410
|
+
loadedSkills.set(skill.name, sameNamePaths);
|
|
411
|
+
}
|
|
395
412
|
}
|
|
396
413
|
}
|
|
397
|
-
|
|
398
|
-
|
|
414
|
+
for (const skill of this.selectedSkills) {
|
|
415
|
+
const sameNamePaths = loadedSkills.get(skill.name) ?? new Set();
|
|
416
|
+
const conflictingPath = [...sameNamePaths].find((path) => path !== skill.path);
|
|
417
|
+
if (conflictingPath) {
|
|
418
|
+
throw new Error(`Selected Pibo skill "${skill.name}" conflicts with a native Codex skill; explicit Pibo-skill precedence cannot be guaranteed.`);
|
|
419
|
+
}
|
|
420
|
+
if (!loadedPaths.has(skill.path))
|
|
421
|
+
throw new Error(`Codex did not load selected Pibo skill "${skill.name}".`);
|
|
399
422
|
}
|
|
400
423
|
}
|
|
401
424
|
async verifyThread(client, threadId) {
|
|
@@ -217,11 +217,12 @@ function toolFailed(item) {
|
|
|
217
217
|
return false;
|
|
218
218
|
return ["declined", "failed", "error"].includes(item.status.toLowerCase());
|
|
219
219
|
}
|
|
220
|
-
function newPendingTurn() {
|
|
220
|
+
function newPendingTurn(kind = "turn") {
|
|
221
221
|
const completion = deferred();
|
|
222
222
|
const turnIdReady = deferred();
|
|
223
223
|
void completion.promise.catch(() => { });
|
|
224
224
|
return {
|
|
225
|
+
kind,
|
|
225
226
|
completion,
|
|
226
227
|
turnIdReady,
|
|
227
228
|
turnIdReadySettled: false,
|
|
@@ -238,6 +239,8 @@ function newPendingTurn() {
|
|
|
238
239
|
reasoningSummaryParts: new Map(),
|
|
239
240
|
reasoningContentParts: new Map(),
|
|
240
241
|
completedReasoningItems: new Set(),
|
|
242
|
+
compactionStarted: false,
|
|
243
|
+
compactionEnded: false,
|
|
241
244
|
startedTools: new Map(),
|
|
242
245
|
completedTools: new Set(),
|
|
243
246
|
};
|
|
@@ -311,6 +314,36 @@ export class CodexNativeTurnController {
|
|
|
311
314
|
throw error;
|
|
312
315
|
}
|
|
313
316
|
}
|
|
317
|
+
async compact() {
|
|
318
|
+
if (this.disposed)
|
|
319
|
+
throw new Error("Codex native turn controller is disposed.");
|
|
320
|
+
if (this.pending)
|
|
321
|
+
throw new Error("Codex native session already has an active turn.");
|
|
322
|
+
const pending = newPendingTurn("compaction");
|
|
323
|
+
this.pending = pending;
|
|
324
|
+
this.ensureCompactionStarted(pending);
|
|
325
|
+
try {
|
|
326
|
+
await this.client.request("thread/compact/start", { threadId: this.threads.thread.id });
|
|
327
|
+
await pending.completion.promise;
|
|
328
|
+
}
|
|
329
|
+
catch (error) {
|
|
330
|
+
if (!pending.terminal && this.pending === pending) {
|
|
331
|
+
const normalized = error instanceof Error ? error : new Error("Codex compaction could not be completed.");
|
|
332
|
+
if (pending.started || pending.turnId) {
|
|
333
|
+
this.failActiveTurn(pending, normalized, runtimeSessionErrorDetails(safeDiagnosticText(normalized.message)));
|
|
334
|
+
}
|
|
335
|
+
else {
|
|
336
|
+
this.finishCompaction(pending, {
|
|
337
|
+
aborted: false,
|
|
338
|
+
errorMessage: safeDiagnosticText(normalized.message),
|
|
339
|
+
});
|
|
340
|
+
this.pending = undefined;
|
|
341
|
+
this.resolveTurnId(pending, undefined);
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
throw error;
|
|
345
|
+
}
|
|
346
|
+
}
|
|
314
347
|
async steer(text, clientUserMessageId) {
|
|
315
348
|
const pending = this.pending;
|
|
316
349
|
if (!pending || pending.terminal)
|
|
@@ -350,6 +383,12 @@ export class CodexNativeTurnController {
|
|
|
350
383
|
const pending = this.pending;
|
|
351
384
|
this.pending = undefined;
|
|
352
385
|
if (pending && !pending.terminal) {
|
|
386
|
+
if ((pending.kind === "compaction" || pending.compactionStarted) && !pending.compactionEnded) {
|
|
387
|
+
this.finishCompaction(pending, {
|
|
388
|
+
aborted: true,
|
|
389
|
+
errorMessage: "Codex native compaction was interrupted because the session was disposed.",
|
|
390
|
+
});
|
|
391
|
+
}
|
|
353
392
|
pending.terminal = true;
|
|
354
393
|
this.resolveTurnId(pending, undefined);
|
|
355
394
|
pending.completion.reject(new CodexAppServerClientError("closed", "Codex native turn controller was disposed"));
|
|
@@ -636,7 +675,7 @@ export class CodexNativeTurnController {
|
|
|
636
675
|
if (item.type === "reasoning")
|
|
637
676
|
this.ensureReasoningStarted(pending, item.id);
|
|
638
677
|
else if (item.type === "contextCompaction") {
|
|
639
|
-
this.
|
|
678
|
+
this.ensureCompactionStarted(pending);
|
|
640
679
|
}
|
|
641
680
|
else {
|
|
642
681
|
this.ensureToolStarted(pending, item);
|
|
@@ -672,9 +711,7 @@ export class CodexNativeTurnController {
|
|
|
672
711
|
return;
|
|
673
712
|
}
|
|
674
713
|
if (item.type === "contextCompaction") {
|
|
675
|
-
this.
|
|
676
|
-
type: "compaction_end",
|
|
677
|
-
reason: "codex_context_compaction",
|
|
714
|
+
this.finishCompaction(pending, {
|
|
678
715
|
result: redactCodexNativeValue(item),
|
|
679
716
|
aborted: false,
|
|
680
717
|
});
|
|
@@ -692,6 +729,25 @@ export class CodexNativeTurnController {
|
|
|
692
729
|
isError: toolFailed(item),
|
|
693
730
|
});
|
|
694
731
|
}
|
|
732
|
+
ensureCompactionStarted(pending) {
|
|
733
|
+
if (pending.compactionStarted)
|
|
734
|
+
return;
|
|
735
|
+
pending.compactionStarted = true;
|
|
736
|
+
this.emit({ type: "compaction_start", reason: "codex_context_compaction" });
|
|
737
|
+
}
|
|
738
|
+
finishCompaction(pending, input) {
|
|
739
|
+
this.ensureCompactionStarted(pending);
|
|
740
|
+
if (pending.compactionEnded)
|
|
741
|
+
return;
|
|
742
|
+
pending.compactionEnded = true;
|
|
743
|
+
this.emit({
|
|
744
|
+
type: "compaction_end",
|
|
745
|
+
reason: "codex_context_compaction",
|
|
746
|
+
...(input.result !== undefined ? { result: input.result } : {}),
|
|
747
|
+
aborted: input.aborted,
|
|
748
|
+
...(input.errorMessage ? { errorMessage: input.errorMessage } : {}),
|
|
749
|
+
});
|
|
750
|
+
}
|
|
695
751
|
assistantIndex(pending, itemId) {
|
|
696
752
|
const existing = pending.assistantIndices.get(itemId);
|
|
697
753
|
if (existing !== undefined)
|
|
@@ -781,6 +837,13 @@ export class CodexNativeTurnController {
|
|
|
781
837
|
pending.completion.resolve(persistedTurn);
|
|
782
838
|
}
|
|
783
839
|
finishIncompleteItems(pending, status) {
|
|
840
|
+
if ((pending.kind === "compaction" || pending.compactionStarted) && !pending.compactionEnded) {
|
|
841
|
+
this.finishCompaction(pending, {
|
|
842
|
+
aborted: status === "interrupted",
|
|
843
|
+
...(status === "failed" ? { errorMessage: "Codex compaction ended before item/completed." } : {}),
|
|
844
|
+
result: { status },
|
|
845
|
+
});
|
|
846
|
+
}
|
|
784
847
|
for (const [itemId, text] of pending.assistantBuffers) {
|
|
785
848
|
if (pending.completedAssistantItems.has(itemId) || !text)
|
|
786
849
|
continue;
|