Add governed institutional capability contracts

This commit is contained in:
2026-08-01 20:57:25 +02:00
parent 7192d32e65
commit 2b4eb0151f
16 changed files with 2203 additions and 249 deletions
+40
View File
@@ -11,6 +11,7 @@
"@govoplan/access-webui": "file:../../govoplan-access/webui",
"@govoplan/addresses-webui": "file:../../govoplan-addresses/webui",
"@govoplan/admin-webui": "file:../../govoplan-admin/webui",
"@govoplan/approvals-webui": "file:../../govoplan-approvals/webui",
"@govoplan/audit-webui": "file:../../govoplan-audit/webui",
"@govoplan/calendar-webui": "file:../../govoplan-calendar/webui",
"@govoplan/campaign-webui": "file:../../govoplan-campaign/webui",
@@ -39,6 +40,7 @@
"@govoplan/search-webui": "file:../../govoplan-search/webui",
"@govoplan/tenancy-webui": "file:../../govoplan-tenancy/webui",
"@govoplan/views-webui": "file:../../govoplan-views/webui",
"@govoplan/voting-webui": "file:../../govoplan-voting/webui",
"@govoplan/workflow-webui": "file:../../govoplan-workflow/webui",
"@tiptap/core": "^3.29.2",
"@tiptap/extension-image": "^3.29.2",
@@ -120,6 +122,21 @@
}
}
},
"../../govoplan-approvals/webui": {
"name": "@govoplan/approvals-webui",
"version": "0.1.14",
"peerDependencies": {
"@govoplan/core-webui": "^0.1.14",
"lucide-react": "^1.23.0",
"react": ">=19.2.7 <20",
"react-dom": ">=19.2.7 <20"
},
"peerDependenciesMeta": {
"@govoplan/core-webui": {
"optional": true
}
}
},
"../../govoplan-audit/webui": {
"name": "@govoplan/audit-webui",
"version": "0.1.8",
@@ -603,6 +620,21 @@
}
}
},
"../../govoplan-voting/webui": {
"name": "@govoplan/voting-webui",
"version": "0.1.14",
"peerDependencies": {
"@govoplan/core-webui": "^0.1.14",
"lucide-react": "^1.23.0",
"react": ">=19.2.7 <20",
"react-dom": ">=19.2.7 <20"
},
"peerDependenciesMeta": {
"@govoplan/core-webui": {
"optional": true
}
}
},
"../../govoplan-workflow/webui": {
"name": "@govoplan/workflow-webui",
"version": "0.1.14",
@@ -1385,6 +1417,10 @@
"resolved": "../../govoplan-admin/webui",
"link": true
},
"node_modules/@govoplan/approvals-webui": {
"resolved": "../../govoplan-approvals/webui",
"link": true
},
"node_modules/@govoplan/audit-webui": {
"resolved": "../../govoplan-audit/webui",
"link": true
@@ -1497,6 +1533,10 @@
"resolved": "../../govoplan-views/webui",
"link": true
},
"node_modules/@govoplan/voting-webui": {
"resolved": "../../govoplan-voting/webui",
"link": true
},
"node_modules/@govoplan/workflow-webui": {
"resolved": "../../govoplan-workflow/webui",
"link": true
+2
View File
@@ -49,6 +49,7 @@
},
"dependencies": {
"@govoplan/access-webui": "file:../../govoplan-access/webui",
"@govoplan/approvals-webui": "file:../../govoplan-approvals/webui",
"@govoplan/addresses-webui": "file:../../govoplan-addresses/webui",
"@govoplan/admin-webui": "file:../../govoplan-admin/webui",
"@govoplan/audit-webui": "file:../../govoplan-audit/webui",
@@ -79,6 +80,7 @@
"@govoplan/search-webui": "file:../../govoplan-search/webui",
"@govoplan/tenancy-webui": "file:../../govoplan-tenancy/webui",
"@govoplan/views-webui": "file:../../govoplan-views/webui",
"@govoplan/voting-webui": "file:../../govoplan-voting/webui",
"@govoplan/workflow-webui": "file:../../govoplan-workflow/webui",
"@tiptap/core": "^3.29.2",
"@tiptap/extension-image": "^3.29.2",
+5 -1
View File
@@ -3,6 +3,7 @@ import { mkdirSync, readFileSync, writeFileSync } from "node:fs";
const packageByModule = {
access: "@govoplan/access-webui",
approvals: "@govoplan/approvals-webui",
admin: "@govoplan/admin-webui",
addresses: "@govoplan/addresses-webui",
audit: "@govoplan/audit-webui",
@@ -33,6 +34,7 @@ const packageByModule = {
search: "@govoplan/search-webui",
tenancy: "@govoplan/tenancy-webui",
views: "@govoplan/views-webui",
voting: "@govoplan/voting-webui",
workflow: "@govoplan/workflow-webui"
};
@@ -78,7 +80,9 @@ const cases = [
{ name: "search-only", modules: ["search"] },
{ name: "risk-compliance-only", modules: ["risk_compliance"] },
{ name: "docs-and-ops", modules: ["access", "docs", "ops"] },
{ name: "full-product", modules: ["access", "tenancy", "admin", "addresses", "policy", "audit", "dashboard", "datasources", "dataflow", "dist_lists", "workflow", "views", "organizations", "idm", "cases", "committee", "campaigns", "files", "forms", "forms_runtime", "mail", "notifications", "docs", "ops", "calendar", "scheduling", "portal", "postbox", "projects", "reporting", "risk_compliance", "search"] }
{ name: "approvals-only", modules: ["access", "approvals"] },
{ name: "voting-only", modules: ["access", "voting"] },
{ name: "full-product", modules: ["access", "tenancy", "admin", "addresses", "approvals", "policy", "audit", "dashboard", "datasources", "dataflow", "dist_lists", "workflow", "views", "organizations", "idm", "cases", "committee", "campaigns", "files", "forms", "forms_runtime", "mail", "notifications", "docs", "ops", "calendar", "scheduling", "portal", "postbox", "projects", "reporting", "risk_compliance", "search", "voting"] }
];
const npmExec = process.env.npm_execpath;
+3 -1
View File
@@ -1,4 +1,4 @@
import { Activity, Bell, BookUser, BriefcaseBusiness, Building2, CalendarClock, CalendarDays, ClipboardPenLine, DatabaseZap, Folder, FolderKanban, Form, Gavel, Inbox, Landmark, LayoutDashboard, LayoutTemplate, ListTree, Mail, Mails, RadioTower, Shield, ShieldCheck, Users, Waypoints, Workflow as WorkflowIcon, type LucideIcon } from "lucide-react";
import { Activity, Bell, BookUser, BriefcaseBusiness, Building2, CalendarClock, CalendarDays, ClipboardPenLine, DatabaseZap, Folder, FolderKanban, Form, Gavel, Inbox, Landmark, LayoutDashboard, LayoutTemplate, ListChecks, ListTree, Mail, Mails, RadioTower, Shield, ShieldCheck, Users, Vote, Waypoints, Workflow as WorkflowIcon, type LucideIcon } from "lucide-react";
import installedWebModuleLoaderSource from "virtual:govoplan-installed-modules";
import type { AuthInfo, DashboardWidgetContribution, DashboardWidgetsUiCapability, EffectiveViewProjection, PlatformModuleInfo, PlatformNavItem, PlatformPublicModuleInfo, PlatformViewSurface, PlatformWebModule } from "../types";
import {
@@ -75,6 +75,7 @@ const iconByName: Record<string, LucideIcon> = {
landmark: Landmark,
"layout-template": LayoutTemplate,
"list-tree": ListTree,
"list-checks": ListChecks,
mail: Mail,
notifications: Bell,
organizations: Building2,
@@ -84,6 +85,7 @@ const iconByName: Record<string, LucideIcon> = {
"shield-check": ShieldCheck,
templates: LayoutTemplate,
users: Users,
vote: Vote,
waypoints: Waypoints,
workflow: WorkflowIcon
};
+4
View File
@@ -14,6 +14,7 @@ const resolvedInstalledModuleVirtualPrefix = `\0${installedModuleVirtualPrefix}`
const defaultWebModulePackages = [
"@govoplan/access-webui",
"@govoplan/approvals-webui",
"@govoplan/admin-webui",
"@govoplan/addresses-webui",
"@govoplan/audit-webui",
@@ -43,6 +44,7 @@ const defaultWebModulePackages = [
"@govoplan/search-webui",
"@govoplan/tenancy-webui",
"@govoplan/views-webui",
"@govoplan/voting-webui",
"@govoplan/workflow-webui"
];
@@ -224,6 +226,7 @@ export default defineConfig({
allow: [
fileURLToPath(new URL('.', import.meta.url)),
fileURLToPath(new URL('../../govoplan-access/webui', import.meta.url)),
fileURLToPath(new URL('../../govoplan-approvals/webui', import.meta.url)),
fileURLToPath(new URL('../../govoplan-admin/webui', import.meta.url)),
fileURLToPath(new URL('../../govoplan-addresses/webui', import.meta.url)),
fileURLToPath(new URL('../../govoplan-audit/webui', import.meta.url)),
@@ -250,6 +253,7 @@ export default defineConfig({
fileURLToPath(new URL('../../govoplan-search/webui', import.meta.url)),
fileURLToPath(new URL('../../govoplan-tenancy/webui', import.meta.url)),
fileURLToPath(new URL('../../govoplan-views/webui', import.meta.url)),
fileURLToPath(new URL('../../govoplan-voting/webui', import.meta.url)),
fileURLToPath(new URL('../../govoplan-workflow/webui', import.meta.url))
]
},