feat(housekeeping): compose operations workspace
CI / check (pull_request) Successful in 37s
CI / release (pull_request) Skipped
CI / deploy (pull_request) Skipped

This commit is contained in:
Simo committed 2026-08-30 17:23:55 +02:00
1 parent 5574e601bb
commit 85ad0452d3
22 files changed
+1240 -87

No files matched your search

@@ -0,0 +1,47 @@
import { createElement } from "react";
import { satisfiesCapability } from "../../foundation/capability-context";
import { createHousekeepingRegistry } from "../../foundation/registry";
import { HOUSEKEEPING_MANIFESTS } from "../../manifests";
import type { HousekeepingRouteHandler } from "../../route-handlers";
import { OperationsWorkspacePage } from "./pages/workspace";
import { operationsWorkspaceQuery } from "./queries";
export async function renderOperationsWorkspacePage(
input: Parameters<HousekeepingRouteHandler["render"]>[0],
) {
const registry = createHousekeepingRegistry(HOUSEKEEPING_MANIFESTS);
const accessibleDomains = registry.domains.filter(
(domain) =>
domain.id !== "operations" &&
satisfiesCapability(input.context, domain.capability),
);
const routes = accessibleDomains.flatMap((domain) =>
domain.routes.filter((route) =>
satisfiesCapability(input.context, route.capability),
),
);
const widgetDefinitions = registry.domains
.filter((domain) => satisfiesCapability(input.context, domain.capability))
.flatMap((domain) =>
domain.widgets.filter((widget) =>
satisfiesCapability(input.context, widget.capability),
),
);
return createElement(OperationsWorkspacePage, {
result: await operationsWorkspaceQuery(input.context),
routes,
widgetDefinitions,
surface: input.surface ?? "preview",
...(input.savePreferences
? { savePreferences: input.savePreferences }
: {}),
});
}
export const OPERATIONS_ROUTE_HANDLERS: readonly HousekeepingRouteHandler[] =
Object.freeze([
Object.freeze({
routeId: "operations.workspace",
render: renderOperationsWorkspacePage,
}),
]);