@heavybit/shared-lib 0.0.0-stage → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (298) hide show
  1. package/dist/cjs/access/index.js +118 -0
  2. package/dist/cjs/access/index.js.map +1 -0
  3. package/dist/cjs/alerting/index.js +56 -0
  4. package/dist/cjs/alerting/index.js.map +1 -0
  5. package/dist/cjs/cache/index.js +167 -0
  6. package/dist/cjs/cache/index.js.map +1 -0
  7. package/dist/cjs/common/async.js +40 -0
  8. package/dist/cjs/common/async.js.map +1 -0
  9. package/dist/cjs/common/audit.js +21 -0
  10. package/dist/cjs/common/audit.js.map +1 -0
  11. package/dist/cjs/common/crypto.js +75 -0
  12. package/dist/cjs/common/crypto.js.map +1 -0
  13. package/dist/cjs/common/errors.js +90 -0
  14. package/dist/cjs/common/errors.js.map +1 -0
  15. package/dist/cjs/common/id.js +40 -0
  16. package/dist/cjs/common/id.js.map +1 -0
  17. package/dist/cjs/common/index.js +28 -0
  18. package/dist/cjs/common/index.js.map +1 -0
  19. package/dist/cjs/common/jwt.js +59 -0
  20. package/dist/cjs/common/jwt.js.map +1 -0
  21. package/dist/cjs/common/password.js +38 -0
  22. package/dist/cjs/common/password.js.map +1 -0
  23. package/dist/cjs/common/phone.js +42 -0
  24. package/dist/cjs/common/phone.js.map +1 -0
  25. package/dist/cjs/common/response.js +32 -0
  26. package/dist/cjs/common/response.js.map +1 -0
  27. package/dist/cjs/common/text.js +46 -0
  28. package/dist/cjs/common/text.js.map +1 -0
  29. package/dist/cjs/common/time.js +109 -0
  30. package/dist/cjs/common/time.js.map +1 -0
  31. package/dist/cjs/config/index.js +96 -0
  32. package/dist/cjs/config/index.js.map +1 -0
  33. package/dist/cjs/contracts/editorial-draft.js +111 -0
  34. package/dist/cjs/contracts/editorial-draft.js.map +1 -0
  35. package/dist/cjs/contracts/index.js +20 -0
  36. package/dist/cjs/contracts/index.js.map +1 -0
  37. package/dist/cjs/contracts/notification-dispatch.js +92 -0
  38. package/dist/cjs/contracts/notification-dispatch.js.map +1 -0
  39. package/dist/cjs/contracts/upload-import.js +54 -0
  40. package/dist/cjs/contracts/upload-import.js.map +1 -0
  41. package/dist/cjs/database/index.js +57 -0
  42. package/dist/cjs/database/index.js.map +1 -0
  43. package/dist/cjs/express/auth.js +72 -0
  44. package/dist/cjs/express/auth.js.map +1 -0
  45. package/dist/cjs/express/health.js +31 -0
  46. package/dist/cjs/express/health.js.map +1 -0
  47. package/dist/cjs/express/index.js +20 -0
  48. package/dist/cjs/express/index.js.map +1 -0
  49. package/dist/cjs/express/middleware.js +95 -0
  50. package/dist/cjs/express/middleware.js.map +1 -0
  51. package/dist/cjs/http/index.js +90 -0
  52. package/dist/cjs/http/index.js.map +1 -0
  53. package/dist/cjs/http/safe-fetch.js +199 -0
  54. package/dist/cjs/http/safe-fetch.js.map +1 -0
  55. package/dist/cjs/identity/index.js +117 -0
  56. package/dist/cjs/identity/index.js.map +1 -0
  57. package/dist/cjs/index.js +29 -0
  58. package/dist/cjs/index.js.map +1 -0
  59. package/dist/cjs/knex/index.js +76 -0
  60. package/dist/cjs/knex/index.js.map +1 -0
  61. package/dist/cjs/logging/index.js +75 -0
  62. package/dist/cjs/logging/index.js.map +1 -0
  63. package/dist/cjs/messaging/connection.js +115 -0
  64. package/dist/cjs/messaging/connection.js.map +1 -0
  65. package/dist/cjs/messaging/consumer.js +134 -0
  66. package/dist/cjs/messaging/consumer.js.map +1 -0
  67. package/dist/cjs/messaging/envelope.js +23 -0
  68. package/dist/cjs/messaging/envelope.js.map +1 -0
  69. package/dist/cjs/messaging/idempotency.js +57 -0
  70. package/dist/cjs/messaging/idempotency.js.map +1 -0
  71. package/dist/cjs/messaging/index.js +62 -0
  72. package/dist/cjs/messaging/index.js.map +1 -0
  73. package/dist/cjs/messaging/monitor.js +48 -0
  74. package/dist/cjs/messaging/monitor.js.map +1 -0
  75. package/dist/cjs/messaging/outbox.js +135 -0
  76. package/dist/cjs/messaging/outbox.js.map +1 -0
  77. package/dist/cjs/messaging/publisher.js +149 -0
  78. package/dist/cjs/messaging/publisher.js.map +1 -0
  79. package/dist/cjs/messaging/rpc.js +125 -0
  80. package/dist/cjs/messaging/rpc.js.map +1 -0
  81. package/dist/cjs/messaging/staff-notifier.js +78 -0
  82. package/dist/cjs/messaging/staff-notifier.js.map +1 -0
  83. package/dist/cjs/messaging/topology.js +22 -0
  84. package/dist/cjs/messaging/topology.js.map +1 -0
  85. package/dist/cjs/package.json +1 -0
  86. package/dist/cjs/rate-limit/index.js +61 -0
  87. package/dist/cjs/rate-limit/index.js.map +1 -0
  88. package/dist/cjs/scheduling/index.js +88 -0
  89. package/dist/cjs/scheduling/index.js.map +1 -0
  90. package/dist/cjs/security/index.js +39 -0
  91. package/dist/cjs/security/index.js.map +1 -0
  92. package/dist/cjs/socket/index.js +53 -0
  93. package/dist/cjs/socket/index.js.map +1 -0
  94. package/dist/cjs/testing/index.js +73 -0
  95. package/dist/cjs/testing/index.js.map +1 -0
  96. package/dist/cjs/types/index.js +3 -0
  97. package/dist/cjs/types/index.js.map +1 -0
  98. package/dist/cjs/validation/index.js +41 -0
  99. package/dist/cjs/validation/index.js.map +1 -0
  100. package/dist/esm/access/index.js +104 -0
  101. package/dist/esm/access/index.js.map +1 -0
  102. package/dist/esm/alerting/index.js +52 -0
  103. package/dist/esm/alerting/index.js.map +1 -0
  104. package/dist/esm/cache/index.js +163 -0
  105. package/dist/esm/cache/index.js.map +1 -0
  106. package/dist/esm/common/async.js +33 -0
  107. package/dist/esm/common/async.js.map +1 -0
  108. package/dist/esm/common/audit.js +18 -0
  109. package/dist/esm/common/audit.js.map +1 -0
  110. package/dist/esm/common/crypto.js +64 -0
  111. package/dist/esm/common/crypto.js.map +1 -0
  112. package/dist/esm/common/errors.js +75 -0
  113. package/dist/esm/common/errors.js.map +1 -0
  114. package/dist/esm/common/id.js +33 -0
  115. package/dist/esm/common/id.js.map +1 -0
  116. package/dist/esm/common/index.js +12 -0
  117. package/dist/esm/common/index.js.map +1 -0
  118. package/dist/esm/common/jwt.js +49 -0
  119. package/dist/esm/common/jwt.js.map +1 -0
  120. package/dist/esm/common/password.js +30 -0
  121. package/dist/esm/common/password.js.map +1 -0
  122. package/dist/esm/common/phone.js +33 -0
  123. package/dist/esm/common/phone.js.map +1 -0
  124. package/dist/esm/common/response.js +24 -0
  125. package/dist/esm/common/response.js.map +1 -0
  126. package/dist/esm/common/text.js +39 -0
  127. package/dist/esm/common/text.js.map +1 -0
  128. package/dist/esm/common/time.js +96 -0
  129. package/dist/esm/common/time.js.map +1 -0
  130. package/dist/esm/config/index.js +88 -0
  131. package/dist/esm/config/index.js.map +1 -0
  132. package/dist/esm/contracts/editorial-draft.js +108 -0
  133. package/dist/esm/contracts/editorial-draft.js.map +1 -0
  134. package/dist/esm/contracts/index.js +4 -0
  135. package/dist/esm/contracts/index.js.map +1 -0
  136. package/dist/esm/contracts/notification-dispatch.js +89 -0
  137. package/dist/esm/contracts/notification-dispatch.js.map +1 -0
  138. package/dist/esm/contracts/upload-import.js +51 -0
  139. package/dist/esm/contracts/upload-import.js.map +1 -0
  140. package/dist/esm/database/index.js +48 -0
  141. package/dist/esm/database/index.js.map +1 -0
  142. package/dist/esm/express/auth.js +63 -0
  143. package/dist/esm/express/auth.js.map +1 -0
  144. package/dist/esm/express/health.js +27 -0
  145. package/dist/esm/express/health.js.map +1 -0
  146. package/dist/esm/express/index.js +4 -0
  147. package/dist/esm/express/index.js.map +1 -0
  148. package/dist/esm/express/middleware.js +84 -0
  149. package/dist/esm/express/middleware.js.map +1 -0
  150. package/dist/esm/http/index.js +73 -0
  151. package/dist/esm/http/index.js.map +1 -0
  152. package/dist/esm/http/safe-fetch.js +193 -0
  153. package/dist/esm/http/safe-fetch.js.map +1 -0
  154. package/dist/esm/identity/index.js +111 -0
  155. package/dist/esm/identity/index.js.map +1 -0
  156. package/dist/esm/index.js +13 -0
  157. package/dist/esm/index.js.map +1 -0
  158. package/dist/esm/knex/index.js +66 -0
  159. package/dist/esm/knex/index.js.map +1 -0
  160. package/dist/esm/logging/index.js +67 -0
  161. package/dist/esm/logging/index.js.map +1 -0
  162. package/dist/esm/messaging/connection.js +108 -0
  163. package/dist/esm/messaging/connection.js.map +1 -0
  164. package/dist/esm/messaging/consumer.js +130 -0
  165. package/dist/esm/messaging/consumer.js.map +1 -0
  166. package/dist/esm/messaging/envelope.js +19 -0
  167. package/dist/esm/messaging/envelope.js.map +1 -0
  168. package/dist/esm/messaging/idempotency.js +52 -0
  169. package/dist/esm/messaging/idempotency.js.map +1 -0
  170. package/dist/esm/messaging/index.js +45 -0
  171. package/dist/esm/messaging/index.js.map +1 -0
  172. package/dist/esm/messaging/monitor.js +44 -0
  173. package/dist/esm/messaging/monitor.js.map +1 -0
  174. package/dist/esm/messaging/outbox.js +129 -0
  175. package/dist/esm/messaging/outbox.js.map +1 -0
  176. package/dist/esm/messaging/publisher.js +142 -0
  177. package/dist/esm/messaging/publisher.js.map +1 -0
  178. package/dist/esm/messaging/rpc.js +120 -0
  179. package/dist/esm/messaging/rpc.js.map +1 -0
  180. package/dist/esm/messaging/staff-notifier.js +73 -0
  181. package/dist/esm/messaging/staff-notifier.js.map +1 -0
  182. package/dist/esm/messaging/topology.js +16 -0
  183. package/dist/esm/messaging/topology.js.map +1 -0
  184. package/dist/esm/package.json +1 -0
  185. package/dist/esm/rate-limit/index.js +56 -0
  186. package/dist/esm/rate-limit/index.js.map +1 -0
  187. package/dist/esm/scheduling/index.js +83 -0
  188. package/dist/esm/scheduling/index.js.map +1 -0
  189. package/dist/esm/security/index.js +36 -0
  190. package/dist/esm/security/index.js.map +1 -0
  191. package/dist/esm/socket/index.js +47 -0
  192. package/dist/esm/socket/index.js.map +1 -0
  193. package/dist/esm/testing/index.js +66 -0
  194. package/dist/esm/testing/index.js.map +1 -0
  195. package/dist/esm/types/index.js +2 -0
  196. package/dist/esm/types/index.js.map +1 -0
  197. package/dist/esm/validation/index.js +36 -0
  198. package/dist/esm/validation/index.js.map +1 -0
  199. package/dist/types/access/index.d.ts +50 -0
  200. package/dist/types/access/index.d.ts.map +1 -0
  201. package/dist/types/alerting/index.d.ts +43 -0
  202. package/dist/types/alerting/index.d.ts.map +1 -0
  203. package/dist/types/cache/index.d.ts +45 -0
  204. package/dist/types/cache/index.d.ts.map +1 -0
  205. package/dist/types/common/async.d.ts +14 -0
  206. package/dist/types/common/async.d.ts.map +1 -0
  207. package/dist/types/common/audit.d.ts +17 -0
  208. package/dist/types/common/audit.d.ts.map +1 -0
  209. package/dist/types/common/crypto.d.ts +18 -0
  210. package/dist/types/common/crypto.d.ts.map +1 -0
  211. package/dist/types/common/errors.d.ts +71 -0
  212. package/dist/types/common/errors.d.ts.map +1 -0
  213. package/dist/types/common/id.d.ts +14 -0
  214. package/dist/types/common/id.d.ts.map +1 -0
  215. package/dist/types/common/index.d.ts +12 -0
  216. package/dist/types/common/index.d.ts.map +1 -0
  217. package/dist/types/common/jwt.d.ts +28 -0
  218. package/dist/types/common/jwt.d.ts.map +1 -0
  219. package/dist/types/common/password.d.ts +4 -0
  220. package/dist/types/common/password.d.ts.map +1 -0
  221. package/dist/types/common/phone.d.ts +10 -0
  222. package/dist/types/common/phone.d.ts.map +1 -0
  223. package/dist/types/common/response.d.ts +12 -0
  224. package/dist/types/common/response.d.ts.map +1 -0
  225. package/dist/types/common/text.d.ts +10 -0
  226. package/dist/types/common/text.d.ts.map +1 -0
  227. package/dist/types/common/time.d.ts +40 -0
  228. package/dist/types/common/time.d.ts.map +1 -0
  229. package/dist/types/config/index.d.ts +115 -0
  230. package/dist/types/config/index.d.ts.map +1 -0
  231. package/dist/types/contracts/editorial-draft.d.ts +577 -0
  232. package/dist/types/contracts/editorial-draft.d.ts.map +1 -0
  233. package/dist/types/contracts/index.d.ts +4 -0
  234. package/dist/types/contracts/index.d.ts.map +1 -0
  235. package/dist/types/contracts/notification-dispatch.d.ts +175 -0
  236. package/dist/types/contracts/notification-dispatch.d.ts.map +1 -0
  237. package/dist/types/contracts/upload-import.d.ts +96 -0
  238. package/dist/types/contracts/upload-import.d.ts.map +1 -0
  239. package/dist/types/database/index.d.ts +25 -0
  240. package/dist/types/database/index.d.ts.map +1 -0
  241. package/dist/types/express/auth.d.ts +27 -0
  242. package/dist/types/express/auth.d.ts.map +1 -0
  243. package/dist/types/express/health.d.ts +14 -0
  244. package/dist/types/express/health.d.ts.map +1 -0
  245. package/dist/types/express/index.d.ts +4 -0
  246. package/dist/types/express/index.d.ts.map +1 -0
  247. package/dist/types/express/middleware.d.ts +20 -0
  248. package/dist/types/express/middleware.d.ts.map +1 -0
  249. package/dist/types/http/index.d.ts +34 -0
  250. package/dist/types/http/index.d.ts.map +1 -0
  251. package/dist/types/http/safe-fetch.d.ts +58 -0
  252. package/dist/types/http/safe-fetch.d.ts.map +1 -0
  253. package/dist/types/identity/index.d.ts +51 -0
  254. package/dist/types/identity/index.d.ts.map +1 -0
  255. package/dist/types/index.d.ts +10 -0
  256. package/dist/types/index.d.ts.map +1 -0
  257. package/dist/types/knex/index.d.ts +25 -0
  258. package/dist/types/knex/index.d.ts.map +1 -0
  259. package/dist/types/logging/index.d.ts +22 -0
  260. package/dist/types/logging/index.d.ts.map +1 -0
  261. package/dist/types/messaging/connection.d.ts +48 -0
  262. package/dist/types/messaging/connection.d.ts.map +1 -0
  263. package/dist/types/messaging/consumer.d.ts +56 -0
  264. package/dist/types/messaging/consumer.d.ts.map +1 -0
  265. package/dist/types/messaging/envelope.d.ts +16 -0
  266. package/dist/types/messaging/envelope.d.ts.map +1 -0
  267. package/dist/types/messaging/idempotency.d.ts +29 -0
  268. package/dist/types/messaging/idempotency.d.ts.map +1 -0
  269. package/dist/types/messaging/index.d.ts +39 -0
  270. package/dist/types/messaging/index.d.ts.map +1 -0
  271. package/dist/types/messaging/monitor.d.ts +23 -0
  272. package/dist/types/messaging/monitor.d.ts.map +1 -0
  273. package/dist/types/messaging/outbox.d.ts +51 -0
  274. package/dist/types/messaging/outbox.d.ts.map +1 -0
  275. package/dist/types/messaging/publisher.d.ts +84 -0
  276. package/dist/types/messaging/publisher.d.ts.map +1 -0
  277. package/dist/types/messaging/rpc.d.ts +46 -0
  278. package/dist/types/messaging/rpc.d.ts.map +1 -0
  279. package/dist/types/messaging/staff-notifier.d.ts +56 -0
  280. package/dist/types/messaging/staff-notifier.d.ts.map +1 -0
  281. package/dist/types/messaging/topology.d.ts +23 -0
  282. package/dist/types/messaging/topology.d.ts.map +1 -0
  283. package/dist/types/rate-limit/index.d.ts +28 -0
  284. package/dist/types/rate-limit/index.d.ts.map +1 -0
  285. package/dist/types/scheduling/index.d.ts +33 -0
  286. package/dist/types/scheduling/index.d.ts.map +1 -0
  287. package/dist/types/security/index.d.ts +20 -0
  288. package/dist/types/security/index.d.ts.map +1 -0
  289. package/dist/types/socket/index.d.ts +30 -0
  290. package/dist/types/socket/index.d.ts.map +1 -0
  291. package/dist/types/testing/index.d.ts +41 -0
  292. package/dist/types/testing/index.d.ts.map +1 -0
  293. package/dist/types/types/index.d.ts +65 -0
  294. package/dist/types/types/index.d.ts.map +1 -0
  295. package/dist/types/validation/index.d.ts +34 -0
  296. package/dist/types/validation/index.d.ts.map +1 -0
  297. package/package.json +189 -4
  298. package/README.md +0 -3
@@ -0,0 +1,577 @@
1
+ import { z } from 'zod';
2
+ /**
3
+ * The newswire → editorial draft hand-off (design Appendix A.4 plus `paragraphFactIds` and
4
+ * `image.uploadId`, decision R14). newswire-service stages it through its outbox; editorial-service
5
+ * validates it with the same schema before creating the story. One contract for both sides.
6
+ */
7
+ export declare const EDITORIAL_DRAFT_SUBMIT = "editorial:draft.submit";
8
+ /** Field limits of the contract (editorial's story columns). */
9
+ export declare const EDITORIAL_DRAFT_LIMITS: {
10
+ readonly headline: 200;
11
+ readonly excerpt: 400;
12
+ readonly tags: 6;
13
+ readonly seoTitle: 70;
14
+ readonly seoDescription: 170;
15
+ };
16
+ export declare const DRAFT_SOURCE_ROLES: readonly ["primary", "corroborating"];
17
+ export declare const DRAFT_RISKS: readonly ["low", "medium", "high"];
18
+ export declare const GATE_VERDICTS: readonly ["pass", "review", "block"];
19
+ /**
20
+ * Every quality gate newswire runs on a draft, in design order. A submitted draft carries one result per
21
+ * gate; editorial treats a missing one as not passed (auto-publish never runs on an unchecked draft).
22
+ */
23
+ export declare const QUALITY_GATE_NAMES: readonly ["originality", "grounding", "quote_limits", "corroboration", "conflicts", "sensitivity", "category", "freshness", "duplicate_of_published", "length_format"];
24
+ export type QualityGateName = (typeof QUALITY_GATE_NAMES)[number];
25
+ export declare const FACT_KINDS: readonly ["event", "person", "date", "place", "number", "quote", "context"];
26
+ export declare const editorialDraftSubmitSchema: z.ZodEffects<z.ZodObject<{
27
+ draftId: z.ZodString;
28
+ clusterId: z.ZodString;
29
+ headline: z.ZodString;
30
+ excerpt: z.ZodString;
31
+ paragraphs: z.ZodArray<z.ZodString, "many">;
32
+ /** The fact-sheet fact ids each paragraph asserts (same length as `paragraphs`). */
33
+ paragraphFactIds: z.ZodArray<z.ZodArray<z.ZodString, "many">, "many">;
34
+ category: z.ZodString;
35
+ tags: z.ZodArray<z.ZodString, "many">;
36
+ seo: z.ZodObject<{
37
+ title: z.ZodString;
38
+ description: z.ZodString;
39
+ }, "strip", z.ZodTypeAny, {
40
+ description: string;
41
+ title: string;
42
+ }, {
43
+ description: string;
44
+ title: string;
45
+ }>;
46
+ social: z.ZodObject<{
47
+ facebook: z.ZodString;
48
+ x: z.ZodString;
49
+ whatsapp: z.ZodString;
50
+ instagram: z.ZodString;
51
+ }, "strip", z.ZodTypeAny, {
52
+ facebook: string;
53
+ x: string;
54
+ whatsapp: string;
55
+ instagram: string;
56
+ }, {
57
+ facebook: string;
58
+ x: string;
59
+ whatsapp: string;
60
+ instagram: string;
61
+ }>;
62
+ sources: z.ZodArray<z.ZodObject<{
63
+ name: z.ZodString;
64
+ url: z.ZodEffects<z.ZodString, string, string>;
65
+ publishedAt: z.ZodOptional<z.ZodString>;
66
+ role: z.ZodEnum<["primary", "corroborating"]>;
67
+ }, "strip", z.ZodTypeAny, {
68
+ name: string;
69
+ url: string;
70
+ role: "primary" | "corroborating";
71
+ publishedAt?: string | undefined;
72
+ }, {
73
+ name: string;
74
+ url: string;
75
+ role: "primary" | "corroborating";
76
+ publishedAt?: string | undefined;
77
+ }>, "many">;
78
+ /** An imported or profile cover (upload-service id), or null when the draft has none. */
79
+ image: z.ZodNullable<z.ZodObject<{
80
+ uploadId: z.ZodString;
81
+ credit: z.ZodString;
82
+ alt: z.ZodString;
83
+ }, "strip", z.ZodTypeAny, {
84
+ uploadId: string;
85
+ credit: string;
86
+ alt: string;
87
+ }, {
88
+ uploadId: string;
89
+ credit: string;
90
+ alt: string;
91
+ }>>;
92
+ relatedProfileIds: z.ZodArray<z.ZodString, "many">;
93
+ suggestedProfileIds: z.ZodArray<z.ZodString, "many">;
94
+ review: z.ZodObject<{
95
+ confidence: z.ZodNumber;
96
+ risk: z.ZodEnum<["low", "medium", "high"]>;
97
+ riskReasons: z.ZodArray<z.ZodString, "many">;
98
+ gates: z.ZodArray<z.ZodObject<{
99
+ gate: z.ZodString;
100
+ verdict: z.ZodEnum<["pass", "review", "block"]>;
101
+ reasons: z.ZodArray<z.ZodString, "many">;
102
+ metrics: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodNumber>>;
103
+ }, "strip", z.ZodTypeAny, {
104
+ gate: string;
105
+ verdict: "pass" | "review" | "block";
106
+ reasons: string[];
107
+ metrics?: Record<string, number> | undefined;
108
+ }, {
109
+ gate: string;
110
+ verdict: "pass" | "review" | "block";
111
+ reasons: string[];
112
+ metrics?: Record<string, number> | undefined;
113
+ }>, "many">;
114
+ factSheet: z.ZodObject<{
115
+ facts: z.ZodArray<z.ZodObject<{
116
+ id: z.ZodString;
117
+ statement: z.ZodString;
118
+ kind: z.ZodEnum<["event", "person", "date", "place", "number", "quote", "context"]>;
119
+ entities: z.ZodArray<z.ZodString, "many">;
120
+ supportedBy: z.ZodArray<z.ZodObject<{
121
+ itemId: z.ZodString;
122
+ paragraph: z.ZodNumber;
123
+ }, "strip", z.ZodTypeAny, {
124
+ itemId: string;
125
+ paragraph: number;
126
+ }, {
127
+ itemId: string;
128
+ paragraph: number;
129
+ }>, "many">;
130
+ conflictsWith: z.ZodArray<z.ZodString, "many">;
131
+ independentSources: z.ZodNumber;
132
+ }, "strip", z.ZodTypeAny, {
133
+ id: string;
134
+ statement: string;
135
+ kind: "number" | "date" | "event" | "person" | "place" | "quote" | "context";
136
+ entities: string[];
137
+ supportedBy: {
138
+ itemId: string;
139
+ paragraph: number;
140
+ }[];
141
+ conflictsWith: string[];
142
+ independentSources: number;
143
+ }, {
144
+ id: string;
145
+ statement: string;
146
+ kind: "number" | "date" | "event" | "person" | "place" | "quote" | "context";
147
+ entities: string[];
148
+ supportedBy: {
149
+ itemId: string;
150
+ paragraph: number;
151
+ }[];
152
+ conflictsWith: string[];
153
+ independentSources: number;
154
+ }>, "many">;
155
+ quotes: z.ZodArray<z.ZodObject<{
156
+ itemId: z.ZodString;
157
+ paragraph: z.ZodNumber;
158
+ } & {
159
+ text: z.ZodString;
160
+ speaker: z.ZodString;
161
+ }, "strip", z.ZodTypeAny, {
162
+ itemId: string;
163
+ paragraph: number;
164
+ text: string;
165
+ speaker: string;
166
+ }, {
167
+ itemId: string;
168
+ paragraph: number;
169
+ text: string;
170
+ speaker: string;
171
+ }>, "many">;
172
+ conflicts: z.ZodArray<z.ZodObject<{
173
+ description: z.ZodString;
174
+ factIds: z.ZodArray<z.ZodString, "many">;
175
+ }, "strip", z.ZodTypeAny, {
176
+ description: string;
177
+ factIds: string[];
178
+ }, {
179
+ description: string;
180
+ factIds: string[];
181
+ }>, "many">;
182
+ }, "strip", z.ZodTypeAny, {
183
+ conflicts: {
184
+ description: string;
185
+ factIds: string[];
186
+ }[];
187
+ facts: {
188
+ id: string;
189
+ statement: string;
190
+ kind: "number" | "date" | "event" | "person" | "place" | "quote" | "context";
191
+ entities: string[];
192
+ supportedBy: {
193
+ itemId: string;
194
+ paragraph: number;
195
+ }[];
196
+ conflictsWith: string[];
197
+ independentSources: number;
198
+ }[];
199
+ quotes: {
200
+ itemId: string;
201
+ paragraph: number;
202
+ text: string;
203
+ speaker: string;
204
+ }[];
205
+ }, {
206
+ conflicts: {
207
+ description: string;
208
+ factIds: string[];
209
+ }[];
210
+ facts: {
211
+ id: string;
212
+ statement: string;
213
+ kind: "number" | "date" | "event" | "person" | "place" | "quote" | "context";
214
+ entities: string[];
215
+ supportedBy: {
216
+ itemId: string;
217
+ paragraph: number;
218
+ }[];
219
+ conflictsWith: string[];
220
+ independentSources: number;
221
+ }[];
222
+ quotes: {
223
+ itemId: string;
224
+ paragraph: number;
225
+ text: string;
226
+ speaker: string;
227
+ }[];
228
+ }>;
229
+ /** Prompt slug → version used to produce the draft. */
230
+ promptVersions: z.ZodRecord<z.ZodString, z.ZodNumber>;
231
+ }, "strip", z.ZodTypeAny, {
232
+ confidence: number;
233
+ risk: "low" | "medium" | "high";
234
+ riskReasons: string[];
235
+ gates: {
236
+ gate: string;
237
+ verdict: "pass" | "review" | "block";
238
+ reasons: string[];
239
+ metrics?: Record<string, number> | undefined;
240
+ }[];
241
+ factSheet: {
242
+ conflicts: {
243
+ description: string;
244
+ factIds: string[];
245
+ }[];
246
+ facts: {
247
+ id: string;
248
+ statement: string;
249
+ kind: "number" | "date" | "event" | "person" | "place" | "quote" | "context";
250
+ entities: string[];
251
+ supportedBy: {
252
+ itemId: string;
253
+ paragraph: number;
254
+ }[];
255
+ conflictsWith: string[];
256
+ independentSources: number;
257
+ }[];
258
+ quotes: {
259
+ itemId: string;
260
+ paragraph: number;
261
+ text: string;
262
+ speaker: string;
263
+ }[];
264
+ };
265
+ promptVersions: Record<string, number>;
266
+ }, {
267
+ confidence: number;
268
+ risk: "low" | "medium" | "high";
269
+ riskReasons: string[];
270
+ gates: {
271
+ gate: string;
272
+ verdict: "pass" | "review" | "block";
273
+ reasons: string[];
274
+ metrics?: Record<string, number> | undefined;
275
+ }[];
276
+ factSheet: {
277
+ conflicts: {
278
+ description: string;
279
+ factIds: string[];
280
+ }[];
281
+ facts: {
282
+ id: string;
283
+ statement: string;
284
+ kind: "number" | "date" | "event" | "person" | "place" | "quote" | "context";
285
+ entities: string[];
286
+ supportedBy: {
287
+ itemId: string;
288
+ paragraph: number;
289
+ }[];
290
+ conflictsWith: string[];
291
+ independentSources: number;
292
+ }[];
293
+ quotes: {
294
+ itemId: string;
295
+ paragraph: number;
296
+ text: string;
297
+ speaker: string;
298
+ }[];
299
+ };
300
+ promptVersions: Record<string, number>;
301
+ }>;
302
+ }, "strip", z.ZodTypeAny, {
303
+ review: {
304
+ confidence: number;
305
+ risk: "low" | "medium" | "high";
306
+ riskReasons: string[];
307
+ gates: {
308
+ gate: string;
309
+ verdict: "pass" | "review" | "block";
310
+ reasons: string[];
311
+ metrics?: Record<string, number> | undefined;
312
+ }[];
313
+ factSheet: {
314
+ conflicts: {
315
+ description: string;
316
+ factIds: string[];
317
+ }[];
318
+ facts: {
319
+ id: string;
320
+ statement: string;
321
+ kind: "number" | "date" | "event" | "person" | "place" | "quote" | "context";
322
+ entities: string[];
323
+ supportedBy: {
324
+ itemId: string;
325
+ paragraph: number;
326
+ }[];
327
+ conflictsWith: string[];
328
+ independentSources: number;
329
+ }[];
330
+ quotes: {
331
+ itemId: string;
332
+ paragraph: number;
333
+ text: string;
334
+ speaker: string;
335
+ }[];
336
+ };
337
+ promptVersions: Record<string, number>;
338
+ };
339
+ category: string;
340
+ draftId: string;
341
+ clusterId: string;
342
+ headline: string;
343
+ excerpt: string;
344
+ paragraphs: string[];
345
+ paragraphFactIds: string[][];
346
+ tags: string[];
347
+ seo: {
348
+ description: string;
349
+ title: string;
350
+ };
351
+ social: {
352
+ facebook: string;
353
+ x: string;
354
+ whatsapp: string;
355
+ instagram: string;
356
+ };
357
+ sources: {
358
+ name: string;
359
+ url: string;
360
+ role: "primary" | "corroborating";
361
+ publishedAt?: string | undefined;
362
+ }[];
363
+ image: {
364
+ uploadId: string;
365
+ credit: string;
366
+ alt: string;
367
+ } | null;
368
+ relatedProfileIds: string[];
369
+ suggestedProfileIds: string[];
370
+ }, {
371
+ review: {
372
+ confidence: number;
373
+ risk: "low" | "medium" | "high";
374
+ riskReasons: string[];
375
+ gates: {
376
+ gate: string;
377
+ verdict: "pass" | "review" | "block";
378
+ reasons: string[];
379
+ metrics?: Record<string, number> | undefined;
380
+ }[];
381
+ factSheet: {
382
+ conflicts: {
383
+ description: string;
384
+ factIds: string[];
385
+ }[];
386
+ facts: {
387
+ id: string;
388
+ statement: string;
389
+ kind: "number" | "date" | "event" | "person" | "place" | "quote" | "context";
390
+ entities: string[];
391
+ supportedBy: {
392
+ itemId: string;
393
+ paragraph: number;
394
+ }[];
395
+ conflictsWith: string[];
396
+ independentSources: number;
397
+ }[];
398
+ quotes: {
399
+ itemId: string;
400
+ paragraph: number;
401
+ text: string;
402
+ speaker: string;
403
+ }[];
404
+ };
405
+ promptVersions: Record<string, number>;
406
+ };
407
+ category: string;
408
+ draftId: string;
409
+ clusterId: string;
410
+ headline: string;
411
+ excerpt: string;
412
+ paragraphs: string[];
413
+ paragraphFactIds: string[][];
414
+ tags: string[];
415
+ seo: {
416
+ description: string;
417
+ title: string;
418
+ };
419
+ social: {
420
+ facebook: string;
421
+ x: string;
422
+ whatsapp: string;
423
+ instagram: string;
424
+ };
425
+ sources: {
426
+ name: string;
427
+ url: string;
428
+ role: "primary" | "corroborating";
429
+ publishedAt?: string | undefined;
430
+ }[];
431
+ image: {
432
+ uploadId: string;
433
+ credit: string;
434
+ alt: string;
435
+ } | null;
436
+ relatedProfileIds: string[];
437
+ suggestedProfileIds: string[];
438
+ }>, {
439
+ review: {
440
+ confidence: number;
441
+ risk: "low" | "medium" | "high";
442
+ riskReasons: string[];
443
+ gates: {
444
+ gate: string;
445
+ verdict: "pass" | "review" | "block";
446
+ reasons: string[];
447
+ metrics?: Record<string, number> | undefined;
448
+ }[];
449
+ factSheet: {
450
+ conflicts: {
451
+ description: string;
452
+ factIds: string[];
453
+ }[];
454
+ facts: {
455
+ id: string;
456
+ statement: string;
457
+ kind: "number" | "date" | "event" | "person" | "place" | "quote" | "context";
458
+ entities: string[];
459
+ supportedBy: {
460
+ itemId: string;
461
+ paragraph: number;
462
+ }[];
463
+ conflictsWith: string[];
464
+ independentSources: number;
465
+ }[];
466
+ quotes: {
467
+ itemId: string;
468
+ paragraph: number;
469
+ text: string;
470
+ speaker: string;
471
+ }[];
472
+ };
473
+ promptVersions: Record<string, number>;
474
+ };
475
+ category: string;
476
+ draftId: string;
477
+ clusterId: string;
478
+ headline: string;
479
+ excerpt: string;
480
+ paragraphs: string[];
481
+ paragraphFactIds: string[][];
482
+ tags: string[];
483
+ seo: {
484
+ description: string;
485
+ title: string;
486
+ };
487
+ social: {
488
+ facebook: string;
489
+ x: string;
490
+ whatsapp: string;
491
+ instagram: string;
492
+ };
493
+ sources: {
494
+ name: string;
495
+ url: string;
496
+ role: "primary" | "corroborating";
497
+ publishedAt?: string | undefined;
498
+ }[];
499
+ image: {
500
+ uploadId: string;
501
+ credit: string;
502
+ alt: string;
503
+ } | null;
504
+ relatedProfileIds: string[];
505
+ suggestedProfileIds: string[];
506
+ }, {
507
+ review: {
508
+ confidence: number;
509
+ risk: "low" | "medium" | "high";
510
+ riskReasons: string[];
511
+ gates: {
512
+ gate: string;
513
+ verdict: "pass" | "review" | "block";
514
+ reasons: string[];
515
+ metrics?: Record<string, number> | undefined;
516
+ }[];
517
+ factSheet: {
518
+ conflicts: {
519
+ description: string;
520
+ factIds: string[];
521
+ }[];
522
+ facts: {
523
+ id: string;
524
+ statement: string;
525
+ kind: "number" | "date" | "event" | "person" | "place" | "quote" | "context";
526
+ entities: string[];
527
+ supportedBy: {
528
+ itemId: string;
529
+ paragraph: number;
530
+ }[];
531
+ conflictsWith: string[];
532
+ independentSources: number;
533
+ }[];
534
+ quotes: {
535
+ itemId: string;
536
+ paragraph: number;
537
+ text: string;
538
+ speaker: string;
539
+ }[];
540
+ };
541
+ promptVersions: Record<string, number>;
542
+ };
543
+ category: string;
544
+ draftId: string;
545
+ clusterId: string;
546
+ headline: string;
547
+ excerpt: string;
548
+ paragraphs: string[];
549
+ paragraphFactIds: string[][];
550
+ tags: string[];
551
+ seo: {
552
+ description: string;
553
+ title: string;
554
+ };
555
+ social: {
556
+ facebook: string;
557
+ x: string;
558
+ whatsapp: string;
559
+ instagram: string;
560
+ };
561
+ sources: {
562
+ name: string;
563
+ url: string;
564
+ role: "primary" | "corroborating";
565
+ publishedAt?: string | undefined;
566
+ }[];
567
+ image: {
568
+ uploadId: string;
569
+ credit: string;
570
+ alt: string;
571
+ } | null;
572
+ relatedProfileIds: string[];
573
+ suggestedProfileIds: string[];
574
+ }>;
575
+ export type EditorialDraftSubmit = z.infer<typeof editorialDraftSubmitSchema>;
576
+ export type EditorialDraftSource = EditorialDraftSubmit['sources'][number];
577
+ //# sourceMappingURL=editorial-draft.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"editorial-draft.d.ts","sourceRoot":"","sources":["../../../src/contracts/editorial-draft.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,2BAA2B,CAAC;AAE/D,gEAAgE;AAChE,eAAO,MAAM,sBAAsB;;;;;;CAMzB,CAAC;AAEX,eAAO,MAAM,kBAAkB,uCAAwC,CAAC;AACxE,eAAO,MAAM,WAAW,oCAAqC,CAAC;AAC9D,eAAO,MAAM,aAAa,sCAAuC,CAAC;AAClE;;;GAGG;AACH,eAAO,MAAM,kBAAkB,wKAGrB,CAAC;AACX,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAC;AAClE,eAAO,MAAM,UAAU,6EAA8E,CAAC;AAuCtG,eAAO,MAAM,0BAA0B;;;;;;IAOnC,oFAAoF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAUpF,yFAAyF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAcvF,uDAAuD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiBzD,CAAC;AAEL,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAC9E,MAAM,MAAM,oBAAoB,GAAG,oBAAoB,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC"}
@@ -0,0 +1,4 @@
1
+ export * from './editorial-draft.js';
2
+ export * from './notification-dispatch.js';
3
+ export * from './upload-import.js';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/contracts/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,oBAAoB,CAAC"}