Web blocks¶
BlockSpec¶
Registered in web/blocks/registry.py. Each block has id, group, description, optional module_deps / artifact_patterns, and a render(ctx, placement) function.
BlockPlacement¶
Layout YAML uses placement_id (unique instance) and block_id (reusable type).
Adding a block¶
Implement
render_*inweb/blocks/implementations/— adapt an existing page renderer; do not duplicateArtifactServicelogic.Register in
web/blocks/builtin.py.Add placement to a curated preset under
web/layouts/presets/(the built-inalllayout picks up new blocks automatically).Add a smoke test under
tests/web/blocks/.
Insights blocks for new analysis modules¶
Block id |
Module |
Layouts |
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
presentation helpers under summary/speakers (Actions placement removed) |
|
|
|
|
|
|
|
|
|
|
|
|
Group runs (dual presentation)¶
Group analysis already executes selected modules on each member transcript, then finalizes aggregates. Insights/Overview blocks must not assume only single-transcript stems under the group run root.
Shared helpers: web/blocks/group_content.py. Loader: ArtifactContentLoader resolves via storage_root (member run dirs).
On group runs, content blocks show:
Group rollup — aggregate
*_rows.json/ blobs / group LLM synthesisPer session — session picker loads that member’s single-transcript contract (
_insights.json,_highlights.json, etc.)
Surface |
Group rollup source |
Per-session source |
|---|---|---|
Highlights |
|
member |
Insights contract |
|
member |
Action items |
|
member |
Custom questions |
|
member |
Executive summary / commitments |
blob |
member |
LLM summary (block) |
synthesis / collect blob |
member |
LLM speaker summaries |
synthesis index |
member speaker index + files |
Lexical diversity |
|
member |
transcript_summary_hero / resolve_primary_summary still prefer committed cross-session synthesis as the primary prose hero (no member _llm_summary primary fallback). Member summaries remain available under Per session on Insights LLM blocks.
Overview module metrics use summary extractors under web/summary_extractors/. Zip export summaries for LLM prose/list modules are resolved in transcriptx.export.resolve.
Layout preset catalog¶
Built-in YAML lives under web/layouts/presets/. The generated all layout is not a YAML file.
Id |
Title |
Intent |
|---|---|---|
|
Standard |
Everyday curated Overview + sectioned Insights (product default) |
|
Executive |
Metrics / health / export Overview; summary + actions + highlights |
|
Meeting follow-up |
Post-meeting extracts, commitments, highlights |
|
Speakers |
Speaker cards + linguistic Insights stack |
|
Minimal |
Hero + glance + status; lean Insights (summary + highlights) |
|
Developer debug |
Inspection / layout testing |
|
All |
Every registered block, alphabetical (generated) |
Curated Insights placements should set section: (summary | speakers | actions | highlights) so Insights local navigation stays coherent. Public envelope is schema_version 1 only.
Adding a layout¶
Copy
presets/default.yaml(or another curated preset) to{config_dir}/profiles/ui_layouts/my_layout.yaml(runtimePROFILES_DIR/ui_layouts/; not repodata/profiles/), or add a new built-in underpresets/and register the id inBUILTIN_LAYOUT_IDS+ layout picker labels.Validate via Dashboard Builder Schema mode or
LayoutProfileStore.validate_layout_dict/validate_layout.Set
active_layout_profile_idin session state or use the Dashboard Builder selector.Prefer Save as custom layout in Dashboard Builder for user clones (overwrite confirmation + delete support).
See dashboard_builder.md for Schema / Preview / save / delete workflows.
BlockContext¶
Built by build_context_from_session() — blocks never receive raw st.session_state.