From 33224b68a0d2f37739dc3c2f91989b37430859cd Mon Sep 17 00:00:00 2001 From: Megan Rogge Date: Thu, 27 Aug 2026 12:26:57 -0400 Subject: [PATCH] Add enterprise policies for dictation data (#332953) Fixes #331845 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- build/lib/policies/policyData.jsonc | 44 +++++++++++++++++++ .../chat/browser/chat.shared.contribution.ts | 36 ++++++++++++++- 2 files changed, 78 insertions(+), 2 deletions(-) diff --git a/build/lib/policies/policyData.jsonc b/build/lib/policies/policyData.jsonc index 69e258d2d2a..6a409588d09 100644 --- a/build/lib/policies/policyData.jsonc +++ b/build/lib/policies/policyData.jsonc @@ -734,6 +734,50 @@ "default": true, "included": true }, + { + "key": "dictation.experimental.llmCleanup", + "name": "DictationLLMCleanup", + "category": "InteractiveSession", + "minimumVersion": "1.136", + "localization": { + "description": { + "key": "dictation.experimental.llmCleanup.policy", + "value": "Controls whether final dictation transcripts are sent to a language model for cleanup." + } + }, + "type": "boolean", + "default": true, + "included": true + }, + { + "key": "dictation.model", + "name": "DictationModel", + "category": "InteractiveSession", + "minimumVersion": "1.136", + "localization": { + "description": { + "key": "dictation.model.policy", + "value": "Controls the transcription model used for dictation." + }, + "enumDescriptions": [ + { + "key": "dictation.model.nemotronMultilingual.policy", + "value": "Use the on-device transcription model. Audio does not leave the device." + }, + { + "key": "dictation.model.mai.policy", + "value": "Use the cloud transcription service. Audio is streamed to the service." + } + ] + }, + "type": "string", + "default": "nemotron-3.5-asr-streaming-0.6b", + "enum": [ + "nemotron-3.5-asr-streaming-0.6b", + "mai" + ], + "included": true + }, { "key": "extensions.allowed", "name": "AllowedExtensions", diff --git a/src/vs/workbench/contrib/chat/browser/chat.shared.contribution.ts b/src/vs/workbench/contrib/chat/browser/chat.shared.contribution.ts index 5f049772601..4be4b022be7 100644 --- a/src/vs/workbench/contrib/chat/browser/chat.shared.contribution.ts +++ b/src/vs/workbench/contrib/chat/browser/chat.shared.contribution.ts @@ -315,7 +315,28 @@ configurationRegistry.registerConfiguration({ markdownDescription: nls.localize('dictation.model', "The model used for dictation. On-device models download on first use and run locally through Microsoft Foundry Local; the cloud option streams audio to the Microsoft AI voice service."), default: DEFAULT_LOCAL_TRANSCRIPTION_MODEL, tags: ['experimental'], - experiment: { mode: 'auto' } + experiment: { mode: 'auto' }, + policy: { + name: 'DictationModel', + category: PolicyCategory.InteractiveSession, + minimumVersion: '1.136', + localization: { + description: { + key: 'dictation.model.policy', + value: nls.localize('dictation.model.policy', "Controls the transcription model used for dictation.") + }, + enumDescriptions: [ + { + key: 'dictation.model.nemotronMultilingual.policy', + value: nls.localize('dictation.model.nemotronMultilingual.policy', "Use the on-device transcription model. Audio does not leave the device.") + }, + { + key: 'dictation.model.mai.policy', + value: nls.localize('dictation.model.mai.policy', "Use the cloud transcription service. Audio is streamed to the service.") + }, + ] + }, + } }, [DictationSettingId.ShowTranscript]: { type: 'boolean', @@ -333,7 +354,18 @@ configurationRegistry.registerConfiguration({ type: 'boolean', markdownDescription: nls.localize('dictation.experimental.llmCleanup', "Experimental: when dictation ends, the final transcript is passed through a small language model to restore punctuation, capitalization, paragraphs, and lists. Requires Copilot to be enabled; the transcript is sent to the language model for cleanup. Falls back to the raw transcript when no model is available. Use [dictation instructions](command:{0}) to customize terminology and formatting.", CONFIGURE_DICTATION_INSTRUCTIONS_ACTION_ID), default: true, - tags: ['experimental'] + tags: ['experimental'], + policy: { + name: 'DictationLLMCleanup', + category: PolicyCategory.InteractiveSession, + minimumVersion: '1.136', + localization: { + description: { + key: 'dictation.experimental.llmCleanup.policy', + value: nls.localize('dictation.experimental.llmCleanup.policy', "Controls whether final dictation transcripts are sent to a language model for cleanup.") + } + }, + } }, 'dictation.experimental.llmCleanupModel': { type: 'string',