@inf-monkeys-tech/monkeys 1.0.46 → 1.0.47

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/lib/contracts/access.d.ts +60 -0
  2. package/lib/contracts/access.d.ts.map +1 -0
  3. package/lib/contracts/access.js +47 -0
  4. package/lib/contracts/access.js.map +1 -0
  5. package/lib/contracts/index.d.ts +1 -0
  6. package/lib/contracts/index.d.ts.map +1 -1
  7. package/lib/contracts/index.js +1 -0
  8. package/lib/contracts/index.js.map +1 -1
  9. package/lib/contracts/menu.d.ts +1 -1
  10. package/lib/contracts/page.d.ts +3 -3
  11. package/lib/contracts/render.d.ts +4 -4
  12. package/lib/contracts/semantic.d.ts +1 -1
  13. package/lib/contracts/tenant.d.ts +80 -5
  14. package/lib/contracts/tenant.d.ts.map +1 -1
  15. package/lib/contracts/tenant.js +10 -0
  16. package/lib/contracts/tenant.js.map +1 -1
  17. package/lib/esm/contracts/index.mjs +1445 -1399
  18. package/lib/esm/contracts/index.mjs.map +1 -1
  19. package/lib/esm/index.mjs +1503 -1401
  20. package/lib/esm/index.mjs.map +1 -1
  21. package/lib/esm/runtime/index.mjs +100 -2
  22. package/lib/esm/runtime/index.mjs.map +1 -1
  23. package/lib/esm/schemas/index.mjs +1445 -1399
  24. package/lib/esm/schemas/index.mjs.map +1 -1
  25. package/lib/index.d.ts +1 -0
  26. package/lib/index.d.ts.map +1 -1
  27. package/lib/index.js +3 -1
  28. package/lib/index.js.map +1 -1
  29. package/lib/json-schema/tenant-product-config.schema.json +58 -0
  30. package/lib/json-schema/tenant-runtime-config.schema.json +58 -0
  31. package/lib/runtime/access-compiler.d.ts +10 -0
  32. package/lib/runtime/access-compiler.d.ts.map +1 -0
  33. package/lib/runtime/access-compiler.js +63 -0
  34. package/lib/runtime/access-compiler.js.map +1 -0
  35. package/lib/runtime/index.d.ts +1 -0
  36. package/lib/runtime/index.d.ts.map +1 -1
  37. package/lib/runtime/index.js +1 -0
  38. package/lib/runtime/index.js.map +1 -1
  39. package/lib/runtime/menu-compiler.d.ts +0 -1
  40. package/lib/runtime/menu-compiler.d.ts.map +1 -1
  41. package/lib/runtime/menu-compiler.js +1 -2
  42. package/lib/runtime/menu-compiler.js.map +1 -1
  43. package/lib/schemas/index.d.ts +59 -8
  44. package/lib/schemas/index.d.ts.map +1 -1
  45. package/lib/schemas/index.js +10 -5
  46. package/lib/schemas/index.js.map +1 -1
  47. package/package.json +1 -1
@@ -9836,14 +9836,13 @@ var evaluateAccess = (item, context) => {
9836
9836
  if (!context.sessionResolved && protectedBySession) reasons.push("session-unresolved");
9837
9837
  if (item.access.authenticated && !context.authenticated) reasons.push("authentication");
9838
9838
  const granted = new Set(context.permissionCodes);
9839
- const elevated = context.isKernelSuperAdmin === true || granted.has("*");
9840
9839
  if (item.access.permissionAllOf.some((permission) => !granted.has(permission))) {
9841
9840
  reasons.push("permission-all");
9842
9841
  }
9843
9842
  if (item.access.permissionAnyOf.length > 0 && !item.access.permissionAnyOf.some((permission) => granted.has(permission))) {
9844
9843
  reasons.push("permission-any");
9845
9844
  }
9846
- if (!elevated && item.access.requiredPermission && !granted.has(item.access.requiredPermission)) {
9845
+ if (item.access.requiredPermission && !granted.has(item.access.requiredPermission)) {
9847
9846
  reasons.push("required-permission");
9848
9847
  }
9849
9848
  if (item.access.featureFlags.some((flag) => context.featureFlags[flag] !== true)) {
@@ -13309,6 +13308,13 @@ var TenantApplicationConfigSchema = z11.object({
13309
13308
  teamAsUser: z11.boolean().optional(),
13310
13309
  themeMode: z11.enum(["shadow", "border"]).optional(),
13311
13310
  density: z11.enum(["compact", "default", "comfortable"]).optional(),
13311
+ statusStates: z11.object({
13312
+ loading: z11.object({ variant: z11.enum(["spinner", "skeleton"]).optional() }).strict().optional(),
13313
+ empty: z11.object({ variant: z11.enum(["default", "compact"]).optional() }).strict().optional(),
13314
+ error: z11.object({ showRetry: z11.boolean().optional() }).strict().optional(),
13315
+ permission: z11.object({ showRequestAccess: z11.boolean().optional() }).strict().optional(),
13316
+ density: z11.enum(["compact", "default", "comfortable"]).optional()
13317
+ }).strict().optional(),
13312
13318
  pageZoom: z11.number().positive().optional(),
13313
13319
  miniMode: z11.object({ showPreviewViewExecutionResultGrid: z11.boolean() }).strict().optional(),
13314
13320
  workflow: z11.object({ allowConcurrentRuns: z11.boolean() }).strict().optional(),
@@ -13747,6 +13753,97 @@ var compileWorkflowPersistenceProjection = (input) => {
13747
13753
  output: Object.freeze(workflow.parameters.outputs)
13748
13754
  });
13749
13755
  };
13756
+
13757
+ // src/contracts/access.ts
13758
+ import { z as z12 } from "zod";
13759
+ var PermissionDefinitionSchema = z12.object({
13760
+ code: ContractIdentifierSchema,
13761
+ name: LocalizedTextSchema,
13762
+ description: LocalizedTextSchema.optional(),
13763
+ resource: ContractIdentifierSchema,
13764
+ action: ContractIdentifierSchema,
13765
+ domain: ContractIdentifierSchema.optional()
13766
+ }).strict();
13767
+ var PermissionBundleSchema = z12.object({
13768
+ bundleId: ContractIdentifierSchema,
13769
+ name: LocalizedTextSchema,
13770
+ permissionCodes: z12.array(ContractIdentifierSchema).default([])
13771
+ }).strict();
13772
+ var SystemGroupDefinitionSchema = z12.object({
13773
+ groupCode: ContractIdentifierSchema,
13774
+ name: LocalizedTextSchema,
13775
+ description: LocalizedTextSchema.optional(),
13776
+ permissionPolicy: z12.enum(["bundles", "studio_current", "all_current"]).default("bundles"),
13777
+ permissionBundleIds: z12.array(ContractIdentifierSchema).default([])
13778
+ }).strict().refine((value) => value.permissionPolicy !== "bundles" || value.permissionBundleIds.length > 0, {
13779
+ message: "A bundles permission policy requires at least one permission bundle.",
13780
+ path: ["permissionBundleIds"]
13781
+ });
13782
+ var ProductAccessDeclarationSchema = z12.object({
13783
+ contract: z12.literal("ProductAccessDeclaration"),
13784
+ declarationId: ContractIdentifierSchema,
13785
+ version: ContractVersionSchema,
13786
+ ownerRepo: ContractIdentifierSchema,
13787
+ permissions: z12.array(PermissionDefinitionSchema).default([]),
13788
+ permissionBundles: z12.array(PermissionBundleSchema).default([]),
13789
+ systemGroups: z12.array(SystemGroupDefinitionSchema).min(1)
13790
+ }).strict();
13791
+
13792
+ // src/runtime/access-compiler.ts
13793
+ var uniqueBy = (values, key, label) => {
13794
+ const result = /* @__PURE__ */ new Map();
13795
+ for (const value of values) {
13796
+ const id = key(value);
13797
+ if (result.has(id)) throw new Error(`Duplicate ${label} ${id}.`);
13798
+ result.set(id, value);
13799
+ }
13800
+ return result;
13801
+ };
13802
+ var compileProductAccessDeclaration = (input) => {
13803
+ const declaration = ProductAccessDeclarationSchema.parse(input);
13804
+ const permissionsByCode = uniqueBy(declaration.permissions, (item) => item.code, "permission");
13805
+ const bundlesById = uniqueBy(declaration.permissionBundles, (item) => item.bundleId, "permission bundle");
13806
+ uniqueBy(declaration.systemGroups, (item) => item.groupCode, "system group");
13807
+ const permissionCodesByBundle = /* @__PURE__ */ new Map();
13808
+ for (const bundle of declaration.permissionBundles) {
13809
+ for (const permissionCode of bundle.permissionCodes) {
13810
+ if (!permissionsByCode.has(permissionCode)) {
13811
+ throw new Error(`Permission bundle ${bundle.bundleId} references unknown permission ${permissionCode}.`);
13812
+ }
13813
+ }
13814
+ permissionCodesByBundle.set(bundle.bundleId, [...new Set(bundle.permissionCodes)]);
13815
+ }
13816
+ const permissionCodesBySystemGroup = /* @__PURE__ */ new Map();
13817
+ const permissionPolicyBySystemGroup = /* @__PURE__ */ new Map();
13818
+ for (const group of declaration.systemGroups) {
13819
+ const permissionCodes = /* @__PURE__ */ new Set();
13820
+ permissionPolicyBySystemGroup.set(group.groupCode, group.permissionPolicy);
13821
+ if (group.permissionPolicy === "all_current") {
13822
+ for (const permission of declaration.permissions) permissionCodes.add(permission.code);
13823
+ }
13824
+ if (group.permissionPolicy === "studio_current") {
13825
+ for (const permission of declaration.permissions) {
13826
+ if (permission.domain === "studio" || permission.code.startsWith("studio:")) permissionCodes.add(permission.code);
13827
+ }
13828
+ }
13829
+ for (const bundleId of group.permissionBundleIds) {
13830
+ if (!bundlesById.has(bundleId)) {
13831
+ throw new Error(`System group ${group.groupCode} references unknown permission bundle ${bundleId}.`);
13832
+ }
13833
+ for (const permissionCode of permissionCodesByBundle.get(bundleId) ?? []) {
13834
+ permissionCodes.add(permissionCode);
13835
+ }
13836
+ }
13837
+ permissionCodesBySystemGroup.set(group.groupCode, [...permissionCodes]);
13838
+ }
13839
+ return {
13840
+ declaration,
13841
+ permissionsByCode,
13842
+ permissionCodesByBundle,
13843
+ permissionCodesBySystemGroup,
13844
+ permissionPolicyBySystemGroup
13845
+ };
13846
+ };
13750
13847
  export {
13751
13848
  APPLICATION_HANDOFF_QUERY_PARAMETER,
13752
13849
  DEFAULT_CONDUCTOR_OWNER_EMAIL,
@@ -13762,6 +13859,7 @@ export {
13762
13859
  compileConductorWorkflowDefinition,
13763
13860
  compileMenuRuntimeBundle,
13764
13861
  compilePageRuntimeProjection,
13862
+ compileProductAccessDeclaration,
13765
13863
  compileProductDeclaration,
13766
13864
  compileProductRuntimeCatalog,
13767
13865
  compileRenderTree,