@company-semantics/contracts 87.0.0 → 88.0.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.
package/src/index.ts CHANGED
@@ -76,7 +76,6 @@ export type {
76
76
  ScriptsDepsBaseline,
77
77
  EvolutionBaselines,
78
78
  ContractsFreshnessBaseline,
79
- CoverageBaseline,
80
79
  MetaBaselines,
81
80
  // Aggregate evolution types
82
81
  DomainAggregateBaseline,
@@ -249,1095 +248,25 @@ export type {
249
248
  WriteTierDisabledMeta,
250
249
  } from "./dispatch/index";
251
250
 
252
- // Notification domain types
253
- // Replaces the Email* vocabulary (ADR-CONT-034), which was deleted with
254
- // `@company-semantics/contracts/email` — email is now one channel, not the shape
255
- // of the layer. The render layer itself (content model, renderers,
256
- // renderToChannel) stays on the `/notifications` subpath; the root carries the
257
- // vocabulary, as it did for email.
258
- // @see ADR-CONTRACTS-086 for the multi-channel render layer
259
- // @see ADR-CONTRACTS-085 for the definition + registry
260
- export type {
261
- NotificationKind,
262
- NotificationPayloads,
263
- NotificationDefinition,
264
- NotificationDefinitions,
265
- } from "./notifications/index";
266
-
267
- export {
268
- NOTIFICATION_DEFINITIONS,
269
- getNotificationKindDefinition,
270
- isValidNotificationKind,
271
- } from "./notifications/index";
272
-
273
- // Action-item domain types — things awaiting a user's DECISION, derived from
274
- // each domain's own pending rows rather than stored. Deliberately a separate
275
- // vocabulary from NotificationKind above: that one names events that get SENT,
276
- // this one names standing state. See src/action-items/README.md.
277
- // @see ADR-CONT-104
278
- export {
279
- ACTION_ITEM_KINDS,
280
- ACTION_ITEM_TARGET_TYPES,
281
- } from "./action-items/index";
282
-
283
- export {
284
- ActionItemKindSchema,
285
- ActionItemListResponseSchema,
286
- ActionItemSchema,
287
- ActionItemTargetSchema,
288
- ActionItemTargetTypeSchema,
289
- } from "./action-items/index";
290
-
291
- export type {
292
- ActionItem,
293
- ActionItemKind,
294
- ActionItemListResponse,
295
- ActionItemTarget,
296
- ActionItemTargetType,
297
- } from "./action-items/index";
298
-
299
- // User-scoped push envelope — the frames any domain may put on ONE
300
- // authenticated user's connection without owning a route or an SSE union of its
301
- // own. A THIRD vocabulary alongside the two above, and deliberately unlike
302
- // both: a notification LEAVES the building, an action item is STANDING state,
303
- // and a user event is a single unreplayable instant meaning "your cache is
304
- // stale". This stream is a wake-up channel, NOT an ordered event log — no frame
305
- // carries an SSE `id:` and nothing durable may be hung off it.
306
- // See src/user-events/README.md.
307
- export {
308
- MAX_INVALIDATION_KEYS,
309
- USER_EVENT_RESYNC_REASONS,
310
- } from "./user-events/index";
311
-
312
- export {
313
- ResourceInvalidatedEventSchema,
314
- UserEventBaseSchema,
315
- UserEventConnectedSchema,
316
- UserEventResyncReasonSchema,
317
- UserEventResyncSchema,
318
- UserSseEventSchema,
319
- } from "./user-events/index";
320
-
321
- export type {
322
- NotificationCreatedEvent,
323
- ResourceInvalidatedEvent,
324
- UserEventConnected,
325
- UserEventResync,
326
- UserEventResyncReason,
327
- UserSseEvent,
328
- } from "./user-events/index";
329
-
330
- // Durable in-app inbox + the merged feed that renders it
331
- // (user-notification-inbox-and-merged-feed). The
332
- // THIRD vocabulary beside NotificationKind and ActionItemKind: a notification
333
- // leaves the building, an action item is standing state you can resolve, and
334
- // one of these is a stored fact you can only look at. Rows hold identifiers
335
- // only — every prose field is rendered at read time under the reader's CURRENT
336
- // authority, which is what keeps a stale row from leaking anything.
337
- // See src/user-notifications/README.md.
338
- export { USER_NOTIFICATION_KINDS } from "./user-notifications/index";
339
-
340
- export {
341
- FeedItemSchema,
342
- FeedListResponseSchema,
343
- FeedMarkReadRequestSchema,
344
- UserNotificationKindSchema,
345
- UserNotificationSchema,
346
- } from "./user-notifications/index";
347
-
348
- export type {
349
- FeedItem,
350
- FeedListResponse,
351
- FeedMarkReadRequest,
352
- UserNotification,
353
- UserNotificationKind,
354
- } from "./user-notifications/index";
355
-
356
- // Each inbox kind's declared lifecycle — condition, supersession, resolution,
357
- // retention (notification-lifecycle-is-declared-per-kind) — and the one
358
- // function that turns a kind + domain ref into its condition/supersession keys.
359
- export {
360
- conditionKeyOf,
361
- NOTIFICATION_ATTENTION_ON_SUPERSEDE,
362
- NOTIFICATION_LIFECYCLE,
363
- NOTIFICATION_RESOLUTION_AUDIENCES,
364
- NOTIFICATION_RETENTION_CLASSES,
365
- NotificationConditionKeyError,
366
- notificationKeysOf,
367
- } from "./user-notifications/index";
368
-
369
- export type {
370
- NotificationAttentionOnSupersede,
371
- NotificationCondition,
372
- NotificationKeys,
373
- NotificationLifecycle,
374
- NotificationResolution,
375
- NotificationResolutionAudience,
376
- NotificationRetention,
377
- } from "./user-notifications/index";
378
-
379
- // The feed's views, selectors (explicit ids, or a view as of `asOf`) and verb
380
- // wire — read / unread / delete / restore — for the caller's inbox rows.
381
- export {
382
- FEED_SELECTOR_MAX_IDS,
383
- FEED_VIEWS,
384
- FeedDeleteRequestSchema,
385
- FeedDeleteResponseSchema,
386
- FeedMarkUnreadRequestSchema,
387
- FeedMutationResponseSchema,
388
- FeedRestoreRequestSchema,
389
- FeedRestoreResponseSchema,
390
- FeedSelectorSchema,
391
- FeedViewSchema,
392
- } from "./user-notifications/index";
393
-
394
- export type {
395
- FeedDeleteRequest,
396
- FeedDeleteResponse,
397
- FeedMarkUnreadRequest,
398
- FeedMutationResponse,
399
- FeedRestoreRequest,
400
- FeedRestoreResponse,
401
- FeedSelector,
402
- FeedView,
403
- } from "./user-notifications/index";
404
-
405
- // Proactive delivery — how the system speaks first (ADR-CONTRACTS-142). A
406
- // COMPOSER above the three notification vocabularies, not a fourth peer: the
407
- // presentation class is a TOTAL FUNCTION from class to surfaces
408
- // (CLASS_SURFACES, checked in both directions by the compiler), and a kind
409
- // carries its class plus the IDS each surface needs — which banner, which chat
410
- // template, which inbox kind — never the surface booleans. The born-read rule
411
- // is stated once (bornRead) so the backend imports it rather than re-deriving
412
- // it per call site. Pushed-chat prose lives here too (PROACTIVE_CHAT_COMPOSERS,
413
- // total over the templates): the backend hands a composer facts and writes what
414
- // comes back, FROZEN into the transcript — so a composer may only interpolate
415
- // facts the recipient was entitled to at compose time. See src/proactive/README.md.
416
- export {
417
- PROACTIVE_PRESENTATION_CLASSES,
418
- CLASS_SURFACES,
419
- bornRead,
420
- ORG_SYSTEM_EVENT_TYPES,
421
- PROACTIVE_CHAT_TEMPLATES,
422
- PROACTIVE_EVENT_KIND_IDS,
423
- PROACTIVE_RECIPIENT_REASONS,
424
- PROACTIVE_PROJECTIONS,
425
- PROACTIVE_EVENT_KINDS,
426
- PROACTIVE_CHAT_MAX_REPLIES,
427
- PROACTIVE_CHAT_COMPOSERS,
428
- } from "./proactive/index";
429
-
430
- export type {
431
- ProactivePresentationClass,
432
- BadgeCarrier,
433
- ClassSurfacePlan,
434
- OrgSystemEventType,
435
- ProactiveChatTemplate,
436
- ProactiveEventKind,
437
- ProactiveEventId,
438
- ProactiveRecipientReason,
439
- ProactiveProjection,
440
- ProactiveEventDefinition,
441
- OrgBecameSharedFacts,
442
- MorningBriefFacts,
443
- ProactiveChatFacts,
444
- ProactiveChatComposer,
445
- ProactiveChatMessage,
446
- } from "./proactive/index";
447
-
448
- // Analysis workflows — the registered types a durable long-running analysis
449
- // can be (PRD-00976). The workflow primitive itself is domain-agnostic; its
450
- // TYPE is the one place a domain names itself, and that name is a public wire
451
- // discriminator carried on the workflow row, in the data-workflow-progress
452
- // chat part and by the generic projection read. Namespaced `<domain>/<flow>`
453
- // so domains cannot collide, and a CLOSED const array so the discriminator is
454
- // validated and handled exhaustively. See src/workflows/README.md.
455
- export { ANALYSIS_WORKFLOW_TYPES, isWorkflowType } from "./workflows/index";
456
-
457
- export type { WorkflowType } from "./workflows/index";
458
-
459
- // Comment wire contract — where a thread hangs (the anchor union), what a
460
- // thread and its comments look like on the wire, and who a comment may name.
461
- // The anchor is the single most load-bearing shape in this package: the backend
462
- // validates it and then stores opaque jsonb it never interprets, so app/
463
- // contracts drift on it has NO server-side tripwire and mis-places comments
464
- // silently. Response vocabulary only — request bodies stay backend-side.
465
- // See src/comments/README.md.
466
- //
467
- // The anchor SIZE BOUNDS are published alongside the shape, because the client
468
- // that composes an anchor and the schema that accepts it are the two halves of
469
- // that same driftable agreement: a constructor capturing more context than the
470
- // boundary accepts loses a comment after it was written. Note ANCHOR_CONTEXT_CHARS
471
- // (capture) and ANCHOR_AFFIX_MAX_CHARS (accept) differ ON PURPOSE.
472
- // @see ADR-CONTRACTS-116, ADR-CONT-029
473
- export {
474
- ANCHOR_AFFIX_MAX_CHARS,
475
- ANCHOR_CONTEXT_CHARS,
476
- COMMENT_ANCHOR_TYPES,
477
- COMMENT_SUBJECT_TYPES,
478
- COMMENT_THREAD_KINDS,
479
- COMMENT_THREAD_STATUSES,
480
- QUOTE_MAX_CHARS,
481
- RELATIVE_POSITION_MAX_CHARS,
482
- SUGGESTION_OPS,
483
- SUGGESTION_STATUSES,
484
- } from "./comments/index";
485
-
486
- // The anchor's INTERPRETATION, published beside its shape (ADR-CONTRACTS-127).
487
- // The schema said what an anchor looks like; these say what it MEANS. Both
488
- // halves have to be published for the same reason: the writing client and the
489
- // resolving client agree with no server-side arbiter between them, so a second
490
- // description of "where does this anchor land" mis-places comments with nothing
491
- // anywhere throwing. `resolveAnchorFromText` is total, pure and text-only — the
492
- // Yjs relative-position rung stays in consumers, which compose it on top.
493
- export {
494
- contextAfter,
495
- contextBefore,
496
- contextsMatchAt,
497
- findSoleOccurrence,
498
- resolveAnchorFromText,
499
- } from "./comments/index";
500
-
501
- export type { AnchorResolution, Occurrence } from "./comments/index";
502
-
503
- // The two questions asked BEFORE the body is written (ADR-CONTRACTS-127).
504
- // `anchorStillReads` is a SECOND assertion, independent of the ladder — the
505
- // applier must not trust the finder — and `plannedEdit` derives the mutation
506
- // from the canonical payload rather than a caller's restatement of it. Both are
507
- // total functions of their arguments, which is exactly what makes them liftable
508
- // out of a browser applier: no Y.Text, no clock, no lease.
509
- export { anchorStillReads, plannedEdit } from "./comments/index";
510
-
511
- export type { PlannedEdit } from "./comments/index";
512
-
513
- // The CONSTRUCTION half of the same contract (ADR-CONTRACTS-127). Publishing
514
- // anchor → text while leaving text → anchor browser-only would be half an
515
- // extraction: the side that COMPOSES an anchor decides how much context to
516
- // capture and what counts as a quote, and a second description of that is the
517
- // same silent-drift hazard the resolver was published to end. Both constructors
518
- // validate through `CommentAnchorSchema` before returning and refuse — `null` —
519
- // rather than truncate, because an anchor the route boundary rejects is a
520
- // comment lost after it was composed. The relative-position pair is NOT
521
- // produced here; a consumer holding a `Y.Text` merges it onto the result.
522
- export {
523
- createTextAnchorFromRange,
524
- createTextInsertionAnchorAt,
525
- } from "./comments/index";
526
-
527
- export type { TextRange } from "./comments/index";
528
-
529
- // The application receipt — the durable proof that an accepted suggestion's
530
- // edit ALREADY LANDED IN THE BODY (ADR-CONTRACTS-127). It travels in the same
531
- // CRDT transaction as the edit, so either both survived or neither did, which
532
- // is what closes the window between the write and the acknowledgment. The MAP
533
- // KEY is the load-bearing part: a receipt written under any other name lands in
534
- // a map nobody reads while the reader watches a map nobody writes, and nothing
535
- // anywhere throws — the same no-arbiter hazard as the anchor, now that a second
536
- // implementation is about to write receipts too. Published with a PARSER,
537
- // because these values arrive from a peer through a CRDT that has no schema of
538
- // its own: a row that is not three well-typed fields is dropped, never
539
- // surfaced. The receipt lives BESIDE the body and must never reach the markdown
540
- // source, an export, or the content hash.
541
- export {
542
- SUGGESTION_RECEIPTS_MAP,
543
- SuggestionReceiptSchema,
544
- readSuggestionReceipt,
545
- } from "./comments/index";
546
-
547
- export type { SuggestionReceipt } from "./comments/index";
548
-
549
- export {
550
- AGENT_OUTCOME_REASONS,
551
- AgentOutcomeSchema,
552
- CommentAnchorSchema,
553
- CommentAnchorTypeSchema,
554
- CommentMentionSchema,
555
- CommentSchema,
556
- CommentSubjectTypeSchema,
557
- CommentThreadListResponseSchema,
558
- CommentThreadSchema,
559
- CommentThreadStatusSchema,
560
- CommentThreadSummarySchema,
561
- MentionableCandidateSchema,
562
- MentionableResponseSchema,
563
- SuggestionSchema,
564
- ThreadOriginSchema,
565
- } from "./comments/index";
566
-
567
- export type {
568
- AgentOutcome,
569
- CommentAnchor,
570
- CommentAnchorType,
571
- CommentMention,
572
- CommentProjection,
573
- CommentSubjectType,
574
- CommentThread,
575
- CommentThreadKind,
576
- CommentThreadListResponse,
577
- CommentThreadStatus,
578
- CommentThreadSummary,
579
- MentionableCandidate,
580
- MentionableResponse,
581
- Suggestion,
582
- SuggestionOp,
583
- SuggestionStatus,
584
- ThreadOrigin,
585
- } from "./comments/index";
586
-
587
- // Chat domain types
588
- // @see PRD-00142 for share chat design rationale
589
- export type {
590
- ChatSummary,
591
- // Chat lifecycle types
592
- TitleSource,
593
- ChatListFilters,
594
- ChatSummaryExtended,
595
- TitleGenerationRequest,
596
- TitleGenerationResponse,
597
- // Event system types
598
- BaseEvent,
599
- InvalidationReason,
600
- ChatChangedField,
601
- // Domain events (carry full state)
602
- ChatCreatedEvent,
603
- ChatUpdatedEvent,
604
- ChatDeletedEvent,
605
- ChatDomainEvent,
606
- // Invalidation events (staleness signals)
607
- InvalidateChatEvent,
608
- InvalidateChatListEvent,
609
- ChatInvalidationEvent,
610
- // SSE event unions
611
- ChatSseEvent,
612
- // Runtime profile types (PRD-00229)
613
- ChatRuntimeProfile,
614
- ChatRuntimeProfileInfo,
615
- // Proactive chat wire vocabulary (ADR-CONTRACTS-142): how a chat was born,
616
- // the occurrence-to-chat resolution states, and the recognized form of the
617
- // wire-lenient `proactiveKind` string
618
- ChatOrigin,
619
- ProactiveChatResolution,
620
- RecognizedProactiveKind,
621
- // Page context (PRD-00969, ADR-CONTRACTS-153): where the reader is, as
622
- // identifiers. Never content, never free text.
623
- ChatDiscussionScope,
624
- ChatPageContext,
625
- // Chat mentions (ADR-CONTRACTS-160): a turn's mention rows are keyed on a
626
- // PrincipalRef, so the agent is nameable on the chat surface too, and the
627
- // composer's candidate list reuses the comments candidate shape.
628
- ChatMessageMention,
629
- ChatMentionableResponse,
630
- // Multi-party chat (ADR-CONTRACTS-164): a chat is a room with a membership.
631
- // Participation, not an ACL entity — two roles, one owner, and the agent is
632
- // mentionable but never a member.
633
- ChatParticipantRole,
634
- ChatGrantableRole,
635
- AddChatParticipantRequest,
636
- UpdateChatParticipantRequest,
637
- ChatParticipant,
638
- ChatParticipantsResponse,
639
- // Chat continuity (chat-continuity-wire-vocabulary): the subject a chat
640
- // belongs to, its generation, and the lineage back to its predecessor.
641
- ConversationSubjectKind,
642
- ChatContinuationReason,
643
- ChatContinuity,
644
- // Launch resolution: the disposition the read-only resolve reports, the
645
- // start-fresh response, and the launch-target-superseded 409 body.
646
- LaunchDisposition,
647
- ResolveLaunchResponse,
648
- StartFreshChatResponse,
649
- LaunchTargetSuperseded,
650
- } from "./chat/index";
651
-
652
- export {
653
- CHAT_RUNTIME_PROFILES,
654
- DEFAULT_CHAT_RUNTIME_PROFILE,
655
- // Page context: the request-side schema and the closed vocabularies behind
656
- // its `view`, `scope` and `entity.type` fields.
657
- ChatDiscussionScopeSchema,
658
- ChatPageContextSchema,
659
- CHAT_DISCUSSION_REQUEST_TYPES,
660
- CHAT_PAGE_VIEWS,
661
- CHAT_PAGE_SCOPES,
662
- CHAT_PAGE_ENTITY_TYPES,
663
- // `proactiveKind` is a bare string on the wire so a new kind cannot make an
664
- // older client reject the whole chat list; this is the ONE place it becomes
665
- // a ProactiveEventKind. See src/chat/proactive-kind.ts.
666
- recognizeProactiveKind,
667
- // Chat mentions: the mention row a turn carries, and the composer's
668
- // candidate envelope (items are `MentionableCandidateSchema`, imported from
669
- // comments rather than restated).
670
- ChatMessageMentionSchema,
671
- ChatMentionableResponseSchema,
672
- // Multi-party chat: the role vocabulary, one participant row, and the list
673
- // envelope for GET /api/chats/:chatId/participants.
674
- ChatParticipantRoleSchema,
675
- ChatGrantableRoleSchema,
676
- ChatParticipantSchema,
677
- ChatParticipantsResponseSchema,
678
- // Chat continuity: the closed subject-kind and continuation-reason
679
- // vocabularies, and the lineage object on the chat detail.
680
- CONVERSATION_SUBJECT_KINDS,
681
- ConversationSubjectKindSchema,
682
- CHAT_CONTINUATION_REASONS,
683
- ChatContinuationReasonSchema,
684
- ChatContinuitySchema,
685
- // Launch resolution: the closed disposition vocabulary, the resolve and
686
- // start-fresh responses, and the 409 code + body for a superseded target.
687
- LAUNCH_DISPOSITIONS,
688
- LaunchDispositionSchema,
689
- ResolveLaunchResponseSchema,
690
- StartFreshChatResponseSchema,
691
- LAUNCH_TARGET_SUPERSEDED_CODE,
692
- LaunchTargetSupersededSchema,
693
- } from "./chat/index";
694
-
695
- // Organization domain types
696
- // @see ADR-BE-XXX for design rationale (Personal vs Shared Organization Model)
697
- export type {
698
- OrgType,
699
- OrgSharedTransitionTrigger,
700
- ExecutionScope,
701
- OrganizationInfo,
702
- OwnershipTransferRequest,
703
- OwnershipTransferStatus,
704
- // Workspace visibility DTOs (Phase 2)
705
- // @see ADR-CONT-030 for design rationale
706
- OrgLogos,
707
- WorkspaceOverview,
708
- WorkspaceMember,
709
- AuthMethodConfig,
710
- WorkspaceAuthConfig,
711
- // SSO self-service setup types (PRD-00193)
712
- SsoSetupInfo,
713
- SsoReadinessCheck,
714
- SsoReadiness,
715
- SsoEnforcementStatus,
716
- // SSO stepper types (PRD-00197)
717
- ProviderStatus,
718
- WorkspaceSsoState,
719
- SsoStepperStep,
720
- OwnerIdentityInfo,
721
- OidcValidationResult,
722
- TestSsoInitiation,
723
- TestSsoResult,
724
- ProviderSuggestion,
725
- WorkspaceAuditEvent,
726
- // Workspace expansion DTOs (Phase 3)
727
- // @see ADR-CONT-031 for design rationale
728
- OrgInviteStatus,
729
- OrgInvite,
730
- CreateInviteRequest,
731
- AcceptInviteRequest,
732
- RemoveMemberRequest,
733
- ChangeMemberRoleRequest,
734
- OrgAuthPolicy,
735
- UpdateAuthPolicyRequest,
736
- Phase3AuditAction,
737
- // Domain and multi-org types (Phase 4)
738
- // @see ADR-CONT-032 for design rationale
739
- DomainStatus,
740
- DomainVerificationMethod,
741
- OrgDomain,
742
- Phase4AuditAction,
743
- UserOrgMembership,
744
- // Authorization context types (Phase 5)
745
- // @see ADR-CTRL-010 for design rationale
746
- OrgScopedContext,
747
- // Workspace Info/Settings surface types (PRD-00133)
748
- WorkspaceSurface,
749
- WorkspaceInfoOverview,
750
- WorkspaceSettingsOverview,
751
- IntegrationRequestStatus,
752
- IntegrationRequest,
753
- // Ownership transfer DTOs (PRD-00153)
754
- TransferInitiateRequest,
755
- TransferStatusResponse,
756
- TransferAcceptanceView,
757
- TransferResponsibility,
758
- // Identity Trust Level types (PRD-00154)
759
- IdentityTrustLevel,
760
- TransferEligibilityResult,
761
- TransferMemberEligibility,
762
- // Company.md domain types (PRD-00173)
763
- CompanyMdVisibility,
764
- CompanyMdDiscoverabilityPolicy,
765
- CompanyMdClassification,
766
- CompanyMdDocLevel,
767
- CompanyMdDocKind,
768
- CompanyMdNodeType,
769
- CompanyMdSource,
770
- CompanyMdDependency,
771
- CompanyMdTreeNode,
772
- CompanyMdDoc,
773
- CompanyMdContextBankItem,
774
- // Sharing and ACL types (PRD-00306). Legacy AccessSource / AccessReason /
775
- // EffectiveAccess / EvaluationStep / AccessExplanation removed with
776
- // CompanyMdAccessEvaluator (ADR-BE-392); the ONE AccessSource is re-exported
777
- // from ./permissions below.
778
- AccessLevel,
779
- SharePolicy,
780
- AclEntry,
781
- ShareState,
782
- PermissionAuditEntry,
783
- } from "./org/index";
784
-
785
- export {
786
- VIEW_SCOPE_MAP,
787
- getViewScope,
788
- ORG_SHARED_TRANSITION_TRIGGERS,
789
- TRANSFER_RESPONSIBILITIES,
790
- IDENTITY_TRUST_LEVEL_LABELS,
791
- ORG_UNIT_DESIGNED_MAX_DEPTH,
792
- ORG_UNIT_ABSOLUTE_MAX_DEPTH,
793
- } from "./org/index";
794
-
795
- // The org unit route, built by backend hrefs and app routes alike (ADR-CONTRACTS-171)
796
- export {
797
- levelSlugForDepth,
798
- slugifyLevelLabel,
799
- unitRouteSegments,
800
- } from "./org/index";
801
- export type { UnitRouteLevel } from "./org/index";
802
-
803
- // View authorization types (Phase 5 - ADR-APP-013)
804
- export type { AuthorizableView } from "./org/index";
805
-
806
- // Org structure facts: provenance + home/membership separation (ADR-CONTRACTS-066)
807
- export {
808
- FactSourceTierSchema,
809
- FACT_SOURCE_TIER_PRECEDENCE,
810
- FactProvenanceSchema,
811
- HomeAssignmentSchema,
812
- } from "./org/index";
813
- export type {
814
- FactSourceTier,
815
- FactProvenance,
816
- HomeAssignment,
817
- } from "./org/index";
818
-
819
- // Occupancy: the holds_position relation (M:N, co-occupancy first-class).
820
- // Vacancy = a position with no active occupancy. (ADR-CONT-083 / ADR-CTRL-182)
821
- export { OccupancyStatusSchema, OccupancySchema } from "./org/index";
822
- export type { OccupancyStatus, Occupancy } from "./org/index";
823
-
824
- // Position: the org seat (planned/open/filled/closed) — a seat, not a person
825
- // or a title. Carries a FactProvenance envelope. (ADR-CONT-083 / ADR-CTRL-182)
826
- export { PositionStatusSchema, PositionSchema } from "./org/index";
827
- export type { PositionStatus, Position } from "./org/index";
828
-
829
- // Position reporting: the canonical seat -> manager-seat reporting edge. The
830
- // person hierarchy derives from this composed with occupancy. (ADR-CONT-083 / ADR-CTRL-182)
831
- export {
832
- PositionReportingRelationshipTypeSchema,
833
- PositionReportingSchema,
834
- } from "./org/index";
835
- export type {
836
- PositionReportingRelationshipType,
837
- PositionReporting,
838
- } from "./org/index";
839
-
840
- // People directory: every `persons` row in the org, account-bearing or not.
841
- // Neither the member list (RBAC principals) nor the org chart (topology) — the
842
- // set an HRIS sync populates, and the only surface carrying a directory email.
843
- // Capability-gated, deliberately: the org-chart read is authenticated-only.
844
- export {
845
- OrgDirectoryPersonSchema,
846
- OrgDirectoryResponseSchema,
847
- } from "./org/index";
848
- export type { OrgDirectoryPerson, OrgDirectoryResponse } from "./org/index";
849
-
850
- // Bulk invite, keyed by personId so recipients are resolved server-side from the
851
- // caller's own directory rather than supplied by the caller.
852
- export {
853
- BATCH_INVITE_PERSONS_MAX,
854
- INVITE_EXPIRY_DAYS,
855
- BATCH_INVITE_SKIP_REASONS,
856
- BatchInviteSkipReasonSchema,
857
- BatchInviteRequestSchema,
858
- BatchInviteResponseSchema,
859
- } from "./org/index";
860
- export type {
861
- BatchInviteSkipReason,
862
- BatchInviteRequest,
863
- BatchInviteResponse,
864
- } from "./org/index";
865
-
866
- // Invite batches: the persisted Prepare → Review → Send lifecycle that puts a
867
- // review boundary in front of bulk invite. The batch holds INTENT, never
868
- // credentials — there is no token field on a batch or an item, and there never
869
- // may be. Supersedes BatchInvite* above, which is removed in 58.0.0.
870
- export {
871
- INVITE_BATCH_STATUSES,
872
- INVITE_BATCH_ITEM_STATUSES,
873
- INVITE_BATCH_ITEM_REASONS,
874
- INVITE_BATCH_CHANGED,
875
- InviteBatchStatusSchema,
876
- InviteBatchItemStatusSchema,
877
- InviteBatchItemReasonSchema,
878
- InviteBatchItemSchema,
879
- InviteBatchCountsSchema,
880
- InviteBatchSchema,
881
- InviteBatchResponseSchema,
882
- CreateInviteBatchRequestSchema,
883
- UpdateInviteBatchRequestSchema,
884
- SendInviteBatchRequestSchema,
885
- } from "./org/index";
886
- export type {
887
- InviteBatchStatus,
888
- InviteBatchItemStatus,
889
- InviteBatchItemReason,
890
- InviteBatchItem,
891
- InviteBatchCounts,
892
- InviteBatch,
893
- InviteBatchResponse,
894
- CreateInviteBatchRequest,
895
- UpdateInviteBatchRequest,
896
- SendInviteBatchRequest,
897
- } from "./org/index";
251
+ // Named re-export lists for the rest of the root surface live in
252
+ // ./root-exports/, one slice per theme, each re-exported whole below. A slice
253
+ // lists exactly the subset of its domain the root exposes, by name — see
254
+ // src/root-exports/README.md.
255
+ export * from "./root-exports/delivery";
898
256
 
899
- // Source authority: per-field ownership — who may WRITE a given entity field.
900
- // Orthogonal to provenance (who reported). (ADR-CONT-083 / ADR-CTRL-182)
901
- export { SourceAuthoritySchema } from "./org/index";
902
- export type { SourceAuthority } from "./org/index";
257
+ export * from "./root-exports/collaboration";
903
258
 
904
- // Company.md real-time collaboration wire contract: sync/update-accepted
905
- // responses, the SSE frame union, the Y.Doc shape constant, and the published
906
- // size limits. Sequences are ALWAYS decimal strings. (ADR-CONT-102)
907
- export {
908
- COMPANY_MD_COLLAB_TEXT_KEY,
909
- COMPANY_MD_COLLAB_MAX_UPDATE_B64_CHARS,
910
- COMPANY_MD_COLLAB_MAX_DOC_TEXT_BYTES,
911
- COMPANY_MD_COLLAB_MAX_PRESENCE_POSITION_CHARS,
912
- COMPANY_MD_COLLAB_PRESENCE_TTL_MS,
913
- COMPANY_MD_COLLAB_PRESENCE_HEARTBEAT_MS,
914
- CompanyMdCollabSyncLimitsSchema,
915
- CompanyMdCollabSyncResponseSchema,
916
- CompanyMdCollabUpdateAcceptedSchema,
917
- CompanyMdCollabUpdateEventSchema,
918
- CompanyMdCollabPresenceEventSchema,
919
- CompanyMdCollabResetEventSchema,
920
- CompanyMdCollabAccessRevokedEventSchema,
921
- CompanyMdCollabConnectedEventSchema,
922
- CompanyMdCollabServerDrainEventSchema,
923
- CompanyMdCollabSseEventSchema,
924
- } from "./org/index";
925
- export type {
926
- CompanyMdCollabSyncLimits,
927
- CompanyMdCollabSyncResponse,
928
- CompanyMdCollabUpdateAccepted,
929
- CompanyMdCollabUpdateEvent,
930
- CompanyMdCollabPresenceEvent,
931
- CompanyMdCollabResetEvent,
932
- CompanyMdCollabAccessRevokedEvent,
933
- CompanyMdCollabConnectedEvent,
934
- CompanyMdCollabServerDrainEvent,
935
- CompanyMdCollabSseEvent,
936
- } from "./org/index";
937
-
938
- // Sync run summary: the outcome record of one adapter sync run (counts +
939
- // cursor watermark). A flat report shape, not a structure fact. (ADR-CONT-085)
940
- export { SyncRunSummarySchema } from "./org/index";
941
- export type { SyncRunSummary } from "./org/index";
942
-
943
- // Conflict record: one recorded reconciliation conflict surfaced during a sync.
944
- // Operational audit record about a sync, not a structure fact. (ADR-CONT-085)
945
- export { ConflictRecordSchema } from "./org/index";
946
- export type { ConflictRecord } from "./org/index";
947
-
948
- // Org reconciliation ledger: the org's STANDING disagreements with the connected
949
- // HRIS — the open ones only, sync-time (runId set) and app-time (runId null)
950
- // alike. Complements the run-scoped conflicts view rather than replacing it, and
951
- // resolution is a LOCAL decision only. (ADR-BE-564)
952
- export {
953
- OrgDivergenceSchema,
954
- OrgReconciliationLedgerSchema,
955
- OrgDivergenceResolutionSchema,
956
- ResolveOrgDivergenceResultSchema,
957
- } from "./org/index";
958
- export type {
959
- OrgDivergence,
960
- OrgReconciliationLedger,
961
- OrgDivergenceResolution,
962
- ResolveOrgDivergenceResult,
963
- } from "./org/index";
964
-
965
- // Structure findings: standing observations about recorded org data, with a
966
- // fact-driven lifecycle and a content-pinned dismissal. (ADR-BE-765)
967
- export {
968
- STRUCTURE_FINDING_KINDS,
969
- STRUCTURE_FINDING_STATUSES,
970
- StructureFindingKindSchema,
971
- StructureFindingStatusSchema,
972
- ReportingLineAnomalyReportSchema,
973
- ReportingLineAnomalyFactsSchema,
974
- SubunitCandidateFactsSchema,
975
- StructureFindingDismissalSchema,
976
- StructureFindingSchema,
977
- StructureFindingListStatusSchema,
978
- StructureFindingListResponseSchema,
979
- DismissStructureFindingRequestSchema,
980
- StructureFindingResponseSchema,
981
- } from "./org/index";
982
- export type {
983
- StructureFindingKind,
984
- StructureFindingStatus,
985
- ReportingLineAnomalyReport,
986
- ReportingLineAnomalyFacts,
987
- SubunitCandidateFacts,
988
- StructureFindingDismissal,
989
- StructureFinding,
990
- StructureFindingListStatus,
991
- StructureFindingListResponse,
992
- DismissStructureFindingRequest,
993
- StructureFindingResponse,
994
- } from "./org/index";
259
+ export * from "./root-exports/org-workspace";
995
260
 
996
- // Org transformation wire vocabulary: intent -> simulation -> preview. The
997
- // engine turns a TransformationRequest into scored mutation bundles and returns
998
- // a TransformationPreview the operator confirms before apply. (ADR-CONTRACTS-072)
999
- export {
1000
- OrgIntentSchema,
1001
- FactMutationSchema,
1002
- TransformationOriginSchema,
1003
- ProvenanceSchema,
1004
- ExecutionContextSchema,
1005
- TransformationRequestSchema,
1006
- ConstraintViolationSchema,
1007
- RecommendationSchema,
1008
- FindingSeveritySchema,
1009
- FindingSchema,
1010
- TransformStrategySchema,
1011
- SelectionRationaleSchema,
1012
- ReportingEdgeProvenanceSchema,
1013
- SupersededReportingEdgeSchema,
1014
- TransformationPreviewSchema,
1015
- } from "./org/index";
1016
- export type {
1017
- OrgIntent,
1018
- FactMutation,
1019
- TransformationOrigin,
1020
- Provenance,
1021
- ExecutionContext,
1022
- TransformationRequest,
1023
- ConstraintViolation,
1024
- Recommendation,
1025
- FindingSeverity,
1026
- Finding,
1027
- TransformStrategy,
1028
- SelectionRationale,
1029
- ReportingEdgeProvenance,
1030
- SupersededReportingEdge,
1031
- TransformationPreview,
1032
- } from "./org/index";
1033
-
1034
- // Canonical facts: the adapter-seam ingestion batch — external-keyed Canonical*
1035
- // facts (each with provenance) plus a CanonicalFacts envelope. The reconciler
1036
- // consumes the batch into the internal org graph. (ADR-CONT-085 / ADR-CTRL-183)
1037
- export {
1038
- CanonicalPersonSchema,
1039
- CanonicalOrgUnitSchema,
1040
- CanonicalPositionStatusSchema,
1041
- CanonicalPositionSchema,
1042
- CanonicalOccupancySchema,
1043
- CanonicalReportingEdgeSchema,
1044
- CanonicalUnresolvedManagerResolutionSchema,
1045
- CanonicalUnresolvedManagerSchema,
1046
- CanonicalFactsSchema,
1047
- } from "./org/index";
1048
- export type {
1049
- CanonicalPerson,
1050
- CanonicalOrgUnit,
1051
- CanonicalPositionStatus,
1052
- CanonicalPosition,
1053
- CanonicalOccupancy,
1054
- CanonicalReportingEdge,
1055
- CanonicalUnresolvedManagerResolution,
1056
- CanonicalUnresolvedManager,
1057
- CanonicalFacts,
1058
- } from "./org/index";
261
+ // The org sharing AccessLevel is exported BY NAME, not through a root-exports
262
+ // slice: ./permissions (star-exported below) has its own AccessLevel, and only
263
+ // an explicit export shadows a star export — two star exports of one name are
264
+ // ambiguous and the name drops out of the surface.
265
+ export type { AccessLevel } from "./org/index";
1059
266
 
1060
- // Org-structure inference: a StructureInferenceSnapshot of the persisted graph
1061
- // goes in, a StructureProposal — a proposed desired state, never database
1062
- // commands — comes out. Typed evidence, targetUnitId for durable identity, and
1063
- // exactly one PersonStructureOutcome per person in the snapshot. (PRD-00955)
1064
- //
1065
- // Acceptance attaches StructureProvenance — proposalOrigin, acceptedBy and
1066
- // authority as three ORTHOGONAL axes, so accepting an AI proposal never rewrites
1067
- // its origin as manual. mayOverrideAuthority is the single definition of
1068
- // precedence, and it consults `authority` only. (PRD-00956)
1069
- export {
1070
- StructureEvidenceSchema,
1071
- TOPOLOGY_ONLY_EVIDENCE_KINDS,
1072
- StructureUnitAuthoritySchema,
1073
- StructureProposalOriginSchema,
1074
- StructureAcceptedBySchema,
1075
- StructureAuthoritySchema,
1076
- StructureProvenanceSchema,
1077
- mayOverrideAuthority,
1078
- ProposedOrgUnitSchema,
1079
- PersonStructureOutcomeSchema,
1080
- StructureReviewItemSchema,
1081
- StructureProposalSchema,
1082
- StructurePersonFactSchema,
1083
- StructureReportingFactSchema,
1084
- ExistingUnitFactSchema,
1085
- ExistingPlacementFactSchema,
1086
- StructureInferenceSnapshotSchema,
1087
- } from "./org/index";
1088
- export type {
1089
- StructureEvidence,
1090
- StructureUnitAuthority,
1091
- StructureProposalOrigin,
1092
- StructureAcceptedBy,
1093
- StructureAuthority,
1094
- StructureProvenance,
1095
- ProposedOrgUnit,
1096
- PersonStructureOutcome,
1097
- StructureReviewItem,
1098
- StructureProposal,
1099
- StructurePersonFact,
1100
- StructureReportingFact,
1101
- ExistingUnitFact,
1102
- ExistingPlacementFact,
1103
- StructureInferenceSnapshot,
1104
- } from "./org/index";
267
+ export * from "./root-exports/org-structure";
1105
268
 
1106
- // Authority & Delegation vocabulary
1107
- export {
1108
- AuthoritySourceSchema,
1109
- AuthorityOriginSchema,
1110
- AuthorityConfidenceSchema,
1111
- AuthorityMechanismSchema,
1112
- AuthorityLocalitySchema,
1113
- AuthorityMutabilitySchema,
1114
- OwnerAuthoritySchema,
1115
- OrgUnitOwnerSchema,
1116
- PendingUnitOwnerSchema,
1117
- UnitLeadClearedSchema,
1118
- OrgUnitOwnersResponseSchema,
1119
- DelegationSchema,
1120
- CreateDelegationRequestSchema,
1121
- DelegationListResponseSchema,
1122
- } from "./org/index";
1123
- export type {
1124
- AuthoritySource,
1125
- AuthorityOrigin,
1126
- AuthorityConfidence,
1127
- AuthorityMechanism,
1128
- AuthorityLocality,
1129
- AuthorityMutability,
1130
- OwnerAuthority,
1131
- OrgUnitOwner,
1132
- PendingUnitOwner,
1133
- UnitLeadCleared,
1134
- OrgUnitOwnersResponse,
1135
- Delegation,
1136
- CreateDelegationRequest,
1137
- DelegationListResponse,
1138
- } from "./org/index";
1139
-
1140
- // MCP tool discovery types
1141
- // @see company-semantics-backend/src/interfaces/mcp/ for implementation
1142
- export type {
1143
- ToolCategory,
1144
- ToolVisibility,
1145
- ToolInvocationMode,
1146
- ToolEffectClass,
1147
- MCPToolDescriptor,
1148
- ToolDiscoveryResponse,
1149
- ToolListMessagePart,
1150
- ToolListDataPart,
1151
- // Tool domain taxonomy (PRD-00265)
1152
- ToolDomain,
1153
- ToolIntegration,
1154
- ToolIntent,
1155
- ToolStability,
1156
- ToolComplexity,
1157
- // Resource flow types (PRD-00265)
1158
- ResourceType,
1159
- // Capability graph types (PRD-00265 types, PRD-00268 implementation)
1160
- CapabilityGraph,
1161
- CapabilityGraphEdge,
1162
- ToolWorkflow,
1163
- } from "./mcp/index";
1164
-
1165
- export { buildCapabilityGraph } from "./mcp/index";
1166
-
1167
- // Message part types and builder functions
1168
- // @see ADR-2026-01-022 for design rationale
1169
- export type {
1170
- TextPart,
1171
- ToolListPart,
1172
- StatusPanelPart,
1173
- StatusPanelEntry,
1174
- ChartPart,
1175
- ChartDataPoint,
1176
- TablePart,
1177
- ConfirmationPart,
1178
- SurfacePart,
1179
- AssistantMessagePart,
1180
- PartBuilderState,
1181
- AddPartResult,
1182
- // Preview types (Phase 3)
1183
- PreviewArtifactKind,
1184
- IntegrationProvider,
1185
- IntegrationKey,
1186
- IntegrationArtifactContent,
1187
- PreviewArtifact,
1188
- PreviewData,
1189
- PreviewPart,
1190
- PreviewDataPart,
1191
- // Confirmation types (Phase 4)
1192
- ConfirmationChoice,
1193
- ConfirmationRiskLevel,
1194
- ConfirmationData,
1195
- ConfirmationResponseData,
1196
- ConfirmationDataPart,
1197
- // Interactive task surface types (editable surfaces)
1198
- InteractiveTaskKind,
1199
- CandidateSource,
1200
- InteractiveFieldType,
1201
- InteractiveFieldDescriptor,
1202
- InteractiveTaskSubject,
1203
- InteractiveTaskDestination,
1204
- InteractiveTaskData,
1205
- InteractiveTaskPart,
1206
- InteractiveTaskDataPart,
1207
- StructureReviewData,
1208
- StructureReviewPart,
1209
- StructureReviewDataPart,
1210
- // Discussion hand-back signal (not a surface, data-discussion-handback)
1211
- DiscussionHandbackData,
1212
- DiscussionHandbackPart,
1213
- DiscussionHandbackDataPart,
1214
- // Suggested replies surface types (non-governed chips, PRD-00958)
1215
- SuggestedReply,
1216
- SuggestedRepliesData,
1217
- SuggestedRepliesPart,
1218
- SuggestedRepliesDataPart,
1219
- // Workflow progress surface types (non-governed anchor, data-workflow-progress, PRD-00976)
1220
- WorkflowProgressData,
1221
- WorkflowProgressPart,
1222
- WorkflowProgressDataPart,
1223
- // Execution result types (Phase 5)
1224
- ExecutionArtifactStatus,
1225
- ExecutionResultSummary,
1226
- ExecutionUndoCapability,
1227
- ExecutionResultData,
1228
- ExecutionResultPart,
1229
- ExecutionResultDataPart,
1230
- // Undo result types (PRD-00203)
1231
- UndoResultData,
1232
- UndoResultDataPart,
1233
- // Message lifecycle types (Phase 1 streaming)
1234
- // @see ADR-CONT-027 for design rationale
1235
- StreamPhase,
1236
- MessageLifecycleEventType,
1237
- MessageLifecycleEvent,
1238
- MessageStartEvent,
1239
- MessageDeltaEvent,
1240
- MessageCompleteEvent,
1241
- ToolResultRenderClass,
1242
- ToolResultPart,
1243
- MessageStartDataPart,
1244
- MessageDeltaDataPart,
1245
- MessageCompleteDataPart,
1246
- } from "./message-parts/index";
1247
-
1248
- export {
1249
- isTextPart,
1250
- isSurfacePart,
1251
- createPartBuilder,
1252
- addText,
1253
- addSurface,
1254
- addPart,
1255
- buildParts,
1256
- getDroppedCount,
1257
- WireSurfaceBuilder,
1258
- CONFIRMATION_LABELS,
1259
- getConfirmationLabel,
1260
- DISCUSSION_HANDBACK_PART_TYPE,
1261
- } from "./message-parts/index";
1262
-
1263
- // Generic review anchor (input-request-is-the-generic-review-anchor)
1264
- // data-input-request is governed like structure-review, which stays frozen and
1265
- // readable forever. See ./message-parts/input-request.ts.
1266
- export type {
1267
- InputRequestPart,
1268
- InputRequestDataPart,
1269
- } from "./message-parts/index";
1270
- export { isInputRequestDataPartShape } from "./message-parts/index";
1271
-
1272
- // Execution kind types and registry
1273
- // @see ADR-CONT-029 for design rationale
1274
- export type {
1275
- ExecutionKind,
1276
- ExecutionState,
1277
- ExecutionEventType,
1278
- ISO8601Timestamp,
1279
- IconName,
1280
- ExecutionDomain,
1281
- ExecutionKindDefinition,
1282
- // Projection contracts
1283
- ExecutionTarget,
1284
- ExecutionInitiator,
1285
- ExecutionStatus,
1286
- ExecutionSummary,
1287
- TimelineStatus,
1288
- TimelineIcon,
1289
- TimelineUIEvent,
1290
- } from "./execution/index";
1291
-
1292
- export {
1293
- EXECUTION_KINDS,
1294
- getExecutionKindDefinition,
1295
- isValidExecutionKind,
1296
- EXECUTION_EVENT_TYPES,
1297
- isExecutionEventType,
1298
- } from "./execution/index";
1299
-
1300
- // Ralph autonomous coding loop types
1301
- // @see company-semantics-control/docs/ralph.md for usage
1302
- export type {
1303
- // PRD types
1304
- AllowedRepo,
1305
- RalphPRDCategory,
1306
- RalphPRDPriority,
1307
- RalphPRDItem,
1308
- RalphPRD,
1309
- // PRD v2.0 schema extensions
1310
- RalphAgentContract,
1311
- RalphFailurePolicy,
1312
- RalphScope,
1313
- RalphMeta,
1314
- RalphAcceptanceCriteria,
1315
- RalphReferenceImplementation,
1316
- RalphInteractionFlow,
1317
- RalphCapabilities,
1318
- RalphSuccessCriteria,
1319
- RalphCommitPolicy,
1320
- // Progress types
1321
- RalphIteration,
1322
- RalphMode,
1323
- RalphProgress,
1324
- } from "./ralph/index";
1325
-
1326
- // Ralph constants (cross-repo support)
1327
- export { REPO_PRECEDENCE } from "./ralph/index";
1328
-
1329
- // Internal admin types (cross-org control plane)
1330
- // @see PRD-00113 for design rationale
1331
- export type {
1332
- InternalAdminCapability,
1333
- InternalAdminContext,
1334
- RequestContext,
1335
- } from "./internal-admin";
1336
-
1337
- // Rate limit domain types
1338
- // @see PRD-00013 for contracts integration
1339
- export type { RateLimitConfig, RateLimitResult } from "./rate-limit/index";
1340
- export { RateLimitTier } from "./rate-limit/index";
269
+ export * from "./root-exports/agent-runtime";
1341
270
 
1342
271
  // Billing vocabulary (PRD-01002 / ADR-CONTRACTS-174)
1343
272
  // The closed sets a wallet, ledger, reservation, top-up and seat are written
@@ -1349,198 +278,7 @@ export { RateLimitTier } from "./rate-limit/index";
1349
278
  // the org billing read consumers use is OrgBillingOverview, from this domain.
1350
279
  export * from "./billing/index";
1351
280
 
1352
- // Impersonation types (break-glass emergency access)
1353
- // @see ADR-BE-068 for trust model
1354
- export type {
1355
- AuthMode,
1356
- ImpersonationSession,
1357
- RestrictedImpersonationAction,
1358
- ImpersonationCapability,
1359
- ImpersonationSessionSummary,
1360
- ImpersonationAuditEventType,
1361
- } from "./impersonation";
1362
-
1363
- export { RESTRICTED_IMPERSONATION_ACTIONS } from "./impersonation";
1364
-
1365
- // Impersonation SSE event types (real-time push)
1366
- // @see PRD-00176 for design rationale
1367
- export type {
1368
- ImpersonationSessionSnapshotEvent,
1369
- ImpersonationSessionStartedEvent,
1370
- ImpersonationSessionEndedEvent,
1371
- ImpersonationSessionExpiredEvent,
1372
- ImpersonationSseEvent,
1373
- } from "./impersonation-events";
1374
-
1375
- // AI features (INV-AI-ATTRIBUTION) and the internal-admin telemetry usage types
1376
- export { AI_FEATURES, AI_FEATURE_LABELS } from "./usage/features";
1377
- export type {
1378
- AiFeature,
1379
- // Unified usage types (PRD-00276/277)
1380
- UnifiedUsageSummary,
1381
- UnifiedDailyUsage,
1382
- UnifiedProfileUsage,
1383
- UnifiedUserUsage,
1384
- UnifiedModelUsage,
1385
- UnifiedFeatureUsage,
1386
- UnifiedUsageResponse,
1387
- } from "./usage/types";
1388
-
1389
- // Runtime execution telemetry types
1390
- // @see PRD-00200 for design rationale
1391
- export type {
1392
- ExecutionFailureReason,
1393
- RuntimeExecutionTelemetry,
1394
- // Aggregation response types (PRD-00201)
1395
- ProfileStats,
1396
- OrgExecutionSummary,
1397
- DailyExecutionStats,
1398
- ExecutionByUser,
1399
- ExecutionDetail,
1400
- // Budget governance types (PRD-00232)
1401
- BudgetCheck,
1402
- OrgBudgetSettings,
1403
- } from "./usage/execution-types";
1404
-
1405
- // Resource key types (shared vocabulary for data layer)
1406
- // @see PRD-00321 for design rationale
1407
- export type { ResourceKey, Action } from "./resource-keys";
1408
- export {
1409
- resolveScope,
1410
- toQueryKey,
1411
- fromQueryKey,
1412
- matchesResourceKey,
1413
- isResourceKeyShape,
1414
- } from "./resource-keys";
1415
-
1416
- // Resource response wrapper (typed versioning for cache invalidation)
1417
- export type { ResourceResponse } from "./resource-response";
1418
-
1419
- // Error response types (canonical shape for all API surfaces)
1420
- // @see ADR-BE-098 for design rationale
1421
- export type { ValidationDetail, ErrorResponse } from "./errors/index";
1422
-
1423
- // OpenAPI generated types (from openapi/backend.yaml)
1424
- // @see src/api/README.md for codegen details
1425
- export type { paths, components, operations } from "./api/index";
1426
-
1427
- // Spec hash (SHA-256 of openapi/backend.yaml, generated at build time)
1428
- export { SPEC_HASH, SPEC_HASH_FULL } from "./api/index";
1429
-
1430
- // OpenAPI route registry (generated from openapi/backend.yaml)
1431
- export {
1432
- openApiRoutes,
1433
- type OpenApiRoute,
1434
- type OpenApiMethod,
1435
- } from "./generated/openapi-routes";
1436
-
1437
- // Secret wrapper (multi-surface redaction for sensitive values)
1438
- export type { Secret } from "./security/index";
1439
- export { wrapSecret, unwrapSecret } from "./security/index";
1440
-
1441
- // Org secrets DTO schemas (PRD-00629)
1442
- // @see src/security/org-secrets.ts for invariants (no value field on summary)
1443
- export {
1444
- UsageClassSchema,
1445
- OrgSecretsActionSchema,
1446
- SecretValueStringSchema,
1447
- OrgSecretSummarySchema,
1448
- CreateSecretRequestSchema,
1449
- RotateSecretRequestSchema,
1450
- DisableSecretRequestSchema,
1451
- } from "./security/index";
1452
- export type {
1453
- UsageClass,
1454
- OrgSecretsAction,
1455
- SecretValueString,
1456
- OrgSecretSummary,
1457
- CreateSecretRequest,
1458
- RotateSecretRequest,
1459
- DisableSecretRequest,
1460
- } from "./security/index";
1461
-
1462
- // Auth token storage/entropy policy (PRD-00901)
1463
- // @see src/security/token-policy.ts — single source for the runtime issuance
1464
- // path and the secure-token-generation CI guard
1465
- export { AUTH_TOKEN_POLICY_REQUIREMENTS } from "./security/index";
1466
- export type {
1467
- TokenStorageFormat,
1468
- TokenPolicyConformance,
1469
- TokenPolicyRequirement,
1470
- AuthTokenPolicyClass,
1471
- } from "./security/index";
1472
-
1473
- // Analytics response metadata (shared vocabulary for OLTP/OLAP separation)
1474
- // @see ADR-CTRL-053 for design rationale
1475
- export type {
1476
- AnalyticsBackend,
1477
- AnalyticsResponseMeta,
1478
- } from "./types/analytics";
1479
-
1480
- // Client request scheduler types (shared tier vocabulary)
1481
- export type {
1482
- Tier,
1483
- MutationBehavior,
1484
- SchedulerResourceKey,
1485
- RequestDescriptor,
1486
- SchedulerEvent,
1487
- } from "./requests";
1488
-
1489
- // Mutation policy types (lane behavior semantics)
1490
- export type { MutationPolicy } from "./mutations";
1491
-
1492
- // Observability envelope types (shared metric shape)
1493
- export { REQUEST_ID_HEADER } from "./observability";
1494
- export type {
1495
- Labels,
1496
- MetricEnvelope,
1497
- SchedulerMetricName,
1498
- } from "./observability";
1499
-
1500
- // Long-lived route vocabulary (PRD-00485 SSE / event-stream isolation)
1501
- export type { LongLivedRouteOptions, LongLivedPlugin } from "./sse";
1502
- export { longLivedPlugin } from "./sse";
1503
-
1504
- // Route builder (PRD-00499 h5): required tier + resourceKey at the type level
1505
- export type { HttpMethod, RouteDefinition } from "./route-builder";
1506
- export { routeBuilder } from "./route-builder";
1507
-
1508
- // Query intent vocabulary (PRD-00486 per-tier DB query timeouts + circuit breaker)
1509
- export type { QueryIntent } from "./queryIntent";
1510
-
1511
- // System pressure vocabulary (PRD-00489 load-shed + progressive degradation)
1512
- export {
1513
- SYSTEM_PRESSURE_HEADER,
1514
- HEAP_SHED_PCT,
1515
- HEAP_CLEAR_PCT,
1516
- CLEAR_HOLDDOWN_MS,
1517
- } from "./pressure";
1518
- export type { SystemPressureValue, ShedResponse } from "./pressure";
1519
-
1520
- // Safe-mode vocabulary (PRD-00495 global freeze / circuit breaker)
1521
- export { SYSTEM_SAFE_MODE_HEADER } from "./safe-mode";
1522
- export type { SafeModeValue, SafeModeState } from "./safe-mode";
1523
-
1524
- // Timeout ladder (PRD-00491 end-to-end timing budgets)
1525
- export { TIMEOUT_LADDER_MS, getTimeoutForTier } from "./timeouts";
1526
-
1527
- // Tracing vocabulary (PRD-00497 canonical request lifecycle)
1528
- export { LIFECYCLE_PHASES } from "./tracing";
1529
- export type {
1530
- LifecyclePhase,
1531
- TraceId,
1532
- RequestId,
1533
- TraceMetadata,
1534
- } from "./tracing";
1535
-
1536
- // Damped auto-tuning controller vocabulary (PRD-00500 a1)
1537
- export { bounded } from "./autotune";
1538
- export type {
1539
- Bounded,
1540
- ControllerConfig,
1541
- ControllerInput,
1542
- ControllerOutput,
1543
- } from "./autotune";
281
+ export * from "./root-exports/platform";
1544
282
 
1545
283
  // Meeting recorder vocabulary (PRD-00651)
1546
284
  // @see ./meetings/schemas.ts for invariants