Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
68efa9b
feat: add declarative client section schema (Phase 1)
streamkit-devin Mar 22, 2026
01b7e7b
feat: add client sections to all 34 pipeline YAML files (Phase 2)
streamkit-devin Mar 22, 2026
5695704
feat: wire up dynamic UI to read from client section (Phase 3)
streamkit-devin Mar 22, 2026
a4c5ba9
phase 4: wire up oneshot UI — replace ConvertView heuristics with cli…
streamkit-devin Mar 22, 2026
af28675
feat(api): add lint_client_section() with 12 semantic validation rules
streamkit-devin Mar 22, 2026
f052cf7
fix: break circular import between clientSection and moqPeerSettings
streamkit-devin Mar 22, 2026
b01003d
fix: resolve clippy warnings (large_enum_variant, assigning_clones)
streamkit-devin Mar 22, 2026
e0d9d93
fix: correct pocket-tts-voice-clone input type and no-input fallback
streamkit-devin Mar 22, 2026
0eb18f1
fix: add #[serde(default)] to Pipeline.client for correct TS optional…
streamkit-devin Mar 22, 2026
c85826a
fix: close remaining gaps — node-graph lint rules, loadtest cleanup, …
streamkit-devin Mar 22, 2026
5f1e25c
fix: narrow accept from audio/* to audio/ogg in all ogg-only pipelines
streamkit-devin Mar 22, 2026
c2efd26
fix: use audio/opus instead of audio/ogg for precise MIME type
streamkit-devin Mar 22, 2026
5360c17
fix: consolidate double YAML parse in ConvertView
streamkit-devin Mar 22, 2026
79e4bea
fix: add missing InputConfig fields in extractClientFromParsed test
streamkit-devin Mar 22, 2026
55da7c9
style: apply rustfmt to yaml.rs
streamkit-devin Mar 22, 2026
5d90073
refactor: move deriveSettingsFromClient to moqPeerSettings.ts
streamkit-devin Mar 22, 2026
81d615c
fix: add node-graph fallback in useMonitorPreview and fix json test type
streamkit-devin Mar 22, 2026
ee2b44d
fix: cancel in-flight connect on disconnect to prevent second-attempt…
staging-devin-ai-integration[bot] Mar 23, 2026
8e4a83c
fix: restore gateway URL when switching back from relay pipeline
streamkit-devin Mar 23, 2026
082aabb
merge: integrate connect-abort changes from #182
streamkit-devin Mar 23, 2026
8848101
fix: align useMonitorPreview output defaults with deriveSettingsFromC…
streamkit-devin Mar 23, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions apps/skit/src/server.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1520,6 +1520,12 @@ struct CreateSessionResponse {
async fn populate_session_pipeline(session: &crate::session::Session, engine_pipeline: &Pipeline) {
let mut pipeline = session.pipeline.lock().await;

// Forward top-level metadata so the UI can read it from the session snapshot.
pipeline.name.clone_from(&engine_pipeline.name);
pipeline.description.clone_from(&engine_pipeline.description);
pipeline.mode = engine_pipeline.mode;
pipeline.client.clone_from(&engine_pipeline.client);

// Add nodes to in-memory pipeline
for (node_id, node_spec) in &engine_pipeline.nodes {
pipeline.nodes.insert(
Expand Down
2 changes: 1 addition & 1 deletion apps/skit/src/websocket_handlers.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1105,7 +1105,7 @@ async fn handle_get_pipeline(
"Retrieved pipeline"
);

Some(ResponsePayload::Pipeline { pipeline: api_pipeline })
Some(ResponsePayload::Pipeline { pipeline: Box::new(api_pipeline) })
}

fn handle_validate_batch(
Expand Down
10 changes: 10 additions & 0 deletions crates/api/src/bin/generate_ts_types.rs
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,16 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
format!("export {}", streamkit_api::ValidationError::decl(&cfg)),
format!("export {}", streamkit_api::ValidationErrorType::decl(&cfg)),
format!("export {}", streamkit_api::PermissionsInfo::decl(&cfg)),
// Declarative client section types
format!("\n// client section\nexport {}", streamkit_api::yaml::ClientSection::decl(&cfg)),
format!("export {}", streamkit_api::yaml::PublishConfig::decl(&cfg)),
format!("export {}", streamkit_api::yaml::WatchConfig::decl(&cfg)),
format!("export {}", streamkit_api::yaml::InputConfig::decl(&cfg)),
format!("export {}", streamkit_api::yaml::InputType::decl(&cfg)),
format!("export {}", streamkit_api::yaml::OutputConfig::decl(&cfg)),
format!("export {}", streamkit_api::yaml::OutputType::decl(&cfg)),
format!("export {}", streamkit_api::yaml::FieldHint::decl(&cfg)),
format!("export {}", streamkit_api::yaml::FieldType::decl(&cfg)),
];

let output = declarations.join("\n\n");
Expand Down
7 changes: 6 additions & 1 deletion crates/api/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -328,7 +328,7 @@ pub enum ResponsePayload {
nodes: Vec<NodeDefinition>,
},
Pipeline {
pipeline: ApiPipeline,
pipeline: Box<ApiPipeline>,
},
ValidationResult {
errors: Vec<ValidationError>,
Expand Down Expand Up @@ -538,6 +538,11 @@ pub struct Pipeline {
pub description: Option<String>,
#[serde(default)]
pub mode: EngineMode,
/// Declarative UI metadata — forwarded unchanged from `UserPipeline`,
/// ignored by the engine for execution.
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(default)]
pub client: Option<yaml::ClientSection>,
#[ts(type = "Record<string, Node>")]
pub nodes: indexmap::IndexMap<String, Node>,
pub connections: Vec<Connection>,
Expand Down
Loading
Loading