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.
- package/README.md +1 -1
- package/esm/cli/commands/extension/command-help.d.ts +3 -0
- package/esm/cli/commands/extension/command-help.d.ts.map +1 -0
- package/esm/cli/commands/extension/command-help.js +16 -0
- package/esm/cli/commands/extension/handler.d.ts +3 -0
- package/esm/cli/commands/extension/handler.d.ts.map +1 -0
- package/esm/cli/commands/extension/handler.js +36 -0
- package/esm/cli/commands/extension/init-command.d.ts +19 -0
- package/esm/cli/commands/extension/init-command.d.ts.map +1 -0
- package/esm/cli/commands/extension/init-command.js +122 -0
- package/esm/cli/commands/extension/validate-command.d.ts +13 -0
- package/esm/cli/commands/extension/validate-command.d.ts.map +1 -0
- package/esm/cli/commands/extension/validate-command.js +62 -0
- package/esm/cli/commands/generate/integration-generator-helpers.d.ts +35 -0
- package/esm/cli/commands/generate/integration-generator-helpers.d.ts.map +1 -0
- package/esm/cli/commands/generate/integration-generator-helpers.js +123 -0
- package/esm/cli/commands/generate/integration-generator.d.ts +1 -2
- package/esm/cli/commands/generate/integration-generator.d.ts.map +1 -1
- package/esm/cli/commands/generate/integration-generator.js +1 -123
- package/esm/cli/commands/knowledge/command-helpers.d.ts +48 -0
- package/esm/cli/commands/knowledge/command-helpers.d.ts.map +1 -0
- package/esm/cli/commands/knowledge/command-helpers.js +216 -0
- package/esm/cli/commands/knowledge/command.d.ts +12 -17
- package/esm/cli/commands/knowledge/command.d.ts.map +1 -1
- package/esm/cli/commands/knowledge/command.js +26 -214
- package/esm/cli/help/command-definitions.d.ts.map +1 -1
- package/esm/cli/help/command-definitions.js +2 -0
- package/esm/cli/mcp/remote-file-tool-helpers.d.ts +5 -0
- package/esm/cli/mcp/remote-file-tool-helpers.d.ts.map +1 -0
- package/esm/cli/mcp/remote-file-tool-helpers.js +22 -0
- package/esm/cli/mcp/remote-file-tools.d.ts.map +1 -1
- package/esm/cli/mcp/remote-file-tools.js +1 -22
- package/esm/cli/router.d.ts.map +1 -1
- package/esm/cli/router.js +2 -0
- package/esm/cli/templates/integration-loader-helpers.d.ts +8 -0
- package/esm/cli/templates/integration-loader-helpers.d.ts.map +1 -0
- package/esm/cli/templates/integration-loader-helpers.js +29 -0
- package/esm/cli/templates/integration-loader.d.ts.map +1 -1
- package/esm/cli/templates/integration-loader.js +5 -21
- package/esm/cli/templates/manifest.d.ts +1 -0
- package/esm/cli/templates/manifest.js +2 -1
- package/esm/deno.d.ts +3 -0
- package/esm/deno.js +5 -2
- package/esm/src/agent/runtime/index.d.ts.map +1 -1
- package/esm/src/agent/runtime/index.js +48 -90
- package/esm/src/chat/ag-ui-helpers.d.ts +17 -0
- package/esm/src/chat/ag-ui-helpers.d.ts.map +1 -0
- package/esm/src/chat/ag-ui-helpers.js +111 -0
- package/esm/src/chat/ag-ui.d.ts.map +1 -1
- package/esm/src/chat/ag-ui.js +1 -111
- package/esm/src/config/schemas/config.schema.d.ts +1 -0
- package/esm/src/config/schemas/config.schema.d.ts.map +1 -1
- package/esm/src/config/schemas/config.schema.js +11 -0
- package/esm/src/config/schemas/index.d.ts +11 -1
- package/esm/src/config/schemas/index.d.ts.map +1 -1
- package/esm/src/errors/error-registry-helpers.d.ts +6 -0
- package/esm/src/errors/error-registry-helpers.d.ts.map +1 -0
- package/esm/src/errors/error-registry-helpers.js +9 -0
- package/esm/src/errors/error-registry.d.ts.map +1 -1
- package/esm/src/errors/error-registry.js +4 -3
- package/esm/src/extensions/capabilities.d.ts +20 -0
- package/esm/src/extensions/capabilities.d.ts.map +1 -0
- package/esm/src/extensions/capabilities.js +77 -0
- package/esm/src/extensions/contracts.d.ts +10 -0
- package/esm/src/extensions/contracts.d.ts.map +1 -0
- package/esm/src/extensions/contracts.js +28 -0
- package/esm/src/extensions/discovery.d.ts +48 -0
- package/esm/src/extensions/discovery.d.ts.map +1 -0
- package/esm/src/extensions/discovery.js +179 -0
- package/esm/src/extensions/errors.d.ts +10 -0
- package/esm/src/extensions/errors.d.ts.map +1 -0
- package/esm/src/extensions/errors.js +34 -0
- package/esm/src/extensions/factory-loader.d.ts +29 -0
- package/esm/src/extensions/factory-loader.d.ts.map +1 -0
- package/esm/src/extensions/factory-loader.js +63 -0
- package/esm/src/extensions/index.d.ts +37 -0
- package/esm/src/extensions/index.d.ts.map +1 -0
- package/esm/src/extensions/index.js +41 -0
- package/esm/src/extensions/interfaces/ai-model-provider.d.ts +94 -0
- package/esm/src/extensions/interfaces/ai-model-provider.d.ts.map +1 -0
- package/esm/src/extensions/interfaces/ai-model-provider.js +8 -0
- package/esm/src/extensions/interfaces/auth-provider.d.ts +49 -0
- package/esm/src/extensions/interfaces/auth-provider.d.ts.map +1 -0
- package/esm/src/extensions/interfaces/auth-provider.js +8 -0
- package/esm/src/extensions/interfaces/bundler.d.ts +118 -0
- package/esm/src/extensions/interfaces/bundler.d.ts.map +1 -0
- package/esm/src/extensions/interfaces/bundler.js +8 -0
- package/esm/src/extensions/interfaces/cache-store.d.ts +27 -0
- package/esm/src/extensions/interfaces/cache-store.d.ts.map +1 -0
- package/esm/src/extensions/interfaces/cache-store.js +8 -0
- package/esm/src/extensions/interfaces/code-parser.d.ts +76 -0
- package/esm/src/extensions/interfaces/code-parser.d.ts.map +1 -0
- package/esm/src/extensions/interfaces/code-parser.js +8 -0
- package/esm/src/extensions/interfaces/content-transformer.d.ts +40 -0
- package/esm/src/extensions/interfaces/content-transformer.d.ts.map +1 -0
- package/esm/src/extensions/interfaces/content-transformer.js +8 -0
- package/esm/src/extensions/interfaces/css-processor.d.ts +38 -0
- package/esm/src/extensions/interfaces/css-processor.d.ts.map +1 -0
- package/esm/src/extensions/interfaces/css-processor.js +8 -0
- package/esm/src/extensions/interfaces/database-client.d.ts +31 -0
- package/esm/src/extensions/interfaces/database-client.d.ts.map +1 -0
- package/esm/src/extensions/interfaces/database-client.js +8 -0
- package/esm/src/extensions/interfaces/embedding-provider.d.ts +37 -0
- package/esm/src/extensions/interfaces/embedding-provider.d.ts.map +1 -0
- package/esm/src/extensions/interfaces/embedding-provider.js +8 -0
- package/esm/src/extensions/interfaces/index.d.ts +21 -0
- package/esm/src/extensions/interfaces/index.d.ts.map +1 -0
- package/esm/src/extensions/interfaces/index.js +9 -0
- package/esm/src/extensions/interfaces/node-compat.d.ts +25 -0
- package/esm/src/extensions/interfaces/node-compat.d.ts.map +1 -0
- package/esm/src/extensions/interfaces/node-compat.js +8 -0
- package/esm/src/extensions/interfaces/schema-validator.d.ts +46 -0
- package/esm/src/extensions/interfaces/schema-validator.d.ts.map +1 -0
- package/esm/src/extensions/interfaces/schema-validator.js +8 -0
- package/esm/src/extensions/interfaces/tracing-exporter.d.ts +44 -0
- package/esm/src/extensions/interfaces/tracing-exporter.d.ts.map +1 -0
- package/esm/src/extensions/interfaces/tracing-exporter.js +8 -0
- package/esm/src/extensions/loader.d.ts +33 -0
- package/esm/src/extensions/loader.d.ts.map +1 -0
- package/esm/src/extensions/loader.js +209 -0
- package/esm/src/extensions/orchestrate.d.ts +54 -0
- package/esm/src/extensions/orchestrate.d.ts.map +1 -0
- package/esm/src/extensions/orchestrate.js +116 -0
- package/esm/src/extensions/recommendations.d.ts +7 -0
- package/esm/src/extensions/recommendations.d.ts.map +1 -0
- package/esm/src/extensions/recommendations.js +22 -0
- package/esm/src/extensions/types.d.ts +47 -0
- package/esm/src/extensions/types.d.ts.map +1 -0
- package/esm/src/extensions/types.js +6 -0
- package/esm/src/extensions/validation.d.ts +44 -0
- package/esm/src/extensions/validation.d.ts.map +1 -0
- package/esm/src/extensions/validation.js +115 -0
- package/esm/src/html/styles-builder/plugin-loader.d.ts.map +1 -1
- package/esm/src/html/styles-builder/plugin-loader.js +23 -0
- package/esm/src/html/styles-builder/tailwind-plugin-allowlist.d.ts +29 -0
- package/esm/src/html/styles-builder/tailwind-plugin-allowlist.d.ts.map +1 -0
- package/esm/src/html/styles-builder/tailwind-plugin-allowlist.js +48 -0
- package/esm/src/modules/react-loader/ssr-module-loader/loader-helpers.d.ts +15 -0
- package/esm/src/modules/react-loader/ssr-module-loader/loader-helpers.d.ts.map +1 -0
- package/esm/src/modules/react-loader/ssr-module-loader/loader-helpers.js +22 -0
- package/esm/src/modules/react-loader/ssr-module-loader/loader.d.ts +0 -2
- package/esm/src/modules/react-loader/ssr-module-loader/loader.d.ts.map +1 -1
- package/esm/src/modules/react-loader/ssr-module-loader/loader.js +4 -24
- package/esm/src/platform/adapters/fs/veryfront/adapter-helpers.d.ts +19 -0
- package/esm/src/platform/adapters/fs/veryfront/adapter-helpers.d.ts.map +1 -0
- package/esm/src/platform/adapters/fs/veryfront/adapter-helpers.js +26 -0
- package/esm/src/platform/adapters/fs/veryfront/adapter.d.ts.map +1 -1
- package/esm/src/platform/adapters/fs/veryfront/adapter.js +4 -20
- package/esm/src/platform/adapters/fs/veryfront/read-operations-helpers.d.ts +1 -0
- package/esm/src/platform/adapters/fs/veryfront/read-operations-helpers.d.ts.map +1 -1
- package/esm/src/platform/adapters/fs/veryfront/read-operations-helpers.js +3 -0
- package/esm/src/platform/adapters/fs/veryfront/read-operations.d.ts.map +1 -1
- package/esm/src/platform/adapters/fs/veryfront/read-operations.js +4 -7
- package/esm/src/platform/adapters/fs/veryfront/websocket-manager-helpers.d.ts +28 -0
- package/esm/src/platform/adapters/fs/veryfront/websocket-manager-helpers.d.ts.map +1 -0
- package/esm/src/platform/adapters/fs/veryfront/websocket-manager-helpers.js +41 -0
- package/esm/src/platform/adapters/fs/veryfront/websocket-manager.d.ts +1 -4
- package/esm/src/platform/adapters/fs/veryfront/websocket-manager.d.ts.map +1 -1
- package/esm/src/platform/adapters/fs/veryfront/websocket-manager.js +7 -40
- package/esm/src/platform/compat/process/command.d.ts +31 -0
- package/esm/src/platform/compat/process/command.d.ts.map +1 -0
- package/esm/src/platform/compat/process/command.js +193 -0
- package/esm/src/platform/compat/process/env.d.ts +31 -0
- package/esm/src/platform/compat/process/env.d.ts.map +1 -0
- package/esm/src/platform/compat/process/env.js +175 -0
- package/esm/src/platform/compat/process/lifecycle.d.ts +98 -0
- package/esm/src/platform/compat/process/lifecycle.d.ts.map +1 -0
- package/esm/src/platform/compat/process/lifecycle.js +305 -0
- package/esm/src/platform/compat/process/runtime-process.d.ts +10 -0
- package/esm/src/platform/compat/process/runtime-process.d.ts.map +1 -0
- package/esm/src/platform/compat/process/runtime-process.js +24 -0
- package/esm/src/platform/compat/process.d.ts +4 -165
- package/esm/src/platform/compat/process.d.ts.map +1 -1
- package/esm/src/platform/compat/process.js +4 -682
- package/esm/src/platform/index.d.ts +1 -1
- package/esm/src/platform/index.d.ts.map +1 -1
- package/esm/src/provider/runtime-loader/provider-endpoints.d.ts +8 -0
- package/esm/src/provider/runtime-loader/provider-endpoints.d.ts.map +1 -0
- package/esm/src/provider/runtime-loader/provider-endpoints.js +27 -0
- package/esm/src/provider/runtime-loader/provider-request-init.d.ts +32 -0
- package/esm/src/provider/runtime-loader/provider-request-init.d.ts.map +1 -0
- package/esm/src/provider/runtime-loader/provider-request-init.js +67 -0
- package/esm/src/provider/runtime-loader/tool-input-status.d.ts +17 -0
- package/esm/src/provider/runtime-loader/tool-input-status.d.ts.map +1 -0
- package/esm/src/provider/runtime-loader/tool-input-status.js +155 -0
- package/esm/src/provider/runtime-loader.d.ts +2 -3
- package/esm/src/provider/runtime-loader.d.ts.map +1 -1
- package/esm/src/provider/runtime-loader.js +92 -291
- package/esm/src/proxy/handler.d.ts.map +1 -1
- package/esm/src/proxy/handler.js +14 -0
- package/esm/src/rendering/orchestrator/pipeline-helpers.d.ts +8 -0
- package/esm/src/rendering/orchestrator/pipeline-helpers.d.ts.map +1 -0
- package/esm/src/rendering/orchestrator/pipeline-helpers.js +20 -0
- package/esm/src/rendering/orchestrator/pipeline.d.ts +0 -3
- package/esm/src/rendering/orchestrator/pipeline.d.ts.map +1 -1
- package/esm/src/rendering/orchestrator/pipeline.js +4 -22
- package/esm/src/routing/api/module-loader/loader-helpers.d.ts +10 -0
- package/esm/src/routing/api/module-loader/loader-helpers.d.ts.map +1 -0
- package/esm/src/routing/api/module-loader/loader-helpers.js +62 -0
- package/esm/src/routing/api/module-loader/loader.d.ts +1 -1
- package/esm/src/routing/api/module-loader/loader.d.ts.map +1 -1
- package/esm/src/routing/api/module-loader/loader.js +2 -60
- package/esm/src/server/bootstrap.d.ts +22 -2
- package/esm/src/server/bootstrap.d.ts.map +1 -1
- package/esm/src/server/bootstrap.js +67 -5
- package/esm/src/server/dev-ui/manifest.d.ts +2 -0
- package/esm/src/server/dev-ui/manifest.js +3 -1
- package/esm/src/server/handlers/request/api/project-discovery.d.ts.map +1 -1
- package/esm/src/server/handlers/request/api/project-discovery.js +14 -8
- package/esm/src/server/production-server.js +1 -1
- package/esm/src/server/services/rsc/endpoints/rsc-bundles.generated.d.ts.map +1 -1
- package/esm/src/server/services/rsc/endpoints/rsc-bundles.generated.js +2 -2
- package/esm/src/server/utils/domain-parser.d.ts.map +1 -1
- package/esm/src/server/utils/domain-parser.js +4 -0
- package/esm/src/studio/bridge/bridge-bundle.generated.d.ts.map +1 -1
- package/esm/src/studio/bridge/bridge-bundle.generated.js +1 -1
- package/esm/src/tool/index.d.ts +1 -1
- package/esm/src/tool/index.d.ts.map +1 -1
- package/esm/src/tool/types.d.ts +20 -0
- package/esm/src/tool/types.d.ts.map +1 -1
- package/esm/src/utils/version-constant.d.ts +1 -1
- package/esm/src/utils/version-constant.js +1 -1
- package/package.json +7 -1
- package/src/cli/commands/extension/command-help.ts +18 -0
- package/src/cli/commands/extension/handler.ts +41 -0
- package/src/cli/commands/extension/init-command.ts +140 -0
- package/src/cli/commands/extension/validate-command.ts +78 -0
- package/src/cli/commands/generate/integration-generator-helpers.ts +185 -0
- package/src/cli/commands/generate/integration-generator.ts +12 -168
- package/src/cli/commands/knowledge/command-helpers.ts +295 -0
- package/src/cli/commands/knowledge/command.ts +34 -261
- package/src/cli/help/command-definitions.ts +2 -0
- package/src/cli/mcp/remote-file-tool-helpers.ts +27 -0
- package/src/cli/mcp/remote-file-tools.ts +6 -28
- package/src/cli/router.ts +2 -0
- package/src/cli/templates/integration-loader-helpers.ts +49 -0
- package/src/cli/templates/integration-loader.ts +10 -28
- package/src/cli/templates/manifest.js +2 -1
- package/src/deno.js +5 -2
- package/src/src/agent/runtime/index.ts +77 -94
- package/src/src/chat/ag-ui-helpers.ts +139 -0
- package/src/src/chat/ag-ui.ts +11 -139
- package/src/src/config/schemas/config.schema.ts +11 -0
- package/src/src/config/schemas/index.ts +15 -1
- package/src/src/errors/error-registry-helpers.ts +23 -0
- package/src/src/errors/error-registry.ts +8 -3
- package/src/src/extensions/capabilities.ts +97 -0
- package/src/src/extensions/contracts.ts +36 -0
- package/src/src/extensions/discovery.ts +221 -0
- package/src/src/extensions/errors.ts +39 -0
- package/src/src/extensions/factory-loader.ts +76 -0
- package/src/src/extensions/index.ts +79 -0
- package/src/src/extensions/interfaces/ai-model-provider.ts +100 -0
- package/src/src/extensions/interfaces/auth-provider.ts +52 -0
- package/src/src/extensions/interfaces/bundler.ts +116 -0
- package/src/src/extensions/interfaces/cache-store.ts +27 -0
- package/src/src/extensions/interfaces/code-parser.ts +84 -0
- package/src/src/extensions/interfaces/content-transformer.ts +38 -0
- package/src/src/extensions/interfaces/css-processor.ts +40 -0
- package/src/src/extensions/interfaces/database-client.ts +35 -0
- package/src/src/extensions/interfaces/embedding-provider.ts +39 -0
- package/src/src/extensions/interfaces/index.ts +81 -0
- package/src/src/extensions/interfaces/node-compat.ts +25 -0
- package/src/src/extensions/interfaces/schema-validator.ts +51 -0
- package/src/src/extensions/interfaces/tracing-exporter.ts +42 -0
- package/src/src/extensions/loader.ts +245 -0
- package/src/src/extensions/orchestrate.ts +184 -0
- package/src/src/extensions/recommendations.ts +24 -0
- package/src/src/extensions/types.ts +57 -0
- package/src/src/extensions/validation.ts +147 -0
- package/src/src/html/styles-builder/plugin-loader.ts +32 -0
- package/src/src/html/styles-builder/tailwind-plugin-allowlist.ts +51 -0
- package/src/src/modules/react-loader/ssr-module-loader/loader-helpers.ts +37 -0
- package/src/src/modules/react-loader/ssr-module-loader/loader.ts +8 -39
- package/src/src/platform/adapters/fs/veryfront/adapter-helpers.ts +43 -0
- package/src/src/platform/adapters/fs/veryfront/adapter.ts +8 -22
- package/src/src/platform/adapters/fs/veryfront/read-operations-helpers.ts +4 -0
- package/src/src/platform/adapters/fs/veryfront/read-operations.ts +4 -7
- package/src/src/platform/adapters/fs/veryfront/websocket-manager-helpers.ts +73 -0
- package/src/src/platform/adapters/fs/veryfront/websocket-manager.ts +29 -44
- package/src/src/platform/compat/process/command.ts +297 -0
- package/src/src/platform/compat/process/env.ts +227 -0
- package/src/src/platform/compat/process/lifecycle.ts +330 -0
- package/src/src/platform/compat/process/runtime-process.ts +27 -0
- package/src/src/platform/compat/process.ts +37 -870
- package/src/src/platform/index.ts +1 -0
- package/src/src/provider/runtime-loader/provider-endpoints.ts +50 -0
- package/src/src/provider/runtime-loader/provider-request-init.ts +101 -0
- package/src/src/provider/runtime-loader/tool-input-status.ts +210 -0
- package/src/src/provider/runtime-loader.ts +113 -368
- package/src/src/proxy/handler.ts +16 -0
- package/src/src/rendering/orchestrator/pipeline-helpers.ts +35 -0
- package/src/src/rendering/orchestrator/pipeline.ts +8 -35
- package/src/src/routing/api/module-loader/loader-helpers.ts +68 -0
- package/src/src/routing/api/module-loader/loader.ts +8 -65
- package/src/src/server/bootstrap.ts +88 -7
- package/src/src/server/dev-ui/manifest.js +3 -1
- package/src/src/server/handlers/request/api/project-discovery.ts +19 -8
- package/src/src/server/production-server.ts +1 -1
- package/src/src/server/services/rsc/endpoints/rsc-bundles.generated.ts +2 -2
- package/src/src/server/utils/domain-parser.ts +4 -0
- package/src/src/studio/bridge/bridge-bundle.generated.ts +1 -1
- package/src/src/tool/index.ts +1 -0
- package/src/src/tool/types.ts +21 -0
- package/src/src/utils/version-constant.ts +1 -1
|
@@ -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
|
+
}
|