veryfront 0.1.215 → 0.1.217

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 (305) hide show
  1. package/README.md +1 -1
  2. package/esm/cli/commands/extension/command-help.d.ts +3 -0
  3. package/esm/cli/commands/extension/command-help.d.ts.map +1 -0
  4. package/esm/cli/commands/extension/command-help.js +16 -0
  5. package/esm/cli/commands/extension/handler.d.ts +3 -0
  6. package/esm/cli/commands/extension/handler.d.ts.map +1 -0
  7. package/esm/cli/commands/extension/handler.js +36 -0
  8. package/esm/cli/commands/extension/init-command.d.ts +19 -0
  9. package/esm/cli/commands/extension/init-command.d.ts.map +1 -0
  10. package/esm/cli/commands/extension/init-command.js +122 -0
  11. package/esm/cli/commands/extension/validate-command.d.ts +13 -0
  12. package/esm/cli/commands/extension/validate-command.d.ts.map +1 -0
  13. package/esm/cli/commands/extension/validate-command.js +62 -0
  14. package/esm/cli/commands/generate/integration-generator-helpers.d.ts +35 -0
  15. package/esm/cli/commands/generate/integration-generator-helpers.d.ts.map +1 -0
  16. package/esm/cli/commands/generate/integration-generator-helpers.js +123 -0
  17. package/esm/cli/commands/generate/integration-generator.d.ts +1 -2
  18. package/esm/cli/commands/generate/integration-generator.d.ts.map +1 -1
  19. package/esm/cli/commands/generate/integration-generator.js +1 -123
  20. package/esm/cli/commands/knowledge/command-helpers.d.ts +48 -0
  21. package/esm/cli/commands/knowledge/command-helpers.d.ts.map +1 -0
  22. package/esm/cli/commands/knowledge/command-helpers.js +216 -0
  23. package/esm/cli/commands/knowledge/command.d.ts +12 -17
  24. package/esm/cli/commands/knowledge/command.d.ts.map +1 -1
  25. package/esm/cli/commands/knowledge/command.js +26 -214
  26. package/esm/cli/help/command-definitions.d.ts.map +1 -1
  27. package/esm/cli/help/command-definitions.js +2 -0
  28. package/esm/cli/mcp/remote-file-tool-helpers.d.ts +5 -0
  29. package/esm/cli/mcp/remote-file-tool-helpers.d.ts.map +1 -0
  30. package/esm/cli/mcp/remote-file-tool-helpers.js +22 -0
  31. package/esm/cli/mcp/remote-file-tools.d.ts.map +1 -1
  32. package/esm/cli/mcp/remote-file-tools.js +1 -22
  33. package/esm/cli/router.d.ts.map +1 -1
  34. package/esm/cli/router.js +2 -0
  35. package/esm/cli/templates/integration-loader-helpers.d.ts +8 -0
  36. package/esm/cli/templates/integration-loader-helpers.d.ts.map +1 -0
  37. package/esm/cli/templates/integration-loader-helpers.js +29 -0
  38. package/esm/cli/templates/integration-loader.d.ts.map +1 -1
  39. package/esm/cli/templates/integration-loader.js +5 -21
  40. package/esm/cli/templates/manifest.d.ts +1 -0
  41. package/esm/cli/templates/manifest.js +2 -1
  42. package/esm/deno.d.ts +3 -0
  43. package/esm/deno.js +5 -2
  44. package/esm/src/agent/runtime/index.d.ts.map +1 -1
  45. package/esm/src/agent/runtime/index.js +48 -90
  46. package/esm/src/chat/ag-ui-helpers.d.ts +17 -0
  47. package/esm/src/chat/ag-ui-helpers.d.ts.map +1 -0
  48. package/esm/src/chat/ag-ui-helpers.js +111 -0
  49. package/esm/src/chat/ag-ui.d.ts.map +1 -1
  50. package/esm/src/chat/ag-ui.js +1 -111
  51. package/esm/src/config/schemas/config.schema.d.ts +1 -0
  52. package/esm/src/config/schemas/config.schema.d.ts.map +1 -1
  53. package/esm/src/config/schemas/config.schema.js +11 -0
  54. package/esm/src/config/schemas/index.d.ts +11 -1
  55. package/esm/src/config/schemas/index.d.ts.map +1 -1
  56. package/esm/src/errors/error-registry-helpers.d.ts +6 -0
  57. package/esm/src/errors/error-registry-helpers.d.ts.map +1 -0
  58. package/esm/src/errors/error-registry-helpers.js +9 -0
  59. package/esm/src/errors/error-registry.d.ts.map +1 -1
  60. package/esm/src/errors/error-registry.js +4 -3
  61. package/esm/src/extensions/capabilities.d.ts +20 -0
  62. package/esm/src/extensions/capabilities.d.ts.map +1 -0
  63. package/esm/src/extensions/capabilities.js +77 -0
  64. package/esm/src/extensions/contracts.d.ts +10 -0
  65. package/esm/src/extensions/contracts.d.ts.map +1 -0
  66. package/esm/src/extensions/contracts.js +28 -0
  67. package/esm/src/extensions/discovery.d.ts +48 -0
  68. package/esm/src/extensions/discovery.d.ts.map +1 -0
  69. package/esm/src/extensions/discovery.js +179 -0
  70. package/esm/src/extensions/errors.d.ts +10 -0
  71. package/esm/src/extensions/errors.d.ts.map +1 -0
  72. package/esm/src/extensions/errors.js +34 -0
  73. package/esm/src/extensions/factory-loader.d.ts +29 -0
  74. package/esm/src/extensions/factory-loader.d.ts.map +1 -0
  75. package/esm/src/extensions/factory-loader.js +63 -0
  76. package/esm/src/extensions/index.d.ts +37 -0
  77. package/esm/src/extensions/index.d.ts.map +1 -0
  78. package/esm/src/extensions/index.js +41 -0
  79. package/esm/src/extensions/interfaces/ai-model-provider.d.ts +94 -0
  80. package/esm/src/extensions/interfaces/ai-model-provider.d.ts.map +1 -0
  81. package/esm/src/extensions/interfaces/ai-model-provider.js +8 -0
  82. package/esm/src/extensions/interfaces/auth-provider.d.ts +49 -0
  83. package/esm/src/extensions/interfaces/auth-provider.d.ts.map +1 -0
  84. package/esm/src/extensions/interfaces/auth-provider.js +8 -0
  85. package/esm/src/extensions/interfaces/bundler.d.ts +118 -0
  86. package/esm/src/extensions/interfaces/bundler.d.ts.map +1 -0
  87. package/esm/src/extensions/interfaces/bundler.js +8 -0
  88. package/esm/src/extensions/interfaces/cache-store.d.ts +27 -0
  89. package/esm/src/extensions/interfaces/cache-store.d.ts.map +1 -0
  90. package/esm/src/extensions/interfaces/cache-store.js +8 -0
  91. package/esm/src/extensions/interfaces/code-parser.d.ts +76 -0
  92. package/esm/src/extensions/interfaces/code-parser.d.ts.map +1 -0
  93. package/esm/src/extensions/interfaces/code-parser.js +8 -0
  94. package/esm/src/extensions/interfaces/content-transformer.d.ts +40 -0
  95. package/esm/src/extensions/interfaces/content-transformer.d.ts.map +1 -0
  96. package/esm/src/extensions/interfaces/content-transformer.js +8 -0
  97. package/esm/src/extensions/interfaces/css-processor.d.ts +38 -0
  98. package/esm/src/extensions/interfaces/css-processor.d.ts.map +1 -0
  99. package/esm/src/extensions/interfaces/css-processor.js +8 -0
  100. package/esm/src/extensions/interfaces/database-client.d.ts +31 -0
  101. package/esm/src/extensions/interfaces/database-client.d.ts.map +1 -0
  102. package/esm/src/extensions/interfaces/database-client.js +8 -0
  103. package/esm/src/extensions/interfaces/embedding-provider.d.ts +37 -0
  104. package/esm/src/extensions/interfaces/embedding-provider.d.ts.map +1 -0
  105. package/esm/src/extensions/interfaces/embedding-provider.js +8 -0
  106. package/esm/src/extensions/interfaces/index.d.ts +21 -0
  107. package/esm/src/extensions/interfaces/index.d.ts.map +1 -0
  108. package/esm/src/extensions/interfaces/index.js +9 -0
  109. package/esm/src/extensions/interfaces/node-compat.d.ts +25 -0
  110. package/esm/src/extensions/interfaces/node-compat.d.ts.map +1 -0
  111. package/esm/src/extensions/interfaces/node-compat.js +8 -0
  112. package/esm/src/extensions/interfaces/schema-validator.d.ts +46 -0
  113. package/esm/src/extensions/interfaces/schema-validator.d.ts.map +1 -0
  114. package/esm/src/extensions/interfaces/schema-validator.js +8 -0
  115. package/esm/src/extensions/interfaces/tracing-exporter.d.ts +44 -0
  116. package/esm/src/extensions/interfaces/tracing-exporter.d.ts.map +1 -0
  117. package/esm/src/extensions/interfaces/tracing-exporter.js +8 -0
  118. package/esm/src/extensions/loader.d.ts +33 -0
  119. package/esm/src/extensions/loader.d.ts.map +1 -0
  120. package/esm/src/extensions/loader.js +209 -0
  121. package/esm/src/extensions/orchestrate.d.ts +54 -0
  122. package/esm/src/extensions/orchestrate.d.ts.map +1 -0
  123. package/esm/src/extensions/orchestrate.js +116 -0
  124. package/esm/src/extensions/recommendations.d.ts +7 -0
  125. package/esm/src/extensions/recommendations.d.ts.map +1 -0
  126. package/esm/src/extensions/recommendations.js +22 -0
  127. package/esm/src/extensions/types.d.ts +47 -0
  128. package/esm/src/extensions/types.d.ts.map +1 -0
  129. package/esm/src/extensions/types.js +6 -0
  130. package/esm/src/extensions/validation.d.ts +44 -0
  131. package/esm/src/extensions/validation.d.ts.map +1 -0
  132. package/esm/src/extensions/validation.js +115 -0
  133. package/esm/src/html/styles-builder/plugin-loader.d.ts.map +1 -1
  134. package/esm/src/html/styles-builder/plugin-loader.js +23 -0
  135. package/esm/src/html/styles-builder/tailwind-plugin-allowlist.d.ts +29 -0
  136. package/esm/src/html/styles-builder/tailwind-plugin-allowlist.d.ts.map +1 -0
  137. package/esm/src/html/styles-builder/tailwind-plugin-allowlist.js +48 -0
  138. package/esm/src/modules/react-loader/ssr-module-loader/loader-helpers.d.ts +15 -0
  139. package/esm/src/modules/react-loader/ssr-module-loader/loader-helpers.d.ts.map +1 -0
  140. package/esm/src/modules/react-loader/ssr-module-loader/loader-helpers.js +22 -0
  141. package/esm/src/modules/react-loader/ssr-module-loader/loader.d.ts +0 -2
  142. package/esm/src/modules/react-loader/ssr-module-loader/loader.d.ts.map +1 -1
  143. package/esm/src/modules/react-loader/ssr-module-loader/loader.js +4 -24
  144. package/esm/src/platform/adapters/fs/veryfront/adapter-helpers.d.ts +19 -0
  145. package/esm/src/platform/adapters/fs/veryfront/adapter-helpers.d.ts.map +1 -0
  146. package/esm/src/platform/adapters/fs/veryfront/adapter-helpers.js +26 -0
  147. package/esm/src/platform/adapters/fs/veryfront/adapter.d.ts.map +1 -1
  148. package/esm/src/platform/adapters/fs/veryfront/adapter.js +4 -20
  149. package/esm/src/platform/adapters/fs/veryfront/read-operations-helpers.d.ts +1 -0
  150. package/esm/src/platform/adapters/fs/veryfront/read-operations-helpers.d.ts.map +1 -1
  151. package/esm/src/platform/adapters/fs/veryfront/read-operations-helpers.js +3 -0
  152. package/esm/src/platform/adapters/fs/veryfront/read-operations.d.ts.map +1 -1
  153. package/esm/src/platform/adapters/fs/veryfront/read-operations.js +4 -7
  154. package/esm/src/platform/adapters/fs/veryfront/websocket-manager-helpers.d.ts +28 -0
  155. package/esm/src/platform/adapters/fs/veryfront/websocket-manager-helpers.d.ts.map +1 -0
  156. package/esm/src/platform/adapters/fs/veryfront/websocket-manager-helpers.js +41 -0
  157. package/esm/src/platform/adapters/fs/veryfront/websocket-manager.d.ts +1 -4
  158. package/esm/src/platform/adapters/fs/veryfront/websocket-manager.d.ts.map +1 -1
  159. package/esm/src/platform/adapters/fs/veryfront/websocket-manager.js +7 -40
  160. package/esm/src/platform/compat/process/command.d.ts +31 -0
  161. package/esm/src/platform/compat/process/command.d.ts.map +1 -0
  162. package/esm/src/platform/compat/process/command.js +193 -0
  163. package/esm/src/platform/compat/process/env.d.ts +31 -0
  164. package/esm/src/platform/compat/process/env.d.ts.map +1 -0
  165. package/esm/src/platform/compat/process/env.js +175 -0
  166. package/esm/src/platform/compat/process/lifecycle.d.ts +98 -0
  167. package/esm/src/platform/compat/process/lifecycle.d.ts.map +1 -0
  168. package/esm/src/platform/compat/process/lifecycle.js +305 -0
  169. package/esm/src/platform/compat/process/runtime-process.d.ts +10 -0
  170. package/esm/src/platform/compat/process/runtime-process.d.ts.map +1 -0
  171. package/esm/src/platform/compat/process/runtime-process.js +24 -0
  172. package/esm/src/platform/compat/process.d.ts +4 -165
  173. package/esm/src/platform/compat/process.d.ts.map +1 -1
  174. package/esm/src/platform/compat/process.js +4 -682
  175. package/esm/src/platform/index.d.ts +1 -1
  176. package/esm/src/platform/index.d.ts.map +1 -1
  177. package/esm/src/provider/runtime-loader/provider-endpoints.d.ts +8 -0
  178. package/esm/src/provider/runtime-loader/provider-endpoints.d.ts.map +1 -0
  179. package/esm/src/provider/runtime-loader/provider-endpoints.js +27 -0
  180. package/esm/src/provider/runtime-loader/provider-request-init.d.ts +32 -0
  181. package/esm/src/provider/runtime-loader/provider-request-init.d.ts.map +1 -0
  182. package/esm/src/provider/runtime-loader/provider-request-init.js +67 -0
  183. package/esm/src/provider/runtime-loader/tool-input-status.d.ts +17 -0
  184. package/esm/src/provider/runtime-loader/tool-input-status.d.ts.map +1 -0
  185. package/esm/src/provider/runtime-loader/tool-input-status.js +155 -0
  186. package/esm/src/provider/runtime-loader.d.ts +2 -3
  187. package/esm/src/provider/runtime-loader.d.ts.map +1 -1
  188. package/esm/src/provider/runtime-loader.js +92 -291
  189. package/esm/src/proxy/handler.d.ts.map +1 -1
  190. package/esm/src/proxy/handler.js +14 -0
  191. package/esm/src/rendering/orchestrator/pipeline-helpers.d.ts +8 -0
  192. package/esm/src/rendering/orchestrator/pipeline-helpers.d.ts.map +1 -0
  193. package/esm/src/rendering/orchestrator/pipeline-helpers.js +20 -0
  194. package/esm/src/rendering/orchestrator/pipeline.d.ts +0 -3
  195. package/esm/src/rendering/orchestrator/pipeline.d.ts.map +1 -1
  196. package/esm/src/rendering/orchestrator/pipeline.js +4 -22
  197. package/esm/src/routing/api/module-loader/loader-helpers.d.ts +10 -0
  198. package/esm/src/routing/api/module-loader/loader-helpers.d.ts.map +1 -0
  199. package/esm/src/routing/api/module-loader/loader-helpers.js +62 -0
  200. package/esm/src/routing/api/module-loader/loader.d.ts +1 -1
  201. package/esm/src/routing/api/module-loader/loader.d.ts.map +1 -1
  202. package/esm/src/routing/api/module-loader/loader.js +2 -60
  203. package/esm/src/server/bootstrap.d.ts +22 -2
  204. package/esm/src/server/bootstrap.d.ts.map +1 -1
  205. package/esm/src/server/bootstrap.js +67 -5
  206. package/esm/src/server/dev-ui/manifest.d.ts +2 -0
  207. package/esm/src/server/dev-ui/manifest.js +3 -1
  208. package/esm/src/server/handlers/request/api/project-discovery.d.ts.map +1 -1
  209. package/esm/src/server/handlers/request/api/project-discovery.js +14 -8
  210. package/esm/src/server/production-server.js +1 -1
  211. package/esm/src/server/services/rsc/endpoints/rsc-bundles.generated.d.ts.map +1 -1
  212. package/esm/src/server/services/rsc/endpoints/rsc-bundles.generated.js +2 -2
  213. package/esm/src/server/utils/domain-parser.d.ts.map +1 -1
  214. package/esm/src/server/utils/domain-parser.js +4 -0
  215. package/esm/src/studio/bridge/bridge-bundle.generated.d.ts.map +1 -1
  216. package/esm/src/studio/bridge/bridge-bundle.generated.js +1 -1
  217. package/esm/src/tool/index.d.ts +1 -1
  218. package/esm/src/tool/index.d.ts.map +1 -1
  219. package/esm/src/tool/types.d.ts +20 -0
  220. package/esm/src/tool/types.d.ts.map +1 -1
  221. package/esm/src/utils/version-constant.d.ts +1 -1
  222. package/esm/src/utils/version-constant.js +1 -1
  223. package/package.json +7 -1
  224. package/src/cli/commands/extension/command-help.ts +18 -0
  225. package/src/cli/commands/extension/handler.ts +41 -0
  226. package/src/cli/commands/extension/init-command.ts +140 -0
  227. package/src/cli/commands/extension/validate-command.ts +78 -0
  228. package/src/cli/commands/generate/integration-generator-helpers.ts +185 -0
  229. package/src/cli/commands/generate/integration-generator.ts +12 -168
  230. package/src/cli/commands/knowledge/command-helpers.ts +295 -0
  231. package/src/cli/commands/knowledge/command.ts +34 -261
  232. package/src/cli/help/command-definitions.ts +2 -0
  233. package/src/cli/mcp/remote-file-tool-helpers.ts +27 -0
  234. package/src/cli/mcp/remote-file-tools.ts +6 -28
  235. package/src/cli/router.ts +2 -0
  236. package/src/cli/templates/integration-loader-helpers.ts +49 -0
  237. package/src/cli/templates/integration-loader.ts +10 -28
  238. package/src/cli/templates/manifest.js +2 -1
  239. package/src/deno.js +5 -2
  240. package/src/src/agent/runtime/index.ts +77 -94
  241. package/src/src/chat/ag-ui-helpers.ts +139 -0
  242. package/src/src/chat/ag-ui.ts +11 -139
  243. package/src/src/config/schemas/config.schema.ts +11 -0
  244. package/src/src/config/schemas/index.ts +15 -1
  245. package/src/src/errors/error-registry-helpers.ts +23 -0
  246. package/src/src/errors/error-registry.ts +8 -3
  247. package/src/src/extensions/capabilities.ts +97 -0
  248. package/src/src/extensions/contracts.ts +36 -0
  249. package/src/src/extensions/discovery.ts +221 -0
  250. package/src/src/extensions/errors.ts +39 -0
  251. package/src/src/extensions/factory-loader.ts +76 -0
  252. package/src/src/extensions/index.ts +79 -0
  253. package/src/src/extensions/interfaces/ai-model-provider.ts +100 -0
  254. package/src/src/extensions/interfaces/auth-provider.ts +52 -0
  255. package/src/src/extensions/interfaces/bundler.ts +116 -0
  256. package/src/src/extensions/interfaces/cache-store.ts +27 -0
  257. package/src/src/extensions/interfaces/code-parser.ts +84 -0
  258. package/src/src/extensions/interfaces/content-transformer.ts +38 -0
  259. package/src/src/extensions/interfaces/css-processor.ts +40 -0
  260. package/src/src/extensions/interfaces/database-client.ts +35 -0
  261. package/src/src/extensions/interfaces/embedding-provider.ts +39 -0
  262. package/src/src/extensions/interfaces/index.ts +81 -0
  263. package/src/src/extensions/interfaces/node-compat.ts +25 -0
  264. package/src/src/extensions/interfaces/schema-validator.ts +51 -0
  265. package/src/src/extensions/interfaces/tracing-exporter.ts +42 -0
  266. package/src/src/extensions/loader.ts +245 -0
  267. package/src/src/extensions/orchestrate.ts +184 -0
  268. package/src/src/extensions/recommendations.ts +24 -0
  269. package/src/src/extensions/types.ts +57 -0
  270. package/src/src/extensions/validation.ts +147 -0
  271. package/src/src/html/styles-builder/plugin-loader.ts +32 -0
  272. package/src/src/html/styles-builder/tailwind-plugin-allowlist.ts +51 -0
  273. package/src/src/modules/react-loader/ssr-module-loader/loader-helpers.ts +37 -0
  274. package/src/src/modules/react-loader/ssr-module-loader/loader.ts +8 -39
  275. package/src/src/platform/adapters/fs/veryfront/adapter-helpers.ts +43 -0
  276. package/src/src/platform/adapters/fs/veryfront/adapter.ts +8 -22
  277. package/src/src/platform/adapters/fs/veryfront/read-operations-helpers.ts +4 -0
  278. package/src/src/platform/adapters/fs/veryfront/read-operations.ts +4 -7
  279. package/src/src/platform/adapters/fs/veryfront/websocket-manager-helpers.ts +73 -0
  280. package/src/src/platform/adapters/fs/veryfront/websocket-manager.ts +29 -44
  281. package/src/src/platform/compat/process/command.ts +297 -0
  282. package/src/src/platform/compat/process/env.ts +227 -0
  283. package/src/src/platform/compat/process/lifecycle.ts +330 -0
  284. package/src/src/platform/compat/process/runtime-process.ts +27 -0
  285. package/src/src/platform/compat/process.ts +37 -870
  286. package/src/src/platform/index.ts +1 -0
  287. package/src/src/provider/runtime-loader/provider-endpoints.ts +50 -0
  288. package/src/src/provider/runtime-loader/provider-request-init.ts +101 -0
  289. package/src/src/provider/runtime-loader/tool-input-status.ts +210 -0
  290. package/src/src/provider/runtime-loader.ts +113 -368
  291. package/src/src/proxy/handler.ts +16 -0
  292. package/src/src/rendering/orchestrator/pipeline-helpers.ts +35 -0
  293. package/src/src/rendering/orchestrator/pipeline.ts +8 -35
  294. package/src/src/routing/api/module-loader/loader-helpers.ts +68 -0
  295. package/src/src/routing/api/module-loader/loader.ts +8 -65
  296. package/src/src/server/bootstrap.ts +88 -7
  297. package/src/src/server/dev-ui/manifest.js +3 -1
  298. package/src/src/server/handlers/request/api/project-discovery.ts +19 -8
  299. package/src/src/server/production-server.ts +1 -1
  300. package/src/src/server/services/rsc/endpoints/rsc-bundles.generated.ts +2 -2
  301. package/src/src/server/utils/domain-parser.ts +4 -0
  302. package/src/src/studio/bridge/bridge-bundle.generated.ts +1 -1
  303. package/src/src/tool/index.ts +1 -0
  304. package/src/src/tool/types.ts +21 -0
  305. package/src/src/utils/version-constant.ts +1 -1
@@ -14,6 +14,7 @@ export type { RuntimeAdapter } from "./adapters/base.js";
14
14
  // Compat: process
15
15
  export {
16
16
  chdir,
17
+ type CommandResult,
17
18
  cwd,
18
19
  env,
19
20
  exit,
@@ -0,0 +1,50 @@
1
+ const DEFAULT_ANTHROPIC_BASE_URL = "https://api.anthropic.com/v1";
2
+ const DEFAULT_OPENAI_BASE_URL = "https://api.openai.com/v1";
3
+ const DEFAULT_GOOGLE_BASE_URL = "https://generativelanguage.googleapis.com/v1beta";
4
+
5
+ function joinUrl(base: string, path: string): string {
6
+ return `${base.replace(/\/+$/, "")}/${path.replace(/^\/+/, "")}`;
7
+ }
8
+
9
+ export function getOpenAIEmbeddingUrl(baseURL?: string): string {
10
+ return joinUrl(baseURL ?? DEFAULT_OPENAI_BASE_URL, "embeddings");
11
+ }
12
+
13
+ export function getAnthropicMessagesUrl(baseURL?: string): string {
14
+ return joinUrl(baseURL ?? DEFAULT_ANTHROPIC_BASE_URL, "messages");
15
+ }
16
+
17
+ export function getOpenAIChatCompletionsUrl(baseURL?: string): string {
18
+ return joinUrl(baseURL ?? DEFAULT_OPENAI_BASE_URL, "chat/completions");
19
+ }
20
+
21
+ export function getOpenAIResponsesUrl(baseURL?: string): string {
22
+ return joinUrl(baseURL ?? DEFAULT_OPENAI_BASE_URL, "responses");
23
+ }
24
+
25
+ export function getGoogleGenerateContentUrl(
26
+ baseURL: string | undefined,
27
+ modelId: string,
28
+ ): string {
29
+ return joinUrl(
30
+ baseURL ?? DEFAULT_GOOGLE_BASE_URL,
31
+ `models/${encodeURIComponent(modelId)}:generateContent`,
32
+ );
33
+ }
34
+
35
+ export function getGoogleStreamGenerateContentUrl(
36
+ baseURL: string | undefined,
37
+ modelId: string,
38
+ ): string {
39
+ return joinUrl(
40
+ baseURL ?? DEFAULT_GOOGLE_BASE_URL,
41
+ `models/${encodeURIComponent(modelId)}:streamGenerateContent?alt=sse`,
42
+ );
43
+ }
44
+
45
+ export function getGoogleEmbeddingUrl(baseURL: string | undefined, modelId: string): string {
46
+ return joinUrl(
47
+ baseURL ?? DEFAULT_GOOGLE_BASE_URL,
48
+ `models/${encodeURIComponent(modelId)}:embedContent`,
49
+ );
50
+ }
@@ -0,0 +1,101 @@
1
+ const ANTHROPIC_FINE_GRAINED_TOOL_STREAMING_BETA = "fine-grained-tool-streaming-2025-05-14";
2
+
3
+ export function createRequestHeaders(options: {
4
+ apiKeyHeaderName: string;
5
+ apiKey: string;
6
+ extraHeaders?: HeadersInit;
7
+ }): Headers {
8
+ const headers = new Headers(options.extraHeaders);
9
+ headers.set("content-type", "application/json");
10
+ headers.set(options.apiKeyHeaderName, options.apiKey);
11
+ return headers;
12
+ }
13
+
14
+ export function createAnthropicRequestHeaders(options: {
15
+ apiKey?: string;
16
+ authToken?: string;
17
+ extraHeaders?: HeadersInit;
18
+ enableFineGrainedToolStreaming?: boolean;
19
+ }): Headers {
20
+ const headers = new Headers(options.extraHeaders);
21
+ headers.set("content-type", "application/json");
22
+ headers.set("anthropic-version", headers.get("anthropic-version") ?? "2023-06-01");
23
+
24
+ if (options.enableFineGrainedToolStreaming) {
25
+ const existingBetaHeader = headers.get("anthropic-beta");
26
+ if (!existingBetaHeader) {
27
+ headers.set("anthropic-beta", ANTHROPIC_FINE_GRAINED_TOOL_STREAMING_BETA);
28
+ } else {
29
+ const betas = new Set(
30
+ existingBetaHeader.split(",").map((beta) => beta.trim()).filter((beta) => beta.length > 0),
31
+ );
32
+ betas.add(ANTHROPIC_FINE_GRAINED_TOOL_STREAMING_BETA);
33
+ headers.set("anthropic-beta", Array.from(betas).join(","));
34
+ }
35
+ }
36
+
37
+ if (options.authToken) {
38
+ headers.set("authorization", `Bearer ${options.authToken}`);
39
+ } else if (options.apiKey) {
40
+ headers.set("x-api-key", options.apiKey);
41
+ }
42
+
43
+ return headers;
44
+ }
45
+
46
+ export function createOpenAIRequestInit(options: {
47
+ apiKey: string;
48
+ extraHeaders?: HeadersInit;
49
+ body: string;
50
+ signal?: AbortSignal;
51
+ }): RequestInit {
52
+ return {
53
+ method: "POST",
54
+ headers: createRequestHeaders({
55
+ apiKeyHeaderName: "authorization",
56
+ apiKey: `Bearer ${options.apiKey}`,
57
+ extraHeaders: options.extraHeaders,
58
+ }),
59
+ body: options.body,
60
+ signal: options.signal,
61
+ };
62
+ }
63
+
64
+ export function createAnthropicRequestInit(options: {
65
+ apiKey?: string;
66
+ authToken?: string;
67
+ extraHeaders?: HeadersInit;
68
+ enableFineGrainedToolStreaming?: boolean;
69
+ body: string;
70
+ signal?: AbortSignal;
71
+ }): RequestInit {
72
+ return {
73
+ method: "POST",
74
+ headers: createAnthropicRequestHeaders({
75
+ apiKey: options.apiKey,
76
+ authToken: options.authToken,
77
+ extraHeaders: options.extraHeaders,
78
+ enableFineGrainedToolStreaming: options.enableFineGrainedToolStreaming,
79
+ }),
80
+ body: options.body,
81
+ signal: options.signal,
82
+ };
83
+ }
84
+
85
+ export function createGoogleRequestInit(options: {
86
+ apiKey: string;
87
+ extraHeaders?: HeadersInit;
88
+ body: string;
89
+ signal?: AbortSignal;
90
+ }): RequestInit {
91
+ return {
92
+ method: "POST",
93
+ headers: createRequestHeaders({
94
+ apiKeyHeaderName: "x-goog-api-key",
95
+ apiKey: options.apiKey,
96
+ extraHeaders: options.extraHeaders,
97
+ }),
98
+ body: options.body,
99
+ signal: options.signal,
100
+ };
101
+ }
@@ -0,0 +1,210 @@
1
+ import * as dntShim from "../../../_dnt.shims.js";
2
+ export const TOOL_INPUT_PENDING_THRESHOLD_MS = 5_000;
3
+
4
+ type ToolInputActivityStatus = "pending_input" | "streaming_input";
5
+
6
+ type ToolInputStatusState = {
7
+ dueAt: number | null;
8
+ lastStatus: ToolInputActivityStatus | null;
9
+ };
10
+
11
+ type ToolStatusEvent = {
12
+ type: "data-tool-call-status";
13
+ data: { toolCallId: string; status: "pending_input" | "streaming_input" };
14
+ };
15
+
16
+ export function getToolCallIdFromStreamPart(part: unknown): string | null {
17
+ if (!part || typeof part !== "object") {
18
+ return null;
19
+ }
20
+
21
+ const record = part as Record<string, unknown>;
22
+ if (typeof record.toolCallId === "string" && record.toolCallId.length > 0) {
23
+ return record.toolCallId;
24
+ }
25
+
26
+ if (typeof record.id === "string" && record.id.length > 0) {
27
+ return record.id;
28
+ }
29
+
30
+ return null;
31
+ }
32
+
33
+ export function collectDueToolStatuses(
34
+ toolStates: Map<string, ToolInputStatusState>,
35
+ now: number,
36
+ thresholdMs: number,
37
+ ): Array<{ type: "data-tool-call-status"; data: { toolCallId: string; status: "pending_input" } }> {
38
+ const events: Array<
39
+ { type: "data-tool-call-status"; data: { toolCallId: string; status: "pending_input" } }
40
+ > = [];
41
+
42
+ for (const [toolCallId, state] of toolStates.entries()) {
43
+ if (state.dueAt === null || state.dueAt > now) {
44
+ continue;
45
+ }
46
+
47
+ state.dueAt = now + thresholdMs;
48
+ state.lastStatus = "pending_input";
49
+ events.push({
50
+ type: "data-tool-call-status",
51
+ data: {
52
+ toolCallId,
53
+ status: "pending_input",
54
+ },
55
+ });
56
+ }
57
+
58
+ return events;
59
+ }
60
+
61
+ export async function* withToolInputStatusTransitions(
62
+ stream: AsyncIterable<unknown>,
63
+ thresholdMs = TOOL_INPUT_PENDING_THRESHOLD_MS,
64
+ ): AsyncIterable<unknown> {
65
+ const iterator = stream[Symbol.asyncIterator]();
66
+ const toolStates = new Map<string, ToolInputStatusState>();
67
+ const buffered: unknown[] = [];
68
+ let nextPartPromise: Promise<IteratorResult<unknown>> | null = null;
69
+
70
+ const closeTool = (toolCallId: string | null) => {
71
+ if (!toolCallId) {
72
+ return;
73
+ }
74
+
75
+ toolStates.delete(toolCallId);
76
+ };
77
+
78
+ const schedulePending = (toolCallId: string | null) => {
79
+ if (!toolCallId) {
80
+ return;
81
+ }
82
+
83
+ const state = toolStates.get(toolCallId) ?? {
84
+ dueAt: null,
85
+ lastStatus: null,
86
+ };
87
+ state.dueAt = Date.now() + thresholdMs;
88
+ toolStates.set(toolCallId, state);
89
+ };
90
+
91
+ const markStreaming = (toolCallId: string | null) => {
92
+ if (!toolCallId) {
93
+ return;
94
+ }
95
+
96
+ const state = toolStates.get(toolCallId) ?? {
97
+ dueAt: null,
98
+ lastStatus: null,
99
+ };
100
+
101
+ if (state.lastStatus !== "streaming_input") {
102
+ buffered.push(
103
+ {
104
+ type: "data-tool-call-status",
105
+ data: {
106
+ toolCallId,
107
+ status: "streaming_input",
108
+ },
109
+ } satisfies ToolStatusEvent,
110
+ );
111
+ }
112
+
113
+ state.lastStatus = "streaming_input";
114
+ state.dueAt = Date.now() + thresholdMs;
115
+ toolStates.set(toolCallId, state);
116
+ };
117
+
118
+ const processPart = (part: unknown) => {
119
+ if (!part || typeof part !== "object") {
120
+ buffered.push(part);
121
+ return;
122
+ }
123
+
124
+ const record = part as Record<string, unknown>;
125
+ const partType = typeof record.type === "string" ? record.type : null;
126
+ const toolCallId = getToolCallIdFromStreamPart(part);
127
+
128
+ switch (partType) {
129
+ case "tool-input-start":
130
+ schedulePending(toolCallId);
131
+ buffered.push(part);
132
+ return;
133
+ case "tool-input-delta":
134
+ markStreaming(toolCallId);
135
+ buffered.push(part);
136
+ return;
137
+ case "tool-call":
138
+ case "tool-result":
139
+ case "tool-error":
140
+ closeTool(toolCallId);
141
+ buffered.push(part);
142
+ return;
143
+ case "finish":
144
+ case "error":
145
+ toolStates.clear();
146
+ buffered.push(part);
147
+ return;
148
+ default:
149
+ buffered.push(part);
150
+ return;
151
+ }
152
+ };
153
+
154
+ while (true) {
155
+ if (buffered.length > 0) {
156
+ yield buffered.shift();
157
+ continue;
158
+ }
159
+
160
+ if (!nextPartPromise) {
161
+ nextPartPromise = iterator.next();
162
+ }
163
+
164
+ const nextDueAt = [...toolStates.values()]
165
+ .map((state) => state.dueAt)
166
+ .filter((value): value is number => value !== null)
167
+ .sort((left, right) => left - right)[0] ?? null;
168
+
169
+ if (nextDueAt !== null) {
170
+ let timeoutId: ReturnType<typeof dntShim.setTimeout> | null = null;
171
+ const timeoutResult = await Promise.race([
172
+ nextPartPromise.then((result) => ({ kind: "part" as const, result })),
173
+ new Promise<{ kind: "timeout" }>((resolve) => {
174
+ timeoutId = dntShim.setTimeout(
175
+ () => resolve({ kind: "timeout" }),
176
+ Math.max(0, nextDueAt - Date.now()),
177
+ );
178
+ }),
179
+ ]);
180
+ if (timeoutId !== null) {
181
+ clearTimeout(timeoutId);
182
+ }
183
+
184
+ if (timeoutResult.kind === "timeout") {
185
+ buffered.push(...collectDueToolStatuses(toolStates, Date.now(), thresholdMs));
186
+ continue;
187
+ }
188
+
189
+ nextPartPromise = null;
190
+ if (timeoutResult.result.done) {
191
+ buffered.push(...collectDueToolStatuses(toolStates, Date.now(), thresholdMs));
192
+ while (buffered.length > 0) {
193
+ yield buffered.shift();
194
+ }
195
+ return;
196
+ }
197
+
198
+ processPart(timeoutResult.result.value);
199
+ continue;
200
+ }
201
+
202
+ const result = await nextPartPromise;
203
+ nextPartPromise = null;
204
+ if (result.done) {
205
+ return;
206
+ }
207
+
208
+ processPart(result.value);
209
+ }
210
+ }