@growth-labs/cms 0.5.7 → 0.5.9

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 (55) hide show
  1. package/README.md +15 -0
  2. package/dist/integration/options.d.ts +26 -0
  3. package/dist/integration/options.d.ts.map +1 -1
  4. package/dist/integration/options.js +5 -0
  5. package/dist/integration/options.js.map +1 -1
  6. package/dist/routes/content.d.ts.map +1 -1
  7. package/dist/routes/content.js +6 -1
  8. package/dist/routes/content.js.map +1 -1
  9. package/dist/schema/insights-ingest.d.ts +2386 -0
  10. package/dist/schema/insights-ingest.d.ts.map +1 -1
  11. package/dist/schema/insights-ingest.js +78 -0
  12. package/dist/schema/insights-ingest.js.map +1 -1
  13. package/dist/ui/client/mount.d.ts.map +1 -1
  14. package/dist/ui/client/mount.js +1 -0
  15. package/dist/ui/client/mount.js.map +1 -1
  16. package/dist/ui/editor/ContentForm.d.ts +5 -1
  17. package/dist/ui/editor/ContentForm.d.ts.map +1 -1
  18. package/dist/ui/editor/ContentForm.js +8 -2
  19. package/dist/ui/editor/ContentForm.js.map +1 -1
  20. package/dist/ui/editor/content-payload.d.ts +1 -0
  21. package/dist/ui/editor/content-payload.d.ts.map +1 -1
  22. package/dist/ui/editor/content-payload.js +6 -1
  23. package/dist/ui/editor/content-payload.js.map +1 -1
  24. package/dist/ui/screens/ContentRoute.d.ts +5 -1
  25. package/dist/ui/screens/ContentRoute.d.ts.map +1 -1
  26. package/dist/ui/screens/ContentRoute.js +3 -3
  27. package/dist/ui/screens/ContentRoute.js.map +1 -1
  28. package/dist/ui/screens/EditorScreen.d.ts +5 -1
  29. package/dist/ui/screens/EditorScreen.d.ts.map +1 -1
  30. package/dist/ui/screens/EditorScreen.js +2 -2
  31. package/dist/ui/screens/EditorScreen.js.map +1 -1
  32. package/dist/ui/screens/LibraryScreen.d.ts +5 -1
  33. package/dist/ui/screens/LibraryScreen.d.ts.map +1 -1
  34. package/dist/ui/screens/LibraryScreen.js +20 -14
  35. package/dist/ui/screens/LibraryScreen.js.map +1 -1
  36. package/dist/ui/screens/library-data.d.ts +6 -0
  37. package/dist/ui/screens/library-data.d.ts.map +1 -1
  38. package/dist/ui/screens/library-data.js +8 -1
  39. package/dist/ui/screens/library-data.js.map +1 -1
  40. package/dist/ui/screens/registry.d.ts +5 -1
  41. package/dist/ui/screens/registry.d.ts.map +1 -1
  42. package/dist/ui/screens/registry.js +2 -2
  43. package/dist/ui/screens/registry.js.map +1 -1
  44. package/package.json +1 -1
  45. package/src/integration/options.ts +6 -0
  46. package/src/routes/content.ts +7 -1
  47. package/src/schema/insights-ingest.ts +94 -0
  48. package/src/ui/client/mount.tsx +1 -0
  49. package/src/ui/editor/ContentForm.tsx +30 -0
  50. package/src/ui/editor/content-payload.ts +6 -1
  51. package/src/ui/screens/ContentRoute.tsx +10 -1
  52. package/src/ui/screens/EditorScreen.tsx +3 -0
  53. package/src/ui/screens/LibraryScreen.tsx +76 -6
  54. package/src/ui/screens/library-data.ts +12 -1
  55. package/src/ui/screens/registry.tsx +8 -1
@@ -1,4 +1,129 @@
1
1
  import { z } from 'zod';
2
+ export declare const InsightLaneSchema: z.ZodEnum<["commission", "refresh", "optimize-ctr", "consolidate", "monitor"]>;
3
+ export declare const InsightScoreBreakdownSchema: z.ZodObject<{
4
+ actualCtr: z.ZodNumber;
5
+ expectedCtr: z.ZodNumber;
6
+ expectedClicksGain: z.ZodNumber;
7
+ laneWeight: z.ZodNumber;
8
+ score: z.ZodNumber;
9
+ targetPosition: z.ZodNumber;
10
+ topicalFit: z.ZodNumber;
11
+ winnabilityPrior: z.ZodNumber;
12
+ }, "strip", z.ZodTypeAny, {
13
+ actualCtr: number;
14
+ expectedCtr: number;
15
+ expectedClicksGain: number;
16
+ laneWeight: number;
17
+ score: number;
18
+ targetPosition: number;
19
+ topicalFit: number;
20
+ winnabilityPrior: number;
21
+ }, {
22
+ actualCtr: number;
23
+ expectedCtr: number;
24
+ expectedClicksGain: number;
25
+ laneWeight: number;
26
+ score: number;
27
+ targetPosition: number;
28
+ topicalFit: number;
29
+ winnabilityPrior: number;
30
+ }>;
31
+ export declare const InsightJudgeReasonCodeSchema: z.ZodEnum<["no_coherent_intent", "navigational_or_entity_locked", "off_topic", "already_covered", "unwinnable", "unsustainable_format", "too_thin", "accept"]>;
32
+ export declare const InsightJudgeVerdictSchema: z.ZodEnum<["accept", "reject", "abstain"]>;
33
+ export declare const InsightWinnabilityEvidenceSchema: z.ZodObject<{
34
+ verdict: z.ZodEnum<["accept", "reject", "abstain"]>;
35
+ confidence: z.ZodNumber;
36
+ serp_summary: z.ZodString;
37
+ }, "strip", z.ZodTypeAny, {
38
+ verdict: "accept" | "reject" | "abstain";
39
+ confidence: number;
40
+ serp_summary: string;
41
+ }, {
42
+ verdict: "accept" | "reject" | "abstain";
43
+ confidence: number;
44
+ serp_summary: string;
45
+ }>;
46
+ export declare const InsightJudgeEvidenceSchema: z.ZodObject<{
47
+ verdict: z.ZodEnum<["accept", "reject", "abstain"]>;
48
+ reason_code: z.ZodEnum<["no_coherent_intent", "navigational_or_entity_locked", "off_topic", "already_covered", "unwinnable", "unsustainable_format", "too_thin", "accept"]>;
49
+ confidence: z.ZodNumber;
50
+ intent_statement: z.ZodString;
51
+ winnability: z.ZodOptional<z.ZodObject<{
52
+ verdict: z.ZodEnum<["accept", "reject", "abstain"]>;
53
+ confidence: z.ZodNumber;
54
+ serp_summary: z.ZodString;
55
+ }, "strip", z.ZodTypeAny, {
56
+ verdict: "accept" | "reject" | "abstain";
57
+ confidence: number;
58
+ serp_summary: string;
59
+ }, {
60
+ verdict: "accept" | "reject" | "abstain";
61
+ confidence: number;
62
+ serp_summary: string;
63
+ }>>;
64
+ }, "strip", z.ZodTypeAny, {
65
+ verdict: "accept" | "reject" | "abstain";
66
+ confidence: number;
67
+ reason_code: "no_coherent_intent" | "navigational_or_entity_locked" | "off_topic" | "already_covered" | "unwinnable" | "unsustainable_format" | "too_thin" | "accept";
68
+ intent_statement: string;
69
+ winnability?: {
70
+ verdict: "accept" | "reject" | "abstain";
71
+ confidence: number;
72
+ serp_summary: string;
73
+ } | undefined;
74
+ }, {
75
+ verdict: "accept" | "reject" | "abstain";
76
+ confidence: number;
77
+ reason_code: "no_coherent_intent" | "navigational_or_entity_locked" | "off_topic" | "already_covered" | "unwinnable" | "unsustainable_format" | "too_thin" | "accept";
78
+ intent_statement: string;
79
+ winnability?: {
80
+ verdict: "accept" | "reject" | "abstain";
81
+ confidence: number;
82
+ serp_summary: string;
83
+ } | undefined;
84
+ }>;
85
+ export declare const InsightSemanticEvidenceSchema: z.ZodObject<{
86
+ topicalFit: z.ZodNumber;
87
+ disposition: z.ZodEnum<["reject", "judge_only", "advance"]>;
88
+ coverageSimilarity: z.ZodNumber;
89
+ coverageAligned: z.ZodBoolean;
90
+ sharedConcepts: z.ZodNumber;
91
+ nearest: z.ZodArray<z.ZodObject<{
92
+ title: z.ZodString;
93
+ slug: z.ZodString;
94
+ similarity: z.ZodNumber;
95
+ }, "strip", z.ZodTypeAny, {
96
+ slug: string;
97
+ title: string;
98
+ similarity: number;
99
+ }, {
100
+ slug: string;
101
+ title: string;
102
+ similarity: number;
103
+ }>, "many">;
104
+ }, "strip", z.ZodTypeAny, {
105
+ topicalFit: number;
106
+ disposition: "reject" | "judge_only" | "advance";
107
+ coverageSimilarity: number;
108
+ coverageAligned: boolean;
109
+ sharedConcepts: number;
110
+ nearest: {
111
+ slug: string;
112
+ title: string;
113
+ similarity: number;
114
+ }[];
115
+ }, {
116
+ topicalFit: number;
117
+ disposition: "reject" | "judge_only" | "advance";
118
+ coverageSimilarity: number;
119
+ coverageAligned: boolean;
120
+ sharedConcepts: number;
121
+ nearest: {
122
+ slug: string;
123
+ title: string;
124
+ similarity: number;
125
+ }[];
126
+ }>;
2
127
  export declare const InsightEvidenceDemandSchema: z.ZodObject<{
3
128
  query: z.ZodString;
4
129
  impressions: z.ZodNumber;
@@ -6,6 +131,118 @@ export declare const InsightEvidenceDemandSchema: z.ZodObject<{
6
131
  ctr: z.ZodNumber;
7
132
  position: z.ZodNumber;
8
133
  trend: z.ZodNumber;
134
+ lane: z.ZodOptional<z.ZodEnum<["commission", "refresh", "optimize-ctr", "consolidate", "monitor"]>>;
135
+ coveredBy: z.ZodOptional<z.ZodNullable<z.ZodString>>;
136
+ coverageSource: z.ZodOptional<z.ZodNullable<z.ZodEnum<["page_join", "semantic", "lexical"]>>>;
137
+ scoreBreakdown: z.ZodOptional<z.ZodObject<{
138
+ actualCtr: z.ZodNumber;
139
+ expectedCtr: z.ZodNumber;
140
+ expectedClicksGain: z.ZodNumber;
141
+ laneWeight: z.ZodNumber;
142
+ score: z.ZodNumber;
143
+ targetPosition: z.ZodNumber;
144
+ topicalFit: z.ZodNumber;
145
+ winnabilityPrior: z.ZodNumber;
146
+ }, "strip", z.ZodTypeAny, {
147
+ actualCtr: number;
148
+ expectedCtr: number;
149
+ expectedClicksGain: number;
150
+ laneWeight: number;
151
+ score: number;
152
+ targetPosition: number;
153
+ topicalFit: number;
154
+ winnabilityPrior: number;
155
+ }, {
156
+ actualCtr: number;
157
+ expectedCtr: number;
158
+ expectedClicksGain: number;
159
+ laneWeight: number;
160
+ score: number;
161
+ targetPosition: number;
162
+ topicalFit: number;
163
+ winnabilityPrior: number;
164
+ }>>;
165
+ judge: z.ZodOptional<z.ZodObject<{
166
+ verdict: z.ZodEnum<["accept", "reject", "abstain"]>;
167
+ reason_code: z.ZodEnum<["no_coherent_intent", "navigational_or_entity_locked", "off_topic", "already_covered", "unwinnable", "unsustainable_format", "too_thin", "accept"]>;
168
+ confidence: z.ZodNumber;
169
+ intent_statement: z.ZodString;
170
+ winnability: z.ZodOptional<z.ZodObject<{
171
+ verdict: z.ZodEnum<["accept", "reject", "abstain"]>;
172
+ confidence: z.ZodNumber;
173
+ serp_summary: z.ZodString;
174
+ }, "strip", z.ZodTypeAny, {
175
+ verdict: "accept" | "reject" | "abstain";
176
+ confidence: number;
177
+ serp_summary: string;
178
+ }, {
179
+ verdict: "accept" | "reject" | "abstain";
180
+ confidence: number;
181
+ serp_summary: string;
182
+ }>>;
183
+ }, "strip", z.ZodTypeAny, {
184
+ verdict: "accept" | "reject" | "abstain";
185
+ confidence: number;
186
+ reason_code: "no_coherent_intent" | "navigational_or_entity_locked" | "off_topic" | "already_covered" | "unwinnable" | "unsustainable_format" | "too_thin" | "accept";
187
+ intent_statement: string;
188
+ winnability?: {
189
+ verdict: "accept" | "reject" | "abstain";
190
+ confidence: number;
191
+ serp_summary: string;
192
+ } | undefined;
193
+ }, {
194
+ verdict: "accept" | "reject" | "abstain";
195
+ confidence: number;
196
+ reason_code: "no_coherent_intent" | "navigational_or_entity_locked" | "off_topic" | "already_covered" | "unwinnable" | "unsustainable_format" | "too_thin" | "accept";
197
+ intent_statement: string;
198
+ winnability?: {
199
+ verdict: "accept" | "reject" | "abstain";
200
+ confidence: number;
201
+ serp_summary: string;
202
+ } | undefined;
203
+ }>>;
204
+ semantic: z.ZodOptional<z.ZodObject<{
205
+ topicalFit: z.ZodNumber;
206
+ disposition: z.ZodEnum<["reject", "judge_only", "advance"]>;
207
+ coverageSimilarity: z.ZodNumber;
208
+ coverageAligned: z.ZodBoolean;
209
+ sharedConcepts: z.ZodNumber;
210
+ nearest: z.ZodArray<z.ZodObject<{
211
+ title: z.ZodString;
212
+ slug: z.ZodString;
213
+ similarity: z.ZodNumber;
214
+ }, "strip", z.ZodTypeAny, {
215
+ slug: string;
216
+ title: string;
217
+ similarity: number;
218
+ }, {
219
+ slug: string;
220
+ title: string;
221
+ similarity: number;
222
+ }>, "many">;
223
+ }, "strip", z.ZodTypeAny, {
224
+ topicalFit: number;
225
+ disposition: "reject" | "judge_only" | "advance";
226
+ coverageSimilarity: number;
227
+ coverageAligned: boolean;
228
+ sharedConcepts: number;
229
+ nearest: {
230
+ slug: string;
231
+ title: string;
232
+ similarity: number;
233
+ }[];
234
+ }, {
235
+ topicalFit: number;
236
+ disposition: "reject" | "judge_only" | "advance";
237
+ coverageSimilarity: number;
238
+ coverageAligned: boolean;
239
+ sharedConcepts: number;
240
+ nearest: {
241
+ slug: string;
242
+ title: string;
243
+ similarity: number;
244
+ }[];
245
+ }>>;
9
246
  }, "strip", z.ZodTypeAny, {
10
247
  position: number;
11
248
  query: string;
@@ -13,6 +250,42 @@ export declare const InsightEvidenceDemandSchema: z.ZodObject<{
13
250
  clicks: number;
14
251
  ctr: number;
15
252
  trend: number;
253
+ lane?: "commission" | "refresh" | "optimize-ctr" | "consolidate" | "monitor" | undefined;
254
+ coveredBy?: string | null | undefined;
255
+ semantic?: {
256
+ topicalFit: number;
257
+ disposition: "reject" | "judge_only" | "advance";
258
+ coverageSimilarity: number;
259
+ coverageAligned: boolean;
260
+ sharedConcepts: number;
261
+ nearest: {
262
+ slug: string;
263
+ title: string;
264
+ similarity: number;
265
+ }[];
266
+ } | undefined;
267
+ coverageSource?: "page_join" | "semantic" | "lexical" | null | undefined;
268
+ scoreBreakdown?: {
269
+ actualCtr: number;
270
+ expectedCtr: number;
271
+ expectedClicksGain: number;
272
+ laneWeight: number;
273
+ score: number;
274
+ targetPosition: number;
275
+ topicalFit: number;
276
+ winnabilityPrior: number;
277
+ } | undefined;
278
+ judge?: {
279
+ verdict: "accept" | "reject" | "abstain";
280
+ confidence: number;
281
+ reason_code: "no_coherent_intent" | "navigational_or_entity_locked" | "off_topic" | "already_covered" | "unwinnable" | "unsustainable_format" | "too_thin" | "accept";
282
+ intent_statement: string;
283
+ winnability?: {
284
+ verdict: "accept" | "reject" | "abstain";
285
+ confidence: number;
286
+ serp_summary: string;
287
+ } | undefined;
288
+ } | undefined;
16
289
  }, {
17
290
  position: number;
18
291
  query: string;
@@ -20,16 +293,230 @@ export declare const InsightEvidenceDemandSchema: z.ZodObject<{
20
293
  clicks: number;
21
294
  ctr: number;
22
295
  trend: number;
296
+ lane?: "commission" | "refresh" | "optimize-ctr" | "consolidate" | "monitor" | undefined;
297
+ coveredBy?: string | null | undefined;
298
+ semantic?: {
299
+ topicalFit: number;
300
+ disposition: "reject" | "judge_only" | "advance";
301
+ coverageSimilarity: number;
302
+ coverageAligned: boolean;
303
+ sharedConcepts: number;
304
+ nearest: {
305
+ slug: string;
306
+ title: string;
307
+ similarity: number;
308
+ }[];
309
+ } | undefined;
310
+ coverageSource?: "page_join" | "semantic" | "lexical" | null | undefined;
311
+ scoreBreakdown?: {
312
+ actualCtr: number;
313
+ expectedCtr: number;
314
+ expectedClicksGain: number;
315
+ laneWeight: number;
316
+ score: number;
317
+ targetPosition: number;
318
+ topicalFit: number;
319
+ winnabilityPrior: number;
320
+ } | undefined;
321
+ judge?: {
322
+ verdict: "accept" | "reject" | "abstain";
323
+ confidence: number;
324
+ reason_code: "no_coherent_intent" | "navigational_or_entity_locked" | "off_topic" | "already_covered" | "unwinnable" | "unsustainable_format" | "too_thin" | "accept";
325
+ intent_statement: string;
326
+ winnability?: {
327
+ verdict: "accept" | "reject" | "abstain";
328
+ confidence: number;
329
+ serp_summary: string;
330
+ } | undefined;
331
+ } | undefined;
23
332
  }>;
24
333
  export declare const InsightEvidenceOpportunitySchema: z.ZodObject<{
25
334
  basis: z.ZodString;
26
335
  source_count: z.ZodNumber;
336
+ lane: z.ZodOptional<z.ZodEnum<["commission", "refresh", "optimize-ctr", "consolidate", "monitor"]>>;
337
+ scoreBreakdown: z.ZodOptional<z.ZodObject<{
338
+ actualCtr: z.ZodNumber;
339
+ expectedCtr: z.ZodNumber;
340
+ expectedClicksGain: z.ZodNumber;
341
+ laneWeight: z.ZodNumber;
342
+ score: z.ZodNumber;
343
+ targetPosition: z.ZodNumber;
344
+ topicalFit: z.ZodNumber;
345
+ winnabilityPrior: z.ZodNumber;
346
+ }, "strip", z.ZodTypeAny, {
347
+ actualCtr: number;
348
+ expectedCtr: number;
349
+ expectedClicksGain: number;
350
+ laneWeight: number;
351
+ score: number;
352
+ targetPosition: number;
353
+ topicalFit: number;
354
+ winnabilityPrior: number;
355
+ }, {
356
+ actualCtr: number;
357
+ expectedCtr: number;
358
+ expectedClicksGain: number;
359
+ laneWeight: number;
360
+ score: number;
361
+ targetPosition: number;
362
+ topicalFit: number;
363
+ winnabilityPrior: number;
364
+ }>>;
365
+ judge: z.ZodOptional<z.ZodObject<{
366
+ verdict: z.ZodEnum<["accept", "reject", "abstain"]>;
367
+ reason_code: z.ZodEnum<["no_coherent_intent", "navigational_or_entity_locked", "off_topic", "already_covered", "unwinnable", "unsustainable_format", "too_thin", "accept"]>;
368
+ confidence: z.ZodNumber;
369
+ intent_statement: z.ZodString;
370
+ winnability: z.ZodOptional<z.ZodObject<{
371
+ verdict: z.ZodEnum<["accept", "reject", "abstain"]>;
372
+ confidence: z.ZodNumber;
373
+ serp_summary: z.ZodString;
374
+ }, "strip", z.ZodTypeAny, {
375
+ verdict: "accept" | "reject" | "abstain";
376
+ confidence: number;
377
+ serp_summary: string;
378
+ }, {
379
+ verdict: "accept" | "reject" | "abstain";
380
+ confidence: number;
381
+ serp_summary: string;
382
+ }>>;
383
+ }, "strip", z.ZodTypeAny, {
384
+ verdict: "accept" | "reject" | "abstain";
385
+ confidence: number;
386
+ reason_code: "no_coherent_intent" | "navigational_or_entity_locked" | "off_topic" | "already_covered" | "unwinnable" | "unsustainable_format" | "too_thin" | "accept";
387
+ intent_statement: string;
388
+ winnability?: {
389
+ verdict: "accept" | "reject" | "abstain";
390
+ confidence: number;
391
+ serp_summary: string;
392
+ } | undefined;
393
+ }, {
394
+ verdict: "accept" | "reject" | "abstain";
395
+ confidence: number;
396
+ reason_code: "no_coherent_intent" | "navigational_or_entity_locked" | "off_topic" | "already_covered" | "unwinnable" | "unsustainable_format" | "too_thin" | "accept";
397
+ intent_statement: string;
398
+ winnability?: {
399
+ verdict: "accept" | "reject" | "abstain";
400
+ confidence: number;
401
+ serp_summary: string;
402
+ } | undefined;
403
+ }>>;
404
+ semantic: z.ZodOptional<z.ZodObject<{
405
+ topicalFit: z.ZodNumber;
406
+ disposition: z.ZodEnum<["reject", "judge_only", "advance"]>;
407
+ coverageSimilarity: z.ZodNumber;
408
+ coverageAligned: z.ZodBoolean;
409
+ sharedConcepts: z.ZodNumber;
410
+ nearest: z.ZodArray<z.ZodObject<{
411
+ title: z.ZodString;
412
+ slug: z.ZodString;
413
+ similarity: z.ZodNumber;
414
+ }, "strip", z.ZodTypeAny, {
415
+ slug: string;
416
+ title: string;
417
+ similarity: number;
418
+ }, {
419
+ slug: string;
420
+ title: string;
421
+ similarity: number;
422
+ }>, "many">;
423
+ }, "strip", z.ZodTypeAny, {
424
+ topicalFit: number;
425
+ disposition: "reject" | "judge_only" | "advance";
426
+ coverageSimilarity: number;
427
+ coverageAligned: boolean;
428
+ sharedConcepts: number;
429
+ nearest: {
430
+ slug: string;
431
+ title: string;
432
+ similarity: number;
433
+ }[];
434
+ }, {
435
+ topicalFit: number;
436
+ disposition: "reject" | "judge_only" | "advance";
437
+ coverageSimilarity: number;
438
+ coverageAligned: boolean;
439
+ sharedConcepts: number;
440
+ nearest: {
441
+ slug: string;
442
+ title: string;
443
+ similarity: number;
444
+ }[];
445
+ }>>;
27
446
  }, "strip", z.ZodTypeAny, {
28
447
  basis: string;
29
448
  source_count: number;
449
+ lane?: "commission" | "refresh" | "optimize-ctr" | "consolidate" | "monitor" | undefined;
450
+ semantic?: {
451
+ topicalFit: number;
452
+ disposition: "reject" | "judge_only" | "advance";
453
+ coverageSimilarity: number;
454
+ coverageAligned: boolean;
455
+ sharedConcepts: number;
456
+ nearest: {
457
+ slug: string;
458
+ title: string;
459
+ similarity: number;
460
+ }[];
461
+ } | undefined;
462
+ scoreBreakdown?: {
463
+ actualCtr: number;
464
+ expectedCtr: number;
465
+ expectedClicksGain: number;
466
+ laneWeight: number;
467
+ score: number;
468
+ targetPosition: number;
469
+ topicalFit: number;
470
+ winnabilityPrior: number;
471
+ } | undefined;
472
+ judge?: {
473
+ verdict: "accept" | "reject" | "abstain";
474
+ confidence: number;
475
+ reason_code: "no_coherent_intent" | "navigational_or_entity_locked" | "off_topic" | "already_covered" | "unwinnable" | "unsustainable_format" | "too_thin" | "accept";
476
+ intent_statement: string;
477
+ winnability?: {
478
+ verdict: "accept" | "reject" | "abstain";
479
+ confidence: number;
480
+ serp_summary: string;
481
+ } | undefined;
482
+ } | undefined;
30
483
  }, {
31
484
  basis: string;
32
485
  source_count: number;
486
+ lane?: "commission" | "refresh" | "optimize-ctr" | "consolidate" | "monitor" | undefined;
487
+ semantic?: {
488
+ topicalFit: number;
489
+ disposition: "reject" | "judge_only" | "advance";
490
+ coverageSimilarity: number;
491
+ coverageAligned: boolean;
492
+ sharedConcepts: number;
493
+ nearest: {
494
+ slug: string;
495
+ title: string;
496
+ similarity: number;
497
+ }[];
498
+ } | undefined;
499
+ scoreBreakdown?: {
500
+ actualCtr: number;
501
+ expectedCtr: number;
502
+ expectedClicksGain: number;
503
+ laneWeight: number;
504
+ score: number;
505
+ targetPosition: number;
506
+ topicalFit: number;
507
+ winnabilityPrior: number;
508
+ } | undefined;
509
+ judge?: {
510
+ verdict: "accept" | "reject" | "abstain";
511
+ confidence: number;
512
+ reason_code: "no_coherent_intent" | "navigational_or_entity_locked" | "off_topic" | "already_covered" | "unwinnable" | "unsustainable_format" | "too_thin" | "accept";
513
+ intent_statement: string;
514
+ winnability?: {
515
+ verdict: "accept" | "reject" | "abstain";
516
+ confidence: number;
517
+ serp_summary: string;
518
+ } | undefined;
519
+ } | undefined;
33
520
  }>;
34
521
  export declare const InsightEvidenceSchema: z.ZodUnion<[z.ZodObject<{
35
522
  query: z.ZodString;
@@ -38,6 +525,118 @@ export declare const InsightEvidenceSchema: z.ZodUnion<[z.ZodObject<{
38
525
  ctr: z.ZodNumber;
39
526
  position: z.ZodNumber;
40
527
  trend: z.ZodNumber;
528
+ lane: z.ZodOptional<z.ZodEnum<["commission", "refresh", "optimize-ctr", "consolidate", "monitor"]>>;
529
+ coveredBy: z.ZodOptional<z.ZodNullable<z.ZodString>>;
530
+ coverageSource: z.ZodOptional<z.ZodNullable<z.ZodEnum<["page_join", "semantic", "lexical"]>>>;
531
+ scoreBreakdown: z.ZodOptional<z.ZodObject<{
532
+ actualCtr: z.ZodNumber;
533
+ expectedCtr: z.ZodNumber;
534
+ expectedClicksGain: z.ZodNumber;
535
+ laneWeight: z.ZodNumber;
536
+ score: z.ZodNumber;
537
+ targetPosition: z.ZodNumber;
538
+ topicalFit: z.ZodNumber;
539
+ winnabilityPrior: z.ZodNumber;
540
+ }, "strip", z.ZodTypeAny, {
541
+ actualCtr: number;
542
+ expectedCtr: number;
543
+ expectedClicksGain: number;
544
+ laneWeight: number;
545
+ score: number;
546
+ targetPosition: number;
547
+ topicalFit: number;
548
+ winnabilityPrior: number;
549
+ }, {
550
+ actualCtr: number;
551
+ expectedCtr: number;
552
+ expectedClicksGain: number;
553
+ laneWeight: number;
554
+ score: number;
555
+ targetPosition: number;
556
+ topicalFit: number;
557
+ winnabilityPrior: number;
558
+ }>>;
559
+ judge: z.ZodOptional<z.ZodObject<{
560
+ verdict: z.ZodEnum<["accept", "reject", "abstain"]>;
561
+ reason_code: z.ZodEnum<["no_coherent_intent", "navigational_or_entity_locked", "off_topic", "already_covered", "unwinnable", "unsustainable_format", "too_thin", "accept"]>;
562
+ confidence: z.ZodNumber;
563
+ intent_statement: z.ZodString;
564
+ winnability: z.ZodOptional<z.ZodObject<{
565
+ verdict: z.ZodEnum<["accept", "reject", "abstain"]>;
566
+ confidence: z.ZodNumber;
567
+ serp_summary: z.ZodString;
568
+ }, "strip", z.ZodTypeAny, {
569
+ verdict: "accept" | "reject" | "abstain";
570
+ confidence: number;
571
+ serp_summary: string;
572
+ }, {
573
+ verdict: "accept" | "reject" | "abstain";
574
+ confidence: number;
575
+ serp_summary: string;
576
+ }>>;
577
+ }, "strip", z.ZodTypeAny, {
578
+ verdict: "accept" | "reject" | "abstain";
579
+ confidence: number;
580
+ reason_code: "no_coherent_intent" | "navigational_or_entity_locked" | "off_topic" | "already_covered" | "unwinnable" | "unsustainable_format" | "too_thin" | "accept";
581
+ intent_statement: string;
582
+ winnability?: {
583
+ verdict: "accept" | "reject" | "abstain";
584
+ confidence: number;
585
+ serp_summary: string;
586
+ } | undefined;
587
+ }, {
588
+ verdict: "accept" | "reject" | "abstain";
589
+ confidence: number;
590
+ reason_code: "no_coherent_intent" | "navigational_or_entity_locked" | "off_topic" | "already_covered" | "unwinnable" | "unsustainable_format" | "too_thin" | "accept";
591
+ intent_statement: string;
592
+ winnability?: {
593
+ verdict: "accept" | "reject" | "abstain";
594
+ confidence: number;
595
+ serp_summary: string;
596
+ } | undefined;
597
+ }>>;
598
+ semantic: z.ZodOptional<z.ZodObject<{
599
+ topicalFit: z.ZodNumber;
600
+ disposition: z.ZodEnum<["reject", "judge_only", "advance"]>;
601
+ coverageSimilarity: z.ZodNumber;
602
+ coverageAligned: z.ZodBoolean;
603
+ sharedConcepts: z.ZodNumber;
604
+ nearest: z.ZodArray<z.ZodObject<{
605
+ title: z.ZodString;
606
+ slug: z.ZodString;
607
+ similarity: z.ZodNumber;
608
+ }, "strip", z.ZodTypeAny, {
609
+ slug: string;
610
+ title: string;
611
+ similarity: number;
612
+ }, {
613
+ slug: string;
614
+ title: string;
615
+ similarity: number;
616
+ }>, "many">;
617
+ }, "strip", z.ZodTypeAny, {
618
+ topicalFit: number;
619
+ disposition: "reject" | "judge_only" | "advance";
620
+ coverageSimilarity: number;
621
+ coverageAligned: boolean;
622
+ sharedConcepts: number;
623
+ nearest: {
624
+ slug: string;
625
+ title: string;
626
+ similarity: number;
627
+ }[];
628
+ }, {
629
+ topicalFit: number;
630
+ disposition: "reject" | "judge_only" | "advance";
631
+ coverageSimilarity: number;
632
+ coverageAligned: boolean;
633
+ sharedConcepts: number;
634
+ nearest: {
635
+ slug: string;
636
+ title: string;
637
+ similarity: number;
638
+ }[];
639
+ }>>;
41
640
  }, "strip", z.ZodTypeAny, {
42
641
  position: number;
43
642
  query: string;
@@ -45,6 +644,42 @@ export declare const InsightEvidenceSchema: z.ZodUnion<[z.ZodObject<{
45
644
  clicks: number;
46
645
  ctr: number;
47
646
  trend: number;
647
+ lane?: "commission" | "refresh" | "optimize-ctr" | "consolidate" | "monitor" | undefined;
648
+ coveredBy?: string | null | undefined;
649
+ semantic?: {
650
+ topicalFit: number;
651
+ disposition: "reject" | "judge_only" | "advance";
652
+ coverageSimilarity: number;
653
+ coverageAligned: boolean;
654
+ sharedConcepts: number;
655
+ nearest: {
656
+ slug: string;
657
+ title: string;
658
+ similarity: number;
659
+ }[];
660
+ } | undefined;
661
+ coverageSource?: "page_join" | "semantic" | "lexical" | null | undefined;
662
+ scoreBreakdown?: {
663
+ actualCtr: number;
664
+ expectedCtr: number;
665
+ expectedClicksGain: number;
666
+ laneWeight: number;
667
+ score: number;
668
+ targetPosition: number;
669
+ topicalFit: number;
670
+ winnabilityPrior: number;
671
+ } | undefined;
672
+ judge?: {
673
+ verdict: "accept" | "reject" | "abstain";
674
+ confidence: number;
675
+ reason_code: "no_coherent_intent" | "navigational_or_entity_locked" | "off_topic" | "already_covered" | "unwinnable" | "unsustainable_format" | "too_thin" | "accept";
676
+ intent_statement: string;
677
+ winnability?: {
678
+ verdict: "accept" | "reject" | "abstain";
679
+ confidence: number;
680
+ serp_summary: string;
681
+ } | undefined;
682
+ } | undefined;
48
683
  }, {
49
684
  position: number;
50
685
  query: string;
@@ -52,15 +687,229 @@ export declare const InsightEvidenceSchema: z.ZodUnion<[z.ZodObject<{
52
687
  clicks: number;
53
688
  ctr: number;
54
689
  trend: number;
690
+ lane?: "commission" | "refresh" | "optimize-ctr" | "consolidate" | "monitor" | undefined;
691
+ coveredBy?: string | null | undefined;
692
+ semantic?: {
693
+ topicalFit: number;
694
+ disposition: "reject" | "judge_only" | "advance";
695
+ coverageSimilarity: number;
696
+ coverageAligned: boolean;
697
+ sharedConcepts: number;
698
+ nearest: {
699
+ slug: string;
700
+ title: string;
701
+ similarity: number;
702
+ }[];
703
+ } | undefined;
704
+ coverageSource?: "page_join" | "semantic" | "lexical" | null | undefined;
705
+ scoreBreakdown?: {
706
+ actualCtr: number;
707
+ expectedCtr: number;
708
+ expectedClicksGain: number;
709
+ laneWeight: number;
710
+ score: number;
711
+ targetPosition: number;
712
+ topicalFit: number;
713
+ winnabilityPrior: number;
714
+ } | undefined;
715
+ judge?: {
716
+ verdict: "accept" | "reject" | "abstain";
717
+ confidence: number;
718
+ reason_code: "no_coherent_intent" | "navigational_or_entity_locked" | "off_topic" | "already_covered" | "unwinnable" | "unsustainable_format" | "too_thin" | "accept";
719
+ intent_statement: string;
720
+ winnability?: {
721
+ verdict: "accept" | "reject" | "abstain";
722
+ confidence: number;
723
+ serp_summary: string;
724
+ } | undefined;
725
+ } | undefined;
55
726
  }>, z.ZodObject<{
56
727
  basis: z.ZodString;
57
728
  source_count: z.ZodNumber;
729
+ lane: z.ZodOptional<z.ZodEnum<["commission", "refresh", "optimize-ctr", "consolidate", "monitor"]>>;
730
+ scoreBreakdown: z.ZodOptional<z.ZodObject<{
731
+ actualCtr: z.ZodNumber;
732
+ expectedCtr: z.ZodNumber;
733
+ expectedClicksGain: z.ZodNumber;
734
+ laneWeight: z.ZodNumber;
735
+ score: z.ZodNumber;
736
+ targetPosition: z.ZodNumber;
737
+ topicalFit: z.ZodNumber;
738
+ winnabilityPrior: z.ZodNumber;
739
+ }, "strip", z.ZodTypeAny, {
740
+ actualCtr: number;
741
+ expectedCtr: number;
742
+ expectedClicksGain: number;
743
+ laneWeight: number;
744
+ score: number;
745
+ targetPosition: number;
746
+ topicalFit: number;
747
+ winnabilityPrior: number;
748
+ }, {
749
+ actualCtr: number;
750
+ expectedCtr: number;
751
+ expectedClicksGain: number;
752
+ laneWeight: number;
753
+ score: number;
754
+ targetPosition: number;
755
+ topicalFit: number;
756
+ winnabilityPrior: number;
757
+ }>>;
758
+ judge: z.ZodOptional<z.ZodObject<{
759
+ verdict: z.ZodEnum<["accept", "reject", "abstain"]>;
760
+ reason_code: z.ZodEnum<["no_coherent_intent", "navigational_or_entity_locked", "off_topic", "already_covered", "unwinnable", "unsustainable_format", "too_thin", "accept"]>;
761
+ confidence: z.ZodNumber;
762
+ intent_statement: z.ZodString;
763
+ winnability: z.ZodOptional<z.ZodObject<{
764
+ verdict: z.ZodEnum<["accept", "reject", "abstain"]>;
765
+ confidence: z.ZodNumber;
766
+ serp_summary: z.ZodString;
767
+ }, "strip", z.ZodTypeAny, {
768
+ verdict: "accept" | "reject" | "abstain";
769
+ confidence: number;
770
+ serp_summary: string;
771
+ }, {
772
+ verdict: "accept" | "reject" | "abstain";
773
+ confidence: number;
774
+ serp_summary: string;
775
+ }>>;
776
+ }, "strip", z.ZodTypeAny, {
777
+ verdict: "accept" | "reject" | "abstain";
778
+ confidence: number;
779
+ reason_code: "no_coherent_intent" | "navigational_or_entity_locked" | "off_topic" | "already_covered" | "unwinnable" | "unsustainable_format" | "too_thin" | "accept";
780
+ intent_statement: string;
781
+ winnability?: {
782
+ verdict: "accept" | "reject" | "abstain";
783
+ confidence: number;
784
+ serp_summary: string;
785
+ } | undefined;
786
+ }, {
787
+ verdict: "accept" | "reject" | "abstain";
788
+ confidence: number;
789
+ reason_code: "no_coherent_intent" | "navigational_or_entity_locked" | "off_topic" | "already_covered" | "unwinnable" | "unsustainable_format" | "too_thin" | "accept";
790
+ intent_statement: string;
791
+ winnability?: {
792
+ verdict: "accept" | "reject" | "abstain";
793
+ confidence: number;
794
+ serp_summary: string;
795
+ } | undefined;
796
+ }>>;
797
+ semantic: z.ZodOptional<z.ZodObject<{
798
+ topicalFit: z.ZodNumber;
799
+ disposition: z.ZodEnum<["reject", "judge_only", "advance"]>;
800
+ coverageSimilarity: z.ZodNumber;
801
+ coverageAligned: z.ZodBoolean;
802
+ sharedConcepts: z.ZodNumber;
803
+ nearest: z.ZodArray<z.ZodObject<{
804
+ title: z.ZodString;
805
+ slug: z.ZodString;
806
+ similarity: z.ZodNumber;
807
+ }, "strip", z.ZodTypeAny, {
808
+ slug: string;
809
+ title: string;
810
+ similarity: number;
811
+ }, {
812
+ slug: string;
813
+ title: string;
814
+ similarity: number;
815
+ }>, "many">;
816
+ }, "strip", z.ZodTypeAny, {
817
+ topicalFit: number;
818
+ disposition: "reject" | "judge_only" | "advance";
819
+ coverageSimilarity: number;
820
+ coverageAligned: boolean;
821
+ sharedConcepts: number;
822
+ nearest: {
823
+ slug: string;
824
+ title: string;
825
+ similarity: number;
826
+ }[];
827
+ }, {
828
+ topicalFit: number;
829
+ disposition: "reject" | "judge_only" | "advance";
830
+ coverageSimilarity: number;
831
+ coverageAligned: boolean;
832
+ sharedConcepts: number;
833
+ nearest: {
834
+ slug: string;
835
+ title: string;
836
+ similarity: number;
837
+ }[];
838
+ }>>;
58
839
  }, "strip", z.ZodTypeAny, {
59
840
  basis: string;
60
841
  source_count: number;
842
+ lane?: "commission" | "refresh" | "optimize-ctr" | "consolidate" | "monitor" | undefined;
843
+ semantic?: {
844
+ topicalFit: number;
845
+ disposition: "reject" | "judge_only" | "advance";
846
+ coverageSimilarity: number;
847
+ coverageAligned: boolean;
848
+ sharedConcepts: number;
849
+ nearest: {
850
+ slug: string;
851
+ title: string;
852
+ similarity: number;
853
+ }[];
854
+ } | undefined;
855
+ scoreBreakdown?: {
856
+ actualCtr: number;
857
+ expectedCtr: number;
858
+ expectedClicksGain: number;
859
+ laneWeight: number;
860
+ score: number;
861
+ targetPosition: number;
862
+ topicalFit: number;
863
+ winnabilityPrior: number;
864
+ } | undefined;
865
+ judge?: {
866
+ verdict: "accept" | "reject" | "abstain";
867
+ confidence: number;
868
+ reason_code: "no_coherent_intent" | "navigational_or_entity_locked" | "off_topic" | "already_covered" | "unwinnable" | "unsustainable_format" | "too_thin" | "accept";
869
+ intent_statement: string;
870
+ winnability?: {
871
+ verdict: "accept" | "reject" | "abstain";
872
+ confidence: number;
873
+ serp_summary: string;
874
+ } | undefined;
875
+ } | undefined;
61
876
  }, {
62
877
  basis: string;
63
878
  source_count: number;
879
+ lane?: "commission" | "refresh" | "optimize-ctr" | "consolidate" | "monitor" | undefined;
880
+ semantic?: {
881
+ topicalFit: number;
882
+ disposition: "reject" | "judge_only" | "advance";
883
+ coverageSimilarity: number;
884
+ coverageAligned: boolean;
885
+ sharedConcepts: number;
886
+ nearest: {
887
+ slug: string;
888
+ title: string;
889
+ similarity: number;
890
+ }[];
891
+ } | undefined;
892
+ scoreBreakdown?: {
893
+ actualCtr: number;
894
+ expectedCtr: number;
895
+ expectedClicksGain: number;
896
+ laneWeight: number;
897
+ score: number;
898
+ targetPosition: number;
899
+ topicalFit: number;
900
+ winnabilityPrior: number;
901
+ } | undefined;
902
+ judge?: {
903
+ verdict: "accept" | "reject" | "abstain";
904
+ confidence: number;
905
+ reason_code: "no_coherent_intent" | "navigational_or_entity_locked" | "off_topic" | "already_covered" | "unwinnable" | "unsustainable_format" | "too_thin" | "accept";
906
+ intent_statement: string;
907
+ winnability?: {
908
+ verdict: "accept" | "reject" | "abstain";
909
+ confidence: number;
910
+ serp_summary: string;
911
+ } | undefined;
912
+ } | undefined;
64
913
  }>]>;
65
914
  /** One recent competitor article — the COMPETITOR-WATCH pulse evidence (carried in
66
915
  * the opaque brief blob; the board surfaces it as the raw rival signal). */
@@ -106,6 +955,42 @@ export declare const InsightBriefSchema: z.ZodObject<{
106
955
  title: string;
107
956
  url: string;
108
957
  }>, "many">;
958
+ format: z.ZodOptional<z.ZodEnum<["cornerstone", "pillar", "standalone"]>>;
959
+ content_outline: z.ZodOptional<z.ZodArray<z.ZodObject<{
960
+ question: z.ZodString;
961
+ demand: z.ZodOptional<z.ZodObject<{
962
+ query: z.ZodString;
963
+ impressions: z.ZodNumber;
964
+ position: z.ZodNumber;
965
+ trend: z.ZodNumber;
966
+ }, "strip", z.ZodTypeAny, {
967
+ position: number;
968
+ query: string;
969
+ impressions: number;
970
+ trend: number;
971
+ }, {
972
+ position: number;
973
+ query: string;
974
+ impressions: number;
975
+ trend: number;
976
+ }>>;
977
+ }, "strip", z.ZodTypeAny, {
978
+ question: string;
979
+ demand?: {
980
+ position: number;
981
+ query: string;
982
+ impressions: number;
983
+ trend: number;
984
+ } | undefined;
985
+ }, {
986
+ question: string;
987
+ demand?: {
988
+ position: number;
989
+ query: string;
990
+ impressions: number;
991
+ trend: number;
992
+ } | undefined;
993
+ }>, "many">>;
109
994
  /**
110
995
  * Which open-web discovery STREAM produced this opportunity row (the theater
111
996
  * split). REQUIRED here: Zod strips unknown brief keys, so without this field the
@@ -145,6 +1030,16 @@ export declare const InsightBriefSchema: z.ZodObject<{
145
1030
  title: string;
146
1031
  url: string;
147
1032
  }[];
1033
+ format?: "cornerstone" | "pillar" | "standalone" | undefined;
1034
+ content_outline?: {
1035
+ question: string;
1036
+ demand?: {
1037
+ position: number;
1038
+ query: string;
1039
+ impressions: number;
1040
+ trend: number;
1041
+ } | undefined;
1042
+ }[] | undefined;
148
1043
  discoveryKind?: "competitor" | "audience_question" | undefined;
149
1044
  competitor_articles?: {
150
1045
  title: string;
@@ -164,6 +1059,16 @@ export declare const InsightBriefSchema: z.ZodObject<{
164
1059
  title: string;
165
1060
  url: string;
166
1061
  }[];
1062
+ format?: "cornerstone" | "pillar" | "standalone" | undefined;
1063
+ content_outline?: {
1064
+ question: string;
1065
+ demand?: {
1066
+ position: number;
1067
+ query: string;
1068
+ impressions: number;
1069
+ trend: number;
1070
+ } | undefined;
1071
+ }[] | undefined;
167
1072
  discoveryKind?: "competitor" | "audience_question" | undefined;
168
1073
  competitor_articles?: {
169
1074
  title: string;
@@ -190,6 +1095,118 @@ export declare const InsightSuggestionRowSchema: z.ZodObject<{
190
1095
  ctr: z.ZodNumber;
191
1096
  position: z.ZodNumber;
192
1097
  trend: z.ZodNumber;
1098
+ lane: z.ZodOptional<z.ZodEnum<["commission", "refresh", "optimize-ctr", "consolidate", "monitor"]>>;
1099
+ coveredBy: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1100
+ coverageSource: z.ZodOptional<z.ZodNullable<z.ZodEnum<["page_join", "semantic", "lexical"]>>>;
1101
+ scoreBreakdown: z.ZodOptional<z.ZodObject<{
1102
+ actualCtr: z.ZodNumber;
1103
+ expectedCtr: z.ZodNumber;
1104
+ expectedClicksGain: z.ZodNumber;
1105
+ laneWeight: z.ZodNumber;
1106
+ score: z.ZodNumber;
1107
+ targetPosition: z.ZodNumber;
1108
+ topicalFit: z.ZodNumber;
1109
+ winnabilityPrior: z.ZodNumber;
1110
+ }, "strip", z.ZodTypeAny, {
1111
+ actualCtr: number;
1112
+ expectedCtr: number;
1113
+ expectedClicksGain: number;
1114
+ laneWeight: number;
1115
+ score: number;
1116
+ targetPosition: number;
1117
+ topicalFit: number;
1118
+ winnabilityPrior: number;
1119
+ }, {
1120
+ actualCtr: number;
1121
+ expectedCtr: number;
1122
+ expectedClicksGain: number;
1123
+ laneWeight: number;
1124
+ score: number;
1125
+ targetPosition: number;
1126
+ topicalFit: number;
1127
+ winnabilityPrior: number;
1128
+ }>>;
1129
+ judge: z.ZodOptional<z.ZodObject<{
1130
+ verdict: z.ZodEnum<["accept", "reject", "abstain"]>;
1131
+ reason_code: z.ZodEnum<["no_coherent_intent", "navigational_or_entity_locked", "off_topic", "already_covered", "unwinnable", "unsustainable_format", "too_thin", "accept"]>;
1132
+ confidence: z.ZodNumber;
1133
+ intent_statement: z.ZodString;
1134
+ winnability: z.ZodOptional<z.ZodObject<{
1135
+ verdict: z.ZodEnum<["accept", "reject", "abstain"]>;
1136
+ confidence: z.ZodNumber;
1137
+ serp_summary: z.ZodString;
1138
+ }, "strip", z.ZodTypeAny, {
1139
+ verdict: "accept" | "reject" | "abstain";
1140
+ confidence: number;
1141
+ serp_summary: string;
1142
+ }, {
1143
+ verdict: "accept" | "reject" | "abstain";
1144
+ confidence: number;
1145
+ serp_summary: string;
1146
+ }>>;
1147
+ }, "strip", z.ZodTypeAny, {
1148
+ verdict: "accept" | "reject" | "abstain";
1149
+ confidence: number;
1150
+ reason_code: "no_coherent_intent" | "navigational_or_entity_locked" | "off_topic" | "already_covered" | "unwinnable" | "unsustainable_format" | "too_thin" | "accept";
1151
+ intent_statement: string;
1152
+ winnability?: {
1153
+ verdict: "accept" | "reject" | "abstain";
1154
+ confidence: number;
1155
+ serp_summary: string;
1156
+ } | undefined;
1157
+ }, {
1158
+ verdict: "accept" | "reject" | "abstain";
1159
+ confidence: number;
1160
+ reason_code: "no_coherent_intent" | "navigational_or_entity_locked" | "off_topic" | "already_covered" | "unwinnable" | "unsustainable_format" | "too_thin" | "accept";
1161
+ intent_statement: string;
1162
+ winnability?: {
1163
+ verdict: "accept" | "reject" | "abstain";
1164
+ confidence: number;
1165
+ serp_summary: string;
1166
+ } | undefined;
1167
+ }>>;
1168
+ semantic: z.ZodOptional<z.ZodObject<{
1169
+ topicalFit: z.ZodNumber;
1170
+ disposition: z.ZodEnum<["reject", "judge_only", "advance"]>;
1171
+ coverageSimilarity: z.ZodNumber;
1172
+ coverageAligned: z.ZodBoolean;
1173
+ sharedConcepts: z.ZodNumber;
1174
+ nearest: z.ZodArray<z.ZodObject<{
1175
+ title: z.ZodString;
1176
+ slug: z.ZodString;
1177
+ similarity: z.ZodNumber;
1178
+ }, "strip", z.ZodTypeAny, {
1179
+ slug: string;
1180
+ title: string;
1181
+ similarity: number;
1182
+ }, {
1183
+ slug: string;
1184
+ title: string;
1185
+ similarity: number;
1186
+ }>, "many">;
1187
+ }, "strip", z.ZodTypeAny, {
1188
+ topicalFit: number;
1189
+ disposition: "reject" | "judge_only" | "advance";
1190
+ coverageSimilarity: number;
1191
+ coverageAligned: boolean;
1192
+ sharedConcepts: number;
1193
+ nearest: {
1194
+ slug: string;
1195
+ title: string;
1196
+ similarity: number;
1197
+ }[];
1198
+ }, {
1199
+ topicalFit: number;
1200
+ disposition: "reject" | "judge_only" | "advance";
1201
+ coverageSimilarity: number;
1202
+ coverageAligned: boolean;
1203
+ sharedConcepts: number;
1204
+ nearest: {
1205
+ slug: string;
1206
+ title: string;
1207
+ similarity: number;
1208
+ }[];
1209
+ }>>;
193
1210
  }, "strip", z.ZodTypeAny, {
194
1211
  position: number;
195
1212
  query: string;
@@ -197,6 +1214,42 @@ export declare const InsightSuggestionRowSchema: z.ZodObject<{
197
1214
  clicks: number;
198
1215
  ctr: number;
199
1216
  trend: number;
1217
+ lane?: "commission" | "refresh" | "optimize-ctr" | "consolidate" | "monitor" | undefined;
1218
+ coveredBy?: string | null | undefined;
1219
+ semantic?: {
1220
+ topicalFit: number;
1221
+ disposition: "reject" | "judge_only" | "advance";
1222
+ coverageSimilarity: number;
1223
+ coverageAligned: boolean;
1224
+ sharedConcepts: number;
1225
+ nearest: {
1226
+ slug: string;
1227
+ title: string;
1228
+ similarity: number;
1229
+ }[];
1230
+ } | undefined;
1231
+ coverageSource?: "page_join" | "semantic" | "lexical" | null | undefined;
1232
+ scoreBreakdown?: {
1233
+ actualCtr: number;
1234
+ expectedCtr: number;
1235
+ expectedClicksGain: number;
1236
+ laneWeight: number;
1237
+ score: number;
1238
+ targetPosition: number;
1239
+ topicalFit: number;
1240
+ winnabilityPrior: number;
1241
+ } | undefined;
1242
+ judge?: {
1243
+ verdict: "accept" | "reject" | "abstain";
1244
+ confidence: number;
1245
+ reason_code: "no_coherent_intent" | "navigational_or_entity_locked" | "off_topic" | "already_covered" | "unwinnable" | "unsustainable_format" | "too_thin" | "accept";
1246
+ intent_statement: string;
1247
+ winnability?: {
1248
+ verdict: "accept" | "reject" | "abstain";
1249
+ confidence: number;
1250
+ serp_summary: string;
1251
+ } | undefined;
1252
+ } | undefined;
200
1253
  }, {
201
1254
  position: number;
202
1255
  query: string;
@@ -204,15 +1257,229 @@ export declare const InsightSuggestionRowSchema: z.ZodObject<{
204
1257
  clicks: number;
205
1258
  ctr: number;
206
1259
  trend: number;
1260
+ lane?: "commission" | "refresh" | "optimize-ctr" | "consolidate" | "monitor" | undefined;
1261
+ coveredBy?: string | null | undefined;
1262
+ semantic?: {
1263
+ topicalFit: number;
1264
+ disposition: "reject" | "judge_only" | "advance";
1265
+ coverageSimilarity: number;
1266
+ coverageAligned: boolean;
1267
+ sharedConcepts: number;
1268
+ nearest: {
1269
+ slug: string;
1270
+ title: string;
1271
+ similarity: number;
1272
+ }[];
1273
+ } | undefined;
1274
+ coverageSource?: "page_join" | "semantic" | "lexical" | null | undefined;
1275
+ scoreBreakdown?: {
1276
+ actualCtr: number;
1277
+ expectedCtr: number;
1278
+ expectedClicksGain: number;
1279
+ laneWeight: number;
1280
+ score: number;
1281
+ targetPosition: number;
1282
+ topicalFit: number;
1283
+ winnabilityPrior: number;
1284
+ } | undefined;
1285
+ judge?: {
1286
+ verdict: "accept" | "reject" | "abstain";
1287
+ confidence: number;
1288
+ reason_code: "no_coherent_intent" | "navigational_or_entity_locked" | "off_topic" | "already_covered" | "unwinnable" | "unsustainable_format" | "too_thin" | "accept";
1289
+ intent_statement: string;
1290
+ winnability?: {
1291
+ verdict: "accept" | "reject" | "abstain";
1292
+ confidence: number;
1293
+ serp_summary: string;
1294
+ } | undefined;
1295
+ } | undefined;
207
1296
  }>, z.ZodObject<{
208
1297
  basis: z.ZodString;
209
1298
  source_count: z.ZodNumber;
1299
+ lane: z.ZodOptional<z.ZodEnum<["commission", "refresh", "optimize-ctr", "consolidate", "monitor"]>>;
1300
+ scoreBreakdown: z.ZodOptional<z.ZodObject<{
1301
+ actualCtr: z.ZodNumber;
1302
+ expectedCtr: z.ZodNumber;
1303
+ expectedClicksGain: z.ZodNumber;
1304
+ laneWeight: z.ZodNumber;
1305
+ score: z.ZodNumber;
1306
+ targetPosition: z.ZodNumber;
1307
+ topicalFit: z.ZodNumber;
1308
+ winnabilityPrior: z.ZodNumber;
1309
+ }, "strip", z.ZodTypeAny, {
1310
+ actualCtr: number;
1311
+ expectedCtr: number;
1312
+ expectedClicksGain: number;
1313
+ laneWeight: number;
1314
+ score: number;
1315
+ targetPosition: number;
1316
+ topicalFit: number;
1317
+ winnabilityPrior: number;
1318
+ }, {
1319
+ actualCtr: number;
1320
+ expectedCtr: number;
1321
+ expectedClicksGain: number;
1322
+ laneWeight: number;
1323
+ score: number;
1324
+ targetPosition: number;
1325
+ topicalFit: number;
1326
+ winnabilityPrior: number;
1327
+ }>>;
1328
+ judge: z.ZodOptional<z.ZodObject<{
1329
+ verdict: z.ZodEnum<["accept", "reject", "abstain"]>;
1330
+ reason_code: z.ZodEnum<["no_coherent_intent", "navigational_or_entity_locked", "off_topic", "already_covered", "unwinnable", "unsustainable_format", "too_thin", "accept"]>;
1331
+ confidence: z.ZodNumber;
1332
+ intent_statement: z.ZodString;
1333
+ winnability: z.ZodOptional<z.ZodObject<{
1334
+ verdict: z.ZodEnum<["accept", "reject", "abstain"]>;
1335
+ confidence: z.ZodNumber;
1336
+ serp_summary: z.ZodString;
1337
+ }, "strip", z.ZodTypeAny, {
1338
+ verdict: "accept" | "reject" | "abstain";
1339
+ confidence: number;
1340
+ serp_summary: string;
1341
+ }, {
1342
+ verdict: "accept" | "reject" | "abstain";
1343
+ confidence: number;
1344
+ serp_summary: string;
1345
+ }>>;
1346
+ }, "strip", z.ZodTypeAny, {
1347
+ verdict: "accept" | "reject" | "abstain";
1348
+ confidence: number;
1349
+ reason_code: "no_coherent_intent" | "navigational_or_entity_locked" | "off_topic" | "already_covered" | "unwinnable" | "unsustainable_format" | "too_thin" | "accept";
1350
+ intent_statement: string;
1351
+ winnability?: {
1352
+ verdict: "accept" | "reject" | "abstain";
1353
+ confidence: number;
1354
+ serp_summary: string;
1355
+ } | undefined;
1356
+ }, {
1357
+ verdict: "accept" | "reject" | "abstain";
1358
+ confidence: number;
1359
+ reason_code: "no_coherent_intent" | "navigational_or_entity_locked" | "off_topic" | "already_covered" | "unwinnable" | "unsustainable_format" | "too_thin" | "accept";
1360
+ intent_statement: string;
1361
+ winnability?: {
1362
+ verdict: "accept" | "reject" | "abstain";
1363
+ confidence: number;
1364
+ serp_summary: string;
1365
+ } | undefined;
1366
+ }>>;
1367
+ semantic: z.ZodOptional<z.ZodObject<{
1368
+ topicalFit: z.ZodNumber;
1369
+ disposition: z.ZodEnum<["reject", "judge_only", "advance"]>;
1370
+ coverageSimilarity: z.ZodNumber;
1371
+ coverageAligned: z.ZodBoolean;
1372
+ sharedConcepts: z.ZodNumber;
1373
+ nearest: z.ZodArray<z.ZodObject<{
1374
+ title: z.ZodString;
1375
+ slug: z.ZodString;
1376
+ similarity: z.ZodNumber;
1377
+ }, "strip", z.ZodTypeAny, {
1378
+ slug: string;
1379
+ title: string;
1380
+ similarity: number;
1381
+ }, {
1382
+ slug: string;
1383
+ title: string;
1384
+ similarity: number;
1385
+ }>, "many">;
1386
+ }, "strip", z.ZodTypeAny, {
1387
+ topicalFit: number;
1388
+ disposition: "reject" | "judge_only" | "advance";
1389
+ coverageSimilarity: number;
1390
+ coverageAligned: boolean;
1391
+ sharedConcepts: number;
1392
+ nearest: {
1393
+ slug: string;
1394
+ title: string;
1395
+ similarity: number;
1396
+ }[];
1397
+ }, {
1398
+ topicalFit: number;
1399
+ disposition: "reject" | "judge_only" | "advance";
1400
+ coverageSimilarity: number;
1401
+ coverageAligned: boolean;
1402
+ sharedConcepts: number;
1403
+ nearest: {
1404
+ slug: string;
1405
+ title: string;
1406
+ similarity: number;
1407
+ }[];
1408
+ }>>;
210
1409
  }, "strip", z.ZodTypeAny, {
211
1410
  basis: string;
212
1411
  source_count: number;
1412
+ lane?: "commission" | "refresh" | "optimize-ctr" | "consolidate" | "monitor" | undefined;
1413
+ semantic?: {
1414
+ topicalFit: number;
1415
+ disposition: "reject" | "judge_only" | "advance";
1416
+ coverageSimilarity: number;
1417
+ coverageAligned: boolean;
1418
+ sharedConcepts: number;
1419
+ nearest: {
1420
+ slug: string;
1421
+ title: string;
1422
+ similarity: number;
1423
+ }[];
1424
+ } | undefined;
1425
+ scoreBreakdown?: {
1426
+ actualCtr: number;
1427
+ expectedCtr: number;
1428
+ expectedClicksGain: number;
1429
+ laneWeight: number;
1430
+ score: number;
1431
+ targetPosition: number;
1432
+ topicalFit: number;
1433
+ winnabilityPrior: number;
1434
+ } | undefined;
1435
+ judge?: {
1436
+ verdict: "accept" | "reject" | "abstain";
1437
+ confidence: number;
1438
+ reason_code: "no_coherent_intent" | "navigational_or_entity_locked" | "off_topic" | "already_covered" | "unwinnable" | "unsustainable_format" | "too_thin" | "accept";
1439
+ intent_statement: string;
1440
+ winnability?: {
1441
+ verdict: "accept" | "reject" | "abstain";
1442
+ confidence: number;
1443
+ serp_summary: string;
1444
+ } | undefined;
1445
+ } | undefined;
213
1446
  }, {
214
1447
  basis: string;
215
1448
  source_count: number;
1449
+ lane?: "commission" | "refresh" | "optimize-ctr" | "consolidate" | "monitor" | undefined;
1450
+ semantic?: {
1451
+ topicalFit: number;
1452
+ disposition: "reject" | "judge_only" | "advance";
1453
+ coverageSimilarity: number;
1454
+ coverageAligned: boolean;
1455
+ sharedConcepts: number;
1456
+ nearest: {
1457
+ slug: string;
1458
+ title: string;
1459
+ similarity: number;
1460
+ }[];
1461
+ } | undefined;
1462
+ scoreBreakdown?: {
1463
+ actualCtr: number;
1464
+ expectedCtr: number;
1465
+ expectedClicksGain: number;
1466
+ laneWeight: number;
1467
+ score: number;
1468
+ targetPosition: number;
1469
+ topicalFit: number;
1470
+ winnabilityPrior: number;
1471
+ } | undefined;
1472
+ judge?: {
1473
+ verdict: "accept" | "reject" | "abstain";
1474
+ confidence: number;
1475
+ reason_code: "no_coherent_intent" | "navigational_or_entity_locked" | "off_topic" | "already_covered" | "unwinnable" | "unsustainable_format" | "too_thin" | "accept";
1476
+ intent_statement: string;
1477
+ winnability?: {
1478
+ verdict: "accept" | "reject" | "abstain";
1479
+ confidence: number;
1480
+ serp_summary: string;
1481
+ } | undefined;
1482
+ } | undefined;
216
1483
  }>]>;
217
1484
  brief: z.ZodObject<{
218
1485
  why_now: z.ZodString;
@@ -237,6 +1504,42 @@ export declare const InsightSuggestionRowSchema: z.ZodObject<{
237
1504
  title: string;
238
1505
  url: string;
239
1506
  }>, "many">;
1507
+ format: z.ZodOptional<z.ZodEnum<["cornerstone", "pillar", "standalone"]>>;
1508
+ content_outline: z.ZodOptional<z.ZodArray<z.ZodObject<{
1509
+ question: z.ZodString;
1510
+ demand: z.ZodOptional<z.ZodObject<{
1511
+ query: z.ZodString;
1512
+ impressions: z.ZodNumber;
1513
+ position: z.ZodNumber;
1514
+ trend: z.ZodNumber;
1515
+ }, "strip", z.ZodTypeAny, {
1516
+ position: number;
1517
+ query: string;
1518
+ impressions: number;
1519
+ trend: number;
1520
+ }, {
1521
+ position: number;
1522
+ query: string;
1523
+ impressions: number;
1524
+ trend: number;
1525
+ }>>;
1526
+ }, "strip", z.ZodTypeAny, {
1527
+ question: string;
1528
+ demand?: {
1529
+ position: number;
1530
+ query: string;
1531
+ impressions: number;
1532
+ trend: number;
1533
+ } | undefined;
1534
+ }, {
1535
+ question: string;
1536
+ demand?: {
1537
+ position: number;
1538
+ query: string;
1539
+ impressions: number;
1540
+ trend: number;
1541
+ } | undefined;
1542
+ }>, "many">>;
240
1543
  /**
241
1544
  * Which open-web discovery STREAM produced this opportunity row (the theater
242
1545
  * split). REQUIRED here: Zod strips unknown brief keys, so without this field the
@@ -276,6 +1579,16 @@ export declare const InsightSuggestionRowSchema: z.ZodObject<{
276
1579
  title: string;
277
1580
  url: string;
278
1581
  }[];
1582
+ format?: "cornerstone" | "pillar" | "standalone" | undefined;
1583
+ content_outline?: {
1584
+ question: string;
1585
+ demand?: {
1586
+ position: number;
1587
+ query: string;
1588
+ impressions: number;
1589
+ trend: number;
1590
+ } | undefined;
1591
+ }[] | undefined;
279
1592
  discoveryKind?: "competitor" | "audience_question" | undefined;
280
1593
  competitor_articles?: {
281
1594
  title: string;
@@ -295,6 +1608,16 @@ export declare const InsightSuggestionRowSchema: z.ZodObject<{
295
1608
  title: string;
296
1609
  url: string;
297
1610
  }[];
1611
+ format?: "cornerstone" | "pillar" | "standalone" | undefined;
1612
+ content_outline?: {
1613
+ question: string;
1614
+ demand?: {
1615
+ position: number;
1616
+ query: string;
1617
+ impressions: number;
1618
+ trend: number;
1619
+ } | undefined;
1620
+ }[] | undefined;
298
1621
  discoveryKind?: "competitor" | "audience_question" | undefined;
299
1622
  competitor_articles?: {
300
1623
  title: string;
@@ -323,9 +1646,79 @@ export declare const InsightSuggestionRowSchema: z.ZodObject<{
323
1646
  clicks: number;
324
1647
  ctr: number;
325
1648
  trend: number;
1649
+ lane?: "commission" | "refresh" | "optimize-ctr" | "consolidate" | "monitor" | undefined;
1650
+ coveredBy?: string | null | undefined;
1651
+ semantic?: {
1652
+ topicalFit: number;
1653
+ disposition: "reject" | "judge_only" | "advance";
1654
+ coverageSimilarity: number;
1655
+ coverageAligned: boolean;
1656
+ sharedConcepts: number;
1657
+ nearest: {
1658
+ slug: string;
1659
+ title: string;
1660
+ similarity: number;
1661
+ }[];
1662
+ } | undefined;
1663
+ coverageSource?: "page_join" | "semantic" | "lexical" | null | undefined;
1664
+ scoreBreakdown?: {
1665
+ actualCtr: number;
1666
+ expectedCtr: number;
1667
+ expectedClicksGain: number;
1668
+ laneWeight: number;
1669
+ score: number;
1670
+ targetPosition: number;
1671
+ topicalFit: number;
1672
+ winnabilityPrior: number;
1673
+ } | undefined;
1674
+ judge?: {
1675
+ verdict: "accept" | "reject" | "abstain";
1676
+ confidence: number;
1677
+ reason_code: "no_coherent_intent" | "navigational_or_entity_locked" | "off_topic" | "already_covered" | "unwinnable" | "unsustainable_format" | "too_thin" | "accept";
1678
+ intent_statement: string;
1679
+ winnability?: {
1680
+ verdict: "accept" | "reject" | "abstain";
1681
+ confidence: number;
1682
+ serp_summary: string;
1683
+ } | undefined;
1684
+ } | undefined;
326
1685
  } | {
327
1686
  basis: string;
328
1687
  source_count: number;
1688
+ lane?: "commission" | "refresh" | "optimize-ctr" | "consolidate" | "monitor" | undefined;
1689
+ semantic?: {
1690
+ topicalFit: number;
1691
+ disposition: "reject" | "judge_only" | "advance";
1692
+ coverageSimilarity: number;
1693
+ coverageAligned: boolean;
1694
+ sharedConcepts: number;
1695
+ nearest: {
1696
+ slug: string;
1697
+ title: string;
1698
+ similarity: number;
1699
+ }[];
1700
+ } | undefined;
1701
+ scoreBreakdown?: {
1702
+ actualCtr: number;
1703
+ expectedCtr: number;
1704
+ expectedClicksGain: number;
1705
+ laneWeight: number;
1706
+ score: number;
1707
+ targetPosition: number;
1708
+ topicalFit: number;
1709
+ winnabilityPrior: number;
1710
+ } | undefined;
1711
+ judge?: {
1712
+ verdict: "accept" | "reject" | "abstain";
1713
+ confidence: number;
1714
+ reason_code: "no_coherent_intent" | "navigational_or_entity_locked" | "off_topic" | "already_covered" | "unwinnable" | "unsustainable_format" | "too_thin" | "accept";
1715
+ intent_statement: string;
1716
+ winnability?: {
1717
+ verdict: "accept" | "reject" | "abstain";
1718
+ confidence: number;
1719
+ serp_summary: string;
1720
+ } | undefined;
1721
+ } | undefined;
329
1722
  };
330
1723
  brief: {
331
1724
  cluster: {
@@ -338,6 +1731,16 @@ export declare const InsightSuggestionRowSchema: z.ZodObject<{
338
1731
  title: string;
339
1732
  url: string;
340
1733
  }[];
1734
+ format?: "cornerstone" | "pillar" | "standalone" | undefined;
1735
+ content_outline?: {
1736
+ question: string;
1737
+ demand?: {
1738
+ position: number;
1739
+ query: string;
1740
+ impressions: number;
1741
+ trend: number;
1742
+ } | undefined;
1743
+ }[] | undefined;
341
1744
  discoveryKind?: "competitor" | "audience_question" | undefined;
342
1745
  competitor_articles?: {
343
1746
  title: string;
@@ -366,9 +1769,79 @@ export declare const InsightSuggestionRowSchema: z.ZodObject<{
366
1769
  clicks: number;
367
1770
  ctr: number;
368
1771
  trend: number;
1772
+ lane?: "commission" | "refresh" | "optimize-ctr" | "consolidate" | "monitor" | undefined;
1773
+ coveredBy?: string | null | undefined;
1774
+ semantic?: {
1775
+ topicalFit: number;
1776
+ disposition: "reject" | "judge_only" | "advance";
1777
+ coverageSimilarity: number;
1778
+ coverageAligned: boolean;
1779
+ sharedConcepts: number;
1780
+ nearest: {
1781
+ slug: string;
1782
+ title: string;
1783
+ similarity: number;
1784
+ }[];
1785
+ } | undefined;
1786
+ coverageSource?: "page_join" | "semantic" | "lexical" | null | undefined;
1787
+ scoreBreakdown?: {
1788
+ actualCtr: number;
1789
+ expectedCtr: number;
1790
+ expectedClicksGain: number;
1791
+ laneWeight: number;
1792
+ score: number;
1793
+ targetPosition: number;
1794
+ topicalFit: number;
1795
+ winnabilityPrior: number;
1796
+ } | undefined;
1797
+ judge?: {
1798
+ verdict: "accept" | "reject" | "abstain";
1799
+ confidence: number;
1800
+ reason_code: "no_coherent_intent" | "navigational_or_entity_locked" | "off_topic" | "already_covered" | "unwinnable" | "unsustainable_format" | "too_thin" | "accept";
1801
+ intent_statement: string;
1802
+ winnability?: {
1803
+ verdict: "accept" | "reject" | "abstain";
1804
+ confidence: number;
1805
+ serp_summary: string;
1806
+ } | undefined;
1807
+ } | undefined;
369
1808
  } | {
370
1809
  basis: string;
371
1810
  source_count: number;
1811
+ lane?: "commission" | "refresh" | "optimize-ctr" | "consolidate" | "monitor" | undefined;
1812
+ semantic?: {
1813
+ topicalFit: number;
1814
+ disposition: "reject" | "judge_only" | "advance";
1815
+ coverageSimilarity: number;
1816
+ coverageAligned: boolean;
1817
+ sharedConcepts: number;
1818
+ nearest: {
1819
+ slug: string;
1820
+ title: string;
1821
+ similarity: number;
1822
+ }[];
1823
+ } | undefined;
1824
+ scoreBreakdown?: {
1825
+ actualCtr: number;
1826
+ expectedCtr: number;
1827
+ expectedClicksGain: number;
1828
+ laneWeight: number;
1829
+ score: number;
1830
+ targetPosition: number;
1831
+ topicalFit: number;
1832
+ winnabilityPrior: number;
1833
+ } | undefined;
1834
+ judge?: {
1835
+ verdict: "accept" | "reject" | "abstain";
1836
+ confidence: number;
1837
+ reason_code: "no_coherent_intent" | "navigational_or_entity_locked" | "off_topic" | "already_covered" | "unwinnable" | "unsustainable_format" | "too_thin" | "accept";
1838
+ intent_statement: string;
1839
+ winnability?: {
1840
+ verdict: "accept" | "reject" | "abstain";
1841
+ confidence: number;
1842
+ serp_summary: string;
1843
+ } | undefined;
1844
+ } | undefined;
372
1845
  };
373
1846
  brief: {
374
1847
  cluster: {
@@ -381,6 +1854,16 @@ export declare const InsightSuggestionRowSchema: z.ZodObject<{
381
1854
  title: string;
382
1855
  url: string;
383
1856
  }[];
1857
+ format?: "cornerstone" | "pillar" | "standalone" | undefined;
1858
+ content_outline?: {
1859
+ question: string;
1860
+ demand?: {
1861
+ position: number;
1862
+ query: string;
1863
+ impressions: number;
1864
+ trend: number;
1865
+ } | undefined;
1866
+ }[] | undefined;
384
1867
  discoveryKind?: "competitor" | "audience_question" | undefined;
385
1868
  competitor_articles?: {
386
1869
  title: string;
@@ -509,6 +1992,118 @@ export declare const InsightsIngestPayloadSchema: z.ZodEffects<z.ZodObject<{
509
1992
  ctr: z.ZodNumber;
510
1993
  position: z.ZodNumber;
511
1994
  trend: z.ZodNumber;
1995
+ lane: z.ZodOptional<z.ZodEnum<["commission", "refresh", "optimize-ctr", "consolidate", "monitor"]>>;
1996
+ coveredBy: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1997
+ coverageSource: z.ZodOptional<z.ZodNullable<z.ZodEnum<["page_join", "semantic", "lexical"]>>>;
1998
+ scoreBreakdown: z.ZodOptional<z.ZodObject<{
1999
+ actualCtr: z.ZodNumber;
2000
+ expectedCtr: z.ZodNumber;
2001
+ expectedClicksGain: z.ZodNumber;
2002
+ laneWeight: z.ZodNumber;
2003
+ score: z.ZodNumber;
2004
+ targetPosition: z.ZodNumber;
2005
+ topicalFit: z.ZodNumber;
2006
+ winnabilityPrior: z.ZodNumber;
2007
+ }, "strip", z.ZodTypeAny, {
2008
+ actualCtr: number;
2009
+ expectedCtr: number;
2010
+ expectedClicksGain: number;
2011
+ laneWeight: number;
2012
+ score: number;
2013
+ targetPosition: number;
2014
+ topicalFit: number;
2015
+ winnabilityPrior: number;
2016
+ }, {
2017
+ actualCtr: number;
2018
+ expectedCtr: number;
2019
+ expectedClicksGain: number;
2020
+ laneWeight: number;
2021
+ score: number;
2022
+ targetPosition: number;
2023
+ topicalFit: number;
2024
+ winnabilityPrior: number;
2025
+ }>>;
2026
+ judge: z.ZodOptional<z.ZodObject<{
2027
+ verdict: z.ZodEnum<["accept", "reject", "abstain"]>;
2028
+ reason_code: z.ZodEnum<["no_coherent_intent", "navigational_or_entity_locked", "off_topic", "already_covered", "unwinnable", "unsustainable_format", "too_thin", "accept"]>;
2029
+ confidence: z.ZodNumber;
2030
+ intent_statement: z.ZodString;
2031
+ winnability: z.ZodOptional<z.ZodObject<{
2032
+ verdict: z.ZodEnum<["accept", "reject", "abstain"]>;
2033
+ confidence: z.ZodNumber;
2034
+ serp_summary: z.ZodString;
2035
+ }, "strip", z.ZodTypeAny, {
2036
+ verdict: "accept" | "reject" | "abstain";
2037
+ confidence: number;
2038
+ serp_summary: string;
2039
+ }, {
2040
+ verdict: "accept" | "reject" | "abstain";
2041
+ confidence: number;
2042
+ serp_summary: string;
2043
+ }>>;
2044
+ }, "strip", z.ZodTypeAny, {
2045
+ verdict: "accept" | "reject" | "abstain";
2046
+ confidence: number;
2047
+ reason_code: "no_coherent_intent" | "navigational_or_entity_locked" | "off_topic" | "already_covered" | "unwinnable" | "unsustainable_format" | "too_thin" | "accept";
2048
+ intent_statement: string;
2049
+ winnability?: {
2050
+ verdict: "accept" | "reject" | "abstain";
2051
+ confidence: number;
2052
+ serp_summary: string;
2053
+ } | undefined;
2054
+ }, {
2055
+ verdict: "accept" | "reject" | "abstain";
2056
+ confidence: number;
2057
+ reason_code: "no_coherent_intent" | "navigational_or_entity_locked" | "off_topic" | "already_covered" | "unwinnable" | "unsustainable_format" | "too_thin" | "accept";
2058
+ intent_statement: string;
2059
+ winnability?: {
2060
+ verdict: "accept" | "reject" | "abstain";
2061
+ confidence: number;
2062
+ serp_summary: string;
2063
+ } | undefined;
2064
+ }>>;
2065
+ semantic: z.ZodOptional<z.ZodObject<{
2066
+ topicalFit: z.ZodNumber;
2067
+ disposition: z.ZodEnum<["reject", "judge_only", "advance"]>;
2068
+ coverageSimilarity: z.ZodNumber;
2069
+ coverageAligned: z.ZodBoolean;
2070
+ sharedConcepts: z.ZodNumber;
2071
+ nearest: z.ZodArray<z.ZodObject<{
2072
+ title: z.ZodString;
2073
+ slug: z.ZodString;
2074
+ similarity: z.ZodNumber;
2075
+ }, "strip", z.ZodTypeAny, {
2076
+ slug: string;
2077
+ title: string;
2078
+ similarity: number;
2079
+ }, {
2080
+ slug: string;
2081
+ title: string;
2082
+ similarity: number;
2083
+ }>, "many">;
2084
+ }, "strip", z.ZodTypeAny, {
2085
+ topicalFit: number;
2086
+ disposition: "reject" | "judge_only" | "advance";
2087
+ coverageSimilarity: number;
2088
+ coverageAligned: boolean;
2089
+ sharedConcepts: number;
2090
+ nearest: {
2091
+ slug: string;
2092
+ title: string;
2093
+ similarity: number;
2094
+ }[];
2095
+ }, {
2096
+ topicalFit: number;
2097
+ disposition: "reject" | "judge_only" | "advance";
2098
+ coverageSimilarity: number;
2099
+ coverageAligned: boolean;
2100
+ sharedConcepts: number;
2101
+ nearest: {
2102
+ slug: string;
2103
+ title: string;
2104
+ similarity: number;
2105
+ }[];
2106
+ }>>;
512
2107
  }, "strip", z.ZodTypeAny, {
513
2108
  position: number;
514
2109
  query: string;
@@ -516,6 +2111,42 @@ export declare const InsightsIngestPayloadSchema: z.ZodEffects<z.ZodObject<{
516
2111
  clicks: number;
517
2112
  ctr: number;
518
2113
  trend: number;
2114
+ lane?: "commission" | "refresh" | "optimize-ctr" | "consolidate" | "monitor" | undefined;
2115
+ coveredBy?: string | null | undefined;
2116
+ semantic?: {
2117
+ topicalFit: number;
2118
+ disposition: "reject" | "judge_only" | "advance";
2119
+ coverageSimilarity: number;
2120
+ coverageAligned: boolean;
2121
+ sharedConcepts: number;
2122
+ nearest: {
2123
+ slug: string;
2124
+ title: string;
2125
+ similarity: number;
2126
+ }[];
2127
+ } | undefined;
2128
+ coverageSource?: "page_join" | "semantic" | "lexical" | null | undefined;
2129
+ scoreBreakdown?: {
2130
+ actualCtr: number;
2131
+ expectedCtr: number;
2132
+ expectedClicksGain: number;
2133
+ laneWeight: number;
2134
+ score: number;
2135
+ targetPosition: number;
2136
+ topicalFit: number;
2137
+ winnabilityPrior: number;
2138
+ } | undefined;
2139
+ judge?: {
2140
+ verdict: "accept" | "reject" | "abstain";
2141
+ confidence: number;
2142
+ reason_code: "no_coherent_intent" | "navigational_or_entity_locked" | "off_topic" | "already_covered" | "unwinnable" | "unsustainable_format" | "too_thin" | "accept";
2143
+ intent_statement: string;
2144
+ winnability?: {
2145
+ verdict: "accept" | "reject" | "abstain";
2146
+ confidence: number;
2147
+ serp_summary: string;
2148
+ } | undefined;
2149
+ } | undefined;
519
2150
  }, {
520
2151
  position: number;
521
2152
  query: string;
@@ -523,15 +2154,229 @@ export declare const InsightsIngestPayloadSchema: z.ZodEffects<z.ZodObject<{
523
2154
  clicks: number;
524
2155
  ctr: number;
525
2156
  trend: number;
2157
+ lane?: "commission" | "refresh" | "optimize-ctr" | "consolidate" | "monitor" | undefined;
2158
+ coveredBy?: string | null | undefined;
2159
+ semantic?: {
2160
+ topicalFit: number;
2161
+ disposition: "reject" | "judge_only" | "advance";
2162
+ coverageSimilarity: number;
2163
+ coverageAligned: boolean;
2164
+ sharedConcepts: number;
2165
+ nearest: {
2166
+ slug: string;
2167
+ title: string;
2168
+ similarity: number;
2169
+ }[];
2170
+ } | undefined;
2171
+ coverageSource?: "page_join" | "semantic" | "lexical" | null | undefined;
2172
+ scoreBreakdown?: {
2173
+ actualCtr: number;
2174
+ expectedCtr: number;
2175
+ expectedClicksGain: number;
2176
+ laneWeight: number;
2177
+ score: number;
2178
+ targetPosition: number;
2179
+ topicalFit: number;
2180
+ winnabilityPrior: number;
2181
+ } | undefined;
2182
+ judge?: {
2183
+ verdict: "accept" | "reject" | "abstain";
2184
+ confidence: number;
2185
+ reason_code: "no_coherent_intent" | "navigational_or_entity_locked" | "off_topic" | "already_covered" | "unwinnable" | "unsustainable_format" | "too_thin" | "accept";
2186
+ intent_statement: string;
2187
+ winnability?: {
2188
+ verdict: "accept" | "reject" | "abstain";
2189
+ confidence: number;
2190
+ serp_summary: string;
2191
+ } | undefined;
2192
+ } | undefined;
526
2193
  }>, z.ZodObject<{
527
2194
  basis: z.ZodString;
528
2195
  source_count: z.ZodNumber;
2196
+ lane: z.ZodOptional<z.ZodEnum<["commission", "refresh", "optimize-ctr", "consolidate", "monitor"]>>;
2197
+ scoreBreakdown: z.ZodOptional<z.ZodObject<{
2198
+ actualCtr: z.ZodNumber;
2199
+ expectedCtr: z.ZodNumber;
2200
+ expectedClicksGain: z.ZodNumber;
2201
+ laneWeight: z.ZodNumber;
2202
+ score: z.ZodNumber;
2203
+ targetPosition: z.ZodNumber;
2204
+ topicalFit: z.ZodNumber;
2205
+ winnabilityPrior: z.ZodNumber;
2206
+ }, "strip", z.ZodTypeAny, {
2207
+ actualCtr: number;
2208
+ expectedCtr: number;
2209
+ expectedClicksGain: number;
2210
+ laneWeight: number;
2211
+ score: number;
2212
+ targetPosition: number;
2213
+ topicalFit: number;
2214
+ winnabilityPrior: number;
2215
+ }, {
2216
+ actualCtr: number;
2217
+ expectedCtr: number;
2218
+ expectedClicksGain: number;
2219
+ laneWeight: number;
2220
+ score: number;
2221
+ targetPosition: number;
2222
+ topicalFit: number;
2223
+ winnabilityPrior: number;
2224
+ }>>;
2225
+ judge: z.ZodOptional<z.ZodObject<{
2226
+ verdict: z.ZodEnum<["accept", "reject", "abstain"]>;
2227
+ reason_code: z.ZodEnum<["no_coherent_intent", "navigational_or_entity_locked", "off_topic", "already_covered", "unwinnable", "unsustainable_format", "too_thin", "accept"]>;
2228
+ confidence: z.ZodNumber;
2229
+ intent_statement: z.ZodString;
2230
+ winnability: z.ZodOptional<z.ZodObject<{
2231
+ verdict: z.ZodEnum<["accept", "reject", "abstain"]>;
2232
+ confidence: z.ZodNumber;
2233
+ serp_summary: z.ZodString;
2234
+ }, "strip", z.ZodTypeAny, {
2235
+ verdict: "accept" | "reject" | "abstain";
2236
+ confidence: number;
2237
+ serp_summary: string;
2238
+ }, {
2239
+ verdict: "accept" | "reject" | "abstain";
2240
+ confidence: number;
2241
+ serp_summary: string;
2242
+ }>>;
2243
+ }, "strip", z.ZodTypeAny, {
2244
+ verdict: "accept" | "reject" | "abstain";
2245
+ confidence: number;
2246
+ reason_code: "no_coherent_intent" | "navigational_or_entity_locked" | "off_topic" | "already_covered" | "unwinnable" | "unsustainable_format" | "too_thin" | "accept";
2247
+ intent_statement: string;
2248
+ winnability?: {
2249
+ verdict: "accept" | "reject" | "abstain";
2250
+ confidence: number;
2251
+ serp_summary: string;
2252
+ } | undefined;
2253
+ }, {
2254
+ verdict: "accept" | "reject" | "abstain";
2255
+ confidence: number;
2256
+ reason_code: "no_coherent_intent" | "navigational_or_entity_locked" | "off_topic" | "already_covered" | "unwinnable" | "unsustainable_format" | "too_thin" | "accept";
2257
+ intent_statement: string;
2258
+ winnability?: {
2259
+ verdict: "accept" | "reject" | "abstain";
2260
+ confidence: number;
2261
+ serp_summary: string;
2262
+ } | undefined;
2263
+ }>>;
2264
+ semantic: z.ZodOptional<z.ZodObject<{
2265
+ topicalFit: z.ZodNumber;
2266
+ disposition: z.ZodEnum<["reject", "judge_only", "advance"]>;
2267
+ coverageSimilarity: z.ZodNumber;
2268
+ coverageAligned: z.ZodBoolean;
2269
+ sharedConcepts: z.ZodNumber;
2270
+ nearest: z.ZodArray<z.ZodObject<{
2271
+ title: z.ZodString;
2272
+ slug: z.ZodString;
2273
+ similarity: z.ZodNumber;
2274
+ }, "strip", z.ZodTypeAny, {
2275
+ slug: string;
2276
+ title: string;
2277
+ similarity: number;
2278
+ }, {
2279
+ slug: string;
2280
+ title: string;
2281
+ similarity: number;
2282
+ }>, "many">;
2283
+ }, "strip", z.ZodTypeAny, {
2284
+ topicalFit: number;
2285
+ disposition: "reject" | "judge_only" | "advance";
2286
+ coverageSimilarity: number;
2287
+ coverageAligned: boolean;
2288
+ sharedConcepts: number;
2289
+ nearest: {
2290
+ slug: string;
2291
+ title: string;
2292
+ similarity: number;
2293
+ }[];
2294
+ }, {
2295
+ topicalFit: number;
2296
+ disposition: "reject" | "judge_only" | "advance";
2297
+ coverageSimilarity: number;
2298
+ coverageAligned: boolean;
2299
+ sharedConcepts: number;
2300
+ nearest: {
2301
+ slug: string;
2302
+ title: string;
2303
+ similarity: number;
2304
+ }[];
2305
+ }>>;
529
2306
  }, "strip", z.ZodTypeAny, {
530
2307
  basis: string;
531
2308
  source_count: number;
2309
+ lane?: "commission" | "refresh" | "optimize-ctr" | "consolidate" | "monitor" | undefined;
2310
+ semantic?: {
2311
+ topicalFit: number;
2312
+ disposition: "reject" | "judge_only" | "advance";
2313
+ coverageSimilarity: number;
2314
+ coverageAligned: boolean;
2315
+ sharedConcepts: number;
2316
+ nearest: {
2317
+ slug: string;
2318
+ title: string;
2319
+ similarity: number;
2320
+ }[];
2321
+ } | undefined;
2322
+ scoreBreakdown?: {
2323
+ actualCtr: number;
2324
+ expectedCtr: number;
2325
+ expectedClicksGain: number;
2326
+ laneWeight: number;
2327
+ score: number;
2328
+ targetPosition: number;
2329
+ topicalFit: number;
2330
+ winnabilityPrior: number;
2331
+ } | undefined;
2332
+ judge?: {
2333
+ verdict: "accept" | "reject" | "abstain";
2334
+ confidence: number;
2335
+ reason_code: "no_coherent_intent" | "navigational_or_entity_locked" | "off_topic" | "already_covered" | "unwinnable" | "unsustainable_format" | "too_thin" | "accept";
2336
+ intent_statement: string;
2337
+ winnability?: {
2338
+ verdict: "accept" | "reject" | "abstain";
2339
+ confidence: number;
2340
+ serp_summary: string;
2341
+ } | undefined;
2342
+ } | undefined;
532
2343
  }, {
533
2344
  basis: string;
534
2345
  source_count: number;
2346
+ lane?: "commission" | "refresh" | "optimize-ctr" | "consolidate" | "monitor" | undefined;
2347
+ semantic?: {
2348
+ topicalFit: number;
2349
+ disposition: "reject" | "judge_only" | "advance";
2350
+ coverageSimilarity: number;
2351
+ coverageAligned: boolean;
2352
+ sharedConcepts: number;
2353
+ nearest: {
2354
+ slug: string;
2355
+ title: string;
2356
+ similarity: number;
2357
+ }[];
2358
+ } | undefined;
2359
+ scoreBreakdown?: {
2360
+ actualCtr: number;
2361
+ expectedCtr: number;
2362
+ expectedClicksGain: number;
2363
+ laneWeight: number;
2364
+ score: number;
2365
+ targetPosition: number;
2366
+ topicalFit: number;
2367
+ winnabilityPrior: number;
2368
+ } | undefined;
2369
+ judge?: {
2370
+ verdict: "accept" | "reject" | "abstain";
2371
+ confidence: number;
2372
+ reason_code: "no_coherent_intent" | "navigational_or_entity_locked" | "off_topic" | "already_covered" | "unwinnable" | "unsustainable_format" | "too_thin" | "accept";
2373
+ intent_statement: string;
2374
+ winnability?: {
2375
+ verdict: "accept" | "reject" | "abstain";
2376
+ confidence: number;
2377
+ serp_summary: string;
2378
+ } | undefined;
2379
+ } | undefined;
535
2380
  }>]>;
536
2381
  brief: z.ZodObject<{
537
2382
  why_now: z.ZodString;
@@ -556,6 +2401,42 @@ export declare const InsightsIngestPayloadSchema: z.ZodEffects<z.ZodObject<{
556
2401
  title: string;
557
2402
  url: string;
558
2403
  }>, "many">;
2404
+ format: z.ZodOptional<z.ZodEnum<["cornerstone", "pillar", "standalone"]>>;
2405
+ content_outline: z.ZodOptional<z.ZodArray<z.ZodObject<{
2406
+ question: z.ZodString;
2407
+ demand: z.ZodOptional<z.ZodObject<{
2408
+ query: z.ZodString;
2409
+ impressions: z.ZodNumber;
2410
+ position: z.ZodNumber;
2411
+ trend: z.ZodNumber;
2412
+ }, "strip", z.ZodTypeAny, {
2413
+ position: number;
2414
+ query: string;
2415
+ impressions: number;
2416
+ trend: number;
2417
+ }, {
2418
+ position: number;
2419
+ query: string;
2420
+ impressions: number;
2421
+ trend: number;
2422
+ }>>;
2423
+ }, "strip", z.ZodTypeAny, {
2424
+ question: string;
2425
+ demand?: {
2426
+ position: number;
2427
+ query: string;
2428
+ impressions: number;
2429
+ trend: number;
2430
+ } | undefined;
2431
+ }, {
2432
+ question: string;
2433
+ demand?: {
2434
+ position: number;
2435
+ query: string;
2436
+ impressions: number;
2437
+ trend: number;
2438
+ } | undefined;
2439
+ }>, "many">>;
559
2440
  /**
560
2441
  * Which open-web discovery STREAM produced this opportunity row (the theater
561
2442
  * split). REQUIRED here: Zod strips unknown brief keys, so without this field the
@@ -595,6 +2476,16 @@ export declare const InsightsIngestPayloadSchema: z.ZodEffects<z.ZodObject<{
595
2476
  title: string;
596
2477
  url: string;
597
2478
  }[];
2479
+ format?: "cornerstone" | "pillar" | "standalone" | undefined;
2480
+ content_outline?: {
2481
+ question: string;
2482
+ demand?: {
2483
+ position: number;
2484
+ query: string;
2485
+ impressions: number;
2486
+ trend: number;
2487
+ } | undefined;
2488
+ }[] | undefined;
598
2489
  discoveryKind?: "competitor" | "audience_question" | undefined;
599
2490
  competitor_articles?: {
600
2491
  title: string;
@@ -614,6 +2505,16 @@ export declare const InsightsIngestPayloadSchema: z.ZodEffects<z.ZodObject<{
614
2505
  title: string;
615
2506
  url: string;
616
2507
  }[];
2508
+ format?: "cornerstone" | "pillar" | "standalone" | undefined;
2509
+ content_outline?: {
2510
+ question: string;
2511
+ demand?: {
2512
+ position: number;
2513
+ query: string;
2514
+ impressions: number;
2515
+ trend: number;
2516
+ } | undefined;
2517
+ }[] | undefined;
617
2518
  discoveryKind?: "competitor" | "audience_question" | undefined;
618
2519
  competitor_articles?: {
619
2520
  title: string;
@@ -642,9 +2543,79 @@ export declare const InsightsIngestPayloadSchema: z.ZodEffects<z.ZodObject<{
642
2543
  clicks: number;
643
2544
  ctr: number;
644
2545
  trend: number;
2546
+ lane?: "commission" | "refresh" | "optimize-ctr" | "consolidate" | "monitor" | undefined;
2547
+ coveredBy?: string | null | undefined;
2548
+ semantic?: {
2549
+ topicalFit: number;
2550
+ disposition: "reject" | "judge_only" | "advance";
2551
+ coverageSimilarity: number;
2552
+ coverageAligned: boolean;
2553
+ sharedConcepts: number;
2554
+ nearest: {
2555
+ slug: string;
2556
+ title: string;
2557
+ similarity: number;
2558
+ }[];
2559
+ } | undefined;
2560
+ coverageSource?: "page_join" | "semantic" | "lexical" | null | undefined;
2561
+ scoreBreakdown?: {
2562
+ actualCtr: number;
2563
+ expectedCtr: number;
2564
+ expectedClicksGain: number;
2565
+ laneWeight: number;
2566
+ score: number;
2567
+ targetPosition: number;
2568
+ topicalFit: number;
2569
+ winnabilityPrior: number;
2570
+ } | undefined;
2571
+ judge?: {
2572
+ verdict: "accept" | "reject" | "abstain";
2573
+ confidence: number;
2574
+ reason_code: "no_coherent_intent" | "navigational_or_entity_locked" | "off_topic" | "already_covered" | "unwinnable" | "unsustainable_format" | "too_thin" | "accept";
2575
+ intent_statement: string;
2576
+ winnability?: {
2577
+ verdict: "accept" | "reject" | "abstain";
2578
+ confidence: number;
2579
+ serp_summary: string;
2580
+ } | undefined;
2581
+ } | undefined;
645
2582
  } | {
646
2583
  basis: string;
647
2584
  source_count: number;
2585
+ lane?: "commission" | "refresh" | "optimize-ctr" | "consolidate" | "monitor" | undefined;
2586
+ semantic?: {
2587
+ topicalFit: number;
2588
+ disposition: "reject" | "judge_only" | "advance";
2589
+ coverageSimilarity: number;
2590
+ coverageAligned: boolean;
2591
+ sharedConcepts: number;
2592
+ nearest: {
2593
+ slug: string;
2594
+ title: string;
2595
+ similarity: number;
2596
+ }[];
2597
+ } | undefined;
2598
+ scoreBreakdown?: {
2599
+ actualCtr: number;
2600
+ expectedCtr: number;
2601
+ expectedClicksGain: number;
2602
+ laneWeight: number;
2603
+ score: number;
2604
+ targetPosition: number;
2605
+ topicalFit: number;
2606
+ winnabilityPrior: number;
2607
+ } | undefined;
2608
+ judge?: {
2609
+ verdict: "accept" | "reject" | "abstain";
2610
+ confidence: number;
2611
+ reason_code: "no_coherent_intent" | "navigational_or_entity_locked" | "off_topic" | "already_covered" | "unwinnable" | "unsustainable_format" | "too_thin" | "accept";
2612
+ intent_statement: string;
2613
+ winnability?: {
2614
+ verdict: "accept" | "reject" | "abstain";
2615
+ confidence: number;
2616
+ serp_summary: string;
2617
+ } | undefined;
2618
+ } | undefined;
648
2619
  };
649
2620
  brief: {
650
2621
  cluster: {
@@ -657,6 +2628,16 @@ export declare const InsightsIngestPayloadSchema: z.ZodEffects<z.ZodObject<{
657
2628
  title: string;
658
2629
  url: string;
659
2630
  }[];
2631
+ format?: "cornerstone" | "pillar" | "standalone" | undefined;
2632
+ content_outline?: {
2633
+ question: string;
2634
+ demand?: {
2635
+ position: number;
2636
+ query: string;
2637
+ impressions: number;
2638
+ trend: number;
2639
+ } | undefined;
2640
+ }[] | undefined;
660
2641
  discoveryKind?: "competitor" | "audience_question" | undefined;
661
2642
  competitor_articles?: {
662
2643
  title: string;
@@ -685,9 +2666,79 @@ export declare const InsightsIngestPayloadSchema: z.ZodEffects<z.ZodObject<{
685
2666
  clicks: number;
686
2667
  ctr: number;
687
2668
  trend: number;
2669
+ lane?: "commission" | "refresh" | "optimize-ctr" | "consolidate" | "monitor" | undefined;
2670
+ coveredBy?: string | null | undefined;
2671
+ semantic?: {
2672
+ topicalFit: number;
2673
+ disposition: "reject" | "judge_only" | "advance";
2674
+ coverageSimilarity: number;
2675
+ coverageAligned: boolean;
2676
+ sharedConcepts: number;
2677
+ nearest: {
2678
+ slug: string;
2679
+ title: string;
2680
+ similarity: number;
2681
+ }[];
2682
+ } | undefined;
2683
+ coverageSource?: "page_join" | "semantic" | "lexical" | null | undefined;
2684
+ scoreBreakdown?: {
2685
+ actualCtr: number;
2686
+ expectedCtr: number;
2687
+ expectedClicksGain: number;
2688
+ laneWeight: number;
2689
+ score: number;
2690
+ targetPosition: number;
2691
+ topicalFit: number;
2692
+ winnabilityPrior: number;
2693
+ } | undefined;
2694
+ judge?: {
2695
+ verdict: "accept" | "reject" | "abstain";
2696
+ confidence: number;
2697
+ reason_code: "no_coherent_intent" | "navigational_or_entity_locked" | "off_topic" | "already_covered" | "unwinnable" | "unsustainable_format" | "too_thin" | "accept";
2698
+ intent_statement: string;
2699
+ winnability?: {
2700
+ verdict: "accept" | "reject" | "abstain";
2701
+ confidence: number;
2702
+ serp_summary: string;
2703
+ } | undefined;
2704
+ } | undefined;
688
2705
  } | {
689
2706
  basis: string;
690
2707
  source_count: number;
2708
+ lane?: "commission" | "refresh" | "optimize-ctr" | "consolidate" | "monitor" | undefined;
2709
+ semantic?: {
2710
+ topicalFit: number;
2711
+ disposition: "reject" | "judge_only" | "advance";
2712
+ coverageSimilarity: number;
2713
+ coverageAligned: boolean;
2714
+ sharedConcepts: number;
2715
+ nearest: {
2716
+ slug: string;
2717
+ title: string;
2718
+ similarity: number;
2719
+ }[];
2720
+ } | undefined;
2721
+ scoreBreakdown?: {
2722
+ actualCtr: number;
2723
+ expectedCtr: number;
2724
+ expectedClicksGain: number;
2725
+ laneWeight: number;
2726
+ score: number;
2727
+ targetPosition: number;
2728
+ topicalFit: number;
2729
+ winnabilityPrior: number;
2730
+ } | undefined;
2731
+ judge?: {
2732
+ verdict: "accept" | "reject" | "abstain";
2733
+ confidence: number;
2734
+ reason_code: "no_coherent_intent" | "navigational_or_entity_locked" | "off_topic" | "already_covered" | "unwinnable" | "unsustainable_format" | "too_thin" | "accept";
2735
+ intent_statement: string;
2736
+ winnability?: {
2737
+ verdict: "accept" | "reject" | "abstain";
2738
+ confidence: number;
2739
+ serp_summary: string;
2740
+ } | undefined;
2741
+ } | undefined;
691
2742
  };
692
2743
  brief: {
693
2744
  cluster: {
@@ -700,6 +2751,16 @@ export declare const InsightsIngestPayloadSchema: z.ZodEffects<z.ZodObject<{
700
2751
  title: string;
701
2752
  url: string;
702
2753
  }[];
2754
+ format?: "cornerstone" | "pillar" | "standalone" | undefined;
2755
+ content_outline?: {
2756
+ question: string;
2757
+ demand?: {
2758
+ position: number;
2759
+ query: string;
2760
+ impressions: number;
2761
+ trend: number;
2762
+ } | undefined;
2763
+ }[] | undefined;
703
2764
  discoveryKind?: "competitor" | "audience_question" | undefined;
704
2765
  competitor_articles?: {
705
2766
  title: string;
@@ -745,9 +2806,79 @@ export declare const InsightsIngestPayloadSchema: z.ZodEffects<z.ZodObject<{
745
2806
  clicks: number;
746
2807
  ctr: number;
747
2808
  trend: number;
2809
+ lane?: "commission" | "refresh" | "optimize-ctr" | "consolidate" | "monitor" | undefined;
2810
+ coveredBy?: string | null | undefined;
2811
+ semantic?: {
2812
+ topicalFit: number;
2813
+ disposition: "reject" | "judge_only" | "advance";
2814
+ coverageSimilarity: number;
2815
+ coverageAligned: boolean;
2816
+ sharedConcepts: number;
2817
+ nearest: {
2818
+ slug: string;
2819
+ title: string;
2820
+ similarity: number;
2821
+ }[];
2822
+ } | undefined;
2823
+ coverageSource?: "page_join" | "semantic" | "lexical" | null | undefined;
2824
+ scoreBreakdown?: {
2825
+ actualCtr: number;
2826
+ expectedCtr: number;
2827
+ expectedClicksGain: number;
2828
+ laneWeight: number;
2829
+ score: number;
2830
+ targetPosition: number;
2831
+ topicalFit: number;
2832
+ winnabilityPrior: number;
2833
+ } | undefined;
2834
+ judge?: {
2835
+ verdict: "accept" | "reject" | "abstain";
2836
+ confidence: number;
2837
+ reason_code: "no_coherent_intent" | "navigational_or_entity_locked" | "off_topic" | "already_covered" | "unwinnable" | "unsustainable_format" | "too_thin" | "accept";
2838
+ intent_statement: string;
2839
+ winnability?: {
2840
+ verdict: "accept" | "reject" | "abstain";
2841
+ confidence: number;
2842
+ serp_summary: string;
2843
+ } | undefined;
2844
+ } | undefined;
748
2845
  } | {
749
2846
  basis: string;
750
2847
  source_count: number;
2848
+ lane?: "commission" | "refresh" | "optimize-ctr" | "consolidate" | "monitor" | undefined;
2849
+ semantic?: {
2850
+ topicalFit: number;
2851
+ disposition: "reject" | "judge_only" | "advance";
2852
+ coverageSimilarity: number;
2853
+ coverageAligned: boolean;
2854
+ sharedConcepts: number;
2855
+ nearest: {
2856
+ slug: string;
2857
+ title: string;
2858
+ similarity: number;
2859
+ }[];
2860
+ } | undefined;
2861
+ scoreBreakdown?: {
2862
+ actualCtr: number;
2863
+ expectedCtr: number;
2864
+ expectedClicksGain: number;
2865
+ laneWeight: number;
2866
+ score: number;
2867
+ targetPosition: number;
2868
+ topicalFit: number;
2869
+ winnabilityPrior: number;
2870
+ } | undefined;
2871
+ judge?: {
2872
+ verdict: "accept" | "reject" | "abstain";
2873
+ confidence: number;
2874
+ reason_code: "no_coherent_intent" | "navigational_or_entity_locked" | "off_topic" | "already_covered" | "unwinnable" | "unsustainable_format" | "too_thin" | "accept";
2875
+ intent_statement: string;
2876
+ winnability?: {
2877
+ verdict: "accept" | "reject" | "abstain";
2878
+ confidence: number;
2879
+ serp_summary: string;
2880
+ } | undefined;
2881
+ } | undefined;
751
2882
  };
752
2883
  brief: {
753
2884
  cluster: {
@@ -760,6 +2891,16 @@ export declare const InsightsIngestPayloadSchema: z.ZodEffects<z.ZodObject<{
760
2891
  title: string;
761
2892
  url: string;
762
2893
  }[];
2894
+ format?: "cornerstone" | "pillar" | "standalone" | undefined;
2895
+ content_outline?: {
2896
+ question: string;
2897
+ demand?: {
2898
+ position: number;
2899
+ query: string;
2900
+ impressions: number;
2901
+ trend: number;
2902
+ } | undefined;
2903
+ }[] | undefined;
763
2904
  discoveryKind?: "competitor" | "audience_question" | undefined;
764
2905
  competitor_articles?: {
765
2906
  title: string;
@@ -805,9 +2946,79 @@ export declare const InsightsIngestPayloadSchema: z.ZodEffects<z.ZodObject<{
805
2946
  clicks: number;
806
2947
  ctr: number;
807
2948
  trend: number;
2949
+ lane?: "commission" | "refresh" | "optimize-ctr" | "consolidate" | "monitor" | undefined;
2950
+ coveredBy?: string | null | undefined;
2951
+ semantic?: {
2952
+ topicalFit: number;
2953
+ disposition: "reject" | "judge_only" | "advance";
2954
+ coverageSimilarity: number;
2955
+ coverageAligned: boolean;
2956
+ sharedConcepts: number;
2957
+ nearest: {
2958
+ slug: string;
2959
+ title: string;
2960
+ similarity: number;
2961
+ }[];
2962
+ } | undefined;
2963
+ coverageSource?: "page_join" | "semantic" | "lexical" | null | undefined;
2964
+ scoreBreakdown?: {
2965
+ actualCtr: number;
2966
+ expectedCtr: number;
2967
+ expectedClicksGain: number;
2968
+ laneWeight: number;
2969
+ score: number;
2970
+ targetPosition: number;
2971
+ topicalFit: number;
2972
+ winnabilityPrior: number;
2973
+ } | undefined;
2974
+ judge?: {
2975
+ verdict: "accept" | "reject" | "abstain";
2976
+ confidence: number;
2977
+ reason_code: "no_coherent_intent" | "navigational_or_entity_locked" | "off_topic" | "already_covered" | "unwinnable" | "unsustainable_format" | "too_thin" | "accept";
2978
+ intent_statement: string;
2979
+ winnability?: {
2980
+ verdict: "accept" | "reject" | "abstain";
2981
+ confidence: number;
2982
+ serp_summary: string;
2983
+ } | undefined;
2984
+ } | undefined;
808
2985
  } | {
809
2986
  basis: string;
810
2987
  source_count: number;
2988
+ lane?: "commission" | "refresh" | "optimize-ctr" | "consolidate" | "monitor" | undefined;
2989
+ semantic?: {
2990
+ topicalFit: number;
2991
+ disposition: "reject" | "judge_only" | "advance";
2992
+ coverageSimilarity: number;
2993
+ coverageAligned: boolean;
2994
+ sharedConcepts: number;
2995
+ nearest: {
2996
+ slug: string;
2997
+ title: string;
2998
+ similarity: number;
2999
+ }[];
3000
+ } | undefined;
3001
+ scoreBreakdown?: {
3002
+ actualCtr: number;
3003
+ expectedCtr: number;
3004
+ expectedClicksGain: number;
3005
+ laneWeight: number;
3006
+ score: number;
3007
+ targetPosition: number;
3008
+ topicalFit: number;
3009
+ winnabilityPrior: number;
3010
+ } | undefined;
3011
+ judge?: {
3012
+ verdict: "accept" | "reject" | "abstain";
3013
+ confidence: number;
3014
+ reason_code: "no_coherent_intent" | "navigational_or_entity_locked" | "off_topic" | "already_covered" | "unwinnable" | "unsustainable_format" | "too_thin" | "accept";
3015
+ intent_statement: string;
3016
+ winnability?: {
3017
+ verdict: "accept" | "reject" | "abstain";
3018
+ confidence: number;
3019
+ serp_summary: string;
3020
+ } | undefined;
3021
+ } | undefined;
811
3022
  };
812
3023
  brief: {
813
3024
  cluster: {
@@ -820,6 +3031,16 @@ export declare const InsightsIngestPayloadSchema: z.ZodEffects<z.ZodObject<{
820
3031
  title: string;
821
3032
  url: string;
822
3033
  }[];
3034
+ format?: "cornerstone" | "pillar" | "standalone" | undefined;
3035
+ content_outline?: {
3036
+ question: string;
3037
+ demand?: {
3038
+ position: number;
3039
+ query: string;
3040
+ impressions: number;
3041
+ trend: number;
3042
+ } | undefined;
3043
+ }[] | undefined;
823
3044
  discoveryKind?: "competitor" | "audience_question" | undefined;
824
3045
  competitor_articles?: {
825
3046
  title: string;
@@ -865,9 +3086,79 @@ export declare const InsightsIngestPayloadSchema: z.ZodEffects<z.ZodObject<{
865
3086
  clicks: number;
866
3087
  ctr: number;
867
3088
  trend: number;
3089
+ lane?: "commission" | "refresh" | "optimize-ctr" | "consolidate" | "monitor" | undefined;
3090
+ coveredBy?: string | null | undefined;
3091
+ semantic?: {
3092
+ topicalFit: number;
3093
+ disposition: "reject" | "judge_only" | "advance";
3094
+ coverageSimilarity: number;
3095
+ coverageAligned: boolean;
3096
+ sharedConcepts: number;
3097
+ nearest: {
3098
+ slug: string;
3099
+ title: string;
3100
+ similarity: number;
3101
+ }[];
3102
+ } | undefined;
3103
+ coverageSource?: "page_join" | "semantic" | "lexical" | null | undefined;
3104
+ scoreBreakdown?: {
3105
+ actualCtr: number;
3106
+ expectedCtr: number;
3107
+ expectedClicksGain: number;
3108
+ laneWeight: number;
3109
+ score: number;
3110
+ targetPosition: number;
3111
+ topicalFit: number;
3112
+ winnabilityPrior: number;
3113
+ } | undefined;
3114
+ judge?: {
3115
+ verdict: "accept" | "reject" | "abstain";
3116
+ confidence: number;
3117
+ reason_code: "no_coherent_intent" | "navigational_or_entity_locked" | "off_topic" | "already_covered" | "unwinnable" | "unsustainable_format" | "too_thin" | "accept";
3118
+ intent_statement: string;
3119
+ winnability?: {
3120
+ verdict: "accept" | "reject" | "abstain";
3121
+ confidence: number;
3122
+ serp_summary: string;
3123
+ } | undefined;
3124
+ } | undefined;
868
3125
  } | {
869
3126
  basis: string;
870
3127
  source_count: number;
3128
+ lane?: "commission" | "refresh" | "optimize-ctr" | "consolidate" | "monitor" | undefined;
3129
+ semantic?: {
3130
+ topicalFit: number;
3131
+ disposition: "reject" | "judge_only" | "advance";
3132
+ coverageSimilarity: number;
3133
+ coverageAligned: boolean;
3134
+ sharedConcepts: number;
3135
+ nearest: {
3136
+ slug: string;
3137
+ title: string;
3138
+ similarity: number;
3139
+ }[];
3140
+ } | undefined;
3141
+ scoreBreakdown?: {
3142
+ actualCtr: number;
3143
+ expectedCtr: number;
3144
+ expectedClicksGain: number;
3145
+ laneWeight: number;
3146
+ score: number;
3147
+ targetPosition: number;
3148
+ topicalFit: number;
3149
+ winnabilityPrior: number;
3150
+ } | undefined;
3151
+ judge?: {
3152
+ verdict: "accept" | "reject" | "abstain";
3153
+ confidence: number;
3154
+ reason_code: "no_coherent_intent" | "navigational_or_entity_locked" | "off_topic" | "already_covered" | "unwinnable" | "unsustainable_format" | "too_thin" | "accept";
3155
+ intent_statement: string;
3156
+ winnability?: {
3157
+ verdict: "accept" | "reject" | "abstain";
3158
+ confidence: number;
3159
+ serp_summary: string;
3160
+ } | undefined;
3161
+ } | undefined;
871
3162
  };
872
3163
  brief: {
873
3164
  cluster: {
@@ -880,6 +3171,16 @@ export declare const InsightsIngestPayloadSchema: z.ZodEffects<z.ZodObject<{
880
3171
  title: string;
881
3172
  url: string;
882
3173
  }[];
3174
+ format?: "cornerstone" | "pillar" | "standalone" | undefined;
3175
+ content_outline?: {
3176
+ question: string;
3177
+ demand?: {
3178
+ position: number;
3179
+ query: string;
3180
+ impressions: number;
3181
+ trend: number;
3182
+ } | undefined;
3183
+ }[] | undefined;
883
3184
  discoveryKind?: "competitor" | "audience_question" | undefined;
884
3185
  competitor_articles?: {
885
3186
  title: string;
@@ -925,9 +3226,79 @@ export declare const InsightsIngestPayloadSchema: z.ZodEffects<z.ZodObject<{
925
3226
  clicks: number;
926
3227
  ctr: number;
927
3228
  trend: number;
3229
+ lane?: "commission" | "refresh" | "optimize-ctr" | "consolidate" | "monitor" | undefined;
3230
+ coveredBy?: string | null | undefined;
3231
+ semantic?: {
3232
+ topicalFit: number;
3233
+ disposition: "reject" | "judge_only" | "advance";
3234
+ coverageSimilarity: number;
3235
+ coverageAligned: boolean;
3236
+ sharedConcepts: number;
3237
+ nearest: {
3238
+ slug: string;
3239
+ title: string;
3240
+ similarity: number;
3241
+ }[];
3242
+ } | undefined;
3243
+ coverageSource?: "page_join" | "semantic" | "lexical" | null | undefined;
3244
+ scoreBreakdown?: {
3245
+ actualCtr: number;
3246
+ expectedCtr: number;
3247
+ expectedClicksGain: number;
3248
+ laneWeight: number;
3249
+ score: number;
3250
+ targetPosition: number;
3251
+ topicalFit: number;
3252
+ winnabilityPrior: number;
3253
+ } | undefined;
3254
+ judge?: {
3255
+ verdict: "accept" | "reject" | "abstain";
3256
+ confidence: number;
3257
+ reason_code: "no_coherent_intent" | "navigational_or_entity_locked" | "off_topic" | "already_covered" | "unwinnable" | "unsustainable_format" | "too_thin" | "accept";
3258
+ intent_statement: string;
3259
+ winnability?: {
3260
+ verdict: "accept" | "reject" | "abstain";
3261
+ confidence: number;
3262
+ serp_summary: string;
3263
+ } | undefined;
3264
+ } | undefined;
928
3265
  } | {
929
3266
  basis: string;
930
3267
  source_count: number;
3268
+ lane?: "commission" | "refresh" | "optimize-ctr" | "consolidate" | "monitor" | undefined;
3269
+ semantic?: {
3270
+ topicalFit: number;
3271
+ disposition: "reject" | "judge_only" | "advance";
3272
+ coverageSimilarity: number;
3273
+ coverageAligned: boolean;
3274
+ sharedConcepts: number;
3275
+ nearest: {
3276
+ slug: string;
3277
+ title: string;
3278
+ similarity: number;
3279
+ }[];
3280
+ } | undefined;
3281
+ scoreBreakdown?: {
3282
+ actualCtr: number;
3283
+ expectedCtr: number;
3284
+ expectedClicksGain: number;
3285
+ laneWeight: number;
3286
+ score: number;
3287
+ targetPosition: number;
3288
+ topicalFit: number;
3289
+ winnabilityPrior: number;
3290
+ } | undefined;
3291
+ judge?: {
3292
+ verdict: "accept" | "reject" | "abstain";
3293
+ confidence: number;
3294
+ reason_code: "no_coherent_intent" | "navigational_or_entity_locked" | "off_topic" | "already_covered" | "unwinnable" | "unsustainable_format" | "too_thin" | "accept";
3295
+ intent_statement: string;
3296
+ winnability?: {
3297
+ verdict: "accept" | "reject" | "abstain";
3298
+ confidence: number;
3299
+ serp_summary: string;
3300
+ } | undefined;
3301
+ } | undefined;
931
3302
  };
932
3303
  brief: {
933
3304
  cluster: {
@@ -940,6 +3311,16 @@ export declare const InsightsIngestPayloadSchema: z.ZodEffects<z.ZodObject<{
940
3311
  title: string;
941
3312
  url: string;
942
3313
  }[];
3314
+ format?: "cornerstone" | "pillar" | "standalone" | undefined;
3315
+ content_outline?: {
3316
+ question: string;
3317
+ demand?: {
3318
+ position: number;
3319
+ query: string;
3320
+ impressions: number;
3321
+ trend: number;
3322
+ } | undefined;
3323
+ }[] | undefined;
943
3324
  discoveryKind?: "competitor" | "audience_question" | undefined;
944
3325
  competitor_articles?: {
945
3326
  title: string;
@@ -956,4 +3337,9 @@ export declare const InsightsIngestPayloadSchema: z.ZodEffects<z.ZodObject<{
956
3337
  export type InsightsIngestPayload = z.infer<typeof InsightsIngestPayloadSchema>;
957
3338
  export type InsightsIngestMeta = z.infer<typeof InsightsIngestMetaSchema>;
958
3339
  export type InsightSuggestionRowPayload = z.infer<typeof InsightSuggestionRowSchema>;
3340
+ export type InsightLane = z.infer<typeof InsightLaneSchema>;
3341
+ export type InsightScoreBreakdown = z.infer<typeof InsightScoreBreakdownSchema>;
3342
+ export type InsightJudgeReasonCode = z.infer<typeof InsightJudgeReasonCodeSchema>;
3343
+ export type InsightJudgeVerdict = z.infer<typeof InsightJudgeVerdictSchema>;
3344
+ export type InsightJudgeEvidence = z.infer<typeof InsightJudgeEvidenceSchema>;
959
3345
  //# sourceMappingURL=insights-ingest.d.ts.map