@@ -14,6 +14,7 @@ import {
1414 $InferMessageContentBlocks ,
1515 $InferMessageProperty ,
1616 $InferMessageProperties ,
17+ $InferResponseMetadata ,
1718} from "../message.js" ;
1819import { ContentBlock } from "../content/index.js" ;
1920import { ResponseMetadata , UsageMetadata } from "../metadata.js" ;
@@ -617,17 +618,17 @@ describe("$NormalizedMessageStructure<T>", () => {
617618 // Properties backfilled for all standard roles
618619 type AIP = NonNullable < N [ "properties" ] > [ "ai" ] ;
619620 expectTypeOf < AIP > ( ) . toEqualTypeOf < {
620- response_metadata ? : ResponseMetadata | undefined ;
621- usage_metadata ? : UsageMetadata | undefined ;
621+ response_metadata : ResponseMetadata ;
622+ usage_metadata : UsageMetadata ;
622623 } > ( ) ;
623624 expectTypeOf < NonNullable < N [ "properties" ] > [ "human" ] > ( ) . toEqualTypeOf < {
624- response_metadata ? : Record < string , unknown > | undefined ;
625+ response_metadata : Record < string , unknown > ;
625626 } > ( ) ;
626627 expectTypeOf < NonNullable < N [ "properties" ] > [ "system" ] > ( ) . toEqualTypeOf < {
627- response_metadata ? : Record < string , unknown > | undefined ;
628+ response_metadata : Record < string , unknown > ;
628629 } > ( ) ;
629630 expectTypeOf < NonNullable < N [ "properties" ] > [ "tool" ] > ( ) . toEqualTypeOf < {
630- response_metadata ? : Record < string , unknown > | undefined ;
631+ response_metadata : Record < string , unknown > ;
631632 } > ( ) ;
632633 } ) ;
633634} ) ;
@@ -840,23 +841,23 @@ describe("$InferMessageProperties<TStructure, TRole>", () => {
840841
841842 type AIProps = $InferMessageProperties < S , "ai" > ;
842843 expectTypeOf < AIProps > ( ) . toEqualTypeOf < {
843- response_metadata ? : ResponseMetadata | undefined ;
844- usage_metadata ? : UsageMetadata | undefined ;
844+ response_metadata : ResponseMetadata ;
845+ usage_metadata : UsageMetadata ;
845846 } > ( ) ;
846847
847848 type HumanProps = $InferMessageProperties < S , "human" > ;
848849 expectTypeOf < HumanProps > ( ) . toEqualTypeOf < {
849- response_metadata ? : Record < string , unknown > | undefined ;
850+ response_metadata : Record < string , unknown > ;
850851 } > ( ) ;
851852
852853 type SystemProps = $InferMessageProperties < S , "system" > ;
853854 expectTypeOf < SystemProps > ( ) . toEqualTypeOf < {
854- response_metadata ? : Record < string , unknown > | undefined ;
855+ response_metadata : Record < string , unknown > ;
855856 } > ( ) ;
856857
857858 type ToolProps = $InferMessageProperties < S , "tool" > ;
858859 expectTypeOf < ToolProps > ( ) . toEqualTypeOf < {
859- response_metadata ? : Record < string , unknown > | undefined ;
860+ response_metadata : Record < string , unknown > ;
860861 } > ( ) ;
861862 } ) ;
862863
@@ -871,12 +872,12 @@ describe("$InferMessageProperties<TStructure, TRole>", () => {
871872 type HumanProps = $InferMessageProperties < S , "human" > ;
872873
873874 expectTypeOf < AIProps > ( ) . toEqualTypeOf < {
874- response_metadata : ResponseMetadata | undefined ;
875- usage_metadata : UsageMetadata | undefined ;
875+ response_metadata : ResponseMetadata ;
876+ usage_metadata : UsageMetadata ;
876877 foo : { bar : number } ;
877878 } > ( ) ;
878879 expectTypeOf < HumanProps > ( ) . toEqualTypeOf < {
879- response_metadata : Record < string , unknown > | undefined ;
880+ response_metadata : Record < string , unknown > ;
880881 metadata : { qux : string } ;
881882 } > ( ) ;
882883 } ) ;
@@ -895,8 +896,8 @@ describe("$InferMessageProperties<TStructure, TRole>", () => {
895896 type AIProps = $InferMessageProperties < S , "ai" > ;
896897
897898 expectTypeOf < AIProps > ( ) . toEqualTypeOf < {
898- response_metadata : ResponseMetadata | undefined ;
899- usage_metadata : UsageMetadata | undefined ;
899+ response_metadata : ResponseMetadata ;
900+ usage_metadata : UsageMetadata ;
900901 keep : boolean ;
901902 nested : { a : number } ;
902903 } > ( ) ;
@@ -929,8 +930,8 @@ describe("$InferMessageProperties<TStructure, TRole>", () => {
929930 type AIProps = $InferMessageProperties < M , "ai" > ;
930931
931932 expectTypeOf < AIProps > ( ) . toEqualTypeOf < {
932- response_metadata : ResponseMetadata | undefined ;
933- usage_metadata : UsageMetadata | undefined ;
933+ response_metadata : ResponseMetadata ;
934+ usage_metadata : UsageMetadata ;
934935 foo : { bar : string ; baz : number } ;
935936 baz : { qux : string } ;
936937 } > ( ) ;
@@ -969,6 +970,10 @@ describe("$InferMessageProperty<TStructure, TRole, K>", () => {
969970
970971describe ( "$InferResponseMetadata<TStructure, TRole>" , ( ) => {
971972 // TODO(hntrl): implement
973+ test ( "should return `ResponseMetadata | undefined` when using `<MessageStructure, 'ai'>`" , async ( ) => {
974+ type AIResponseMetadata = $InferResponseMetadata < MessageStructure , "ai" > ;
975+ expectTypeOf < AIResponseMetadata > ( ) . toEqualTypeOf < ResponseMetadata > ( ) ;
976+ } ) ;
972977} ) ;
973978
974979describe ( "Message" , ( ) => {
0 commit comments