@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
package/dist/routing.js
ADDED
|
@@ -0,0 +1,221 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @octomil/browser — Routing client
|
|
3
|
+
*
|
|
4
|
+
* ADVANCED — MAY: Calls the Octomil routing API to decide whether inference
|
|
5
|
+
* should run on-device or in the cloud. Caches decisions with a configurable
|
|
6
|
+
* TTL and provides a cloud inference proxy when the server picks "cloud".
|
|
7
|
+
*
|
|
8
|
+
* This module is part of the ADVANCED tier. SDKs MAY implement routing
|
|
9
|
+
* support. It is not required for core SDK compliance.
|
|
10
|
+
*/
|
|
11
|
+
import { OctomilError } from "./types.js";
|
|
12
|
+
// ---------------------------------------------------------------------------
|
|
13
|
+
// Constants
|
|
14
|
+
// ---------------------------------------------------------------------------
|
|
15
|
+
const DEFAULT_CACHE_TTL_MS = 300_000; // 5 minutes
|
|
16
|
+
const PERSISTENT_CACHE_KEY = "octomil_routing_cache";
|
|
17
|
+
// ---------------------------------------------------------------------------
|
|
18
|
+
// RoutingClient
|
|
19
|
+
// ---------------------------------------------------------------------------
|
|
20
|
+
export class RoutingClient {
|
|
21
|
+
serverUrl;
|
|
22
|
+
apiKey;
|
|
23
|
+
cacheTtlMs;
|
|
24
|
+
prefer;
|
|
25
|
+
cache = new Map();
|
|
26
|
+
/** Whether the last `route()` call was answered from offline fallback. */
|
|
27
|
+
lastRouteWasOffline = false;
|
|
28
|
+
constructor(config) {
|
|
29
|
+
this.serverUrl = config.serverUrl.replace(/\/+$/, "");
|
|
30
|
+
this.apiKey = config.apiKey;
|
|
31
|
+
this.cacheTtlMs = config.cacheTtlMs ?? DEFAULT_CACHE_TTL_MS;
|
|
32
|
+
this.prefer = config.prefer ?? "fastest";
|
|
33
|
+
}
|
|
34
|
+
// -----------------------------------------------------------------------
|
|
35
|
+
// Public
|
|
36
|
+
// -----------------------------------------------------------------------
|
|
37
|
+
/**
|
|
38
|
+
* Ask the routing API whether to run on-device or in the cloud.
|
|
39
|
+
*
|
|
40
|
+
* Returns a cached decision when available and not expired.
|
|
41
|
+
* On network failure, returns a persistent-cached decision or a synthetic
|
|
42
|
+
* device decision. Never returns `null`.
|
|
43
|
+
*/
|
|
44
|
+
async route(modelId, modelParams, modelSizeMb, deviceCapabilities) {
|
|
45
|
+
this.lastRouteWasOffline = false;
|
|
46
|
+
const cached = this.cache.get(modelId);
|
|
47
|
+
if (cached && cached.expiresAt > Date.now()) {
|
|
48
|
+
return cached.decision;
|
|
49
|
+
}
|
|
50
|
+
const body = {
|
|
51
|
+
model_id: modelId,
|
|
52
|
+
model_params: modelParams,
|
|
53
|
+
model_size_mb: modelSizeMb,
|
|
54
|
+
device_capabilities: deviceCapabilities,
|
|
55
|
+
prefer: this.prefer,
|
|
56
|
+
};
|
|
57
|
+
let response;
|
|
58
|
+
try {
|
|
59
|
+
response = await fetch(`${this.serverUrl}/api/v1/route`, {
|
|
60
|
+
method: "POST",
|
|
61
|
+
headers: {
|
|
62
|
+
"Content-Type": "application/json",
|
|
63
|
+
Authorization: `Bearer ${this.apiKey}`,
|
|
64
|
+
},
|
|
65
|
+
body: JSON.stringify(body),
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
catch {
|
|
69
|
+
return this.offlineFallback(modelId);
|
|
70
|
+
}
|
|
71
|
+
if (!response.ok) {
|
|
72
|
+
return this.offlineFallback(modelId);
|
|
73
|
+
}
|
|
74
|
+
const decision = (await response.json());
|
|
75
|
+
this.cache.set(modelId, {
|
|
76
|
+
decision,
|
|
77
|
+
expiresAt: Date.now() + this.cacheTtlMs,
|
|
78
|
+
});
|
|
79
|
+
// Persist to localStorage for offline fallback.
|
|
80
|
+
this.persistToStorage(modelId, decision);
|
|
81
|
+
return decision;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Run inference in the cloud via POST /api/v1/inference.
|
|
85
|
+
*
|
|
86
|
+
* Throws on failure so the caller can catch and fall back to local.
|
|
87
|
+
*/
|
|
88
|
+
async cloudInfer(modelId, inputData, parameters = {}) {
|
|
89
|
+
const body = {
|
|
90
|
+
model_id: modelId,
|
|
91
|
+
input_data: inputData,
|
|
92
|
+
parameters,
|
|
93
|
+
};
|
|
94
|
+
let response;
|
|
95
|
+
try {
|
|
96
|
+
response = await fetch(`${this.serverUrl}/api/v1/inference`, {
|
|
97
|
+
method: "POST",
|
|
98
|
+
headers: {
|
|
99
|
+
"Content-Type": "application/json",
|
|
100
|
+
Authorization: `Bearer ${this.apiKey}`,
|
|
101
|
+
},
|
|
102
|
+
body: JSON.stringify(body),
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
catch (err) {
|
|
106
|
+
throw new OctomilError("NETWORK_UNAVAILABLE", `Cloud inference request failed: ${String(err)}`, err);
|
|
107
|
+
}
|
|
108
|
+
if (!response.ok) {
|
|
109
|
+
throw new OctomilError("INFERENCE_FAILED", `Cloud inference failed: HTTP ${response.status}`);
|
|
110
|
+
}
|
|
111
|
+
return (await response.json());
|
|
112
|
+
}
|
|
113
|
+
/** Invalidate all cached routing decisions (in-memory and persistent). */
|
|
114
|
+
clearCache() {
|
|
115
|
+
this.cache.clear();
|
|
116
|
+
try {
|
|
117
|
+
localStorage.removeItem(PERSISTENT_CACHE_KEY);
|
|
118
|
+
}
|
|
119
|
+
catch {
|
|
120
|
+
// localStorage unavailable (e.g. SSR).
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
/** Invalidate the cached routing decision for a specific model. */
|
|
124
|
+
invalidate(modelId) {
|
|
125
|
+
this.cache.delete(modelId);
|
|
126
|
+
const entries = this.loadPersistentCache();
|
|
127
|
+
delete entries[modelId];
|
|
128
|
+
this.savePersistentCache(entries);
|
|
129
|
+
}
|
|
130
|
+
// -----------------------------------------------------------------------
|
|
131
|
+
// Offline fallback
|
|
132
|
+
// -----------------------------------------------------------------------
|
|
133
|
+
offlineFallback(modelId) {
|
|
134
|
+
this.lastRouteWasOffline = true;
|
|
135
|
+
// Try persistent cache.
|
|
136
|
+
const entries = this.loadPersistentCache();
|
|
137
|
+
const persisted = entries[modelId];
|
|
138
|
+
if (persisted) {
|
|
139
|
+
return { ...persisted, cached: true, offline: false };
|
|
140
|
+
}
|
|
141
|
+
// No cache — synthetic device decision.
|
|
142
|
+
return {
|
|
143
|
+
id: `offline-${modelId}`,
|
|
144
|
+
target: "device",
|
|
145
|
+
format: "onnx",
|
|
146
|
+
engine: "ort-wasm",
|
|
147
|
+
fallback_target: null,
|
|
148
|
+
cached: false,
|
|
149
|
+
offline: true,
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
// -----------------------------------------------------------------------
|
|
153
|
+
// Persistent storage (localStorage)
|
|
154
|
+
// -----------------------------------------------------------------------
|
|
155
|
+
persistToStorage(modelId, decision) {
|
|
156
|
+
const entries = this.loadPersistentCache();
|
|
157
|
+
entries[modelId] = decision;
|
|
158
|
+
this.savePersistentCache(entries);
|
|
159
|
+
}
|
|
160
|
+
loadPersistentCache() {
|
|
161
|
+
try {
|
|
162
|
+
const raw = localStorage.getItem(PERSISTENT_CACHE_KEY);
|
|
163
|
+
if (!raw)
|
|
164
|
+
return {};
|
|
165
|
+
return JSON.parse(raw);
|
|
166
|
+
}
|
|
167
|
+
catch {
|
|
168
|
+
return {};
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
savePersistentCache(entries) {
|
|
172
|
+
try {
|
|
173
|
+
localStorage.setItem(PERSISTENT_CACHE_KEY, JSON.stringify(entries));
|
|
174
|
+
}
|
|
175
|
+
catch {
|
|
176
|
+
// localStorage unavailable or full.
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
// ---------------------------------------------------------------------------
|
|
181
|
+
// Helpers
|
|
182
|
+
// ---------------------------------------------------------------------------
|
|
183
|
+
/**
|
|
184
|
+
* Detect device capabilities in a browser environment.
|
|
185
|
+
* Returns reasonable defaults when APIs are unavailable.
|
|
186
|
+
*/
|
|
187
|
+
export async function detectDeviceCapabilities() {
|
|
188
|
+
const gpuAvailable = await detectWebGPU();
|
|
189
|
+
// navigator.deviceMemory is only available in Chromium browsers.
|
|
190
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
191
|
+
const memoryGb = navigator.deviceMemory;
|
|
192
|
+
const totalMemoryMb = memoryGb ? Math.round(memoryGb * 1024) : 0;
|
|
193
|
+
const supportedRuntimes = ["wasm"];
|
|
194
|
+
if (gpuAvailable) {
|
|
195
|
+
supportedRuntimes.push("webgpu");
|
|
196
|
+
}
|
|
197
|
+
return {
|
|
198
|
+
platform: "web",
|
|
199
|
+
model: navigator.userAgent,
|
|
200
|
+
total_memory_mb: totalMemoryMb,
|
|
201
|
+
gpu_available: gpuAvailable,
|
|
202
|
+
npu_available: false, // No NPU API in browsers yet.
|
|
203
|
+
supported_runtimes: supportedRuntimes,
|
|
204
|
+
};
|
|
205
|
+
}
|
|
206
|
+
async function detectWebGPU() {
|
|
207
|
+
if (typeof navigator === "undefined")
|
|
208
|
+
return false;
|
|
209
|
+
try {
|
|
210
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
211
|
+
const gpu = navigator.gpu;
|
|
212
|
+
if (!gpu)
|
|
213
|
+
return false;
|
|
214
|
+
const adapter = await gpu.requestAdapter();
|
|
215
|
+
return adapter !== null;
|
|
216
|
+
}
|
|
217
|
+
catch {
|
|
218
|
+
return false;
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
//# sourceMappingURL=routing.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"routing.js","sourceRoot":"","sources":["../src/routing.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAWH,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1C,8EAA8E;AAC9E,YAAY;AACZ,8EAA8E;AAE9E,MAAM,oBAAoB,GAAG,OAAO,CAAC,CAAC,YAAY;AAClD,MAAM,oBAAoB,GAAG,uBAAuB,CAAC;AAWrD,8EAA8E;AAC9E,gBAAgB;AAChB,8EAA8E;AAE9E,MAAM,OAAO,aAAa;IACP,SAAS,CAAS;IAClB,MAAM,CAAS;IACf,UAAU,CAAS;IACnB,MAAM,CAAoB;IAC1B,KAAK,GAAG,IAAI,GAAG,EAAsB,CAAC;IAEvD,0EAA0E;IAC1E,mBAAmB,GAAG,KAAK,CAAC;IAE5B,YAAY,MAAqB;QAC/B,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QACtD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAC5B,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,IAAI,oBAAoB,CAAC;QAC5D,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,SAAS,CAAC;IAC3C,CAAC;IAED,0EAA0E;IAC1E,SAAS;IACT,0EAA0E;IAE1E;;;;;;OAMG;IACH,KAAK,CAAC,KAAK,CACT,OAAe,EACf,WAAmB,EACnB,WAAmB,EACnB,kBAAsC;QAEtC,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;QAEjC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACvC,IAAI,MAAM,IAAI,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;YAC5C,OAAO,MAAM,CAAC,QAAQ,CAAC;QACzB,CAAC;QAED,MAAM,IAAI,GAAmB;YAC3B,QAAQ,EAAE,OAAO;YACjB,YAAY,EAAE,WAAW;YACzB,aAAa,EAAE,WAAW;YAC1B,mBAAmB,EAAE,kBAAkB;YACvC,MAAM,EAAE,IAAI,CAAC,MAAM;SACpB,CAAC;QAEF,IAAI,QAAkB,CAAC;QACvB,IAAI,CAAC;YACH,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,eAAe,EAAE;gBACvD,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE;oBACP,cAAc,EAAE,kBAAkB;oBAClC,aAAa,EAAE,UAAU,IAAI,CAAC,MAAM,EAAE;iBACvC;gBACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;aAC3B,CAAC,CAAC;QACL,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QACvC,CAAC;QAED,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,OAAO,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QACvC,CAAC;QAED,MAAM,QAAQ,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAoB,CAAC;QAE5D,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE;YACtB,QAAQ;YACR,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,UAAU;SACxC,CAAC,CAAC;QAEH,gDAAgD;QAChD,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAEzC,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,UAAU,CACd,OAAe,EACf,SAAkB,EAClB,aAAsC,EAAE;QAExC,MAAM,IAAI,GAA0B;YAClC,QAAQ,EAAE,OAAO;YACjB,UAAU,EAAE,SAAS;YACrB,UAAU;SACX,CAAC;QAEF,IAAI,QAAkB,CAAC;QACvB,IAAI,CAAC;YACH,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,mBAAmB,EAAE;gBAC3D,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE;oBACP,cAAc,EAAE,kBAAkB;oBAClC,aAAa,EAAE,UAAU,IAAI,CAAC,MAAM,EAAE;iBACvC;gBACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;aAC3B,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,IAAI,YAAY,CACpB,qBAAqB,EACrB,mCAAmC,MAAM,CAAC,GAAG,CAAC,EAAE,EAChD,GAAG,CACJ,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,YAAY,CACpB,kBAAkB,EAClB,gCAAgC,QAAQ,CAAC,MAAM,EAAE,CAClD,CAAC;QACJ,CAAC;QAED,OAAO,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAA2B,CAAC;IAC3D,CAAC;IAED,0EAA0E;IAC1E,UAAU;QACR,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACnB,IAAI,CAAC;YACH,YAAY,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAC;QAChD,CAAC;QAAC,MAAM,CAAC;YACP,uCAAuC;QACzC,CAAC;IACH,CAAC;IAED,mEAAmE;IACnE,UAAU,CAAC,OAAe;QACxB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC3B,MAAM,OAAO,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3C,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC;QACxB,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC;IAED,0EAA0E;IAC1E,mBAAmB;IACnB,0EAA0E;IAElE,eAAe,CAAC,OAAe;QACrC,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;QAEhC,wBAAwB;QACxB,MAAM,OAAO,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3C,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;QACnC,IAAI,SAAS,EAAE,CAAC;YACd,OAAO,EAAE,GAAG,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;QACxD,CAAC;QAED,wCAAwC;QACxC,OAAO;YACL,EAAE,EAAE,WAAW,OAAO,EAAE;YACxB,MAAM,EAAE,QAAQ;YAChB,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,UAAU;YAClB,eAAe,EAAE,IAAI;YACrB,MAAM,EAAE,KAAK;YACb,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;IAED,0EAA0E;IAC1E,oCAAoC;IACpC,0EAA0E;IAElE,gBAAgB,CAAC,OAAe,EAAE,QAAyB;QACjE,MAAM,OAAO,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3C,OAAO,CAAC,OAAO,CAAC,GAAG,QAAQ,CAAC;QAC5B,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC;IAEO,mBAAmB;QACzB,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,YAAY,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;YACvD,IAAI,CAAC,GAAG;gBAAE,OAAO,EAAE,CAAC;YACpB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAoC,CAAC;QAC5D,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAEO,mBAAmB,CAAC,OAAwC;QAClE,IAAI,CAAC;YACH,YAAY,CAAC,OAAO,CAAC,oBAAoB,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;QACtE,CAAC;QAAC,MAAM,CAAC;YACP,oCAAoC;QACtC,CAAC;IACH,CAAC;CACF;AAED,8EAA8E;AAC9E,UAAU;AACV,8EAA8E;AAE9E;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,wBAAwB;IAC5C,MAAM,YAAY,GAAG,MAAM,YAAY,EAAE,CAAC;IAE1C,iEAAiE;IACjE,8DAA8D;IAC9D,MAAM,QAAQ,GAAI,SAAiB,CAAC,YAAkC,CAAC;IACvE,MAAM,aAAa,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAEjE,MAAM,iBAAiB,GAAa,CAAC,MAAM,CAAC,CAAC;IAC7C,IAAI,YAAY,EAAE,CAAC;QACjB,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACnC,CAAC;IAED,OAAO;QACL,QAAQ,EAAE,KAAK;QACf,KAAK,EAAE,SAAS,CAAC,SAAS;QAC1B,eAAe,EAAE,aAAa;QAC9B,aAAa,EAAE,YAAY;QAC3B,aAAa,EAAE,KAAK,EAAE,8BAA8B;QACpD,kBAAkB,EAAE,iBAAiB;KACtC,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,YAAY;IACzB,IAAI,OAAO,SAAS,KAAK,WAAW;QAAE,OAAO,KAAK,CAAC;IACnD,IAAI,CAAC;QACH,8DAA8D;QAC9D,MAAM,GAAG,GAAI,SAAiB,CAAC,GAAG,CAAC;QACnC,IAAI,CAAC,GAAG;YAAE,OAAO,KAAK,CAAC;QACvB,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,cAAc,EAAE,CAAC;QAC3C,OAAO,OAAO,KAAK,IAAI,CAAC;IAC1B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @octomil/browser — ModelRuntime interface
|
|
3
|
+
*
|
|
4
|
+
* Abstraction over inference runtimes. The default `InferenceEngine` uses
|
|
5
|
+
* ONNX Runtime Web, but callers may inject a custom runtime (e.g.
|
|
6
|
+
* TensorFlow.js, WebNN) via the OctomilClient constructor.
|
|
7
|
+
*/
|
|
8
|
+
import type { Backend, NamedTensors, PredictOutput } from "../../types.js";
|
|
9
|
+
export interface ModelRuntime {
|
|
10
|
+
/** Create a runtime session from a model buffer. */
|
|
11
|
+
createSession(modelData: ArrayBuffer, backend?: Backend): Promise<void>;
|
|
12
|
+
/** Run inference on the given inputs. */
|
|
13
|
+
run(inputs: NamedTensors): Promise<PredictOutput>;
|
|
14
|
+
/** Release all resources held by the runtime. */
|
|
15
|
+
dispose(): void;
|
|
16
|
+
/** Whether this runtime is available in the current environment. */
|
|
17
|
+
isAvailable(): Promise<boolean>;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=model-runtime.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-runtime.d.ts","sourceRoot":"","sources":["../../../src/runtime/core/model-runtime.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAE3E,MAAM,WAAW,YAAY;IAC3B,oDAAoD;IACpD,aAAa,CAAC,SAAS,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxE,yCAAyC;IACzC,GAAG,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IAClD,iDAAiD;IACjD,OAAO,IAAI,IAAI,CAAC;IAChB,oEAAoE;IACpE,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;CACjC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @octomil/browser — ModelRuntime interface
|
|
3
|
+
*
|
|
4
|
+
* Abstraction over inference runtimes. The default `InferenceEngine` uses
|
|
5
|
+
* ONNX Runtime Web, but callers may inject a custom runtime (e.g.
|
|
6
|
+
* TensorFlow.js, WebNN) via the OctomilClient constructor.
|
|
7
|
+
*/
|
|
8
|
+
export {};
|
|
9
|
+
//# sourceMappingURL=model-runtime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-runtime.js","sourceRoot":"","sources":["../../../src/runtime/core/model-runtime.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"}
|
|
@@ -5,8 +5,10 @@
|
|
|
5
5
|
* buffer, auto-detect the best execution provider (WebGPU > WASM),
|
|
6
6
|
* and run forward passes.
|
|
7
7
|
*/
|
|
8
|
-
import type { Backend, NamedTensors, PredictOutput } from "
|
|
9
|
-
|
|
8
|
+
import type { Backend, NamedTensors, PredictOutput } from "../../../types.js";
|
|
9
|
+
import type { ModelRuntime } from "../../core/model-runtime.js";
|
|
10
|
+
export type { ModelRuntime } from "../../core/model-runtime.js";
|
|
11
|
+
export declare class InferenceEngine implements ModelRuntime {
|
|
10
12
|
private session;
|
|
11
13
|
private ortModule;
|
|
12
14
|
private resolvedBackend;
|
|
@@ -29,6 +31,8 @@ export declare class InferenceEngine {
|
|
|
29
31
|
get activeBackend(): Backend | null;
|
|
30
32
|
/** Release WASM / WebGPU resources. */
|
|
31
33
|
dispose(): void;
|
|
34
|
+
/** Check if ONNX Runtime Web can be loaded in this environment. */
|
|
35
|
+
isAvailable(): Promise<boolean>;
|
|
32
36
|
private loadOrt;
|
|
33
37
|
private resolveProvider;
|
|
34
38
|
private detectWebGPU;
|
|
@@ -40,4 +44,4 @@ export declare class InferenceEngine {
|
|
|
40
44
|
*/
|
|
41
45
|
private extractConvenience;
|
|
42
46
|
}
|
|
43
|
-
//# sourceMappingURL=
|
|
47
|
+
//# sourceMappingURL=engine.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../../../src/runtime/engines/onnx-web/engine.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,aAAa,EAAc,MAAM,mBAAmB,CAAC;AAE1F,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAEhE,YAAY,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAahE,qBAAa,eAAgB,YAAW,YAAY;IAClD,OAAO,CAAC,OAAO,CAAqC;IACpD,OAAO,CAAC,SAAS,CAA0B;IAC3C,OAAO,CAAC,eAAe,CAAwB;IAM/C;;;;;OAKG;IACG,aAAa,CACjB,SAAS,EAAE,WAAW,EACtB,OAAO,CAAC,EAAE,OAAO,GAChB,OAAO,CAAC,IAAI,CAAC;IA0ChB;;OAEG;IACG,GAAG,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC;IA4CvD,0CAA0C;IAC1C,IAAI,UAAU,IAAI,SAAS,MAAM,EAAE,CAGlC;IAED,2CAA2C;IAC3C,IAAI,WAAW,IAAI,SAAS,MAAM,EAAE,CAGnC;IAED,4DAA4D;IAC5D,IAAI,aAAa,IAAI,OAAO,GAAG,IAAI,CAElC;IAED,uCAAuC;IACvC,OAAO,IAAI,IAAI;IAQf,mEAAmE;IAC7D,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;YAavB,OAAO;YAiBP,eAAe;YAoBf,YAAY;IAc1B,OAAO,CAAC,aAAa;IASrB,OAAO,CAAC,cAAc;IAgBtB;;;OAGG;IACH,OAAO,CAAC,kBAAkB;CAmC3B"}
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* buffer, auto-detect the best execution provider (WebGPU > WASM),
|
|
6
6
|
* and run forward passes.
|
|
7
7
|
*/
|
|
8
|
-
import { OctomilError } from "
|
|
8
|
+
import { OctomilError } from "../../../types.js";
|
|
9
9
|
// ---------------------------------------------------------------------------
|
|
10
10
|
// InferenceEngine
|
|
11
11
|
// ---------------------------------------------------------------------------
|
|
@@ -105,6 +105,16 @@ export class InferenceEngine {
|
|
|
105
105
|
this.session = null;
|
|
106
106
|
}
|
|
107
107
|
}
|
|
108
|
+
/** Check if ONNX Runtime Web can be loaded in this environment. */
|
|
109
|
+
async isAvailable() {
|
|
110
|
+
try {
|
|
111
|
+
await this.loadOrt();
|
|
112
|
+
return true;
|
|
113
|
+
}
|
|
114
|
+
catch {
|
|
115
|
+
return false;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
108
118
|
// -----------------------------------------------------------------------
|
|
109
119
|
// Internal
|
|
110
120
|
// -----------------------------------------------------------------------
|
|
@@ -118,7 +128,7 @@ export class InferenceEngine {
|
|
|
118
128
|
return this.ortModule;
|
|
119
129
|
}
|
|
120
130
|
catch (err) {
|
|
121
|
-
throw new OctomilError("
|
|
131
|
+
throw new OctomilError("RUNTIME_UNAVAILABLE", 'Failed to import onnxruntime-web. Make sure the package is installed: npm i onnxruntime-web', err);
|
|
122
132
|
}
|
|
123
133
|
}
|
|
124
134
|
async resolveProvider(_ortMod, backend) {
|
|
@@ -129,7 +139,7 @@ export class InferenceEngine {
|
|
|
129
139
|
if (hasWebGPU)
|
|
130
140
|
return "webgpu";
|
|
131
141
|
if (backend === "webgpu") {
|
|
132
|
-
throw new OctomilError("
|
|
142
|
+
throw new OctomilError("RUNTIME_UNAVAILABLE", "WebGPU was explicitly requested but is not available in this browser.");
|
|
133
143
|
}
|
|
134
144
|
}
|
|
135
145
|
return "wasm";
|
|
@@ -151,7 +161,7 @@ export class InferenceEngine {
|
|
|
151
161
|
}
|
|
152
162
|
ensureSession() {
|
|
153
163
|
if (!this.session) {
|
|
154
|
-
throw new OctomilError("
|
|
164
|
+
throw new OctomilError("CANCELLED", "No active session. Call load() before running inference.");
|
|
155
165
|
}
|
|
156
166
|
}
|
|
157
167
|
convertOutputs(results) {
|
|
@@ -175,10 +185,14 @@ export class InferenceEngine {
|
|
|
175
185
|
return {};
|
|
176
186
|
const first = tensors[names[0]];
|
|
177
187
|
const data = first.data;
|
|
178
|
-
if (!(data instanceof Float32Array))
|
|
179
|
-
return {};
|
|
180
188
|
if (data.length === 0)
|
|
181
189
|
return {};
|
|
190
|
+
// Single-element output indicates a direct class/token ID.
|
|
191
|
+
if (data.length === 1) {
|
|
192
|
+
return { label: String(Number(data[0])), score: 1.0 };
|
|
193
|
+
}
|
|
194
|
+
if (!(data instanceof Float32Array))
|
|
195
|
+
return {};
|
|
182
196
|
// Treat as class probabilities / logits.
|
|
183
197
|
const scores = Array.from(data);
|
|
184
198
|
let maxIdx = 0;
|
|
@@ -210,4 +224,4 @@ function inferOrtType(data) {
|
|
|
210
224
|
return "uint8";
|
|
211
225
|
return "float32";
|
|
212
226
|
}
|
|
213
|
-
//# sourceMappingURL=
|
|
227
|
+
//# sourceMappingURL=engine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"engine.js","sourceRoot":"","sources":["../../../../src/runtime/engines/onnx-web/engine.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { BenchmarkResult } from "../../../types.js";
|
|
2
|
+
export interface EnginePlugin {
|
|
3
|
+
readonly name: string;
|
|
4
|
+
readonly displayName: string;
|
|
5
|
+
readonly priority: number;
|
|
6
|
+
detect(): Promise<boolean>;
|
|
7
|
+
detectInfo(): Promise<string>;
|
|
8
|
+
supportsModel(modelName: string): boolean;
|
|
9
|
+
benchmark(modelName: string, nTokens?: number): Promise<BenchmarkResult>;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=engine-plugin.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"engine-plugin.d.ts","sourceRoot":"","sources":["../../../../src/runtime/engines/registry/engine-plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEzD,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3B,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAC9B,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;IAC1C,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;CAC1E"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"engine-plugin.js","sourceRoot":"","sources":["../../../../src/runtime/engines/registry/engine-plugin.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @octomil/browser — Engine registry
|
|
3
|
+
*
|
|
4
|
+
* Minimal registry for discovering, benchmarking, and selecting inference
|
|
5
|
+
* engines. In the browser environment only ONNX Runtime (WebGPU / WASM) is
|
|
6
|
+
* available by default, but the registry allows third-party plugins to
|
|
7
|
+
* register additional backends.
|
|
8
|
+
*
|
|
9
|
+
* Matches the cross-platform SDK interface.
|
|
10
|
+
*/
|
|
11
|
+
import type { EnginePlugin } from "./engine-plugin.js";
|
|
12
|
+
import type { DetectionResult, RankedEngine } from "../../../types.js";
|
|
13
|
+
export declare class EngineRegistry {
|
|
14
|
+
private plugins;
|
|
15
|
+
/** Register an engine plugin. Replaces any existing plugin with the same name. */
|
|
16
|
+
register(plugin: EnginePlugin): void;
|
|
17
|
+
/** Remove a registered plugin by name. */
|
|
18
|
+
remove(name: string): boolean;
|
|
19
|
+
/** Get a registered plugin by name. */
|
|
20
|
+
get(name: string): EnginePlugin | undefined;
|
|
21
|
+
/** List all registered plugin names. */
|
|
22
|
+
get engines(): readonly string[];
|
|
23
|
+
/** Clear all registrations. */
|
|
24
|
+
reset(): void;
|
|
25
|
+
/** Detect which registered engines are available. */
|
|
26
|
+
detectAll(modelName?: string): Promise<DetectionResult[]>;
|
|
27
|
+
/** Benchmark available engines and return results sorted by throughput. */
|
|
28
|
+
benchmarkAll(modelName: string, nTokens?: number): Promise<RankedEngine[]>;
|
|
29
|
+
/** Pick the best engine from benchmark results (highest throughput, no error). */
|
|
30
|
+
selectBest(ranked: RankedEngine[]): RankedEngine | null;
|
|
31
|
+
/** Convenience: detect → benchmark → select in one call. */
|
|
32
|
+
autoSelect(modelName: string, nTokens?: number): Promise<RankedEngine | null>;
|
|
33
|
+
private sortedPlugins;
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=engine-registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"engine-registry.d.ts","sourceRoot":"","sources":["../../../../src/runtime/engines/registry/engine-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEvE,qBAAa,cAAc;IACzB,OAAO,CAAC,OAAO,CAAwC;IAEvD,kFAAkF;IAClF,QAAQ,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI;IAIpC,0CAA0C;IAC1C,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI7B,uCAAuC;IACvC,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAI3C,wCAAwC;IACxC,IAAI,OAAO,IAAI,SAAS,MAAM,EAAE,CAE/B;IAED,+BAA+B;IAC/B,KAAK,IAAI,IAAI;IAIb,qDAAqD;IAC/C,SAAS,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAe/D,2EAA2E;IACrE,YAAY,CAChB,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,YAAY,EAAE,CAAC;IAiB1B,kFAAkF;IAClF,UAAU,CAAC,MAAM,EAAE,YAAY,EAAE,GAAG,YAAY,GAAG,IAAI;IAIvD,4DAA4D;IACtD,UAAU,CACd,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAK/B,OAAO,CAAC,aAAa;CAGtB"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @octomil/browser — Engine registry
|
|
3
|
+
*
|
|
4
|
+
* Minimal registry for discovering, benchmarking, and selecting inference
|
|
5
|
+
* engines. In the browser environment only ONNX Runtime (WebGPU / WASM) is
|
|
6
|
+
* available by default, but the registry allows third-party plugins to
|
|
7
|
+
* register additional backends.
|
|
8
|
+
*
|
|
9
|
+
* Matches the cross-platform SDK interface.
|
|
10
|
+
*/
|
|
11
|
+
export class EngineRegistry {
|
|
12
|
+
plugins = new Map();
|
|
13
|
+
/** Register an engine plugin. Replaces any existing plugin with the same name. */
|
|
14
|
+
register(plugin) {
|
|
15
|
+
this.plugins.set(plugin.name, plugin);
|
|
16
|
+
}
|
|
17
|
+
/** Remove a registered plugin by name. */
|
|
18
|
+
remove(name) {
|
|
19
|
+
return this.plugins.delete(name);
|
|
20
|
+
}
|
|
21
|
+
/** Get a registered plugin by name. */
|
|
22
|
+
get(name) {
|
|
23
|
+
return this.plugins.get(name);
|
|
24
|
+
}
|
|
25
|
+
/** List all registered plugin names. */
|
|
26
|
+
get engines() {
|
|
27
|
+
return [...this.plugins.keys()];
|
|
28
|
+
}
|
|
29
|
+
/** Clear all registrations. */
|
|
30
|
+
reset() {
|
|
31
|
+
this.plugins.clear();
|
|
32
|
+
}
|
|
33
|
+
/** Detect which registered engines are available. */
|
|
34
|
+
async detectAll(modelName) {
|
|
35
|
+
const results = [];
|
|
36
|
+
for (const plugin of this.sortedPlugins()) {
|
|
37
|
+
const available = await plugin.detect();
|
|
38
|
+
const supportsModel = modelName ? plugin.supportsModel(modelName) : true;
|
|
39
|
+
const info = available ? await plugin.detectInfo() : "";
|
|
40
|
+
results.push({
|
|
41
|
+
engine: plugin.name,
|
|
42
|
+
available: available && supportsModel,
|
|
43
|
+
info,
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
return results;
|
|
47
|
+
}
|
|
48
|
+
/** Benchmark available engines and return results sorted by throughput. */
|
|
49
|
+
async benchmarkAll(modelName, nTokens) {
|
|
50
|
+
const detected = await this.detectAll(modelName);
|
|
51
|
+
const available = detected.filter((d) => d.available);
|
|
52
|
+
const ranked = [];
|
|
53
|
+
for (const det of available) {
|
|
54
|
+
const plugin = this.plugins.get(det.engine);
|
|
55
|
+
const result = await plugin.benchmark(modelName, nTokens);
|
|
56
|
+
ranked.push({ engine: det.engine, result });
|
|
57
|
+
}
|
|
58
|
+
ranked.sort((a, b) => b.result.tokens_per_second - a.result.tokens_per_second);
|
|
59
|
+
return ranked;
|
|
60
|
+
}
|
|
61
|
+
/** Pick the best engine from benchmark results (highest throughput, no error). */
|
|
62
|
+
selectBest(ranked) {
|
|
63
|
+
return ranked.find((r) => r.result.error == null) ?? null;
|
|
64
|
+
}
|
|
65
|
+
/** Convenience: detect → benchmark → select in one call. */
|
|
66
|
+
async autoSelect(modelName, nTokens) {
|
|
67
|
+
const ranked = await this.benchmarkAll(modelName, nTokens);
|
|
68
|
+
return this.selectBest(ranked);
|
|
69
|
+
}
|
|
70
|
+
sortedPlugins() {
|
|
71
|
+
return [...this.plugins.values()].sort((a, b) => a.priority - b.priority);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=engine-registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"engine-registry.js","sourceRoot":"","sources":["../../../../src/runtime/engines/registry/engine-registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/runtime/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AACvE,YAAY,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/runtime/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"secure-aggregation.d.ts","sourceRoot":"","sources":["../src/secure-aggregation.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"secure-aggregation.d.ts","sourceRoot":"","sources":["../src/secure-aggregation.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAO5C,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,OAAO,CAA8B;IAE7C,gDAAgD;IAC1C,eAAe,IAAI,OAAO,CAAC;QAAE,SAAS,EAAE,UAAU,CAAA;KAAE,CAAC;IAa3D,qDAAqD;IAC/C,kBAAkB,CAAC,gBAAgB,EAAE,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC;IAkB5E;;;OAGG;IACG,UAAU,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IA+B5E,iEAAiE;IACjE,UAAU,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,GAAG,SAAS;IAgBzE,6DAA6D;IAC7D,MAAM,CACJ,SAAS,EAAE,SAAS,EACpB,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,GACtC,SAAS;CAeb;AA0BD,MAAM,WAAW,WAAW;IAC1B,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX;AAED;;GAEG;AACH,wBAAgB,WAAW,CACzB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,GAChB,WAAW,EAAE,CAqBf;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,CA4B/D;AAMD,qBAAa,UAAW,SAAQ,iBAAiB;IAC/C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;gBAEvB,SAAS,EAAE,MAAM;IAK7B;;;OAGG;IACH,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,WAAW,EAAE;IAI5D,iEAAiE;IACjE,iBAAiB,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM;CASjD"}
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
* secret sharing, all via the Web Crypto API. Ensures the server
|
|
6
6
|
* only sees the aggregate of client updates, never individual deltas.
|
|
7
7
|
*/
|
|
8
|
+
import { OctomilError } from "./types.js";
|
|
8
9
|
// ---------------------------------------------------------------------------
|
|
9
10
|
// SecureAggregation (basic pairwise masking)
|
|
10
11
|
// ---------------------------------------------------------------------------
|
|
@@ -19,7 +20,7 @@ export class SecureAggregation {
|
|
|
19
20
|
/** Derive a shared secret with a peer using ECDH. */
|
|
20
21
|
async deriveSharedSecret(peerPublicKeyJwk) {
|
|
21
22
|
if (!this.keyPair) {
|
|
22
|
-
throw new
|
|
23
|
+
throw new OctomilError("INVALID_INPUT", "Call generateKeyPair() first.");
|
|
23
24
|
}
|
|
24
25
|
const peerKey = await crypto.subtle.importKey("jwk", peerPublicKeyJwk, { name: "ECDH", namedCurve: "P-256" }, false, []);
|
|
25
26
|
return crypto.subtle.deriveBits({ name: "ECDH", public: peerKey }, this.keyPair.privateKey, 256);
|
|
@@ -166,7 +167,7 @@ export class SecAggPlus extends SecureAggregation {
|
|
|
166
167
|
/** Reconstruct a dropped peer's secret from collected shares. */
|
|
167
168
|
reconstructSecret(shares) {
|
|
168
169
|
if (shares.length < this.threshold) {
|
|
169
|
-
throw new
|
|
170
|
+
throw new OctomilError("INVALID_INPUT", `Need at least ${this.threshold} shares, got ${shares.length}.`);
|
|
170
171
|
}
|
|
171
172
|
return shamirReconstruct(shares.slice(0, this.threshold));
|
|
172
173
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"secure-aggregation.js","sourceRoot":"","sources":["../src/secure-aggregation.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;
|
|
1
|
+
{"version":3,"file":"secure-aggregation.js","sourceRoot":"","sources":["../src/secure-aggregation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export interface ServerClientOptions {
|
|
2
|
+
serverUrl?: string;
|
|
3
|
+
apiKey?: string;
|
|
4
|
+
orgId?: string;
|
|
5
|
+
}
|
|
6
|
+
export type QueryValue = string | number | boolean | null | undefined;
|
|
7
|
+
export declare class ServerApiClient {
|
|
8
|
+
protected readonly serverUrl: string;
|
|
9
|
+
protected readonly apiKey: string | undefined;
|
|
10
|
+
protected readonly orgId: string | undefined;
|
|
11
|
+
constructor(options?: ServerClientOptions);
|
|
12
|
+
protected buildUrl(path: string, query?: Record<string, QueryValue>): string;
|
|
13
|
+
protected requestJson<T>(path: string, init?: RequestInit, query?: Record<string, QueryValue>): Promise<T>;
|
|
14
|
+
protected requestVoid(path: string, init?: RequestInit, query?: Record<string, QueryValue>): Promise<void>;
|
|
15
|
+
private request;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=server-api.d.ts.map
|