@noodleseed/one 0.173.0 → 0.175.0

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 (170) hide show
  1. package/dist/commands/solutions-activity.js +1 -1
  2. package/dist/commands/solutions-activity.js.map +1 -1
  3. package/dist/commands/solutions-drafts.d.ts.map +1 -1
  4. package/dist/commands/solutions-drafts.js +36 -9
  5. package/dist/commands/solutions-drafts.js.map +1 -1
  6. package/dist/commands/solutions-native-lifecycle.d.ts +5 -0
  7. package/dist/commands/solutions-native-lifecycle.d.ts.map +1 -0
  8. package/dist/commands/solutions-native-lifecycle.js +77 -0
  9. package/dist/commands/solutions-native-lifecycle.js.map +1 -0
  10. package/dist/commands/solutions-ops-args.d.ts +42 -0
  11. package/dist/commands/solutions-ops-args.d.ts.map +1 -0
  12. package/dist/commands/solutions-ops-args.js +47 -0
  13. package/dist/commands/solutions-ops-args.js.map +1 -0
  14. package/dist/commands/solutions-ops.d.ts.map +1 -1
  15. package/dist/commands/solutions-ops.js +9 -46
  16. package/dist/commands/solutions-ops.js.map +1 -1
  17. package/dist/commands/solutions-workspace.d.ts +5 -0
  18. package/dist/commands/solutions-workspace.d.ts.map +1 -0
  19. package/dist/commands/solutions-workspace.js +157 -0
  20. package/dist/commands/solutions-workspace.js.map +1 -0
  21. package/dist/commands/whatsapp-output.d.ts.map +1 -1
  22. package/dist/commands/whatsapp-output.js +20 -4
  23. package/dist/commands/whatsapp-output.js.map +1 -1
  24. package/node_modules/@noodle-borg/admission-limits/dist/public-record-admission.d.ts +16 -9
  25. package/node_modules/@noodle-borg/admission-limits/dist/public-record-admission.js +5 -2
  26. package/node_modules/@noodle-borg/agent-kit/dist/curated/error-fixes.js +9 -0
  27. package/node_modules/@noodle-borg/agent-kit/dist/generated/example-files.js +5 -5
  28. package/node_modules/@noodle-borg/agent-kit/dist/generated/surface.js +9 -0
  29. package/node_modules/@noodle-borg/agent-kit/dist/skill-authoring-refs.js +1 -1
  30. package/node_modules/@noodle-borg/agent-kit/dist/skill-embedded-assistant-ref.js +13 -1
  31. package/node_modules/@noodle-borg/agent-kit/package.json +1 -1
  32. package/node_modules/@noodle-borg/assistant-gateway/dist/channel-coordinator.d.ts +5 -3
  33. package/node_modules/@noodle-borg/assistant-gateway/dist/channel-coordinator.js +5 -4
  34. package/node_modules/@noodle-borg/assistant-gateway/dist/channel-inbox.js +6 -2
  35. package/node_modules/@noodle-borg/assistant-gateway/dist/channel-store.d.ts +1 -1
  36. package/node_modules/@noodle-borg/assistant-gateway/dist/channel-types.d.ts +12 -0
  37. package/node_modules/@noodle-borg/assistant-gateway/dist/channel-work.d.ts +7 -2
  38. package/node_modules/@noodle-borg/assistant-gateway/dist/channel-work.js +14 -4
  39. package/node_modules/@noodle-borg/assistant-gateway/dist/collection-capture.js +104 -0
  40. package/node_modules/@noodle-borg/assistant-gateway/dist/collection-judgment.js +93 -0
  41. package/node_modules/@noodle-borg/assistant-gateway/dist/collection-ledger.d.ts +105 -0
  42. package/node_modules/@noodle-borg/assistant-gateway/dist/collection-ledger.js +183 -0
  43. package/node_modules/@noodle-borg/assistant-gateway/dist/collection-model-call.js +38 -0
  44. package/node_modules/@noodle-borg/assistant-gateway/dist/collection-parsers.d.ts +22 -0
  45. package/node_modules/@noodle-borg/assistant-gateway/dist/collection-parsers.js +109 -0
  46. package/node_modules/@noodle-borg/assistant-gateway/dist/collection-review.d.ts +21 -0
  47. package/node_modules/@noodle-borg/assistant-gateway/dist/collection-review.js +44 -0
  48. package/node_modules/@noodle-borg/assistant-gateway/dist/collection-spec.d.ts +18 -0
  49. package/node_modules/@noodle-borg/assistant-gateway/dist/collection-spec.js +86 -0
  50. package/node_modules/@noodle-borg/assistant-gateway/dist/collection-store.d.ts +11 -0
  51. package/node_modules/@noodle-borg/assistant-gateway/dist/collection-store.js +18 -0
  52. package/node_modules/@noodle-borg/assistant-gateway/dist/messaging-tool-dispatch.d.ts +20 -1
  53. package/node_modules/@noodle-borg/assistant-gateway/dist/messaging-tool-dispatch.js +38 -2
  54. package/node_modules/@noodle-borg/assistant-gateway/dist/model-runtime.js +3 -0
  55. package/node_modules/@noodle-borg/assistant-gateway/dist/portable.d.ts +5 -0
  56. package/node_modules/@noodle-borg/assistant-gateway/dist/portable.js +5 -0
  57. package/node_modules/@noodle-borg/authoring/dist/index.d.ts +1 -0
  58. package/node_modules/@noodle-borg/authoring/dist/interaction.d.ts +49 -0
  59. package/node_modules/@noodle-borg/authoring/dist/interaction.js +25 -0
  60. package/node_modules/@noodle-borg/authoring/dist/server.d.ts +3 -0
  61. package/node_modules/@noodle-borg/authoring/dist/server.js +4 -0
  62. package/node_modules/@noodle-borg/authoring/package.json +6 -1
  63. package/node_modules/@noodle-borg/cli-catalog/dist/catalog-data-channels.js +1 -1
  64. package/node_modules/@noodle-borg/cli-catalog/dist/catalog-data-solution-drafts.js +7 -0
  65. package/node_modules/@noodle-borg/cli-catalog/dist/catalog-data-solution-native-lifecycle.js +43 -0
  66. package/node_modules/@noodle-borg/cli-catalog/dist/catalog-data-solution-records.js +154 -0
  67. package/node_modules/@noodle-borg/cli-catalog/dist/catalog-data-solution-workspace.js +95 -0
  68. package/node_modules/@noodle-borg/cli-catalog/dist/catalog-data-solutions.js +4 -149
  69. package/node_modules/@noodle-borg/compiler/dist/artifact/assemble.js +2 -1
  70. package/node_modules/@noodle-borg/compiler/dist/artifact/types.d.ts +33 -0
  71. package/node_modules/@noodle-borg/compiler/dist/artifact/version.d.ts +2 -1
  72. package/node_modules/@noodle-borg/compiler/dist/artifact/version.js +2 -1
  73. package/node_modules/@noodle-borg/compiler/dist/compile.js +5 -0
  74. package/node_modules/@noodle-borg/compiler/dist/errors.d.ts +1 -1
  75. package/node_modules/@noodle-borg/compiler/dist/index.d.ts +2 -2
  76. package/node_modules/@noodle-borg/compiler/dist/index.js +1 -1
  77. package/node_modules/@noodle-borg/compiler/dist/manifest/interaction-schema.d.ts +41 -0
  78. package/node_modules/@noodle-borg/compiler/dist/manifest/interaction-schema.js +62 -0
  79. package/node_modules/@noodle-borg/compiler/dist/manifest/interaction-validation.js +220 -0
  80. package/node_modules/@noodle-borg/compiler/dist/manifest/schema.d.ts +60 -4
  81. package/node_modules/@noodle-borg/compiler/dist/manifest/schema.js +7 -1
  82. package/node_modules/@noodle-borg/compiler/dist/manifest/website-projection.d.ts +9 -1
  83. package/node_modules/@noodle-borg/compiler/dist/manifest/website-projection.js +58 -10
  84. package/node_modules/@noodle-borg/control-plane/dist/in-memory-atomic-state.d.ts +8 -0
  85. package/node_modules/@noodle-borg/control-plane/dist/in-memory-atomic-state.js +136 -0
  86. package/node_modules/@noodle-borg/control-plane/dist/in-memory-control-plane-store.d.ts +7 -0
  87. package/node_modules/@noodle-borg/control-plane/dist/in-memory-control-plane-store.js +16 -24
  88. package/node_modules/@noodle-borg/control-plane/dist/in-memory-organization-store.d.ts +4 -2
  89. package/node_modules/@noodle-borg/control-plane/dist/in-memory-organization-store.js +8 -6
  90. package/node_modules/@noodle-borg/control-plane/dist/mcp-subdomain-claims.d.ts +2 -1
  91. package/node_modules/@noodle-borg/control-plane/dist/mcp-subdomain-claims.js +13 -8
  92. package/node_modules/@noodle-borg/control-plane/dist/organization-agreements.d.ts +13 -4
  93. package/node_modules/@noodle-borg/control-plane/dist/organization-agreements.js +23 -7
  94. package/node_modules/@noodle-borg/control-plane/dist/portable.d.ts +2 -1
  95. package/node_modules/@noodle-borg/control-plane/dist/portable.js +1 -0
  96. package/node_modules/@noodle-borg/module/dist/platform-human-identity.d.ts +5 -2
  97. package/node_modules/@noodle-borg/runtime/dist/connector/types.d.ts +16 -4
  98. package/node_modules/@noodle-borg/runtime/dist/execute.d.ts +3 -6
  99. package/node_modules/@noodle-borg/runtime/dist/index.d.ts +1 -1
  100. package/node_modules/@noodle-borg/service/dist/application-activity.js +85 -63
  101. package/node_modules/@noodle-borg/service/dist/application-drafts/contracts.js +9 -0
  102. package/node_modules/@noodle-borg/service/dist/application-drafts/paths.js +2 -2
  103. package/node_modules/@noodle-borg/service/dist/application-runtime-target.js +1 -1
  104. package/node_modules/@noodle-borg/service/dist/business-information/contracts.d.ts +18 -4
  105. package/node_modules/@noodle-borg/service/dist/business-information/in-memory-business-pages.js +3 -5
  106. package/node_modules/@noodle-borg/service/dist/business-information/in-memory-installation-lifecycle.js +8 -6
  107. package/node_modules/@noodle-borg/service/dist/business-information/in-memory-native-lifecycle.js +80 -0
  108. package/node_modules/@noodle-borg/service/dist/business-information/in-memory-store.js +27 -31
  109. package/node_modules/@noodle-borg/service/dist/business-information/memory-native-retention.js +29 -0
  110. package/node_modules/@noodle-borg/service/dist/business-information/model.js +9 -2
  111. package/node_modules/@noodle-borg/service/dist/business-information/native-query.js +3 -1
  112. package/node_modules/@noodle-borg/service/dist/business-information/native-record-lifecycle.d.ts +27 -0
  113. package/node_modules/@noodle-borg/service/dist/business-information/native-record-lifecycle.js +63 -0
  114. package/node_modules/@noodle-borg/service/dist/business-information/principal-authority.d.ts +3 -1
  115. package/node_modules/@noodle-borg/service/dist/business-information/principal-authority.js +9 -4
  116. package/node_modules/@noodle-borg/service/dist/business-information/staff-authority.d.ts +16 -0
  117. package/node_modules/@noodle-borg/service/dist/business-information/staff-authority.js +60 -0
  118. package/node_modules/@noodle-borg/service/dist/business-information/workspace-permissions.js +18 -0
  119. package/node_modules/@noodle-borg/service/dist/business-information-runtime.js +1 -0
  120. package/node_modules/@noodle-borg/service/dist/business-onboarding.js +16 -3
  121. package/node_modules/@noodle-borg/service/dist/business-workspaces/contracts.d.ts +110 -0
  122. package/node_modules/@noodle-borg/service/dist/business-workspaces/contracts.js +52 -0
  123. package/node_modules/@noodle-borg/service/dist/business-workspaces/paths.js +17 -0
  124. package/node_modules/@noodle-borg/service/dist/business-workspaces/permissions.d.ts +7 -0
  125. package/node_modules/@noodle-borg/service/dist/business-workspaces/store.d.ts +102 -0
  126. package/node_modules/@noodle-borg/service/dist/channels/360dialog.js +70 -8
  127. package/node_modules/@noodle-borg/service/dist/channels/capability-report.js +73 -0
  128. package/node_modules/@noodle-borg/service/dist/channels/collection-turn.js +232 -0
  129. package/node_modules/@noodle-borg/service/dist/channels/composition.js +1 -0
  130. package/node_modules/@noodle-borg/service/dist/channels/messaging-eligibility.js +45 -0
  131. package/node_modules/@noodle-borg/service/dist/channels/reply-buttons.js +23 -0
  132. package/node_modules/@noodle-borg/service/dist/channels/runtime.js +127 -33
  133. package/node_modules/@noodle-borg/service/dist/native-record-connector.js +19 -4
  134. package/node_modules/@noodle-borg/service/dist/routes/application-drafts.js +44 -2
  135. package/node_modules/@noodle-borg/service/dist/routes/assistant-agent.js +4 -0
  136. package/node_modules/@noodle-borg/service/dist/routes/business-authoring-dispatch.js +23 -0
  137. package/node_modules/@noodle-borg/service/dist/routes/business-information-access.js +39 -0
  138. package/node_modules/@noodle-borg/service/dist/routes/business-information-activity.js +1 -1
  139. package/node_modules/@noodle-borg/service/dist/routes/business-information-channels.js +2 -2
  140. package/node_modules/@noodle-borg/service/dist/routes/business-information-connections.js +10 -4
  141. package/node_modules/@noodle-borg/service/dist/routes/business-information-dispatch.js +11 -6
  142. package/node_modules/@noodle-borg/service/dist/routes/business-information-installation.js +3 -1
  143. package/node_modules/@noodle-borg/service/dist/routes/business-information-notice.js +6 -2
  144. package/node_modules/@noodle-borg/service/dist/routes/business-information-pages.js +1 -1
  145. package/node_modules/@noodle-borg/service/dist/routes/business-information-paths.js +1 -1
  146. package/node_modules/@noodle-borg/service/dist/routes/business-information-record-create.js +7 -2
  147. package/node_modules/@noodle-borg/service/dist/routes/business-information-record-reads.js +2 -2
  148. package/node_modules/@noodle-borg/service/dist/routes/business-information-records.js +332 -0
  149. package/node_modules/@noodle-borg/service/dist/routes/business-information-settings.js +6 -3
  150. package/node_modules/@noodle-borg/service/dist/routes/business-information-staff.js +9 -5
  151. package/node_modules/@noodle-borg/service/dist/routes/business-information.js +12 -356
  152. package/node_modules/@noodle-borg/service/dist/routes/business-native-lifecycle.js +46 -0
  153. package/node_modules/@noodle-borg/service/dist/routes/business-workspaces.js +119 -0
  154. package/node_modules/@noodle-borg/service/dist/routes/service-probes.js +2 -1
  155. package/node_modules/@noodle-borg/service/dist/service.js +9 -2
  156. package/node_modules/@noodle-borg/service/dist/web-capabilities.js +3 -1
  157. package/node_modules/@noodle-borg/service/package.json +2 -1
  158. package/node_modules/@noodle-borg/wire-contracts/dist/application-draft-validation.d.ts +59 -0
  159. package/node_modules/@noodle-borg/wire-contracts/dist/application-draft-validation.js +38 -0
  160. package/node_modules/@noodle-borg/wire-contracts/dist/business-information.d.ts +144 -50
  161. package/node_modules/@noodle-borg/wire-contracts/dist/business-information.js +44 -4
  162. package/node_modules/@noodle-borg/wire-contracts/dist/business-workspaces.d.ts +258 -0
  163. package/node_modules/@noodle-borg/wire-contracts/dist/business-workspaces.js +118 -1
  164. package/node_modules/@noodle-borg/wire-contracts/dist/index.d.ts +2 -0
  165. package/node_modules/@noodle-borg/wire-contracts/dist/index.js +2 -0
  166. package/node_modules/@noodle-borg/wire-contracts/dist/native-record-lifecycle.d.ts +81 -0
  167. package/node_modules/@noodle-borg/wire-contracts/dist/native-record-lifecycle.js +39 -0
  168. package/node_modules/@noodle-borg/wire-contracts/dist/whatsapp.d.ts +26 -0
  169. package/node_modules/@noodle-borg/wire-contracts/dist/whatsapp.js +24 -1
  170. package/package.json +2 -2
@@ -0,0 +1,59 @@
1
+ import { z } from 'zod';
2
+ export declare const ApplicationDraftValidationResponseSchema: z.ZodObject<{
3
+ ok: z.ZodLiteral<true>;
4
+ data: z.ZodObject<{
5
+ validation: z.ZodDiscriminatedUnion<[z.ZodObject<{
6
+ status: z.ZodLiteral<"valid">;
7
+ compilerDigest: z.ZodString;
8
+ artifactDigest: z.ZodString;
9
+ issues: z.ZodArray<z.ZodNever>;
10
+ draftId: z.ZodString;
11
+ revision: z.ZodNumber;
12
+ sourceDigest: z.ZodString;
13
+ check: z.ZodLiteral<"source-and-manifest">;
14
+ published: z.ZodLiteral<false>;
15
+ }, z.core.$strict>, z.ZodObject<{
16
+ status: z.ZodLiteral<"invalid">;
17
+ issues: z.ZodArray<z.ZodObject<{
18
+ code: z.ZodString;
19
+ message: z.ZodString;
20
+ path: z.ZodOptional<z.ZodString>;
21
+ }, z.core.$strict>>;
22
+ draftId: z.ZodString;
23
+ revision: z.ZodNumber;
24
+ sourceDigest: z.ZodString;
25
+ check: z.ZodLiteral<"source-and-manifest">;
26
+ published: z.ZodLiteral<false>;
27
+ }, z.core.$strict>], "status">;
28
+ }, z.core.$strict>;
29
+ }, z.core.$strict>;
30
+ export declare const ApplicationDraftValidationClientResponseSchema: z.ZodObject<{
31
+ ok: z.ZodLiteral<true>;
32
+ data: z.ZodObject<{
33
+ validation: z.ZodDiscriminatedUnion<[z.ZodObject<{
34
+ status: z.ZodLiteral<"valid">;
35
+ compilerDigest: z.ZodString;
36
+ artifactDigest: z.ZodString;
37
+ issues: z.ZodArray<z.ZodNever>;
38
+ draftId: z.ZodString;
39
+ revision: z.ZodNumber;
40
+ sourceDigest: z.ZodString;
41
+ check: z.ZodLiteral<"source-and-manifest">;
42
+ published: z.ZodLiteral<false>;
43
+ }, z.core.$strict>, z.ZodObject<{
44
+ status: z.ZodLiteral<"invalid">;
45
+ issues: z.ZodArray<z.ZodObject<{
46
+ code: z.ZodString;
47
+ message: z.ZodString;
48
+ path: z.ZodOptional<z.ZodString>;
49
+ }, z.core.$strict>>;
50
+ draftId: z.ZodString;
51
+ revision: z.ZodNumber;
52
+ sourceDigest: z.ZodString;
53
+ check: z.ZodLiteral<"source-and-manifest">;
54
+ published: z.ZodLiteral<false>;
55
+ }, z.core.$strict>], "status">;
56
+ }, z.core.$strict>;
57
+ }, z.core.$strict>;
58
+ export type ApplicationDraftValidation = z.infer<typeof ApplicationDraftValidationResponseSchema>['data']['validation'];
59
+ //# sourceMappingURL=application-draft-validation.d.ts.map
@@ -0,0 +1,38 @@
1
+ import { z } from 'zod';
2
+ import { ApplicationDraftIdSchema } from './application-drafts.js';
3
+ /** A source check is transient evidence, never a stored publication/activation receipt. */
4
+ function response(additive) {
5
+ const object = additive ? z.object : z.strictObject;
6
+ const common = {
7
+ draftId: ApplicationDraftIdSchema,
8
+ revision: z.number().int().min(1).max(2147483647),
9
+ sourceDigest: z.string().regex(/^[a-f0-9]{64}$/),
10
+ check: z.literal('source-and-manifest'),
11
+ published: z.literal(false),
12
+ };
13
+ const validation = z.discriminatedUnion('status', [
14
+ object({
15
+ ...common,
16
+ status: z.literal('valid'),
17
+ compilerDigest: z.string().regex(/^sha256:[a-f0-9]{64}$/),
18
+ artifactDigest: z.string().regex(/^[a-f0-9]{64}$/),
19
+ issues: z.array(z.never()).max(0),
20
+ }),
21
+ object({
22
+ ...common,
23
+ status: z.literal('invalid'),
24
+ issues: z
25
+ .array(object({
26
+ code: z.string().regex(/^[a-z][a-z0-9_]{0,79}$/),
27
+ message: z.string().max(500),
28
+ path: z.string().max(240).optional(),
29
+ }))
30
+ .min(1)
31
+ .max(20),
32
+ }),
33
+ ]);
34
+ return object({ ok: z.literal(true), data: object({ validation }) });
35
+ }
36
+ export const ApplicationDraftValidationResponseSchema = response(false);
37
+ export const ApplicationDraftValidationClientResponseSchema = response(true);
38
+ //# sourceMappingURL=application-draft-validation.js.map
@@ -41,12 +41,14 @@ export declare const BusinessGrantRoleSchema: z.ZodEnum<{
41
41
  manager: "manager";
42
42
  }>;
43
43
  export type BusinessGrantRole = z.infer<typeof BusinessGrantRoleSchema>;
44
- export declare const MANAGED_RECORD_ORIGIN_SURFACES: readonly ["public", "portal", "mcp", "api"];
44
+ /** `messaging` marks trusted channel provenance (ADR 0240), never a client-claimed origin. */
45
+ export declare const MANAGED_RECORD_ORIGIN_SURFACES: readonly ["public", "portal", "mcp", "api", "messaging"];
45
46
  export declare const ManagedRecordOriginSurfaceSchema: z.ZodEnum<{
46
47
  public: "public";
47
48
  mcp: "mcp";
48
49
  portal: "portal";
49
50
  api: "api";
51
+ messaging: "messaging";
50
52
  }>;
51
53
  export type ManagedRecordOriginSurface = z.infer<typeof ManagedRecordOriginSurfaceSchema>;
52
54
  export declare const COLLECTION_SOURCE_HEALTH_STATES: readonly ["pending", "healthy", "degraded", "unavailable", "authorization_required", "paused"];
@@ -439,6 +441,22 @@ export declare const SolutionInstallationActivationSchema: z.ZodDiscriminatedUni
439
441
  canRetry: z.ZodLiteral<false>;
440
442
  }, z.core.$strict>], "state">;
441
443
  export type SolutionInstallationActivation = z.infer<typeof SolutionInstallationActivationSchema>;
444
+ /** Selected authority version determines the role vocabulary; never infer or merge versions. */
445
+ export declare const BusinessInstallationAccessSchema: z.ZodObject<{
446
+ currentRole: z.ZodUnion<readonly [z.ZodEnum<{
447
+ operator: "operator";
448
+ viewer: "viewer";
449
+ administrator: "administrator";
450
+ manager: "manager";
451
+ }>, z.ZodEnum<{
452
+ operator: "operator";
453
+ owner: "owner";
454
+ viewer: "viewer";
455
+ administrator: "administrator";
456
+ builder: "builder";
457
+ }>]>;
458
+ authorityVersion: z.ZodOptional<z.ZodLiteral<1>>;
459
+ }, z.core.$strip>;
442
460
  export declare const ResolvedManagedSolutionDefinitionSchema: z.ZodObject<{
443
461
  kind: z.ZodLiteral<"managed">;
444
462
  definitionId: z.ZodEnum<{
@@ -586,6 +604,23 @@ export declare const SolutionInstallationSchema: z.ZodObject<{
586
604
  profileId: z.ZodOptional<z.ZodEnum<{
587
605
  b2b_saas: "b2b_saas";
588
606
  }>>;
607
+ revision: z.ZodNumber;
608
+ createdAt: z.ZodISODateTime;
609
+ updatedAt: z.ZodISODateTime;
610
+ createdBySubject: z.ZodString;
611
+ currentRole: z.ZodUnion<readonly [z.ZodEnum<{
612
+ operator: "operator";
613
+ viewer: "viewer";
614
+ administrator: "administrator";
615
+ manager: "manager";
616
+ }>, z.ZodEnum<{
617
+ operator: "operator";
618
+ owner: "owner";
619
+ viewer: "viewer";
620
+ administrator: "administrator";
621
+ builder: "builder";
622
+ }>]>;
623
+ authorityVersion: z.ZodOptional<z.ZodLiteral<1>>;
589
624
  activation: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
590
625
  state: z.ZodLiteral<"pending">;
591
626
  canRetry: z.ZodBoolean;
@@ -603,16 +638,6 @@ export declare const SolutionInstallationSchema: z.ZodObject<{
603
638
  retentionDays: z.ZodUnion<readonly [z.ZodLiteral<7>, z.ZodLiteral<30>, z.ZodLiteral<90>]>;
604
639
  publicId: z.ZodString;
605
640
  active: z.ZodBoolean;
606
- currentRole: z.ZodEnum<{
607
- operator: "operator";
608
- viewer: "viewer";
609
- administrator: "administrator";
610
- manager: "manager";
611
- }>;
612
- revision: z.ZodNumber;
613
- createdAt: z.ZodISODateTime;
614
- updatedAt: z.ZodISODateTime;
615
- createdBySubject: z.ZodString;
616
641
  }, z.core.$strict>;
617
642
  export type SolutionInstallation = z.infer<typeof SolutionInstallationSchema>;
618
643
  export declare const SolutionInstallationResponseSchema: z.ZodObject<{
@@ -712,6 +737,23 @@ export declare const SolutionInstallationResponseSchema: z.ZodObject<{
712
737
  profileId: z.ZodOptional<z.ZodEnum<{
713
738
  b2b_saas: "b2b_saas";
714
739
  }>>;
740
+ revision: z.ZodNumber;
741
+ createdAt: z.ZodISODateTime;
742
+ updatedAt: z.ZodISODateTime;
743
+ createdBySubject: z.ZodString;
744
+ currentRole: z.ZodUnion<readonly [z.ZodEnum<{
745
+ operator: "operator";
746
+ viewer: "viewer";
747
+ administrator: "administrator";
748
+ manager: "manager";
749
+ }>, z.ZodEnum<{
750
+ operator: "operator";
751
+ owner: "owner";
752
+ viewer: "viewer";
753
+ administrator: "administrator";
754
+ builder: "builder";
755
+ }>]>;
756
+ authorityVersion: z.ZodOptional<z.ZodLiteral<1>>;
715
757
  activation: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
716
758
  state: z.ZodLiteral<"pending">;
717
759
  canRetry: z.ZodBoolean;
@@ -729,16 +771,6 @@ export declare const SolutionInstallationResponseSchema: z.ZodObject<{
729
771
  retentionDays: z.ZodUnion<readonly [z.ZodLiteral<7>, z.ZodLiteral<30>, z.ZodLiteral<90>]>;
730
772
  publicId: z.ZodString;
731
773
  active: z.ZodBoolean;
732
- currentRole: z.ZodEnum<{
733
- operator: "operator";
734
- viewer: "viewer";
735
- administrator: "administrator";
736
- manager: "manager";
737
- }>;
738
- revision: z.ZodNumber;
739
- createdAt: z.ZodISODateTime;
740
- updatedAt: z.ZodISODateTime;
741
- createdBySubject: z.ZodString;
742
774
  }, z.core.$strict>;
743
775
  }, z.core.$strict>;
744
776
  }, z.core.$strict>;
@@ -840,6 +872,23 @@ export declare const SolutionInstallationListResponseSchema: z.ZodObject<{
840
872
  profileId: z.ZodOptional<z.ZodEnum<{
841
873
  b2b_saas: "b2b_saas";
842
874
  }>>;
875
+ revision: z.ZodNumber;
876
+ createdAt: z.ZodISODateTime;
877
+ updatedAt: z.ZodISODateTime;
878
+ createdBySubject: z.ZodString;
879
+ currentRole: z.ZodUnion<readonly [z.ZodEnum<{
880
+ operator: "operator";
881
+ viewer: "viewer";
882
+ administrator: "administrator";
883
+ manager: "manager";
884
+ }>, z.ZodEnum<{
885
+ operator: "operator";
886
+ owner: "owner";
887
+ viewer: "viewer";
888
+ administrator: "administrator";
889
+ builder: "builder";
890
+ }>]>;
891
+ authorityVersion: z.ZodOptional<z.ZodLiteral<1>>;
843
892
  activation: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
844
893
  state: z.ZodLiteral<"pending">;
845
894
  canRetry: z.ZodBoolean;
@@ -857,16 +906,6 @@ export declare const SolutionInstallationListResponseSchema: z.ZodObject<{
857
906
  retentionDays: z.ZodUnion<readonly [z.ZodLiteral<7>, z.ZodLiteral<30>, z.ZodLiteral<90>]>;
858
907
  publicId: z.ZodString;
859
908
  active: z.ZodBoolean;
860
- currentRole: z.ZodEnum<{
861
- operator: "operator";
862
- viewer: "viewer";
863
- administrator: "administrator";
864
- manager: "manager";
865
- }>;
866
- revision: z.ZodNumber;
867
- createdAt: z.ZodISODateTime;
868
- updatedAt: z.ZodISODateTime;
869
- createdBySubject: z.ZodString;
870
909
  }, z.core.$strict>>;
871
910
  nextCursor: z.ZodOptional<z.ZodString>;
872
911
  }, z.core.$strict>;
@@ -1178,6 +1217,23 @@ export declare const BusinessInvitationAcceptResponseSchema: z.ZodObject<{
1178
1217
  profileId: z.ZodOptional<z.ZodEnum<{
1179
1218
  b2b_saas: "b2b_saas";
1180
1219
  }>>;
1220
+ revision: z.ZodNumber;
1221
+ createdAt: z.ZodISODateTime;
1222
+ updatedAt: z.ZodISODateTime;
1223
+ createdBySubject: z.ZodString;
1224
+ currentRole: z.ZodUnion<readonly [z.ZodEnum<{
1225
+ operator: "operator";
1226
+ viewer: "viewer";
1227
+ administrator: "administrator";
1228
+ manager: "manager";
1229
+ }>, z.ZodEnum<{
1230
+ operator: "operator";
1231
+ owner: "owner";
1232
+ viewer: "viewer";
1233
+ administrator: "administrator";
1234
+ builder: "builder";
1235
+ }>]>;
1236
+ authorityVersion: z.ZodOptional<z.ZodLiteral<1>>;
1181
1237
  activation: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
1182
1238
  state: z.ZodLiteral<"pending">;
1183
1239
  canRetry: z.ZodBoolean;
@@ -1195,16 +1251,6 @@ export declare const BusinessInvitationAcceptResponseSchema: z.ZodObject<{
1195
1251
  retentionDays: z.ZodUnion<readonly [z.ZodLiteral<7>, z.ZodLiteral<30>, z.ZodLiteral<90>]>;
1196
1252
  publicId: z.ZodString;
1197
1253
  active: z.ZodBoolean;
1198
- currentRole: z.ZodEnum<{
1199
- operator: "operator";
1200
- viewer: "viewer";
1201
- administrator: "administrator";
1202
- manager: "manager";
1203
- }>;
1204
- revision: z.ZodNumber;
1205
- createdAt: z.ZodISODateTime;
1206
- updatedAt: z.ZodISODateTime;
1207
- createdBySubject: z.ZodString;
1208
1254
  }, z.core.$strict>;
1209
1255
  grant: z.ZodObject<{
1210
1256
  installationId: z.ZodString;
@@ -1224,7 +1270,7 @@ export declare const BusinessInvitationAcceptResponseSchema: z.ZodObject<{
1224
1270
  }, z.core.$strict>;
1225
1271
  }, z.core.$strict>;
1226
1272
  export type BusinessInvitationAcceptResponse = z.infer<typeof BusinessInvitationAcceptResponseSchema>;
1227
- export declare const EligibleBusinessAssigneeSchema: z.ZodObject<{
1273
+ export declare const EligibleBusinessAssigneeSchema: z.ZodUnion<readonly [z.ZodObject<{
1228
1274
  subject: z.ZodString;
1229
1275
  email: z.ZodEmail;
1230
1276
  role: z.ZodEnum<{
@@ -1232,12 +1278,21 @@ export declare const EligibleBusinessAssigneeSchema: z.ZodObject<{
1232
1278
  administrator: "administrator";
1233
1279
  manager: "manager";
1234
1280
  }>;
1235
- }, z.core.$strict>;
1281
+ }, z.core.$strict>, z.ZodObject<{
1282
+ subject: z.ZodString;
1283
+ email: z.ZodOptional<z.ZodEmail>;
1284
+ role: z.ZodEnum<{
1285
+ operator: "operator";
1286
+ owner: "owner";
1287
+ administrator: "administrator";
1288
+ }>;
1289
+ authorityVersion: z.ZodLiteral<1>;
1290
+ }, z.core.$strict>]>;
1236
1291
  export type EligibleBusinessAssignee = z.infer<typeof EligibleBusinessAssigneeSchema>;
1237
1292
  export declare const EligibleBusinessAssigneeListResponseSchema: z.ZodObject<{
1238
1293
  ok: z.ZodLiteral<true>;
1239
1294
  data: z.ZodObject<{
1240
- assignees: z.ZodArray<z.ZodObject<{
1295
+ assignees: z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
1241
1296
  subject: z.ZodString;
1242
1297
  email: z.ZodEmail;
1243
1298
  role: z.ZodEnum<{
@@ -1245,9 +1300,42 @@ export declare const EligibleBusinessAssigneeListResponseSchema: z.ZodObject<{
1245
1300
  administrator: "administrator";
1246
1301
  manager: "manager";
1247
1302
  }>;
1248
- }, z.core.$strict>>;
1303
+ }, z.core.$strict>, z.ZodObject<{
1304
+ subject: z.ZodString;
1305
+ email: z.ZodOptional<z.ZodEmail>;
1306
+ role: z.ZodEnum<{
1307
+ operator: "operator";
1308
+ owner: "owner";
1309
+ administrator: "administrator";
1310
+ }>;
1311
+ authorityVersion: z.ZodLiteral<1>;
1312
+ }, z.core.$strict>]>>;
1249
1313
  }, z.core.$strict>;
1250
1314
  }, z.core.$strict>;
1315
+ export declare const EligibleBusinessAssigneeListClientResponseSchema: z.ZodObject<{
1316
+ ok: z.ZodLiteral<true>;
1317
+ data: z.ZodObject<{
1318
+ assignees: z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
1319
+ subject: z.ZodString;
1320
+ email: z.ZodOptional<z.ZodEmail>;
1321
+ role: z.ZodEnum<{
1322
+ operator: "operator";
1323
+ owner: "owner";
1324
+ administrator: "administrator";
1325
+ }>;
1326
+ authorityVersion: z.ZodLiteral<1>;
1327
+ }, z.core.$strip>, z.ZodObject<{
1328
+ subject: z.ZodString;
1329
+ email: z.ZodEmail;
1330
+ role: z.ZodEnum<{
1331
+ operator: "operator";
1332
+ administrator: "administrator";
1333
+ manager: "manager";
1334
+ }>;
1335
+ authorityVersion: z.ZodOptional<z.ZodNever>;
1336
+ }, z.core.$strip>]>>;
1337
+ }, z.core.$strip>;
1338
+ }, z.core.$strip>;
1251
1339
  export type EligibleBusinessAssigneeListResponse = z.infer<typeof EligibleBusinessAssigneeListResponseSchema>;
1252
1340
  export declare const ManagedRecordCreateRequestSchema: z.ZodObject<{
1253
1341
  payload: z.ZodRecord<z.ZodString, z.ZodUnknown>;
@@ -1259,6 +1347,7 @@ export declare const ManagedRecordOriginSchema: z.ZodObject<{
1259
1347
  mcp: "mcp";
1260
1348
  portal: "portal";
1261
1349
  api: "api";
1350
+ messaging: "messaging";
1262
1351
  }>;
1263
1352
  subject: z.ZodOptional<z.ZodString>;
1264
1353
  }, z.core.$strict>;
@@ -1274,12 +1363,14 @@ export declare const ManagedRecordRequestStateSchema: z.ZodObject<{
1274
1363
  }, z.core.$strict>;
1275
1364
  export type ManagedRecordRequestState = z.infer<typeof ManagedRecordRequestStateSchema>;
1276
1365
  export declare const NativeManagedRecordSchema: z.ZodObject<{
1366
+ retentionExpiresAt: z.ZodNullable<z.ZodISODateTime>;
1277
1367
  origin: z.ZodObject<{
1278
1368
  surface: z.ZodEnum<{
1279
1369
  public: "public";
1280
1370
  mcp: "mcp";
1281
1371
  portal: "portal";
1282
1372
  api: "api";
1373
+ messaging: "messaging";
1283
1374
  }>;
1284
1375
  subject: z.ZodOptional<z.ZodString>;
1285
1376
  }, z.core.$strict>;
@@ -1305,7 +1396,6 @@ export declare const NativeManagedRecordSchema: z.ZodObject<{
1305
1396
  revision: z.ZodNumber;
1306
1397
  createdAt: z.ZodISODateTime;
1307
1398
  updatedAt: z.ZodISODateTime;
1308
- retentionExpiresAt: z.ZodISODateTime;
1309
1399
  authority: z.ZodLiteral<"native">;
1310
1400
  }, z.core.$strict>;
1311
1401
  export type NativeManagedRecord = z.infer<typeof NativeManagedRecordSchema>;
@@ -1371,12 +1461,14 @@ export declare const ExternalManagedRecordSchema: z.ZodObject<{
1371
1461
  }, z.core.$strict>;
1372
1462
  export type ExternalManagedRecord = z.infer<typeof ExternalManagedRecordSchema>;
1373
1463
  export declare const ManagedRecordSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
1464
+ retentionExpiresAt: z.ZodNullable<z.ZodISODateTime>;
1374
1465
  origin: z.ZodObject<{
1375
1466
  surface: z.ZodEnum<{
1376
1467
  public: "public";
1377
1468
  mcp: "mcp";
1378
1469
  portal: "portal";
1379
1470
  api: "api";
1471
+ messaging: "messaging";
1380
1472
  }>;
1381
1473
  subject: z.ZodOptional<z.ZodString>;
1382
1474
  }, z.core.$strict>;
@@ -1402,7 +1494,6 @@ export declare const ManagedRecordSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
1402
1494
  revision: z.ZodNumber;
1403
1495
  createdAt: z.ZodISODateTime;
1404
1496
  updatedAt: z.ZodISODateTime;
1405
- retentionExpiresAt: z.ZodISODateTime;
1406
1497
  authority: z.ZodLiteral<"native">;
1407
1498
  }, z.core.$strict>, z.ZodObject<{
1408
1499
  source: z.ZodObject<{
@@ -1511,12 +1602,14 @@ export declare const ManagedRecordResponseSchema: z.ZodObject<{
1511
1602
  ok: z.ZodLiteral<true>;
1512
1603
  data: z.ZodObject<{
1513
1604
  record: z.ZodDiscriminatedUnion<[z.ZodObject<{
1605
+ retentionExpiresAt: z.ZodNullable<z.ZodISODateTime>;
1514
1606
  origin: z.ZodObject<{
1515
1607
  surface: z.ZodEnum<{
1516
1608
  public: "public";
1517
1609
  mcp: "mcp";
1518
1610
  portal: "portal";
1519
1611
  api: "api";
1612
+ messaging: "messaging";
1520
1613
  }>;
1521
1614
  subject: z.ZodOptional<z.ZodString>;
1522
1615
  }, z.core.$strict>;
@@ -1542,7 +1635,6 @@ export declare const ManagedRecordResponseSchema: z.ZodObject<{
1542
1635
  revision: z.ZodNumber;
1543
1636
  createdAt: z.ZodISODateTime;
1544
1637
  updatedAt: z.ZodISODateTime;
1545
- retentionExpiresAt: z.ZodISODateTime;
1546
1638
  authority: z.ZodLiteral<"native">;
1547
1639
  }, z.core.$strict>, z.ZodObject<{
1548
1640
  source: z.ZodObject<{
@@ -1654,12 +1746,14 @@ export declare const ManagedRecordListResponseSchema: z.ZodObject<{
1654
1746
  ok: z.ZodLiteral<true>;
1655
1747
  data: z.ZodObject<{
1656
1748
  records: z.ZodArray<z.ZodUnion<readonly [z.ZodDiscriminatedUnion<[z.ZodObject<{
1749
+ retentionExpiresAt: z.ZodNullable<z.ZodISODateTime>;
1657
1750
  origin: z.ZodObject<{
1658
1751
  surface: z.ZodEnum<{
1659
1752
  public: "public";
1660
1753
  mcp: "mcp";
1661
1754
  portal: "portal";
1662
1755
  api: "api";
1756
+ messaging: "messaging";
1663
1757
  }>;
1664
1758
  subject: z.ZodOptional<z.ZodString>;
1665
1759
  }, z.core.$strict>;
@@ -1685,7 +1779,6 @@ export declare const ManagedRecordListResponseSchema: z.ZodObject<{
1685
1779
  revision: z.ZodNumber;
1686
1780
  createdAt: z.ZodISODateTime;
1687
1781
  updatedAt: z.ZodISODateTime;
1688
- retentionExpiresAt: z.ZodISODateTime;
1689
1782
  authority: z.ZodLiteral<"native">;
1690
1783
  }, z.core.$strict>, z.ZodObject<{
1691
1784
  source: z.ZodObject<{
@@ -1901,12 +1994,14 @@ export declare const ManagedRecordExportResponseSchema: z.ZodObject<{
1901
1994
  ok: z.ZodLiteral<true>;
1902
1995
  data: z.ZodObject<{
1903
1996
  records: z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
1997
+ retentionExpiresAt: z.ZodNullable<z.ZodISODateTime>;
1904
1998
  origin: z.ZodObject<{
1905
1999
  surface: z.ZodEnum<{
1906
2000
  public: "public";
1907
2001
  mcp: "mcp";
1908
2002
  portal: "portal";
1909
2003
  api: "api";
2004
+ messaging: "messaging";
1910
2005
  }>;
1911
2006
  subject: z.ZodOptional<z.ZodString>;
1912
2007
  }, z.core.$strict>;
@@ -1932,7 +2027,6 @@ export declare const ManagedRecordExportResponseSchema: z.ZodObject<{
1932
2027
  revision: z.ZodNumber;
1933
2028
  createdAt: z.ZodISODateTime;
1934
2029
  updatedAt: z.ZodISODateTime;
1935
- retentionExpiresAt: z.ZodISODateTime;
1936
2030
  authority: z.ZodLiteral<"native">;
1937
2031
  notes: z.ZodOptional<z.ZodArray<z.ZodObject<{
1938
2032
  id: z.ZodString;
@@ -1,4 +1,5 @@
1
1
  import { z } from 'zod';
2
+ import { BusinessWorkspaceRoleSchema } from './business-workspaces.js';
2
3
  import { BusinessNoticeSchema } from './solution-onboarding.js';
3
4
  /** Public Noodle-authored profiles. B2B SaaS uses the private-definition path. */
4
5
  export const MANAGED_SOLUTION_PROFILE_IDS = ['travel', 'ecommerce', 'restaurant'];
@@ -22,7 +23,14 @@ export const MANAGED_RECORD_STATUSES = ['new', 'in_progress', 'resolved', 'close
22
23
  export const ManagedRecordStatusSchema = z.enum(MANAGED_RECORD_STATUSES);
23
24
  export const BUSINESS_GRANT_ROLES = ['administrator', 'manager', 'operator', 'viewer'];
24
25
  export const BusinessGrantRoleSchema = z.enum(BUSINESS_GRANT_ROLES);
25
- export const MANAGED_RECORD_ORIGIN_SURFACES = ['public', 'portal', 'mcp', 'api'];
26
+ /** `messaging` marks trusted channel provenance (ADR 0240), never a client-claimed origin. */
27
+ export const MANAGED_RECORD_ORIGIN_SURFACES = [
28
+ 'public',
29
+ 'portal',
30
+ 'mcp',
31
+ 'api',
32
+ 'messaging',
33
+ ];
26
34
  export const ManagedRecordOriginSurfaceSchema = z.enum(MANAGED_RECORD_ORIGIN_SURFACES);
27
35
  export const COLLECTION_SOURCE_HEALTH_STATES = [
28
36
  'pending',
@@ -158,6 +166,15 @@ export const SolutionInstallationActivationSchema = z.discriminatedUnion('state'
158
166
  z.strictObject({ state: z.literal('pending'), canRetry: z.boolean() }),
159
167
  z.strictObject({ state: z.enum(['ready', 'unavailable']), canRetry: z.literal(false) }),
160
168
  ]);
169
+ /** Selected authority version determines the role vocabulary; never infer or merge versions. */
170
+ export const BusinessInstallationAccessSchema = z
171
+ .object({
172
+ currentRole: z.union([BusinessGrantRoleSchema, BusinessWorkspaceRoleSchema]),
173
+ authorityVersion: z.literal(1).optional(),
174
+ })
175
+ .refine((value) => (value.authorityVersion === 1
176
+ ? BusinessWorkspaceRoleSchema
177
+ : BusinessGrantRoleSchema).safeParse(value.currentRole).success, { message: 'Role does not match the selected authority version' });
161
178
  const installationShape = {
162
179
  activation: SolutionInstallationActivationSchema.optional(),
163
180
  id,
@@ -167,7 +184,7 @@ const installationShape = {
167
184
  retentionDays: ManagedRecordRetentionDaysSchema,
168
185
  publicId: id,
169
186
  active: z.boolean(),
170
- currentRole: BusinessGrantRoleSchema,
187
+ ...BusinessInstallationAccessSchema.shape,
171
188
  revision: positiveRevision,
172
189
  createdAt: instant,
173
190
  updatedAt: instant,
@@ -199,12 +216,16 @@ export const ResolvedSolutionDefinitionSchema = z.discriminatedUnion('kind', [
199
216
  ResolvedPrivateSolutionDefinitionSchema,
200
217
  ResolvedLegacySolutionDefinitionSchema,
201
218
  ]);
202
- export const SolutionInstallationSchema = z.strictObject({
219
+ export const SolutionInstallationSchema = z
220
+ .strictObject({
203
221
  ...installationShape,
204
222
  definition: ResolvedSolutionDefinitionSchema,
205
223
  collections: z.array(ManagedCollectionProfileSchema).max(16),
206
224
  /** Historical persisted key retained only while legacy installations are backfilled. */
207
225
  profileId: LegacySolutionProfileIdSchema.optional(),
226
+ })
227
+ .refine((value) => BusinessInstallationAccessSchema.safeParse(value).success, {
228
+ message: 'Invalid installation access projection',
208
229
  });
209
230
  export const SolutionInstallationResponseSchema = z.strictObject({
210
231
  ok: z.literal(true),
@@ -290,15 +311,33 @@ export const BusinessInvitationAcceptResponseSchema = z.strictObject({
290
311
  grant: BusinessGrantSchema,
291
312
  }),
292
313
  });
293
- export const EligibleBusinessAssigneeSchema = z.strictObject({
314
+ const legacyAssignee = z.strictObject({
294
315
  subject: id,
295
316
  email: z.email().max(254),
296
317
  role: z.enum(['administrator', 'manager', 'operator']),
297
318
  });
319
+ const workspaceAssignee = z.strictObject({
320
+ subject: z.string().min(1).max(500),
321
+ email: z.email().max(254).optional(),
322
+ role: z.enum(['owner', 'administrator', 'operator']),
323
+ authorityVersion: z.literal(1),
324
+ });
325
+ export const EligibleBusinessAssigneeSchema = z.union([legacyAssignee, workspaceAssignee]);
298
326
  export const EligibleBusinessAssigneeListResponseSchema = z.strictObject({
299
327
  ok: z.literal(true),
300
328
  data: z.strictObject({ assignees: z.array(EligibleBusinessAssigneeSchema).max(100) }),
301
329
  });
330
+ export const EligibleBusinessAssigneeListClientResponseSchema = z.object({
331
+ ok: z.literal(true),
332
+ data: z.object({
333
+ assignees: z
334
+ .array(z.union([
335
+ workspaceAssignee.strip(),
336
+ legacyAssignee.extend({ authorityVersion: z.never().optional() }).strip(),
337
+ ]))
338
+ .max(100),
339
+ }),
340
+ });
302
341
  export const ManagedRecordCreateRequestSchema = z.strictObject({ payload: jsonObject });
303
342
  export const ManagedRecordOriginSchema = z.strictObject({
304
343
  surface: ManagedRecordOriginSurfaceSchema,
@@ -326,6 +365,7 @@ const recordShape = {
326
365
  export const NativeManagedRecordSchema = z.strictObject({
327
366
  authority: z.literal('native'),
328
367
  ...recordShape,
368
+ retentionExpiresAt: instant.nullable(),
329
369
  origin: ManagedRecordOriginSchema,
330
370
  assigneeSubject: id.optional(),
331
371
  request: ManagedRecordRequestStateSchema.optional(),