experimental-ash 0.26.0 → 0.28.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 (787) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/dist/docs/public/channels/README.md +50 -2
  3. package/dist/docs/public/channels/discord.md +15 -7
  4. package/dist/docs/public/channels/teams.md +121 -0
  5. package/dist/docs/public/channels/telegram.md +201 -0
  6. package/dist/docs/public/subagents.md +38 -0
  7. package/dist/docs/public/typescript-api.md +41 -1
  8. package/dist/src/_virtual/_rolldown/runtime.js +1 -0
  9. package/dist/src/channel/adapter-context.js +1 -24
  10. package/dist/src/channel/adapter.js +1 -62
  11. package/dist/src/channel/compiled-channel.js +1 -6
  12. package/dist/src/channel/cross-channel-receive.js +2 -108
  13. package/dist/src/channel/http.js +1 -30
  14. package/dist/src/channel/receive-args.js +1 -1
  15. package/dist/src/channel/resolve-text.js +1 -59
  16. package/dist/src/channel/routes.js +1 -15
  17. package/dist/src/channel/schedule.js +1 -81
  18. package/dist/src/channel/send.js +1 -81
  19. package/dist/src/channel/session-callback.js +1 -65
  20. package/dist/src/channel/session.js +1 -58
  21. package/dist/src/channel/types.js +1 -1
  22. package/dist/src/cli/commands/channels.js +3 -9
  23. package/dist/src/cli/commands/info.js +2 -2
  24. package/dist/src/cli/dev/environment.js +1 -1
  25. package/dist/src/cli/dev/input-requests.js +1 -1
  26. package/dist/src/cli/dev/input.js +1 -1
  27. package/dist/src/cli/dev/repl.js +2 -3
  28. package/dist/src/cli/dev/terminal.js +5 -5
  29. package/dist/src/cli/dev/url.js +1 -1
  30. package/dist/src/cli/run.js +2 -2
  31. package/dist/src/cli/ui/output.js +8 -8
  32. package/dist/src/client/client-error.js +1 -19
  33. package/dist/src/client/client.js +1 -128
  34. package/dist/src/client/index.js +1 -11
  35. package/dist/src/client/message-reducer-types.js +1 -1
  36. package/dist/src/client/message-reducer.js +1 -456
  37. package/dist/src/client/message-response.js +1 -55
  38. package/dist/src/client/ndjson.js +3 -62
  39. package/dist/src/client/open-stream.js +1 -45
  40. package/dist/src/client/reducer.js +1 -1
  41. package/dist/src/client/session-utils.js +1 -62
  42. package/dist/src/client/session.js +1 -206
  43. package/dist/src/client/types.js +1 -1
  44. package/dist/src/client/url.js +1 -34
  45. package/dist/src/compiled/.vendor-stamp.json +6 -1
  46. package/dist/src/compiled/@vercel/oidc/LICENSE +202 -0
  47. package/dist/src/compiled/@vercel/oidc/index.d.ts +21 -0
  48. package/dist/src/compiled/@vercel/oidc/index.js +2 -0
  49. package/dist/src/compiled/@vercel/oidc/package.json +7 -0
  50. package/dist/src/compiled/chokidar/LICENSE +21 -0
  51. package/dist/src/compiled/chokidar/index.d.ts +33 -0
  52. package/dist/src/compiled/chokidar/index.js +1 -0
  53. package/dist/src/compiled/chokidar/package.json +7 -0
  54. package/dist/src/compiled/commander/LICENSE +22 -0
  55. package/dist/src/compiled/commander/index.d.ts +1113 -0
  56. package/dist/src/{chunks/url-JdCGA634.js → compiled/commander/index.js} +10 -10
  57. package/dist/src/compiled/commander/package.json +7 -0
  58. package/dist/src/compiled/gray-matter/LICENSE +21 -0
  59. package/dist/src/compiled/gray-matter/index.d.ts +62 -0
  60. package/dist/src/{chunks/gray-matter-D-9jHwOT.js → compiled/gray-matter/index.js} +2 -2
  61. package/dist/src/compiled/gray-matter/package.json +7 -0
  62. package/dist/src/compiled/picocolors/LICENSE +15 -0
  63. package/dist/src/compiled/picocolors/index.d.ts +55 -0
  64. package/dist/src/compiled/picocolors/index.js +1 -0
  65. package/dist/src/compiled/picocolors/package.json +7 -0
  66. package/dist/src/compiler/artifacts.js +1 -147
  67. package/dist/src/compiler/compile-agent.js +3 -76
  68. package/dist/src/compiler/compile-from-memory.js +1 -59
  69. package/dist/src/compiler/manifest.js +1 -424
  70. package/dist/src/compiler/model-catalog.js +1 -224
  71. package/dist/src/compiler/module-map.js +5 -295
  72. package/dist/src/compiler/normalize-agent-config.js +1 -157
  73. package/dist/src/compiler/normalize-channel.js +1 -51
  74. package/dist/src/compiler/normalize-connection.js +1 -58
  75. package/dist/src/compiler/normalize-helpers.js +1 -23
  76. package/dist/src/compiler/normalize-hook.js +1 -19
  77. package/dist/src/compiler/normalize-instructions.js +1 -28
  78. package/dist/src/compiler/normalize-manifest.js +1 -79
  79. package/dist/src/compiler/normalize-sandbox.js +1 -20
  80. package/dist/src/compiler/normalize-schedule.js +1 -38
  81. package/dist/src/compiler/normalize-skill.js +1 -60
  82. package/dist/src/compiler/normalize-subagent.js +1 -174
  83. package/dist/src/compiler/normalize-tool.js +1 -40
  84. package/dist/src/compiler/remote-agent-node.js +1 -19
  85. package/dist/src/compiler/workspace-resources.js +1 -85
  86. package/dist/src/context/accessors.js +1 -93
  87. package/dist/src/context/container.js +1 -89
  88. package/dist/src/context/hook-lifecycle.js +1 -242
  89. package/dist/src/context/key.js +1 -39
  90. package/dist/src/context/keys.js +1 -43
  91. package/dist/src/context/node.js +1 -9
  92. package/dist/src/context/provider.js +1 -1
  93. package/dist/src/context/providers/connection.js +1 -17
  94. package/dist/src/context/providers/sandbox.js +1 -46
  95. package/dist/src/context/providers/session.js +1 -18
  96. package/dist/src/context/run-step.js +1 -51
  97. package/dist/src/context/seed-keys.js +1 -37
  98. package/dist/src/context/serialize.js +1 -44
  99. package/dist/src/discover/connections.js +1 -153
  100. package/dist/src/discover/diagnostics.js +1 -82
  101. package/dist/src/discover/discover-agent.js +1 -159
  102. package/dist/src/discover/discover-subagent.js +1 -223
  103. package/dist/src/discover/filesystem.js +1 -215
  104. package/dist/src/discover/grammar.js +1 -371
  105. package/dist/src/discover/lib.js +1 -34
  106. package/dist/src/discover/manifest.js +1 -136
  107. package/dist/src/discover/markdown.js +1 -17
  108. package/dist/src/discover/named-source-directory.js +1 -188
  109. package/dist/src/discover/project-source.js +1 -152
  110. package/dist/src/discover/project.js +1 -117
  111. package/dist/src/discover/sandbox.js +1 -220
  112. package/dist/src/discover/schedules.js +1 -41
  113. package/dist/src/discover/skills.js +1 -274
  114. package/dist/src/discover/slots.js +1 -68
  115. package/dist/src/evals/cli/eval.js +1 -1
  116. package/dist/src/evals/define-eval-suite.js +1 -1
  117. package/dist/src/evals/index.js +1 -1
  118. package/dist/src/evals/loaders/index.js +1 -1
  119. package/dist/src/evals/loaders/json.js +1 -1
  120. package/dist/src/evals/loaders/yaml.js +1 -1
  121. package/dist/src/evals/reporters/index.js +1 -1
  122. package/dist/src/evals/runner/artifacts.js +3 -3
  123. package/dist/src/evals/runner/derive-run-facts.js +1 -1
  124. package/dist/src/evals/runner/discover.js +1 -1
  125. package/dist/src/evals/runner/execute-case.js +1 -1
  126. package/dist/src/evals/runner/execute-suite.js +1 -1
  127. package/dist/src/evals/runner/reporters/braintrust.js +2 -2
  128. package/dist/src/evals/runner/reporters/console.js +1 -1
  129. package/dist/src/evals/runner/resolve-git-metadata.js +1 -1
  130. package/dist/src/evals/scorers/autoevals-client.js +2 -2
  131. package/dist/src/evals/scorers/autoevals.js +1 -1
  132. package/dist/src/evals/scorers/json.js +1 -1
  133. package/dist/src/evals/scorers/run.js +1 -1
  134. package/dist/src/evals/scorers/sql.js +1 -1
  135. package/dist/src/evals/scorers/text.js +1 -1
  136. package/dist/src/evals/scores/index.js +1 -1
  137. package/dist/src/execution/authorization-challenge-defaults.js +1 -60
  138. package/dist/src/execution/await-authorization-orchestrator.js +1 -192
  139. package/dist/src/execution/await-authorization-splice.js +1 -66
  140. package/dist/src/execution/connection-auth-steps.js +1 -338
  141. package/dist/src/execution/node-step.js +1 -146
  142. package/dist/src/execution/remote-agent-dispatch.js +1 -79
  143. package/dist/src/execution/runtime-context.js +1 -26
  144. package/dist/src/execution/runtime-errors.js +1 -19
  145. package/dist/src/execution/sandbox/bash-tool.js +1 -42
  146. package/dist/src/execution/sandbox/bindings/local.js +1 -296
  147. package/dist/src/execution/sandbox/bindings/vercel.js +1 -363
  148. package/dist/src/execution/sandbox/ensure.js +1 -91
  149. package/dist/src/execution/sandbox/glob-tool.js +3 -146
  150. package/dist/src/execution/sandbox/grep-tool.js +3 -183
  151. package/dist/src/execution/sandbox/lazy-backend.js +1 -33
  152. package/dist/src/execution/sandbox/prewarm.js +1 -132
  153. package/dist/src/execution/sandbox/read-file-tool.js +3 -118
  154. package/dist/src/execution/sandbox/require-sandbox.js +1 -32
  155. package/dist/src/execution/sandbox/ripgrep-probe.js +1 -36
  156. package/dist/src/execution/sandbox/session.js +3 -158
  157. package/dist/src/execution/sandbox/shell-quote.js +1 -14
  158. package/dist/src/execution/sandbox/stream-utils.js +1 -22
  159. package/dist/src/execution/sandbox/truncate-output.js +3 -110
  160. package/dist/src/execution/sandbox/write-file-tool.js +1 -62
  161. package/dist/src/execution/session-callback-step.js +1 -72
  162. package/dist/src/execution/session.js +3 -94
  163. package/dist/src/execution/skills/instructions.js +2 -30
  164. package/dist/src/execution/skills/types.js +1 -1
  165. package/dist/src/execution/subagent-adapter.js +1 -94
  166. package/dist/src/execution/subagent-hitl-proxy.js +1 -81
  167. package/dist/src/execution/subagent-invocation.js +2 -16
  168. package/dist/src/execution/subagent-tool.js +1 -48
  169. package/dist/src/execution/tool-compaction.js +1 -54
  170. package/dist/src/execution/turn-workflow.js +1 -95
  171. package/dist/src/execution/web-fetch/html.js +7 -60
  172. package/dist/src/execution/web-fetch/tool.js +1 -90
  173. package/dist/src/execution/workflow-entry.js +1 -494
  174. package/dist/src/execution/workflow-errors.js +1 -54
  175. package/dist/src/execution/workflow-runtime.js +3 -161
  176. package/dist/src/execution/workflow-steps.js +1 -467
  177. package/dist/src/harness/action-result-helpers.js +1 -82
  178. package/dist/src/harness/attachment-staging.js +1 -303
  179. package/dist/src/harness/compaction.js +4 -221
  180. package/dist/src/harness/emission.js +1 -323
  181. package/dist/src/harness/execute-tool.js +1 -1
  182. package/dist/src/harness/input-extraction.js +1 -62
  183. package/dist/src/harness/input-requests.js +1 -306
  184. package/dist/src/harness/instrumentation-config.js +1 -42
  185. package/dist/src/harness/messages.js +1 -144
  186. package/dist/src/harness/model-call-error.js +1 -368
  187. package/dist/src/harness/otel-integration.js +1 -18
  188. package/dist/src/harness/prompt-cache.js +1 -137
  189. package/dist/src/harness/provider-tools.js +1 -137
  190. package/dist/src/harness/proxy-input-requests.js +1 -91
  191. package/dist/src/harness/runtime-actions.js +1 -321
  192. package/dist/src/harness/step-hooks.js +1 -192
  193. package/dist/src/harness/tool-loop.js +1 -877
  194. package/dist/src/harness/tool-result-pruning.js +1 -124
  195. package/dist/src/harness/tools.js +1 -98
  196. package/dist/src/harness/types.js +1 -1
  197. package/dist/src/index.js +1 -1
  198. package/dist/src/internal/application/cache-metadata.js +1 -42
  199. package/dist/src/internal/application/compiled-artifacts.js +4 -114
  200. package/dist/src/internal/application/import-specifier.js +1 -58
  201. package/dist/src/internal/application/package.js +1 -196
  202. package/dist/src/internal/application/paths.js +1 -117
  203. package/dist/src/internal/application/runtime-compiled-artifacts-source.js +1 -11
  204. package/dist/src/internal/attachments/data.js +1 -127
  205. package/dist/src/internal/attachments/errors.js +1 -26
  206. package/dist/src/internal/attachments/refs.js +1 -94
  207. package/dist/src/internal/attachments/sandbox-refs.js +1 -78
  208. package/dist/src/internal/attachments/url-refs.js +1 -20
  209. package/dist/src/internal/authored-asset-import-plugin.js +1 -141
  210. package/dist/src/internal/authored-definition/channel.js +1 -21
  211. package/dist/src/internal/authored-definition/connection.js +1 -148
  212. package/dist/src/internal/authored-definition/core.js +1 -180
  213. package/dist/src/internal/authored-definition/sandbox.js +1 -47
  214. package/dist/src/internal/authored-definition/schema-backed.js +1 -56
  215. package/dist/src/internal/authored-module-bundle.js +2 -19
  216. package/dist/src/internal/authored-module-loader.js +2 -263
  217. package/dist/src/internal/authored-module-map-loader.js +1 -53
  218. package/dist/src/internal/authored-module.js +1 -81
  219. package/dist/src/internal/authored-package-tsconfig-paths.js +1 -209
  220. package/dist/src/internal/bundler/nitro-rolldown.js +1 -42
  221. package/dist/src/internal/helpers/markdown.js +3 -174
  222. package/dist/src/internal/json-schema.js +1 -13
  223. package/dist/src/internal/logging.js +1 -226
  224. package/dist/src/internal/nitro/host/artifacts-config.js +1 -17
  225. package/dist/src/internal/nitro/host/build-application.js +1 -177
  226. package/dist/src/internal/nitro/host/build-vercel-agent-summary.js +1 -140
  227. package/dist/src/internal/nitro/host/channel-routes.js +2 -126
  228. package/dist/src/internal/nitro/host/compiled-sandbox-backend-prune-plugin.js +2 -28
  229. package/dist/src/internal/nitro/host/configure-nitro-routes.js +4 -272
  230. package/dist/src/internal/nitro/host/create-application-nitro.js +1 -491
  231. package/dist/src/internal/nitro/host/cron-handler-route.js +1 -49
  232. package/dist/src/internal/nitro/host/dev-authored-source-watcher.js +1 -390
  233. package/dist/src/internal/nitro/host/nitro-bundler-config.js +1 -10
  234. package/dist/src/internal/nitro/host/nitro-routing-import-specifier-plugin.js +1 -28
  235. package/dist/src/internal/nitro/host/prepare-application-host.js +1 -32
  236. package/dist/src/internal/nitro/host/schedule-task-routes.js +2 -148
  237. package/dist/src/internal/nitro/host/server-external-packages.js +1 -107
  238. package/dist/src/internal/nitro/host/start-development-server.js +1 -223
  239. package/dist/src/internal/nitro/host/types.js +1 -1
  240. package/dist/src/internal/nitro/host/vercel-build-output-config.js +1 -14
  241. package/dist/src/internal/nitro/host/vercel-build-prewarm.js +1 -30
  242. package/dist/src/internal/nitro/host.js +1 -2
  243. package/dist/src/internal/nitro/routes/agent-info/build-agent-info-response.js +2 -180
  244. package/dist/src/internal/nitro/routes/agent-info/load-agent-info-data.js +1 -46
  245. package/dist/src/internal/nitro/routes/channel-dispatch.js +1 -74
  246. package/dist/src/internal/nitro/routes/health.js +1 -17
  247. package/dist/src/internal/nitro/routes/index.js +2 -89
  248. package/dist/src/internal/nitro/routes/info.js +1 -50
  249. package/dist/src/internal/nitro/routes/runtime-artifacts.js +1 -24
  250. package/dist/src/internal/nitro/routes/runtime-stack.js +1 -23
  251. package/dist/src/internal/nitro/routes/schedule-task.js +1 -57
  252. package/dist/src/internal/nitro/routes/workflow-data.js +1 -141
  253. package/dist/src/internal/nitro/routes/workflow-route-helpers.js +1 -137
  254. package/dist/src/internal/nitro/routes/workflow-run-events.js +1 -41
  255. package/dist/src/internal/nitro/routes/workflow-run-steps.js +1 -41
  256. package/dist/src/internal/nitro/routes/workflow-run.js +1 -34
  257. package/dist/src/internal/nitro/routes/workflow-runs.js +1 -28
  258. package/dist/src/internal/node-esm-compat-banner.js +2 -65
  259. package/dist/src/internal/package-name.js +1 -8
  260. package/dist/src/internal/process/pnpm.js +1 -50
  261. package/dist/src/internal/runtime-model.js +1 -24
  262. package/dist/src/internal/runtime-registry.js +1 -93
  263. package/dist/src/internal/vercel-agent-summary.js +1 -72
  264. package/dist/src/internal/workflow/builtins.js +1 -18
  265. package/dist/src/internal/workflow/index.js +1 -9
  266. package/dist/src/internal/workflow-bundle/ash-service-route-output.js +3 -93
  267. package/dist/src/internal/workflow-bundle/builder-support.js +5 -372
  268. package/dist/src/internal/workflow-bundle/builder.js +5 -472
  269. package/dist/src/internal/workflow-bundle/nitro-step-entry.js +2 -132
  270. package/dist/src/internal/workflow-bundle/vercel-workflow-output.js +3 -494
  271. package/dist/src/internal/workflow-bundle/workflow-builders.js +1 -292
  272. package/dist/src/internal/workflow-bundle/workflow-core-shim.js +1 -84
  273. package/dist/src/internal/workflow-bundle/workflow-transformer.js +5 -318
  274. package/dist/src/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/ajv.js +1 -0
  275. package/dist/src/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/codegen/code.js +1 -0
  276. package/dist/src/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/codegen/index.js +2 -0
  277. package/dist/src/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/codegen/scope.js +1 -0
  278. package/dist/src/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/errors.js +1 -0
  279. package/dist/src/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/index.js +1 -0
  280. package/dist/src/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/names.js +1 -0
  281. package/dist/src/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/ref_error.js +1 -0
  282. package/dist/src/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/resolve.js +1 -0
  283. package/dist/src/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/rules.js +1 -0
  284. package/dist/src/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/util.js +1 -0
  285. package/dist/src/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/validate/applicability.js +1 -0
  286. package/dist/src/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/validate/boolSchema.js +1 -0
  287. package/dist/src/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/validate/dataType.js +4 -0
  288. package/dist/src/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/validate/defaults.js +1 -0
  289. package/dist/src/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/validate/index.js +1 -0
  290. package/dist/src/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/validate/keyword.js +1 -0
  291. package/dist/src/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/validate/subschema.js +1 -0
  292. package/dist/src/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/core.js +1 -0
  293. package/dist/src/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/refs/data.js +1 -0
  294. package/dist/src/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/refs/json-schema-draft-07.js +1 -0
  295. package/dist/src/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/runtime/equal.js +1 -0
  296. package/dist/src/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/runtime/ucs2length.js +1 -0
  297. package/dist/src/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/runtime/uri.js +1 -0
  298. package/dist/src/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/runtime/validation_error.js +1 -0
  299. package/dist/src/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/additionalItems.js +1 -0
  300. package/dist/src/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/additionalProperties.js +1 -0
  301. package/dist/src/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/allOf.js +1 -0
  302. package/dist/src/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/anyOf.js +1 -0
  303. package/dist/src/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/contains.js +1 -0
  304. package/dist/src/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/dependencies.js +4 -0
  305. package/dist/src/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/if.js +1 -0
  306. package/dist/src/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/index.js +1 -0
  307. package/dist/src/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/items.js +1 -0
  308. package/dist/src/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/items2020.js +1 -0
  309. package/dist/src/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/not.js +1 -0
  310. package/dist/src/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/oneOf.js +1 -0
  311. package/dist/src/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/patternProperties.js +1 -0
  312. package/dist/src/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/prefixItems.js +1 -0
  313. package/dist/src/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/properties.js +1 -0
  314. package/dist/src/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/propertyNames.js +1 -0
  315. package/dist/src/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/thenElse.js +1 -0
  316. package/dist/src/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/code.js +1 -0
  317. package/dist/src/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/core/id.js +1 -0
  318. package/dist/src/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/core/index.js +1 -0
  319. package/dist/src/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/core/ref.js +1 -0
  320. package/dist/src/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/discriminator/index.js +1 -0
  321. package/dist/src/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/discriminator/types.js +1 -0
  322. package/dist/src/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/draft7.js +1 -0
  323. package/dist/src/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/format/format.js +1 -0
  324. package/dist/src/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/format/index.js +1 -0
  325. package/dist/src/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/metadata.js +1 -0
  326. package/dist/src/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/validation/const.js +1 -0
  327. package/dist/src/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/validation/enum.js +1 -0
  328. package/dist/src/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/validation/index.js +1 -0
  329. package/dist/src/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/validation/limitItems.js +1 -0
  330. package/dist/src/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/validation/limitLength.js +1 -0
  331. package/dist/src/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/validation/limitNumber.js +1 -0
  332. package/dist/src/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/validation/limitProperties.js +1 -0
  333. package/dist/src/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/validation/multipleOf.js +1 -0
  334. package/dist/src/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/validation/pattern.js +1 -0
  335. package/dist/src/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/validation/required.js +1 -0
  336. package/dist/src/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/validation/uniqueItems.js +1 -0
  337. package/dist/src/node_modules/.pnpm/autoevals@0.0.132_ws@8.21.0/node_modules/autoevals/jsdist/index.js +384 -0
  338. package/dist/src/node_modules/.pnpm/compute-cosine-similarity@1.1.0/node_modules/compute-cosine-similarity/lib/index.js +1 -0
  339. package/dist/src/node_modules/.pnpm/compute-dot@1.1.0/node_modules/compute-dot/lib/index.js +1 -0
  340. package/dist/src/node_modules/.pnpm/compute-l2norm@1.1.0/node_modules/compute-l2norm/lib/index.js +1 -0
  341. package/dist/src/node_modules/.pnpm/fast-deep-equal@3.1.3/node_modules/fast-deep-equal/index.js +1 -0
  342. package/dist/src/node_modules/.pnpm/fast-uri@3.1.2/node_modules/fast-uri/index.js +1 -0
  343. package/dist/src/node_modules/.pnpm/fast-uri@3.1.2/node_modules/fast-uri/lib/schemes.js +1 -0
  344. package/dist/src/node_modules/.pnpm/fast-uri@3.1.2/node_modules/fast-uri/lib/utils.js +1 -0
  345. package/dist/src/node_modules/.pnpm/js-levenshtein@1.1.6/node_modules/js-levenshtein/index.js +1 -0
  346. package/dist/src/node_modules/.pnpm/js-yaml@4.1.1/node_modules/js-yaml/dist/js-yaml.js +32 -0
  347. package/dist/src/node_modules/.pnpm/json-schema-traverse@1.0.0/node_modules/json-schema-traverse/index.js +1 -0
  348. package/dist/src/node_modules/.pnpm/mustache@4.2.0/node_modules/mustache/mustache.js +4 -0
  349. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/_vendor/partial-json-parser/parser.js +2 -0
  350. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/auth/workload-identity-auth.js +1 -0
  351. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/azure.js +1 -0
  352. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/client.js +11 -0
  353. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/core/api-promise.js +1 -0
  354. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/core/error.js +1 -0
  355. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/core/pagination.js +1 -0
  356. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/core/resource.js +1 -0
  357. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/core/streaming.js +3 -0
  358. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/core/uploads.js +1 -0
  359. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/error.js +1 -0
  360. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/index.js +1 -0
  361. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/internal/decoders/line.js +3 -0
  362. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/internal/detect-platform.js +1 -0
  363. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/internal/errors.js +1 -0
  364. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/internal/headers.js +1 -0
  365. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/internal/parse.js +1 -0
  366. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/internal/qs/formats.js +1 -0
  367. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/internal/qs/stringify.js +1 -0
  368. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/internal/qs/utils.js +1 -0
  369. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/internal/request-options.js +1 -0
  370. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/internal/shims.js +1 -0
  371. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/internal/to-file.js +1 -0
  372. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/internal/tslib.js +1 -0
  373. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/internal/uploads.js +1 -0
  374. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/internal/utils/base64.js +1 -0
  375. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/internal/utils/bytes.js +1 -0
  376. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/internal/utils/env.js +1 -0
  377. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/internal/utils/log.js +1 -0
  378. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/internal/utils/path.js +2 -0
  379. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/internal/utils/query.js +1 -0
  380. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/internal/utils/sleep.js +1 -0
  381. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/internal/utils/uuid.js +1 -0
  382. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/internal/utils/values.js +1 -0
  383. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/internal/utils.js +1 -0
  384. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/lib/AbstractChatCompletionRunner.js +1 -0
  385. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/lib/AssistantStream.js +1 -0
  386. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/lib/ChatCompletionRunner.js +1 -0
  387. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/lib/ChatCompletionStream.js +1 -0
  388. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/lib/ChatCompletionStreamingRunner.js +1 -0
  389. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/lib/EventStream.js +1 -0
  390. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/lib/ResponsesParser.js +1 -0
  391. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/lib/RunnableFunction.js +1 -0
  392. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/lib/Util.js +1 -0
  393. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/lib/chatCompletionUtils.js +1 -0
  394. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/lib/parser.js +1 -0
  395. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/lib/responses/ResponseStream.js +1 -0
  396. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/admin/admin.js +1 -0
  397. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/admin/organization/admin-api-keys.js +1 -0
  398. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/admin/organization/audit-logs.js +1 -0
  399. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/admin/organization/certificates.js +1 -0
  400. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/admin/organization/data-retention.js +1 -0
  401. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/admin/organization/groups/groups.js +1 -0
  402. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/admin/organization/groups/roles.js +1 -0
  403. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/admin/organization/groups/users.js +1 -0
  404. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/admin/organization/invites.js +1 -0
  405. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/admin/organization/organization.js +1 -0
  406. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/admin/organization/projects/api-keys.js +1 -0
  407. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/admin/organization/projects/certificates.js +1 -0
  408. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/admin/organization/projects/data-retention.js +1 -0
  409. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/admin/organization/projects/groups/groups.js +1 -0
  410. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/admin/organization/projects/groups/roles.js +1 -0
  411. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/admin/organization/projects/hosted-tool-permissions.js +1 -0
  412. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/admin/organization/projects/model-permissions.js +1 -0
  413. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/admin/organization/projects/projects.js +1 -0
  414. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/admin/organization/projects/rate-limits.js +1 -0
  415. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/admin/organization/projects/roles.js +1 -0
  416. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/admin/organization/projects/service-accounts.js +1 -0
  417. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/admin/organization/projects/spend-alerts.js +1 -0
  418. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/admin/organization/projects/users/roles.js +1 -0
  419. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/admin/organization/projects/users/users.js +1 -0
  420. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/admin/organization/roles.js +1 -0
  421. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/admin/organization/spend-alerts.js +1 -0
  422. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/admin/organization/usage.js +1 -0
  423. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/admin/organization/users/roles.js +1 -0
  424. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/admin/organization/users/users.js +1 -0
  425. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/audio/audio.js +1 -0
  426. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/audio/speech.js +1 -0
  427. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/audio/transcriptions.js +1 -0
  428. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/audio/translations.js +1 -0
  429. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/batches.js +1 -0
  430. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/beta/assistants.js +1 -0
  431. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/beta/beta.js +1 -0
  432. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/beta/chatkit/chatkit.js +1 -0
  433. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/beta/chatkit/sessions.js +1 -0
  434. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/beta/chatkit/threads.js +1 -0
  435. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/beta/realtime/realtime.js +1 -0
  436. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/beta/realtime/sessions.js +1 -0
  437. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/beta/realtime/transcription-sessions.js +1 -0
  438. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/beta/threads/messages.js +1 -0
  439. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/beta/threads/runs/runs.js +1 -0
  440. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/beta/threads/runs/steps.js +1 -0
  441. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/beta/threads/threads.js +1 -0
  442. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/chat/chat.js +1 -0
  443. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/chat/completions/completions.js +1 -0
  444. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/chat/completions/index.js +1 -0
  445. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/chat/completions/messages.js +1 -0
  446. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/chat/index.js +1 -0
  447. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/completions.js +1 -0
  448. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/containers/containers.js +1 -0
  449. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/containers/files/content.js +1 -0
  450. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/containers/files/files.js +1 -0
  451. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/conversations/conversations.js +1 -0
  452. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/conversations/items.js +1 -0
  453. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/embeddings.js +1 -0
  454. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/evals/evals.js +1 -0
  455. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/evals/runs/output-items.js +1 -0
  456. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/evals/runs/runs.js +1 -0
  457. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/files.js +1 -0
  458. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/fine-tuning/alpha/alpha.js +1 -0
  459. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/fine-tuning/alpha/graders.js +1 -0
  460. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/fine-tuning/checkpoints/checkpoints.js +1 -0
  461. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/fine-tuning/checkpoints/permissions.js +1 -0
  462. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/fine-tuning/fine-tuning.js +1 -0
  463. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/fine-tuning/jobs/checkpoints.js +1 -0
  464. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/fine-tuning/jobs/jobs.js +1 -0
  465. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/fine-tuning/methods.js +1 -0
  466. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/graders/grader-models.js +1 -0
  467. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/graders/graders.js +1 -0
  468. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/images.js +1 -0
  469. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/index.js +1 -0
  470. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/models.js +1 -0
  471. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/moderations.js +1 -0
  472. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/realtime/calls.js +1 -0
  473. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/realtime/client-secrets.js +1 -0
  474. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/realtime/realtime.js +1 -0
  475. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/responses/input-items.js +1 -0
  476. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/responses/input-tokens.js +1 -0
  477. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/responses/responses.js +1 -0
  478. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/shared.js +1 -0
  479. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/skills/content.js +1 -0
  480. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/skills/skills.js +1 -0
  481. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/skills/versions/content.js +1 -0
  482. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/skills/versions/versions.js +1 -0
  483. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/uploads/parts.js +1 -0
  484. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/uploads/uploads.js +1 -0
  485. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/vector-stores/file-batches.js +1 -0
  486. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/vector-stores/files.js +1 -0
  487. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/vector-stores/vector-stores.js +1 -0
  488. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/videos.js +1 -0
  489. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/webhooks/index.js +1 -0
  490. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/webhooks/webhooks.js +1 -0
  491. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/webhooks.js +1 -0
  492. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/streaming.js +1 -0
  493. package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/version.js +1 -0
  494. package/dist/src/node_modules/.pnpm/validate.io-array@1.0.6/node_modules/validate.io-array/lib/index.js +1 -0
  495. package/dist/src/node_modules/.pnpm/validate.io-function@1.0.2/node_modules/validate.io-function/lib/index.js +1 -0
  496. 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/Options.js +1 -0
  497. 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/Refs.js +1 -0
  498. 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/errorMessages.js +1 -0
  499. 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/getRelativePath.js +1 -0
  500. 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/index.js +1 -0
  501. 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/parseDef.js +1 -0
  502. 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/parseTypes.js +1 -0
  503. 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/any.js +1 -0
  504. 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/array.js +1 -0
  505. 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/bigint.js +1 -0
  506. 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/boolean.js +1 -0
  507. 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/branded.js +1 -0
  508. 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/catch.js +1 -0
  509. 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/date.js +1 -0
  510. 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/default.js +1 -0
  511. 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/effects.js +1 -0
  512. 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/enum.js +1 -0
  513. 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/intersection.js +1 -0
  514. 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/literal.js +1 -0
  515. 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/map.js +1 -0
  516. 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/nativeEnum.js +1 -0
  517. 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/never.js +1 -0
  518. 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/null.js +1 -0
  519. 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/nullable.js +1 -0
  520. 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/number.js +1 -0
  521. 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/object.js +1 -0
  522. 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/optional.js +1 -0
  523. 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/pipeline.js +1 -0
  524. 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/promise.js +1 -0
  525. 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/readonly.js +1 -0
  526. 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/record.js +1 -0
  527. 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/set.js +1 -0
  528. 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 +3 -0
  529. 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/tuple.js +1 -0
  530. 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/undefined.js +1 -0
  531. 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/union.js +1 -0
  532. 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/unknown.js +1 -0
  533. 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/selectParser.js +1 -0
  534. 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/zodToJsonSchema.js +1 -0
  535. package/dist/src/node_modules/.pnpm/zod@3.25.76/node_modules/zod/index.js +1 -0
  536. package/dist/src/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/ZodError.js +1 -0
  537. package/dist/src/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/errors.js +1 -0
  538. package/dist/src/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/external.js +1 -0
  539. package/dist/src/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/errorUtil.js +1 -0
  540. package/dist/src/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/parseUtil.js +1 -0
  541. package/dist/src/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/typeAliases.js +1 -0
  542. package/dist/src/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/util.js +1 -0
  543. package/dist/src/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/index.js +1 -0
  544. package/dist/src/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/locales/en.js +1 -0
  545. package/dist/src/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/types.js +1 -0
  546. package/dist/src/packages/ash-scaffold/src/channels.js +7 -0
  547. package/dist/src/packages/ash-scaffold/src/files.js +1 -0
  548. package/dist/src/packages/ash-scaffold/src/index.js +1 -0
  549. package/dist/src/packages/ash-scaffold/src/module-files.js +1 -0
  550. package/dist/src/packages/ash-scaffold/src/package-json.js +1 -0
  551. package/dist/src/packages/ash-scaffold/src/project.js +1 -0
  552. package/dist/src/protocol/message.js +2 -501
  553. package/dist/src/protocol/routes.js +1 -85
  554. package/dist/src/public/agents/auth.js +1 -37
  555. package/dist/src/public/channels/ash.js +2 -346
  556. package/dist/src/public/channels/auth.js +1 -414
  557. package/dist/src/public/channels/discord/api.js +2 -167
  558. package/dist/src/public/channels/discord/defaults.js +3 -74
  559. package/dist/src/public/channels/discord/discordChannel.js +1 -402
  560. package/dist/src/public/channels/discord/hitl.js +1 -194
  561. package/dist/src/public/channels/discord/inbound.js +2 -238
  562. package/dist/src/public/channels/discord/index.js +1 -6
  563. package/dist/src/public/channels/discord/responses.js +1 -40
  564. package/dist/src/public/channels/discord/verify.js +1 -72
  565. package/dist/src/public/channels/discord/verifyInbound.js +1 -19
  566. package/dist/src/public/channels/index.js +1 -1
  567. package/dist/src/public/channels/slack/api-encoding.js +1 -40
  568. package/dist/src/public/channels/slack/api.js +1 -333
  569. package/dist/src/public/channels/slack/attachments.js +1 -156
  570. package/dist/src/public/channels/slack/blocks.js +3 -266
  571. package/dist/src/public/channels/slack/connections.js +1 -70
  572. package/dist/src/public/channels/slack/constants.js +1 -7
  573. package/dist/src/public/channels/slack/defaults.js +4 -211
  574. package/dist/src/public/channels/slack/hitl.js +1 -242
  575. package/dist/src/public/channels/slack/inbound.js +2 -149
  576. package/dist/src/public/channels/slack/index.js +1 -13
  577. package/dist/src/public/channels/slack/interactions.js +1 -315
  578. package/dist/src/public/channels/slack/limits.js +1 -75
  579. package/dist/src/public/channels/slack/mrkdwn.js +1 -89
  580. package/dist/src/public/channels/slack/slackChannel.js +1 -251
  581. package/dist/src/public/channels/slack/thread.js +1 -45
  582. package/dist/src/public/channels/slack/verify.js +1 -70
  583. package/dist/src/public/channels/teams/api.d.ts +140 -0
  584. package/dist/src/public/channels/teams/api.js +4 -0
  585. package/dist/src/public/channels/teams/attachments.d.ts +25 -0
  586. package/dist/src/public/channels/teams/attachments.js +1 -0
  587. package/dist/src/public/channels/teams/defaults.d.ts +24 -0
  588. package/dist/src/public/channels/teams/defaults.js +3 -0
  589. package/dist/src/public/channels/teams/hitl.d.ts +36 -0
  590. package/dist/src/public/channels/teams/hitl.js +1 -0
  591. package/dist/src/public/channels/teams/inbound.d.ts +80 -0
  592. package/dist/src/public/channels/teams/inbound.js +3 -0
  593. package/dist/src/public/channels/teams/index.d.ts +8 -0
  594. package/dist/src/public/channels/teams/index.js +1 -0
  595. package/dist/src/public/channels/teams/limits.d.ts +8 -0
  596. package/dist/src/public/channels/teams/limits.js +1 -0
  597. package/dist/src/public/channels/teams/teamsChannel.d.ts +162 -0
  598. package/dist/src/public/channels/teams/teamsChannel.js +1 -0
  599. package/dist/src/public/channels/teams/verify.d.ts +43 -0
  600. package/dist/src/public/channels/teams/verify.js +1 -0
  601. package/dist/src/public/channels/telegram/api.d.ts +107 -0
  602. package/dist/src/public/channels/telegram/api.js +2 -0
  603. package/dist/src/public/channels/telegram/attachments.d.ts +23 -0
  604. package/dist/src/public/channels/telegram/attachments.js +1 -0
  605. package/dist/src/public/channels/telegram/defaults.d.ts +9 -0
  606. package/dist/src/public/channels/telegram/defaults.js +3 -0
  607. package/dist/src/public/channels/telegram/hitl.d.ts +44 -0
  608. package/dist/src/public/channels/telegram/hitl.js +1 -0
  609. package/dist/src/public/channels/telegram/inbound.d.ts +88 -0
  610. package/dist/src/public/channels/telegram/inbound.js +2 -0
  611. package/dist/src/public/channels/telegram/index.d.ts +8 -0
  612. package/dist/src/public/channels/telegram/index.js +1 -0
  613. package/dist/src/public/channels/telegram/telegramChannel.d.ts +126 -0
  614. package/dist/src/public/channels/telegram/telegramChannel.js +1 -0
  615. package/dist/src/public/channels/telegram/verify.d.ts +30 -0
  616. package/dist/src/public/channels/telegram/verify.js +1 -0
  617. package/dist/src/public/channels/twilio/api.js +1 -103
  618. package/dist/src/public/channels/twilio/defaults.js +3 -69
  619. package/dist/src/public/channels/twilio/inbound.js +2 -123
  620. package/dist/src/public/channels/twilio/index.js +1 -4
  621. package/dist/src/public/channels/twilio/twilioChannel.js +1 -316
  622. package/dist/src/public/channels/twilio/twiml.js +1 -58
  623. package/dist/src/public/channels/twilio/verify.js +1 -73
  624. package/dist/src/public/channels/upload-policy.js +1 -170
  625. package/dist/src/public/connections/errors.js +1 -53
  626. package/dist/src/public/connections/index.js +1 -6
  627. package/dist/src/public/context/index.js +1 -13
  628. package/dist/src/public/definitions/agent.js +1 -6
  629. package/dist/src/public/definitions/channel.js +1 -24
  630. package/dist/src/public/definitions/connections/mcp.js +1 -20
  631. package/dist/src/public/definitions/defineChannel.js +1 -74
  632. package/dist/src/public/definitions/hook.js +1 -11
  633. package/dist/src/public/definitions/instructions.js +1 -7
  634. package/dist/src/public/definitions/instrumentation.js +1 -13
  635. package/dist/src/public/definitions/remote-agent.js +1 -11
  636. package/dist/src/public/definitions/sandbox-backend.js +1 -13
  637. package/dist/src/public/definitions/sandbox.js +1 -6
  638. package/dist/src/public/definitions/schedule.js +1 -32
  639. package/dist/src/public/definitions/skill.js +1 -7
  640. package/dist/src/public/definitions/source.js +1 -1
  641. package/dist/src/public/definitions/state.js +1 -34
  642. package/dist/src/public/definitions/tool.js +1 -27
  643. package/dist/src/public/hooks/index.js +1 -9
  644. package/dist/src/public/index.js +1 -5
  645. package/dist/src/public/instructions/index.js +1 -4
  646. package/dist/src/public/instrumentation/index.js +1 -4
  647. package/dist/src/public/next/index.js +1 -148
  648. package/dist/src/public/next/server.js +1 -348
  649. package/dist/src/public/next/vercel-json.js +1 -77
  650. package/dist/src/public/sandbox/backends/default.js +1 -15
  651. package/dist/src/public/sandbox/backends/local.js +1 -18
  652. package/dist/src/public/sandbox/backends/vercel.js +1 -25
  653. package/dist/src/public/sandbox/index.js +1 -10
  654. package/dist/src/public/sandbox/local-sandbox.js +1 -1
  655. package/dist/src/public/sandbox/vercel-sandbox.js +1 -1
  656. package/dist/src/public/schedules/index.js +1 -4
  657. package/dist/src/public/skills/index.js +1 -5
  658. package/dist/src/public/tool-result-narrowing.js +1 -87
  659. package/dist/src/public/tools/approval/approval-helpers.js +1 -22
  660. package/dist/src/public/tools/approval/index.js +1 -4
  661. package/dist/src/public/tools/defaults.js +1 -70
  662. package/dist/src/public/tools/define-bash-tool.js +1 -14
  663. package/dist/src/public/tools/define-glob-tool.js +1 -21
  664. package/dist/src/public/tools/define-grep-tool.js +1 -21
  665. package/dist/src/public/tools/define-read-file-tool.js +1 -27
  666. package/dist/src/public/tools/define-write-file-tool.js +1 -21
  667. package/dist/src/public/tools/index.js +1 -10
  668. package/dist/src/public/tools/internal.js +1 -24
  669. package/dist/src/public/types/json.js +1 -13
  670. package/dist/src/react/index.js +1 -3
  671. package/dist/src/react/use-ash-agent.js +2 -348
  672. package/dist/src/runtime/actions/keys.js +1 -30
  673. package/dist/src/runtime/actions/types.js +1 -99
  674. package/dist/src/runtime/agent/bootstrap-model-utils.js +1 -148
  675. package/dist/src/runtime/agent/bootstrap-model.js +1 -36
  676. package/dist/src/runtime/agent/bootstrap.js +1 -49
  677. package/dist/src/runtime/agent/mock-model-adapter.js +7 -358
  678. package/dist/src/runtime/agent/resolve-model.js +1 -48
  679. package/dist/src/runtime/cache-key.js +1 -52
  680. package/dist/src/runtime/channels/registry.js +1 -133
  681. package/dist/src/runtime/compiled-artifacts-source.js +1 -42
  682. package/dist/src/runtime/connections/authorization-complete-page.js +2 -21
  683. package/dist/src/runtime/connections/authorization-tokens.js +1 -66
  684. package/dist/src/runtime/connections/callback-route.js +1 -139
  685. package/dist/src/runtime/connections/mcp-client.js +1 -307
  686. package/dist/src/runtime/connections/principal-context.js +1 -111
  687. package/dist/src/runtime/connections/principal.js +1 -106
  688. package/dist/src/runtime/connections/registry.js +1 -61
  689. package/dist/src/runtime/connections/types.js +1 -41
  690. package/dist/src/runtime/connections/validate-authorization.js +1 -92
  691. package/dist/src/runtime/framework-channels/index.js +1 -38
  692. package/dist/src/runtime/framework-tools/ask-question.js +1 -30
  693. package/dist/src/runtime/framework-tools/bash.js +1 -40
  694. package/dist/src/runtime/framework-tools/connection-search.js +1 -224
  695. package/dist/src/runtime/framework-tools/connection-tools.js +1 -103
  696. package/dist/src/runtime/framework-tools/file-state.js +1 -71
  697. package/dist/src/runtime/framework-tools/glob.js +2 -56
  698. package/dist/src/runtime/framework-tools/grep.js +2 -75
  699. package/dist/src/runtime/framework-tools/index.js +1 -52
  700. package/dist/src/runtime/framework-tools/pending-connection-tool-calls.js +1 -63
  701. package/dist/src/runtime/framework-tools/read-file.js +2 -64
  702. package/dist/src/runtime/framework-tools/skill.js +1 -47
  703. package/dist/src/runtime/framework-tools/todo.js +3 -122
  704. package/dist/src/runtime/framework-tools/web-fetch.js +2 -42
  705. package/dist/src/runtime/framework-tools/web-search.js +1 -15
  706. package/dist/src/runtime/framework-tools/write-file.js +2 -48
  707. package/dist/src/runtime/governance/auth/http-basic.js +1 -63
  708. package/dist/src/runtime/governance/auth/jwt-ecdsa.js +1 -69
  709. package/dist/src/runtime/governance/auth/jwt-hmac.js +1 -39
  710. package/dist/src/runtime/governance/auth/oidc.js +1 -126
  711. package/dist/src/runtime/governance/auth/token-claims.js +1 -84
  712. package/dist/src/runtime/governance/auth/types.js +1 -14
  713. package/dist/src/runtime/governance/network/ip-allow-list.js +1 -66
  714. package/dist/src/runtime/graph.js +1 -17
  715. package/dist/src/runtime/hooks/registry.js +1 -55
  716. package/dist/src/runtime/input/types.js +1 -63
  717. package/dist/src/runtime/loaders/artifact-paths.js +1 -26
  718. package/dist/src/runtime/loaders/bundled-artifacts.js +1 -21
  719. package/dist/src/runtime/loaders/compile-metadata.js +1 -92
  720. package/dist/src/runtime/loaders/manifest.js +1 -56
  721. package/dist/src/runtime/loaders/module-map.js +1 -64
  722. package/dist/src/runtime/prompt/compose.js +2 -47
  723. package/dist/src/runtime/prompt/connections.js +2 -23
  724. package/dist/src/runtime/resolve-agent-graph.js +1 -287
  725. package/dist/src/runtime/resolve-agent.js +1 -134
  726. package/dist/src/runtime/resolve-channel.js +1 -62
  727. package/dist/src/runtime/resolve-connection.js +1 -72
  728. package/dist/src/runtime/resolve-helpers.js +1 -58
  729. package/dist/src/runtime/resolve-hook.js +1 -67
  730. package/dist/src/runtime/resolve-sandbox.js +1 -65
  731. package/dist/src/runtime/resolve-tool.js +1 -110
  732. package/dist/src/runtime/sandbox/keys.js +1 -72
  733. package/dist/src/runtime/sandbox/registry.js +1 -42
  734. package/dist/src/runtime/schedules/register.js +1 -62
  735. package/dist/src/runtime/schedules/resolve-schedule.js +1 -66
  736. package/dist/src/runtime/session-callback-route.js +1 -87
  737. package/dist/src/runtime/sessions/auth.js +1 -18
  738. package/dist/src/runtime/sessions/compiled-agent-cache.js +1 -125
  739. package/dist/src/runtime/sessions/runtime-session.js +1 -50
  740. package/dist/src/runtime/sessions/turn.js +1 -1
  741. package/dist/src/runtime/skills/fragment-context.js +1 -4
  742. package/dist/src/runtime/skills/sandbox-access.js +1 -85
  743. package/dist/src/runtime/subagents/registry.js +1 -62
  744. package/dist/src/runtime/tools/registry.js +1 -40
  745. package/dist/src/runtime/types.js +1 -1
  746. package/dist/src/runtime/validation.js +1 -7
  747. package/dist/src/runtime/workspace/seed-files.js +1 -42
  748. package/dist/src/runtime/workspace/spec.js +2 -22
  749. package/dist/src/runtime/workspace/types.js +1 -9
  750. package/dist/src/sandbox/state.js +1 -1
  751. package/dist/src/services/dev-client/request-headers.js +1 -197
  752. package/dist/src/services/dev-client/stream.js +1 -7
  753. package/dist/src/services/dev-client/url.js +1 -25
  754. package/dist/src/services/dev-client/vercel-auth-error.js +2 -98
  755. package/dist/src/services/dev-client.js +1 -48
  756. package/dist/src/services/inspect-application.js +1 -45
  757. package/dist/src/shared/agent-definition.js +1 -1
  758. package/dist/src/shared/errors.js +1 -66
  759. package/dist/src/shared/guards.js +1 -35
  760. package/dist/src/shared/json-schemas.js +1 -41
  761. package/dist/src/shared/json.js +1 -80
  762. package/dist/src/shared/node.js +1 -1
  763. package/dist/src/shared/optional.js +1 -1
  764. package/dist/src/shared/run-mode.js +1 -1
  765. package/dist/src/shared/sandbox-backend.js +1 -1
  766. package/dist/src/shared/sandbox-definition.js +1 -1
  767. package/dist/src/shared/sandbox-session.js +1 -1
  768. package/dist/src/shared/skill-definition.js +1 -1
  769. package/dist/src/shared/skill-package.js +1 -100
  770. package/dist/src/shared/source-ref.js +1 -1
  771. package/dist/src/shared/tool-definition.js +1 -1
  772. package/package.json +14 -4
  773. package/dist/src/chunks/authored-module-loader-DcCfCiBm.js +0 -4
  774. package/dist/src/chunks/chunk-DSjMdhoD.js +0 -1
  775. package/dist/src/chunks/client-ZqNLLMZB.js +0 -4
  776. package/dist/src/chunks/compile-agent-DrIyb818.js +0 -5
  777. package/dist/src/chunks/dev-authored-source-watcher-C1WUVv9F.js +0 -1
  778. package/dist/src/chunks/errors-HYWjHxV6.js +0 -1
  779. package/dist/src/chunks/guards-26p6sOw3.js +0 -1
  780. package/dist/src/chunks/host-CwAcCrg7.js +0 -70
  781. package/dist/src/chunks/input-requests-DJiy6dG9.js +0 -1
  782. package/dist/src/chunks/jsdist-BkeWZ7EZ.js +0 -443
  783. package/dist/src/chunks/paths-CWZN-XRX.js +0 -85
  784. package/dist/src/chunks/picocolors-aAkqW4On.js +0 -1
  785. package/dist/src/chunks/runtime-model-Dh0Nz64z.js +0 -1
  786. package/dist/src/chunks/token-YW4VSeBB.js +0 -1
  787. package/dist/src/chunks/types-BJSR0JNV.js +0 -1
@@ -1,251 +1 @@
1
- import { createLogger } from "#internal/logging.js";
2
- import { buildSlackBinding, slackContinuationToken, } from "#public/channels/slack/api.js";
3
- import { buildSlackTurnMessage, collectInboundFileParts, createSlackFetchFile, } from "#public/channels/slack/attachments.js";
4
- import { defaultEvents, defaultInputRequestedHandler, defaultOnAppMention, defaultOnDirectMessage, } from "#public/channels/slack/defaults.js";
5
- import { parseAppMentionEvent, parseDirectMessageEvent, prependSlackContext, } from "#public/channels/slack/inbound.js";
6
- import { SLACK_CHANNEL_DEFAULT_ROUTE } from "#public/channels/slack/constants.js";
7
- import { handleInteractionPost } from "#public/channels/slack/interactions.js";
8
- import { mergeUploadPolicy, } from "#public/channels/upload-policy.js";
9
- import { verifySlackRequest } from "#public/channels/slack/verify.js";
10
- import { defineChannel, POST, } from "#public/definitions/defineChannel.js";
11
- const log = createLogger("slack.channel");
12
- function rebuildSlackContext(state, session, credentials) {
13
- const { thread, slack } = buildSlackBinding({
14
- botToken: credentials?.botToken,
15
- channelId: state.channelId ?? "",
16
- threadTs: state.threadTs ?? "",
17
- teamId: state.teamId ?? undefined,
18
- onThreadTsChanged(ts) {
19
- state.threadTs = ts;
20
- if (state.channelId) {
21
- session.setContinuationToken(slackContinuationToken(state.channelId, ts));
22
- }
23
- },
24
- });
25
- return { thread, slack, session, state };
26
- }
27
- /**
28
- * Slack channel factory. Wires up the Slack webhook route, mention
29
- * dispatch, interaction handling, and a baseline set of typing /
30
- * error / connection-auth event handlers.
31
- *
32
- * Defaults apply per field — pass `onAppMention` to fully replace the
33
- * default mention pipeline (auth derivation + `"Thinking…"` typing),
34
- * or pass an `events[type]` handler to replace only that one event.
35
- * Fields you don't supply keep their defaults.
36
- */
37
- export function slackChannel(config = {}) {
38
- const uploadPolicy = mergeUploadPolicy(config.uploadPolicy);
39
- const slackFetchFile = createSlackFetchFile({ botToken: config.credentials?.botToken });
40
- const onAppMention = config.onAppMention ?? defaultOnAppMention;
41
- const onDirectMessage = config.onDirectMessage ?? defaultOnDirectMessage;
42
- const mergedEvents = {
43
- ...defaultEvents,
44
- ...config.events,
45
- "input.requested": config.events?.["input.requested"] ?? defaultInputRequestedHandler(),
46
- };
47
- return defineChannel({
48
- kindHint: "slack",
49
- state: {
50
- channelId: null,
51
- threadTs: null,
52
- teamId: null,
53
- triggeringUserId: null,
54
- pendingToolCallMessage: null,
55
- pendingAuthMessageTs: {},
56
- },
57
- fetchFile: slackFetchFile,
58
- context(state, session) {
59
- return rebuildSlackContext(state, session, config.credentials);
60
- },
61
- routes: [
62
- POST(config.route ?? SLACK_CHANNEL_DEFAULT_ROUTE, async (req, { send, waitUntil }) => {
63
- const body = await verifyInbound(req, config.credentials);
64
- if (body === null)
65
- return new Response("unauthorized", { status: 401 });
66
- const contentType = req.headers.get("content-type") ?? "";
67
- if (contentType.includes("application/x-www-form-urlencoded")) {
68
- return handleInteractionPost(body, { send, waitUntil }, { config });
69
- }
70
- return handleEventPost({
71
- body,
72
- send,
73
- waitUntil,
74
- onAppMention,
75
- onDirectMessage,
76
- uploadPolicy,
77
- credentials: config.credentials,
78
- });
79
- }),
80
- ],
81
- async receive(input, { send }) {
82
- const receiveArgs = input.args;
83
- const channelId = receiveArgs.channelId;
84
- if (!channelId || typeof channelId !== "string") {
85
- throw new Error("slackChannel().receive requires args.channelId.");
86
- }
87
- const requestedThreadTs = typeof receiveArgs.threadTs === "string" ? receiveArgs.threadTs : "";
88
- const initialMessage = receiveArgs.initialMessage;
89
- if (initialMessage && requestedThreadTs.length > 0) {
90
- throw new Error("slackChannel().receive: `threadTs` and `initialMessage` are mutually exclusive.");
91
- }
92
- let threadTs = requestedThreadTs;
93
- if (initialMessage) {
94
- const { thread } = buildSlackBinding({
95
- botToken: config.credentials?.botToken,
96
- channelId,
97
- threadTs: "",
98
- teamId: undefined,
99
- });
100
- const postInput = {
101
- card: initialMessage.card,
102
- };
103
- if (initialMessage.fallbackText !== undefined) {
104
- postInput.fallbackText = initialMessage.fallbackText;
105
- }
106
- const posted = await thread.post(postInput);
107
- threadTs = posted.id;
108
- }
109
- return send(input.message, {
110
- auth: input.auth,
111
- continuationToken: slackContinuationToken(channelId, threadTs),
112
- state: {
113
- channelId,
114
- threadTs: threadTs || null,
115
- teamId: null,
116
- triggeringUserId: null,
117
- },
118
- });
119
- },
120
- events: mergedEvents,
121
- });
122
- }
123
- /**
124
- * Handles an inbound non-interactivity Slack POST: parses the JSON
125
- * envelope, answers the URL-verification challenge, routes
126
- * `app_mention` events through `onAppMention` and `message`
127
- * events with `channel_type: "im"` through `onDirectMessage`, and
128
- * dispatches matching events via {@link dispatchInboundMessage} under
129
- * `waitUntil`. Returns the route's `200 OK` Response in every case
130
- * (Slack only cares that the webhook ACKs immediately).
131
- */
132
- async function handleEventPost(input) {
133
- let envelope;
134
- try {
135
- envelope = JSON.parse(input.body);
136
- }
137
- catch (error) {
138
- log.warn("inbound webhook body is not valid JSON", { error });
139
- return new Response("ok");
140
- }
141
- if (typeof envelope.challenge === "string") {
142
- return new Response(envelope.challenge, {
143
- status: 200,
144
- headers: { "content-type": "text/plain" },
145
- });
146
- }
147
- const mention = parseAppMentionEvent(envelope);
148
- if (mention) {
149
- input.waitUntil(dispatchInboundMessage({
150
- kind: "app_mention",
151
- message: mention,
152
- handler: input.onAppMention,
153
- send: input.send,
154
- uploadPolicy: input.uploadPolicy,
155
- credentials: input.credentials,
156
- }));
157
- return new Response("ok");
158
- }
159
- const dm = parseDirectMessageEvent(envelope);
160
- if (dm) {
161
- input.waitUntil(dispatchInboundMessage({
162
- kind: "direct_message",
163
- message: dm,
164
- handler: input.onDirectMessage,
165
- send: input.send,
166
- uploadPolicy: input.uploadPolicy,
167
- credentials: input.credentials,
168
- }));
169
- return new Response("ok");
170
- }
171
- return new Response("ok");
172
- }
173
- /**
174
- * Verifies the inbound Slack request and returns its raw body, or
175
- * `null` when verification fails. Failures are logged so misconfigured
176
- * deployments are visible — the route returns 401 to Slack.
177
- */
178
- async function verifyInbound(req, credentials) {
179
- try {
180
- return await verifySlackRequest(req, {
181
- signingSecret: credentials?.signingSecret ??
182
- (credentials?.webhookVerifier ? undefined : process.env.SLACK_SIGNING_SECRET),
183
- webhookVerifier: credentials?.webhookVerifier,
184
- });
185
- }
186
- catch (error) {
187
- log.warn("slack inbound verification failed", { error });
188
- return null;
189
- }
190
- }
191
- /**
192
- * Runs the inbound handler for an `app_mention` or direct message and,
193
- * when it returns a non-null result, dispatches the message to the
194
- * runtime via `send`. Errors are caught and logged so a misbehaving
195
- * handler never crashes the webhook ACK.
196
- */
197
- async function dispatchInboundMessage(input) {
198
- const { message, kind } = input;
199
- const { thread, slack } = buildSlackBinding({
200
- botToken: input.credentials?.botToken,
201
- channelId: message.channelId,
202
- threadTs: message.threadTs,
203
- teamId: message.teamId,
204
- });
205
- const slackCtx = { thread, slack };
206
- let result;
207
- try {
208
- result = await input.handler(slackCtx, message);
209
- }
210
- catch (error) {
211
- log.error(`${kind} handler failed`, { error });
212
- return;
213
- }
214
- if (result === null || result === undefined)
215
- return;
216
- const fileParts = await collectInboundFileParts({
217
- mention: message,
218
- thread,
219
- policy: input.uploadPolicy,
220
- });
221
- const baseMessage = buildSlackTurnMessage(message.markdown, fileParts);
222
- const inboundContext = {
223
- channelId: message.channelId,
224
- fullName: message.author?.fullName,
225
- teamId: message.teamId,
226
- threadTs: message.threadTs,
227
- userId: message.author?.userId ?? "",
228
- userName: message.author?.userName,
229
- };
230
- const turnMessage = inboundContext.userId
231
- ? prependSlackContext(baseMessage, inboundContext)
232
- : baseMessage;
233
- try {
234
- await input.send({
235
- message: turnMessage,
236
- modelContext: result.modelContext,
237
- }, {
238
- auth: result.auth,
239
- continuationToken: slackContinuationToken(message.channelId, message.threadTs),
240
- state: {
241
- channelId: message.channelId,
242
- threadTs: message.threadTs,
243
- teamId: message.teamId ?? null,
244
- triggeringUserId: inboundContext.userId || null,
245
- },
246
- });
247
- }
248
- catch (error) {
249
- log.error(`${kind} delivery failed`, { error });
250
- }
251
- }
1
+ import{createLogger}from"#internal/logging.js";import{mergeUploadPolicy}from"#public/channels/upload-policy.js";import{POST,defineChannel}from"#public/definitions/defineChannel.js";import{buildSlackBinding,slackContinuationToken}from"#public/channels/slack/api.js";import{defaultEvents,defaultInputRequestedHandler,defaultOnAppMention,defaultOnDirectMessage}from"#public/channels/slack/defaults.js";import{buildSlackTurnMessage,collectInboundFileParts,createSlackFetchFile}from"#public/channels/slack/attachments.js";import{parseAppMentionEvent,parseDirectMessageEvent,prependSlackContext}from"#public/channels/slack/inbound.js";import{SLACK_CHANNEL_DEFAULT_ROUTE}from"#public/channels/slack/constants.js";import{handleInteractionPost}from"#public/channels/slack/interactions.js";import{verifySlackRequest}from"#public/channels/slack/verify.js";var log=createLogger(`slack.channel`);function rebuildSlackContext(e,t,n){let{thread:r,slack:a}=buildSlackBinding({botToken:n?.botToken,channelId:e.channelId??``,threadTs:e.threadTs??``,teamId:e.teamId??void 0,onThreadTsChanged(n){e.threadTs=n,e.channelId&&t.setContinuationToken(slackContinuationToken(e.channelId,n))}});return{thread:r,slack:a,session:t,state:e}}function slackChannel(e={}){let l=mergeUploadPolicy(e.uploadPolicy),u=createSlackFetchFile({botToken:e.credentials?.botToken}),f=e.onAppMention??defaultOnAppMention,p=e.onDirectMessage??defaultOnDirectMessage,m={...defaultEvents,...e.events,"input.requested":e.events?.[`input.requested`]??defaultInputRequestedHandler()};return defineChannel({kindHint:`slack`,state:{channelId:null,threadTs:null,teamId:null,triggeringUserId:null,pendingToolCallMessage:null,pendingAuthMessageTs:{}},fetchFile:u,context(t,n){return rebuildSlackContext(t,n,e.credentials)},routes:[POST(e.route??SLACK_CHANNEL_DEFAULT_ROUTE,async(t,{send:n,waitUntil:r})=>{let i=await verifyInbound(t,e.credentials);return i===null?new Response(`unauthorized`,{status:401}):(t.headers.get(`content-type`)??``).includes(`application/x-www-form-urlencoded`)?handleInteractionPost(i,{send:n,waitUntil:r},{config:e}):handleEventPost({body:i,send:n,waitUntil:r,onAppMention:f,onDirectMessage:p,uploadPolicy:l,credentials:e.credentials})})],async receive(t,{send:n}){let r=t.args,a=r.channelId;if(!a||typeof a!=`string`)throw Error(`slackChannel().receive requires args.channelId.`);let o=typeof r.threadTs==`string`?r.threadTs:``,s=r.initialMessage;if(s&&o.length>0)throw Error("slackChannel().receive: `threadTs` and `initialMessage` are mutually exclusive.");let c=o;if(s){let{thread:t}=buildSlackBinding({botToken:e.credentials?.botToken,channelId:a,threadTs:``,teamId:void 0}),n={card:s.card};s.fallbackText!==void 0&&(n.fallbackText=s.fallbackText),c=(await t.post(n)).id}return n(t.message,{auth:t.auth,continuationToken:slackContinuationToken(a,c),state:{channelId:a,threadTs:c||null,teamId:null,triggeringUserId:null}})},events:m})}async function handleEventPost(e){let t;try{t=JSON.parse(e.body)}catch(e){return log.warn(`inbound webhook body is not valid JSON`,{error:e}),new Response(`ok`)}if(typeof t.challenge==`string`)return new Response(t.challenge,{status:200,headers:{"content-type":`text/plain`}});let n=parseAppMentionEvent(t);if(n)return e.waitUntil(dispatchInboundMessage({kind:`app_mention`,message:n,handler:e.onAppMention,send:e.send,uploadPolicy:e.uploadPolicy,credentials:e.credentials})),new Response(`ok`);let r=parseDirectMessageEvent(t);return r&&e.waitUntil(dispatchInboundMessage({kind:`direct_message`,message:r,handler:e.onDirectMessage,send:e.send,uploadPolicy:e.uploadPolicy,credentials:e.credentials})),new Response(`ok`)}async function verifyInbound(e,t){try{return await verifySlackRequest(e,{signingSecret:t?.signingSecret??(t?.webhookVerifier?void 0:process.env.SLACK_SIGNING_SECRET),webhookVerifier:t?.webhookVerifier})}catch(e){return log.warn(`slack inbound verification failed`,{error:e}),null}}async function dispatchInboundMessage(e){let{message:t,kind:n}=e,{thread:r,slack:a}=buildSlackBinding({botToken:e.credentials?.botToken,channelId:t.channelId,threadTs:t.threadTs,teamId:t.teamId}),o={thread:r,slack:a},s;try{s=await e.handler(o,t)}catch(e){log.error(`${n} handler failed`,{error:e});return}if(s==null)return;let c=await collectInboundFileParts({mention:t,thread:r,policy:e.uploadPolicy}),d=buildSlackTurnMessage(t.markdown,c),f={channelId:t.channelId,fullName:t.author?.fullName,teamId:t.teamId,threadTs:t.threadTs,userId:t.author?.userId??``,userName:t.author?.userName},p=f.userId?prependSlackContext(d,f):d;try{await e.send({message:p,modelContext:s.modelContext},{auth:s.auth,continuationToken:slackContinuationToken(t.channelId,t.threadTs),state:{channelId:t.channelId,threadTs:t.threadTs,teamId:t.teamId??null,triggeringUserId:f.userId||null}})}catch(e){log.error(`${n} delivery failed`,{error:e})}}export{slackChannel};
@@ -1,45 +1 @@
1
- /**
2
- * Loads messages that are useful as background context for the current
3
- * Slack thread turn.
4
- *
5
- * Returns an empty array when `message` is the thread root. For thread
6
- * replies, refreshes the bound Slack thread and returns its recent
7
- * messages before the triggering message, filtered by {@link options}.
8
- * Formatting and model-message role choice stay with the caller.
9
- */
10
- export async function loadThreadContextMessages(thread, message, options = {}) {
11
- if (isThreadRootMessage(message)) {
12
- return [];
13
- }
14
- await thread.refresh();
15
- const currentIndex = thread.recentMessages.findIndex((entry) => entry.ts === message.ts);
16
- const candidateMessages = currentIndex === -1 ? thread.recentMessages : thread.recentMessages.slice(0, currentIndex);
17
- const priorMessages = candidateMessages.filter((entry) => entry.threadTs === message.threadTs && entry.ts !== message.ts);
18
- return applySinceBoundary(priorMessages, options.since);
19
- }
20
- function isThreadRootMessage(message) {
21
- return message.threadTs === message.ts;
22
- }
23
- function findLastIndex(items, predicate) {
24
- for (let index = items.length - 1; index >= 0; index -= 1) {
25
- if (predicate(items[index])) {
26
- return index;
27
- }
28
- }
29
- return -1;
30
- }
31
- function applySinceBoundary(messages, since) {
32
- const boundary = since ?? "thread-root";
33
- if (typeof boundary === "function") {
34
- const lastMatchingIndex = findLastIndex(messages, boundary);
35
- return messages.slice(lastMatchingIndex + 1);
36
- }
37
- switch (boundary) {
38
- case "thread-root":
39
- return [...messages];
40
- case "last-agent-reply": {
41
- const lastAgentReplyIndex = findLastIndex(messages, (entry) => entry.isMe);
42
- return messages.slice(lastAgentReplyIndex + 1);
43
- }
44
- }
45
- }
1
+ async function loadThreadContextMessages(e,t,n={}){if(isThreadRootMessage(t))return[];await e.refresh();let r=e.recentMessages.findIndex(e=>e.ts===t.ts);return applySinceBoundary((r===-1?e.recentMessages:e.recentMessages.slice(0,r)).filter(e=>e.threadTs===t.threadTs&&e.ts!==t.ts),n.since)}function isThreadRootMessage(e){return e.threadTs===e.ts}function findLastIndex(e,t){for(let n=e.length-1;n>=0;--n)if(t(e[n]))return n;return-1}function applySinceBoundary(e,t){let n=t??`thread-root`;if(typeof n==`function`){let t=findLastIndex(e,n);return e.slice(t+1)}switch(n){case`thread-root`:return[...e];case`last-agent-reply`:{let t=findLastIndex(e,e=>e.isMe);return e.slice(t+1)}}}export{loadThreadContextMessages};
@@ -1,70 +1 @@
1
- /**
2
- * Slack inbound-webhook verification.
3
- *
4
- * The native channel replaces `createSlackAdapter`'s built-in HMAC
5
- * check with a self-contained verifier:
6
- *
7
- * 1. If the caller supplied a {@link SlackWebhookVerifier} (e.g.
8
- * Connect's OIDC-based forwarder), delegate to it.
9
- * 2. Otherwise, recompute the Slack v0 HMAC and compare with
10
- * `X-Slack-Signature`. Rejects requests older than five minutes to
11
- * foil replay attacks.
12
- *
13
- * Returns the verified raw body string on success so the caller can
14
- * parse it without re-reading the request stream.
15
- */
16
- import { createHmac, timingSafeEqual } from "node:crypto";
17
- import { createLogger } from "#internal/logging.js";
18
- const log = createLogger("slack.verify");
19
- /**
20
- * Verifies an inbound Slack webhook and returns its raw body.
21
- *
22
- * Throws when neither a signing secret nor a custom verifier is
23
- * available, when signature/timestamp checks fail, or when the
24
- * caller-supplied verifier rejects.
25
- */
26
- export async function verifySlackRequest(request, options) {
27
- const body = await request.text();
28
- if (options.webhookVerifier !== undefined) {
29
- const result = await options.webhookVerifier(request, body);
30
- if (!result) {
31
- throw new Error("slackChannel: inbound webhook verifier rejected the request.");
32
- }
33
- return typeof result === "string" ? result : body;
34
- }
35
- if (!options.signingSecret) {
36
- throw new Error("slackChannel: missing signing secret. Pass credentials.signingSecret, " +
37
- "set SLACK_SIGNING_SECRET, or supply credentials.webhookVerifier.");
38
- }
39
- const timestampHeader = request.headers.get("x-slack-request-timestamp") ?? "";
40
- const signatureHeader = request.headers.get("x-slack-signature") ?? "";
41
- if (!timestampHeader || !signatureHeader) {
42
- throw new Error("slackChannel: inbound request missing Slack signature headers.");
43
- }
44
- const timestamp = Number(timestampHeader);
45
- if (!Number.isFinite(timestamp)) {
46
- throw new Error("slackChannel: inbound request has malformed timestamp.");
47
- }
48
- const maxSkew = options.maxSkewSeconds ?? 60 * 5;
49
- const now = Math.floor(Date.now() / 1000);
50
- if (Math.abs(now - timestamp) > maxSkew) {
51
- throw new Error("slackChannel: inbound request timestamp outside allowed skew.");
52
- }
53
- const base = `v0:${timestampHeader}:${body}`;
54
- const expected = `v0=${createHmac("sha256", options.signingSecret).update(base).digest("hex")}`;
55
- if (!constantTimeCompare(expected, signatureHeader)) {
56
- throw new Error("slackChannel: inbound request signature mismatch.");
57
- }
58
- return body;
59
- }
60
- function constantTimeCompare(a, b) {
61
- if (a.length !== b.length)
62
- return false;
63
- try {
64
- return timingSafeEqual(Buffer.from(a), Buffer.from(b));
65
- }
66
- catch (error) {
67
- log.debug("timingSafeEqual threw", { error });
68
- return false;
69
- }
70
- }
1
+ import{createLogger}from"#internal/logging.js";import{createHmac,timingSafeEqual}from"node:crypto";var log=createLogger(`slack.verify`);async function verifySlackRequest(e,n){let r=await e.text();if(n.webhookVerifier!==void 0){let t=await n.webhookVerifier(e,r);if(!t)throw Error(`slackChannel: inbound webhook verifier rejected the request.`);return typeof t==`string`?t:r}if(!n.signingSecret)throw Error(`slackChannel: missing signing secret. Pass credentials.signingSecret, set SLACK_SIGNING_SECRET, or supply credentials.webhookVerifier.`);let i=e.headers.get(`x-slack-request-timestamp`)??``,a=e.headers.get(`x-slack-signature`)??``;if(!i||!a)throw Error(`slackChannel: inbound request missing Slack signature headers.`);let o=Number(i);if(!Number.isFinite(o))throw Error(`slackChannel: inbound request has malformed timestamp.`);let s=n.maxSkewSeconds??300,c=Math.floor(Date.now()/1e3);if(Math.abs(c-o)>s)throw Error(`slackChannel: inbound request timestamp outside allowed skew.`);let l=`v0:${i}:${r}`;if(!constantTimeCompare(`v0=${createHmac(`sha256`,n.signingSecret).update(l).digest(`hex`)}`,a))throw Error(`slackChannel: inbound request signature mismatch.`);return r}function constantTimeCompare(e,t){if(e.length!==t.length)return!1;try{return timingSafeEqual(Buffer.from(e),Buffer.from(t))}catch(e){return log.debug(`timingSafeEqual threw`,{error:e}),!1}}export{verifySlackRequest};
@@ -0,0 +1,140 @@
1
+ /**
2
+ * Minimal Microsoft Teams Bot Framework Connector REST wrapper.
3
+ *
4
+ * The native Teams channel talks directly to the Bot Framework Activity
5
+ * protocol instead of exposing BotBuilder or Teams SDK objects through
6
+ * Ash public APIs.
7
+ */
8
+ import { type JsonObject } from "#shared/json.js";
9
+ /** Microsoft application id, materialized directly or from an async secret provider. */
10
+ export type TeamsAppId = string | (() => string | Promise<string>);
11
+ /** Microsoft application password, materialized directly or from an async secret provider. */
12
+ export type TeamsAppPassword = string | (() => string | Promise<string>);
13
+ /** Microsoft tenant id, materialized directly or from an async secret provider. */
14
+ export type TeamsTenantId = string | (() => string | Promise<string>);
15
+ /** Fetch implementation override used by tests or non-standard runtimes. */
16
+ export type TeamsFetch = typeof fetch;
17
+ /** Result shape accepted from a caller-owned Bot Connector token provider. */
18
+ export type TeamsAccessTokenResult = string | {
19
+ readonly accessToken: string;
20
+ readonly expiresAt?: Date | number;
21
+ };
22
+ /** Caller-owned Bot Connector token provider. */
23
+ export type TeamsTokenProvider = () => TeamsAccessTokenResult | Promise<TeamsAccessTokenResult>;
24
+ /** Credentials used by the native Teams channel. */
25
+ export interface TeamsCredentials {
26
+ readonly appId?: TeamsAppId;
27
+ readonly appPassword?: TeamsAppPassword;
28
+ readonly tenantId?: TeamsTenantId;
29
+ readonly tokenProvider?: TeamsTokenProvider;
30
+ }
31
+ /** Shared Teams API options. */
32
+ export interface TeamsApiOptions {
33
+ readonly credentials?: TeamsCredentials;
34
+ readonly fetch?: TeamsFetch;
35
+ readonly loginBaseUrl?: string;
36
+ }
37
+ /** Raw Teams Connector API response body. */
38
+ export interface TeamsApiResponse {
39
+ readonly status: number;
40
+ readonly ok: boolean;
41
+ readonly body: unknown;
42
+ }
43
+ /** Minimal ResourceResponse object returned by Teams write operations. */
44
+ export interface TeamsPostedActivity {
45
+ /** Teams/Bot Framework activity id, when one was returned. */
46
+ readonly id: string;
47
+ /** Connector's raw JSON response. */
48
+ readonly raw: unknown;
49
+ }
50
+ /** Bot Framework channel account shape surfaced by the native Teams channel. */
51
+ export interface TeamsChannelAccount {
52
+ readonly aadObjectId?: string;
53
+ readonly id: string;
54
+ readonly name?: string;
55
+ readonly role?: string;
56
+ }
57
+ /** Bot Framework mention entity shape used by Teams messages. */
58
+ export interface TeamsMention {
59
+ readonly mentioned: TeamsChannelAccount;
60
+ readonly text: string;
61
+ readonly type: "mention";
62
+ }
63
+ /** Bot Framework/Teams attachment shape supported by Ash-owned APIs. */
64
+ export interface TeamsAttachment {
65
+ readonly content?: JsonObject;
66
+ readonly contentType: string;
67
+ readonly contentUrl?: string;
68
+ readonly name?: string;
69
+ }
70
+ /** JSON body supported by Teams message endpoints used by Ash. */
71
+ export interface TeamsMessageBody {
72
+ readonly attachments?: readonly TeamsAttachment[];
73
+ readonly channelData?: JsonObject;
74
+ readonly entities?: readonly TeamsMention[];
75
+ readonly inputHint?: string;
76
+ readonly speak?: string;
77
+ readonly suggestedActions?: JsonObject;
78
+ readonly text?: string;
79
+ readonly textFormat?: "markdown" | "plain" | "xml";
80
+ }
81
+ /** Outbound Bot Framework activity body sent through the Connector API. */
82
+ export interface TeamsOutboundActivity extends TeamsMessageBody {
83
+ readonly conversation?: JsonObject;
84
+ readonly from?: TeamsChannelAccount;
85
+ readonly recipient?: TeamsChannelAccount;
86
+ readonly replyToId?: string;
87
+ readonly type: "message" | "typing";
88
+ }
89
+ /** Conservative text budget for one Teams bot message. */
90
+ export declare const TEAMS_MESSAGE_TEXT_MAX_LENGTH: number;
91
+ /** Builds the channel-local continuation token for one Teams conversation/thread. */
92
+ export declare function teamsContinuationToken(input: {
93
+ readonly conversationId: string;
94
+ readonly replyToActivityId?: string | null;
95
+ readonly tenantId?: string | null;
96
+ }): string;
97
+ /** Resolves a Teams app id, falling back to `MICROSOFT_APP_ID` then `TEAMS_APP_ID`. */
98
+ export declare function resolveTeamsAppId(appId?: TeamsAppId): Promise<string>;
99
+ /** Resolves a Teams app password, falling back to `MICROSOFT_APP_PASSWORD` then `TEAMS_APP_PASSWORD`. */
100
+ export declare function resolveTeamsAppPassword(appPassword?: TeamsAppPassword): Promise<string>;
101
+ /** Resolves a Teams tenant id, falling back to `MICROSOFT_TENANT_ID` then `TEAMS_TENANT_ID`. */
102
+ export declare function resolveTeamsTenantId(tenantId?: TeamsTenantId): Promise<string | undefined>;
103
+ /** Resolves a Bot Connector access token, using a custom provider or client credentials. */
104
+ export declare function resolveTeamsAccessToken(options?: TeamsApiOptions): Promise<string>;
105
+ /** Low-level Bot Framework Connector API call. */
106
+ export declare function callTeamsConnectorApi(input: TeamsApiOptions & {
107
+ readonly body?: TeamsOutboundActivity | JsonObject;
108
+ readonly method?: "DELETE" | "GET" | "POST" | "PUT";
109
+ readonly path: string;
110
+ readonly serviceUrl: string;
111
+ }): Promise<TeamsApiResponse>;
112
+ /** Sends a non-reply activity to one Teams conversation. */
113
+ export declare function sendTeamsActivity(input: TeamsApiOptions & {
114
+ readonly body: TeamsOutboundActivity;
115
+ readonly conversationId: string;
116
+ readonly serviceUrl: string;
117
+ }): Promise<TeamsPostedActivity>;
118
+ /** Sends a reply activity to one Teams conversation activity. */
119
+ export declare function replyToTeamsActivity(input: TeamsApiOptions & {
120
+ readonly activityId: string;
121
+ readonly body: TeamsOutboundActivity;
122
+ readonly conversationId: string;
123
+ readonly serviceUrl: string;
124
+ }): Promise<TeamsPostedActivity>;
125
+ /** Updates an existing Teams bot activity. */
126
+ export declare function updateTeamsActivity(input: TeamsApiOptions & {
127
+ readonly activityId: string;
128
+ readonly body: TeamsOutboundActivity;
129
+ readonly conversationId: string;
130
+ readonly serviceUrl: string;
131
+ }): Promise<TeamsPostedActivity>;
132
+ /** Triggers Teams' typing indicator for one conversation. */
133
+ export declare function triggerTeamsTypingIndicator(input: TeamsApiOptions & {
134
+ readonly conversationId: string;
135
+ readonly serviceUrl: string;
136
+ }): Promise<void>;
137
+ /** Splits text into chunks that fit Teams' conservative message-size budget. */
138
+ export declare function splitTeamsMessageText(content: string): readonly string[];
139
+ /** Normalizes a string or message body into a Teams message activity body. */
140
+ export declare function normalizeTeamsPostInput(message: string | TeamsMessageBody): TeamsMessageBody;
@@ -0,0 +1,4 @@
1
+ import{isObject}from"#shared/guards.js";import{parseJsonObject}from"#shared/json.js";var TEAMS_MESSAGE_TEXT_MAX_LENGTH=80*1024,DEFAULT_LOGIN_BASE_URL=`https://login.microsoftonline.com`,BOT_FRAMEWORK_TENANT=`botframework.com`,BOT_FRAMEWORK_SCOPE=`https://api.botframework.com/.default`,accessTokenCache=new Map;function teamsContinuationToken(e){return[e.tenantId??`_`,e.conversationId,e.replyToActivityId??``].map(e=>encodeURIComponent(e)).join(`:`)}async function resolveTeamsAppId(e){let t=e??process.env.MICROSOFT_APP_ID??process.env.TEAMS_APP_ID;if(!t)throw Error(`MICROSOFT_APP_ID or TEAMS_APP_ID is required.`);return typeof t==`function`?await t():t}async function resolveTeamsAppPassword(e){let t=e??process.env.MICROSOFT_APP_PASSWORD??process.env.TEAMS_APP_PASSWORD;if(!t)throw Error(`MICROSOFT_APP_PASSWORD or TEAMS_APP_PASSWORD is required.`);return typeof t==`function`?await t():t}async function resolveTeamsTenantId(e){let t=e??process.env.MICROSOFT_TENANT_ID??process.env.TEAMS_TENANT_ID;if(t)return typeof t==`function`?await t():t}async function resolveTeamsAccessToken(t={}){let n=t.credentials;if(n?.tokenProvider!==void 0)return normalizeAccessTokenResult(await n.tokenProvider()).accessToken;let o=await resolveTeamsAppId(n?.appId),s=await resolveTeamsAppPassword(n?.appPassword),c=await resolveTeamsTenantId(n?.tenantId),l=trimTrailingSlash(t.loginBaseUrl??DEFAULT_LOGIN_BASE_URL),u=`${l}:${c??BOT_FRAMEWORK_TENANT}:${o}`,d=accessTokenCache.get(u),f=Date.now();if(d!==void 0&&d.expiresAt-6e4>f)return d.accessToken;let p=`${l}/${encodeURIComponent(c??BOT_FRAMEWORK_TENANT)}/oauth2/v2.0/token`,m=new URLSearchParams({client_id:o,client_secret:s,grant_type:`client_credentials`,scope:BOT_FRAMEWORK_SCOPE}),h=await(t.fetch??fetch)(p,{body:m,headers:{"content-type":`application/x-www-form-urlencoded`},method:`POST`}),g=await parseResponseBody(h);if(!h.ok)throw Error(`Teams access-token request failed with HTTP ${h.status}.`);let _=isObject(g)?g:{},v=typeof _.access_token==`string`?_.access_token:``;if(!v)throw Error(`Teams access-token response did not include access_token.`);let y=typeof _.expires_in==`number`?_.expires_in:3600;return accessTokenCache.set(u,{accessToken:v,expiresAt:f+y*1e3}),v}async function callTeamsConnectorApi(e){let n=e.fetch??fetch,r=new Headers;r.set(`authorization`,`Bearer ${await resolveTeamsAccessToken(e)}`),r.set(`content-type`,`application/json; charset=utf-8`);let i={headers:r,method:e.method??`POST`};e.body!==void 0&&(i.body=JSON.stringify(parseJsonObject(e.body)));let a=await n(`${trimTrailingSlash(e.serviceUrl)}${e.path}`,i);return{body:await parseResponseBody(a),ok:a.ok,status:a.status}}async function sendTeamsActivity(e){let t=await callTeamsConnectorApi({...e,body:e.body,path:`/v3/conversations/${encodeURIComponent(e.conversationId)}/activities`});if(!t.ok)throw Error(`Teams send activity failed with HTTP ${t.status}.`);return toPostedActivity(t.body)}async function replyToTeamsActivity(e){let t=await callTeamsConnectorApi({...e,body:e.body,path:`/v3/conversations/${encodeURIComponent(e.conversationId)}/activities/${encodeURIComponent(e.activityId)}`});if(!t.ok)throw Error(`Teams reply activity failed with HTTP ${t.status}.`);return toPostedActivity(t.body)}async function updateTeamsActivity(e){let t=await callTeamsConnectorApi({...e,body:e.body,method:`PUT`,path:`/v3/conversations/${encodeURIComponent(e.conversationId)}/activities/${encodeURIComponent(e.activityId)}`});if(!t.ok)throw Error(`Teams update activity failed with HTTP ${t.status}.`);return toPostedActivity(t.body)}async function triggerTeamsTypingIndicator(e){let t=await callTeamsConnectorApi({...e,body:{type:`typing`},path:`/v3/conversations/${encodeURIComponent(e.conversationId)}/activities`});if(!t.ok)throw Error(`Teams typing indicator failed with HTTP ${t.status}.`)}function splitTeamsMessageText(e){if(e.length<=81920)return[e];let t=[],r=e;for(;r.length>TEAMS_MESSAGE_TEXT_MAX_LENGTH;){let e=r.lastIndexOf(`
2
+
3
+ `,TEAMS_MESSAGE_TEXT_MAX_LENGTH);e<=0&&(e=r.lastIndexOf(`
4
+ `,TEAMS_MESSAGE_TEXT_MAX_LENGTH)),e<=0&&(e=r.lastIndexOf(` `,TEAMS_MESSAGE_TEXT_MAX_LENGTH)),e<=0&&(e=TEAMS_MESSAGE_TEXT_MAX_LENGTH),t.push(r.slice(0,e).trimEnd()),r=r.slice(e).trimStart()}return t.push(r),t}function normalizeTeamsPostInput(e){return typeof e==`string`?{text:e,textFormat:`markdown`}:e}function normalizeAccessTokenResult(e){if(typeof e==`string`)return{accessToken:e};let t=e.expiresAt instanceof Date?e.expiresAt.getTime():e.expiresAt;return{accessToken:e.accessToken,expiresAt:t}}function toPostedActivity(t){let n=isObject(t)?t:{};return{id:typeof n.id==`string`?n.id:``,raw:t}}function trimTrailingSlash(e){return e.replace(/\/+$/,``)}async function parseResponseBody(e){let t=await e.text();if(!t)return null;try{return JSON.parse(t)}catch{return t}}export{TEAMS_MESSAGE_TEXT_MAX_LENGTH,callTeamsConnectorApi,normalizeTeamsPostInput,replyToTeamsActivity,resolveTeamsAccessToken,resolveTeamsAppId,resolveTeamsAppPassword,resolveTeamsTenantId,sendTeamsActivity,splitTeamsMessageText,teamsContinuationToken,triggerTeamsTypingIndicator,updateTeamsActivity};
@@ -0,0 +1,25 @@
1
+ import type { FilePart, UserContent } from "ai";
2
+ import type { FetchFileResult } from "#channel/adapter.js";
3
+ import type { TeamsAttachment } from "#public/channels/teams/api.js";
4
+ import { type UploadPolicyInput } from "#public/channels/upload-policy.js";
5
+ import type { UploadPolicy } from "#public/channels/upload-policy.js";
6
+ /** File handling options for the native Teams channel. */
7
+ export interface TeamsFilesConfig {
8
+ readonly allowedHosts?: readonly string[] | "*";
9
+ readonly enabled?: boolean;
10
+ readonly uploadPolicy?: UploadPolicyInput;
11
+ }
12
+ /** Normalized file handling policy used by the Teams channel. */
13
+ export interface TeamsFilesPolicy {
14
+ readonly allowedHosts: readonly string[] | "*";
15
+ readonly enabled: boolean;
16
+ readonly uploadPolicy: UploadPolicy;
17
+ }
18
+ /** Normalizes author-provided Teams file options. */
19
+ export declare function normalizeTeamsFilesPolicy(config: TeamsFilesConfig | undefined): TeamsFilesPolicy;
20
+ /** Collects Teams attachment file parts when file support is explicitly enabled. */
21
+ export declare function collectTeamsFileParts(attachments: readonly TeamsAttachment[], policy: TeamsFilesPolicy): FilePart[];
22
+ /** Combines text + file parts into the UserContent shape expected by the harness. */
23
+ export declare function buildTeamsTurnMessage(text: string, fileParts: readonly FilePart[]): string | UserContent;
24
+ /** Creates a fetchFile function for Teams URL file parts. */
25
+ export declare function createTeamsFetchFile(policy: TeamsFilesPolicy): (url: string) => Promise<FetchFileResult | null>;
@@ -0,0 +1 @@
1
+ import{createLogger}from"#internal/logging.js";import{isObject}from"#shared/guards.js";import{evaluateFilePart,formatUploadPolicyViolation,isUploadsDisabled,mergeUploadPolicy}from"#public/channels/upload-policy.js";var log=createLogger(`teams.attachments`);function normalizeTeamsFilesPolicy(e){return{allowedHosts:e?.allowedHosts??[],enabled:e?.enabled===!0,uploadPolicy:mergeUploadPolicy(e?.uploadPolicy)}}function collectTeamsFileParts(e,t){if(!t.enabled||isUploadsDisabled(t.uploadPolicy))return[];let a=[];for(let i of e){let e=toTeamsFilePart(i,a.length,t);if(e===null)continue;let o=evaluateFilePart(e,t.uploadPolicy);if(o!==null){log.warn(`dropped Teams attachment — ${formatUploadPolicyViolation(o)}`,{name:i.name});continue}a.push(e)}return a}function buildTeamsTurnMessage(e,t){return t.length===0?e:e.trim().length===0?[...t]:[{type:`text`,text:e},...t]}function createTeamsFetchFile(e){return async t=>{if(!e.enabled||!isAllowedUrl(t,e.allowedHosts))return null;let n=await fetch(t);if(!n.ok)throw Error(`Teams file fetch returned HTTP ${n.status} for ${t}.`);return{bytes:Buffer.from(await n.arrayBuffer()),mediaType:n.headers.get(`content-type`)??void 0}}}function toTeamsFilePart(e,t,n){let r=readAttachmentUrl(e);return!r||!isAllowedUrl(r,n.allowedHosts)?null:{data:new URL(r),filename:e.name??`teams-attachment-${t}`,mediaType:inferMediaType(e),type:`file`}}function readAttachmentUrl(e){return e.contentType===`application/vnd.microsoft.teams.file.download.info`&&isObject(e.content)&&typeof e.content.downloadUrl==`string`?e.content.downloadUrl:e.contentUrl&&!e.contentType.startsWith(`application/vnd.microsoft.card.`)?e.contentUrl:null}function inferMediaType(e){return e.contentType===`application/vnd.microsoft.teams.file.download.info`&&(isObject(e.content)&&typeof e.content.fileType==`string`?e.content.fileType:void 0)===`txt`?`text/plain`:e.contentType||`application/octet-stream`}function isAllowedUrl(e,t){if(t===`*`)return!0;let n;try{n=new URL(e)}catch{return!1}return t.some(e=>n.host===e||n.hostname===e)}export{buildTeamsTurnMessage,collectTeamsFileParts,createTeamsFetchFile,normalizeTeamsFilesPolicy};
@@ -0,0 +1,24 @@
1
+ import type { SessionAuthContext } from "#channel/types.js";
2
+ import type { ConnectionAuthorizationOutcome } from "#protocol/message.js";
3
+ import { type TeamsMention } from "#public/channels/teams/api.js";
4
+ import type { TeamsMessageActivity } from "#public/channels/teams/inbound.js";
5
+ import type { TeamsChannelEvents, TeamsContext, TeamsInboundResult } from "#public/channels/teams/teamsChannel.js";
6
+ /** Default auth projection for Teams message actors. */
7
+ export declare function defaultTeamsAuth(message: TeamsMessageActivity): SessionAuthContext;
8
+ /** Default message hook: mention-gated dispatch with Teams user auth. */
9
+ export declare function defaultOnMessage(ctx: TeamsContext, message: TeamsMessageActivity): Promise<TeamsInboundResult>;
10
+ /** Built-in Teams event handlers for typing, replies, HITL, auth cards, and terminal errors. */
11
+ export declare const defaultEvents: TeamsChannelEvents;
12
+ /** Title-cases a connection name for Teams auth card display. */
13
+ export declare function formatConnectionDisplayName(connectionName: string): string;
14
+ /** Builds final-state text for a completed connection authorization attempt. */
15
+ export declare function buildAuthCompletedText(input: {
16
+ readonly displayName: string;
17
+ readonly outcome: ConnectionAuthorizationOutcome;
18
+ readonly reason?: string;
19
+ }): string;
20
+ /** Builds a Teams mention entity and matching text for one channel account. */
21
+ export declare function teamsMentionUser(user: {
22
+ readonly id: string;
23
+ readonly name?: string;
24
+ }): TeamsMention;
@@ -0,0 +1,3 @@
1
+ import{extractErrorId,formatErrorHint}from"#internal/logging.js";import{parseJsonObject}from"#shared/json.js";import{splitTeamsMessageText}from"#public/channels/teams/api.js";import{renderAnsweredInputRequestMessage,renderInputRequestMessage}from"#public/channels/teams/hitl.js";function defaultTeamsAuth(e){let t=e.tenantId,n={activity_id:e.id,conversation_id:e.conversation.id,scope:e.scope,user_id:e.from.id};e.from.name!==void 0&&(n.user_name=e.from.name),e.from.aadObjectId!==void 0&&(n.aad_object_id=e.from.aadObjectId),t!==void 0&&(n.tenant_id=t),e.teamId!==void 0&&(n.team_id=e.teamId),e.teamsChannelId!==void 0&&(n.channel_id=e.teamsChannelId);let r=t?`teams:${t}:${e.from.id}`:`teams:${e.from.id}`;return{attributes:n,authenticator:`teams-activity`,issuer:t?`teams:${t}`:`teams`,principalId:r,principalType:e.from.role===`bot`?`service`:`user`,subject:e.from.aadObjectId}}async function defaultOnMessage(e,t){return t.scope!==`personal`&&!t.isBotMentioned?null:(await e.thread.startTyping(),{auth:defaultTeamsAuth(t)})}var defaultEvents={async"turn.started"(e,t){await t.thread.startTyping()},async"actions.requested"(e,t){await t.thread.startTyping()},async"input.requested"(e,t){for(let n of e.requests)await t.thread.post(renderInputRequestMessage(n,{adaptiveCardVersion:t.adaptiveCardVersion}))},async"message.completed"(e,t){if(!(e.finishReason===`tool-calls`||!e.message))for(let n of splitTeamsMessageText(e.message))await t.thread.post(n)},async"session.failed"(n,r){let i=formatErrorHint(n),a=extractErrorId(n.details);await r.thread.post([`This session could not recover from an error${i}.`,``,`Start a new Teams conversation to continue.`,...a?[``,`Error id: ${a}`]:[]].join(`
2
+ `))},async"turn.failed"(n,r){let i=formatErrorHint(n),a=extractErrorId(n.details);await r.thread.post([`I hit an error while handling your request${i}.`,``,`Please try again, rephrase, or reach out if it keeps failing.`,...a?[``,`Error id: ${a}`]:[]].join(`
3
+ `))},async"connection.authorization_required"(e,t){let r=formatConnectionDisplayName(e.connectionName),i=e.authorization?.url,a=i?`Authorization required for ${r}: ${i}`:`Authorization required for ${r}.`,o=await t.thread.post({attachments:[{content:parseJsonObject({$schema:`http://adaptivecards.io/schemas/adaptive-card.json`,actions:i?[{title:`Sign in with ${r}`,type:`Action.OpenUrl`,url:i}]:[],body:[{text:`Authorization required for ${r}`,type:`TextBlock`,weight:`Bolder`,wrap:!0},{text:t.state.triggeringUser?`Requested by ${t.state.triggeringUser.name??t.state.triggeringUser.id}.`:`No triggering user is available for a private prompt.`,type:`TextBlock`,wrap:!0}],type:`AdaptiveCard`,version:t.adaptiveCardVersion}),contentType:`application/vnd.microsoft.card.adaptive`}],text:a});o.id&&(t.state.pendingAuthActivityId=o.id)},async"connection.authorization_completed"(e,t){let n=t.state.pendingAuthActivityId;if(!n)return;let r=buildAuthCompletedText({displayName:formatConnectionDisplayName(e.connectionName),outcome:e.outcome,reason:e.reason});await t.thread.update(n,renderAnsweredInputRequestMessage({prompt:r})),t.state.pendingAuthActivityId=null}};function formatConnectionDisplayName(e){return e.length===0?e:e.charAt(0).toUpperCase()+e.slice(1)}function buildAuthCompletedText(e){if(e.outcome===`authorized`)return`${e.displayName} connected.`;let t=e.reason===void 0?``:` (${e.reason})`;return`${e.displayName} authorization ${e.outcome}${t}.`}function teamsMentionUser(e){let t=e.name??e.id;return{mentioned:{id:e.id,name:e.name},text:`<at>${t}</at>`,type:`mention`}}export{buildAuthCompletedText,defaultEvents,defaultOnMessage,defaultTeamsAuth,formatConnectionDisplayName,teamsMentionUser};
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Teams Adaptive Card rendering and decode helpers for Ash HITL prompts.
3
+ */
4
+ import type { InputRequest, InputResponse } from "#runtime/input/types.js";
5
+ import type { TeamsActivity } from "#public/channels/teams/inbound.js";
6
+ import type { TeamsAttachment, TeamsMessageBody } from "#public/channels/teams/api.js";
7
+ /** Adaptive Card attachment content type used by Teams. */
8
+ export declare const TEAMS_ADAPTIVE_CARD_CONTENT_TYPE = "application/vnd.microsoft.card.adaptive";
9
+ /** Hidden data property used by Ash HITL Adaptive Card actions. */
10
+ export declare const TEAMS_HITL_DATA_KEY = "ash_input";
11
+ /** ChoiceSet input id used for select-style HITL requests. */
12
+ export declare const TEAMS_HITL_CHOICE_INPUT_ID = "ash_option";
13
+ /** Text input id used for freeform HITL requests. */
14
+ export declare const TEAMS_HITL_FREEFORM_INPUT_ID = "ash_freeform_text";
15
+ /** Renders one input request as a Teams message body containing an Adaptive Card. */
16
+ export declare function renderInputRequestMessage(request: InputRequest, options?: {
17
+ readonly adaptiveCardVersion?: string;
18
+ }): TeamsMessageBody;
19
+ /** Renders one input request as a Teams Adaptive Card attachment. */
20
+ export declare function renderInputRequestAttachment(request: InputRequest, options?: {
21
+ readonly adaptiveCardVersion?: string;
22
+ }): TeamsAttachment;
23
+ /** Renders an answered Teams card that replaces a pending HITL prompt. */
24
+ export declare function renderAnsweredInputRequestMessage(input: {
25
+ readonly label?: string;
26
+ readonly prompt: string;
27
+ }): TeamsMessageBody;
28
+ /** Returns true when a Teams activity carries an Ash HITL submit payload. */
29
+ export declare function isTeamsInputResponseActivity(activity: TeamsActivity): boolean;
30
+ /** Decodes one Teams activity into HITL input responses. */
31
+ export declare function deriveTeamsInputResponses(activity: TeamsActivity): readonly InputResponse[];
32
+ /** Builds the HTTP body Teams expects after an Adaptive Card invoke action. */
33
+ export declare function teamsInvokeResponse(input?: {
34
+ readonly message?: string;
35
+ readonly statusCode?: number;
36
+ }): Record<string, unknown>;
@@ -0,0 +1 @@
1
+ import{isObject}from"#shared/guards.js";import{parseJsonObject}from"#shared/json.js";import{TEAMS_ADAPTIVE_CARD_ACTION_LIMIT,TEAMS_ADAPTIVE_CARD_ACTION_TITLE_MAX_LENGTH,TEAMS_ADAPTIVE_CARD_CHOICE_TITLE_MAX_LENGTH,TEAMS_ADAPTIVE_CARD_TEXT_MAX_LENGTH}from"#public/channels/teams/limits.js";var TEAMS_ADAPTIVE_CARD_CONTENT_TYPE=`application/vnd.microsoft.card.adaptive`,TEAMS_HITL_DATA_KEY=`ash_input`,TEAMS_HITL_CHOICE_INPUT_ID=`ash_option`,TEAMS_HITL_FREEFORM_INPUT_ID=`ash_freeform_text`;function renderInputRequestMessage(e,t={}){return{attachments:[renderInputRequestAttachment(e,t)],text:e.prompt}}function renderInputRequestAttachment(e,n={}){return{content:parseJsonObject({$schema:`http://adaptivecards.io/schemas/adaptive-card.json`,actions:renderActions(e),body:[{text:truncate(e.prompt,TEAMS_ADAPTIVE_CARD_TEXT_MAX_LENGTH),type:`TextBlock`,wrap:!0},...renderInputs(e)],type:`AdaptiveCard`,version:n.adaptiveCardVersion??`1.5`}),contentType:TEAMS_ADAPTIVE_CARD_CONTENT_TYPE}}function renderAnsweredInputRequestMessage(e){return{attachments:[{content:parseJsonObject({$schema:`http://adaptivecards.io/schemas/adaptive-card.json`,body:[{text:truncate(e.prompt,TEAMS_ADAPTIVE_CARD_TEXT_MAX_LENGTH),type:`TextBlock`,wrap:!0},{color:`good`,text:e.label?`Answered: ${e.label}`:`Answered`,type:`TextBlock`,wrap:!0}],type:`AdaptiveCard`,version:`1.5`}),contentType:TEAMS_ADAPTIVE_CARD_CONTENT_TYPE}],text:e.label?`Answered: ${e.label}`:`Answered`}}function isTeamsInputResponseActivity(e){return deriveTeamsInputResponses(e).length>0}function deriveTeamsInputResponses(e){let t=readActivityValue(e);if(!t)return[];let n=readHitlPayload(t);if(!n)return[];let r=typeof n.requestId==`string`?n.requestId:``;if(!r)return[];let i=typeof n.optionId==`string`?n.optionId:typeof t.ash_option==`string`?t[TEAMS_HITL_CHOICE_INPUT_ID]:void 0,a=typeof t.ash_freeform_text==`string`?t[TEAMS_HITL_FREEFORM_INPUT_ID]:void 0;return i===void 0?a===void 0?[{requestId:r}]:[{requestId:r,text:a}]:[{optionId:i,requestId:r}]}function teamsInvokeResponse(e={}){return{statusCode:e.statusCode??200,type:`application/vnd.microsoft.activity.message`,value:e.message??`Answer received.`}}function renderInputs(e){return e.display===`select`&&e.options&&e.options.length>0?[{choices:e.options.map(e=>({title:truncate(e.label,TEAMS_ADAPTIVE_CARD_CHOICE_TITLE_MAX_LENGTH),value:e.id})),id:TEAMS_HITL_CHOICE_INPUT_ID,isMultiSelect:!1,style:`compact`,type:`Input.ChoiceSet`}]:e.allowFreeform===!0||!e.options||e.options.length===0?[{id:TEAMS_HITL_FREEFORM_INPUT_ID,isMultiline:!0,placeholder:`Type your answer`,type:`Input.Text`}]:[]}function renderActions(e){let t=e.options;return t&&t.length>0&&e.display!==`select`?t.slice(0,TEAMS_ADAPTIVE_CARD_ACTION_LIMIT).map(t=>({data:{[TEAMS_HITL_DATA_KEY]:{optionId:t.id,requestId:e.requestId}},title:truncate(t.label,TEAMS_ADAPTIVE_CARD_ACTION_TITLE_MAX_LENGTH),type:`Action.Submit`})):[{data:{[TEAMS_HITL_DATA_KEY]:{requestId:e.requestId}},title:`Submit`,type:`Action.Submit`}]}function readActivityValue(e){return e.type===`message`?readMessageValue(e):e.type===`invoke`?readInvokeValue(e):null}function readMessageValue(e){return e.value??null}function readInvokeValue(t){let n=t.value;if(!n)return null;let r=isObject(n.action)?n.action:null;return(r&&isObject(r.data)?r.data:null)??n}function readHitlPayload(t){let n=t[TEAMS_HITL_DATA_KEY];if(isObject(n))return n;let r=isObject(t.action)?t.action:null,i=(r&&isObject(r.data)?r.data:null)?.[TEAMS_HITL_DATA_KEY];return isObject(i)?i:null}function truncate(e,t){if(e.length<=t)return e;let n=Math.max(0,t-3);return`${e.slice(0,n).trimEnd()}...`}export{TEAMS_ADAPTIVE_CARD_CONTENT_TYPE,TEAMS_HITL_CHOICE_INPUT_ID,TEAMS_HITL_DATA_KEY,TEAMS_HITL_FREEFORM_INPUT_ID,deriveTeamsInputResponses,isTeamsInputResponseActivity,renderAnsweredInputRequestMessage,renderInputRequestAttachment,renderInputRequestMessage,teamsInvokeResponse};