Zeayii.Vexo.Assembly
0.0.37
dotnet add package Zeayii.Vexo.Assembly --version 0.0.37
NuGet\Install-Package Zeayii.Vexo.Assembly -Version 0.0.37
<PackageReference Include="Zeayii.Vexo.Assembly" Version="0.0.37" />
<PackageVersion Include="Zeayii.Vexo.Assembly" Version="0.0.37" />
<PackageReference Include="Zeayii.Vexo.Assembly" />
paket add Zeayii.Vexo.Assembly --version 0.0.37
#r "nuget: Zeayii.Vexo.Assembly, 0.0.37"
#:package Zeayii.Vexo.Assembly@0.0.37
#addin nuget:?package=Zeayii.Vexo.Assembly&version=0.0.37
#tool nuget:?package=Zeayii.Vexo.Assembly&version=0.0.37
Zeayii.Vexo.Assembly.Core
Organization: zeayii
Module Type: Core Orchestration Layer
Target Framework: net10.0
1. Purpose
Zeayii.Vexo.Assembly.Core is the orchestration backbone of assembly flow. It does not parse protocol internals or container bytes. Instead, it coordinates:
- descriptor input,
- provider preparation output,
- manifest extraction output,
into a deterministic incremental stream of ExecutionTask frames.
2. Responsibilities
- Provide unified assembly entry points (single-shot + incremental).
- Drive provider preparation stage and content-key obtain stage.
- Orchestrate DASH/HLS adapters and polling state transitions.
- Execute snapshot validation, stability validation, and delta building.
- Consume immutable
AssemblyOptionssnapshot consistently.
3. Non-Responsibilities
- No MPD/M3U8 parsing internals (Manifest module owns this).
- No MP4/WebM byte-level parse/remux (Media module owns this).
- No vendor-private business logic (Provider/private modules own this).
- No CLI argument mapping (host application owns this).
4. Layering and Dependency Direction
Vexo / Host
-> Core (this module)
-> Manifest
-> Media
-> Abstractions
Core exposes orchestration behavior only and keeps protocol internals behind adapters.
5. Public Usage
Use DI registration and resolve SerialTaskAssembler:
services.AddTaskAssemblyCoreRuntime(assemblyOptions);
var assembler = provider.GetRequiredService<SerialTaskAssembler>();
await foreach (var frame in assembler.AssembleFramesAsync(descriptor, context, ct))
{
if (frame is WorkUnitFrame workUnitFrame)
{
// workUnitFrame.WorkUnit / workUnitFrame.Delta / workUnitFrame.LifecycleState
}
}
6. Main Execution Flow
SerialTaskAssemblerresolves provider viaTaskAssemblyOrchestratorResolver.- Runs
PrepareAsyncin streaming mode (no full buffering). - For each preparation context, performs one extraction round (coordinator-based):
- format sniffing,
- DASH/HLS adapter extraction,
- filter pipeline,
ExecutionTaskbuild.
- Applies snapshot/stability validation and delta build.
- Continues or terminates based on refresh decision.
6.1 Group Timeline Finalization (New)
- After deduplication, the filter chain runs
GroupTimelineFinalizeFilterto compute:StartOffset(session-accumulated offset) perStreamGroup;Duration(primary media duration) perStreamGroup.
- Offset state is kept in assembly session (
TaskAssemblyUnitSession.AccumulatedOffset) and carried across rounds. - Text subtitles receive group offset; container subtitles do not receive text-style shifting to keep execution-side container concat semantics intact.
- Per-round
RoundAccumulatedDurationis committed by adapters at round completion and becomes the next round's start baseline.
7. Design Principles
- Streaming-first: preparation is yielded as it arrives.
- One-way dependency: no upward coupling into host/private code.
- State centralization: polling and lifecycle state are managed in Core.
- Extensible-private logic: provider extension points without polluting public pipeline.
8. Performance and AOT
- Explicit types + DI delegates; no runtime reflection dependency.
- Singleton registrations for high-frequency resolvers/adapters.
- Iterative polling flow without unnecessary intermediate materialization.
9. Collaboration with Other Modules
Abstractions: contracts, models, filters, validators.Manifest: protocol extraction, refresh decision, protocol filters.Offline: sample orchestrator and default assembly wiring.
10. Commercial Release Checklist
- Freeze and document
AssemblyOptionsdefaults. - Run incremental assembly regression on real-world vectors.
- Keep private provider logic isolated from core orchestration path.
11. License
This module follows the repository root license.
12. Visibility Boundary (public / internal)
Core intentionally exposes only:
SerialTaskAssembleras the runtime assembly entry point.ServiceCollectionExtensionsas the DI composition entry.
All orchestration collaborators (adapters, resolvers, round requests) are internal because:
- the execution layer should not depend on Core internals,
- public API must represent capabilities, not wiring details,
- Core internals can evolve without forcing external breaking changes.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- Zeayii.Infrastructure.Media.Container (>= 0.0.17)
- Zeayii.Infrastructure.Streaming.Manifest (>= 0.0.17)
- Zeayii.Vexo.Assembly.Abstractions (>= 0.0.37)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on Zeayii.Vexo.Assembly:
| Package | Downloads |
|---|---|
|
Zeayii.Vexo.Assembly.Offline
Vexo Task Assembly Offline Implementation for Vexo. |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 0.0.37 | 158 | 5/17/2026 |
| 0.0.36 | 114 | 5/16/2026 |
| 0.0.35 | 117 | 5/16/2026 |
| 0.0.34 | 116 | 5/16/2026 |
| 0.0.33 | 126 | 5/4/2026 |
| 0.0.32 | 147 | 4/5/2026 |
| 0.0.31 | 135 | 4/5/2026 |
| 0.0.30 | 166 | 3/28/2026 |
| 0.0.29 | 119 | 3/26/2026 |
| 0.0.28 | 109 | 3/26/2026 |
| 0.0.27 | 112 | 3/26/2026 |
| 0.0.26 | 121 | 3/16/2026 |
| 0.0.25 | 115 | 3/15/2026 |
| 0.0.24 | 114 | 3/15/2026 |