diff --git a/evals/fixtures/generative-agent/agent.mcs.yml b/evals/fixtures/generative-agent/agent.mcs.yml new file mode 100644 index 0000000..37faede --- /dev/null +++ b/evals/fixtures/generative-agent/agent.mcs.yml @@ -0,0 +1,21 @@ +mcs.metadata: + componentName: EvalTestAgent +kind: GptComponentMetadata +displayName: Eval Test Agent +instructions: | + You are a helpful assistant that provides accurate and friendly responses. + + Guidelines: + - Be concise and clear in your responses + - Ask clarifying questions when needed + - Escalate to a human agent when you cannot help +conversationStarters: + - title: Get Started + text: How can you help me? + + - title: FAQ + text: What questions can you answer? + +aISettings: + model: + modelNameHint: GPT5Chat diff --git a/evals/fixtures/generative-agent/settings.mcs.yml b/evals/fixtures/generative-agent/settings.mcs.yml new file mode 100644 index 0000000..5513606 --- /dev/null +++ b/evals/fixtures/generative-agent/settings.mcs.yml @@ -0,0 +1,12 @@ +displayName: Eval Test Agent +schemaName: eval_testAgent +accessControlPolicy: ChatbotReaders +authenticationMode: None +configuration: + settings: + GenerativeActionsEnabled: true + + recognizer: + kind: GenerativeAIRecognizer + +language: 1033 diff --git a/evals/fixtures/generative-agent/topics/Greeting.topic.mcs.yml b/evals/fixtures/generative-agent/topics/Greeting.topic.mcs.yml new file mode 100644 index 0000000..7ab41f5 --- /dev/null +++ b/evals/fixtures/generative-agent/topics/Greeting.topic.mcs.yml @@ -0,0 +1,12 @@ +kind: AdaptiveDialog +beginDialog: + kind: OnConversationStart + id: main + actions: + - kind: SendActivity + id: sendGreeting + activity: + text: + - Hello! I'm {System.Bot.Name}. How can I help you today? + - Hi there! Welcome! What can I assist you with? + - Greetings! I'm here to help. What would you like to know? diff --git a/evals/scenarios/agent-settings.json b/evals/scenarios/agent-settings.json index c453ac7..cc8fd60 100644 --- a/evals/scenarios/agent-settings.json +++ b/evals/scenarios/agent-settings.json @@ -57,6 +57,39 @@ "content_contains": ["GenerativeActionsEnabled: true"], "no_placeholders": true } + }, + { + "id": 4, + "name": "Enable Enhanced Task Completion (generative actions off)", + "prompt": "Enable Enhanced Task Completion on the agent.", + "fixture": "basic-agent", + "mock_scripts": [], + "checks": { + "agent_invoked": "copilot-studio:Copilot Studio Author", + "skill_invoked": "copilot-studio:edit-agent", + "files_created": [ + {"pattern": "settings.mcs.yml", "min_count": 1} + ], + "content_contains": ["SmartTaskCompletionEnabled: true"], + "no_placeholders": true + } + }, + { + "id": 5, + "name": "Enable Enhanced Task Completion (generative actions already on)", + "prompt": "Enable Enhanced Task Completion on the agent.", + "fixture": "generative-agent", + "mock_scripts": [], + "checks": { + "agent_invoked": "copilot-studio:Copilot Studio Author", + "skill_invoked": "copilot-studio:edit-agent", + "files_created": [ + {"pattern": "settings.mcs.yml", "min_count": 1} + ], + "content_contains": ["SmartTaskCompletionEnabled: true"], + "yaml_unchanged": [{"file": "agent.mcs.yml"}], + "no_placeholders": true + } } ] } diff --git a/skills/edit-agent/SKILL.md b/skills/edit-agent/SKILL.md index 019de3b..85e0816 100644 --- a/skills/edit-agent/SKILL.md +++ b/skills/edit-agent/SKILL.md @@ -21,7 +21,7 @@ Modify agent metadata (`agent.mcs.yml`) or configuration (`settings.mcs.yml`). 2. **Identify what the user wants to change** and read the appropriate file: - **Instructions, display name, conversation starters, AI settings** → `agent.mcs.yml` - - **GenerativeActionsEnabled, authentication, recognizer, capabilities** → `settings.mcs.yml` + - **GenerativeActionsEnabled, SmartTaskCompletionEnabled (aka Enhanced Task Completion), authentication, recognizer, capabilities** → `settings.mcs.yml` 3. **If the user wants to change the AI model**, run the schema lookup tool first: ```bash @@ -46,9 +46,16 @@ Modify agent metadata (`agent.mcs.yml`) or configuration (`settings.mcs.yml`). ## Editable Fields in `settings.mcs.yml` +> **UI-to-YAML name mapping** — The Copilot Studio UI uses different names than the YAML keys: +> - "Enhanced Task Completion" → `SmartTaskCompletionEnabled` +> - "Generative orchestration" → `GenerativeActionsEnabled` +> +> Always use the YAML key names from the table below, NOT the UI names. + | Field | Description | Example | |-------|-------------|---------| | `GenerativeActionsEnabled` | Enable generative orchestration | `true` / `false` | +| `SmartTaskCompletionEnabled` | Enable Enhanced Task Completion (experimental as of 2026-04). **Requires `GenerativeActionsEnabled: true`** — if it is currently `false`, you MUST set it to `true` in the same edit. Both keys live under `configuration.settings`. Allows the agent to break down complex tasks, ask clarifying questions, and chain tools step by step. Some features may not be supported when enabled. | `true` / `false` | | `authenticationMode` | Auth mode | `Integrated`, `None` | | `authenticationTrigger` | When to auth | `Always`, `AsNeeded` | | `accessControlPolicy` | Access control | `ChatbotReaders` | @@ -68,6 +75,18 @@ For detailed guidance on writing knowledge-aware instructions, grounding directi If the user asks to change any of these, warn them. +## Example: Enable Enhanced Task Completion + +Both `SmartTaskCompletionEnabled` and `GenerativeActionsEnabled` live in `settings.mcs.yml` under `configuration.settings` — NOT in `agent.mcs.yml`: + +```yaml +# settings.mcs.yml +configuration: + settings: + GenerativeActionsEnabled: true + SmartTaskCompletionEnabled: true +``` + ## Example: Update Instructions ```yaml diff --git a/skills/int-project-context/SKILL.md b/skills/int-project-context/SKILL.md index 602e84e..186ed60 100644 --- a/skills/int-project-context/SKILL.md +++ b/skills/int-project-context/SKILL.md @@ -71,3 +71,4 @@ Example skills include `/copilot-studio:new-topic` for creating new topics, `/co - **Template `_REPLACE`**: Always replace `_REPLACE` placeholder IDs with unique random IDs. - **Power Fx**: Expressions start with `=`. String interpolation uses `{}`. Only use supported functions (check `int-reference` skill). - **Generative Orchestration**: When `GenerativeActionsEnabled: true`, use topic inputs/outputs instead of hardcoded questions/messages. +- **Enhanced Task Completion**: When `SmartTaskCompletionEnabled: true` (requires `GenerativeActionsEnabled: true`), the agent uses an advanced orchestrator that breaks down complex tasks step by step. Experimental as of 2026-04 — some features may not be supported when enabled. diff --git a/skills/int-reference/SKILL.md b/skills/int-reference/SKILL.md index 6ee2b2c..8e12225 100644 --- a/skills/int-reference/SKILL.md +++ b/skills/int-reference/SKILL.md @@ -28,6 +28,8 @@ Topics with `OnRecognizedIntent` have two routing mechanisms — which one matte System triggers (`OnConversationStart`, `OnUnknownIntent`, `OnError`, etc.) fire automatically and don't use either mechanism. +**Enhanced Task Completion** (`SmartTaskCompletionEnabled: true` in `settings.mcs.yml`) is an experimental orchestration enhancement (as of 2026-04) that requires `GenerativeActionsEnabled: true`. When enabled, the agent can break down complex tasks, ask clarifying questions, chain tools intelligently, and adapt its approach based on tool outputs. Some features may not be supported when this is enabled — check the Copilot Studio UI for the current list of limitations. + | Kind | Purpose | |------|---------| | `OnRecognizedIntent` | Trigger phrases matched |