Context. surface studio · domain isis · route /studio/isis/comfyui-integration · auth signed-in + studio entitlement (segment not in AAA_ONLY_STUDIO_ROUTES — renders as-is) · source apps/oshun/web/src/app/studio/isis/comfyui-integration/page.tsx
Last walked. 2026-05-29 automated runtime walk (Playwright headless) — render, /v1 data (2xx), console/page-errors, expected content, screenshot verified; live screen-reader, touch, offline, and telemetry-delivery checks pending a manual AT pass. Evidence: WALKTHROUGH/results/runtime-sweep-2026-05-29.md; body re-derived 2026-06-03 from current source (lane-console architecture)
Purpose#
Admin lane console that wires the real @isis/comfyui-sdk validators via
/v1/admin/isis/comfyui-integration: it validates a custom node spec (required
metadata) and type-checks / coerces a widget value against its declared data
type. It is admin-scoped and fails closed.
Entry points#
- Sibling quick-action from
/studio/isis/workflow-templates - Studio index (
/studio) - Direct URL / bookmark
Layout regions#
page.tsx mounts <ShellLayout active="studio"> (no breadcrumb panel) and three
panels: the workspace, the Route Map, and sibling quick-actions.
- Header: shell header
- Workspace panel (
data-isis-comfyui-integration-workspace):<h1>(WorkspaceHeading) "Isis ComfyUI Integration Workspace"- Summary paragraph (
data-isis-ci-summary) - Node-spec validation form (
data-isis-ci-node-form) - Widget-value validation form (
data-isis-ci-value-form, data-type kind options fromcatalog.dataTypeKinds)
- Route Map panel (
data-isis-comfyui-integration-route-map):<h2>Route Map</h2>overSTUDIO_ISIS_COMFYUI_INTEGRATION_ROUTE_MAP(5 entries) - Sibling quick-actions panel:
/studio/isis/workflow-templates,/studio
States#
- Loading —
data-isis-ci-loading - Unauthorized — 401/403 admin-scope fail-closed;
data-isis-ci-unauthorized - Error — non-OK or malformed catalog;
data-isis-ci-error - Ready (forms) — catalog present; both validation forms render
- Result — node validation →
data-isis-ci-node-result(data-isis-ci-node-valid,data-isis-ci-issuelist); value validation →data-isis-ci-value-result(data-isis-ci-value-valid); action failures →data-isis-ci-action-error
Interactions#
Node-spec validation form (data-isis-ci-node-form)#
- Node typeId (
data-isis-ci-field-typeid, text input) - Display name (
data-isis-ci-field-display, text input) - Category (
data-isis-ci-field-category, text input) - Version (
data-isis-ci-field-version, text input) - Validate node spec (
data-isis-ci-node-submit, submit) —POST /v1/admin/isis/comfyui-integration/validate-node
Widget-value validation form (data-isis-ci-value-form)#
- Value (
data-isis-ci-field-value, text input) - Kind (
data-isis-ci-field-kind,<select>fromcatalog.dataTypeKinds) - Min (
data-isis-ci-field-min, text input,aria-label="minimum") - Max (
data-isis-ci-field-max, text input,aria-label="maximum") - Validate value (
data-isis-ci-value-submit, submit) —POST /v1/admin/isis/comfyui-integration/validate-value
Route Map#
- Route-map articles ×5
Sibling quick-actions#
- Open Isis Workflow Templates workspace →
/studio/isis/workflow-templates - Back to Studio workspace index →
/studio
Data & contracts#
- Reads:
GET /v1/admin/isis/comfyui-integration({ dataTypeKinds }catalog) - Writes:
POST /v1/admin/isis/comfyui-integration/validate-node(node-spec validation)POST /v1/admin/isis/comfyui-integration/validate-value({ validation: { valid, coercedValue } })
- Realtime: none
- Caching: client fetch on mount,
cache: 'no-store',buildBffAuthHeaders() - Auth/role check: admin-scoped, fail-closed (401/403); route gated on signed-in + studio entitlement
- Component sources:
apps/oshun/web/src/components/studio/StudioIsisComfyUIIntegrationWorkspace.tsxapps/oshun/web/src/components/studio/StudioIsisComfyUIIntegrationRouteMap.ts
Cross-references#
- Studio overview:
../../studio-overview.md - Sibling routes:
Open questions / known gaps#
- No breadcrumb on this route — navigation is via sibling quick-actions