@ttt-productions/ttt-core 0.79.71 → 0.79.73
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/dist/doc-schemas/registry.d.ts +0 -2
- package/dist/doc-schemas/registry.d.ts.map +1 -1
- package/dist/doc-schemas/safety/case.d.ts +0 -1
- package/dist/doc-schemas/safety/case.d.ts.map +1 -1
- package/dist/doc-schemas/safety/case.js +0 -1
- package/dist/doc-schemas/safety/case.js.map +1 -1
- package/dist/doc-schemas/safety/monitors.d.ts +0 -2
- package/dist/doc-schemas/safety/monitors.d.ts.map +1 -1
- package/dist/doc-schemas/safety/monitors.js +0 -1
- package/dist/doc-schemas/safety/monitors.js.map +1 -1
- package/dist/schemas/notification.d.ts +10 -0
- package/dist/schemas/notification.d.ts.map +1 -1
- package/dist/schemas/notification.js +4 -4
- package/dist/schemas/notification.js.map +1 -1
- package/dist/schemas/safety.d.ts +0 -56
- package/dist/schemas/safety.d.ts.map +1 -1
- package/dist/types/admin-ops.d.ts +0 -2
- package/dist/types/admin-ops.d.ts.map +1 -1
- package/dist/types/admin-ops.js.map +1 -1
- package/dist/types/audit.d.ts +1 -1
- package/dist/types/audit.d.ts.map +1 -1
- package/dist/types/audit.js.map +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"notification.js","sourceRoot":"","sources":["../../src/schemas/notification.ts"],"names":[],"mappings":"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","sourcesContent":["// TTT notification contracts.\n//\n// `@ttt-productions/notification-core` is generic — at its package boundary a\n// notification's `metadata` is `Record<string, unknown>`. All TTT notification\n// policy lives here: the canonical type catalog (category / delivery / default\n// channels), the per-type typed `metadata` discriminated union, the broadcast\n// audience selector, and the callable input schemas. There is NO single send\n// chokepoint: ttt-prod has two intake lanes — reliable single/shared occurrences\n// (`writeReliableOccurrenceRow` / `enqueueReliableOccurrence`) and audience fanout\n// (`notificationFanoutJobs` → `processNotificationFanoutJobs`) — which converge on\n// the `notificationDeliveries` ledger, with `materializeDeliveries` as the sole\n// materializer. `validateNotificationMetadata` is the one check of a row's or job's `metadata`\n// against its type, for both lanes.\n//\n// The two notification audit-event payload shapes live here too (the\n// `AuditEventType` union members `notification.broadcastSent` /\n// `notification.adminArchived` are added in ../types/audit.ts; their actor is\n// always an admin mode — `adminReview` / `adminOverride`).\n\nimport { z } from 'zod';\nimport {\n userIdSchema,\n workProjectIdSchema,\n guildInviteIdSchema,\n adminDispatchIdSchema,\n hallItemIdSchema,\n thresholdItemIdSchema,\n changeRequestIdSchema,\n workProjectTypeSchema,\n notificationFanoutJobIdSchema,\n storedTitleSchema,\n reportGroupIdSchema,\n mediaAssetIdSchema,\n workRealmIdSchema,\n realmFileShareRequestIdSchema,\n documentIdSegmentSchema,\n activeNotificationIdSchema,\n} from './atoms.js';\nimport {\n MAX_THRESHOLD_REVIEW_NOTES_LENGTH,\n MAX_HALL_CHANGE_REQUEST_REASON_LENGTH,\n MAX_NOTIFICATION_MESSAGE_LENGTH,\n MAX_BROADCAST_EXPLICIT_UIDS,\n} from '../constants/business.js';\nimport { BROADCAST_MESSAGE_INPUT, BROADCAST_TITLE_INPUT } from '../constants/text-fields.js';\nimport { HallSubItemTypeSchema } from '../doc-schemas/content.js';\nimport { textFieldSchema } from './text-field.js';\nimport { ReportableItemTypeSchema } from '../doc-schemas/safety/foundation.js';\nimport { NotificationFanoutPrioritySchema } from '../doc-schemas/notification-ledger.js';\n\n// A stored broadcast message an announcement's metadata carries (the typed field is the\n// broadcast input's `BROADCAST_MESSAGE_INPUT`).\nconst storedNotificationMessageSchema = z.string().min(1).max(MAX_NOTIFICATION_MESSAGE_LENGTH);\n// The canonical reportable-item enum — never an open string (ARCH-102).\nconst reportedItemTypeSchema = ReportableItemTypeSchema;\nconst reportedItemIdSchema = documentIdSegmentSchema.max(128);\nconst reportIdSchema = documentIdSegmentSchema;\nconst appealIdSchema = documentIdSegmentSchema;\n\n// ============================================================================\n// TYPE + CHANNEL CATALOG\n// ============================================================================\n\nexport const NOTIFICATION_TYPE_VALUES = [\n 'content_report',\n 'guild_invite',\n 'admin_dispatch_reply',\n // The FIRST message of a thread the admin team started — to the user, or to every active\n // member of the Work. A reply is `admin_dispatch_reply`.\n 'admin_dispatch_created',\n 'threshold_library_submission',\n // Author feedback for a Threshold Library review decision (only needs_revision is\n // delivered today — an approval reaches the author via the publish member fanout).\n 'threshold_library_reviewed',\n // Proposer feedback for a PUBLISHED change-request decision (approve/deny).\n 'hall_content_change_request_resolved',\n 'admin_announcement',\n 'followed_content_published',\n // The two audience-fanout triggers (see ttt-prod docs/design/notification-system.md).\n // `member_content_published`: the Hall-publish MEMBER job (\"your work was published!\") — same\n // `thresholdItemId` eventId as the follower job, different type so `deliveryId` stays distinct.\n // `followed_craft_skill_published`: craft-skill publish → the artisan's followers\n // (`staticRelight` strategy — count 1 forever, static copy, no count shown).\n 'member_content_published',\n 'followed_craft_skill_published',\n // Reporter feedback (DJ ruling 2026-07-06): when a report a user submitted is\n // closed as a REAL case WITH action (ordinary report root flips to `actioned`),\n // the reporter gets one light informational card. Never sent on dismissals.\n // Generic copy only — the card must not reveal the reported user, reason, or\n // remedy (a bad-faith reporter must not be able to probe moderation outcomes).\n 'report_action_taken',\n // Appellant feedback for a content-appeal decision (DJ ruling 2026-07-10 —\n // gap found by the hosted E2E build: reviewContentAppeal decided appeals with\n // NO channel reporting the outcome to the appellant). Fired on BOTH approve\n // and deny. It is the appellant's OWN appeal, so unlike report_action_taken\n // there is no privacy ceiling: the card states the outcome plainly and\n // targets My Uploads, where the resulting upload state lives.\n 'content_appeal_reviewed',\n // Realm shared-file promotion approval gate. TWO canonical types, one per direction of the\n // decision — never one type with a recipient discriminator, because they are different\n // cards on different trays with different dedup lifetimes:\n // - `realm_file_share_requested`: a Work file admin asked to share a file into a Realm →\n // the REALM STEWARD, who decides.\n // - `realm_file_share_resolved`: the pending request is no longer pending → the party who\n // did NOT act. `metadata.resolution` distinguishes `approved` | `declined` (to the\n // recorded REQUESTER) from `withdrawn` (to the STEWARD, whose queue card is now stale).\n // OCCURRENCE IDENTITY for both is the request id, so a re-request after a decline is a new\n // card rather than a relight of the resolved one.\n 'realm_file_share_requested',\n 'realm_file_share_resolved',\n] as const;\n\nexport const NotificationTypeSchema = z.enum(NOTIFICATION_TYPE_VALUES);\nexport type NotificationType = z.infer<typeof NotificationTypeSchema>;\n\n/** Delivery channels. Only `inApp` is implemented at launch; `email`/`push` are\n * reserved for future channel handlers. */\nexport const NOTIFICATION_CHANNEL_VALUES = ['inApp', 'email', 'push'] as const;\nexport const NotificationChannelSchema = z.enum(NOTIFICATION_CHANNEL_VALUES);\nexport type NotificationChannel = z.infer<typeof NotificationChannelSchema>;\n\nexport type NotificationCategory = 'user' | 'admin';\nexport const NotificationCategorySchema = z.enum(['user', 'admin']);\n\nexport interface NotificationTypeCatalogEntry {\n /** Which active collection / audience this type writes to. */\n category: NotificationCategory;\n /** `realtime` writes straight to active; `queued` goes through the batch processor. */\n delivery: 'realtime' | 'queued';\n /** Default channel list applied when a send omits `channels`. All `['inApp']` at launch. */\n defaultChannels: NotificationChannel[];\n}\n\n/**\n * The canonical TTT notification type catalog — the source `TTT_NOTIFICATION_CONFIG`\n * (../notifications) derives every type's category/delivery from. `defaultChannels`\n * is `['inApp']` for every type at launch.\n */\nexport const NOTIFICATION_TYPE_CATALOG: Record<NotificationType, NotificationTypeCatalogEntry> = {\n content_report: { category: 'admin', delivery: 'realtime', defaultChannels: ['inApp'] },\n guild_invite: { category: 'user', delivery: 'queued', defaultChannels: ['inApp'] },\n admin_dispatch_reply: { category: 'user', delivery: 'realtime', defaultChannels: ['inApp'] },\n admin_dispatch_created: { category: 'user', delivery: 'realtime', defaultChannels: ['inApp'] },\n threshold_library_submission: { category: 'admin', delivery: 'queued', defaultChannels: ['inApp'] },\n threshold_library_reviewed: { category: 'user', delivery: 'queued', defaultChannels: ['inApp'] },\n hall_content_change_request_resolved: { category: 'user', delivery: 'queued', defaultChannels: ['inApp'] },\n admin_announcement: { category: 'user', delivery: 'queued', defaultChannels: ['inApp'] },\n followed_content_published: { category: 'user', delivery: 'queued', defaultChannels: ['inApp'] },\n member_content_published: { category: 'user', delivery: 'queued', defaultChannels: ['inApp'] },\n followed_craft_skill_published: { category: 'user', delivery: 'queued', defaultChannels: ['inApp'] },\n report_action_taken: { category: 'user', delivery: 'queued', defaultChannels: ['inApp'] },\n content_appeal_reviewed: { category: 'user', delivery: 'queued', defaultChannels: ['inApp'] },\n realm_file_share_requested: { category: 'user', delivery: 'queued', defaultChannels: ['inApp'] },\n realm_file_share_resolved: { category: 'user', delivery: 'queued', defaultChannels: ['inApp'] },\n};\n\n// ============================================================================\n// PER-TYPE METADATA (discriminated union, keyed by `type`)\n// ============================================================================\n\n/**\n * Typed `metadata` payload for each notification type. The generic package\n * boundary takes `Record<string, unknown>`; the app validates against this\n * before sending so each type's payload is checked like every other callable\n * schema.\n */\nexport const NotificationMetadataByTypeSchema = z.discriminatedUnion('type', [\n z.object({\n type: z.literal('content_report'),\n reportGroupId: reportGroupIdSchema,\n reportedItemType: reportedItemTypeSchema,\n reportedItemId: reportedItemIdSchema,\n }).strict(),\n z.object({\n type: z.literal('guild_invite'),\n workProjectId: workProjectIdSchema,\n guildInviteId: guildInviteIdSchema,\n }).strict(),\n z.object({\n type: z.literal('admin_dispatch_reply'),\n adminDispatchId: adminDispatchIdSchema,\n // Party-generic dispatch: present on workProject-party threads so the card routes\n // to the Work's correspondence surface. Absent on user-party threads (legacy shape).\n partyKind: z.enum(['user', 'workProject']).optional(),\n workProjectId: workProjectIdSchema.optional(),\n }).strict(),\n z.object({\n type: z.literal('admin_dispatch_created'),\n adminDispatchId: adminDispatchIdSchema,\n partyKind: z.enum(['user', 'workProject']),\n // Set on workProject-party threads, so the card routes to the Work.\n workProjectId: workProjectIdSchema.optional(),\n }).strict(),\n z.object({\n type: z.literal('threshold_library_submission'),\n thresholdItemId: thresholdItemIdSchema,\n hallItemId: hallItemIdSchema,\n workProjectId: workProjectIdSchema,\n }).strict(),\n // Author feedback for a review decision. Mirrors what runReviewThresholdItem\n // (ttt-prod) sends: only `needs_revision` is delivered today; `adminNotes` is\n // the reviewer's note, sent as null when the reviewer left none.\n z.object({\n type: z.literal('threshold_library_reviewed'),\n thresholdItemId: thresholdItemIdSchema,\n hallItemId: hallItemIdSchema,\n workProjectId: workProjectIdSchema,\n workProjectType: workProjectTypeSchema,\n itemId: z.string().min(1),\n decision: z.literal('needs_revision'),\n adminNotes: z.string().max(MAX_THRESHOLD_REVIEW_NOTES_LENGTH).nullable(),\n }).strict(),\n // Proposer feedback for a published change-request decision. Mirrors what\n // runReviewHallContentChangeRequest (ttt-prod) sends: `resolutionReason` is\n // required on a deny, optional on an approve — null when absent. The realm\n // grain (R1) sends `workRealmId` with `hallItemId` null; hall grains the\n // reverse.\n z.object({\n type: z.literal('hall_content_change_request_resolved'),\n changeRequestId: changeRequestIdSchema,\n hallItemId: hallItemIdSchema.nullable(),\n workRealmId: z.string().min(1).nullish(),\n workProjectId: workProjectIdSchema,\n decision: z.enum(['approved', 'denied']),\n resolutionReason: z.string().max(MAX_HALL_CHANGE_REQUEST_REASON_LENGTH).nullable(),\n }).strict(),\n z.object({\n type: z.literal('admin_announcement'),\n title: storedTitleSchema,\n message: storedNotificationMessageSchema,\n }).strict(),\n z.object({\n type: z.literal('followed_content_published'),\n workProjectId: workProjectIdSchema,\n workRealmId: workRealmIdSchema.optional(),\n workTitle: storedTitleSchema,\n hallItemId: hallItemIdSchema,\n hallItemTitle: storedTitleSchema,\n hallSubItemType: HallSubItemTypeSchema,\n }).strict(),\n // P7 Hall-publish MEMBER job — same Hall-publication fields as the follower type (it describes\n // the SAME publication to the work's members; the work route + \"your work was published!\" copy\n // are set by the emitter via targetPath/title, not metadata).\n z.object({\n type: z.literal('member_content_published'),\n workProjectId: workProjectIdSchema,\n workRealmId: workRealmIdSchema.optional(),\n workTitle: storedTitleSchema,\n hallItemId: hallItemIdSchema,\n hallItemTitle: storedTitleSchema,\n hallSubItemType: HallSubItemTypeSchema,\n }).strict(),\n // P7 craft-skill publish — points at the artisan whose skills updated. The actor name\n // (\"X uploaded new craft skills\") + the profile/skills route resolve from `artisanUid` at\n // render time (Display Identity Invariant); `staticRelight` shows no count.\n z.object({\n type: z.literal('followed_craft_skill_published'),\n artisanUid: userIdSchema,\n }).strict(),\n // Reporter feedback — metadata is deliberately minimal: `reportId` is the\n // reporter's OWN report-root doc id (deterministic per reporterUid + target,\n // see writeOrdinaryReport), used only as the dedup/aggregation key so a\n // reporter gets at most one card per report they filed. NO fields that\n // identify the reported user/content/remedy may ever be added here.\n z.object({\n type: z.literal('report_action_taken'),\n reportId: reportIdSchema,\n }).strict(),\n // Appellant feedback for a content-appeal decision. `appealId` is the\n // appellant's OWN appeal doc id (the dedup/aggregation key — one card per\n // appeal, a re-decision coalesces); `decision` drives the card copy.\n z.object({\n type: z.literal('content_appeal_reviewed'),\n appealId: appealIdSchema,\n decision: z.enum(['approved', 'denied']),\n }).strict(),\n // Realm shared-file promotion REQUEST → the Realm steward. Ids only: the Realm name, the\n // Work name, the file name, and the requester's display name all resolve at render from\n // these ids (Display Identity Invariant) — a snapshot here would go stale the moment any\n // of them is renamed or moderated.\n z.object({\n type: z.literal('realm_file_share_requested'),\n workRealmId: workRealmIdSchema,\n workProjectId: workProjectIdSchema,\n mediaAssetId: mediaAssetIdSchema,\n workFileId: z.string().min(1),\n // The occurrence/dedup identity — one card per request, forever.\n requestId: realmFileShareRequestIdSchema,\n requestedByUid: userIdSchema,\n }).strict(),\n // Realm shared-file promotion RESOLUTION. `resolution` both drives the card copy AND\n // identifies the audience: `approved`/`declined` go to the recorded requester,\n // `withdrawn` goes to the steward whose pending card is now stale.\n z.object({\n type: z.literal('realm_file_share_resolved'),\n workRealmId: workRealmIdSchema,\n workProjectId: workProjectIdSchema,\n mediaAssetId: mediaAssetIdSchema,\n workFileId: z.string().min(1),\n requestId: realmFileShareRequestIdSchema,\n resolution: z.enum(['approved', 'declined', 'withdrawn']),\n }).strict(),\n]);\nexport type NotificationMetadataByType = z.infer<typeof NotificationMetadataByTypeSchema>;\n\n/**\n * The one check of a notification's `metadata` against its type, for both intake lanes: the\n * reliable lane's delivery rows and the fanout lane's jobs. Metadata never carries the `type`\n * discriminant itself (it would hide the type the notification is sent as). Throws on a mismatch.\n */\nexport function validateNotificationMetadata(\n type: NotificationType,\n metadata: Record<string, unknown>,\n): NotificationMetadataByType {\n if (Object.prototype.hasOwnProperty.call(metadata, 'type')) {\n throw new TypeError('Notification metadata must not carry its own type.');\n }\n return NotificationMetadataByTypeSchema.parse({ ...metadata, type });\n}\n\n// ============================================================================\n// BROADCAST AUDIENCE SELECTOR\n// ============================================================================\n\n/**\n * Admin broadcast audience selector. Stored on a broadcast job; the scheduled\n * fan-out worker resolves a page of it into uids (domain-aware queries live in\n * ttt-prod — the package only ever receives uids).\n */\nexport const BroadcastAudienceSelectorSchema = z.discriminatedUnion('kind', [\n z.object({ kind: z.literal('allActiveUsers') }).strict(),\n z.object({\n kind: z.literal('explicitUids'),\n // The selector's documented audience cap (dedup + serialized-byte enforcement\n // for work/realm snapshots is app-side). Derives from the ONE named constant.\n uids: z.array(userIdSchema).min(1).max(MAX_BROADCAST_EXPLICIT_UIDS),\n }).strict(),\n z.object({\n kind: z.literal('workMembers'),\n workProjectId: workProjectIdSchema,\n }).strict(),\n z.object({\n kind: z.literal('realmMembers'),\n workRealmId: workRealmIdSchema,\n }).strict(),\n z.object({ kind: z.literal('allArtisans') }).strict(),\n]);\nexport type BroadcastAudienceSelector = z.infer<typeof BroadcastAudienceSelectorSchema>;\n\n// ============================================================================\n// CALLABLE INPUT SCHEMAS\n// ============================================================================\n\nexport const CreateNotificationBroadcastInputSchema = z.object({\n // Client-generated idempotency key — the app derives the broadcast eventId\n // deterministically from (actorUid, requestId) so a lost-ack retry is idempotent.\n requestId: z.string().min(1),\n selector: BroadcastAudienceSelectorSchema,\n title: textFieldSchema(BROADCAST_TITLE_INPUT),\n message: textFieldSchema(BROADCAST_MESSAGE_INPUT),\n}).strict();\nexport type CreateNotificationBroadcastInput = z.infer<typeof CreateNotificationBroadcastInputSchema>;\n\n/** Archive scope: a single notification, or the caller's whole category. */\nexport const ArchiveNotificationScopeSchema = z.discriminatedUnion('kind', [\n z.object({ kind: z.literal('single'), notificationId: activeNotificationIdSchema }).strict(),\n z.object({ kind: z.literal('all') }).strict(),\n]);\nexport type ArchiveNotificationScope = z.infer<typeof ArchiveNotificationScopeSchema>;\n\n// No `device` field on the archive input — archive metadata is server-derived (A1).\nexport const ArchiveNotificationInputSchema = z.object({\n category: NotificationCategorySchema,\n scope: ArchiveNotificationScopeSchema,\n}).strict();\nexport type ArchiveNotificationInput = z.infer<typeof ArchiveNotificationInputSchema>;\n\n// Shared admin notifications have no per-admin seen state, so only the personal\n// `user` category can be marked seen.\nexport const MarkNotificationsSeenInputSchema = z.object({\n category: z.literal('user'),\n}).strict();\nexport type MarkNotificationsSeenInput = z.infer<typeof MarkNotificationsSeenInputSchema>;\n\n// ============================================================================\n// OBSERVED-GENERATION CALLABLE INPUT SCHEMAS (P6 tray)\n//\n// These are for the NEW observed-generation callables the P6 notification tray\n// will invoke. The LEGACY schemas above (MarkNotificationsSeenInputSchema /\n// ArchiveNotificationInputSchema) remain intact — the legacy callables still use\n// them.\n// ============================================================================\n\n// Max items per mark-seen call matches a sane notification tray page size.\nconst MARK_SEEN_MAX_ITEMS = 50;\n\n/**\n * A single rendered notification row and the generation the UI observed.\n * `activeId` is the Firestore active-notification document id;\n * `observedActivityGeneration` is the opaque token from that document.\n */\nconst SeenItemSchema = z.object({\n activeId: activeNotificationIdSchema,\n observedActivityGeneration: z.string().min(1),\n}).strict();\n\n/**\n * Input for the new observed-generation mark-seen callable (P6 tray).\n *\n * The UI sends only the rows it actually rendered plus their observed\n * `activityGeneration` tokens. The server sets `seenAt = now` ONLY when the\n * card's current `activityGeneration` matches `observedActivityGeneration`;\n * otherwise it is a no-op for that row (activity arrived after render, or a\n * delete+recreate rotated the token).\n *\n * category is always `'user'` — shared admin notifications have no per-admin\n * seen state.\n */\nexport const MarkNotificationsSeenObservedInputSchema = z.object({\n category: z.literal('user'),\n items: z.array(SeenItemSchema).min(1).max(MARK_SEEN_MAX_ITEMS),\n}).strict();\nexport type MarkNotificationsSeenObservedInput = z.infer<typeof MarkNotificationsSeenObservedInputSchema>;\n\n/**\n * Archive scope for the observed-generation callable.\n *\n * `single` — archive one notification card. Carries `notificationId` (the\n * active-card doc id) and `observedActivityGeneration` (the precondition:\n * the server archives only if the card's current generation matches).\n *\n * `all` — archive every card in the category. The per-card generation\n * precondition is applied server-side per card during bounded-page sweeps;\n * the caller supplies no single generation token here because there is no\n * single observed generation for the whole category. (Design choice: archive-all\n * carries no observedActivityGeneration at the top level; the server reads each\n * card's current generation as its own precondition. This is consistent with the\n * frozen \"mark-all/archive-all run bounded pages with stable cursors until\n * exhausted\" protocol (ttt-prod docs/design/notification-system.md) and the\n * archive-history identity formula\n * which keys each occurrence on requestId independently.)\n */\nexport const ArchiveNotificationObservedScopeSchema = z.discriminatedUnion('kind', [\n z.object({\n kind: z.literal('single'),\n notificationId: activeNotificationIdSchema,\n observedActivityGeneration: z.string().min(1),\n }).strict(),\n z.object({\n kind: z.literal('all'),\n }).strict(),\n]);\nexport type ArchiveNotificationObservedScope = z.infer<typeof ArchiveNotificationObservedScopeSchema>;\n\n/**\n * Input for the observed-generation archive callable (P6 tray).\n *\n * `requestId` is a per-call nonce — the tray mints a fresh uuid on every archive /\n * clear-all click, so it is NOT a replay-stability token (R39). Idempotency is provided\n * by ACTIVE-DOC DELETION: a replay finds the card already gone and no-ops, so an archive\n * never double-applies. The server combines `requestId` with the card's `activeId` to\n * form the deterministic history doc id (`hash('notification-archive', category,\n * audienceScope, requestId:activeId)`), so a single archive can never collide on another\n * card's history doc (R35).\n *\n * `category` scopes which active-notification collection is archived\n * (`activeUserNotifications` vs `activeAdminNotifications`) and forms part of\n * the history doc path.\n */\nexport const ArchiveNotificationObservedInputSchema = z.object({\n requestId: z.string().min(1),\n category: NotificationCategorySchema,\n scope: ArchiveNotificationObservedScopeSchema,\n}).strict();\nexport type ArchiveNotificationObservedInput = z.infer<typeof ArchiveNotificationObservedInputSchema>;\n\n/**\n * The `archiveNotification` answer: how many cards this call archived (0 when a single card was\n * relit after it rendered, so the row stays active), and for an archive-all, `hasMore` when the\n * call's bound stopped it before the category was empty. Non-strict (server → client posture).\n */\nexport const ArchiveNotificationResultSchema = z.object({\n success: z.literal(true),\n archived: z.number().int().nonnegative(),\n hasMore: z.boolean().optional(),\n});\nexport type ArchiveNotificationResult = z.infer<typeof ArchiveNotificationResultSchema>;\n\n// ============================================================================\n// SERVER-OWNED ARCHIVE-ALL JOB (replaces the browser clear-all loop)\n//\n// `enqueueArchiveAll` enqueues ONE durable archive-all job scoped to the tab's\n// category (idempotent per user+category+requestId) and returns { jobId }; the\n// bounded server worker drains that category's active cards each in its own\n// atomic archive+audit txn (per-card observed-generation precondition preserved).\n// `getArchiveAllStatus` is polled by the thin client hook. Per-tab scoping is\n// REQUIRED — a job only ever archives its own category, never all tabs.\n// ============================================================================\n\nexport const EnqueueArchiveAllInputSchema = z.object({\n requestId: z.string().min(1),\n category: NotificationCategorySchema,\n}).strict();\nexport type EnqueueArchiveAllInput = z.infer<typeof EnqueueArchiveAllInputSchema>;\n\nexport const GetArchiveAllStatusInputSchema = z.object({\n jobId: documentIdSegmentSchema,\n}).strict();\nexport type GetArchiveAllStatusInput = z.infer<typeof GetArchiveAllStatusInputSchema>;\n\n// Wire contract for the `resumeFanoutJob` callable — the admin console re-arms a\n// dead-lettered notification fanout job by id. Admin console-invoked, but still a\n// wire contract, so it lives here (callable-validation convention) rather than as a\n// local schema in the functions repo.\nexport const ResumeFanoutJobInputSchema = z.object({\n jobId: notificationFanoutJobIdSchema,\n}).strict();\nexport type ResumeFanoutJobInput = z.infer<typeof ResumeFanoutJobInputSchema>;\n\n// One dead-lettered fanout job in the Ops Repairs inventory (`listDeadLetteredFanoutJobs`, oldest\n// first): the job's own identity, type, and priority, when it parked and why, and how long it has\n// been parked. Server → client posture: non-strict, so the backend may add fields.\nexport const DeadLetteredFanoutJobRowSchema = z.object({\n jobId: notificationFanoutJobIdSchema,\n notificationType: z.string(),\n priority: NotificationFanoutPrioritySchema,\n deadLetteredAt: z.number().nullable(),\n lastError: z.string().nullable(),\n ageMs: z.number().nullable(),\n});\nexport type DeadLetteredFanoutJobRow = z.infer<typeof DeadLetteredFanoutJobRowSchema>;\n\nexport const ListDeadLetteredFanoutJobsResultSchema = z.object({\n jobs: z.array(DeadLetteredFanoutJobRowSchema),\n});\nexport type ListDeadLetteredFanoutJobsResult = z.infer<typeof ListDeadLetteredFanoutJobsResultSchema>;\n\n// The `resumeFanoutJob` re-arm: `resumed: false` with a `reason` when the job was no longer\n// dead-lettered (an idempotent no-op).\nexport const ResumeFanoutJobResultSchema = z.object({\n resumed: z.boolean(),\n reason: z.string().optional(),\n});\nexport type ResumeFanoutJobResult = z.infer<typeof ResumeFanoutJobResultSchema>;\n\n// ============================================================================\n// AUDIT EVENT PAYLOADS (admin-only)\n// ============================================================================\n\n/**\n * Payload of a `notification.broadcastSent` audit event — written when an admin\n * enqueues a broadcast. Actor mode is `adminReview` / `adminOverride`. Records\n * the selector (never a pre-resolved uid list) + the job it created.\n */\nexport interface NotificationBroadcastSentAuditMetadata {\n jobId: string;\n selector: BroadcastAudienceSelector;\n title: string;\n}\n\n/**\n * Payload of a `notification.adminArchived` audit event — written when an admin\n * clears a shared admin notification (the `handledBy` action). Actor mode is\n * `adminReview` / `adminOverride`.\n */\nexport interface NotificationAdminArchivedAuditMetadata {\n scope: 'single' | 'all';\n /** Present for single-archive; absent for a category-wide `all` archive. */\n notificationId?: string;\n handledBy: string;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"notification.js","sourceRoot":"","sources":["../../src/schemas/notification.ts"],"names":[],"mappings":"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","sourcesContent":["// TTT notification contracts.\n//\n// `@ttt-productions/notification-core` is generic — at its package boundary a\n// notification's `metadata` is `Record<string, unknown>`. All TTT notification\n// policy lives here: the canonical type catalog (category / delivery / default\n// channels), the per-type typed `metadata` discriminated union, the broadcast\n// audience selector, and the callable input schemas. There is NO single send\n// chokepoint: ttt-prod has two intake lanes — reliable single/shared occurrences\n// (`writeReliableOccurrenceRow` / `enqueueReliableOccurrence`) and audience fanout\n// (`notificationFanoutJobs` → `processNotificationFanoutJobs`) — which converge on\n// the `notificationDeliveries` ledger, with `materializeDeliveries` as the sole\n// materializer. `validateNotificationMetadata` is the one check of a row's or job's `metadata`\n// against its type, for both lanes.\n//\n// The notification audit-event payload shapes live here too (the `AuditEventType`\n// union members `notification.broadcastSent` / `notification.adminArchived` /\n// `notification.adminArchiveAllRequested` are added in ../types/audit.ts; their actor\n// is always an admin mode — `adminReview` / `adminOverride`).\n\nimport { z } from 'zod';\nimport {\n userIdSchema,\n workProjectIdSchema,\n guildInviteIdSchema,\n adminDispatchIdSchema,\n hallItemIdSchema,\n thresholdItemIdSchema,\n changeRequestIdSchema,\n workProjectTypeSchema,\n notificationFanoutJobIdSchema,\n storedTitleSchema,\n reportGroupIdSchema,\n mediaAssetIdSchema,\n workRealmIdSchema,\n realmFileShareRequestIdSchema,\n documentIdSegmentSchema,\n activeNotificationIdSchema,\n} from './atoms.js';\nimport {\n MAX_THRESHOLD_REVIEW_NOTES_LENGTH,\n MAX_HALL_CHANGE_REQUEST_REASON_LENGTH,\n MAX_NOTIFICATION_MESSAGE_LENGTH,\n MAX_BROADCAST_EXPLICIT_UIDS,\n} from '../constants/business.js';\nimport { BROADCAST_MESSAGE_INPUT, BROADCAST_TITLE_INPUT } from '../constants/text-fields.js';\nimport { HallSubItemTypeSchema } from '../doc-schemas/content.js';\nimport { textFieldSchema } from './text-field.js';\nimport { ReportableItemTypeSchema } from '../doc-schemas/safety/foundation.js';\nimport { NotificationFanoutPrioritySchema } from '../doc-schemas/notification-ledger.js';\n\n// A stored broadcast message an announcement's metadata carries (the typed field is the\n// broadcast input's `BROADCAST_MESSAGE_INPUT`).\nconst storedNotificationMessageSchema = z.string().min(1).max(MAX_NOTIFICATION_MESSAGE_LENGTH);\n// The canonical reportable-item enum — never an open string (ARCH-102).\nconst reportedItemTypeSchema = ReportableItemTypeSchema;\nconst reportedItemIdSchema = documentIdSegmentSchema.max(128);\nconst reportIdSchema = documentIdSegmentSchema;\nconst appealIdSchema = documentIdSegmentSchema;\n\n// ============================================================================\n// TYPE + CHANNEL CATALOG\n// ============================================================================\n\nexport const NOTIFICATION_TYPE_VALUES = [\n 'content_report',\n 'guild_invite',\n 'admin_dispatch_reply',\n // The FIRST message of a thread the admin team started — to the user, or to every active\n // member of the Work. A reply is `admin_dispatch_reply`.\n 'admin_dispatch_created',\n 'threshold_library_submission',\n // Author feedback for a Threshold Library review decision (only needs_revision is\n // delivered today — an approval reaches the author via the publish member fanout).\n 'threshold_library_reviewed',\n // Proposer feedback for a PUBLISHED change-request decision (approve/deny).\n 'hall_content_change_request_resolved',\n 'admin_announcement',\n 'followed_content_published',\n // The two audience-fanout triggers (see ttt-prod docs/design/notification-system.md).\n // `member_content_published`: the Hall-publish MEMBER job (\"your work was published!\") — same\n // `thresholdItemId` eventId as the follower job, different type so `deliveryId` stays distinct.\n // `followed_craft_skill_published`: craft-skill publish → the artisan's followers\n // (`staticRelight` strategy — count 1 forever, static copy, no count shown).\n 'member_content_published',\n 'followed_craft_skill_published',\n // Reporter feedback (DJ ruling 2026-07-06): when a report a user submitted is\n // closed as a REAL case WITH action (ordinary report root flips to `actioned`),\n // the reporter gets one light informational card. Never sent on dismissals.\n // Generic copy only — the card must not reveal the reported user, reason, or\n // remedy (a bad-faith reporter must not be able to probe moderation outcomes).\n 'report_action_taken',\n // Appellant feedback for a content-appeal decision (DJ ruling 2026-07-10 —\n // gap found by the hosted E2E build: reviewContentAppeal decided appeals with\n // NO channel reporting the outcome to the appellant). Fired on BOTH approve\n // and deny. It is the appellant's OWN appeal, so unlike report_action_taken\n // there is no privacy ceiling: the card states the outcome plainly and\n // targets My Uploads, where the resulting upload state lives.\n 'content_appeal_reviewed',\n // Realm shared-file promotion approval gate. TWO canonical types, one per direction of the\n // decision — never one type with a recipient discriminator, because they are different\n // cards on different trays with different dedup lifetimes:\n // - `realm_file_share_requested`: a Work file admin asked to share a file into a Realm →\n // the REALM STEWARD, who decides.\n // - `realm_file_share_resolved`: the pending request is no longer pending → the party who\n // did NOT act. `metadata.resolution` distinguishes `approved` | `declined` (to the\n // recorded REQUESTER) from `withdrawn` (to the STEWARD, whose queue card is now stale).\n // OCCURRENCE IDENTITY for both is the request id, so a re-request after a decline is a new\n // card rather than a relight of the resolved one.\n 'realm_file_share_requested',\n 'realm_file_share_resolved',\n] as const;\n\nexport const NotificationTypeSchema = z.enum(NOTIFICATION_TYPE_VALUES);\nexport type NotificationType = z.infer<typeof NotificationTypeSchema>;\n\n/** Delivery channels. Only `inApp` is implemented at launch; `email`/`push` are\n * reserved for future channel handlers. */\nexport const NOTIFICATION_CHANNEL_VALUES = ['inApp', 'email', 'push'] as const;\nexport const NotificationChannelSchema = z.enum(NOTIFICATION_CHANNEL_VALUES);\nexport type NotificationChannel = z.infer<typeof NotificationChannelSchema>;\n\nexport type NotificationCategory = 'user' | 'admin';\nexport const NotificationCategorySchema = z.enum(['user', 'admin']);\n\nexport interface NotificationTypeCatalogEntry {\n /** Which active collection / audience this type writes to. */\n category: NotificationCategory;\n /** `realtime` writes straight to active; `queued` goes through the batch processor. */\n delivery: 'realtime' | 'queued';\n /** Default channel list applied when a send omits `channels`. All `['inApp']` at launch. */\n defaultChannels: NotificationChannel[];\n}\n\n/**\n * The canonical TTT notification type catalog — the source `TTT_NOTIFICATION_CONFIG`\n * (../notifications) derives every type's category/delivery from. `defaultChannels`\n * is `['inApp']` for every type at launch.\n */\nexport const NOTIFICATION_TYPE_CATALOG: Record<NotificationType, NotificationTypeCatalogEntry> = {\n content_report: { category: 'admin', delivery: 'realtime', defaultChannels: ['inApp'] },\n guild_invite: { category: 'user', delivery: 'queued', defaultChannels: ['inApp'] },\n admin_dispatch_reply: { category: 'user', delivery: 'realtime', defaultChannels: ['inApp'] },\n admin_dispatch_created: { category: 'user', delivery: 'realtime', defaultChannels: ['inApp'] },\n threshold_library_submission: { category: 'admin', delivery: 'queued', defaultChannels: ['inApp'] },\n threshold_library_reviewed: { category: 'user', delivery: 'queued', defaultChannels: ['inApp'] },\n hall_content_change_request_resolved: { category: 'user', delivery: 'queued', defaultChannels: ['inApp'] },\n admin_announcement: { category: 'user', delivery: 'queued', defaultChannels: ['inApp'] },\n followed_content_published: { category: 'user', delivery: 'queued', defaultChannels: ['inApp'] },\n member_content_published: { category: 'user', delivery: 'queued', defaultChannels: ['inApp'] },\n followed_craft_skill_published: { category: 'user', delivery: 'queued', defaultChannels: ['inApp'] },\n report_action_taken: { category: 'user', delivery: 'queued', defaultChannels: ['inApp'] },\n content_appeal_reviewed: { category: 'user', delivery: 'queued', defaultChannels: ['inApp'] },\n realm_file_share_requested: { category: 'user', delivery: 'queued', defaultChannels: ['inApp'] },\n realm_file_share_resolved: { category: 'user', delivery: 'queued', defaultChannels: ['inApp'] },\n};\n\n// ============================================================================\n// PER-TYPE METADATA (discriminated union, keyed by `type`)\n// ============================================================================\n\n/**\n * Typed `metadata` payload for each notification type. The generic package\n * boundary takes `Record<string, unknown>`; the app validates against this\n * before sending so each type's payload is checked like every other callable\n * schema.\n */\nexport const NotificationMetadataByTypeSchema = z.discriminatedUnion('type', [\n z.object({\n type: z.literal('content_report'),\n reportGroupId: reportGroupIdSchema,\n reportedItemType: reportedItemTypeSchema,\n reportedItemId: reportedItemIdSchema,\n }).strict(),\n z.object({\n type: z.literal('guild_invite'),\n workProjectId: workProjectIdSchema,\n guildInviteId: guildInviteIdSchema,\n }).strict(),\n z.object({\n type: z.literal('admin_dispatch_reply'),\n adminDispatchId: adminDispatchIdSchema,\n // Party-generic dispatch: present on workProject-party threads so the card routes\n // to the Work's correspondence surface. Absent on user-party threads (legacy shape).\n partyKind: z.enum(['user', 'workProject']).optional(),\n workProjectId: workProjectIdSchema.optional(),\n }).strict(),\n z.object({\n type: z.literal('admin_dispatch_created'),\n adminDispatchId: adminDispatchIdSchema,\n partyKind: z.enum(['user', 'workProject']),\n // Set on workProject-party threads, so the card routes to the Work.\n workProjectId: workProjectIdSchema.optional(),\n }).strict(),\n z.object({\n type: z.literal('threshold_library_submission'),\n thresholdItemId: thresholdItemIdSchema,\n hallItemId: hallItemIdSchema,\n workProjectId: workProjectIdSchema,\n }).strict(),\n // Author feedback for a review decision. Mirrors what runReviewThresholdItem\n // (ttt-prod) sends: only `needs_revision` is delivered today; `adminNotes` is\n // the reviewer's note, sent as null when the reviewer left none.\n z.object({\n type: z.literal('threshold_library_reviewed'),\n thresholdItemId: thresholdItemIdSchema,\n hallItemId: hallItemIdSchema,\n workProjectId: workProjectIdSchema,\n workProjectType: workProjectTypeSchema,\n itemId: z.string().min(1),\n decision: z.literal('needs_revision'),\n adminNotes: z.string().max(MAX_THRESHOLD_REVIEW_NOTES_LENGTH).nullable(),\n }).strict(),\n // Proposer feedback for a published change-request decision. Mirrors what\n // runReviewHallContentChangeRequest (ttt-prod) sends: `resolutionReason` is\n // required on a deny, optional on an approve — null when absent. The realm\n // grain (R1) sends `workRealmId` with `hallItemId` null; hall grains the\n // reverse.\n z.object({\n type: z.literal('hall_content_change_request_resolved'),\n changeRequestId: changeRequestIdSchema,\n hallItemId: hallItemIdSchema.nullable(),\n workRealmId: z.string().min(1).nullish(),\n workProjectId: workProjectIdSchema,\n decision: z.enum(['approved', 'denied']),\n resolutionReason: z.string().max(MAX_HALL_CHANGE_REQUEST_REASON_LENGTH).nullable(),\n }).strict(),\n z.object({\n type: z.literal('admin_announcement'),\n title: storedTitleSchema,\n message: storedNotificationMessageSchema,\n }).strict(),\n z.object({\n type: z.literal('followed_content_published'),\n workProjectId: workProjectIdSchema,\n workRealmId: workRealmIdSchema.optional(),\n workTitle: storedTitleSchema,\n hallItemId: hallItemIdSchema,\n hallItemTitle: storedTitleSchema,\n hallSubItemType: HallSubItemTypeSchema,\n }).strict(),\n // P7 Hall-publish MEMBER job — same Hall-publication fields as the follower type (it describes\n // the SAME publication to the work's members; the work route + \"your work was published!\" copy\n // are set by the emitter via targetPath/title, not metadata).\n z.object({\n type: z.literal('member_content_published'),\n workProjectId: workProjectIdSchema,\n workRealmId: workRealmIdSchema.optional(),\n workTitle: storedTitleSchema,\n hallItemId: hallItemIdSchema,\n hallItemTitle: storedTitleSchema,\n hallSubItemType: HallSubItemTypeSchema,\n }).strict(),\n // P7 craft-skill publish — points at the artisan whose skills updated. The actor name\n // (\"X uploaded new craft skills\") + the profile/skills route resolve from `artisanUid` at\n // render time (Display Identity Invariant); `staticRelight` shows no count.\n z.object({\n type: z.literal('followed_craft_skill_published'),\n artisanUid: userIdSchema,\n }).strict(),\n // Reporter feedback — metadata is deliberately minimal: `reportId` is the\n // reporter's OWN report-root doc id (deterministic per reporterUid + target,\n // see writeOrdinaryReport), used only as the dedup/aggregation key so a\n // reporter gets at most one card per report they filed. NO fields that\n // identify the reported user/content/remedy may ever be added here.\n z.object({\n type: z.literal('report_action_taken'),\n reportId: reportIdSchema,\n }).strict(),\n // Appellant feedback for a content-appeal decision. `appealId` is the\n // appellant's OWN appeal doc id (the dedup/aggregation key — one card per\n // appeal, a re-decision coalesces); `decision` drives the card copy.\n z.object({\n type: z.literal('content_appeal_reviewed'),\n appealId: appealIdSchema,\n decision: z.enum(['approved', 'denied']),\n }).strict(),\n // Realm shared-file promotion REQUEST → the Realm steward. Ids only: the Realm name, the\n // Work name, the file name, and the requester's display name all resolve at render from\n // these ids (Display Identity Invariant) — a snapshot here would go stale the moment any\n // of them is renamed or moderated.\n z.object({\n type: z.literal('realm_file_share_requested'),\n workRealmId: workRealmIdSchema,\n workProjectId: workProjectIdSchema,\n mediaAssetId: mediaAssetIdSchema,\n workFileId: z.string().min(1),\n // The occurrence/dedup identity — one card per request, forever.\n requestId: realmFileShareRequestIdSchema,\n requestedByUid: userIdSchema,\n }).strict(),\n // Realm shared-file promotion RESOLUTION. `resolution` both drives the card copy AND\n // identifies the audience: `approved`/`declined` go to the recorded requester,\n // `withdrawn` goes to the steward whose pending card is now stale.\n z.object({\n type: z.literal('realm_file_share_resolved'),\n workRealmId: workRealmIdSchema,\n workProjectId: workProjectIdSchema,\n mediaAssetId: mediaAssetIdSchema,\n workFileId: z.string().min(1),\n requestId: realmFileShareRequestIdSchema,\n resolution: z.enum(['approved', 'declined', 'withdrawn']),\n }).strict(),\n]);\nexport type NotificationMetadataByType = z.infer<typeof NotificationMetadataByTypeSchema>;\n\n/**\n * The one check of a notification's `metadata` against its type, for both intake lanes: the\n * reliable lane's delivery rows and the fanout lane's jobs. Metadata never carries the `type`\n * discriminant itself (it would hide the type the notification is sent as). Throws on a mismatch.\n */\nexport function validateNotificationMetadata(\n type: NotificationType,\n metadata: Record<string, unknown>,\n): NotificationMetadataByType {\n if (Object.prototype.hasOwnProperty.call(metadata, 'type')) {\n throw new TypeError('Notification metadata must not carry its own type.');\n }\n return NotificationMetadataByTypeSchema.parse({ ...metadata, type });\n}\n\n// ============================================================================\n// BROADCAST AUDIENCE SELECTOR\n// ============================================================================\n\n/**\n * Admin broadcast audience selector. Stored on a broadcast job; the scheduled\n * fan-out worker resolves a page of it into uids (domain-aware queries live in\n * ttt-prod — the package only ever receives uids).\n */\nexport const BroadcastAudienceSelectorSchema = z.discriminatedUnion('kind', [\n z.object({ kind: z.literal('allActiveUsers') }).strict(),\n z.object({\n kind: z.literal('explicitUids'),\n // The selector's documented audience cap (dedup + serialized-byte enforcement\n // for work/realm snapshots is app-side). Derives from the ONE named constant.\n uids: z.array(userIdSchema).min(1).max(MAX_BROADCAST_EXPLICIT_UIDS),\n }).strict(),\n z.object({\n kind: z.literal('workMembers'),\n workProjectId: workProjectIdSchema,\n }).strict(),\n z.object({\n kind: z.literal('realmMembers'),\n workRealmId: workRealmIdSchema,\n }).strict(),\n z.object({ kind: z.literal('allArtisans') }).strict(),\n]);\nexport type BroadcastAudienceSelector = z.infer<typeof BroadcastAudienceSelectorSchema>;\n\n// ============================================================================\n// CALLABLE INPUT SCHEMAS\n// ============================================================================\n\nexport const CreateNotificationBroadcastInputSchema = z.object({\n // Client-generated idempotency key — the app derives the broadcast eventId\n // deterministically from (actorUid, requestId) so a lost-ack retry is idempotent.\n requestId: z.string().min(1),\n selector: BroadcastAudienceSelectorSchema,\n title: textFieldSchema(BROADCAST_TITLE_INPUT),\n message: textFieldSchema(BROADCAST_MESSAGE_INPUT),\n}).strict();\nexport type CreateNotificationBroadcastInput = z.infer<typeof CreateNotificationBroadcastInputSchema>;\n\n/** Archive scope: a single notification, or the caller's whole category. */\nexport const ArchiveNotificationScopeSchema = z.discriminatedUnion('kind', [\n z.object({ kind: z.literal('single'), notificationId: activeNotificationIdSchema }).strict(),\n z.object({ kind: z.literal('all') }).strict(),\n]);\nexport type ArchiveNotificationScope = z.infer<typeof ArchiveNotificationScopeSchema>;\n\n// No `device` field on the archive input — archive metadata is server-derived (A1).\nexport const ArchiveNotificationInputSchema = z.object({\n category: NotificationCategorySchema,\n scope: ArchiveNotificationScopeSchema,\n}).strict();\nexport type ArchiveNotificationInput = z.infer<typeof ArchiveNotificationInputSchema>;\n\n// Shared admin notifications have no per-admin seen state, so only the personal\n// `user` category can be marked seen.\nexport const MarkNotificationsSeenInputSchema = z.object({\n category: z.literal('user'),\n}).strict();\nexport type MarkNotificationsSeenInput = z.infer<typeof MarkNotificationsSeenInputSchema>;\n\n// ============================================================================\n// OBSERVED-GENERATION CALLABLE INPUT SCHEMAS (P6 tray)\n//\n// These are for the NEW observed-generation callables the P6 notification tray\n// will invoke. The LEGACY schemas above (MarkNotificationsSeenInputSchema /\n// ArchiveNotificationInputSchema) remain intact — the legacy callables still use\n// them.\n// ============================================================================\n\n// Max items per mark-seen call matches a sane notification tray page size.\nconst MARK_SEEN_MAX_ITEMS = 50;\n\n/**\n * A single rendered notification row and the generation the UI observed.\n * `activeId` is the Firestore active-notification document id;\n * `observedActivityGeneration` is the opaque token from that document.\n */\nconst SeenItemSchema = z.object({\n activeId: activeNotificationIdSchema,\n observedActivityGeneration: z.string().min(1),\n}).strict();\n\n/**\n * Input for the new observed-generation mark-seen callable (P6 tray).\n *\n * The UI sends only the rows it actually rendered plus their observed\n * `activityGeneration` tokens. The server sets `seenAt = now` ONLY when the\n * card's current `activityGeneration` matches `observedActivityGeneration`;\n * otherwise it is a no-op for that row (activity arrived after render, or a\n * delete+recreate rotated the token).\n *\n * category is always `'user'` — shared admin notifications have no per-admin\n * seen state.\n */\nexport const MarkNotificationsSeenObservedInputSchema = z.object({\n category: z.literal('user'),\n items: z.array(SeenItemSchema).min(1).max(MARK_SEEN_MAX_ITEMS),\n}).strict();\nexport type MarkNotificationsSeenObservedInput = z.infer<typeof MarkNotificationsSeenObservedInputSchema>;\n\n/**\n * Archive scope for the observed-generation callable.\n *\n * `single` — archive one notification card. Carries `notificationId` (the\n * active-card doc id) and `observedActivityGeneration` (the precondition:\n * the server archives only if the card's current generation matches).\n *\n * `all` — archive every card in the category. The per-card generation\n * precondition is applied server-side per card during bounded-page sweeps;\n * the caller supplies no single generation token here because there is no\n * single observed generation for the whole category. (Design choice: archive-all\n * carries no observedActivityGeneration at the top level; the server reads each\n * card's current generation as its own precondition. This is consistent with the\n * frozen \"mark-all/archive-all run bounded pages with stable cursors until\n * exhausted\" protocol (ttt-prod docs/design/notification-system.md) and the\n * archive-history identity formula\n * which keys each occurrence on requestId independently.)\n */\nexport const ArchiveNotificationObservedScopeSchema = z.discriminatedUnion('kind', [\n z.object({\n kind: z.literal('single'),\n notificationId: activeNotificationIdSchema,\n observedActivityGeneration: z.string().min(1),\n }).strict(),\n z.object({\n kind: z.literal('all'),\n }).strict(),\n]);\nexport type ArchiveNotificationObservedScope = z.infer<typeof ArchiveNotificationObservedScopeSchema>;\n\n/**\n * Input for the observed-generation archive callable (P6 tray).\n *\n * `requestId` is a per-call nonce — the tray mints a fresh uuid on every archive /\n * clear-all click, so it is NOT a replay-stability token (R39). Idempotency is provided\n * by ACTIVE-DOC DELETION: a replay finds the card already gone and no-ops, so an archive\n * never double-applies. The server combines `requestId` with the card's `activeId` to\n * form the deterministic history doc id (`hash('notification-archive', category,\n * audienceScope, requestId:activeId)`), so a single archive can never collide on another\n * card's history doc (R35).\n *\n * `category` scopes which active-notification collection is archived\n * (`activeUserNotifications` vs `activeAdminNotifications`) and forms part of\n * the history doc path.\n */\nexport const ArchiveNotificationObservedInputSchema = z.object({\n requestId: z.string().min(1),\n category: NotificationCategorySchema,\n scope: ArchiveNotificationObservedScopeSchema,\n}).strict();\nexport type ArchiveNotificationObservedInput = z.infer<typeof ArchiveNotificationObservedInputSchema>;\n\n/**\n * The `archiveNotification` answer: how many cards this call archived (0 when a single card was\n * relit after it rendered, so the row stays active), and for an archive-all, `hasMore` when the\n * call's bound stopped it before the category was empty. Non-strict (server → client posture).\n */\nexport const ArchiveNotificationResultSchema = z.object({\n success: z.literal(true),\n archived: z.number().int().nonnegative(),\n hasMore: z.boolean().optional(),\n});\nexport type ArchiveNotificationResult = z.infer<typeof ArchiveNotificationResultSchema>;\n\n// ============================================================================\n// SERVER-OWNED ARCHIVE-ALL JOB (replaces the browser clear-all loop)\n//\n// `enqueueArchiveAll` enqueues ONE durable archive-all job scoped to the tab's\n// category (idempotent per user+category+requestId) and returns { jobId }; the\n// bounded server worker drains that category's active cards each in its own\n// atomic archive+audit txn (per-card observed-generation precondition preserved).\n// `getArchiveAllStatus` is polled by the thin client hook. Per-tab scoping is\n// REQUIRED — a job only ever archives its own category, never all tabs.\n// ============================================================================\n\nexport const EnqueueArchiveAllInputSchema = z.object({\n requestId: z.string().min(1),\n category: NotificationCategorySchema,\n}).strict();\nexport type EnqueueArchiveAllInput = z.infer<typeof EnqueueArchiveAllInputSchema>;\n\nexport const GetArchiveAllStatusInputSchema = z.object({\n jobId: documentIdSegmentSchema,\n}).strict();\nexport type GetArchiveAllStatusInput = z.infer<typeof GetArchiveAllStatusInputSchema>;\n\n// Wire contract for the `resumeFanoutJob` callable — the admin console re-arms a\n// dead-lettered notification fanout job by id. Admin console-invoked, but still a\n// wire contract, so it lives here (callable-validation convention) rather than as a\n// local schema in the functions repo.\nexport const ResumeFanoutJobInputSchema = z.object({\n jobId: notificationFanoutJobIdSchema,\n}).strict();\nexport type ResumeFanoutJobInput = z.infer<typeof ResumeFanoutJobInputSchema>;\n\n// One dead-lettered fanout job in the Ops Repairs inventory (`listDeadLetteredFanoutJobs`, oldest\n// first): the job's own identity, type, and priority, when it parked and why, and how long it has\n// been parked. Server → client posture: non-strict, so the backend may add fields.\nexport const DeadLetteredFanoutJobRowSchema = z.object({\n jobId: notificationFanoutJobIdSchema,\n notificationType: z.string(),\n priority: NotificationFanoutPrioritySchema,\n deadLetteredAt: z.number().nullable(),\n lastError: z.string().nullable(),\n ageMs: z.number().nullable(),\n});\nexport type DeadLetteredFanoutJobRow = z.infer<typeof DeadLetteredFanoutJobRowSchema>;\n\nexport const ListDeadLetteredFanoutJobsResultSchema = z.object({\n jobs: z.array(DeadLetteredFanoutJobRowSchema),\n});\nexport type ListDeadLetteredFanoutJobsResult = z.infer<typeof ListDeadLetteredFanoutJobsResultSchema>;\n\n// The `resumeFanoutJob` re-arm: `resumed: false` with a `reason` when the job was no longer\n// dead-lettered (an idempotent no-op).\nexport const ResumeFanoutJobResultSchema = z.object({\n resumed: z.boolean(),\n reason: z.string().optional(),\n});\nexport type ResumeFanoutJobResult = z.infer<typeof ResumeFanoutJobResultSchema>;\n\n// ============================================================================\n// AUDIT EVENT PAYLOADS (admin-only)\n// ============================================================================\n\n/**\n * Payload of a `notification.broadcastSent` audit event — written when an admin\n * enqueues a broadcast. Actor mode is `adminReview` / `adminOverride`. Records\n * the selector (never a pre-resolved uid list) + the job it created.\n */\nexport interface NotificationBroadcastSentAuditMetadata {\n jobId: string;\n selector: BroadcastAudienceSelector;\n title: string;\n}\n\n/**\n * Payload of a `notification.adminArchived` audit event — written when an admin\n * clears a shared admin notification (the `handledBy` action). Actor mode is\n * `adminReview` / `adminOverride`.\n */\nexport interface NotificationAdminArchivedAuditMetadata {\n scope: 'single' | 'all';\n /** Present for single-archive; absent for a category-wide `all` archive. */\n notificationId?: string;\n handledBy: string;\n}\n\n/**\n * Payload of a `notification.adminArchiveAllRequested` audit event — written when an\n * admin enqueues an admin-category archive-all job, in the same commit as the job. It\n * is the event that carries the request's origin: the worker's per-card\n * `notification.adminArchived` events run after the request ended and record none.\n */\nexport interface NotificationAdminArchiveAllRequestedAuditMetadata {\n jobId: string;\n requestId: string;\n}\n"]}
|
package/dist/schemas/safety.d.ts
CHANGED
|
@@ -169,7 +169,6 @@ export declare const ChildSafetyCaseConsoleRowSchema: z.ZodObject<{
|
|
|
169
169
|
notRequired: "notRequired";
|
|
170
170
|
correctedNoApparentViolation: "correctedNoApparentViolation";
|
|
171
171
|
}>;
|
|
172
|
-
reviewDueAt: z.ZodNumber;
|
|
173
172
|
actualKnowledgeAt: z.ZodOptional<z.ZodNumber>;
|
|
174
173
|
reportState: z.ZodOptional<z.ZodEnum<{
|
|
175
174
|
completed: "completed";
|
|
@@ -190,7 +189,6 @@ export declare const ChildSafetyCaseConsoleRowSchema: z.ZodObject<{
|
|
|
190
189
|
caseId: z.ZodOptional<z.ZodString>;
|
|
191
190
|
requestId: z.ZodOptional<z.ZodString>;
|
|
192
191
|
monitorKind: z.ZodEnum<{
|
|
193
|
-
reviewDue: "reviewDue";
|
|
194
192
|
photoDnaContract: "photoDnaContract";
|
|
195
193
|
actualKnowledgeUnreported: "actualKnowledgeUnreported";
|
|
196
194
|
ncmecRetry: "ncmecRetry";
|
|
@@ -396,7 +394,6 @@ export declare const NciiCaseConsoleRowSchema: z.ZodObject<{
|
|
|
396
394
|
caseId: z.ZodOptional<z.ZodString>;
|
|
397
395
|
requestId: z.ZodOptional<z.ZodString>;
|
|
398
396
|
monitorKind: z.ZodEnum<{
|
|
399
|
-
reviewDue: "reviewDue";
|
|
400
397
|
photoDnaContract: "photoDnaContract";
|
|
401
398
|
actualKnowledgeUnreported: "actualKnowledgeUnreported";
|
|
402
399
|
ncmecRetry: "ncmecRetry";
|
|
@@ -491,7 +488,6 @@ export declare const TakeItDownRequestConsoleRowSchema: z.ZodObject<{
|
|
|
491
488
|
caseId: z.ZodOptional<z.ZodString>;
|
|
492
489
|
requestId: z.ZodOptional<z.ZodString>;
|
|
493
490
|
monitorKind: z.ZodEnum<{
|
|
494
|
-
reviewDue: "reviewDue";
|
|
495
491
|
photoDnaContract: "photoDnaContract";
|
|
496
492
|
actualKnowledgeUnreported: "actualKnowledgeUnreported";
|
|
497
493
|
ncmecRetry: "ncmecRetry";
|
|
@@ -541,7 +537,6 @@ export declare const SafetyCaseConsoleUrgentEntrySchema: z.ZodObject<{
|
|
|
541
537
|
caseId: z.ZodOptional<z.ZodString>;
|
|
542
538
|
requestId: z.ZodOptional<z.ZodString>;
|
|
543
539
|
monitorKind: z.ZodEnum<{
|
|
544
|
-
reviewDue: "reviewDue";
|
|
545
540
|
photoDnaContract: "photoDnaContract";
|
|
546
541
|
actualKnowledgeUnreported: "actualKnowledgeUnreported";
|
|
547
542
|
ncmecRetry: "ncmecRetry";
|
|
@@ -630,7 +625,6 @@ export declare const GetSafetyCaseConsoleResultSchema: z.ZodObject<{
|
|
|
630
625
|
notRequired: "notRequired";
|
|
631
626
|
correctedNoApparentViolation: "correctedNoApparentViolation";
|
|
632
627
|
}>;
|
|
633
|
-
reviewDueAt: z.ZodNumber;
|
|
634
628
|
actualKnowledgeAt: z.ZodOptional<z.ZodNumber>;
|
|
635
629
|
reportState: z.ZodOptional<z.ZodEnum<{
|
|
636
630
|
completed: "completed";
|
|
@@ -651,7 +645,6 @@ export declare const GetSafetyCaseConsoleResultSchema: z.ZodObject<{
|
|
|
651
645
|
caseId: z.ZodOptional<z.ZodString>;
|
|
652
646
|
requestId: z.ZodOptional<z.ZodString>;
|
|
653
647
|
monitorKind: z.ZodEnum<{
|
|
654
|
-
reviewDue: "reviewDue";
|
|
655
648
|
photoDnaContract: "photoDnaContract";
|
|
656
649
|
actualKnowledgeUnreported: "actualKnowledgeUnreported";
|
|
657
650
|
ncmecRetry: "ncmecRetry";
|
|
@@ -855,7 +848,6 @@ export declare const GetSafetyCaseConsoleResultSchema: z.ZodObject<{
|
|
|
855
848
|
caseId: z.ZodOptional<z.ZodString>;
|
|
856
849
|
requestId: z.ZodOptional<z.ZodString>;
|
|
857
850
|
monitorKind: z.ZodEnum<{
|
|
858
|
-
reviewDue: "reviewDue";
|
|
859
851
|
photoDnaContract: "photoDnaContract";
|
|
860
852
|
actualKnowledgeUnreported: "actualKnowledgeUnreported";
|
|
861
853
|
ncmecRetry: "ncmecRetry";
|
|
@@ -945,7 +937,6 @@ export declare const GetSafetyCaseConsoleResultSchema: z.ZodObject<{
|
|
|
945
937
|
caseId: z.ZodOptional<z.ZodString>;
|
|
946
938
|
requestId: z.ZodOptional<z.ZodString>;
|
|
947
939
|
monitorKind: z.ZodEnum<{
|
|
948
|
-
reviewDue: "reviewDue";
|
|
949
940
|
photoDnaContract: "photoDnaContract";
|
|
950
941
|
actualKnowledgeUnreported: "actualKnowledgeUnreported";
|
|
951
942
|
ncmecRetry: "ncmecRetry";
|
|
@@ -1009,7 +1000,6 @@ export declare const GetSafetyCaseConsoleResultSchema: z.ZodObject<{
|
|
|
1009
1000
|
caseId: z.ZodOptional<z.ZodString>;
|
|
1010
1001
|
requestId: z.ZodOptional<z.ZodString>;
|
|
1011
1002
|
monitorKind: z.ZodEnum<{
|
|
1012
|
-
reviewDue: "reviewDue";
|
|
1013
1003
|
photoDnaContract: "photoDnaContract";
|
|
1014
1004
|
actualKnowledgeUnreported: "actualKnowledgeUnreported";
|
|
1015
1005
|
ncmecRetry: "ncmecRetry";
|
|
@@ -1105,7 +1095,6 @@ export declare const SafetyCaseConsoleRowChangeSchema: z.ZodDiscriminatedUnion<[
|
|
|
1105
1095
|
notRequired: "notRequired";
|
|
1106
1096
|
correctedNoApparentViolation: "correctedNoApparentViolation";
|
|
1107
1097
|
}>;
|
|
1108
|
-
reviewDueAt: z.ZodNumber;
|
|
1109
1098
|
actualKnowledgeAt: z.ZodOptional<z.ZodNumber>;
|
|
1110
1099
|
reportState: z.ZodOptional<z.ZodEnum<{
|
|
1111
1100
|
completed: "completed";
|
|
@@ -1126,7 +1115,6 @@ export declare const SafetyCaseConsoleRowChangeSchema: z.ZodDiscriminatedUnion<[
|
|
|
1126
1115
|
caseId: z.ZodOptional<z.ZodString>;
|
|
1127
1116
|
requestId: z.ZodOptional<z.ZodString>;
|
|
1128
1117
|
monitorKind: z.ZodEnum<{
|
|
1129
|
-
reviewDue: "reviewDue";
|
|
1130
1118
|
photoDnaContract: "photoDnaContract";
|
|
1131
1119
|
actualKnowledgeUnreported: "actualKnowledgeUnreported";
|
|
1132
1120
|
ncmecRetry: "ncmecRetry";
|
|
@@ -1333,7 +1321,6 @@ export declare const SafetyCaseConsoleRowChangeSchema: z.ZodDiscriminatedUnion<[
|
|
|
1333
1321
|
caseId: z.ZodOptional<z.ZodString>;
|
|
1334
1322
|
requestId: z.ZodOptional<z.ZodString>;
|
|
1335
1323
|
monitorKind: z.ZodEnum<{
|
|
1336
|
-
reviewDue: "reviewDue";
|
|
1337
1324
|
photoDnaContract: "photoDnaContract";
|
|
1338
1325
|
actualKnowledgeUnreported: "actualKnowledgeUnreported";
|
|
1339
1326
|
ncmecRetry: "ncmecRetry";
|
|
@@ -1426,7 +1413,6 @@ export declare const SafetyCaseConsoleRowChangeSchema: z.ZodDiscriminatedUnion<[
|
|
|
1426
1413
|
caseId: z.ZodOptional<z.ZodString>;
|
|
1427
1414
|
requestId: z.ZodOptional<z.ZodString>;
|
|
1428
1415
|
monitorKind: z.ZodEnum<{
|
|
1429
|
-
reviewDue: "reviewDue";
|
|
1430
1416
|
photoDnaContract: "photoDnaContract";
|
|
1431
1417
|
actualKnowledgeUnreported: "actualKnowledgeUnreported";
|
|
1432
1418
|
ncmecRetry: "ncmecRetry";
|
|
@@ -1522,7 +1508,6 @@ export declare const SafetyCaseConsolePatchSchema: z.ZodObject<{
|
|
|
1522
1508
|
notRequired: "notRequired";
|
|
1523
1509
|
correctedNoApparentViolation: "correctedNoApparentViolation";
|
|
1524
1510
|
}>;
|
|
1525
|
-
reviewDueAt: z.ZodNumber;
|
|
1526
1511
|
actualKnowledgeAt: z.ZodOptional<z.ZodNumber>;
|
|
1527
1512
|
reportState: z.ZodOptional<z.ZodEnum<{
|
|
1528
1513
|
completed: "completed";
|
|
@@ -1543,7 +1528,6 @@ export declare const SafetyCaseConsolePatchSchema: z.ZodObject<{
|
|
|
1543
1528
|
caseId: z.ZodOptional<z.ZodString>;
|
|
1544
1529
|
requestId: z.ZodOptional<z.ZodString>;
|
|
1545
1530
|
monitorKind: z.ZodEnum<{
|
|
1546
|
-
reviewDue: "reviewDue";
|
|
1547
1531
|
photoDnaContract: "photoDnaContract";
|
|
1548
1532
|
actualKnowledgeUnreported: "actualKnowledgeUnreported";
|
|
1549
1533
|
ncmecRetry: "ncmecRetry";
|
|
@@ -1750,7 +1734,6 @@ export declare const SafetyCaseConsolePatchSchema: z.ZodObject<{
|
|
|
1750
1734
|
caseId: z.ZodOptional<z.ZodString>;
|
|
1751
1735
|
requestId: z.ZodOptional<z.ZodString>;
|
|
1752
1736
|
monitorKind: z.ZodEnum<{
|
|
1753
|
-
reviewDue: "reviewDue";
|
|
1754
1737
|
photoDnaContract: "photoDnaContract";
|
|
1755
1738
|
actualKnowledgeUnreported: "actualKnowledgeUnreported";
|
|
1756
1739
|
ncmecRetry: "ncmecRetry";
|
|
@@ -1843,7 +1826,6 @@ export declare const SafetyCaseConsolePatchSchema: z.ZodObject<{
|
|
|
1843
1826
|
caseId: z.ZodOptional<z.ZodString>;
|
|
1844
1827
|
requestId: z.ZodOptional<z.ZodString>;
|
|
1845
1828
|
monitorKind: z.ZodEnum<{
|
|
1846
|
-
reviewDue: "reviewDue";
|
|
1847
1829
|
photoDnaContract: "photoDnaContract";
|
|
1848
1830
|
actualKnowledgeUnreported: "actualKnowledgeUnreported";
|
|
1849
1831
|
ncmecRetry: "ncmecRetry";
|
|
@@ -1887,7 +1869,6 @@ export declare const SafetyCaseConsolePatchSchema: z.ZodObject<{
|
|
|
1887
1869
|
caseId: z.ZodOptional<z.ZodString>;
|
|
1888
1870
|
requestId: z.ZodOptional<z.ZodString>;
|
|
1889
1871
|
monitorKind: z.ZodEnum<{
|
|
1890
|
-
reviewDue: "reviewDue";
|
|
1891
1872
|
photoDnaContract: "photoDnaContract";
|
|
1892
1873
|
actualKnowledgeUnreported: "actualKnowledgeUnreported";
|
|
1893
1874
|
ncmecRetry: "ncmecRetry";
|
|
@@ -1991,7 +1972,6 @@ export declare const DecideTakeItDownValidityResultSchema: z.ZodObject<{
|
|
|
1991
1972
|
notRequired: "notRequired";
|
|
1992
1973
|
correctedNoApparentViolation: "correctedNoApparentViolation";
|
|
1993
1974
|
}>;
|
|
1994
|
-
reviewDueAt: z.ZodNumber;
|
|
1995
1975
|
actualKnowledgeAt: z.ZodOptional<z.ZodNumber>;
|
|
1996
1976
|
reportState: z.ZodOptional<z.ZodEnum<{
|
|
1997
1977
|
completed: "completed";
|
|
@@ -2012,7 +1992,6 @@ export declare const DecideTakeItDownValidityResultSchema: z.ZodObject<{
|
|
|
2012
1992
|
caseId: z.ZodOptional<z.ZodString>;
|
|
2013
1993
|
requestId: z.ZodOptional<z.ZodString>;
|
|
2014
1994
|
monitorKind: z.ZodEnum<{
|
|
2015
|
-
reviewDue: "reviewDue";
|
|
2016
1995
|
photoDnaContract: "photoDnaContract";
|
|
2017
1996
|
actualKnowledgeUnreported: "actualKnowledgeUnreported";
|
|
2018
1997
|
ncmecRetry: "ncmecRetry";
|
|
@@ -2219,7 +2198,6 @@ export declare const DecideTakeItDownValidityResultSchema: z.ZodObject<{
|
|
|
2219
2198
|
caseId: z.ZodOptional<z.ZodString>;
|
|
2220
2199
|
requestId: z.ZodOptional<z.ZodString>;
|
|
2221
2200
|
monitorKind: z.ZodEnum<{
|
|
2222
|
-
reviewDue: "reviewDue";
|
|
2223
2201
|
photoDnaContract: "photoDnaContract";
|
|
2224
2202
|
actualKnowledgeUnreported: "actualKnowledgeUnreported";
|
|
2225
2203
|
ncmecRetry: "ncmecRetry";
|
|
@@ -2312,7 +2290,6 @@ export declare const DecideTakeItDownValidityResultSchema: z.ZodObject<{
|
|
|
2312
2290
|
caseId: z.ZodOptional<z.ZodString>;
|
|
2313
2291
|
requestId: z.ZodOptional<z.ZodString>;
|
|
2314
2292
|
monitorKind: z.ZodEnum<{
|
|
2315
|
-
reviewDue: "reviewDue";
|
|
2316
2293
|
photoDnaContract: "photoDnaContract";
|
|
2317
2294
|
actualKnowledgeUnreported: "actualKnowledgeUnreported";
|
|
2318
2295
|
ncmecRetry: "ncmecRetry";
|
|
@@ -2356,7 +2333,6 @@ export declare const DecideTakeItDownValidityResultSchema: z.ZodObject<{
|
|
|
2356
2333
|
caseId: z.ZodOptional<z.ZodString>;
|
|
2357
2334
|
requestId: z.ZodOptional<z.ZodString>;
|
|
2358
2335
|
monitorKind: z.ZodEnum<{
|
|
2359
|
-
reviewDue: "reviewDue";
|
|
2360
2336
|
photoDnaContract: "photoDnaContract";
|
|
2361
2337
|
actualKnowledgeUnreported: "actualKnowledgeUnreported";
|
|
2362
2338
|
ncmecRetry: "ncmecRetry";
|
|
@@ -2467,7 +2443,6 @@ export declare const SetNciiMinorAssessmentResultSchema: z.ZodObject<{
|
|
|
2467
2443
|
notRequired: "notRequired";
|
|
2468
2444
|
correctedNoApparentViolation: "correctedNoApparentViolation";
|
|
2469
2445
|
}>;
|
|
2470
|
-
reviewDueAt: z.ZodNumber;
|
|
2471
2446
|
actualKnowledgeAt: z.ZodOptional<z.ZodNumber>;
|
|
2472
2447
|
reportState: z.ZodOptional<z.ZodEnum<{
|
|
2473
2448
|
completed: "completed";
|
|
@@ -2488,7 +2463,6 @@ export declare const SetNciiMinorAssessmentResultSchema: z.ZodObject<{
|
|
|
2488
2463
|
caseId: z.ZodOptional<z.ZodString>;
|
|
2489
2464
|
requestId: z.ZodOptional<z.ZodString>;
|
|
2490
2465
|
monitorKind: z.ZodEnum<{
|
|
2491
|
-
reviewDue: "reviewDue";
|
|
2492
2466
|
photoDnaContract: "photoDnaContract";
|
|
2493
2467
|
actualKnowledgeUnreported: "actualKnowledgeUnreported";
|
|
2494
2468
|
ncmecRetry: "ncmecRetry";
|
|
@@ -2695,7 +2669,6 @@ export declare const SetNciiMinorAssessmentResultSchema: z.ZodObject<{
|
|
|
2695
2669
|
caseId: z.ZodOptional<z.ZodString>;
|
|
2696
2670
|
requestId: z.ZodOptional<z.ZodString>;
|
|
2697
2671
|
monitorKind: z.ZodEnum<{
|
|
2698
|
-
reviewDue: "reviewDue";
|
|
2699
2672
|
photoDnaContract: "photoDnaContract";
|
|
2700
2673
|
actualKnowledgeUnreported: "actualKnowledgeUnreported";
|
|
2701
2674
|
ncmecRetry: "ncmecRetry";
|
|
@@ -2788,7 +2761,6 @@ export declare const SetNciiMinorAssessmentResultSchema: z.ZodObject<{
|
|
|
2788
2761
|
caseId: z.ZodOptional<z.ZodString>;
|
|
2789
2762
|
requestId: z.ZodOptional<z.ZodString>;
|
|
2790
2763
|
monitorKind: z.ZodEnum<{
|
|
2791
|
-
reviewDue: "reviewDue";
|
|
2792
2764
|
photoDnaContract: "photoDnaContract";
|
|
2793
2765
|
actualKnowledgeUnreported: "actualKnowledgeUnreported";
|
|
2794
2766
|
ncmecRetry: "ncmecRetry";
|
|
@@ -2832,7 +2804,6 @@ export declare const SetNciiMinorAssessmentResultSchema: z.ZodObject<{
|
|
|
2832
2804
|
caseId: z.ZodOptional<z.ZodString>;
|
|
2833
2805
|
requestId: z.ZodOptional<z.ZodString>;
|
|
2834
2806
|
monitorKind: z.ZodEnum<{
|
|
2835
|
-
reviewDue: "reviewDue";
|
|
2836
2807
|
photoDnaContract: "photoDnaContract";
|
|
2837
2808
|
actualKnowledgeUnreported: "actualKnowledgeUnreported";
|
|
2838
2809
|
ncmecRetry: "ncmecRetry";
|
|
@@ -2930,7 +2901,6 @@ export declare const RefetchProtectedCaseContextResultSchema: z.ZodObject<{
|
|
|
2930
2901
|
notRequired: "notRequired";
|
|
2931
2902
|
correctedNoApparentViolation: "correctedNoApparentViolation";
|
|
2932
2903
|
}>;
|
|
2933
|
-
reviewDueAt: z.ZodNumber;
|
|
2934
2904
|
actualKnowledgeAt: z.ZodOptional<z.ZodNumber>;
|
|
2935
2905
|
reportState: z.ZodOptional<z.ZodEnum<{
|
|
2936
2906
|
completed: "completed";
|
|
@@ -2951,7 +2921,6 @@ export declare const RefetchProtectedCaseContextResultSchema: z.ZodObject<{
|
|
|
2951
2921
|
caseId: z.ZodOptional<z.ZodString>;
|
|
2952
2922
|
requestId: z.ZodOptional<z.ZodString>;
|
|
2953
2923
|
monitorKind: z.ZodEnum<{
|
|
2954
|
-
reviewDue: "reviewDue";
|
|
2955
2924
|
photoDnaContract: "photoDnaContract";
|
|
2956
2925
|
actualKnowledgeUnreported: "actualKnowledgeUnreported";
|
|
2957
2926
|
ncmecRetry: "ncmecRetry";
|
|
@@ -3158,7 +3127,6 @@ export declare const RefetchProtectedCaseContextResultSchema: z.ZodObject<{
|
|
|
3158
3127
|
caseId: z.ZodOptional<z.ZodString>;
|
|
3159
3128
|
requestId: z.ZodOptional<z.ZodString>;
|
|
3160
3129
|
monitorKind: z.ZodEnum<{
|
|
3161
|
-
reviewDue: "reviewDue";
|
|
3162
3130
|
photoDnaContract: "photoDnaContract";
|
|
3163
3131
|
actualKnowledgeUnreported: "actualKnowledgeUnreported";
|
|
3164
3132
|
ncmecRetry: "ncmecRetry";
|
|
@@ -3251,7 +3219,6 @@ export declare const RefetchProtectedCaseContextResultSchema: z.ZodObject<{
|
|
|
3251
3219
|
caseId: z.ZodOptional<z.ZodString>;
|
|
3252
3220
|
requestId: z.ZodOptional<z.ZodString>;
|
|
3253
3221
|
monitorKind: z.ZodEnum<{
|
|
3254
|
-
reviewDue: "reviewDue";
|
|
3255
3222
|
photoDnaContract: "photoDnaContract";
|
|
3256
3223
|
actualKnowledgeUnreported: "actualKnowledgeUnreported";
|
|
3257
3224
|
ncmecRetry: "ncmecRetry";
|
|
@@ -3295,7 +3262,6 @@ export declare const RefetchProtectedCaseContextResultSchema: z.ZodObject<{
|
|
|
3295
3262
|
caseId: z.ZodOptional<z.ZodString>;
|
|
3296
3263
|
requestId: z.ZodOptional<z.ZodString>;
|
|
3297
3264
|
monitorKind: z.ZodEnum<{
|
|
3298
|
-
reviewDue: "reviewDue";
|
|
3299
3265
|
photoDnaContract: "photoDnaContract";
|
|
3300
3266
|
actualKnowledgeUnreported: "actualKnowledgeUnreported";
|
|
3301
3267
|
ncmecRetry: "ncmecRetry";
|
|
@@ -3393,7 +3359,6 @@ export declare const MarkNcmecPortalCompleteResultSchema: z.ZodObject<{
|
|
|
3393
3359
|
notRequired: "notRequired";
|
|
3394
3360
|
correctedNoApparentViolation: "correctedNoApparentViolation";
|
|
3395
3361
|
}>;
|
|
3396
|
-
reviewDueAt: z.ZodNumber;
|
|
3397
3362
|
actualKnowledgeAt: z.ZodOptional<z.ZodNumber>;
|
|
3398
3363
|
reportState: z.ZodOptional<z.ZodEnum<{
|
|
3399
3364
|
completed: "completed";
|
|
@@ -3414,7 +3379,6 @@ export declare const MarkNcmecPortalCompleteResultSchema: z.ZodObject<{
|
|
|
3414
3379
|
caseId: z.ZodOptional<z.ZodString>;
|
|
3415
3380
|
requestId: z.ZodOptional<z.ZodString>;
|
|
3416
3381
|
monitorKind: z.ZodEnum<{
|
|
3417
|
-
reviewDue: "reviewDue";
|
|
3418
3382
|
photoDnaContract: "photoDnaContract";
|
|
3419
3383
|
actualKnowledgeUnreported: "actualKnowledgeUnreported";
|
|
3420
3384
|
ncmecRetry: "ncmecRetry";
|
|
@@ -3621,7 +3585,6 @@ export declare const MarkNcmecPortalCompleteResultSchema: z.ZodObject<{
|
|
|
3621
3585
|
caseId: z.ZodOptional<z.ZodString>;
|
|
3622
3586
|
requestId: z.ZodOptional<z.ZodString>;
|
|
3623
3587
|
monitorKind: z.ZodEnum<{
|
|
3624
|
-
reviewDue: "reviewDue";
|
|
3625
3588
|
photoDnaContract: "photoDnaContract";
|
|
3626
3589
|
actualKnowledgeUnreported: "actualKnowledgeUnreported";
|
|
3627
3590
|
ncmecRetry: "ncmecRetry";
|
|
@@ -3714,7 +3677,6 @@ export declare const MarkNcmecPortalCompleteResultSchema: z.ZodObject<{
|
|
|
3714
3677
|
caseId: z.ZodOptional<z.ZodString>;
|
|
3715
3678
|
requestId: z.ZodOptional<z.ZodString>;
|
|
3716
3679
|
monitorKind: z.ZodEnum<{
|
|
3717
|
-
reviewDue: "reviewDue";
|
|
3718
3680
|
photoDnaContract: "photoDnaContract";
|
|
3719
3681
|
actualKnowledgeUnreported: "actualKnowledgeUnreported";
|
|
3720
3682
|
ncmecRetry: "ncmecRetry";
|
|
@@ -3758,7 +3720,6 @@ export declare const MarkNcmecPortalCompleteResultSchema: z.ZodObject<{
|
|
|
3758
3720
|
caseId: z.ZodOptional<z.ZodString>;
|
|
3759
3721
|
requestId: z.ZodOptional<z.ZodString>;
|
|
3760
3722
|
monitorKind: z.ZodEnum<{
|
|
3761
|
-
reviewDue: "reviewDue";
|
|
3762
3723
|
photoDnaContract: "photoDnaContract";
|
|
3763
3724
|
actualKnowledgeUnreported: "actualKnowledgeUnreported";
|
|
3764
3725
|
ncmecRetry: "ncmecRetry";
|
|
@@ -3855,7 +3816,6 @@ export declare const ReopenSafetyCaseResultSchema: z.ZodObject<{
|
|
|
3855
3816
|
notRequired: "notRequired";
|
|
3856
3817
|
correctedNoApparentViolation: "correctedNoApparentViolation";
|
|
3857
3818
|
}>;
|
|
3858
|
-
reviewDueAt: z.ZodNumber;
|
|
3859
3819
|
actualKnowledgeAt: z.ZodOptional<z.ZodNumber>;
|
|
3860
3820
|
reportState: z.ZodOptional<z.ZodEnum<{
|
|
3861
3821
|
completed: "completed";
|
|
@@ -3876,7 +3836,6 @@ export declare const ReopenSafetyCaseResultSchema: z.ZodObject<{
|
|
|
3876
3836
|
caseId: z.ZodOptional<z.ZodString>;
|
|
3877
3837
|
requestId: z.ZodOptional<z.ZodString>;
|
|
3878
3838
|
monitorKind: z.ZodEnum<{
|
|
3879
|
-
reviewDue: "reviewDue";
|
|
3880
3839
|
photoDnaContract: "photoDnaContract";
|
|
3881
3840
|
actualKnowledgeUnreported: "actualKnowledgeUnreported";
|
|
3882
3841
|
ncmecRetry: "ncmecRetry";
|
|
@@ -4083,7 +4042,6 @@ export declare const ReopenSafetyCaseResultSchema: z.ZodObject<{
|
|
|
4083
4042
|
caseId: z.ZodOptional<z.ZodString>;
|
|
4084
4043
|
requestId: z.ZodOptional<z.ZodString>;
|
|
4085
4044
|
monitorKind: z.ZodEnum<{
|
|
4086
|
-
reviewDue: "reviewDue";
|
|
4087
4045
|
photoDnaContract: "photoDnaContract";
|
|
4088
4046
|
actualKnowledgeUnreported: "actualKnowledgeUnreported";
|
|
4089
4047
|
ncmecRetry: "ncmecRetry";
|
|
@@ -4176,7 +4134,6 @@ export declare const ReopenSafetyCaseResultSchema: z.ZodObject<{
|
|
|
4176
4134
|
caseId: z.ZodOptional<z.ZodString>;
|
|
4177
4135
|
requestId: z.ZodOptional<z.ZodString>;
|
|
4178
4136
|
monitorKind: z.ZodEnum<{
|
|
4179
|
-
reviewDue: "reviewDue";
|
|
4180
4137
|
photoDnaContract: "photoDnaContract";
|
|
4181
4138
|
actualKnowledgeUnreported: "actualKnowledgeUnreported";
|
|
4182
4139
|
ncmecRetry: "ncmecRetry";
|
|
@@ -4220,7 +4177,6 @@ export declare const ReopenSafetyCaseResultSchema: z.ZodObject<{
|
|
|
4220
4177
|
caseId: z.ZodOptional<z.ZodString>;
|
|
4221
4178
|
requestId: z.ZodOptional<z.ZodString>;
|
|
4222
4179
|
monitorKind: z.ZodEnum<{
|
|
4223
|
-
reviewDue: "reviewDue";
|
|
4224
4180
|
photoDnaContract: "photoDnaContract";
|
|
4225
4181
|
actualKnowledgeUnreported: "actualKnowledgeUnreported";
|
|
4226
4182
|
ncmecRetry: "ncmecRetry";
|
|
@@ -4328,7 +4284,6 @@ export declare const AdminReplayDeadLetterResultSchema: z.ZodDiscriminatedUnion<
|
|
|
4328
4284
|
notRequired: "notRequired";
|
|
4329
4285
|
correctedNoApparentViolation: "correctedNoApparentViolation";
|
|
4330
4286
|
}>;
|
|
4331
|
-
reviewDueAt: z.ZodNumber;
|
|
4332
4287
|
actualKnowledgeAt: z.ZodOptional<z.ZodNumber>;
|
|
4333
4288
|
reportState: z.ZodOptional<z.ZodEnum<{
|
|
4334
4289
|
completed: "completed";
|
|
@@ -4349,7 +4304,6 @@ export declare const AdminReplayDeadLetterResultSchema: z.ZodDiscriminatedUnion<
|
|
|
4349
4304
|
caseId: z.ZodOptional<z.ZodString>;
|
|
4350
4305
|
requestId: z.ZodOptional<z.ZodString>;
|
|
4351
4306
|
monitorKind: z.ZodEnum<{
|
|
4352
|
-
reviewDue: "reviewDue";
|
|
4353
4307
|
photoDnaContract: "photoDnaContract";
|
|
4354
4308
|
actualKnowledgeUnreported: "actualKnowledgeUnreported";
|
|
4355
4309
|
ncmecRetry: "ncmecRetry";
|
|
@@ -4556,7 +4510,6 @@ export declare const AdminReplayDeadLetterResultSchema: z.ZodDiscriminatedUnion<
|
|
|
4556
4510
|
caseId: z.ZodOptional<z.ZodString>;
|
|
4557
4511
|
requestId: z.ZodOptional<z.ZodString>;
|
|
4558
4512
|
monitorKind: z.ZodEnum<{
|
|
4559
|
-
reviewDue: "reviewDue";
|
|
4560
4513
|
photoDnaContract: "photoDnaContract";
|
|
4561
4514
|
actualKnowledgeUnreported: "actualKnowledgeUnreported";
|
|
4562
4515
|
ncmecRetry: "ncmecRetry";
|
|
@@ -4649,7 +4602,6 @@ export declare const AdminReplayDeadLetterResultSchema: z.ZodDiscriminatedUnion<
|
|
|
4649
4602
|
caseId: z.ZodOptional<z.ZodString>;
|
|
4650
4603
|
requestId: z.ZodOptional<z.ZodString>;
|
|
4651
4604
|
monitorKind: z.ZodEnum<{
|
|
4652
|
-
reviewDue: "reviewDue";
|
|
4653
4605
|
photoDnaContract: "photoDnaContract";
|
|
4654
4606
|
actualKnowledgeUnreported: "actualKnowledgeUnreported";
|
|
4655
4607
|
ncmecRetry: "ncmecRetry";
|
|
@@ -4693,7 +4645,6 @@ export declare const AdminReplayDeadLetterResultSchema: z.ZodDiscriminatedUnion<
|
|
|
4693
4645
|
caseId: z.ZodOptional<z.ZodString>;
|
|
4694
4646
|
requestId: z.ZodOptional<z.ZodString>;
|
|
4695
4647
|
monitorKind: z.ZodEnum<{
|
|
4696
|
-
reviewDue: "reviewDue";
|
|
4697
4648
|
photoDnaContract: "photoDnaContract";
|
|
4698
4649
|
actualKnowledgeUnreported: "actualKnowledgeUnreported";
|
|
4699
4650
|
ncmecRetry: "ncmecRetry";
|
|
@@ -4806,7 +4757,6 @@ export declare const AdminReplayDeadLetterResultSchema: z.ZodDiscriminatedUnion<
|
|
|
4806
4757
|
notRequired: "notRequired";
|
|
4807
4758
|
correctedNoApparentViolation: "correctedNoApparentViolation";
|
|
4808
4759
|
}>;
|
|
4809
|
-
reviewDueAt: z.ZodNumber;
|
|
4810
4760
|
actualKnowledgeAt: z.ZodOptional<z.ZodNumber>;
|
|
4811
4761
|
reportState: z.ZodOptional<z.ZodEnum<{
|
|
4812
4762
|
completed: "completed";
|
|
@@ -4827,7 +4777,6 @@ export declare const AdminReplayDeadLetterResultSchema: z.ZodDiscriminatedUnion<
|
|
|
4827
4777
|
caseId: z.ZodOptional<z.ZodString>;
|
|
4828
4778
|
requestId: z.ZodOptional<z.ZodString>;
|
|
4829
4779
|
monitorKind: z.ZodEnum<{
|
|
4830
|
-
reviewDue: "reviewDue";
|
|
4831
4780
|
photoDnaContract: "photoDnaContract";
|
|
4832
4781
|
actualKnowledgeUnreported: "actualKnowledgeUnreported";
|
|
4833
4782
|
ncmecRetry: "ncmecRetry";
|
|
@@ -5034,7 +4983,6 @@ export declare const AdminReplayDeadLetterResultSchema: z.ZodDiscriminatedUnion<
|
|
|
5034
4983
|
caseId: z.ZodOptional<z.ZodString>;
|
|
5035
4984
|
requestId: z.ZodOptional<z.ZodString>;
|
|
5036
4985
|
monitorKind: z.ZodEnum<{
|
|
5037
|
-
reviewDue: "reviewDue";
|
|
5038
4986
|
photoDnaContract: "photoDnaContract";
|
|
5039
4987
|
actualKnowledgeUnreported: "actualKnowledgeUnreported";
|
|
5040
4988
|
ncmecRetry: "ncmecRetry";
|
|
@@ -5127,7 +5075,6 @@ export declare const AdminReplayDeadLetterResultSchema: z.ZodDiscriminatedUnion<
|
|
|
5127
5075
|
caseId: z.ZodOptional<z.ZodString>;
|
|
5128
5076
|
requestId: z.ZodOptional<z.ZodString>;
|
|
5129
5077
|
monitorKind: z.ZodEnum<{
|
|
5130
|
-
reviewDue: "reviewDue";
|
|
5131
5078
|
photoDnaContract: "photoDnaContract";
|
|
5132
5079
|
actualKnowledgeUnreported: "actualKnowledgeUnreported";
|
|
5133
5080
|
ncmecRetry: "ncmecRetry";
|
|
@@ -5171,7 +5118,6 @@ export declare const AdminReplayDeadLetterResultSchema: z.ZodDiscriminatedUnion<
|
|
|
5171
5118
|
caseId: z.ZodOptional<z.ZodString>;
|
|
5172
5119
|
requestId: z.ZodOptional<z.ZodString>;
|
|
5173
5120
|
monitorKind: z.ZodEnum<{
|
|
5174
|
-
reviewDue: "reviewDue";
|
|
5175
5121
|
photoDnaContract: "photoDnaContract";
|
|
5176
5122
|
actualKnowledgeUnreported: "actualKnowledgeUnreported";
|
|
5177
5123
|
ncmecRetry: "ncmecRetry";
|
|
@@ -5453,7 +5399,6 @@ export declare const RetainedChildSafetyCaseRowSchema: z.ZodObject<{
|
|
|
5453
5399
|
notRequired: "notRequired";
|
|
5454
5400
|
correctedNoApparentViolation: "correctedNoApparentViolation";
|
|
5455
5401
|
}>;
|
|
5456
|
-
reviewDueAt: z.ZodNumber;
|
|
5457
5402
|
actualKnowledgeAt: z.ZodOptional<z.ZodNumber>;
|
|
5458
5403
|
reportState: z.ZodOptional<z.ZodEnum<{
|
|
5459
5404
|
completed: "completed";
|
|
@@ -5545,7 +5490,6 @@ export declare const ListRetainedChildSafetyCasesResultSchema: z.ZodObject<{
|
|
|
5545
5490
|
notRequired: "notRequired";
|
|
5546
5491
|
correctedNoApparentViolation: "correctedNoApparentViolation";
|
|
5547
5492
|
}>;
|
|
5548
|
-
reviewDueAt: z.ZodNumber;
|
|
5549
5493
|
actualKnowledgeAt: z.ZodOptional<z.ZodNumber>;
|
|
5550
5494
|
reportState: z.ZodOptional<z.ZodEnum<{
|
|
5551
5495
|
completed: "completed";
|