@bastani/atomic 0.9.25-alpha.2 → 0.9.25-alpha.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (118) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/dist/builtin/intercom/package.json +2 -2
  3. package/dist/builtin/mcp/CHANGELOG.md +13 -0
  4. package/dist/builtin/mcp/index.bundle.mjs +489 -208
  5. package/dist/builtin/mcp/package.json +2 -2
  6. package/dist/builtin/subagents/package.json +3 -3
  7. package/dist/builtin/web-access/package.json +2 -2
  8. package/dist/builtin/workflows/CHANGELOG.md +12 -0
  9. package/dist/builtin/workflows/builtin/{chunk-e1254zvd.js → chunk-kfsnh3w7.js} +40 -12
  10. package/dist/builtin/workflows/builtin/{chunk-cpw5gtzg.js → chunk-rqmasd3d.js} +1 -1
  11. package/dist/builtin/workflows/builtin/{chunk-qy6g0baf.js → chunk-wz783pvd.js} +1 -1
  12. package/dist/builtin/workflows/builtin/goal.js +2 -2
  13. package/dist/builtin/workflows/builtin/index.js +3 -3
  14. package/dist/builtin/workflows/builtin/ralph.js +2 -2
  15. package/dist/builtin/workflows/package.json +2 -2
  16. package/dist/builtin/workflows/src/extension/index.bundle.mjs +472 -88
  17. package/dist/builtin/workflows/src/index.js +65 -28
  18. package/dist/core/agent-session-accessors.d.ts.map +1 -1
  19. package/dist/core/agent-session-accessors.js +7 -0
  20. package/dist/core/agent-session-accessors.js.map +1 -1
  21. package/dist/core/agent-session-extension-bindings.d.ts.map +1 -1
  22. package/dist/core/agent-session-extension-bindings.js +16 -2
  23. package/dist/core/agent-session-extension-bindings.js.map +1 -1
  24. package/dist/core/agent-session-methods.d.ts +7 -1
  25. package/dist/core/agent-session-methods.d.ts.map +1 -1
  26. package/dist/core/agent-session-methods.js.map +1 -1
  27. package/dist/core/agent-session-state.d.ts.map +1 -1
  28. package/dist/core/agent-session-state.js +3 -2
  29. package/dist/core/agent-session-state.js.map +1 -1
  30. package/dist/core/agent-session-types.d.ts +1 -0
  31. package/dist/core/agent-session-types.d.ts.map +1 -1
  32. package/dist/core/agent-session-types.js.map +1 -1
  33. package/dist/core/agent-session.d.ts +3 -0
  34. package/dist/core/agent-session.d.ts.map +1 -1
  35. package/dist/core/agent-session.js +6 -0
  36. package/dist/core/agent-session.js.map +1 -1
  37. package/dist/core/extensions/api-types.d.ts +3 -0
  38. package/dist/core/extensions/api-types.d.ts.map +1 -1
  39. package/dist/core/extensions/api-types.js.map +1 -1
  40. package/dist/core/extensions/index.d.ts +2 -0
  41. package/dist/core/extensions/index.d.ts.map +1 -1
  42. package/dist/core/extensions/index.js +1 -0
  43. package/dist/core/extensions/index.js.map +1 -1
  44. package/dist/core/extensions/loader-api.d.ts.map +1 -1
  45. package/dist/core/extensions/loader-api.js +11 -0
  46. package/dist/core/extensions/loader-api.js.map +1 -1
  47. package/dist/core/extensions/loader-runtime.d.ts.map +1 -1
  48. package/dist/core/extensions/loader-runtime.js +3 -0
  49. package/dist/core/extensions/loader-runtime.js.map +1 -1
  50. package/dist/core/extensions/mcp-server-registry.d.ts.map +1 -1
  51. package/dist/core/extensions/mcp-server-registry.js +4 -0
  52. package/dist/core/extensions/mcp-server-registry.js.map +1 -1
  53. package/dist/core/extensions/runner.d.ts +3 -0
  54. package/dist/core/extensions/runner.d.ts.map +1 -1
  55. package/dist/core/extensions/runner.js +4 -0
  56. package/dist/core/extensions/runner.js.map +1 -1
  57. package/dist/core/extensions/runtime-types.d.ts +3 -0
  58. package/dist/core/extensions/runtime-types.d.ts.map +1 -1
  59. package/dist/core/extensions/runtime-types.js.map +1 -1
  60. package/dist/core/extensions/tool-types.d.ts +1 -0
  61. package/dist/core/extensions/tool-types.d.ts.map +1 -1
  62. package/dist/core/extensions/tool-types.js.map +1 -1
  63. package/dist/core/extensions/workflow-run-control-hub.d.ts +23 -0
  64. package/dist/core/extensions/workflow-run-control-hub.d.ts.map +1 -0
  65. package/dist/core/extensions/workflow-run-control-hub.js +57 -0
  66. package/dist/core/extensions/workflow-run-control-hub.js.map +1 -0
  67. package/dist/core/extensions/workflow-run-control.d.ts +163 -0
  68. package/dist/core/extensions/workflow-run-control.d.ts.map +1 -0
  69. package/dist/core/extensions/workflow-run-control.js +73 -0
  70. package/dist/core/extensions/workflow-run-control.js.map +1 -0
  71. package/dist/core/mcp-servers.d.ts +4 -1
  72. package/dist/core/mcp-servers.d.ts.map +1 -1
  73. package/dist/core/mcp-servers.js.map +1 -1
  74. package/dist/core/remote-catalog-provider.d.ts.map +1 -1
  75. package/dist/core/remote-catalog-provider.js +4 -9
  76. package/dist/core/remote-catalog-provider.js.map +1 -1
  77. package/dist/core/sdk.js +1 -0
  78. package/dist/core/sdk.js.map +1 -1
  79. package/dist/core/tool-loadout.d.ts +1 -0
  80. package/dist/core/tool-loadout.d.ts.map +1 -1
  81. package/dist/core/tool-loadout.js +3 -0
  82. package/dist/core/tool-loadout.js.map +1 -1
  83. package/dist/core/tools/bash.d.ts.map +1 -1
  84. package/dist/core/tools/bash.js +11 -30
  85. package/dist/core/tools/bash.js.map +1 -1
  86. package/dist/extensions/codemode/execute.d.ts.map +1 -1
  87. package/dist/extensions/codemode/execute.js +26 -0
  88. package/dist/extensions/codemode/execute.js.map +1 -1
  89. package/dist/extensions/codemode/renderer.d.ts.map +1 -1
  90. package/dist/extensions/codemode/renderer.js +38 -23
  91. package/dist/extensions/codemode/renderer.js.map +1 -1
  92. package/dist/extensions/codemode/tool.d.ts.map +1 -1
  93. package/dist/extensions/codemode/tool.js +22 -10
  94. package/dist/extensions/codemode/tool.js.map +1 -1
  95. package/dist/extensions/tool-search/tool.d.ts +1 -1
  96. package/dist/extensions/tool-search/tool.d.ts.map +1 -1
  97. package/dist/extensions/tool-search/tool.js +3 -13
  98. package/dist/extensions/tool-search/tool.js.map +1 -1
  99. package/dist/index-extensions.d.ts +2 -1
  100. package/dist/index-extensions.d.ts.map +1 -1
  101. package/dist/index-extensions.js +1 -1
  102. package/dist/index-extensions.js.map +1 -1
  103. package/dist/modes/interactive/components/visual-truncate.d.ts +27 -3
  104. package/dist/modes/interactive/components/visual-truncate.d.ts.map +1 -1
  105. package/dist/modes/interactive/components/visual-truncate.js +39 -6
  106. package/dist/modes/interactive/components/visual-truncate.js.map +1 -1
  107. package/docs/extensions/events.md +2 -0
  108. package/docs/mcp-servers.md +47 -0
  109. package/docs/providers.md +8 -0
  110. package/docs/sdk/reference.md +16 -0
  111. package/docs/sdk.md +67 -1
  112. package/docs/settings.md +2 -0
  113. package/docs/tools.md +6 -0
  114. package/docs/workflows/operations.md +3 -1
  115. package/examples/extensions/built-in-tool-renderer.ts +16 -40
  116. package/examples/extensions/minimal-mode.ts +28 -108
  117. package/npm-shrinkwrap.json +69 -69
  118. package/package.json +8 -8
@@ -1 +1 @@
1
- {"version":3,"file":"sdk.js","sourceRoot":"","sources":["../../src/core/sdk.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAsC,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC7G,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,EAAE,KAAK,EAAqB,kBAAkB,EAAsB,MAAM,+BAA+B,CAAC;AACjH,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,OAAO,EAAE,oCAAoC,EAAE,MAAM,+BAA+B,CAAC;AACrF,OAAO,EAAE,8BAA8B,EAAE,MAAM,oBAAoB,CAAC;AACpE,OAAO,EAAE,0BAA0B,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC3F,OAAO,EAAE,yBAAyB,EAAE,MAAM,8BAA8B,CAAC;AACzE,OAAO,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AACxE,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAEvD,OAAO,EACN,mBAAmB,EACnB,oBAAoB,EACpB,2BAA2B,GAC3B,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAC;AAC7G,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EACN,yBAAyB,EACzB,8BAA8B,EAC9B,2BAA2B,GAC3B,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AACtE,OAAO,EAAE,gBAAgB,EAAE,6BAA6B,EAAE,MAAM,qBAAqB,CAAC;AACtF,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAwC,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAClG,OAAO,EAAE,8BAA8B,EAAE,MAAM,yCAAyC,CAAC;AACzF,OAAO,EAAE,+BAA+B,EAAE,MAAM,2BAA2B,CAAC;AAC5E,OAAO,EAAE,gCAAgC,EAAE,MAAM,6BAA6B,CAAC;AAC/E,OAAO,EAAE,gCAAgC,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAE/F,OAAO,EAAE,wBAAwB,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AAChG,OAAO,EAAE,wBAAwB,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC1G,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC5E,OAAO,EAAE,uBAAuB,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AACzF,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,2BAA2B,EAAE,MAAM,gCAAgC,CAAC;AAC7E,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAGrE,cAAc,kBAAkB,CAAC;AAGjC,+EAA+E;AAC/E,8DAA8D;AAC9D,kBAAkB,CAAC,YAAY,CAAC,CAAC;AAEjC,mBAAmB;AAEnB,SAAS,kBAAkB;IAC1B,OAAO,WAAW,EAAE,CAAC;AACtB,CAAC;AAED,4GAA4G;AAC5G,SAAS,yBAAyB,CACjC,OAAoC,EACpC,YAAyC,EACzC,cAA2C;IAE3C,IAAI,CAAC,OAAO,IAAI,CAAC,YAAY;QAAE,OAAO,OAAO,CAAC;IAC9C,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IAClG,MAAM,QAAQ,GAAG,EAAE,GAAG,OAAO,EAAE,CAAC;IAChC,KAAK,MAAM,CAAC,SAAS,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;QACpE,MAAM,SAAS,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC;QAC1C,IAAI,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC;YAAE,SAAS;QAC1C,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;YACtD,IAAI,IAAI,CAAC,WAAW,EAAE,KAAK,SAAS,IAAI,KAAK,KAAK,UAAU;gBAAE,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC;QACrF,CAAC;IACF,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;AAChE,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,OAAO,GAA8B,EAAE;IAC/E,OAAO,mBAAmB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;AAC5C,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,2BAA2B,CAAC,OAAkC;IAC7E,OAAO,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AAC3C,CAAC;AAED,SAAS,mBAAmB,CAC3B,OAAkC,EAClC,UAAmB;IAEnB,MAAM,SAAS,GAAG,wBAAwB,CAAC,QAAQ,EAAE,CAAC;IACtD,MAAM,OAAO,GAAG,SAAS,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;IAC5E,OAAO,wBAAwB,CAAC,GAAG,CAAC,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,KAAK,IAAI,EAAE;QAC7E,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC,GAAG,CAC3C,EAAE,OAAO,EAAE,IAAI,GAAG,EAAE,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,EACxD,KAAK,IAAI,EAAE;YACV,IAAI,CAAC;gBACJ,OAAO,MAAM,qBAAqB,CACjC,EAAE,GAAG,OAAO,EAAE,iBAAiB,EAAE,OAAO,CAAC,iBAAiB,IAAI,OAAO,CAAC,QAAQ,EAAE,EAChF,UAAU,CACV,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBAChB,MAAM,oBAAoB,CAAC,KAAK,EAAE,MAAM,2BAA2B,EAAE,CAAC,CAAC;YACxE,CAAC;QACF,CAAC,CACD,CAAC;QACF,sBAAsB,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;QAC1D,OAAO,MAAM,CAAC;IACf,CAAC,CAAC,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,qBAAqB,CACnC,OAAkC,EAClC,UAAmB;IAEnB,MAAM,GAAG,GAAG,WAAW,CAAC,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,cAAc,EAAE,MAAM,EAAE,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAC1F,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,kBAAkB,EAAE,CAAC;IACzF,IAAI,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;IAC5C,+EAA+E;IAC/E,iFAAiF;IACjF,6EAA6E;IAC7E,IAAI,gCAAgC,CAAC,cAAc,CAAC,EAAE,CAAC;QACtD,cAAc,GAAG,MAAM,cAAc,CAAC,mBAAmB,CAAC,wBAAwB,CAAC,QAAQ,EAAG,CAAC,KAAK,CAAC,CAAC;IACvG,CAAC;IACD,IAAI,cAAc;QAAE,cAAc,GAAG,MAAM,8BAA8B,CAAC,cAAc,CAAC,CAAC;IAE1F,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC5E,MAAM,UAAU,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAChF,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,CAAC,MAAM,YAAY,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC;IACnG,MAAM,YAAY,CAAC,OAAO,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC;IAEpD,MAAM,eAAe,GAAG,OAAO,CAAC,eAAe,IAAI,eAAe,CAAC,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IACzF,MAAM,cAAc,GAAG,OAAO,CAAC,cAAc,IAAI,cAAc,CAAC,MAAM,CAAC,GAAG,EAAE,oBAAoB,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC;IAEjH,2EAA2E;IAC3E,+EAA+E;IAC/E,2EAA2E;IAC3E,0EAA0E;IAC1E,IAAI,OAAO,CAAC,oBAAoB,EAAE,IAAI,KAAK,gBAAgB,EAAE,CAAC;QAC7D,MAAM,GAAG,GAAG,OAAO,CAAC,oBAAoB,CAAC;QACzC,cAAc,CAAC,mBAAmB,CAAC;YAClC,KAAK,EAAE,GAAG,CAAC,aAAa;YACxB,OAAO,EAAE,GAAG,CAAC,eAAe;YAC5B,SAAS,EAAE,GAAG,CAAC,iBAAiB;SAChC,CAAC,CAAC;IACJ,CAAC;IAED,MAAM,wBAAwB,GAC7B,OAAO,CAAC,oBAAoB,EAAE,IAAI,KAAK,gBAAgB,IAAI,OAAO,CAAC,cAAc,KAAK,SAAS,CAAC;IACjG,IAAI,CAAC,cAAc,EAAE,CAAC;QACrB,cAAc,GAAG,IAAI,qBAAqB,CAAC;YAC1C,GAAG;YACH,QAAQ;YACR,eAAe;YACf,mBAAmB,EAAE,sBAAsB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAC5E,wBAAwB,IAAI,QAAQ,CAAC,MAAM,CAAC,KAAK,WAAW,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAClG;SACD,CAAC,CAAC;QACH,MAAM,cAAc,CAAC,MAAM,EAAE,CAAC;QAC9B,IAAI,CAAC,uBAAuB,CAAC,CAAC;IAC/B,CAAC;IACD,IACC,CAAC,OAAO,CAAC,cAAc,IAAI,OAAO,CAAC,QAAQ,IAAI,wBAAwB,CAAC;QACxE,CAAC,CAAC,yBAAyB,CAAC,cAAc,CAAC,IAAI,OAAO,CAAC,QAAQ,IAAI,wBAAwB,CAAC,EAC3F,CAAC;QACF,cAAc,GAAG,MAAM,yBAAyB,CAC/C,cAAc,EACd,GAAG,EACH,QAAQ,EACR,OAAO,CAAC,QAAQ,EAChB,wBAAwB,CACxB,CAAC;IACH,CAAC;IACD,IAAI,OAAO,CAAC,QAAQ,EAAE,QAAQ,KAAK,KAAK,EAAE,CAAC;QAC1C,cAAc,GAAG,MAAM,2BAA2B,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;IACzE,CAAC;IAED,gDAAgD;IAChD,MAAM,eAAe,GAAG,cAAc,CAAC,mBAAmB,EAAE,CAAC;IAC7D,MAAM,gBAAgB,GAAG,uBAAuB,CAAC,eAAe,CAAC,QAAQ,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC;IACrG,MAAM,gBAAgB,GAAG,OAAO,CAAC,uBAAuB;QACvD,CAAC,CAAC,OAAO,CAAC,uBAAuB,CAAC,gBAAgB,CAAC;QACnD,CAAC,CAAC,gBAAgB,CAAC;IACpB,MAAM,kBAAkB,GAAG,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC;IACvD,MAAM,gBAAgB,GAAG,cAAc,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,uBAAuB,CAAC,CAAC;IAE5G,IAAI,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;IAC1B,IAAI,oBAAwC,CAAC;IAC7C,IAAI,mBAAwF,CAAC;IAE7F,oDAAoD;IACpD,IAAI,CAAC,KAAK,IAAI,kBAAkB,IAAI,eAAe,CAAC,KAAK,EAAE,CAAC;QAC3D,KAAK,GAAG,MAAM,6BAA6B,CAC1C,eAAe,CAAC,KAAK,CAAC,QAAQ,EAC9B,eAAe,CAAC,KAAK,CAAC,OAAO,EAC7B,YAAY,CACZ,CAAC;QACF,IAAI,CAAC,KAAK,EAAE,CAAC;YACZ,oBAAoB,GAAG,2BAA2B,eAAe,CAAC,KAAK,CAAC,QAAQ,IAAI,eAAe,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;YACpH,mBAAmB,GAAG,iBAAiB,CAAC;QACzC,CAAC;IACF,CAAC;IACD,IAAI,CAAC,KAAK,EAAE,CAAC;QACZ,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC;YACrC,YAAY,EAAE,EAAE;YAChB,YAAY,EAAE,kBAAkB;YAChC,eAAe,EAAE,eAAe,CAAC,kBAAkB,EAAE;YACrD,cAAc,EAAE,eAAe,CAAC,eAAe,EAAE;YACjD,oBAAoB,EAAE,eAAe,CAAC,uBAAuB,EAAE;YAC/D,mBAAmB,EAAE,eAAe,CAAC,yBAAyB,EAAE;YAChE,YAAY;SACZ,CAAC,CAAC;QACH,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QACrB,IAAI,CAAC,KAAK,EAAE,CAAC;YACZ,IAAI,MAAM,CAAC,cAAc,KAAK,iCAAiC,EAAE,CAAC;gBACjE,oBAAoB,GAAG,MAAM,CAAC,eAAe,CAAC;gBAC9C,mBAAmB,GAAG,MAAM,CAAC,cAAc,CAAC;YAC7C,CAAC;iBAAM,IAAI,CAAC,oBAAoB,EAAE,CAAC;gBAClC,oBAAoB,GAAG,MAAM,CAAC,eAAe,IAAI,8BAA8B,EAAE,CAAC;gBAClF,mBAAmB,GAAG,MAAM,CAAC,cAAc,IAAI,qBAAqB,CAAC;YACtE,CAAC;QACF,CAAC;aAAM,IAAI,oBAAoB,EAAE,CAAC;YACjC,oBAAoB,IAAI,WAAW,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,EAAE,EAAE,CAAC;QACjE,CAAC;IACF,CAAC;IAED,IAAI,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;IAE1C,sDAAsD;IACtD,IAAI,aAAa,KAAK,SAAS,IAAI,kBAAkB,EAAE,CAAC;QACvD,aAAa,GAAG,gBAAgB;YAC/B,CAAC,CAAE,eAAe,CAAC,aAA+B;YAClD,CAAC,CAAC,CAAC,eAAe,CAAC,uBAAuB,EAAE,IAAI,sBAAsB,CAAC,CAAC;IAC1E,CAAC;IAED,uDAAuD;IACvD,IAAI,aAAa,KAAK,SAAS,IAAI,KAAK,EAAE,CAAC;QAC1C,aAAa,GAAG,eAAe,CAAC,qBAAqB,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;IACjF,CAAC;IACD,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;QACjC,aAAa,GAAG,eAAe,CAAC,uBAAuB,EAAE,IAAI,sBAAsB,CAAC;IACrF,CAAC;IAED,8BAA8B;IAC9B,IAAI,CAAC,KAAK,EAAE,CAAC;QACZ,aAAa,GAAG,KAAK,CAAC;IACvB,CAAC;SAAM,CAAC;QACP,aAAa,GAAG,kBAAkB,CAAC,KAAK,EAAE,aAAa,CAAkB,CAAC;IAC3E,CAAC;IAED,0EAA0E;IAC1E,2EAA2E;IAC3E,2EAA2E;IAC3E,+EAA+E;IAC/E,MAAM,0BAA0B,GAAG,eAAe,CAAC,eAAe,EAAE,CAAC;IACrE,MAAM,gBAAgB,GACrB,OAAO,CAAC,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IAC/F,MAAM,sBAAsB,GAAa,gBAAgB;QACxD,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC;QACvB,CAAC,CAAC,OAAO,CAAC,OAAO;YAChB,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,CAAC,GAAG,CAAC,0BAA0B,IAAI,mBAAmB,EAAE,CAAC,CAAC,CAAC;IAC/D,MAAM,aAAa,GAAG,EAAE,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAC9C,MAAM,kBAAkB,GAAG;QAC1B,GAAG,CAAC,OAAO,CAAC,aAAa,IAAI,EAAE,CAAC;QAChC,GAAG,CAAC,gBAAgB,KAAK,SAAS;YACjC,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,sBAAsB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YAC5E,CAAC,CAAC,EAAE,CAAC;KACN,CAAC;IAEF,IAAI,KAAY,CAAC;IAEjB,IAAI,wBAA+C,CAAC;IAEpD,+FAA+F;IAC/F,MAAM,2BAA2B,GAAG,CAAC,QAAwB,EAAa,EAAE;QAC3E,MAAM,SAAS,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;QACzC,+DAA+D;QAC/D,IAAI,CAAC,eAAe,CAAC,cAAc,EAAE,EAAE,CAAC;YACvC,wBAAwB,GAAG,SAAS,CAAC;YACrC,OAAO,SAAS,CAAC;QAClB,CAAC;QACD,6EAA6E;QAC7E,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,EAAW,EAAE;YAC/C,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,IAAI,GAAG,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;gBACtD,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;gBAC5B,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;oBAC5B,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC;oBAC1D,IAAI,SAAS,EAAE,CAAC;wBACf,MAAM,eAAe,GAAG,OAAO;6BAC7B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACV,CAAC,CAAC,IAAI,KAAK,OAAO;4BACjB,CAAC,CAAC;gCACA,IAAI,EAAE,MAAe;gCACrB,IAAI,EAAE,4BAA4B;6BAClC;4BACF,CAAC,CAAC,CAAC,CACJ;6BACA,MAAM,CACN,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE;wBACb,wDAAwD;wBACxD,CAAC,CACA,CAAC,CAAC,IAAI,KAAK,MAAM;4BACjB,CAAC,CAAC,IAAI,KAAK,4BAA4B;4BACvC,CAAC,GAAG,CAAC;4BACL,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM;4BACzB,GAAG,CAAC,CAAC,GAAG,CAAC,CAAoC,CAAC,IAAI,KAAK,4BAA4B,CACpF,CACF,CAAC;wBACH,kFAAkF;wBAClF,mFAAmF;wBACnF,0CAA0C;wBAC1C,OAAO,EAAE,GAAG,GAAG,EAAE,OAAO,EAAE,eAAe,EAAa,CAAC;oBACxD,CAAC;gBACF,CAAC;YACF,CAAC;YACD,OAAO,GAAG,CAAC;QACZ,CAAC,CAAC,CAAC;QACH,wBAAwB,GAAG,QAAQ,CAAC;QACpC,OAAO,QAAQ,CAAC;IACjB,CAAC,CAAC;IAEF,MAAM,kBAAkB,GAAkC,EAAE,CAAC;IAC7D,MAAM,WAAW,GAAG,IAAI,WAAW,CAClC;QACC,YAAY,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,EAAE;YAChD,MAAM,SAAS,GAAG,YAAY,CAAC,2BAA2B,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YAC3E,OAAO,iBAAiB,CAAC,KAAK,CAAC,EAAE,WAAW,KAAK,SAAS;gBACzD,CAAC,CAAC,SAAS,EAAE,YAAY,IAAI,SAAS,CAAC,GAAG,KAAK,KAAK,CAAC,GAAG,CAAC;gBACzD,CAAC,CAAC,mBAAmB,CAAC,KAAK,EAAE,OAAO,EAAE,cAAc,CAAC;gBACrD,CAAC,CAAC,YAAY,CAAC,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,cAAc,CAAC,CAAC;QAC9D,CAAC;KACD,EACD,cAAc,EACd,GAAG,EAAE,CAAC,eAAe,CAAC,mBAAmB,EAAE,EAC3C,KAAK,EAAE,KAAK,EAAE,EAAE;QACf,MAAM,MAAM,GAAG,kBAAkB,CAAC,OAAO,CAAC;QAC1C,IAAI,CAAC,MAAM,EAAE,CAAC;YACb,OAAO,KAAK,CAAC,MAAM,CAAC;QACrB,CAAC;QACD,OAAO,CAAC,MAAM,MAAM,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC;IACvE,CAAC,EACD,CAAC,OAAO,EAAE,EAAE,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,CAC/C,CAAC;IAEF,MAAM,yBAAyB,GAA0E,KAAK,EAC7G,IAAI,EACJ,KAAK,EACJ,EAAE;QACH,MAAM,MAAM,GAAG,kBAAkB,CAAC,OAAO,CAAC;QAC1C,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,uBAAuB,CAAC;YAAE,OAAO;QAC1D,MAAM,MAAM,CAAC,IAAI,CAAC;YACjB,IAAI,EAAE,uBAAuB;YAC7B,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,GAAG,EAAE,KAAK,CAAC,GAAG;YACd,KAAK,EAAE,KAAK,CAAC,EAAE;YACf,IAAI;SACJ,CAAC,CAAC;IACJ,CAAC,CAAC;IAEF,KAAK,GAAG,IAAI,KAAK,CAAC;QACjB,YAAY,EAAE;YACb,YAAY,EAAE,EAAE;YAChB,KAAK;YACL,aAAa;YACb,KAAK,EAAE,EAAE;YACT,QAAQ,EAAE,gBAAgB;SAC1B;QACD,YAAY,EAAE,2BAA2B;QACzC,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,EAAE;YACjD,MAAM,UAAU,GAAG,MAAM,YAAY,CAAC,cAAc,CAAC,KAAK,EAAE;gBAC3D,MAAM,EAAE,aAAa,EAAE,MAAM;gBAC7B,GAAG,EAAE,aAAa,EAAE,GAAG;gBACvB,MAAM,EAAE,aAAa,EAAE,MAAM;aAC7B,CAAC,CAAC;YACH,MAAM,aAAa,GAAG,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,6BAA6B,CAAC,KAAK,CAAC,CAAC;YACjG,IAAI,CAAC,UAAU,IAAI,aAAa,EAAE,UAAU,EAAE,CAAC;gBAC9C,MAAM,IAAI,KAAK,CAAC,yBAAyB,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC;YAC7D,CAAC;YACD,MAAM,IAAI,GAAG;gBACZ,MAAM,EAAE,UAAU,EAAE,IAAI,CAAC,MAAM;gBAC/B,OAAO,EAAE,UAAU,EAAE,IAAI,CAAC,OAAO,IAAI,aAAa,EAAE,OAAO;gBAC3D,OAAO,EAAE,UAAU,EAAE,IAAI,CAAC,OAAO;gBACjC,GAAG,EAAE,UAAU,EAAE,GAAG;aACpB,CAAC;YACF,MAAM,YAAY,GACjB,IAAI,CAAC,OAAO,KAAK,SAAS,IAAI,IAAI,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;YAC5G,MAAM,qBAAqB,GAAG,eAAe,CAAC,wBAAwB,EAAE,CAAC;YACzE,MAAM,iBAAiB,GAAG,eAAe,CAAC,oBAAoB,EAAE,CAAC;YACjE,qEAAqE;YACrE,oDAAoD;YACpD,MAAM,kBAAkB,GAAG,iBAAiB,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,iBAAiB,CAAC;YACpF,MAAM,SAAS,GAAG,aAAa,EAAE,SAAS,IAAI,qBAAqB,CAAC,SAAS,IAAI,kBAAkB,CAAC;YACpG,MAAM,yBAAyB,GAC9B,aAAa,EAAE,yBAAyB,IAAI,eAAe,CAAC,4BAA4B,EAAE,CAAC;YAC5F,MAAM,gBAAgB,GAAG,aAAa,EAAE,gBAAgB,IAAI,eAAe,CAAC,mBAAmB,EAAE,CAAC;YAClG,MAAM,cAAc,GAAG,+BAA+B,CACrD,KAAK,EACL,eAAe,EACf,aAAa,EAAE,SAAS,EACxB,IAAI,CAAC,OAAO,EACZ,aAAa,EAAE,OAAO,CACtB,CAAC;YACF,MAAM,aAAa,GAAG,YAAY,CAAC,KAAK,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;YAClE,MAAM,YAAY,GAAG,kBAAkB,CAAC,OAAO,CAAC;YAChD,MAAM,gBAAgB,GAAG,YAAY,EAAE,WAAW,CAAC,yBAAyB,CAAC;gBAC5E,CAAC,CAAC,MAAM,YAAY,CAAC,yBAAyB,CAAC,aAAa,IAAI,EAAE,CAAC;gBACnE,CAAC,CAAC,aAAa,CAAC;YACjB,MAAM,iBAAiB,GAAG,YAAY,CAAC,2BAA2B,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;YAC1F,MAAM,mBAAmB,GACxB,iBAAiB,EAAE,YAAY,KAAK,SAAS,IAAI,YAAY,CAAC,GAAG,KAAK,iBAAiB,CAAC,GAAG,CAAC;YAC7F,MAAM,gBAAgB,GAAG,mBAAmB;gBAC3C,CAAC,CAAC,gBAAgB;gBAClB,CAAC,CAAC,yBAAyB,CAAC,gBAAgB,EAAE,KAAK,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;YAC9E,8FAA8F;YAC9F,2FAA2F;YAC3F,qFAAqF;YACrF,MAAM,SAAS,GAAG,iBAAiB,CAAC,YAAY,CAAC,CAAC;YAClD,IAAI,SAAS,EAAE,WAAW,KAAK,SAAS,IAAI,CAAC,mBAAmB,IAAI,CAAC,UAAU,EAAE,CAAC;gBACjF,MAAM,IAAI,KAAK,CAAC,yBAAyB,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC;YAC7D,CAAC;YACD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,aAAa,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,aAAa,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;YAChG,MAAM,iBAAiB,GAAG,mBAAmB,CAAC,oBAAoB,EAAE,GAAG,CAAC,CAAC;YACzE,6FAA6F;YAC7F,MAAM,cAAc,GACnB,aAAa,EAAE,cAAc;gBAC7B,CAAC,iBAAiB,KAAK,MAAM;oBAC5B,CAAC,CAAC,MAAM;oBACR,CAAC,CAAC,CAAC,iBAAiB;wBACnB,CAAC,CAAC,wBAAwB,CAAC,YAAY,CAAC;wBACxC,CAAC,CAAC,iBAAiB,KAAK,MAAM;4BAC7B,CAAC,CAAC,MAAM;4BACR,CAAC,CAAC,OAAO,CAAC,CAAC;YACf,MAAM,sBAAsB,GAAG,0BAA0B,CAAC,SAAS,EAAE;gBACpE,GAAG,aAAa;gBAChB,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,GAAG;gBACH,cAAc;gBACd,SAAS;gBACT,yBAAyB;gBACzB,gBAAgB;gBAChB,UAAU,EAAE,aAAa,EAAE,UAAU,IAAI,qBAAqB,CAAC,UAAU;gBACzE,eAAe,EAAE,aAAa,EAAE,eAAe,IAAI,qBAAqB,CAAC,eAAe;gBACxF,OAAO,EAAE,gBAAgB;aACzB,CAAC,CAAC;YACH,MAAM,qBAAqB,GAAoC;gBAC9D,GAAG,sBAAsB;gBACzB,mBAAmB,EAAE,EAAE,UAAU,EAAE,UAAU,EAAE;aAC/C,CAAC;YACF,IAAI,aAAa,EAAE,SAAS,KAAK,cAAc,CAAC,YAAY,EAAE,EAAE,CAAC;gBAChE,MAAM,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;gBACzC,WAAW,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,EAAE,qBAAqB,EAAE,EAAE,GAAG,EAAE;oBACxF,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC;oBAClC,OAAO,CACN,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,OAAO;wBACjC,CAAC,wBAAwB,CAAC,GAAG,CAAC,OAAO,CAAC;wBACtC,CAAE,OAAkD,CAAC,uBAAuB;wBAC5E,OAAO,EAAE,QAAQ,KAAK,KAAK,CAAC,QAAQ;wBACpC,OAAO,CAAC,EAAE,KAAK,KAAK,CAAC,EAAE;wBACvB,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,OAAO,CAAC,CACzE,CAAC;gBACH,CAAC,CAAC,CAAC;YACJ,CAAC;YACD,MAAM,qBAAqB,GAAG,aAAa,EAAE,qBAAqB,IAAI,yBAAyB,CAAC;YAChG,IAAI,SAAS,EAAE,WAAW,KAAK,SAAS,IAAI,CAAC,mBAAmB,EAAE,CAAC;gBAClE,OAAO,mBAAmB,CAAC,YAAY,EAAE,OAAO,EAAE,EAAE,GAAG,sBAAsB,EAAE,qBAAqB,EAAE,CAAC,CAAC;YACzG,CAAC;YACD,0FAA0F;YAC1F,uFAAuF;YACvF,mBAAmB;YACnB,OAAO,YAAY,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,EAAE,EAAE,GAAG,qBAAqB,EAAE,qBAAqB,EAAE,CAAC,CAAC;QAC9G,CAAC;QACD,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;YACnC,MAAM,cAAc,GAAG,wBAAwB,CAAC;YAChD,MAAM,oBAAoB,GAAG,cAAc;gBAC1C,CAAC,CAAC,oCAAoC,CAAC,OAAO,EAAE,cAAc,EAAE,KAAK,CAAC;gBACtE,CAAC,CAAC,OAAO,CAAC;YACX,MAAM,MAAM,GAAG,kBAAkB,CAAC,OAAO,CAAC;YAC1C,IAAI,YAAqB,CAAC;YAC1B,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,yBAAyB,CAAC,EAAE,CAAC;gBACrD,YAAY,GAAG,oBAAoB,CAAC;YACrC,CAAC;iBAAM,CAAC;gBACP,MAAM,gBAAgB,GAAG,MAAM,MAAM,CAAC,yBAAyB,CAAC,oBAAoB,CAAC,CAAC;gBACtF,YAAY,GAAG,cAAc;oBAC5B,CAAC,CAAC,oCAAoC,CAAC,gBAAgB,EAAE,cAAc,EAAE,KAAK,CAAC;oBAC/E,CAAC,CAAC,gBAAgB,CAAC;YACrB,CAAC;YACD,MAAM,gBAAgB,GAAG,8BAA8B,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;YAC7E,mBAAmB,CAAC,yBAAyB,CAAC,CAAC;YAC/C,OAAO,gBAAgB,CAAC;QACzB,CAAC;QACD,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE;YACtC,MAAM,MAAM,GAAG,kBAAkB,CAAC,OAAO,CAAC;YAC1C,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,yBAAyB,CAAC,EAAE,CAAC;gBACrD,OAAO;YACR,CAAC;YACD,MAAM,MAAM,CAAC,IAAI,CAAC;gBACjB,IAAI,EAAE,yBAAyB;gBAC/B,MAAM,EAAE,QAAQ,CAAC,MAAM;gBACvB,OAAO,EAAE,QAAQ,CAAC,OAAO;aACzB,CAAC,CAAC;QACJ,CAAC;QACD,SAAS,EAAE,cAAc,CAAC,YAAY,EAAE;QACxC,gBAAgB,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE;YACpC,MAAM,MAAM,GAAG,kBAAkB,CAAC,OAAO,CAAC;YAC1C,MAAM,WAAW,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;YAC3E,OAAO,gCAAgC,CAAC,WAAW,EAAE,cAAc,CAAC,SAAS,EAAE,CAAC,CAAC;QAClF,CAAC;QACD,YAAY,EAAE,eAAe,CAAC,eAAe,EAAE;QAC/C,YAAY,EAAE,eAAe,CAAC,eAAe,EAAE;QAC/C,SAAS,EAAE,eAAe,CAAC,YAAY,EAAE;QACzC,eAAe,EAAE,eAAe,CAAC,kBAAkB,EAAE;QACrD,eAAe,EAAE,eAAe,CAAC,wBAAwB,EAAE,CAAC,eAAe;KAC3E,CAAC,CAAC;IAEH,wDAAwD;IACxD,IAAI,kBAAkB,EAAE,CAAC;QACxB,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACvB,cAAc,CAAC,yBAAyB,CAAC,aAAa,CAAC,CAAC;QACzD,CAAC;IACF,CAAC;SAAM,CAAC;QACP,2FAA2F;QAC3F,IAAI,KAAK,EAAE,CAAC;YACX,cAAc,CAAC,iBAAiB,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;QAC5D,CAAC;QACD,cAAc,CAAC,yBAAyB,CAAC,aAAa,CAAC,CAAC;IACzD,CAAC;IAED,MAAM,gBAAgB,GAAG,YAAY,CAAC,kCAAkC,EAAE,CAAC;IAC3E,IAAI,OAAqB,CAAC;IAC1B,MAAM,qBAAqB,GAAG,2BAA2B,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC;IAC5F,IAAI,CAAC;QACJ,OAAO,GAAG,IAAI,YAAY,CAAC;YAC1B,KAAK;YACL,cAAc;YACd,eAAe;YACf,GAAG;YACH,mBAAmB,EAAE,CAAC,KAAK,EAAE,EAAE,CAC9B,0BAA0B,CACzB;gBACC,GAAG;gBACH,QAAQ;gBACR,YAAY;gBACZ,eAAe;gBACf,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,aAAa,EAAE,OAAO,CAAC,aAAa;gBACpC,cAAc,EAAE,OAAO,CAAC,cAAc,IAAI,eAAe,CAAC,iBAAiB,EAAE;gBAC7E,sBAAsB,EAAE,OAAO,CAAC,sBAAsB;gBACtD,QAAQ,EAAE,aAAa;gBACvB,KAAK,EAAE,gBAAgB;gBACvB,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,aAAa,EAAE,kBAAkB;gBACjC,WAAW,EAAE,OAAO,CAAC,WAAW;gBAChC,iBAAiB,EAAE,OAAO,CAAC,eAAe,CAAC,oBAAoB,EAAE;gBACjE,sBAAsB,EAAE,qBAAqB;aAC7C,EACD,KAAK,CACL;YACF,YAAY,EAAE,OAAO,CAAC,YAAY;YAClC,cAAc,EAAE,OAAO,CAAC,cAAc,IAAI,eAAe,CAAC,iBAAiB,EAAE;YAC7E,sBAAsB,EAAE,OAAO,CAAC,sBAAsB;YACtD,cAAc;YACd,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,YAAY;YACZ,WAAW;YACX,sBAAsB;YACtB,gBAAgB;YAChB,iBAAiB,EAAE,OAAO,CAAC,aAAa;YACxC,kBAAkB;YAClB,iBAAiB,EAAE,OAAO,CAAC,iBAAiB;YAC5C,oBAAoB,EAAE,OAAO,CAAC,oBAAoB;YAClD,cAAc,EAAE,OAAO,CAAC,cAAc;YACtC,sBAAsB,EAAE,OAAO,CAAC,sBAAsB;YACtD,qBAAqB,EAAE,OAAO,CAAC,qBAAqB;YACpD,0BAA0B,EAAE,OAAO,CAAC,uBAAuB;SAC3D,CAAC,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,+FAA+F;QAC/F,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,CAAC,gBAAgB,CAAC,MAAM,EAAE,EAAE,eAAe,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAC/F,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACpG,IAAI,QAAQ,CAAC,MAAM;YAClB,MAAM,IAAI,cAAc,CAAC,CAAC,KAAK,EAAE,GAAG,QAAQ,CAAC,EAAE,0DAA0D,CAAC,CAAC;QAC5G,MAAM,KAAK,CAAC;IACb,CAAC;IACD,uFAAuF;IACvF,MAAM,YAAY,GAAG,mBAAmB,CAAC,QAAQ,EAAE,CAAC;IACpD,MAAM,QAAQ,GAAG,cAAc,CAAC,aAAa,EAAE,CAAC;IAChD,KAAK,MAAM,SAAS,IAAI,QAAQ,CAAC,UAAU;QAAE,YAAY,EAAE,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;IACtF,IAAI,CAAC,OAAO,CAAC,eAAe;QAAE,qBAAqB,CAAC,GAAG,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;IAClF,MAAM,cAAc,GAAG,wBAAwB,CAAC,QAAQ,EAAE,EAAE,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;IACzF,uBAAuB,CAAC,OAAO,CAAC,eAAe,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;QAChE,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC;YACvC,OAAkD,CAAC,MAAM,CAAC;gBAC1D,IAAI,EAAE,kBAAkB;gBACxB,MAAM,EAAE,cAAc;aACtB,CAAC;YACF,gBAAgB,CAAC,MAAM,EAAE;SACzB,CAAC,CAAC;QACH,MAAM,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACzG,IAAI,aAAa,CAAC,MAAM;YACvB,MAAM,IAAI,cAAc,CAAC,CAAC,KAAK,EAAE,GAAG,aAAa,CAAC,EAAE,uDAAuD,CAAC,CAAC;QAC9G,MAAM,KAAK,CAAC;IACb,CAAC,CAAC,CAAC;IACH,IAAI,CAAC;QACJ,gFAAgF;QAChF,6EAA6E;QAC7E,MAAM,QAAQ,GAAG,MAAM,2BAA2B,CAAC,IAAI,GAAG,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAChF,IAAI,QAAQ,CAAC,MAAM;YAClB,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,cAAc,CAAC,QAAQ,EAAE,qCAAqC,CAAC,EAAE;gBACxF,IAAI,EAAE,gBAAgB;aACtB,CAAC,CAAC;QACJ,MAAM,gBAAgB,GAAG,cAAc,CAAC,aAAa,EAAE,CAAC;QACxD,KAAK,MAAM,OAAO,IAAI,gBAAgB,CAAC,MAAM,EAAE,CAAC;YAC/C,MAAM,OAAO,GAAG,0BAA0B,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE;gBACpE,MAAM,IAAI,GAAG,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;gBAChD,OAAO,IAAI,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YAC/E,CAAC,CAAC,CAAC;YACH,IAAI,OAAO;gBACV,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,wBAAwB,OAAO,CAAC,WAAW,KAAK,OAAO,CAAC,KAAK,EAAE,CAAC,EAAE;oBAC/F,IAAI,EAAE,oBAAoB;iBAC1B,CAAC,CAAC;QACL,CAAC;QACD,IAAI,CAAC,UAAU;YAAE,MAAM,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,iBAAiB,IAAI,EAAE,CAAC,CAAC;QAC/E,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,CAAC;IACjF,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,OAAO,eAAe,CAAC,OAAO,CAAC,eAAe,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC5G,CAAC;AACF,CAAC","sourcesContent":["import { basename, join, relative, sep } from \"node:path\";\nimport { clampThinkingLevel, type Message, type ProviderHeaders, streamSimple } from \"@bastani/pi-ai/compat\";\nimport { getProviderEnvValue } from \"@bastani/pi-ai/utils/provider-env\";\nimport { Agent, type AgentMessage, setDefaultStreamFn, type ThinkingLevel } from \"@earendil-works/pi-agent-core\";\nimport { getAgentDir } from \"../config.js\";\nimport { resolvePath } from \"../utils/paths.ts\";\nimport { AgentSession } from \"./agent-session.js\";\nimport type { AgentSessionInternalSurface } from \"./agent-session-methods.ts\";\nimport { restoreAnthropicReplayThinkingBlocks } from \"./anthropic-thinking-guard.ts\";\nimport { formatNoModelsAvailableMessage } from \"./auth-guidance.ts\";\nimport { getBuiltinPackageLocations, getBuiltinPackagePaths } from \"./builtin-packages.ts\";\nimport { withBuiltinResourceLoader } from \"./builtin-resource-loader.ts\";\nimport { getDefaultCacheRetention } from \"./cache-retention.ts\";\nimport { CacheWarmer } from \"./cache-warmer.ts\";\nimport { inheritChildSessionOptions } from \"./child-session-options.ts\";\nimport { DEFAULT_THINKING_LEVEL } from \"./defaults.ts\";\nimport type { ExtensionRunner } from \"./extensions/index.js\";\nimport {\n\tfactoryAcquisitions,\n\tfactoryRollbackError,\n\trollbackFactoryAcquisitions,\n} from \"./extensions/loader-rollback.ts\";\nimport { getModelFastRoute, streamWithFastRoute, withFastRouteStreamOptions } from \"./fast-model-routing.ts\";\nimport { markLifecycleTiming } from \"./lifecycle-timings.ts\";\nimport {\n\tisMandatoryResourceLoader,\n\tisolateMandatoryResourceLoader,\n\twithMandatoryResourceLoader,\n} from \"./mandatory-resource-loader.ts\";\nimport { convertToLlm, repairOrphanToolResults } from \"./messages.ts\";\nimport { findInitialModel, resolveRestoredModelReference } from \"./model-resolver.ts\";\nimport { ModelRuntime } from \"./model-runtime.js\";\nimport { type ModelRuntimeSimpleStreamOptions, mergeHeaders } from \"./model-runtime-streaming.ts\";\nimport { sanitizeOpenAIResponsesPayload } from \"./openai-responses-payload-sanitizer.ts\";\nimport { mergeProviderAttributionHeaders } from \"./provider-attribution.ts\";\nimport { scrubPreCompactionAssistantUsage } from \"./provider-context-usage.ts\";\nimport { canCloneDefaultResourceDiscovery, DefaultResourceLoader } from \"./resource-loader.ts\";\nimport type { CreateAgentSessionOptions, CreateAgentSessionResult } from \"./sdk-types.ts\";\nimport { sessionLifecycleCreation, sessionLifecycleScopes } from \"./session-lifecycle-scope.ts\";\nimport { sessionGenerationClosing, sessionLifetime, trackSessionWork } from \"./session-lifecycle-work.ts\";\nimport { getDefaultSessionDir, SessionManager } from \"./session-manager.ts\";\nimport { registerStartupRollback, rollbackStartup } from \"./session-startup-rollback.ts\";\nimport { SettingsManager } from \"./settings-manager.ts\";\nimport { ownedSettingsManagers } from \"./settings-write-ownership.ts\";\nimport { createChildCommandTaskOwner } from \"./tasks/child-command-owner.js\";\nimport { time } from \"./timings.ts\";\nimport { allToolNames, getDefaultToolNames } from \"./tools/index.ts\";\n\nexport type { ModelFallbackReason } from \"./model-resolver-types.ts\";\nexport * from \"./sdk-exports.ts\";\nexport type { AtomicBuiltin, CreateAgentSessionOptions, CreateAgentSessionResult } from \"./sdk-types.ts\";\n\n// Preserve the pre-0.81 fallback for extensions that construct Agent instances\n// or invoke low-level agent loops without supplying streamFn.\nsetDefaultStreamFn(streamSimple);\n\n// Helper Functions\n\nfunction getDefaultAgentDir(): string {\n\treturn getAgentDir();\n}\n\n/** Keep static model headers visible to hooks without promoting unchanged defaults to request overrides. */\nfunction removeUnownedModelHeaders(\n\theaders: ProviderHeaders | undefined,\n\tmodelHeaders: ProviderHeaders | undefined,\n\trequestHeaders: ProviderHeaders | undefined,\n): ProviderHeaders | undefined {\n\tif (!headers || !modelHeaders) return headers;\n\tconst requestOwned = new Set(Object.keys(requestHeaders ?? {}).map((name) => name.toLowerCase()));\n\tconst filtered = { ...headers };\n\tfor (const [modelName, modelValue] of Object.entries(modelHeaders)) {\n\t\tconst lowerName = modelName.toLowerCase();\n\t\tif (requestOwned.has(lowerName)) continue;\n\t\tfor (const [name, value] of Object.entries(filtered)) {\n\t\t\tif (name.toLowerCase() === lowerName && value === modelValue) delete filtered[name];\n\t\t}\n\t}\n\treturn Object.keys(filtered).length > 0 ? filtered : undefined;\n}\n\n/**\n * Create an AgentSession with the specified options.\n *\n * @example\n * ```typescript\n * // Minimal - uses defaults\n * const { session } = await createAgentSession();\n *\n * // With explicit model\n * import { getModel } from '@bastani/pi-ai/compat';\n * const { session } = await createAgentSession({\n * model: getModel('anthropic', 'claude-opus-4-5'),\n * thinkingLevel: 'high',\n * });\n *\n * // Continue previous session\n * const { session, modelFallbackMessage } = await createAgentSession({\n * continueSession: true,\n * });\n *\n * // Full control\n * const loader = new DefaultResourceLoader({\n * cwd: process.cwd(),\n * agentDir: getAgentDir(),\n * settingsManager: SettingsManager.create(),\n * });\n * await loader.reload();\n * const { session } = await createAgentSession({\n * model: myModel,\n * tools: [\"read\", \"bash\"],\n * resourceLoader: loader,\n * sessionManager: SessionManager.inMemory(),\n * });\n * ```\n */\nexport async function createAgentSession(options: CreateAgentSessionOptions = {}): Promise<CreateAgentSessionResult> {\n\treturn createScopedSession(options, false);\n}\n\n/** Internal CLI assembly seam. Not exported from the package entrypoint. */\nexport function createUnstartedAgentSession(options: CreateAgentSessionOptions): Promise<CreateAgentSessionResult> {\n\treturn createScopedSession(options, true);\n}\n\nfunction createScopedSession(\n\toptions: CreateAgentSessionOptions,\n\tdeferStart: boolean,\n): Promise<CreateAgentSessionResult> {\n\tconst inherited = sessionLifecycleCreation.getStore();\n\tconst context = inherited && !inherited.claimed ? inherited : { scope: {} };\n\treturn sessionLifecycleCreation.run({ ...context, claimed: true }, async () => {\n\t\tconst result = await factoryAcquisitions.run(\n\t\t\t{ pending: new Map(), replacement: context.replacement },\n\t\t\tasync () => {\n\t\t\t\ttry {\n\t\t\t\t\treturn await constructAgentSession(\n\t\t\t\t\t\t{ ...options, extensionBindings: options.extensionBindings ?? context.bindings },\n\t\t\t\t\t\tdeferStart,\n\t\t\t\t\t);\n\t\t\t\t} catch (error) {\n\t\t\t\t\tthrow factoryRollbackError(error, await rollbackFactoryAcquisitions());\n\t\t\t\t}\n\t\t\t},\n\t\t);\n\t\tsessionLifecycleScopes.set(result.session, context.scope);\n\t\treturn result;\n\t});\n}\n\nasync function constructAgentSession(\n\toptions: CreateAgentSessionOptions,\n\tdeferStart: boolean,\n): Promise<CreateAgentSessionResult> {\n\tconst cwd = resolvePath(options.cwd ?? options.sessionManager?.getCwd() ?? process.cwd());\n\tconst agentDir = options.agentDir ? resolvePath(options.agentDir) : getDefaultAgentDir();\n\tlet resourceLoader = options.resourceLoader;\n\t// The concrete default can rediscover into private storage (including deferred\n\t// CLI configuration). Custom discovery stays delegated; composition instantiates\n\t// its extensions independently without replacing overridden resource policy.\n\tif (canCloneDefaultResourceDiscovery(resourceLoader)) {\n\t\tresourceLoader = await resourceLoader.createSessionLoader(sessionLifecycleCreation.getStore()!.scope);\n\t}\n\tif (resourceLoader) resourceLoader = await isolateMandatoryResourceLoader(resourceLoader);\n\n\tconst authPath = options.agentDir ? join(agentDir, \"auth.json\") : undefined;\n\tconst modelsPath = options.agentDir ? join(agentDir, \"models.json\") : undefined;\n\tconst modelRuntime = options.modelRuntime ?? (await ModelRuntime.create({ authPath, modelsPath }));\n\tawait modelRuntime.refresh({ allowNetwork: false });\n\n\tconst settingsManager = options.settingsManager ?? SettingsManager.create(cwd, agentDir);\n\tconst sessionManager = options.sessionManager ?? SessionManager.create(cwd, getDefaultSessionDir(cwd, agentDir));\n\n\t// Mark workflow-created sessions as internal so they are excluded from the\n\t// standard `/resume` history while remaining resumable via `/workflow resume`.\n\t// Only stamped when the orchestration context identifies a workflow stage;\n\t// reattaching to an already-marked session preserves its existing marker.\n\tif (options.orchestrationContext?.kind === \"workflow-stage\") {\n\t\tconst ctx = options.orchestrationContext;\n\t\tsessionManager.markSessionInternal({\n\t\t\trunId: ctx.workflowRunId,\n\t\t\tstageId: ctx.workflowStageId,\n\t\t\tstageName: ctx.workflowStageName,\n\t\t});\n\t}\n\n\tconst disableWorkflowExtension =\n\t\toptions.orchestrationContext?.kind === \"workflow-stage\" || options.subagentPolicy !== undefined;\n\tif (!resourceLoader) {\n\t\tresourceLoader = new DefaultResourceLoader({\n\t\t\tcwd,\n\t\t\tagentDir,\n\t\t\tsettingsManager,\n\t\t\tbuiltinPackagePaths: getBuiltinPackagePaths(options.builtins).map((source) =>\n\t\t\t\tdisableWorkflowExtension && basename(source) === \"workflows\" ? { source, extensions: [] } : source,\n\t\t\t),\n\t\t});\n\t\tawait resourceLoader.reload();\n\t\ttime(\"resourceLoader.reload\");\n\t}\n\tif (\n\t\t(options.resourceLoader || options.builtins || disableWorkflowExtension) &&\n\t\t(!isMandatoryResourceLoader(resourceLoader) || options.builtins || disableWorkflowExtension)\n\t) {\n\t\tresourceLoader = await withBuiltinResourceLoader(\n\t\t\tresourceLoader,\n\t\t\tcwd,\n\t\t\tagentDir,\n\t\t\toptions.builtins,\n\t\t\tdisableWorkflowExtension,\n\t\t);\n\t}\n\tif (options.builtins?.intercom !== false) {\n\t\tresourceLoader = await withMandatoryResourceLoader(resourceLoader, cwd);\n\t}\n\n\t// Check if session has existing data to restore\n\tconst existingSession = sessionManager.buildSessionContext();\n\tconst repairedMessages = repairOrphanToolResults(existingSession.messages, { repairTrailing: true });\n\tconst existingMessages = options.initialContextTransform\n\t\t? options.initialContextTransform(repairedMessages)\n\t\t: repairedMessages;\n\tconst hasExistingSession = existingMessages.length > 0;\n\tconst hasThinkingEntry = sessionManager.getBranch().some((entry) => entry.type === \"thinking_level_change\");\n\n\tlet model = options.model;\n\tlet modelFallbackMessage: string | undefined;\n\tlet modelFallbackReason: import(\"./model-resolver-types.ts\").ModelFallbackReason | undefined;\n\n\t// If session has data, try to restore model from it\n\tif (!model && hasExistingSession && existingSession.model) {\n\t\tmodel = await resolveRestoredModelReference(\n\t\t\texistingSession.model.provider,\n\t\t\texistingSession.model.modelId,\n\t\t\tmodelRuntime,\n\t\t);\n\t\tif (!model) {\n\t\t\tmodelFallbackMessage = `Could not restore model ${existingSession.model.provider}/${existingSession.model.modelId}`;\n\t\t\tmodelFallbackReason = \"session-restore\";\n\t\t}\n\t}\n\tif (!model) {\n\t\tconst result = await findInitialModel({\n\t\t\tscopedModels: [],\n\t\t\tisContinuing: hasExistingSession,\n\t\t\tdefaultProvider: settingsManager.getDefaultProvider(),\n\t\t\tdefaultModelId: settingsManager.getDefaultModel(),\n\t\t\tdefaultThinkingLevel: settingsManager.getDefaultThinkingLevel(),\n\t\t\tmodelThinkingLevels: settingsManager.getAllModelThinkingLevels(),\n\t\t\tmodelRuntime,\n\t\t});\n\t\tmodel = result.model;\n\t\tif (!model) {\n\t\t\tif (result.fallbackReason === \"configured-provider-unsupported\") {\n\t\t\t\tmodelFallbackMessage = result.fallbackMessage;\n\t\t\t\tmodelFallbackReason = result.fallbackReason;\n\t\t\t} else if (!modelFallbackMessage) {\n\t\t\t\tmodelFallbackMessage = result.fallbackMessage ?? formatNoModelsAvailableMessage();\n\t\t\t\tmodelFallbackReason = result.fallbackReason ?? \"no-models-available\";\n\t\t\t}\n\t\t} else if (modelFallbackMessage) {\n\t\t\tmodelFallbackMessage += `. Using ${model.provider}/${model.id}`;\n\t\t}\n\t}\n\n\tlet thinkingLevel = options.thinkingLevel;\n\n\t// If session has data, restore thinking level from it\n\tif (thinkingLevel === undefined && hasExistingSession) {\n\t\tthinkingLevel = hasThinkingEntry\n\t\t\t? (existingSession.thinkingLevel as ThinkingLevel)\n\t\t\t: (settingsManager.getDefaultThinkingLevel() ?? DEFAULT_THINKING_LEVEL);\n\t}\n\n\t// Fall back to per-model override, then global default\n\tif (thinkingLevel === undefined && model) {\n\t\tthinkingLevel = settingsManager.getModelThinkingLevel(model.provider, model.id);\n\t}\n\tif (thinkingLevel === undefined) {\n\t\tthinkingLevel = settingsManager.getDefaultThinkingLevel() ?? DEFAULT_THINKING_LEVEL;\n\t}\n\n\t// Clamp to model capabilities\n\tif (!model) {\n\t\tthinkingLevel = \"off\";\n\t} else {\n\t\tthinkingLevel = clampThinkingLevel(model, thinkingLevel) as ThinkingLevel;\n\t}\n\n\t// `defaultTools` narrows only the initial BUILT-IN selection. It must not\n\t// narrow `allowedToolNames`: a narrow allowlist would drop every extension\n\t// and SDK custom tool (workflow, subagent, intercom, mcp, web_search, ...)\n\t// for any user who configures it (upstream 4d9aa837 + companion fix 541045ae).\n\tconst configuredDefaultToolNames = settingsManager.getDefaultTools();\n\tconst allowedToolNames =\n\t\toptions.noTools === \"all\" ? [] : options.tools === undefined ? undefined : [...options.tools];\n\tconst initialActiveToolNames: string[] = allowedToolNames\n\t\t? [...allowedToolNames]\n\t\t: options.noTools\n\t\t\t? []\n\t\t\t: [...(configuredDefaultToolNames ?? getDefaultToolNames())];\n\tconst childBuiltins = { ...options.builtins };\n\tconst childExcludedTools = [\n\t\t...(options.excludedTools ?? []),\n\t\t...(allowedToolNames === undefined\n\t\t\t? [...allToolNames].filter((name) => !initialActiveToolNames.includes(name))\n\t\t\t: []),\n\t];\n\n\tlet agent: Agent;\n\n\tlet lastConvertedLlmMessages: Message[] | undefined;\n\n\t// Create convertToLlm wrapper that filters images if blockImages is enabled (defense-in-depth)\n\tconst convertToLlmWithBlockImages = (messages: AgentMessage[]): Message[] => {\n\t\tconst converted = convertToLlm(messages);\n\t\t// Check setting dynamically so mid-session changes take effect\n\t\tif (!settingsManager.getBlockImages()) {\n\t\t\tlastConvertedLlmMessages = converted;\n\t\t\treturn converted;\n\t\t}\n\t\t// Filter out ImageContent from all messages, replacing with text placeholder\n\t\tconst filtered = converted.map((msg): Message => {\n\t\t\tif (msg.role === \"user\" || msg.role === \"toolResult\") {\n\t\t\t\tconst content = msg.content;\n\t\t\t\tif (Array.isArray(content)) {\n\t\t\t\t\tconst hasImages = content.some((c) => c.type === \"image\");\n\t\t\t\t\tif (hasImages) {\n\t\t\t\t\t\tconst filteredContent = content\n\t\t\t\t\t\t\t.map((c) =>\n\t\t\t\t\t\t\t\tc.type === \"image\"\n\t\t\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t\t\ttype: \"text\" as const,\n\t\t\t\t\t\t\t\t\t\t\ttext: \"Image reading is disabled.\",\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t: c,\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t.filter(\n\t\t\t\t\t\t\t\t(c, i, arr) =>\n\t\t\t\t\t\t\t\t\t// Dedupe consecutive \"Image reading is disabled.\" texts\n\t\t\t\t\t\t\t\t\t!(\n\t\t\t\t\t\t\t\t\t\tc.type === \"text\" &&\n\t\t\t\t\t\t\t\t\t\tc.text === \"Image reading is disabled.\" &&\n\t\t\t\t\t\t\t\t\t\ti > 0 &&\n\t\t\t\t\t\t\t\t\t\tarr[i - 1].type === \"text\" &&\n\t\t\t\t\t\t\t\t\t\t(arr[i - 1] as { type: \"text\"; text: string }).text === \"Image reading is disabled.\"\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t// `user` and `toolResult` carry different content unions, and mapping them in one\n\t\t\t\t\t\t// branch widens both to their union. Only image blocks are rewritten here, so each\n\t\t\t\t\t\t// message keeps its own shape at runtime.\n\t\t\t\t\t\treturn { ...msg, content: filteredContent } as Message;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn msg;\n\t\t});\n\t\tlastConvertedLlmMessages = filtered;\n\t\treturn filtered;\n\t};\n\n\tconst extensionRunnerRef: { current?: ExtensionRunner } = {};\n\tconst cacheWarmer = new CacheWarmer(\n\t\t{\n\t\t\tstreamSimple: (model, context, requestOptions) => {\n\t\t\t\tconst extension = modelRuntime.getRegisteredProviderConfig(model.provider);\n\t\t\t\treturn getModelFastRoute(model)?.serviceTier !== undefined &&\n\t\t\t\t\t!(extension?.streamSimple && extension.api === model.api)\n\t\t\t\t\t? streamWithFastRoute(model, context, requestOptions)\n\t\t\t\t\t: modelRuntime.streamSimple(model, context, requestOptions);\n\t\t\t},\n\t\t},\n\t\tsessionManager,\n\t\t() => settingsManager.getCacheWarmingMode(),\n\t\tasync (event) => {\n\t\t\tconst runner = extensionRunnerRef.current;\n\t\t\tif (!runner) {\n\t\t\t\treturn event.action;\n\t\t\t}\n\t\t\treturn (await runner.emitCacheWarmingDecision(event)) ?? event.action;\n\t\t},\n\t\t(refresh) => trackSessionWork(session, refresh),\n\t);\n\n\tconst handleProviderStreamEvent: NonNullable<ModelRuntimeSimpleStreamOptions[\"onProviderStreamEvent\"]> = async (\n\t\tdata,\n\t\tmodel,\n\t) => {\n\t\tconst runner = extensionRunnerRef.current;\n\t\tif (!runner?.hasHandlers(\"provider_stream_event\")) return;\n\t\tawait runner.emit({\n\t\t\ttype: \"provider_stream_event\",\n\t\t\tprovider: model.provider,\n\t\t\tapi: model.api,\n\t\t\tmodel: model.id,\n\t\t\tdata,\n\t\t});\n\t};\n\n\tagent = new Agent({\n\t\tinitialState: {\n\t\t\tsystemPrompt: \"\",\n\t\t\tmodel,\n\t\t\tthinkingLevel,\n\t\t\ttools: [],\n\t\t\tmessages: existingMessages,\n\t\t},\n\t\tconvertToLlm: convertToLlmWithBlockImages,\n\t\tstreamFn: async (model, context, streamOptions) => {\n\t\t\tconst authResult = await modelRuntime.getRequestAuth(model, {\n\t\t\t\tapiKey: streamOptions?.apiKey,\n\t\t\t\tenv: streamOptions?.env,\n\t\t\t\tsignal: streamOptions?.signal,\n\t\t\t});\n\t\t\tconst compatibility = authResult ? undefined : modelRuntime.getCompatibilityRequestConfig(model);\n\t\t\tif (!authResult && compatibility?.authHeader) {\n\t\t\t\tthrow new Error(`No API key found for \"${model.provider}\"`);\n\t\t\t}\n\t\t\tconst auth = {\n\t\t\t\tapiKey: authResult?.auth.apiKey,\n\t\t\t\theaders: authResult?.auth.headers ?? compatibility?.headers,\n\t\t\t\tbaseUrl: authResult?.auth.baseUrl,\n\t\t\t\tenv: authResult?.env,\n\t\t\t};\n\t\t\tconst requestModel =\n\t\t\t\tauth.baseUrl !== undefined && auth.baseUrl !== model.baseUrl ? { ...model, baseUrl: auth.baseUrl } : model;\n\t\t\tconst providerRetrySettings = settingsManager.getProviderRetrySettings();\n\t\t\tconst httpIdleTimeoutMs = settingsManager.getHttpIdleTimeoutMs();\n\t\t\t// SDKs treat timeout=0 as 0ms (immediate timeout), not \"no timeout\".\n\t\t\t// Use max int32 to effectively disable the timeout.\n\t\t\tconst effectiveTimeoutMs = httpIdleTimeoutMs === 0 ? 2147483647 : httpIdleTimeoutMs;\n\t\t\tconst timeoutMs = streamOptions?.timeoutMs ?? providerRetrySettings.timeoutMs ?? effectiveTimeoutMs;\n\t\t\tconst websocketConnectTimeoutMs =\n\t\t\t\tstreamOptions?.websocketConnectTimeoutMs ?? settingsManager.getWebSocketConnectTimeoutMs();\n\t\t\tconst streamDeadlineMs = streamOptions?.streamDeadlineMs ?? settingsManager.getStreamDeadlineMs();\n\t\t\tconst requestHeaders = mergeProviderAttributionHeaders(\n\t\t\t\tmodel,\n\t\t\t\tsettingsManager,\n\t\t\t\tstreamOptions?.sessionId,\n\t\t\t\tauth.headers,\n\t\t\t\tstreamOptions?.headers,\n\t\t\t);\n\t\t\tconst mergedHeaders = mergeHeaders(model.headers, requestHeaders);\n\t\t\tconst headerRunner = extensionRunnerRef.current;\n\t\t\tconst assembledHeaders = headerRunner?.hasHandlers(\"before_provider_headers\")\n\t\t\t\t? await headerRunner.emitBeforeProviderHeaders(mergedHeaders ?? {})\n\t\t\t\t: mergedHeaders;\n\t\t\tconst extensionProvider = modelRuntime.getRegisteredProviderConfig(requestModel.provider);\n\t\t\tconst usesExtensionStream =\n\t\t\t\textensionProvider?.streamSimple !== undefined && requestModel.api === extensionProvider.api;\n\t\t\tconst transportHeaders = usesExtensionStream\n\t\t\t\t? assembledHeaders\n\t\t\t\t: removeUnownedModelHeaders(assembledHeaders, model.headers, requestHeaders);\n\t\t\t// Fast-vs-normal is the selected model's own identity, so the canonical `-fast` model is what\n\t\t\t// dispatch, the recorded assistant message, session state, and usage all see. The provider\n\t\t\t// adapter reads `fastRoute.upstreamModelId` when it serializes the outbound request.\n\t\t\tconst fastRoute = getModelFastRoute(requestModel);\n\t\t\tif (fastRoute?.serviceTier !== undefined && !usesExtensionStream && !authResult) {\n\t\t\t\tthrow new Error(`No API key found for \"${model.provider}\"`);\n\t\t\t}\n\t\t\tconst env = auth.env || streamOptions?.env ? { ...auth.env, ...streamOptions?.env } : undefined;\n\t\t\tconst cacheRetentionEnv = getProviderEnvValue(\"PI_CACHE_RETENTION\", env);\n\t\t\t// Shared by main chat, workflow stages and subagents; provider capability gates still apply.\n\t\t\tconst cacheRetention =\n\t\t\t\tstreamOptions?.cacheRetention ??\n\t\t\t\t(cacheRetentionEnv === \"none\"\n\t\t\t\t\t? \"none\"\n\t\t\t\t\t: !cacheRetentionEnv\n\t\t\t\t\t\t? getDefaultCacheRetention(requestModel)\n\t\t\t\t\t\t: cacheRetentionEnv === \"long\"\n\t\t\t\t\t\t\t? \"long\"\n\t\t\t\t\t\t\t: \"short\");\n\t\t\tconst fastRouteStreamOptions = withFastRouteStreamOptions(fastRoute, {\n\t\t\t\t...streamOptions,\n\t\t\t\tapiKey: auth.apiKey,\n\t\t\t\tenv,\n\t\t\t\tcacheRetention,\n\t\t\t\ttimeoutMs,\n\t\t\t\twebsocketConnectTimeoutMs,\n\t\t\t\tstreamDeadlineMs,\n\t\t\t\tmaxRetries: streamOptions?.maxRetries ?? providerRetrySettings.maxRetries,\n\t\t\t\tmaxRetryDelayMs: streamOptions?.maxRetryDelayMs ?? providerRetrySettings.maxRetryDelayMs,\n\t\t\t\theaders: transportHeaders,\n\t\t\t});\n\t\t\tconst preparedStreamOptions: ModelRuntimeSimpleStreamOptions = {\n\t\t\t\t...fastRouteStreamOptions,\n\t\t\t\tpreparedRequestAuth: { resolution: authResult },\n\t\t\t};\n\t\t\tif (streamOptions?.sessionId === sessionManager.getSessionId()) {\n\t\t\t\tconst prefix = [...agent.state.messages];\n\t\t\t\tcacheWarmer.start({ model: requestModel, context, options: preparedStreamOptions }, () => {\n\t\t\t\t\tconst current = agent.state.model;\n\t\t\t\t\treturn (\n\t\t\t\t\t\t!sessionLifetime(session).aborted &&\n\t\t\t\t\t\t!sessionGenerationClosing.has(session) &&\n\t\t\t\t\t\t!(session as unknown as AgentSessionInternalSurface)._agentRunAbortRequested &&\n\t\t\t\t\t\tcurrent?.provider === model.provider &&\n\t\t\t\t\t\tcurrent.id === model.id &&\n\t\t\t\t\t\tprefix.every((message, index) => agent.state.messages[index] === message)\n\t\t\t\t\t);\n\t\t\t\t});\n\t\t\t}\n\t\t\tconst onProviderStreamEvent = streamOptions?.onProviderStreamEvent ?? handleProviderStreamEvent;\n\t\t\tif (fastRoute?.serviceTier !== undefined && !usesExtensionStream) {\n\t\t\t\treturn streamWithFastRoute(requestModel, context, { ...fastRouteStreamOptions, onProviderStreamEvent });\n\t\t\t}\n\t\t\t// The Codex routing identity is attached by ModelRuntimeStreaming, after auth headers are\n\t\t\t// merged. Applying it here would be inert: `mergeHeaders` copies the header object the\n\t\t\t// wrapper mutates.\n\t\t\treturn modelRuntime.streamSimple(requestModel, context, { ...preparedStreamOptions, onProviderStreamEvent });\n\t\t},\n\t\tonPayload: async (payload, model) => {\n\t\t\tconst sourceMessages = lastConvertedLlmMessages;\n\t\t\tconst replayGuardedPayload = sourceMessages\n\t\t\t\t? restoreAnthropicReplayThinkingBlocks(payload, sourceMessages, model)\n\t\t\t\t: payload;\n\t\t\tconst runner = extensionRunnerRef.current;\n\t\t\tlet finalPayload: unknown;\n\t\t\tif (!runner?.hasHandlers(\"before_provider_request\")) {\n\t\t\t\tfinalPayload = replayGuardedPayload;\n\t\t\t} else {\n\t\t\t\tconst extensionPayload = await runner.emitBeforeProviderRequest(replayGuardedPayload);\n\t\t\t\tfinalPayload = sourceMessages\n\t\t\t\t\t? restoreAnthropicReplayThinkingBlocks(extensionPayload, sourceMessages, model)\n\t\t\t\t\t: extensionPayload;\n\t\t\t}\n\t\t\tconst sanitizedPayload = sanitizeOpenAIResponsesPayload(finalPayload, model);\n\t\t\tmarkLifecycleTiming(\"before-provider-request\");\n\t\t\treturn sanitizedPayload;\n\t\t},\n\t\tonResponse: async (response, _model) => {\n\t\t\tconst runner = extensionRunnerRef.current;\n\t\t\tif (!runner?.hasHandlers(\"after_provider_response\")) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tawait runner.emit({\n\t\t\t\ttype: \"after_provider_response\",\n\t\t\t\tstatus: response.status,\n\t\t\t\theaders: response.headers,\n\t\t\t});\n\t\t},\n\t\tsessionId: sessionManager.getSessionId(),\n\t\ttransformContext: async (messages) => {\n\t\t\tconst runner = extensionRunnerRef.current;\n\t\t\tconst transformed = runner ? await runner.emitContext(messages) : messages;\n\t\t\treturn scrubPreCompactionAssistantUsage(transformed, sessionManager.getBranch());\n\t\t},\n\t\tsteeringMode: settingsManager.getSteeringMode(),\n\t\tfollowUpMode: settingsManager.getFollowUpMode(),\n\t\ttransport: settingsManager.getTransport(),\n\t\tthinkingBudgets: settingsManager.getThinkingBudgets(),\n\t\tmaxRetryDelayMs: settingsManager.getProviderRetrySettings().maxRetryDelayMs,\n\t});\n\n\t// Restore missing settings metadata for older sessions.\n\tif (hasExistingSession) {\n\t\tif (!hasThinkingEntry) {\n\t\t\tsessionManager.appendThinkingLevelChange(thinkingLevel);\n\t\t}\n\t} else {\n\t\t// Save initial model and thinking level for new sessions so they can be restored on resume\n\t\tif (model) {\n\t\t\tsessionManager.appendModelChange(model.provider, model.id);\n\t\t}\n\t\tsessionManager.appendThinkingLevelChange(thinkingLevel);\n\t}\n\n\tconst providerRollback = modelRuntime.createExtensionProviderTransaction();\n\tlet session: AgentSession;\n\tconst childCommandTaskOwner = createChildCommandTaskOwner(() => session.getAgentTaskHost());\n\ttry {\n\t\tsession = new AgentSession({\n\t\t\tagent,\n\t\t\tsessionManager,\n\t\t\tsettingsManager,\n\t\t\tcwd,\n\t\t\tchildSessionOptions: (child) =>\n\t\t\t\tinheritChildSessionOptions(\n\t\t\t\t\t{\n\t\t\t\t\t\tcwd,\n\t\t\t\t\t\tagentDir,\n\t\t\t\t\t\tmodelRuntime,\n\t\t\t\t\t\tsettingsManager,\n\t\t\t\t\t\tmodel: session.model,\n\t\t\t\t\t\tthinkingLevel: session.thinkingLevel,\n\t\t\t\t\t\tfallbackModels: options.fallbackModels ?? settingsManager.getFallbackModels(),\n\t\t\t\t\t\tisFallbackModelAllowed: options.isFallbackModelAllowed,\n\t\t\t\t\t\tbuiltins: childBuiltins,\n\t\t\t\t\t\ttools: allowedToolNames,\n\t\t\t\t\t\tnoTools: options.noTools,\n\t\t\t\t\t\texcludedTools: childExcludedTools,\n\t\t\t\t\t\tcustomTools: options.customTools,\n\t\t\t\t\t\textensionBindings: session.extensionRunner.getChildHostBindings(),\n\t\t\t\t\t\tparentCommandTaskOwner: childCommandTaskOwner,\n\t\t\t\t\t},\n\t\t\t\t\tchild,\n\t\t\t\t),\n\t\t\tscopedModels: options.scopedModels,\n\t\t\tfallbackModels: options.fallbackModels ?? settingsManager.getFallbackModels(),\n\t\t\tisFallbackModelAllowed: options.isFallbackModelAllowed,\n\t\t\tresourceLoader,\n\t\t\tcustomTools: options.customTools,\n\t\t\tmodelRuntime,\n\t\t\tcacheWarmer,\n\t\t\tinitialActiveToolNames,\n\t\t\tallowedToolNames,\n\t\t\texcludedToolNames: options.excludedTools,\n\t\t\textensionRunnerRef,\n\t\t\tsessionStartEvent: options.sessionStartEvent,\n\t\t\torchestrationContext: options.orchestrationContext,\n\t\t\tsubagentPolicy: options.subagentPolicy,\n\t\t\tparentCommandTaskOwner: options.parentCommandTaskOwner,\n\t\t\tsystemPromptTransform: options.systemPromptTransform,\n\t\t\tcontextProjectionTransform: options.initialContextTransform,\n\t\t});\n\t} catch (error) {\n\t\t// The constructor releases its own leases/subscriptions; restore borrowed provider state here.\n\t\tconst cleanup = await Promise.allSettled([providerRollback.commit(), settingsManager.flush()]);\n\t\tconst failures = cleanup.flatMap((result) => (result.status === \"rejected\" ? [result.reason] : []));\n\t\tif (failures.length)\n\t\t\tthrow new AggregateError([error, ...failures], \"Session construction failed and rollback reported errors\");\n\t\tthrow error;\n\t}\n\t// Only the selected factories transfer. Discovery may have acquired omitted factories.\n\tconst acquisitions = factoryAcquisitions.getStore();\n\tconst selected = resourceLoader.getExtensions();\n\tfor (const extension of selected.extensions) acquisitions?.pending?.delete(extension);\n\tif (!options.settingsManager) ownedSettingsManagers.set(settingsManager, session);\n\tconst rollbackReason = sessionLifecycleCreation.getStore()?.replacement ? \"new\" : \"quit\";\n\tregisterStartupRollback(session.extensionRunner, async (error) => {\n\t\tconst results = await Promise.allSettled([\n\t\t\t(session as unknown as AgentSessionInternalSurface)._close({\n\t\t\t\ttype: \"session_shutdown\",\n\t\t\t\treason: rollbackReason,\n\t\t\t}),\n\t\t\tproviderRollback.commit(),\n\t\t]);\n\t\tconst cleanupErrors = results.flatMap((result) => (result.status === \"rejected\" ? [result.reason] : []));\n\t\tif (cleanupErrors.length)\n\t\t\tthrow new AggregateError([error, ...cleanupErrors], \"Extension startup failed and rollback reported errors\");\n\t\tthrow error;\n\t});\n\ttry {\n\t\t// Omitted factories may share the selected runtime: release their acquisitions,\n\t\t// but leave that runtime and its selected subscriptions owned by the runner.\n\t\tconst failures = await rollbackFactoryAcquisitions(new Set([selected.runtime]));\n\t\tif (failures.length)\n\t\t\tthrow Object.assign(new AggregateError(failures, \"Unselected extension cleanup failed\"), {\n\t\t\t\tcode: \"ShutdownFailed\",\n\t\t\t});\n\t\tconst extensionsResult = resourceLoader.getExtensions();\n\t\tfor (const failure of extensionsResult.errors) {\n\t\t\tconst builtin = getBuiltinPackageLocations().find(({ packageDir }) => {\n\t\t\t\tconst path = relative(packageDir, failure.path);\n\t\t\t\treturn path !== \"..\" && !path.startsWith(`..${sep}`) && !path.startsWith(sep);\n\t\t\t});\n\t\t\tif (builtin)\n\t\t\t\tthrow Object.assign(new Error(`Builtin unavailable: ${builtin.packageName}: ${failure.error}`), {\n\t\t\t\t\tcode: \"BuiltinUnavailable\",\n\t\t\t\t});\n\t\t}\n\t\tif (!deferStart) await session.bindExtensions(options.extensionBindings ?? {});\n\t\treturn { session, extensionsResult, modelFallbackMessage, modelFallbackReason };\n\t} catch (error) {\n\t\treturn rollbackStartup(session.extensionRunner, error instanceof Error ? error : new Error(String(error)));\n\t}\n}\n"]}
1
+ {"version":3,"file":"sdk.js","sourceRoot":"","sources":["../../src/core/sdk.ts"],"names":[],"mappings":"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","sourcesContent":["import { basename, join, relative, sep } from \"node:path\";\nimport { clampThinkingLevel, type Message, type ProviderHeaders, streamSimple } from \"@bastani/pi-ai/compat\";\nimport { getProviderEnvValue } from \"@bastani/pi-ai/utils/provider-env\";\nimport { Agent, type AgentMessage, setDefaultStreamFn, type ThinkingLevel } from \"@earendil-works/pi-agent-core\";\nimport { getAgentDir } from \"../config.js\";\nimport { resolvePath } from \"../utils/paths.ts\";\nimport { AgentSession } from \"./agent-session.js\";\nimport type { AgentSessionInternalSurface } from \"./agent-session-methods.ts\";\nimport { restoreAnthropicReplayThinkingBlocks } from \"./anthropic-thinking-guard.ts\";\nimport { formatNoModelsAvailableMessage } from \"./auth-guidance.ts\";\nimport { getBuiltinPackageLocations, getBuiltinPackagePaths } from \"./builtin-packages.ts\";\nimport { withBuiltinResourceLoader } from \"./builtin-resource-loader.ts\";\nimport { getDefaultCacheRetention } from \"./cache-retention.ts\";\nimport { CacheWarmer } from \"./cache-warmer.ts\";\nimport { inheritChildSessionOptions } from \"./child-session-options.ts\";\nimport { DEFAULT_THINKING_LEVEL } from \"./defaults.ts\";\nimport type { ExtensionRunner } from \"./extensions/index.js\";\nimport {\n\tfactoryAcquisitions,\n\tfactoryRollbackError,\n\trollbackFactoryAcquisitions,\n} from \"./extensions/loader-rollback.ts\";\nimport { getModelFastRoute, streamWithFastRoute, withFastRouteStreamOptions } from \"./fast-model-routing.ts\";\nimport { markLifecycleTiming } from \"./lifecycle-timings.ts\";\nimport {\n\tisMandatoryResourceLoader,\n\tisolateMandatoryResourceLoader,\n\twithMandatoryResourceLoader,\n} from \"./mandatory-resource-loader.ts\";\nimport { convertToLlm, repairOrphanToolResults } from \"./messages.ts\";\nimport { findInitialModel, resolveRestoredModelReference } from \"./model-resolver.ts\";\nimport { ModelRuntime } from \"./model-runtime.js\";\nimport { type ModelRuntimeSimpleStreamOptions, mergeHeaders } from \"./model-runtime-streaming.ts\";\nimport { sanitizeOpenAIResponsesPayload } from \"./openai-responses-payload-sanitizer.ts\";\nimport { mergeProviderAttributionHeaders } from \"./provider-attribution.ts\";\nimport { scrubPreCompactionAssistantUsage } from \"./provider-context-usage.ts\";\nimport { canCloneDefaultResourceDiscovery, DefaultResourceLoader } from \"./resource-loader.ts\";\nimport type { CreateAgentSessionOptions, CreateAgentSessionResult } from \"./sdk-types.ts\";\nimport { sessionLifecycleCreation, sessionLifecycleScopes } from \"./session-lifecycle-scope.ts\";\nimport { sessionGenerationClosing, sessionLifetime, trackSessionWork } from \"./session-lifecycle-work.ts\";\nimport { getDefaultSessionDir, SessionManager } from \"./session-manager.ts\";\nimport { registerStartupRollback, rollbackStartup } from \"./session-startup-rollback.ts\";\nimport { SettingsManager } from \"./settings-manager.ts\";\nimport { ownedSettingsManagers } from \"./settings-write-ownership.ts\";\nimport { createChildCommandTaskOwner } from \"./tasks/child-command-owner.js\";\nimport { time } from \"./timings.ts\";\nimport { allToolNames, getDefaultToolNames } from \"./tools/index.ts\";\n\nexport type { ModelFallbackReason } from \"./model-resolver-types.ts\";\nexport * from \"./sdk-exports.ts\";\nexport type { AtomicBuiltin, CreateAgentSessionOptions, CreateAgentSessionResult } from \"./sdk-types.ts\";\n\n// Preserve the pre-0.81 fallback for extensions that construct Agent instances\n// or invoke low-level agent loops without supplying streamFn.\nsetDefaultStreamFn(streamSimple);\n\n// Helper Functions\n\nfunction getDefaultAgentDir(): string {\n\treturn getAgentDir();\n}\n\n/** Keep static model headers visible to hooks without promoting unchanged defaults to request overrides. */\nfunction removeUnownedModelHeaders(\n\theaders: ProviderHeaders | undefined,\n\tmodelHeaders: ProviderHeaders | undefined,\n\trequestHeaders: ProviderHeaders | undefined,\n): ProviderHeaders | undefined {\n\tif (!headers || !modelHeaders) return headers;\n\tconst requestOwned = new Set(Object.keys(requestHeaders ?? {}).map((name) => name.toLowerCase()));\n\tconst filtered = { ...headers };\n\tfor (const [modelName, modelValue] of Object.entries(modelHeaders)) {\n\t\tconst lowerName = modelName.toLowerCase();\n\t\tif (requestOwned.has(lowerName)) continue;\n\t\tfor (const [name, value] of Object.entries(filtered)) {\n\t\t\tif (name.toLowerCase() === lowerName && value === modelValue) delete filtered[name];\n\t\t}\n\t}\n\treturn Object.keys(filtered).length > 0 ? filtered : undefined;\n}\n\n/**\n * Create an AgentSession with the specified options.\n *\n * @example\n * ```typescript\n * // Minimal - uses defaults\n * const { session } = await createAgentSession();\n *\n * // With explicit model\n * import { getModel } from '@bastani/pi-ai/compat';\n * const { session } = await createAgentSession({\n * model: getModel('anthropic', 'claude-opus-4-5'),\n * thinkingLevel: 'high',\n * });\n *\n * // Continue previous session\n * const { session, modelFallbackMessage } = await createAgentSession({\n * continueSession: true,\n * });\n *\n * // Full control\n * const loader = new DefaultResourceLoader({\n * cwd: process.cwd(),\n * agentDir: getAgentDir(),\n * settingsManager: SettingsManager.create(),\n * });\n * await loader.reload();\n * const { session } = await createAgentSession({\n * model: myModel,\n * tools: [\"read\", \"bash\"],\n * resourceLoader: loader,\n * sessionManager: SessionManager.inMemory(),\n * });\n * ```\n */\nexport async function createAgentSession(options: CreateAgentSessionOptions = {}): Promise<CreateAgentSessionResult> {\n\treturn createScopedSession(options, false);\n}\n\n/** Internal CLI assembly seam. Not exported from the package entrypoint. */\nexport function createUnstartedAgentSession(options: CreateAgentSessionOptions): Promise<CreateAgentSessionResult> {\n\treturn createScopedSession(options, true);\n}\n\nfunction createScopedSession(\n\toptions: CreateAgentSessionOptions,\n\tdeferStart: boolean,\n): Promise<CreateAgentSessionResult> {\n\tconst inherited = sessionLifecycleCreation.getStore();\n\tconst context = inherited && !inherited.claimed ? inherited : { scope: {} };\n\treturn sessionLifecycleCreation.run({ ...context, claimed: true }, async () => {\n\t\tconst result = await factoryAcquisitions.run(\n\t\t\t{ pending: new Map(), replacement: context.replacement },\n\t\t\tasync () => {\n\t\t\t\ttry {\n\t\t\t\t\treturn await constructAgentSession(\n\t\t\t\t\t\t{ ...options, extensionBindings: options.extensionBindings ?? context.bindings },\n\t\t\t\t\t\tdeferStart,\n\t\t\t\t\t);\n\t\t\t\t} catch (error) {\n\t\t\t\t\tthrow factoryRollbackError(error, await rollbackFactoryAcquisitions());\n\t\t\t\t}\n\t\t\t},\n\t\t);\n\t\tsessionLifecycleScopes.set(result.session, context.scope);\n\t\treturn result;\n\t});\n}\n\nasync function constructAgentSession(\n\toptions: CreateAgentSessionOptions,\n\tdeferStart: boolean,\n): Promise<CreateAgentSessionResult> {\n\tconst cwd = resolvePath(options.cwd ?? options.sessionManager?.getCwd() ?? process.cwd());\n\tconst agentDir = options.agentDir ? resolvePath(options.agentDir) : getDefaultAgentDir();\n\tlet resourceLoader = options.resourceLoader;\n\t// The concrete default can rediscover into private storage (including deferred\n\t// CLI configuration). Custom discovery stays delegated; composition instantiates\n\t// its extensions independently without replacing overridden resource policy.\n\tif (canCloneDefaultResourceDiscovery(resourceLoader)) {\n\t\tresourceLoader = await resourceLoader.createSessionLoader(sessionLifecycleCreation.getStore()!.scope);\n\t}\n\tif (resourceLoader) resourceLoader = await isolateMandatoryResourceLoader(resourceLoader);\n\n\tconst authPath = options.agentDir ? join(agentDir, \"auth.json\") : undefined;\n\tconst modelsPath = options.agentDir ? join(agentDir, \"models.json\") : undefined;\n\tconst modelRuntime = options.modelRuntime ?? (await ModelRuntime.create({ authPath, modelsPath }));\n\tawait modelRuntime.refresh({ allowNetwork: false });\n\n\tconst settingsManager = options.settingsManager ?? SettingsManager.create(cwd, agentDir);\n\tconst sessionManager = options.sessionManager ?? SessionManager.create(cwd, getDefaultSessionDir(cwd, agentDir));\n\n\t// Mark workflow-created sessions as internal so they are excluded from the\n\t// standard `/resume` history while remaining resumable via `/workflow resume`.\n\t// Only stamped when the orchestration context identifies a workflow stage;\n\t// reattaching to an already-marked session preserves its existing marker.\n\tif (options.orchestrationContext?.kind === \"workflow-stage\") {\n\t\tconst ctx = options.orchestrationContext;\n\t\tsessionManager.markSessionInternal({\n\t\t\trunId: ctx.workflowRunId,\n\t\t\tstageId: ctx.workflowStageId,\n\t\t\tstageName: ctx.workflowStageName,\n\t\t});\n\t}\n\n\tconst disableWorkflowExtension =\n\t\toptions.orchestrationContext?.kind === \"workflow-stage\" || options.subagentPolicy !== undefined;\n\tif (!resourceLoader) {\n\t\tresourceLoader = new DefaultResourceLoader({\n\t\t\tcwd,\n\t\t\tagentDir,\n\t\t\tsettingsManager,\n\t\t\tbuiltinPackagePaths: getBuiltinPackagePaths(options.builtins).map((source) =>\n\t\t\t\tdisableWorkflowExtension && basename(source) === \"workflows\" ? { source, extensions: [] } : source,\n\t\t\t),\n\t\t});\n\t\tawait resourceLoader.reload();\n\t\ttime(\"resourceLoader.reload\");\n\t}\n\tif (\n\t\t(options.resourceLoader || options.builtins || disableWorkflowExtension) &&\n\t\t(!isMandatoryResourceLoader(resourceLoader) || options.builtins || disableWorkflowExtension)\n\t) {\n\t\tresourceLoader = await withBuiltinResourceLoader(\n\t\t\tresourceLoader,\n\t\t\tcwd,\n\t\t\tagentDir,\n\t\t\toptions.builtins,\n\t\t\tdisableWorkflowExtension,\n\t\t);\n\t}\n\tif (options.builtins?.intercom !== false) {\n\t\tresourceLoader = await withMandatoryResourceLoader(resourceLoader, cwd);\n\t}\n\n\t// Check if session has existing data to restore\n\tconst existingSession = sessionManager.buildSessionContext();\n\tconst repairedMessages = repairOrphanToolResults(existingSession.messages, { repairTrailing: true });\n\tconst existingMessages = options.initialContextTransform\n\t\t? options.initialContextTransform(repairedMessages)\n\t\t: repairedMessages;\n\tconst hasExistingSession = existingMessages.length > 0;\n\tconst hasThinkingEntry = sessionManager.getBranch().some((entry) => entry.type === \"thinking_level_change\");\n\n\tlet model = options.model;\n\tlet modelFallbackMessage: string | undefined;\n\tlet modelFallbackReason: import(\"./model-resolver-types.ts\").ModelFallbackReason | undefined;\n\n\t// If session has data, try to restore model from it\n\tif (!model && hasExistingSession && existingSession.model) {\n\t\tmodel = await resolveRestoredModelReference(\n\t\t\texistingSession.model.provider,\n\t\t\texistingSession.model.modelId,\n\t\t\tmodelRuntime,\n\t\t);\n\t\tif (!model) {\n\t\t\tmodelFallbackMessage = `Could not restore model ${existingSession.model.provider}/${existingSession.model.modelId}`;\n\t\t\tmodelFallbackReason = \"session-restore\";\n\t\t}\n\t}\n\tif (!model) {\n\t\tconst result = await findInitialModel({\n\t\t\tscopedModels: [],\n\t\t\tisContinuing: hasExistingSession,\n\t\t\tdefaultProvider: settingsManager.getDefaultProvider(),\n\t\t\tdefaultModelId: settingsManager.getDefaultModel(),\n\t\t\tdefaultThinkingLevel: settingsManager.getDefaultThinkingLevel(),\n\t\t\tmodelThinkingLevels: settingsManager.getAllModelThinkingLevels(),\n\t\t\tmodelRuntime,\n\t\t});\n\t\tmodel = result.model;\n\t\tif (!model) {\n\t\t\tif (result.fallbackReason === \"configured-provider-unsupported\") {\n\t\t\t\tmodelFallbackMessage = result.fallbackMessage;\n\t\t\t\tmodelFallbackReason = result.fallbackReason;\n\t\t\t} else if (!modelFallbackMessage) {\n\t\t\t\tmodelFallbackMessage = result.fallbackMessage ?? formatNoModelsAvailableMessage();\n\t\t\t\tmodelFallbackReason = result.fallbackReason ?? \"no-models-available\";\n\t\t\t}\n\t\t} else if (modelFallbackMessage) {\n\t\t\tmodelFallbackMessage += `. Using ${model.provider}/${model.id}`;\n\t\t}\n\t}\n\n\tlet thinkingLevel = options.thinkingLevel;\n\n\t// If session has data, restore thinking level from it\n\tif (thinkingLevel === undefined && hasExistingSession) {\n\t\tthinkingLevel = hasThinkingEntry\n\t\t\t? (existingSession.thinkingLevel as ThinkingLevel)\n\t\t\t: (settingsManager.getDefaultThinkingLevel() ?? DEFAULT_THINKING_LEVEL);\n\t}\n\n\t// Fall back to per-model override, then global default\n\tif (thinkingLevel === undefined && model) {\n\t\tthinkingLevel = settingsManager.getModelThinkingLevel(model.provider, model.id);\n\t}\n\tif (thinkingLevel === undefined) {\n\t\tthinkingLevel = settingsManager.getDefaultThinkingLevel() ?? DEFAULT_THINKING_LEVEL;\n\t}\n\n\t// Clamp to model capabilities\n\tif (!model) {\n\t\tthinkingLevel = \"off\";\n\t} else {\n\t\tthinkingLevel = clampThinkingLevel(model, thinkingLevel) as ThinkingLevel;\n\t}\n\n\t// `defaultTools` narrows only the initial BUILT-IN selection. It must not\n\t// narrow `allowedToolNames`: a narrow allowlist would drop every extension\n\t// and SDK custom tool (workflow, subagent, intercom, mcp, web_search, ...)\n\t// for any user who configures it (upstream 4d9aa837 + companion fix 541045ae).\n\tconst configuredDefaultToolNames = settingsManager.getDefaultTools();\n\tconst allowedToolNames =\n\t\toptions.noTools === \"all\" ? [] : options.tools === undefined ? undefined : [...options.tools];\n\tconst initialActiveToolNames: string[] = allowedToolNames\n\t\t? [...allowedToolNames]\n\t\t: options.noTools\n\t\t\t? []\n\t\t\t: [...(configuredDefaultToolNames ?? getDefaultToolNames())];\n\tconst childBuiltins = { ...options.builtins };\n\tconst childExcludedTools = [\n\t\t...(options.excludedTools ?? []),\n\t\t...(allowedToolNames === undefined\n\t\t\t? [...allToolNames].filter((name) => !initialActiveToolNames.includes(name))\n\t\t\t: []),\n\t];\n\n\tlet agent: Agent;\n\n\tlet lastConvertedLlmMessages: Message[] | undefined;\n\n\t// Create convertToLlm wrapper that filters images if blockImages is enabled (defense-in-depth)\n\tconst convertToLlmWithBlockImages = (messages: AgentMessage[]): Message[] => {\n\t\tconst converted = convertToLlm(messages);\n\t\t// Check setting dynamically so mid-session changes take effect\n\t\tif (!settingsManager.getBlockImages()) {\n\t\t\tlastConvertedLlmMessages = converted;\n\t\t\treturn converted;\n\t\t}\n\t\t// Filter out ImageContent from all messages, replacing with text placeholder\n\t\tconst filtered = converted.map((msg): Message => {\n\t\t\tif (msg.role === \"user\" || msg.role === \"toolResult\") {\n\t\t\t\tconst content = msg.content;\n\t\t\t\tif (Array.isArray(content)) {\n\t\t\t\t\tconst hasImages = content.some((c) => c.type === \"image\");\n\t\t\t\t\tif (hasImages) {\n\t\t\t\t\t\tconst filteredContent = content\n\t\t\t\t\t\t\t.map((c) =>\n\t\t\t\t\t\t\t\tc.type === \"image\"\n\t\t\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t\t\ttype: \"text\" as const,\n\t\t\t\t\t\t\t\t\t\t\ttext: \"Image reading is disabled.\",\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t: c,\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t.filter(\n\t\t\t\t\t\t\t\t(c, i, arr) =>\n\t\t\t\t\t\t\t\t\t// Dedupe consecutive \"Image reading is disabled.\" texts\n\t\t\t\t\t\t\t\t\t!(\n\t\t\t\t\t\t\t\t\t\tc.type === \"text\" &&\n\t\t\t\t\t\t\t\t\t\tc.text === \"Image reading is disabled.\" &&\n\t\t\t\t\t\t\t\t\t\ti > 0 &&\n\t\t\t\t\t\t\t\t\t\tarr[i - 1].type === \"text\" &&\n\t\t\t\t\t\t\t\t\t\t(arr[i - 1] as { type: \"text\"; text: string }).text === \"Image reading is disabled.\"\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t// `user` and `toolResult` carry different content unions, and mapping them in one\n\t\t\t\t\t\t// branch widens both to their union. Only image blocks are rewritten here, so each\n\t\t\t\t\t\t// message keeps its own shape at runtime.\n\t\t\t\t\t\treturn { ...msg, content: filteredContent } as Message;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn msg;\n\t\t});\n\t\tlastConvertedLlmMessages = filtered;\n\t\treturn filtered;\n\t};\n\n\tconst extensionRunnerRef: { current?: ExtensionRunner } = {};\n\tconst cacheWarmer = new CacheWarmer(\n\t\t{\n\t\t\tstreamSimple: (model, context, requestOptions) => {\n\t\t\t\tconst extension = modelRuntime.getRegisteredProviderConfig(model.provider);\n\t\t\t\treturn getModelFastRoute(model)?.serviceTier !== undefined &&\n\t\t\t\t\t!(extension?.streamSimple && extension.api === model.api)\n\t\t\t\t\t? streamWithFastRoute(model, context, requestOptions)\n\t\t\t\t\t: modelRuntime.streamSimple(model, context, requestOptions);\n\t\t\t},\n\t\t},\n\t\tsessionManager,\n\t\t() => settingsManager.getCacheWarmingMode(),\n\t\tasync (event) => {\n\t\t\tconst runner = extensionRunnerRef.current;\n\t\t\tif (!runner) {\n\t\t\t\treturn event.action;\n\t\t\t}\n\t\t\treturn (await runner.emitCacheWarmingDecision(event)) ?? event.action;\n\t\t},\n\t\t(refresh) => trackSessionWork(session, refresh),\n\t);\n\n\tconst handleProviderStreamEvent: NonNullable<ModelRuntimeSimpleStreamOptions[\"onProviderStreamEvent\"]> = async (\n\t\tdata,\n\t\tmodel,\n\t) => {\n\t\tconst runner = extensionRunnerRef.current;\n\t\tif (!runner?.hasHandlers(\"provider_stream_event\")) return;\n\t\tawait runner.emit({\n\t\t\ttype: \"provider_stream_event\",\n\t\t\tprovider: model.provider,\n\t\t\tapi: model.api,\n\t\t\tmodel: model.id,\n\t\t\tdata,\n\t\t});\n\t};\n\n\tagent = new Agent({\n\t\tinitialState: {\n\t\t\tsystemPrompt: \"\",\n\t\t\tmodel,\n\t\t\tthinkingLevel,\n\t\t\ttools: [],\n\t\t\tmessages: existingMessages,\n\t\t},\n\t\tconvertToLlm: convertToLlmWithBlockImages,\n\t\tstreamFn: async (model, context, streamOptions) => {\n\t\t\tconst authResult = await modelRuntime.getRequestAuth(model, {\n\t\t\t\tapiKey: streamOptions?.apiKey,\n\t\t\t\tenv: streamOptions?.env,\n\t\t\t\tsignal: streamOptions?.signal,\n\t\t\t});\n\t\t\tconst compatibility = authResult ? undefined : modelRuntime.getCompatibilityRequestConfig(model);\n\t\t\tif (!authResult && compatibility?.authHeader) {\n\t\t\t\tthrow new Error(`No API key found for \"${model.provider}\"`);\n\t\t\t}\n\t\t\tconst auth = {\n\t\t\t\tapiKey: authResult?.auth.apiKey,\n\t\t\t\theaders: authResult?.auth.headers ?? compatibility?.headers,\n\t\t\t\tbaseUrl: authResult?.auth.baseUrl,\n\t\t\t\tenv: authResult?.env,\n\t\t\t};\n\t\t\tconst requestModel =\n\t\t\t\tauth.baseUrl !== undefined && auth.baseUrl !== model.baseUrl ? { ...model, baseUrl: auth.baseUrl } : model;\n\t\t\tconst providerRetrySettings = settingsManager.getProviderRetrySettings();\n\t\t\tconst httpIdleTimeoutMs = settingsManager.getHttpIdleTimeoutMs();\n\t\t\t// SDKs treat timeout=0 as 0ms (immediate timeout), not \"no timeout\".\n\t\t\t// Use max int32 to effectively disable the timeout.\n\t\t\tconst effectiveTimeoutMs = httpIdleTimeoutMs === 0 ? 2147483647 : httpIdleTimeoutMs;\n\t\t\tconst timeoutMs = streamOptions?.timeoutMs ?? providerRetrySettings.timeoutMs ?? effectiveTimeoutMs;\n\t\t\tconst websocketConnectTimeoutMs =\n\t\t\t\tstreamOptions?.websocketConnectTimeoutMs ?? settingsManager.getWebSocketConnectTimeoutMs();\n\t\t\tconst streamDeadlineMs = streamOptions?.streamDeadlineMs ?? settingsManager.getStreamDeadlineMs();\n\t\t\tconst requestHeaders = mergeProviderAttributionHeaders(\n\t\t\t\tmodel,\n\t\t\t\tsettingsManager,\n\t\t\t\tstreamOptions?.sessionId,\n\t\t\t\tauth.headers,\n\t\t\t\tstreamOptions?.headers,\n\t\t\t);\n\t\t\tconst mergedHeaders = mergeHeaders(model.headers, requestHeaders);\n\t\t\tconst headerRunner = extensionRunnerRef.current;\n\t\t\tconst assembledHeaders = headerRunner?.hasHandlers(\"before_provider_headers\")\n\t\t\t\t? await headerRunner.emitBeforeProviderHeaders(mergedHeaders ?? {})\n\t\t\t\t: mergedHeaders;\n\t\t\tconst extensionProvider = modelRuntime.getRegisteredProviderConfig(requestModel.provider);\n\t\t\tconst usesExtensionStream =\n\t\t\t\textensionProvider?.streamSimple !== undefined && requestModel.api === extensionProvider.api;\n\t\t\tconst transportHeaders = usesExtensionStream\n\t\t\t\t? assembledHeaders\n\t\t\t\t: removeUnownedModelHeaders(assembledHeaders, model.headers, requestHeaders);\n\t\t\t// Fast-vs-normal is the selected model's own identity, so the canonical `-fast` model is what\n\t\t\t// dispatch, the recorded assistant message, session state, and usage all see. The provider\n\t\t\t// adapter reads `fastRoute.upstreamModelId` when it serializes the outbound request.\n\t\t\tconst fastRoute = getModelFastRoute(requestModel);\n\t\t\tif (fastRoute?.serviceTier !== undefined && !usesExtensionStream && !authResult) {\n\t\t\t\tthrow new Error(`No API key found for \"${model.provider}\"`);\n\t\t\t}\n\t\t\tconst env = auth.env || streamOptions?.env ? { ...auth.env, ...streamOptions?.env } : undefined;\n\t\t\tconst cacheRetentionEnv = getProviderEnvValue(\"PI_CACHE_RETENTION\", env);\n\t\t\t// Shared by main chat, workflow stages and subagents; provider capability gates still apply.\n\t\t\tconst cacheRetention =\n\t\t\t\tstreamOptions?.cacheRetention ??\n\t\t\t\t(cacheRetentionEnv === \"none\"\n\t\t\t\t\t? \"none\"\n\t\t\t\t\t: !cacheRetentionEnv\n\t\t\t\t\t\t? getDefaultCacheRetention(requestModel)\n\t\t\t\t\t\t: cacheRetentionEnv === \"long\"\n\t\t\t\t\t\t\t? \"long\"\n\t\t\t\t\t\t\t: \"short\");\n\t\t\tconst fastRouteStreamOptions = withFastRouteStreamOptions(fastRoute, {\n\t\t\t\t...streamOptions,\n\t\t\t\tapiKey: auth.apiKey,\n\t\t\t\tenv,\n\t\t\t\tcacheRetention,\n\t\t\t\ttimeoutMs,\n\t\t\t\twebsocketConnectTimeoutMs,\n\t\t\t\tstreamDeadlineMs,\n\t\t\t\tmaxRetries: streamOptions?.maxRetries ?? providerRetrySettings.maxRetries,\n\t\t\t\tmaxRetryDelayMs: streamOptions?.maxRetryDelayMs ?? providerRetrySettings.maxRetryDelayMs,\n\t\t\t\theaders: transportHeaders,\n\t\t\t});\n\t\t\tconst preparedStreamOptions: ModelRuntimeSimpleStreamOptions = {\n\t\t\t\t...fastRouteStreamOptions,\n\t\t\t\tpreparedRequestAuth: { resolution: authResult },\n\t\t\t};\n\t\t\tif (streamOptions?.sessionId === sessionManager.getSessionId()) {\n\t\t\t\tconst prefix = [...agent.state.messages];\n\t\t\t\tcacheWarmer.start({ model: requestModel, context, options: preparedStreamOptions }, () => {\n\t\t\t\t\tconst current = agent.state.model;\n\t\t\t\t\treturn (\n\t\t\t\t\t\t!sessionLifetime(session).aborted &&\n\t\t\t\t\t\t!sessionGenerationClosing.has(session) &&\n\t\t\t\t\t\t!(session as unknown as AgentSessionInternalSurface)._agentRunAbortRequested &&\n\t\t\t\t\t\tcurrent?.provider === model.provider &&\n\t\t\t\t\t\tcurrent.id === model.id &&\n\t\t\t\t\t\tprefix.every((message, index) => agent.state.messages[index] === message)\n\t\t\t\t\t);\n\t\t\t\t});\n\t\t\t}\n\t\t\tconst onProviderStreamEvent = streamOptions?.onProviderStreamEvent ?? handleProviderStreamEvent;\n\t\t\tif (fastRoute?.serviceTier !== undefined && !usesExtensionStream) {\n\t\t\t\treturn streamWithFastRoute(requestModel, context, { ...fastRouteStreamOptions, onProviderStreamEvent });\n\t\t\t}\n\t\t\t// The Codex routing identity is attached by ModelRuntimeStreaming, after auth headers are\n\t\t\t// merged. Applying it here would be inert: `mergeHeaders` copies the header object the\n\t\t\t// wrapper mutates.\n\t\t\treturn modelRuntime.streamSimple(requestModel, context, { ...preparedStreamOptions, onProviderStreamEvent });\n\t\t},\n\t\tonPayload: async (payload, model) => {\n\t\t\tconst sourceMessages = lastConvertedLlmMessages;\n\t\t\tconst replayGuardedPayload = sourceMessages\n\t\t\t\t? restoreAnthropicReplayThinkingBlocks(payload, sourceMessages, model)\n\t\t\t\t: payload;\n\t\t\tconst runner = extensionRunnerRef.current;\n\t\t\tlet finalPayload: unknown;\n\t\t\tif (!runner?.hasHandlers(\"before_provider_request\")) {\n\t\t\t\tfinalPayload = replayGuardedPayload;\n\t\t\t} else {\n\t\t\t\tconst extensionPayload = await runner.emitBeforeProviderRequest(replayGuardedPayload);\n\t\t\t\tfinalPayload = sourceMessages\n\t\t\t\t\t? restoreAnthropicReplayThinkingBlocks(extensionPayload, sourceMessages, model)\n\t\t\t\t\t: extensionPayload;\n\t\t\t}\n\t\t\tconst sanitizedPayload = sanitizeOpenAIResponsesPayload(finalPayload, model);\n\t\t\tmarkLifecycleTiming(\"before-provider-request\");\n\t\t\treturn sanitizedPayload;\n\t\t},\n\t\tonResponse: async (response, _model) => {\n\t\t\tconst runner = extensionRunnerRef.current;\n\t\t\tif (!runner?.hasHandlers(\"after_provider_response\")) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tawait runner.emit({\n\t\t\t\ttype: \"after_provider_response\",\n\t\t\t\tstatus: response.status,\n\t\t\t\theaders: response.headers,\n\t\t\t});\n\t\t},\n\t\tsessionId: sessionManager.getSessionId(),\n\t\ttransformContext: async (messages) => {\n\t\t\tconst runner = extensionRunnerRef.current;\n\t\t\tconst transformed = runner ? await runner.emitContext(messages) : messages;\n\t\t\treturn scrubPreCompactionAssistantUsage(transformed, sessionManager.getBranch());\n\t\t},\n\t\tsteeringMode: settingsManager.getSteeringMode(),\n\t\tfollowUpMode: settingsManager.getFollowUpMode(),\n\t\ttransport: settingsManager.getTransport(),\n\t\tthinkingBudgets: settingsManager.getThinkingBudgets(),\n\t\tmaxRetryDelayMs: settingsManager.getProviderRetrySettings().maxRetryDelayMs,\n\t});\n\n\t// Restore missing settings metadata for older sessions.\n\tif (hasExistingSession) {\n\t\tif (!hasThinkingEntry) {\n\t\t\tsessionManager.appendThinkingLevelChange(thinkingLevel);\n\t\t}\n\t} else {\n\t\t// Save initial model and thinking level for new sessions so they can be restored on resume\n\t\tif (model) {\n\t\t\tsessionManager.appendModelChange(model.provider, model.id);\n\t\t}\n\t\tsessionManager.appendThinkingLevelChange(thinkingLevel);\n\t}\n\n\tconst providerRollback = modelRuntime.createExtensionProviderTransaction();\n\tlet session: AgentSession;\n\tconst childCommandTaskOwner = createChildCommandTaskOwner(() => session.getAgentTaskHost());\n\ttry {\n\t\tsession = new AgentSession({\n\t\t\tagent,\n\t\t\tsessionManager,\n\t\t\tsettingsManager,\n\t\t\tcwd,\n\t\t\tchildSessionOptions: (child) =>\n\t\t\t\tinheritChildSessionOptions(\n\t\t\t\t\t{\n\t\t\t\t\t\tcwd,\n\t\t\t\t\t\tagentDir,\n\t\t\t\t\t\tmodelRuntime,\n\t\t\t\t\t\tsettingsManager,\n\t\t\t\t\t\tmodel: session.model,\n\t\t\t\t\t\tthinkingLevel: session.thinkingLevel,\n\t\t\t\t\t\tfallbackModels: options.fallbackModels ?? settingsManager.getFallbackModels(),\n\t\t\t\t\t\tisFallbackModelAllowed: options.isFallbackModelAllowed,\n\t\t\t\t\t\tbuiltins: childBuiltins,\n\t\t\t\t\t\ttools: allowedToolNames,\n\t\t\t\t\t\tnoTools: options.noTools,\n\t\t\t\t\t\texcludedTools: childExcludedTools,\n\t\t\t\t\t\tcustomTools: options.customTools,\n\t\t\t\t\t\textensionBindings: session.extensionRunner.getChildHostBindings(),\n\t\t\t\t\t\tparentCommandTaskOwner: childCommandTaskOwner,\n\t\t\t\t\t},\n\t\t\t\t\tchild,\n\t\t\t\t),\n\t\t\tscopedModels: options.scopedModels,\n\t\t\tfallbackModels: options.fallbackModels ?? settingsManager.getFallbackModels(),\n\t\t\tisFallbackModelAllowed: options.isFallbackModelAllowed,\n\t\t\tresourceLoader,\n\t\t\tcustomTools: options.customTools,\n\t\t\tmodelRuntime,\n\t\t\tcacheWarmer,\n\t\t\tinitialActiveToolNames,\n\t\t\tusesDefaultTools: options.tools === undefined && !options.noTools,\n\t\t\tallowedToolNames,\n\t\t\texcludedToolNames: options.excludedTools,\n\t\t\textensionRunnerRef,\n\t\t\tsessionStartEvent: options.sessionStartEvent,\n\t\t\torchestrationContext: options.orchestrationContext,\n\t\t\tsubagentPolicy: options.subagentPolicy,\n\t\t\tparentCommandTaskOwner: options.parentCommandTaskOwner,\n\t\t\tsystemPromptTransform: options.systemPromptTransform,\n\t\t\tcontextProjectionTransform: options.initialContextTransform,\n\t\t});\n\t} catch (error) {\n\t\t// The constructor releases its own leases/subscriptions; restore borrowed provider state here.\n\t\tconst cleanup = await Promise.allSettled([providerRollback.commit(), settingsManager.flush()]);\n\t\tconst failures = cleanup.flatMap((result) => (result.status === \"rejected\" ? [result.reason] : []));\n\t\tif (failures.length)\n\t\t\tthrow new AggregateError([error, ...failures], \"Session construction failed and rollback reported errors\");\n\t\tthrow error;\n\t}\n\t// Only the selected factories transfer. Discovery may have acquired omitted factories.\n\tconst acquisitions = factoryAcquisitions.getStore();\n\tconst selected = resourceLoader.getExtensions();\n\tfor (const extension of selected.extensions) acquisitions?.pending?.delete(extension);\n\tif (!options.settingsManager) ownedSettingsManagers.set(settingsManager, session);\n\tconst rollbackReason = sessionLifecycleCreation.getStore()?.replacement ? \"new\" : \"quit\";\n\tregisterStartupRollback(session.extensionRunner, async (error) => {\n\t\tconst results = await Promise.allSettled([\n\t\t\t(session as unknown as AgentSessionInternalSurface)._close({\n\t\t\t\ttype: \"session_shutdown\",\n\t\t\t\treason: rollbackReason,\n\t\t\t}),\n\t\t\tproviderRollback.commit(),\n\t\t]);\n\t\tconst cleanupErrors = results.flatMap((result) => (result.status === \"rejected\" ? [result.reason] : []));\n\t\tif (cleanupErrors.length)\n\t\t\tthrow new AggregateError([error, ...cleanupErrors], \"Extension startup failed and rollback reported errors\");\n\t\tthrow error;\n\t});\n\ttry {\n\t\t// Omitted factories may share the selected runtime: release their acquisitions,\n\t\t// but leave that runtime and its selected subscriptions owned by the runner.\n\t\tconst failures = await rollbackFactoryAcquisitions(new Set([selected.runtime]));\n\t\tif (failures.length)\n\t\t\tthrow Object.assign(new AggregateError(failures, \"Unselected extension cleanup failed\"), {\n\t\t\t\tcode: \"ShutdownFailed\",\n\t\t\t});\n\t\tconst extensionsResult = resourceLoader.getExtensions();\n\t\tfor (const failure of extensionsResult.errors) {\n\t\t\tconst builtin = getBuiltinPackageLocations().find(({ packageDir }) => {\n\t\t\t\tconst path = relative(packageDir, failure.path);\n\t\t\t\treturn path !== \"..\" && !path.startsWith(`..${sep}`) && !path.startsWith(sep);\n\t\t\t});\n\t\t\tif (builtin)\n\t\t\t\tthrow Object.assign(new Error(`Builtin unavailable: ${builtin.packageName}: ${failure.error}`), {\n\t\t\t\t\tcode: \"BuiltinUnavailable\",\n\t\t\t\t});\n\t\t}\n\t\tif (!deferStart) await session.bindExtensions(options.extensionBindings ?? {});\n\t\treturn { session, extensionsResult, modelFallbackMessage, modelFallbackReason };\n\t} catch (error) {\n\t\treturn rollbackStartup(session.extensionRunner, error instanceof Error ? error : new Error(String(error)));\n\t}\n}\n"]}
@@ -1,5 +1,6 @@
1
1
  import type { AgentMessage, AgentTool } from "@earendil-works/pi-agent-core";
2
2
  import type { AgentSessionInternalSurface as AgentSession } from "./agent-session-methods.ts";
3
+ export declare function isToolDeclarationHidden(session: AgentSession, name: string): boolean;
3
4
  export declare function applyToolLoadout(session: AgentSession, names: readonly string[]): AgentTool[];
4
5
  /** Hide only request declarations. The transcript retains activation and branch history. */
5
6
  export declare function projectToolLoadout(session: AgentSession, messages: AgentMessage[]): AgentMessage[];
@@ -1 +1 @@
1
- {"version":3,"file":"tool-loadout.d.ts","sourceRoot":"","sources":["../../src/core/tool-loadout.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAC7E,OAAO,KAAK,EAAE,2BAA2B,IAAI,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAK9F,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,EAAE,CAsC7F;AAED,4FAA4F;AAC5F,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,YAAY,EAAE,CAclG"}
1
+ {"version":3,"file":"tool-loadout.d.ts","sourceRoot":"","sources":["../../src/core/tool-loadout.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAC7E,OAAO,KAAK,EAAE,2BAA2B,IAAI,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAK9F,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAEpF;AACD,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,EAAE,CAsC7F;AAED,4FAA4F;AAC5F,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,YAAY,EAAE,CAclG"}
@@ -1,5 +1,8 @@
1
1
  import { getCallableTools } from "./agent-session-nested-tools.js";
2
2
  const hiddenDeclarations = new WeakMap();
3
+ export function isToolDeclarationHidden(session, name) {
4
+ return hiddenDeclarations.get(session)?.has(name) ?? false;
5
+ }
3
6
  export function applyToolLoadout(session, names) {
4
7
  const tools = [...new Set(names)].flatMap((name) => {
5
8
  const tool = session._toolRegistry.get(name);
@@ -1 +1 @@
1
- {"version":3,"file":"tool-loadout.js","sourceRoot":"","sources":["../../src/core/tool-loadout.ts"],"names":[],"mappings":"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","sourcesContent":["import type { AgentMessage, AgentTool } from \"@earendil-works/pi-agent-core\";\nimport type { AgentSessionInternalSurface as AgentSession } from \"./agent-session-methods.ts\";\nimport { getCallableTools } from \"./agent-session-nested-tools.js\";\nimport type { ToolLoadout } from \"./extensions/tool-types.ts\";\n\nconst hiddenDeclarations = new WeakMap<AgentSession, ReadonlySet<string>>();\nexport function applyToolLoadout(session: AgentSession, names: readonly string[]): AgentTool[] {\n\tconst tools = [...new Set(names)].flatMap((name) => {\n\t\tconst tool = session._toolRegistry.get(name);\n\t\treturn tool && session.getToolDefinition(name)?.exposure !== \"hidden\" ? [tool] : [];\n\t});\n\tconst loadout: ToolLoadout = {\n\t\tdeclared: tools,\n\t\tcallable: getCallableTools(session, new Set(tools.map((tool) => tool.name))),\n\t\tregistered: [...session._toolRegistry.values()],\n\t\tgetExposure: (name) => session.getToolDefinition(name)?.exposure ?? \"direct\",\n\t\tgetNamespace: (name) => session.getToolDefinition(name)?.namespace,\n\t};\n\tconst descriptions = new Map<string, string>();\n\tconst hidden = new Set<string>();\n\tfor (const tool of tools) {\n\t\tconst entry = session._toolDefinitions.get(tool.name);\n\t\tif (!entry?.definition.prepareLoadout) continue;\n\t\ttry {\n\t\t\tconst changes = entry.definition.prepareLoadout(loadout);\n\t\t\tfor (const [name, description] of Object.entries(changes?.descriptions ?? {}))\n\t\t\t\tdescriptions.set(name, description);\n\t\t\tfor (const name of changes?.hiddenDeclarations ?? []) hidden.add(name);\n\t\t} catch (error) {\n\t\t\tsession.extensionRunner.emitError({\n\t\t\t\textensionPath: entry.sourceInfo.path,\n\t\t\t\tevent: \"prepare_loadout\",\n\t\t\t\terror: error instanceof Error ? error.message : String(error),\n\t\t\t\tstack: error instanceof Error ? error.stack : undefined,\n\t\t\t});\n\t\t}\n\t}\n\thiddenDeclarations.set(session, hidden);\n\tconst declared = tools.map((tool) => {\n\t\tconst description = descriptions.get(tool.name);\n\t\treturn description === undefined ? tool : { ...tool, description };\n\t});\n\tsession.agent.state.tools = declared;\n\treturn declared;\n}\n\n/** Hide only request declarations. The transcript retains activation and branch history. */\nexport function projectToolLoadout(session: AgentSession, messages: AgentMessage[]): AgentMessage[] {\n\tconst hidden = hiddenDeclarations.get(session);\n\tif (!hidden?.size) return messages;\n\treturn messages.map((message) => {\n\t\tif (message.role !== \"system\" || (!message.toolsAdded && !message.toolsRemoved)) return message;\n\t\tconst { toolsAdded, toolsRemoved, ...rest } = message;\n\t\tconst added = toolsAdded?.filter((tool) => !hidden.has(tool.name)) ?? [];\n\t\tconst removed = toolsRemoved?.filter((tool) => !hidden.has(tool.name)) ?? [];\n\t\treturn {\n\t\t\t...rest,\n\t\t\t...(added.length ? { toolsAdded: added } : {}),\n\t\t\t...(removed.length ? { toolsRemoved: removed } : {}),\n\t\t};\n\t});\n}\n"]}
1
+ {"version":3,"file":"tool-loadout.js","sourceRoot":"","sources":["../../src/core/tool-loadout.ts"],"names":[],"mappings":"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","sourcesContent":["import type { AgentMessage, AgentTool } from \"@earendil-works/pi-agent-core\";\nimport type { AgentSessionInternalSurface as AgentSession } from \"./agent-session-methods.ts\";\nimport { getCallableTools } from \"./agent-session-nested-tools.js\";\nimport type { ToolLoadout } from \"./extensions/tool-types.ts\";\n\nconst hiddenDeclarations = new WeakMap<AgentSession, ReadonlySet<string>>();\nexport function isToolDeclarationHidden(session: AgentSession, name: string): boolean {\n\treturn hiddenDeclarations.get(session)?.has(name) ?? false;\n}\nexport function applyToolLoadout(session: AgentSession, names: readonly string[]): AgentTool[] {\n\tconst tools = [...new Set(names)].flatMap((name) => {\n\t\tconst tool = session._toolRegistry.get(name);\n\t\treturn tool && session.getToolDefinition(name)?.exposure !== \"hidden\" ? [tool] : [];\n\t});\n\tconst loadout: ToolLoadout = {\n\t\tdeclared: tools,\n\t\tcallable: getCallableTools(session, new Set(tools.map((tool) => tool.name))),\n\t\tregistered: [...session._toolRegistry.values()],\n\t\tgetExposure: (name) => session.getToolDefinition(name)?.exposure ?? \"direct\",\n\t\tgetNamespace: (name) => session.getToolDefinition(name)?.namespace,\n\t};\n\tconst descriptions = new Map<string, string>();\n\tconst hidden = new Set<string>();\n\tfor (const tool of tools) {\n\t\tconst entry = session._toolDefinitions.get(tool.name);\n\t\tif (!entry?.definition.prepareLoadout) continue;\n\t\ttry {\n\t\t\tconst changes = entry.definition.prepareLoadout(loadout);\n\t\t\tfor (const [name, description] of Object.entries(changes?.descriptions ?? {}))\n\t\t\t\tdescriptions.set(name, description);\n\t\t\tfor (const name of changes?.hiddenDeclarations ?? []) hidden.add(name);\n\t\t} catch (error) {\n\t\t\tsession.extensionRunner.emitError({\n\t\t\t\textensionPath: entry.sourceInfo.path,\n\t\t\t\tevent: \"prepare_loadout\",\n\t\t\t\terror: error instanceof Error ? error.message : String(error),\n\t\t\t\tstack: error instanceof Error ? error.stack : undefined,\n\t\t\t});\n\t\t}\n\t}\n\thiddenDeclarations.set(session, hidden);\n\tconst declared = tools.map((tool) => {\n\t\tconst description = descriptions.get(tool.name);\n\t\treturn description === undefined ? tool : { ...tool, description };\n\t});\n\tsession.agent.state.tools = declared;\n\treturn declared;\n}\n\n/** Hide only request declarations. The transcript retains activation and branch history. */\nexport function projectToolLoadout(session: AgentSession, messages: AgentMessage[]): AgentMessage[] {\n\tconst hidden = hiddenDeclarations.get(session);\n\tif (!hidden?.size) return messages;\n\treturn messages.map((message) => {\n\t\tif (message.role !== \"system\" || (!message.toolsAdded && !message.toolsRemoved)) return message;\n\t\tconst { toolsAdded, toolsRemoved, ...rest } = message;\n\t\tconst added = toolsAdded?.filter((tool) => !hidden.has(tool.name)) ?? [];\n\t\tconst removed = toolsRemoved?.filter((tool) => !hidden.has(tool.name)) ?? [];\n\t\treturn {\n\t\t\t...rest,\n\t\t\t...(added.length ? { toolsAdded: added } : {}),\n\t\t\t...(removed.length ? { toolsRemoved: removed } : {}),\n\t\t};\n\t});\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"bash.d.ts","sourceRoot":"","sources":["../../../src/core/tools/bash.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bash.d.ts","sourceRoot":"","sources":["../../../src/core/tools/bash.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAG/D,OAAO,EAAE,KAAK,MAAM,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAa5C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,KAAK,EAAoB,cAAc,EAA2B,MAAM,wBAAwB,CAAC;AACxG,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EACN,KAAK,mBAAmB,EAGxB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAGN,KAAK,sBAAsB,EAC3B,KAAK,uBAAuB,EAG5B,MAAM,sBAAsB,CAAC;AAO9B,OAAO,EAAiC,KAAK,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAmBrF,QAAA,MAAM,cAAc;;;;;;;EA0BnB,CAAC;AACF,KAAK,iBAAiB,GAAG,MAAM,CAAC,OAAO,cAAc,CAAC,GAAG;IAAE,MAAM,CAAC,EAAE,KAAK,CAAC;IAAC,EAAE,CAAC,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,EAAE,KAAK,CAAA;CAAE,CAAC;AAC1G,KAAK,cAAc,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAChF,MAAM,CAAC,MAAM,MAAM,CAAC,OAAO,cAAc,CAAC,EAAE,KAAK,CAAC,CAClD,CAAC;AACF,QAAA,MAAM,UAAU,kDAiBd,CAAC;AAcH,eAAO,MAAM,gCAAgC;sBACnC,0BAA0B;;EAOzB,CAAC;AACZ,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,OAAO,UAAU,CAAC,CAAC;AACtD,MAAM,WAAW,eAAe;IAC/B,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,WAAW,CAAC,EAAE,OAAO,uBAAuB,EAAE,WAAW,CAAC;IAC1D,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,UAAU,CAAC,EAAE,MAAM,CAAC;CACpB;AAGD,wBAAgB,8BAA8B,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAKpE;AAMD,MAAM,MAAM,iBAAiB,GAAG,QAAQ,GAAG,QAAQ,CAAC;AACpD,MAAM,WAAW,cAAc;IAC9B,IAAI,EAAE,CACL,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,MAAM,EACX,OAAO,EAAE;QACR,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,iBAAiB,KAAK,IAAI,CAAC;QAC5D,MAAM,CAAC,EAAE,WAAW,CAAC;QACrB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,IAAI,CAAC,EAAE,UAAU,CAAC;QAClB,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;QACxB,GAAG,CAAC,EAAE,OAAO,CAAC;KACd,KACG,OAAO,CAAC,uBAAuB,CAAC,CAAC;CACtC;AACD,wBAAgB,yBAAyB,CAAC,OAAO,CAAC,EAAE;IACnD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,sBAAsB,CAAC;CACnC,GAAG,cAAc,CAoFjB;AACD,MAAM,WAAW,gBAAgB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;CACvB;AACD,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,EAAE,gBAAgB,KAAK,gBAAgB,CAAC;AAW5E,MAAM,WAAW,qBAAqB;IACrC,UAAU,CAAC,EAAE,cAAc,CAAC;IAC5B,MAAM,CAAC,EAAE,UAAU,CAAC;CACpB;AACD,MAAM,MAAM,eAAe,GAAG,CAC7B,OAAO,EAAE,gBAAgB,KACrB,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC,GAAG,qBAAqB,GAAG,SAAS,CAAC;AACpF,MAAM,WAAW,eAAe;IAC/B,UAAU,CAAC,EAAE,cAAc,CAAC;IAC5B,iEAAiE;IACjE,SAAS,CAAC,EAAE,sBAAsB,CAAC;IACnC,qGAAqG;IACrG,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,gEAAgE;IAChE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,sEAAsE;IACtE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2GAA2G;IAC3G,YAAY,CAAC,EAAE,OAAO,GAAG,YAAY,CAAC;IACtC,sEAAsE;IACtE,SAAS,CAAC,EAAE,aAAa,CAAC;IAC1B,wEAAwE;IACxE,WAAW,CAAC,EAAE,eAAe,CAAC;IAC9B,kBAAkB,CAAC,EAAE,OAAO,GAAG,CAAC,MAAM,OAAO,CAAC,CAAC;IAC/C,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,gBAAgB,CAAC,EAAE,mBAAmB,EAAE,CAAC;IACzC;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC;CACrD;AACD;;;;GAIG;AACH,MAAM,WAAW,qBAAqB;IACrC,oEAAoE;IACpE,MAAM,EAAE,MAAM,CAAC;IACf,4DAA4D;IAC5D,cAAc,EAAE,MAAM,CAAC;CACvB;AACD,eAAO,MAAM,uBAAuB,EAAE,qBAGrC,CAAC;AAkBF,KAAK,eAAe,GAAG;IACtB,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,QAAQ,EAAE,MAAM,CAAC,OAAO,GAAG,SAAS,CAAC;CACrC,CAAC;AAkGF,wBAAgB,wBAAwB,CACvC,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,eAAe,EACzB,YAAY,GAAE,qBAA+C,GAC3D,cAAc,CAAC,OAAO,UAAU,EAAE,eAAe,GAAG,SAAS,EAAE,eAAe,CAAC,CAmUjF;AACD,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,SAAS,CAAC,OAAO,UAAU,CAAC,CAEnG"}
@@ -2,12 +2,12 @@ import { constants } from "node:fs";
2
2
  import { access as fsAccess, stat as fsStat } from "node:fs/promises";
3
3
  import { constants as osConstants } from "node:os";
4
4
  import { resolve as resolvePath } from "node:path";
5
- import { Container, Text, truncateToWidth } from "@earendil-works/pi-tui";
5
+ import { Container, Spacer, Text } from "@earendil-works/pi-tui";
6
6
  import { spawn } from "child_process";
7
7
  import { Type } from "typebox";
8
8
  import { APP_NAME } from "../../config.js";
9
9
  import { parenthesizedKeyHint } from "../../modes/interactive/components/keybinding-hints.js";
10
- import { truncateToVisualLines } from "../../modes/interactive/components/visual-truncate.js";
10
+ import { VisualLinePreview } from "../../modes/interactive/components/visual-truncate.js";
11
11
  import { theme } from "../../modes/interactive/theme/theme.js";
12
12
  import { createChildProcessEnvironment, waitForChildProcess } from "../../utils/child-process.js";
13
13
  import { getShellConfig, getShellEnv, killProcessTree, trackDetachedChildPid, untrackDetachedChildPid, } from "../../utils/shell.js";
@@ -230,12 +230,6 @@ function bashResultToToolResult(result) {
230
230
  const text = `${result.output || "(no output)"}${status ? `\n\n${status}` : ""}`;
231
231
  return { content: [{ type: "text", text }], details };
232
232
  }
233
- class BashResultRenderComponent extends Container {
234
- state = {
235
- cachedWidth: undefined,
236
- cachedLines: undefined,
237
- };
238
- }
239
233
  function formatDuration(ms) {
240
234
  const seconds = Math.max(0, ms) / 1000;
241
235
  if (seconds < 60)
@@ -257,7 +251,6 @@ function formatBashCall(args, prompt) {
257
251
  return theme.fg("toolTitle", theme.bold(`${prompt} ${commandDisplay}`)) + timeoutSuffix;
258
252
  }
259
253
  function rebuildBashResultRenderComponent(component, result, options, showImages, startedAt, endedAt) {
260
- const state = component.state;
261
254
  component.clear();
262
255
  let output = getTextOutput(result, showImages).trim();
263
256
  const observation = result.details?.observation;
@@ -285,26 +278,14 @@ function rebuildBashResultRenderComponent(component, result, options, showImages
285
278
  component.addChild(new Text(`\n${styledOutput}`, 0, 0));
286
279
  }
287
280
  else {
288
- component.addChild({
289
- render: (width) => {
290
- if (state.cachedLines === undefined || state.cachedWidth !== width) {
291
- const preview = truncateToVisualLines(styledOutput, BASH_PREVIEW_LINES, width);
292
- const hintLines = [];
293
- if (preview.skippedCount > 0) {
294
- const hint = theme.fg("muted", "... ") +
295
- parenthesizedKeyHint("app.tools.expand", "Expand", `${preview.skippedCount} earlier lines`);
296
- hintLines.push(truncateToWidth(hint, width, "..."));
297
- }
298
- state.cachedLines = ["", ...hintLines, ...preview.visualLines];
299
- state.cachedWidth = width;
300
- }
301
- return state.cachedLines;
302
- },
303
- invalidate: () => {
304
- state.cachedWidth = undefined;
305
- state.cachedLines = undefined;
306
- },
307
- });
281
+ component.addChild(new Spacer(1));
282
+ component.addChild(new VisualLinePreview({
283
+ text: styledOutput,
284
+ maxVisualLines: BASH_PREVIEW_LINES,
285
+ keep: "end",
286
+ formatHint: (hidden) => theme.fg("muted", "... ") +
287
+ parenthesizedKeyHint("app.tools.expand", "Expand", `${hidden} earlier lines`),
288
+ }));
308
289
  }
309
290
  }
310
291
  if (truncation?.truncated || fullOutputPath) {
@@ -622,7 +603,7 @@ export function createBashToolDefinition(cwd, options, presentation = BASH_SHELL
622
603
  state.interval = undefined;
623
604
  }
624
605
  }
625
- const component = context.lastComponent ?? new BashResultRenderComponent();
606
+ const component = context.lastComponent ?? new Container();
626
607
  rebuildBashResultRenderComponent(component, result, options, context.showImages, state.startedAt, state.endedAt);
627
608
  component.invalidate();
628
609
  return component;