@bastani/atomic 0.9.53-alpha.1 → 0.9.54-alpha.1

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 (170) hide show
  1. package/CHANGELOG.md +54 -0
  2. package/dist/builtin/intercom/package.json +1 -1
  3. package/dist/builtin/mcp/package.json +1 -1
  4. package/dist/builtin/subagents/package.json +1 -1
  5. package/dist/builtin/web-access/package.json +1 -1
  6. package/dist/builtin/workflows/package.json +1 -1
  7. package/dist/core/agent-session-auto-compaction.d.ts.map +1 -1
  8. package/dist/core/agent-session-auto-compaction.js +2 -1
  9. package/dist/core/agent-session-auto-compaction.js.map +1 -1
  10. package/dist/core/agent-session-compaction.d.ts.map +1 -1
  11. package/dist/core/agent-session-compaction.js +2 -1
  12. package/dist/core/agent-session-compaction.js.map +1 -1
  13. package/dist/core/agent-session-extension-bindings.d.ts.map +1 -1
  14. package/dist/core/agent-session-extension-bindings.js +2 -1
  15. package/dist/core/agent-session-extension-bindings.js.map +1 -1
  16. package/dist/core/agent-session-models.d.ts +17 -1
  17. package/dist/core/agent-session-models.d.ts.map +1 -1
  18. package/dist/core/agent-session-models.js +19 -0
  19. package/dist/core/agent-session-models.js.map +1 -1
  20. package/dist/core/agent-session-post-tool-compaction.d.ts.map +1 -1
  21. package/dist/core/agent-session-post-tool-compaction.js +2 -1
  22. package/dist/core/agent-session-post-tool-compaction.js.map +1 -1
  23. package/dist/core/agent-session-summary.d.ts.map +1 -1
  24. package/dist/core/agent-session-summary.js +2 -1
  25. package/dist/core/agent-session-summary.js.map +1 -1
  26. package/dist/core/agent-session-tree.d.ts.map +1 -1
  27. package/dist/core/agent-session-tree.js +2 -1
  28. package/dist/core/agent-session-tree.js.map +1 -1
  29. package/dist/core/exec.d.ts +9 -1
  30. package/dist/core/exec.d.ts.map +1 -1
  31. package/dist/core/exec.js +109 -74
  32. package/dist/core/exec.js.map +1 -1
  33. package/dist/core/extensions/loader-virtual-modules.js +2 -2
  34. package/dist/core/extensions/loader-virtual-modules.js.map +1 -1
  35. package/dist/core/model-resolver-patterns.d.ts.map +1 -1
  36. package/dist/core/model-resolver-patterns.js +15 -9
  37. package/dist/core/model-resolver-patterns.js.map +1 -1
  38. package/dist/core/package-manager-auto-resources.d.ts.map +1 -1
  39. package/dist/core/package-manager-auto-resources.js +3 -2
  40. package/dist/core/package-manager-auto-resources.js.map +1 -1
  41. package/dist/core/package-manager-git.d.ts +1 -1
  42. package/dist/core/package-manager-git.d.ts.map +1 -1
  43. package/dist/core/package-manager-git.js +12 -1
  44. package/dist/core/package-manager-git.js.map +1 -1
  45. package/dist/core/package-manager-npm.d.ts +1 -1
  46. package/dist/core/package-manager-npm.d.ts.map +1 -1
  47. package/dist/core/package-manager-npm.js +8 -4
  48. package/dist/core/package-manager-npm.js.map +1 -1
  49. package/dist/core/package-manager-operations.d.ts.map +1 -1
  50. package/dist/core/package-manager-operations.js +33 -8
  51. package/dist/core/package-manager-operations.js.map +1 -1
  52. package/dist/core/package-manager-resolver.d.ts.map +1 -1
  53. package/dist/core/package-manager-resolver.js +22 -4
  54. package/dist/core/package-manager-resolver.js.map +1 -1
  55. package/dist/core/package-manager-resource-accumulator.d.ts.map +1 -1
  56. package/dist/core/package-manager-resource-accumulator.js +4 -4
  57. package/dist/core/package-manager-resource-accumulator.js.map +1 -1
  58. package/dist/core/package-manager-source.js +5 -5
  59. package/dist/core/package-manager-source.js.map +1 -1
  60. package/dist/core/package-manager-types.d.ts +5 -1
  61. package/dist/core/package-manager-types.d.ts.map +1 -1
  62. package/dist/core/package-manager-types.js.map +1 -1
  63. package/dist/core/package-manager.d.ts.map +1 -1
  64. package/dist/core/package-manager.js +3 -3
  65. package/dist/core/package-manager.js.map +1 -1
  66. package/dist/core/project-trust.d.ts.map +1 -1
  67. package/dist/core/project-trust.js +2 -1
  68. package/dist/core/project-trust.js.map +1 -1
  69. package/dist/core/prompt-templates-async.d.ts.map +1 -1
  70. package/dist/core/prompt-templates-async.js +4 -9
  71. package/dist/core/prompt-templates-async.js.map +1 -1
  72. package/dist/core/prompt-templates.d.ts.map +1 -1
  73. package/dist/core/prompt-templates.js +4 -12
  74. package/dist/core/prompt-templates.js.map +1 -1
  75. package/dist/core/resource-loader-extensions.d.ts.map +1 -1
  76. package/dist/core/resource-loader-extensions.js +8 -7
  77. package/dist/core/resource-loader-extensions.js.map +1 -1
  78. package/dist/core/resource-loader-paths.js +5 -5
  79. package/dist/core/resource-loader-paths.js.map +1 -1
  80. package/dist/core/resource-loader-source-info.d.ts +0 -1
  81. package/dist/core/resource-loader-source-info.d.ts.map +1 -1
  82. package/dist/core/resource-loader-source-info.js +6 -17
  83. package/dist/core/resource-loader-source-info.js.map +1 -1
  84. package/dist/core/sdk.d.ts.map +1 -1
  85. package/dist/core/sdk.js +3 -0
  86. package/dist/core/sdk.js.map +1 -1
  87. package/dist/core/session-manager-core.js +2 -2
  88. package/dist/core/session-manager-core.js.map +1 -1
  89. package/dist/core/session-manager-list.js +2 -2
  90. package/dist/core/session-manager-list.js.map +1 -1
  91. package/dist/core/skills-async.d.ts.map +1 -1
  92. package/dist/core/skills-async.js +5 -10
  93. package/dist/core/skills-async.js.map +1 -1
  94. package/dist/core/skills.d.ts.map +1 -1
  95. package/dist/core/skills.js +5 -13
  96. package/dist/core/skills.js.map +1 -1
  97. package/dist/core/source-info.d.ts +2 -0
  98. package/dist/core/source-info.d.ts.map +1 -1
  99. package/dist/core/source-info.js +5 -0
  100. package/dist/core/source-info.js.map +1 -1
  101. package/dist/core/tool-loadout.d.ts +4 -0
  102. package/dist/core/tool-loadout.d.ts.map +1 -1
  103. package/dist/core/tool-loadout.js +7 -1
  104. package/dist/core/tool-loadout.js.map +1 -1
  105. package/dist/core/tools/render-utils.d.ts.map +1 -1
  106. package/dist/core/tools/render-utils.js +2 -7
  107. package/dist/core/tools/render-utils.js.map +1 -1
  108. package/dist/core/trust-manager.d.ts.map +1 -1
  109. package/dist/core/trust-manager.js +15 -9
  110. package/dist/core/trust-manager.js.map +1 -1
  111. package/dist/extensions/codemode/tool.d.ts.map +1 -1
  112. package/dist/extensions/codemode/tool.js +33 -8
  113. package/dist/extensions/codemode/tool.js.map +1 -1
  114. package/dist/main.d.ts.map +1 -1
  115. package/dist/main.js +20 -3
  116. package/dist/main.js.map +1 -1
  117. package/dist/modes/interactive/components/config-selector-list.d.ts.map +1 -1
  118. package/dist/modes/interactive/components/config-selector-list.js +2 -13
  119. package/dist/modes/interactive/components/config-selector-list.js.map +1 -1
  120. package/dist/modes/interactive/components/session-selector-list.js +2 -2
  121. package/dist/modes/interactive/components/session-selector-list.js.map +1 -1
  122. package/dist/modes/interactive/components/session-selector-tree.d.ts.map +1 -1
  123. package/dist/modes/interactive/components/session-selector-tree.js +4 -6
  124. package/dist/modes/interactive/components/session-selector-tree.js.map +1 -1
  125. package/dist/modes/interactive/components/session-selector-utils.d.ts +2 -1
  126. package/dist/modes/interactive/components/session-selector-utils.d.ts.map +1 -1
  127. package/dist/modes/interactive/components/session-selector-utils.js +5 -13
  128. package/dist/modes/interactive/components/session-selector-utils.js.map +1 -1
  129. package/dist/modes/interactive/components/tree-selector-content.d.ts.map +1 -1
  130. package/dist/modes/interactive/components/tree-selector-content.js +2 -6
  131. package/dist/modes/interactive/components/tree-selector-content.js.map +1 -1
  132. package/dist/modes/interactive/interactive-mode-base.d.ts +2 -0
  133. package/dist/modes/interactive/interactive-mode-base.d.ts.map +1 -1
  134. package/dist/modes/interactive/interactive-mode-base.js +4 -0
  135. package/dist/modes/interactive/interactive-mode-base.js.map +1 -1
  136. package/dist/modes/interactive/interactive-mode-surface.d.ts +1 -0
  137. package/dist/modes/interactive/interactive-mode-surface.d.ts.map +1 -1
  138. package/dist/modes/interactive/interactive-mode-surface.js.map +1 -1
  139. package/dist/modes/interactive/interactive-mode-types.d.ts +6 -0
  140. package/dist/modes/interactive/interactive-mode-types.d.ts.map +1 -1
  141. package/dist/modes/interactive/interactive-mode-types.js.map +1 -1
  142. package/dist/modes/interactive/interactive-resource-rendering.js +1 -1
  143. package/dist/modes/interactive/interactive-resource-rendering.js.map +1 -1
  144. package/dist/modes/interactive/interactive-startup.d.ts.map +1 -1
  145. package/dist/modes/interactive/interactive-startup.js +15 -8
  146. package/dist/modes/interactive/interactive-startup.js.map +1 -1
  147. package/dist/modes/interactive/interactive-tui.d.ts +1 -0
  148. package/dist/modes/interactive/interactive-tui.d.ts.map +1 -1
  149. package/dist/modes/interactive/interactive-tui.js +1 -1
  150. package/dist/modes/interactive/interactive-tui.js.map +1 -1
  151. package/dist/package-manager-cli.d.ts.map +1 -1
  152. package/dist/package-manager-cli.js +3 -0
  153. package/dist/package-manager-cli.js.map +1 -1
  154. package/dist/utils/ansi.d.ts.map +1 -1
  155. package/dist/utils/ansi.js +5 -2
  156. package/dist/utils/ansi.js.map +1 -1
  157. package/dist/utils/git.d.ts +1 -1
  158. package/dist/utils/git.d.ts.map +1 -1
  159. package/dist/utils/git.js.map +1 -1
  160. package/dist/utils/image-resize-core.d.ts.map +1 -1
  161. package/dist/utils/image-resize-core.js +5 -3
  162. package/dist/utils/image-resize-core.js.map +1 -1
  163. package/dist/utils/paths.d.ts +14 -0
  164. package/dist/utils/paths.d.ts.map +1 -1
  165. package/dist/utils/paths.js +39 -1
  166. package/dist/utils/paths.js.map +1 -1
  167. package/docs/extensions/api-reference.md +4 -2
  168. package/docs/packages.md +2 -0
  169. package/npm-shrinkwrap.json +32 -32
  170. package/package.json +3 -3
@@ -1 +1 @@
1
- {"version":3,"file":"resource-loader-extensions.js","sourceRoot":"","sources":["../../src/core/resource-loader-extensions.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EAAE,wBAAwB,EAAE,oBAAoB,EAAiC,MAAM,wBAAwB,CAAC;AAGvH,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAEnE,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACxE,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE9D,SAAS,wBAAwB,CAAC,MAA6B,EAAE,IAAY;IAC5E,OAAO,eAAe,CAAC,IAAI,CAAC;QAC3B,CAAC,CAAC,IAAI;QACN,CAAC,CAAC,WAAW,CAAC,IAAI,EAAE,iBAAiB,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,sBAAsB,EAAE,IAAI,EAAE,CAAC,CAAC;AACvF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACvC,MAA6B,EAC7B,KAAe,EACf,wBAAkD,EAClD,2BAA2E,EAC3E,OAA0B;IAE1B,MAAM,KAAK,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;IACxC,MAAM,MAAM,GAAG,MAAM,oBAAoB,CACxC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,CAAC,EAC7D,KAAK,CAAC,GAAG,EACT,KAAK,CAAC,QAAQ,EACd,wBAAwB,EACxB,OAAO,EACP,2BAA2B,CAC3B,CAAC;IACF,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,CAAC,EAAE,CAAC;QACjF,MAAM,OAAO,GAAG,KAAK,CAAC,kBAAkB,CAAC,IAAI,CAC5C,CAAC,KAAK,EAAE,EAAE,CACT,OAAO,KAAK,KAAK,UAAU,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,MAAM,CAAC,CACtG,CAAC;QACF,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,UAAU,EAAE,CAAC;YAC/C,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,+BAA+B,IAAI,EAAE,EAAE,CAAC,CAAC;YAC3E,SAAS;QACV,CAAC;QACD,IAAI,CAAC;YACJ,MAAM,SAAS,GAAG,MAAM,wBAAwB,CAC/C,OAAO,CAAC,OAAO,EACf,KAAK,CAAC,GAAG,EACT,KAAK,CAAC,QAAQ,EACd,MAAM,CAAC,OAAO,EACd,IAAI,EACJ,wBAAwB,EACxB,2BAA2B,CAC3B,CAAC;YACF,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC;YACxB,SAAS,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,KAAK,IAAI,CAAC;YACrD,IAAI,OAAO,CAAC,OAAO;gBAAE,SAAS,CAAC,UAAU,CAAC,mBAAmB,GAAG,SAAS,CAAC;YAC1E,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACnC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,IAAI,KAAK,YAAY,KAAK,IAAI,MAAM,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,gBAAgB;gBAAE,MAAM,KAAK,CAAC;YAC9F,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,0BAA0B,EAAE,CAAC,CAAC;QAC1G,CAAC;IACF,CAAC;IACD,OAAO,MAAM,CAAC;AACf,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAC1C,MAA6B,EAC7B,cAAwB,EACxB,kBAAoD,EACpD,wBAAkD,EAClD,2BAA2E;IAE3E,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACzB,MAAM,kBAAkB,GAAG,eAAe,CAAC,6CAA6C,CAAC,CAAC;QAC1F,MAAM,gBAAgB,GAAG,MAAM,kBAAkB,CAChD,MAAM,EACN,cAAc,EACd,wBAAwB,EACxB,2BAA2B,CAC3B,CAAC;QACF,aAAa,CAAC,kBAAkB,CAAC,CAAC;QAClC,MAAM,oBAAoB,GAAG,eAAe,CAAC,2DAA2D,CAAC,CAAC;QAC1G,MAAM,gBAAgB,GAAG,MAAM,sBAAsB,CACpD,MAAM,EACN,gBAAgB,CAAC,OAAO,EACxB,wBAAwB,EACxB,2BAA2B,CAC3B,CAAC;QACF,aAAa,CAAC,oBAAoB,CAAC,CAAC;QACpC,gBAAgB,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAAC;QACjE,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;QACzD,OAAO,gBAAgB,CAAC;IACzB,CAAC;IAED,MAAM,eAAe,GAAG,IAAI,GAAG,CAC9B,kBAAkB,CAAC,UAAU;SAC3B,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;SAC7D,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC,CACzD,CAAC;IACF,MAAM,kBAAkB,GAAG,IAAI,GAAG,CACjC,kBAAkB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,wBAAwB,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CACtF,CAAC;IACF,MAAM,cAAc,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;QACrD,MAAM,YAAY,GAAG,wBAAwB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAC5D,OAAO,CAAC,eAAe,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IACpF,CAAC,CAAC,CAAC;IACH,MAAM,kBAAkB,GAAG,eAAe,CAAC,6CAA6C,CAAC,CAAC;IAC1F,MAAM,mBAAmB,GAAG,MAAM,kBAAkB,CACnD,MAAM,EACN,cAAc,EACd,wBAAwB,EACxB,2BAA2B,EAC3B,kBAAkB,CAAC,OAAO,CAC1B,CAAC;IACF,aAAa,CAAC,kBAAkB,CAAC,CAAC;IAClC,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,eAAe,CAAC,CAAC;IAC9C,KAAK,MAAM,SAAS,IAAI,mBAAmB,CAAC,UAAU,EAAE,CAAC;QACxD,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;IACrD,CAAC;IAED,MAAM,gBAAgB,GAAG,kBAAkB,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC;IACpH,MAAM,iBAAiB,GAAG,cAAc;SACtC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,wBAAwB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;SACvE,MAAM,CAAC,CAAC,SAAS,EAA0B,EAAE,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC;IACzE,iBAAiB,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC,CAAC;IAE5C,MAAM,gBAAgB,GAAyB;QAC9C,UAAU,EAAE,iBAAiB;QAC7B,MAAM,EAAE,CAAC,GAAG,kBAAkB,CAAC,MAAM,EAAE,GAAG,mBAAmB,CAAC,MAAM,CAAC;QACrE,QAAQ,EAAE,CAAC,GAAG,CAAC,kBAAkB,CAAC,QAAQ,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,mBAAmB,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;QAC3F,OAAO,EAAE,kBAAkB,CAAC,OAAO;KACnC,CAAC;IACF,OAAO,gBAAgB,CAAC;AACzB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC3C,MAA6B,EAC7B,OAAyB,EACzB,wBAAkD,EAClD,2BAA2E;IAK3E,MAAM,KAAK,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;IACxC,MAAM,UAAU,GAAgB,EAAE,CAAC;IACnC,MAAM,MAAM,GAA2C,EAAE,CAAC;IAE1D,KAAK,MAAM,CAAC,KAAK,EAAE,eAAe,CAAC,IAAI,KAAK,CAAC,kBAAkB,CAAC,OAAO,EAAE,EAAE,CAAC;QAC3E,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YACf,MAAM,gBAAgB,EAAE,CAAC;QAC1B,CAAC;QACD,MAAM,UAAU,GAAG,OAAO,eAAe,KAAK,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC;QACvF,IAAI,UAAU,EAAE,OAAO;YAAE,SAAS;QAClC,MAAM,OAAO,GAAG,OAAO,eAAe,KAAK,UAAU,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC;QAClG,MAAM,aAAa,GAAG,WAAW,UAAU,EAAE,IAAI,IAAI,KAAK,GAAG,CAAC,GAAG,CAAC;QAClE,IAAI,CAAC;YACJ,MAAM,SAAS,GAAG,MAAM,wBAAwB,CAC/C,OAAO,EACP,KAAK,CAAC,GAAG,EACT,KAAK,CAAC,QAAQ,EACd,OAAO,EACP,aAAa,EACb,wBAAwB,EACxB,2BAA2B,CAC3B,CAAC;YACF,SAAS,CAAC,MAAM,GAAG,UAAU,EAAE,MAAM,CAAC;YACtC,SAAS,CAAC,WAAW,GAAG,UAAU,EAAE,WAAW,KAAK,IAAI,CAAC;YACzD,IAAI,UAAU,EAAE,OAAO;gBAAE,SAAS,CAAC,UAAU,CAAC,mBAAmB,GAAG,SAAS,CAAC;YAC9E,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC5B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,IAAI,KAAK,YAAY,KAAK,IAAI,MAAM,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,gBAAgB;gBAAE,MAAM,KAAK,CAAC;YAC9F,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,0BAA0B,CAAC;YACpF,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;QACtD,CAAC;IACF,CAAC;IAED,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC;AAC/B,CAAC;AAED,SAAS,oBAAoB,CAAC,MAA4B;IACzD,MAAM,KAAK,GAAG,CAAC,SAAoB,EAAE,EAAE,CAAC;QACvC,GAAG,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,IAAI,EAAE,CAAC;QAC5D,GAAG,CAAC,GAAG,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,WAAW,IAAI,EAAE,CAAC;QAClE,GAAG,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,IAAI,EAAE,CAAC;KAC5D,CAAC;IACF,MAAM,KAAK,GAAG,IAAI,GAAG,CACpB,MAAM,CAAC,UAAU;SACf,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC;SAC7C,OAAO,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,SAAS,CAAU,CAAC,CAAC,CACpF,CAAC;IACF,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE;QAC1D,IAAI,CAAC,SAAS,CAAC,WAAW;YAAE,OAAO,IAAI,CAAC;QACxC,MAAM,WAAW,GAAG,KAAK,CAAC,SAAS,CAAC;aAClC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;aACjD,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC;QAC7C,IAAI,CAAC,WAAW,EAAE,KAAK;YAAE,OAAO,IAAI,CAAC;QACrC,IAAI,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,EAAE,CAAC;YACpD,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YACvD,MAAM,cAAc,GAAG,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,OAAO,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;YACvG,MAAM,CAAC,QAAQ,KAAK,EAAE,CAAC;YACvB,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;gBACpB,IAAI,EAAE,SAAS,CAAC,IAAI;gBACpB,OAAO,EAAE,aAAa,WAAW,CAAC,KAAK,CAAC,IAAI,cAAc,IAAI,MAAM,cAAc,+BAA+B,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,MAAM,CAAC,wIAAwI;aACzS,CAAC,CAAC;QACJ,CAAC;QACD,OAAO,KAAK,CAAC;IACd,CAAC,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,iCAAiC,CAAC,gBAAsC;IACvF,gBAAgB,CAAC,QAAQ,GAAG,EAAE,CAAC;IAC/B,4BAA4B,CAAC,MAAM,EAAE,gBAAgB,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACvF,4BAA4B,CAAC,SAAS,EAAE,gBAAgB,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IAC7F,4BAA4B,CAAC,MAAM,EAAE,gBAAgB,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACvF,4BAA4B,CAAC,UAAU,EAAE,gBAAgB,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IAC/F,oBAAoB,CAAC,gBAAgB,CAAC,CAAC;IACvC,yBAAyB,CAAC,gBAAgB,CAAC,CAAC;IAC5C,mBAAmB,CAAC,gBAAgB,CAAC,CAAC;IAEtC,KAAK,MAAM,QAAQ,IAAI,wBAAwB,CAAC,gBAAgB,CAAC,UAAU,CAAC,EAAE,CAAC;QAC9E,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;IAChF,CAAC;AACF,CAAC;AAED,SAAS,4BAA4B,CACpC,YAAqC,EACrC,gBAAsC,EACtC,gBAAqD;IAErD,MAAM,aAAa,GAAG,IAAI,GAAG,EAAgB,CAAC;IAC9C,KAAK,MAAM,SAAS,IAAI,gBAAgB,CAAC,UAAU,EAAE,CAAC;QACrD,IAAI,SAAS,CAAC,UAAU,CAAC,mBAAmB,KAAK,SAAS;YAAE,SAAS;QACrE,KAAK,MAAM,IAAI,IAAI,gBAAgB,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;YACvD,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC;gBAAE,aAAa,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAClE,CAAC;IACF,CAAC;IACD,KAAK,MAAM,SAAS,IAAI,gBAAgB,CAAC,UAAU,EAAE,CAAC;QACrD,IAAI,SAAS,CAAC,UAAU,CAAC,mBAAmB,KAAK,cAAc;YAAE,SAAS;QAC1E,MAAM,aAAa,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC;QAClD,KAAK,MAAM,IAAI,IAAI,CAAC,GAAG,aAAa,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;YAC9C,MAAM,YAAY,GAAG,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC7C,IAAI,CAAC,YAAY;gBAAE,SAAS;YAC5B,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAC3B,aAAa,CAAC,gBAAgB,EAAE,YAAY,EAAE,IAAI,EAAE,YAAY,EAAE,SAAS,CAAC,CAAC;QAC9E,CAAC;IACF,CAAC;AACF,CAAC;AAED,SAAS,yBAAyB,CAAC,gBAAsC;IACxE,gBAAgB,CAAC,OAAO,CAAC,UAAU,KAAK,IAAI,GAAG,EAAE,CAAC;IAClD,MAAM,UAAU,GAAG,gBAAgB,CAAC,OAAO,CAAC,UAAU,CAAC;IACvD,gBAAgB,CAAC,OAAO,CAAC,gBAAgB,KAAK,IAAI,GAAG,EAAE,CAAC;IACxD,MAAM,gBAAgB,GAAG,gBAAgB,CAAC,OAAO,CAAC,gBAAgB,CAAC;IACnE,gBAAgB,CAAC,OAAO,CAAC,mBAAmB,GAAG,CAAC,SAAS,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE;QAChF,IAAI,YAAY,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAC;QAC3C,IAAI,SAAS,CAAC,UAAU,CAAC,mBAAmB,KAAK,cAAc,EAAE,CAAC;YACjE,MAAM,YAAY,GAAG,gBAAgB,CAAC,UAAU,CAAC,IAAI,CACpD,CAAC,SAAS,EAAE,EAAE,CACb,SAAS,CAAC,UAAU,CAAC,mBAAmB,KAAK,SAAS;gBACtD,8BAA8B,CAAC,gBAAgB,CAAC,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,IAAI,CAAC,CACxF,CAAC;YACF,IAAI,CAAC,YAAY;gBAAE,OAAO,IAAI,CAAC;YAC/B,aAAa,CAAC,gBAAgB,EAAE,YAAY,EAAE,IAAI,EAAE,YAAY,EAAE,SAAS,CAAC,CAAC;YAC7E,OAAO,KAAK,CAAC;QACd,CAAC;QACD,MAAM,SAAS,GAAG,SAAS,CAAC,UAAU,CAAC,mBAAmB,KAAK,SAAS,CAAC;QACzE,KAAK,MAAM,SAAS,IAAI,gBAAgB,CAAC,UAAU,EAAE,CAAC;YACrD,IACC,SAAS,CAAC,UAAU,CAAC,mBAAmB,KAAK,cAAc;gBAC3D,CAAC,8BAA8B,CAAC,gBAAgB,CAAC,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,IAAI,CAAC;gBAExF,SAAS;YACV,IAAI,YAAY,KAAK,MAAM,IAAI,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,SAAS,CAAC,IAAI,EAAE,CAAC;gBACxE,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBACxB,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBAC9B,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,iBAAiB,EAAE,GAAG,CAAC,IAAI,CAAC;oBACzD,gBAAgB,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACnD,CAAC;YACD,kBAAkB,CAAC,gBAAgB,CAAC,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC;YAC5E,IAAI,SAAS;gBAAE,aAAa,CAAC,gBAAgB,EAAE,YAAY,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;QAC1F,CAAC;QACD,OAAO,IAAI,CAAC;IACb,CAAC,CAAC;AACH,CAAC;AAED,SAAS,8BAA8B,CACtC,OAAyB,EACzB,SAAoB,EACpB,YAAwD,EACxD,IAAY;IAEZ,OAAO,CACN,eAAe,CAAC,SAAS,EAAE,YAAY,EAAE,IAAI,CAAC;QAC9C,OAAO,CAAC,8BAA8B,EAAE,CAAC,SAAS,EAAE,YAAY,EAAE,IAAI,CAAC,KAAK,IAAI,CAChF,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CACvB,SAAoB,EACpB,YAAwD,EACxD,IAAY;IAEZ,QAAQ,YAAY,EAAE,CAAC;QACtB,KAAK,MAAM;YACV,OAAO,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAClC,KAAK,SAAS;YACb,OAAO,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACrC,KAAK,MAAM;YACV,OAAO,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAClC,KAAK,UAAU;YACd,OAAO,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,IAAa,CAAC,CAAC;IAChD,CAAC;AACF,CAAC;AAED,SAAS,kBAAkB,CAC1B,OAAyB,EACzB,SAAoB,EACpB,YAAwD,EACxD,IAAY;IAEZ,OAAO,CAAC,iCAAiC,EAAE,CAAC,SAAS,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC;IAC3E,QAAQ,YAAY,EAAE,CAAC;QACtB,KAAK,MAAM;YACV,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAC7B,MAAM;QACP,KAAK,SAAS;YACb,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAChC,MAAM;QACP,KAAK,MAAM;YACV,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAC7B,MAAM;QACP,KAAK,UAAU;YACd,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,IAAa,CAAC,CAAC;YAC1C,MAAM;IACR,CAAC;AACF,CAAC;AAED,SAAS,aAAa,CACrB,gBAAsC,EACtC,YAAqC,EACrC,IAAY,EACZ,OAAkB,EAClB,SAAoB;IAEpB,gBAAgB,CAAC,QAAQ,KAAK,EAAE,CAAC;IACjC,MAAM,QAAQ,GAAG,gBAAgB,CAAC,QAAQ,CAAC;IAC3C,IACC,QAAQ,CAAC,IAAI,CACZ,CAAC,OAAO,EAAE,EAAE,CACX,OAAO,CAAC,YAAY,KAAK,YAAY;QACrC,OAAO,CAAC,IAAI,KAAK,IAAI;QACrB,OAAO,CAAC,SAAS,CAAC,IAAI,KAAK,SAAS,CAAC,UAAU,CAAC,IAAI,CACrD;QAED,OAAO;IACR,QAAQ,CAAC,IAAI,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,UAAU,EAAE,SAAS,EAAE,SAAS,CAAC,UAAU,EAAE,CAAC,CAAC;AACrG,CAAC;AAED,SAAS,mBAAmB,CAAC,gBAAsC;IAClE,gBAAgB,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;IAC5C,gBAAgB,CAAC,OAAO,CAAC,UAAU,KAAK,IAAI,GAAG,EAAE,CAAC;IAClD,MAAM,UAAU,GAAG,gBAAgB,CAAC,OAAO,CAAC,UAAU,CAAC;IACvD,gBAAgB,CAAC,OAAO,CAAC,gBAAgB,KAAK,IAAI,GAAG,EAAE,CAAC;IACxD,MAAM,gBAAgB,GAAG,gBAAgB,CAAC,OAAO,CAAC,gBAAgB,CAAC;IACnE,UAAU,CAAC,KAAK,EAAE,CAAC;IACnB,gBAAgB,CAAC,KAAK,EAAE,CAAC;IACzB,KAAK,MAAM,SAAS,IAAI,gBAAgB,CAAC,UAAU,EAAE,CAAC;QACrD,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,SAAS,CAAC,KAAK,EAAE,CAAC;YAC5C,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC3B,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;gBACrC,gBAAgB,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC,UAAU,CAAC,mBAAmB,CAAC,CAAC;YACtE,CAAC;YACD,IACC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,SAAS,CAAC,UAAU,CAAC,mBAAmB;gBACvE,IAAI,CAAC,OAAO,KAAK,SAAS;gBAC1B,CAAC,gBAAgB,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAC7C,CAAC;gBACF,gBAAgB,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YAC7D,CAAC;QACF,CAAC;IACF,CAAC;AACF,CAAC;AAED,SAAS,wBAAwB,CAAC,UAAuB;IACxD,MAAM,SAAS,GAA6C,EAAE,CAAC;IAE/D,sDAAsD;IACtD,MAAM,UAAU,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC7C,MAAM,UAAU,GAAG,IAAI,GAAG,EAAkB,CAAC;IAE7C,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAC9B,cAAc;QACd,KAAK,MAAM,QAAQ,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;YACzC,MAAM,aAAa,GAAG,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAC/C,IAAI,aAAa,IAAI,aAAa,KAAK,GAAG,CAAC,IAAI,EAAE,CAAC;gBACjD,SAAS,CAAC,IAAI,CAAC;oBACd,IAAI,EAAE,GAAG,CAAC,IAAI;oBACd,OAAO,EAAE,SAAS,QAAQ,oBAAoB,aAAa,EAAE;iBAC7D,CAAC,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACP,UAAU,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;YACpC,CAAC;QACF,CAAC;QAED,cAAc;QACd,KAAK,MAAM,QAAQ,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;YACzC,MAAM,aAAa,GAAG,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAC/C,IAAI,aAAa,IAAI,aAAa,KAAK,GAAG,CAAC,IAAI,EAAE,CAAC;gBACjD,SAAS,CAAC,IAAI,CAAC;oBACd,IAAI,EAAE,GAAG,CAAC,IAAI;oBACd,OAAO,EAAE,WAAW,QAAQ,oBAAoB,aAAa,EAAE;iBAC/D,CAAC,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACP,UAAU,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;YACpC,CAAC;QACF,CAAC;IACF,CAAC;IAED,OAAO,SAAS,CAAC;AAClB,CAAC","sourcesContent":["import type { KeyId } from \"@earendil-works/pi-tui\";\nimport { yieldToEventLoop } from \"../utils/event-loop.ts\";\nimport { resolvePath } from \"../utils/paths.ts\";\nimport type { OverlappingResourceType } from \"./diagnostics.ts\";\nimport { loadExtensionFromFactory, loadExtensionsCached, type WorkflowResourceProvider } from \"./extensions/loader.ts\";\nimport type { Extension, ExtensionRuntime, LoadExtensionsResult } from \"./extensions/types.ts\";\nimport type { DefaultResourceLoader } from \"./resource-loader-core.ts\";\nimport { resourceInternals } from \"./resource-loader-internals.ts\";\nimport type { DefaultResourceLoaderInheritanceSnapshot } from \"./resource-loader-types.ts\";\nimport { BUILTIN_PATH_PREFIX, isSyntheticPath } from \"./source-info.ts\";\nimport { endTimingSpan, startTimingSpan } from \"./timings.ts\";\n\nfunction resolveExtensionLoadPath(loader: DefaultResourceLoader, path: string): string {\n\treturn isSyntheticPath(path)\n\t\t? path\n\t\t: resolvePath(path, resourceInternals(loader).cwd, { normalizeUnicodeSpaces: true });\n}\n\nexport async function loadExtensionPaths(\n\tloader: DefaultResourceLoader,\n\tpaths: string[],\n\tworkflowResourceProvider: WorkflowResourceProvider,\n\tinheritanceSnapshotProvider: () => DefaultResourceLoaderInheritanceSnapshot,\n\truntime?: ExtensionRuntime,\n): Promise<LoadExtensionsResult> {\n\tconst state = resourceInternals(loader);\n\tconst result = await loadExtensionsCached(\n\t\tpaths.filter((path) => !path.startsWith(BUILTIN_PATH_PREFIX)),\n\t\tstate.cwd,\n\t\tstate.eventBus,\n\t\tworkflowResourceProvider,\n\t\truntime,\n\t\tinheritanceSnapshotProvider,\n\t);\n\tfor (const path of paths.filter((path) => path.startsWith(BUILTIN_PATH_PREFIX))) {\n\t\tconst builtin = state.extensionFactories.find(\n\t\t\t(input) =>\n\t\t\t\ttypeof input !== \"function\" && input.builtin && input.name === path.slice(BUILTIN_PATH_PREFIX.length),\n\t\t);\n\t\tif (!builtin || typeof builtin === \"function\") {\n\t\t\tresult.errors.push({ path, error: `Unknown built-in extension: ${path}` });\n\t\t\tcontinue;\n\t\t}\n\t\ttry {\n\t\t\tconst extension = await loadExtensionFromFactory(\n\t\t\t\tbuiltin.factory,\n\t\t\t\tstate.cwd,\n\t\t\t\tstate.eventBus,\n\t\t\t\tresult.runtime,\n\t\t\t\tpath,\n\t\t\t\tworkflowResourceProvider,\n\t\t\t\tinheritanceSnapshotProvider,\n\t\t\t);\n\t\t\textension.hidden = true;\n\t\t\textension.replaceable = builtin.replaceable === true;\n\t\t\tif (builtin.bundled) extension.sourceInfo.configurationOrigin = \"bundled\";\n\t\t\tresult.extensions.push(extension);\n\t\t} catch (error) {\n\t\t\tif (error instanceof Error && \"code\" in error && error.code === \"ShutdownFailed\") throw error;\n\t\t\tresult.errors.push({ path, error: error instanceof Error ? error.message : \"failed to load extension\" });\n\t\t}\n\t}\n\treturn result;\n}\n\nexport async function loadFinalExtensionSet(\n\tloader: DefaultResourceLoader,\n\textensionPaths: string[],\n\tpreTrustExtensions: LoadExtensionsResult | undefined,\n\tworkflowResourceProvider: WorkflowResourceProvider,\n\tinheritanceSnapshotProvider: () => DefaultResourceLoaderInheritanceSnapshot,\n): Promise<LoadExtensionsResult> {\n\tif (!preTrustExtensions) {\n\t\tconst loadExtensionsSpan = startTimingSpan(\"DefaultResourceLoader.reload.loadExtensions\");\n\t\tconst extensionsResult = await loadExtensionPaths(\n\t\t\tloader,\n\t\t\textensionPaths,\n\t\t\tworkflowResourceProvider,\n\t\t\tinheritanceSnapshotProvider,\n\t\t);\n\t\tendTimingSpan(loadExtensionsSpan);\n\t\tconst inlineExtensionsSpan = startTimingSpan(\"DefaultResourceLoader.reload.loadInlineExtensionFactories\");\n\t\tconst inlineExtensions = await loadExtensionFactories(\n\t\t\tloader,\n\t\t\textensionsResult.runtime,\n\t\t\tworkflowResourceProvider,\n\t\t\tinheritanceSnapshotProvider,\n\t\t);\n\t\tendTimingSpan(inlineExtensionsSpan);\n\t\textensionsResult.extensions.push(...inlineExtensions.extensions);\n\t\textensionsResult.errors.push(...inlineExtensions.errors);\n\t\treturn extensionsResult;\n\t}\n\n\tconst preloadedByPath = new Map(\n\t\tpreTrustExtensions.extensions\n\t\t\t.filter((extension) => !extension.path.startsWith(\"<inline:\"))\n\t\t\t.map((extension) => [extension.resolvedPath, extension]),\n\t);\n\tconst failedPreloadPaths = new Set(\n\t\tpreTrustExtensions.errors.map((error) => resolveExtensionLoadPath(loader, error.path)),\n\t);\n\tconst remainingPaths = extensionPaths.filter((path) => {\n\t\tconst resolvedPath = resolveExtensionLoadPath(loader, path);\n\t\treturn !preloadedByPath.has(resolvedPath) && !failedPreloadPaths.has(resolvedPath);\n\t});\n\tconst loadExtensionsSpan = startTimingSpan(\"DefaultResourceLoader.reload.loadExtensions\");\n\tconst remainingExtensions = await loadExtensionPaths(\n\t\tloader,\n\t\tremainingPaths,\n\t\tworkflowResourceProvider,\n\t\tinheritanceSnapshotProvider,\n\t\tpreTrustExtensions.runtime,\n\t);\n\tendTimingSpan(loadExtensionsSpan);\n\tconst loadedByPath = new Map(preloadedByPath);\n\tfor (const extension of remainingExtensions.extensions) {\n\t\tloadedByPath.set(extension.resolvedPath, extension);\n\t}\n\n\tconst inlineExtensions = preTrustExtensions.extensions.filter((extension) => extension.path.startsWith(\"<inline:\"));\n\tconst orderedExtensions = extensionPaths\n\t\t.map((path) => loadedByPath.get(resolveExtensionLoadPath(loader, path)))\n\t\t.filter((extension): extension is Extension => extension !== undefined);\n\torderedExtensions.push(...inlineExtensions);\n\n\tconst extensionsResult: LoadExtensionsResult = {\n\t\textensions: orderedExtensions,\n\t\terrors: [...preTrustExtensions.errors, ...remainingExtensions.errors],\n\t\twarnings: [...(preTrustExtensions.warnings ?? []), ...(remainingExtensions.warnings ?? [])],\n\t\truntime: preTrustExtensions.runtime,\n\t};\n\treturn extensionsResult;\n}\n\nexport async function loadExtensionFactories(\n\tloader: DefaultResourceLoader,\n\truntime: ExtensionRuntime,\n\tworkflowResourceProvider: WorkflowResourceProvider,\n\tinheritanceSnapshotProvider: () => DefaultResourceLoaderInheritanceSnapshot,\n): Promise<{\n\textensions: Extension[];\n\terrors: Array<{ path: string; error: string }>;\n}> {\n\tconst state = resourceInternals(loader);\n\tconst extensions: Extension[] = [];\n\tconst errors: Array<{ path: string; error: string }> = [];\n\n\tfor (const [index, inlineExtension] of state.extensionFactories.entries()) {\n\t\tif (index > 0) {\n\t\t\tawait yieldToEventLoop();\n\t\t}\n\t\tconst descriptor = typeof inlineExtension === \"function\" ? undefined : inlineExtension;\n\t\tif (descriptor?.builtin) continue;\n\t\tconst factory = typeof inlineExtension === \"function\" ? inlineExtension : inlineExtension.factory;\n\t\tconst extensionPath = `<inline:${descriptor?.name ?? index + 1}>`;\n\t\ttry {\n\t\t\tconst extension = await loadExtensionFromFactory(\n\t\t\t\tfactory,\n\t\t\t\tstate.cwd,\n\t\t\t\tstate.eventBus,\n\t\t\t\truntime,\n\t\t\t\textensionPath,\n\t\t\t\tworkflowResourceProvider,\n\t\t\t\tinheritanceSnapshotProvider,\n\t\t\t);\n\t\t\textension.hidden = descriptor?.hidden;\n\t\t\textension.replaceable = descriptor?.replaceable === true;\n\t\t\tif (descriptor?.bundled) extension.sourceInfo.configurationOrigin = \"bundled\";\n\t\t\textensions.push(extension);\n\t\t} catch (error) {\n\t\t\tif (error instanceof Error && \"code\" in error && error.code === \"ShutdownFailed\") throw error;\n\t\t\tconst message = error instanceof Error ? error.message : \"failed to load extension\";\n\t\t\terrors.push({ path: extensionPath, error: message });\n\t\t}\n\t}\n\n\treturn { extensions, errors };\n}\n\nfunction omitReplacedBuiltins(result: LoadExtensionsResult): void {\n\tconst names = (extension: Extension) => [\n\t\t...[...extension.tools.keys()].map((name) => `tool:${name}`),\n\t\t...[...extension.commands.keys()].map((name) => `command:${name}`),\n\t\t...[...extension.flags.keys()].map((name) => `flag:${name}`),\n\t];\n\tconst taken = new Map(\n\t\tresult.extensions\n\t\t\t.filter((extension) => !extension.replaceable)\n\t\t\t.flatMap((extension) => names(extension).map((name) => [name, extension] as const)),\n\t);\n\tresult.extensions = result.extensions.filter((extension) => {\n\t\tif (!extension.replaceable) return true;\n\t\tconst replacement = names(extension)\n\t\t\t.map((name) => ({ name, owner: taken.get(name) }))\n\t\t\t.find((entry) => entry.owner !== undefined);\n\t\tif (!replacement?.owner) return true;\n\t\tif (extension.path.startsWith(BUILTIN_PATH_PREFIX)) {\n\t\t\tconst [kind, rawName] = replacement.name.split(\":\", 2);\n\t\t\tconst registeredName = kind === \"command\" ? `/${rawName}` : kind === \"flag\" ? `--${rawName}` : rawName;\n\t\t\tresult.warnings ??= [];\n\t\t\tresult.warnings.push({\n\t\t\t\tpath: extension.path,\n\t\t\t\twarning: `Extension ${replacement.owner.path} registers ${kind} \\`${registeredName}\\`, so built-in extension \\`${extension.path.slice(BUILTIN_PATH_PREFIX.length)}\\` was replaced. Run \\`atomic config\\` to enable the builtin, then disable or remove the replacement extension. Keep only one enabled.`,\n\t\t\t});\n\t\t}\n\t\treturn false;\n\t});\n}\n\nexport function resolveInheritedExtensionOverlaps(extensionsResult: LoadExtensionsResult): void {\n\textensionsResult.overlaps = [];\n\tremoveInheritedRegistrations(\"tool\", extensionsResult, (extension) => extension.tools);\n\tremoveInheritedRegistrations(\"command\", extensionsResult, (extension) => extension.commands);\n\tremoveInheritedRegistrations(\"flag\", extensionsResult, (extension) => extension.flags);\n\tremoveInheritedRegistrations(\"shortcut\", extensionsResult, (extension) => extension.shortcuts);\n\tomitReplacedBuiltins(extensionsResult);\n\tinstallRegistrationPolicy(extensionsResult);\n\trebuildFlagDefaults(extensionsResult);\n\n\tfor (const conflict of detectExtensionConflicts(extensionsResult.extensions)) {\n\t\textensionsResult.errors.push({ path: conflict.path, error: conflict.message });\n\t}\n}\n\nfunction removeInheritedRegistrations<K extends string, V>(\n\tresourceType: OverlappingResourceType,\n\textensionsResult: LoadExtensionsResult,\n\tgetRegistrations: (extension: Extension) => Map<K, V>,\n): void {\n\tconst bundledOwners = new Map<K, Extension>();\n\tfor (const extension of extensionsResult.extensions) {\n\t\tif (extension.sourceInfo.configurationOrigin !== \"bundled\") continue;\n\t\tfor (const name of getRegistrations(extension).keys()) {\n\t\t\tif (!bundledOwners.has(name)) bundledOwners.set(name, extension);\n\t\t}\n\t}\n\tfor (const extension of extensionsResult.extensions) {\n\t\tif (extension.sourceInfo.configurationOrigin !== \"inherited-pi\") continue;\n\t\tconst registrations = getRegistrations(extension);\n\t\tfor (const name of [...registrations.keys()]) {\n\t\t\tconst bundledOwner = bundledOwners.get(name);\n\t\t\tif (!bundledOwner) continue;\n\t\t\tregistrations.delete(name);\n\t\t\trecordOverlap(extensionsResult, resourceType, name, bundledOwner, extension);\n\t\t}\n\t}\n}\n\nfunction installRegistrationPolicy(extensionsResult: LoadExtensionsResult): void {\n\textensionsResult.runtime.flagOwners ??= new Map();\n\tconst flagOwners = extensionsResult.runtime.flagOwners;\n\textensionsResult.runtime.flagOwnerOrigins ??= new Map();\n\tconst flagOwnerOrigins = extensionsResult.runtime.flagOwnerOrigins;\n\textensionsResult.runtime.canRegisterResource = (extension, resourceType, name) => {\n\t\tif (resourceType === \"prompt\") return true;\n\t\tif (extension.sourceInfo.configurationOrigin === \"inherited-pi\") {\n\t\t\tconst bundledOwner = extensionsResult.extensions.find(\n\t\t\t\t(candidate) =>\n\t\t\t\t\tcandidate.sourceInfo.configurationOrigin === \"bundled\" &&\n\t\t\t\t\thasActiveOrPendingRegistration(extensionsResult.runtime, candidate, resourceType, name),\n\t\t\t);\n\t\t\tif (!bundledOwner) return true;\n\t\t\trecordOverlap(extensionsResult, resourceType, name, bundledOwner, extension);\n\t\t\treturn false;\n\t\t}\n\t\tconst isBundled = extension.sourceInfo.configurationOrigin === \"bundled\";\n\t\tfor (const inherited of extensionsResult.extensions) {\n\t\t\tif (\n\t\t\t\tinherited.sourceInfo.configurationOrigin !== \"inherited-pi\" ||\n\t\t\t\t!hasActiveOrPendingRegistration(extensionsResult.runtime, inherited, resourceType, name)\n\t\t\t)\n\t\t\t\tcontinue;\n\t\t\tif (resourceType === \"flag\" && flagOwners.get(name) === inherited.path) {\n\t\t\t\tflagOwners.delete(name);\n\t\t\t\tflagOwnerOrigins.delete(name);\n\t\t\t\tif (!extensionsResult.runtime.explicitFlagNames?.has(name))\n\t\t\t\t\textensionsResult.runtime.flagValues.delete(name);\n\t\t\t}\n\t\t\tdeleteRegistration(extensionsResult.runtime, inherited, resourceType, name);\n\t\t\tif (isBundled) recordOverlap(extensionsResult, resourceType, name, extension, inherited);\n\t\t}\n\t\treturn true;\n\t};\n}\n\nfunction hasActiveOrPendingRegistration(\n\truntime: ExtensionRuntime,\n\textension: Extension,\n\tresourceType: Exclude<OverlappingResourceType, \"prompt\">,\n\tname: string,\n): boolean {\n\treturn (\n\t\thasRegistration(extension, resourceType, name) ||\n\t\truntime.hasPendingResourceRegistration?.(extension, resourceType, name) === true\n\t);\n}\n\nfunction hasRegistration(\n\textension: Extension,\n\tresourceType: Exclude<OverlappingResourceType, \"prompt\">,\n\tname: string,\n): boolean {\n\tswitch (resourceType) {\n\t\tcase \"tool\":\n\t\t\treturn extension.tools.has(name);\n\t\tcase \"command\":\n\t\t\treturn extension.commands.has(name);\n\t\tcase \"flag\":\n\t\t\treturn extension.flags.has(name);\n\t\tcase \"shortcut\":\n\t\t\treturn extension.shortcuts.has(name as KeyId);\n\t}\n}\n\nfunction deleteRegistration(\n\truntime: ExtensionRuntime,\n\textension: Extension,\n\tresourceType: Exclude<OverlappingResourceType, \"prompt\">,\n\tname: string,\n): void {\n\truntime.deletePendingResourceRegistration?.(extension, resourceType, name);\n\tswitch (resourceType) {\n\t\tcase \"tool\":\n\t\t\textension.tools.delete(name);\n\t\t\tbreak;\n\t\tcase \"command\":\n\t\t\textension.commands.delete(name);\n\t\t\tbreak;\n\t\tcase \"flag\":\n\t\t\textension.flags.delete(name);\n\t\t\tbreak;\n\t\tcase \"shortcut\":\n\t\t\textension.shortcuts.delete(name as KeyId);\n\t\t\tbreak;\n\t}\n}\n\nfunction recordOverlap(\n\textensionsResult: LoadExtensionsResult,\n\tresourceType: OverlappingResourceType,\n\tname: string,\n\tbundled: Extension,\n\tinherited: Extension,\n): void {\n\textensionsResult.overlaps ??= [];\n\tconst overlaps = extensionsResult.overlaps;\n\tif (\n\t\toverlaps.some(\n\t\t\t(overlap) =>\n\t\t\t\toverlap.resourceType === resourceType &&\n\t\t\t\toverlap.name === name &&\n\t\t\t\toverlap.inherited.path === inherited.sourceInfo.path,\n\t\t)\n\t)\n\t\treturn;\n\toverlaps.push({ resourceType, name, bundled: bundled.sourceInfo, inherited: inherited.sourceInfo });\n}\n\nfunction rebuildFlagDefaults(extensionsResult: LoadExtensionsResult): void {\n\textensionsResult.runtime.flagValues.clear();\n\textensionsResult.runtime.flagOwners ??= new Map();\n\tconst flagOwners = extensionsResult.runtime.flagOwners;\n\textensionsResult.runtime.flagOwnerOrigins ??= new Map();\n\tconst flagOwnerOrigins = extensionsResult.runtime.flagOwnerOrigins;\n\tflagOwners.clear();\n\tflagOwnerOrigins.clear();\n\tfor (const extension of extensionsResult.extensions) {\n\t\tfor (const [name, flag] of extension.flags) {\n\t\t\tif (!flagOwners.has(name)) {\n\t\t\t\tflagOwners.set(name, extension.path);\n\t\t\t\tflagOwnerOrigins.set(name, extension.sourceInfo.configurationOrigin);\n\t\t\t}\n\t\t\tif (\n\t\t\t\tflagOwnerOrigins.get(name) === extension.sourceInfo.configurationOrigin &&\n\t\t\t\tflag.default !== undefined &&\n\t\t\t\t!extensionsResult.runtime.flagValues.has(name)\n\t\t\t) {\n\t\t\t\textensionsResult.runtime.flagValues.set(name, flag.default);\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction detectExtensionConflicts(extensions: Extension[]): Array<{ path: string; message: string }> {\n\tconst conflicts: Array<{ path: string; message: string }> = [];\n\n\t// Track which extension registered each tool and flag\n\tconst toolOwners = new Map<string, string>();\n\tconst flagOwners = new Map<string, string>();\n\n\tfor (const ext of extensions) {\n\t\t// Check tools\n\t\tfor (const toolName of ext.tools.keys()) {\n\t\t\tconst existingOwner = toolOwners.get(toolName);\n\t\t\tif (existingOwner && existingOwner !== ext.path) {\n\t\t\t\tconflicts.push({\n\t\t\t\t\tpath: ext.path,\n\t\t\t\t\tmessage: `Tool \"${toolName}\" conflicts with ${existingOwner}`,\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\ttoolOwners.set(toolName, ext.path);\n\t\t\t}\n\t\t}\n\n\t\t// Check flags\n\t\tfor (const flagName of ext.flags.keys()) {\n\t\t\tconst existingOwner = flagOwners.get(flagName);\n\t\t\tif (existingOwner && existingOwner !== ext.path) {\n\t\t\t\tconflicts.push({\n\t\t\t\t\tpath: ext.path,\n\t\t\t\t\tmessage: `Flag \"--${flagName}\" conflicts with ${existingOwner}`,\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tflagOwners.set(flagName, ext.path);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn conflicts;\n}\n"]}
1
+ {"version":3,"file":"resource-loader-extensions.js","sourceRoot":"","sources":["../../src/core/resource-loader-extensions.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EAAE,wBAAwB,EAAE,oBAAoB,EAAiC,MAAM,wBAAwB,CAAC;AAGvH,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAEnE,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAC5F,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE9D,SAAS,wBAAwB,CAAC,MAA6B,EAAE,IAAY;IAC5E,OAAO,eAAe,CAAC,IAAI,CAAC;QAC3B,CAAC,CAAC,IAAI;QACN,CAAC,CAAC,WAAW,CAAC,IAAI,EAAE,iBAAiB,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,sBAAsB,EAAE,IAAI,EAAE,CAAC,CAAC;AACvF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACvC,MAA6B,EAC7B,KAAe,EACf,wBAAkD,EAClD,2BAA2E,EAC3E,OAA0B;IAE1B,MAAM,KAAK,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;IACxC,MAAM,MAAM,GAAG,MAAM,oBAAoB,CACxC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,CAAC,EAC7D,KAAK,CAAC,GAAG,EACT,KAAK,CAAC,QAAQ,EACd,wBAAwB,EACxB,OAAO,EACP,2BAA2B,CAC3B,CAAC;IACF,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,CAAC,EAAE,CAAC;QACjF,MAAM,OAAO,GAAG,KAAK,CAAC,kBAAkB,CAAC,IAAI,CAC5C,CAAC,KAAK,EAAE,EAAE,CACT,OAAO,KAAK,KAAK,UAAU,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,MAAM,CAAC,CACtG,CAAC;QACF,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,UAAU,EAAE,CAAC;YAC/C,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,+BAA+B,IAAI,EAAE,EAAE,CAAC,CAAC;YAC3E,SAAS;QACV,CAAC;QACD,IAAI,CAAC;YACJ,MAAM,SAAS,GAAG,MAAM,wBAAwB,CAC/C,OAAO,CAAC,OAAO,EACf,KAAK,CAAC,GAAG,EACT,KAAK,CAAC,QAAQ,EACd,MAAM,CAAC,OAAO,EACd,IAAI,EACJ,wBAAwB,EACxB,2BAA2B,CAC3B,CAAC;YACF,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC;YACxB,SAAS,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,KAAK,IAAI,CAAC;YACrD,IAAI,OAAO,CAAC,OAAO;gBAAE,SAAS,CAAC,UAAU,CAAC,mBAAmB,GAAG,SAAS,CAAC;YAC1E,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACnC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,IAAI,KAAK,YAAY,KAAK,IAAI,MAAM,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,gBAAgB;gBAAE,MAAM,KAAK,CAAC;YAC9F,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,0BAA0B,EAAE,CAAC,CAAC;QAC1G,CAAC;IACF,CAAC;IACD,OAAO,MAAM,CAAC;AACf,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAC1C,MAA6B,EAC7B,cAAwB,EACxB,kBAAoD,EACpD,wBAAkD,EAClD,2BAA2E;IAE3E,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACzB,MAAM,kBAAkB,GAAG,eAAe,CAAC,6CAA6C,CAAC,CAAC;QAC1F,MAAM,gBAAgB,GAAG,MAAM,kBAAkB,CAChD,MAAM,EACN,cAAc,EACd,wBAAwB,EACxB,2BAA2B,CAC3B,CAAC;QACF,aAAa,CAAC,kBAAkB,CAAC,CAAC;QAClC,MAAM,oBAAoB,GAAG,eAAe,CAAC,2DAA2D,CAAC,CAAC;QAC1G,MAAM,gBAAgB,GAAG,MAAM,sBAAsB,CACpD,MAAM,EACN,gBAAgB,CAAC,OAAO,EACxB,wBAAwB,EACxB,2BAA2B,CAC3B,CAAC;QACF,aAAa,CAAC,oBAAoB,CAAC,CAAC;QACpC,gBAAgB,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAAC;QACjE,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;QACzD,OAAO,gBAAgB,CAAC;IACzB,CAAC;IAED,MAAM,eAAe,GAAG,IAAI,GAAG,CAC9B,kBAAkB,CAAC,UAAU;SAC3B,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;SAC7D,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,kBAAkB,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE,SAAS,CAAC,CAAC,CAC7E,CAAC;IACF,MAAM,gBAAgB,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,kBAAkB,CAAC,wBAAwB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;IACtG,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC,kBAAkB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC3G,MAAM,cAAc,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;QACrD,MAAM,OAAO,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;QACvC,OAAO,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC1E,CAAC,CAAC,CAAC;IACH,MAAM,kBAAkB,GAAG,eAAe,CAAC,6CAA6C,CAAC,CAAC;IAC1F,MAAM,mBAAmB,GAAG,MAAM,kBAAkB,CACnD,MAAM,EACN,cAAc,EACd,wBAAwB,EACxB,2BAA2B,EAC3B,kBAAkB,CAAC,OAAO,CAC1B,CAAC;IACF,aAAa,CAAC,kBAAkB,CAAC,CAAC;IAClC,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,eAAe,CAAC,CAAC;IAC9C,KAAK,MAAM,SAAS,IAAI,mBAAmB,CAAC,UAAU,EAAE,CAAC;QACxD,YAAY,CAAC,GAAG,CAAC,kBAAkB,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE,SAAS,CAAC,CAAC;IACzE,CAAC;IAED,MAAM,gBAAgB,GAAG,kBAAkB,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC;IACpH,MAAM,iBAAiB,GAAG,cAAc;SACtC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;SACvD,MAAM,CAAC,CAAC,SAAS,EAA0B,EAAE,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC;IACzE,iBAAiB,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC,CAAC;IAE5C,MAAM,gBAAgB,GAAyB;QAC9C,UAAU,EAAE,iBAAiB;QAC7B,MAAM,EAAE,CAAC,GAAG,kBAAkB,CAAC,MAAM,EAAE,GAAG,mBAAmB,CAAC,MAAM,CAAC;QACrE,QAAQ,EAAE,CAAC,GAAG,CAAC,kBAAkB,CAAC,QAAQ,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,mBAAmB,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;QAC3F,OAAO,EAAE,kBAAkB,CAAC,OAAO;KACnC,CAAC;IACF,OAAO,gBAAgB,CAAC;AACzB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC3C,MAA6B,EAC7B,OAAyB,EACzB,wBAAkD,EAClD,2BAA2E;IAK3E,MAAM,KAAK,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;IACxC,MAAM,UAAU,GAAgB,EAAE,CAAC;IACnC,MAAM,MAAM,GAA2C,EAAE,CAAC;IAE1D,KAAK,MAAM,CAAC,KAAK,EAAE,eAAe,CAAC,IAAI,KAAK,CAAC,kBAAkB,CAAC,OAAO,EAAE,EAAE,CAAC;QAC3E,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YACf,MAAM,gBAAgB,EAAE,CAAC;QAC1B,CAAC;QACD,MAAM,UAAU,GAAG,OAAO,eAAe,KAAK,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC;QACvF,IAAI,UAAU,EAAE,OAAO;YAAE,SAAS;QAClC,MAAM,OAAO,GAAG,OAAO,eAAe,KAAK,UAAU,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC;QAClG,MAAM,aAAa,GAAG,WAAW,UAAU,EAAE,IAAI,IAAI,KAAK,GAAG,CAAC,GAAG,CAAC;QAClE,IAAI,CAAC;YACJ,MAAM,SAAS,GAAG,MAAM,wBAAwB,CAC/C,OAAO,EACP,KAAK,CAAC,GAAG,EACT,KAAK,CAAC,QAAQ,EACd,OAAO,EACP,aAAa,EACb,wBAAwB,EACxB,2BAA2B,CAC3B,CAAC;YACF,SAAS,CAAC,MAAM,GAAG,UAAU,EAAE,MAAM,CAAC;YACtC,SAAS,CAAC,WAAW,GAAG,UAAU,EAAE,WAAW,KAAK,IAAI,CAAC;YACzD,IAAI,UAAU,EAAE,OAAO;gBAAE,SAAS,CAAC,UAAU,CAAC,mBAAmB,GAAG,SAAS,CAAC;YAC9E,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC5B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,IAAI,KAAK,YAAY,KAAK,IAAI,MAAM,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,gBAAgB;gBAAE,MAAM,KAAK,CAAC;YAC9F,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,0BAA0B,CAAC;YACpF,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;QACtD,CAAC;IACF,CAAC;IAED,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC;AAC/B,CAAC;AAED,SAAS,oBAAoB,CAAC,MAA4B;IACzD,MAAM,KAAK,GAAG,CAAC,SAAoB,EAAE,EAAE,CAAC;QACvC,GAAG,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,IAAI,EAAE,CAAC;QAC5D,GAAG,CAAC,GAAG,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,WAAW,IAAI,EAAE,CAAC;QAClE,GAAG,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,IAAI,EAAE,CAAC;KAC5D,CAAC;IACF,MAAM,KAAK,GAAG,IAAI,GAAG,CACpB,MAAM,CAAC,UAAU;SACf,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC;SAC7C,OAAO,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,SAAS,CAAU,CAAC,CAAC,CACpF,CAAC;IACF,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE;QAC1D,IAAI,CAAC,SAAS,CAAC,WAAW;YAAE,OAAO,IAAI,CAAC;QACxC,MAAM,WAAW,GAAG,KAAK,CAAC,SAAS,CAAC;aAClC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;aACjD,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC;QAC7C,IAAI,CAAC,WAAW,EAAE,KAAK;YAAE,OAAO,IAAI,CAAC;QACrC,IAAI,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,EAAE,CAAC;YACpD,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YACvD,MAAM,cAAc,GAAG,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,OAAO,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;YACvG,MAAM,CAAC,QAAQ,KAAK,EAAE,CAAC;YACvB,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;gBACpB,IAAI,EAAE,SAAS,CAAC,IAAI;gBACpB,OAAO,EAAE,aAAa,WAAW,CAAC,KAAK,CAAC,IAAI,cAAc,IAAI,MAAM,cAAc,+BAA+B,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,MAAM,CAAC,wIAAwI;aACzS,CAAC,CAAC;QACJ,CAAC;QACD,OAAO,KAAK,CAAC;IACd,CAAC,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,iCAAiC,CAAC,gBAAsC;IACvF,gBAAgB,CAAC,QAAQ,GAAG,EAAE,CAAC;IAC/B,4BAA4B,CAAC,MAAM,EAAE,gBAAgB,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACvF,4BAA4B,CAAC,SAAS,EAAE,gBAAgB,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IAC7F,4BAA4B,CAAC,MAAM,EAAE,gBAAgB,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACvF,4BAA4B,CAAC,UAAU,EAAE,gBAAgB,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IAC/F,oBAAoB,CAAC,gBAAgB,CAAC,CAAC;IACvC,yBAAyB,CAAC,gBAAgB,CAAC,CAAC;IAC5C,mBAAmB,CAAC,gBAAgB,CAAC,CAAC;IAEtC,KAAK,MAAM,QAAQ,IAAI,wBAAwB,CAAC,gBAAgB,CAAC,UAAU,CAAC,EAAE,CAAC;QAC9E,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;IAChF,CAAC;AACF,CAAC;AAED,SAAS,4BAA4B,CACpC,YAAqC,EACrC,gBAAsC,EACtC,gBAAqD;IAErD,MAAM,aAAa,GAAG,IAAI,GAAG,EAAgB,CAAC;IAC9C,KAAK,MAAM,SAAS,IAAI,gBAAgB,CAAC,UAAU,EAAE,CAAC;QACrD,IAAI,SAAS,CAAC,UAAU,CAAC,mBAAmB,KAAK,SAAS;YAAE,SAAS;QACrE,KAAK,MAAM,IAAI,IAAI,gBAAgB,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;YACvD,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC;gBAAE,aAAa,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAClE,CAAC;IACF,CAAC;IACD,KAAK,MAAM,SAAS,IAAI,gBAAgB,CAAC,UAAU,EAAE,CAAC;QACrD,IAAI,SAAS,CAAC,UAAU,CAAC,mBAAmB,KAAK,cAAc;YAAE,SAAS;QAC1E,MAAM,aAAa,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC;QAClD,KAAK,MAAM,IAAI,IAAI,CAAC,GAAG,aAAa,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;YAC9C,MAAM,YAAY,GAAG,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC7C,IAAI,CAAC,YAAY;gBAAE,SAAS;YAC5B,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAC3B,aAAa,CAAC,gBAAgB,EAAE,YAAY,EAAE,IAAI,EAAE,YAAY,EAAE,SAAS,CAAC,CAAC;QAC9E,CAAC;IACF,CAAC;AACF,CAAC;AAED,SAAS,yBAAyB,CAAC,gBAAsC;IACxE,gBAAgB,CAAC,OAAO,CAAC,UAAU,KAAK,IAAI,GAAG,EAAE,CAAC;IAClD,MAAM,UAAU,GAAG,gBAAgB,CAAC,OAAO,CAAC,UAAU,CAAC;IACvD,gBAAgB,CAAC,OAAO,CAAC,gBAAgB,KAAK,IAAI,GAAG,EAAE,CAAC;IACxD,MAAM,gBAAgB,GAAG,gBAAgB,CAAC,OAAO,CAAC,gBAAgB,CAAC;IACnE,gBAAgB,CAAC,OAAO,CAAC,mBAAmB,GAAG,CAAC,SAAS,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE;QAChF,IAAI,YAAY,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAC;QAC3C,IAAI,SAAS,CAAC,UAAU,CAAC,mBAAmB,KAAK,cAAc,EAAE,CAAC;YACjE,MAAM,YAAY,GAAG,gBAAgB,CAAC,UAAU,CAAC,IAAI,CACpD,CAAC,SAAS,EAAE,EAAE,CACb,SAAS,CAAC,UAAU,CAAC,mBAAmB,KAAK,SAAS;gBACtD,8BAA8B,CAAC,gBAAgB,CAAC,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,IAAI,CAAC,CACxF,CAAC;YACF,IAAI,CAAC,YAAY;gBAAE,OAAO,IAAI,CAAC;YAC/B,aAAa,CAAC,gBAAgB,EAAE,YAAY,EAAE,IAAI,EAAE,YAAY,EAAE,SAAS,CAAC,CAAC;YAC7E,OAAO,KAAK,CAAC;QACd,CAAC;QACD,MAAM,SAAS,GAAG,SAAS,CAAC,UAAU,CAAC,mBAAmB,KAAK,SAAS,CAAC;QACzE,KAAK,MAAM,SAAS,IAAI,gBAAgB,CAAC,UAAU,EAAE,CAAC;YACrD,IACC,SAAS,CAAC,UAAU,CAAC,mBAAmB,KAAK,cAAc;gBAC3D,CAAC,8BAA8B,CAAC,gBAAgB,CAAC,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,IAAI,CAAC;gBAExF,SAAS;YACV,IAAI,YAAY,KAAK,MAAM,IAAI,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,SAAS,CAAC,IAAI,EAAE,CAAC;gBACxE,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBACxB,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBAC9B,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,iBAAiB,EAAE,GAAG,CAAC,IAAI,CAAC;oBACzD,gBAAgB,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACnD,CAAC;YACD,kBAAkB,CAAC,gBAAgB,CAAC,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC;YAC5E,IAAI,SAAS;gBAAE,aAAa,CAAC,gBAAgB,EAAE,YAAY,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;QAC1F,CAAC;QACD,OAAO,IAAI,CAAC;IACb,CAAC,CAAC;AACH,CAAC;AAED,SAAS,8BAA8B,CACtC,OAAyB,EACzB,SAAoB,EACpB,YAAwD,EACxD,IAAY;IAEZ,OAAO,CACN,eAAe,CAAC,SAAS,EAAE,YAAY,EAAE,IAAI,CAAC;QAC9C,OAAO,CAAC,8BAA8B,EAAE,CAAC,SAAS,EAAE,YAAY,EAAE,IAAI,CAAC,KAAK,IAAI,CAChF,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CACvB,SAAoB,EACpB,YAAwD,EACxD,IAAY;IAEZ,QAAQ,YAAY,EAAE,CAAC;QACtB,KAAK,MAAM;YACV,OAAO,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAClC,KAAK,SAAS;YACb,OAAO,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACrC,KAAK,MAAM;YACV,OAAO,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAClC,KAAK,UAAU;YACd,OAAO,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,IAAa,CAAC,CAAC;IAChD,CAAC;AACF,CAAC;AAED,SAAS,kBAAkB,CAC1B,OAAyB,EACzB,SAAoB,EACpB,YAAwD,EACxD,IAAY;IAEZ,OAAO,CAAC,iCAAiC,EAAE,CAAC,SAAS,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC;IAC3E,QAAQ,YAAY,EAAE,CAAC;QACtB,KAAK,MAAM;YACV,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAC7B,MAAM;QACP,KAAK,SAAS;YACb,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAChC,MAAM;QACP,KAAK,MAAM;YACV,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAC7B,MAAM;QACP,KAAK,UAAU;YACd,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,IAAa,CAAC,CAAC;YAC1C,MAAM;IACR,CAAC;AACF,CAAC;AAED,SAAS,aAAa,CACrB,gBAAsC,EACtC,YAAqC,EACrC,IAAY,EACZ,OAAkB,EAClB,SAAoB;IAEpB,gBAAgB,CAAC,QAAQ,KAAK,EAAE,CAAC;IACjC,MAAM,QAAQ,GAAG,gBAAgB,CAAC,QAAQ,CAAC;IAC3C,IACC,QAAQ,CAAC,IAAI,CACZ,CAAC,OAAO,EAAE,EAAE,CACX,OAAO,CAAC,YAAY,KAAK,YAAY;QACrC,OAAO,CAAC,IAAI,KAAK,IAAI;QACrB,OAAO,CAAC,SAAS,CAAC,IAAI,KAAK,SAAS,CAAC,UAAU,CAAC,IAAI,CACrD;QAED,OAAO;IACR,QAAQ,CAAC,IAAI,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,UAAU,EAAE,SAAS,EAAE,SAAS,CAAC,UAAU,EAAE,CAAC,CAAC;AACrG,CAAC;AAED,SAAS,mBAAmB,CAAC,gBAAsC;IAClE,gBAAgB,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;IAC5C,gBAAgB,CAAC,OAAO,CAAC,UAAU,KAAK,IAAI,GAAG,EAAE,CAAC;IAClD,MAAM,UAAU,GAAG,gBAAgB,CAAC,OAAO,CAAC,UAAU,CAAC;IACvD,gBAAgB,CAAC,OAAO,CAAC,gBAAgB,KAAK,IAAI,GAAG,EAAE,CAAC;IACxD,MAAM,gBAAgB,GAAG,gBAAgB,CAAC,OAAO,CAAC,gBAAgB,CAAC;IACnE,UAAU,CAAC,KAAK,EAAE,CAAC;IACnB,gBAAgB,CAAC,KAAK,EAAE,CAAC;IACzB,KAAK,MAAM,SAAS,IAAI,gBAAgB,CAAC,UAAU,EAAE,CAAC;QACrD,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,SAAS,CAAC,KAAK,EAAE,CAAC;YAC5C,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC3B,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;gBACrC,gBAAgB,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC,UAAU,CAAC,mBAAmB,CAAC,CAAC;YACtE,CAAC;YACD,IACC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,SAAS,CAAC,UAAU,CAAC,mBAAmB;gBACvE,IAAI,CAAC,OAAO,KAAK,SAAS;gBAC1B,CAAC,gBAAgB,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAC7C,CAAC;gBACF,gBAAgB,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YAC7D,CAAC;QACF,CAAC;IACF,CAAC;AACF,CAAC;AAED,SAAS,wBAAwB,CAAC,UAAuB;IACxD,MAAM,SAAS,GAA6C,EAAE,CAAC;IAE/D,sDAAsD;IACtD,MAAM,UAAU,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC7C,MAAM,UAAU,GAAG,IAAI,GAAG,EAAkB,CAAC;IAE7C,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAC9B,cAAc;QACd,KAAK,MAAM,QAAQ,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;YACzC,MAAM,aAAa,GAAG,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAC/C,IAAI,aAAa,IAAI,aAAa,KAAK,GAAG,CAAC,IAAI,EAAE,CAAC;gBACjD,SAAS,CAAC,IAAI,CAAC;oBACd,IAAI,EAAE,GAAG,CAAC,IAAI;oBACd,OAAO,EAAE,SAAS,QAAQ,oBAAoB,aAAa,EAAE;iBAC7D,CAAC,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACP,UAAU,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;YACpC,CAAC;QACF,CAAC;QAED,cAAc;QACd,KAAK,MAAM,QAAQ,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;YACzC,MAAM,aAAa,GAAG,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAC/C,IAAI,aAAa,IAAI,aAAa,KAAK,GAAG,CAAC,IAAI,EAAE,CAAC;gBACjD,SAAS,CAAC,IAAI,CAAC;oBACd,IAAI,EAAE,GAAG,CAAC,IAAI;oBACd,OAAO,EAAE,WAAW,QAAQ,oBAAoB,aAAa,EAAE;iBAC/D,CAAC,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACP,UAAU,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;YACpC,CAAC;QACF,CAAC;IACF,CAAC;IAED,OAAO,SAAS,CAAC;AAClB,CAAC","sourcesContent":["import type { KeyId } from \"@earendil-works/pi-tui\";\nimport { yieldToEventLoop } from \"../utils/event-loop.ts\";\nimport { resolvePath } from \"../utils/paths.ts\";\nimport type { OverlappingResourceType } from \"./diagnostics.ts\";\nimport { loadExtensionFromFactory, loadExtensionsCached, type WorkflowResourceProvider } from \"./extensions/loader.ts\";\nimport type { Extension, ExtensionRuntime, LoadExtensionsResult } from \"./extensions/types.ts\";\nimport type { DefaultResourceLoader } from \"./resource-loader-core.ts\";\nimport { resourceInternals } from \"./resource-loader-internals.ts\";\nimport type { DefaultResourceLoaderInheritanceSnapshot } from \"./resource-loader-types.ts\";\nimport { BUILTIN_PATH_PREFIX, getResourcePathKey, isSyntheticPath } from \"./source-info.ts\";\nimport { endTimingSpan, startTimingSpan } from \"./timings.ts\";\n\nfunction resolveExtensionLoadPath(loader: DefaultResourceLoader, path: string): string {\n\treturn isSyntheticPath(path)\n\t\t? path\n\t\t: resolvePath(path, resourceInternals(loader).cwd, { normalizeUnicodeSpaces: true });\n}\n\nexport async function loadExtensionPaths(\n\tloader: DefaultResourceLoader,\n\tpaths: string[],\n\tworkflowResourceProvider: WorkflowResourceProvider,\n\tinheritanceSnapshotProvider: () => DefaultResourceLoaderInheritanceSnapshot,\n\truntime?: ExtensionRuntime,\n): Promise<LoadExtensionsResult> {\n\tconst state = resourceInternals(loader);\n\tconst result = await loadExtensionsCached(\n\t\tpaths.filter((path) => !path.startsWith(BUILTIN_PATH_PREFIX)),\n\t\tstate.cwd,\n\t\tstate.eventBus,\n\t\tworkflowResourceProvider,\n\t\truntime,\n\t\tinheritanceSnapshotProvider,\n\t);\n\tfor (const path of paths.filter((path) => path.startsWith(BUILTIN_PATH_PREFIX))) {\n\t\tconst builtin = state.extensionFactories.find(\n\t\t\t(input) =>\n\t\t\t\ttypeof input !== \"function\" && input.builtin && input.name === path.slice(BUILTIN_PATH_PREFIX.length),\n\t\t);\n\t\tif (!builtin || typeof builtin === \"function\") {\n\t\t\tresult.errors.push({ path, error: `Unknown built-in extension: ${path}` });\n\t\t\tcontinue;\n\t\t}\n\t\ttry {\n\t\t\tconst extension = await loadExtensionFromFactory(\n\t\t\t\tbuiltin.factory,\n\t\t\t\tstate.cwd,\n\t\t\t\tstate.eventBus,\n\t\t\t\tresult.runtime,\n\t\t\t\tpath,\n\t\t\t\tworkflowResourceProvider,\n\t\t\t\tinheritanceSnapshotProvider,\n\t\t\t);\n\t\t\textension.hidden = true;\n\t\t\textension.replaceable = builtin.replaceable === true;\n\t\t\tif (builtin.bundled) extension.sourceInfo.configurationOrigin = \"bundled\";\n\t\t\tresult.extensions.push(extension);\n\t\t} catch (error) {\n\t\t\tif (error instanceof Error && \"code\" in error && error.code === \"ShutdownFailed\") throw error;\n\t\t\tresult.errors.push({ path, error: error instanceof Error ? error.message : \"failed to load extension\" });\n\t\t}\n\t}\n\treturn result;\n}\n\nexport async function loadFinalExtensionSet(\n\tloader: DefaultResourceLoader,\n\textensionPaths: string[],\n\tpreTrustExtensions: LoadExtensionsResult | undefined,\n\tworkflowResourceProvider: WorkflowResourceProvider,\n\tinheritanceSnapshotProvider: () => DefaultResourceLoaderInheritanceSnapshot,\n): Promise<LoadExtensionsResult> {\n\tif (!preTrustExtensions) {\n\t\tconst loadExtensionsSpan = startTimingSpan(\"DefaultResourceLoader.reload.loadExtensions\");\n\t\tconst extensionsResult = await loadExtensionPaths(\n\t\t\tloader,\n\t\t\textensionPaths,\n\t\t\tworkflowResourceProvider,\n\t\t\tinheritanceSnapshotProvider,\n\t\t);\n\t\tendTimingSpan(loadExtensionsSpan);\n\t\tconst inlineExtensionsSpan = startTimingSpan(\"DefaultResourceLoader.reload.loadInlineExtensionFactories\");\n\t\tconst inlineExtensions = await loadExtensionFactories(\n\t\t\tloader,\n\t\t\textensionsResult.runtime,\n\t\t\tworkflowResourceProvider,\n\t\t\tinheritanceSnapshotProvider,\n\t\t);\n\t\tendTimingSpan(inlineExtensionsSpan);\n\t\textensionsResult.extensions.push(...inlineExtensions.extensions);\n\t\textensionsResult.errors.push(...inlineExtensions.errors);\n\t\treturn extensionsResult;\n\t}\n\n\tconst preloadedByPath = new Map(\n\t\tpreTrustExtensions.extensions\n\t\t\t.filter((extension) => !extension.path.startsWith(\"<inline:\"))\n\t\t\t.map((extension) => [getResourcePathKey(extension.resolvedPath), extension]),\n\t);\n\tconst extensionPathKey = (path: string) => getResourcePathKey(resolveExtensionLoadPath(loader, path));\n\tconst failedPreloadPaths = new Set(preTrustExtensions.errors.map((error) => extensionPathKey(error.path)));\n\tconst remainingPaths = extensionPaths.filter((path) => {\n\t\tconst pathKey = extensionPathKey(path);\n\t\treturn !preloadedByPath.has(pathKey) && !failedPreloadPaths.has(pathKey);\n\t});\n\tconst loadExtensionsSpan = startTimingSpan(\"DefaultResourceLoader.reload.loadExtensions\");\n\tconst remainingExtensions = await loadExtensionPaths(\n\t\tloader,\n\t\tremainingPaths,\n\t\tworkflowResourceProvider,\n\t\tinheritanceSnapshotProvider,\n\t\tpreTrustExtensions.runtime,\n\t);\n\tendTimingSpan(loadExtensionsSpan);\n\tconst loadedByPath = new Map(preloadedByPath);\n\tfor (const extension of remainingExtensions.extensions) {\n\t\tloadedByPath.set(getResourcePathKey(extension.resolvedPath), extension);\n\t}\n\n\tconst inlineExtensions = preTrustExtensions.extensions.filter((extension) => extension.path.startsWith(\"<inline:\"));\n\tconst orderedExtensions = extensionPaths\n\t\t.map((path) => loadedByPath.get(extensionPathKey(path)))\n\t\t.filter((extension): extension is Extension => extension !== undefined);\n\torderedExtensions.push(...inlineExtensions);\n\n\tconst extensionsResult: LoadExtensionsResult = {\n\t\textensions: orderedExtensions,\n\t\terrors: [...preTrustExtensions.errors, ...remainingExtensions.errors],\n\t\twarnings: [...(preTrustExtensions.warnings ?? []), ...(remainingExtensions.warnings ?? [])],\n\t\truntime: preTrustExtensions.runtime,\n\t};\n\treturn extensionsResult;\n}\n\nexport async function loadExtensionFactories(\n\tloader: DefaultResourceLoader,\n\truntime: ExtensionRuntime,\n\tworkflowResourceProvider: WorkflowResourceProvider,\n\tinheritanceSnapshotProvider: () => DefaultResourceLoaderInheritanceSnapshot,\n): Promise<{\n\textensions: Extension[];\n\terrors: Array<{ path: string; error: string }>;\n}> {\n\tconst state = resourceInternals(loader);\n\tconst extensions: Extension[] = [];\n\tconst errors: Array<{ path: string; error: string }> = [];\n\n\tfor (const [index, inlineExtension] of state.extensionFactories.entries()) {\n\t\tif (index > 0) {\n\t\t\tawait yieldToEventLoop();\n\t\t}\n\t\tconst descriptor = typeof inlineExtension === \"function\" ? undefined : inlineExtension;\n\t\tif (descriptor?.builtin) continue;\n\t\tconst factory = typeof inlineExtension === \"function\" ? inlineExtension : inlineExtension.factory;\n\t\tconst extensionPath = `<inline:${descriptor?.name ?? index + 1}>`;\n\t\ttry {\n\t\t\tconst extension = await loadExtensionFromFactory(\n\t\t\t\tfactory,\n\t\t\t\tstate.cwd,\n\t\t\t\tstate.eventBus,\n\t\t\t\truntime,\n\t\t\t\textensionPath,\n\t\t\t\tworkflowResourceProvider,\n\t\t\t\tinheritanceSnapshotProvider,\n\t\t\t);\n\t\t\textension.hidden = descriptor?.hidden;\n\t\t\textension.replaceable = descriptor?.replaceable === true;\n\t\t\tif (descriptor?.bundled) extension.sourceInfo.configurationOrigin = \"bundled\";\n\t\t\textensions.push(extension);\n\t\t} catch (error) {\n\t\t\tif (error instanceof Error && \"code\" in error && error.code === \"ShutdownFailed\") throw error;\n\t\t\tconst message = error instanceof Error ? error.message : \"failed to load extension\";\n\t\t\terrors.push({ path: extensionPath, error: message });\n\t\t}\n\t}\n\n\treturn { extensions, errors };\n}\n\nfunction omitReplacedBuiltins(result: LoadExtensionsResult): void {\n\tconst names = (extension: Extension) => [\n\t\t...[...extension.tools.keys()].map((name) => `tool:${name}`),\n\t\t...[...extension.commands.keys()].map((name) => `command:${name}`),\n\t\t...[...extension.flags.keys()].map((name) => `flag:${name}`),\n\t];\n\tconst taken = new Map(\n\t\tresult.extensions\n\t\t\t.filter((extension) => !extension.replaceable)\n\t\t\t.flatMap((extension) => names(extension).map((name) => [name, extension] as const)),\n\t);\n\tresult.extensions = result.extensions.filter((extension) => {\n\t\tif (!extension.replaceable) return true;\n\t\tconst replacement = names(extension)\n\t\t\t.map((name) => ({ name, owner: taken.get(name) }))\n\t\t\t.find((entry) => entry.owner !== undefined);\n\t\tif (!replacement?.owner) return true;\n\t\tif (extension.path.startsWith(BUILTIN_PATH_PREFIX)) {\n\t\t\tconst [kind, rawName] = replacement.name.split(\":\", 2);\n\t\t\tconst registeredName = kind === \"command\" ? `/${rawName}` : kind === \"flag\" ? `--${rawName}` : rawName;\n\t\t\tresult.warnings ??= [];\n\t\t\tresult.warnings.push({\n\t\t\t\tpath: extension.path,\n\t\t\t\twarning: `Extension ${replacement.owner.path} registers ${kind} \\`${registeredName}\\`, so built-in extension \\`${extension.path.slice(BUILTIN_PATH_PREFIX.length)}\\` was replaced. Run \\`atomic config\\` to enable the builtin, then disable or remove the replacement extension. Keep only one enabled.`,\n\t\t\t});\n\t\t}\n\t\treturn false;\n\t});\n}\n\nexport function resolveInheritedExtensionOverlaps(extensionsResult: LoadExtensionsResult): void {\n\textensionsResult.overlaps = [];\n\tremoveInheritedRegistrations(\"tool\", extensionsResult, (extension) => extension.tools);\n\tremoveInheritedRegistrations(\"command\", extensionsResult, (extension) => extension.commands);\n\tremoveInheritedRegistrations(\"flag\", extensionsResult, (extension) => extension.flags);\n\tremoveInheritedRegistrations(\"shortcut\", extensionsResult, (extension) => extension.shortcuts);\n\tomitReplacedBuiltins(extensionsResult);\n\tinstallRegistrationPolicy(extensionsResult);\n\trebuildFlagDefaults(extensionsResult);\n\n\tfor (const conflict of detectExtensionConflicts(extensionsResult.extensions)) {\n\t\textensionsResult.errors.push({ path: conflict.path, error: conflict.message });\n\t}\n}\n\nfunction removeInheritedRegistrations<K extends string, V>(\n\tresourceType: OverlappingResourceType,\n\textensionsResult: LoadExtensionsResult,\n\tgetRegistrations: (extension: Extension) => Map<K, V>,\n): void {\n\tconst bundledOwners = new Map<K, Extension>();\n\tfor (const extension of extensionsResult.extensions) {\n\t\tif (extension.sourceInfo.configurationOrigin !== \"bundled\") continue;\n\t\tfor (const name of getRegistrations(extension).keys()) {\n\t\t\tif (!bundledOwners.has(name)) bundledOwners.set(name, extension);\n\t\t}\n\t}\n\tfor (const extension of extensionsResult.extensions) {\n\t\tif (extension.sourceInfo.configurationOrigin !== \"inherited-pi\") continue;\n\t\tconst registrations = getRegistrations(extension);\n\t\tfor (const name of [...registrations.keys()]) {\n\t\t\tconst bundledOwner = bundledOwners.get(name);\n\t\t\tif (!bundledOwner) continue;\n\t\t\tregistrations.delete(name);\n\t\t\trecordOverlap(extensionsResult, resourceType, name, bundledOwner, extension);\n\t\t}\n\t}\n}\n\nfunction installRegistrationPolicy(extensionsResult: LoadExtensionsResult): void {\n\textensionsResult.runtime.flagOwners ??= new Map();\n\tconst flagOwners = extensionsResult.runtime.flagOwners;\n\textensionsResult.runtime.flagOwnerOrigins ??= new Map();\n\tconst flagOwnerOrigins = extensionsResult.runtime.flagOwnerOrigins;\n\textensionsResult.runtime.canRegisterResource = (extension, resourceType, name) => {\n\t\tif (resourceType === \"prompt\") return true;\n\t\tif (extension.sourceInfo.configurationOrigin === \"inherited-pi\") {\n\t\t\tconst bundledOwner = extensionsResult.extensions.find(\n\t\t\t\t(candidate) =>\n\t\t\t\t\tcandidate.sourceInfo.configurationOrigin === \"bundled\" &&\n\t\t\t\t\thasActiveOrPendingRegistration(extensionsResult.runtime, candidate, resourceType, name),\n\t\t\t);\n\t\t\tif (!bundledOwner) return true;\n\t\t\trecordOverlap(extensionsResult, resourceType, name, bundledOwner, extension);\n\t\t\treturn false;\n\t\t}\n\t\tconst isBundled = extension.sourceInfo.configurationOrigin === \"bundled\";\n\t\tfor (const inherited of extensionsResult.extensions) {\n\t\t\tif (\n\t\t\t\tinherited.sourceInfo.configurationOrigin !== \"inherited-pi\" ||\n\t\t\t\t!hasActiveOrPendingRegistration(extensionsResult.runtime, inherited, resourceType, name)\n\t\t\t)\n\t\t\t\tcontinue;\n\t\t\tif (resourceType === \"flag\" && flagOwners.get(name) === inherited.path) {\n\t\t\t\tflagOwners.delete(name);\n\t\t\t\tflagOwnerOrigins.delete(name);\n\t\t\t\tif (!extensionsResult.runtime.explicitFlagNames?.has(name))\n\t\t\t\t\textensionsResult.runtime.flagValues.delete(name);\n\t\t\t}\n\t\t\tdeleteRegistration(extensionsResult.runtime, inherited, resourceType, name);\n\t\t\tif (isBundled) recordOverlap(extensionsResult, resourceType, name, extension, inherited);\n\t\t}\n\t\treturn true;\n\t};\n}\n\nfunction hasActiveOrPendingRegistration(\n\truntime: ExtensionRuntime,\n\textension: Extension,\n\tresourceType: Exclude<OverlappingResourceType, \"prompt\">,\n\tname: string,\n): boolean {\n\treturn (\n\t\thasRegistration(extension, resourceType, name) ||\n\t\truntime.hasPendingResourceRegistration?.(extension, resourceType, name) === true\n\t);\n}\n\nfunction hasRegistration(\n\textension: Extension,\n\tresourceType: Exclude<OverlappingResourceType, \"prompt\">,\n\tname: string,\n): boolean {\n\tswitch (resourceType) {\n\t\tcase \"tool\":\n\t\t\treturn extension.tools.has(name);\n\t\tcase \"command\":\n\t\t\treturn extension.commands.has(name);\n\t\tcase \"flag\":\n\t\t\treturn extension.flags.has(name);\n\t\tcase \"shortcut\":\n\t\t\treturn extension.shortcuts.has(name as KeyId);\n\t}\n}\n\nfunction deleteRegistration(\n\truntime: ExtensionRuntime,\n\textension: Extension,\n\tresourceType: Exclude<OverlappingResourceType, \"prompt\">,\n\tname: string,\n): void {\n\truntime.deletePendingResourceRegistration?.(extension, resourceType, name);\n\tswitch (resourceType) {\n\t\tcase \"tool\":\n\t\t\textension.tools.delete(name);\n\t\t\tbreak;\n\t\tcase \"command\":\n\t\t\textension.commands.delete(name);\n\t\t\tbreak;\n\t\tcase \"flag\":\n\t\t\textension.flags.delete(name);\n\t\t\tbreak;\n\t\tcase \"shortcut\":\n\t\t\textension.shortcuts.delete(name as KeyId);\n\t\t\tbreak;\n\t}\n}\n\nfunction recordOverlap(\n\textensionsResult: LoadExtensionsResult,\n\tresourceType: OverlappingResourceType,\n\tname: string,\n\tbundled: Extension,\n\tinherited: Extension,\n): void {\n\textensionsResult.overlaps ??= [];\n\tconst overlaps = extensionsResult.overlaps;\n\tif (\n\t\toverlaps.some(\n\t\t\t(overlap) =>\n\t\t\t\toverlap.resourceType === resourceType &&\n\t\t\t\toverlap.name === name &&\n\t\t\t\toverlap.inherited.path === inherited.sourceInfo.path,\n\t\t)\n\t)\n\t\treturn;\n\toverlaps.push({ resourceType, name, bundled: bundled.sourceInfo, inherited: inherited.sourceInfo });\n}\n\nfunction rebuildFlagDefaults(extensionsResult: LoadExtensionsResult): void {\n\textensionsResult.runtime.flagValues.clear();\n\textensionsResult.runtime.flagOwners ??= new Map();\n\tconst flagOwners = extensionsResult.runtime.flagOwners;\n\textensionsResult.runtime.flagOwnerOrigins ??= new Map();\n\tconst flagOwnerOrigins = extensionsResult.runtime.flagOwnerOrigins;\n\tflagOwners.clear();\n\tflagOwnerOrigins.clear();\n\tfor (const extension of extensionsResult.extensions) {\n\t\tfor (const [name, flag] of extension.flags) {\n\t\t\tif (!flagOwners.has(name)) {\n\t\t\t\tflagOwners.set(name, extension.path);\n\t\t\t\tflagOwnerOrigins.set(name, extension.sourceInfo.configurationOrigin);\n\t\t\t}\n\t\t\tif (\n\t\t\t\tflagOwnerOrigins.get(name) === extension.sourceInfo.configurationOrigin &&\n\t\t\t\tflag.default !== undefined &&\n\t\t\t\t!extensionsResult.runtime.flagValues.has(name)\n\t\t\t) {\n\t\t\t\textensionsResult.runtime.flagValues.set(name, flag.default);\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction detectExtensionConflicts(extensions: Extension[]): Array<{ path: string; message: string }> {\n\tconst conflicts: Array<{ path: string; message: string }> = [];\n\n\t// Track which extension registered each tool and flag\n\tconst toolOwners = new Map<string, string>();\n\tconst flagOwners = new Map<string, string>();\n\n\tfor (const ext of extensions) {\n\t\t// Check tools\n\t\tfor (const toolName of ext.tools.keys()) {\n\t\t\tconst existingOwner = toolOwners.get(toolName);\n\t\t\tif (existingOwner && existingOwner !== ext.path) {\n\t\t\t\tconflicts.push({\n\t\t\t\t\tpath: ext.path,\n\t\t\t\t\tmessage: `Tool \"${toolName}\" conflicts with ${existingOwner}`,\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\ttoolOwners.set(toolName, ext.path);\n\t\t\t}\n\t\t}\n\n\t\t// Check flags\n\t\tfor (const flagName of ext.flags.keys()) {\n\t\t\tconst existingOwner = flagOwners.get(flagName);\n\t\t\tif (existingOwner && existingOwner !== ext.path) {\n\t\t\t\tconflicts.push({\n\t\t\t\t\tpath: ext.path,\n\t\t\t\t\tmessage: `Flag \"--${flagName}\" conflicts with ${existingOwner}`,\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tflagOwners.set(flagName, ext.path);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn conflicts;\n}\n"]}
@@ -1,6 +1,6 @@
1
1
  import { getAgentDir, getAgentDirs } from "../config.js";
2
- import { canonicalizePath, resolvePath } from "../utils/paths.js";
3
- import { isSyntheticPath } from "./source-info.js";
2
+ import { resolvePath } from "../utils/paths.js";
3
+ import { getResourcePathKey, isSyntheticPath } from "./source-info.js";
4
4
  export function getLoaderAgentDirs(agentDir) {
5
5
  return agentDir === getAgentDir() ? getAgentDirs() : [agentDir];
6
6
  }
@@ -12,10 +12,10 @@ export function mergeResourcePaths(cwd, primary, additional) {
12
12
  const seen = new Set();
13
13
  for (const p of [...primary, ...additional]) {
14
14
  const resolved = resolveResourcePath(cwd, p);
15
- const canonicalPath = canonicalizePath(resolved);
16
- if (seen.has(canonicalPath))
15
+ const pathKey = getResourcePathKey(resolved);
16
+ if (seen.has(pathKey))
17
17
  continue;
18
- seen.add(canonicalPath);
18
+ seen.add(pathKey);
19
19
  merged.push(resolved);
20
20
  }
21
21
  return merged;
@@ -1 +1 @@
1
- {"version":3,"file":"resource-loader-paths.js","sourceRoot":"","sources":["../../src/core/resource-loader-paths.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAEnD,MAAM,UAAU,kBAAkB,CAAC,QAAgB;IAClD,OAAO,QAAQ,KAAK,WAAW,EAAE,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;AACjE,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,GAAW,EAAE,IAAY;IAC5D,OAAO,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;AAC9E,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,GAAW,EAAE,OAAiB,EAAE,UAAoB;IACtF,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAE/B,KAAK,MAAM,CAAC,IAAI,CAAC,GAAG,OAAO,EAAE,GAAG,UAAU,CAAC,EAAE,CAAC;QAC7C,MAAM,QAAQ,GAAG,mBAAmB,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QAC7C,MAAM,aAAa,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QACjD,IAAI,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC;YAAE,SAAS;QACtC,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QACxB,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACvB,CAAC;IAED,OAAO,MAAM,CAAC;AACf,CAAC","sourcesContent":["import { getAgentDir, getAgentDirs } from \"../config.js\";\nimport { canonicalizePath, resolvePath } from \"../utils/paths.ts\";\nimport { isSyntheticPath } from \"./source-info.ts\";\n\nexport function getLoaderAgentDirs(agentDir: string): string[] {\n\treturn agentDir === getAgentDir() ? getAgentDirs() : [agentDir];\n}\n\nexport function resolveResourcePath(cwd: string, path: string): string {\n\treturn isSyntheticPath(path) ? path : resolvePath(path, cwd, { trim: true });\n}\n\nexport function mergeResourcePaths(cwd: string, primary: string[], additional: string[]): string[] {\n\tconst merged: string[] = [];\n\tconst seen = new Set<string>();\n\n\tfor (const p of [...primary, ...additional]) {\n\t\tconst resolved = resolveResourcePath(cwd, p);\n\t\tconst canonicalPath = canonicalizePath(resolved);\n\t\tif (seen.has(canonicalPath)) continue;\n\t\tseen.add(canonicalPath);\n\t\tmerged.push(resolved);\n\t}\n\n\treturn merged;\n}\n"]}
1
+ {"version":3,"file":"resource-loader-paths.js","sourceRoot":"","sources":["../../src/core/resource-loader-paths.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAEvE,MAAM,UAAU,kBAAkB,CAAC,QAAgB;IAClD,OAAO,QAAQ,KAAK,WAAW,EAAE,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;AACjE,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,GAAW,EAAE,IAAY;IAC5D,OAAO,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;AAC9E,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,GAAW,EAAE,OAAiB,EAAE,UAAoB;IACtF,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAE/B,KAAK,MAAM,CAAC,IAAI,CAAC,GAAG,OAAO,EAAE,GAAG,UAAU,CAAC,EAAE,CAAC;QAC7C,MAAM,QAAQ,GAAG,mBAAmB,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QAC7C,MAAM,OAAO,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;QAC7C,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;YAAE,SAAS;QAChC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAClB,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACvB,CAAC;IAED,OAAO,MAAM,CAAC;AACf,CAAC","sourcesContent":["import { getAgentDir, getAgentDirs } from \"../config.js\";\nimport { resolvePath } from \"../utils/paths.ts\";\nimport { getResourcePathKey, isSyntheticPath } from \"./source-info.ts\";\n\nexport function getLoaderAgentDirs(agentDir: string): string[] {\n\treturn agentDir === getAgentDir() ? getAgentDirs() : [agentDir];\n}\n\nexport function resolveResourcePath(cwd: string, path: string): string {\n\treturn isSyntheticPath(path) ? path : resolvePath(path, cwd, { trim: true });\n}\n\nexport function mergeResourcePaths(cwd: string, primary: string[], additional: string[]): string[] {\n\tconst merged: string[] = [];\n\tconst seen = new Set<string>();\n\n\tfor (const p of [...primary, ...additional]) {\n\t\tconst resolved = resolveResourcePath(cwd, p);\n\t\tconst pathKey = getResourcePathKey(resolved);\n\t\tif (seen.has(pathKey)) continue;\n\t\tseen.add(pathKey);\n\t\tmerged.push(resolved);\n\t}\n\n\treturn merged;\n}\n"]}
@@ -5,5 +5,4 @@ import { type SourceInfo } from "./source-info.ts";
5
5
  export declare function applyExtensionSourceInfo(loader: DefaultResourceLoader, extensions: Extension[], metadataByPath: Map<string, PathMetadata>): void;
6
6
  export declare function findSourceInfoForPath(loader: DefaultResourceLoader, resourcePath: string, extraSourceInfos?: Map<string, SourceInfo>, metadataByPath?: Map<string, PathMetadata>): SourceInfo | undefined;
7
7
  export declare function getDefaultSourceInfoForPath(loader: DefaultResourceLoader, filePath: string): SourceInfo;
8
- export declare function isUnderPath(target: string, root: string): boolean;
9
8
  //# sourceMappingURL=resource-loader-source-info.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"resource-loader-source-info.d.ts","sourceRoot":"","sources":["../../src/core/resource-loader-source-info.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAGvE,OAAO,EAA6D,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9G,wBAAgB,wBAAwB,CACvC,MAAM,EAAE,qBAAqB,EAC7B,UAAU,EAAE,SAAS,EAAE,EACvB,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,GACvC,IAAI,CAgBN;AAED,wBAAgB,qBAAqB,CACpC,MAAM,EAAE,qBAAqB,EAC7B,YAAY,EAAE,MAAM,EACpB,gBAAgB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,EAC1C,cAAc,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,GACxC,UAAU,GAAG,SAAS,CAyCxB;AAED,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,qBAAqB,EAAE,QAAQ,EAAE,MAAM,GAAG,UAAU,CA6CvG;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAOjE"}
1
+ {"version":3,"file":"resource-loader-source-info.d.ts","sourceRoot":"","sources":["../../src/core/resource-loader-source-info.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAGvE,OAAO,EAA6D,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9G,wBAAgB,wBAAwB,CACvC,MAAM,EAAE,qBAAqB,EAC7B,UAAU,EAAE,SAAS,EAAE,EACvB,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,GACvC,IAAI,CAgBN;AAED,wBAAgB,qBAAqB,CACpC,MAAM,EAAE,qBAAqB,EAC7B,YAAY,EAAE,MAAM,EACpB,gBAAgB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,EAC1C,cAAc,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,GACxC,UAAU,GAAG,SAAS,CAiCxB;AAED,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,qBAAqB,EAAE,QAAQ,EAAE,MAAM,GAAG,UAAU,CA6CvG"}
@@ -1,6 +1,7 @@
1
1
  import { statSync } from "node:fs";
2
- import { join, resolve, sep } from "node:path";
2
+ import { join, resolve } from "node:path";
3
3
  import { getProjectConfigDirs } from "../config.js";
4
+ import { isPathWithin } from "../utils/paths.js";
4
5
  import { resourceInternals } from "./resource-loader-internals.js";
5
6
  import { getLoaderAgentDirs } from "./resource-loader-paths.js";
6
7
  import { createSourceInfo, getSyntheticPathSource, isSyntheticPath } from "./source-info.js";
@@ -31,9 +32,7 @@ export function findSourceInfoForPath(loader, resourcePath, extraSourceInfos, me
31
32
  const normalizedResourcePath = resolve(resourcePath);
32
33
  if (extraSourceInfos) {
33
34
  for (const [sourcePath, sourceInfo] of extraSourceInfos.entries()) {
34
- const normalizedSourcePath = resolve(sourcePath);
35
- if (normalizedResourcePath === normalizedSourcePath ||
36
- normalizedResourcePath.startsWith(`${normalizedSourcePath}${sep}`)) {
35
+ if (isPathWithin(sourcePath, normalizedResourcePath)) {
37
36
  return { ...sourceInfo, path: resourcePath };
38
37
  }
39
38
  }
@@ -44,9 +43,7 @@ export function findSourceInfoForPath(loader, resourcePath, extraSourceInfos, me
44
43
  return createSourceInfo(resourcePath, exact);
45
44
  }
46
45
  for (const [sourcePath, metadata] of metadataByPath.entries()) {
47
- const normalizedSourcePath = resolve(sourcePath);
48
- if (normalizedResourcePath === normalizedSourcePath ||
49
- normalizedResourcePath.startsWith(`${normalizedSourcePath}${sep}`)) {
46
+ if (isPathWithin(sourcePath, normalizedResourcePath)) {
50
47
  return createSourceInfo(resourcePath, metadata);
51
48
  }
52
49
  }
@@ -78,12 +75,12 @@ export function getDefaultSourceInfoForPath(loader, filePath) {
78
75
  join(configDir, "extensions"),
79
76
  ]);
80
77
  for (const root of agentRoots) {
81
- if (isUnderPath(normalizedPath, root)) {
78
+ if (isPathWithin(root, normalizedPath)) {
82
79
  return { path: filePath, source: "local", scope: "user", origin: "top-level", baseDir: root };
83
80
  }
84
81
  }
85
82
  for (const root of projectRoots) {
86
- if (isUnderPath(normalizedPath, root)) {
83
+ if (isPathWithin(root, normalizedPath)) {
87
84
  return { path: filePath, source: "local", scope: "project", origin: "top-level", baseDir: root };
88
85
  }
89
86
  }
@@ -95,12 +92,4 @@ export function getDefaultSourceInfoForPath(loader, filePath) {
95
92
  baseDir: statSync(normalizedPath).isDirectory() ? normalizedPath : resolve(normalizedPath, ".."),
96
93
  };
97
94
  }
98
- export function isUnderPath(target, root) {
99
- const normalizedRoot = resolve(root);
100
- if (target === normalizedRoot) {
101
- return true;
102
- }
103
- const prefix = normalizedRoot.endsWith(sep) ? normalizedRoot : `${normalizedRoot}${sep}`;
104
- return target.startsWith(prefix);
105
- }
106
95
  //# sourceMappingURL=resource-loader-source-info.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"resource-loader-source-info.js","sourceRoot":"","sources":["../../src/core/resource-loader-source-info.ts"],"names":[],"mappings":"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","sourcesContent":["import { statSync } from \"node:fs\";\nimport { join, resolve, sep } from \"node:path\";\nimport { getProjectConfigDirs } from \"../config.js\";\nimport type { Extension } from \"./extensions/types.ts\";\nimport type { PathMetadata } from \"./package-manager.ts\";\nimport type { DefaultResourceLoader } from \"./resource-loader-core.ts\";\nimport { resourceInternals } from \"./resource-loader-internals.ts\";\nimport { getLoaderAgentDirs } from \"./resource-loader-paths.ts\";\nimport { createSourceInfo, getSyntheticPathSource, isSyntheticPath, type SourceInfo } from \"./source-info.ts\";\n\nexport function applyExtensionSourceInfo(\n\tloader: DefaultResourceLoader,\n\textensions: Extension[],\n\tmetadataByPath: Map<string, PathMetadata>,\n): void {\n\tfor (const extension of extensions) {\n\t\tconst sourceInfo =\n\t\t\tfindSourceInfoForPath(loader, extension.path, undefined, metadataByPath) ??\n\t\t\tgetDefaultSourceInfoForPath(loader, extension.path);\n\t\textension.sourceInfo = {\n\t\t\t...sourceInfo,\n\t\t\tconfigurationOrigin: sourceInfo.configurationOrigin ?? extension.sourceInfo.configurationOrigin,\n\t\t};\n\t\tfor (const command of extension.commands.values()) {\n\t\t\tcommand.sourceInfo = extension.sourceInfo;\n\t\t}\n\t\tfor (const tool of extension.tools.values()) {\n\t\t\ttool.sourceInfo = extension.sourceInfo;\n\t\t}\n\t}\n}\n\nexport function findSourceInfoForPath(\n\tloader: DefaultResourceLoader,\n\tresourcePath: string,\n\textraSourceInfos?: Map<string, SourceInfo>,\n\tmetadataByPath?: Map<string, PathMetadata>,\n): SourceInfo | undefined {\n\tif (!resourcePath) {\n\t\treturn undefined;\n\t}\n\n\tif (isSyntheticPath(resourcePath)) {\n\t\tconst metadata = metadataByPath?.get(resourcePath);\n\t\treturn metadata ? createSourceInfo(resourcePath, metadata) : getDefaultSourceInfoForPath(loader, resourcePath);\n\t}\n\n\tconst normalizedResourcePath = resolve(resourcePath);\n\tif (extraSourceInfos) {\n\t\tfor (const [sourcePath, sourceInfo] of extraSourceInfos.entries()) {\n\t\t\tconst normalizedSourcePath = resolve(sourcePath);\n\t\t\tif (\n\t\t\t\tnormalizedResourcePath === normalizedSourcePath ||\n\t\t\t\tnormalizedResourcePath.startsWith(`${normalizedSourcePath}${sep}`)\n\t\t\t) {\n\t\t\t\treturn { ...sourceInfo, path: resourcePath };\n\t\t\t}\n\t\t}\n\t}\n\n\tif (metadataByPath) {\n\t\tconst exact = metadataByPath.get(normalizedResourcePath) ?? metadataByPath.get(resourcePath);\n\t\tif (exact) {\n\t\t\treturn createSourceInfo(resourcePath, exact);\n\t\t}\n\n\t\tfor (const [sourcePath, metadata] of metadataByPath.entries()) {\n\t\t\tconst normalizedSourcePath = resolve(sourcePath);\n\t\t\tif (\n\t\t\t\tnormalizedResourcePath === normalizedSourcePath ||\n\t\t\t\tnormalizedResourcePath.startsWith(`${normalizedSourcePath}${sep}`)\n\t\t\t) {\n\t\t\t\treturn createSourceInfo(resourcePath, metadata);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn undefined;\n}\n\nexport function getDefaultSourceInfoForPath(loader: DefaultResourceLoader, filePath: string): SourceInfo {\n\tconst state = resourceInternals(loader);\n\tconst syntheticSource = getSyntheticPathSource(filePath);\n\tif (syntheticSource) {\n\t\treturn {\n\t\t\tpath: filePath,\n\t\t\tsource: syntheticSource,\n\t\t\tscope: \"temporary\",\n\t\t\torigin: \"top-level\",\n\t\t};\n\t}\n\n\tconst normalizedPath = resolve(filePath);\n\tconst agentRoots = getLoaderAgentDirs(state.agentDir).flatMap((agentDir) => [\n\t\tjoin(agentDir, \"skills\"),\n\t\tjoin(agentDir, \"prompts\"),\n\t\tjoin(agentDir, \"themes\"),\n\t\tjoin(agentDir, \"extensions\"),\n\t]);\n\tconst projectRoots = getProjectConfigDirs(state.cwd).flatMap((configDir) => [\n\t\tjoin(configDir, \"skills\"),\n\t\tjoin(configDir, \"prompts\"),\n\t\tjoin(configDir, \"themes\"),\n\t\tjoin(configDir, \"extensions\"),\n\t]);\n\n\tfor (const root of agentRoots) {\n\t\tif (isUnderPath(normalizedPath, root)) {\n\t\t\treturn { path: filePath, source: \"local\", scope: \"user\", origin: \"top-level\", baseDir: root };\n\t\t}\n\t}\n\n\tfor (const root of projectRoots) {\n\t\tif (isUnderPath(normalizedPath, root)) {\n\t\t\treturn { path: filePath, source: \"local\", scope: \"project\", origin: \"top-level\", baseDir: root };\n\t\t}\n\t}\n\n\treturn {\n\t\tpath: filePath,\n\t\tsource: \"local\",\n\t\tscope: \"temporary\",\n\t\torigin: \"top-level\",\n\t\tbaseDir: statSync(normalizedPath).isDirectory() ? normalizedPath : resolve(normalizedPath, \"..\"),\n\t};\n}\n\nexport function isUnderPath(target: string, root: string): boolean {\n\tconst normalizedRoot = resolve(root);\n\tif (target === normalizedRoot) {\n\t\treturn true;\n\t}\n\tconst prefix = normalizedRoot.endsWith(sep) ? normalizedRoot : `${normalizedRoot}${sep}`;\n\treturn target.startsWith(prefix);\n}\n"]}
1
+ {"version":3,"file":"resource-loader-source-info.js","sourceRoot":"","sources":["../../src/core/resource-loader-source-info.ts"],"names":[],"mappings":"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","sourcesContent":["import { statSync } from \"node:fs\";\nimport { join, resolve } from \"node:path\";\nimport { getProjectConfigDirs } from \"../config.js\";\nimport { isPathWithin } from \"../utils/paths.ts\";\nimport type { Extension } from \"./extensions/types.ts\";\nimport type { PathMetadata } from \"./package-manager.ts\";\nimport type { DefaultResourceLoader } from \"./resource-loader-core.ts\";\nimport { resourceInternals } from \"./resource-loader-internals.ts\";\nimport { getLoaderAgentDirs } from \"./resource-loader-paths.ts\";\nimport { createSourceInfo, getSyntheticPathSource, isSyntheticPath, type SourceInfo } from \"./source-info.ts\";\n\nexport function applyExtensionSourceInfo(\n\tloader: DefaultResourceLoader,\n\textensions: Extension[],\n\tmetadataByPath: Map<string, PathMetadata>,\n): void {\n\tfor (const extension of extensions) {\n\t\tconst sourceInfo =\n\t\t\tfindSourceInfoForPath(loader, extension.path, undefined, metadataByPath) ??\n\t\t\tgetDefaultSourceInfoForPath(loader, extension.path);\n\t\textension.sourceInfo = {\n\t\t\t...sourceInfo,\n\t\t\tconfigurationOrigin: sourceInfo.configurationOrigin ?? extension.sourceInfo.configurationOrigin,\n\t\t};\n\t\tfor (const command of extension.commands.values()) {\n\t\t\tcommand.sourceInfo = extension.sourceInfo;\n\t\t}\n\t\tfor (const tool of extension.tools.values()) {\n\t\t\ttool.sourceInfo = extension.sourceInfo;\n\t\t}\n\t}\n}\n\nexport function findSourceInfoForPath(\n\tloader: DefaultResourceLoader,\n\tresourcePath: string,\n\textraSourceInfos?: Map<string, SourceInfo>,\n\tmetadataByPath?: Map<string, PathMetadata>,\n): SourceInfo | undefined {\n\tif (!resourcePath) {\n\t\treturn undefined;\n\t}\n\n\tif (isSyntheticPath(resourcePath)) {\n\t\tconst metadata = metadataByPath?.get(resourcePath);\n\t\treturn metadata ? createSourceInfo(resourcePath, metadata) : getDefaultSourceInfoForPath(loader, resourcePath);\n\t}\n\n\tconst normalizedResourcePath = resolve(resourcePath);\n\tif (extraSourceInfos) {\n\t\tfor (const [sourcePath, sourceInfo] of extraSourceInfos.entries()) {\n\t\t\tif (isPathWithin(sourcePath, normalizedResourcePath)) {\n\t\t\t\treturn { ...sourceInfo, path: resourcePath };\n\t\t\t}\n\t\t}\n\t}\n\n\tif (metadataByPath) {\n\t\tconst exact = metadataByPath.get(normalizedResourcePath) ?? metadataByPath.get(resourcePath);\n\t\tif (exact) {\n\t\t\treturn createSourceInfo(resourcePath, exact);\n\t\t}\n\n\t\tfor (const [sourcePath, metadata] of metadataByPath.entries()) {\n\t\t\tif (isPathWithin(sourcePath, normalizedResourcePath)) {\n\t\t\t\treturn createSourceInfo(resourcePath, metadata);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn undefined;\n}\n\nexport function getDefaultSourceInfoForPath(loader: DefaultResourceLoader, filePath: string): SourceInfo {\n\tconst state = resourceInternals(loader);\n\tconst syntheticSource = getSyntheticPathSource(filePath);\n\tif (syntheticSource) {\n\t\treturn {\n\t\t\tpath: filePath,\n\t\t\tsource: syntheticSource,\n\t\t\tscope: \"temporary\",\n\t\t\torigin: \"top-level\",\n\t\t};\n\t}\n\n\tconst normalizedPath = resolve(filePath);\n\tconst agentRoots = getLoaderAgentDirs(state.agentDir).flatMap((agentDir) => [\n\t\tjoin(agentDir, \"skills\"),\n\t\tjoin(agentDir, \"prompts\"),\n\t\tjoin(agentDir, \"themes\"),\n\t\tjoin(agentDir, \"extensions\"),\n\t]);\n\tconst projectRoots = getProjectConfigDirs(state.cwd).flatMap((configDir) => [\n\t\tjoin(configDir, \"skills\"),\n\t\tjoin(configDir, \"prompts\"),\n\t\tjoin(configDir, \"themes\"),\n\t\tjoin(configDir, \"extensions\"),\n\t]);\n\n\tfor (const root of agentRoots) {\n\t\tif (isPathWithin(root, normalizedPath)) {\n\t\t\treturn { path: filePath, source: \"local\", scope: \"user\", origin: \"top-level\", baseDir: root };\n\t\t}\n\t}\n\n\tfor (const root of projectRoots) {\n\t\tif (isPathWithin(root, normalizedPath)) {\n\t\t\treturn { path: filePath, source: \"local\", scope: \"project\", origin: \"top-level\", baseDir: root };\n\t\t}\n\t}\n\n\treturn {\n\t\tpath: filePath,\n\t\tsource: \"local\",\n\t\tscope: \"temporary\",\n\t\torigin: \"top-level\",\n\t\tbaseDir: statSync(normalizedPath).isDirectory() ? normalizedPath : resolve(normalizedPath, \"..\"),\n\t};\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"sdk.d.ts","sourceRoot":"","sources":["../../src/core/sdk.ts"],"names":[],"mappings":"AAwCA,OAAO,KAAK,EAAE,yBAAyB,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAuB1F,YAAY,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACtE,cAAc,kBAAkB,CAAC;AACjC,YAAY,EACX,aAAa,EACb,yBAAyB,EACzB,wBAAwB,EACxB,iBAAiB,EACjB,wBAAwB,EACxB,cAAc,EACd,uBAAuB,GACvB,MAAM,gBAAgB,CAAC;AA+BxB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,wBAAsB,kBAAkB,CAAC,OAAO,GAAE,yBAA8B,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAEnH;AAED,4EAA4E;AAC5E,wBAAgB,2BAA2B,CAC1C,OAAO,EAAE,yBAAyB,EAClC,mBAAmB,UAAO,GACxB,OAAO,CAAC,wBAAwB,CAAC,CAEnC"}
1
+ {"version":3,"file":"sdk.d.ts","sourceRoot":"","sources":["../../src/core/sdk.ts"],"names":[],"mappings":"AAyCA,OAAO,KAAK,EAAE,yBAAyB,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAuB1F,YAAY,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACtE,cAAc,kBAAkB,CAAC;AACjC,YAAY,EACX,aAAa,EACb,yBAAyB,EACzB,wBAAwB,EACxB,iBAAiB,EACjB,wBAAwB,EACxB,cAAc,EACd,uBAAuB,GACvB,MAAM,gBAAgB,CAAC;AA+BxB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,wBAAsB,kBAAkB,CAAC,OAAO,GAAE,yBAA8B,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAEnH;AAED,4EAA4E;AAC5E,wBAAgB,2BAA2B,CAC1C,OAAO,EAAE,yBAAyB,EAClC,mBAAmB,UAAO,GACxB,OAAO,CAAC,wBAAwB,CAAC,CAEnC"}
package/dist/core/sdk.js CHANGED
@@ -6,6 +6,7 @@ import { Agent, setDefaultStreamFn } from "@earendil-works/pi-agent-core";
6
6
  import { getAgentDir } from "../config.js";
7
7
  import { resolvePath } from "../utils/paths.js";
8
8
  import { AgentSession } from "./agent-session.js";
9
+ import { markRuntimeStreamFunction } from "./agent-session-models.js";
9
10
  import { restoreAnthropicReplayThinkingBlocks } from "./anthropic-thinking-guard.js";
10
11
  import { formatNoModelsAvailableMessage } from "./auth-guidance.js";
11
12
  import { getBuiltinPackageLocations, getBuiltinPackagePaths } from "./builtin-packages.js";
@@ -546,6 +547,8 @@ async function constructAgentSession(options, deferStart, persistInitialState, a
546
547
  thinkingBudgets: settingsManager.getThinkingBudgets(),
547
548
  maxRetryDelayMs: settingsManager.getProviderRetrySettings().maxRetryDelayMs,
548
549
  });
550
+ // This stream resolves auth through modelRuntime, so summaries must not pre-resolve it (upstream #11520).
551
+ markRuntimeStreamFunction(agent.streamFunction, modelRuntime);
549
552
  // The isolated host mirrors child-owned storage without writing startup metadata.
550
553
  if (persistInitialState) {
551
554
  if (hasExistingSession) {