experimental-ash 0.44.0 → 0.46.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (299) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/dist/docs/internals/discovery.md +1 -1
  3. package/dist/docs/internals/hooks.md +7 -10
  4. package/dist/docs/public/advanced/hooks.mdx +5 -68
  5. package/dist/docs/public/advanced/project-layout.md +14 -14
  6. package/dist/src/compiled/.vendor-stamp.json +4 -3
  7. package/dist/src/compiled/@ai-sdk/anthropic/index.js +1 -1
  8. package/dist/src/compiled/@ai-sdk/google/index.js +1 -1
  9. package/dist/src/compiled/@ai-sdk/mcp/index.js +1 -1
  10. package/dist/src/compiled/@ai-sdk/openai/index.js +1 -1
  11. package/dist/src/compiled/@chat-adapter/slack/index.js +4 -4
  12. package/dist/src/compiled/@vercel/oidc/index.js +2 -2
  13. package/dist/src/compiled/@vercel/sandbox/index.d.ts +12 -0
  14. package/dist/src/compiled/@vercel/sandbox/index.js +18 -18
  15. package/dist/src/compiled/@workflow/core/attribute-changes.d.ts +1 -1
  16. package/dist/src/compiled/@workflow/core/define-hook.d.ts +1 -1
  17. package/dist/src/compiled/@workflow/core/events-consumer.d.ts +1 -1
  18. package/dist/src/compiled/@workflow/core/index.js +2 -2
  19. package/dist/src/compiled/@workflow/core/runtime/get-world-lazy.d.ts +1 -1
  20. package/dist/src/compiled/@workflow/core/runtime/helpers.d.ts +1 -1
  21. package/dist/src/compiled/@workflow/core/runtime/resume-hook.d.ts +1 -1
  22. package/dist/src/compiled/@workflow/core/runtime/run.d.ts +1 -1
  23. package/dist/src/compiled/@workflow/core/runtime/runs.d.ts +1 -1
  24. package/dist/src/compiled/@workflow/core/runtime/start.d.ts +1 -1
  25. package/dist/src/compiled/@workflow/core/runtime/step-executor.d.ts +3 -1
  26. package/dist/src/compiled/@workflow/core/runtime/suspension-handler.d.ts +1 -1
  27. package/dist/src/compiled/@workflow/core/runtime/world.d.ts +1 -1
  28. package/dist/src/compiled/@workflow/core/runtime.d.ts +1 -1
  29. package/dist/src/compiled/@workflow/core/runtime.js +22 -22
  30. package/dist/src/compiled/@workflow/core/serialization/types.d.ts +6 -0
  31. package/dist/src/compiled/@workflow/core/serialization.d.ts +2 -1
  32. package/dist/src/compiled/@workflow/core/step/context-storage.d.ts +2 -0
  33. package/dist/src/compiled/@workflow/core/symbols.d.ts +6 -0
  34. package/dist/src/compiled/@workflow/core/version.d.ts +1 -1
  35. package/dist/src/compiled/@workflow/core/workflow/define-hook.d.ts +1 -1
  36. package/dist/src/compiled/@workflow/core/workflow.js +1 -1
  37. package/dist/src/compiled/@workflow/world/LICENSE.md +201 -0
  38. package/dist/src/compiled/@workflow/world/attributes.d.ts +110 -0
  39. package/dist/src/compiled/@workflow/world/events.d.ts +415 -0
  40. package/dist/src/compiled/@workflow/world/hooks.d.ts +72 -0
  41. package/dist/src/compiled/@workflow/world/index.d.ts +25 -0
  42. package/dist/src/compiled/@workflow/world/index.js +1 -0
  43. package/dist/src/compiled/@workflow/world/interfaces.d.ts +264 -0
  44. package/dist/src/compiled/@workflow/world/queue.d.ts +120 -0
  45. package/dist/src/compiled/@workflow/world/recovery.d.ts +13 -0
  46. package/dist/src/compiled/@workflow/world/runs.d.ts +144 -0
  47. package/dist/src/compiled/@workflow/world/serialization.d.ts +25 -0
  48. package/dist/src/compiled/@workflow/world/shared.d.ts +83 -0
  49. package/dist/src/compiled/@workflow/world/spec-version.d.ts +46 -0
  50. package/dist/src/compiled/@workflow/world/steps.d.ts +70 -0
  51. package/dist/src/compiled/@workflow/world/ulid.d.ts +35 -0
  52. package/dist/src/compiled/@workflow/world/waits.d.ts +21 -0
  53. package/dist/src/compiled/_chunks/node/{auth-CVVvWjaK.js → auth-BsyzphzW.js} +1 -1
  54. package/dist/src/compiled/_chunks/node/{token-CoIbMZkq.js → token-ORseRyWn.js} +1 -1
  55. package/dist/src/compiled/_chunks/node/{version-nR4RSpFw.js → version-BGue04qw.js} +1 -1
  56. package/dist/src/compiled/_chunks/workflow/{coerce-BhzIW-Hm.js → coerce-BTuSKQr5.js} +1 -1
  57. package/dist/src/compiled/_chunks/workflow/{compat-DcEvieoj.js → compat-CG1hDp-3.js} +1 -1
  58. package/dist/src/compiled/_chunks/workflow/{core-XWIi7wKc.js → core-5Woff_dW.js} +1 -1
  59. package/dist/src/compiled/_chunks/workflow/{dist-Dl-X5RB3.js → dist-Chj-QcBs.js} +1 -1
  60. package/dist/src/compiled/_chunks/workflow/resume-hook-BlALLgSA.js +12 -0
  61. package/dist/src/compiled/_chunks/workflow/{schemas-DmgDnhW3.js → schemas-DWOIBELG.js} +1 -1
  62. package/dist/src/compiled/_chunks/workflow/sleep-Bg0t23kF.js +1 -0
  63. package/dist/src/compiled/_chunks/workflow/{symbols-DygIC1sj.js → symbols-u476uwyR.js} +1 -1
  64. package/dist/src/compiled/_chunks/workflow/{token-D9z1dMB6.js → token-CcaAeZHd.js} +1 -1
  65. package/dist/src/compiled/_chunks/workflow/{token-DV7rQw_t.js → token-nK4u-N7w.js} +1 -1
  66. package/dist/src/compiled/commander/index.js +1 -1
  67. package/dist/src/compiled/experimental-ai-sdk-code-mode/index.js +1 -1
  68. package/dist/src/compiled/gray-matter/index.js +1 -1
  69. package/dist/src/compiled/just-bash/index.d.ts +8 -0
  70. package/dist/src/compiled/just-bash/index.js +1 -1
  71. package/dist/src/compiled/zod/index.js +1 -1
  72. package/dist/src/compiled/zod-validation-error/index.js +1 -1
  73. package/dist/src/compiler/manifest.d.ts +11 -0
  74. package/dist/src/compiler/manifest.js +1 -1
  75. package/dist/src/compiler/module-map.js +1 -1
  76. package/dist/src/compiler/normalize-instructions.d.ts +27 -4
  77. package/dist/src/compiler/normalize-instructions.js +1 -1
  78. package/dist/src/compiler/normalize-manifest.js +3 -1
  79. package/dist/src/compiler/normalize-subagent.js +1 -1
  80. package/dist/src/context/dynamic-instruction-lifecycle.d.ts +26 -0
  81. package/dist/src/context/dynamic-instruction-lifecycle.js +1 -0
  82. package/dist/src/context/dynamic-skill-lifecycle.d.ts +4 -3
  83. package/dist/src/context/dynamic-skill-lifecycle.js +1 -1
  84. package/dist/src/context/hook-lifecycle.js +1 -1
  85. package/dist/src/context/keys.d.ts +11 -4
  86. package/dist/src/discover/filesystem.d.ts +2 -2
  87. package/dist/src/discover/filesystem.js +1 -1
  88. package/dist/src/discover/grammar.d.ts +16 -10
  89. package/dist/src/discover/grammar.js +1 -1
  90. package/dist/src/discover/manifest.d.ts +10 -7
  91. package/dist/src/discover/manifest.js +1 -1
  92. package/dist/src/execution/durable-session-store.js +1 -1
  93. package/dist/src/execution/sandbox/bindings/local.js +1 -1
  94. package/dist/src/execution/sandbox/bindings/vercel.js +1 -1
  95. package/dist/src/execution/sandbox/session.js +1 -1
  96. package/dist/src/execution/workflow-steps.js +1 -1
  97. package/dist/src/harness/compaction.js +1 -1
  98. package/dist/src/harness/tool-loop.js +1 -1
  99. package/dist/src/harness/types.d.ts +2 -4
  100. package/dist/src/internal/application/package.js +1 -1
  101. package/dist/src/internal/authored-definition/core.d.ts +3 -1
  102. package/dist/src/internal/helpers/markdown.d.ts +1 -1
  103. package/dist/src/internal/helpers/markdown.js +1 -1
  104. package/dist/src/node_modules/.pnpm/autoevals@0.0.132_ws@8.21.0/node_modules/autoevals/jsdist/index.js +2 -2
  105. package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/client.js +1 -1
  106. package/dist/src/node_modules/.pnpm/openai@6.39.1_ws@8.21.0_zod@3.25.76/node_modules/openai/version.js +1 -0
  107. package/dist/src/node_modules/.pnpm/zod-to-json-schema@3.25.2_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/string.js +1 -1
  108. package/dist/src/packages/ash-scaffold/src/channels.js +1 -1
  109. package/dist/src/public/channels/slack/blocks.js +1 -1
  110. package/dist/src/public/definitions/hook.d.ts +4 -19
  111. package/dist/src/public/definitions/instructions.d.ts +19 -7
  112. package/dist/src/public/definitions/instructions.js +1 -1
  113. package/dist/src/public/definitions/sandbox.d.ts +1 -1
  114. package/dist/src/public/hooks/index.d.ts +1 -1
  115. package/dist/src/public/instructions/index.d.ts +4 -1
  116. package/dist/src/public/instructions/index.js +1 -1
  117. package/dist/src/runtime/resolve-agent.js +1 -1
  118. package/dist/src/runtime/resolve-dynamic-instructions.d.ts +4 -0
  119. package/dist/src/runtime/resolve-dynamic-instructions.js +1 -0
  120. package/dist/src/runtime/types.d.ts +11 -0
  121. package/dist/src/shared/dynamic-tool-definition.d.ts +12 -0
  122. package/dist/src/shared/dynamic-tool-definition.js +1 -1
  123. package/dist/src/shared/sandbox-session.d.ts +21 -0
  124. package/dist/src/shared/skill-package.d.ts +7 -0
  125. package/dist/src/shared/skill-package.js +1 -1
  126. package/package.json +5 -5
  127. package/dist/src/compiled/@ai-sdk/anthropic/package.json +0 -7
  128. package/dist/src/compiled/@ai-sdk/google/package.json +0 -7
  129. package/dist/src/compiled/@ai-sdk/mcp/package.json +0 -7
  130. package/dist/src/compiled/@ai-sdk/openai/package.json +0 -7
  131. package/dist/src/compiled/@ai-sdk/otel/package.json +0 -7
  132. package/dist/src/compiled/@ai-sdk/provider/package.json +0 -7
  133. package/dist/src/compiled/@chat-adapter/slack/package.json +0 -7
  134. package/dist/src/compiled/@chat-adapter/state-memory/package.json +0 -7
  135. package/dist/src/compiled/@opentelemetry/api/package.json +0 -7
  136. package/dist/src/compiled/@standard-schema/spec/package.json +0 -7
  137. package/dist/src/compiled/@vercel/oidc/package.json +0 -7
  138. package/dist/src/compiled/@vercel/sandbox/package.json +0 -7
  139. package/dist/src/compiled/@workflow/core/_workflow-world.d.ts +0 -60
  140. package/dist/src/compiled/@workflow/core/package.json +0 -7
  141. package/dist/src/compiled/@workflow/errors/package.json +0 -7
  142. package/dist/src/compiled/_chunks/workflow/resume-hook-B2kqAsX6.js +0 -12
  143. package/dist/src/compiled/_chunks/workflow/sleep-kQ0UwHn0.js +0 -1
  144. package/dist/src/compiled/chat/package.json +0 -7
  145. package/dist/src/compiled/chokidar/package.json +0 -7
  146. package/dist/src/compiled/commander/package.json +0 -7
  147. package/dist/src/compiled/experimental-ai-sdk-code-mode/package.json +0 -7
  148. package/dist/src/compiled/gray-matter/package.json +0 -7
  149. package/dist/src/compiled/jose/package.json +0 -7
  150. package/dist/src/compiled/jsonc-parser/package.json +0 -7
  151. package/dist/src/compiled/just-bash/package.json +0 -7
  152. package/dist/src/compiled/picocolors/package.json +0 -7
  153. package/dist/src/compiled/turndown/package.json +0 -7
  154. package/dist/src/compiled/zod/package.json +0 -7
  155. package/dist/src/compiled/zod-validation-error/package.json +0 -7
  156. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/version.js +0 -1
  157. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/_vendor/partial-json-parser/parser.js +0 -0
  158. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/auth/workload-identity-auth.js +0 -0
  159. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/azure.js +0 -0
  160. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/core/api-promise.js +0 -0
  161. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/core/error.js +0 -0
  162. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/core/pagination.js +0 -0
  163. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/core/resource.js +0 -0
  164. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/core/streaming.js +0 -0
  165. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/core/uploads.js +0 -0
  166. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/error.js +0 -0
  167. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/index.js +0 -0
  168. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/internal/decoders/line.js +0 -0
  169. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/internal/detect-platform.js +0 -0
  170. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/internal/errors.js +0 -0
  171. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/internal/headers.js +0 -0
  172. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/internal/parse.js +0 -0
  173. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/internal/qs/formats.js +0 -0
  174. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/internal/qs/stringify.js +0 -0
  175. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/internal/qs/utils.js +0 -0
  176. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/internal/request-options.js +0 -0
  177. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/internal/shims.js +0 -0
  178. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/internal/to-file.js +0 -0
  179. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/internal/tslib.js +0 -0
  180. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/internal/uploads.js +0 -0
  181. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/internal/utils/base64.js +0 -0
  182. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/internal/utils/bytes.js +0 -0
  183. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/internal/utils/env.js +0 -0
  184. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/internal/utils/log.js +0 -0
  185. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/internal/utils/path.js +0 -0
  186. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/internal/utils/query.js +0 -0
  187. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/internal/utils/sleep.js +0 -0
  188. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/internal/utils/uuid.js +0 -0
  189. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/internal/utils/values.js +0 -0
  190. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/internal/utils.js +0 -0
  191. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/lib/AbstractChatCompletionRunner.js +0 -0
  192. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/lib/AssistantStream.js +0 -0
  193. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/lib/ChatCompletionRunner.js +0 -0
  194. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/lib/ChatCompletionStream.js +0 -0
  195. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/lib/ChatCompletionStreamingRunner.js +0 -0
  196. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/lib/EventStream.js +0 -0
  197. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/lib/ResponsesParser.js +0 -0
  198. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/lib/RunnableFunction.js +0 -0
  199. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/lib/Util.js +0 -0
  200. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/lib/chatCompletionUtils.js +0 -0
  201. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/lib/parser.js +0 -0
  202. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/lib/responses/ResponseStream.js +0 -0
  203. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/resources/admin/admin.js +0 -0
  204. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/resources/admin/organization/admin-api-keys.js +0 -0
  205. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/resources/admin/organization/audit-logs.js +0 -0
  206. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/resources/admin/organization/certificates.js +0 -0
  207. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/resources/admin/organization/data-retention.js +0 -0
  208. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/resources/admin/organization/groups/groups.js +0 -0
  209. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/resources/admin/organization/groups/roles.js +0 -0
  210. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/resources/admin/organization/groups/users.js +0 -0
  211. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/resources/admin/organization/invites.js +0 -0
  212. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/resources/admin/organization/organization.js +0 -0
  213. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/resources/admin/organization/projects/api-keys.js +0 -0
  214. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/resources/admin/organization/projects/certificates.js +0 -0
  215. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/resources/admin/organization/projects/data-retention.js +0 -0
  216. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/resources/admin/organization/projects/groups/groups.js +0 -0
  217. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/resources/admin/organization/projects/groups/roles.js +0 -0
  218. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/resources/admin/organization/projects/hosted-tool-permissions.js +0 -0
  219. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/resources/admin/organization/projects/model-permissions.js +0 -0
  220. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/resources/admin/organization/projects/projects.js +0 -0
  221. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/resources/admin/organization/projects/rate-limits.js +0 -0
  222. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/resources/admin/organization/projects/roles.js +0 -0
  223. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/resources/admin/organization/projects/service-accounts.js +0 -0
  224. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/resources/admin/organization/projects/spend-alerts.js +0 -0
  225. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/resources/admin/organization/projects/users/roles.js +0 -0
  226. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/resources/admin/organization/projects/users/users.js +0 -0
  227. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/resources/admin/organization/roles.js +0 -0
  228. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/resources/admin/organization/spend-alerts.js +0 -0
  229. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/resources/admin/organization/usage.js +0 -0
  230. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/resources/admin/organization/users/roles.js +0 -0
  231. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/resources/admin/organization/users/users.js +0 -0
  232. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/resources/audio/audio.js +0 -0
  233. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/resources/audio/speech.js +0 -0
  234. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/resources/audio/transcriptions.js +0 -0
  235. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/resources/audio/translations.js +0 -0
  236. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/resources/batches.js +0 -0
  237. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/resources/beta/assistants.js +0 -0
  238. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/resources/beta/beta.js +0 -0
  239. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/resources/beta/chatkit/chatkit.js +0 -0
  240. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/resources/beta/chatkit/sessions.js +0 -0
  241. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/resources/beta/chatkit/threads.js +0 -0
  242. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/resources/beta/realtime/realtime.js +0 -0
  243. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/resources/beta/realtime/sessions.js +0 -0
  244. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/resources/beta/realtime/transcription-sessions.js +0 -0
  245. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/resources/beta/threads/messages.js +0 -0
  246. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/resources/beta/threads/runs/runs.js +0 -0
  247. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/resources/beta/threads/runs/steps.js +0 -0
  248. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/resources/beta/threads/threads.js +0 -0
  249. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/resources/chat/chat.js +0 -0
  250. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/resources/chat/completions/completions.js +0 -0
  251. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/resources/chat/completions/index.js +0 -0
  252. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/resources/chat/completions/messages.js +0 -0
  253. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/resources/chat/index.js +0 -0
  254. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/resources/completions.js +0 -0
  255. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/resources/containers/containers.js +0 -0
  256. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/resources/containers/files/content.js +0 -0
  257. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/resources/containers/files/files.js +0 -0
  258. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/resources/conversations/conversations.js +0 -0
  259. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/resources/conversations/items.js +0 -0
  260. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/resources/embeddings.js +0 -0
  261. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/resources/evals/evals.js +0 -0
  262. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/resources/evals/runs/output-items.js +0 -0
  263. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/resources/evals/runs/runs.js +0 -0
  264. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/resources/files.js +0 -0
  265. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/resources/fine-tuning/alpha/alpha.js +0 -0
  266. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/resources/fine-tuning/alpha/graders.js +0 -0
  267. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/resources/fine-tuning/checkpoints/checkpoints.js +0 -0
  268. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/resources/fine-tuning/checkpoints/permissions.js +0 -0
  269. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/resources/fine-tuning/fine-tuning.js +0 -0
  270. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/resources/fine-tuning/jobs/checkpoints.js +0 -0
  271. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/resources/fine-tuning/jobs/jobs.js +0 -0
  272. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/resources/fine-tuning/methods.js +0 -0
  273. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/resources/graders/grader-models.js +0 -0
  274. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/resources/graders/graders.js +0 -0
  275. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/resources/images.js +0 -0
  276. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/resources/index.js +0 -0
  277. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/resources/models.js +0 -0
  278. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/resources/moderations.js +0 -0
  279. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/resources/realtime/calls.js +0 -0
  280. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/resources/realtime/client-secrets.js +0 -0
  281. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/resources/realtime/realtime.js +0 -0
  282. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/resources/responses/input-items.js +0 -0
  283. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/resources/responses/input-tokens.js +0 -0
  284. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/resources/responses/responses.js +0 -0
  285. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/resources/shared.js +0 -0
  286. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/resources/skills/content.js +0 -0
  287. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/resources/skills/skills.js +0 -0
  288. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/resources/skills/versions/content.js +0 -0
  289. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/resources/skills/versions/versions.js +0 -0
  290. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/resources/uploads/parts.js +0 -0
  291. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/resources/uploads/uploads.js +0 -0
  292. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/resources/vector-stores/file-batches.js +0 -0
  293. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/resources/vector-stores/files.js +0 -0
  294. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/resources/vector-stores/vector-stores.js +0 -0
  295. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/resources/videos.js +0 -0
  296. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/resources/webhooks/index.js +0 -0
  297. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/resources/webhooks/webhooks.js +0 -0
  298. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/resources/webhooks.js +0 -0
  299. /package/dist/src/node_modules/.pnpm/{openai@6.39.0_ws@8.21.0_zod@3.25.76 → openai@6.39.1_ws@8.21.0_zod@3.25.76}/node_modules/openai/streaming.js +0 -0
@@ -8,4 +8,4 @@ new OpenAI({ apiKey, dangerouslyAllowBrowser: true });
8
8
 
9
9
  https://help.openai.com/en/articles/5112595-best-practices-for-api-key-safety
10
10
  `);this.baseURL=l.baseURL,this.timeout=l.timeout??_a.DEFAULT_TIMEOUT,this.logger=l.logger??console;let u=`warn`;this.logLevel=u,this.logLevel=parseLogLevel(l.logLevel,`ClientOptions.logLevel`,this)??parseLogLevel(readEnv(`OPENAI_LOG`),`process.env['OPENAI_LOG']`,this)??u,this.fetchOptions=l.fetchOptions,this.maxRetries=l.maxRetries??2,this.fetch=l.fetch??getDefaultFetch(),__classPrivateFieldSet(this,_OpenAI_encoder,FallbackEncoder,`f`);let d=readEnv(`OPENAI_CUSTOM_HEADERS`);if(d){let e={};for(let t of d.split(`
11
- `)){let n=t.indexOf(`:`);n>=0&&(e[t.substring(0,n).trim()]=t.substring(n+1).trim())}l.defaultHeaders=buildHeaders([e,l.defaultHeaders])}this._options=l,s&&(this._workloadIdentityAuth=new WorkloadIdentityAuth(s,this.fetch)),this.apiKey=typeof n==`string`?n:null,this.adminAPIKey=r,this.organization=i,this.project=a,this.webhookSecret=o}withOptions(e){return new this.constructor({...this._options,baseURL:this.baseURL,maxRetries:this.maxRetries,timeout:this.timeout,logger:this.logger,logLevel:this.logLevel,fetch:this.fetch,fetchOptions:this.fetchOptions,apiKey:this._options.apiKey,adminAPIKey:this.adminAPIKey,workloadIdentity:this._options.workloadIdentity,organization:this.organization,project:this.project,webhookSecret:this.webhookSecret,...e})}defaultQuery(){return this._options.defaultQuery}validateHeaders({values:e,nulls:t},n={bearerAuth:!0,adminAPIKeyAuth:!0}){if(!(e.get(`authorization`)||e.get(`api-key`))&&!(t.has(`authorization`)||t.has(`api-key`))&&!(this._workloadIdentityAuth&&n.bearerAuth))throw Error(`Could not resolve authentication method. Expected either apiKey or adminAPIKey to be set. Or for one of the "Authorization" or "api-key" headers to be explicitly omitted`)}async authHeaders(e,t={bearerAuth:!0,adminAPIKeyAuth:!0}){return buildHeaders([t.bearerAuth?await this.bearerAuth(e):null,t.adminAPIKeyAuth?await this.adminAPIKeyAuth(e):null])}async bearerAuth(e){if(this._workloadIdentityAuth)return buildHeaders([{Authorization:`Bearer ${await this._workloadIdentityAuth.getToken()}`}]);if(this.apiKey!=null)return buildHeaders([{Authorization:`Bearer ${this.apiKey}`}])}async adminAPIKeyAuth(e){if(this.adminAPIKey!=null)return buildHeaders([{Authorization:`Bearer ${this.adminAPIKey}`}])}stringifyQuery(e){return stringifyQuery(e)}getUserAgent(){return`${this.constructor.name}/JS ${VERSION}`}defaultIdempotencyKey(){return`stainless-node-retry-${uuid4()}`}makeStatusError(e,t,n,r){return APIError.generate(e,t,n,r)}async _callApiKey(){let e=this._options.apiKey;if(typeof e!=`function`)return!1;let t;try{t=await e()}catch(e){throw e instanceof OpenAIError?e:new OpenAIError(`Failed to get token from 'apiKey' function: ${e.message}`,{cause:e})}if(typeof t!=`string`||!t)throw new OpenAIError(`Expected 'apiKey' function argument to return a string but it returned ${t}`);return this.apiKey=t,!0}buildURL(t,n,r){let i=!__classPrivateFieldGet(this,_OpenAI_instances,`m`,_OpenAI_baseURLOverridden).call(this)&&r||this.baseURL,a=isAbsoluteURL(t)?new URL(t):new URL(i+(i.endsWith(`/`)&&t.startsWith(`/`)?t.slice(1):t)),o=this.defaultQuery(),s=Object.fromEntries(a.searchParams);return(!isEmptyObj(o)||!isEmptyObj(s))&&(n={...s,...o,...n}),typeof n==`object`&&n&&!Array.isArray(n)&&(a.search=this.stringifyQuery(n)),a.toString()}async prepareOptions(e){(e.__security??{bearerAuth:!0}).bearerAuth&&await this._callApiKey()}async prepareRequest(e,{url:t,options:n}){}get(e,t){return this.methodRequest(`get`,e,t)}post(e,t){return this.methodRequest(`post`,e,t)}patch(e,t){return this.methodRequest(`patch`,e,t)}put(e,t){return this.methodRequest(`put`,e,t)}delete(e,t){return this.methodRequest(`delete`,e,t)}methodRequest(e,t,n){return this.request(Promise.resolve(n).then(n=>({method:e,path:t,...n})))}request(e,t=null){return new APIPromise(this,this.makeRequest(e,t,void 0))}async makeRequest(e,t,n){let s=await e,l=s.maxRetries??this.maxRetries;t??=l,await this.prepareOptions(s);let{req:u,url:d,timeout:f}=await this.buildRequest(s,{retryCount:l-t});await this.prepareRequest(u,{url:d,options:s});let p=`log_`+(Math.random()*(1<<24)|0).toString(16).padStart(6,`0`),m=n===void 0?``:`, retryOf: ${n}`,h=Date.now();if(loggerFor(this).debug(`[${p}] sending request`,formatRequestDetails({retryOfRequestLogID:n,method:s.method,url:d,options:s,headers:u.headers})),s.signal?.aborted)throw new APIUserAbortError;let g=s.__security??{bearerAuth:!0},_=new AbortController,v=await this.fetchWithAuth(d,u,f,_,g).catch(castToError),y=Date.now();if(v instanceof globalThis.Error){let e=`retrying, ${t} attempts remaining`;if(s.signal?.aborted)throw new APIUserAbortError;let r=isAbortError(v)||/timed? ?out/i.test(String(v)+(`cause`in v?String(v.cause):``));if(t)return loggerFor(this).info(`[${p}] connection ${r?`timed out`:`failed`} - ${e}`),loggerFor(this).debug(`[${p}] connection ${r?`timed out`:`failed`} (${e})`,formatRequestDetails({retryOfRequestLogID:n,url:d,durationMs:y-h,message:v.message})),this.retryRequest(s,t,n??p);throw loggerFor(this).info(`[${p}] connection ${r?`timed out`:`failed`} - error; no more retries left`),loggerFor(this).debug(`[${p}] connection ${r?`timed out`:`failed`} (error; no more retries left)`,formatRequestDetails({retryOfRequestLogID:n,url:d,durationMs:y-h,message:v.message})),v instanceof OAuthError||v instanceof SubjectTokenProviderError?v:r?new APIConnectionTimeoutError:new APIConnectionError({cause:v})}let b=`[${p}${m}${[...v.headers.entries()].filter(([e])=>e===`x-request-id`).map(([e,t])=>`, `+e+`: `+JSON.stringify(t)).join(``)}] ${u.method} ${d} ${v.ok?`succeeded`:`failed`} with status ${v.status} in ${y-h}ms`;if(!v.ok){if(v.status===401&&this._workloadIdentityAuth&&g.bearerAuth&&!s.__metadata?.hasStreamingBody&&!s.__metadata?.workloadIdentityTokenRefreshed)return await CancelReadableStream(v.body),this._workloadIdentityAuth.invalidateToken(),this.makeRequest({...s,__metadata:{...s.__metadata,workloadIdentityTokenRefreshed:!0}},t,n??p);let e=await this.shouldRetry(v);if(t&&e){let e=`retrying, ${t} attempts remaining`;return await CancelReadableStream(v.body),loggerFor(this).info(`${b} - ${e}`),loggerFor(this).debug(`[${p}] response error (${e})`,formatRequestDetails({retryOfRequestLogID:n,url:v.url,status:v.status,headers:v.headers,durationMs:y-h})),this.retryRequest(s,t,n??p,v.headers)}let i=e?`error; no more retries left`:`error; not retryable`;loggerFor(this).info(`${b} - ${i}`);let a=await v.text().catch(e=>castToError(e).message),o=safeJSON(a),c=o?void 0:a;throw loggerFor(this).debug(`[${p}] response error (${i})`,formatRequestDetails({retryOfRequestLogID:n,url:v.url,status:v.status,headers:v.headers,message:c,durationMs:Date.now()-h})),this.makeStatusError(v.status,o,c,v.headers)}return loggerFor(this).info(b),loggerFor(this).debug(`[${p}] response start`,formatRequestDetails({retryOfRequestLogID:n,url:v.url,status:v.status,headers:v.headers,durationMs:y-h})),{response:v,options:s,controller:_,requestLogID:p,retryOfRequestLogID:n,startTime:h}}getAPIList(e,t,n){return this.requestAPIList(t,n&&`then`in n?n.then(t=>({method:`get`,path:e,...t})):{method:`get`,path:e,...n})}requestAPIList(e,t){let n=this.makeRequest(t,null,void 0);return new PagePromise(this,n,e)}async fetchWithAuth(e,t,n,r,i={bearerAuth:!0,adminAPIKeyAuth:!0}){if(this._workloadIdentityAuth&&i.bearerAuth){let e=t.headers,n=e.get(`Authorization`);if(!n||n===`Bearer workload-identity-auth`){let t=await this._workloadIdentityAuth.getToken();e.set(`Authorization`,`Bearer ${t}`)}}return await this.fetchWithTimeout(e,t,n,r)}async fetchWithTimeout(e,t,n,r){let{signal:i,method:a,...o}=t||{},s=this._makeAbort(r);i&&i.addEventListener(`abort`,s,{once:!0});let c=setTimeout(s,n),l=globalThis.ReadableStream&&o.body instanceof globalThis.ReadableStream||typeof o.body==`object`&&o.body!==null&&Symbol.asyncIterator in o.body,u={signal:r.signal,...l?{duplex:`half`}:{},method:`GET`,...o};a&&(u.method=a.toUpperCase());try{return await this.fetch.call(void 0,e,u)}finally{clearTimeout(c)}}async shouldRetry(e){let t=e.headers.get(`x-should-retry`);return t===`true`?!0:t===`false`?!1:e.status===408||e.status===409||e.status===429||e.status>=500}async retryRequest(e,t,n,r){let i,a=r?.get(`retry-after-ms`);if(a){let e=parseFloat(a);Number.isNaN(e)||(i=e)}let o=r?.get(`retry-after`);if(o&&!i){let e=parseFloat(o);i=Number.isNaN(e)?Date.parse(o)-Date.now():e*1e3}if(i===void 0){let n=e.maxRetries??this.maxRetries;i=this.calculateDefaultRetryTimeoutMillis(t,n)}return await sleep(i),this.makeRequest(e,t-1,n)}calculateDefaultRetryTimeoutMillis(e,t){let n=t-e;return Math.min(.5*2**n,8)*(1-Math.random()*.25)*1e3}async buildRequest(e,{retryCount:t=0}={}){let n={...e},{method:r,path:i,query:a,defaultBaseURL:o}=n,s=this.buildURL(i,a,o);`timeout`in n&&validatePositiveInteger(`timeout`,n.timeout),n.timeout=n.timeout??this.timeout;let{bodyHeaders:c,body:l,isStreamingBody:u}=this.buildBody({options:n});return u&&(e.__metadata={...e.__metadata,hasStreamingBody:!0}),{req:{method:r,headers:await this.buildHeaders({options:e,method:r,bodyHeaders:c,retryCount:t}),...n.signal&&{signal:n.signal},...globalThis.ReadableStream&&l instanceof globalThis.ReadableStream&&{duplex:`half`},...l&&{body:l},...this.fetchOptions??{},...n.fetchOptions??{}},url:s,timeout:n.timeout}}async buildHeaders({options:e,method:t,bodyHeaders:n,retryCount:r}){let i={};this.idempotencyHeader&&t!==`get`&&(e.idempotencyKey||=this.defaultIdempotencyKey(),i[this.idempotencyHeader]=e.idempotencyKey);let a=buildHeaders([i,{Accept:`application/json`,"User-Agent":this.getUserAgent(),"X-Stainless-Retry-Count":String(r),...e.timeout?{"X-Stainless-Timeout":String(Math.trunc(e.timeout/1e3))}:{},...getPlatformHeaders(),"OpenAI-Organization":this.organization,"OpenAI-Project":this.project},await this.authHeaders(e,e.__security??{bearerAuth:!0}),this._options.defaultHeaders,n,e.headers]);return this.validateHeaders(a,e.__security??{bearerAuth:!0}),a.values}_makeAbort(e){return()=>e.abort()}buildBody({options:{body:t,headers:n}}){if(!t)return{bodyHeaders:void 0,body:void 0,isStreamingBody:!1};let r=buildHeaders([n]),i=globalThis.ReadableStream!==void 0&&t instanceof globalThis.ReadableStream,a=!i&&(typeof t==`string`||t instanceof ArrayBuffer||ArrayBuffer.isView(t)||globalThis.Blob!==void 0&&t instanceof globalThis.Blob||t instanceof URLSearchParams||t instanceof FormData);return ArrayBuffer.isView(t)||t instanceof ArrayBuffer||t instanceof DataView||typeof t==`string`&&r.values.has(`content-type`)||globalThis.Blob&&t instanceof globalThis.Blob||t instanceof FormData||t instanceof URLSearchParams||i?{bodyHeaders:void 0,body:t,isStreamingBody:!a}:typeof t==`object`&&(Symbol.asyncIterator in t||Symbol.iterator in t&&`next`in t&&typeof t.next==`function`)?{bodyHeaders:void 0,body:ReadableStreamFrom(t),isStreamingBody:!0}:typeof t==`object`&&r.values.get(`content-type`)===`application/x-www-form-urlencoded`?{bodyHeaders:{"content-type":`application/x-www-form-urlencoded`},body:this.stringifyQuery(t),isStreamingBody:!1}:{...__classPrivateFieldGet(this,_OpenAI_encoder,`f`).call(this,{body:t,headers:r}),isStreamingBody:!1}}};_a=OpenAI,_OpenAI_encoder=new WeakMap,_OpenAI_instances=new WeakSet,_OpenAI_baseURLOverridden=function(){return this.baseURL!==`https://api.openai.com/v1`},OpenAI.OpenAI=_a,OpenAI.DEFAULT_TIMEOUT=6e5,OpenAI.OpenAIError=OpenAIError,OpenAI.APIError=APIError,OpenAI.APIConnectionError=APIConnectionError,OpenAI.APIConnectionTimeoutError=APIConnectionTimeoutError,OpenAI.APIUserAbortError=APIUserAbortError,OpenAI.NotFoundError=NotFoundError,OpenAI.ConflictError=ConflictError,OpenAI.RateLimitError=RateLimitError,OpenAI.BadRequestError=BadRequestError,OpenAI.AuthenticationError=AuthenticationError,OpenAI.InternalServerError=InternalServerError,OpenAI.PermissionDeniedError=PermissionDeniedError,OpenAI.UnprocessableEntityError=UnprocessableEntityError,OpenAI.InvalidWebhookSignatureError=InvalidWebhookSignatureError,OpenAI.toFile=toFile,OpenAI.Completions=Completions,OpenAI.Chat=Chat,OpenAI.Embeddings=Embeddings,OpenAI.Files=Files,OpenAI.Images=Images,OpenAI.Audio=Audio,OpenAI.Moderations=Moderations,OpenAI.Models=Models,OpenAI.FineTuning=FineTuning,OpenAI.Graders=Graders,OpenAI.VectorStores=VectorStores,OpenAI.Webhooks=Webhooks,OpenAI.Beta=Beta,OpenAI.Batches=Batches,OpenAI.Uploads=Uploads,OpenAI.Admin=Admin,OpenAI.Responses=Responses,OpenAI.Realtime=Realtime,OpenAI.Conversations=Conversations,OpenAI.Evals=Evals,OpenAI.Containers=Containers,OpenAI.Skills=Skills,OpenAI.Videos=Videos;export{OpenAI};
11
+ `)){let n=t.indexOf(`:`);n>=0&&(e[t.substring(0,n).trim()]=t.substring(n+1).trim())}l.defaultHeaders=buildHeaders([e,l.defaultHeaders])}this._options=l,s&&(this._workloadIdentityAuth=new WorkloadIdentityAuth(s,this.fetch)),this.apiKey=typeof n==`string`?n:null,this.adminAPIKey=r,this.organization=i,this.project=a,this.webhookSecret=o}withOptions(e){return new this.constructor({...this._options,baseURL:this.baseURL,maxRetries:this.maxRetries,timeout:this.timeout,logger:this.logger,logLevel:this.logLevel,fetch:this.fetch,fetchOptions:this.fetchOptions,apiKey:this._options.apiKey,adminAPIKey:this.adminAPIKey,workloadIdentity:this._options.workloadIdentity,organization:this.organization,project:this.project,webhookSecret:this.webhookSecret,...e})}defaultQuery(){return this._options.defaultQuery}validateHeaders({values:e,nulls:t},n={bearerAuth:!0,adminAPIKeyAuth:!0}){if(!(e.get(`authorization`)||e.get(`api-key`))&&!(t.has(`authorization`)||t.has(`api-key`))&&!(this._workloadIdentityAuth&&n.bearerAuth))throw Error(`Could not resolve authentication method. Expected either apiKey or adminAPIKey to be set. Or for one of the "Authorization" or "api-key" headers to be explicitly omitted`)}async authHeaders(e,t={bearerAuth:!0,adminAPIKeyAuth:!0}){return buildHeaders([t.bearerAuth?await this.bearerAuth(e):null,t.adminAPIKeyAuth?await this.adminAPIKeyAuth(e):null])}async bearerAuth(e){if(this._workloadIdentityAuth)return buildHeaders([{Authorization:`Bearer ${await this._workloadIdentityAuth.getToken()}`}]);if(this.apiKey!=null)return buildHeaders([{Authorization:`Bearer ${this.apiKey}`}])}async adminAPIKeyAuth(e){if(this.adminAPIKey!=null)return buildHeaders([{Authorization:`Bearer ${this.adminAPIKey}`}])}stringifyQuery(e){return stringifyQuery(e)}getUserAgent(){return`${this.constructor.name}/JS ${VERSION}`}defaultIdempotencyKey(){return`stainless-node-retry-${uuid4()}`}makeStatusError(e,t,n,r){return APIError.generate(e,t,n,r)}async _callApiKey(){let e=this._options.apiKey;if(typeof e!=`function`)return!1;let t;try{t=await e()}catch(e){throw e instanceof OpenAIError?e:new OpenAIError(`Failed to get token from 'apiKey' function: ${e.message}`,{cause:e})}if(typeof t!=`string`||!t)throw new OpenAIError(`Expected 'apiKey' function argument to return a string but it returned ${t}`);return this.apiKey=t,!0}buildURL(t,n,r){let i=!__classPrivateFieldGet(this,_OpenAI_instances,`m`,_OpenAI_baseURLOverridden).call(this)&&r||this.baseURL,a=isAbsoluteURL(t)?new URL(t):new URL(i+(i.endsWith(`/`)&&t.startsWith(`/`)?t.slice(1):t)),o=this.defaultQuery(),s=Object.fromEntries(a.searchParams);return(!isEmptyObj(o)||!isEmptyObj(s))&&(n={...s,...o,...n}),typeof n==`object`&&n&&!Array.isArray(n)&&(a.search=this.stringifyQuery(n)),a.toString()}async prepareOptions(e){(e.__security??{bearerAuth:!0}).bearerAuth&&await this._callApiKey()}async prepareRequest(e,{url:t,options:n}){}get(e,t){return this.methodRequest(`get`,e,t)}post(e,t){return this.methodRequest(`post`,e,t)}patch(e,t){return this.methodRequest(`patch`,e,t)}put(e,t){return this.methodRequest(`put`,e,t)}delete(e,t){return this.methodRequest(`delete`,e,t)}methodRequest(e,t,n){return this.request(Promise.resolve(n).then(n=>({method:e,path:t,...n})))}request(e,t=null){return new APIPromise(this,this.makeRequest(e,t,void 0))}async makeRequest(e,t,n){let s=await e,l=s.maxRetries??this.maxRetries;t??=l,await this.prepareOptions(s);let{req:u,url:d,timeout:f}=await this.buildRequest(s,{retryCount:l-t});await this.prepareRequest(u,{url:d,options:s});let p=`log_`+(Math.random()*(1<<24)|0).toString(16).padStart(6,`0`),m=n===void 0?``:`, retryOf: ${n}`,h=Date.now();if(loggerFor(this).debug(`[${p}] sending request`,formatRequestDetails({retryOfRequestLogID:n,method:s.method,url:d,options:s,headers:u.headers})),s.signal?.aborted)throw new APIUserAbortError;let g=s.__security??{bearerAuth:!0},_=new AbortController,v=await this.fetchWithAuth(d,u,f,_,g).catch(castToError),y=Date.now();if(v instanceof globalThis.Error){let e=`retrying, ${t} attempts remaining`;if(s.signal?.aborted)throw new APIUserAbortError;let r=isAbortError(v)||/timed? ?out/i.test(String(v)+(`cause`in v?String(v.cause):``));if(t)return loggerFor(this).info(`[${p}] connection ${r?`timed out`:`failed`} - ${e}`),loggerFor(this).debug(`[${p}] connection ${r?`timed out`:`failed`} (${e})`,formatRequestDetails({retryOfRequestLogID:n,url:d,durationMs:y-h,message:v.message})),this.retryRequest(s,t,n??p);throw loggerFor(this).info(`[${p}] connection ${r?`timed out`:`failed`} - error; no more retries left`),loggerFor(this).debug(`[${p}] connection ${r?`timed out`:`failed`} (error; no more retries left)`,formatRequestDetails({retryOfRequestLogID:n,url:d,durationMs:y-h,message:v.message})),v instanceof OAuthError||v instanceof SubjectTokenProviderError?v:r?new APIConnectionTimeoutError:new APIConnectionError({message:getConnectionErrorMessage(v),cause:v})}let b=`[${p}${m}${[...v.headers.entries()].filter(([e])=>e===`x-request-id`).map(([e,t])=>`, `+e+`: `+JSON.stringify(t)).join(``)}] ${u.method} ${d} ${v.ok?`succeeded`:`failed`} with status ${v.status} in ${y-h}ms`;if(!v.ok){if(v.status===401&&this._workloadIdentityAuth&&g.bearerAuth&&!s.__metadata?.hasStreamingBody&&!s.__metadata?.workloadIdentityTokenRefreshed)return await CancelReadableStream(v.body),this._workloadIdentityAuth.invalidateToken(),this.makeRequest({...s,__metadata:{...s.__metadata,workloadIdentityTokenRefreshed:!0}},t,n??p);let e=await this.shouldRetry(v);if(t&&e){let e=`retrying, ${t} attempts remaining`;return await CancelReadableStream(v.body),loggerFor(this).info(`${b} - ${e}`),loggerFor(this).debug(`[${p}] response error (${e})`,formatRequestDetails({retryOfRequestLogID:n,url:v.url,status:v.status,headers:v.headers,durationMs:y-h})),this.retryRequest(s,t,n??p,v.headers)}let i=e?`error; no more retries left`:`error; not retryable`;loggerFor(this).info(`${b} - ${i}`);let a=await v.text().catch(e=>castToError(e).message),o=safeJSON(a),c=o?void 0:a;throw loggerFor(this).debug(`[${p}] response error (${i})`,formatRequestDetails({retryOfRequestLogID:n,url:v.url,status:v.status,headers:v.headers,message:c,durationMs:Date.now()-h})),this.makeStatusError(v.status,o,c,v.headers)}return loggerFor(this).info(b),loggerFor(this).debug(`[${p}] response start`,formatRequestDetails({retryOfRequestLogID:n,url:v.url,status:v.status,headers:v.headers,durationMs:y-h})),{response:v,options:s,controller:_,requestLogID:p,retryOfRequestLogID:n,startTime:h}}getAPIList(e,t,n){return this.requestAPIList(t,n&&`then`in n?n.then(t=>({method:`get`,path:e,...t})):{method:`get`,path:e,...n})}requestAPIList(e,t){let n=this.makeRequest(t,null,void 0);return new PagePromise(this,n,e)}async fetchWithAuth(e,t,n,r,i={bearerAuth:!0,adminAPIKeyAuth:!0}){if(this._workloadIdentityAuth&&i.bearerAuth){let e=t.headers,n=e.get(`Authorization`);if(!n||n===`Bearer workload-identity-auth`){let t=await this._workloadIdentityAuth.getToken();e.set(`Authorization`,`Bearer ${t}`)}}return await this.fetchWithTimeout(e,t,n,r)}async fetchWithTimeout(e,t,n,r){let{signal:i,method:a,...o}=t||{},s=this._makeAbort(r);i&&i.addEventListener(`abort`,s,{once:!0});let c=setTimeout(s,n),l=globalThis.ReadableStream&&o.body instanceof globalThis.ReadableStream||typeof o.body==`object`&&o.body!==null&&Symbol.asyncIterator in o.body,u={signal:r.signal,...l?{duplex:`half`}:{},method:`GET`,...o};a&&(u.method=a.toUpperCase());try{return await this.fetch.call(void 0,e,u)}finally{clearTimeout(c)}}async shouldRetry(e){let t=e.headers.get(`x-should-retry`);return t===`true`?!0:t===`false`?!1:e.status===408||e.status===409||e.status===429||e.status>=500}async retryRequest(e,t,n,r){let i,a=r?.get(`retry-after-ms`);if(a){let e=parseFloat(a);Number.isNaN(e)||(i=e)}let o=r?.get(`retry-after`);if(o&&!i){let e=parseFloat(o);i=Number.isNaN(e)?Date.parse(o)-Date.now():e*1e3}if(i===void 0){let n=e.maxRetries??this.maxRetries;i=this.calculateDefaultRetryTimeoutMillis(t,n)}return await sleep(i),this.makeRequest(e,t-1,n)}calculateDefaultRetryTimeoutMillis(e,t){let n=t-e;return Math.min(.5*2**n,8)*(1-Math.random()*.25)*1e3}async buildRequest(e,{retryCount:t=0}={}){let n={...e},{method:r,path:i,query:a,defaultBaseURL:o}=n,s=this.buildURL(i,a,o);`timeout`in n&&validatePositiveInteger(`timeout`,n.timeout),n.timeout=n.timeout??this.timeout;let{bodyHeaders:c,body:l,isStreamingBody:u}=this.buildBody({options:n});return u&&(e.__metadata={...e.__metadata,hasStreamingBody:!0}),{req:{method:r,headers:await this.buildHeaders({options:e,method:r,bodyHeaders:c,retryCount:t}),...n.signal&&{signal:n.signal},...globalThis.ReadableStream&&l instanceof globalThis.ReadableStream&&{duplex:`half`},...l&&{body:l},...this.fetchOptions??{},...n.fetchOptions??{}},url:s,timeout:n.timeout}}async buildHeaders({options:e,method:t,bodyHeaders:n,retryCount:r}){let i={};this.idempotencyHeader&&t!==`get`&&(e.idempotencyKey||=this.defaultIdempotencyKey(),i[this.idempotencyHeader]=e.idempotencyKey);let a=buildHeaders([i,{Accept:`application/json`,"User-Agent":this.getUserAgent(),"X-Stainless-Retry-Count":String(r),...e.timeout?{"X-Stainless-Timeout":String(Math.trunc(e.timeout/1e3))}:{},...getPlatformHeaders(),"OpenAI-Organization":this.organization,"OpenAI-Project":this.project},await this.authHeaders(e,e.__security??{bearerAuth:!0}),this._options.defaultHeaders,n,e.headers]);return this.validateHeaders(a,e.__security??{bearerAuth:!0}),a.values}_makeAbort(e){return()=>e.abort()}buildBody({options:{body:t,headers:n}}){if(!t)return{bodyHeaders:void 0,body:void 0,isStreamingBody:!1};let r=buildHeaders([n]),i=globalThis.ReadableStream!==void 0&&t instanceof globalThis.ReadableStream,a=!i&&(typeof t==`string`||t instanceof ArrayBuffer||ArrayBuffer.isView(t)||globalThis.Blob!==void 0&&t instanceof globalThis.Blob||t instanceof URLSearchParams||t instanceof FormData);return ArrayBuffer.isView(t)||t instanceof ArrayBuffer||t instanceof DataView||typeof t==`string`&&r.values.has(`content-type`)||globalThis.Blob&&t instanceof globalThis.Blob||t instanceof FormData||t instanceof URLSearchParams||i?{bodyHeaders:void 0,body:t,isStreamingBody:!a}:typeof t==`object`&&(Symbol.asyncIterator in t||Symbol.iterator in t&&`next`in t&&typeof t.next==`function`)?{bodyHeaders:void 0,body:ReadableStreamFrom(t),isStreamingBody:!0}:typeof t==`object`&&r.values.get(`content-type`)===`application/x-www-form-urlencoded`?{bodyHeaders:{"content-type":`application/x-www-form-urlencoded`},body:this.stringifyQuery(t),isStreamingBody:!1}:{...__classPrivateFieldGet(this,_OpenAI_encoder,`f`).call(this,{body:t,headers:r}),isStreamingBody:!1}}};_a=OpenAI,_OpenAI_encoder=new WeakMap,_OpenAI_instances=new WeakSet,_OpenAI_baseURLOverridden=function(){return this.baseURL!==`https://api.openai.com/v1`},OpenAI.OpenAI=_a,OpenAI.DEFAULT_TIMEOUT=6e5,OpenAI.OpenAIError=OpenAIError,OpenAI.APIError=APIError,OpenAI.APIConnectionError=APIConnectionError,OpenAI.APIConnectionTimeoutError=APIConnectionTimeoutError,OpenAI.APIUserAbortError=APIUserAbortError,OpenAI.NotFoundError=NotFoundError,OpenAI.ConflictError=ConflictError,OpenAI.RateLimitError=RateLimitError,OpenAI.BadRequestError=BadRequestError,OpenAI.AuthenticationError=AuthenticationError,OpenAI.InternalServerError=InternalServerError,OpenAI.PermissionDeniedError=PermissionDeniedError,OpenAI.UnprocessableEntityError=UnprocessableEntityError,OpenAI.InvalidWebhookSignatureError=InvalidWebhookSignatureError,OpenAI.toFile=toFile,OpenAI.Completions=Completions,OpenAI.Chat=Chat,OpenAI.Embeddings=Embeddings,OpenAI.Files=Files,OpenAI.Images=Images,OpenAI.Audio=Audio,OpenAI.Moderations=Moderations,OpenAI.Models=Models,OpenAI.FineTuning=FineTuning,OpenAI.Graders=Graders,OpenAI.VectorStores=VectorStores,OpenAI.Webhooks=Webhooks,OpenAI.Beta=Beta,OpenAI.Batches=Batches,OpenAI.Uploads=Uploads,OpenAI.Admin=Admin,OpenAI.Responses=Responses,OpenAI.Realtime=Realtime,OpenAI.Conversations=Conversations,OpenAI.Evals=Evals,OpenAI.Containers=Containers,OpenAI.Skills=Skills,OpenAI.Videos=Videos;function getConnectionErrorMessage(e){if(isUndiciDispatcherVersionMismatchError(e))return`Connection error. This may be caused by passing an undici dispatcher, such as ProxyAgent, that is incompatible with the fetch implementation. If you are using undici's ProxyAgent, pass the fetch implementation from the same undici package: import { fetch, ProxyAgent } from 'undici'; new OpenAI({ fetch, fetchOptions: { dispatcher: new ProxyAgent(...) } });`}function isUndiciDispatcherVersionMismatchError(e){let t=e;for(let e=0;e<8&&t&&typeof t==`object`;e++){let e=t;if(e.code===`UND_ERR_INVALID_ARG`&&typeof e.message==`string`&&e.message.includes(`invalid onRequestStart method`))return!0;t=e.cause}return!1}export{OpenAI};
@@ -0,0 +1 @@
1
+ const VERSION=`6.39.1`;export{VERSION};
@@ -1,3 +1,3 @@
1
- import{setResponseValueAndErrors}from"../errorMessages.js";let emojiRegex;const zodPatterns={cuid:/^[cC][^\s-]{8,}$/,cuid2:/^[0-9a-z]+$/,ulid:/^[0-9A-HJKMNP-TV-Z]{26}$/,email:/^(?!\.)(?!.*\.\.)([a-zA-Z0-9_'+\-\.]*)[a-zA-Z0-9_+-]@([a-zA-Z0-9][a-zA-Z0-9\-]*\.)+[a-zA-Z]{2,}$/,emoji:()=>(emojiRegex===void 0&&(emojiRegex=RegExp(`^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$`,`u`)),emojiRegex),uuid:/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/,ipv4:/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,ipv4Cidr:/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/(3[0-2]|[12]?[0-9])$/,ipv6:/^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/,ipv6Cidr:/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,base64:/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,base64url:/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,nanoid:/^[a-zA-Z0-9_-]{21}$/,jwt:/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/};function parseStringDef(t,r){let i={type:`string`};if(t.checks)for(let a of t.checks)switch(a.kind){case`min`:setResponseValueAndErrors(i,`minLength`,typeof i.minLength==`number`?Math.max(i.minLength,a.value):a.value,a.message,r);break;case`max`:setResponseValueAndErrors(i,`maxLength`,typeof i.maxLength==`number`?Math.min(i.maxLength,a.value):a.value,a.message,r);break;case`email`:switch(r.emailStrategy){case`format:email`:addFormat(i,`email`,a.message,r);break;case`format:idn-email`:addFormat(i,`idn-email`,a.message,r);break;case`pattern:zod`:addPattern(i,zodPatterns.email,a.message,r);break}break;case`url`:addFormat(i,`uri`,a.message,r);break;case`uuid`:addFormat(i,`uuid`,a.message,r);break;case`regex`:addPattern(i,a.regex,a.message,r);break;case`cuid`:addPattern(i,zodPatterns.cuid,a.message,r);break;case`cuid2`:addPattern(i,zodPatterns.cuid2,a.message,r);break;case`startsWith`:addPattern(i,RegExp(`^${escapeLiteralCheckValue(a.value,r)}`),a.message,r);break;case`endsWith`:addPattern(i,RegExp(`${escapeLiteralCheckValue(a.value,r)}$`),a.message,r);break;case`datetime`:addFormat(i,`date-time`,a.message,r);break;case`date`:addFormat(i,`date`,a.message,r);break;case`time`:addFormat(i,`time`,a.message,r);break;case`duration`:addFormat(i,`duration`,a.message,r);break;case`length`:setResponseValueAndErrors(i,`minLength`,typeof i.minLength==`number`?Math.max(i.minLength,a.value):a.value,a.message,r),setResponseValueAndErrors(i,`maxLength`,typeof i.maxLength==`number`?Math.min(i.maxLength,a.value):a.value,a.message,r);break;case`includes`:addPattern(i,RegExp(escapeLiteralCheckValue(a.value,r)),a.message,r);break;case`ip`:a.version!==`v6`&&addFormat(i,`ipv4`,a.message,r),a.version!==`v4`&&addFormat(i,`ipv6`,a.message,r);break;case`base64url`:addPattern(i,zodPatterns.base64url,a.message,r);break;case`jwt`:addPattern(i,zodPatterns.jwt,a.message,r);break;case`cidr`:a.version!==`v6`&&addPattern(i,zodPatterns.ipv4Cidr,a.message,r),a.version!==`v4`&&addPattern(i,zodPatterns.ipv6Cidr,a.message,r);break;case`emoji`:addPattern(i,zodPatterns.emoji(),a.message,r);break;case`ulid`:addPattern(i,zodPatterns.ulid,a.message,r);break;case`base64`:switch(r.base64Strategy){case`format:binary`:addFormat(i,`binary`,a.message,r);break;case`contentEncoding:base64`:setResponseValueAndErrors(i,`contentEncoding`,`base64`,a.message,r);break;case`pattern:zod`:addPattern(i,zodPatterns.base64,a.message,r);break}break;case`nanoid`:addPattern(i,zodPatterns.nanoid,a.message,r);case`toLowerCase`:case`toUpperCase`:case`trim`:break;default:(e=>{})(a)}return i}function escapeLiteralCheckValue(e,t){return t.patternStrategy===`escape`?escapeNonAlphaNumeric(e):e}const ALPHA_NUMERIC=new Set(`ABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyz0123456789`);function escapeNonAlphaNumeric(e){let t=``;for(let n=0;n<e.length;n++)ALPHA_NUMERIC.has(e[n])||(t+=`\\`),t+=e[n];return t}function addFormat(t,n,r,i){t.format||t.anyOf?.some(e=>e.format)?(t.anyOf||=[],t.format&&(t.anyOf.push({format:t.format,...t.errorMessage&&i.errorMessages&&{errorMessage:{format:t.errorMessage.format}}}),delete t.format,t.errorMessage&&(delete t.errorMessage.format,Object.keys(t.errorMessage).length===0&&delete t.errorMessage)),t.anyOf.push({format:n,...r&&i.errorMessages&&{errorMessage:{format:r}}})):setResponseValueAndErrors(t,`format`,n,r,i)}function addPattern(t,n,r,i){t.pattern||t.allOf?.some(e=>e.pattern)?(t.allOf||=[],t.pattern&&(t.allOf.push({pattern:t.pattern,...t.errorMessage&&i.errorMessages&&{errorMessage:{pattern:t.errorMessage.pattern}}}),delete t.pattern,t.errorMessage&&(delete t.errorMessage.pattern,Object.keys(t.errorMessage).length===0&&delete t.errorMessage)),t.allOf.push({pattern:stringifyRegExpWithFlags(n,i),...r&&i.errorMessages&&{errorMessage:{pattern:r}}})):setResponseValueAndErrors(t,`pattern`,stringifyRegExpWithFlags(n,i),r,i)}function stringifyRegExpWithFlags(e,t){if(!t.applyRegexFlags||!e.flags)return e.source;let n={i:e.flags.includes(`i`),m:e.flags.includes(`m`),s:e.flags.includes(`s`)},r=n.i?e.source.toLowerCase():e.source,i=``,a=!1,o=!1,s=!1;for(let e=0;e<r.length;e++){if(a){i+=r[e],a=!1;continue}if(n.i){if(o){if(r[e].match(/[a-z]/)){s?(i+=r[e],i+=`${r[e-2]}-${r[e]}`.toUpperCase(),s=!1):r[e+1]===`-`&&r[e+2]?.match(/[a-z]/)?(i+=r[e],s=!0):i+=`${r[e]}${r[e].toUpperCase()}`;continue}}else if(r[e].match(/[a-z]/)){i+=`[${r[e]}${r[e].toUpperCase()}]`;continue}}if(n.m){if(r[e]===`^`){i+=`(^|(?<=[\r
1
+ import{setResponseValueAndErrors}from"../errorMessages.js";let emojiRegex;const zodPatterns={cuid:/^[cC][^\s-]{8,}$/,cuid2:/^[0-9a-z]+$/,ulid:/^[0-9A-HJKMNP-TV-Z]{26}$/,email:/^(?!\.)(?!.*\.\.)([a-zA-Z0-9_'+\-\.]*)[a-zA-Z0-9_+-]@([a-zA-Z0-9][a-zA-Z0-9\-]*\.)+[a-zA-Z]{2,}$/,emoji:()=>(emojiRegex===void 0&&(emojiRegex=RegExp(`^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$`,`u`)),emojiRegex),uuid:/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/,ipv4:/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,ipv4Cidr:/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/(3[0-2]|[12]?[0-9])$/,ipv6:/^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/,ipv6Cidr:/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,base64:/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,base64url:/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,nanoid:/^[a-zA-Z0-9_-]{21}$/,jwt:/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/};function parseStringDef(t,r){let i={type:`string`};if(t.checks)for(let a of t.checks)switch(a.kind){case`min`:setResponseValueAndErrors(i,`minLength`,typeof i.minLength==`number`?Math.max(i.minLength,a.value):a.value,a.message,r);break;case`max`:setResponseValueAndErrors(i,`maxLength`,typeof i.maxLength==`number`?Math.min(i.maxLength,a.value):a.value,a.message,r);break;case`email`:switch(r.emailStrategy){case`format:email`:addFormat(i,`email`,a.message,r);break;case`format:idn-email`:addFormat(i,`idn-email`,a.message,r);break;case`pattern:zod`:addPattern(i,zodPatterns.email,a.message,r);break}break;case`url`:addFormat(i,`uri`,a.message,r);break;case`uuid`:addFormat(i,`uuid`,a.message,r);break;case`regex`:addPattern(i,a.regex,a.message,r);break;case`cuid`:addPattern(i,zodPatterns.cuid,a.message,r);break;case`cuid2`:addPattern(i,zodPatterns.cuid2,a.message,r);break;case`startsWith`:addPattern(i,RegExp(`^${escapeLiteralCheckValue(a.value,r)}`),a.message,r);break;case`endsWith`:addPattern(i,RegExp(`${escapeLiteralCheckValue(a.value,r)}$`),a.message,r);break;case`datetime`:addFormat(i,`date-time`,a.message,r);break;case`date`:addFormat(i,`date`,a.message,r);break;case`time`:addFormat(i,`time`,a.message,r);break;case`duration`:addFormat(i,`duration`,a.message,r);break;case`length`:setResponseValueAndErrors(i,`minLength`,typeof i.minLength==`number`?Math.max(i.minLength,a.value):a.value,a.message,r),setResponseValueAndErrors(i,`maxLength`,typeof i.maxLength==`number`?Math.min(i.maxLength,a.value):a.value,a.message,r);break;case`includes`:addPattern(i,RegExp(escapeLiteralCheckValue(a.value,r)),a.message,r);break;case`ip`:a.version!==`v6`&&addFormat(i,`ipv4`,a.message,r),a.version!==`v4`&&addFormat(i,`ipv6`,a.message,r);break;case`base64url`:addPattern(i,zodPatterns.base64url,a.message,r);break;case`jwt`:addPattern(i,zodPatterns.jwt,a.message,r);break;case`cidr`:a.version!==`v6`&&addPattern(i,zodPatterns.ipv4Cidr,a.message,r),a.version!==`v4`&&addPattern(i,zodPatterns.ipv6Cidr,a.message,r);break;case`emoji`:addPattern(i,zodPatterns.emoji(),a.message,r);break;case`ulid`:addPattern(i,zodPatterns.ulid,a.message,r);break;case`base64`:switch(r.base64Strategy){case`format:binary`:addFormat(i,`binary`,a.message,r);break;case`contentEncoding:base64`:setResponseValueAndErrors(i,`contentEncoding`,`base64`,a.message,r);break;case`pattern:zod`:addPattern(i,zodPatterns.base64,a.message,r);break}break;case`nanoid`:addPattern(i,zodPatterns.nanoid,a.message,r);case`toLowerCase`:case`toUpperCase`:case`trim`:break;default:}return i}function escapeLiteralCheckValue(e,t){return t.patternStrategy===`escape`?escapeNonAlphaNumeric(e):e}const ALPHA_NUMERIC=new Set(`ABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyz0123456789`);function escapeNonAlphaNumeric(e){let t=``;for(let n=0;n<e.length;n++)ALPHA_NUMERIC.has(e[n])||(t+=`\\`),t+=e[n];return t}function addFormat(t,n,r,i){t.format||t.anyOf?.some(e=>e.format)?(t.anyOf||=[],t.format&&(t.anyOf.push({format:t.format,...t.errorMessage&&i.errorMessages&&{errorMessage:{format:t.errorMessage.format}}}),delete t.format,t.errorMessage&&(delete t.errorMessage.format,Object.keys(t.errorMessage).length===0&&delete t.errorMessage)),t.anyOf.push({format:n,...r&&i.errorMessages&&{errorMessage:{format:r}}})):setResponseValueAndErrors(t,`format`,n,r,i)}function addPattern(t,n,r,i){t.pattern||t.allOf?.some(e=>e.pattern)?(t.allOf||=[],t.pattern&&(t.allOf.push({pattern:t.pattern,...t.errorMessage&&i.errorMessages&&{errorMessage:{pattern:t.errorMessage.pattern}}}),delete t.pattern,t.errorMessage&&(delete t.errorMessage.pattern,Object.keys(t.errorMessage).length===0&&delete t.errorMessage)),t.allOf.push({pattern:stringifyRegExpWithFlags(n,i),...r&&i.errorMessages&&{errorMessage:{pattern:r}}})):setResponseValueAndErrors(t,`pattern`,stringifyRegExpWithFlags(n,i),r,i)}function stringifyRegExpWithFlags(e,t){if(!t.applyRegexFlags||!e.flags)return e.source;let n={i:e.flags.includes(`i`),m:e.flags.includes(`m`),s:e.flags.includes(`s`)},r=n.i?e.source.toLowerCase():e.source,i=``,a=!1,o=!1,s=!1;for(let e=0;e<r.length;e++){if(a){i+=r[e],a=!1;continue}if(n.i){if(o){if(r[e].match(/[a-z]/)){s?(i+=r[e],i+=`${r[e-2]}-${r[e]}`.toUpperCase(),s=!1):r[e+1]===`-`&&r[e+2]?.match(/[a-z]/)?(i+=r[e],s=!0):i+=`${r[e]}${r[e].toUpperCase()}`;continue}}else if(r[e].match(/[a-z]/)){i+=`[${r[e]}${r[e].toUpperCase()}]`;continue}}if(n.m){if(r[e]===`^`){i+=`(^|(?<=[\r
2
2
  ]))`;continue}else if(r[e]===`$`){i+=`($|(?=[\r
3
3
  ]))`;continue}}if(n.s&&r[e]===`.`){i+=o?`${r[e]}\r\n`:`[${r[e]}\r\n]`;continue}i+=r[e],r[e]===`\\`?a=!0:o&&r[e]===`]`?o=!1:!o&&r[e]===`[`&&(o=!0)}try{new RegExp(i)}catch{return console.warn(`Could not convert regex pattern at ${t.currentPath.join(`/`)} to a flag-independent form! Falling back to the flag-ignorant source`),e.source}return i}export{parseStringDef,zodPatterns};
@@ -1,4 +1,4 @@
1
- import{getSupportedModuleBaseName,matchesSupportedModuleBaseName}from"./module-files.js";import{pathExists,writeTextFile}from"./files.js";import{PNPM_WORKSPACE_PATH,ensurePnpmWorkspacePolicy}from"./pnpm-workspace.js";import{WEB_APP_TEMPLATE_FILES,WEB_APP_TEMPLATE_PACKAGE_JSON}from"./web-template.js";import"./project.js";import{patchPackageJson}from"./package-json.js";import{basename,join,resolve}from"node:path";import{readFile,readdir,writeFile}from"node:fs/promises";const SLACK_CHANNEL_DEFAULT_ROUTE=`/ash/v1/slack`,DEFAULT_SLACK_CONNECTOR_SLUG=`my-agent`,PACKAGE_DEPENDENCY_FIELDS=[`dependencies`,`devDependencies`,`peerDependencies`,`optionalDependencies`],WEB_VERCEL_JSON_PATH=`vercel.json`,WEB_VERCEL_JSON_SCHEMA=`https://openapi.vercel.sh/vercel.json`,WEB_DEFAULT_VERCEL_SERVICES={web:{entrypoint:`.`,framework:`nextjs`,routePrefix:`/`},ash:{buildCommand:`ash build`,entrypoint:`.`,framework:`ash`,routePrefix:`/_ash_internal/ash`}};function toSlackConnectorSlug(e){return e}function isJsonObject(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}async function readDependencyVersion(e,t){let n=JSON.parse(await readFile(e,`utf8`));if(!isJsonObject(n)||!isJsonObject(n.dependencies))return;let r=n.dependencies[t];return typeof r==`string`?r:void 0}function packageJsonHasDependency(e,t){for(let n of PACKAGE_DEPENDENCY_FIELDS){let r=e[n];if(isJsonObject(r)&&typeof r[t]==`string`)return!0}return!1}async function hasPackageDependency(e,t){if(!await pathExists(e))return!1;let r=JSON.parse(await readFile(e,`utf8`));return isJsonObject(r)&&packageJsonHasDependency(r,t)}async function ensurePackageDependency(e,t,r){return!await pathExists(e)||await readDependencyVersion(e,t)===r?[]:(await patchPackageJson(e,{dependencies:{[t]:r}}),[{path:e,dependencies:[t],devDependencies:[],scripts:[]}])}function resolveWebPackageVersions(e){return{ashPackageVersion:e?.ashPackageVersion??`0.44.0`,aiPackageVersion:e?.aiPackageVersion??`7.0.0-canary.159`,nextPackageVersion:e?.nextPackageVersion??`16.2.6`,reactPackageVersion:e?.reactPackageVersion??`19.2.6`,reactDomPackageVersion:e?.reactDomPackageVersion??`19.2.6`,streamdownPackageVersion:e?.streamdownPackageVersion??`2.5.0`,zodPackageVersion:e?.zodPackageVersion??`4.4.3`,tsgoPackageVersion:e?.tsgoPackageVersion??`7.0.0-dev.20260523.1`,typesNodePackageVersion:e?.typesNodePackageVersion??`25.9.1`,typesReactPackageVersion:e?.typesReactPackageVersion??`19.2.15`,typesReactDomPackageVersion:e?.typesReactDomPackageVersion??`19.2.3`}}function formatAshDependencySpecifier(e){return/^\d+\.\d+\.\d+(?:[-+][0-9A-Za-z-.]+)?$/.test(e)?`^${e}`:e}async function patchWebPackageJson(e,t){if(!await pathExists(e))return[];assertStampedVersion(`ashPackageVersion`,t.ashPackageVersion),assertStampedVersion(`aiPackageVersion`,t.aiPackageVersion),assertStampedVersion(`nextPackageVersion`,t.nextPackageVersion),assertStampedVersion(`reactPackageVersion`,t.reactPackageVersion),assertStampedVersion(`reactDomPackageVersion`,t.reactDomPackageVersion),assertStampedVersion(`streamdownPackageVersion`,t.streamdownPackageVersion),assertStampedVersion(`zodPackageVersion`,t.zodPackageVersion),assertStampedVersion(`tsgoPackageVersion`,t.tsgoPackageVersion),assertStampedVersion(`typesNodePackageVersion`,t.typesNodePackageVersion),assertStampedVersion(`typesReactPackageVersion`,t.typesReactPackageVersion),assertStampedVersion(`typesReactDomPackageVersion`,t.typesReactDomPackageVersion);let r={...WEB_APP_TEMPLATE_PACKAGE_JSON.dependencies,ai:t.aiPackageVersion,"experimental-ash":formatAshDependencySpecifier(t.ashPackageVersion),next:t.nextPackageVersion,react:t.reactPackageVersion,"react-dom":t.reactDomPackageVersion,streamdown:t.streamdownPackageVersion,zod:t.zodPackageVersion},i={...WEB_APP_TEMPLATE_PACKAGE_JSON.devDependencies,"@types/node":t.typesNodePackageVersion,"@types/react":t.typesReactPackageVersion,"@types/react-dom":t.typesReactDomPackageVersion,"@typescript/native-preview":t.tsgoPackageVersion},a=WEB_APP_TEMPLATE_PACKAGE_JSON.scripts;return await patchPackageJson(e,{dependencies:r,devDependencies:i,scripts:a}),[{path:e,dependencies:Object.keys(r),devDependencies:Object.keys(i),scripts:Object.keys(a)}]}function normalizeSlackConnectorSlug(e){return toSlackConnectorSlug((e.trim().replace(/^@/,``).split(`/`).at(-1)??``).toLowerCase().replace(/[^a-z0-9_-]+/g,`-`).replace(/^[^a-z0-9]+/,``).replace(/[^a-z0-9]+$/,``).slice(0,100).replace(/[^a-z0-9]+$/,``)||`my-agent`)}async function deriveSlackConnectorSlug(e,t){if(t!==void 0&&t.length>0&&t!==`.`)return normalizeSlackConnectorSlug(t);try{let t=await readFile(join(e,`package.json`),`utf8`),n=JSON.parse(t);if(typeof n.name==`string`&&n.name.length>0)return normalizeSlackConnectorSlug(n.name)}catch{}return normalizeSlackConnectorSlug(basename(resolve(e))||`my-agent`)}function buildSlackTemplate(e){return`import { connectSlackCredentials } from "@vercel/connect/ash";
1
+ import{getSupportedModuleBaseName,matchesSupportedModuleBaseName}from"./module-files.js";import{pathExists,writeTextFile}from"./files.js";import{PNPM_WORKSPACE_PATH,ensurePnpmWorkspacePolicy}from"./pnpm-workspace.js";import{WEB_APP_TEMPLATE_FILES,WEB_APP_TEMPLATE_PACKAGE_JSON}from"./web-template.js";import"./project.js";import{patchPackageJson}from"./package-json.js";import{basename,join,resolve}from"node:path";import{readFile,readdir,writeFile}from"node:fs/promises";const SLACK_CHANNEL_DEFAULT_ROUTE=`/ash/v1/slack`,DEFAULT_SLACK_CONNECTOR_SLUG=`my-agent`,PACKAGE_DEPENDENCY_FIELDS=[`dependencies`,`devDependencies`,`peerDependencies`,`optionalDependencies`],WEB_VERCEL_JSON_PATH=`vercel.json`,WEB_VERCEL_JSON_SCHEMA=`https://openapi.vercel.sh/vercel.json`,WEB_DEFAULT_VERCEL_SERVICES={web:{entrypoint:`.`,framework:`nextjs`,routePrefix:`/`},ash:{buildCommand:`ash build`,entrypoint:`.`,framework:`ash`,routePrefix:`/_ash_internal/ash`}};function toSlackConnectorSlug(e){return e}function isJsonObject(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}async function readDependencyVersion(e,t){let n=JSON.parse(await readFile(e,`utf8`));if(!isJsonObject(n)||!isJsonObject(n.dependencies))return;let r=n.dependencies[t];return typeof r==`string`?r:void 0}function packageJsonHasDependency(e,t){for(let n of PACKAGE_DEPENDENCY_FIELDS){let r=e[n];if(isJsonObject(r)&&typeof r[t]==`string`)return!0}return!1}async function hasPackageDependency(e,t){if(!await pathExists(e))return!1;let r=JSON.parse(await readFile(e,`utf8`));return isJsonObject(r)&&packageJsonHasDependency(r,t)}async function ensurePackageDependency(e,t,r){return!await pathExists(e)||await readDependencyVersion(e,t)===r?[]:(await patchPackageJson(e,{dependencies:{[t]:r}}),[{path:e,dependencies:[t],devDependencies:[],scripts:[]}])}function resolveWebPackageVersions(e){return{ashPackageVersion:e?.ashPackageVersion??`0.46.0`,aiPackageVersion:e?.aiPackageVersion??`7.0.0-canary.159`,nextPackageVersion:e?.nextPackageVersion??`16.2.6`,reactPackageVersion:e?.reactPackageVersion??`19.2.6`,reactDomPackageVersion:e?.reactDomPackageVersion??`19.2.6`,streamdownPackageVersion:e?.streamdownPackageVersion??`2.5.0`,zodPackageVersion:e?.zodPackageVersion??`4.4.3`,tsgoPackageVersion:e?.tsgoPackageVersion??`7.0.0-dev.20260523.1`,typesNodePackageVersion:e?.typesNodePackageVersion??`25.9.1`,typesReactPackageVersion:e?.typesReactPackageVersion??`19.2.15`,typesReactDomPackageVersion:e?.typesReactDomPackageVersion??`19.2.3`}}function formatAshDependencySpecifier(e){return/^\d+\.\d+\.\d+(?:[-+][0-9A-Za-z-.]+)?$/.test(e)?`^${e}`:e}async function patchWebPackageJson(e,t){if(!await pathExists(e))return[];assertStampedVersion(`ashPackageVersion`,t.ashPackageVersion),assertStampedVersion(`aiPackageVersion`,t.aiPackageVersion),assertStampedVersion(`nextPackageVersion`,t.nextPackageVersion),assertStampedVersion(`reactPackageVersion`,t.reactPackageVersion),assertStampedVersion(`reactDomPackageVersion`,t.reactDomPackageVersion),assertStampedVersion(`streamdownPackageVersion`,t.streamdownPackageVersion),assertStampedVersion(`zodPackageVersion`,t.zodPackageVersion),assertStampedVersion(`tsgoPackageVersion`,t.tsgoPackageVersion),assertStampedVersion(`typesNodePackageVersion`,t.typesNodePackageVersion),assertStampedVersion(`typesReactPackageVersion`,t.typesReactPackageVersion),assertStampedVersion(`typesReactDomPackageVersion`,t.typesReactDomPackageVersion);let r={...WEB_APP_TEMPLATE_PACKAGE_JSON.dependencies,ai:t.aiPackageVersion,"experimental-ash":formatAshDependencySpecifier(t.ashPackageVersion),next:t.nextPackageVersion,react:t.reactPackageVersion,"react-dom":t.reactDomPackageVersion,streamdown:t.streamdownPackageVersion,zod:t.zodPackageVersion},i={...WEB_APP_TEMPLATE_PACKAGE_JSON.devDependencies,"@types/node":t.typesNodePackageVersion,"@types/react":t.typesReactPackageVersion,"@types/react-dom":t.typesReactDomPackageVersion,"@typescript/native-preview":t.tsgoPackageVersion},a=WEB_APP_TEMPLATE_PACKAGE_JSON.scripts;return await patchPackageJson(e,{dependencies:r,devDependencies:i,scripts:a}),[{path:e,dependencies:Object.keys(r),devDependencies:Object.keys(i),scripts:Object.keys(a)}]}function normalizeSlackConnectorSlug(e){return toSlackConnectorSlug((e.trim().replace(/^@/,``).split(`/`).at(-1)??``).toLowerCase().replace(/[^a-z0-9_-]+/g,`-`).replace(/^[^a-z0-9]+/,``).replace(/[^a-z0-9]+$/,``).slice(0,100).replace(/[^a-z0-9]+$/,``)||`my-agent`)}async function deriveSlackConnectorSlug(e,t){if(t!==void 0&&t.length>0&&t!==`.`)return normalizeSlackConnectorSlug(t);try{let t=await readFile(join(e,`package.json`),`utf8`),n=JSON.parse(t);if(typeof n.name==`string`&&n.name.length>0)return normalizeSlackConnectorSlug(n.name)}catch{}return normalizeSlackConnectorSlug(basename(resolve(e))||`my-agent`)}function buildSlackTemplate(e){return`import { connectSlackCredentials } from "@vercel/connect/ash";
2
2
  import { slackChannel } from "experimental-ash/channels/slack";
3
3
 
4
4
  export default slackChannel({
@@ -1,3 +1,3 @@
1
1
  import{cardChildToFallbackText}from"#compiled/chat/index.js";import{truncatePlainText}from"#public/channels/slack/limits.js";function cardToBlocks(e){let n=[],r={usedNativeTable:!1};e.title&&n.push({type:`header`,text:{type:`plain_text`,text:truncatePlainText(e.title)??e.title,emoji:!0}}),e.subtitle&&n.push({type:`context`,elements:[{type:`mrkdwn`,text:e.subtitle}]}),e.imageUrl&&n.push({type:`image`,image_url:e.imageUrl,alt_text:e.title??``});for(let t of e.children)appendChildBlocks(t,n,r);return n}function cardToFallbackText(t){let n=[];t.title&&n.push(t.title),t.subtitle&&n.push(t.subtitle);for(let r of t.children){let t=cardChildToFallbackText(r);t&&t.length>0&&n.push(t)}return n.join(`
2
- `).trim()}function appendChildBlocks(t,n,r){switch(t.type){case`text`:n.push(textToBlock(t));return;case`image`:n.push(imageToBlock(t));return;case`divider`:n.push(dividerToBlock(t));return;case`actions`:n.push(actionsToBlock(t));return;case`section`:for(let e of t.children)appendChildBlocks(e,n,r);return;case`fields`:n.push(fieldsToBlock(t));return;case`link`:n.push(linkToBlock(t));return;case`table`:n.push(...tableToBlocks(t,r));return;default:{let r=cardChildToFallbackText(t);r&&n.push({type:`section`,text:{type:`mrkdwn`,text:r}})}}}function textToBlock(e){return e.style===`muted`?{type:`context`,elements:[{type:`mrkdwn`,text:e.content}]}:{type:`section`,text:{type:`mrkdwn`,text:e.style===`bold`?`*${e.content}*`:e.content}}}function imageToBlock(e){return{type:`image`,image_url:e.url,alt_text:e.alt??``}}function dividerToBlock(e){return{type:`divider`}}function actionsToBlock(e){let t=[];for(let n of e.children){let e=actionChildToElement(n);e&&t.push(e)}return{type:`actions`,elements:t}}function actionChildToElement(e){switch(e.type){case`button`:return buttonToElement(e);case`link-button`:return linkButtonToElement(e);case`select`:return selectToElement(e);case`radio_select`:return radioSelectToElement(e);default:return null}}function buttonToElement(e){let n={type:`button`,action_id:e.id,text:{type:`plain_text`,text:truncatePlainText(e.label)??e.label}};return e.value!==void 0&&(n.value=e.value),e.style&&e.style!==`default`&&(n.style=e.style),e.disabled===!0&&(n.disabled=!0),e.callbackUrl&&(n.url=e.callbackUrl),n}function linkButtonToElement(e){let n={type:`button`,action_id:`link:${e.url}`,text:{type:`plain_text`,text:truncatePlainText(e.label)??e.label},url:e.url};return e.style&&e.style!==`default`&&(n.style=e.style),n}function selectToElement(e){return{type:`static_select`,action_id:e.id,placeholder:{type:`plain_text`,text:e.placeholder??e.label},options:e.options.map(e=>({text:{type:`plain_text`,text:e.label},value:e.value,...e.description?{description:{type:`plain_text`,text:e.description}}:{}}))}}function radioSelectToElement(e){return{type:`radio_buttons`,action_id:e.id,options:e.options.map(e=>({text:{type:`plain_text`,text:e.label},value:e.value,...e.description?{description:{type:`plain_text`,text:e.description}}:{}}))}}function fieldsToBlock(e){return{type:`section`,fields:e.children.map(e=>({type:`mrkdwn`,text:`*${e.label}*\n${e.value}`}))}}function linkToBlock(e){return{type:`section`,text:{type:`mrkdwn`,text:`<${e.url}|${e.label}>`}}}function tableToBlocks(e,t){return!t.usedNativeTable&&e.rows.length<=100&&e.headers.length<=20?(t.usedNativeTable=!0,[{type:`table`,rows:[e.headers.map(tableCellToRawText),...e.rows.map(e=>e.map(tableCellToRawText))]}]):[tableToFallbackBlock(e)]}function tableCellToRawText(e){return{type:`raw_text`,text:e||` `}}function tableToFallbackBlock(e){let t=e.headers.map((t,n)=>{let r=t.length;for(let t of e.rows){let e=t[n]??``;e.length>r&&(r=e.length)}return r});return{type:`section`,text:{type:`mrkdwn`,text:["```",e.headers.map((e,n)=>e.padEnd(t[n]??0)).join(` | `),t.map(e=>`-`.repeat(e)).join(`-|-`),...e.rows.map(n=>e.headers.map((e,r)=>(n[r]??``).padEnd(t[r]??0)).join(` | `)),"```"].join(`
2
+ `).trim()}function appendChildBlocks(t,n,r){switch(t.type){case`text`:n.push(textToBlock(t));return;case`image`:n.push(imageToBlock(t));return;case`divider`:n.push(dividerToBlock(t));return;case`actions`:n.push(actionsToBlock(t));return;case`section`:for(let e of t.children)appendChildBlocks(e,n,r);return;case`fields`:n.push(fieldsToBlock(t));return;case`link`:n.push(linkToBlock(t));return;case`table`:n.push(...tableToBlocks(t,r));return;default:{let r=cardChildToFallbackText(t);r&&n.push({type:`section`,text:{type:`mrkdwn`,text:r}})}}}function textToBlock(e){return e.style===`muted`?{type:`context`,elements:[{type:`mrkdwn`,text:e.content}]}:{type:`section`,text:{type:`mrkdwn`,text:e.style===`bold`?`*${e.content}*`:e.content}}}function imageToBlock(e){return{type:`image`,image_url:e.url,alt_text:e.alt??``}}function dividerToBlock(e){return{type:`divider`}}function actionsToBlock(e){let t=[];for(let n of e.children){let e=actionChildToElement(n);e&&t.push(e)}return{type:`actions`,elements:t}}function actionChildToElement(e){switch(e.type){case`button`:return buttonToElement(e);case`link-button`:return linkButtonToElement(e);case`select`:return selectToElement(e);case`radio_select`:return radioSelectToElement(e);default:return null}}function buttonToElement(e){let n={type:`button`,action_id:e.id,text:{type:`plain_text`,text:truncatePlainText(e.label)??e.label}};return e.value!==void 0&&(n.value=e.value),e.style&&e.style!=="default"&&(n.style=e.style),e.disabled===!0&&(n.disabled=!0),e.callbackUrl&&(n.url=e.callbackUrl),n}function linkButtonToElement(e){let n={type:`button`,action_id:`link:${e.url}`,text:{type:`plain_text`,text:truncatePlainText(e.label)??e.label},url:e.url};return e.style&&e.style!=="default"&&(n.style=e.style),n}function selectToElement(e){return{type:`static_select`,action_id:e.id,placeholder:{type:`plain_text`,text:e.placeholder??e.label},options:e.options.map(e=>({text:{type:`plain_text`,text:e.label},value:e.value,...e.description?{description:{type:`plain_text`,text:e.description}}:{}}))}}function radioSelectToElement(e){return{type:`radio_buttons`,action_id:e.id,options:e.options.map(e=>({text:{type:`plain_text`,text:e.label},value:e.value,...e.description?{description:{type:`plain_text`,text:e.description}}:{}}))}}function fieldsToBlock(e){return{type:`section`,fields:e.children.map(e=>({type:`mrkdwn`,text:`*${e.label}*\n${e.value}`}))}}function linkToBlock(e){return{type:`section`,text:{type:`mrkdwn`,text:`<${e.url}|${e.label}>`}}}function tableToBlocks(e,t){return!t.usedNativeTable&&e.rows.length<=100&&e.headers.length<=20?(t.usedNativeTable=!0,[{type:`table`,rows:[e.headers.map(tableCellToRawText),...e.rows.map(e=>e.map(tableCellToRawText))]}]):[tableToFallbackBlock(e)]}function tableCellToRawText(e){return{type:`raw_text`,text:e||` `}}function tableToFallbackBlock(e){let t=e.headers.map((t,n)=>{let r=t.length;for(let t of e.rows){let e=t[n]??``;e.length>r&&(r=e.length)}return r});return{type:`section`,text:{type:`mrkdwn`,text:["```",e.headers.map((e,n)=>e.padEnd(t[n]??0)).join(` | `),t.map(e=>`-`.repeat(e)).join(`-|-`),...e.rows.map(n=>e.headers.map((e,r)=>(n[r]??``).padEnd(t[r]??0)).join(` | `)),"```"].join(`
3
3
  `)}}}export{cardToBlocks,cardToFallbackText};
@@ -1,4 +1,3 @@
1
- import type { ModelMessage } from "ai";
2
1
  import type { HandleMessageStreamEvent } from "../../protocol/message.js";
3
2
  import type { SessionContext } from "./callback-context.js";
4
3
  import type { ExactDefinition } from "./exact.js";
@@ -18,29 +17,15 @@ export interface HookContext extends SessionContext {
18
17
  readonly continuationToken?: string;
19
18
  };
20
19
  }
21
- /**
22
- * Result returned by a lifecycle hook (`lifecycle.session` or
23
- * `lifecycle.turn`).
24
- *
25
- * `modelContext` messages are appended to the next model call's message
26
- * list and never written to durable session history. Each lifecycle key
27
- * runs in registry order; contributions are concatenated session-then-turn
28
- * before the harness's first model call.
29
- *
30
- * Returning `void` (or `undefined`) means "no opinion" — the turn
31
- * proceeds with no additional model context from this hook.
32
- */
33
- export interface LifecycleHookResult {
34
- readonly modelContext?: readonly ModelMessage[];
35
- }
36
20
  /**
37
21
  * Lifecycle hook signature shared by `lifecycle.session` and
38
22
  * `lifecycle.turn`.
39
23
  *
40
- * `ctx` is the sole argument session identity, auth, turn info,
41
- * agent metadata, and channel metadata are all on `ctx`.
24
+ * Hooks are side-effect-onlythey cannot inject model context.
25
+ * To contribute runtime model messages, use `defineDynamic` +
26
+ * `defineInstructions` in `agent/instructions/`.
42
27
  */
43
- export type LifecycleHook = (ctx: HookContext) => void | LifecycleHookResult | Promise<void | LifecycleHookResult>;
28
+ export type LifecycleHook = (ctx: HookContext) => void | Promise<void>;
44
29
  /**
45
30
  * Side-effect-only handler for one accepted runtime stream event.
46
31
  *
@@ -1,19 +1,31 @@
1
+ import type { ModelMessage } from "ai";
1
2
  import type { ExactDefinition } from "#public/definitions/exact.js";
2
3
  /**
3
4
  * Public definition for an instructions prompt authored in markdown or
4
5
  * TypeScript.
5
6
  *
6
7
  * Authored at the agent root as either `instructions.md` or
7
- * `instructions.{ts,cts,mts,js,cjs,mjs}`. Module-backed instructions
8
- * sources execute once at build time — the resulting markdown is captured
9
- * into the compiled manifest. Authored definitions do not carry a `name`
10
- * field.
8
+ * `instructions.{ts,cts,mts,js,cjs,mjs}`, or inside the
9
+ * `agent/instructions/` directory for multi-file setups. Module-backed
10
+ * static instructions execute once at build time the resulting
11
+ * markdown is captured into the compiled manifest. Authored definitions
12
+ * do not carry a `name` field.
13
+ *
14
+ * When used inside a `defineDynamic` handler, `modelContext` provides
15
+ * runtime-resolved model messages. `markdown` is sugar for
16
+ * `[{ role: "system", content: markdown }]`.
11
17
  */
12
18
  export interface InstructionsDefinition {
13
- readonly markdown: string;
19
+ readonly markdown?: string;
20
+ readonly modelContext?: readonly ModelMessage[];
14
21
  }
15
22
  /**
16
- * Defines an instructions prompt in TypeScript using the same shape
17
- * discovery produces from markdown.
23
+ * Defines an instructions prompt in TypeScript. When used as a static
24
+ * default export, `markdown` is required. When used inside a
25
+ * `defineDynamic` handler, at least one of `markdown` or
26
+ * `modelContext` must be provided.
27
+ *
28
+ * Stamps an {@link INSTRUCTIONS_BRAND} symbol on the result so the
29
+ * dynamic instruction lifecycle can detect branded entries.
18
30
  */
19
31
  export declare function defineInstructions<TInstructions extends InstructionsDefinition>(definition: ExactDefinition<TInstructions, InstructionsDefinition>): TInstructions;
@@ -1 +1 @@
1
- function defineInstructions(e){return e}export{defineInstructions};
1
+ import{INSTRUCTIONS_BRAND}from"#shared/dynamic-tool-definition.js";function defineInstructions(e){return Object.assign(e,{[INSTRUCTIONS_BRAND]:!0}),e}export{defineInstructions};
@@ -1,6 +1,6 @@
1
1
  import type { Optional } from "#shared/optional.js";
2
2
  import type { SandboxDefinition as SharedSandboxDefinition } from "#shared/sandbox-definition.js";
3
- export type { SandboxCommandResult, SandboxProcess, SandboxReadBinaryFileOptions, SandboxReadFileOptions, SandboxReadTextFileOptions, SandboxRunOptions, SandboxSession, SandboxSpawnOptions, SandboxWriteBinaryFileOptions, SandboxWriteFileOptions, SandboxWriteTextFileOptions, } from "#shared/sandbox-session.js";
3
+ export type { SandboxCommandResult, SandboxProcess, SandboxReadBinaryFileOptions, SandboxReadFileOptions, SandboxRemovePathOptions, SandboxReadTextFileOptions, SandboxRunOptions, SandboxSession, SandboxSpawnOptions, SandboxWriteBinaryFileOptions, SandboxWriteFileOptions, SandboxWriteTextFileOptions, } from "#shared/sandbox-session.js";
4
4
  export type { SandboxBootstrapUseFn, SandboxSessionUseFn, SandboxBootstrapContext, SandboxSessionContext, } from "#shared/sandbox-definition.js";
5
5
  export type SandboxDefinition<BO = Record<string, never>, SO = Record<string, never>> = Optional<SharedSandboxDefinition<BO, SO>, "backend">;
6
6
  /**
@@ -6,4 +6,4 @@
6
6
  * authoring shape and {@link HookContext} for the runtime context every
7
7
  * handler receives.
8
8
  */
9
- export { type HookContext, type HookDefinition, type LifecycleHook, type LifecycleHookResult, type LifecycleHooks, type StreamEventHook, type StreamEventHooks, defineHook, } from "../definitions/hook.js";
9
+ export { type HookContext, type HookDefinition, type LifecycleHook, type LifecycleHooks, type StreamEventHook, type StreamEventHooks, defineHook, } from "../definitions/hook.js";
@@ -1,4 +1,7 @@
1
1
  /**
2
- * Instructions prompt authoring helpers for `agent/instructions.ts` files.
2
+ * Instructions prompt authoring helpers for `agent/instructions.ts`
3
+ * and `agent/instructions/*.ts` files.
3
4
  */
4
5
  export { defineInstructions, type InstructionsDefinition, } from "#public/definitions/instructions.js";
6
+ export { defineDynamic } from "#public/definitions/tool.js";
7
+ export type { DynamicResolveContext, DynamicSentinel } from "#shared/dynamic-tool-definition.js";
@@ -1 +1 @@
1
- import{defineInstructions}from"#public/definitions/instructions.js";export{defineInstructions};
1
+ import{defineDynamic}from"#public/definitions/tool.js";import{defineInstructions}from"#public/definitions/instructions.js";export{defineDynamic,defineInstructions};
@@ -1 +1 @@
1
- import{ResolveAgentError,createResolvedModuleSourceRef}from"#runtime/resolve-helpers.js";import{resolveChannelDefinition}from"#runtime/resolve-channel.js";import{resolveConnectionDefinition}from"#runtime/resolve-connection.js";import{resolveHookDefinition}from"#runtime/resolve-hook.js";import{resolveSandboxDefinition}from"#runtime/resolve-sandbox.js";import{resolveDynamicSkillDefinition}from"#runtime/resolve-dynamic-skill.js";import{resolveDynamicToolDefinition}from"#runtime/resolve-dynamic-tool.js";import{resolveToolDefinition}from"#runtime/resolve-tool.js";async function resolveAgent(e){let t=e.manifest.skills.map(e=>({...e,metadata:e.metadata===void 0?void 0:{...e.metadata}})),r=[],i=[];for(let t of e.manifest.channels){if(t.kind===`disabled`){i.push(t.name);continue}r.push(await resolveChannelDefinition(t,e.moduleMap,e.nodeId))}let a=await Promise.all(e.manifest.tools.map(t=>resolveToolDefinition(t,e.moduleMap,e.nodeId))),o=await Promise.all((e.manifest.dynamicSkills??[]).map(t=>resolveDynamicSkillDefinition(t,e.moduleMap,e.nodeId))),s=await Promise.all(e.manifest.dynamicTools.map(t=>resolveDynamicToolDefinition(t,e.moduleMap,e.nodeId))),c=await Promise.all(e.manifest.hooks.map(t=>resolveHookDefinition(t,e.moduleMap,e.nodeId))),l=await Promise.all(e.manifest.connections.map(t=>resolveConnectionDefinition(t,e.moduleMap,e.nodeId))),u=e.manifest.sandbox===null?null:await resolveSandboxDefinition(e.manifest.sandbox,e.moduleMap,e.nodeId),d=createResolvedInstructions(e.manifest.instructions),f=e.manifest.workspaceResourceRoot,p={channels:r,config:createResolvedAgentConfig(e.manifest),connections:l,disabledFrameworkChannels:i,disabledFrameworkTools:[...e.manifest.disabledFrameworkTools],dynamicSkillResolvers:o,dynamicToolResolvers:s,hooks:c,metadata:{agentRoot:e.manifest.agentRoot,appRoot:e.manifest.appRoot,diagnosticsSummary:e.manifest.diagnosticsSummary},sandbox:u,workspaceResourceRoot:f,skills:t,tools:a,workspaceSpec:{rootEntries:[...f.rootEntries]}};return d===void 0?p:{...p,instructions:d}}function createResolvedInstructions(e){if(e!==void 0)return{name:e.name,logicalPath:e.logicalPath,markdown:e.markdown,sourceId:e.sourceId,sourceKind:e.sourceKind}}function createResolvedAgentConfig(e){let n={model:e.config.model.source===void 0?{id:e.config.model.id,contextWindowTokens:e.config.model.contextWindowTokens,providerOptions:e.config.model.providerOptions}:{contextWindowTokens:e.config.model.contextWindowTokens,id:e.config.model.id,providerOptions:e.config.model.providerOptions,source:{exportName:e.config.model.source.exportName,sourceKind:`module`,logicalPath:e.config.model.source.logicalPath,sourceId:e.config.model.source.sourceId}},name:e.config.name};if(e.config.compaction!==void 0){let t={};e.config.compaction.model!==void 0&&(t.model=e.config.compaction.model.source===void 0?{contextWindowTokens:e.config.compaction.model.contextWindowTokens,id:e.config.compaction.model.id,providerOptions:e.config.compaction.model.providerOptions}:{contextWindowTokens:e.config.compaction.model.contextWindowTokens,id:e.config.compaction.model.id,providerOptions:e.config.compaction.model.providerOptions,source:{exportName:e.config.compaction.model.source.exportName,sourceKind:`module`,logicalPath:e.config.compaction.model.source.logicalPath,sourceId:e.config.compaction.model.source.sourceId}}),e.config.compaction.thresholdPercent!==void 0&&(t.thresholdPercent=e.config.compaction.thresholdPercent),n.compaction=t}return e.config.experimental!==void 0&&(n.experimental={codeMode:e.config.experimental.codeMode}),e.config.source!==void 0&&(n.source=createResolvedModuleSourceRef(e.config.source)),n}export{ResolveAgentError,resolveAgent};
1
+ import{ResolveAgentError,createResolvedModuleSourceRef}from"#runtime/resolve-helpers.js";import{resolveChannelDefinition}from"#runtime/resolve-channel.js";import{resolveConnectionDefinition}from"#runtime/resolve-connection.js";import{resolveHookDefinition}from"#runtime/resolve-hook.js";import{resolveSandboxDefinition}from"#runtime/resolve-sandbox.js";import{resolveDynamicInstructionsDefinition}from"#runtime/resolve-dynamic-instructions.js";import{resolveDynamicSkillDefinition}from"#runtime/resolve-dynamic-skill.js";import{resolveDynamicToolDefinition}from"#runtime/resolve-dynamic-tool.js";import{resolveToolDefinition}from"#runtime/resolve-tool.js";async function resolveAgent(e){let t=e.manifest.skills.map(e=>({...e,metadata:e.metadata===void 0?void 0:{...e.metadata}})),r=[],i=[];for(let t of e.manifest.channels){if(t.kind===`disabled`){i.push(t.name);continue}r.push(await resolveChannelDefinition(t,e.moduleMap,e.nodeId))}let a=await Promise.all(e.manifest.tools.map(t=>resolveToolDefinition(t,e.moduleMap,e.nodeId))),o=await Promise.all((e.manifest.dynamicInstructions??[]).map(t=>resolveDynamicInstructionsDefinition(t,e.moduleMap,e.nodeId))),s=await Promise.all((e.manifest.dynamicSkills??[]).map(t=>resolveDynamicSkillDefinition(t,e.moduleMap,e.nodeId))),c=await Promise.all(e.manifest.dynamicTools.map(t=>resolveDynamicToolDefinition(t,e.moduleMap,e.nodeId))),l=await Promise.all(e.manifest.hooks.map(t=>resolveHookDefinition(t,e.moduleMap,e.nodeId))),u=await Promise.all(e.manifest.connections.map(t=>resolveConnectionDefinition(t,e.moduleMap,e.nodeId))),d=e.manifest.sandbox===null?null:await resolveSandboxDefinition(e.manifest.sandbox,e.moduleMap,e.nodeId),f=createResolvedInstructions(e.manifest.instructions),p=e.manifest.workspaceResourceRoot,m={channels:r,config:createResolvedAgentConfig(e.manifest),connections:u,disabledFrameworkChannels:i,disabledFrameworkTools:[...e.manifest.disabledFrameworkTools],dynamicInstructionsResolvers:o,dynamicSkillResolvers:s,dynamicToolResolvers:c,hooks:l,metadata:{agentRoot:e.manifest.agentRoot,appRoot:e.manifest.appRoot,diagnosticsSummary:e.manifest.diagnosticsSummary},sandbox:d,workspaceResourceRoot:p,skills:t,tools:a,workspaceSpec:{rootEntries:[...p.rootEntries]}};return f===void 0?m:{...m,instructions:f}}function createResolvedInstructions(e){if(e!==void 0)return{name:e.name,logicalPath:e.logicalPath,markdown:e.markdown,sourceId:e.sourceId,sourceKind:e.sourceKind}}function createResolvedAgentConfig(e){let n={model:e.config.model.source===void 0?{id:e.config.model.id,contextWindowTokens:e.config.model.contextWindowTokens,providerOptions:e.config.model.providerOptions}:{contextWindowTokens:e.config.model.contextWindowTokens,id:e.config.model.id,providerOptions:e.config.model.providerOptions,source:{exportName:e.config.model.source.exportName,sourceKind:`module`,logicalPath:e.config.model.source.logicalPath,sourceId:e.config.model.source.sourceId}},name:e.config.name};if(e.config.compaction!==void 0){let t={};e.config.compaction.model!==void 0&&(t.model=e.config.compaction.model.source===void 0?{contextWindowTokens:e.config.compaction.model.contextWindowTokens,id:e.config.compaction.model.id,providerOptions:e.config.compaction.model.providerOptions}:{contextWindowTokens:e.config.compaction.model.contextWindowTokens,id:e.config.compaction.model.id,providerOptions:e.config.compaction.model.providerOptions,source:{exportName:e.config.compaction.model.source.exportName,sourceKind:`module`,logicalPath:e.config.compaction.model.source.logicalPath,sourceId:e.config.compaction.model.source.sourceId}}),e.config.compaction.thresholdPercent!==void 0&&(t.thresholdPercent=e.config.compaction.thresholdPercent),n.compaction=t}return e.config.experimental!==void 0&&(n.experimental={codeMode:e.config.experimental.codeMode}),e.config.source!==void 0&&(n.source=createResolvedModuleSourceRef(e.config.source)),n}export{ResolveAgentError,resolveAgent};
@@ -0,0 +1,4 @@
1
+ import type { CompiledDynamicInstructionsDefinition } from "#compiler/manifest.js";
2
+ import type { CompiledModuleMap } from "#compiler/module-map.js";
3
+ import type { ResolvedDynamicInstructionsResolver } from "#runtime/types.js";
4
+ export declare function resolveDynamicInstructionsDefinition(definition: CompiledDynamicInstructionsDefinition, moduleMap: CompiledModuleMap, nodeId: string | undefined): Promise<ResolvedDynamicInstructionsResolver>;
@@ -0,0 +1 @@
1
+ import{expectFunction,expectObjectRecord}from"#internal/authored-module.js";import{toErrorMessage}from"#shared/errors.js";import{ResolveAgentError,loadResolvedModuleExport}from"#runtime/resolve-helpers.js";async function resolveDynamicInstructionsDefinition(i,a,o){try{let n=expectObjectRecord(expectObjectRecord(await loadResolvedModuleExport({definition:i,kindLabel:`dynamic-instructions`,moduleMap:a,nodeId:o}),describe(i,`to return an object`)).events,describe(i,`to provide an events object`)),r={};for(let t of i.eventNames)r[t]=expectFunction(n[t],describe(i,`to provide a handler for event "${t}"`));return{eventNames:[...i.eventNames],events:r,exportName:i.exportName,logicalPath:i.logicalPath,slug:i.slug,sourceId:i.sourceId,sourceKind:`module`}}catch(e){throw e instanceof ResolveAgentError?e:new ResolveAgentError(`Failed to resolve dynamic instructions from "${i.logicalPath}": ${toErrorMessage(e)}`,{logicalPath:i.logicalPath,sourceId:i.sourceId})}}function describe(e,t){return`Expected the dynamic instructions export "${e.exportName??`default`}" from "${e.logicalPath}" ${t}.`}export{resolveDynamicInstructionsDefinition};
@@ -273,6 +273,16 @@ export interface ResolvedDynamicSkillResolver extends Readonly<ModuleSourceRef>
273
273
  readonly eventNames: readonly string[];
274
274
  readonly events: Readonly<Record<string, (event: unknown, ctx: unknown) => unknown | Promise<unknown>>>;
275
275
  }
276
+ /**
277
+ * Runtime resolver for dynamic instructions declared via
278
+ * `defineDynamic({ events })` in `agent/instructions/`. Carries the live
279
+ * event handler functions loaded from the compiled module.
280
+ */
281
+ export interface ResolvedDynamicInstructionsResolver extends Readonly<ModuleSourceRef> {
282
+ readonly slug: string;
283
+ readonly eventNames: readonly string[];
284
+ readonly events: Readonly<Record<string, (event: unknown, ctx: unknown) => unknown | Promise<unknown>>>;
285
+ }
276
286
  /**
277
287
  * Runtime-owned authored agent model resolved from compiler artifacts.
278
288
  */
@@ -294,6 +304,7 @@ export interface ResolvedAgent {
294
304
  * filter the framework default tool set.
295
305
  */
296
306
  readonly disabledFrameworkTools: readonly string[];
307
+ readonly dynamicInstructionsResolvers: readonly ResolvedDynamicInstructionsResolver[];
297
308
  readonly dynamicSkillResolvers: readonly ResolvedDynamicSkillResolver[];
298
309
  readonly dynamicToolResolvers: readonly ResolvedDynamicToolResolver[];
299
310
  readonly metadata: ResolvedAgentMetadata;
@@ -106,4 +106,16 @@ export declare const TOOL_BRAND: unique symbol;
106
106
  * validate that entries are properly wrapped.
107
107
  */
108
108
  export declare function isBrandedToolEntry(value: unknown): boolean;
109
+ /**
110
+ * Symbol-based brand stamped by `defineInstructions` on every entry.
111
+ * Invisible in IntelliSense but checked at runtime to validate that
112
+ * dynamic instruction resolver returns are properly wrapped.
113
+ */
114
+ export declare const INSTRUCTIONS_BRAND: unique symbol;
115
+ /**
116
+ * Returns true if `value` was stamped by `defineInstructions` (has the
117
+ * brand symbol). Used to validate that dynamic instruction entries are
118
+ * properly wrapped.
119
+ */
120
+ export declare function isBrandedInstructionsEntry(value: unknown): boolean;
109
121
  export {};
@@ -1 +1 @@
1
- const ALLOWED_DYNAMIC_TOOL_EVENTS=new Set([`session.started`,`turn.started`,`step.started`]),DYNAMIC_SENTINEL_KIND=`ash:dynamic`;function isDynamicSentinel(e){return typeof e==`object`&&!!e&&e.kind===`ash:dynamic`}const TOOL_BRAND=Symbol.for(`ash:tool-brand`);function isBrandedToolEntry(e){return typeof e==`object`&&!!e&&e[TOOL_BRAND]===!0}export{ALLOWED_DYNAMIC_TOOL_EVENTS,DYNAMIC_SENTINEL_KIND,TOOL_BRAND,isBrandedToolEntry,isDynamicSentinel};
1
+ const ALLOWED_DYNAMIC_TOOL_EVENTS=new Set([`session.started`,`turn.started`,`step.started`]),DYNAMIC_SENTINEL_KIND=`ash:dynamic`;function isDynamicSentinel(e){return typeof e==`object`&&!!e&&e.kind===`ash:dynamic`}const TOOL_BRAND=Symbol.for(`ash:tool-brand`);function isBrandedToolEntry(e){return typeof e==`object`&&!!e&&e[TOOL_BRAND]===!0}const INSTRUCTIONS_BRAND=Symbol.for(`ash:instructions-brand`);function isBrandedInstructionsEntry(e){return typeof e==`object`&&!!e&&e[INSTRUCTIONS_BRAND]===!0}export{ALLOWED_DYNAMIC_TOOL_EVENTS,DYNAMIC_SENTINEL_KIND,INSTRUCTIONS_BRAND,TOOL_BRAND,isBrandedInstructionsEntry,isBrandedToolEntry,isDynamicSentinel};
@@ -50,6 +50,19 @@ export type SandboxWriteBinaryFileOptions = Parameters<AiSdkSandbox["writeBinary
50
50
  * Options for writing one text file to a sandbox.
51
51
  */
52
52
  export type SandboxWriteTextFileOptions = Parameters<AiSdkSandbox["writeTextFile"]>[0];
53
+ /**
54
+ * Options for removing a path from a sandbox.
55
+ *
56
+ * Relative paths resolve from `/workspace`; absolute paths pass through.
57
+ * `force` ignores missing paths. `recursive` permits removing non-empty
58
+ * directories.
59
+ */
60
+ export interface SandboxRemovePathOptions {
61
+ readonly abortSignal?: AbortSignal;
62
+ readonly force?: boolean;
63
+ readonly path: string;
64
+ readonly recursive?: boolean;
65
+ }
53
66
  /**
54
67
  * Public Ash-owned sandbox session exposed to authored lifecycle hooks.
55
68
  *
@@ -98,6 +111,12 @@ export interface SandboxSession extends Pick<AiSdkSandbox, "run" | "spawn" | "re
98
111
  * policy at run time and runs no binaries to govern.
99
112
  */
100
113
  setNetworkPolicy(policy: SandboxNetworkPolicy): Promise<void>;
114
+ /**
115
+ * Removes one file or directory from the sandbox filesystem.
116
+ *
117
+ * Relative paths resolve from `/workspace`; absolute paths pass through.
118
+ */
119
+ removePath(options: SandboxRemovePathOptions): Promise<void>;
101
120
  }
102
121
  /**
103
122
  * Internal sandbox session, used to construct the public {@link SandboxSession}.
@@ -118,6 +137,8 @@ export interface InternalSandboxSession extends Pick<AiSdkSandbox, "spawn" | "re
118
137
  * Stable identifier surfaced on the public {@link SandboxSession}.
119
138
  */
120
139
  readonly id: string;
140
+ /** Removes an already-resolved path from the backend filesystem. */
141
+ removePath(options: SandboxRemovePathOptions): Promise<void>;
121
142
  /** Translates a user-facing path to the backend's native path. */
122
143
  resolvePath(path: string): string;
123
144
  }
@@ -36,6 +36,13 @@ export declare function writeSkillPackageToSandbox(input: {
36
36
  readonly sandbox: SandboxSession;
37
37
  readonly skill: MaterializableSkillPackage;
38
38
  }): Promise<void>;
39
+ /**
40
+ * Removes a skill package from the live sandbox.
41
+ */
42
+ export declare function removeSkillPackageFromSandbox(input: {
43
+ readonly sandbox: SandboxSession;
44
+ readonly name: string;
45
+ }): Promise<void>;
39
46
  /**
40
47
  * Validates a runtime-contributed skill name before it becomes one path
41
48
  * segment under `/workspace/skills`.
@@ -1 +1 @@
1
- import{dirname,join}from"node:path";import{mkdir,writeFile}from"node:fs/promises";import{Buffer}from"node:buffer";function normalizeSkillPackage(e){assertSafeSkillPackageName(e.name);let t=[{content:Buffer.from(e.markdown,`utf8`),relativePath:`SKILL.md`}];for(let[n,r]of Object.entries(e.files??{}))assertSafeSkillPackageFilePath(n),t.push({content:contentToBuffer(r),relativePath:n});return t.sort((e,t)=>comparePaths(e.relativePath,t.relativePath)),{description:e.description,files:t,license:e.license,markdown:e.markdown,metadata:e.metadata===void 0?void 0:{...e.metadata},name:e.name}}async function writeSkillPackageDirectory(i){for(let a of i.skill.files){let o=join(i.rootPath,`skills`,i.skill.name,a.relativePath);await mkdir(dirname(o),{recursive:!0}),await writeFile(o,a.content)}}async function writeSkillPackageToSandbox(e){for(let t of e.skill.files)await e.sandbox.writeBinaryFile({content:t.content,path:`/workspace/skills/${e.skill.name}/${t.relativePath}`})}function assertSafeSkillPackageName(e){if(e.length===0||e.trim()!==e||e.startsWith(`.`)||e.includes(`/`)||e.includes(`\\`)||e.includes(`..`)||/^[A-Za-z]:/.test(e))throw Error(`Expected skill name to be a non-empty safe path segment without whitespace, separators, "." prefix, or "..".`)}function assertSafeSkillPackageFilePath(e){if(e===`SKILL.md`)throw Error(`Skill package files must not include "SKILL.md"; Ash generates it.`);if(e.length===0||e.startsWith(`/`)||e.includes(`\\`)||/^[A-Za-z]:/.test(e)||e.split(`/`).some(e=>e.length===0||e===`.`||e===`..`))throw Error(`Expected skill package file paths to be relative POSIX paths.`)}function contentToBuffer(e){return typeof e==`string`?Buffer.from(e,`utf8`):Buffer.from(e)}function comparePaths(e,t){return e<t?-1:+(e>t)}export{assertSafeSkillPackageName,normalizeSkillPackage,writeSkillPackageDirectory,writeSkillPackageToSandbox};
1
+ import{dirname,join}from"node:path";import{mkdir,writeFile}from"node:fs/promises";import{Buffer}from"node:buffer";const WORKSPACE_ROOT=`/workspace`;function normalizeSkillPackage(e){assertSafeSkillPackageName(e.name);let t=[{content:Buffer.from(e.markdown,`utf8`),relativePath:`SKILL.md`}];for(let[n,r]of Object.entries(e.files??{}))assertSafeSkillPackageFilePath(n),t.push({content:contentToBuffer(r),relativePath:n});return t.sort((e,t)=>comparePaths(e.relativePath,t.relativePath)),{description:e.description,files:t,license:e.license,markdown:e.markdown,metadata:e.metadata===void 0?void 0:{...e.metadata},name:e.name}}async function writeSkillPackageDirectory(i){for(let a of i.skill.files){let o=join(i.rootPath,`skills`,i.skill.name,a.relativePath);await mkdir(dirname(o),{recursive:!0}),await writeFile(o,a.content)}}async function writeSkillPackageToSandbox(e){for(let t of e.skill.files)await e.sandbox.writeBinaryFile({content:t.content,path:`${WORKSPACE_ROOT}/skills/${e.skill.name}/${t.relativePath}`})}async function removeSkillPackageFromSandbox(e){assertSafeSkillPackageName(e.name),await e.sandbox.removePath({force:!0,path:`${WORKSPACE_ROOT}/skills/${e.name}`,recursive:!0})}function assertSafeSkillPackageName(e){if(e.length===0||e.startsWith(`.`)||e.includes(`/`)||e.includes(`\\`)||e.includes(`..`)||!/^[A-Za-z0-9][A-Za-z0-9._-]*$/.test(e)||/^[A-Za-z]:/.test(e))throw Error(`Expected skill name to be a non-empty shell-safe path segment starting with an alphanumeric character and containing only alphanumerics, ".", "_", or "-".`)}function assertSafeSkillPackageFilePath(e){if(e===`SKILL.md`)throw Error(`Skill package files must not include "SKILL.md"; Ash generates it.`);if(e.length===0||e.startsWith(`/`)||e.includes(`\\`)||/^[A-Za-z]:/.test(e)||e.split(`/`).some(e=>e.length===0||e===`.`||e===`..`))throw Error(`Expected skill package file paths to be relative POSIX paths.`)}function contentToBuffer(e){return typeof e==`string`?Buffer.from(e,`utf8`):Buffer.from(e)}function comparePaths(e,t){return e<t?-1:+(e>t)}export{assertSafeSkillPackageName,normalizeSkillPackage,removeSkillPackageFromSandbox,writeSkillPackageDirectory,writeSkillPackageToSandbox};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "experimental-ash",
3
- "version": "0.44.0",
3
+ "version": "0.46.0",
4
4
  "bin": {
5
5
  "ash": "./bin/ash.js",
6
6
  "experimental-ash": "./bin/ash.js"
@@ -188,11 +188,11 @@
188
188
  "@types/react": "19.2.15",
189
189
  "@types/react-test-renderer": "19.1.0",
190
190
  "@vercel/oidc": "3.5.0",
191
- "@vercel/sandbox": "2.0.1",
192
- "@workflow/core": "5.0.0-beta.10",
191
+ "@vercel/sandbox": "2.1.0",
192
+ "@workflow/core": "5.0.0-beta.11",
193
193
  "@workflow/errors": "5.0.0-beta.6",
194
- "@workflow/world": "5.0.0-beta.5",
195
- "@workflow/world-local": "5.0.0-beta.11",
194
+ "@workflow/world": "5.0.0-beta.6",
195
+ "@workflow/world-local": "5.0.0-beta.12",
196
196
  "ai": "7.0.0-canary.159",
197
197
  "autoevals": "0.0.132",
198
198
  "chat": "4.29.0",
@@ -1,7 +0,0 @@
1
- {
2
- "name": "experimental-ash-compiled-ai-sdk-anthropic",
3
- "version": "4.0.0-canary.61",
4
- "private": true,
5
- "type": "module",
6
- "license": "Apache-2.0"
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "name": "experimental-ash-compiled-ai-sdk-google",
3
- "version": "4.0.0-canary.75",
4
- "private": true,
5
- "type": "module",
6
- "license": "Apache-2.0"
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "name": "experimental-ash-compiled-ai-sdk-mcp",
3
- "version": "2.0.0-canary.56",
4
- "private": true,
5
- "type": "module",
6
- "license": "Apache-2.0"
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "name": "experimental-ash-compiled-ai-sdk-openai",
3
- "version": "4.0.0-canary.66",
4
- "private": true,
5
- "type": "module",
6
- "license": "Apache-2.0"
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "name": "experimental-ash-compiled-ai-sdk-otel",
3
- "version": "1.0.0-canary.105",
4
- "private": true,
5
- "type": "module",
6
- "license": "Apache-2.0"
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "name": "experimental-ash-compiled-ai-sdk-provider",
3
- "version": "4.0.0-canary.17",
4
- "private": true,
5
- "type": "module",
6
- "license": "Apache-2.0"
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "name": "experimental-ash-compiled-chat-adapter-slack",
3
- "version": "4.29.0",
4
- "private": true,
5
- "type": "module",
6
- "license": "MIT"
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "name": "experimental-ash-compiled-chat-adapter-state-memory",
3
- "version": "4.29.0",
4
- "private": true,
5
- "type": "module",
6
- "license": "MIT"
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "name": "experimental-ash-compiled-opentelemetry-api",
3
- "version": "1.9.1",
4
- "private": true,
5
- "type": "module",
6
- "license": "Apache-2.0"
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "name": "experimental-ash-compiled-standard-schema-spec",
3
- "version": "1.1.0",
4
- "private": true,
5
- "type": "module",
6
- "license": "MIT"
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "name": "experimental-ash-compiled-vercel-oidc",
3
- "version": "3.5.0",
4
- "private": true,
5
- "type": "module",
6
- "license": "Apache-2.0"
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "name": "experimental-ash-compiled-vercel-sandbox",
3
- "version": "2.0.1",
4
- "private": true,
5
- "type": "module",
6
- "license": "Apache-2.0"
7
- }