@inf-monkeys-tech/monkeys 1.0.66 → 1.0.69

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/declarative-control-http.d.ts +1448 -0
  2. package/lib/contracts/declarative-control-http.d.ts.map +1 -1
  3. package/lib/contracts/declarative-control.d.ts +764 -3
  4. package/lib/contracts/declarative-control.d.ts.map +1 -1
  5. package/lib/contracts/declarative-control.js +27 -5
  6. package/lib/contracts/declarative-control.js.map +1 -1
  7. package/lib/contracts/tenant.d.ts +69 -0
  8. package/lib/contracts/tenant.d.ts.map +1 -1
  9. package/lib/contracts/tenant.js +279 -93
  10. package/lib/contracts/tenant.js.map +1 -1
  11. package/lib/esm/contracts/index.mjs +144 -50
  12. package/lib/esm/contracts/index.mjs.map +1 -1
  13. package/lib/esm/index.mjs +221 -50
  14. package/lib/esm/index.mjs.map +1 -1
  15. package/lib/esm/runtime/index.mjs +220 -50
  16. package/lib/esm/runtime/index.mjs.map +1 -1
  17. package/lib/esm/schemas/index.mjs +144 -50
  18. package/lib/esm/schemas/index.mjs.map +1 -1
  19. package/lib/json-schema/navigation-release.schema.json +582 -0
  20. package/lib/json-schema/navigation-runtime-bundle.schema.json +588 -1
  21. package/lib/json-schema/page-release.schema.json +9 -1
  22. package/lib/json-schema/page-runtime-bundle.schema.json +9 -1
  23. package/lib/json-schema/tenant-product-config.schema.json +73 -0
  24. package/lib/json-schema/tenant-runtime-config.schema.json +73 -0
  25. package/lib/json-schema/workbench-release.schema.json +9 -1
  26. package/lib/json-schema/workbench-runtime-bundle.schema.json +18 -2
  27. package/lib/runtime/declarative-control-compiler.d.ts.map +1 -1
  28. package/lib/runtime/declarative-control-compiler.js +27 -0
  29. package/lib/runtime/declarative-control-compiler.js.map +1 -1
  30. package/lib/runtime/index.d.ts +1 -0
  31. package/lib/runtime/index.d.ts.map +1 -1
  32. package/lib/runtime/index.js +1 -0
  33. package/lib/runtime/index.js.map +1 -1
  34. package/lib/runtime/menu-compiler.d.ts +19 -1
  35. package/lib/runtime/menu-compiler.d.ts.map +1 -1
  36. package/lib/runtime/menu-compiler.js +34 -0
  37. package/lib/runtime/menu-compiler.js.map +1 -1
  38. package/lib/runtime/navigation-availability.d.ts +6 -0
  39. package/lib/runtime/navigation-availability.d.ts.map +1 -0
  40. package/lib/runtime/navigation-availability.js +17 -0
  41. package/lib/runtime/navigation-availability.js.map +1 -0
  42. package/lib/schemas/index.d.ts +310 -1
  43. package/lib/schemas/index.d.ts.map +1 -1
  44. package/lib/schemas/index.js +5 -4
  45. package/lib/schemas/index.js.map +1 -1
  46. package/package.json +1 -1
  47. package/test/fixtures/navigation-three-roots-topology.json +275 -0
@@ -9496,18 +9496,21 @@ var RouteClaimSchema = RouteClaimBaseSchema.safeExtend({
9496
9496
  }).strict();
9497
9497
  var DeclarativeRouteClaimSchema = RouteClaimSchema;
9498
9498
  var LegacyDeclarativeRouteClaimSchema = LegacyRouteClaimSchema;
9499
- var CompiledRouteMatcherSchema = z9.object({
9499
+ var LegacyCompiledRouteMatcherSchema = z9.object({
9500
9500
  caseSensitive: z9.boolean(),
9501
9501
  trailingSlash: z9.enum(["preserve", "remove", "require"]),
9502
9502
  parameters: z9.array(RouteSpaceParameterSchema)
9503
9503
  }).strict();
9504
+ var CompiledRouteMatcherSchema = LegacyCompiledRouteMatcherSchema.safeExtend({
9505
+ surface: ProductSurfaceSchema
9506
+ }).strict();
9504
9507
  var CompiledRouteClaimSchema = RouteClaimSchema.safeExtend({
9505
9508
  normalizedPath: RoutePathTemplateSchema,
9506
9509
  matcher: CompiledRouteMatcherSchema
9507
9510
  }).strict();
9508
9511
  var LegacyCompiledRouteClaimSchema = LegacyRouteClaimSchema.safeExtend({
9509
9512
  normalizedPath: RoutePathTemplateSchema,
9510
- matcher: CompiledRouteMatcherSchema
9513
+ matcher: LegacyCompiledRouteMatcherSchema
9511
9514
  }).strict();
9512
9515
  var validateDeclaredRouteSurfaces = (supportedSurfaces, routeClaims, context) => {
9513
9516
  if (uniqueArray(supportedSurfaces, (surface) => surface)) {
@@ -10073,6 +10076,12 @@ var ResolvedNavigationTargetSchema = z9.object({
10073
10076
  targetRevisionRef: RevisionRefSchema,
10074
10077
  releaseRevisionRef: RevisionRefSchema.optional()
10075
10078
  }).strict();
10079
+ var UnavailableNavigationTargetSchema = z9.object({
10080
+ nodeId: ContractIdentifierSchema,
10081
+ stableTargetRef: StableRefSchema.refine((reference) => reference.kind === "page", "Only missing Pages can be isolated."),
10082
+ reason: z9.literal("page-missing"),
10083
+ accessPolicy: AccessPolicySchema.nullable()
10084
+ }).strict();
10076
10085
  var NavigationReleaseSchema = z9.object({
10077
10086
  contract: z9.literal("NavigationRelease"),
10078
10087
  ...ReleaseBaseShape,
@@ -10082,13 +10091,17 @@ var NavigationReleaseSchema = z9.object({
10082
10091
  surface: ProductSurfaceSchema,
10083
10092
  placement: ContractIdentifierSchema
10084
10093
  }).strict(),
10085
- resolvedTargets: z9.array(ResolvedNavigationTargetSchema)
10094
+ resolvedTargets: z9.array(ResolvedNavigationTargetSchema),
10095
+ unavailableTargets: z9.array(UnavailableNavigationTargetSchema).optional()
10086
10096
  }).strict().superRefine((value, context) => {
10087
10097
  validateDependencySnapshot(value.dependencySnapshot, context);
10088
10098
  validateReleaseExpectedHead(value, "navigation-release", context);
10089
10099
  if (value.navigationRevisionRef.kind !== "navigation") context.addIssue({ code: "custom", path: ["navigationRevisionRef", "kind"], message: "Expected a navigation revision." });
10090
10100
  if (value.target.environmentRef.kind !== "environment") context.addIssue({ code: "custom", path: ["target", "environmentRef", "kind"], message: "Navigation release target requires an environment reference." });
10091
10101
  if (uniqueArray(value.resolvedTargets, (target) => target.nodeId)) context.addIssue({ code: "custom", path: ["resolvedTargets"], message: "Resolved Navigation node IDs must be unique." });
10102
+ if (uniqueArray([...value.resolvedTargets, ...value.unavailableTargets ?? []], (target) => target.nodeId)) {
10103
+ context.addIssue({ code: "custom", path: ["unavailableTargets"], message: "Navigation target resolutions must have unique node IDs." });
10104
+ }
10092
10105
  });
10093
10106
  var RuntimeDiagnosticSchema = z9.object({
10094
10107
  code: ContractIdentifierSchema,
@@ -10176,7 +10189,8 @@ var CompiledNavigationDomainCommandTargetSchema = ResolvedNavigationTargetSchema
10176
10189
  var CompiledNavigationResolvedTargetSchema = z9.discriminatedUnion("kind", [
10177
10190
  CompiledNavigationTargetSchema,
10178
10191
  CompiledNavigationRegisteredMenuActionTargetSchema,
10179
- CompiledNavigationDomainCommandTargetSchema
10192
+ CompiledNavigationDomainCommandTargetSchema,
10193
+ UnavailableNavigationTargetSchema.omit({ reason: true }).extend({ kind: z9.literal("unavailable") }).strict()
10180
10194
  ]);
10181
10195
  var CompiledNavigationGroupNodeSchema = NavigationGroupNodeSchema.extend({
10182
10196
  ancestorAccessPolicies: z9.array(AccessPolicySchema)
@@ -10184,7 +10198,14 @@ var CompiledNavigationGroupNodeSchema = NavigationGroupNodeSchema.extend({
10184
10198
  var CompiledNavigationTargetNodeSchema = NavigationTargetNodeSchema.extend({
10185
10199
  ancestorAccessPolicies: z9.array(AccessPolicySchema),
10186
10200
  resolvedTarget: CompiledNavigationResolvedTargetSchema
10187
- }).strict();
10201
+ }).strict().superRefine((node, context) => {
10202
+ if (node.resolvedTarget.nodeId !== node.nodeId || stableRefIdentity(node.resolvedTarget.stableTargetRef) !== stableRefIdentity(node.targetRef)) {
10203
+ context.addIssue({ code: "custom", path: ["resolvedTarget"], message: "Resolved target identity must match the source node." });
10204
+ }
10205
+ if (node.resolvedTarget.kind === "unavailable" && (node.disabled !== true || Object.keys(node.parameterMapping).length > 0)) {
10206
+ context.addIssue({ code: "custom", path: ["resolvedTarget"], message: "Unavailable targets must be disabled and contain no executable input." });
10207
+ }
10208
+ });
10188
10209
  var CompiledNavigationSeparatorNodeSchema = NavigationSeparatorNodeSchema.extend({
10189
10210
  ancestorAccessPolicies: z9.array(AccessPolicySchema)
10190
10211
  }).strict();
@@ -11000,6 +11021,7 @@ var compileRouteClaims = (input) => {
11000
11021
  ...claim,
11001
11022
  normalizedPath,
11002
11023
  matcher: {
11024
+ surface: claim.surface,
11003
11025
  caseSensitive: routeSpace.caseSensitive,
11004
11026
  trailingSlash: routeSpace.trailingSlash,
11005
11027
  parameters: routeSpace.parameters
@@ -11403,7 +11425,14 @@ var compileNavigationRuntimeBundle = (input) => {
11403
11425
  assertUniqueRegistryKeys(targetRegistry.map((registration) => stableRefKey(registration.stableTargetRef)), "targetRegistry");
11404
11426
  const targetsByStableRef = new Map(targetRegistry.map((registration) => [stableRefKey(registration.stableTargetRef), registration]));
11405
11427
  const releasedByNodeId = new Map(release.resolvedTargets.map((target) => [target.nodeId, target]));
11428
+ const unavailableByNodeId = new Map((release.unavailableTargets ?? []).map((target) => [target.nodeId, target]));
11406
11429
  const nodesById = new Map(navigation.nodes.map((node) => [node.nodeId, node]));
11430
+ for (const target of release.unavailableTargets ?? []) {
11431
+ const node = nodesById.get(target.nodeId);
11432
+ if (node?.kind !== "target" || !sameStableRef(node.targetRef, target.stableTargetRef)) {
11433
+ throw new DeclarativeControlCompilationError("NAV_TARGET_UNRELEASED", "release.unavailableTargets", "An unavailable target must identify its source Page node exactly.");
11434
+ }
11435
+ }
11407
11436
  const nodes = orderedNavigationNodes(navigation).map((node, index) => {
11408
11437
  const ancestors = [];
11409
11438
  let parentId = node.parentNodeId;
@@ -11418,6 +11447,25 @@ var compileNavigationRuntimeBundle = (input) => {
11418
11447
  }
11419
11448
  const registration = targetsByStableRef.get(stableRefKey(node.targetRef));
11420
11449
  const released = releasedByNodeId.get(node.nodeId);
11450
+ const unavailable = unavailableByNodeId.get(node.nodeId);
11451
+ if (!registration && unavailable && node.targetRef.kind === "page" && sameStableRef(unavailable.stableTargetRef, node.targetRef)) {
11452
+ assertTenantCompatible(node.targetRef, scope, `nodes[${index}].targetRef`);
11453
+ if (unavailable.accessPolicy && !accessPolicyChainImplies([...ancestors, node.audience], unavailable.accessPolicy)) {
11454
+ throw new DeclarativeControlCompilationError("AUDIENCE_WIDER_THAN_TARGET", `nodes[${index}].audience`, "Effective Navigation audience is wider than the last verified target audience.");
11455
+ }
11456
+ return {
11457
+ ...node,
11458
+ disabled: true,
11459
+ parameterMapping: {},
11460
+ ancestorAccessPolicies: ancestors,
11461
+ resolvedTarget: {
11462
+ kind: "unavailable",
11463
+ nodeId: node.nodeId,
11464
+ stableTargetRef: node.targetRef,
11465
+ accessPolicy: unavailable.accessPolicy
11466
+ }
11467
+ };
11468
+ }
11421
11469
  if (!registration || !released || !sameStableRef(registration.stableTargetRef, stableFromRevision(registration.targetRevisionRef)) || !sameStableRef(registration.stableTargetRef, released.stableTargetRef) || !sameRevisionRef(registration.targetRevisionRef, released.targetRevisionRef) || registration.kind === "route" && (Boolean(registration.releaseRevisionRef) !== Boolean(released.releaseRevisionRef) || registration.releaseRevisionRef && released.releaseRevisionRef && !sameRevisionRef(registration.releaseRevisionRef, released.releaseRevisionRef))) {
11422
11470
  throw new DeclarativeControlCompilationError("NAV_TARGET_UNRELEASED", `nodes[${index}].targetRef`, "Navigation target is not resolved to the exact active release recorded by NavigationRelease.");
11423
11471
  }
@@ -11547,6 +11595,16 @@ var resolveWorkbenchEntry = (input) => {
11547
11595
  return { status: "forbidden", workbenchId: "" };
11548
11596
  };
11549
11597
 
11598
+ // src/runtime/navigation-availability.ts
11599
+ var NAVIGATION_UNAVAILABLE_CAPABILITY_HEADER = "x-monkeys-navigation-capabilities";
11600
+ var NAVIGATION_UNAVAILABLE_CAPABILITY = "unavailable-pages-v1";
11601
+ function projectNavigationCompatibility(bundle, supportsUnavailable) {
11602
+ if (supportsUnavailable || !bundle.nodes.some((node) => node.kind === "target" && node.resolvedTarget.kind === "unavailable")) return bundle;
11603
+ const { contentHash: _hash, ...unsigned } = bundle;
11604
+ const nodes = bundle.nodes.filter((node) => node.kind !== "target" || node.resolvedTarget.kind !== "unavailable");
11605
+ return NavigationRuntimeBundleSchema.parse({ ...unsigned, nodes, contentHash: canonicalContentHash({ ...unsigned, nodes }) });
11606
+ }
11607
+
11550
11608
  // src/runtime/menu-compiler.ts
11551
11609
  var MenuCompilationError = class extends Error {
11552
11610
  constructor(code, path, message) {
@@ -11819,6 +11877,13 @@ var compileMenuRuntimeBundle = (input) => {
11819
11877
  const contributionProviders = input.contributionProviders.map((registration) => MenuContributionProviderRegistrationSchema.parse(registration));
11820
11878
  const inputValidators = input.inputValidators ?? /* @__PURE__ */ new Map();
11821
11879
  const knownPermissions = new Set(input.permissionCodes.map((permission) => ContractIdentifierSchema.parse(permission)));
11880
+ const completeApplications = new Set(input.missingPagePolicy?.completeApplicationIds.map((id) => ContractIdentifierSchema.parse(id)) ?? []);
11881
+ const unavailableAccess = input.missingPagePolicy ? MenuAccessRequirementSchema.parse(input.missingPagePolicy.unavailableAccess) : void 0;
11882
+ if (unavailableAccess) {
11883
+ validatePermissionCodes(unavailableAccess.permissionAllOf, knownPermissions, "missingPagePolicy.unavailableAccess.permissionAllOf");
11884
+ validatePermissionCodes(unavailableAccess.permissionAnyOf, knownPermissions, "missingPagePolicy.unavailableAccess.permissionAnyOf");
11885
+ }
11886
+ const diagnostics = [];
11822
11887
  pages.forEach((registration, index) => {
11823
11888
  if (!registration.page.visibility.productContexts.some((context) => context === registration.applicationId)) {
11824
11889
  throw new MenuCompilationError(
@@ -11883,6 +11948,35 @@ var compileMenuRuntimeBundle = (input) => {
11883
11948
  if (node.behavior.kind === "navigate") {
11884
11949
  const registration = pagesByKey.get(pageKey(node.behavior.page));
11885
11950
  if (!registration) {
11951
+ if (unavailableAccess && completeApplications.has(node.behavior.page.applicationId)) {
11952
+ const activationId2 = resolveMenuActivationId(node.behavior.page, node.behavior.activationId);
11953
+ const identity2 = targetKey(node.behavior.page, activationId2);
11954
+ const signature2 = stableSerialize2({ ...node.behavior, activationId: activationId2 });
11955
+ const previous = targetSourceSignatures.get(identity2);
11956
+ if (previous !== void 0 && previous !== signature2) {
11957
+ throw new MenuCompilationError("conflicting-navigation-target", `${nodePath}.behavior`, "Missing navigation target has conflicting behavior or input.");
11958
+ }
11959
+ targetSourceSignatures.set(identity2, signature2);
11960
+ if (definition.applicationId === applicationId) {
11961
+ diagnostics.push({
11962
+ code: "missing-page",
11963
+ severity: "warning",
11964
+ applicationId: definition.applicationId,
11965
+ surface: definition.surface,
11966
+ menuId: definition.menuId,
11967
+ nodeId: node.nodeId,
11968
+ page: node.behavior.page,
11969
+ path: `${nodePath}.behavior.page`
11970
+ });
11971
+ }
11972
+ const { requiredPermission: requiredPermission3, behavior: _behavior3, ...presentation3 } = node;
11973
+ return CompiledMenuItemNodeSchema.parse({
11974
+ ...presentation3,
11975
+ disabled: true,
11976
+ behavior: { kind: "navigate", page: node.behavior.page, activationId: activationId2 },
11977
+ access: { ...unavailableAccess, requiredPermission: requiredPermission3 }
11978
+ });
11979
+ }
11886
11980
  throw new MenuCompilationError(
11887
11981
  "unknown-page",
11888
11982
  `${nodePath}.behavior.page`,
@@ -12045,6 +12139,7 @@ var compileMenuRuntimeBundle = (input) => {
12045
12139
  };
12046
12140
  return Object.freeze({
12047
12141
  document: deepFreeze2(document),
12142
+ diagnostics: deepFreeze2(diagnostics),
12048
12143
  menusByKey,
12049
12144
  navigationTargetsByKey: documentTargetsByKey,
12050
12145
  serverInputByTargetKey,
@@ -14757,11 +14852,7 @@ var DesignTokenInlineSourceSchema = z12.object({
14757
14852
  type: z12.literal("inline"),
14758
14853
  document: ThemeTokensSchema
14759
14854
  }).strict();
14760
- var DesignTokenSourceSchema = z12.discriminatedUnion("type", [
14761
- DesignTokenFileSourceSchema,
14762
- DesignTokenUrlSourceSchema,
14763
- DesignTokenInlineSourceSchema
14764
- ]);
14855
+ var DesignTokenSourceSchema = z12.discriminatedUnion("type", [DesignTokenFileSourceSchema, DesignTokenUrlSourceSchema, DesignTokenInlineSourceSchema]);
14765
14856
  var TenantDesignTokensConfigSchema = z12.object({
14766
14857
  /** Ordered tenant overrides. The backend always applies the product default first. */
14767
14858
  tokenSources: z12.array(DesignTokenSourceSchema)
@@ -14783,14 +14874,8 @@ var TenantDataBindingSchema = z12.discriminatedUnion("kind", [
14783
14874
  domainRef: ContractIdentifierSchema.optional()
14784
14875
  }).strict()
14785
14876
  ]);
14786
- var TenantAuthBindingsSchema = z12.record(
14787
- ContractIdentifierSchema,
14788
- TenantAuthBindingSchema
14789
- );
14790
- var TenantDataBindingsSchema = z12.record(
14791
- ContractIdentifierSchema,
14792
- TenantDataBindingSchema
14793
- );
14877
+ var TenantAuthBindingsSchema = z12.record(ContractIdentifierSchema, TenantAuthBindingSchema);
14878
+ var TenantDataBindingsSchema = z12.record(ContractIdentifierSchema, TenantDataBindingSchema);
14794
14879
  var TenantTrendRadarSourceSchema = z12.object({
14795
14880
  ontologyId: ContractIdentifierSchema,
14796
14881
  viewId: ContractIdentifierSchema
@@ -14855,11 +14940,7 @@ var CurrentUserMenuActionItemSchema = z12.object({
14855
14940
  ref: z12.enum(CURRENT_USER_MENU_ACTION_REFS),
14856
14941
  tone: z12.enum(["default", "danger"]).optional()
14857
14942
  }).strict();
14858
- var CurrentUserMenuItemSchema = z12.discriminatedUnion("kind", [
14859
- CurrentUserMenuNavigationItemSchema,
14860
- CurrentUserMenuControlItemSchema,
14861
- CurrentUserMenuActionItemSchema
14862
- ]);
14943
+ var CurrentUserMenuItemSchema = z12.discriminatedUnion("kind", [CurrentUserMenuNavigationItemSchema, CurrentUserMenuControlItemSchema, CurrentUserMenuActionItemSchema]);
14863
14944
  var CurrentUserMenuSectionSchema = z12.object({
14864
14945
  id: CurrentUserMenuIdentifierSchema,
14865
14946
  label: CurrentUserMenuDisplayTextSchema.optional(),
@@ -14915,11 +14996,7 @@ var LegacyCurrentUserMenuProfileSchema = z12.array(z12.enum(LEGACY_CURRENT_USER_
14915
14996
  seen.add(item);
14916
14997
  });
14917
14998
  });
14918
- var CurrentUserMenuProfileSchema = z12.union([
14919
- z12.literal("*"),
14920
- LegacyCurrentUserMenuProfileSchema,
14921
- CurrentUserMenuConfigSchema
14922
- ]);
14999
+ var CurrentUserMenuProfileSchema = z12.union([z12.literal("*"), LegacyCurrentUserMenuProfileSchema, CurrentUserMenuConfigSchema]);
14923
15000
  var ThemeHeadbarSchema = z12.object({
14924
15001
  theme: z12.enum(["card", "glassy", "ghost"]).optional(),
14925
15002
  navPosition: z12.enum(["left", "center", "right"]).optional(),
@@ -15028,7 +15105,10 @@ var TenantWorkbenchPageGroupSchema = z12.object({
15028
15105
  var TenantWorkbenchConfigSchema = z12.object({
15029
15106
  pages: z12.array(TenantWorkbenchPageEnvelopeSchema),
15030
15107
  pageGroups: z12.array(TenantWorkbenchPageGroupSchema),
15031
- catalog: z12.object({ enabled: z12.boolean().optional(), defaultEntry: z12.boolean().optional() }).strict().optional(),
15108
+ catalog: z12.object({
15109
+ enabled: z12.boolean().optional(),
15110
+ defaultEntry: z12.boolean().optional()
15111
+ }).strict().optional(),
15032
15112
  quickSwitcherMaxItems: z12.number().int().nonnegative().optional(),
15033
15113
  defaultOrder: z12.object({
15034
15114
  groups: z12.array(ContractIdentifierSchema),
@@ -15069,11 +15149,19 @@ var TenantWorkbenchConfigSchema = z12.object({
15069
15149
  const pageIds = pages.map(({ definition }) => definition.pageId);
15070
15150
  const pageIdSet = new Set(pageIds);
15071
15151
  if (pageIdSet.size !== pageIds.length) {
15072
- context.addIssue({ code: "custom", path: ["pages"], message: "Tenant workbench page ids must be unique." });
15152
+ context.addIssue({
15153
+ code: "custom",
15154
+ path: ["pages"],
15155
+ message: "Tenant workbench page ids must be unique."
15156
+ });
15073
15157
  }
15074
15158
  const groupIds = pageGroups.map(({ id }) => id);
15075
15159
  if (new Set(groupIds).size !== groupIds.length) {
15076
- context.addIssue({ code: "custom", path: ["pageGroups"], message: "Tenant workbench page group ids must be unique." });
15160
+ context.addIssue({
15161
+ code: "custom",
15162
+ path: ["pageGroups"],
15163
+ message: "Tenant workbench page group ids must be unique."
15164
+ });
15077
15165
  }
15078
15166
  pageGroups.forEach((group, groupIndex) => {
15079
15167
  group.pageIds.forEach((pageId, pageIndex) => {
@@ -15088,7 +15176,10 @@ var TenantWorkbenchConfigSchema = z12.object({
15088
15176
  });
15089
15177
  });
15090
15178
  var LoginPageSchema = z12.object({
15091
- background: z12.object({ imageUrl: z12.string().optional(), gradient: z12.string().optional() }).strict().optional(),
15179
+ background: z12.object({
15180
+ imageUrl: z12.string().optional(),
15181
+ gradient: z12.string().optional()
15182
+ }).strict().optional(),
15092
15183
  logo: z12.object({
15093
15184
  url: z12.string().optional(),
15094
15185
  lightUrl: z12.string().optional(),
@@ -15169,10 +15260,16 @@ var TenantApplicationConfigSchema = z12.object({
15169
15260
  toast: z12.object({
15170
15261
  position: z12.enum(["top-right", "top-left", "bottom-right", "bottom-left", "top-center", "bottom-center"])
15171
15262
  }).strict().optional(),
15172
- icons: z12.object({ error: CustomIconSchema.optional(), empty: CustomIconSchema.optional() }).strict().optional(),
15263
+ icons: z12.object({
15264
+ error: CustomIconSchema.optional(),
15265
+ empty: CustomIconSchema.optional()
15266
+ }).strict().optional(),
15173
15267
  views: z12.object({
15174
15268
  form: z12.object({
15175
- toast: z12.object({ afterCreate: z12.boolean(), afterDelete: z12.boolean() }).strict(),
15269
+ toast: z12.object({
15270
+ afterCreate: z12.boolean(),
15271
+ afterDelete: z12.boolean()
15272
+ }).strict(),
15176
15273
  progress: z12.enum(["estimate", "infinite"]),
15177
15274
  onlyResult: z12.boolean(),
15178
15275
  tabular: z12.object({ theme: z12.enum(["default", "tentiary", "primary"]) }).strict()
@@ -15193,10 +15290,7 @@ var TenantApplicationConfigSchema = z12.object({
15193
15290
  }).strict().optional(),
15194
15291
  modules: z12.object({
15195
15292
  monkeysSpaceSidebar: z12.union([z12.literal("*"), z12.array(ContractIdentifierSchema)]).optional(),
15196
- monkeysSpaceHeadbar: z12.union([
15197
- z12.literal("*"),
15198
- z12.array(TenantHeadbarModuleItemSchema)
15199
- ]).optional(),
15293
+ monkeysSpaceHeadbar: z12.union([z12.literal("*"), z12.array(TenantHeadbarModuleItemSchema)]).optional(),
15200
15294
  settingsSidebar: z12.union([z12.literal("*"), z12.array(ContractIdentifierSchema)]).optional()
15201
15295
  }).strict().optional(),
15202
15296
  headbar: ThemeHeadbarSchema.optional(),
@@ -15223,7 +15317,10 @@ var TenantApplicationConfigSchema = z12.object({
15223
15317
  workbenchSidebarViewType: z12.boolean().optional(),
15224
15318
  workbenchSidebarFormViewEmbed: z12.boolean().optional(),
15225
15319
  workbenchSidebarModernMode: z12.boolean().optional(),
15226
- ugc: z12.object({ onItemClick: z12.boolean(), subtitle: z12.boolean().optional() }).strict().optional(),
15320
+ ugc: z12.object({
15321
+ onItemClick: z12.boolean(),
15322
+ subtitle: z12.boolean().optional()
15323
+ }).strict().optional(),
15227
15324
  uniImagePreview: z12.boolean().optional(),
15228
15325
  imagePreviewStyle: z12.union([z12.literal(false), z12.enum(["simple", "normal", "uni"])]).optional(),
15229
15326
  teamAsUser: z12.boolean().optional(),
@@ -15281,7 +15378,10 @@ var TenantApplicationConfigSchema = z12.object({
15281
15378
  landingPage: TenantLandingPageConfigSchema.optional(),
15282
15379
  auth: z12.object({
15283
15380
  enabled: z12.array(ContractIdentifierSchema).default([]),
15284
- oidc: z12.object({ buttonText: z12.string().optional(), autoSignin: z12.boolean().optional() }).strict().optional(),
15381
+ oidc: z12.object({
15382
+ buttonText: z12.string().optional(),
15383
+ autoSignin: z12.boolean().optional()
15384
+ }).strict().optional(),
15285
15385
  password: z12.object({
15286
15386
  registrationEnabled: z12.boolean().optional(),
15287
15387
  disableAutoRegister: z12.boolean().optional()
@@ -15319,6 +15419,18 @@ var TenantApplicationConfigSchema = z12.object({
15319
15419
  fieldMap: z12.record(z12.string(), z12.string()).optional(),
15320
15420
  columnIds: z12.record(z12.string(), z12.string()).optional()
15321
15421
  }).strict().optional(),
15422
+ homeShortcutBackground: z12.object({
15423
+ ontologyId: ContractIdentifierSchema,
15424
+ viewId: ContractIdentifierSchema.optional(),
15425
+ viewType: z12.enum(["filter", "container", "share_link"]).optional(),
15426
+ teamId: ContractIdentifierSchema.optional(),
15427
+ teamOnly: z12.boolean().optional(),
15428
+ pageSize: z12.number().int().positive().optional(),
15429
+ sortBy: z12.enum(["pin_order", "asset_id", "updated_timestamp"]).optional(),
15430
+ sortOrder: z12.enum(["asc", "desc"]).optional(),
15431
+ fieldMap: z12.record(z12.string(), z12.string()).optional(),
15432
+ columnIds: z12.record(z12.string(), z12.string()).optional()
15433
+ }).strict().optional(),
15322
15434
  homeTrendAssistant: z12.object({
15323
15435
  ontologyId: ContractIdentifierSchema.optional(),
15324
15436
  viewId: ContractIdentifierSchema.optional(),
@@ -15326,8 +15438,16 @@ var TenantApplicationConfigSchema = z12.object({
15326
15438
  viewName: z12.string().optional(),
15327
15439
  teamId: ContractIdentifierSchema.optional(),
15328
15440
  designOptionsWorkflowId: ContractIdentifierSchema.optional(),
15329
- tep: z12.object({ baseUrl: z12.string().optional(), timeoutMs: z12.number().int().positive().optional() }).strict().optional(),
15330
- runtime: z12.object({ appId: ContractIdentifierSchema, tepBaseUrlConfigured: z12.boolean(), tepAuthorizationConfigured: z12.boolean(), tepCookieConfigured: z12.boolean() }).strict().optional()
15441
+ tep: z12.object({
15442
+ baseUrl: z12.string().optional(),
15443
+ timeoutMs: z12.number().int().positive().optional()
15444
+ }).strict().optional(),
15445
+ runtime: z12.object({
15446
+ appId: ContractIdentifierSchema,
15447
+ tepBaseUrlConfigured: z12.boolean(),
15448
+ tepAuthorizationConfigured: z12.boolean(),
15449
+ tepCookieConfigured: z12.boolean()
15450
+ }).strict().optional()
15331
15451
  }).strict().optional(),
15332
15452
  staticTrendReport: z12.object({
15333
15453
  ontologyId: ContractIdentifierSchema,
@@ -15336,20 +15456,67 @@ var TenantApplicationConfigSchema = z12.object({
15336
15456
  }).strict().optional(),
15337
15457
  trendRadar: TenantTrendRadarSourcesSchema.optional(),
15338
15458
  sharing: z12.object({
15339
- silentViewLinks: z12.object({ enabled: z12.boolean().optional(), placement: z12.object({ mode: z12.enum(["sourceOntology", "ontology"]).optional(), ontologyId: ContractIdentifierSchema.optional(), parentId: ContractIdentifierSchema.optional(), navId: ContractIdentifierSchema.optional() }).strict().optional() }).strict().optional(),
15340
- shareAccess: z12.object({ publicLinksEnabled: z12.boolean().optional(), passwordGateEnabled: z12.boolean().optional(), passwordAccessTtlSeconds: z12.number().int().positive().optional(), defaultViewTreeDelivery: z12.enum(["manual", "auto"]).optional() }).strict().optional(),
15459
+ silentViewLinks: z12.object({
15460
+ enabled: z12.boolean().optional(),
15461
+ placement: z12.object({
15462
+ mode: z12.enum(["sourceOntology", "ontology"]).optional(),
15463
+ ontologyId: ContractIdentifierSchema.optional(),
15464
+ parentId: ContractIdentifierSchema.optional(),
15465
+ navId: ContractIdentifierSchema.optional()
15466
+ }).strict().optional()
15467
+ }).strict().optional(),
15468
+ shareAccess: z12.object({
15469
+ publicLinksEnabled: z12.boolean().optional(),
15470
+ passwordGateEnabled: z12.boolean().optional(),
15471
+ passwordAccessTtlSeconds: z12.number().int().positive().optional(),
15472
+ defaultViewTreeDelivery: z12.enum(["manual", "auto"]).optional()
15473
+ }).strict().optional(),
15341
15474
  shareDialog: z12.object({
15342
- audience: z12.object({ enabled: z12.boolean().optional(), allowed: z12.array(z12.enum(["user", "team", "public"])).optional(), default: z12.enum(["user", "team", "public"]).optional() }).strict().optional(),
15343
- accessLevel: z12.object({ enabled: z12.boolean().optional(), allowed: z12.array(z12.enum(["read", "write"])).optional(), default: z12.enum(["read", "write"]).optional() }).strict().optional(),
15344
- viewTreeDelivery: z12.object({ enabled: z12.boolean().optional(), allowed: z12.array(z12.enum(["manual", "auto"])).optional(), default: z12.enum(["manual", "auto"]).optional() }).strict().optional()
15475
+ audience: z12.object({
15476
+ enabled: z12.boolean().optional(),
15477
+ allowed: z12.array(z12.enum(["user", "team", "public"])).optional(),
15478
+ default: z12.enum(["user", "team", "public"]).optional()
15479
+ }).strict().optional(),
15480
+ accessLevel: z12.object({
15481
+ enabled: z12.boolean().optional(),
15482
+ allowed: z12.array(z12.enum(["read", "write"])).optional(),
15483
+ default: z12.enum(["read", "write"]).optional()
15484
+ }).strict().optional(),
15485
+ viewTreeDelivery: z12.object({
15486
+ enabled: z12.boolean().optional(),
15487
+ allowed: z12.array(z12.enum(["manual", "auto"])).optional(),
15488
+ default: z12.enum(["manual", "auto"]).optional()
15489
+ }).strict().optional()
15345
15490
  }).strict().optional()
15346
15491
  }).strict().optional()
15347
15492
  }).strict().optional(),
15348
15493
  kernelRuntime: z12.object({
15349
15494
  integrations: z12.object({
15350
- harbor: z12.object({ endpoint: z12.string().optional(), projectScopes: z12.array(z12.string()).optional(), authMode: z12.string().optional(), principal: z12.string().optional(), autoSync: z12.boolean().optional(), proxyUrl: z12.string().optional() }).strict().optional(),
15351
- gitlab: z12.object({ baseUrl: z12.string().optional(), groupScopes: z12.array(z12.string()).optional(), tokenMode: z12.string().optional(), deployProjectPath: z12.string().optional(), deploymentReportsEnabled: z12.boolean().optional(), proxyUrl: z12.string().optional() }).strict().optional(),
15352
- kubernetes: z12.object({ accessMode: z12.string().optional(), clusterAlias: z12.string().optional(), agentProjectPath: z12.string().optional(), agentName: z12.string().optional(), namespaceScopes: z12.array(z12.string()).optional(), rolloutObserverEnabled: z12.boolean().optional(), proxyUrl: z12.string().optional() }).strict().optional()
15495
+ harbor: z12.object({
15496
+ endpoint: z12.string().optional(),
15497
+ projectScopes: z12.array(z12.string()).optional(),
15498
+ authMode: z12.string().optional(),
15499
+ principal: z12.string().optional(),
15500
+ autoSync: z12.boolean().optional(),
15501
+ proxyUrl: z12.string().optional()
15502
+ }).strict().optional(),
15503
+ gitlab: z12.object({
15504
+ baseUrl: z12.string().optional(),
15505
+ groupScopes: z12.array(z12.string()).optional(),
15506
+ tokenMode: z12.string().optional(),
15507
+ deployProjectPath: z12.string().optional(),
15508
+ deploymentReportsEnabled: z12.boolean().optional(),
15509
+ proxyUrl: z12.string().optional()
15510
+ }).strict().optional(),
15511
+ kubernetes: z12.object({
15512
+ accessMode: z12.string().optional(),
15513
+ clusterAlias: z12.string().optional(),
15514
+ agentProjectPath: z12.string().optional(),
15515
+ agentName: z12.string().optional(),
15516
+ namespaceScopes: z12.array(z12.string()).optional(),
15517
+ rolloutObserverEnabled: z12.boolean().optional(),
15518
+ proxyUrl: z12.string().optional()
15519
+ }).strict().optional()
15353
15520
  }).strict().optional()
15354
15521
  }).strict().optional(),
15355
15522
  data: z12.object({}).strict().optional(),
@@ -15776,6 +15943,8 @@ export {
15776
15943
  DeclarativeControlCompilationError,
15777
15944
  MONKEYS_REQUIRED_THEME_TOKEN_PATHS,
15778
15945
  MenuCompilationError,
15946
+ NAVIGATION_UNAVAILABLE_CAPABILITY,
15947
+ NAVIGATION_UNAVAILABLE_CAPABILITY_HEADER,
15779
15948
  ThemeTokenValidationError,
15780
15949
  accessPolicyChainImplies,
15781
15950
  applyViewRuntimeBindings,
@@ -15820,6 +15989,7 @@ export {
15820
15989
  mergeThemeTokenDocuments,
15821
15990
  parseApplicationHandoff,
15822
15991
  projectAgentSessionEvents,
15992
+ projectNavigationCompatibility,
15823
15993
  publishOpenApiToolCapabilityManifests,
15824
15994
  readApplicationHandoffFromUrl,
15825
15995
  readMenuActivationFromSearch,