@octomil/browser 1.0.0 → 1.1.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.
- package/README.md +168 -36
- package/dist/_generated/accelerator_type.d.ts +8 -0
- package/dist/_generated/accelerator_type.d.ts.map +1 -0
- package/dist/_generated/accelerator_type.js +10 -0
- package/dist/_generated/accelerator_type.js.map +1 -0
- package/dist/_generated/activation_policy.d.ts +7 -0
- package/dist/_generated/activation_policy.d.ts.map +1 -0
- package/dist/_generated/activation_policy.js +9 -0
- package/dist/_generated/activation_policy.js.map +1 -0
- package/dist/_generated/adapter_activation_state.d.ts +13 -0
- package/dist/_generated/adapter_activation_state.d.ts.map +1 -0
- package/dist/_generated/adapter_activation_state.js +15 -0
- package/dist/_generated/adapter_activation_state.js.map +1 -0
- package/dist/_generated/artifact_format.d.ts +11 -0
- package/dist/_generated/artifact_format.d.ts.map +1 -0
- package/dist/_generated/artifact_format.js +13 -0
- package/dist/_generated/artifact_format.js.map +1 -0
- package/dist/_generated/artifact_resource_kind.d.ts +16 -0
- package/dist/_generated/artifact_resource_kind.d.ts.map +1 -0
- package/dist/_generated/artifact_resource_kind.js +18 -0
- package/dist/_generated/artifact_resource_kind.js.map +1 -0
- package/dist/_generated/artifact_status.d.ts +21 -0
- package/dist/_generated/artifact_status.d.ts.map +1 -0
- package/dist/_generated/artifact_status.js +23 -0
- package/dist/_generated/artifact_status.js.map +1 -0
- package/dist/_generated/auth_method.d.ts +10 -0
- package/dist/_generated/auth_method.d.ts.map +1 -0
- package/dist/_generated/auth_method.js +12 -0
- package/dist/_generated/auth_method.js.map +1 -0
- package/dist/_generated/auth_type.d.ts +7 -0
- package/dist/_generated/auth_type.d.ts.map +1 -0
- package/dist/_generated/auth_type.js +9 -0
- package/dist/_generated/auth_type.js.map +1 -0
- package/dist/_generated/billing_interval.d.ts +5 -0
- package/dist/_generated/billing_interval.d.ts.map +1 -0
- package/dist/_generated/billing_interval.js +7 -0
- package/dist/_generated/billing_interval.js.map +1 -0
- package/dist/_generated/billing_plan.d.ts +47 -0
- package/dist/_generated/billing_plan.d.ts.map +1 -0
- package/dist/_generated/billing_plan.js +41 -0
- package/dist/_generated/billing_plan.js.map +1 -0
- package/dist/_generated/cloud_provider.d.ts +12 -0
- package/dist/_generated/cloud_provider.d.ts.map +1 -0
- package/dist/_generated/cloud_provider.js +14 -0
- package/dist/_generated/cloud_provider.js.map +1 -0
- package/dist/_generated/compatibility_level.d.ts +7 -0
- package/dist/_generated/compatibility_level.d.ts.map +1 -0
- package/dist/_generated/compatibility_level.js +9 -0
- package/dist/_generated/compatibility_level.js.map +1 -0
- package/dist/_generated/content_part_type.d.ts +7 -0
- package/dist/_generated/content_part_type.d.ts.map +1 -0
- package/dist/_generated/content_part_type.js +9 -0
- package/dist/_generated/content_part_type.js.map +1 -0
- package/dist/_generated/delivery_mode.d.ts +6 -0
- package/dist/_generated/delivery_mode.d.ts.map +1 -0
- package/dist/_generated/delivery_mode.js +8 -0
- package/dist/_generated/delivery_mode.js.map +1 -0
- package/dist/_generated/device_class.d.ts +7 -0
- package/dist/_generated/device_class.d.ts.map +1 -0
- package/dist/_generated/device_class.js +9 -0
- package/dist/_generated/device_class.js.map +1 -0
- package/dist/_generated/device_connectivity_status.d.ts +8 -0
- package/dist/_generated/device_connectivity_status.d.ts.map +1 -0
- package/dist/_generated/device_connectivity_status.js +10 -0
- package/dist/_generated/device_connectivity_status.js.map +1 -0
- package/dist/_generated/device_model_status.d.ts +14 -0
- package/dist/_generated/device_model_status.d.ts.map +1 -0
- package/dist/_generated/device_model_status.js +16 -0
- package/dist/_generated/device_model_status.js.map +1 -0
- package/dist/_generated/device_platform.d.ts +9 -0
- package/dist/_generated/device_platform.d.ts.map +1 -0
- package/dist/_generated/device_platform.js +11 -0
- package/dist/_generated/device_platform.js.map +1 -0
- package/dist/_generated/email_provider.d.ts +8 -0
- package/dist/_generated/email_provider.d.ts.map +1 -0
- package/dist/_generated/email_provider.js +10 -0
- package/dist/_generated/email_provider.js.map +1 -0
- package/dist/_generated/email_template.d.ts +11 -0
- package/dist/_generated/email_template.d.ts.map +1 -0
- package/dist/_generated/email_template.js +13 -0
- package/dist/_generated/email_template.js.map +1 -0
- package/dist/_generated/error_code.d.ts +52 -0
- package/dist/_generated/error_code.d.ts.map +1 -0
- package/dist/_generated/error_code.js +85 -0
- package/dist/_generated/error_code.js.map +1 -0
- package/dist/_generated/federated_participation_state.d.ts +25 -0
- package/dist/_generated/federated_participation_state.d.ts.map +1 -0
- package/dist/_generated/federated_participation_state.js +27 -0
- package/dist/_generated/federated_participation_state.js.map +1 -0
- package/dist/_generated/federated_round_state.d.ts +17 -0
- package/dist/_generated/federated_round_state.d.ts.map +1 -0
- package/dist/_generated/federated_round_state.js +19 -0
- package/dist/_generated/federated_round_state.js.map +1 -0
- package/dist/_generated/finish_reason.d.ts +7 -0
- package/dist/_generated/finish_reason.d.ts.map +1 -0
- package/dist/_generated/finish_reason.js +9 -0
- package/dist/_generated/finish_reason.js.map +1 -0
- package/dist/_generated/index.d.ts +17 -0
- package/dist/_generated/index.d.ts.map +1 -0
- package/dist/_generated/index.js +17 -0
- package/dist/_generated/index.js.map +1 -0
- package/dist/_generated/input_modality.d.ts +7 -0
- package/dist/_generated/input_modality.d.ts.map +1 -0
- package/dist/_generated/input_modality.js +9 -0
- package/dist/_generated/input_modality.js.map +1 -0
- package/dist/_generated/message_role.d.ts +7 -0
- package/dist/_generated/message_role.d.ts.map +1 -0
- package/dist/_generated/message_role.js +9 -0
- package/dist/_generated/message_role.js.map +1 -0
- package/dist/_generated/metric_views.d.ts +18 -0
- package/dist/_generated/metric_views.d.ts.map +1 -0
- package/dist/_generated/metric_views.js +22 -0
- package/dist/_generated/metric_views.js.map +1 -0
- package/dist/_generated/modality.d.ts +7 -0
- package/dist/_generated/modality.d.ts.map +1 -0
- package/dist/_generated/modality.js +9 -0
- package/dist/_generated/modality.js.map +1 -0
- package/dist/_generated/model_capability.d.ts +10 -0
- package/dist/_generated/model_capability.d.ts.map +1 -0
- package/dist/_generated/model_capability.js +12 -0
- package/dist/_generated/model_capability.js.map +1 -0
- package/dist/_generated/model_feature.d.ts +7 -0
- package/dist/_generated/model_feature.d.ts.map +1 -0
- package/dist/_generated/model_feature.js +9 -0
- package/dist/_generated/model_feature.js.map +1 -0
- package/dist/_generated/model_lifecycle.d.ts +7 -0
- package/dist/_generated/model_lifecycle.d.ts.map +1 -0
- package/dist/_generated/model_lifecycle.js +9 -0
- package/dist/_generated/model_lifecycle.js.map +1 -0
- package/dist/_generated/model_source_format.d.ts +9 -0
- package/dist/_generated/model_source_format.d.ts.map +1 -0
- package/dist/_generated/model_source_format.js +11 -0
- package/dist/_generated/model_source_format.js.map +1 -0
- package/dist/_generated/model_status.d.ts +7 -0
- package/dist/_generated/model_status.d.ts.map +1 -0
- package/dist/_generated/model_status.js +9 -0
- package/dist/_generated/model_status.js.map +1 -0
- package/dist/_generated/network_type.d.ts +7 -0
- package/dist/_generated/network_type.d.ts.map +1 -0
- package/dist/_generated/network_type.js +9 -0
- package/dist/_generated/network_type.js.map +1 -0
- package/dist/_generated/oauth_provider.d.ts +8 -0
- package/dist/_generated/oauth_provider.d.ts.map +1 -0
- package/dist/_generated/oauth_provider.js +10 -0
- package/dist/_generated/oauth_provider.js.map +1 -0
- package/dist/_generated/operation_state.d.ts +9 -0
- package/dist/_generated/operation_state.d.ts.map +1 -0
- package/dist/_generated/operation_state.js +11 -0
- package/dist/_generated/operation_state.js.map +1 -0
- package/dist/_generated/otlp_resource_attributes.d.ts +16 -0
- package/dist/_generated/otlp_resource_attributes.d.ts.map +1 -0
- package/dist/_generated/otlp_resource_attributes.js +17 -0
- package/dist/_generated/otlp_resource_attributes.js.map +1 -0
- package/dist/_generated/principal_type.d.ts +7 -0
- package/dist/_generated/principal_type.d.ts.map +1 -0
- package/dist/_generated/principal_type.js +9 -0
- package/dist/_generated/principal_type.js.map +1 -0
- package/dist/_generated/query_routing_tier.d.ts +6 -0
- package/dist/_generated/query_routing_tier.d.ts.map +1 -0
- package/dist/_generated/query_routing_tier.js +8 -0
- package/dist/_generated/query_routing_tier.js.map +1 -0
- package/dist/_generated/routing_policy.d.ts +7 -0
- package/dist/_generated/routing_policy.d.ts.map +1 -0
- package/dist/_generated/routing_policy.js +9 -0
- package/dist/_generated/routing_policy.js.map +1 -0
- package/dist/_generated/runtime_executor.d.ts +18 -0
- package/dist/_generated/runtime_executor.d.ts.map +1 -0
- package/dist/_generated/runtime_executor.js +20 -0
- package/dist/_generated/runtime_executor.js.map +1 -0
- package/dist/_generated/scope.d.ts +16 -0
- package/dist/_generated/scope.d.ts.map +1 -0
- package/dist/_generated/scope.js +18 -0
- package/dist/_generated/scope.js.map +1 -0
- package/dist/_generated/span_attributes.d.ts +25 -0
- package/dist/_generated/span_attributes.d.ts.map +1 -0
- package/dist/_generated/span_attributes.js +34 -0
- package/dist/_generated/span_attributes.js.map +1 -0
- package/dist/_generated/span_event_attributes.d.ts +23 -0
- package/dist/_generated/span_event_attributes.d.ts.map +1 -0
- package/dist/_generated/span_event_attributes.js +36 -0
- package/dist/_generated/span_event_attributes.js.map +1 -0
- package/dist/_generated/span_event_names.d.ts +42 -0
- package/dist/_generated/span_event_names.d.ts.map +1 -0
- package/dist/_generated/span_event_names.js +82 -0
- package/dist/_generated/span_event_names.js.map +1 -0
- package/dist/_generated/span_names.d.ts +17 -0
- package/dist/_generated/span_names.d.ts.map +1 -0
- package/dist/_generated/span_names.js +18 -0
- package/dist/_generated/span_names.js.map +1 -0
- package/dist/_generated/span_status_mapping.d.ts +8 -0
- package/dist/_generated/span_status_mapping.d.ts.map +1 -0
- package/dist/_generated/span_status_mapping.js +17 -0
- package/dist/_generated/span_status_mapping.js.map +1 -0
- package/dist/_generated/subscription_status.d.ts +11 -0
- package/dist/_generated/subscription_status.d.ts.map +1 -0
- package/dist/_generated/subscription_status.js +13 -0
- package/dist/_generated/subscription_status.js.map +1 -0
- package/dist/_generated/support_tier.d.ts +7 -0
- package/dist/_generated/support_tier.d.ts.map +1 -0
- package/dist/_generated/support_tier.js +9 -0
- package/dist/_generated/support_tier.js.map +1 -0
- package/dist/_generated/telemetry_class.d.ts +6 -0
- package/dist/_generated/telemetry_class.d.ts.map +1 -0
- package/dist/_generated/telemetry_class.js +8 -0
- package/dist/_generated/telemetry_class.js.map +1 -0
- package/dist/_generated/telemetry_events.d.ts +10 -0
- package/dist/_generated/telemetry_events.d.ts.map +1 -0
- package/dist/_generated/telemetry_events.js +18 -0
- package/dist/_generated/telemetry_events.js.map +1 -0
- package/dist/_generated/thermal_state.d.ts +7 -0
- package/dist/_generated/thermal_state.d.ts.map +1 -0
- package/dist/_generated/thermal_state.js +9 -0
- package/dist/_generated/thermal_state.js.map +1 -0
- package/dist/_generated/tool_call_tier.d.ts +7 -0
- package/dist/_generated/tool_call_tier.d.ts.map +1 -0
- package/dist/_generated/tool_call_tier.js +9 -0
- package/dist/_generated/tool_call_tier.js.map +1 -0
- package/dist/_generated/training_job_state.d.ts +23 -0
- package/dist/_generated/training_job_state.d.ts.map +1 -0
- package/dist/_generated/training_job_state.js +25 -0
- package/dist/_generated/training_job_state.js.map +1 -0
- package/dist/_generated/work_class.d.ts +6 -0
- package/dist/_generated/work_class.d.ts.map +1 -0
- package/dist/_generated/work_class.js +8 -0
- package/dist/_generated/work_class.js.map +1 -0
- package/dist/artifacts.d.ts +16 -0
- package/dist/artifacts.d.ts.map +1 -0
- package/dist/artifacts.js +16 -0
- package/dist/artifacts.js.map +1 -0
- package/dist/audio/audio-transcriptions.d.ts +31 -0
- package/dist/audio/audio-transcriptions.d.ts.map +1 -0
- package/dist/audio/audio-transcriptions.js +73 -0
- package/dist/audio/audio-transcriptions.js.map +1 -0
- package/dist/audio/index.d.ts +5 -0
- package/dist/audio/index.d.ts.map +1 -0
- package/dist/audio/index.js +3 -0
- package/dist/audio/index.js.map +1 -0
- package/dist/audio/octomil-audio.d.ts +9 -0
- package/dist/audio/octomil-audio.d.ts.map +1 -0
- package/dist/audio/octomil-audio.js +11 -0
- package/dist/audio/octomil-audio.js.map +1 -0
- package/dist/audio/transcription-types.d.ts +17 -0
- package/dist/audio/transcription-types.d.ts.map +1 -0
- package/dist/audio/transcription-types.js +6 -0
- package/dist/audio/transcription-types.js.map +1 -0
- package/dist/cache.js +1 -1
- package/dist/cache.js.map +1 -1
- package/dist/capabilities.d.ts +26 -0
- package/dist/capabilities.d.ts.map +1 -0
- package/dist/capabilities.js +68 -0
- package/dist/capabilities.js.map +1 -0
- package/dist/chat.d.ts +109 -0
- package/dist/chat.d.ts.map +1 -0
- package/dist/chat.js +258 -0
- package/dist/chat.js.map +1 -0
- package/dist/configure.d.ts +18 -0
- package/dist/configure.d.ts.map +1 -0
- package/dist/configure.js +136 -0
- package/dist/configure.js.map +1 -0
- package/dist/control.d.ts +171 -0
- package/dist/control.d.ts.map +1 -0
- package/dist/control.js +317 -0
- package/dist/control.js.map +1 -0
- package/dist/device-auth.d.ts +1 -1
- package/dist/device-auth.d.ts.map +1 -1
- package/dist/device-auth.js +7 -7
- package/dist/device-auth.js.map +1 -1
- package/dist/device-context.d.ts +48 -0
- package/dist/device-context.d.ts.map +1 -0
- package/dist/device-context.js +92 -0
- package/dist/device-context.js.map +1 -0
- package/dist/devices.d.ts +17 -0
- package/dist/devices.d.ts.map +1 -0
- package/dist/devices.js +16 -0
- package/dist/devices.js.map +1 -0
- package/dist/embeddings.d.ts +19 -0
- package/dist/embeddings.d.ts.map +1 -0
- package/dist/embeddings.js +54 -0
- package/dist/embeddings.js.map +1 -0
- package/dist/experiments.d.ts +4 -3
- package/dist/experiments.d.ts.map +1 -1
- package/dist/experiments.js +5 -10
- package/dist/experiments.js.map +1 -1
- package/dist/federated-analytics.d.ts +65 -0
- package/dist/federated-analytics.d.ts.map +1 -0
- package/dist/federated-analytics.js +128 -0
- package/dist/federated-analytics.js.map +1 -0
- package/dist/federated.d.ts +10 -3
- package/dist/federated.d.ts.map +1 -1
- package/dist/federated.js +68 -15
- package/dist/federated.js.map +1 -1
- package/dist/gradient-cache.d.ts +21 -0
- package/dist/gradient-cache.d.ts.map +1 -0
- package/dist/gradient-cache.js +70 -0
- package/dist/gradient-cache.js.map +1 -0
- package/dist/index.cjs +43601 -709
- package/dist/index.cjs.map +4 -4
- package/dist/index.d.ts +64 -13
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +55 -13
- package/dist/index.js.map +1 -1
- package/dist/install-id.d.ts +32 -0
- package/dist/install-id.d.ts.map +1 -0
- package/dist/install-id.js +61 -0
- package/dist/install-id.js.map +1 -0
- package/dist/{model-loader.d.ts → model-manager.d.ts} +4 -4
- package/dist/model-manager.d.ts.map +1 -0
- package/dist/{model-loader.js → model-manager.js} +18 -14
- package/dist/model-manager.js.map +1 -0
- package/dist/models.d.ts +74 -0
- package/dist/models.d.ts.map +1 -0
- package/dist/models.js +113 -0
- package/dist/models.js.map +1 -0
- package/dist/monitoring-config.d.ts +8 -0
- package/dist/monitoring-config.d.ts.map +1 -0
- package/dist/monitoring-config.js +5 -0
- package/dist/monitoring-config.js.map +1 -0
- package/dist/monitoring.d.ts +10 -0
- package/dist/monitoring.d.ts.map +1 -0
- package/dist/monitoring.js +19 -0
- package/dist/monitoring.js.map +1 -0
- package/dist/octomil.d.ts +151 -16
- package/dist/octomil.d.ts.map +1 -1
- package/dist/octomil.js +456 -125
- package/dist/octomil.js.map +1 -1
- package/dist/octomil.min.js +47 -2844
- package/dist/octomil.min.js.map +4 -4
- package/dist/responses-runtime.d.ts +13 -0
- package/dist/responses-runtime.d.ts.map +1 -0
- package/dist/responses-runtime.js +2 -0
- package/dist/responses-runtime.js.map +1 -0
- package/dist/responses-tools.d.ts +18 -0
- package/dist/responses-tools.d.ts.map +1 -0
- package/dist/responses-tools.js +71 -0
- package/dist/responses-tools.js.map +1 -0
- package/dist/responses.d.ts +142 -0
- package/dist/responses.d.ts.map +1 -0
- package/dist/responses.js +549 -0
- package/dist/responses.js.map +1 -0
- package/dist/routing.d.ts +49 -0
- package/dist/routing.d.ts.map +1 -0
- package/dist/routing.js +221 -0
- package/dist/routing.js.map +1 -0
- package/dist/runtime/core/model-runtime.d.ts +19 -0
- package/dist/runtime/core/model-runtime.d.ts.map +1 -0
- package/dist/runtime/core/model-runtime.js +9 -0
- package/dist/runtime/core/model-runtime.js.map +1 -0
- package/dist/{inference.d.ts → runtime/engines/onnx-web/engine.d.ts} +7 -3
- package/dist/runtime/engines/onnx-web/engine.d.ts.map +1 -0
- package/dist/{inference.js → runtime/engines/onnx-web/engine.js} +21 -7
- package/dist/runtime/engines/onnx-web/engine.js.map +1 -0
- package/dist/runtime/engines/registry/engine-plugin.d.ts +11 -0
- package/dist/runtime/engines/registry/engine-plugin.d.ts.map +1 -0
- package/dist/runtime/engines/registry/engine-plugin.js +2 -0
- package/dist/runtime/engines/registry/engine-plugin.js.map +1 -0
- package/dist/runtime/engines/registry/engine-registry.d.ts +35 -0
- package/dist/runtime/engines/registry/engine-registry.d.ts.map +1 -0
- package/dist/runtime/engines/registry/engine-registry.js +74 -0
- package/dist/runtime/engines/registry/engine-registry.js.map +1 -0
- package/dist/runtime/index.d.ts +4 -0
- package/dist/runtime/index.d.ts.map +1 -0
- package/dist/runtime/index.js +2 -0
- package/dist/runtime/index.js.map +1 -0
- package/dist/secure-aggregation.d.ts.map +1 -1
- package/dist/secure-aggregation.js +3 -2
- package/dist/secure-aggregation.js.map +1 -1
- package/dist/server-api.d.ts +17 -0
- package/dist/server-api.d.ts.map +1 -0
- package/dist/server-api.js +56 -0
- package/dist/server-api.js.map +1 -0
- package/dist/settings.d.ts +20 -0
- package/dist/settings.d.ts.map +1 -0
- package/dist/settings.js +49 -0
- package/dist/settings.js.map +1 -0
- package/dist/silent-auth-config.d.ts +33 -0
- package/dist/silent-auth-config.d.ts.map +1 -0
- package/dist/silent-auth-config.js +29 -0
- package/dist/silent-auth-config.js.map +1 -0
- package/dist/streaming.d.ts +4 -3
- package/dist/streaming.d.ts.map +1 -1
- package/dist/streaming.js +15 -25
- package/dist/streaming.js.map +1 -1
- package/dist/sync-manager.d.ts +103 -0
- package/dist/sync-manager.d.ts.map +1 -0
- package/dist/sync-manager.js +314 -0
- package/dist/sync-manager.js.map +1 -0
- package/dist/telemetry.d.ts +99 -4
- package/dist/telemetry.d.ts.map +1 -1
- package/dist/telemetry.js +251 -13
- package/dist/telemetry.js.map +1 -1
- package/dist/text/octomil-text.d.ts +18 -0
- package/dist/text/octomil-text.d.ts.map +1 -0
- package/dist/text/octomil-text.js +20 -0
- package/dist/text/octomil-text.js.map +1 -0
- package/dist/training.d.ts +15 -0
- package/dist/training.d.ts.map +1 -0
- package/dist/training.js +35 -0
- package/dist/training.js.map +1 -0
- package/dist/transformers-local-runtime.d.ts +17 -0
- package/dist/transformers-local-runtime.d.ts.map +1 -0
- package/dist/transformers-local-runtime.js +356 -0
- package/dist/transformers-local-runtime.js.map +1 -0
- package/dist/types.d.ts +353 -25
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +146 -0
- package/dist/types.js.map +1 -1
- package/package.json +7 -6
- package/dist/inference.d.ts.map +0 -1
- package/dist/inference.js.map +0 -1
- package/dist/model-loader.d.ts.map +0 -1
- package/dist/model-loader.js.map +0 -1
- package/dist/rollouts.d.ts +0 -43
- package/dist/rollouts.d.ts.map +0 -1
- package/dist/rollouts.js +0 -114
- package/dist/rollouts.js.map +0 -1
|
@@ -0,0 +1,356 @@
|
|
|
1
|
+
import { generateId, } from "./responses.js";
|
|
2
|
+
const DEFAULT_QWEN_MODEL = "Qwen/Qwen3-0.6B";
|
|
3
|
+
const DEFAULT_ORT_WASM_BASE_URL = "https://cdn.jsdelivr.net/npm/onnxruntime-web@1.24.2/dist/";
|
|
4
|
+
const pipelineCache = new Map();
|
|
5
|
+
export function createTransformersJsLocalResponsesRuntime(options = {}) {
|
|
6
|
+
const config = resolveTransformersRuntimeConfig(options);
|
|
7
|
+
return {
|
|
8
|
+
async create(request) {
|
|
9
|
+
const generatedText = await runLocalGeneration(request, config);
|
|
10
|
+
return toResponse(request, config.model, generatedText);
|
|
11
|
+
},
|
|
12
|
+
async *stream(request) {
|
|
13
|
+
const response = await this.create(request);
|
|
14
|
+
const firstOutput = response.output[0];
|
|
15
|
+
if (firstOutput?.type === "tool_call") {
|
|
16
|
+
yield {
|
|
17
|
+
type: "tool_call_delta",
|
|
18
|
+
index: 0,
|
|
19
|
+
id: firstOutput.toolCall?.id,
|
|
20
|
+
name: firstOutput.toolCall?.name,
|
|
21
|
+
argumentsDelta: firstOutput.toolCall?.arguments,
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
else if (firstOutput?.type === "text" && firstOutput.text) {
|
|
25
|
+
yield { type: "text_delta", delta: firstOutput.text };
|
|
26
|
+
}
|
|
27
|
+
yield { type: "done", response };
|
|
28
|
+
},
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
export function resolveTransformersRuntimeConfig(options = {}) {
|
|
32
|
+
const model = options.model ?? DEFAULT_QWEN_MODEL;
|
|
33
|
+
const runtimeModel = options.runtimeModel ?? toOnnxCommunityModel(model);
|
|
34
|
+
return {
|
|
35
|
+
model,
|
|
36
|
+
runtimeModel,
|
|
37
|
+
device: options.device ?? "auto",
|
|
38
|
+
dtype: options.dtype ?? "q4",
|
|
39
|
+
maxNewTokens: options.maxNewTokens ?? 128,
|
|
40
|
+
maxInputChars: options.maxInputChars ?? 4000,
|
|
41
|
+
temperature: options.temperature ?? 0,
|
|
42
|
+
topP: options.topP ?? 0.95,
|
|
43
|
+
repetitionPenalty: options.repetitionPenalty ?? 1.05,
|
|
44
|
+
ortWasmBaseUrl: normalizeBaseUrl(options.ortWasmBaseUrl) ?? DEFAULT_ORT_WASM_BASE_URL,
|
|
45
|
+
useBrowserCache: options.useBrowserCache ?? false,
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
function toOnnxCommunityModel(model) {
|
|
49
|
+
if (model.startsWith("onnx-community/")) {
|
|
50
|
+
return model;
|
|
51
|
+
}
|
|
52
|
+
const normalized = model.replace(/^Qwen\//, "");
|
|
53
|
+
return `onnx-community/${normalized}-ONNX`;
|
|
54
|
+
}
|
|
55
|
+
async function runLocalGeneration(request, config) {
|
|
56
|
+
const generator = await getGenerator(config);
|
|
57
|
+
const messages = buildMessages(request, config.maxInputChars);
|
|
58
|
+
const generationInput = renderGenerationInput(generator, messages);
|
|
59
|
+
const generation = await generator(generationInput, {
|
|
60
|
+
max_new_tokens: request.maxOutputTokens ?? config.maxNewTokens,
|
|
61
|
+
temperature: request.temperature ?? config.temperature,
|
|
62
|
+
top_p: request.topP ?? config.topP,
|
|
63
|
+
repetition_penalty: config.repetitionPenalty,
|
|
64
|
+
do_sample: (request.temperature ?? config.temperature) > 0,
|
|
65
|
+
return_full_text: false,
|
|
66
|
+
});
|
|
67
|
+
return extractGeneratedText(generation);
|
|
68
|
+
}
|
|
69
|
+
async function getGenerator(config) {
|
|
70
|
+
const key = JSON.stringify([
|
|
71
|
+
config.runtimeModel,
|
|
72
|
+
resolveDevice(config.device),
|
|
73
|
+
config.dtype,
|
|
74
|
+
]);
|
|
75
|
+
let pending = pipelineCache.get(key);
|
|
76
|
+
if (!pending) {
|
|
77
|
+
pending = (async () => {
|
|
78
|
+
const { pipeline } = await importTransformers(config);
|
|
79
|
+
return pipeline("text-generation", config.runtimeModel, {
|
|
80
|
+
device: resolveDevice(config.device),
|
|
81
|
+
dtype: config.dtype,
|
|
82
|
+
});
|
|
83
|
+
})();
|
|
84
|
+
pipelineCache.set(key, pending);
|
|
85
|
+
}
|
|
86
|
+
return pending;
|
|
87
|
+
}
|
|
88
|
+
async function importTransformers(config) {
|
|
89
|
+
const transformers = (await import("@huggingface/transformers"));
|
|
90
|
+
if (transformers.env) {
|
|
91
|
+
transformers.env.useBrowserCache = config.useBrowserCache;
|
|
92
|
+
}
|
|
93
|
+
const wasmConfig = transformers.env?.backends?.onnx?.wasm;
|
|
94
|
+
if (wasmConfig) {
|
|
95
|
+
wasmConfig.wasmPaths = config.ortWasmBaseUrl;
|
|
96
|
+
wasmConfig.proxy = false;
|
|
97
|
+
}
|
|
98
|
+
return transformers;
|
|
99
|
+
}
|
|
100
|
+
function resolveDevice(device) {
|
|
101
|
+
if (device === "webgpu" || device === "wasm") {
|
|
102
|
+
return device;
|
|
103
|
+
}
|
|
104
|
+
return typeof navigator !== "undefined" && "gpu" in navigator ? "webgpu" : "wasm";
|
|
105
|
+
}
|
|
106
|
+
function renderGenerationInput(generator, messages) {
|
|
107
|
+
const applyChatTemplate = generator.tokenizer?.apply_chat_template;
|
|
108
|
+
if (!applyChatTemplate) {
|
|
109
|
+
return messages;
|
|
110
|
+
}
|
|
111
|
+
return applyChatTemplate.call(generator.tokenizer, messages, {
|
|
112
|
+
tokenize: false,
|
|
113
|
+
add_generation_prompt: true,
|
|
114
|
+
enable_thinking: false,
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
function normalizeBaseUrl(url) {
|
|
118
|
+
if (!url) {
|
|
119
|
+
return undefined;
|
|
120
|
+
}
|
|
121
|
+
return url.endsWith("/") ? url : `${url}/`;
|
|
122
|
+
}
|
|
123
|
+
function buildMessages(request, maxInputChars) {
|
|
124
|
+
const systemPreamble = buildSystemPreamble(request.tools);
|
|
125
|
+
const normalizedInput = normalizeInput(request.input);
|
|
126
|
+
const messages = normalizedInput
|
|
127
|
+
.flatMap((item) => inputItemToMessages(item))
|
|
128
|
+
.filter((item) => item !== null);
|
|
129
|
+
if (messages[0]?.role === "system") {
|
|
130
|
+
messages[0] = {
|
|
131
|
+
role: "system",
|
|
132
|
+
content: `${systemPreamble}\n\n${messages[0].content}`.trim(),
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
else {
|
|
136
|
+
messages.unshift({
|
|
137
|
+
role: "system",
|
|
138
|
+
content: systemPreamble,
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
return trimMessagesForBudget(messages, maxInputChars);
|
|
142
|
+
}
|
|
143
|
+
function buildSystemPreamble(tools) {
|
|
144
|
+
const base = [
|
|
145
|
+
"You are Octomil's local browser agent runtime.",
|
|
146
|
+
"Do not reveal chain-of-thought or emit <think> tags.",
|
|
147
|
+
"Answer directly when no tool is needed.",
|
|
148
|
+
];
|
|
149
|
+
if (!tools || tools.length === 0) {
|
|
150
|
+
return base.join("\n");
|
|
151
|
+
}
|
|
152
|
+
return [
|
|
153
|
+
...base,
|
|
154
|
+
"When a tool is required, respond with exactly one XML block in this form and no extra prose:",
|
|
155
|
+
"<tool_call>{\"name\":\"tool_name\",\"arguments\":{}}</tool_call>",
|
|
156
|
+
"Use one of these tools:",
|
|
157
|
+
...tools.map((tool) => `- ${tool.function.name}: ${tool.function.description ?? "No description provided"}; parameters=${JSON.stringify(tool.function.parameters ?? {})}`),
|
|
158
|
+
].join("\n");
|
|
159
|
+
}
|
|
160
|
+
function inputItemToMessages(item) {
|
|
161
|
+
if (!item || typeof item !== "object" || !("role" in item)) {
|
|
162
|
+
return [];
|
|
163
|
+
}
|
|
164
|
+
switch (item.role) {
|
|
165
|
+
case "system":
|
|
166
|
+
return [{ role: "system", content: stringifyContent(item.content) }];
|
|
167
|
+
case "user":
|
|
168
|
+
return [{ role: "user", content: stringifyContent(item.content) }];
|
|
169
|
+
case "assistant":
|
|
170
|
+
return [{ role: "assistant", content: stringifyAssistantContent(item.content) }];
|
|
171
|
+
case "tool":
|
|
172
|
+
return [{
|
|
173
|
+
role: "user",
|
|
174
|
+
content: `Tool result for ${item.toolCallId ?? "tool"}:\n${stringifyContent(item.content)}`,
|
|
175
|
+
}];
|
|
176
|
+
default:
|
|
177
|
+
return [];
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
function stringifyAssistantContent(content) {
|
|
181
|
+
if (typeof content === "string")
|
|
182
|
+
return content;
|
|
183
|
+
if (!Array.isArray(content))
|
|
184
|
+
return "";
|
|
185
|
+
return content.map((item) => {
|
|
186
|
+
if (!item || typeof item !== "object" || !("type" in item)) {
|
|
187
|
+
return "";
|
|
188
|
+
}
|
|
189
|
+
if (item.type === "text") {
|
|
190
|
+
return typeof item.text === "string" ? item.text : "";
|
|
191
|
+
}
|
|
192
|
+
if (item.type === "tool_call" && item.toolCall) {
|
|
193
|
+
return `<tool_call>${JSON.stringify({
|
|
194
|
+
name: item.toolCall.name,
|
|
195
|
+
arguments: safeJsonParse(item.toolCall.arguments) ?? item.toolCall.arguments,
|
|
196
|
+
})}</tool_call>`;
|
|
197
|
+
}
|
|
198
|
+
return "";
|
|
199
|
+
}).filter(Boolean).join("\n");
|
|
200
|
+
}
|
|
201
|
+
function stringifyContent(content) {
|
|
202
|
+
if (typeof content === "string")
|
|
203
|
+
return content;
|
|
204
|
+
if (!Array.isArray(content))
|
|
205
|
+
return "";
|
|
206
|
+
return content.map((item) => {
|
|
207
|
+
if (!item || typeof item !== "object" || !("type" in item)) {
|
|
208
|
+
return "";
|
|
209
|
+
}
|
|
210
|
+
if (item.type === "text")
|
|
211
|
+
return item.text ?? "";
|
|
212
|
+
if (item.type === "image")
|
|
213
|
+
return "[image omitted]";
|
|
214
|
+
if (item.type === "audio")
|
|
215
|
+
return "[audio omitted]";
|
|
216
|
+
if (item.type === "video")
|
|
217
|
+
return "[video omitted]";
|
|
218
|
+
if (item.type === "file")
|
|
219
|
+
return "[file omitted]";
|
|
220
|
+
return "";
|
|
221
|
+
}).filter(Boolean).join("\n");
|
|
222
|
+
}
|
|
223
|
+
function extractGeneratedText(generation) {
|
|
224
|
+
const candidate = Array.isArray(generation) ? generation[0] : generation;
|
|
225
|
+
const generatedText = candidate?.generated_text ?? candidate;
|
|
226
|
+
if (typeof generatedText === "string") {
|
|
227
|
+
return generatedText;
|
|
228
|
+
}
|
|
229
|
+
if (Array.isArray(generatedText)) {
|
|
230
|
+
const last = generatedText.at(-1);
|
|
231
|
+
if (typeof last === "string") {
|
|
232
|
+
return last;
|
|
233
|
+
}
|
|
234
|
+
if (last && typeof last === "object" && "content" in last) {
|
|
235
|
+
return typeof last.content === "string" ? last.content : "";
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
if (generatedText && typeof generatedText === "object" && "content" in generatedText) {
|
|
239
|
+
return typeof generatedText.content === "string" ? generatedText.content : "";
|
|
240
|
+
}
|
|
241
|
+
return String(generatedText ?? "");
|
|
242
|
+
}
|
|
243
|
+
function toResponse(request, model, rawText) {
|
|
244
|
+
const cleaned = stripThinking(rawText).trim();
|
|
245
|
+
const parsedToolCall = parseToolCall(cleaned, request.tools);
|
|
246
|
+
const output = parsedToolCall
|
|
247
|
+
? [{
|
|
248
|
+
type: "tool_call",
|
|
249
|
+
toolCall: {
|
|
250
|
+
id: generateToolCallId(),
|
|
251
|
+
name: parsedToolCall.name,
|
|
252
|
+
arguments: JSON.stringify(parsedToolCall.arguments),
|
|
253
|
+
},
|
|
254
|
+
}]
|
|
255
|
+
: [{
|
|
256
|
+
type: "text",
|
|
257
|
+
text: cleaned,
|
|
258
|
+
}];
|
|
259
|
+
return {
|
|
260
|
+
id: generateId(),
|
|
261
|
+
model,
|
|
262
|
+
output,
|
|
263
|
+
finishReason: parsedToolCall ? "tool_calls" : "stop",
|
|
264
|
+
};
|
|
265
|
+
}
|
|
266
|
+
function parseToolCall(text, tools) {
|
|
267
|
+
if (!tools || tools.length === 0)
|
|
268
|
+
return null;
|
|
269
|
+
const allowedTools = new Set(tools.map((tool) => tool.function.name));
|
|
270
|
+
const candidates = [
|
|
271
|
+
...text.matchAll(/<tool_call>\s*([\s\S]*?)\s*<\/tool_call>/gi),
|
|
272
|
+
...text.matchAll(/```json\s*([\s\S]*?)\s*```/gi),
|
|
273
|
+
].map((match) => match[1]?.trim()).filter(Boolean);
|
|
274
|
+
for (const candidate of candidates) {
|
|
275
|
+
const parsed = safeJsonParse(candidate);
|
|
276
|
+
if (!isToolCallCandidate(parsed))
|
|
277
|
+
continue;
|
|
278
|
+
const name = typeof parsed.name === "string" ? parsed.name : null;
|
|
279
|
+
if (!name || !allowedTools.has(name))
|
|
280
|
+
continue;
|
|
281
|
+
const argumentsObject = parsed.arguments && typeof parsed.arguments === "object"
|
|
282
|
+
? parsed.arguments
|
|
283
|
+
: {};
|
|
284
|
+
return { name, arguments: argumentsObject };
|
|
285
|
+
}
|
|
286
|
+
return null;
|
|
287
|
+
}
|
|
288
|
+
function safeJsonParse(value) {
|
|
289
|
+
try {
|
|
290
|
+
return JSON.parse(value);
|
|
291
|
+
}
|
|
292
|
+
catch {
|
|
293
|
+
return null;
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
function normalizeInput(input) {
|
|
297
|
+
if (typeof input === "string") {
|
|
298
|
+
return [{ role: "user", content: input }];
|
|
299
|
+
}
|
|
300
|
+
if (Array.isArray(input) && input.every((item) => item && typeof item === "object" && "role" in item)) {
|
|
301
|
+
return input;
|
|
302
|
+
}
|
|
303
|
+
return [{ role: "user", content: input }];
|
|
304
|
+
}
|
|
305
|
+
function trimMessagesForBudget(messages, maxInputChars) {
|
|
306
|
+
if (messages.length <= 1 || maxInputChars <= 0) {
|
|
307
|
+
return messages;
|
|
308
|
+
}
|
|
309
|
+
const systemMessage = messages[0]?.role === "system" ? messages[0] : null;
|
|
310
|
+
const remainingBudget = Math.max(maxInputChars - (systemMessage?.content.length ?? 0), 512);
|
|
311
|
+
const rest = systemMessage ? messages.slice(1) : messages.slice();
|
|
312
|
+
const kept = [];
|
|
313
|
+
let usedChars = 0;
|
|
314
|
+
for (let index = rest.length - 1; index >= 0; index -= 1) {
|
|
315
|
+
const message = rest[index];
|
|
316
|
+
if (!message) {
|
|
317
|
+
continue;
|
|
318
|
+
}
|
|
319
|
+
const contentLength = message.content.length;
|
|
320
|
+
if (usedChars + contentLength <= remainingBudget) {
|
|
321
|
+
kept.unshift(message);
|
|
322
|
+
usedChars += contentLength;
|
|
323
|
+
continue;
|
|
324
|
+
}
|
|
325
|
+
if (kept.length === 0) {
|
|
326
|
+
kept.unshift({
|
|
327
|
+
role: message.role,
|
|
328
|
+
content: trimContentFromStart(message.content, remainingBudget),
|
|
329
|
+
});
|
|
330
|
+
}
|
|
331
|
+
break;
|
|
332
|
+
}
|
|
333
|
+
return systemMessage ? [systemMessage, ...kept] : kept;
|
|
334
|
+
}
|
|
335
|
+
function trimContentFromStart(content, maxChars) {
|
|
336
|
+
if (content.length <= maxChars) {
|
|
337
|
+
return content;
|
|
338
|
+
}
|
|
339
|
+
const tail = content.slice(-Math.max(maxChars - 32, 0)).trim();
|
|
340
|
+
return `[truncated]\n${tail}`.trim();
|
|
341
|
+
}
|
|
342
|
+
function isToolCallCandidate(value) {
|
|
343
|
+
return Boolean(value) && typeof value === "object";
|
|
344
|
+
}
|
|
345
|
+
function stripThinking(text) {
|
|
346
|
+
const withoutClosedTags = text.replace(/<think>[\s\S]*?<\/think>/gi, "");
|
|
347
|
+
return withoutClosedTags
|
|
348
|
+
.replace(/<think>[\s\S]*$/gi, "")
|
|
349
|
+
.replace(/<thinking>[\s\S]*?<\/thinking>/gi, "")
|
|
350
|
+
.replace(/<thinking>[\s\S]*$/gi, "")
|
|
351
|
+
.trim();
|
|
352
|
+
}
|
|
353
|
+
function generateToolCallId() {
|
|
354
|
+
return `call_${Math.random().toString(36).slice(2, 10)}`;
|
|
355
|
+
}
|
|
356
|
+
//# sourceMappingURL=transformers-local-runtime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transformers-local-runtime.js","sourceRoot":"","sources":["../src/transformers-local-runtime.ts"],"names":[],"mappings":"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"}
|