@@ -429,6 +429,9 @@ interface ITestCopilotModelInfo {
429429 readonly billing?: CopilotModelInfo['billing'];
430430 readonly modelPickerCategory?: CopilotModelInfo['modelPickerCategory'];
431431 readonly modelPickerPriceCategory?: CopilotModelInfo['modelPickerPriceCategory'];
432+ readonly warningText?: CopilotModelInfo['warningText'];
433+ readonly infoMessages?: CopilotModelInfo['infoMessages'];
434+ readonly warningMessages?: CopilotModelInfo['warningMessages'];
432435 readonly supportedReasoningEfforts?: CopilotModelInfo['supportedReasoningEfforts'];
433436}
434437
@@ -469,6 +472,9 @@ function toSdkModelInfo(model: ITestCopilotModelInfo): CopilotModelInfo {
469472 ...(model.billing ? { billing: model.billing } : {}),
470473 ...(model.modelPickerCategory ? { modelPickerCategory: model.modelPickerCategory } : {}),
471474 ...(model.modelPickerPriceCategory ? { modelPickerPriceCategory: model.modelPickerPriceCategory } : {}),
475+ ...(model.warningText ? { warningText: model.warningText } : {}),
476+ ...(model.infoMessages ? { infoMessages: model.infoMessages } : {}),
477+ ...(model.warningMessages ? { warningMessages: model.warningMessages } : {}),
472478 ...(model.supportedReasoningEfforts ? { supportedReasoningEfforts: model.supportedReasoningEfforts } : {}),
473479 };
474480}
@@ -4853,7 +4859,7 @@ suite('CopilotAgent', () => {
48534859 }
48544860 });
48554861
4856- test('models include picker and promo metadata when the SDK provides it', async () => {
4862+ test('models include picker, notice, and promo metadata when the SDK provides it', async () => {
48574863 const agent = createTestAgent(disposables, {
48584864 copilotClient: new TestCopilotClient([], [{
48594865 id: 'claude-sonnet',
@@ -4878,6 +4884,16 @@ suite('CopilotAgent', () => {
48784884 },
48794885 modelPickerCategory: 'powerful',
48804886 modelPickerPriceCategory: 'medium',
4887+ warningText: {
4888+ dataRetention: 'Prompts are retained for 30 days.',
4889+ },
4890+ infoMessages: [
4891+ { code: 'model_pending_deprecation', message: 'Claude Sonnet will be retired soon.' },
4892+ { code: 'model_relocated', message: 'Claude Sonnet now serves from a new region.' },
4893+ ],
4894+ warningMessages: [
4895+ { code: 'model_degraded', message: 'Claude Sonnet is currently degraded.' },
4896+ ],
48814897 }]),
48824898 });
48834899 try {
@@ -4894,6 +4910,15 @@ suite('CopilotAgent', () => {
48944910 longContextOutputCost: 22.5,
48954911 priceCategory: 'medium',
48964912 category: 'powerful',
4913+ warningText: {
4914+ data_retention: 'Prompts are retained for 30 days.',
4915+ model_pending_deprecation: 'Claude Sonnet will be retired soon.',
4916+ model_degraded: 'Claude Sonnet is currently degraded.',
4917+ },
4918+ infoText: {
4919+ model_relocated: 'Claude Sonnet now serves from a new region.',
4920+ },
4921+ rowWarning: 'Claude Sonnet is currently degraded.',
48974922 promo: {
48984923 id: 'summer-sale',
48994924 discountPercent: 25,
0 commit comments