@indexnetwork/protocol 4.10.0-rc.350.1 → 4.12.0-rc.352.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +4 -0
- package/dist/intent/intent.graph.d.ts +12 -5
- package/dist/intent/intent.graph.d.ts.map +1 -1
- package/dist/intent/intent.graph.js +19 -6
- package/dist/intent/intent.graph.js.map +1 -1
- package/dist/opportunity/discriminator/discriminator.question.d.ts +2 -0
- package/dist/opportunity/discriminator/discriminator.question.d.ts.map +1 -1
- package/dist/opportunity/discriminator/discriminator.question.js +3 -0
- package/dist/opportunity/discriminator/discriminator.question.js.map +1 -1
- package/dist/opportunity/discriminator/discriminator.shadow.d.ts +8 -0
- package/dist/opportunity/discriminator/discriminator.shadow.d.ts.map +1 -1
- package/dist/opportunity/discriminator/discriminator.shadow.js +41 -7
- package/dist/opportunity/discriminator/discriminator.shadow.js.map +1 -1
- package/dist/opportunity/discriminator/discriminator.types.d.ts +4 -0
- package/dist/opportunity/discriminator/discriminator.types.d.ts.map +1 -1
- package/dist/opportunity/discriminator/discriminator.types.js.map +1 -1
- package/dist/opportunity/opportunity.tools.d.ts.map +1 -1
- package/dist/opportunity/opportunity.tools.js +19 -9
- package/dist/opportunity/opportunity.tools.js.map +1 -1
- package/dist/questioner/questioner.types.d.ts +3 -1
- package/dist/questioner/questioner.types.d.ts.map +1 -1
- package/dist/questioner/questioner.types.js.map +1 -1
- package/dist/shared/interfaces/database.interface.d.ts +2 -0
- package/dist/shared/interfaces/database.interface.d.ts.map +1 -1
- package/dist/shared/interfaces/database.interface.js.map +1 -1
- package/dist/shared/schemas/question.schema.d.ts +74 -0
- package/dist/shared/schemas/question.schema.d.ts.map +1 -1
- package/dist/shared/schemas/question.schema.js +6 -0
- package/dist/shared/schemas/question.schema.js.map +1 -1
- package/package.json +1 -1
|
@@ -245,6 +245,10 @@ export declare const QuestionPoolDiscriminatorSchema: z.ZodObject<{
|
|
|
245
245
|
sideCounts: z.ZodRecord<z.ZodString, z.ZodNumber>;
|
|
246
246
|
voi: z.ZodNumber;
|
|
247
247
|
evidenceRate: z.ZodNumber;
|
|
248
|
+
/** Discriminator embedding retained for durable semantic novelty checks. */
|
|
249
|
+
embedding: z.ZodOptional<z.ZodArray<z.ZodNumber, "many">>;
|
|
250
|
+
/** Model that generated `embedding`; mismatches must fall back to text. */
|
|
251
|
+
embeddingModel: z.ZodOptional<z.ZodString>;
|
|
248
252
|
/** Verified assignments only — the P3 re-rank input. */
|
|
249
253
|
assignments: z.ZodArray<z.ZodObject<{
|
|
250
254
|
opportunityId: z.ZodString;
|
|
@@ -267,6 +271,8 @@ export declare const QuestionPoolDiscriminatorSchema: z.ZodObject<{
|
|
|
267
271
|
opportunityId: string;
|
|
268
272
|
side: string;
|
|
269
273
|
}[];
|
|
274
|
+
embedding?: number[] | undefined;
|
|
275
|
+
embeddingModel?: string | undefined;
|
|
270
276
|
}, {
|
|
271
277
|
label: string;
|
|
272
278
|
questionSeed: string;
|
|
@@ -278,6 +284,8 @@ export declare const QuestionPoolDiscriminatorSchema: z.ZodObject<{
|
|
|
278
284
|
opportunityId: string;
|
|
279
285
|
side: string;
|
|
280
286
|
}[];
|
|
287
|
+
embedding?: number[] | undefined;
|
|
288
|
+
embeddingModel?: string | undefined;
|
|
281
289
|
}>;
|
|
282
290
|
/** Pool snapshot stored on pool_discovery questions (server-side only). */
|
|
283
291
|
export declare const QuestionPoolSnapshotSchema: z.ZodObject<{
|
|
@@ -288,6 +296,8 @@ export declare const QuestionPoolSnapshotSchema: z.ZodObject<{
|
|
|
288
296
|
runId: z.ZodOptional<z.ZodString>;
|
|
289
297
|
/** Intent payload snippet (≤160 chars) — reused by chained questions' evidence chips. */
|
|
290
298
|
intentText: z.ZodOptional<z.ZodString>;
|
|
299
|
+
/** Stable hash of the full normalized payload + summary used for freshness. */
|
|
300
|
+
intentFingerprint: z.ZodOptional<z.ZodString>;
|
|
291
301
|
/** The discriminator this question asks about. */
|
|
292
302
|
discriminator: z.ZodObject<{
|
|
293
303
|
label: z.ZodString;
|
|
@@ -297,6 +307,10 @@ export declare const QuestionPoolSnapshotSchema: z.ZodObject<{
|
|
|
297
307
|
sideCounts: z.ZodRecord<z.ZodString, z.ZodNumber>;
|
|
298
308
|
voi: z.ZodNumber;
|
|
299
309
|
evidenceRate: z.ZodNumber;
|
|
310
|
+
/** Discriminator embedding retained for durable semantic novelty checks. */
|
|
311
|
+
embedding: z.ZodOptional<z.ZodArray<z.ZodNumber, "many">>;
|
|
312
|
+
/** Model that generated `embedding`; mismatches must fall back to text. */
|
|
313
|
+
embeddingModel: z.ZodOptional<z.ZodString>;
|
|
300
314
|
/** Verified assignments only — the P3 re-rank input. */
|
|
301
315
|
assignments: z.ZodArray<z.ZodObject<{
|
|
302
316
|
opportunityId: z.ZodString;
|
|
@@ -319,6 +333,8 @@ export declare const QuestionPoolSnapshotSchema: z.ZodObject<{
|
|
|
319
333
|
opportunityId: string;
|
|
320
334
|
side: string;
|
|
321
335
|
}[];
|
|
336
|
+
embedding?: number[] | undefined;
|
|
337
|
+
embeddingModel?: string | undefined;
|
|
322
338
|
}, {
|
|
323
339
|
label: string;
|
|
324
340
|
questionSeed: string;
|
|
@@ -330,6 +346,8 @@ export declare const QuestionPoolSnapshotSchema: z.ZodObject<{
|
|
|
330
346
|
opportunityId: string;
|
|
331
347
|
side: string;
|
|
332
348
|
}[];
|
|
349
|
+
embedding?: number[] | undefined;
|
|
350
|
+
embeddingModel?: string | undefined;
|
|
333
351
|
}>;
|
|
334
352
|
/** Remaining ranked discriminators for interview-mode chaining. */
|
|
335
353
|
alternates: z.ZodArray<z.ZodObject<{
|
|
@@ -340,6 +358,10 @@ export declare const QuestionPoolSnapshotSchema: z.ZodObject<{
|
|
|
340
358
|
sideCounts: z.ZodRecord<z.ZodString, z.ZodNumber>;
|
|
341
359
|
voi: z.ZodNumber;
|
|
342
360
|
evidenceRate: z.ZodNumber;
|
|
361
|
+
/** Discriminator embedding retained for durable semantic novelty checks. */
|
|
362
|
+
embedding: z.ZodOptional<z.ZodArray<z.ZodNumber, "many">>;
|
|
363
|
+
/** Model that generated `embedding`; mismatches must fall back to text. */
|
|
364
|
+
embeddingModel: z.ZodOptional<z.ZodString>;
|
|
343
365
|
/** Verified assignments only — the P3 re-rank input. */
|
|
344
366
|
assignments: z.ZodArray<z.ZodObject<{
|
|
345
367
|
opportunityId: z.ZodString;
|
|
@@ -362,6 +384,8 @@ export declare const QuestionPoolSnapshotSchema: z.ZodObject<{
|
|
|
362
384
|
opportunityId: string;
|
|
363
385
|
side: string;
|
|
364
386
|
}[];
|
|
387
|
+
embedding?: number[] | undefined;
|
|
388
|
+
embeddingModel?: string | undefined;
|
|
365
389
|
}, {
|
|
366
390
|
label: string;
|
|
367
391
|
questionSeed: string;
|
|
@@ -373,6 +397,8 @@ export declare const QuestionPoolSnapshotSchema: z.ZodObject<{
|
|
|
373
397
|
opportunityId: string;
|
|
374
398
|
side: string;
|
|
375
399
|
}[];
|
|
400
|
+
embedding?: number[] | undefined;
|
|
401
|
+
embeddingModel?: string | undefined;
|
|
376
402
|
}>, "many">;
|
|
377
403
|
}, "strip", z.ZodTypeAny, {
|
|
378
404
|
poolSize: number;
|
|
@@ -388,6 +414,8 @@ export declare const QuestionPoolSnapshotSchema: z.ZodObject<{
|
|
|
388
414
|
opportunityId: string;
|
|
389
415
|
side: string;
|
|
390
416
|
}[];
|
|
417
|
+
embedding?: number[] | undefined;
|
|
418
|
+
embeddingModel?: string | undefined;
|
|
391
419
|
};
|
|
392
420
|
alternates: {
|
|
393
421
|
label: string;
|
|
@@ -400,9 +428,12 @@ export declare const QuestionPoolSnapshotSchema: z.ZodObject<{
|
|
|
400
428
|
opportunityId: string;
|
|
401
429
|
side: string;
|
|
402
430
|
}[];
|
|
431
|
+
embedding?: number[] | undefined;
|
|
432
|
+
embeddingModel?: string | undefined;
|
|
403
433
|
}[];
|
|
404
434
|
runId?: string | undefined;
|
|
405
435
|
intentText?: string | undefined;
|
|
436
|
+
intentFingerprint?: string | undefined;
|
|
406
437
|
}, {
|
|
407
438
|
poolSize: number;
|
|
408
439
|
minedAt: string;
|
|
@@ -417,6 +448,8 @@ export declare const QuestionPoolSnapshotSchema: z.ZodObject<{
|
|
|
417
448
|
opportunityId: string;
|
|
418
449
|
side: string;
|
|
419
450
|
}[];
|
|
451
|
+
embedding?: number[] | undefined;
|
|
452
|
+
embeddingModel?: string | undefined;
|
|
420
453
|
};
|
|
421
454
|
alternates: {
|
|
422
455
|
label: string;
|
|
@@ -429,9 +462,12 @@ export declare const QuestionPoolSnapshotSchema: z.ZodObject<{
|
|
|
429
462
|
opportunityId: string;
|
|
430
463
|
side: string;
|
|
431
464
|
}[];
|
|
465
|
+
embedding?: number[] | undefined;
|
|
466
|
+
embeddingModel?: string | undefined;
|
|
432
467
|
}[];
|
|
433
468
|
runId?: string | undefined;
|
|
434
469
|
intentText?: string | undefined;
|
|
470
|
+
intentFingerprint?: string | undefined;
|
|
435
471
|
}>;
|
|
436
472
|
export declare const QuestionDetectionSchema: z.ZodObject<{
|
|
437
473
|
/** Which preset mode generated this question. */
|
|
@@ -462,6 +498,8 @@ export declare const QuestionDetectionSchema: z.ZodObject<{
|
|
|
462
498
|
runId: z.ZodOptional<z.ZodString>;
|
|
463
499
|
/** Intent payload snippet (≤160 chars) — reused by chained questions' evidence chips. */
|
|
464
500
|
intentText: z.ZodOptional<z.ZodString>;
|
|
501
|
+
/** Stable hash of the full normalized payload + summary used for freshness. */
|
|
502
|
+
intentFingerprint: z.ZodOptional<z.ZodString>;
|
|
465
503
|
/** The discriminator this question asks about. */
|
|
466
504
|
discriminator: z.ZodObject<{
|
|
467
505
|
label: z.ZodString;
|
|
@@ -471,6 +509,10 @@ export declare const QuestionDetectionSchema: z.ZodObject<{
|
|
|
471
509
|
sideCounts: z.ZodRecord<z.ZodString, z.ZodNumber>;
|
|
472
510
|
voi: z.ZodNumber;
|
|
473
511
|
evidenceRate: z.ZodNumber;
|
|
512
|
+
/** Discriminator embedding retained for durable semantic novelty checks. */
|
|
513
|
+
embedding: z.ZodOptional<z.ZodArray<z.ZodNumber, "many">>;
|
|
514
|
+
/** Model that generated `embedding`; mismatches must fall back to text. */
|
|
515
|
+
embeddingModel: z.ZodOptional<z.ZodString>;
|
|
474
516
|
/** Verified assignments only — the P3 re-rank input. */
|
|
475
517
|
assignments: z.ZodArray<z.ZodObject<{
|
|
476
518
|
opportunityId: z.ZodString;
|
|
@@ -493,6 +535,8 @@ export declare const QuestionDetectionSchema: z.ZodObject<{
|
|
|
493
535
|
opportunityId: string;
|
|
494
536
|
side: string;
|
|
495
537
|
}[];
|
|
538
|
+
embedding?: number[] | undefined;
|
|
539
|
+
embeddingModel?: string | undefined;
|
|
496
540
|
}, {
|
|
497
541
|
label: string;
|
|
498
542
|
questionSeed: string;
|
|
@@ -504,6 +548,8 @@ export declare const QuestionDetectionSchema: z.ZodObject<{
|
|
|
504
548
|
opportunityId: string;
|
|
505
549
|
side: string;
|
|
506
550
|
}[];
|
|
551
|
+
embedding?: number[] | undefined;
|
|
552
|
+
embeddingModel?: string | undefined;
|
|
507
553
|
}>;
|
|
508
554
|
/** Remaining ranked discriminators for interview-mode chaining. */
|
|
509
555
|
alternates: z.ZodArray<z.ZodObject<{
|
|
@@ -514,6 +560,10 @@ export declare const QuestionDetectionSchema: z.ZodObject<{
|
|
|
514
560
|
sideCounts: z.ZodRecord<z.ZodString, z.ZodNumber>;
|
|
515
561
|
voi: z.ZodNumber;
|
|
516
562
|
evidenceRate: z.ZodNumber;
|
|
563
|
+
/** Discriminator embedding retained for durable semantic novelty checks. */
|
|
564
|
+
embedding: z.ZodOptional<z.ZodArray<z.ZodNumber, "many">>;
|
|
565
|
+
/** Model that generated `embedding`; mismatches must fall back to text. */
|
|
566
|
+
embeddingModel: z.ZodOptional<z.ZodString>;
|
|
517
567
|
/** Verified assignments only — the P3 re-rank input. */
|
|
518
568
|
assignments: z.ZodArray<z.ZodObject<{
|
|
519
569
|
opportunityId: z.ZodString;
|
|
@@ -536,6 +586,8 @@ export declare const QuestionDetectionSchema: z.ZodObject<{
|
|
|
536
586
|
opportunityId: string;
|
|
537
587
|
side: string;
|
|
538
588
|
}[];
|
|
589
|
+
embedding?: number[] | undefined;
|
|
590
|
+
embeddingModel?: string | undefined;
|
|
539
591
|
}, {
|
|
540
592
|
label: string;
|
|
541
593
|
questionSeed: string;
|
|
@@ -547,6 +599,8 @@ export declare const QuestionDetectionSchema: z.ZodObject<{
|
|
|
547
599
|
opportunityId: string;
|
|
548
600
|
side: string;
|
|
549
601
|
}[];
|
|
602
|
+
embedding?: number[] | undefined;
|
|
603
|
+
embeddingModel?: string | undefined;
|
|
550
604
|
}>, "many">;
|
|
551
605
|
}, "strip", z.ZodTypeAny, {
|
|
552
606
|
poolSize: number;
|
|
@@ -562,6 +616,8 @@ export declare const QuestionDetectionSchema: z.ZodObject<{
|
|
|
562
616
|
opportunityId: string;
|
|
563
617
|
side: string;
|
|
564
618
|
}[];
|
|
619
|
+
embedding?: number[] | undefined;
|
|
620
|
+
embeddingModel?: string | undefined;
|
|
565
621
|
};
|
|
566
622
|
alternates: {
|
|
567
623
|
label: string;
|
|
@@ -574,9 +630,12 @@ export declare const QuestionDetectionSchema: z.ZodObject<{
|
|
|
574
630
|
opportunityId: string;
|
|
575
631
|
side: string;
|
|
576
632
|
}[];
|
|
633
|
+
embedding?: number[] | undefined;
|
|
634
|
+
embeddingModel?: string | undefined;
|
|
577
635
|
}[];
|
|
578
636
|
runId?: string | undefined;
|
|
579
637
|
intentText?: string | undefined;
|
|
638
|
+
intentFingerprint?: string | undefined;
|
|
580
639
|
}, {
|
|
581
640
|
poolSize: number;
|
|
582
641
|
minedAt: string;
|
|
@@ -591,6 +650,8 @@ export declare const QuestionDetectionSchema: z.ZodObject<{
|
|
|
591
650
|
opportunityId: string;
|
|
592
651
|
side: string;
|
|
593
652
|
}[];
|
|
653
|
+
embedding?: number[] | undefined;
|
|
654
|
+
embeddingModel?: string | undefined;
|
|
594
655
|
};
|
|
595
656
|
alternates: {
|
|
596
657
|
label: string;
|
|
@@ -603,9 +664,12 @@ export declare const QuestionDetectionSchema: z.ZodObject<{
|
|
|
603
664
|
opportunityId: string;
|
|
604
665
|
side: string;
|
|
605
666
|
}[];
|
|
667
|
+
embedding?: number[] | undefined;
|
|
668
|
+
embeddingModel?: string | undefined;
|
|
606
669
|
}[];
|
|
607
670
|
runId?: string | undefined;
|
|
608
671
|
intentText?: string | undefined;
|
|
672
|
+
intentFingerprint?: string | undefined;
|
|
609
673
|
}>>;
|
|
610
674
|
}, "strip", z.ZodTypeAny, {
|
|
611
675
|
mode: "intent" | "chat" | "enrichment" | "discovery" | "negotiation" | "negotiation_inflight" | "pool_discovery";
|
|
@@ -630,6 +694,8 @@ export declare const QuestionDetectionSchema: z.ZodObject<{
|
|
|
630
694
|
opportunityId: string;
|
|
631
695
|
side: string;
|
|
632
696
|
}[];
|
|
697
|
+
embedding?: number[] | undefined;
|
|
698
|
+
embeddingModel?: string | undefined;
|
|
633
699
|
};
|
|
634
700
|
alternates: {
|
|
635
701
|
label: string;
|
|
@@ -642,9 +708,12 @@ export declare const QuestionDetectionSchema: z.ZodObject<{
|
|
|
642
708
|
opportunityId: string;
|
|
643
709
|
side: string;
|
|
644
710
|
}[];
|
|
711
|
+
embedding?: number[] | undefined;
|
|
712
|
+
embeddingModel?: string | undefined;
|
|
645
713
|
}[];
|
|
646
714
|
runId?: string | undefined;
|
|
647
715
|
intentText?: string | undefined;
|
|
716
|
+
intentFingerprint?: string | undefined;
|
|
648
717
|
} | undefined;
|
|
649
718
|
}, {
|
|
650
719
|
mode: "intent" | "chat" | "enrichment" | "discovery" | "negotiation" | "negotiation_inflight" | "pool_discovery";
|
|
@@ -669,6 +738,8 @@ export declare const QuestionDetectionSchema: z.ZodObject<{
|
|
|
669
738
|
opportunityId: string;
|
|
670
739
|
side: string;
|
|
671
740
|
}[];
|
|
741
|
+
embedding?: number[] | undefined;
|
|
742
|
+
embeddingModel?: string | undefined;
|
|
672
743
|
};
|
|
673
744
|
alternates: {
|
|
674
745
|
label: string;
|
|
@@ -681,9 +752,12 @@ export declare const QuestionDetectionSchema: z.ZodObject<{
|
|
|
681
752
|
opportunityId: string;
|
|
682
753
|
side: string;
|
|
683
754
|
}[];
|
|
755
|
+
embedding?: number[] | undefined;
|
|
756
|
+
embeddingModel?: string | undefined;
|
|
684
757
|
}[];
|
|
685
758
|
runId?: string | undefined;
|
|
686
759
|
intentText?: string | undefined;
|
|
760
|
+
intentFingerprint?: string | undefined;
|
|
687
761
|
} | undefined;
|
|
688
762
|
}>;
|
|
689
763
|
export declare const QuestionActorSchema: z.ZodObject<{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"question.schema.d.ts","sourceRoot":"/","sources":["shared/schemas/question.schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,oBAAoB;IAC/B,+EAA+E;;IAE/E,iFAAiF;;;;;;;;EAEjF,CAAC;AAEH,eAAO,MAAM,cAAc;IACzB,+EAA+E;;IAE/E,yDAAyD;;IAEzD,6EAA6E;;QAX7E,+EAA+E;;QAE/E,iFAAiF;;;;;;;;;IAWjF,0EAA0E;;IAE1E;;;;OAIG;;;;;;;;;;;;;;;;;;;;EAEH,CAAC;AAEH,4EAA4E;AAC5E,eAAO,MAAM,4BAA4B,kFAIvC,CAAC;AAEH,eAAO,MAAM,sBAAsB,oIAMjC,CAAC;AAEH,eAAO,MAAM,0BAA0B;IA/BrC,+EAA+E;;IAE/E,yDAAyD;;IAEzD,6EAA6E;;QAX7E,+EAA+E;;QAE/E,iFAAiF;;;;;;;;;IAWjF,0EAA0E;;IAE1E;;;;OAIG;;;;IAqBH,0FAA0F;;;;;;;;;;;;;;;;;;;;;;;;EAE1F,CAAC;AAEH,eAAO,MAAM,+BAA+B;;QArC1C,+EAA+E;;QAE/E,yDAAyD;;QAEzD,6EAA6E;;YAX7E,+EAA+E;;YAE/E,iFAAiF;;;;;;;;;QAWjF,0EAA0E;;QAE1E;;;;WAIG;;;;QAqBH,0FAA0F;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAM1F,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAClE,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AACtD,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAC;AAClF,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AACtE,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAC9E,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,+BAA+B,CAAC,CAAC;AAExF;;;;GAIG;AACH,MAAM,WAAW,wBAAwB;IACvC,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,UAAU,EAAE,gBAAgB,EAAE,CAAC;IAC/B,uBAAuB,EAAE,KAAK,CAAC,sBAAsB,GAAG,IAAI,CAAC,CAAC;CAC/D;AAID,eAAO,MAAM,kBAAkB,mHAa7B,CAAC;AAEH,+EAA+E;AAC/E,eAAO,MAAM,4BAA4B;;;;;;;;;EAGvC,CAAC;AAEH;;;;;GAKG;AACH,eAAO,MAAM,+BAA+B;;;;IAI1C,gDAAgD;;;;IAIhD,wDAAwD
|
|
1
|
+
{"version":3,"file":"question.schema.d.ts","sourceRoot":"/","sources":["shared/schemas/question.schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -86,6 +86,10 @@ export const QuestionPoolDiscriminatorSchema = z.object({
|
|
|
86
86
|
sideCounts: z.record(z.string(), z.number()),
|
|
87
87
|
voi: z.number(),
|
|
88
88
|
evidenceRate: z.number(),
|
|
89
|
+
/** Discriminator embedding retained for durable semantic novelty checks. */
|
|
90
|
+
embedding: z.array(z.number().finite()).min(1).max(4096).optional(),
|
|
91
|
+
/** Model that generated `embedding`; mismatches must fall back to text. */
|
|
92
|
+
embeddingModel: z.string().min(1).optional(),
|
|
89
93
|
/** Verified assignments only — the P3 re-rank input. */
|
|
90
94
|
assignments: z.array(QuestionPoolAssignmentSchema),
|
|
91
95
|
});
|
|
@@ -98,6 +102,8 @@ export const QuestionPoolSnapshotSchema = z.object({
|
|
|
98
102
|
runId: z.string().optional(),
|
|
99
103
|
/** Intent payload snippet (≤160 chars) — reused by chained questions' evidence chips. */
|
|
100
104
|
intentText: z.string().optional(),
|
|
105
|
+
/** Stable hash of the full normalized payload + summary used for freshness. */
|
|
106
|
+
intentFingerprint: z.string().min(1).optional(),
|
|
101
107
|
/** The discriminator this question asks about. */
|
|
102
108
|
discriminator: QuestionPoolDiscriminatorSchema,
|
|
103
109
|
/** Remaining ranked discriminators for interview-mode chaining. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"question.schema.js","sourceRoot":"/","sources":["shared/schemas/question.schema.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Question — public structured shape consumed by frontend renderers and MCP\n * elicitation dispatch. Mirrors the brainstorming AskUserQuestion skill so a\n * Question can be rendered identically across surfaces.\n *\n * `QuestionWithStrategy` extends the public shape with internal `strategy`\n * and QUD underspecification tags used by generator guardrails and persisted\n * metadata. Both tags are stripped before the public payload leaves the\n * generator — users never see them.\n */\nimport { z } from \"zod\";\n\nexport const QuestionOptionSchema = z.object({\n /** Display text. Suffix \" (Recommended)\" on the safest path; list it first. */\n label: z.string().min(1).max(120),\n /** Explains the consequence of choosing this option, not just its definition. */\n description: z.string().min(1).max(280),\n});\n\nexport const QuestionSchema = z.object({\n /** ≤12 chars. Noun of the decision domain — e.g. \"Stage\", \"Timing\", \"Role\". */\n title: z.string().min(1).max(12),\n /** ≤2 sentences, ≤400 chars. Ends in a question mark. */\n prompt: z.string().min(1).max(400),\n /** 2–4 options. No explicit \"Other\" — clients provide that automatically. */\n options: z.array(QuestionOptionSchema).min(2).max(4),\n /** True when options are not mutually exclusive (priorities, bundles). */\n multiSelect: z.boolean(),\n /**\n * Optional provenance line rendered as a muted chip above the prompt\n * (e.g. \"based on 18 people matching this intent\"). Aggregate counts only —\n * never individual identities (pool_discovery k-anonymity invariant).\n */\n evidence: z.string().min(1).max(160).optional(),\n});\n\n/** Canonical QUD repair categories for underspecified intents/questions. */\nexport const UnderspecificationTypeSchema = z.enum([\n \"missing_constituent\",\n \"missing_constraint\",\n \"open_alternative_set\",\n]);\n\nexport const QuestionStrategySchema = z.enum([\n \"refine_intent\",\n \"surface_missing_detail\",\n \"open_adjacent_thread\",\n \"reflective_summary\",\n \"surface_emergent_knowledge\",\n]);\n\nexport const QuestionWithStrategySchema = QuestionSchema.extend({\n strategy: QuestionStrategySchema,\n /** QUD repair category, or null when the question is not an underspecification repair. */\n underspecificationType: UnderspecificationTypeSchema.nullable(),\n});\n\nexport const QuestionGeneratorResponseSchema = z.object({\n questions: z.array(QuestionWithStrategySchema).max(3),\n});\n\nexport type QuestionOption = z.infer<typeof QuestionOptionSchema>;\nexport type Question = z.infer<typeof QuestionSchema>;\nexport type UnderspecificationType = z.infer<typeof UnderspecificationTypeSchema>;\nexport type QuestionStrategy = z.infer<typeof QuestionStrategySchema>;\nexport type QuestionWithStrategy = z.infer<typeof QuestionWithStrategySchema>;\nexport type QuestionGeneratorResponse = z.infer<typeof QuestionGeneratorResponseSchema>;\n\n/**\n * Internal generator output: public questions plus parallel strategy and QUD\n * taxonomy arrays for metadata-only consumption. The generator emits this;\n * callers forward only `questions` to renderers.\n */\nexport interface QuestionGenerationResult {\n questions: Question[];\n strategies: QuestionStrategy[];\n underspecificationTypes: Array<UnderspecificationType | null>;\n}\n\n// ─── Persistence types (opportunity-style composable jsonb) ──────────────────\n\nexport const QuestionModeSchema = z.enum([\n \"discovery\",\n \"intent\",\n \"enrichment\",\n \"negotiation\",\n // Negotiator-initiated mid-negotiation client questions (ask_user action, P3).\n // Distinct from \"negotiation\", which covers post-stall questions only.\n \"negotiation_inflight\",\n // Orchestrator-initiated mid-conversation questions (ask_user_question tool).\n \"chat\",\n // Pool-discriminator questions mined from the intent's candidate pool\n // (IND-418). Synthesized deterministically — no generator LLM call.\n \"pool_discovery\",\n]);\n\n/** One server-side candidate→side assignment (never serialized to clients). */\nexport const QuestionPoolAssignmentSchema = z.object({\n opportunityId: z.string().min(1),\n side: z.string().min(1),\n});\n\n/**\n * One mined discriminator carried inside a pool_discovery question's\n * detection (the asked one plus ranked alternates for interview-mode\n * chaining). INTERNAL — the read path strips `detection.pool` before any\n * payload leaves the server.\n */\nexport const QuestionPoolDiscriminatorSchema = z.object({\n label: z.string().min(1),\n questionSeed: z.string().min(1),\n sides: z.array(z.string().min(1)).min(2).max(3),\n /** Verified-assignment count per side label. */\n sideCounts: z.record(z.string(), z.number()),\n voi: z.number(),\n evidenceRate: z.number(),\n /** Verified assignments only — the P3 re-rank input. */\n assignments: z.array(QuestionPoolAssignmentSchema),\n});\n\n/** Pool snapshot stored on pool_discovery questions (server-side only). */\nexport const QuestionPoolSnapshotSchema = z.object({\n poolSize: z.number().int().min(0),\n /** ISO-8601 timestamp of the mining pass. */\n minedAt: z.string().min(1),\n /** Discovery run that produced the pool, when known. */\n runId: z.string().optional(),\n /** Intent payload snippet (≤160 chars) — reused by chained questions' evidence chips. */\n intentText: z.string().optional(),\n /** The discriminator this question asks about. */\n discriminator: QuestionPoolDiscriminatorSchema,\n /** Remaining ranked discriminators for interview-mode chaining. */\n alternates: z.array(QuestionPoolDiscriminatorSchema),\n});\n\nexport const QuestionDetectionSchema = z.object({\n /** Which preset mode generated this question. */\n mode: QuestionModeSchema,\n /** Entity type that triggered generation (e.g. \"opportunity\", \"intent\", \"profile\"). */\n sourceType: z.string().min(1),\n /** ID of the triggering entity. */\n sourceId: z.string().min(1),\n /** Optional intent ID that was the root cause. */\n triggeredBy: z.string().optional(),\n /** ISO-8601 timestamp of generation. */\n timestamp: z.string().min(1),\n /** Generation strategy persisted as internal metadata. */\n strategy: QuestionStrategySchema.optional(),\n /** QUD repair category persisted as internal metadata. */\n underspecificationType: UnderspecificationTypeSchema.nullable().optional(),\n /** ID of the assistant message that triggered this question. Used by the frontend to anchor the question card inline. */\n messageId: z.string().optional(),\n /**\n * pool_discovery only: the mined pool snapshot (assignments + alternates).\n * INTERNAL — stripped from every client-facing read (web + MCP).\n */\n pool: QuestionPoolSnapshotSchema.optional(),\n});\n\nexport const QuestionActorSchema = z.object({\n /** The user this question is for. */\n userId: z.string().min(1),\n /** Optional network context. */\n networkId: z.string().optional(),\n /** Actor's role in the question — currently always \"subject\". */\n role: z.literal(\"subject\"),\n});\n\nexport const QuestionAnswerSchema = z.object({\n /** Option labels the user selected. */\n selectedOptions: z.array(z.string()),\n /** Free-text input when the user chose \"Other\" or elaborated. */\n freeText: z.string().optional(),\n /** User ID of the answerer. */\n answeredBy: z.string().min(1),\n /** ISO-8601 timestamp of when the answer was submitted. */\n answeredAt: z.string().min(1),\n});\n\nexport type QuestionMode = z.infer<typeof QuestionModeSchema>;\nexport type QuestionDetection = z.infer<typeof QuestionDetectionSchema>;\nexport type QuestionActor = z.infer<typeof QuestionActorSchema>;\nexport type QuestionAnswer = z.infer<typeof QuestionAnswerSchema>;\nexport type QuestionPoolAssignment = z.infer<typeof QuestionPoolAssignmentSchema>;\nexport type QuestionPoolDiscriminator = z.infer<typeof QuestionPoolDiscriminatorSchema>;\nexport type QuestionPoolSnapshot = z.infer<typeof QuestionPoolSnapshotSchema>;\n"]}
|
|
1
|
+
{"version":3,"file":"question.schema.js","sourceRoot":"/","sources":["shared/schemas/question.schema.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Question — public structured shape consumed by frontend renderers and MCP\n * elicitation dispatch. Mirrors the brainstorming AskUserQuestion skill so a\n * Question can be rendered identically across surfaces.\n *\n * `QuestionWithStrategy` extends the public shape with internal `strategy`\n * and QUD underspecification tags used by generator guardrails and persisted\n * metadata. Both tags are stripped before the public payload leaves the\n * generator — users never see them.\n */\nimport { z } from \"zod\";\n\nexport const QuestionOptionSchema = z.object({\n /** Display text. Suffix \" (Recommended)\" on the safest path; list it first. */\n label: z.string().min(1).max(120),\n /** Explains the consequence of choosing this option, not just its definition. */\n description: z.string().min(1).max(280),\n});\n\nexport const QuestionSchema = z.object({\n /** ≤12 chars. Noun of the decision domain — e.g. \"Stage\", \"Timing\", \"Role\". */\n title: z.string().min(1).max(12),\n /** ≤2 sentences, ≤400 chars. Ends in a question mark. */\n prompt: z.string().min(1).max(400),\n /** 2–4 options. No explicit \"Other\" — clients provide that automatically. */\n options: z.array(QuestionOptionSchema).min(2).max(4),\n /** True when options are not mutually exclusive (priorities, bundles). */\n multiSelect: z.boolean(),\n /**\n * Optional provenance line rendered as a muted chip above the prompt\n * (e.g. \"based on 18 people matching this intent\"). Aggregate counts only —\n * never individual identities (pool_discovery k-anonymity invariant).\n */\n evidence: z.string().min(1).max(160).optional(),\n});\n\n/** Canonical QUD repair categories for underspecified intents/questions. */\nexport const UnderspecificationTypeSchema = z.enum([\n \"missing_constituent\",\n \"missing_constraint\",\n \"open_alternative_set\",\n]);\n\nexport const QuestionStrategySchema = z.enum([\n \"refine_intent\",\n \"surface_missing_detail\",\n \"open_adjacent_thread\",\n \"reflective_summary\",\n \"surface_emergent_knowledge\",\n]);\n\nexport const QuestionWithStrategySchema = QuestionSchema.extend({\n strategy: QuestionStrategySchema,\n /** QUD repair category, or null when the question is not an underspecification repair. */\n underspecificationType: UnderspecificationTypeSchema.nullable(),\n});\n\nexport const QuestionGeneratorResponseSchema = z.object({\n questions: z.array(QuestionWithStrategySchema).max(3),\n});\n\nexport type QuestionOption = z.infer<typeof QuestionOptionSchema>;\nexport type Question = z.infer<typeof QuestionSchema>;\nexport type UnderspecificationType = z.infer<typeof UnderspecificationTypeSchema>;\nexport type QuestionStrategy = z.infer<typeof QuestionStrategySchema>;\nexport type QuestionWithStrategy = z.infer<typeof QuestionWithStrategySchema>;\nexport type QuestionGeneratorResponse = z.infer<typeof QuestionGeneratorResponseSchema>;\n\n/**\n * Internal generator output: public questions plus parallel strategy and QUD\n * taxonomy arrays for metadata-only consumption. The generator emits this;\n * callers forward only `questions` to renderers.\n */\nexport interface QuestionGenerationResult {\n questions: Question[];\n strategies: QuestionStrategy[];\n underspecificationTypes: Array<UnderspecificationType | null>;\n}\n\n// ─── Persistence types (opportunity-style composable jsonb) ──────────────────\n\nexport const QuestionModeSchema = z.enum([\n \"discovery\",\n \"intent\",\n \"enrichment\",\n \"negotiation\",\n // Negotiator-initiated mid-negotiation client questions (ask_user action, P3).\n // Distinct from \"negotiation\", which covers post-stall questions only.\n \"negotiation_inflight\",\n // Orchestrator-initiated mid-conversation questions (ask_user_question tool).\n \"chat\",\n // Pool-discriminator questions mined from the intent's candidate pool\n // (IND-418). Synthesized deterministically — no generator LLM call.\n \"pool_discovery\",\n]);\n\n/** One server-side candidate→side assignment (never serialized to clients). */\nexport const QuestionPoolAssignmentSchema = z.object({\n opportunityId: z.string().min(1),\n side: z.string().min(1),\n});\n\n/**\n * One mined discriminator carried inside a pool_discovery question's\n * detection (the asked one plus ranked alternates for interview-mode\n * chaining). INTERNAL — the read path strips `detection.pool` before any\n * payload leaves the server.\n */\nexport const QuestionPoolDiscriminatorSchema = z.object({\n label: z.string().min(1),\n questionSeed: z.string().min(1),\n sides: z.array(z.string().min(1)).min(2).max(3),\n /** Verified-assignment count per side label. */\n sideCounts: z.record(z.string(), z.number()),\n voi: z.number(),\n evidenceRate: z.number(),\n /** Discriminator embedding retained for durable semantic novelty checks. */\n embedding: z.array(z.number().finite()).min(1).max(4096).optional(),\n /** Model that generated `embedding`; mismatches must fall back to text. */\n embeddingModel: z.string().min(1).optional(),\n /** Verified assignments only — the P3 re-rank input. */\n assignments: z.array(QuestionPoolAssignmentSchema),\n});\n\n/** Pool snapshot stored on pool_discovery questions (server-side only). */\nexport const QuestionPoolSnapshotSchema = z.object({\n poolSize: z.number().int().min(0),\n /** ISO-8601 timestamp of the mining pass. */\n minedAt: z.string().min(1),\n /** Discovery run that produced the pool, when known. */\n runId: z.string().optional(),\n /** Intent payload snippet (≤160 chars) — reused by chained questions' evidence chips. */\n intentText: z.string().optional(),\n /** Stable hash of the full normalized payload + summary used for freshness. */\n intentFingerprint: z.string().min(1).optional(),\n /** The discriminator this question asks about. */\n discriminator: QuestionPoolDiscriminatorSchema,\n /** Remaining ranked discriminators for interview-mode chaining. */\n alternates: z.array(QuestionPoolDiscriminatorSchema),\n});\n\nexport const QuestionDetectionSchema = z.object({\n /** Which preset mode generated this question. */\n mode: QuestionModeSchema,\n /** Entity type that triggered generation (e.g. \"opportunity\", \"intent\", \"profile\"). */\n sourceType: z.string().min(1),\n /** ID of the triggering entity. */\n sourceId: z.string().min(1),\n /** Optional intent ID that was the root cause. */\n triggeredBy: z.string().optional(),\n /** ISO-8601 timestamp of generation. */\n timestamp: z.string().min(1),\n /** Generation strategy persisted as internal metadata. */\n strategy: QuestionStrategySchema.optional(),\n /** QUD repair category persisted as internal metadata. */\n underspecificationType: UnderspecificationTypeSchema.nullable().optional(),\n /** ID of the assistant message that triggered this question. Used by the frontend to anchor the question card inline. */\n messageId: z.string().optional(),\n /**\n * pool_discovery only: the mined pool snapshot (assignments + alternates).\n * INTERNAL — stripped from every client-facing read (web + MCP).\n */\n pool: QuestionPoolSnapshotSchema.optional(),\n});\n\nexport const QuestionActorSchema = z.object({\n /** The user this question is for. */\n userId: z.string().min(1),\n /** Optional network context. */\n networkId: z.string().optional(),\n /** Actor's role in the question — currently always \"subject\". */\n role: z.literal(\"subject\"),\n});\n\nexport const QuestionAnswerSchema = z.object({\n /** Option labels the user selected. */\n selectedOptions: z.array(z.string()),\n /** Free-text input when the user chose \"Other\" or elaborated. */\n freeText: z.string().optional(),\n /** User ID of the answerer. */\n answeredBy: z.string().min(1),\n /** ISO-8601 timestamp of when the answer was submitted. */\n answeredAt: z.string().min(1),\n});\n\nexport type QuestionMode = z.infer<typeof QuestionModeSchema>;\nexport type QuestionDetection = z.infer<typeof QuestionDetectionSchema>;\nexport type QuestionActor = z.infer<typeof QuestionActorSchema>;\nexport type QuestionAnswer = z.infer<typeof QuestionAnswerSchema>;\nexport type QuestionPoolAssignment = z.infer<typeof QuestionPoolAssignmentSchema>;\nexport type QuestionPoolDiscriminator = z.infer<typeof QuestionPoolDiscriminatorSchema>;\nexport type QuestionPoolSnapshot = z.infer<typeof QuestionPoolSnapshotSchema>;\n"]}
|