Phase 7b: page render plans — per-page boundary optimizer
Add page-render-plan to deps.sx: given page source + env + IO names, computes a dict mapping each needed component to "server" or "client", with server/client lists and IO dep collection. 5 new spec tests. Integration: - PageDef.render_plan field caches the plan at registration - compute_page_render_plans() called from auto_mount_pages() - Client page registry includes :render-plan per page - Affinity demo page shows per-page render plans Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -198,6 +198,22 @@ def compute_all_io_refs(env: dict[str, Any], io_names: set[str]) -> None:
|
||||
_compute_all_io_refs_fallback(env, io_names)
|
||||
|
||||
|
||||
def page_render_plan(page_sx: str, env: dict[str, Any], io_names: set[str] | None = None) -> dict[str, Any]:
|
||||
"""Compute the render plan for a page.
|
||||
|
||||
Returns dict with:
|
||||
- "components": {name: "server"|"client", ...}
|
||||
- "server": [names rendered server-side]
|
||||
- "client": [names rendered client-side]
|
||||
- "io-deps": [IO primitive names needed by server components]
|
||||
"""
|
||||
if io_names is None:
|
||||
io_names = get_all_io_names()
|
||||
from .ref.sx_ref import page_render_plan as _ref_prp
|
||||
plan = _ref_prp(page_sx, env, list(io_names))
|
||||
return plan
|
||||
|
||||
|
||||
def get_all_io_names() -> set[str]:
|
||||
"""Build the complete set of IO primitive names from all boundary tiers.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user