@bastani/atomic 0.9.16-alpha.9 → 0.9.16

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 (191) hide show
  1. package/CHANGELOG.md +120 -0
  2. package/README.md +4 -4
  3. package/dist/builtin/intercom/CHANGELOG.md +42 -0
  4. package/dist/builtin/intercom/README.md +18 -17
  5. package/dist/builtin/intercom/broker/broker.ts +43 -18
  6. package/dist/builtin/intercom/broker/client.ts +138 -7
  7. package/dist/builtin/intercom/broker/group-isolation.ts +3 -3
  8. package/dist/builtin/intercom/broker/group-membership.ts +55 -0
  9. package/dist/builtin/intercom/broker/presence-handler.ts +62 -50
  10. package/dist/builtin/intercom/broker/send-handler.ts +2 -3
  11. package/dist/builtin/intercom/group.ts +40 -0
  12. package/dist/builtin/intercom/index.bundle.mjs +490 -183
  13. package/dist/builtin/intercom/package.json +2 -2
  14. package/dist/builtin/intercom/skills/intercom/SKILL.md +16 -10
  15. package/dist/builtin/intercom/types.ts +24 -2
  16. package/dist/builtin/mcp/index.bundle.mjs +202 -52
  17. package/dist/builtin/mcp/package.json +2 -2
  18. package/dist/builtin/subagents/CHANGELOG.md +51 -0
  19. package/dist/builtin/subagents/README.md +3 -3
  20. package/dist/builtin/subagents/agents/code-simplifier.md +1 -1
  21. package/dist/builtin/subagents/agents/codebase-analyzer.md +1 -1
  22. package/dist/builtin/subagents/agents/codebase-locator.md +1 -1
  23. package/dist/builtin/subagents/agents/codebase-online-researcher.md +1 -1
  24. package/dist/builtin/subagents/agents/codebase-pattern-finder.md +1 -1
  25. package/dist/builtin/subagents/agents/codebase-research-analyzer.md +1 -1
  26. package/dist/builtin/subagents/agents/codebase-research-locator.md +1 -1
  27. package/dist/builtin/subagents/agents/debugger.md +1 -1
  28. package/dist/builtin/subagents/agents/worker.md +1 -1
  29. package/dist/builtin/subagents/package.json +3 -3
  30. package/dist/builtin/subagents/src/extension/index.bundle.mjs +422 -140
  31. package/dist/builtin/web-access/index.bundle.mjs +202 -52
  32. package/dist/builtin/web-access/package.json +2 -2
  33. package/dist/builtin/workflows/CHANGELOG.md +70 -0
  34. package/dist/builtin/workflows/README.md +2 -2
  35. package/dist/builtin/workflows/builtin/{chunk-h5e65g7g.js → chunk-3y1hmzw6.js} +36 -6
  36. package/dist/builtin/workflows/builtin/{chunk-nqr34qp3.js → chunk-6rbajjf5.js} +7 -1
  37. package/dist/builtin/workflows/builtin/{chunk-qe6bfpbd.js → chunk-bz1c9732.js} +15 -3
  38. package/dist/builtin/workflows/builtin/{chunk-8v8wmb7z.js → chunk-dattsgxg.js} +1 -1
  39. package/dist/builtin/workflows/builtin/{chunk-17zk6ffd.js → chunk-gdx0avpx.js} +355 -67
  40. package/dist/builtin/workflows/builtin/{chunk-rbnj9621.js → chunk-w9c7rkrk.js} +1 -1
  41. package/dist/builtin/workflows/builtin/goal.js +3 -3
  42. package/dist/builtin/workflows/builtin/index.js +5 -5
  43. package/dist/builtin/workflows/builtin/open-claude-design.js +2 -2
  44. package/dist/builtin/workflows/builtin/ralph.js +3 -3
  45. package/dist/builtin/workflows/package.json +2 -2
  46. package/dist/builtin/workflows/src/extension/index.bundle.mjs +531 -143
  47. package/dist/builtin/workflows/src/index.js +212 -72
  48. package/dist/cli/args.js +6 -6
  49. package/dist/cli/args.js.map +1 -1
  50. package/dist/cli/config-selector.d.ts.map +1 -1
  51. package/dist/cli/config-selector.js +2 -1
  52. package/dist/cli/config-selector.js.map +1 -1
  53. package/dist/cli/session-picker.d.ts +2 -1
  54. package/dist/cli/session-picker.d.ts.map +1 -1
  55. package/dist/cli/session-picker.js +3 -2
  56. package/dist/cli/session-picker.js.map +1 -1
  57. package/dist/cli/startup-ui.d.ts.map +1 -1
  58. package/dist/cli/startup-ui.js +2 -1
  59. package/dist/cli/startup-ui.js.map +1 -1
  60. package/dist/core/agent-session-methods.d.ts +1 -0
  61. package/dist/core/agent-session-methods.d.ts.map +1 -1
  62. package/dist/core/agent-session-methods.js.map +1 -1
  63. package/dist/core/agent-session-post-tool-compaction.d.ts.map +1 -1
  64. package/dist/core/agent-session-post-tool-compaction.js +3 -6
  65. package/dist/core/agent-session-post-tool-compaction.js.map +1 -1
  66. package/dist/core/agent-session-prompt.d.ts.map +1 -1
  67. package/dist/core/agent-session-prompt.js +3 -1
  68. package/dist/core/agent-session-prompt.js.map +1 -1
  69. package/dist/core/agent-session-services.d.ts.map +1 -1
  70. package/dist/core/agent-session-services.js +6 -3
  71. package/dist/core/agent-session-services.js.map +1 -1
  72. package/dist/core/agent-session-state.d.ts.map +1 -1
  73. package/dist/core/agent-session-state.js +7 -5
  74. package/dist/core/agent-session-state.js.map +1 -1
  75. package/dist/core/agent-session-tool-hooks.d.ts.map +1 -1
  76. package/dist/core/agent-session-tool-hooks.js +37 -23
  77. package/dist/core/agent-session-tool-hooks.js.map +1 -1
  78. package/dist/core/agent-session-tool-registry.d.ts.map +1 -1
  79. package/dist/core/agent-session-tool-registry.js +9 -2
  80. package/dist/core/agent-session-tool-registry.js.map +1 -1
  81. package/dist/core/agent-session.d.ts +2 -0
  82. package/dist/core/agent-session.d.ts.map +1 -1
  83. package/dist/core/agent-session.js +2 -0
  84. package/dist/core/agent-session.js.map +1 -1
  85. package/dist/core/builtin-packages.d.ts +4 -0
  86. package/dist/core/builtin-packages.d.ts.map +1 -1
  87. package/dist/core/builtin-packages.js +22 -1
  88. package/dist/core/builtin-packages.js.map +1 -1
  89. package/dist/core/callback-activity.d.ts.map +1 -1
  90. package/dist/core/callback-activity.js +6 -3
  91. package/dist/core/callback-activity.js.map +1 -1
  92. package/dist/core/extensions/loader-core.d.ts +1 -0
  93. package/dist/core/extensions/loader-core.d.ts.map +1 -1
  94. package/dist/core/extensions/loader-core.js +11 -1
  95. package/dist/core/extensions/loader-core.js.map +1 -1
  96. package/dist/core/extensions/loader.d.ts +1 -1
  97. package/dist/core/extensions/loader.d.ts.map +1 -1
  98. package/dist/core/extensions/loader.js +1 -1
  99. package/dist/core/extensions/loader.js.map +1 -1
  100. package/dist/core/extensions/runner-registries.d.ts.map +1 -1
  101. package/dist/core/extensions/runner-registries.js +9 -4
  102. package/dist/core/extensions/runner-registries.js.map +1 -1
  103. package/dist/core/extensions/runner-shortcuts.d.ts.map +1 -1
  104. package/dist/core/extensions/runner-shortcuts.js +1 -0
  105. package/dist/core/extensions/runner-shortcuts.js.map +1 -1
  106. package/dist/core/keybindings.d.ts +5 -0
  107. package/dist/core/keybindings.d.ts.map +1 -1
  108. package/dist/core/keybindings.js +4 -0
  109. package/dist/core/keybindings.js.map +1 -1
  110. package/dist/core/mandatory-resource-loader.d.ts +6 -0
  111. package/dist/core/mandatory-resource-loader.d.ts.map +1 -0
  112. package/dist/core/mandatory-resource-loader.js +94 -0
  113. package/dist/core/mandatory-resource-loader.js.map +1 -0
  114. package/dist/core/mandatory-runtime-tools.d.ts +10 -0
  115. package/dist/core/mandatory-runtime-tools.d.ts.map +1 -0
  116. package/dist/core/mandatory-runtime-tools.js +31 -0
  117. package/dist/core/mandatory-runtime-tools.js.map +1 -0
  118. package/dist/core/model-resolver-defaults.js +1 -1
  119. package/dist/core/model-resolver-defaults.js.map +1 -1
  120. package/dist/core/resource-loader-reload.d.ts.map +1 -1
  121. package/dist/core/resource-loader-reload.js +24 -13
  122. package/dist/core/resource-loader-reload.js.map +1 -1
  123. package/dist/core/sdk.d.ts.map +1 -1
  124. package/dist/core/sdk.js +2 -0
  125. package/dist/core/sdk.js.map +1 -1
  126. package/dist/core/settings-manager-ui-accessors.d.ts +4 -1
  127. package/dist/core/settings-manager-ui-accessors.d.ts.map +1 -1
  128. package/dist/core/settings-manager-ui-accessors.js +22 -0
  129. package/dist/core/settings-manager-ui-accessors.js.map +1 -1
  130. package/dist/core/settings-types.d.ts +4 -0
  131. package/dist/core/settings-types.d.ts.map +1 -1
  132. package/dist/core/settings-types.js.map +1 -1
  133. package/dist/core/slash-commands.js +1 -1
  134. package/dist/core/slash-commands.js.map +1 -1
  135. package/dist/main-session.d.ts.map +1 -1
  136. package/dist/main-session.js +3 -2
  137. package/dist/main-session.js.map +1 -1
  138. package/dist/main.d.ts.map +1 -1
  139. package/dist/main.js +6 -0
  140. package/dist/main.js.map +1 -1
  141. package/dist/modes/interactive/components/fast-mode-selector.js +2 -2
  142. package/dist/modes/interactive/components/fast-mode-selector.js.map +1 -1
  143. package/dist/modes/interactive/components/settings-selector-handlers.d.ts.map +1 -1
  144. package/dist/modes/interactive/components/settings-selector-handlers.js +3 -0
  145. package/dist/modes/interactive/components/settings-selector-handlers.js.map +1 -1
  146. package/dist/modes/interactive/components/settings-selector-items.d.ts.map +1 -1
  147. package/dist/modes/interactive/components/settings-selector-items.js +7 -0
  148. package/dist/modes/interactive/components/settings-selector-items.js.map +1 -1
  149. package/dist/modes/interactive/components/settings-selector-types.d.ts +2 -0
  150. package/dist/modes/interactive/components/settings-selector-types.d.ts.map +1 -1
  151. package/dist/modes/interactive/components/settings-selector-types.js.map +1 -1
  152. package/dist/modes/interactive/interactive-agent-events.js +2 -1
  153. package/dist/modes/interactive/interactive-agent-events.js.map +1 -1
  154. package/dist/modes/interactive/interactive-deferred-startup.d.ts.map +1 -1
  155. package/dist/modes/interactive/interactive-deferred-startup.js +1 -0
  156. package/dist/modes/interactive/interactive-deferred-startup.js.map +1 -1
  157. package/dist/modes/interactive/interactive-input-handling.js +3 -0
  158. package/dist/modes/interactive/interactive-input-handling.js.map +1 -1
  159. package/dist/modes/interactive/interactive-mode-base.d.ts.map +1 -1
  160. package/dist/modes/interactive/interactive-mode-base.js +15 -1
  161. package/dist/modes/interactive/interactive-mode-base.js.map +1 -1
  162. package/dist/modes/interactive/interactive-mode-surface.d.ts +6 -1
  163. package/dist/modes/interactive/interactive-mode-surface.d.ts.map +1 -1
  164. package/dist/modes/interactive/interactive-mode-surface.js.map +1 -1
  165. package/dist/modes/interactive/interactive-selectors.js +6 -1
  166. package/dist/modes/interactive/interactive-selectors.js.map +1 -1
  167. package/dist/modes/interactive/interactive-session-runtime.js +3 -0
  168. package/dist/modes/interactive/interactive-session-runtime.js.map +1 -1
  169. package/dist/modes/interactive/interactive-slash-commands.js +7 -12
  170. package/dist/modes/interactive/interactive-slash-commands.js.map +1 -1
  171. package/dist/modes/interactive/interactive-tui.d.ts +1 -0
  172. package/dist/modes/interactive/interactive-tui.d.ts.map +1 -1
  173. package/dist/modes/interactive/interactive-tui.js +16 -0
  174. package/dist/modes/interactive/interactive-tui.js.map +1 -1
  175. package/dist/modes/rpc/rpc-session-binding.d.ts.map +1 -1
  176. package/dist/modes/rpc/rpc-session-binding.js +2 -0
  177. package/dist/modes/rpc/rpc-session-binding.js.map +1 -1
  178. package/docs/compaction.md +1 -1
  179. package/docs/environment-variables.md +2 -0
  180. package/docs/extensions.md +1 -1
  181. package/docs/intercom.md +29 -24
  182. package/docs/keybindings.md +5 -2
  183. package/docs/packages.md +1 -1
  184. package/docs/providers.md +2 -2
  185. package/docs/sdk.md +9 -7
  186. package/docs/settings.md +9 -3
  187. package/docs/subagents.md +2 -2
  188. package/docs/usage.md +7 -6
  189. package/docs/workflows.md +11 -7
  190. package/npm-shrinkwrap.json +59 -77
  191. package/package.json +7 -7
@@ -1 +1 @@
1
- {"version":3,"file":"model-resolver-defaults.js","sourceRoot":"","sources":["../../src/core/model-resolver-defaults.ts"],"names":[],"mappings":"AAEA,gDAAgD;AAChD,MAAM,CAAC,MAAM,uBAAuB,GAA2B;IAC9D,gBAAgB,EAAE,iCAAiC;IACnD,SAAS,EAAE,iBAAiB;IAC5B,MAAM,EAAE,SAAS;IACjB,wBAAwB,EAAE,SAAS;IACnC,cAAc,EAAE,SAAS;IACzB,MAAM,EAAE,MAAM;IACd,MAAM,EAAE,mCAAmC;IAC3C,QAAQ,EAAE,iBAAiB;IAC3B,MAAM,EAAE,wBAAwB;IAChC,eAAe,EAAE,wBAAwB;IACzC,gBAAgB,EAAE,SAAS;IAC3B,UAAU,EAAE,sBAAsB;IAClC,mBAAmB,EAAE,aAAa;IAClC,GAAG,EAAE,UAAU;IACf,IAAI,EAAE,qBAAqB;IAC3B,QAAQ,EAAE,cAAc;IACxB,UAAU,EAAE,aAAa;IACzB,GAAG,EAAE,SAAS;IACd,eAAe,EAAE,SAAS;IAC1B,OAAO,EAAE,wBAAwB;IACjC,OAAO,EAAE,cAAc;IACvB,YAAY,EAAE,cAAc;IAC5B,UAAU,EAAE,WAAW;IACvB,eAAe,EAAE,WAAW;IAC5B,WAAW,EAAE,sBAAsB;IACnC,SAAS,EAAE,qCAAqC;IAChD,QAAQ,EAAE,sBAAsB;IAChC,OAAO,EAAE,iBAAiB;IAC1B,QAAQ,EAAE,WAAW;IACrB,aAAa,EAAE,WAAW;IAC1B,aAAa,EAAE,iBAAiB;IAChC,uBAAuB,EAAE,0BAA0B;IACnD,uBAAuB,EAAE,qCAAqC;IAC9D,iBAAiB,EAAE,aAAa;IAChC,oBAAoB,EAAE,aAAa;IACnC,4BAA4B,EAAE,aAAa;IAC3C,MAAM,EAAE,eAAe;IACvB,sBAAsB,EAAE,eAAe;IACvC,uBAAuB,EAAE,eAAe;IACxC,uBAAuB,EAAE,eAAe;CACxC,CAAC;AAEF,MAAM,UAAU,2BAA2B,CAAC,eAA6B;IACxE,KAAK,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,uBAAuB,CAAC,EAAE,CAAC;QAC7E,MAAM,KAAK,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,QAAQ,IAAI,CAAC,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC;QACzF,IAAI,KAAK,EAAE,CAAC;YACX,OAAO,KAAK,CAAC;QACd,CAAC;IACF,CAAC;IAED,OAAO,eAAe,CAAC,CAAC,CAAC,CAAC;AAC3B,CAAC","sourcesContent":["import type { Api, Model } from \"@bastani/pi-ai/compat\";\n\n/** Default model IDs for each known provider */\nexport const defaultModelPerProvider: Record<string, string> = {\n\t\"amazon-bedrock\": \"us.anthropic.claude-opus-4-6-v1\",\n\tanthropic: \"claude-opus-4-8\",\n\topenai: \"gpt-5.5\",\n\t\"azure-openai-responses\": \"gpt-5.4\",\n\t\"openai-codex\": \"gpt-5.5\",\n\tradius: \"auto\",\n\tnvidia: \"nvidia/nemotron-3-super-120b-a12b\",\n\tdeepseek: \"deepseek-v4-pro\",\n\tgoogle: \"gemini-3.1-pro-preview\",\n\t\"google-vertex\": \"gemini-3.1-pro-preview\",\n\t\"github-copilot\": \"gpt-5.4\",\n\topenrouter: \"moonshotai/kimi-k2.6\",\n\t\"vercel-ai-gateway\": \"zai/glm-5.1\",\n\txai: \"grok-4.6\",\n\tgroq: \"openai/gpt-oss-120b\",\n\tcerebras: \"gpt-oss-120b\",\n\t\"ant-ling\": \"Ring-2.6-1T\",\n\tzai: \"glm-5.3\",\n\t\"zai-coding-cn\": \"glm-5.3\",\n\tmistral: \"devstral-medium-latest\",\n\tminimax: \"MiniMax-M2.7\",\n\t\"minimax-cn\": \"MiniMax-M2.7\",\n\tmoonshotai: \"kimi-k2.6\",\n\t\"moonshotai-cn\": \"kimi-k2.6\",\n\thuggingface: \"moonshotai/Kimi-K2.6\",\n\tfireworks: \"accounts/fireworks/models/kimi-k2p6\",\n\ttogether: \"moonshotai/Kimi-K2.6\",\n\tbaseten: \"zai-org/GLM-5.2\",\n\topencode: \"kimi-k2.6\",\n\t\"opencode-go\": \"kimi-k2.6\",\n\t\"kimi-coding\": \"kimi-for-coding\",\n\t\"cloudflare-workers-ai\": \"@cf/moonshotai/kimi-k2.6\",\n\t\"cloudflare-ai-gateway\": \"workers-ai/@cf/moonshotai/kimi-k2.6\",\n\t\"qwen-token-plan\": \"qwen3.7-max\",\n\t\"qwen-token-plan-cn\": \"qwen3.7-max\",\n\t\"qwen-token-plan-individual\": \"qwen3.8-max\",\n\txiaomi: \"mimo-v2.5-pro\",\n\t\"xiaomi-token-plan-cn\": \"mimo-v2.5-pro\",\n\t\"xiaomi-token-plan-ams\": \"mimo-v2.5-pro\",\n\t\"xiaomi-token-plan-sgp\": \"mimo-v2.5-pro\",\n};\n\nexport function findPreferredAvailableModel(availableModels: Model<Api>[]): Model<Api> | undefined {\n\tfor (const [provider, defaultId] of Object.entries(defaultModelPerProvider)) {\n\t\tconst match = availableModels.find((m) => m.provider === provider && m.id === defaultId);\n\t\tif (match) {\n\t\t\treturn match;\n\t\t}\n\t}\n\n\treturn availableModels[0];\n}\n"]}
1
+ {"version":3,"file":"model-resolver-defaults.js","sourceRoot":"","sources":["../../src/core/model-resolver-defaults.ts"],"names":[],"mappings":"AAEA,gDAAgD;AAChD,MAAM,CAAC,MAAM,uBAAuB,GAA2B;IAC9D,gBAAgB,EAAE,iCAAiC;IACnD,SAAS,EAAE,iBAAiB;IAC5B,MAAM,EAAE,SAAS;IACjB,wBAAwB,EAAE,SAAS;IACnC,cAAc,EAAE,SAAS;IACzB,MAAM,EAAE,MAAM;IACd,MAAM,EAAE,mCAAmC;IAC3C,QAAQ,EAAE,iBAAiB;IAC3B,MAAM,EAAE,wBAAwB;IAChC,eAAe,EAAE,wBAAwB;IACzC,gBAAgB,EAAE,SAAS;IAC3B,UAAU,EAAE,sBAAsB;IAClC,mBAAmB,EAAE,aAAa;IAClC,GAAG,EAAE,UAAU;IACf,IAAI,EAAE,qBAAqB;IAC3B,QAAQ,EAAE,cAAc;IACxB,UAAU,EAAE,aAAa;IACzB,GAAG,EAAE,SAAS;IACd,eAAe,EAAE,SAAS;IAC1B,OAAO,EAAE,wBAAwB;IACjC,OAAO,EAAE,cAAc;IACvB,YAAY,EAAE,cAAc;IAC5B,UAAU,EAAE,WAAW;IACvB,eAAe,EAAE,WAAW;IAC5B,WAAW,EAAE,sBAAsB;IACnC,SAAS,EAAE,qCAAqC;IAChD,QAAQ,EAAE,sBAAsB;IAChC,OAAO,EAAE,iBAAiB;IAC1B,QAAQ,EAAE,WAAW;IACrB,aAAa,EAAE,WAAW;IAC1B,aAAa,EAAE,iBAAiB;IAChC,uBAAuB,EAAE,0BAA0B;IACnD,uBAAuB,EAAE,qCAAqC;IAC9D,iBAAiB,EAAE,aAAa;IAChC,oBAAoB,EAAE,aAAa;IACnC,4BAA4B,EAAE,aAAa;IAC3C,MAAM,EAAE,eAAe;IACvB,sBAAsB,EAAE,eAAe;IACvC,uBAAuB,EAAE,eAAe;IACxC,uBAAuB,EAAE,eAAe;CACxC,CAAC;AAEF,MAAM,UAAU,2BAA2B,CAAC,eAA6B;IACxE,KAAK,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,uBAAuB,CAAC,EAAE,CAAC;QAC7E,MAAM,KAAK,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,QAAQ,IAAI,CAAC,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC;QACzF,IAAI,KAAK,EAAE,CAAC;YACX,OAAO,KAAK,CAAC;QACd,CAAC;IACF,CAAC;IAED,OAAO,eAAe,CAAC,CAAC,CAAC,CAAC;AAC3B,CAAC","sourcesContent":["import type { Api, Model } from \"@bastani/pi-ai/compat\";\n\n/** Default model IDs for each known provider */\nexport const defaultModelPerProvider: Record<string, string> = {\n\t\"amazon-bedrock\": \"us.anthropic.claude-opus-4-6-v1\",\n\tanthropic: \"claude-opus-4-8\",\n\topenai: \"gpt-5.5\",\n\t\"azure-openai-responses\": \"gpt-5.4\",\n\t\"openai-codex\": \"gpt-5.5\",\n\tradius: \"auto\",\n\tnvidia: \"nvidia/nemotron-3-super-120b-a12b\",\n\tdeepseek: \"deepseek-v4-pro\",\n\tgoogle: \"gemini-3.1-pro-preview\",\n\t\"google-vertex\": \"gemini-3.1-pro-preview\",\n\t\"github-copilot\": \"gpt-5.4\",\n\topenrouter: \"moonshotai/kimi-k2.6\",\n\t\"vercel-ai-gateway\": \"zai/glm-5.1\",\n\txai: \"grok-4.6\",\n\tgroq: \"openai/gpt-oss-120b\",\n\tcerebras: \"gpt-oss-120b\",\n\t\"ant-ling\": \"Ring-2.6-1T\",\n\tzai: \"glm-5.3\",\n\t\"zai-coding-cn\": \"glm-5.3\",\n\tmistral: \"devstral-medium-latest\",\n\tminimax: \"MiniMax-M2.7\",\n\t\"minimax-cn\": \"MiniMax-M2.7\",\n\tmoonshotai: \"kimi-k2.6\",\n\t\"moonshotai-cn\": \"kimi-k2.6\",\n\thuggingface: \"moonshotai/Kimi-K2.6\",\n\tfireworks: \"accounts/fireworks/models/kimi-k2p6\",\n\ttogether: \"moonshotai/Kimi-K2.6\",\n\tbaseten: \"zai-org/GLM-5.3\",\n\topencode: \"kimi-k2.6\",\n\t\"opencode-go\": \"kimi-k2.6\",\n\t\"kimi-coding\": \"kimi-for-coding\",\n\t\"cloudflare-workers-ai\": \"@cf/moonshotai/kimi-k2.6\",\n\t\"cloudflare-ai-gateway\": \"workers-ai/@cf/moonshotai/kimi-k2.6\",\n\t\"qwen-token-plan\": \"qwen3.7-max\",\n\t\"qwen-token-plan-cn\": \"qwen3.7-max\",\n\t\"qwen-token-plan-individual\": \"qwen3.8-max\",\n\txiaomi: \"mimo-v2.5-pro\",\n\t\"xiaomi-token-plan-cn\": \"mimo-v2.5-pro\",\n\t\"xiaomi-token-plan-ams\": \"mimo-v2.5-pro\",\n\t\"xiaomi-token-plan-sgp\": \"mimo-v2.5-pro\",\n};\n\nexport function findPreferredAvailableModel(availableModels: Model<Api>[]): Model<Api> | undefined {\n\tfor (const [provider, defaultId] of Object.entries(defaultModelPerProvider)) {\n\t\tconst match = availableModels.find((m) => m.provider === provider && m.id === defaultId);\n\t\tif (match) {\n\t\t\treturn match;\n\t\t}\n\t}\n\n\treturn availableModels[0];\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"resource-loader-reload.d.ts","sourceRoot":"","sources":["../../src/core/resource-loader-reload.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAalE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAiBvE,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAC;AA6D9E,wBAAsB,0BAA0B,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAsC7G;AAED,wBAAsB,2BAA2B,CAChD,MAAM,EAAE,qBAAqB,EAC7B,OAAO,CAAC,EAAE,2BAA2B,GACnC,OAAO,CAAC,IAAI,CAAC,CAwPf"}
1
+ {"version":3,"file":"resource-loader-reload.d.ts","sourceRoot":"","sources":["../../src/core/resource-loader-reload.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAa,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAc7E,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAiBvE,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAC;AAwE9E,wBAAsB,0BAA0B,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CA0C7G;AAED,wBAAsB,2BAA2B,CAChD,MAAM,EAAE,qBAAqB,EAC7B,OAAO,CAAC,EAAE,2BAA2B,GACnC,OAAO,CAAC,IAAI,CAAC,CA2Qf"}
@@ -1,8 +1,10 @@
1
1
  import { existsSync, statSync } from "node:fs";
2
2
  import { join } from "node:path";
3
3
  import { yieldToEventLoopIfSlow } from "../utils/event-loop.js";
4
- import { isLocalPath } from "../utils/paths.js";
4
+ import { isLocalPath, resolvePath } from "../utils/paths.js";
5
+ import { getMandatoryBuiltinExtensionPaths } from "./builtin-packages.js";
5
6
  import { clearExtensionCache, createExtensionRuntime, loadExtensionsCached } from "./extensions/loader.js";
7
+ import { isTrustedMandatoryRuntimeTool, markTrustedMandatoryRuntimeExtension } from "./mandatory-runtime-tools.js";
6
8
  import { updatePromptsFromPathsAsync, updateSkillsFromPathsAsync, updateThemesFromPathsAsync, } from "./resource-loader-assets.js";
7
9
  import { loadProjectContextFiles, resolveExistingPromptSourcePath, resolveExistingPromptSourcePaths, resolvePromptInput, } from "./resource-loader-context-files.js";
8
10
  import { discoverAppendSystemPromptFile, discoverSystemPromptFile } from "./resource-loader-discovery.js";
@@ -24,6 +26,13 @@ function getEnabledResources(resources, metadataByPath) {
24
26
  function getEnabledPaths(resources, metadataByPath) {
25
27
  return getEnabledResources(resources, metadataByPath).map((r) => r.path);
26
28
  }
29
+ function getBuiltinExtensionPaths(resources, metadataByPath, noExtensions) {
30
+ for (const resource of resources) {
31
+ if (!metadataByPath.has(resource.path))
32
+ metadataByPath.set(resource.path, resource.metadata);
33
+ }
34
+ return noExtensions ? [] : resources.filter((resource) => resource.enabled).map((resource) => resource.path);
35
+ }
27
36
  function mapSkillPath(resource, metadataByPath) {
28
37
  if (resource.metadata.source !== "auto" && resource.metadata.origin !== "package") {
29
38
  return resource.path;
@@ -68,16 +77,12 @@ export async function loadProjectTrustExtensions(loader) {
68
77
  const metadataByPath = new Map();
69
78
  const cliEnabledExtensions = getEnabledPaths(cliExtensionPaths.extensions, metadataByPath);
70
79
  const enabledExtensions = getEnabledPaths(resolvedPaths.extensions, metadataByPath);
71
- const builtinEnabledExtensions = state.noExtensions
72
- ? []
73
- : getEnabledPaths(builtinPackagePaths.extensions, metadataByPath);
80
+ const builtinEnabledExtensions = getBuiltinExtensionPaths(builtinPackagePaths.extensions, metadataByPath, state.noExtensions);
74
81
  const workflowResources = collectWorkflowResources(resolvedPaths, cliExtensionPaths, builtinPackagePaths);
75
82
  state.workflowResources = workflowResources;
76
83
  const workflowResourceProvider = createWorkflowResourceProvider(loader);
77
84
  const inheritanceSnapshotProvider = createInheritanceSnapshotProvider(loader);
78
- const extensionPaths = state.noExtensions
79
- ? cliEnabledExtensions
80
- : mergeResourcePaths(state.cwd, cliEnabledExtensions, [...enabledExtensions, ...builtinEnabledExtensions]);
85
+ const extensionPaths = mergeResourcePaths(state.cwd, cliEnabledExtensions, state.noExtensions ? builtinEnabledExtensions : [...enabledExtensions, ...builtinEnabledExtensions]);
81
86
  const extensionsResult = await loadExtensionsCached(extensionPaths, state.cwd, state.eventBus, workflowResourceProvider, undefined, inheritanceSnapshotProvider);
82
87
  const inlineExtensions = await loadExtensionFactories(loader, extensionsResult.runtime, workflowResourceProvider, inheritanceSnapshotProvider);
83
88
  extensionsResult.extensions.push(...inlineExtensions.extensions);
@@ -170,9 +175,7 @@ export async function reloadDefaultResourceLoader(loader, options) {
170
175
  const enabledSkillResources = getEnabledResources(resolvedPaths.skills, metadataByPath);
171
176
  const enabledPrompts = getEnabledPaths(resolvedPaths.prompts, metadataByPath);
172
177
  const enabledThemes = getEnabledPaths(resolvedPaths.themes, metadataByPath);
173
- const builtinEnabledExtensions = state.noExtensions
174
- ? []
175
- : getEnabledPaths(builtinPackagePaths.extensions, metadataByPath);
178
+ const builtinEnabledExtensions = getBuiltinExtensionPaths(builtinPackagePaths.extensions, metadataByPath, state.noExtensions);
176
179
  const builtinEnabledSkillResources = state.noSkills
177
180
  ? []
178
181
  : getEnabledResources(builtinPackagePaths.skills, metadataByPath);
@@ -190,13 +193,15 @@ export async function reloadDefaultResourceLoader(loader, options) {
190
193
  const workflowResources = collectWorkflowResources(resolvedPaths, cliExtensionPaths, builtinPackagePaths);
191
194
  state.workflowResources = workflowResources;
192
195
  const workflowResourceProvider = createWorkflowResourceProvider(loader);
193
- const extensionPaths = state.noExtensions
194
- ? cliEnabledExtensions
195
- : mergeResourcePaths(state.cwd, cliEnabledExtensions, [...enabledExtensions, ...builtinEnabledExtensions]);
196
+ const extensionPaths = mergeResourcePaths(state.cwd, cliEnabledExtensions, state.noExtensions ? builtinEnabledExtensions : [...enabledExtensions, ...builtinEnabledExtensions]);
196
197
  const inheritanceSnapshotProvider = createInheritanceSnapshotProvider(loader);
197
198
  const extensionsResult = options?.deferExtensions
198
199
  ? { extensions: [], errors: [], runtime: createExtensionRuntime() }
199
200
  : await loadFinalExtensionSet(loader, extensionPaths, preTrustExtensions, workflowResourceProvider, inheritanceSnapshotProvider);
201
+ const mandatoryExtensionPaths = new Set(getMandatoryBuiltinExtensionPaths().map((path) => resolvePath(path, state.cwd, { normalizeUnicodeSpaces: true })));
202
+ const loadedMandatoryExtensions = new Set(extensionsResult.extensions.filter((extension) => mandatoryExtensionPaths.has(resolvePath(extension.resolvedPath, state.cwd, { normalizeUnicodeSpaces: true }))));
203
+ for (const extension of loadedMandatoryExtensions)
204
+ markTrustedMandatoryRuntimeExtension(extension);
200
205
  for (const p of state.additionalExtensionPaths) {
201
206
  if (isLocalPath(p)) {
202
207
  const resolved = resolveResourcePath(state.cwd, p);
@@ -207,6 +212,12 @@ export async function reloadDefaultResourceLoader(loader, options) {
207
212
  }
208
213
  state.extensionsResult = state.extensionsOverride ? state.extensionsOverride(extensionsResult) : extensionsResult;
209
214
  applyExtensionSourceInfo(loader, state.extensionsResult.extensions, metadataByPath);
215
+ for (const extension of state.extensionsResult.extensions) {
216
+ const registration = extension.tools.get("intercom");
217
+ if (loadedMandatoryExtensions.has(extension) && registration && isTrustedMandatoryRuntimeTool(registration)) {
218
+ markTrustedMandatoryRuntimeExtension(extension);
219
+ }
220
+ }
210
221
  resolveInheritedExtensionOverlaps(state.extensionsResult);
211
222
  const skillPaths = state.noSkills
212
223
  ? mergeResourcePaths(state.cwd, cliEnabledSkills, state.additionalSkillPaths)
@@ -1 +1 @@
1
- {"version":3,"file":"resource-loader-reload.js","sourceRoot":"","sources":["../../src/core/resource-loader-reload.ts"],"names":[],"mappings":"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","sourcesContent":["import { existsSync, statSync } from \"node:fs\";\nimport { join } from \"node:path\";\nimport { yieldToEventLoopIfSlow } from \"../utils/event-loop.ts\";\nimport { isLocalPath } from \"../utils/paths.ts\";\nimport { clearExtensionCache, createExtensionRuntime, loadExtensionsCached } from \"./extensions/loader.ts\";\nimport type { LoadExtensionsResult } from \"./extensions/types.ts\";\nimport type { PathMetadata, ResolvedPaths } from \"./package-manager.ts\";\nimport {\n\tupdatePromptsFromPathsAsync,\n\tupdateSkillsFromPathsAsync,\n\tupdateThemesFromPathsAsync,\n} from \"./resource-loader-assets.ts\";\nimport {\n\tloadProjectContextFiles,\n\tresolveExistingPromptSourcePath,\n\tresolveExistingPromptSourcePaths,\n\tresolvePromptInput,\n} from \"./resource-loader-context-files.ts\";\nimport type { DefaultResourceLoader } from \"./resource-loader-core.ts\";\nimport { discoverAppendSystemPromptFile, discoverSystemPromptFile } from \"./resource-loader-discovery.ts\";\nimport {\n\tloadExtensionFactories,\n\tloadFinalExtensionSet,\n\tresolveInheritedExtensionOverlaps,\n} from \"./resource-loader-extensions.ts\";\nimport { resourceInternals } from \"./resource-loader-internals.ts\";\nimport {\n\tcollectWorkflowResources,\n\tcreateInheritanceSnapshotProvider,\n\tcreateWorkflowResourceProvider,\n\tresolvePackageResourcePaths,\n\tresolveTrustedBorrowedProjectLocalSources,\n} from \"./resource-loader-package-resources.ts\";\nimport { mergeResourcePaths, resolveResourcePath } from \"./resource-loader-paths.ts\";\nimport { applyExtensionSourceInfo } from \"./resource-loader-source-info.ts\";\nimport type { ResourceLoaderReloadOptions } from \"./resource-loader-types.ts\";\nimport { buildSkillCatalog } from \"./skill-catalog.ts\";\nimport { endTimingSpan, resetTimings, startTimingSpan } from \"./timings.ts\";\n\nfunction getEnabledResources(\n\tresources: Array<{ path: string; enabled: boolean; metadata: PathMetadata }>,\n\tmetadataByPath: Map<string, PathMetadata>,\n): Array<{ path: string; enabled: boolean; metadata: PathMetadata }> {\n\tfor (const r of resources) {\n\t\tif (!metadataByPath.has(r.path)) {\n\t\t\tmetadataByPath.set(r.path, r.metadata);\n\t\t}\n\t}\n\treturn resources.filter((r) => r.enabled);\n}\n\nfunction getEnabledPaths(\n\tresources: Array<{ path: string; enabled: boolean; metadata: PathMetadata }>,\n\tmetadataByPath: Map<string, PathMetadata>,\n): string[] {\n\treturn getEnabledResources(resources, metadataByPath).map((r) => r.path);\n}\n\nfunction mapSkillPath(\n\tresource: { path: string; metadata: PathMetadata },\n\tmetadataByPath: Map<string, PathMetadata>,\n): string {\n\tif (resource.metadata.source !== \"auto\" && resource.metadata.origin !== \"package\") {\n\t\treturn resource.path;\n\t}\n\ttry {\n\t\tconst stats = statSync(resource.path);\n\t\tif (!stats.isDirectory()) {\n\t\t\treturn resource.path;\n\t\t}\n\t} catch {\n\t\treturn resource.path;\n\t}\n\tconst skillFile = join(resource.path, \"SKILL.md\");\n\tif (existsSync(skillFile)) {\n\t\tif (!metadataByPath.has(skillFile)) {\n\t\t\tmetadataByPath.set(skillFile, resource.metadata);\n\t\t}\n\t\treturn skillFile;\n\t}\n\treturn resource.path;\n}\n\nfunction addCliMetadata(cliExtensionPaths: ResolvedPaths, metadataByPath: Map<string, PathMetadata>): void {\n\tfor (const r of cliExtensionPaths.extensions) {\n\t\tif (!metadataByPath.has(r.path)) {\n\t\t\tmetadataByPath.set(r.path, r.metadata);\n\t\t}\n\t}\n\tfor (const r of cliExtensionPaths.skills) {\n\t\tif (!metadataByPath.has(r.path)) {\n\t\t\tmetadataByPath.set(r.path, r.metadata);\n\t\t}\n\t}\n}\n\nexport async function loadProjectTrustExtensions(loader: DefaultResourceLoader): Promise<LoadExtensionsResult> {\n\tconst state = resourceInternals(loader);\n\tstate.settingsManager.setProjectTrusted(false);\n\tawait state.settingsManager.reload();\n\tconst { resolvedPaths, cliExtensionPaths, builtinPackagePaths } = await resolvePackageResourcePaths(loader, {\n\t\tincludeCliProjectLocalResources: false,\n\t});\n\tconst metadataByPath = new Map<string, PathMetadata>();\n\tconst cliEnabledExtensions = getEnabledPaths(cliExtensionPaths.extensions, metadataByPath);\n\tconst enabledExtensions = getEnabledPaths(resolvedPaths.extensions, metadataByPath);\n\tconst builtinEnabledExtensions = state.noExtensions\n\t\t? []\n\t\t: getEnabledPaths(builtinPackagePaths.extensions, metadataByPath);\n\tconst workflowResources = collectWorkflowResources(resolvedPaths, cliExtensionPaths, builtinPackagePaths);\n\tstate.workflowResources = workflowResources;\n\tconst workflowResourceProvider = createWorkflowResourceProvider(loader);\n\tconst inheritanceSnapshotProvider = createInheritanceSnapshotProvider(loader);\n\tconst extensionPaths = state.noExtensions\n\t\t? cliEnabledExtensions\n\t\t: mergeResourcePaths(state.cwd, cliEnabledExtensions, [...enabledExtensions, ...builtinEnabledExtensions]);\n\tconst extensionsResult = await loadExtensionsCached(\n\t\textensionPaths,\n\t\tstate.cwd,\n\t\tstate.eventBus,\n\t\tworkflowResourceProvider,\n\t\tundefined,\n\t\tinheritanceSnapshotProvider,\n\t);\n\tconst inlineExtensions = await loadExtensionFactories(\n\t\tloader,\n\t\textensionsResult.runtime,\n\t\tworkflowResourceProvider,\n\t\tinheritanceSnapshotProvider,\n\t);\n\textensionsResult.extensions.push(...inlineExtensions.extensions);\n\textensionsResult.errors.push(...inlineExtensions.errors);\n\tapplyExtensionSourceInfo(loader, extensionsResult.extensions, metadataByPath);\n\treturn extensionsResult;\n}\n\nexport async function reloadDefaultResourceLoader(\n\tloader: DefaultResourceLoader,\n\toptions?: ResourceLoaderReloadOptions,\n): Promise<void> {\n\tconst state = resourceInternals(loader);\n\tresetTimings(\"extensions\");\n\tif (state.loaded) {\n\t\tclearExtensionCache();\n\t}\n\tlet preTrustExtensions: LoadExtensionsResult | undefined;\n\tconst initialProjectTrusted = state.settingsManager.isProjectTrusted();\n\tif (options?.resolveProjectTrust || options?.resolveBorrowedProjectTrust) {\n\t\tpreTrustExtensions = await loadProjectTrustExtensions(loader);\n\t}\n\tif (options?.resolveProjectTrust && preTrustExtensions) {\n\t\tconst projectTrusted = await options.resolveProjectTrust({ extensionsResult: preTrustExtensions });\n\t\tstate.settingsManager.setProjectTrusted(projectTrusted);\n\t} else if (preTrustExtensions) {\n\t\tstate.settingsManager.setProjectTrusted(initialProjectTrusted);\n\t}\n\tif (options?.resolveBorrowedProjectTrust) {\n\t\tstate.trustedBorrowedProjectLocalSources = await resolveTrustedBorrowedProjectLocalSources(\n\t\t\tloader,\n\t\t\toptions.resolveBorrowedProjectTrust,\n\t\t\tpreTrustExtensions,\n\t\t);\n\t}\n\tif (options?.deferResources && !options.resolveProjectTrust && !options.resolveBorrowedProjectTrust) {\n\t\tawait state.settingsManager.reload();\n\t\tconst deferredExtensions: LoadExtensionsResult = {\n\t\t\textensions: [],\n\t\t\terrors: [],\n\t\t\truntime: createExtensionRuntime(),\n\t\t};\n\t\tstate.extensionsResult = state.extensionsOverride\n\t\t\t? state.extensionsOverride(deferredExtensions)\n\t\t\t: deferredExtensions;\n\t\tstate.extensionSkillSourceInfos = new Map();\n\t\tstate.extensionPromptSourceInfos = new Map();\n\t\tstate.extensionThemeSourceInfos = new Map();\n\t\tstate.workflowResources = [];\n\t\tstate.resourceMetadataByPath = new Map();\n\t\tstate.lastSkillPaths = [];\n\t\tconst emptySkills = state.skillsOverride ? state.skillsOverride({ skills: [], diagnostics: [] }) : undefined;\n\t\tstate.skills = emptySkills?.skills ?? [];\n\t\tstate.skillDiagnostics = emptySkills?.diagnostics ?? [];\n\t\tstate.skillCatalog = buildSkillCatalog(state.skills);\n\t\tstate.lastPromptPaths = [];\n\t\tconst emptyPrompts = state.promptsOverride ? state.promptsOverride({ prompts: [], diagnostics: [] }) : undefined;\n\t\tstate.prompts = emptyPrompts?.prompts ?? [];\n\t\tstate.promptDiagnostics = emptyPrompts?.diagnostics ?? [];\n\t\tstate.lastThemePaths = [];\n\t\tconst emptyThemes = state.themesOverride ? state.themesOverride({ themes: [], diagnostics: [] }) : undefined;\n\t\tstate.themes = emptyThemes?.themes ?? [];\n\t\tstate.themeDiagnostics = emptyThemes?.diagnostics ?? [];\n\t\tconst emptyAgentsFiles = { agentsFiles: [] };\n\t\tstate.agentsFiles = state.agentsFilesOverride\n\t\t\t? state.agentsFilesOverride(emptyAgentsFiles).agentsFiles\n\t\t\t: emptyAgentsFiles.agentsFiles;\n\t\tconst baseSystemPrompt = state.systemPromptSource\n\t\t\t? resolvePromptInput(state.systemPromptSource, \"system prompt\")\n\t\t\t: undefined;\n\t\tstate.systemPrompt = state.systemPromptOverride ? state.systemPromptOverride(baseSystemPrompt) : baseSystemPrompt;\n\t\tstate.systemPromptSourcePath = resolveExistingPromptSourcePath(state.systemPromptSource);\n\t\tconst appendSources = state.appendSystemPromptSource ?? [];\n\t\tconst baseAppend = appendSources\n\t\t\t.map((s) => resolvePromptInput(s, \"append system prompt\"))\n\t\t\t.filter((s): s is string => s !== undefined);\n\t\tstate.appendSystemPrompt = state.appendSystemPromptOverride\n\t\t\t? state.appendSystemPromptOverride(baseAppend)\n\t\t\t: baseAppend;\n\t\tstate.appendSystemPromptSourcePaths = resolveExistingPromptSourcePaths(appendSources);\n\t\tstate.loaded = true;\n\t\treturn;\n\t}\n\tconst resolveSpan = startTimingSpan(\"DefaultResourceLoader.reload.resolvePackageResourcePaths\");\n\tconst { resolvedPaths, cliExtensionPaths, builtinPackagePaths } = await resolvePackageResourcePaths(loader, {\n\t\ttrustedBorrowedProjectLocalSources: state.trustedBorrowedProjectLocalSources,\n\t});\n\tendTimingSpan(resolveSpan);\n\t// Kept on the loader so post-reload passes (extendResources) can still resolve\n\t// package metadata for paths this reload discovered.\n\tstate.resourceMetadataByPath = new Map();\n\tconst metadataByPath = state.resourceMetadataByPath;\n\n\tstate.extensionSkillSourceInfos = new Map();\n\tstate.extensionPromptSourceInfos = new Map();\n\tstate.extensionThemeSourceInfos = new Map();\n\n\tconst enabledExtensions = getEnabledPaths(resolvedPaths.extensions, metadataByPath);\n\tconst enabledSkillResources = getEnabledResources(resolvedPaths.skills, metadataByPath);\n\tconst enabledPrompts = getEnabledPaths(resolvedPaths.prompts, metadataByPath);\n\tconst enabledThemes = getEnabledPaths(resolvedPaths.themes, metadataByPath);\n\n\tconst builtinEnabledExtensions = state.noExtensions\n\t\t? []\n\t\t: getEnabledPaths(builtinPackagePaths.extensions, metadataByPath);\n\tconst builtinEnabledSkillResources = state.noSkills\n\t\t? []\n\t\t: getEnabledResources(builtinPackagePaths.skills, metadataByPath);\n\tconst builtinEnabledPrompts = state.noPromptTemplates\n\t\t? []\n\t\t: getEnabledPaths(builtinPackagePaths.prompts, metadataByPath);\n\tconst builtinEnabledThemes = state.noThemes ? [] : getEnabledPaths(builtinPackagePaths.themes, metadataByPath);\n\n\tconst enabledSkills = enabledSkillResources.map((resource) => mapSkillPath(resource, metadataByPath));\n\tconst builtinEnabledSkills = builtinEnabledSkillResources.map((resource) => mapSkillPath(resource, metadataByPath));\n\n\taddCliMetadata(cliExtensionPaths, metadataByPath);\n\n\tconst cliEnabledExtensions = getEnabledPaths(cliExtensionPaths.extensions, metadataByPath);\n\tconst cliEnabledSkills = getEnabledPaths(cliExtensionPaths.skills, metadataByPath);\n\tconst cliEnabledPrompts = getEnabledPaths(cliExtensionPaths.prompts, metadataByPath);\n\tconst cliEnabledThemes = getEnabledPaths(cliExtensionPaths.themes, metadataByPath);\n\tconst workflowResources = collectWorkflowResources(resolvedPaths, cliExtensionPaths, builtinPackagePaths);\n\tstate.workflowResources = workflowResources;\n\tconst workflowResourceProvider = createWorkflowResourceProvider(loader);\n\n\tconst extensionPaths = state.noExtensions\n\t\t? cliEnabledExtensions\n\t\t: mergeResourcePaths(state.cwd, cliEnabledExtensions, [...enabledExtensions, ...builtinEnabledExtensions]);\n\n\tconst inheritanceSnapshotProvider = createInheritanceSnapshotProvider(loader);\n\tconst extensionsResult: LoadExtensionsResult = options?.deferExtensions\n\t\t? { extensions: [], errors: [], runtime: createExtensionRuntime() }\n\t\t: await loadFinalExtensionSet(\n\t\t\t\tloader,\n\t\t\t\textensionPaths,\n\t\t\t\tpreTrustExtensions,\n\t\t\t\tworkflowResourceProvider,\n\t\t\t\tinheritanceSnapshotProvider,\n\t\t\t);\n\n\tfor (const p of state.additionalExtensionPaths) {\n\t\tif (isLocalPath(p)) {\n\t\t\tconst resolved = resolveResourcePath(state.cwd, p);\n\t\t\tif (!existsSync(resolved)) {\n\t\t\t\textensionsResult.errors.push({ path: resolved, error: `Extension path does not exist: ${resolved}` });\n\t\t\t}\n\t\t}\n\t}\n\tstate.extensionsResult = state.extensionsOverride ? state.extensionsOverride(extensionsResult) : extensionsResult;\n\tapplyExtensionSourceInfo(loader, state.extensionsResult.extensions, metadataByPath);\n\tresolveInheritedExtensionOverlaps(state.extensionsResult);\n\n\tconst skillPaths = state.noSkills\n\t\t? mergeResourcePaths(state.cwd, cliEnabledSkills, state.additionalSkillPaths)\n\t\t: mergeResourcePaths(\n\t\t\t\tstate.cwd,\n\t\t\t\t[...cliEnabledSkills, ...enabledSkills, ...builtinEnabledSkills],\n\t\t\t\tstate.additionalSkillPaths,\n\t\t\t);\n\n\tstate.lastSkillPaths = skillPaths;\n\tconst skillsStartedAt = Date.now();\n\tconst skillsSpan = startTimingSpan(\"DefaultResourceLoader.reload.updateSkillsFromPathsAsync\");\n\tawait updateSkillsFromPathsAsync(loader, skillPaths, metadataByPath);\n\tendTimingSpan(skillsSpan);\n\tawait yieldToEventLoopIfSlow(skillsStartedAt);\n\tfor (const p of state.additionalSkillPaths) {\n\t\tif (isLocalPath(p)) {\n\t\t\tconst resolved = resolveResourcePath(state.cwd, p);\n\t\t\tif (!existsSync(resolved) && !state.skillDiagnostics.some((d) => d.path === resolved)) {\n\t\t\t\tstate.skillDiagnostics.push({ type: \"error\", message: \"Skill path does not exist\", path: resolved });\n\t\t\t}\n\t\t}\n\t}\n\n\tconst promptPaths = state.noPromptTemplates\n\t\t? mergeResourcePaths(state.cwd, cliEnabledPrompts, state.additionalPromptTemplatePaths)\n\t\t: mergeResourcePaths(\n\t\t\t\tstate.cwd,\n\t\t\t\t[...cliEnabledPrompts, ...enabledPrompts, ...builtinEnabledPrompts],\n\t\t\t\tstate.additionalPromptTemplatePaths,\n\t\t\t);\n\n\tstate.lastPromptPaths = promptPaths;\n\tconst promptsStartedAt = Date.now();\n\tconst promptsSpan = startTimingSpan(\"DefaultResourceLoader.reload.updatePromptsFromPathsAsync\");\n\tawait updatePromptsFromPathsAsync(loader, promptPaths, metadataByPath);\n\tendTimingSpan(promptsSpan);\n\tawait yieldToEventLoopIfSlow(promptsStartedAt);\n\tfor (const p of state.additionalPromptTemplatePaths) {\n\t\tif (isLocalPath(p)) {\n\t\t\tconst resolved = resolveResourcePath(state.cwd, p);\n\t\t\tif (!existsSync(resolved) && !state.promptDiagnostics.some((d) => d.path === resolved)) {\n\t\t\t\tstate.promptDiagnostics.push({\n\t\t\t\t\ttype: \"error\",\n\t\t\t\t\tmessage: \"Prompt template path does not exist\",\n\t\t\t\t\tpath: resolved,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\n\tconst themePaths = state.noThemes\n\t\t? mergeResourcePaths(state.cwd, cliEnabledThemes, state.additionalThemePaths)\n\t\t: mergeResourcePaths(\n\t\t\t\tstate.cwd,\n\t\t\t\t[...cliEnabledThemes, ...enabledThemes, ...builtinEnabledThemes],\n\t\t\t\tstate.additionalThemePaths,\n\t\t\t);\n\n\tstate.lastThemePaths = themePaths;\n\tconst themesStartedAt = Date.now();\n\tconst themesSpan = startTimingSpan(\"DefaultResourceLoader.reload.updateThemesFromPathsAsync\");\n\tawait updateThemesFromPathsAsync(loader, themePaths, metadataByPath);\n\tendTimingSpan(themesSpan);\n\tawait yieldToEventLoopIfSlow(themesStartedAt);\n\tfor (const p of state.additionalThemePaths) {\n\t\tconst resolved = resolveResourcePath(state.cwd, p);\n\t\tif (!existsSync(resolved) && !state.themeDiagnostics.some((d) => d.path === resolved)) {\n\t\t\tstate.themeDiagnostics.push({ type: \"error\", message: \"Theme path does not exist\", path: resolved });\n\t\t}\n\t}\n\n\tconst contextFilesStartedAt = Date.now();\n\tconst contextFilesSpan = startTimingSpan(\"DefaultResourceLoader.reload.loadProjectContextFiles\");\n\tconst agentsFiles = {\n\t\tagentsFiles: state.noContextFiles\n\t\t\t? []\n\t\t\t: loadProjectContextFiles({\n\t\t\t\t\tcwd: state.cwd,\n\t\t\t\t\tagentDir: state.agentDir,\n\t\t\t\t\tprojectTrusted: state.settingsManager.isProjectTrusted(),\n\t\t\t\t}),\n\t};\n\tendTimingSpan(contextFilesSpan);\n\tawait yieldToEventLoopIfSlow(contextFilesStartedAt);\n\tconst resolvedAgentsFiles = state.agentsFilesOverride ? state.agentsFilesOverride(agentsFiles) : agentsFiles;\n\tstate.agentsFiles = resolvedAgentsFiles.agentsFiles;\n\n\tconst promptFilesStartedAt = Date.now();\n\tconst promptFilesSpan = startTimingSpan(\"DefaultResourceLoader.reload.resolvePromptFiles\");\n\tconst systemPromptSource = state.systemPromptSource ?? discoverSystemPromptFile(loader);\n\tconst baseSystemPrompt = resolvePromptInput(systemPromptSource, \"system prompt\");\n\tstate.systemPrompt = state.systemPromptOverride ? state.systemPromptOverride(baseSystemPrompt) : baseSystemPrompt;\n\tstate.systemPromptSourcePath = resolveExistingPromptSourcePath(systemPromptSource);\n\n\tconst discoveredAppend = discoverAppendSystemPromptFile(loader);\n\tconst appendSources = state.appendSystemPromptSource ?? (discoveredAppend ? [discoveredAppend] : []);\n\tconst baseAppend = appendSources\n\t\t.map((s) => resolvePromptInput(s, \"append system prompt\"))\n\t\t.filter((s): s is string => s !== undefined);\n\tstate.appendSystemPrompt = state.appendSystemPromptOverride\n\t\t? state.appendSystemPromptOverride(baseAppend)\n\t\t: baseAppend;\n\tstate.appendSystemPromptSourcePaths = resolveExistingPromptSourcePaths(appendSources);\n\tstate.loaded = true;\n\tendTimingSpan(promptFilesSpan);\n\tawait yieldToEventLoopIfSlow(promptFilesStartedAt);\n}\n"]}
1
+ {"version":3,"file":"resource-loader-reload.js","sourceRoot":"","sources":["../../src/core/resource-loader-reload.ts"],"names":[],"mappings":"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","sourcesContent":["import { existsSync, statSync } from \"node:fs\";\nimport { join } from \"node:path\";\nimport { yieldToEventLoopIfSlow } from \"../utils/event-loop.ts\";\nimport { isLocalPath, resolvePath } from \"../utils/paths.ts\";\nimport { getMandatoryBuiltinExtensionPaths } from \"./builtin-packages.ts\";\nimport { clearExtensionCache, createExtensionRuntime, loadExtensionsCached } from \"./extensions/loader.ts\";\nimport type { Extension, LoadExtensionsResult } from \"./extensions/types.ts\";\nimport { isTrustedMandatoryRuntimeTool, markTrustedMandatoryRuntimeExtension } from \"./mandatory-runtime-tools.ts\";\nimport type { PathMetadata, ResolvedPaths } from \"./package-manager.ts\";\nimport {\n\tupdatePromptsFromPathsAsync,\n\tupdateSkillsFromPathsAsync,\n\tupdateThemesFromPathsAsync,\n} from \"./resource-loader-assets.ts\";\nimport {\n\tloadProjectContextFiles,\n\tresolveExistingPromptSourcePath,\n\tresolveExistingPromptSourcePaths,\n\tresolvePromptInput,\n} from \"./resource-loader-context-files.ts\";\nimport type { DefaultResourceLoader } from \"./resource-loader-core.ts\";\nimport { discoverAppendSystemPromptFile, discoverSystemPromptFile } from \"./resource-loader-discovery.ts\";\nimport {\n\tloadExtensionFactories,\n\tloadFinalExtensionSet,\n\tresolveInheritedExtensionOverlaps,\n} from \"./resource-loader-extensions.ts\";\nimport { resourceInternals } from \"./resource-loader-internals.ts\";\nimport {\n\tcollectWorkflowResources,\n\tcreateInheritanceSnapshotProvider,\n\tcreateWorkflowResourceProvider,\n\tresolvePackageResourcePaths,\n\tresolveTrustedBorrowedProjectLocalSources,\n} from \"./resource-loader-package-resources.ts\";\nimport { mergeResourcePaths, resolveResourcePath } from \"./resource-loader-paths.ts\";\nimport { applyExtensionSourceInfo } from \"./resource-loader-source-info.ts\";\nimport type { ResourceLoaderReloadOptions } from \"./resource-loader-types.ts\";\nimport { buildSkillCatalog } from \"./skill-catalog.ts\";\nimport { endTimingSpan, resetTimings, startTimingSpan } from \"./timings.ts\";\n\nfunction getEnabledResources(\n\tresources: Array<{ path: string; enabled: boolean; metadata: PathMetadata }>,\n\tmetadataByPath: Map<string, PathMetadata>,\n): Array<{ path: string; enabled: boolean; metadata: PathMetadata }> {\n\tfor (const r of resources) {\n\t\tif (!metadataByPath.has(r.path)) {\n\t\t\tmetadataByPath.set(r.path, r.metadata);\n\t\t}\n\t}\n\treturn resources.filter((r) => r.enabled);\n}\n\nfunction getEnabledPaths(\n\tresources: Array<{ path: string; enabled: boolean; metadata: PathMetadata }>,\n\tmetadataByPath: Map<string, PathMetadata>,\n): string[] {\n\treturn getEnabledResources(resources, metadataByPath).map((r) => r.path);\n}\n\nfunction getBuiltinExtensionPaths(\n\tresources: Array<{ path: string; enabled: boolean; metadata: PathMetadata }>,\n\tmetadataByPath: Map<string, PathMetadata>,\n\tnoExtensions: boolean,\n): string[] {\n\tfor (const resource of resources) {\n\t\tif (!metadataByPath.has(resource.path)) metadataByPath.set(resource.path, resource.metadata);\n\t}\n\treturn noExtensions ? [] : resources.filter((resource) => resource.enabled).map((resource) => resource.path);\n}\n\nfunction mapSkillPath(\n\tresource: { path: string; metadata: PathMetadata },\n\tmetadataByPath: Map<string, PathMetadata>,\n): string {\n\tif (resource.metadata.source !== \"auto\" && resource.metadata.origin !== \"package\") {\n\t\treturn resource.path;\n\t}\n\ttry {\n\t\tconst stats = statSync(resource.path);\n\t\tif (!stats.isDirectory()) {\n\t\t\treturn resource.path;\n\t\t}\n\t} catch {\n\t\treturn resource.path;\n\t}\n\tconst skillFile = join(resource.path, \"SKILL.md\");\n\tif (existsSync(skillFile)) {\n\t\tif (!metadataByPath.has(skillFile)) {\n\t\t\tmetadataByPath.set(skillFile, resource.metadata);\n\t\t}\n\t\treturn skillFile;\n\t}\n\treturn resource.path;\n}\n\nfunction addCliMetadata(cliExtensionPaths: ResolvedPaths, metadataByPath: Map<string, PathMetadata>): void {\n\tfor (const r of cliExtensionPaths.extensions) {\n\t\tif (!metadataByPath.has(r.path)) {\n\t\t\tmetadataByPath.set(r.path, r.metadata);\n\t\t}\n\t}\n\tfor (const r of cliExtensionPaths.skills) {\n\t\tif (!metadataByPath.has(r.path)) {\n\t\t\tmetadataByPath.set(r.path, r.metadata);\n\t\t}\n\t}\n}\n\nexport async function loadProjectTrustExtensions(loader: DefaultResourceLoader): Promise<LoadExtensionsResult> {\n\tconst state = resourceInternals(loader);\n\tstate.settingsManager.setProjectTrusted(false);\n\tawait state.settingsManager.reload();\n\tconst { resolvedPaths, cliExtensionPaths, builtinPackagePaths } = await resolvePackageResourcePaths(loader, {\n\t\tincludeCliProjectLocalResources: false,\n\t});\n\tconst metadataByPath = new Map<string, PathMetadata>();\n\tconst cliEnabledExtensions = getEnabledPaths(cliExtensionPaths.extensions, metadataByPath);\n\tconst enabledExtensions = getEnabledPaths(resolvedPaths.extensions, metadataByPath);\n\tconst builtinEnabledExtensions = getBuiltinExtensionPaths(\n\t\tbuiltinPackagePaths.extensions,\n\t\tmetadataByPath,\n\t\tstate.noExtensions,\n\t);\n\tconst workflowResources = collectWorkflowResources(resolvedPaths, cliExtensionPaths, builtinPackagePaths);\n\tstate.workflowResources = workflowResources;\n\tconst workflowResourceProvider = createWorkflowResourceProvider(loader);\n\tconst inheritanceSnapshotProvider = createInheritanceSnapshotProvider(loader);\n\tconst extensionPaths = mergeResourcePaths(\n\t\tstate.cwd,\n\t\tcliEnabledExtensions,\n\t\tstate.noExtensions ? builtinEnabledExtensions : [...enabledExtensions, ...builtinEnabledExtensions],\n\t);\n\tconst extensionsResult = await loadExtensionsCached(\n\t\textensionPaths,\n\t\tstate.cwd,\n\t\tstate.eventBus,\n\t\tworkflowResourceProvider,\n\t\tundefined,\n\t\tinheritanceSnapshotProvider,\n\t);\n\tconst inlineExtensions = await loadExtensionFactories(\n\t\tloader,\n\t\textensionsResult.runtime,\n\t\tworkflowResourceProvider,\n\t\tinheritanceSnapshotProvider,\n\t);\n\textensionsResult.extensions.push(...inlineExtensions.extensions);\n\textensionsResult.errors.push(...inlineExtensions.errors);\n\tapplyExtensionSourceInfo(loader, extensionsResult.extensions, metadataByPath);\n\treturn extensionsResult;\n}\n\nexport async function reloadDefaultResourceLoader(\n\tloader: DefaultResourceLoader,\n\toptions?: ResourceLoaderReloadOptions,\n): Promise<void> {\n\tconst state = resourceInternals(loader);\n\tresetTimings(\"extensions\");\n\tif (state.loaded) {\n\t\tclearExtensionCache();\n\t}\n\tlet preTrustExtensions: LoadExtensionsResult | undefined;\n\tconst initialProjectTrusted = state.settingsManager.isProjectTrusted();\n\tif (options?.resolveProjectTrust || options?.resolveBorrowedProjectTrust) {\n\t\tpreTrustExtensions = await loadProjectTrustExtensions(loader);\n\t}\n\tif (options?.resolveProjectTrust && preTrustExtensions) {\n\t\tconst projectTrusted = await options.resolveProjectTrust({ extensionsResult: preTrustExtensions });\n\t\tstate.settingsManager.setProjectTrusted(projectTrusted);\n\t} else if (preTrustExtensions) {\n\t\tstate.settingsManager.setProjectTrusted(initialProjectTrusted);\n\t}\n\tif (options?.resolveBorrowedProjectTrust) {\n\t\tstate.trustedBorrowedProjectLocalSources = await resolveTrustedBorrowedProjectLocalSources(\n\t\t\tloader,\n\t\t\toptions.resolveBorrowedProjectTrust,\n\t\t\tpreTrustExtensions,\n\t\t);\n\t}\n\tif (options?.deferResources && !options.resolveProjectTrust && !options.resolveBorrowedProjectTrust) {\n\t\tawait state.settingsManager.reload();\n\t\tconst deferredExtensions: LoadExtensionsResult = {\n\t\t\textensions: [],\n\t\t\terrors: [],\n\t\t\truntime: createExtensionRuntime(),\n\t\t};\n\t\tstate.extensionsResult = state.extensionsOverride\n\t\t\t? state.extensionsOverride(deferredExtensions)\n\t\t\t: deferredExtensions;\n\t\tstate.extensionSkillSourceInfos = new Map();\n\t\tstate.extensionPromptSourceInfos = new Map();\n\t\tstate.extensionThemeSourceInfos = new Map();\n\t\tstate.workflowResources = [];\n\t\tstate.resourceMetadataByPath = new Map();\n\t\tstate.lastSkillPaths = [];\n\t\tconst emptySkills = state.skillsOverride ? state.skillsOverride({ skills: [], diagnostics: [] }) : undefined;\n\t\tstate.skills = emptySkills?.skills ?? [];\n\t\tstate.skillDiagnostics = emptySkills?.diagnostics ?? [];\n\t\tstate.skillCatalog = buildSkillCatalog(state.skills);\n\t\tstate.lastPromptPaths = [];\n\t\tconst emptyPrompts = state.promptsOverride ? state.promptsOverride({ prompts: [], diagnostics: [] }) : undefined;\n\t\tstate.prompts = emptyPrompts?.prompts ?? [];\n\t\tstate.promptDiagnostics = emptyPrompts?.diagnostics ?? [];\n\t\tstate.lastThemePaths = [];\n\t\tconst emptyThemes = state.themesOverride ? state.themesOverride({ themes: [], diagnostics: [] }) : undefined;\n\t\tstate.themes = emptyThemes?.themes ?? [];\n\t\tstate.themeDiagnostics = emptyThemes?.diagnostics ?? [];\n\t\tconst emptyAgentsFiles = { agentsFiles: [] };\n\t\tstate.agentsFiles = state.agentsFilesOverride\n\t\t\t? state.agentsFilesOverride(emptyAgentsFiles).agentsFiles\n\t\t\t: emptyAgentsFiles.agentsFiles;\n\t\tconst baseSystemPrompt = state.systemPromptSource\n\t\t\t? resolvePromptInput(state.systemPromptSource, \"system prompt\")\n\t\t\t: undefined;\n\t\tstate.systemPrompt = state.systemPromptOverride ? state.systemPromptOverride(baseSystemPrompt) : baseSystemPrompt;\n\t\tstate.systemPromptSourcePath = resolveExistingPromptSourcePath(state.systemPromptSource);\n\t\tconst appendSources = state.appendSystemPromptSource ?? [];\n\t\tconst baseAppend = appendSources\n\t\t\t.map((s) => resolvePromptInput(s, \"append system prompt\"))\n\t\t\t.filter((s): s is string => s !== undefined);\n\t\tstate.appendSystemPrompt = state.appendSystemPromptOverride\n\t\t\t? state.appendSystemPromptOverride(baseAppend)\n\t\t\t: baseAppend;\n\t\tstate.appendSystemPromptSourcePaths = resolveExistingPromptSourcePaths(appendSources);\n\t\tstate.loaded = true;\n\t\treturn;\n\t}\n\tconst resolveSpan = startTimingSpan(\"DefaultResourceLoader.reload.resolvePackageResourcePaths\");\n\tconst { resolvedPaths, cliExtensionPaths, builtinPackagePaths } = await resolvePackageResourcePaths(loader, {\n\t\ttrustedBorrowedProjectLocalSources: state.trustedBorrowedProjectLocalSources,\n\t});\n\tendTimingSpan(resolveSpan);\n\t// Kept on the loader so post-reload passes (extendResources) can still resolve\n\t// package metadata for paths this reload discovered.\n\tstate.resourceMetadataByPath = new Map();\n\tconst metadataByPath = state.resourceMetadataByPath;\n\n\tstate.extensionSkillSourceInfos = new Map();\n\tstate.extensionPromptSourceInfos = new Map();\n\tstate.extensionThemeSourceInfos = new Map();\n\n\tconst enabledExtensions = getEnabledPaths(resolvedPaths.extensions, metadataByPath);\n\tconst enabledSkillResources = getEnabledResources(resolvedPaths.skills, metadataByPath);\n\tconst enabledPrompts = getEnabledPaths(resolvedPaths.prompts, metadataByPath);\n\tconst enabledThemes = getEnabledPaths(resolvedPaths.themes, metadataByPath);\n\n\tconst builtinEnabledExtensions = getBuiltinExtensionPaths(\n\t\tbuiltinPackagePaths.extensions,\n\t\tmetadataByPath,\n\t\tstate.noExtensions,\n\t);\n\tconst builtinEnabledSkillResources = state.noSkills\n\t\t? []\n\t\t: getEnabledResources(builtinPackagePaths.skills, metadataByPath);\n\tconst builtinEnabledPrompts = state.noPromptTemplates\n\t\t? []\n\t\t: getEnabledPaths(builtinPackagePaths.prompts, metadataByPath);\n\tconst builtinEnabledThemes = state.noThemes ? [] : getEnabledPaths(builtinPackagePaths.themes, metadataByPath);\n\n\tconst enabledSkills = enabledSkillResources.map((resource) => mapSkillPath(resource, metadataByPath));\n\tconst builtinEnabledSkills = builtinEnabledSkillResources.map((resource) => mapSkillPath(resource, metadataByPath));\n\n\taddCliMetadata(cliExtensionPaths, metadataByPath);\n\n\tconst cliEnabledExtensions = getEnabledPaths(cliExtensionPaths.extensions, metadataByPath);\n\tconst cliEnabledSkills = getEnabledPaths(cliExtensionPaths.skills, metadataByPath);\n\tconst cliEnabledPrompts = getEnabledPaths(cliExtensionPaths.prompts, metadataByPath);\n\tconst cliEnabledThemes = getEnabledPaths(cliExtensionPaths.themes, metadataByPath);\n\tconst workflowResources = collectWorkflowResources(resolvedPaths, cliExtensionPaths, builtinPackagePaths);\n\tstate.workflowResources = workflowResources;\n\tconst workflowResourceProvider = createWorkflowResourceProvider(loader);\n\n\tconst extensionPaths = mergeResourcePaths(\n\t\tstate.cwd,\n\t\tcliEnabledExtensions,\n\t\tstate.noExtensions ? builtinEnabledExtensions : [...enabledExtensions, ...builtinEnabledExtensions],\n\t);\n\n\tconst inheritanceSnapshotProvider = createInheritanceSnapshotProvider(loader);\n\tconst extensionsResult: LoadExtensionsResult = options?.deferExtensions\n\t\t? { extensions: [], errors: [], runtime: createExtensionRuntime() }\n\t\t: await loadFinalExtensionSet(\n\t\t\t\tloader,\n\t\t\t\textensionPaths,\n\t\t\t\tpreTrustExtensions,\n\t\t\t\tworkflowResourceProvider,\n\t\t\t\tinheritanceSnapshotProvider,\n\t\t\t);\n\tconst mandatoryExtensionPaths = new Set(\n\t\tgetMandatoryBuiltinExtensionPaths().map((path) => resolvePath(path, state.cwd, { normalizeUnicodeSpaces: true })),\n\t);\n\tconst loadedMandatoryExtensions = new Set<Extension>(\n\t\textensionsResult.extensions.filter((extension) =>\n\t\t\tmandatoryExtensionPaths.has(resolvePath(extension.resolvedPath, state.cwd, { normalizeUnicodeSpaces: true })),\n\t\t),\n\t);\n\tfor (const extension of loadedMandatoryExtensions) markTrustedMandatoryRuntimeExtension(extension);\n\n\tfor (const p of state.additionalExtensionPaths) {\n\t\tif (isLocalPath(p)) {\n\t\t\tconst resolved = resolveResourcePath(state.cwd, p);\n\t\t\tif (!existsSync(resolved)) {\n\t\t\t\textensionsResult.errors.push({ path: resolved, error: `Extension path does not exist: ${resolved}` });\n\t\t\t}\n\t\t}\n\t}\n\tstate.extensionsResult = state.extensionsOverride ? state.extensionsOverride(extensionsResult) : extensionsResult;\n\tapplyExtensionSourceInfo(loader, state.extensionsResult.extensions, metadataByPath);\n\tfor (const extension of state.extensionsResult.extensions) {\n\t\tconst registration = extension.tools.get(\"intercom\");\n\t\tif (loadedMandatoryExtensions.has(extension) && registration && isTrustedMandatoryRuntimeTool(registration)) {\n\t\t\tmarkTrustedMandatoryRuntimeExtension(extension);\n\t\t}\n\t}\n\tresolveInheritedExtensionOverlaps(state.extensionsResult);\n\n\tconst skillPaths = state.noSkills\n\t\t? mergeResourcePaths(state.cwd, cliEnabledSkills, state.additionalSkillPaths)\n\t\t: mergeResourcePaths(\n\t\t\t\tstate.cwd,\n\t\t\t\t[...cliEnabledSkills, ...enabledSkills, ...builtinEnabledSkills],\n\t\t\t\tstate.additionalSkillPaths,\n\t\t\t);\n\n\tstate.lastSkillPaths = skillPaths;\n\tconst skillsStartedAt = Date.now();\n\tconst skillsSpan = startTimingSpan(\"DefaultResourceLoader.reload.updateSkillsFromPathsAsync\");\n\tawait updateSkillsFromPathsAsync(loader, skillPaths, metadataByPath);\n\tendTimingSpan(skillsSpan);\n\tawait yieldToEventLoopIfSlow(skillsStartedAt);\n\tfor (const p of state.additionalSkillPaths) {\n\t\tif (isLocalPath(p)) {\n\t\t\tconst resolved = resolveResourcePath(state.cwd, p);\n\t\t\tif (!existsSync(resolved) && !state.skillDiagnostics.some((d) => d.path === resolved)) {\n\t\t\t\tstate.skillDiagnostics.push({ type: \"error\", message: \"Skill path does not exist\", path: resolved });\n\t\t\t}\n\t\t}\n\t}\n\n\tconst promptPaths = state.noPromptTemplates\n\t\t? mergeResourcePaths(state.cwd, cliEnabledPrompts, state.additionalPromptTemplatePaths)\n\t\t: mergeResourcePaths(\n\t\t\t\tstate.cwd,\n\t\t\t\t[...cliEnabledPrompts, ...enabledPrompts, ...builtinEnabledPrompts],\n\t\t\t\tstate.additionalPromptTemplatePaths,\n\t\t\t);\n\n\tstate.lastPromptPaths = promptPaths;\n\tconst promptsStartedAt = Date.now();\n\tconst promptsSpan = startTimingSpan(\"DefaultResourceLoader.reload.updatePromptsFromPathsAsync\");\n\tawait updatePromptsFromPathsAsync(loader, promptPaths, metadataByPath);\n\tendTimingSpan(promptsSpan);\n\tawait yieldToEventLoopIfSlow(promptsStartedAt);\n\tfor (const p of state.additionalPromptTemplatePaths) {\n\t\tif (isLocalPath(p)) {\n\t\t\tconst resolved = resolveResourcePath(state.cwd, p);\n\t\t\tif (!existsSync(resolved) && !state.promptDiagnostics.some((d) => d.path === resolved)) {\n\t\t\t\tstate.promptDiagnostics.push({\n\t\t\t\t\ttype: \"error\",\n\t\t\t\t\tmessage: \"Prompt template path does not exist\",\n\t\t\t\t\tpath: resolved,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\n\tconst themePaths = state.noThemes\n\t\t? mergeResourcePaths(state.cwd, cliEnabledThemes, state.additionalThemePaths)\n\t\t: mergeResourcePaths(\n\t\t\t\tstate.cwd,\n\t\t\t\t[...cliEnabledThemes, ...enabledThemes, ...builtinEnabledThemes],\n\t\t\t\tstate.additionalThemePaths,\n\t\t\t);\n\n\tstate.lastThemePaths = themePaths;\n\tconst themesStartedAt = Date.now();\n\tconst themesSpan = startTimingSpan(\"DefaultResourceLoader.reload.updateThemesFromPathsAsync\");\n\tawait updateThemesFromPathsAsync(loader, themePaths, metadataByPath);\n\tendTimingSpan(themesSpan);\n\tawait yieldToEventLoopIfSlow(themesStartedAt);\n\tfor (const p of state.additionalThemePaths) {\n\t\tconst resolved = resolveResourcePath(state.cwd, p);\n\t\tif (!existsSync(resolved) && !state.themeDiagnostics.some((d) => d.path === resolved)) {\n\t\t\tstate.themeDiagnostics.push({ type: \"error\", message: \"Theme path does not exist\", path: resolved });\n\t\t}\n\t}\n\n\tconst contextFilesStartedAt = Date.now();\n\tconst contextFilesSpan = startTimingSpan(\"DefaultResourceLoader.reload.loadProjectContextFiles\");\n\tconst agentsFiles = {\n\t\tagentsFiles: state.noContextFiles\n\t\t\t? []\n\t\t\t: loadProjectContextFiles({\n\t\t\t\t\tcwd: state.cwd,\n\t\t\t\t\tagentDir: state.agentDir,\n\t\t\t\t\tprojectTrusted: state.settingsManager.isProjectTrusted(),\n\t\t\t\t}),\n\t};\n\tendTimingSpan(contextFilesSpan);\n\tawait yieldToEventLoopIfSlow(contextFilesStartedAt);\n\tconst resolvedAgentsFiles = state.agentsFilesOverride ? state.agentsFilesOverride(agentsFiles) : agentsFiles;\n\tstate.agentsFiles = resolvedAgentsFiles.agentsFiles;\n\n\tconst promptFilesStartedAt = Date.now();\n\tconst promptFilesSpan = startTimingSpan(\"DefaultResourceLoader.reload.resolvePromptFiles\");\n\tconst systemPromptSource = state.systemPromptSource ?? discoverSystemPromptFile(loader);\n\tconst baseSystemPrompt = resolvePromptInput(systemPromptSource, \"system prompt\");\n\tstate.systemPrompt = state.systemPromptOverride ? state.systemPromptOverride(baseSystemPrompt) : baseSystemPrompt;\n\tstate.systemPromptSourcePath = resolveExistingPromptSourcePath(systemPromptSource);\n\n\tconst discoveredAppend = discoverAppendSystemPromptFile(loader);\n\tconst appendSources = state.appendSystemPromptSource ?? (discoveredAppend ? [discoveredAppend] : []);\n\tconst baseAppend = appendSources\n\t\t.map((s) => resolvePromptInput(s, \"append system prompt\"))\n\t\t.filter((s): s is string => s !== undefined);\n\tstate.appendSystemPrompt = state.appendSystemPromptOverride\n\t\t? state.appendSystemPromptOverride(baseAppend)\n\t\t: baseAppend;\n\tstate.appendSystemPromptSourcePaths = resolveExistingPromptSourcePaths(appendSources);\n\tstate.loaded = true;\n\tendTimingSpan(promptFilesSpan);\n\tawait yieldToEventLoopIfSlow(promptFilesStartedAt);\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"sdk.d.ts","sourceRoot":"","sources":["../../src/core/sdk.ts"],"names":[],"mappings":"AAkCA,OAAO,KAAK,EAAE,yBAAyB,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAM1F,YAAY,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AACrE,cAAc,kBAAkB,CAAC;AACjC,YAAY,EAAE,yBAAyB,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AA+B1F;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,wBAAsB,kBAAkB,CAAC,OAAO,GAAE,yBAA8B,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAuVnH"}
1
+ {"version":3,"file":"sdk.d.ts","sourceRoot":"","sources":["../../src/core/sdk.ts"],"names":[],"mappings":"AAmCA,OAAO,KAAK,EAAE,yBAAyB,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAM1F,YAAY,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AACrE,cAAc,kBAAkB,CAAC;AACjC,YAAY,EAAE,yBAAyB,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AA+B1F;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,wBAAsB,kBAAkB,CAAC,OAAO,GAAE,yBAA8B,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAwVnH"}
package/dist/core/sdk.js CHANGED
@@ -8,6 +8,7 @@ import { restoreAnthropicReplayThinkingBlocks } from "./anthropic-thinking-guard
8
8
  import { formatNoModelsAvailableMessage } from "./auth-guidance.js";
9
9
  import { isGitHubCopilotModel, shouldApplyCodexFastMode, streamWithCodexFastMode, usesChatGptCodexTransport, withChatGptCodexTransportRouting, withCodexFastModePayload, withCodexFastModeStreamOptions, } from "./codex-fast-mode.js";
10
10
  import { DEFAULT_THINKING_LEVEL } from "./defaults.js";
11
+ import { withMandatoryResourceLoader } from "./mandatory-resource-loader.js";
11
12
  import { convertToLlm, repairOrphanToolResults } from "./messages.js";
12
13
  import { findInitialModel, resolveRestoredModelReference } from "./model-resolver.js";
13
14
  import { ModelRuntime } from "./model-runtime.js";
@@ -111,6 +112,7 @@ export async function createAgentSession(options = {}) {
111
112
  await resourceLoader.reload();
112
113
  time("resourceLoader.reload");
113
114
  }
115
+ resourceLoader = await withMandatoryResourceLoader(resourceLoader, cwd);
114
116
  // Check if session has existing data to restore
115
117
  const existingSession = sessionManager.buildSessionContext();
116
118
  const repairedMessages = repairOrphanToolResults(existingSession.messages, { repairTrailing: true });
@@ -1 +1 @@
1
- {"version":3,"file":"sdk.js","sourceRoot":"","sources":["../../src/core/sdk.ts"],"names":[],"mappings":"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","sourcesContent":["import { join } from \"node:path\";\nimport {\n\ttype Api,\n\tclampThinkingLevel,\n\ttype Message,\n\ttype Model,\n\ttype ProviderHeaders,\n\tstreamSimple,\n} from \"@bastani/pi-ai/compat\";\nimport { Agent, type AgentMessage, setDefaultStreamFn, type ThinkingLevel } from \"@earendil-works/pi-agent-core\";\nimport { getAgentDir } from \"../config.ts\";\nimport { resolvePath } from \"../utils/paths.ts\";\nimport { AgentSession } from \"./agent-session.ts\";\nimport { restoreAnthropicReplayThinkingBlocks } from \"./anthropic-thinking-guard.ts\";\nimport { formatNoModelsAvailableMessage } from \"./auth-guidance.ts\";\nimport {\n\tisGitHubCopilotModel,\n\tshouldApplyCodexFastMode,\n\tstreamWithCodexFastMode,\n\tusesChatGptCodexTransport,\n\twithChatGptCodexTransportRouting,\n\twithCodexFastModePayload,\n\twithCodexFastModeStreamOptions,\n} from \"./codex-fast-mode.ts\";\nimport { DEFAULT_THINKING_LEVEL } from \"./defaults.ts\";\nimport type { ExtensionRunner } from \"./extensions/index.ts\";\nimport { convertToLlm, repairOrphanToolResults } from \"./messages.ts\";\nimport { findInitialModel, resolveRestoredModelReference } from \"./model-resolver.ts\";\nimport { ModelRuntime } from \"./model-runtime.js\";\nimport { 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 { DefaultResourceLoader } from \"./resource-loader.ts\";\nimport type { CreateAgentSessionOptions, CreateAgentSessionResult } from \"./sdk-types.ts\";\nimport { getDefaultSessionDir, SessionManager } from \"./session-manager.ts\";\nimport { SettingsManager } from \"./settings-manager.ts\";\nimport { time } from \"./timings.ts\";\nimport { getDefaultToolNames } from \"./tools/index.ts\";\n\nexport type { ModelFallbackReason } from \"./model-resolver-types.ts\";\nexport * from \"./sdk-exports.ts\";\nexport type { 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\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\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\tif (!resourceLoader) {\n\t\tresourceLoader = new DefaultResourceLoader({\n\t\t\tcwd,\n\t\t\tagentDir,\n\t\t\tsettingsManager,\n\t\t});\n\t\tawait resourceLoader.reload();\n\t\ttime(\"resourceLoader.reload\");\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 = options.tools ?? (options.noTools === \"all\" ? [] : undefined);\n\tconst initialActiveToolNames: string[] = options.tools\n\t\t? [...options.tools]\n\t\t: options.noTools\n\t\t\t? []\n\t\t\t: [...(configuredDefaultToolNames ?? getDefaultToolNames())];\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) => {\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\treturn { ...msg, content: filteredContent };\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn msg;\n\t\t});\n\t\tlastConvertedLlmMessages = filtered;\n\t\treturn filtered;\n\t};\n\n\tconst extensionRunnerRef: { current?: ExtensionRunner } = {};\n\tconst isCodexFastModeEnabled = (requestModel: Model<Api>): boolean =>\n\t\tshouldApplyCodexFastMode(\n\t\t\trequestModel,\n\t\t\tsettingsManager.getCodexFastModeSettings(),\n\t\t\toptions.orchestrationContext,\n\t\t\tmodelRuntime.getCredentialSnapshot(\"github-copilot\"),\n\t\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},\n\t\tconvertToLlm: convertToLlmWithBlockImages,\n\t\tstreamFn: async (model, context, streamOptions) => {\n\t\t\tconst authResult = await modelRuntime.getRequestAuth(model);\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 fastModeEnabled = isCodexFastModeEnabled(model);\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\tif (fastModeEnabled && !isGitHubCopilotModel(model) && !usesExtensionStream && !authResult) {\n\t\t\t\tthrow new Error(`No API key found for \"${model.provider}\"`);\n\t\t\t}\n\t\t\tconst codexFastModeStreamOptions = withCodexFastModeStreamOptions(\n\t\t\t\trequestModel,\n\t\t\t\t{\n\t\t\t\t\t...streamOptions,\n\t\t\t\t\tapiKey: auth.apiKey,\n\t\t\t\t\tenv: auth.env || streamOptions?.env ? { ...auth.env, ...streamOptions?.env } : undefined,\n\t\t\t\t\ttimeoutMs,\n\t\t\t\t\twebsocketConnectTimeoutMs,\n\t\t\t\t\tstreamDeadlineMs,\n\t\t\t\t\tmaxRetries: streamOptions?.maxRetries ?? providerRetrySettings.maxRetries,\n\t\t\t\t\tmaxRetryDelayMs: streamOptions?.maxRetryDelayMs ?? providerRetrySettings.maxRetryDelayMs,\n\t\t\t\t\theaders: transportHeaders,\n\t\t\t\t},\n\t\t\t\tfastModeEnabled,\n\t\t\t);\n\t\t\tif (usesExtensionStream) {\n\t\t\t\treturn modelRuntime.streamSimple(requestModel, context, codexFastModeStreamOptions);\n\t\t\t}\n\t\t\tif (fastModeEnabled && !isGitHubCopilotModel(requestModel)) {\n\t\t\t\treturn streamWithCodexFastMode(requestModel, context, codexFastModeStreamOptions);\n\t\t\t}\n\t\t\tconst transportOptions =\n\t\t\t\tusesChatGptCodexTransport(requestModel) && codexFastModeStreamOptions\n\t\t\t\t\t? withChatGptCodexTransportRouting(requestModel, codexFastModeStreamOptions, false)\n\t\t\t\t\t: codexFastModeStreamOptions;\n\t\t\treturn modelRuntime.streamSimple(requestModel, context, transportOptions);\n\t\t},\n\t\tonPayload: async (payload, model) => {\n\t\t\tconst fastModeEnabled = isCodexFastModeEnabled(model);\n\t\t\tconst guardedPayload = withCodexFastModePayload(payload, fastModeEnabled, model);\n\t\t\tconst sourceMessages = lastConvertedLlmMessages;\n\t\t\tconst replayGuardedPayload = sourceMessages\n\t\t\t\t? restoreAnthropicReplayThinkingBlocks(guardedPayload, sourceMessages, model)\n\t\t\t\t: guardedPayload;\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\treturn sanitizeOpenAIResponsesPayload(finalPayload, model);\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 messages if session has existing data\n\tif (hasExistingSession) {\n\t\tagent.state.messages = existingMessages;\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 session = new AgentSession({\n\t\tagent,\n\t\tsessionManager,\n\t\tsettingsManager,\n\t\tcwd,\n\t\tscopedModels: options.scopedModels,\n\t\tfallbackModels: options.fallbackModels ?? settingsManager.getFallbackModels(),\n\t\tresourceLoader,\n\t\tcustomTools: options.customTools,\n\t\tmodelRuntime,\n\t\tinitialActiveToolNames,\n\t\tallowedToolNames,\n\t\texcludedToolNames: options.excludedTools,\n\t\textensionRunnerRef,\n\t\tsessionStartEvent: options.sessionStartEvent,\n\t\torchestrationContext: options.orchestrationContext,\n\t\tsubagentPolicy: options.subagentPolicy,\n\t\tsystemPromptTransform: options.systemPromptTransform,\n\t});\n\tconst extensionsResult = resourceLoader.getExtensions();\n\n\treturn {\n\t\tsession,\n\t\textensionsResult,\n\t\tmodelFallbackMessage,\n\t\tmodelFallbackReason,\n\t};\n}\n"]}
1
+ {"version":3,"file":"sdk.js","sourceRoot":"","sources":["../../src/core/sdk.ts"],"names":[],"mappings":"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","sourcesContent":["import { join } from \"node:path\";\nimport {\n\ttype Api,\n\tclampThinkingLevel,\n\ttype Message,\n\ttype Model,\n\ttype ProviderHeaders,\n\tstreamSimple,\n} from \"@bastani/pi-ai/compat\";\nimport { Agent, type AgentMessage, setDefaultStreamFn, type ThinkingLevel } from \"@earendil-works/pi-agent-core\";\nimport { getAgentDir } from \"../config.ts\";\nimport { resolvePath } from \"../utils/paths.ts\";\nimport { AgentSession } from \"./agent-session.ts\";\nimport { restoreAnthropicReplayThinkingBlocks } from \"./anthropic-thinking-guard.ts\";\nimport { formatNoModelsAvailableMessage } from \"./auth-guidance.ts\";\nimport {\n\tisGitHubCopilotModel,\n\tshouldApplyCodexFastMode,\n\tstreamWithCodexFastMode,\n\tusesChatGptCodexTransport,\n\twithChatGptCodexTransportRouting,\n\twithCodexFastModePayload,\n\twithCodexFastModeStreamOptions,\n} from \"./codex-fast-mode.ts\";\nimport { DEFAULT_THINKING_LEVEL } from \"./defaults.ts\";\nimport type { ExtensionRunner } from \"./extensions/index.ts\";\nimport { withMandatoryResourceLoader } 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 { 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 { DefaultResourceLoader } from \"./resource-loader.ts\";\nimport type { CreateAgentSessionOptions, CreateAgentSessionResult } from \"./sdk-types.ts\";\nimport { getDefaultSessionDir, SessionManager } from \"./session-manager.ts\";\nimport { SettingsManager } from \"./settings-manager.ts\";\nimport { time } from \"./timings.ts\";\nimport { getDefaultToolNames } from \"./tools/index.ts\";\n\nexport type { ModelFallbackReason } from \"./model-resolver-types.ts\";\nexport * from \"./sdk-exports.ts\";\nexport type { 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\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\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\tif (!resourceLoader) {\n\t\tresourceLoader = new DefaultResourceLoader({\n\t\t\tcwd,\n\t\t\tagentDir,\n\t\t\tsettingsManager,\n\t\t});\n\t\tawait resourceLoader.reload();\n\t\ttime(\"resourceLoader.reload\");\n\t}\n\tresourceLoader = await withMandatoryResourceLoader(resourceLoader, cwd);\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 = options.tools ?? (options.noTools === \"all\" ? [] : undefined);\n\tconst initialActiveToolNames: string[] = options.tools\n\t\t? [...options.tools]\n\t\t: options.noTools\n\t\t\t? []\n\t\t\t: [...(configuredDefaultToolNames ?? getDefaultToolNames())];\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) => {\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\treturn { ...msg, content: filteredContent };\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn msg;\n\t\t});\n\t\tlastConvertedLlmMessages = filtered;\n\t\treturn filtered;\n\t};\n\n\tconst extensionRunnerRef: { current?: ExtensionRunner } = {};\n\tconst isCodexFastModeEnabled = (requestModel: Model<Api>): boolean =>\n\t\tshouldApplyCodexFastMode(\n\t\t\trequestModel,\n\t\t\tsettingsManager.getCodexFastModeSettings(),\n\t\t\toptions.orchestrationContext,\n\t\t\tmodelRuntime.getCredentialSnapshot(\"github-copilot\"),\n\t\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},\n\t\tconvertToLlm: convertToLlmWithBlockImages,\n\t\tstreamFn: async (model, context, streamOptions) => {\n\t\t\tconst authResult = await modelRuntime.getRequestAuth(model);\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 fastModeEnabled = isCodexFastModeEnabled(model);\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\tif (fastModeEnabled && !isGitHubCopilotModel(model) && !usesExtensionStream && !authResult) {\n\t\t\t\tthrow new Error(`No API key found for \"${model.provider}\"`);\n\t\t\t}\n\t\t\tconst codexFastModeStreamOptions = withCodexFastModeStreamOptions(\n\t\t\t\trequestModel,\n\t\t\t\t{\n\t\t\t\t\t...streamOptions,\n\t\t\t\t\tapiKey: auth.apiKey,\n\t\t\t\t\tenv: auth.env || streamOptions?.env ? { ...auth.env, ...streamOptions?.env } : undefined,\n\t\t\t\t\ttimeoutMs,\n\t\t\t\t\twebsocketConnectTimeoutMs,\n\t\t\t\t\tstreamDeadlineMs,\n\t\t\t\t\tmaxRetries: streamOptions?.maxRetries ?? providerRetrySettings.maxRetries,\n\t\t\t\t\tmaxRetryDelayMs: streamOptions?.maxRetryDelayMs ?? providerRetrySettings.maxRetryDelayMs,\n\t\t\t\t\theaders: transportHeaders,\n\t\t\t\t},\n\t\t\t\tfastModeEnabled,\n\t\t\t);\n\t\t\tif (usesExtensionStream) {\n\t\t\t\treturn modelRuntime.streamSimple(requestModel, context, codexFastModeStreamOptions);\n\t\t\t}\n\t\t\tif (fastModeEnabled && !isGitHubCopilotModel(requestModel)) {\n\t\t\t\treturn streamWithCodexFastMode(requestModel, context, codexFastModeStreamOptions);\n\t\t\t}\n\t\t\tconst transportOptions =\n\t\t\t\tusesChatGptCodexTransport(requestModel) && codexFastModeStreamOptions\n\t\t\t\t\t? withChatGptCodexTransportRouting(requestModel, codexFastModeStreamOptions, false)\n\t\t\t\t\t: codexFastModeStreamOptions;\n\t\t\treturn modelRuntime.streamSimple(requestModel, context, transportOptions);\n\t\t},\n\t\tonPayload: async (payload, model) => {\n\t\t\tconst fastModeEnabled = isCodexFastModeEnabled(model);\n\t\t\tconst guardedPayload = withCodexFastModePayload(payload, fastModeEnabled, model);\n\t\t\tconst sourceMessages = lastConvertedLlmMessages;\n\t\t\tconst replayGuardedPayload = sourceMessages\n\t\t\t\t? restoreAnthropicReplayThinkingBlocks(guardedPayload, sourceMessages, model)\n\t\t\t\t: guardedPayload;\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\treturn sanitizeOpenAIResponsesPayload(finalPayload, model);\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 messages if session has existing data\n\tif (hasExistingSession) {\n\t\tagent.state.messages = existingMessages;\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 session = new AgentSession({\n\t\tagent,\n\t\tsessionManager,\n\t\tsettingsManager,\n\t\tcwd,\n\t\tscopedModels: options.scopedModels,\n\t\tfallbackModels: options.fallbackModels ?? settingsManager.getFallbackModels(),\n\t\tresourceLoader,\n\t\tcustomTools: options.customTools,\n\t\tmodelRuntime,\n\t\tinitialActiveToolNames,\n\t\tallowedToolNames,\n\t\texcludedToolNames: options.excludedTools,\n\t\textensionRunnerRef,\n\t\tsessionStartEvent: options.sessionStartEvent,\n\t\torchestrationContext: options.orchestrationContext,\n\t\tsubagentPolicy: options.subagentPolicy,\n\t\tsystemPromptTransform: options.systemPromptTransform,\n\t});\n\tconst extensionsResult = resourceLoader.getExtensions();\n\n\treturn {\n\t\tsession,\n\t\textensionsResult,\n\t\tmodelFallbackMessage,\n\t\tmodelFallbackReason,\n\t};\n}\n"]}
@@ -1,4 +1,4 @@
1
- import type { ScrollViewScrollbar } from "@earendil-works/pi-tui";
1
+ import type { ScrollViewScrollbar, TerminalCapabilities } from "@earendil-works/pi-tui";
2
2
  import type { FullscreenExitOutput, MermaidRenderingMode, WarningSettings } from "./settings-types.ts";
3
3
  interface SettingsManagerUiAccessors {
4
4
  getShowImages(): boolean;
@@ -46,6 +46,9 @@ interface SettingsManagerUiAccessors {
46
46
  setFullscreenScrollbar(mode: ScrollViewScrollbar): void;
47
47
  getFullscreenExitOutput(): FullscreenExitOutput;
48
48
  setFullscreenExitOutput(output: FullscreenExitOutput): void;
49
+ getFullscreenCopyOnSelect(): boolean;
50
+ setFullscreenCopyOnSelect(enabled: boolean): void;
51
+ getTerminalCapabilityOverrides(): Partial<TerminalCapabilities>;
49
52
  }
50
53
  declare module "./settings-manager-core.ts" {
51
54
  interface SettingsManager extends SettingsManagerUiAccessors {
@@ -1 +1 @@
1
- {"version":3,"file":"settings-manager-ui-accessors.d.ts","sourceRoot":"","sources":["../../src/core/settings-manager-ui-accessors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAIlE,OAAO,KAAK,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEvG,UAAU,0BAA0B;IACnC,aAAa,IAAI,OAAO,CAAC;IACzB,aAAa,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAAC;IACnC,kBAAkB,IAAI,MAAM,CAAC;IAC7B,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC,gBAAgB,IAAI,OAAO,CAAC;IAC5B,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IACzC,uBAAuB,IAAI,OAAO,CAAC;IACnC,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IAChD,kBAAkB,IAAI,OAAO,CAAC;IAC9B,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IAC3C,cAAc,IAAI,OAAO,CAAC;IAC1B,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IACvC,gBAAgB,IAAI,MAAM,EAAE,GAAG,SAAS,CAAC;IACzC,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,SAAS,GAAG,IAAI,CAAC;IACvD,qBAAqB,IAAI,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;IAClD,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAC9D,iBAAiB,IAAI,SAAS,GAAG,UAAU,GAAG,WAAW,GAAG,cAAc,GAAG,KAAK,CAAC;IACnF,iBAAiB,CAAC,IAAI,EAAE,SAAS,GAAG,UAAU,GAAG,WAAW,GAAG,cAAc,GAAG,KAAK,GAAG,IAAI,CAAC;IAC7F,qBAAqB,IAAI,OAAO,CAAC;IACjC,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IAC9C,iBAAiB,IAAI,MAAM,CAAC;IAC5B,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACzC,YAAY,IAAI,CAAC,GAAG,CAAC,CAAC;IACtB,YAAY,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;IACnC,yBAAyB,IAAI,MAAM,CAAC;IACpC,yBAAyB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IACpD,kBAAkB,IAAI,MAAM,CAAC;IAC7B,uBAAuB,IAAI,oBAAoB,CAAC;IAChD,uBAAuB,CAAC,IAAI,EAAE,oBAAoB,GAAG,IAAI,CAAC;IAC1D,wBAAwB,IAAI,OAAO,CAAC;IACpC,wBAAwB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IACjD,WAAW,IAAI,eAAe,CAAC;IAC/B,WAAW,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI,CAAC;IAC7C,wBAAwB,IAAI;QAAE,IAAI,EAAE,OAAO,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAA;KAAE,CAAC;IACjE,wBAAwB,CAAC,QAAQ,EAAE,OAAO,CAAC;QAAE,IAAI,EAAE,OAAO,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAA;KAAE,CAAC,GAAG,IAAI,CAAC;IACxF,sBAAsB,IAAI,mBAAmB,CAAC;IAC9C,sBAAsB,CAAC,IAAI,EAAE,mBAAmB,GAAG,IAAI,CAAC;IACxD,uBAAuB,IAAI,oBAAoB,CAAC;IAChD,uBAAuB,CAAC,MAAM,EAAE,oBAAoB,GAAG,IAAI,CAAC;CAC5D;AAED,OAAO,QAAQ,4BAA4B,CAAC;IAC3C,UAAU,eAAgB,SAAQ,0BAA0B;KAAG;CAC/D"}
1
+ {"version":3,"file":"settings-manager-ui-accessors.d.ts","sourceRoot":"","sources":["../../src/core/settings-manager-ui-accessors.ts"],"names":[],"mappings":"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"}
@@ -140,6 +140,28 @@ const uiAccessors = {
140
140
  state.markModified("fullscreenExitOutput");
141
141
  state.save();
142
142
  },
143
+ getFullscreenCopyOnSelect() {
144
+ return settingsInternals(this).settings.fullscreenCopyOnSelect !== false;
145
+ },
146
+ setFullscreenCopyOnSelect(enabled) {
147
+ const state = settingsInternals(this);
148
+ state.globalSettings.fullscreenCopyOnSelect = enabled;
149
+ state.markModified("fullscreenCopyOnSelect");
150
+ state.save();
151
+ },
152
+ getTerminalCapabilityOverrides() {
153
+ const terminal = settingsInternals(this).settings.terminal;
154
+ const overrides = {};
155
+ if (typeof terminal?.hyperlinks === "boolean")
156
+ overrides.hyperlinks = terminal.hyperlinks;
157
+ if (terminal?.images === "kitty" || terminal?.images === "iterm2")
158
+ overrides.images = terminal.images;
159
+ else if (terminal?.images === false)
160
+ overrides.images = null;
161
+ if (typeof terminal?.trueColor === "boolean")
162
+ overrides.trueColor = terminal.trueColor;
163
+ return overrides;
164
+ },
143
165
  getEditorPaddingX() {
144
166
  return settingsInternals(this).settings.editorPaddingX ?? 0;
145
167
  },