@elizaos/plugin-local-inference 2.0.0-beta.1 → 2.0.3-beta.2
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/LICENSE +21 -0
- package/README.md +83 -0
- package/package.json +82 -15
- package/src/actions/generate-media.d.ts +59 -0
- package/src/actions/generate-media.d.ts.map +1 -0
- package/src/actions/generate-media.ts +647 -0
- package/src/actions/identify-speaker.d.ts +23 -0
- package/src/actions/identify-speaker.d.ts.map +1 -0
- package/src/actions/identify-speaker.ts +171 -0
- package/src/actions/transcription-control.d.ts +29 -0
- package/src/actions/transcription-control.d.ts.map +1 -0
- package/src/actions/transcription-control.test.ts +100 -0
- package/src/actions/transcription-control.ts +127 -0
- package/src/adapters/capacitor-llama/__tests__/compat-behavior.test.ts +218 -0
- package/src/adapters/capacitor-llama/__tests__/index.test.ts +68 -0
- package/src/adapters/capacitor-llama/__tests__/structured-output.test.ts +215 -0
- package/src/adapters/capacitor-llama/__tests__/text-streaming.test.ts +174 -0
- package/src/adapters/capacitor-llama/environment.ts +71 -0
- package/src/adapters/capacitor-llama/index.browser.ts +83 -0
- package/src/adapters/capacitor-llama/index.ts +807 -0
- package/src/adapters/capacitor-llama/loader.ts +109 -0
- package/src/adapters/capacitor-llama/structured-output.ts +165 -0
- package/src/adapters/capacitor-llama/text-streaming.ts +227 -0
- package/src/adapters/capacitor-llama/types.ts +374 -0
- package/src/backends/apple-foundation.ts +127 -0
- package/src/index.d.ts +8 -0
- package/src/index.d.ts.map +1 -0
- package/src/index.ts +62 -0
- package/src/local-inference-routes.d.ts +38 -0
- package/src/local-inference-routes.d.ts.map +1 -0
- package/src/local-inference-routes.test.ts +344 -0
- package/src/local-inference-routes.ts +1543 -0
- package/src/provider.d.ts +21 -0
- package/src/provider.d.ts.map +1 -0
- package/src/provider.ts +1082 -0
- package/src/routes/compat-helpers.d.ts +18 -0
- package/src/routes/compat-helpers.d.ts.map +1 -0
- package/src/routes/compat-helpers.ts +274 -0
- package/src/routes/family-member-route.d.ts +62 -0
- package/src/routes/family-member-route.d.ts.map +1 -0
- package/src/routes/family-member-route.ts +353 -0
- package/src/routes/index.d.ts +19 -0
- package/src/routes/index.d.ts.map +1 -0
- package/src/routes/index.ts +60 -0
- package/src/routes/live-diarization-route.d.ts +26 -0
- package/src/routes/live-diarization-route.d.ts.map +1 -0
- package/src/routes/live-diarization-route.test.ts +213 -0
- package/src/routes/live-diarization-route.ts +122 -0
- package/src/routes/local-inference-asr-route.d.ts +4 -0
- package/src/routes/local-inference-asr-route.d.ts.map +1 -0
- package/src/routes/local-inference-asr-route.test.ts +205 -0
- package/src/routes/local-inference-asr-route.ts +163 -0
- package/src/routes/local-inference-asr-transcribe.d.ts +20 -0
- package/src/routes/local-inference-asr-transcribe.d.ts.map +1 -0
- package/src/routes/local-inference-asr-transcribe.test.ts +118 -0
- package/src/routes/local-inference-asr-transcribe.ts +97 -0
- package/src/routes/local-inference-compat-routes.d.ts +16 -0
- package/src/routes/local-inference-compat-routes.d.ts.map +1 -0
- package/src/routes/local-inference-compat-routes.test.ts +485 -0
- package/src/routes/local-inference-compat-routes.ts +808 -0
- package/src/routes/local-inference-tts-route.d.ts +7 -0
- package/src/routes/local-inference-tts-route.d.ts.map +1 -0
- package/src/routes/local-inference-tts-route.test.ts +179 -0
- package/src/routes/local-inference-tts-route.ts +230 -0
- package/src/routes/transcript-audio-store.d.ts +15 -0
- package/src/routes/transcript-audio-store.d.ts.map +1 -0
- package/src/routes/transcript-audio-store.ts +27 -0
- package/src/routes/transcripts-routes.d.ts +36 -0
- package/src/routes/transcripts-routes.d.ts.map +1 -0
- package/src/routes/transcripts-routes.test.ts +144 -0
- package/src/routes/transcripts-routes.ts +159 -0
- package/src/routes/voice-first-run-routes.d.ts +62 -0
- package/src/routes/voice-first-run-routes.d.ts.map +1 -0
- package/src/routes/voice-first-run-routes.ts +524 -0
- package/src/routes/voice-models-routes.d.ts +62 -0
- package/src/routes/voice-models-routes.d.ts.map +1 -0
- package/src/routes/voice-models-routes.ts +554 -0
- package/src/routes/voice-profile-plugin-routes.d.ts +19 -0
- package/src/routes/voice-profile-plugin-routes.d.ts.map +1 -0
- package/src/routes/voice-profile-plugin-routes.ts +138 -0
- package/src/routes/voice-profiles-management-routes.d.ts +52 -0
- package/src/routes/voice-profiles-management-routes.d.ts.map +1 -0
- package/src/routes/voice-profiles-management-routes.ts +476 -0
- package/src/routes/voice-speaker-profile-routes.d.ts +57 -0
- package/src/routes/voice-speaker-profile-routes.d.ts.map +1 -0
- package/src/routes/voice-speaker-profile-routes.ts +199 -0
- package/src/runtime/aosp-llama-loader-selection.test.ts +80 -0
- package/src/runtime/capacitor-llama.d.ts +25 -0
- package/src/runtime/embedding-manager-support.d.ts +77 -0
- package/src/runtime/embedding-manager-support.d.ts.map +1 -0
- package/src/runtime/embedding-manager-support.ts +497 -0
- package/src/runtime/embedding-presets.d.ts +16 -0
- package/src/runtime/embedding-presets.d.ts.map +1 -0
- package/src/runtime/embedding-presets.ts +81 -0
- package/src/runtime/embedding-warmup-policy.d.ts +14 -0
- package/src/runtime/embedding-warmup-policy.d.ts.map +1 -0
- package/src/runtime/embedding-warmup-policy.test.ts +53 -0
- package/src/runtime/embedding-warmup-policy.ts +48 -0
- package/src/runtime/ensure-local-inference-handler.d.ts +62 -0
- package/src/runtime/ensure-local-inference-handler.d.ts.map +1 -0
- package/src/runtime/ensure-local-inference-handler.test.ts +528 -0
- package/src/runtime/ensure-local-inference-handler.ts +1448 -0
- package/src/runtime/index.d.ts +15 -0
- package/src/runtime/index.d.ts.map +1 -0
- package/src/runtime/index.ts +33 -0
- package/src/runtime/mobile-local-inference-gate.d.ts +31 -0
- package/src/runtime/mobile-local-inference-gate.d.ts.map +1 -0
- package/src/runtime/mobile-local-inference-gate.test.ts +69 -0
- package/src/runtime/mobile-local-inference-gate.ts +44 -0
- package/src/runtime/voice-entity-binding.d.ts +103 -0
- package/src/runtime/voice-entity-binding.d.ts.map +1 -0
- package/src/runtime/voice-entity-binding.transcript.test.ts +69 -0
- package/src/runtime/voice-entity-binding.ts +328 -0
- package/src/services/README.md +71 -0
- package/src/services/__tests__/backend-selector.test.ts +101 -0
- package/src/services/__tests__/checkpoint-manager.test.ts +376 -0
- package/src/services/__tests__/gpu-autotune.test.ts +400 -0
- package/src/services/__tests__/llm-streaming-binding.test.ts +85 -0
- package/src/services/__tests__/planner-grammar.test.ts +372 -0
- package/src/services/__tests__/runtime-target.test.ts +176 -0
- package/src/services/active-model-switch-rollback.test.ts +183 -0
- package/src/services/active-model.d.ts +282 -0
- package/src/services/active-model.d.ts.map +1 -0
- package/src/services/active-model.ts +1213 -0
- package/src/services/assignments.d.ts +71 -0
- package/src/services/assignments.d.ts.map +1 -0
- package/src/services/assignments.test.ts +80 -0
- package/src/services/assignments.ts +230 -0
- package/src/services/backend-selector.ts +95 -0
- package/src/services/backend.d.ts +346 -0
- package/src/services/backend.d.ts.map +1 -0
- package/src/services/backend.ts +612 -0
- package/src/services/bionic-host-loader.d.ts +46 -0
- package/src/services/bionic-host-loader.d.ts.map +1 -0
- package/src/services/bionic-host-loader.test.ts +133 -0
- package/src/services/bionic-host-loader.ts +180 -0
- package/src/services/bundled-models.d.ts +34 -0
- package/src/services/bundled-models.d.ts.map +1 -0
- package/src/services/bundled-models.ts +129 -0
- package/src/services/cache-bridge.d.ts +206 -0
- package/src/services/cache-bridge.d.ts.map +1 -0
- package/src/services/cache-bridge.test.ts +516 -0
- package/src/services/cache-bridge.ts +423 -0
- package/src/services/catalog.d.ts +10 -0
- package/src/services/catalog.d.ts.map +1 -0
- package/src/services/catalog.test.ts +238 -0
- package/src/services/catalog.ts +27 -0
- package/src/services/checkpoint-client.d.ts +109 -0
- package/src/services/checkpoint-client.d.ts.map +1 -0
- package/src/services/checkpoint-client.ts +258 -0
- package/src/services/checkpoint-manager.ts +474 -0
- package/src/services/cloud-fallback.d.ts +102 -0
- package/src/services/cloud-fallback.d.ts.map +1 -0
- package/src/services/cloud-fallback.ts +230 -0
- package/src/services/conversation-registry.d.ts +142 -0
- package/src/services/conversation-registry.d.ts.map +1 -0
- package/src/services/conversation-registry.test.ts +235 -0
- package/src/services/conversation-registry.ts +264 -0
- package/src/services/desktop-fused-ffi-backend-runtime.d.ts +95 -0
- package/src/services/desktop-fused-ffi-backend-runtime.d.ts.map +1 -0
- package/src/services/desktop-fused-ffi-backend-runtime.ts +339 -0
- package/src/services/device-bridge.d.ts +188 -0
- package/src/services/device-bridge.d.ts.map +1 -0
- package/src/services/device-bridge.ts +1237 -0
- package/src/services/device-resource-metrics.d.ts +149 -0
- package/src/services/device-resource-metrics.d.ts.map +1 -0
- package/src/services/device-resource-metrics.test.ts +98 -0
- package/src/services/device-resource-metrics.ts +346 -0
- package/src/services/device-tier.d.ts +115 -0
- package/src/services/device-tier.d.ts.map +1 -0
- package/src/services/device-tier.test.ts +371 -0
- package/src/services/device-tier.ts +410 -0
- package/src/services/downloader.d.ts +82 -0
- package/src/services/downloader.d.ts.map +1 -0
- package/src/services/downloader.test.ts +747 -0
- package/src/services/downloader.ts +925 -0
- package/src/services/engine-direct-bundle.test.ts +58 -0
- package/src/services/engine-streaming.test.ts +80 -0
- package/src/services/engine.d.ts +540 -0
- package/src/services/engine.d.ts.map +1 -0
- package/src/services/engine.ts +1909 -0
- package/src/services/ensure-local-artifacts.integration.test.ts +273 -0
- package/src/services/ensure-local-artifacts.test.ts +368 -0
- package/src/services/ensure-local-artifacts.ts +351 -0
- package/src/services/external-scanner.d.ts +17 -0
- package/src/services/external-scanner.d.ts.map +1 -0
- package/src/services/external-scanner.ts +312 -0
- package/src/services/ffi-llm-mock.ts +354 -0
- package/src/services/ffi-llm-streaming-abi.ts +442 -0
- package/src/services/ffi-streaming-backend.d.ts +180 -0
- package/src/services/ffi-streaming-backend.d.ts.map +1 -0
- package/src/services/ffi-streaming-backend.ts +382 -0
- package/src/services/ffi-streaming-runner.d.ts +122 -0
- package/src/services/ffi-streaming-runner.d.ts.map +1 -0
- package/src/services/ffi-streaming-runner.test.ts +60 -0
- package/src/services/ffi-streaming-runner.ts +354 -0
- package/src/services/ffi-unload-ordering.test.ts +162 -0
- package/src/services/gpu-autotune.ts +534 -0
- package/src/services/gpu-detect.d.ts +56 -0
- package/src/services/gpu-detect.d.ts.map +1 -0
- package/src/services/gpu-detect.ts +139 -0
- package/src/services/handler-registry.d.ts +72 -0
- package/src/services/handler-registry.d.ts.map +1 -0
- package/src/services/handler-registry.ts +240 -0
- package/src/services/hardware.d.ts +63 -0
- package/src/services/hardware.d.ts.map +1 -0
- package/src/services/hardware.test.ts +231 -0
- package/src/services/hardware.ts +410 -0
- package/src/services/hf-search.d.ts +26 -0
- package/src/services/hf-search.d.ts.map +1 -0
- package/src/services/hf-search.test.ts +69 -0
- package/src/services/hf-search.ts +420 -0
- package/src/services/image-description-runtime.d.ts +14 -0
- package/src/services/image-description-runtime.d.ts.map +1 -0
- package/src/services/image-description-runtime.test.ts +61 -0
- package/src/services/image-description-runtime.ts +118 -0
- package/src/services/imagegen/aosp-unavailable.d.ts +134 -0
- package/src/services/imagegen/aosp-unavailable.d.ts.map +1 -0
- package/src/services/imagegen/aosp-unavailable.ts +229 -0
- package/src/services/imagegen/backend-selector.d.ts +118 -0
- package/src/services/imagegen/backend-selector.d.ts.map +1 -0
- package/src/services/imagegen/backend-selector.ts +277 -0
- package/src/services/imagegen/coreml-unavailable.d.ts +105 -0
- package/src/services/imagegen/coreml-unavailable.d.ts.map +1 -0
- package/src/services/imagegen/coreml-unavailable.ts +237 -0
- package/src/services/imagegen/errors.d.ts +16 -0
- package/src/services/imagegen/errors.d.ts.map +1 -0
- package/src/services/imagegen/errors.ts +40 -0
- package/src/services/imagegen/index.d.ts +58 -0
- package/src/services/imagegen/index.d.ts.map +1 -0
- package/src/services/imagegen/index.ts +144 -0
- package/src/services/imagegen/mflux.d.ts +74 -0
- package/src/services/imagegen/mflux.d.ts.map +1 -0
- package/src/services/imagegen/mflux.ts +313 -0
- package/src/services/imagegen/sd-cpp.d.ts +180 -0
- package/src/services/imagegen/sd-cpp.d.ts.map +1 -0
- package/src/services/imagegen/sd-cpp.ts +718 -0
- package/src/services/imagegen/tensorrt-unavailable.d.ts +83 -0
- package/src/services/imagegen/tensorrt-unavailable.d.ts.map +1 -0
- package/src/services/imagegen/tensorrt-unavailable.ts +295 -0
- package/src/services/imagegen/types.d.ts +181 -0
- package/src/services/imagegen/types.d.ts.map +1 -0
- package/src/services/imagegen/types.ts +193 -0
- package/src/services/index.d.ts +29 -0
- package/src/services/index.d.ts.map +1 -0
- package/src/services/index.ts +211 -0
- package/src/services/inference-capabilities.d.ts +132 -0
- package/src/services/inference-capabilities.d.ts.map +1 -0
- package/src/services/inference-capabilities.test.ts +75 -0
- package/src/services/inference-capabilities.ts +204 -0
- package/src/services/inference-telemetry.d.ts +59 -0
- package/src/services/inference-telemetry.d.ts.map +1 -0
- package/src/services/inference-telemetry.ts +143 -0
- package/src/services/ios-llama-streaming.ts +248 -0
- package/src/services/kv-spill.d.ts +189 -0
- package/src/services/kv-spill.d.ts.map +1 -0
- package/src/services/kv-spill.test.ts +222 -0
- package/src/services/kv-spill.ts +356 -0
- package/src/services/latency-trace.d.ts +346 -0
- package/src/services/latency-trace.d.ts.map +1 -0
- package/src/services/latency-trace.test.ts +266 -0
- package/src/services/latency-trace.ts +844 -0
- package/src/services/llama-server-metrics.ts +304 -0
- package/src/services/llm-streaming-binding.d.ts +96 -0
- package/src/services/llm-streaming-binding.d.ts.map +1 -0
- package/src/services/llm-streaming-binding.ts +136 -0
- package/src/services/load-args.d.ts +82 -0
- package/src/services/load-args.d.ts.map +1 -0
- package/src/services/load-args.ts +81 -0
- package/src/services/manifest/eliza-1.manifest.v1.json +708 -0
- package/src/services/manifest/index.d.ts +4 -0
- package/src/services/manifest/index.d.ts.map +1 -0
- package/src/services/manifest/index.ts +66 -0
- package/src/services/manifest/manifest.test.ts +689 -0
- package/src/services/manifest/schema.d.ts +713 -0
- package/src/services/manifest/schema.d.ts.map +1 -0
- package/src/services/manifest/schema.ts +653 -0
- package/src/services/manifest/types.d.ts +30 -0
- package/src/services/manifest/types.d.ts.map +1 -0
- package/src/services/manifest/types.ts +55 -0
- package/src/services/manifest/validator.d.ts +66 -0
- package/src/services/manifest/validator.d.ts.map +1 -0
- package/src/services/manifest/validator.ts +567 -0
- package/src/services/memory-arbiter.d.ts +318 -0
- package/src/services/memory-arbiter.d.ts.map +1 -0
- package/src/services/memory-arbiter.test.ts +419 -0
- package/src/services/memory-arbiter.ts +925 -0
- package/src/services/memory-monitor.d.ts +122 -0
- package/src/services/memory-monitor.d.ts.map +1 -0
- package/src/services/memory-monitor.test.ts +208 -0
- package/src/services/memory-monitor.ts +297 -0
- package/src/services/memory-pressure.d.ts +130 -0
- package/src/services/memory-pressure.d.ts.map +1 -0
- package/src/services/memory-pressure.ts +414 -0
- package/src/services/mtp-doctor.d.ts +13 -0
- package/src/services/mtp-doctor.d.ts.map +1 -0
- package/src/services/mtp-doctor.ts +78 -0
- package/src/services/network-policy.d.ts +127 -0
- package/src/services/network-policy.d.ts.map +1 -0
- package/src/services/network-policy.ts +346 -0
- package/src/services/paths.d.ts +6 -0
- package/src/services/paths.d.ts.map +1 -0
- package/src/services/paths.ts +25 -0
- package/src/services/planner-skeleton.d.ts +124 -0
- package/src/services/planner-skeleton.d.ts.map +1 -0
- package/src/services/planner-skeleton.ts +175 -0
- package/src/services/providers.d.ts +38 -0
- package/src/services/providers.d.ts.map +1 -0
- package/src/services/providers.ts +507 -0
- package/src/services/ram-budget-cache.test.ts +163 -0
- package/src/services/ram-budget.d.ts +110 -0
- package/src/services/ram-budget.d.ts.map +1 -0
- package/src/services/ram-budget.ts +0 -0
- package/src/services/readiness.d.ts +9 -0
- package/src/services/readiness.d.ts.map +1 -0
- package/src/services/readiness.test.ts +87 -0
- package/src/services/readiness.ts +238 -0
- package/src/services/recommendation.d.ts +111 -0
- package/src/services/recommendation.d.ts.map +1 -0
- package/src/services/recommendation.ts +671 -0
- package/src/services/registry.d.ts +35 -0
- package/src/services/registry.d.ts.map +1 -0
- package/src/services/registry.ts +151 -0
- package/src/services/router-handler.d.ts +92 -0
- package/src/services/router-handler.d.ts.map +1 -0
- package/src/services/router-handler.test.ts +45 -0
- package/src/services/router-handler.ts +407 -0
- package/src/services/routing-policy.d.ts +69 -0
- package/src/services/routing-policy.d.ts.map +1 -0
- package/src/services/routing-policy.test.ts +164 -0
- package/src/services/routing-policy.ts +297 -0
- package/src/services/routing-preferences.d.ts +8 -0
- package/src/services/routing-preferences.d.ts.map +1 -0
- package/src/services/routing-preferences.ts +17 -0
- package/src/services/runtime-target.d.ts +98 -0
- package/src/services/runtime-target.d.ts.map +1 -0
- package/src/services/runtime-target.ts +154 -0
- package/src/services/service.d.ts +128 -0
- package/src/services/service.d.ts.map +1 -0
- package/src/services/service.test.ts +223 -0
- package/src/services/service.ts +735 -0
- package/src/services/session-pool.d.ts +72 -0
- package/src/services/session-pool.d.ts.map +1 -0
- package/src/services/session-pool.ts +153 -0
- package/src/services/structured-output/deterministic-repair.d.ts +23 -0
- package/src/services/structured-output/deterministic-repair.d.ts.map +1 -0
- package/src/services/structured-output/deterministic-repair.test.ts +169 -0
- package/src/services/structured-output/deterministic-repair.ts +443 -0
- package/src/services/structured-output/index.ts +4 -0
- package/src/services/structured-output.d.ts +311 -0
- package/src/services/structured-output.d.ts.map +1 -0
- package/src/services/structured-output.test.ts +483 -0
- package/src/services/structured-output.ts +712 -0
- package/src/services/system-memory.d.ts +33 -0
- package/src/services/system-memory.d.ts.map +1 -0
- package/src/services/system-memory.test.ts +47 -0
- package/src/services/system-memory.ts +67 -0
- package/src/services/transcription-priority.test.ts +211 -0
- package/src/services/types.d.ts +19 -0
- package/src/services/types.d.ts.map +1 -0
- package/src/services/types.ts +55 -0
- package/src/services/verify-on-device.d.ts +34 -0
- package/src/services/verify-on-device.d.ts.map +1 -0
- package/src/services/verify-on-device.test.ts +87 -0
- package/src/services/verify-on-device.ts +127 -0
- package/src/services/verify.d.ts +8 -0
- package/src/services/verify.d.ts.map +1 -0
- package/src/services/verify.ts +13 -0
- package/src/services/vision/aosp-unavailable.d.ts +115 -0
- package/src/services/vision/aosp-unavailable.d.ts.map +1 -0
- package/src/services/vision/aosp-unavailable.ts +163 -0
- package/src/services/vision/capacitor-llama.d.ts +99 -0
- package/src/services/vision/capacitor-llama.d.ts.map +1 -0
- package/src/services/vision/capacitor-llama.ts +255 -0
- package/src/services/vision/cloud-fallback.d.ts +47 -0
- package/src/services/vision/cloud-fallback.d.ts.map +1 -0
- package/src/services/vision/cloud-fallback.test.ts +243 -0
- package/src/services/vision/cloud-fallback.ts +268 -0
- package/src/services/vision/fallback-chain.test.ts +86 -0
- package/src/services/vision/hash.d.ts +71 -0
- package/src/services/vision/hash.d.ts.map +1 -0
- package/src/services/vision/hash.ts +157 -0
- package/src/services/vision/index.d.ts +95 -0
- package/src/services/vision/index.d.ts.map +1 -0
- package/src/services/vision/index.ts +251 -0
- package/src/services/vision/llama-server.d.ts +73 -0
- package/src/services/vision/llama-server.d.ts.map +1 -0
- package/src/services/vision/llama-server.ts +177 -0
- package/src/services/vision/types.d.ts +153 -0
- package/src/services/vision/types.d.ts.map +1 -0
- package/src/services/vision/types.ts +154 -0
- package/src/services/vision/vast-fallback.d.ts +18 -0
- package/src/services/vision/vast-fallback.d.ts.map +1 -0
- package/src/services/vision/vast-fallback.ts +127 -0
- package/src/services/vision-embedding-cache.d.ts +98 -0
- package/src/services/vision-embedding-cache.d.ts.map +1 -0
- package/src/services/vision-embedding-cache.ts +189 -0
- package/src/services/voice/VOICE_WORKBENCH.md +88 -0
- package/src/services/voice/__test-helpers__/fake-ffi.ts +94 -0
- package/src/services/voice/__test-helpers__/synthetic-speech.ts +124 -0
- package/src/services/voice/__tests__/checkpoint-manager.test.ts +241 -0
- package/src/services/voice/__tests__/checkpoint-policy.test.ts +270 -0
- package/src/services/voice/__tests__/eager-context-builder.test.ts +257 -0
- package/src/services/voice/__tests__/eliza1-eot-scorer.test.ts +288 -0
- package/src/services/voice/__tests__/eot-classifier.test.ts +431 -0
- package/src/services/voice/__tests__/optimistic-rollback.test.ts +312 -0
- package/src/services/voice/__tests__/prefill-client.test.ts +266 -0
- package/src/services/voice/__tests__/prefix-preserving-queue.test.ts +208 -0
- package/src/services/voice/__tests__/streaming-asr.test.ts +450 -0
- package/src/services/voice/__tests__/streaming-transcriber.test.ts +339 -0
- package/src/services/voice/__tests__/turn-detector-resolver.test.ts +195 -0
- package/src/services/voice/__tests__/voice-state-machine-prefill.test.ts +275 -0
- package/src/services/voice/__tests__/voice-state-machine.test.ts +354 -0
- package/src/services/voice/asr-timed.real.test.ts +141 -0
- package/src/services/voice/audio-frame-consumer.d.ts +212 -0
- package/src/services/voice/audio-frame-consumer.d.ts.map +1 -0
- package/src/services/voice/audio-frame-consumer.test.ts +343 -0
- package/src/services/voice/audio-frame-consumer.ts +491 -0
- package/src/services/voice/barge-in.d.ts +112 -0
- package/src/services/voice/barge-in.d.ts.map +1 -0
- package/src/services/voice/barge-in.test.ts +244 -0
- package/src/services/voice/barge-in.ts +336 -0
- package/src/services/voice/cancellation-coordinator.d.ts +127 -0
- package/src/services/voice/cancellation-coordinator.d.ts.map +1 -0
- package/src/services/voice/cancellation-coordinator.test.ts +196 -0
- package/src/services/voice/cancellation-coordinator.ts +269 -0
- package/src/services/voice/checkpoint-manager.d.ts +199 -0
- package/src/services/voice/checkpoint-manager.d.ts.map +1 -0
- package/src/services/voice/checkpoint-manager.ts +401 -0
- package/src/services/voice/checkpoint-policy.ts +336 -0
- package/src/services/voice/composite-eot-classifier.test.ts +59 -0
- package/src/services/voice/e2e-harness.test.ts +182 -0
- package/src/services/voice/e2e-harness.ts +743 -0
- package/src/services/voice/eager-context-builder.d.ts +170 -0
- package/src/services/voice/eager-context-builder.d.ts.map +1 -0
- package/src/services/voice/eager-context-builder.ts +262 -0
- package/src/services/voice/eliza1-eot-scorer.d.ts +124 -0
- package/src/services/voice/eliza1-eot-scorer.d.ts.map +1 -0
- package/src/services/voice/eliza1-eot-scorer.ts +242 -0
- package/src/services/voice/embedding-server.ts +200 -0
- package/src/services/voice/embedding.d.ts +133 -0
- package/src/services/voice/embedding.d.ts.map +1 -0
- package/src/services/voice/embedding.test.ts +131 -0
- package/src/services/voice/embedding.ts +243 -0
- package/src/services/voice/emotion-attribution.d.ts +68 -0
- package/src/services/voice/emotion-attribution.d.ts.map +1 -0
- package/src/services/voice/emotion-attribution.test.ts +129 -0
- package/src/services/voice/emotion-attribution.ts +361 -0
- package/src/services/voice/engine-bridge-cancellation.test.ts +422 -0
- package/src/services/voice/engine-bridge.d.ts +759 -0
- package/src/services/voice/engine-bridge.d.ts.map +1 -0
- package/src/services/voice/engine-bridge.test.ts +384 -0
- package/src/services/voice/engine-bridge.ts +2302 -0
- package/src/services/voice/eot-classifier-ggml.d.ts +179 -0
- package/src/services/voice/eot-classifier-ggml.d.ts.map +1 -0
- package/src/services/voice/eot-classifier-ggml.ts +566 -0
- package/src/services/voice/eot-classifier.d.ts +214 -0
- package/src/services/voice/eot-classifier.d.ts.map +1 -0
- package/src/services/voice/eot-classifier.ts +533 -0
- package/src/services/voice/errors.d.ts +20 -0
- package/src/services/voice/errors.d.ts.map +1 -0
- package/src/services/voice/errors.ts +32 -0
- package/src/services/voice/expressive-tags.d.ts +158 -0
- package/src/services/voice/expressive-tags.d.ts.map +1 -0
- package/src/services/voice/expressive-tags.ts +405 -0
- package/src/services/voice/ffi-bindings.d.ts +674 -0
- package/src/services/voice/ffi-bindings.d.ts.map +1 -0
- package/src/services/voice/ffi-bindings.test.ts +728 -0
- package/src/services/voice/ffi-bindings.ts +3225 -0
- package/src/services/voice/first-line-cache.d.ts +181 -0
- package/src/services/voice/first-line-cache.d.ts.map +1 -0
- package/src/services/voice/first-line-cache.ts +725 -0
- package/src/services/voice/fused-eot-scorer.d.ts +51 -0
- package/src/services/voice/fused-eot-scorer.d.ts.map +1 -0
- package/src/services/voice/fused-eot-scorer.ts +135 -0
- package/src/services/voice/index.d.ts +91 -0
- package/src/services/voice/index.d.ts.map +1 -0
- package/src/services/voice/index.ts +481 -0
- package/src/services/voice/kokoro/__tests__/kokoro-backend.test.ts +151 -0
- package/src/services/voice/kokoro/__tests__/kokoro-engine-bridge.real.test.ts +151 -0
- package/src/services/voice/kokoro/__tests__/kokoro-engine-bridge.test.ts +60 -0
- package/src/services/voice/kokoro/__tests__/kokoro-engine-discovery.test.ts +277 -0
- package/src/services/voice/kokoro/__tests__/kokoro-ffi-runtime.test.ts +235 -0
- package/src/services/voice/kokoro/__tests__/kokoro-runtime.test.ts +95 -0
- package/src/services/voice/kokoro/__tests__/phonemizer.test.ts +53 -0
- package/src/services/voice/kokoro/__tests__/runtime-selection.test.ts +231 -0
- package/src/services/voice/kokoro/__tests__/voices.test.ts +57 -0
- package/src/services/voice/kokoro/index.ts +79 -0
- package/src/services/voice/kokoro/kokoro-backend.d.ts +72 -0
- package/src/services/voice/kokoro/kokoro-backend.d.ts.map +1 -0
- package/src/services/voice/kokoro/kokoro-backend.ts +207 -0
- package/src/services/voice/kokoro/kokoro-engine-discovery.d.ts +58 -0
- package/src/services/voice/kokoro/kokoro-engine-discovery.d.ts.map +1 -0
- package/src/services/voice/kokoro/kokoro-engine-discovery.ts +177 -0
- package/src/services/voice/kokoro/kokoro-ffi-runtime.d.ts +75 -0
- package/src/services/voice/kokoro/kokoro-ffi-runtime.d.ts.map +1 -0
- package/src/services/voice/kokoro/kokoro-ffi-runtime.ts +233 -0
- package/src/services/voice/kokoro/kokoro-runtime.d.ts +100 -0
- package/src/services/voice/kokoro/kokoro-runtime.d.ts.map +1 -0
- package/src/services/voice/kokoro/kokoro-runtime.ts +170 -0
- package/src/services/voice/kokoro/phoneme-stream.ts +123 -0
- package/src/services/voice/kokoro/phonemizer.d.ts +50 -0
- package/src/services/voice/kokoro/phonemizer.d.ts.map +1 -0
- package/src/services/voice/kokoro/phonemizer.ts +344 -0
- package/src/services/voice/kokoro/pick-runtime.d.ts +61 -0
- package/src/services/voice/kokoro/pick-runtime.d.ts.map +1 -0
- package/src/services/voice/kokoro/pick-runtime.test.ts +91 -0
- package/src/services/voice/kokoro/pick-runtime.ts +130 -0
- package/src/services/voice/kokoro/runtime-selection.d.ts +92 -0
- package/src/services/voice/kokoro/runtime-selection.d.ts.map +1 -0
- package/src/services/voice/kokoro/runtime-selection.ts +237 -0
- package/src/services/voice/kokoro/types.d.ts +82 -0
- package/src/services/voice/kokoro/types.d.ts.map +1 -0
- package/src/services/voice/kokoro/types.ts +95 -0
- package/src/services/voice/kokoro/voice-presets.d.ts +23 -0
- package/src/services/voice/kokoro/voice-presets.d.ts.map +1 -0
- package/src/services/voice/kokoro/voice-presets.ts +129 -0
- package/src/services/voice/kokoro/voices.d.ts +30 -0
- package/src/services/voice/kokoro/voices.d.ts.map +1 -0
- package/src/services/voice/kokoro/voices.ts +64 -0
- package/src/services/voice/lifecycle.d.ts +135 -0
- package/src/services/voice/lifecycle.d.ts.map +1 -0
- package/src/services/voice/lifecycle.test.ts +315 -0
- package/src/services/voice/lifecycle.ts +301 -0
- package/src/services/voice/live-diarization-session.d.ts +96 -0
- package/src/services/voice/live-diarization-session.d.ts.map +1 -0
- package/src/services/voice/live-diarization-session.ts +289 -0
- package/src/services/voice/mic-source.d.ts +136 -0
- package/src/services/voice/mic-source.d.ts.map +1 -0
- package/src/services/voice/mic-source.test.ts +210 -0
- package/src/services/voice/mic-source.ts +503 -0
- package/src/services/voice/optimistic-policy.d.ts +109 -0
- package/src/services/voice/optimistic-policy.d.ts.map +1 -0
- package/src/services/voice/optimistic-policy.test.ts +101 -0
- package/src/services/voice/optimistic-policy.ts +192 -0
- package/src/services/voice/optimistic-rollback.ts +343 -0
- package/src/services/voice/partial-stabilizer.d.ts +73 -0
- package/src/services/voice/partial-stabilizer.d.ts.map +1 -0
- package/src/services/voice/partial-stabilizer.test.ts +68 -0
- package/src/services/voice/partial-stabilizer.ts +140 -0
- package/src/services/voice/phoneme-tokenizer.d.ts +49 -0
- package/src/services/voice/phoneme-tokenizer.d.ts.map +1 -0
- package/src/services/voice/phoneme-tokenizer.ts +158 -0
- package/src/services/voice/phrase-cache.d.ts +76 -0
- package/src/services/voice/phrase-cache.d.ts.map +1 -0
- package/src/services/voice/phrase-cache.test.ts +242 -0
- package/src/services/voice/phrase-cache.ts +186 -0
- package/src/services/voice/phrase-chunker.d.ts +62 -0
- package/src/services/voice/phrase-chunker.d.ts.map +1 -0
- package/src/services/voice/phrase-chunker.test.ts +239 -0
- package/src/services/voice/phrase-chunker.ts +281 -0
- package/src/services/voice/pipeline-impls.d.ts +151 -0
- package/src/services/voice/pipeline-impls.d.ts.map +1 -0
- package/src/services/voice/pipeline-impls.l6.test.ts +110 -0
- package/src/services/voice/pipeline-impls.test.ts +292 -0
- package/src/services/voice/pipeline-impls.ts +315 -0
- package/src/services/voice/pipeline.d.ts +216 -0
- package/src/services/voice/pipeline.d.ts.map +1 -0
- package/src/services/voice/pipeline.ts +505 -0
- package/src/services/voice/prefill-client.d.ts +123 -0
- package/src/services/voice/prefill-client.d.ts.map +1 -0
- package/src/services/voice/prefill-client.ts +316 -0
- package/src/services/voice/prefix-preserving-queue.d.ts +113 -0
- package/src/services/voice/prefix-preserving-queue.d.ts.map +1 -0
- package/src/services/voice/prefix-preserving-queue.ts +162 -0
- package/src/services/voice/profile-store.d.ts +248 -0
- package/src/services/voice/profile-store.d.ts.map +1 -0
- package/src/services/voice/profile-store.ts +887 -0
- package/src/services/voice/real-audio-decode.test.ts +148 -0
- package/src/services/voice/ring-buffer.d.ts +40 -0
- package/src/services/voice/ring-buffer.d.ts.map +1 -0
- package/src/services/voice/ring-buffer.test.ts +129 -0
- package/src/services/voice/ring-buffer.ts +123 -0
- package/src/services/voice/rollback-queue.d.ts +24 -0
- package/src/services/voice/rollback-queue.d.ts.map +1 -0
- package/src/services/voice/rollback-queue.ts +74 -0
- package/src/services/voice/samantha-preset-placeholder.d.ts +67 -0
- package/src/services/voice/samantha-preset-placeholder.d.ts.map +1 -0
- package/src/services/voice/samantha-preset-placeholder.test.ts +97 -0
- package/src/services/voice/samantha-preset-placeholder.ts +148 -0
- package/src/services/voice/samantha-preset-regenerator.d.ts +87 -0
- package/src/services/voice/samantha-preset-regenerator.d.ts.map +1 -0
- package/src/services/voice/samantha-preset-regenerator.ts +393 -0
- package/src/services/voice/scheduler.d.ts +146 -0
- package/src/services/voice/scheduler.d.ts.map +1 -0
- package/src/services/voice/scheduler.t2.test.ts +141 -0
- package/src/services/voice/scheduler.ts +927 -0
- package/src/services/voice/shared-resources.d.ts +190 -0
- package/src/services/voice/shared-resources.d.ts.map +1 -0
- package/src/services/voice/shared-resources.ts +320 -0
- package/src/services/voice/speaker/attribution-pipeline.d.ts +74 -0
- package/src/services/voice/speaker/attribution-pipeline.d.ts.map +1 -0
- package/src/services/voice/speaker/attribution-pipeline.ts +386 -0
- package/src/services/voice/speaker/diarizer-fused.d.ts +59 -0
- package/src/services/voice/speaker/diarizer-fused.d.ts.map +1 -0
- package/src/services/voice/speaker/diarizer-fused.real.test.ts +100 -0
- package/src/services/voice/speaker/diarizer-fused.ts +154 -0
- package/src/services/voice/speaker/diarizer.d.ts +75 -0
- package/src/services/voice/speaker/diarizer.d.ts.map +1 -0
- package/src/services/voice/speaker/diarizer.ts +218 -0
- package/src/services/voice/speaker/encoder-fused.d.ts +60 -0
- package/src/services/voice/speaker/encoder-fused.d.ts.map +1 -0
- package/src/services/voice/speaker/encoder-fused.real.test.ts +113 -0
- package/src/services/voice/speaker/encoder-fused.ts +138 -0
- package/src/services/voice/speaker/encoder-ggml.d.ts +33 -0
- package/src/services/voice/speaker/encoder-ggml.d.ts.map +1 -0
- package/src/services/voice/speaker/encoder-ggml.ts +79 -0
- package/src/services/voice/speaker/encoder.d.ts +37 -0
- package/src/services/voice/speaker/encoder.d.ts.map +1 -0
- package/src/services/voice/speaker/encoder.ts +105 -0
- package/src/services/voice/speaker-imprint.d.ts +83 -0
- package/src/services/voice/speaker-imprint.d.ts.map +1 -0
- package/src/services/voice/speaker-imprint.test.ts +185 -0
- package/src/services/voice/speaker-imprint.ts +312 -0
- package/src/services/voice/speaker-preset-cache.d.ts +77 -0
- package/src/services/voice/speaker-preset-cache.d.ts.map +1 -0
- package/src/services/voice/speaker-preset-cache.test.ts +154 -0
- package/src/services/voice/speaker-preset-cache.ts +195 -0
- package/src/services/voice/streaming-asr/streaming-pipeline-adapter.ts +292 -0
- package/src/services/voice/system-audio-sink.d.ts +73 -0
- package/src/services/voice/system-audio-sink.d.ts.map +1 -0
- package/src/services/voice/system-audio-sink.test.ts +29 -0
- package/src/services/voice/system-audio-sink.ts +366 -0
- package/src/services/voice/transcriber.d.ts +244 -0
- package/src/services/voice/transcriber.d.ts.map +1 -0
- package/src/services/voice/transcriber.test.ts +392 -0
- package/src/services/voice/transcriber.ts +704 -0
- package/src/services/voice/transcript-knowledge.d.ts +37 -0
- package/src/services/voice/transcript-knowledge.d.ts.map +1 -0
- package/src/services/voice/transcript-knowledge.test.ts +68 -0
- package/src/services/voice/transcript-knowledge.ts +75 -0
- package/src/services/voice/transcript-service.d.ts +41 -0
- package/src/services/voice/transcript-service.d.ts.map +1 -0
- package/src/services/voice/transcript-service.test.ts +137 -0
- package/src/services/voice/transcript-service.ts +141 -0
- package/src/services/voice/transcript-store.d.ts +53 -0
- package/src/services/voice/transcript-store.d.ts.map +1 -0
- package/src/services/voice/transcript-store.test.ts +153 -0
- package/src/services/voice/transcript-store.ts +132 -0
- package/src/services/voice/turn-controller.d.ts +183 -0
- package/src/services/voice/turn-controller.d.ts.map +1 -0
- package/src/services/voice/turn-controller.test.ts +575 -0
- package/src/services/voice/turn-controller.ts +596 -0
- package/src/services/voice/types.d.ts +643 -0
- package/src/services/voice/types.d.ts.map +1 -0
- package/src/services/voice/types.ts +699 -0
- package/src/services/voice/vad.d.ts +282 -0
- package/src/services/voice/vad.d.ts.map +1 -0
- package/src/services/voice/vad.test.ts +480 -0
- package/src/services/voice/vad.ts +827 -0
- package/src/services/voice/vad.v1-v4.test.ts +222 -0
- package/src/services/voice/voice-budget.d.ts +241 -0
- package/src/services/voice/voice-budget.d.ts.map +1 -0
- package/src/services/voice/voice-budget.test.ts +418 -0
- package/src/services/voice/voice-budget.ts +635 -0
- package/src/services/voice/voice-duet.test.ts +375 -0
- package/src/services/voice/voice-emotion-classifier.d.ts +95 -0
- package/src/services/voice/voice-emotion-classifier.d.ts.map +1 -0
- package/src/services/voice/voice-emotion-classifier.test.ts +210 -0
- package/src/services/voice/voice-emotion-classifier.ts +273 -0
- package/src/services/voice/voice-preset-format.d.ts +158 -0
- package/src/services/voice/voice-preset-format.d.ts.map +1 -0
- package/src/services/voice/voice-preset-format.ts +700 -0
- package/src/services/voice/voice-preset-generator.test.ts +89 -0
- package/src/services/voice/voice-profile-artifact.d.ts +116 -0
- package/src/services/voice/voice-profile-artifact.d.ts.map +1 -0
- package/src/services/voice/voice-profile-artifact.test.ts +138 -0
- package/src/services/voice/voice-profile-artifact.ts +518 -0
- package/src/services/voice/voice-profile-routes.d.ts +83 -0
- package/src/services/voice/voice-profile-routes.d.ts.map +1 -0
- package/src/services/voice/voice-profile-routes.test.ts +429 -0
- package/src/services/voice/voice-profile-routes.ts +425 -0
- package/src/services/voice/voice-scenario.ts +154 -0
- package/src/services/voice/voice-settings.d.ts +82 -0
- package/src/services/voice/voice-settings.d.ts.map +1 -0
- package/src/services/voice/voice-settings.ts +172 -0
- package/src/services/voice/voice-state-machine.d.ts +364 -0
- package/src/services/voice/voice-state-machine.d.ts.map +1 -0
- package/src/services/voice/voice-state-machine.ts +727 -0
- package/src/services/voice/voice-workbench-report.test.ts +168 -0
- package/src/services/voice/voice-workbench-report.ts +326 -0
- package/src/services/voice/voice-workbench.test.ts +158 -0
- package/src/services/voice/voice.test.ts +1070 -0
- package/src/services/voice/wake-word-ggml.d.ts +101 -0
- package/src/services/voice/wake-word-ggml.d.ts.map +1 -0
- package/src/services/voice/wake-word-ggml.ts +320 -0
- package/src/services/voice/wake-word.d.ts +255 -0
- package/src/services/voice/wake-word.d.ts.map +1 -0
- package/src/services/voice/wake-word.test.ts +298 -0
- package/src/services/voice/wake-word.ts +554 -0
- package/src/services/voice/wrap-with-first-line-cache.d.ts +70 -0
- package/src/services/voice/wrap-with-first-line-cache.d.ts.map +1 -0
- package/src/services/voice/wrap-with-first-line-cache.ts +267 -0
- package/src/services/voice-model-updater.d.ts +240 -0
- package/src/services/voice-model-updater.d.ts.map +1 -0
- package/src/services/voice-model-updater.ts +724 -0
- package/src/services/voice-prewarm.d.ts +3 -0
- package/src/services/voice-prewarm.d.ts.map +1 -0
- package/src/services/voice-prewarm.ts +51 -0
- package/dist/index.d.ts +0 -37
- package/dist/index.js +0 -1098
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TensorRT image-gen backend contract (WS3) — Windows NVIDIA.
|
|
3
|
+
*
|
|
4
|
+
* On Windows NVIDIA hosts, packaged `imagegen.exe` (built against
|
|
5
|
+
* TensorRT 10.x with the Demo Diffusion plan) is the fastest path —
|
|
6
|
+
* `nvidia/Stable-Diffusion-3.5-Medium-TensorRT` and the SDXL Turbo
|
|
7
|
+
* TensorRT plans give a 2–4× speedup over sd-cpp + CUDA on the same
|
|
8
|
+
* hardware.
|
|
9
|
+
*
|
|
10
|
+
* Why a child-process backend (and not TensorRT bindings):
|
|
11
|
+
* - TensorRT runtime is C++; a Node binding would require shipping a
|
|
12
|
+
* CUDA toolkit and a TensorRT runtime DLL on every Windows install,
|
|
13
|
+
* plus rebuilding when CUDA versions change.
|
|
14
|
+
* - The packaged `imagegen.exe` is a thin wrapper around the official
|
|
15
|
+
* Demo Diffusion sample. The bundle installer drops it at
|
|
16
|
+
* `${MODELS_DIR}/bin/imagegen.exe` alongside the TensorRT plan files.
|
|
17
|
+
* - Subprocess cost is negligible relative to inference time (≈10ms
|
|
18
|
+
* spawn vs ≈400ms inference).
|
|
19
|
+
*
|
|
20
|
+
* Binary resolution:
|
|
21
|
+
* 1. `opts.binaryPath` (test injection).
|
|
22
|
+
* 2. `process.env.IMAGEGEN_TRT_BIN` (operator override).
|
|
23
|
+
* 3. `${MODELS_DIR}/bin/imagegen.exe`.
|
|
24
|
+
*
|
|
25
|
+
* Plan file resolution:
|
|
26
|
+
* The packaged binary expects a `--plan <path>` flag pointing at the
|
|
27
|
+
* prebuilt TensorRT engine for the active resolution. The catalog
|
|
28
|
+
* binds tier → plan; the installer materializes them under
|
|
29
|
+
* `${MODELS_DIR}/imagegen/trt-plans/<modelKey>/`.
|
|
30
|
+
*
|
|
31
|
+
* Until the bundle installer + packaged binary land for Windows NVIDIA,
|
|
32
|
+
* `loadTensorRtImageGenBackend` throws `ImageGenBackendUnavailableError`
|
|
33
|
+
* and the selector falls through to sd-cpp.
|
|
34
|
+
*
|
|
35
|
+
* Publishing pipeline (Windows x86_64 NVIDIA only):
|
|
36
|
+
*
|
|
37
|
+
* Build (`imagegen.exe`):
|
|
38
|
+
* git clone https://github.com/NVIDIA/TensorRT && cd TensorRT/demo/Diffusion
|
|
39
|
+
* # Build against TensorRT 10.x + CUDA 12.x
|
|
40
|
+
* pip install -r requirements.txt
|
|
41
|
+
* python build.py --hf-token <ci-secret> \
|
|
42
|
+
* --version 1.5 --denoising-steps 20 \
|
|
43
|
+
* --build-static-batch --output-dir ../../../build/imagegen-sd15
|
|
44
|
+
* # Thin wrapper produces imagegen.exe linking against
|
|
45
|
+
* # nvinfer_10.dll + cudart64_12.dll; pyinstaller-onefile produces a
|
|
46
|
+
* # 35-MB executable next to the static .plan files.
|
|
47
|
+
* Build TensorRT plan (per resolution, per model):
|
|
48
|
+
* trtexec --onnx=unet.onnx --saveEngine=unet.plan --fp16 \
|
|
49
|
+
* --minShapes=sample:1x4x64x64 --optShapes=sample:1x4x64x64 \
|
|
50
|
+
* --maxShapes=sample:1x4x64x64
|
|
51
|
+
* # Drop plan files under imagegen/trt-plans/<modelKey>/{unet,vae,clip}.plan.
|
|
52
|
+
* Sign:
|
|
53
|
+
* signtool sign /tr http://timestamp.digicert.com /td sha256 \
|
|
54
|
+
* /fd sha256 /sha1 <eliza-labs-cert-thumbprint> imagegen.exe
|
|
55
|
+
* # SmartScreen reputation builds over the first ~1000 installs;
|
|
56
|
+
* # submit to Microsoft Defender Bytes-for-Bots if a new cert.
|
|
57
|
+
* Drop:
|
|
58
|
+
* releases.elizaos.ai/imagegen-trt/<version>/windows-x86_64/imagegen.exe
|
|
59
|
+
* releases.elizaos.ai/imagegen-trt/<version>/windows-x86_64/plans/
|
|
60
|
+
* sd-1.5-512x512/{unet,vae,clip}.plan
|
|
61
|
+
* sdxl-turbo-1024x1024/{unet,vae,clip}.plan
|
|
62
|
+
* The bundle installer writes the binary to
|
|
63
|
+
* `${MODELS_DIR}/bin/imagegen.exe` and the plans under
|
|
64
|
+
* `${MODELS_DIR}/imagegen/trt-plans/<modelKey>/`.
|
|
65
|
+
*
|
|
66
|
+
* Notarization:
|
|
67
|
+
* N/A on Windows; SmartScreen reputation replaces the macOS notarize
|
|
68
|
+
* step. Authenticode-signed binaries with a valid EV cert clear without
|
|
69
|
+
* warning on first launch.
|
|
70
|
+
*/
|
|
71
|
+
import { type SdCppSpawnLike } from "./sd-cpp";
|
|
72
|
+
import type { ImageGenBackend, ImageGenLoadArgs } from "./types";
|
|
73
|
+
export interface TensorRtBackendOptions {
|
|
74
|
+
loadArgs: ImageGenLoadArgs;
|
|
75
|
+
modelKey: string;
|
|
76
|
+
binaryPath?: string;
|
|
77
|
+
outputDir?: string;
|
|
78
|
+
spawnImpl?: SdCppSpawnLike;
|
|
79
|
+
fakeImageBytes?: Uint8Array;
|
|
80
|
+
now?: () => number;
|
|
81
|
+
}
|
|
82
|
+
export declare function loadTensorRtImageGenBackend(opts: TensorRtBackendOptions): Promise<ImageGenBackend>;
|
|
83
|
+
//# sourceMappingURL=tensorrt-unavailable.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tensorrt-unavailable.d.ts","sourceRoot":"","sources":["tensorrt-unavailable.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqEG;AAMH,OAAO,EAIN,KAAK,cAAc,EACnB,MAAM,UAAU,CAAC;AAClB,OAAO,KAAK,EACX,eAAe,EACf,gBAAgB,EAEhB,MAAM,SAAS,CAAC;AAEjB,MAAM,WAAW,sBAAsB;IACtC,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,cAAc,CAAC;IAC3B,cAAc,CAAC,EAAE,UAAU,CAAC;IAC5B,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CACnB;AAID,wBAAsB,2BAA2B,CAChD,IAAI,EAAE,sBAAsB,GAC1B,OAAO,CAAC,eAAe,CAAC,CAmI1B"}
|
|
@@ -0,0 +1,295 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TensorRT image-gen backend contract (WS3) — Windows NVIDIA.
|
|
3
|
+
*
|
|
4
|
+
* On Windows NVIDIA hosts, packaged `imagegen.exe` (built against
|
|
5
|
+
* TensorRT 10.x with the Demo Diffusion plan) is the fastest path —
|
|
6
|
+
* `nvidia/Stable-Diffusion-3.5-Medium-TensorRT` and the SDXL Turbo
|
|
7
|
+
* TensorRT plans give a 2–4× speedup over sd-cpp + CUDA on the same
|
|
8
|
+
* hardware.
|
|
9
|
+
*
|
|
10
|
+
* Why a child-process backend (and not TensorRT bindings):
|
|
11
|
+
* - TensorRT runtime is C++; a Node binding would require shipping a
|
|
12
|
+
* CUDA toolkit and a TensorRT runtime DLL on every Windows install,
|
|
13
|
+
* plus rebuilding when CUDA versions change.
|
|
14
|
+
* - The packaged `imagegen.exe` is a thin wrapper around the official
|
|
15
|
+
* Demo Diffusion sample. The bundle installer drops it at
|
|
16
|
+
* `${MODELS_DIR}/bin/imagegen.exe` alongside the TensorRT plan files.
|
|
17
|
+
* - Subprocess cost is negligible relative to inference time (≈10ms
|
|
18
|
+
* spawn vs ≈400ms inference).
|
|
19
|
+
*
|
|
20
|
+
* Binary resolution:
|
|
21
|
+
* 1. `opts.binaryPath` (test injection).
|
|
22
|
+
* 2. `process.env.IMAGEGEN_TRT_BIN` (operator override).
|
|
23
|
+
* 3. `${MODELS_DIR}/bin/imagegen.exe`.
|
|
24
|
+
*
|
|
25
|
+
* Plan file resolution:
|
|
26
|
+
* The packaged binary expects a `--plan <path>` flag pointing at the
|
|
27
|
+
* prebuilt TensorRT engine for the active resolution. The catalog
|
|
28
|
+
* binds tier → plan; the installer materializes them under
|
|
29
|
+
* `${MODELS_DIR}/imagegen/trt-plans/<modelKey>/`.
|
|
30
|
+
*
|
|
31
|
+
* Until the bundle installer + packaged binary land for Windows NVIDIA,
|
|
32
|
+
* `loadTensorRtImageGenBackend` throws `ImageGenBackendUnavailableError`
|
|
33
|
+
* and the selector falls through to sd-cpp.
|
|
34
|
+
*
|
|
35
|
+
* Publishing pipeline (Windows x86_64 NVIDIA only):
|
|
36
|
+
*
|
|
37
|
+
* Build (`imagegen.exe`):
|
|
38
|
+
* git clone https://github.com/NVIDIA/TensorRT && cd TensorRT/demo/Diffusion
|
|
39
|
+
* # Build against TensorRT 10.x + CUDA 12.x
|
|
40
|
+
* pip install -r requirements.txt
|
|
41
|
+
* python build.py --hf-token <ci-secret> \
|
|
42
|
+
* --version 1.5 --denoising-steps 20 \
|
|
43
|
+
* --build-static-batch --output-dir ../../../build/imagegen-sd15
|
|
44
|
+
* # Thin wrapper produces imagegen.exe linking against
|
|
45
|
+
* # nvinfer_10.dll + cudart64_12.dll; pyinstaller-onefile produces a
|
|
46
|
+
* # 35-MB executable next to the static .plan files.
|
|
47
|
+
* Build TensorRT plan (per resolution, per model):
|
|
48
|
+
* trtexec --onnx=unet.onnx --saveEngine=unet.plan --fp16 \
|
|
49
|
+
* --minShapes=sample:1x4x64x64 --optShapes=sample:1x4x64x64 \
|
|
50
|
+
* --maxShapes=sample:1x4x64x64
|
|
51
|
+
* # Drop plan files under imagegen/trt-plans/<modelKey>/{unet,vae,clip}.plan.
|
|
52
|
+
* Sign:
|
|
53
|
+
* signtool sign /tr http://timestamp.digicert.com /td sha256 \
|
|
54
|
+
* /fd sha256 /sha1 <eliza-labs-cert-thumbprint> imagegen.exe
|
|
55
|
+
* # SmartScreen reputation builds over the first ~1000 installs;
|
|
56
|
+
* # submit to Microsoft Defender Bytes-for-Bots if a new cert.
|
|
57
|
+
* Drop:
|
|
58
|
+
* releases.elizaos.ai/imagegen-trt/<version>/windows-x86_64/imagegen.exe
|
|
59
|
+
* releases.elizaos.ai/imagegen-trt/<version>/windows-x86_64/plans/
|
|
60
|
+
* sd-1.5-512x512/{unet,vae,clip}.plan
|
|
61
|
+
* sdxl-turbo-1024x1024/{unet,vae,clip}.plan
|
|
62
|
+
* The bundle installer writes the binary to
|
|
63
|
+
* `${MODELS_DIR}/bin/imagegen.exe` and the plans under
|
|
64
|
+
* `${MODELS_DIR}/imagegen/trt-plans/<modelKey>/`.
|
|
65
|
+
*
|
|
66
|
+
* Notarization:
|
|
67
|
+
* N/A on Windows; SmartScreen reputation replaces the macOS notarize
|
|
68
|
+
* step. Authenticode-signed binaries with a valid EV cert clear without
|
|
69
|
+
* warning on first launch.
|
|
70
|
+
*/
|
|
71
|
+
|
|
72
|
+
import { existsSync, promises as fs, mkdtempSync } from "node:fs";
|
|
73
|
+
import { tmpdir } from "node:os";
|
|
74
|
+
import { join } from "node:path";
|
|
75
|
+
import { ImageGenBackendUnavailableError } from "./errors";
|
|
76
|
+
import {
|
|
77
|
+
assertPngOutput,
|
|
78
|
+
defaultSpawn,
|
|
79
|
+
resolveSeed,
|
|
80
|
+
type SdCppSpawnLike,
|
|
81
|
+
} from "./sd-cpp";
|
|
82
|
+
import type {
|
|
83
|
+
ImageGenBackend,
|
|
84
|
+
ImageGenLoadArgs,
|
|
85
|
+
ImageGenResult,
|
|
86
|
+
} from "./types";
|
|
87
|
+
|
|
88
|
+
export interface TensorRtBackendOptions {
|
|
89
|
+
loadArgs: ImageGenLoadArgs;
|
|
90
|
+
modelKey: string;
|
|
91
|
+
binaryPath?: string;
|
|
92
|
+
outputDir?: string;
|
|
93
|
+
spawnImpl?: SdCppSpawnLike;
|
|
94
|
+
fakeImageBytes?: Uint8Array;
|
|
95
|
+
now?: () => number;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
const DEFAULT_BIN = "imagegen.exe";
|
|
99
|
+
|
|
100
|
+
export async function loadTensorRtImageGenBackend(
|
|
101
|
+
opts: TensorRtBackendOptions,
|
|
102
|
+
): Promise<ImageGenBackend> {
|
|
103
|
+
const binary = resolveBinary(opts.binaryPath);
|
|
104
|
+
const now = opts.now ?? Date.now;
|
|
105
|
+
|
|
106
|
+
if (!opts.fakeImageBytes) {
|
|
107
|
+
// On non-Windows platforms there's nothing to even try; surface
|
|
108
|
+
// the unavailability cleanly so the selector moves on.
|
|
109
|
+
if (process.platform !== "win32" && !opts.binaryPath) {
|
|
110
|
+
throw new ImageGenBackendUnavailableError(
|
|
111
|
+
"tensorrt",
|
|
112
|
+
"unsupported_runtime",
|
|
113
|
+
`[imagegen/tensorrt] TensorRT backend is Windows-only; current platform: ${process.platform}`,
|
|
114
|
+
);
|
|
115
|
+
}
|
|
116
|
+
await assertBinaryAvailable(binary, opts.spawnImpl);
|
|
117
|
+
if (!existsSync(opts.loadArgs.modelPath)) {
|
|
118
|
+
throw new ImageGenBackendUnavailableError(
|
|
119
|
+
"tensorrt",
|
|
120
|
+
"model_missing",
|
|
121
|
+
`[imagegen/tensorrt] TensorRT plan not found: ${opts.loadArgs.modelPath}`,
|
|
122
|
+
);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
const outputDir =
|
|
127
|
+
opts.outputDir ?? mkdtempSync(join(tmpdir(), "trt-imagegen-"));
|
|
128
|
+
let disposed = false;
|
|
129
|
+
|
|
130
|
+
return {
|
|
131
|
+
id: "tensorrt",
|
|
132
|
+
supports(req) {
|
|
133
|
+
// TensorRT plans are compiled for a fixed resolution. The plan
|
|
134
|
+
// file embeds the resolution; we accept any size and let the
|
|
135
|
+
// binary error out — except we reject obviously bad inputs.
|
|
136
|
+
const w = req.width ?? 1024;
|
|
137
|
+
const h = req.height ?? 1024;
|
|
138
|
+
if (w <= 0 || h <= 0) return false;
|
|
139
|
+
if (w > 4096 || h > 4096) return false;
|
|
140
|
+
return true;
|
|
141
|
+
},
|
|
142
|
+
async generate(req): Promise<ImageGenResult> {
|
|
143
|
+
if (disposed) {
|
|
144
|
+
throw new ImageGenBackendUnavailableError(
|
|
145
|
+
"tensorrt",
|
|
146
|
+
"binding_unavailable",
|
|
147
|
+
"[imagegen/tensorrt] generate called after dispose()",
|
|
148
|
+
);
|
|
149
|
+
}
|
|
150
|
+
if (!req.prompt.trim()) {
|
|
151
|
+
throw new ImageGenBackendUnavailableError(
|
|
152
|
+
"tensorrt",
|
|
153
|
+
"unsupported_request",
|
|
154
|
+
"[imagegen/tensorrt] prompt is empty",
|
|
155
|
+
);
|
|
156
|
+
}
|
|
157
|
+
const seed = resolveSeed(req.seed);
|
|
158
|
+
const width = req.width ?? 1024;
|
|
159
|
+
const height = req.height ?? 1024;
|
|
160
|
+
const steps = req.steps ?? 25;
|
|
161
|
+
const guidanceScale = req.guidanceScale ?? 4.0;
|
|
162
|
+
const outputPath = join(outputDir, `out-${seed}-${now()}.png`);
|
|
163
|
+
const startMs = now();
|
|
164
|
+
|
|
165
|
+
if (opts.fakeImageBytes) {
|
|
166
|
+
await fs.writeFile(outputPath, opts.fakeImageBytes);
|
|
167
|
+
const elapsed = Math.max(1, now() - startMs);
|
|
168
|
+
if (req.onProgressChunk)
|
|
169
|
+
req.onProgressChunk({ step: steps, total: steps });
|
|
170
|
+
return {
|
|
171
|
+
image: opts.fakeImageBytes,
|
|
172
|
+
mime: "image/png",
|
|
173
|
+
seed,
|
|
174
|
+
metadata: {
|
|
175
|
+
model: opts.modelKey,
|
|
176
|
+
prompt: req.prompt,
|
|
177
|
+
steps,
|
|
178
|
+
guidanceScale,
|
|
179
|
+
inferenceTimeMs: elapsed,
|
|
180
|
+
},
|
|
181
|
+
};
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
const args = [
|
|
185
|
+
"--plan",
|
|
186
|
+
opts.loadArgs.modelPath,
|
|
187
|
+
"--prompt",
|
|
188
|
+
req.prompt,
|
|
189
|
+
"--width",
|
|
190
|
+
String(width),
|
|
191
|
+
"--height",
|
|
192
|
+
String(height),
|
|
193
|
+
"--steps",
|
|
194
|
+
String(steps),
|
|
195
|
+
"--cfg",
|
|
196
|
+
String(guidanceScale),
|
|
197
|
+
"--seed",
|
|
198
|
+
String(seed),
|
|
199
|
+
"--output",
|
|
200
|
+
outputPath,
|
|
201
|
+
];
|
|
202
|
+
if (req.negativePrompt) {
|
|
203
|
+
args.push("--negative", req.negativePrompt);
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
await runTensorRt(binary, args, {
|
|
207
|
+
signal: req.signal,
|
|
208
|
+
spawnImpl: opts.spawnImpl,
|
|
209
|
+
});
|
|
210
|
+
|
|
211
|
+
const bytes = new Uint8Array(await fs.readFile(outputPath));
|
|
212
|
+
assertPngOutput(bytes, "tensorrt", "subprocess_failed");
|
|
213
|
+
const elapsed = Math.max(1, now() - startMs);
|
|
214
|
+
return {
|
|
215
|
+
image: bytes,
|
|
216
|
+
mime: "image/png",
|
|
217
|
+
seed,
|
|
218
|
+
metadata: {
|
|
219
|
+
model: opts.modelKey,
|
|
220
|
+
prompt: req.prompt,
|
|
221
|
+
steps,
|
|
222
|
+
guidanceScale,
|
|
223
|
+
inferenceTimeMs: elapsed,
|
|
224
|
+
},
|
|
225
|
+
};
|
|
226
|
+
},
|
|
227
|
+
async dispose() {
|
|
228
|
+
if (disposed) return;
|
|
229
|
+
disposed = true;
|
|
230
|
+
await fs.rm(outputDir, { recursive: true, force: true }).catch(() => {});
|
|
231
|
+
},
|
|
232
|
+
};
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
function resolveBinary(override?: string): string {
|
|
236
|
+
if (override) return override;
|
|
237
|
+
const envBin = process.env.IMAGEGEN_TRT_BIN;
|
|
238
|
+
if (envBin?.trim()) return envBin.trim();
|
|
239
|
+
return DEFAULT_BIN;
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
async function assertBinaryAvailable(
|
|
243
|
+
binary: string,
|
|
244
|
+
spawnImpl?: SdCppSpawnLike,
|
|
245
|
+
): Promise<void> {
|
|
246
|
+
try {
|
|
247
|
+
const code = await new Promise<number | null>((resolve, reject) => {
|
|
248
|
+
const proc = defaultSpawn(spawnImpl)(binary, ["--version"]);
|
|
249
|
+
proc.on("error", (err: Error) => reject(err));
|
|
250
|
+
proc.on("exit", (c: number | null) => resolve(c));
|
|
251
|
+
});
|
|
252
|
+
if (code !== 0) {
|
|
253
|
+
throw new ImageGenBackendUnavailableError(
|
|
254
|
+
"tensorrt",
|
|
255
|
+
"binary_version_mismatch",
|
|
256
|
+
`[imagegen/tensorrt] '${binary} --version' exited with code ${code}`,
|
|
257
|
+
);
|
|
258
|
+
}
|
|
259
|
+
} catch (err) {
|
|
260
|
+
if (err instanceof ImageGenBackendUnavailableError) throw err;
|
|
261
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
262
|
+
throw new ImageGenBackendUnavailableError(
|
|
263
|
+
"tensorrt",
|
|
264
|
+
"binary_missing",
|
|
265
|
+
`[imagegen/tensorrt] cannot run '${binary} --version': ${msg}. Install the bundle's TensorRT imagegen package, or set IMAGEGEN_TRT_BIN to a built binary.`,
|
|
266
|
+
{ cause: err },
|
|
267
|
+
);
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
async function runTensorRt(
|
|
272
|
+
binary: string,
|
|
273
|
+
args: readonly string[],
|
|
274
|
+
opts: { signal?: AbortSignal; spawnImpl?: SdCppSpawnLike },
|
|
275
|
+
): Promise<void> {
|
|
276
|
+
await new Promise<void>((resolve, reject) => {
|
|
277
|
+
const proc = defaultSpawn(opts.spawnImpl)(binary, args, {
|
|
278
|
+
signal: opts.signal,
|
|
279
|
+
});
|
|
280
|
+
proc.on("error", (err: Error) => reject(err));
|
|
281
|
+
proc.on("exit", (code: number | null) => {
|
|
282
|
+
if (code === 0) {
|
|
283
|
+
resolve();
|
|
284
|
+
return;
|
|
285
|
+
}
|
|
286
|
+
reject(
|
|
287
|
+
new ImageGenBackendUnavailableError(
|
|
288
|
+
"tensorrt",
|
|
289
|
+
"subprocess_failed",
|
|
290
|
+
`[imagegen/tensorrt] imagegen.exe exited with code ${code}`,
|
|
291
|
+
),
|
|
292
|
+
);
|
|
293
|
+
});
|
|
294
|
+
});
|
|
295
|
+
}
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Local image-generation (diffusion) types — WS3 deliverable.
|
|
3
|
+
*
|
|
4
|
+
* Two layers live here, mirroring the WS2 vision-describe split:
|
|
5
|
+
*
|
|
6
|
+
* 1. The **request/result** contract every WS3 backend implements
|
|
7
|
+
* (`ImageGenRequest`, `ImageGenResult`). Callers pass a text prompt
|
|
8
|
+
* and optional knobs; backends return PNG (or JPEG) bytes + metadata.
|
|
9
|
+
*
|
|
10
|
+
* 2. The **backend** interface (`ImageGenBackend`) that the
|
|
11
|
+
* `MemoryArbiter` (WS1) registers as a capability handler. One
|
|
12
|
+
* backend per per-platform diffusion runtime:
|
|
13
|
+
*
|
|
14
|
+
* - `sd-cpp` — stable-diffusion.cpp child-process binary
|
|
15
|
+
* (Linux + Windows + Android JNI).
|
|
16
|
+
* - `mflux` — MLX `mflux` Python venv (macOS Apple Silicon).
|
|
17
|
+
* - `coreml` — Capacitor bridge to Swift `apple/ml-stable-diffusion`
|
|
18
|
+
* (iOS only).
|
|
19
|
+
* - `tensorrt` — packaged `imagegen.exe` / `trtexec` wrapper
|
|
20
|
+
* (Windows NVIDIA).
|
|
21
|
+
* - `aosp` — bun:ffi to `eliza_llama_imagegen_*` symbols in
|
|
22
|
+
* libeliza-llama-shim (Android JNI; unavailable until shim ships).
|
|
23
|
+
* - `fake` — deterministic in-process backend used by tests.
|
|
24
|
+
*
|
|
25
|
+
* All backends implement the same `load → generate → dispose` shape so the
|
|
26
|
+
* arbiter can swap between them without caring how the diffusion runtime
|
|
27
|
+
* is wired.
|
|
28
|
+
*
|
|
29
|
+
* Cache contract:
|
|
30
|
+
*
|
|
31
|
+
* Image-gen requests do NOT go through `hashVisionInput` (that's the
|
|
32
|
+
* WS2 projector-token cache, which lives on image *inputs*). The
|
|
33
|
+
* request-side keying space is prompt + seed + steps + scheduler + …;
|
|
34
|
+
* if a cache lands here later it gets its own namespace (`hashImageGenRequest`)
|
|
35
|
+
* to avoid collisions with the WS2 vision-embedding cache. For now the
|
|
36
|
+
* capability has no result cache — diffusion is intrinsically expensive
|
|
37
|
+
* and most callers want a fresh sample, not a cached one.
|
|
38
|
+
*/
|
|
39
|
+
/** Output container the backend writes. PNG is default; JPEG is opt-in. */
|
|
40
|
+
export type ImageGenMimeType = "image/png" | "image/jpeg";
|
|
41
|
+
/**
|
|
42
|
+
* Caller request to `generate`. All fields except `prompt` are optional —
|
|
43
|
+
* backends apply per-runtime defaults for missing knobs.
|
|
44
|
+
*
|
|
45
|
+
* Knob semantics (consistent across backends):
|
|
46
|
+
*
|
|
47
|
+
* - `width` / `height`: pixel resolution. Default 512×512 (SD 1.5 family) /
|
|
48
|
+
* 1024×1024 (SDXL / FLUX / Z-Image). Backends round to the nearest
|
|
49
|
+
* multiple of 8 (SD) or 16 (SDXL) when needed.
|
|
50
|
+
* - `steps`: denoising step count. 4 for FLUX schnell / Z-Image-Turbo
|
|
51
|
+
* (single-pass Turbo schedulers); 20 for SD 1.5 Euler-A; 25 for SDXL.
|
|
52
|
+
* - `guidanceScale`: classifier-free guidance. Ignored by FLUX schnell
|
|
53
|
+
* (CFG-free). 7.5 default for SD 1.5; 4.0 default for SDXL.
|
|
54
|
+
* - `seed`: PRNG seed. -1 / omitted → random; the backend returns the
|
|
55
|
+
* actual seed used in `ImageGenResult.seed` so the caller can replay.
|
|
56
|
+
* - `scheduler`: sampler name (`"euler-a"`, `"dpm++-2m"`, `"ddim"`,
|
|
57
|
+
* `"euler"`). Backends accept the strings their underlying runtime
|
|
58
|
+
* supports; unknown values raise `ImageGenBackendUnavailableError`.
|
|
59
|
+
*/
|
|
60
|
+
export interface ImageGenRequest {
|
|
61
|
+
prompt: string;
|
|
62
|
+
negativePrompt?: string;
|
|
63
|
+
width?: number;
|
|
64
|
+
height?: number;
|
|
65
|
+
steps?: number;
|
|
66
|
+
guidanceScale?: number;
|
|
67
|
+
seed?: number;
|
|
68
|
+
scheduler?: string;
|
|
69
|
+
signal?: AbortSignal;
|
|
70
|
+
/**
|
|
71
|
+
* Optional per-step progress callback. Called once per denoising step
|
|
72
|
+
* with `{ step, total }`. Backends that can't surface step-level
|
|
73
|
+
* progress (Core ML batch fused path, TensorRT static engine) MAY
|
|
74
|
+
* call this once with `step === total` at completion instead of
|
|
75
|
+
* per-step. Never required.
|
|
76
|
+
*/
|
|
77
|
+
onProgressChunk?: (progress: {
|
|
78
|
+
step: number;
|
|
79
|
+
total: number;
|
|
80
|
+
}) => void;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Backend response. `image` is the raw bytes (PNG by default); `mime`
|
|
84
|
+
* identifies the container. The metadata block carries enough state for
|
|
85
|
+
* the caller to attach to a chat turn, log to trajectories, or feed the
|
|
86
|
+
* result back into a vision-describe for the same agent.
|
|
87
|
+
*/
|
|
88
|
+
export interface ImageGenResult {
|
|
89
|
+
image: Uint8Array;
|
|
90
|
+
mime: ImageGenMimeType;
|
|
91
|
+
/**
|
|
92
|
+
* The actual seed the diffusion run used. Always populated — the
|
|
93
|
+
* backend MUST resolve a random seed before sampling and report it
|
|
94
|
+
* here. This is what makes a generation reproducible.
|
|
95
|
+
*/
|
|
96
|
+
seed: number;
|
|
97
|
+
metadata: {
|
|
98
|
+
/** The model id (catalog key) the run used (`"imagegen-sd-1_5-q5_0"`, etc.). */
|
|
99
|
+
model: string;
|
|
100
|
+
/** Echo of the prompt that was sampled. */
|
|
101
|
+
prompt: string;
|
|
102
|
+
/** Echo of the step count actually used (post-default-resolve). */
|
|
103
|
+
steps: number;
|
|
104
|
+
/** Echo of CFG actually applied. 0 for CFG-free models (FLUX schnell). */
|
|
105
|
+
guidanceScale: number;
|
|
106
|
+
/** End-to-end wall-clock time inside the backend. */
|
|
107
|
+
inferenceTimeMs: number;
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Per-load arguments for an image-gen backend. The arbiter's
|
|
112
|
+
* `load(modelKey)` only carries an opaque key; the binding resolves that
|
|
113
|
+
* key to real model+vae+clip+t5 paths through this struct, which
|
|
114
|
+
* `createImageGenCapabilityRegistration` populates from the catalog +
|
|
115
|
+
* `ELIZA_1_BUNDLE_EXTRAS.json`.
|
|
116
|
+
*
|
|
117
|
+
* Some diffusion families are single-file GGUFs once quantized, such as
|
|
118
|
+
* SD 1.5 Q5_0. Others stay split: stable-diffusion.cpp runs Z-Image
|
|
119
|
+
* with `--diffusion-model` plus separate Qwen LLM text encoder and VAE
|
|
120
|
+
* files. The optional paths below carry those companion assets.
|
|
121
|
+
*/
|
|
122
|
+
export interface ImageGenLoadArgs {
|
|
123
|
+
/** Absolute path to the primary diffusion weights (GGUF / mlpackage / engine). */
|
|
124
|
+
modelPath: string;
|
|
125
|
+
/**
|
|
126
|
+
* Treat `modelPath` as a stable-diffusion.cpp `--diffusion-model` rather
|
|
127
|
+
* than a monolithic `--model`. Required for Z-Image/Flux-style split
|
|
128
|
+
* diffusion bundles.
|
|
129
|
+
*/
|
|
130
|
+
splitDiffusionModel?: boolean;
|
|
131
|
+
/** Optional split VAE path. */
|
|
132
|
+
vae?: string;
|
|
133
|
+
/** Optional split CLIP-L / CLIP-G path. */
|
|
134
|
+
clip?: string;
|
|
135
|
+
/** Optional split T5 / Gemma text encoder path. */
|
|
136
|
+
t5?: string;
|
|
137
|
+
/** Optional split LLM text encoder path, e.g. Qwen3 for Z-Image. */
|
|
138
|
+
llm?: string;
|
|
139
|
+
/**
|
|
140
|
+
* Backend-specific acceleration hint. Accepts:
|
|
141
|
+
* - `"auto"` (default) — let the binding decide.
|
|
142
|
+
* - `"cpu"` — force CPU.
|
|
143
|
+
* - `"cuda"` / `"vulkan"` / `"metal"` / `"coreml"` / `"qnn"` /
|
|
144
|
+
* `"tensorrt"` — request a specific accelerator. Unsupported
|
|
145
|
+
* requests fall back to `auto`.
|
|
146
|
+
*/
|
|
147
|
+
accelerator?: "auto" | "cpu" | "cuda" | "vulkan" | "metal" | "coreml" | "qnn" | "tensorrt";
|
|
148
|
+
/** Cancel a slow load (model file read + weight upload). */
|
|
149
|
+
signal?: AbortSignal;
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* The contract every WS3 backend implements. The shape is intentionally
|
|
153
|
+
* narrow: the arbiter only ever calls `generate`. `dispose` is wrapped
|
|
154
|
+
* by the arbiter's `unload` so the backend can free GPU/VRAM and drop
|
|
155
|
+
* file descriptors / kill subprocesses on eviction.
|
|
156
|
+
*/
|
|
157
|
+
export interface ImageGenBackend {
|
|
158
|
+
/** Stable identifier — matches the backend module name. */
|
|
159
|
+
readonly id: "sd-cpp" | "mflux" | "coreml" | "tensorrt" | "aosp" | "fake";
|
|
160
|
+
/**
|
|
161
|
+
* Best-effort capability check. Implementations return `false` for
|
|
162
|
+
* requests whose `width`/`height`/`scheduler` aren't supported by
|
|
163
|
+
* the loaded weights, so the arbiter can fall through to the next
|
|
164
|
+
* registered backend (selector order). Default backends accept
|
|
165
|
+
* anything reasonable; `supports` mostly matters for `coreml`
|
|
166
|
+
* (fixed resolution per `.mlpackage`) and `tensorrt` (fixed engine
|
|
167
|
+
* shape).
|
|
168
|
+
*/
|
|
169
|
+
supports(request: ImageGenRequest): boolean;
|
|
170
|
+
generate(request: ImageGenRequest): Promise<ImageGenResult>;
|
|
171
|
+
/** Release the loaded weights / subprocess. Idempotent. */
|
|
172
|
+
dispose(): Promise<void>;
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Capability handler loader. The arbiter calls it with a model key
|
|
176
|
+
* (e.g. `"imagegen-sd-1_5-q5_0"`); the implementation resolves to a
|
|
177
|
+
* real `ImageGenLoadArgs` from `ELIZA_1_BUNDLE_EXTRAS.json` + the
|
|
178
|
+
* installed bundle and returns a live backend.
|
|
179
|
+
*/
|
|
180
|
+
export type ImageGenBackendLoader = (modelKey: string) => Promise<ImageGenBackend>;
|
|
181
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAEH,2EAA2E;AAC3E,MAAM,MAAM,gBAAgB,GAAG,WAAW,GAAG,YAAY,CAAC;AAE1D;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,WAAW,eAAe;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB;;;;;;OAMG;IACH,eAAe,CAAC,EAAE,CAAC,QAAQ,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;CACtE;AAED;;;;;GAKG;AACH,MAAM,WAAW,cAAc;IAC9B,KAAK,EAAE,UAAU,CAAC;IAClB,IAAI,EAAE,gBAAgB,CAAC;IACvB;;;;OAIG;IACH,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE;QACT,gFAAgF;QAChF,KAAK,EAAE,MAAM,CAAC;QACd,2CAA2C;QAC3C,MAAM,EAAE,MAAM,CAAC;QACf,mEAAmE;QACnE,KAAK,EAAE,MAAM,CAAC;QACd,0EAA0E;QAC1E,aAAa,EAAE,MAAM,CAAC;QACtB,qDAAqD;QACrD,eAAe,EAAE,MAAM,CAAC;KACxB,CAAC;CACF;AAED;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,gBAAgB;IAChC,kFAAkF;IAClF,SAAS,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,+BAA+B;IAC/B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,2CAA2C;IAC3C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,mDAAmD;IACnD,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,oEAAoE;IACpE,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;;;;;OAOG;IACH,WAAW,CAAC,EACT,MAAM,GACN,KAAK,GACL,MAAM,GACN,QAAQ,GACR,OAAO,GACP,QAAQ,GACR,KAAK,GACL,UAAU,CAAC;IACd,4DAA4D;IAC5D,MAAM,CAAC,EAAE,WAAW,CAAC;CACrB;AAED;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC/B,2DAA2D;IAC3D,QAAQ,CAAC,EAAE,EAAE,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,UAAU,GAAG,MAAM,GAAG,MAAM,CAAC;IAC1E;;;;;;;;OAQG;IACH,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC;IAC5C,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;IAC5D,2DAA2D;IAC3D,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACzB;AAED;;;;;GAKG;AACH,MAAM,MAAM,qBAAqB,GAAG,CACnC,QAAQ,EAAE,MAAM,KACZ,OAAO,CAAC,eAAe,CAAC,CAAC"}
|