Zeayii.Vexo.Assembly.Core
0.0.23
dotnet add package Zeayii.Vexo.Assembly.Core --version 0.0.23
NuGet\Install-Package Zeayii.Vexo.Assembly.Core -Version 0.0.23
<PackageReference Include="Zeayii.Vexo.Assembly.Core" Version="0.0.23" />
<PackageVersion Include="Zeayii.Vexo.Assembly.Core" Version="0.0.23" />
<PackageReference Include="Zeayii.Vexo.Assembly.Core" />
paket add Zeayii.Vexo.Assembly.Core --version 0.0.23
#r "nuget: Zeayii.Vexo.Assembly.Core, 0.0.23"
#:package Zeayii.Vexo.Assembly.Core@0.0.23
#addin nuget:?package=Zeayii.Vexo.Assembly.Core&version=0.0.23
#tool nuget:?package=Zeayii.Vexo.Assembly.Core&version=0.0.23
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.Vexo.Assembly.Manifest (>= 0.0.23)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 0.0.23 | 131 | 3/14/2026 |
| 0.0.22 | 116 | 3/14/2026 |
| 0.0.21 | 117 | 3/14/2026 |
| 0.0.20 | 123 | 3/14/2026 |
| 0.0.19 | 113 | 3/13/2026 |
| 0.0.18 | 120 | 3/13/2026 |
| 0.0.17 | 116 | 3/13/2026 |
| 0.0.15 | 116 | 3/12/2026 |
| 0.0.14 | 118 | 3/12/2026 |
| 0.0.13 | 120 | 3/12/2026 |
| 0.0.12 | 121 | 3/2/2026 |
| 0.0.11 | 119 | 3/1/2026 |
| 0.0.10 | 123 | 3/1/2026 |
| 0.0.9 | 124 | 2/28/2026 |
| 0.0.8 | 128 | 2/26/2026 |
| 0.0.7 | 125 | 2/26/2026 |
| 0.0.6 | 121 | 2/26/2026 |
| 0.0.5 | 118 | 2/26/2026 |
| 0.0.4 | 122 | 2/26/2026 |
| 0.0.3 | 127 | 2/25/2026 |