diff --git a/docs/03-specs/operations/product/compile-vscuse-case-bundles.md b/docs/03-specs/operations/product/compile-vscuse-case-bundles.md index ec46812ea9d..a6ed1a07340 100644 --- a/docs/03-specs/operations/product/compile-vscuse-case-bundles.md +++ b/docs/03-specs/operations/product/compile-vscuse-case-bundles.md @@ -259,14 +259,28 @@ cases: ] ``` -V1 step types are `scaffold`, `login`, `provision`, `deploy`, `target`, `open`, and `checks`. +V1 step types are `scaffold`, `login`, `provision`, `deploy`, `pythonEnvironment`, +`localEnvironment`, `target`, `open`, and `checks`. `scaffold` accepts `template` and `answers`; `login`, `provision`, and `target` accept their same-named operation input. `deploy` has no semantic input, although current validation ignores an -authored `with` object. `open` requires `with.kind` and +authored `with` object. `pythonEnvironment` requires exactly one input, `with.interpreter`, the +label the Python extension's interpreter picker shows for the interpreter the case selects. +`localEnvironment` accepts a `with` mapping of environment variable names to values, each added to +the `envs` mapping that the project's local lifecycle writes into `.localConfigs`. +`open` requires `with.kind` and `with.destination`; the current template, target profile, and those two values select a compatible adapter. The profile already identifies the host surface, so `open` does not repeat Teams or Copilot as authored input. A future Playground target adapter can follow the same rule. +`pythonEnvironment` is the one operation a Python case authors that a TypeScript or JavaScript case +does not. A Python scaffold writes a `src/requirements.txt` it never installs, and every launch +profile the Python templates author starts the app from the workspace interpreter, so a case that +launches a Python project without first creating its virtual environment starts an app whose +dependencies are missing. The operation runs `Python: Create Environment...`, filters the +environment-type picker to `Venv`, filters the interpreter picker to the authored label, confirms +the `Select dependencies to install` prompt with every dependency checked, and then waits on the +notification the extension raises when the environment is selected. + A `checks` definition requires a `with` array. The check immediately following `scaffold` must contain at least one `file` assertion; current validation permits a later `checks` definition to be empty. Each assertion selects its adapter and required runtime state by `type`; there is no @@ -309,12 +323,16 @@ required state it establishes. A `chat` assertion is rejected unless the precedi reached `chat-ready`. `target` is one authored F5 operation that selects and starts its declared launch profile. The -current adapters support `Launch Remote in Teams (Chrome)` and `Preview in Copilot (Chrome)`; any +current adapters support the remote profiles `Launch Remote in Teams (Chrome)`, +`Launch Remote (Chrome)`, `Preview in Copilot (Chrome)`, and +`(Preview) Launch Remote in Copilot (Chrome)`, and the local debug profiles +`Debug in Teams (Chrome)`, `(Preview) Debug in Copilot (Chrome)`, and +`Debug in Microsoft 365 Agents Playground`; any other exact title fails until a deterministic adapter is added. The authored `profile` is the exact case-sensitive `name` shown in the F5 picker after template rendering; it is not a compiler-defined semantic ID. For example, the TypeScript Weather template authors -`Launch Remote in Teams (Chrome)`. A Python profile titled `Launch Remote (Chrome)` is currently -unsupported because no semantic target adapter is registered for that exact title. +`Launch Remote in Teams (Chrome)` while the Python templates author the same remote Teams launch +as `Launch Remote (Chrome)`. A selected profile's `preLaunchTask` may validate prerequisites, create local debug state, start the tunnel, provision and deploy locally, and start the application. Those profile-owned tasks are not duplicated as case step references. A profile without lifecycle prelaunch tasks instead requires the @@ -791,16 +809,23 @@ instantiation. Every prompted answer component begins with an `assertion` step whose description requires the canonical `en-US` question title to be visible in the active prompt. A component that picks from a -list then asserts, in a second step of its own, that the prompt lists at least one option below its -input box. The toolkit renders a prompt's frame before its options: while the option set is being -loaded the prompt already carries its final title and the input box reads `Loading options...`, so -the title assertion alone passes over a list that no keystroke can act on yet. Keeping the wait in -its own step is what makes it a wait: a retried assertion step reports the difference between a -prompt that is still loading and a prompt that loaded the wrong thing, which a single compound -sentence cannot. Its retry window is longer than the default, because the option set behind an -Azure subscription, resource group, region, or fetched OpenAPI description arrives over the +list then asserts, in a second step of its own, that the prompt has finished loading and lists at +least one selectable option. The toolkit renders a prompt's frame before its options: while the +option set is being loaded the prompt already carries its final title and the input box reads +`Loading options...`, so the title assertion alone passes over a list that no keystroke can act on +yet. Keeping the wait in its own step is what makes it a wait: a retried assertion step reports the +difference between a prompt that is still loading and a prompt that loaded the wrong thing, which a +single compound sentence cannot. Its retry window is longer than the default, because the option set +behind an Azure subscription, resource group, region, or fetched OpenAPI description arrives over the network. +The assertion places no option relative to the input box. The earlier wording required an option +`below its input box`, and a multi-select whose one option had loaded was reported as having none: +the reader placed that option above the input box and read the `0 Selected` and `OK` controls that +sit directly under the box as the whole of what the prompt lists. Where a prompt draws its rows is +not a toolkit-owned invariant, and the wait needs only the option set, so the claim is about loading +and about a selectable option existing. + A single-select then filters by canonical option label, asserts that the filtered option is visible and selectable, and only then confirms it. The option assertion intentionally runs after filtering: a valid option in a long or virtualized list may not be visible before input. @@ -982,8 +1007,8 @@ coordinates, omit required prompt guards, or silently choose a nearby component. until those adapters exist, their entry states fail resolution. Each future adapter must own only the transition and confirmation steps reachable from its deterministic entry state. DOM, labels, and transient actions never enter case YAML. -- A future Agents Playground adapter may establish `chat-ready` directly after its profile-owned - prelaunch tasks complete, so chat checks would not require an artificial `open` step. +- The Agents Playground adapter establishes `chat-ready` from the readiness its target already + asserted, so its `open` emits no step and only declares the surface the case chats in. - A `file` assertion selects the workspace-file adapter. It normalizes the authored `path` relative to the generated project, rejects absolute paths and traversal, checks existence, then applies every `contains` and `notContains` assertion to the UTF-8 content. @@ -1101,6 +1126,24 @@ coordinates, omit required prompt guards, or silently choose a nearby component. | VCB-59 | Given `provision` or `deploy`, the notification center is opened before the operation's own command runs and no emitted step reopens the Command Palette between that command and the success assertion, because VS Code closes the palette when the window loses focus and a running lifecycle operation opens browser windows of its own. | | VCB-60 | Given a lifecycle confirmation, the emitted component gates its Enter on the dialog assertion alone and on no image hash, because the dialog renders over whatever the scaffolded template left on screen and that background differs per template. | | VCB-61 | Given `provision` or `deploy`, the confirmation is the modal-dialog component and its assertion names the message the toolkit composes, `Costs may apply based on usage. Do you want to provision resources in dev environment using listed accounts?` and `Do you want to deploy resources in dev environment?`, because both consents are `showMessage(..., modal)` calls whose only on-screen text is that message and its buttons. | +| VCB-64 | Given a `target` whose profile is a local debug profile, the adapter requires no `provision` and no `deploy`, because the profile's own `preLaunchTask` chain runs the local lifecycle before the app starts, so authoring the remote lifecycle commands would create Azure resources the local run never reads. | +| VCB-65 | Given the `Debug in Microsoft 365 Agents Playground` target, the adapter requires no `login` and emits no browser sign-in, because the Playground serves the agent from the local machine and never authenticates the run against Microsoft 365. | +| VCB-66 | Given a `chat` check whose target is the Agents Playground, the compiler emits the Playground message adapter, because the Playground renders its own `Type a message...` composer rather than the Teams or Copilot one. | +| VCB-67 | Given a `pythonEnvironment` operation, the compiler drives `Python: Create Environment...` through the `Venv` environment type, the authored interpreter, and the `Select dependencies to install` prompt, because a Python scaffold ships a `src/requirements.txt` the scaffold itself never installs and every launch profile starts the app from the workspace interpreter. | +| VCB-68 | Given a `pythonEnvironment` operation, the interpreter is authored per case rather than fixed by the compiler, because the label the picker shows is the patch version the runner image happens to carry and a compiler-owned literal would break on every image bump. | +| VCB-69 | Given a `pythonEnvironment` operation, the environment type and interpreter are chosen by filtering the picker on their labels instead of clicking a row, because both pickers list a machine-dependent number of entries and a row's position carries no meaning the recording can pin. | +| VCB-70 | Given a `pythonEnvironment` operation, the notification center is opened before the completion assertion, because creating the virtual environment and installing its requirements takes minutes and the notification the Python extension raises is the only visible signal that the environment is selected. | +| VCB-71 | Given the `Launch Remote (Chrome)` target, the adapter reaches the Teams app details page through the same add-and-open transition as `Launch Remote in Teams (Chrome)`, because the Python templates only rename that profile and leave the browser flow it launches unchanged. | +| VCB-72 | Given the weather agent bundle, every combination of LLM service and language is authored against both the remote and the local Teams launch, because each language is a separate template package and each launch drives a separate lifecycle, so a combination that is never authored is never covered. | +| VCB-73 | Given a weather agent case whose LLM service is OpenAI, a local launch asserts a chat completion and a remote launch does not, because an Azure OpenAI resource serves the OpenAI v1 protocol and the local run can be redirected at it, while a remote run reads its app settings from the generated `infra/azure.bicep`, which carries the key alone. | +| VCB-74 | Given the `(Preview) Launch Remote in Copilot (Chrome)` target, the adapter requires provision and deploy, unlike `Preview in Copilot (Chrome)`, because a custom engine agent answers from a bot the deploy stage publishes while a declarative agent answers from a definition the provision stage uploads. | +| VCB-75 | Given a `localEnvironment` operation, each named variable is added to the `envs` mapping that the project's local lifecycle writes into `.localConfigs`, because the scaffolded app reads its configuration from that generated file, and writing the variable there scopes it to the authoring case instead of every case sharing the container environment. | +| VCB-76 | Given a `localEnvironment` operation whose variable name or value would not survive a shell assignment unquoted, the compilation fails, because the value is interpolated into a generated shell command and the runner resolves its own placeholders before the shell sees it. | +| VCB-77 | Given a `provision` or `deploy` operation, its success notification is awaited for longer than a local operation's, because both stages wait on an Azure control plane rather than on the toolkit, and the wait is only ever paid in full when the stage never reports success. | +| VCB-78 | Given a Chrome target, the launched browser is signed in before its readiness is asserted, because every Chrome launch configuration the templates ship omits `userDataDir` and therefore gets a profile carrying no Microsoft 365 session, and its URL carries the toolkit's account hint, so the browser opens on the password prompt for the account already signed in to Visual Studio Code. | +| VCB-79 | Given a Chrome target that signs in from the password prompt, the password input is clicked before the password is typed, because the browser the debug session launches keeps focus in its address bar, so a password typed without that click is entered outside the sign-in form. | +| VCB-80 | Given a lifecycle operation, the notification center is cleared before the operation starts, because it keeps every notification the run has raised, so the assertion that waits for this operation's success would otherwise read it out of a list that also holds the scaffolding, sign-in, and earlier lifecycle entries. | +| VCB-81 | Given a `singleSelect` or `multiSelect` answer, the assertion that waits for the option set places no option relative to the prompt's input box, because a multi-select whose one option had loaded was reported as having none once the reader placed that option above the box and read the `0 Selected` and `OK` controls under it as the whole of what the prompt lists. | ## Boundary diff --git a/packages/tests/vscuse/vscode-test-cases/cases/README.md b/packages/tests/vscuse/vscode-test-cases/cases/README.md index f59405e2e42..6256a851d68 100644 --- a/packages/tests/vscuse/vscode-test-cases/cases/README.md +++ b/packages/tests/vscuse/vscode-test-cases/cases/README.md @@ -9,13 +9,14 @@ migration inventory and coverage status. ## Initial coverage -| File | Template family | Cases | Contract pressure | -| ------------------------------------- | ------------------------------------- | ----: | -------------------------------------------------------------------- | -| `weather-agent.yml` | Custom Engine Agent | 2 | language subtrees, Azure lifecycle, Teams app/chat activation | -| `da-no-action.yml` | Declarative Agent | 1 | negative file assertions, Copilot agent discoverability | -| `da-mcp-server.yml` | Declarative Agent with MCP action | 3 | conditional auth inputs, pipeline mutations, Copilot discoverability | -| `da-api-plugin-from-scratch.yml` | Declarative Agent with new API action | 2 | language branches and no-auth API plugin output | -| `da-api-plugin-from-existing-api.yml` | Declarative Agent with existing API | 4 | no auth, API key, bearer, OAuth provision, and remote preview | +| File | Template family | Cases | Contract pressure | +| ------------------------------------- | ------------------------------------- | ----: | -------------------------------------------------------------------------------------------- | +| `weather-agent.yml` | Custom Engine Agent | 12 | full LLM x language x Teams launch matrix, Azure lifecycle, Copilot remote/local, Playground | +| `basic-custom-engine-agent.yml` | Custom Engine Agent | 3 | Python scaffolding, virtual environment creation, Python launch profile titles | +| `da-no-action.yml` | Declarative Agent | 1 | negative file assertions, Copilot agent discoverability | +| `da-mcp-server.yml` | Declarative Agent with MCP action | 3 | conditional auth inputs, pipeline mutations, Copilot discoverability | +| `da-api-plugin-from-scratch.yml` | Declarative Agent with new API action | 2 | language branches and no-auth API plugin output | +| `da-api-plugin-from-existing-api.yml` | Declarative Agent with existing API | 4 | no auth, API key, bearer, OAuth provision, and remote preview | ## Model findings @@ -43,7 +44,7 @@ Authoring these fixtures exposed six gaps in the first contract draft: proves capability outcomes. The default setup parses, validates, and expands these sources, then resolves their semantic steps -through the compiler-owned adapter and reusable components into twelve independent runnable VScUse +through the compiler-owned adapter and reusable components into twenty-five independent runnable VScUse plans. The case YAML is the only authored template/scenario source. Setup prints the generated-plan diff before transactionally updating only manifest-owned files. A custom semantic-step adapter may still be injected by focused compiler and writer tests. diff --git a/packages/tests/vscuse/vscode-test-cases/cases/basic-custom-engine-agent.yml b/packages/tests/vscuse/vscode-test-cases/cases/basic-custom-engine-agent.yml new file mode 100644 index 00000000000..e1fd9120791 --- /dev/null +++ b/packages/tests/vscuse/vscode-test-cases/cases/basic-custom-engine-agent.yml @@ -0,0 +1,189 @@ +version: 1 + +# The Weather Agent template is registered for TypeScript, JavaScript, and C# +# only, so Python scaffolding is covered here instead: Basic Custom Engine Agent +# is the custom engine agent template the toolkit does offer in Python, and it +# reaches the same three launch surfaces. +cases: + # Every Python case creates its virtual environment right after the file + # check. The scaffold writes src/requirements.txt but installs nothing, and + # each launch profile starts the app from the workspace interpreter, so a + # launch before that operation starts an app with no dependencies. + - id: basic-cea-py-azure-openai-remote-teams + scenarioId: SCN-CREATE-BASIC-CEA-01 + steps: + [ + scaffold-basic-cea-py-azure-openai, + check-basic-cea-py, + create-python-environment, + login-azure, + login-m365, + provision-arm, + deploy, + f5-teams-remote, + open-app, + check-basic-cea-chat, + ] + + - id: basic-cea-py-azure-openai-local-teams + scenarioId: SCN-CREATE-BASIC-CEA-01 + steps: + [ + scaffold-basic-cea-py-azure-openai, + check-basic-cea-py, + create-python-environment, + login-m365, + f5-teams-local, + open-app, + check-basic-cea-chat, + ] + + - id: basic-cea-py-azure-openai-playground + scenarioId: SCN-CREATE-BASIC-CEA-01 + steps: + [ + scaffold-basic-cea-py-azure-openai, + check-basic-cea-py, + create-python-environment, + f5-playground, + open-app, + check-basic-cea-chat, + ] + +steps: + scaffold-basic-cea-py-azure-openai: + type: scaffold + with: + template: basic-custom-engine-agent + answers: + - question: projectType + value: custom-engine-agent-type + - question: customEngineAgent + value: basic-custom-engine-agent + - question: llmService + value: llm-service-azure-openai + - question: azureOpenAIKey + type: text + value: "${{secret:AZURE_OPENAI_API_KEY}}" + - question: azureOpenAIEndpoint + type: text + value: "${{env:AZURE_OPENAI_ENDPOINT}}" + - question: azureOpenAIDeploymentName + type: text + value: "${{env:AZURE_OPENAI_MODEL}}" + - question: language + value: python + - question: workspaceFolder + value: default + - question: appName + type: text + value: "${{var:app_name:vscuse_app_#####}}" + + check-basic-cea-py: + type: checks + with: + - type: file + path: m365agents.yml + expect: + exists: true + contains: ["provision:", "deploy:"] + - type: file + path: src/app.py + expect: + exists: true + - type: file + path: src/agent.py + expect: + exists: true + - type: file + path: src/config.py + expect: + exists: true + # The Python extension installs exactly this file when the environment is + # created, so the case asserts it exists before creating the environment. + - type: file + path: src/requirements.txt + expect: + exists: true + contains: [microsoft-agents-hosting-aiohttp, openai] + - type: file + path: infra/azure.bicep + expect: + exists: true + - type: file + path: appPackage/manifest.json + expect: + contains: ['"manifestVersion": "1.29"'] + # The Python scaffold writes no Node project. + - type: file + path: package.json + expect: + exists: false + + # The interpreter label is the patch version the runner image carries. It is + # authored here rather than fixed in the compiler so an image bump changes one + # case line instead of every Python plan. + create-python-environment: + type: pythonEnvironment + with: + interpreter: "Python 3.12" + + login-azure: + type: login + with: + type: azure + account: "${{env:AZURE_ACCOUNT_NAME}}" + password: "${{secret:AZURE_ACCOUNT_PASSWORD}}" + + login-m365: + type: login + with: + type: m365 + account: "${{env:M365_ACCOUNT_NAME}}" + password: "${{secret:M365_ACCOUNT_PASSWORD}}" + + provision-arm: + type: provision + with: + environment: none + arm: + targetResourceGroupName: "+ New resource group" + newResourceGroupName: "${{var:app_name}}-rg" + newResourceGroupLocation: "${{env:RESOURCE_GROUP_REGION}}" + + deploy: + type: deploy + with: + environment: none + + # The Python templates name the remote Teams launch without `in Teams`. + f5-teams-remote: + type: target + with: + profile: "Launch Remote (Chrome)" + + f5-teams-local: + type: target + with: + profile: "Debug in Teams (Chrome)" + + f5-playground: + type: target + with: + profile: "Debug in Microsoft 365 Agents Playground" + + open-app: + type: open + with: + kind: app + destination: chat + + # The basic agent answers general questions rather than calling a tool, so the + # check asserts a reply and no literal the model is not required to produce. + check-basic-cea-chat: + type: checks + with: + - type: chat + send: How to develop agent for Teams? + expect: + replied: true diff --git a/packages/tests/vscuse/vscode-test-cases/cases/legacy-case-mapping.md b/packages/tests/vscuse/vscode-test-cases/cases/legacy-case-mapping.md index 4546e604ad4..de631b07d10 100644 --- a/packages/tests/vscuse/vscode-test-cases/cases/legacy-case-mapping.md +++ b/packages/tests/vscuse/vscode-test-cases/cases/legacy-case-mapping.md @@ -6,23 +6,53 @@ It is a migration inventory, not an instruction to delete legacy plans automatic ## Status - **Full**: the generated case covers the legacy scenario intent with semantic steps and file checks. +- **Partial**: the generated case covers the legacy scaffold and lifecycle but stops short of the + legacy chat validation. ## Mapping -| YAML source | New case ID | Generated plan | Legacy plan | Status | Coverage note | -| ------------------------------------- | -------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ------------------------------------------------------ | ------ | --------------------------------------------------------------------------------------------------------------------------------------------- | -| `weather-agent.yml` | `weather-ts-azure-openai-remote-preview` | `weather-agent--weather-ts-azure-openai-remote-preview.json` | `Weather_Agent_ts_remote_debug.json` | Full | Weather Agent, Azure OpenAI, TypeScript, provision, deploy, Teams remote launch, and chat validation. | -| `weather-agent.yml` | `weather-js-openai-remote-preview` | `weather-agent--weather-js-openai-remote-preview.json` | `Weather_Agent_OpenAI_js_Remote_Debug.json` | Full | Weather Agent, OpenAI, JavaScript, provision, deploy, Teams remote launch, and chat validation. | -| `da-no-action.yml` | `da-no-action-remote-preview` | `da-no-action--da-no-action-remote-preview.json` | `DA_No_Action_Remote_Debug.json` | Full | No-action scaffold, generated files, provision, and Copilot remote preview. | -| `da-mcp-server.yml` | `da-mcp-remote-none-preview` | `da-mcp-server--da-mcp-remote-none-preview.json` | `DA_MCP_None_Remote.json` | Full | Remote MCP with no authentication, dynamic tool discovery checks, provision, and Copilot preview. | -| `da-mcp-server.yml` | `da-mcp-remote-oauth-preview` | `da-mcp-server--da-mcp-remote-oauth-preview.json` | `DA_MCP_Oauth_Remote.json` | Full | Remote MCP with OAuth credentials and pipeline/file assertions. | -| `da-mcp-server.yml` | `da-mcp-remote-entra-preview` | `da-mcp-server--da-mcp-remote-entra-preview.json` | `DA_MCP_Entra_SSO_Remote.json` | Full | Remote MCP with Microsoft Entra SSO and pipeline/file assertions. | -| `da-api-plugin-from-scratch.yml` | `da-api-plugin-from-scratch-ts` | `da-api-plugin-from-scratch--da-api-plugin-from-scratch-ts.json` | `DA_None_ts_Remote_Debug.json` | Full | New API + None auth + TypeScript scaffold/file validation, provision, Copilot remote preview, action consent, and repair response validation. | -| `da-api-plugin-from-scratch.yml` | `da-api-plugin-from-scratch-js` | `da-api-plugin-from-scratch--da-api-plugin-from-scratch-js.json` | `DA_None_js_Remote_Debug.json` | Full | New API + None auth + JavaScript scaffold/file validation, provision, Copilot remote preview, action consent, and repair response validation. | -| `da-api-plugin-from-existing-api.yml` | `da-api-plugin-from-existing-api-no-auth-remote-preview` | `da-api-plugin-from-existing-api--da-api-plugin-from-existing-api-no-auth-remote-preview.json` | `DA_Add_Action_Import_Existing_API_Basic_No_Auth.json` | Full | No-auth scaffold/file validation, provision, and Copilot remote preview. | -| `da-api-plugin-from-existing-api.yml` | `da-api-plugin-from-existing-api-api-key-remote-preview` | `da-api-plugin-from-existing-api--da-api-plugin-from-existing-api-api-key-remote-preview.json` | `DA_Add_Action_Import_Existing_API_Basic_API_Key.json` | Full | API Key scaffold, protected credential input, provision, and Copilot remote preview. | -| `da-api-plugin-from-existing-api.yml` | `da-api-plugin-from-existing-api-bearer-remote-preview` | `da-api-plugin-from-existing-api--da-api-plugin-from-existing-api-bearer-remote-preview.json` | `DA_Add_Action_Import_Existing_API_Bearer_token.json` | Full | Bearer scaffold, protected token input, provision, and Copilot remote preview. | -| `da-api-plugin-from-existing-api.yml` | `da-api-plugin-from-existing-api-oauth-remote-preview` | `da-api-plugin-from-existing-api--da-api-plugin-from-existing-api-oauth-remote-preview.json` | `DA_Add_Action_Import_Existing_API_Basic_OAuth.json` | Full | OAuth scaffold, protected client credentials, provision, Copilot remote preview, and sign-in action assertion. | +| YAML source | New case ID | Generated plan | Legacy plan | Status | Coverage note | +| ------------------------------------- | -------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ------------------------------------------------------------- | ------- | --------------------------------------------------------------------------------------------------------------------------------------------- | +| `weather-agent.yml` | `weather-ts-azure-openai-remote-teams` | `weather-agent--weather-ts-azure-openai-remote-teams.json` | `Weather_Agent_ts_remote_debug.json` | Full | Weather Agent, Azure OpenAI, TypeScript, provision, deploy, Teams remote launch, and chat validation. | +| `weather-agent.yml` | `weather-ts-azure-openai-local-teams` | `weather-agent--weather-ts-azure-openai-local-teams.json` | `Weather_Agent_ts_Local_Debug.json` | Full | Weather Agent, Azure OpenAI, TypeScript, Microsoft 365 login, local Teams debug launch, and chat validation. | +| `weather-agent.yml` | `weather-js-azure-openai-remote-teams` | `weather-agent--weather-js-azure-openai-remote-teams.json` | `Weather_Agent_js_remote_debug.json` | Full | Weather Agent, Azure OpenAI, JavaScript, provision, deploy, Teams remote launch, and chat validation. | +| `weather-agent.yml` | `weather-js-azure-openai-local-teams` | `weather-agent--weather-js-azure-openai-local-teams.json` | `Weather_Agent_js_Local_Debug.json` | Full | Weather Agent, Azure OpenAI, JavaScript, Microsoft 365 login, local Teams debug launch, and chat validation. | +| `weather-agent.yml` | `weather-ts-openai-remote-teams` | `weather-agent--weather-ts-openai-remote-teams.json` | `Weather_Agent_OpenAI_ts_Remote_Debug.json` | Partial | OpenAI scaffold branch, TypeScript, provision, deploy, and Teams remote launch; no chat check, see VCB-73. | +| `weather-agent.yml` | `weather-ts-openai-local-teams` | `weather-agent--weather-ts-openai-local-teams.json` | `Weather_Agent_OpenAI_ts_Local_Debug.json` | Full | OpenAI scaffold branch, TypeScript, Microsoft 365 login, local Teams debug launch, and chat validation against the redirected base URL. | +| `weather-agent.yml` | `weather-js-openai-remote-teams` | `weather-agent--weather-js-openai-remote-teams.json` | `Weather_Agent_OpenAI_js_Remote_Debug.json` | Partial | OpenAI scaffold branch, JavaScript, provision, deploy, and Teams remote launch; no chat check, see VCB-73. | +| `weather-agent.yml` | `weather-js-openai-local-teams` | `weather-agent--weather-js-openai-local-teams.json` | `Weather_Agent_OpenAI_js_Local_Debug.json` | Full | OpenAI scaffold branch, JavaScript, Microsoft 365 login, local Teams debug launch, and chat validation against the redirected base URL. | +| `weather-agent.yml` | `weather-ts-azure-openai-remote-copilot` | `weather-agent--weather-ts-azure-openai-remote-copilot.json` | `Weather_Agent_ts_remote_copilot.json` | Full | Weather Agent, Azure OpenAI, TypeScript, provision, deploy, Copilot remote launch, and chat validation. | +| `weather-agent.yml` | `weather-ts-azure-openai-local-copilot` | `weather-agent--weather-ts-azure-openai-local-copilot.json` | `Weather_Agent_ts_local_copilot.json` | Full | Weather Agent, Azure OpenAI, TypeScript, Microsoft 365 login, local Copilot debug launch, and chat validation. | +| `weather-agent.yml` | `weather-ts-azure-openai-playground` | `weather-agent--weather-ts-azure-openai-playground.json` | `Weather_Agent_Azure_OpenAI_ts_playground.json` | Full | Weather Agent, Azure OpenAI, TypeScript, Agents Playground launch with no sign-in, and chat validation. | +| `weather-agent.yml` | `weather-js-azure-openai-playground` | `weather-agent--weather-js-azure-openai-playground.json` | `Weather_Agent_Azure_OpenAI_js_playground.json` | Full | Weather Agent, Azure OpenAI, JavaScript, Agents Playground launch with no sign-in, and chat validation. | +| `basic-custom-engine-agent.yml` | `basic-cea-py-azure-openai-remote-teams` | `basic-custom-engine-agent--basic-cea-py-azure-openai-remote-teams.json` | `Basic_Custom_Engine_Agent_Azure_OpenAI_py_Remote_Debug.json` | Full | Basic Custom Engine Agent, Azure OpenAI, Python, virtual environment creation, provision, deploy, Teams remote launch, and chat validation. | +| `basic-custom-engine-agent.yml` | `basic-cea-py-azure-openai-local-teams` | `basic-custom-engine-agent--basic-cea-py-azure-openai-local-teams.json` | `Basic_Custom_Engine_Agent_Azure_OpenAI_py_Local_Debug.json` | Full | Basic Custom Engine Agent, Azure OpenAI, Python, virtual environment creation, local Teams debug launch, and chat validation. | +| `basic-custom-engine-agent.yml` | `basic-cea-py-azure-openai-playground` | `basic-custom-engine-agent--basic-cea-py-azure-openai-playground.json` | `Basic_Custom_Engine_Azure_OpenAI_py_playground.json` | Full | Basic Custom Engine Agent, Azure OpenAI, Python, virtual environment creation, Agents Playground launch, and chat validation. | +| `da-no-action.yml` | `da-no-action-remote-preview` | `da-no-action--da-no-action-remote-preview.json` | `DA_No_Action_Remote_Debug.json` | Full | No-action scaffold, generated files, provision, and Copilot remote preview. | +| `da-mcp-server.yml` | `da-mcp-remote-none-preview` | `da-mcp-server--da-mcp-remote-none-preview.json` | `DA_MCP_None_Remote.json` | Full | Remote MCP with no authentication, dynamic tool discovery checks, provision, and Copilot preview. | +| `da-mcp-server.yml` | `da-mcp-remote-oauth-preview` | `da-mcp-server--da-mcp-remote-oauth-preview.json` | `DA_MCP_Oauth_Remote.json` | Full | Remote MCP with OAuth credentials and pipeline/file assertions. | +| `da-mcp-server.yml` | `da-mcp-remote-entra-preview` | `da-mcp-server--da-mcp-remote-entra-preview.json` | `DA_MCP_Entra_SSO_Remote.json` | Full | Remote MCP with Microsoft Entra SSO and pipeline/file assertions. | +| `da-api-plugin-from-scratch.yml` | `da-api-plugin-from-scratch-ts` | `da-api-plugin-from-scratch--da-api-plugin-from-scratch-ts.json` | `DA_None_ts_Remote_Debug.json` | Full | New API + None auth + TypeScript scaffold/file validation, provision, Copilot remote preview, action consent, and repair response validation. | +| `da-api-plugin-from-scratch.yml` | `da-api-plugin-from-scratch-js` | `da-api-plugin-from-scratch--da-api-plugin-from-scratch-js.json` | `DA_None_js_Remote_Debug.json` | Full | New API + None auth + JavaScript scaffold/file validation, provision, Copilot remote preview, action consent, and repair response validation. | +| `da-api-plugin-from-existing-api.yml` | `da-api-plugin-from-existing-api-no-auth-remote-preview` | `da-api-plugin-from-existing-api--da-api-plugin-from-existing-api-no-auth-remote-preview.json` | `DA_Add_Action_Import_Existing_API_Basic_No_Auth.json` | Full | No-auth scaffold/file validation, provision, and Copilot remote preview. | +| `da-api-plugin-from-existing-api.yml` | `da-api-plugin-from-existing-api-api-key-remote-preview` | `da-api-plugin-from-existing-api--da-api-plugin-from-existing-api-api-key-remote-preview.json` | `DA_Add_Action_Import_Existing_API_Basic_API_Key.json` | Full | API Key scaffold, protected credential input, provision, and Copilot remote preview. | +| `da-api-plugin-from-existing-api.yml` | `da-api-plugin-from-existing-api-bearer-remote-preview` | `da-api-plugin-from-existing-api--da-api-plugin-from-existing-api-bearer-remote-preview.json` | `DA_Add_Action_Import_Existing_API_Bearer_token.json` | Full | Bearer scaffold, protected token input, provision, and Copilot remote preview. | +| `da-api-plugin-from-existing-api.yml` | `da-api-plugin-from-existing-api-oauth-remote-preview` | `da-api-plugin-from-existing-api--da-api-plugin-from-existing-api-oauth-remote-preview.json` | `DA_Add_Action_Import_Existing_API_Basic_OAuth.json` | Full | OAuth scaffold, protected client credentials, provision, Copilot remote preview, and sign-in action assertion. | + +## Legacy Weather Plans Not Mapped + +The legacy weather corpus is the full two LLM services by two languages by five surfaces matrix, so +it holds twenty plans. The twelve cases above cover the whole LLM-by-language-by-Teams-launch matrix +and sample each remaining surface once. The eight unmapped plans cross a language or an LLM service +with the Copilot and Playground surfaces: +`Weather_Agent_js_local_copilot.json`, `Weather_Agent_js_remote_copilot.json`, +`Weather_Agent_OpenAI_ts_Copilot_Local_Debug.json`, `Weather_Agent_OpenAI_ts_Copilot_Remote_Debug.json`, +`Weather_Agent_OpenAI_js_Copilot_Local_Debug.json`, `Weather_Agent_OpenAI_js_Copilot_Remote_Debug.json`, +`Weather_Agent_OpenAI_ts_playground.json`, and `Weather_Agent_OpenAI_js_playground.json`. +The runtime files those crossings would exercise are byte-identical between the TypeScript and +JavaScript packages — `m365agents.yml`, `m365agents.local.yml`, `m365agents.playground.yml`, and +`launch.json` all match — so the surface is already covered once and the language is already covered +against both Teams launches. ## Legacy Plan Not Mapped diff --git a/packages/tests/vscuse/vscode-test-cases/cases/weather-agent.yml b/packages/tests/vscuse/vscode-test-cases/cases/weather-agent.yml index 63cb9487243..7e6ae8a5ed0 100644 --- a/packages/tests/vscuse/vscode-test-cases/cases/weather-agent.yml +++ b/packages/tests/vscuse/vscode-test-cases/cases/weather-agent.yml @@ -1,7 +1,13 @@ version: 1 +# The first eight cases are the full LLM x language x launch matrix. Language is +# a genuinely different template package, so every language gets its own launch +# and, where a real key exists, its own completion. Launch and language are +# orthogonal — m365agents.yml and launch.json are byte-identical between the +# TypeScript and JavaScript packages — so the remaining surfaces are sampled once +# rather than crossed with every language. cases: - - id: weather-ts-azure-openai-remote-preview + - id: weather-ts-azure-openai-remote-teams scenarioId: SCN-CREATE-WEATHER-01 steps: [ @@ -16,10 +22,84 @@ cases: check-weather-chat, ] - # No chat check: CI has no funded openai.com key, so this case covers the - # JavaScript/OpenAI scaffold and lifecycle only. Real completions are verified - # by the Azure OpenAI case above. - - id: weather-js-openai-remote-preview + # Local debug: the launch profile's preLaunchTask chain registers the app, + # starts the tunnel, and runs the local lifecycle itself, so the case authors + # neither provision nor deploy. Only the Microsoft 365 account is signed in, + # because the local run reads no Azure resources. + - id: weather-ts-azure-openai-local-teams + scenarioId: SCN-CREATE-WEATHER-01 + steps: + [ + scaffold-weather-ts-azure-openai, + check-weather-ts, + login-m365, + f5-teams-local, + open-app, + check-weather-chat, + ] + + - id: weather-js-azure-openai-remote-teams + scenarioId: SCN-CREATE-WEATHER-01 + steps: + [ + scaffold-weather-js-azure-openai, + check-weather-js, + login-azure, + login-m365, + provision-arm, + deploy, + f5-teams-remote, + open-app, + check-weather-chat, + ] + + - id: weather-js-azure-openai-local-teams + scenarioId: SCN-CREATE-WEATHER-01 + steps: + [ + scaffold-weather-js-azure-openai, + check-weather-js, + login-m365, + f5-teams-local, + open-app, + check-weather-chat, + ] + + # The OpenAI remote cases end at the launched surface and assert no + # completion. An Azure OpenAI resource speaks the OpenAI v1 protocol, so the + # local cases below redirect the OpenAI client at it and do assert one, but a + # remote run reads its app settings from infra/azure.bicep, which declares only + # the key. What both halves cover is the OpenAI branch of the scaffold question + # tree, which asks for a single key instead of an endpoint and a deployment + # name, and the different generated configuration that follows from it. + - id: weather-ts-openai-remote-teams + scenarioId: SCN-CREATE-WEATHER-03 + steps: + [ + scaffold-weather-ts-openai, + check-weather-ts, + login-azure, + login-m365, + provision-arm, + deploy, + f5-teams-remote, + open-app, + ] + + - id: weather-ts-openai-local-teams + scenarioId: SCN-CREATE-WEATHER-03 + steps: + [ + scaffold-weather-ts-openai, + check-weather-ts, + redirect-openai-base-url, + login-m365, + f5-teams-local, + open-app, + check-weather-chat, + ] + + - id: weather-js-openai-remote-teams scenarioId: SCN-CREATE-WEATHER-03 steps: [ @@ -33,6 +113,74 @@ cases: open-app, ] + - id: weather-js-openai-local-teams + scenarioId: SCN-CREATE-WEATHER-03 + steps: + [ + scaffold-weather-js-openai, + check-weather-js, + redirect-openai-base-url, + login-m365, + f5-teams-local, + open-app, + check-weather-chat, + ] + + # Surfaces beyond Teams, sampled on the canonical TypeScript + Azure OpenAI + # combination. A custom engine agent previewed in Copilot needs its bot + # deployed first, unlike a declarative agent. + - id: weather-ts-azure-openai-remote-copilot + scenarioId: SCN-CREATE-WEATHER-01 + steps: + [ + scaffold-weather-ts-azure-openai, + check-weather-ts, + login-azure, + login-m365, + provision-arm, + deploy, + f5-copilot-remote, + open-agent, + check-weather-chat, + ] + + - id: weather-ts-azure-openai-local-copilot + scenarioId: SCN-CREATE-WEATHER-01 + steps: + [ + scaffold-weather-ts-azure-openai, + check-weather-ts, + login-m365, + f5-copilot-local, + open-agent, + check-weather-chat, + ] + + # The Agents Playground hosts the agent locally and never signs in to + # Microsoft 365, so this is the shortest case that still exercises a real + # completion from the scaffolded agent. + - id: weather-ts-azure-openai-playground + scenarioId: SCN-CREATE-WEATHER-01 + steps: + [ + scaffold-weather-ts-azure-openai, + check-weather-ts, + f5-playground, + open-app, + check-weather-chat, + ] + + - id: weather-js-azure-openai-playground + scenarioId: SCN-CREATE-WEATHER-01 + steps: + [ + scaffold-weather-js-azure-openai, + check-weather-js, + f5-playground, + open-app, + check-weather-chat, + ] + steps: scaffold-weather-ts-azure-openai: type: scaffold @@ -96,6 +244,59 @@ steps: expect: contains: ['"manifestVersion": "1.29"'] + scaffold-weather-ts-openai: + type: scaffold + with: + template: weather-agent + answers: + - question: projectType + value: custom-engine-agent-type + - question: customEngineAgent + value: weather-agent + - question: llmService + value: llm-service-openai + # An Azure OpenAI resource authenticates its OpenAI v1 endpoint with the + # resource key presented as a bearer token, so the OpenAI branch can be + # driven by the same secret the Azure branch uses. + - question: openAIKey + type: text + value: "${{secret:AZURE_OPENAI_API_KEY}}" + - question: language + value: typescript + - question: workspaceFolder + value: default + - question: appName + type: text + value: "${{var:app_name:vscuse_app_#####}}" + + scaffold-weather-js-azure-openai: + type: scaffold + with: + template: weather-agent + answers: + - question: projectType + value: custom-engine-agent-type + - question: customEngineAgent + value: weather-agent + - question: llmService + value: llm-service-azure-openai + - question: azureOpenAIKey + type: text + value: "${{secret:AZURE_OPENAI_API_KEY}}" + - question: azureOpenAIEndpoint + type: text + value: "${{env:AZURE_OPENAI_ENDPOINT}}" + - question: azureOpenAIDeploymentName + type: text + value: "${{env:AZURE_OPENAI_MODEL}}" + - question: language + value: javascript + - question: workspaceFolder + value: default + - question: appName + type: text + value: "${{var:app_name:vscuse_app_#####}}" + scaffold-weather-js-openai: type: scaffold with: @@ -109,7 +310,7 @@ steps: value: llm-service-openai - question: openAIKey type: text - value: "${{secret:OPENAI_API_KEY}}" + value: "${{secret:AZURE_OPENAI_API_KEY}}" - question: language value: javascript - question: workspaceFolder @@ -118,6 +319,16 @@ steps: type: text value: "${{var:app_name:vscuse_app_#####}}" + # The scaffolded agent constructs its OpenAI client without a base URL, so the + # client falls back to OPENAI_BASE_URL. Writing it into the lifecycle rather + # than the container environment keeps the redirect inside the two cases that + # ask for it, and routes it through the same generated .localConfigs the key + # travels through. + redirect-openai-base-url: + type: localEnvironment + with: + OPENAI_BASE_URL: "${{env:AZURE_OPENAI_ENDPOINT}}/openai/v1" + check-weather-js: type: checks with: @@ -179,12 +390,38 @@ steps: with: profile: "Launch Remote in Teams (Chrome)" + f5-teams-local: + type: target + with: + profile: "Debug in Teams (Chrome)" + + f5-copilot-local: + type: target + with: + profile: "(Preview) Debug in Copilot (Chrome)" + + f5-copilot-remote: + type: target + with: + profile: "(Preview) Launch Remote in Copilot (Chrome)" + + f5-playground: + type: target + with: + profile: "Debug in Microsoft 365 Agents Playground" + open-app: type: open with: kind: app destination: chat + open-agent: + type: open + with: + kind: agent + destination: chat + check-weather-chat: type: checks with: diff --git a/packages/tests/vscuse/vscode-test-cases/components/authentication/browser/m365-password-sign-in.json.tpl b/packages/tests/vscuse/vscode-test-cases/components/authentication/browser/m365-password-sign-in.json.tpl new file mode 100644 index 00000000000..41910466adb --- /dev/null +++ b/packages/tests/vscuse/vscode-test-cases/components/authentication/browser/m365-password-sign-in.json.tpl @@ -0,0 +1,100 @@ +{ + "component": { + "version": 1, + "id": "browserM365PasswordSignIn", + "answerType": "authentication", + "parameters": ["instanceSuffix", "accountName", "accountPassword"] + }, + "steps": [ + { + "step_id": "step_browserM365PasswordSignIn_assertPassword_{{text:instanceSuffix}}", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Microsoft sign-in page in Chrome names {{text:accountName}} and asks for that account's password.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [], + "preconditions": [], + "postconditions": [], + "tags": ["component:authentication", "surface:browser", "step_retry_timeout: 300"] + }, + { + "step_id": "step_browserM365PasswordSignIn_focusPassword_{{text:instanceSuffix}}", + "agent": "interaction", + "tool": "click", + "parameters": { "button": "left", "x": 400, "y": 405 }, + "description": "Click the password input on the Microsoft sign-in page to move focus out of the browser address bar.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": ["step_browserM365PasswordSignIn_assertPassword_{{text:instanceSuffix}}"], + "preconditions": [], + "postconditions": [], + "tags": ["component:authentication", "surface:browser"] + }, + { + "step_id": "step_browserM365PasswordSignIn_enterPassword_{{text:instanceSuffix}}", + "agent": "interaction", + "tool": "type_text", + "parameters": { "text": {{json:accountPassword}} }, + "description": "Enter the registered Microsoft 365 password in the focused password input of the browser sign-in form.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": ["step_browserM365PasswordSignIn_focusPassword_{{text:instanceSuffix}}"], + "preconditions": [], + "postconditions": [], + "tags": ["component:authentication", "surface:browser"] + }, + { + "step_id": "step_browserM365PasswordSignIn_submitPassword_{{text:instanceSuffix}}", + "agent": "interaction", + "tool": "key_press", + "parameters": { "key": "enter" }, + "description": "Press Enter to submit the Microsoft 365 password.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": ["step_browserM365PasswordSignIn_enterPassword_{{text:instanceSuffix}}"], + "preconditions": [], + "postconditions": [], + "tags": ["component:authentication", "surface:browser"] + }, + { + "step_id": "step_browserM365PasswordSignIn_assertStaySignedIn_{{text:instanceSuffix}}", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Microsoft Stay signed in question is visible with Yes focused.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": ["step_browserM365PasswordSignIn_submitPassword_{{text:instanceSuffix}}"], + "preconditions": [], + "postconditions": [], + "tags": ["component:authentication", "surface:browser", "step_retry_timeout: 120"] + }, + { + "step_id": "step_browserM365PasswordSignIn_confirmStaySignedIn_{{text:instanceSuffix}}", + "agent": "interaction", + "tool": "key_press", + "parameters": { "key": "enter" }, + "description": "Press Enter to confirm staying signed in.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": ["step_browserM365PasswordSignIn_assertStaySignedIn_{{text:instanceSuffix}}"], + "preconditions": [], + "postconditions": [], + "tags": ["component:authentication", "surface:browser", "delay: 30"] + } + ] +} diff --git a/packages/tests/vscuse/vscode-test-cases/components/lifecycle-components.test.cjs b/packages/tests/vscuse/vscode-test-cases/components/lifecycle-components.test.cjs index 9ca9ac98907..c639476f163 100644 --- a/packages/tests/vscuse/vscode-test-cases/components/lifecycle-components.test.cjs +++ b/packages/tests/vscuse/vscode-test-cases/components/lifecycle-components.test.cjs @@ -16,6 +16,7 @@ const substitutions = { optionLabel: "Deploy", questionTitle: "Deploy resources in dev?", readySubject: "the selected target is visible", + retryTimeout: "900", }; function render(relativePath, overrides = {}) { @@ -242,13 +243,17 @@ test("VCB-55: option components wait for the prompt to load its options", () => assert.equal(assertOptionsLoaded.agent, "assertion"); assert.match( assertOptionsLoaded.description, - /lists at least one option below its input box/, + /has finished loading and lists at least one selectable option/, ); assert.equal( assertOptionsLoaded.tags.includes("step_retry_timeout: 120"), true, ); + // VCB-81: a reader that placed the loaded option above the input box read + // the earlier `below its input box` claim as false. + assert.equal(/input box/.test(assertOptionsLoaded.description), false); + // The title assertion alone passes while the prompt still reads // "Loading options...", so the first keystroke must depend on this step. assert.deepEqual(quickInput.steps[2].depends_on, [ @@ -293,7 +298,7 @@ test("lifecycle recipes have reusable confirmation and notification primitives", assert.equal(notification.component.id, "assertContains"); assert.equal(notification.steps.length, 1); assert.match(notification.steps[0].description, /stage completed/); - assert.ok(notification.steps[0].tags.includes("step_retry_timeout: 300")); + assert.ok(notification.steps[0].tags.includes("step_retry_timeout: 900")); }); test("target primitives expose F1, profile selection, and browser readiness behavior", () => { diff --git a/packages/tests/vscuse/vscode-test-cases/components/notifications/assert-contains.json.tpl b/packages/tests/vscuse/vscode-test-cases/components/notifications/assert-contains.json.tpl index ac87a240ac9..764fb75febc 100644 --- a/packages/tests/vscuse/vscode-test-cases/components/notifications/assert-contains.json.tpl +++ b/packages/tests/vscuse/vscode-test-cases/components/notifications/assert-contains.json.tpl @@ -3,7 +3,7 @@ "version": 1, "uiSurface": "notifications", "id": "assertContains", - "parameters": ["instanceSuffix", "notificationText"] + "parameters": ["instanceSuffix", "notificationText", "retryTimeout"] }, "steps": [ { @@ -22,7 +22,7 @@ "tags": [ "component:notifications", "action:assert-contains", - "step_retry_timeout: 300" + "step_retry_timeout: {{text:retryTimeout}}" ] } ] diff --git a/packages/tests/vscuse/vscode-test-cases/components/quick-input/multi-select.json.tpl b/packages/tests/vscuse/vscode-test-cases/components/quick-input/multi-select.json.tpl index 5d70b48d3f4..d76e597ae2f 100644 --- a/packages/tests/vscuse/vscode-test-cases/components/quick-input/multi-select.json.tpl +++ b/packages/tests/vscuse/vscode-test-cases/components/quick-input/multi-select.json.tpl @@ -30,7 +30,7 @@ "agent": "assertion", "tool": "", "parameters": {}, - "description": "@assertion the multi-select prompt titled {{text:questionTitle}} lists at least one option below its input box.", + "description": "@assertion the multi-select prompt titled {{text:questionTitle}} has finished loading and lists at least one selectable option.", "content_refs": [], "timeout": 120, "retry_count": 0, diff --git a/packages/tests/vscuse/vscode-test-cases/components/quick-input/single-select.json.tpl b/packages/tests/vscuse/vscode-test-cases/components/quick-input/single-select.json.tpl index 3a6c55fc34b..b8c9c5df04a 100644 --- a/packages/tests/vscuse/vscode-test-cases/components/quick-input/single-select.json.tpl +++ b/packages/tests/vscuse/vscode-test-cases/components/quick-input/single-select.json.tpl @@ -30,7 +30,7 @@ "agent": "assertion", "tool": "", "parameters": {}, - "description": "@assertion the prompt titled {{text:questionTitle}} lists at least one option below its input box.", + "description": "@assertion the prompt titled {{text:questionTitle}} has finished loading and lists at least one selectable option.", "content_refs": [], "timeout": 120, "retry_count": 0, diff --git a/packages/tests/vscuse/vscode-test-cases/components/workspace/local-environment-variable.json.tpl b/packages/tests/vscuse/vscode-test-cases/components/workspace/local-environment-variable.json.tpl new file mode 100644 index 00000000000..ef048ddce2a --- /dev/null +++ b/packages/tests/vscuse/vscode-test-cases/components/workspace/local-environment-variable.json.tpl @@ -0,0 +1,30 @@ +{ + "component": { + "version": 1, + "id": "setLocalEnvironmentVariable", + "parameters": ["instanceSuffix", "variableName", "variableValue"] + }, + "steps": [ + { + "step_id": "step_setLocalEnvironmentVariable_{{text:instanceSuffix}}", + "agent": "code", + "tool": "", + "parameters": { + "sample": "=== Generated Script ===\nLanguage: bash\n\n```bash\nset -euo pipefail\nPROJECT_DIR=\"/home/vscode/AgentsToolkitProjects/${{var:app_name}}\" VARIABLE_NAME=\"{{text:variableName}}\" VARIABLE_VALUE=\"{{text:variableValue}}\" python3 - <<'PY'\nimport os\nfrom pathlib import Path\n\nlifecycle = Path(os.environ[\"PROJECT_DIR\"]).resolve() / \"m365agents.local.yml\"\nname = os.environ[\"VARIABLE_NAME\"]\nvalue = os.environ[\"VARIABLE_VALUE\"]\nlines = lifecycle.read_text(encoding=\"utf-8\").splitlines()\ntarget = next((index for index, line in enumerate(lines) if line.strip() == \"target: ./.localConfigs\"), None)\nif target is None:\n raise AssertionError(\"The local lifecycle writes no .localConfigs environment file\")\nheader = next((index for index in range(target + 1, len(lines)) if lines[index].strip() == \"envs:\"), None)\nif header is None:\n raise AssertionError(\"The .localConfigs environment file declares no envs mapping\")\nindent = \" \" * (len(lines[header]) - len(lines[header].lstrip()) + 2)\nend = header + 1\nwhile end < len(lines) and lines[end].startswith(indent) and lines[end].strip():\n end += 1\nkept = [line for line in lines[header + 1 : end] if not line.strip().startswith(name + \":\")]\nlines[header + 1 : end] = kept + [indent + name + \": \" + value]\nlifecycle.write_text(\"\\n\".join(lines) + \"\\n\", encoding=\"utf-8\")\nPY\n```" + }, + "description": "@code add the named variable to the envs mapping the local lifecycle writes into .localConfigs, without logging its value.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:workspace", + "operation:local-environment", + "step_retry_timeout: 120" + ] + } + ] +} diff --git a/packages/tests/vscuse/vscode-test-cases/engine/semantic-step-compiler.cjs b/packages/tests/vscuse/vscode-test-cases/engine/semantic-step-compiler.cjs index fecfd8fb180..5f3b68c7b14 100644 --- a/packages/tests/vscuse/vscode-test-cases/engine/semantic-step-compiler.cjs +++ b/packages/tests/vscuse/vscode-test-cases/engine/semantic-step-compiler.cjs @@ -10,11 +10,15 @@ const environmentExpressionPattern = /^\$\{\{env:([A-Z_a-z][A-Z_a-z0-9]*)\}\}$/; const secretExpressionPattern = /^\$\{\{secret:[A-Z_a-z][A-Z_a-z0-9]*\}\}$/; const relativePathPattern = /^(?!\/)(?![A-Za-z]:)(?!.*(?:^|\/)\.\.(?:\/|$))[^\\]+$/; +const localEnvironmentNamePattern = /^[A-Z][A-Z0-9_]*$/; +const localEnvironmentValuePattern = /^[A-Za-z0-9:/._-]*$/; +const runnerPlaceholderPattern = /\$\{\{[a-z]+:[A-Za-z0-9_:#-]+\}\}/g; const provisionInputGroups = new Set(["apiKey", "arm", "oauth"]); const provisionEnvironmentInput = "environment"; const provisionEnvironmentSkipValue = "none"; const commandTitles = { + clearNotifications: "Notifications: Clear All Notifications", create: "Microsoft 365 Agents: Create New Agent/App", deploy: "Microsoft 365 Agents: Deploy", // The toolkit contributes one side bar view per section and VS Code generates @@ -64,6 +68,16 @@ const defaultFolderOption = { ], }; +// Creating a Python virtual environment is a Python extension flow, not a +// toolkit flow, so its literals live next to the semantic step that drives it. +const pythonEnvironment = { + commandTitle: "Python: Create Environment...", + dependenciesTitle: "Select dependencies to install", + environmentTypeLabel: "Venv", + successText: "The following environment is selected:", + successTimeout: "300", +}; + const scaffoldQuestionAdapters = { actionSource: { options: { @@ -101,7 +115,10 @@ const scaffoldQuestionAdapters = { azureOpenAIEndpoint: { title: "Azure OpenAI Endpoint", type: "text" }, azureOpenAIKey: { secret: true, title: "Azure OpenAI Key", type: "text" }, customEngineAgent: { - options: { "weather-agent": "Weather Agent" }, + options: { + "basic-custom-engine-agent": "Basic Custom Engine Agent", + "weather-agent": "Weather Agent", + }, title: "App Features Using Microsoft 365 Agents SDK", type: "singleSelect", }, @@ -111,7 +128,11 @@ const scaffoldQuestionAdapters = { type: "singleSelect", }, language: { - options: { javascript: "JavaScript", typescript: "TypeScript" }, + options: { + javascript: "JavaScript", + python: "Python", + typescript: "TypeScript", + }, title: "Programming Language", type: "singleSelect", }, @@ -226,6 +247,12 @@ const provisionOauthConfirmation = { "Microsoft 365 Agents Toolkit uploads the client ID/Secret for OAuth Registration to Developer Portal. It is used by Teams client to securely access your API at runtime. Microsoft 365 Agents Toolkit doesn't store your client ID/Secret.", }; +// Both stages wait on an Azure control plane rather than on the toolkit: the +// provision stage watches an ARM deployment create the hosting plan, the web +// app, and the bot registration, and the deploy stage builds the project and +// uploads the package to that web app. Either can outlast the five minutes the +// hand-recorded plans allowed, and the wait is only ever paid in full when the +// stage never reports success. const lifecycleAdapters = { deploy: { confirmation: { @@ -234,8 +261,12 @@ const lifecycleAdapters = { dialogTitle: "Do you want to deploy resources in dev environment?", }, successText: "actions in deploy stage executed successfully", + successTimeout: "900", + }, + provision: { + successText: "provision stage executed successfully", + successTimeout: "900", }, - provision: { successText: "provision stage executed successfully" }, }; // A readiness subject only has to show that the app on screen is the one this @@ -247,7 +278,32 @@ const lifecycleAdapters = { // file checks already assert exactly, and against the real manifest rather than // against a screenshot. const targetAdapters = { + // Every Chrome launch configuration the templates ship omits `userDataDir`, so + // js-debug hands the session a profile of its own that carries no Microsoft 365 + // session and the browser always has to sign in. Which page it opens on is + // decided by the launch URL: the Teams targets carry the toolkit's + // `${account-hint}`, which resolves to a `login_hint` and asks straight for the + // password of the account already signed in to Visual Studio Code. "Launch Remote in Teams (Chrome)": { + browserAuthentication: { + component: "authentication/browser/m365-password-sign-in.json.tpl", + credentials: "m365", + }, + host: "teams", + open: { adapter: "teams-add", destination: "chat", kind: "app" }, + readySubject: + "the Microsoft Teams app details page for an app whose name starts with ${{var:app_name}} is visible", + requires: ["login:azure", "login:m365", "provision", "deploy"], + }, + // The Python templates name the same remote Teams launch `Launch Remote + // (Chrome)`, without the `in Teams` the TypeScript and JavaScript templates + // use. It reaches the same Teams app details page, so it reuses that adapter's + // open transition and readiness subject. + "Launch Remote (Chrome)": { + browserAuthentication: { + component: "authentication/browser/m365-password-sign-in.json.tpl", + credentials: "m365", + }, host: "teams", open: { adapter: "teams-add", destination: "chat", kind: "app" }, readySubject: @@ -265,6 +321,59 @@ const targetAdapters = { "an agent whose name starts with ${{var:app_name}} is displayed in the main section of Microsoft 365 Copilot", requires: ["login:m365", "provision"], }, + // A custom engine agent is hosted on Azure, so its Copilot preview needs the + // deployed bot behind it. The declarative-agent preview above needs only + // provision, because the toolkit uploads the agent definition itself. + "(Preview) Launch Remote in Copilot (Chrome)": { + browserAuthentication: { + component: "authentication/browser/m365-sign-in.json.tpl", + credentials: "m365", + }, + host: "copilot", + open: { adapter: "ready", destination: "chat", kind: "agent" }, + readySubject: + "an agent whose name starts with ${{var:app_name}} is displayed in the main section of Microsoft 365 Copilot", + requires: ["login:azure", "login:m365", "provision", "deploy"], + }, + // The local debug profiles below carry a preLaunchTask chain that validates + // prerequisites, registers the app, starts the tunnel, and runs the local + // lifecycle before the application starts, so they require no authored + // provision or deploy. They reach the same surfaces the remote profiles reach, + // so they reuse those readiness subjects; the subjects name the app by the + // prefix the case authored, which holds for the `local` suffix as it does for + // `dev`. + "Debug in Teams (Chrome)": { + browserAuthentication: { + component: "authentication/browser/m365-password-sign-in.json.tpl", + credentials: "m365", + }, + host: "teams", + open: { adapter: "teams-add", destination: "chat", kind: "app" }, + readySubject: + "the Microsoft Teams app details page for an app whose name starts with ${{var:app_name}} is visible", + requires: ["login:m365"], + }, + "(Preview) Debug in Copilot (Chrome)": { + browserAuthentication: { + component: "authentication/browser/m365-sign-in.json.tpl", + credentials: "m365", + }, + host: "copilot", + open: { adapter: "ready", destination: "chat", kind: "agent" }, + readySubject: + "an agent whose name starts with ${{var:app_name}} is displayed in the main section of Microsoft 365 Copilot", + requires: ["login:m365"], + }, + // The Agents Playground hosts the agent on the local machine and talks to it + // over the local bot endpoint, so nothing in this target authenticates against + // Microsoft 365 and no account has to be signed in first. + "Debug in Microsoft 365 Agents Playground": { + host: "playground", + open: { adapter: "ready", destination: "chat", kind: "app" }, + readySubject: + "the Microsoft 365 Agents Playground page is open in the browser", + requires: [], + }, }; function failure(code, message) { @@ -764,14 +873,127 @@ function createSemanticStepCompiler() { return { ok: true }; } + function compilePythonEnvironment(state, definition) { + const inputs = definition.with ?? {}; + if ( + !isRecord(inputs) || + !hasOnlyFields(inputs, new Set(["interpreter"])) || + typeof inputs.interpreter !== "string" || + inputs.interpreter.length === 0 + ) { + return failure( + "VCB_PYTHON_ENVIRONMENT_INPUT_INVALID", + "The Python environment operation requires an interpreter label.", + ); + } + const output = []; + let error = append( + output, + render(state, "command-palette/execute-command.json.tpl", { + commandTitle: pythonEnvironment.commandTitle, + }), + ); + if (error) return error; + error = append( + output, + render(state, "quick-input/filter-option.json.tpl", { + optionLabel: pythonEnvironment.environmentTypeLabel, + }), + ); + if (error) return error; + error = append( + output, + render(state, "quick-input/filter-option.json.tpl", { + optionLabel: inputs.interpreter, + }), + ); + if (error) return error; + error = append( + output, + render(state, "quick-input/multi-select.json.tpl", { + questionTitle: pythonEnvironment.dependenciesTitle, + }), + ); + if (error) return error; + // Creating the virtual environment and installing the requirements it + // declares takes minutes, and the notification the Python extension raises + // when it finishes is the only visible completion signal, so the + // notification center is opened before the assertion waits on it. + error = append( + output, + render(state, "command-palette/execute-command.json.tpl", { + commandTitle: commandTitles.notifications, + }), + ); + if (error) return error; + error = append( + output, + render(state, "notifications/assert-contains.json.tpl", { + notificationText: pythonEnvironment.successText, + retryTimeout: pythonEnvironment.successTimeout, + }), + ); + if (error) return error; + state.completed.add("pythonEnvironment"); + return { ok: true, value: output }; + } + + function compileLocalEnvironment(state, definition) { + const inputs = definition.with ?? {}; + const names = isRecord(inputs) ? Object.keys(inputs).sort() : []; + if ( + !isRecord(inputs) || + names.length === 0 || + names.some( + (name) => + !localEnvironmentNamePattern.test(name) || + typeof inputs[name] !== "string" || + inputs[name].length === 0 || + // The runner resolves its own placeholders before the shell sees the + // value, so they are stripped before the shell-safety check. + !localEnvironmentValuePattern.test( + inputs[name].replaceAll(runnerPlaceholderPattern, ""), + ), + ) + ) { + return failure( + "VCB_LOCAL_ENVIRONMENT_INPUT_INVALID", + "The local environment operation requires shell-safe variable names and values.", + ); + } + const output = []; + for (const name of names) { + const error = append( + output, + render(state, "workspace/local-environment-variable.json.tpl", { + variableName: name, + variableValue: inputs[name], + }), + ); + if (error) return error; + } + return { ok: true, value: output }; + } + function compileLifecycle(state, definition) { const recipe = lifecycleAdapters[definition.type]; let confirmation = recipe.confirmation; const output = []; + // The notification center keeps every notification the run has raised, so + // the assertion that waits for this operation's success would read it out of + // a list that also holds the scaffolding, sign-in, and earlier lifecycle + // entries. + let error = append( + output, + render(state, "command-palette/execute-command.json.tpl", { + commandTitle: commandTitles.clearNotifications, + }), + ); + if (error) return error; // VS Code closes the Command Palette as soon as the window loses focus, and // a running lifecycle operation opens browser windows of its own, so the // notification center is opened before the operation starts. - let error = append( + error = append( output, render(state, "command-palette/execute-command.json.tpl", { commandTitle: commandTitles.notifications, @@ -836,6 +1058,7 @@ function createSemanticStepCompiler() { output, render(state, "notifications/assert-contains.json.tpl", { notificationText: recipe.successText, + retryTimeout: recipe.successTimeout, }), ); if (error) return error; @@ -1000,6 +1223,7 @@ function createSemanticStepCompiler() { function compileChatCheck(state, assertion) { const sendComponents = { copilot: "browser/copilot/send-message.json.tpl", + playground: "browser/playground/send-message.json.tpl", teams: "browser/teams/send-message.json.tpl", }; const sendComponent = sendComponents[state.profile?.host]; @@ -1230,6 +1454,10 @@ function createSemanticStepCompiler() { case "provision": case "deploy": return compileLifecycle(state, definition); + case "pythonEnvironment": + return compilePythonEnvironment(state, definition); + case "localEnvironment": + return compileLocalEnvironment(state, definition); case "target": return compileTarget(state, definition); case "open": diff --git a/packages/tests/vscuse/vscode-test-cases/engine/semantic-step-compiler.test.cjs b/packages/tests/vscuse/vscode-test-cases/engine/semantic-step-compiler.test.cjs index e1186a2d5fc..8e8d8cfab0b 100644 --- a/packages/tests/vscuse/vscode-test-cases/engine/semantic-step-compiler.test.cjs +++ b/packages/tests/vscuse/vscode-test-cases/engine/semantic-step-compiler.test.cjs @@ -108,7 +108,7 @@ test("VCB-34: semantic compiler does not read external template contracts", asyn } }); -test("VCB-34: default setup compiles the checked-in YAML sources into twelve plans", async (context) => { +test("VCB-34: default setup compiles the checked-in YAML sources into twenty-five plans", async (context) => { const plansDirectory = await fs.mkdtemp( path.join(os.tmpdir(), "vscuse-generated-"), ); @@ -121,9 +121,9 @@ test("VCB-34: default setup compiles the checked-in YAML sources into twelve pla }); assert.equal(first.ok, true); - assert.equal(first.value.files.length, 12); + assert.equal(first.value.files.length, 25); const generatedFiles = first.value.files; - assert.equal(generatedFiles.length, 12); + assert.equal(generatedFiles.length, 25); assert.equal( generatedFiles.includes( "da-api-plugin-from-existing-api--da-api-plugin-from-existing-api-no-auth.json", @@ -556,7 +556,7 @@ test("VCB-35: multi-select answers check every option and confirm once", async ( const descriptions = generated.plan.steps.map((step) => step.description); const tools = generated.plan.steps.map((step) => step.tool); const multiSelectFlow = [ - "@assertion the multi-select prompt titled Select Operation(s) Copilot Can Interact with lists at least one option below its input box.", + "@assertion the multi-select prompt titled Select Operation(s) Copilot Can Interact with has finished loading and lists at least one selectable option.", "Move focus from the multi-select input box to the select-all checkbox of the prompt.", "Press Space to check every option of the multi-select prompt.", "Move focus from the select-all checkbox back to the multi-select input box.", @@ -828,7 +828,7 @@ test("provision confirmation follows the authored provision input", async (conte await fs.readFile( path.join( plansDirectory, - "weather-agent--weather-ts-azure-openai-remote-preview.json", + "weather-agent--weather-ts-azure-openai-remote-teams.json", ), "utf8", ), @@ -1196,6 +1196,93 @@ test("semantic adapter rejects a target with missing prerequisites", async () => assert.equal(result.diagnostics[0].code, "VCB_TARGET_PREREQUISITE"); }); +test("VCB-64: local debug targets require no provision or deploy", async () => { + const result = await compileFixture( + "weather-agent.yml", + (sourceText) => sourceText, + ); + + assert.equal(result.ok, true); + const plansByCase = new Map( + result.value.map((generated) => [generated.caseId, generated.plan]), + ); + for (const caseId of [ + "weather-ts-azure-openai-local-teams", + "weather-ts-azure-openai-local-copilot", + "weather-ts-azure-openai-playground", + ]) { + const plan = plansByCase.get(caseId); + assert.notEqual(plan, undefined, caseId); + const typedValues = plan.steps + .filter((step) => step.tool === "type_text") + .map((step) => step.parameters.text); + assert.equal( + typedValues.includes("Microsoft 365 Agents: Provision"), + false, + caseId, + ); + assert.equal( + typedValues.includes("Microsoft 365 Agents: Deploy"), + false, + caseId, + ); + } +}); + +test("VCB-65: the Agents Playground target signs no account in", async () => { + const result = await compileFixture( + "weather-agent.yml", + (sourceText) => sourceText, + ); + + assert.equal(result.ok, true); + const plan = result.value.find( + (generated) => generated.caseId === "weather-ts-azure-openai-playground", + ).plan; + const typedValues = plan.steps + .filter((step) => step.tool === "type_text") + .map((step) => step.parameters.text); + assert.equal(typedValues.includes("${{env:M365_ACCOUNT_NAME}}"), false); + assert.equal( + typedValues.includes("${{secret:M365_ACCOUNT_PASSWORD}}"), + false, + ); + assert.equal( + plan.steps.some((step) => + ["step_signInAzure_", "step_signInM365_", "step_browserM365SignIn_"].some( + (prefix) => step.step_id.startsWith(prefix), + ), + ), + false, + ); +}); + +test("VCB-66: an Agents Playground chat check uses the Playground composer", async () => { + const result = await compileFixture( + "weather-agent.yml", + (sourceText) => sourceText, + ); + + assert.equal(result.ok, true); + const plan = result.value.find( + (generated) => generated.caseId === "weather-ts-azure-openai-playground", + ).plan; + assert.equal( + plan.steps.some((step) => + step.step_id.startsWith("step_sendPlaygroundMessage_"), + ), + true, + ); + assert.equal( + plan.steps.some( + (step) => + step.step_id.startsWith("step_sendTeamsMessage_") || + step.step_id.startsWith("step_sendCopilotMessage_"), + ), + false, + ); +}); + test("semantic adapter rejects an open kind incompatible with its target profile", async () => { const result = await compileFixture("weather-agent.yml", (sourceText) => sourceText.replace(" kind: app", " kind: agent"), @@ -1205,6 +1292,351 @@ test("semantic adapter rejects an open kind incompatible with its target profile assert.equal(result.diagnostics[0].code, "VCB_OPEN_ADAPTER_UNKNOWN"); }); +test("VCB-67: a Python environment operation drives the Venv creation flow", async () => { + const result = await compileFixture( + "basic-custom-engine-agent.yml", + (sourceText) => sourceText, + ); + + assert.equal(result.ok, true); + const plan = result.value.find( + (generated) => generated.caseId === "basic-cea-py-azure-openai-playground", + ).plan; + const typedValues = plan.steps + .filter((step) => step.tool === "type_text") + .map((step) => step.parameters.text); + const commandIndex = typedValues.indexOf("Python: Create Environment..."); + assert.notEqual(commandIndex, -1); + assert.equal(typedValues[commandIndex + 1], "Venv"); + assert.equal(typedValues[commandIndex + 2], "Python 3.12"); + assert.equal( + plan.steps.some( + (step) => + step.agent === "assertion" && + step.description.includes("Select dependencies to install"), + ), + true, + ); +}); + +test("VCB-68: a Python environment operation reads its interpreter from the case", async () => { + const result = await compileFixture( + "basic-custom-engine-agent.yml", + (sourceText) => + sourceText.replace( + 'interpreter: "Python 3.12"', + 'interpreter: "Python 3.13"', + ), + ); + + assert.equal(result.ok, true); + const plan = result.value.find( + (generated) => generated.caseId === "basic-cea-py-azure-openai-playground", + ).plan; + const typedValues = plan.steps + .filter((step) => step.tool === "type_text") + .map((step) => step.parameters.text); + assert.equal(typedValues.includes("Python 3.13"), true); + assert.equal(typedValues.includes("Python 3.12"), false); +}); + +test("VCB-68: a Python environment operation without an interpreter is rejected", async () => { + const result = await compileFixture( + "basic-custom-engine-agent.yml", + (sourceText) => + sourceText.replace(' interpreter: "Python 3.12"\n', ""), + ); + + assert.equal(result.ok, false); + assert.equal( + result.diagnostics[0].code, + "VCB_PYTHON_ENVIRONMENT_INPUT_INVALID", + ); +}); + +test("VCB-69: a Python environment operation clicks no picker row", async () => { + const result = await compileFixture( + "basic-custom-engine-agent.yml", + (sourceText) => sourceText, + ); + + assert.equal(result.ok, true); + const plan = result.value.find( + (generated) => generated.caseId === "basic-cea-py-azure-openai-playground", + ).plan; + const environmentSteps = plan.steps.filter((step) => + ["step_filterOption_", "step_multiSelect_"].some((prefix) => + step.step_id.startsWith(prefix), + ), + ); + assert.notEqual(environmentSteps.length, 0); + for (const step of environmentSteps) { + assert.equal(step.tool === "click", false, step.step_id); + assert.equal(step.parameters.x, undefined, step.step_id); + assert.equal(step.parameters.y, undefined, step.step_id); + } +}); + +test("VCB-70: a Python environment operation opens the notification center before asserting", async () => { + const result = await compileFixture( + "basic-custom-engine-agent.yml", + (sourceText) => sourceText, + ); + + assert.equal(result.ok, true); + const plan = result.value.find( + (generated) => generated.caseId === "basic-cea-py-azure-openai-playground", + ).plan; + const assertionIndex = plan.steps.findIndex( + (step) => + step.agent === "assertion" && + step.description.includes("The following environment is selected:"), + ); + assert.notEqual(assertionIndex, -1); + const notificationIndex = plan.steps.findIndex( + (step) => + step.tool === "type_text" && + step.parameters.text === "Notifications: Show Notifications", + ); + assert.notEqual(notificationIndex, -1); + assert.equal(notificationIndex < assertionIndex, true); +}); + +test("VCB-71: the Python remote Teams target opens the app through the Teams add transition", async () => { + const result = await compileFixture( + "basic-custom-engine-agent.yml", + (sourceText) => sourceText, + ); + + assert.equal(result.ok, true); + const plan = result.value.find( + (generated) => + generated.caseId === "basic-cea-py-azure-openai-remote-teams", + ).plan; + const typedValues = plan.steps + .filter((step) => step.tool === "type_text") + .map((step) => step.parameters.text); + assert.equal(typedValues.includes("Launch Remote (Chrome)"), true); + assert.equal( + plan.steps.some((step) => step.step_id.startsWith("step_addAndOpenApp_")), + true, + ); +}); + +test("VCB-72: the weather bundle authors every LLM, language, and Teams launch combination", async () => { + const result = await compileFixture( + "weather-agent.yml", + (sourceText) => sourceText, + ); + + assert.equal(result.ok, true); + const caseIds = new Set(result.value.map((generated) => generated.caseId)); + for (const llm of ["azure-openai", "openai"]) { + for (const language of ["ts", "js"]) { + for (const launch of ["remote-teams", "local-teams"]) { + assert.equal( + caseIds.has(`weather-${language}-${llm}-${launch}`), + true, + `weather-${language}-${llm}-${launch} is not authored`, + ); + } + } + } +}); + +test("VCB-73: an OpenAI weather case asserts a completion locally but not remotely", async () => { + const result = await compileFixture( + "weather-agent.yml", + (sourceText) => sourceText, + ); + + assert.equal(result.ok, true); + for (const generated of result.value) { + if ( + !generated.caseId.includes("-openai-") || + generated.caseId.includes("-azure-openai-") + ) { + continue; + } + const isLocal = generated.caseId.includes("-local-"); + const sendsAMessage = generated.plan.steps.some((step) => + /^step_send(Teams|Copilot|Playground)Message_/.test(step.step_id || ""), + ); + assert.equal( + sendsAMessage, + isLocal, + `${generated.caseId} sends ${sendsAMessage ? "a" : "no"} chat message`, + ); + } +}); + +test("VCB-75: a local environment operation writes the variable into the local lifecycle", async () => { + const result = await compileFixture( + "weather-agent.yml", + (sourceText) => sourceText, + ); + + assert.equal(result.ok, true); + const generated = result.value.find( + (candidate) => candidate.caseId === "weather-ts-openai-local-teams", + ); + const step = generated.plan.steps.find((candidate) => + candidate.step_id.startsWith("step_setLocalEnvironmentVariable_"), + ); + + assert.equal(step.agent, "code"); + assert.equal( + step.parameters.sample.includes( + 'VARIABLE_NAME="OPENAI_BASE_URL" VARIABLE_VALUE="${{env:AZURE_OPENAI_ENDPOINT}}/openai/v1"', + ), + true, + ); + assert.equal(step.parameters.sample.includes("m365agents.local.yml"), true); + assert.equal(step.parameters.sample.includes('"envs:"'), true); +}); + +test("VCB-76: a shell-unsafe local environment value fails the compilation", async () => { + const result = await compileFixture("weather-agent.yml", (sourceText) => + sourceText.replace( + 'OPENAI_BASE_URL: "${{env:AZURE_OPENAI_ENDPOINT}}/openai/v1"', + 'OPENAI_BASE_URL: "$(id)"', + ), + ); + + assert.equal(result.ok, false); + assert.equal( + result.diagnostics[0].code, + "VCB_LOCAL_ENVIRONMENT_INPUT_INVALID", + ); +}); + +test("VCB-77: an Azure lifecycle waits longer for its notification than a local operation", async () => { + const result = await compileFixture( + "basic-custom-engine-agent.yml", + (sourceText) => sourceText, + ); + + assert.equal(result.ok, true); + const plan = result.value.find( + (generated) => + generated.caseId === "basic-cea-py-azure-openai-remote-teams", + ).plan; + const timeoutOf = (text) => { + const step = plan.steps.find( + (candidate) => + candidate.step_id.startsWith("step_assertNotificationContains_") && + candidate.description.includes(text), + ); + assert.notEqual(step, undefined); + return step.tags.find((tag) => tag.startsWith("step_retry_timeout: ")); + }; + assert.equal( + timeoutOf("provision stage executed successfully"), + "step_retry_timeout: 900", + ); + assert.equal( + timeoutOf("actions in deploy stage executed successfully"), + "step_retry_timeout: 900", + ); + assert.equal( + timeoutOf("The following environment is selected:"), + "step_retry_timeout: 300", + ); +}); + +test("VCB-78: a Chrome target signs the launched browser in before asserting readiness", async () => { + const result = await compileFixture( + "basic-custom-engine-agent.yml", + (sourceText) => sourceText, + ); + + assert.equal(result.ok, true); + for (const caseId of [ + "basic-cea-py-azure-openai-local-teams", + "basic-cea-py-azure-openai-remote-teams", + ]) { + const plan = result.value.find( + (generated) => generated.caseId === caseId, + ).plan; + const launchIndex = plan.steps.findIndex( + (step) => + step.tool === "key_press" && + step.step_id.startsWith("step_filterOption_confirm_"), + ); + const passwordIndex = plan.steps.findIndex((step) => + step.step_id.startsWith("step_browserM365PasswordSignIn_enterPassword_"), + ); + const readyIndex = plan.steps.findIndex((step) => + step.step_id.startsWith("step_assertReady_assertReady_"), + ); + assert.notEqual(passwordIndex, -1, caseId); + assert.equal(launchIndex < passwordIndex, true, caseId); + assert.equal(passwordIndex < readyIndex, true, caseId); + } +}); + +test("VCB-79: the password prompt is focused before the password is typed", async () => { + const result = await compileFixture( + "basic-custom-engine-agent.yml", + (sourceText) => sourceText, + ); + + assert.equal(result.ok, true); + const plan = result.value.find( + (generated) => generated.caseId === "basic-cea-py-azure-openai-local-teams", + ).plan; + const focusIndex = plan.steps.findIndex((step) => + step.step_id.startsWith("step_browserM365PasswordSignIn_focusPassword_"), + ); + const passwordIndex = plan.steps.findIndex((step) => + step.step_id.startsWith("step_browserM365PasswordSignIn_enterPassword_"), + ); + + assert.notEqual(focusIndex, -1); + assert.equal(plan.steps[focusIndex].tool, "click"); + assert.equal(focusIndex < passwordIndex, true); +}); + +test("VCB-80: a lifecycle operation clears the notification center before it starts", async () => { + const result = await compileFixture( + "basic-custom-engine-agent.yml", + (sourceText) => sourceText, + ); + + assert.equal(result.ok, true); + const plan = result.value.find( + (generated) => + generated.caseId === "basic-cea-py-azure-openai-remote-teams", + ).plan; + const commands = plan.steps + .filter((step) => step.step_id.startsWith("step_executeCommand_filter_")) + .map((step) => step.parameters.text); + + for (const title of [ + "Microsoft 365 Agents: Provision", + "Microsoft 365 Agents: Deploy", + ]) { + const index = commands.indexOf(title); + assert.notEqual(index, -1, title); + assert.deepEqual(commands.slice(index - 2, index), [ + "Notifications: Clear All Notifications", + "Notifications: Show Notifications", + ]); + } +}); + +test("VCB-74: the remote Copilot target requires provision and deploy", async () => { + const result = await compileFixture("weather-agent.yml", (sourceText) => + sourceText.replace( + " deploy,\n f5-copilot-remote,", + " f5-copilot-remote,", + ), + ); + + assert.equal(result.ok, false); + assert.equal(result.diagnostics[0].code, "VCB_TARGET_PREREQUISITE"); +}); + test("VCB-26: an already-ready Copilot target makes its open emit no step", async () => { const result = await compileFixture( "da-no-action.yml", diff --git a/packages/tests/vscuse/vscode-test-cases/engine/validate-case-bundle.cjs b/packages/tests/vscuse/vscode-test-cases/engine/validate-case-bundle.cjs index 1ff88c05647..d078d2bf89c 100644 --- a/packages/tests/vscuse/vscode-test-cases/engine/validate-case-bundle.cjs +++ b/packages/tests/vscuse/vscode-test-cases/engine/validate-case-bundle.cjs @@ -14,6 +14,8 @@ const allowedStepTypes = new Set([ "login", "provision", "deploy", + "pythonEnvironment", + "localEnvironment", "target", "open", "checks", diff --git a/packages/tests/vscuse/vscode-test-cases/plans/.vscuse-generated-plans b/packages/tests/vscuse/vscode-test-cases/plans/.vscuse-generated-plans index f185c4dedf4..b7b4b5fb3ec 100644 --- a/packages/tests/vscuse/vscode-test-cases/plans/.vscuse-generated-plans +++ b/packages/tests/vscuse/vscode-test-cases/plans/.vscuse-generated-plans @@ -1,6 +1,9 @@ { "version": 1, "files": [ + "basic-custom-engine-agent--basic-cea-py-azure-openai-local-teams.json", + "basic-custom-engine-agent--basic-cea-py-azure-openai-playground.json", + "basic-custom-engine-agent--basic-cea-py-azure-openai-remote-teams.json", "da-api-plugin-from-existing-api--da-api-plugin-from-existing-api-api-key-remote-preview.json", "da-api-plugin-from-existing-api--da-api-plugin-from-existing-api-bearer-remote-preview.json", "da-api-plugin-from-existing-api--da-api-plugin-from-existing-api-no-auth-remote-preview.json", @@ -11,7 +14,17 @@ "da-mcp-server--da-mcp-remote-none-preview.json", "da-mcp-server--da-mcp-remote-oauth-preview.json", "da-no-action--da-no-action-remote-preview.json", - "weather-agent--weather-js-openai-remote-preview.json", - "weather-agent--weather-ts-azure-openai-remote-preview.json" + "weather-agent--weather-js-azure-openai-local-teams.json", + "weather-agent--weather-js-azure-openai-playground.json", + "weather-agent--weather-js-azure-openai-remote-teams.json", + "weather-agent--weather-js-openai-local-teams.json", + "weather-agent--weather-js-openai-remote-teams.json", + "weather-agent--weather-ts-azure-openai-local-copilot.json", + "weather-agent--weather-ts-azure-openai-local-teams.json", + "weather-agent--weather-ts-azure-openai-playground.json", + "weather-agent--weather-ts-azure-openai-remote-copilot.json", + "weather-agent--weather-ts-azure-openai-remote-teams.json", + "weather-agent--weather-ts-openai-local-teams.json", + "weather-agent--weather-ts-openai-remote-teams.json" ] } diff --git a/packages/tests/vscuse/vscode-test-cases/plans/basic-custom-engine-agent--basic-cea-py-azure-openai-local-teams.json b/packages/tests/vscuse/vscode-test-cases/plans/basic-custom-engine-agent--basic-cea-py-azure-openai-local-teams.json new file mode 100644 index 00000000000..4e2ab285790 --- /dev/null +++ b/packages/tests/vscuse/vscode-test-cases/plans/basic-custom-engine-agent--basic-cea-py-azure-openai-local-teams.json @@ -0,0 +1,2911 @@ +{ + "plan_metadata": { + "version": "1.1", + "plan_id": "plan_db8ae9d39c15", + "execution_context": { + "delay_between_steps": 1, + "stop_on_error": true, + "precondition_wait_timeout": 30, + "precondition_retry_interval": 1 + }, + "total_steps": 123, + "name": "basic-cea-py-azure-openai-local-teams", + "description": { + "owner": "", + "workitem": "SCN-CREATE-BASIC-CEA-01", + "other": "" + }, + "execution_order": [ + "step_closeWelcomeOverlay_assertVisible_c834b2eb3_1_1", + "step_closeWelcomeOverlay_close_c834b2eb3_1_1", + "step_closeWelcomeOverlay_assertReady_c834b2eb3_1_1", + "step_executeCommand_open_c834b2eb3_1_2", + "step_executeCommand_assertPalette_c834b2eb3_1_2", + "step_executeCommand_filter_c834b2eb3_1_2", + "step_executeCommand_assertCommand_c834b2eb3_1_2", + "step_executeCommand_execute_c834b2eb3_1_2", + "step_assertToolkitViewSettled_assert_c834b2eb3_1_3", + "step_closeGetStartedEditor_assertActive_c834b2eb3_1_4", + "step_closeGetStartedEditor_close_c834b2eb3_1_4", + "step_closeGetStartedEditor_assertClosed_c834b2eb3_1_4", + "step_executeCommand_open_c834b2eb3_1_5", + "step_executeCommand_assertPalette_c834b2eb3_1_5", + "step_executeCommand_filter_c834b2eb3_1_5", + "step_executeCommand_assertCommand_c834b2eb3_1_5", + "step_executeCommand_execute_c834b2eb3_1_5", + "step_singleSelect_assertQuestion_c834b2eb3_1_6", + "step_singleSelect_assertOptionsLoaded_c834b2eb3_1_6", + "step_singleSelect_filter_c834b2eb3_1_6", + "step_singleSelect_assertOption_c834b2eb3_1_6", + "step_singleSelect_confirm_c834b2eb3_1_6", + "step_singleSelect_assertQuestion_c834b2eb3_1_7", + "step_singleSelect_assertOptionsLoaded_c834b2eb3_1_7", + "step_singleSelect_filter_c834b2eb3_1_7", + "step_singleSelect_assertOption_c834b2eb3_1_7", + "step_singleSelect_confirm_c834b2eb3_1_7", + "step_singleSelect_assertQuestion_c834b2eb3_1_8", + "step_singleSelect_assertOptionsLoaded_c834b2eb3_1_8", + "step_singleSelect_filter_c834b2eb3_1_8", + "step_singleSelect_assertOption_c834b2eb3_1_8", + "step_singleSelect_confirm_c834b2eb3_1_8", + "step_textInput_assertQuestion_c834b2eb3_1_9", + "step_textInput_input_c834b2eb3_1_9", + "step_textInput_confirm_c834b2eb3_1_9", + "step_textInput_assertQuestion_c834b2eb3_1_10", + "step_textInput_input_c834b2eb3_1_10", + "step_textInput_confirm_c834b2eb3_1_10", + "step_textInput_assertQuestion_c834b2eb3_1_11", + "step_textInput_input_c834b2eb3_1_11", + "step_textInput_confirm_c834b2eb3_1_11", + "step_singleSelect_assertQuestion_c834b2eb3_1_12", + "step_singleSelect_assertOptionsLoaded_c834b2eb3_1_12", + "step_singleSelect_filter_c834b2eb3_1_12", + "step_singleSelect_assertOption_c834b2eb3_1_12", + "step_singleSelect_confirm_c834b2eb3_1_12", + "step_confirmOption_assertPrompt_c834b2eb3_1_13", + "step_confirmOption_confirm_c834b2eb3_1_13", + "step_textInput_assertQuestion_c834b2eb3_1_14", + "step_textInput_input_c834b2eb3_1_14", + "step_textInput_confirm_c834b2eb3_1_14", + "step_assertProjectWindowReady_assert_c834b2eb3_1_15", + "step_checkWorkspaceFiles_verify_c834b2eb3_2_1", + "step_checkWorkspaceFiles_verify_c834b2eb3_2_2", + "step_checkWorkspaceFiles_verify_c834b2eb3_2_3", + "step_checkWorkspaceFiles_verify_c834b2eb3_2_4", + "step_checkWorkspaceFiles_verify_c834b2eb3_2_5", + "step_checkWorkspaceFiles_verify_c834b2eb3_2_6", + "step_checkWorkspaceFiles_verify_c834b2eb3_2_7", + "step_checkWorkspaceFiles_verify_c834b2eb3_2_8", + "step_executeCommand_open_c834b2eb3_3_1", + "step_executeCommand_assertPalette_c834b2eb3_3_1", + "step_executeCommand_filter_c834b2eb3_3_1", + "step_executeCommand_assertCommand_c834b2eb3_3_1", + "step_executeCommand_execute_c834b2eb3_3_1", + "step_filterOption_filter_c834b2eb3_3_2", + "step_filterOption_assertOption_c834b2eb3_3_2", + "step_filterOption_confirm_c834b2eb3_3_2", + "step_filterOption_filter_c834b2eb3_3_3", + "step_filterOption_assertOption_c834b2eb3_3_3", + "step_filterOption_confirm_c834b2eb3_3_3", + "step_multiSelect_assertQuestion_c834b2eb3_3_4", + "step_multiSelect_assertOptionsLoaded_c834b2eb3_3_4", + "step_multiSelect_focusSelectAll_c834b2eb3_3_4", + "step_multiSelect_selectAll_c834b2eb3_3_4", + "step_multiSelect_restoreFocus_c834b2eb3_3_4", + "step_multiSelect_confirm_c834b2eb3_3_4", + "step_executeCommand_open_c834b2eb3_3_5", + "step_executeCommand_assertPalette_c834b2eb3_3_5", + "step_executeCommand_filter_c834b2eb3_3_5", + "step_executeCommand_assertCommand_c834b2eb3_3_5", + "step_executeCommand_execute_c834b2eb3_3_5", + "step_assertNotificationContains_assert_c834b2eb3_3_6", + "step_executeCommand_open_c834b2eb3_4_1", + "step_executeCommand_assertPalette_c834b2eb3_4_1", + "step_executeCommand_filter_c834b2eb3_4_1", + "step_executeCommand_assertCommand_c834b2eb3_4_1", + "step_executeCommand_execute_c834b2eb3_4_1", + "step_signInM365_assertOption_c834b2eb3_4_2", + "step_signInM365_selectOption_c834b2eb3_4_2", + "step_signInM365_confirmSignIn_c834b2eb3_4_2", + "step_signInM365_focusAccount_c834b2eb3_4_2", + "step_signInM365_typeAccount_c834b2eb3_4_2", + "step_signInM365_next_c834b2eb3_4_2", + "step_signInM365_typePassword_c834b2eb3_4_2", + "step_signInM365_submit_c834b2eb3_4_2", + "step_signInM365_closeBrowser_c834b2eb3_4_2", + "step_signInM365_assertReady_c834b2eb3_4_2", + "step_executeCommand_open_c834b2eb3_5_1", + "step_executeCommand_assertPalette_c834b2eb3_5_1", + "step_executeCommand_filter_c834b2eb3_5_1", + "step_executeCommand_assertCommand_c834b2eb3_5_1", + "step_executeCommand_execute_c834b2eb3_5_1", + "step_filterOption_filter_c834b2eb3_5_2", + "step_filterOption_assertOption_c834b2eb3_5_2", + "step_filterOption_confirm_c834b2eb3_5_2", + "step_browserM365PasswordSignIn_assertPassword_c834b2eb3_5_3", + "step_browserM365PasswordSignIn_focusPassword_c834b2eb3_5_3", + "step_browserM365PasswordSignIn_enterPassword_c834b2eb3_5_3", + "step_browserM365PasswordSignIn_submitPassword_c834b2eb3_5_3", + "step_browserM365PasswordSignIn_assertStaySignedIn_c834b2eb3_5_3", + "step_browserM365PasswordSignIn_confirmStaySignedIn_c834b2eb3_5_3", + "step_assertReady_assertReady_c834b2eb3_5_4", + "step_addAndOpenApp_assertAdd_c834b2eb3_6_1", + "step_addAndOpenApp_add_c834b2eb3_6_1", + "step_addAndOpenApp_assertAdded_c834b2eb3_6_1", + "step_addAndOpenApp_open_c834b2eb3_6_1", + "step_addAndOpenApp_assertReady_c834b2eb3_6_1", + "step_sendTeamsMessage_assertInput_c834b2eb3_7_1", + "step_sendTeamsMessage_focusInput_c834b2eb3_7_1", + "step_sendTeamsMessage_type_c834b2eb3_7_1", + "step_sendTeamsMessage_send_c834b2eb3_7_1", + "step_assertChatReplied_assert_c834b2eb3_7_2" + ], + "tags": [ + "case_id:basic-cea-py-azure-openai-local-teams", + "scenario_id:SCN-CREATE-BASIC-CEA-01", + "template_id:basic-custom-engine-agent", + "gate:pr" + ] + }, + "steps": [ + { + "step_id": "step_closeWelcomeOverlay_assertVisible_c834b2eb3_1_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the startup \"Welcome to VS Code\" sign-in overlay is visible and its Close button is available.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:initialization", + "initialization:closeWelcomeOverlay", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_closeWelcomeOverlay_close_c834b2eb3_1_1", + "agent": "interaction", + "tool": "click", + "parameters": { + "button": "left", + "x": 952, + "y": 128 + }, + "description": "Click the Close button on the startup Welcome sign-in overlay.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_closeWelcomeOverlay_assertVisible_c834b2eb3_1_1" + ], + "preconditions": [ + "dhash:952:128:16:5:255266345964665b", + "dhash:952:128:96:5:16100c10100c1404", + "dhash:952:128:0:10:2592eae0f08e8621" + ], + "postconditions": [], + "tags": [ + "component:initialization", + "initialization:closeWelcomeOverlay", + "force_run:true" + ] + }, + { + "step_id": "step_closeWelcomeOverlay_assertReady_c834b2eb3_1_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the startup sign-in overlay is no longer visible and the VS Code workbench is ready.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_closeWelcomeOverlay_close_c834b2eb3_1_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:initialization", + "initialization:closeWelcomeOverlay", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_open_c834b2eb3_1_2", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "f1" + }, + "description": "Press the F1 key to open the Command Palette in Visual Studio Code.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_closeWelcomeOverlay_assertReady_c834b2eb3_1_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertPalette_c834b2eb3_1_2", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Visual Studio Code Command Palette is visible with a > character in its input box and is ready to accept a command search.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_open_c834b2eb3_1_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_filter_c834b2eb3_1_2", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Microsoft 365 Agents Toolkit: Focus on Microsoft 365 Agents Toolkit View" + }, + "description": "Type the resolved command title into the active Command Palette.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertPalette_c834b2eb3_1_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertCommand_c834b2eb3_1_2", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Command Palette input box reads >Microsoft 365 Agents Toolkit: Focus on Microsoft 365 Agents Toolkit View and the highlighted command listed under it is titled Microsoft 365 Agents Toolkit: Focus on Microsoft 365 Agents Toolkit View.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_filter_c834b2eb3_1_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_execute_c834b2eb3_1_2", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to execute the selected Command Palette command.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertCommand_c834b2eb3_1_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_assertToolkitViewSettled_assert_c834b2eb3_1_3", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Microsoft 365 Agents Toolkit view is open in the side bar and an editor tab labeled Welcome showing the Build a Declarative Agent walkthrough is open in the editor area.", + "content_refs": [], + "timeout": 120, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_execute_c834b2eb3_1_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:initialization", + "initialization:assertToolkitViewSettled", + "step_retry_timeout: 120" + ] + }, + { + "step_id": "step_closeGetStartedEditor_assertActive_c834b2eb3_1_4", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the editor tab labeled Welcome showing the Build a Declarative Agent walkthrough is the active editor tab in the Visual Studio Code editor area.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_assertToolkitViewSettled_assert_c834b2eb3_1_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:initialization", + "initialization:closeGetStartedEditor", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_closeGetStartedEditor_close_c834b2eb3_1_4", + "agent": "interaction", + "tool": "keyboard_shortcut", + "parameters": { + "keys": "ctrl+w" + }, + "description": "Press Ctrl+W to close the Welcome editor tab.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_closeGetStartedEditor_assertActive_c834b2eb3_1_4" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:initialization", + "initialization:closeGetStartedEditor" + ] + }, + { + "step_id": "step_closeGetStartedEditor_assertClosed_c834b2eb3_1_4", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion no editor tab is open in the Visual Studio Code editor area.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_closeGetStartedEditor_close_c834b2eb3_1_4" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:initialization", + "initialization:closeGetStartedEditor", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_open_c834b2eb3_1_5", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "f1" + }, + "description": "Press the F1 key to open the Command Palette in Visual Studio Code.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_closeGetStartedEditor_assertClosed_c834b2eb3_1_4" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertPalette_c834b2eb3_1_5", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Visual Studio Code Command Palette is visible with a > character in its input box and is ready to accept a command search.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_open_c834b2eb3_1_5" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_filter_c834b2eb3_1_5", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Microsoft 365 Agents: Create New Agent/App" + }, + "description": "Type the resolved command title into the active Command Palette.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertPalette_c834b2eb3_1_5" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertCommand_c834b2eb3_1_5", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Command Palette input box reads >Microsoft 365 Agents: Create New Agent/App and the highlighted command listed under it is titled Microsoft 365 Agents: Create New Agent/App.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_filter_c834b2eb3_1_5" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_execute_c834b2eb3_1_5", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to execute the selected Command Palette command.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertCommand_c834b2eb3_1_5" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_singleSelect_assertQuestion_c834b2eb3_1_6", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the active prompt titled New Project is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_execute_c834b2eb3_1_5" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_singleSelect_assertOptionsLoaded_c834b2eb3_1_6", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the prompt titled New Project has finished loading and lists at least one selectable option.", + "content_refs": [], + "timeout": 120, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertQuestion_c834b2eb3_1_6" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 120" + ] + }, + { + "step_id": "step_singleSelect_filter_c834b2eb3_1_6", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Custom Engine Agent" + }, + "description": "Type the resolved option label Custom Engine Agent into the active single-select prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertOptionsLoaded_c834b2eb3_1_6" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_singleSelect_assertOption_c834b2eb3_1_6", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the option Custom Engine Agent is visible and selectable in the filtered single-select prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_filter_c834b2eb3_1_6" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_singleSelect_confirm_c834b2eb3_1_6", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to confirm the filtered single-select option.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertOption_c834b2eb3_1_6" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_singleSelect_assertQuestion_c834b2eb3_1_7", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the active prompt titled App Features Using Microsoft 365 Agents SDK is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_confirm_c834b2eb3_1_6" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_singleSelect_assertOptionsLoaded_c834b2eb3_1_7", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the prompt titled App Features Using Microsoft 365 Agents SDK has finished loading and lists at least one selectable option.", + "content_refs": [], + "timeout": 120, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertQuestion_c834b2eb3_1_7" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 120" + ] + }, + { + "step_id": "step_singleSelect_filter_c834b2eb3_1_7", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Basic Custom Engine Agent" + }, + "description": "Type the resolved option label Basic Custom Engine Agent into the active single-select prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertOptionsLoaded_c834b2eb3_1_7" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_singleSelect_assertOption_c834b2eb3_1_7", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the option Basic Custom Engine Agent is visible and selectable in the filtered single-select prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_filter_c834b2eb3_1_7" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_singleSelect_confirm_c834b2eb3_1_7", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to confirm the filtered single-select option.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertOption_c834b2eb3_1_7" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_singleSelect_assertQuestion_c834b2eb3_1_8", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the active prompt titled Service for Large Language Model (LLM) is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_confirm_c834b2eb3_1_7" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_singleSelect_assertOptionsLoaded_c834b2eb3_1_8", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the prompt titled Service for Large Language Model (LLM) has finished loading and lists at least one selectable option.", + "content_refs": [], + "timeout": 120, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertQuestion_c834b2eb3_1_8" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 120" + ] + }, + { + "step_id": "step_singleSelect_filter_c834b2eb3_1_8", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Azure OpenAI" + }, + "description": "Type the resolved option label Azure OpenAI into the active single-select prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertOptionsLoaded_c834b2eb3_1_8" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_singleSelect_assertOption_c834b2eb3_1_8", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the option Azure OpenAI is visible and selectable in the filtered single-select prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_filter_c834b2eb3_1_8" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_singleSelect_confirm_c834b2eb3_1_8", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to confirm the filtered single-select option.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertOption_c834b2eb3_1_8" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_textInput_assertQuestion_c834b2eb3_1_9", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the active prompt titled Azure OpenAI Key is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_confirm_c834b2eb3_1_8" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_textInput_input_c834b2eb3_1_9", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "${{secret:AZURE_OPENAI_API_KEY}}" + }, + "description": "Type the authored value into the active text prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_assertQuestion_c834b2eb3_1_9" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text" + ] + }, + { + "step_id": "step_textInput_confirm_c834b2eb3_1_9", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to submit the accepted text input.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_input_c834b2eb3_1_9" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text" + ] + }, + { + "step_id": "step_textInput_assertQuestion_c834b2eb3_1_10", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the active prompt titled Azure OpenAI Endpoint is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_confirm_c834b2eb3_1_9" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_textInput_input_c834b2eb3_1_10", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "${{env:AZURE_OPENAI_ENDPOINT}}" + }, + "description": "Type the authored value into the active text prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_assertQuestion_c834b2eb3_1_10" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text" + ] + }, + { + "step_id": "step_textInput_confirm_c834b2eb3_1_10", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to submit the accepted text input.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_input_c834b2eb3_1_10" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text" + ] + }, + { + "step_id": "step_textInput_assertQuestion_c834b2eb3_1_11", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the active prompt titled Azure OpenAI Deployment Name is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_confirm_c834b2eb3_1_10" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_textInput_input_c834b2eb3_1_11", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "${{env:AZURE_OPENAI_MODEL}}" + }, + "description": "Type the authored value into the active text prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_assertQuestion_c834b2eb3_1_11" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text" + ] + }, + { + "step_id": "step_textInput_confirm_c834b2eb3_1_11", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to submit the accepted text input.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_input_c834b2eb3_1_11" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text" + ] + }, + { + "step_id": "step_singleSelect_assertQuestion_c834b2eb3_1_12", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the active prompt titled Programming Language is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_confirm_c834b2eb3_1_11" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_singleSelect_assertOptionsLoaded_c834b2eb3_1_12", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the prompt titled Programming Language has finished loading and lists at least one selectable option.", + "content_refs": [], + "timeout": 120, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertQuestion_c834b2eb3_1_12" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 120" + ] + }, + { + "step_id": "step_singleSelect_filter_c834b2eb3_1_12", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Python" + }, + "description": "Type the resolved option label Python into the active single-select prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertOptionsLoaded_c834b2eb3_1_12" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_singleSelect_assertOption_c834b2eb3_1_12", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the option Python is visible and selectable in the filtered single-select prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_filter_c834b2eb3_1_12" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_singleSelect_confirm_c834b2eb3_1_12", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to confirm the filtered single-select option.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertOption_c834b2eb3_1_12" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_confirmOption_assertPrompt_c834b2eb3_1_13", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the active prompt titled Workspace Folder is visible and the option Default folder is focused.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_confirm_c834b2eb3_1_12" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "interaction:key-press", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_confirmOption_confirm_c834b2eb3_1_13", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to confirm the Default folder option.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_confirmOption_assertPrompt_c834b2eb3_1_13" + ], + "preconditions": [ + "dhash:364:74:16:5:08056a9a5d5516b6", + "dhash:364:74:96:5:44232286e2168e01", + "dhash:364:74:0:10:f0b09494b2717075" + ], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "interaction:key-press" + ] + }, + { + "step_id": "step_textInput_assertQuestion_c834b2eb3_1_14", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the active prompt titled Application Name is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_confirmOption_confirm_c834b2eb3_1_13" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_textInput_input_c834b2eb3_1_14", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "${{var:app_name:vscuse_app_#####}}" + }, + "description": "Type the authored value into the active text prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_assertQuestion_c834b2eb3_1_14" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text" + ] + }, + { + "step_id": "step_textInput_confirm_c834b2eb3_1_14", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to submit the accepted text input.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_input_c834b2eb3_1_14" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text" + ] + }, + { + "step_id": "step_assertProjectWindowReady_assert_c834b2eb3_1_15", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Preview README.md editor tab is open in Visual Studio Code.", + "content_refs": [], + "timeout": 60, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_confirm_c834b2eb3_1_14" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:initialization", + "initialization:assertProjectWindowReady", + "step_retry_timeout: 60" + ] + }, + { + "step_id": "step_checkWorkspaceFiles_verify_c834b2eb3_2_1", + "agent": "code", + "tool": "", + "parameters": { + "sample": "=== Generated Script ===\nLanguage: bash\n\n```bash\nset -euo pipefail\nPROJECT_DIR=\"/home/vscode/AgentsToolkitProjects/${{var:app_name}}\" ASSERTIONS_B64=\"W3sicGF0aCI6Im0zNjVhZ2VudHMueW1sIiwiZXhpc3RzIjp0cnVlLCJjb250YWlucyI6WyJwcm92aXNpb246IiwiZGVwbG95OiJdLCJub3RDb250YWlucyI6W119XQ==\" python3 - <<'PY'\nimport base64\nimport json\nimport os\nfrom pathlib import Path\n\nproject = Path(os.environ[\"PROJECT_DIR\"]).resolve()\nassertions = json.loads(base64.b64decode(os.environ[\"ASSERTIONS_B64\"]).decode(\"utf-8\"))\nfor assertion in assertions:\n target = (project / assertion[\"path\"]).resolve()\n try:\n target.relative_to(project)\n except ValueError as error:\n raise AssertionError(\"File assertion escaped the project directory\") from error\n exists = target.is_file()\n if exists != assertion[\"exists\"]:\n raise AssertionError(f\"Unexpected file existence for {assertion['path']}\")\n if not exists:\n continue\n content = target.read_text(encoding=\"utf-8\")\n for expected in assertion.get(\"contains\", []):\n expected = expected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if expected not in content:\n raise AssertionError(f\"Expected content is absent from {assertion['path']}\")\n for unexpected in assertion.get(\"notContains\", []):\n unexpected = unexpected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if unexpected in content:\n raise AssertionError(f\"Unexpected content is present in {assertion['path']}\")\nPY\n```" + }, + "description": "@code verify the authored workspace file existence and content assertions without logging file contents.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_assertProjectWindowReady_assert_c834b2eb3_1_15" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:checks", + "assertion:file", + "step_retry_timeout:120" + ] + }, + { + "step_id": "step_checkWorkspaceFiles_verify_c834b2eb3_2_2", + "agent": "code", + "tool": "", + "parameters": { + "sample": "=== Generated Script ===\nLanguage: bash\n\n```bash\nset -euo pipefail\nPROJECT_DIR=\"/home/vscode/AgentsToolkitProjects/${{var:app_name}}\" ASSERTIONS_B64=\"W3sicGF0aCI6InNyYy9hcHAucHkiLCJleGlzdHMiOnRydWUsImNvbnRhaW5zIjpbXSwibm90Q29udGFpbnMiOltdfV0=\" python3 - <<'PY'\nimport base64\nimport json\nimport os\nfrom pathlib import Path\n\nproject = Path(os.environ[\"PROJECT_DIR\"]).resolve()\nassertions = json.loads(base64.b64decode(os.environ[\"ASSERTIONS_B64\"]).decode(\"utf-8\"))\nfor assertion in assertions:\n target = (project / assertion[\"path\"]).resolve()\n try:\n target.relative_to(project)\n except ValueError as error:\n raise AssertionError(\"File assertion escaped the project directory\") from error\n exists = target.is_file()\n if exists != assertion[\"exists\"]:\n raise AssertionError(f\"Unexpected file existence for {assertion['path']}\")\n if not exists:\n continue\n content = target.read_text(encoding=\"utf-8\")\n for expected in assertion.get(\"contains\", []):\n expected = expected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if expected not in content:\n raise AssertionError(f\"Expected content is absent from {assertion['path']}\")\n for unexpected in assertion.get(\"notContains\", []):\n unexpected = unexpected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if unexpected in content:\n raise AssertionError(f\"Unexpected content is present in {assertion['path']}\")\nPY\n```" + }, + "description": "@code verify the authored workspace file existence and content assertions without logging file contents.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_checkWorkspaceFiles_verify_c834b2eb3_2_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:checks", + "assertion:file", + "step_retry_timeout:120" + ] + }, + { + "step_id": "step_checkWorkspaceFiles_verify_c834b2eb3_2_3", + "agent": "code", + "tool": "", + "parameters": { + "sample": "=== Generated Script ===\nLanguage: bash\n\n```bash\nset -euo pipefail\nPROJECT_DIR=\"/home/vscode/AgentsToolkitProjects/${{var:app_name}}\" ASSERTIONS_B64=\"W3sicGF0aCI6InNyYy9hZ2VudC5weSIsImV4aXN0cyI6dHJ1ZSwiY29udGFpbnMiOltdLCJub3RDb250YWlucyI6W119XQ==\" python3 - <<'PY'\nimport base64\nimport json\nimport os\nfrom pathlib import Path\n\nproject = Path(os.environ[\"PROJECT_DIR\"]).resolve()\nassertions = json.loads(base64.b64decode(os.environ[\"ASSERTIONS_B64\"]).decode(\"utf-8\"))\nfor assertion in assertions:\n target = (project / assertion[\"path\"]).resolve()\n try:\n target.relative_to(project)\n except ValueError as error:\n raise AssertionError(\"File assertion escaped the project directory\") from error\n exists = target.is_file()\n if exists != assertion[\"exists\"]:\n raise AssertionError(f\"Unexpected file existence for {assertion['path']}\")\n if not exists:\n continue\n content = target.read_text(encoding=\"utf-8\")\n for expected in assertion.get(\"contains\", []):\n expected = expected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if expected not in content:\n raise AssertionError(f\"Expected content is absent from {assertion['path']}\")\n for unexpected in assertion.get(\"notContains\", []):\n unexpected = unexpected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if unexpected in content:\n raise AssertionError(f\"Unexpected content is present in {assertion['path']}\")\nPY\n```" + }, + "description": "@code verify the authored workspace file existence and content assertions without logging file contents.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_checkWorkspaceFiles_verify_c834b2eb3_2_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:checks", + "assertion:file", + "step_retry_timeout:120" + ] + }, + { + "step_id": "step_checkWorkspaceFiles_verify_c834b2eb3_2_4", + "agent": "code", + "tool": "", + "parameters": { + "sample": "=== Generated Script ===\nLanguage: bash\n\n```bash\nset -euo pipefail\nPROJECT_DIR=\"/home/vscode/AgentsToolkitProjects/${{var:app_name}}\" ASSERTIONS_B64=\"W3sicGF0aCI6InNyYy9jb25maWcucHkiLCJleGlzdHMiOnRydWUsImNvbnRhaW5zIjpbXSwibm90Q29udGFpbnMiOltdfV0=\" python3 - <<'PY'\nimport base64\nimport json\nimport os\nfrom pathlib import Path\n\nproject = Path(os.environ[\"PROJECT_DIR\"]).resolve()\nassertions = json.loads(base64.b64decode(os.environ[\"ASSERTIONS_B64\"]).decode(\"utf-8\"))\nfor assertion in assertions:\n target = (project / assertion[\"path\"]).resolve()\n try:\n target.relative_to(project)\n except ValueError as error:\n raise AssertionError(\"File assertion escaped the project directory\") from error\n exists = target.is_file()\n if exists != assertion[\"exists\"]:\n raise AssertionError(f\"Unexpected file existence for {assertion['path']}\")\n if not exists:\n continue\n content = target.read_text(encoding=\"utf-8\")\n for expected in assertion.get(\"contains\", []):\n expected = expected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if expected not in content:\n raise AssertionError(f\"Expected content is absent from {assertion['path']}\")\n for unexpected in assertion.get(\"notContains\", []):\n unexpected = unexpected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if unexpected in content:\n raise AssertionError(f\"Unexpected content is present in {assertion['path']}\")\nPY\n```" + }, + "description": "@code verify the authored workspace file existence and content assertions without logging file contents.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_checkWorkspaceFiles_verify_c834b2eb3_2_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:checks", + "assertion:file", + "step_retry_timeout:120" + ] + }, + { + "step_id": "step_checkWorkspaceFiles_verify_c834b2eb3_2_5", + "agent": "code", + "tool": "", + "parameters": { + "sample": "=== Generated Script ===\nLanguage: bash\n\n```bash\nset -euo pipefail\nPROJECT_DIR=\"/home/vscode/AgentsToolkitProjects/${{var:app_name}}\" ASSERTIONS_B64=\"W3sicGF0aCI6InNyYy9yZXF1aXJlbWVudHMudHh0IiwiZXhpc3RzIjp0cnVlLCJjb250YWlucyI6WyJtaWNyb3NvZnQtYWdlbnRzLWhvc3RpbmctYWlvaHR0cCIsIm9wZW5haSJdLCJub3RDb250YWlucyI6W119XQ==\" python3 - <<'PY'\nimport base64\nimport json\nimport os\nfrom pathlib import Path\n\nproject = Path(os.environ[\"PROJECT_DIR\"]).resolve()\nassertions = json.loads(base64.b64decode(os.environ[\"ASSERTIONS_B64\"]).decode(\"utf-8\"))\nfor assertion in assertions:\n target = (project / assertion[\"path\"]).resolve()\n try:\n target.relative_to(project)\n except ValueError as error:\n raise AssertionError(\"File assertion escaped the project directory\") from error\n exists = target.is_file()\n if exists != assertion[\"exists\"]:\n raise AssertionError(f\"Unexpected file existence for {assertion['path']}\")\n if not exists:\n continue\n content = target.read_text(encoding=\"utf-8\")\n for expected in assertion.get(\"contains\", []):\n expected = expected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if expected not in content:\n raise AssertionError(f\"Expected content is absent from {assertion['path']}\")\n for unexpected in assertion.get(\"notContains\", []):\n unexpected = unexpected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if unexpected in content:\n raise AssertionError(f\"Unexpected content is present in {assertion['path']}\")\nPY\n```" + }, + "description": "@code verify the authored workspace file existence and content assertions without logging file contents.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_checkWorkspaceFiles_verify_c834b2eb3_2_4" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:checks", + "assertion:file", + "step_retry_timeout:120" + ] + }, + { + "step_id": "step_checkWorkspaceFiles_verify_c834b2eb3_2_6", + "agent": "code", + "tool": "", + "parameters": { + "sample": "=== Generated Script ===\nLanguage: bash\n\n```bash\nset -euo pipefail\nPROJECT_DIR=\"/home/vscode/AgentsToolkitProjects/${{var:app_name}}\" ASSERTIONS_B64=\"W3sicGF0aCI6ImluZnJhL2F6dXJlLmJpY2VwIiwiZXhpc3RzIjp0cnVlLCJjb250YWlucyI6W10sIm5vdENvbnRhaW5zIjpbXX1d\" python3 - <<'PY'\nimport base64\nimport json\nimport os\nfrom pathlib import Path\n\nproject = Path(os.environ[\"PROJECT_DIR\"]).resolve()\nassertions = json.loads(base64.b64decode(os.environ[\"ASSERTIONS_B64\"]).decode(\"utf-8\"))\nfor assertion in assertions:\n target = (project / assertion[\"path\"]).resolve()\n try:\n target.relative_to(project)\n except ValueError as error:\n raise AssertionError(\"File assertion escaped the project directory\") from error\n exists = target.is_file()\n if exists != assertion[\"exists\"]:\n raise AssertionError(f\"Unexpected file existence for {assertion['path']}\")\n if not exists:\n continue\n content = target.read_text(encoding=\"utf-8\")\n for expected in assertion.get(\"contains\", []):\n expected = expected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if expected not in content:\n raise AssertionError(f\"Expected content is absent from {assertion['path']}\")\n for unexpected in assertion.get(\"notContains\", []):\n unexpected = unexpected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if unexpected in content:\n raise AssertionError(f\"Unexpected content is present in {assertion['path']}\")\nPY\n```" + }, + "description": "@code verify the authored workspace file existence and content assertions without logging file contents.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_checkWorkspaceFiles_verify_c834b2eb3_2_5" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:checks", + "assertion:file", + "step_retry_timeout:120" + ] + }, + { + "step_id": "step_checkWorkspaceFiles_verify_c834b2eb3_2_7", + "agent": "code", + "tool": "", + "parameters": { + "sample": "=== Generated Script ===\nLanguage: bash\n\n```bash\nset -euo pipefail\nPROJECT_DIR=\"/home/vscode/AgentsToolkitProjects/${{var:app_name}}\" ASSERTIONS_B64=\"W3sicGF0aCI6ImFwcFBhY2thZ2UvbWFuaWZlc3QuanNvbiIsImV4aXN0cyI6dHJ1ZSwiY29udGFpbnMiOlsiXCJtYW5pZmVzdFZlcnNpb25cIjogXCIxLjI5XCIiXSwibm90Q29udGFpbnMiOltdfV0=\" python3 - <<'PY'\nimport base64\nimport json\nimport os\nfrom pathlib import Path\n\nproject = Path(os.environ[\"PROJECT_DIR\"]).resolve()\nassertions = json.loads(base64.b64decode(os.environ[\"ASSERTIONS_B64\"]).decode(\"utf-8\"))\nfor assertion in assertions:\n target = (project / assertion[\"path\"]).resolve()\n try:\n target.relative_to(project)\n except ValueError as error:\n raise AssertionError(\"File assertion escaped the project directory\") from error\n exists = target.is_file()\n if exists != assertion[\"exists\"]:\n raise AssertionError(f\"Unexpected file existence for {assertion['path']}\")\n if not exists:\n continue\n content = target.read_text(encoding=\"utf-8\")\n for expected in assertion.get(\"contains\", []):\n expected = expected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if expected not in content:\n raise AssertionError(f\"Expected content is absent from {assertion['path']}\")\n for unexpected in assertion.get(\"notContains\", []):\n unexpected = unexpected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if unexpected in content:\n raise AssertionError(f\"Unexpected content is present in {assertion['path']}\")\nPY\n```" + }, + "description": "@code verify the authored workspace file existence and content assertions without logging file contents.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_checkWorkspaceFiles_verify_c834b2eb3_2_6" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:checks", + "assertion:file", + "step_retry_timeout:120" + ] + }, + { + "step_id": "step_checkWorkspaceFiles_verify_c834b2eb3_2_8", + "agent": "code", + "tool": "", + "parameters": { + "sample": "=== Generated Script ===\nLanguage: bash\n\n```bash\nset -euo pipefail\nPROJECT_DIR=\"/home/vscode/AgentsToolkitProjects/${{var:app_name}}\" ASSERTIONS_B64=\"W3sicGF0aCI6InBhY2thZ2UuanNvbiIsImV4aXN0cyI6ZmFsc2UsImNvbnRhaW5zIjpbXSwibm90Q29udGFpbnMiOltdfV0=\" python3 - <<'PY'\nimport base64\nimport json\nimport os\nfrom pathlib import Path\n\nproject = Path(os.environ[\"PROJECT_DIR\"]).resolve()\nassertions = json.loads(base64.b64decode(os.environ[\"ASSERTIONS_B64\"]).decode(\"utf-8\"))\nfor assertion in assertions:\n target = (project / assertion[\"path\"]).resolve()\n try:\n target.relative_to(project)\n except ValueError as error:\n raise AssertionError(\"File assertion escaped the project directory\") from error\n exists = target.is_file()\n if exists != assertion[\"exists\"]:\n raise AssertionError(f\"Unexpected file existence for {assertion['path']}\")\n if not exists:\n continue\n content = target.read_text(encoding=\"utf-8\")\n for expected in assertion.get(\"contains\", []):\n expected = expected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if expected not in content:\n raise AssertionError(f\"Expected content is absent from {assertion['path']}\")\n for unexpected in assertion.get(\"notContains\", []):\n unexpected = unexpected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if unexpected in content:\n raise AssertionError(f\"Unexpected content is present in {assertion['path']}\")\nPY\n```" + }, + "description": "@code verify the authored workspace file existence and content assertions without logging file contents.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_checkWorkspaceFiles_verify_c834b2eb3_2_7" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:checks", + "assertion:file", + "step_retry_timeout:120" + ] + }, + { + "step_id": "step_executeCommand_open_c834b2eb3_3_1", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "f1" + }, + "description": "Press the F1 key to open the Command Palette in Visual Studio Code.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_checkWorkspaceFiles_verify_c834b2eb3_2_8" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertPalette_c834b2eb3_3_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Visual Studio Code Command Palette is visible with a > character in its input box and is ready to accept a command search.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_open_c834b2eb3_3_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_filter_c834b2eb3_3_1", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Python: Create Environment..." + }, + "description": "Type the resolved command title into the active Command Palette.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertPalette_c834b2eb3_3_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertCommand_c834b2eb3_3_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Command Palette input box reads >Python: Create Environment... and the highlighted command listed under it is titled Python: Create Environment....", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_filter_c834b2eb3_3_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_execute_c834b2eb3_3_1", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to execute the selected Command Palette command.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertCommand_c834b2eb3_3_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_filterOption_filter_c834b2eb3_3_2", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Venv" + }, + "description": "Type the resolved option label into the active option picker.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_execute_c834b2eb3_3_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_filterOption_assertOption_c834b2eb3_3_2", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the option Venv is visible and selectable in the filtered option picker.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_filterOption_filter_c834b2eb3_3_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_filterOption_confirm_c834b2eb3_3_2", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to confirm the filtered option.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_filterOption_assertOption_c834b2eb3_3_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_filterOption_filter_c834b2eb3_3_3", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Python 3.12" + }, + "description": "Type the resolved option label into the active option picker.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_filterOption_confirm_c834b2eb3_3_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_filterOption_assertOption_c834b2eb3_3_3", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the option Python 3.12 is visible and selectable in the filtered option picker.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_filterOption_filter_c834b2eb3_3_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_filterOption_confirm_c834b2eb3_3_3", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to confirm the filtered option.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_filterOption_assertOption_c834b2eb3_3_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_multiSelect_assertQuestion_c834b2eb3_3_4", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the active multi-select prompt titled Select dependencies to install is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_filterOption_confirm_c834b2eb3_3_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:multiSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_multiSelect_assertOptionsLoaded_c834b2eb3_3_4", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the multi-select prompt titled Select dependencies to install has finished loading and lists at least one selectable option.", + "content_refs": [], + "timeout": 120, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_multiSelect_assertQuestion_c834b2eb3_3_4" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:multiSelect", + "step_retry_timeout: 120" + ] + }, + { + "step_id": "step_multiSelect_focusSelectAll_c834b2eb3_3_4", + "agent": "interaction", + "tool": "keyboard_shortcut", + "parameters": { + "keys": "shift+tab" + }, + "description": "Move focus from the multi-select input box to the select-all checkbox of the prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_multiSelect_assertOptionsLoaded_c834b2eb3_3_4" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:multiSelect" + ] + }, + { + "step_id": "step_multiSelect_selectAll_c834b2eb3_3_4", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "space" + }, + "description": "Press Space to check every option of the multi-select prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_multiSelect_focusSelectAll_c834b2eb3_3_4" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:multiSelect" + ] + }, + { + "step_id": "step_multiSelect_restoreFocus_c834b2eb3_3_4", + "agent": "interaction", + "tool": "keyboard_shortcut", + "parameters": { + "keys": "tab" + }, + "description": "Move focus from the select-all checkbox back to the multi-select input box.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_multiSelect_selectAll_c834b2eb3_3_4" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:multiSelect" + ] + }, + { + "step_id": "step_multiSelect_confirm_c834b2eb3_3_4", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to confirm the multi-select prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_multiSelect_restoreFocus_c834b2eb3_3_4" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:multiSelect" + ] + }, + { + "step_id": "step_executeCommand_open_c834b2eb3_3_5", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "f1" + }, + "description": "Press the F1 key to open the Command Palette in Visual Studio Code.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_multiSelect_confirm_c834b2eb3_3_4" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertPalette_c834b2eb3_3_5", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Visual Studio Code Command Palette is visible with a > character in its input box and is ready to accept a command search.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_open_c834b2eb3_3_5" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_filter_c834b2eb3_3_5", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Notifications: Show Notifications" + }, + "description": "Type the resolved command title into the active Command Palette.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertPalette_c834b2eb3_3_5" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertCommand_c834b2eb3_3_5", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Command Palette input box reads >Notifications: Show Notifications and the highlighted command listed under it is titled Notifications: Show Notifications.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_filter_c834b2eb3_3_5" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_execute_c834b2eb3_3_5", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to execute the selected Command Palette command.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertCommand_c834b2eb3_3_5" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_assertNotificationContains_assert_c834b2eb3_3_6", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion a visible Visual Studio Code notification contains The following environment is selected:.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_execute_c834b2eb3_3_5" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:notifications", + "action:assert-contains", + "step_retry_timeout: 300" + ] + }, + { + "step_id": "step_executeCommand_open_c834b2eb3_4_1", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "f1" + }, + "description": "Press the F1 key to open the Command Palette in Visual Studio Code.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_assertNotificationContains_assert_c834b2eb3_3_6" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertPalette_c834b2eb3_4_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Visual Studio Code Command Palette is visible with a > character in its input box and is ready to accept a command search.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_open_c834b2eb3_4_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_filter_c834b2eb3_4_1", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "View: Show Microsoft 365 Agents Toolkit" + }, + "description": "Type the resolved command title into the active Command Palette.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertPalette_c834b2eb3_4_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertCommand_c834b2eb3_4_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Command Palette input box reads >View: Show Microsoft 365 Agents Toolkit and the highlighted command listed under it is titled View: Show Microsoft 365 Agents Toolkit.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_filter_c834b2eb3_4_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_execute_c834b2eb3_4_1", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to execute the selected Command Palette command.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertCommand_c834b2eb3_4_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_signInM365_assertOption_c834b2eb3_4_2", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the ACCOUNTS section of the side bar lists an entry whose label begins with Sign in to Microsoft.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_execute_c834b2eb3_4_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:authentication", + "account:m365", + "entry_state:toolkit-side-bar-visible", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_signInM365_selectOption_c834b2eb3_4_2", + "agent": "interaction", + "tool": "click", + "parameters": { + "button": "left", + "x": 213, + "y": 102 + }, + "description": "Click the entry whose label begins with \"Sign in to Microsoft\" in the ACCOUNTS section of the side bar.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInM365_assertOption_c834b2eb3_4_2" + ], + "preconditions": [ + "dhash:213:102:16:5:9c63d67674d4c718", + "dhash:213:102:96:5:8c512758d92c2cce", + "dhash:213:102:0:10:92c86223a3622421" + ], + "postconditions": [], + "tags": [ + "component:authentication", + "account:m365" + ] + }, + { + "step_id": "step_signInM365_confirmSignIn_c834b2eb3_4_2", + "agent": "interaction", + "tool": "click", + "parameters": { + "button": "left", + "x": 762, + "y": 97 + }, + "description": "Click the \"Sign in\" button within the Microsoft 365 developer sandbox modal.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInM365_selectOption_c834b2eb3_4_2" + ], + "preconditions": [ + "dhash:762:97:16:5:24b1a72ba9aba343", + "dhash:762:97:96:5:0008304b0f344900", + "dhash:762:97:0:10:9c68332223232421" + ], + "postconditions": [], + "tags": [ + "component:authentication", + "account:m365" + ] + }, + { + "step_id": "step_signInM365_focusAccount_c834b2eb3_4_2", + "agent": "interaction", + "tool": "click", + "parameters": { + "button": "left", + "x": 369, + "y": 350 + }, + "description": "Click on the \"Email or phone\" input field in the Microsoft Sign-in form on the login.microsoftonline.com webpage to focus the cursor for credential entry.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInM365_confirmSignIn_c834b2eb3_4_2" + ], + "preconditions": [ + "dhash:369:350:16:5:2113d25252525221", + "dhash:369:350:96:5:0919006d19220812", + "dhash:369:350:0:10:1b88d0d1e5e6dae4" + ], + "postconditions": [], + "tags": [ + "component:authentication", + "account:m365", + "precondition_wait_timeout: 60" + ] + }, + { + "step_id": "step_signInM365_typeAccount_c834b2eb3_4_2", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "${{env:M365_ACCOUNT_NAME}}" + }, + "description": "Enter the resolved Microsoft 365 account name into the email or username input field on the Microsoft Sign in page.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInM365_focusAccount_c834b2eb3_4_2" + ], + "preconditions": [ + "dhash:512:384:0:20:1b28f0d9e7e6dae4" + ], + "postconditions": [], + "tags": [ + "component:authentication", + "account:m365", + "delay: 3" + ] + }, + { + "step_id": "step_signInM365_next_c834b2eb3_4_2", + "agent": "interaction", + "tool": "click", + "parameters": { + "button": "left", + "x": 629, + "y": 484 + }, + "description": "Click the blue \"Next\" button on the Microsoft sign-in page, confirming the entered email address for login.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInM365_typeAccount_c834b2eb3_4_2" + ], + "preconditions": [ + "dhash:629:484:16:5:23248c4b6c24d32c", + "dhash:629:484:96:5:00004eb131860000", + "dhash:629:484:0:10:1b28f0d9e7e6dae4" + ], + "postconditions": [], + "tags": [ + "component:authentication", + "account:m365", + "delay:3" + ] + }, + { + "step_id": "step_signInM365_typePassword_c834b2eb3_4_2", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "${{secret:M365_ACCOUNT_PASSWORD}}" + }, + "description": "Type the resolved Microsoft 365 account password into the Password field on the Microsoft login page.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInM365_next_c834b2eb3_4_2" + ], + "preconditions": [ + "dhash:512:384:0:20:1b08f0d9d1e6e6e4" + ], + "postconditions": [], + "tags": [ + "component:authentication", + "account:m365", + "delay: 3" + ] + }, + { + "step_id": "step_signInM365_submit_c834b2eb3_4_2", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to submit the Microsoft 365 login form from the password entry screen.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInM365_typePassword_c834b2eb3_4_2" + ], + "preconditions": [ + "dhash:512:384:0:20:1b08f0d9d1e6e6e4" + ], + "postconditions": [], + "tags": [ + "component:authentication", + "account:m365", + "delay: 3" + ] + }, + { + "step_id": "step_signInM365_closeBrowser_c834b2eb3_4_2", + "agent": "interaction", + "tool": "click", + "parameters": { + "button": "left", + "x": 1004, + "y": 19 + }, + "description": "Click the \"Close\" button (red cross icon) in the browser tab bar to close the \"M365 Account - Sign In\" page.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInM365_submit_c834b2eb3_4_2" + ], + "preconditions": [ + "dhash:1004:19:16:5:aac833964c9633cc", + "dhash:1004:19:96:5:d2232323c200e6e6", + "dhash:1004:19:0:10:0b01410169414141" + ], + "postconditions": [], + "tags": [ + "component:authentication", + "account:m365", + "delay: 3" + ] + }, + { + "step_id": "step_signInM365_assertReady_c834b2eb3_4_2", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion there's ${{env:M365_ACCOUNT_NAME}} in the \"ACCOUNTS\" section", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInM365_closeBrowser_c834b2eb3_4_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:authentication", + "account:m365", + "readiness:account-visible", + "step_retry_timeout: 180" + ] + }, + { + "step_id": "step_executeCommand_open_c834b2eb3_5_1", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "f1" + }, + "description": "Press the F1 key to open the Command Palette in Visual Studio Code.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInM365_assertReady_c834b2eb3_4_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertPalette_c834b2eb3_5_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Visual Studio Code Command Palette is visible with a > character in its input box and is ready to accept a command search.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_open_c834b2eb3_5_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_filter_c834b2eb3_5_1", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Debug: Select and Start Debugging" + }, + "description": "Type the resolved command title into the active Command Palette.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertPalette_c834b2eb3_5_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertCommand_c834b2eb3_5_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Command Palette input box reads >Debug: Select and Start Debugging and the highlighted command listed under it is titled Debug: Select and Start Debugging.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_filter_c834b2eb3_5_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_execute_c834b2eb3_5_1", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to execute the selected Command Palette command.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertCommand_c834b2eb3_5_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_filterOption_filter_c834b2eb3_5_2", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Debug in Teams (Chrome)" + }, + "description": "Type the resolved option label into the active option picker.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_execute_c834b2eb3_5_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_filterOption_assertOption_c834b2eb3_5_2", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the option Debug in Teams (Chrome) is visible and selectable in the filtered option picker.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_filterOption_filter_c834b2eb3_5_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_filterOption_confirm_c834b2eb3_5_2", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to confirm the filtered option.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_filterOption_assertOption_c834b2eb3_5_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_browserM365PasswordSignIn_assertPassword_c834b2eb3_5_3", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Microsoft sign-in page in Chrome names ${{env:M365_ACCOUNT_NAME}} and asks for that account's password.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_filterOption_confirm_c834b2eb3_5_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:authentication", + "surface:browser", + "step_retry_timeout: 300" + ] + }, + { + "step_id": "step_browserM365PasswordSignIn_focusPassword_c834b2eb3_5_3", + "agent": "interaction", + "tool": "click", + "parameters": { + "button": "left", + "x": 400, + "y": 405 + }, + "description": "Click the password input on the Microsoft sign-in page to move focus out of the browser address bar.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_browserM365PasswordSignIn_assertPassword_c834b2eb3_5_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:authentication", + "surface:browser" + ] + }, + { + "step_id": "step_browserM365PasswordSignIn_enterPassword_c834b2eb3_5_3", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "${{secret:M365_ACCOUNT_PASSWORD}}" + }, + "description": "Enter the registered Microsoft 365 password in the focused password input of the browser sign-in form.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_browserM365PasswordSignIn_focusPassword_c834b2eb3_5_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:authentication", + "surface:browser" + ] + }, + { + "step_id": "step_browserM365PasswordSignIn_submitPassword_c834b2eb3_5_3", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to submit the Microsoft 365 password.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_browserM365PasswordSignIn_enterPassword_c834b2eb3_5_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:authentication", + "surface:browser" + ] + }, + { + "step_id": "step_browserM365PasswordSignIn_assertStaySignedIn_c834b2eb3_5_3", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Microsoft Stay signed in question is visible with Yes focused.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_browserM365PasswordSignIn_submitPassword_c834b2eb3_5_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:authentication", + "surface:browser", + "step_retry_timeout: 120" + ] + }, + { + "step_id": "step_browserM365PasswordSignIn_confirmStaySignedIn_c834b2eb3_5_3", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to confirm staying signed in.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_browserM365PasswordSignIn_assertStaySignedIn_c834b2eb3_5_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:authentication", + "surface:browser", + "delay: 30" + ] + }, + { + "step_id": "step_assertReady_assertReady_c834b2eb3_5_4", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Microsoft Teams app details page for an app whose name starts with ${{var:app_name}} is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_browserM365PasswordSignIn_confirmStaySignedIn_c834b2eb3_5_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:browser", + "action:assert-ready", + "step_retry_timeout: 180" + ] + }, + { + "step_id": "step_addAndOpenApp_assertAdd_c834b2eb3_6_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the blue \"Add\" button exists.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_assertReady_assertReady_c834b2eb3_5_4" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:browser", + "host_surface:teams", + "entry_state:add", + "step_retry_timeout: 180" + ] + }, + { + "step_id": "step_addAndOpenApp_add_c834b2eb3_6_1", + "agent": "interaction", + "tool": "click", + "parameters": { + "button": "left", + "x": 288, + "y": 214 + }, + "description": "Click Add on the app details popup within the Microsoft Teams interface.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_addAndOpenApp_assertAdd_c834b2eb3_6_1" + ], + "preconditions": [ + "dhash:288:214:16:5:05100a0511030b12", + "dhash:288:214:96:5:2616011c1c01005b", + "dhash:288:214:0:10:00b4b0d8f8fcf0d8" + ], + "postconditions": [], + "tags": [ + "component:browser", + "host_surface:teams", + "entry_state:add" + ] + }, + { + "step_id": "step_addAndOpenApp_assertAdded_c834b2eb3_6_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the \"Added successfully!\" dialog and its Open button are visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_addAndOpenApp_add_c834b2eb3_6_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:browser", + "host_surface:teams", + "entry_state:added", + "step_retry_timeout: 180" + ] + }, + { + "step_id": "step_addAndOpenApp_open_c834b2eb3_6_1", + "agent": "interaction", + "tool": "click", + "parameters": { + "button": "left", + "x": 533, + "y": 508 + }, + "description": "Click Open in the Microsoft Teams Added successfully dialog.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_addAndOpenApp_assertAdded_c834b2eb3_6_1" + ], + "preconditions": [ + "dhash:533:508:16:5:00987494ca4acacc", + "dhash:533:508:96:5:000058a48598e36b", + "dhash:533:508:0:10:1669696969696979" + ], + "postconditions": [], + "tags": [ + "component:browser", + "host_surface:teams", + "entry_state:added", + "precondition_wait_timeout: 120" + ] + }, + { + "step_id": "step_addAndOpenApp_assertReady_c834b2eb3_6_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Microsoft Teams app details page for an app whose name starts with ${{var:app_name}} is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_addAndOpenApp_open_c834b2eb3_6_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:browser", + "host_surface:teams", + "readiness:chat-ready", + "step_retry_timeout: 180" + ] + }, + { + "step_id": "step_sendTeamsMessage_assertInput_c834b2eb3_7_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Teams \"Type a message\" input is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_addAndOpenApp_assertReady_c834b2eb3_6_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:browser", + "host_surface:teams", + "entry_state:chat-ready", + "action:send-message", + "step_retry_timeout: 120" + ] + }, + { + "step_id": "step_sendTeamsMessage_focusInput_c834b2eb3_7_1", + "agent": "interaction", + "tool": "click", + "parameters": { + "button": "left", + "x": 200, + "y": 712 + }, + "description": "Click the Teams \"Type a message\" input.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_sendTeamsMessage_assertInput_c834b2eb3_7_1" + ], + "preconditions": [ + "dhash:200:712:16:5:258c421e0d2c2d1c", + "dhash:200:712:96:5:0020887362000200", + "dhash:200:712:0:10:24b4b08e8e8c81a1" + ], + "postconditions": [], + "tags": [ + "component:browser", + "host_surface:teams", + "entry_state:chat-ready", + "action:send-message" + ] + }, + { + "step_id": "step_sendTeamsMessage_type_c834b2eb3_7_1", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "How to develop agent for Teams?" + }, + "description": "Type \"How to develop agent for Teams?\" into the Teams message input.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_sendTeamsMessage_focusInput_c834b2eb3_7_1" + ], + "preconditions": [ + "dhash:512:384:0:20:24b4b08e8e8c80a9" + ], + "postconditions": [], + "tags": [ + "component:browser", + "host_surface:teams", + "entry_state:chat-ready", + "action:send-message" + ] + }, + { + "step_id": "step_sendTeamsMessage_send_c834b2eb3_7_1", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to send the Teams message.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_sendTeamsMessage_type_c834b2eb3_7_1" + ], + "preconditions": [ + "dhash:512:384:0:20:24b4b08e8e8c80b9" + ], + "postconditions": [], + "tags": [ + "component:browser", + "host_surface:teams", + "entry_state:chat-ready", + "action:send-message" + ] + }, + { + "step_id": "step_assertChatReplied_assert_c834b2eb3_7_2", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the current assistant turn is complete and contains a non-empty response.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_sendTeamsMessage_send_c834b2eb3_7_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:browser", + "action:assert-chat-response", + "expectation:replied", + "step_retry_timeout: 120" + ] + } + ], + "screenshots": {} +} diff --git a/packages/tests/vscuse/vscode-test-cases/plans/basic-custom-engine-agent--basic-cea-py-azure-openai-playground.json b/packages/tests/vscuse/vscode-test-cases/plans/basic-custom-engine-agent--basic-cea-py-azure-openai-playground.json new file mode 100644 index 00000000000..50d9bbb2020 --- /dev/null +++ b/packages/tests/vscuse/vscode-test-cases/plans/basic-custom-engine-agent--basic-cea-py-azure-openai-playground.json @@ -0,0 +1,2257 @@ +{ + "plan_metadata": { + "version": "1.1", + "plan_id": "plan_839c3c01a4d3", + "execution_context": { + "delay_between_steps": 1, + "stop_on_error": true, + "precondition_wait_timeout": 30, + "precondition_retry_interval": 1 + }, + "total_steps": 97, + "name": "basic-cea-py-azure-openai-playground", + "description": { + "owner": "", + "workitem": "SCN-CREATE-BASIC-CEA-01", + "other": "" + }, + "execution_order": [ + "step_closeWelcomeOverlay_assertVisible_c3bb6e7ce_1_1", + "step_closeWelcomeOverlay_close_c3bb6e7ce_1_1", + "step_closeWelcomeOverlay_assertReady_c3bb6e7ce_1_1", + "step_executeCommand_open_c3bb6e7ce_1_2", + "step_executeCommand_assertPalette_c3bb6e7ce_1_2", + "step_executeCommand_filter_c3bb6e7ce_1_2", + "step_executeCommand_assertCommand_c3bb6e7ce_1_2", + "step_executeCommand_execute_c3bb6e7ce_1_2", + "step_assertToolkitViewSettled_assert_c3bb6e7ce_1_3", + "step_closeGetStartedEditor_assertActive_c3bb6e7ce_1_4", + "step_closeGetStartedEditor_close_c3bb6e7ce_1_4", + "step_closeGetStartedEditor_assertClosed_c3bb6e7ce_1_4", + "step_executeCommand_open_c3bb6e7ce_1_5", + "step_executeCommand_assertPalette_c3bb6e7ce_1_5", + "step_executeCommand_filter_c3bb6e7ce_1_5", + "step_executeCommand_assertCommand_c3bb6e7ce_1_5", + "step_executeCommand_execute_c3bb6e7ce_1_5", + "step_singleSelect_assertQuestion_c3bb6e7ce_1_6", + "step_singleSelect_assertOptionsLoaded_c3bb6e7ce_1_6", + "step_singleSelect_filter_c3bb6e7ce_1_6", + "step_singleSelect_assertOption_c3bb6e7ce_1_6", + "step_singleSelect_confirm_c3bb6e7ce_1_6", + "step_singleSelect_assertQuestion_c3bb6e7ce_1_7", + "step_singleSelect_assertOptionsLoaded_c3bb6e7ce_1_7", + "step_singleSelect_filter_c3bb6e7ce_1_7", + "step_singleSelect_assertOption_c3bb6e7ce_1_7", + "step_singleSelect_confirm_c3bb6e7ce_1_7", + "step_singleSelect_assertQuestion_c3bb6e7ce_1_8", + "step_singleSelect_assertOptionsLoaded_c3bb6e7ce_1_8", + "step_singleSelect_filter_c3bb6e7ce_1_8", + "step_singleSelect_assertOption_c3bb6e7ce_1_8", + "step_singleSelect_confirm_c3bb6e7ce_1_8", + "step_textInput_assertQuestion_c3bb6e7ce_1_9", + "step_textInput_input_c3bb6e7ce_1_9", + "step_textInput_confirm_c3bb6e7ce_1_9", + "step_textInput_assertQuestion_c3bb6e7ce_1_10", + "step_textInput_input_c3bb6e7ce_1_10", + "step_textInput_confirm_c3bb6e7ce_1_10", + "step_textInput_assertQuestion_c3bb6e7ce_1_11", + "step_textInput_input_c3bb6e7ce_1_11", + "step_textInput_confirm_c3bb6e7ce_1_11", + "step_singleSelect_assertQuestion_c3bb6e7ce_1_12", + "step_singleSelect_assertOptionsLoaded_c3bb6e7ce_1_12", + "step_singleSelect_filter_c3bb6e7ce_1_12", + "step_singleSelect_assertOption_c3bb6e7ce_1_12", + "step_singleSelect_confirm_c3bb6e7ce_1_12", + "step_confirmOption_assertPrompt_c3bb6e7ce_1_13", + "step_confirmOption_confirm_c3bb6e7ce_1_13", + "step_textInput_assertQuestion_c3bb6e7ce_1_14", + "step_textInput_input_c3bb6e7ce_1_14", + "step_textInput_confirm_c3bb6e7ce_1_14", + "step_assertProjectWindowReady_assert_c3bb6e7ce_1_15", + "step_checkWorkspaceFiles_verify_c3bb6e7ce_2_1", + "step_checkWorkspaceFiles_verify_c3bb6e7ce_2_2", + "step_checkWorkspaceFiles_verify_c3bb6e7ce_2_3", + "step_checkWorkspaceFiles_verify_c3bb6e7ce_2_4", + "step_checkWorkspaceFiles_verify_c3bb6e7ce_2_5", + "step_checkWorkspaceFiles_verify_c3bb6e7ce_2_6", + "step_checkWorkspaceFiles_verify_c3bb6e7ce_2_7", + "step_checkWorkspaceFiles_verify_c3bb6e7ce_2_8", + "step_executeCommand_open_c3bb6e7ce_3_1", + "step_executeCommand_assertPalette_c3bb6e7ce_3_1", + "step_executeCommand_filter_c3bb6e7ce_3_1", + "step_executeCommand_assertCommand_c3bb6e7ce_3_1", + "step_executeCommand_execute_c3bb6e7ce_3_1", + "step_filterOption_filter_c3bb6e7ce_3_2", + "step_filterOption_assertOption_c3bb6e7ce_3_2", + "step_filterOption_confirm_c3bb6e7ce_3_2", + "step_filterOption_filter_c3bb6e7ce_3_3", + "step_filterOption_assertOption_c3bb6e7ce_3_3", + "step_filterOption_confirm_c3bb6e7ce_3_3", + "step_multiSelect_assertQuestion_c3bb6e7ce_3_4", + "step_multiSelect_assertOptionsLoaded_c3bb6e7ce_3_4", + "step_multiSelect_focusSelectAll_c3bb6e7ce_3_4", + "step_multiSelect_selectAll_c3bb6e7ce_3_4", + "step_multiSelect_restoreFocus_c3bb6e7ce_3_4", + "step_multiSelect_confirm_c3bb6e7ce_3_4", + "step_executeCommand_open_c3bb6e7ce_3_5", + "step_executeCommand_assertPalette_c3bb6e7ce_3_5", + "step_executeCommand_filter_c3bb6e7ce_3_5", + "step_executeCommand_assertCommand_c3bb6e7ce_3_5", + "step_executeCommand_execute_c3bb6e7ce_3_5", + "step_assertNotificationContains_assert_c3bb6e7ce_3_6", + "step_executeCommand_open_c3bb6e7ce_4_1", + "step_executeCommand_assertPalette_c3bb6e7ce_4_1", + "step_executeCommand_filter_c3bb6e7ce_4_1", + "step_executeCommand_assertCommand_c3bb6e7ce_4_1", + "step_executeCommand_execute_c3bb6e7ce_4_1", + "step_filterOption_filter_c3bb6e7ce_4_2", + "step_filterOption_assertOption_c3bb6e7ce_4_2", + "step_filterOption_confirm_c3bb6e7ce_4_2", + "step_assertReady_assertReady_c3bb6e7ce_4_3", + "step_sendPlaygroundMessage_assertInput_c3bb6e7ce_6_1", + "step_sendPlaygroundMessage_focusInput_c3bb6e7ce_6_1", + "step_sendPlaygroundMessage_type_c3bb6e7ce_6_1", + "step_sendPlaygroundMessage_send_c3bb6e7ce_6_1", + "step_assertChatReplied_assert_c3bb6e7ce_6_2" + ], + "tags": [ + "case_id:basic-cea-py-azure-openai-playground", + "scenario_id:SCN-CREATE-BASIC-CEA-01", + "template_id:basic-custom-engine-agent", + "gate:pr" + ] + }, + "steps": [ + { + "step_id": "step_closeWelcomeOverlay_assertVisible_c3bb6e7ce_1_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the startup \"Welcome to VS Code\" sign-in overlay is visible and its Close button is available.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:initialization", + "initialization:closeWelcomeOverlay", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_closeWelcomeOverlay_close_c3bb6e7ce_1_1", + "agent": "interaction", + "tool": "click", + "parameters": { + "button": "left", + "x": 952, + "y": 128 + }, + "description": "Click the Close button on the startup Welcome sign-in overlay.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_closeWelcomeOverlay_assertVisible_c3bb6e7ce_1_1" + ], + "preconditions": [ + "dhash:952:128:16:5:255266345964665b", + "dhash:952:128:96:5:16100c10100c1404", + "dhash:952:128:0:10:2592eae0f08e8621" + ], + "postconditions": [], + "tags": [ + "component:initialization", + "initialization:closeWelcomeOverlay", + "force_run:true" + ] + }, + { + "step_id": "step_closeWelcomeOverlay_assertReady_c3bb6e7ce_1_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the startup sign-in overlay is no longer visible and the VS Code workbench is ready.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_closeWelcomeOverlay_close_c3bb6e7ce_1_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:initialization", + "initialization:closeWelcomeOverlay", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_open_c3bb6e7ce_1_2", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "f1" + }, + "description": "Press the F1 key to open the Command Palette in Visual Studio Code.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_closeWelcomeOverlay_assertReady_c3bb6e7ce_1_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertPalette_c3bb6e7ce_1_2", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Visual Studio Code Command Palette is visible with a > character in its input box and is ready to accept a command search.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_open_c3bb6e7ce_1_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_filter_c3bb6e7ce_1_2", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Microsoft 365 Agents Toolkit: Focus on Microsoft 365 Agents Toolkit View" + }, + "description": "Type the resolved command title into the active Command Palette.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertPalette_c3bb6e7ce_1_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertCommand_c3bb6e7ce_1_2", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Command Palette input box reads >Microsoft 365 Agents Toolkit: Focus on Microsoft 365 Agents Toolkit View and the highlighted command listed under it is titled Microsoft 365 Agents Toolkit: Focus on Microsoft 365 Agents Toolkit View.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_filter_c3bb6e7ce_1_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_execute_c3bb6e7ce_1_2", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to execute the selected Command Palette command.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertCommand_c3bb6e7ce_1_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_assertToolkitViewSettled_assert_c3bb6e7ce_1_3", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Microsoft 365 Agents Toolkit view is open in the side bar and an editor tab labeled Welcome showing the Build a Declarative Agent walkthrough is open in the editor area.", + "content_refs": [], + "timeout": 120, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_execute_c3bb6e7ce_1_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:initialization", + "initialization:assertToolkitViewSettled", + "step_retry_timeout: 120" + ] + }, + { + "step_id": "step_closeGetStartedEditor_assertActive_c3bb6e7ce_1_4", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the editor tab labeled Welcome showing the Build a Declarative Agent walkthrough is the active editor tab in the Visual Studio Code editor area.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_assertToolkitViewSettled_assert_c3bb6e7ce_1_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:initialization", + "initialization:closeGetStartedEditor", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_closeGetStartedEditor_close_c3bb6e7ce_1_4", + "agent": "interaction", + "tool": "keyboard_shortcut", + "parameters": { + "keys": "ctrl+w" + }, + "description": "Press Ctrl+W to close the Welcome editor tab.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_closeGetStartedEditor_assertActive_c3bb6e7ce_1_4" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:initialization", + "initialization:closeGetStartedEditor" + ] + }, + { + "step_id": "step_closeGetStartedEditor_assertClosed_c3bb6e7ce_1_4", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion no editor tab is open in the Visual Studio Code editor area.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_closeGetStartedEditor_close_c3bb6e7ce_1_4" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:initialization", + "initialization:closeGetStartedEditor", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_open_c3bb6e7ce_1_5", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "f1" + }, + "description": "Press the F1 key to open the Command Palette in Visual Studio Code.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_closeGetStartedEditor_assertClosed_c3bb6e7ce_1_4" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertPalette_c3bb6e7ce_1_5", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Visual Studio Code Command Palette is visible with a > character in its input box and is ready to accept a command search.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_open_c3bb6e7ce_1_5" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_filter_c3bb6e7ce_1_5", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Microsoft 365 Agents: Create New Agent/App" + }, + "description": "Type the resolved command title into the active Command Palette.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertPalette_c3bb6e7ce_1_5" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertCommand_c3bb6e7ce_1_5", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Command Palette input box reads >Microsoft 365 Agents: Create New Agent/App and the highlighted command listed under it is titled Microsoft 365 Agents: Create New Agent/App.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_filter_c3bb6e7ce_1_5" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_execute_c3bb6e7ce_1_5", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to execute the selected Command Palette command.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertCommand_c3bb6e7ce_1_5" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_singleSelect_assertQuestion_c3bb6e7ce_1_6", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the active prompt titled New Project is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_execute_c3bb6e7ce_1_5" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_singleSelect_assertOptionsLoaded_c3bb6e7ce_1_6", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the prompt titled New Project has finished loading and lists at least one selectable option.", + "content_refs": [], + "timeout": 120, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertQuestion_c3bb6e7ce_1_6" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 120" + ] + }, + { + "step_id": "step_singleSelect_filter_c3bb6e7ce_1_6", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Custom Engine Agent" + }, + "description": "Type the resolved option label Custom Engine Agent into the active single-select prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertOptionsLoaded_c3bb6e7ce_1_6" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_singleSelect_assertOption_c3bb6e7ce_1_6", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the option Custom Engine Agent is visible and selectable in the filtered single-select prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_filter_c3bb6e7ce_1_6" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_singleSelect_confirm_c3bb6e7ce_1_6", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to confirm the filtered single-select option.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertOption_c3bb6e7ce_1_6" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_singleSelect_assertQuestion_c3bb6e7ce_1_7", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the active prompt titled App Features Using Microsoft 365 Agents SDK is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_confirm_c3bb6e7ce_1_6" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_singleSelect_assertOptionsLoaded_c3bb6e7ce_1_7", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the prompt titled App Features Using Microsoft 365 Agents SDK has finished loading and lists at least one selectable option.", + "content_refs": [], + "timeout": 120, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertQuestion_c3bb6e7ce_1_7" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 120" + ] + }, + { + "step_id": "step_singleSelect_filter_c3bb6e7ce_1_7", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Basic Custom Engine Agent" + }, + "description": "Type the resolved option label Basic Custom Engine Agent into the active single-select prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertOptionsLoaded_c3bb6e7ce_1_7" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_singleSelect_assertOption_c3bb6e7ce_1_7", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the option Basic Custom Engine Agent is visible and selectable in the filtered single-select prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_filter_c3bb6e7ce_1_7" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_singleSelect_confirm_c3bb6e7ce_1_7", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to confirm the filtered single-select option.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertOption_c3bb6e7ce_1_7" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_singleSelect_assertQuestion_c3bb6e7ce_1_8", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the active prompt titled Service for Large Language Model (LLM) is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_confirm_c3bb6e7ce_1_7" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_singleSelect_assertOptionsLoaded_c3bb6e7ce_1_8", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the prompt titled Service for Large Language Model (LLM) has finished loading and lists at least one selectable option.", + "content_refs": [], + "timeout": 120, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertQuestion_c3bb6e7ce_1_8" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 120" + ] + }, + { + "step_id": "step_singleSelect_filter_c3bb6e7ce_1_8", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Azure OpenAI" + }, + "description": "Type the resolved option label Azure OpenAI into the active single-select prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertOptionsLoaded_c3bb6e7ce_1_8" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_singleSelect_assertOption_c3bb6e7ce_1_8", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the option Azure OpenAI is visible and selectable in the filtered single-select prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_filter_c3bb6e7ce_1_8" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_singleSelect_confirm_c3bb6e7ce_1_8", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to confirm the filtered single-select option.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertOption_c3bb6e7ce_1_8" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_textInput_assertQuestion_c3bb6e7ce_1_9", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the active prompt titled Azure OpenAI Key is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_confirm_c3bb6e7ce_1_8" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_textInput_input_c3bb6e7ce_1_9", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "${{secret:AZURE_OPENAI_API_KEY}}" + }, + "description": "Type the authored value into the active text prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_assertQuestion_c3bb6e7ce_1_9" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text" + ] + }, + { + "step_id": "step_textInput_confirm_c3bb6e7ce_1_9", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to submit the accepted text input.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_input_c3bb6e7ce_1_9" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text" + ] + }, + { + "step_id": "step_textInput_assertQuestion_c3bb6e7ce_1_10", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the active prompt titled Azure OpenAI Endpoint is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_confirm_c3bb6e7ce_1_9" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_textInput_input_c3bb6e7ce_1_10", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "${{env:AZURE_OPENAI_ENDPOINT}}" + }, + "description": "Type the authored value into the active text prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_assertQuestion_c3bb6e7ce_1_10" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text" + ] + }, + { + "step_id": "step_textInput_confirm_c3bb6e7ce_1_10", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to submit the accepted text input.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_input_c3bb6e7ce_1_10" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text" + ] + }, + { + "step_id": "step_textInput_assertQuestion_c3bb6e7ce_1_11", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the active prompt titled Azure OpenAI Deployment Name is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_confirm_c3bb6e7ce_1_10" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_textInput_input_c3bb6e7ce_1_11", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "${{env:AZURE_OPENAI_MODEL}}" + }, + "description": "Type the authored value into the active text prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_assertQuestion_c3bb6e7ce_1_11" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text" + ] + }, + { + "step_id": "step_textInput_confirm_c3bb6e7ce_1_11", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to submit the accepted text input.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_input_c3bb6e7ce_1_11" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text" + ] + }, + { + "step_id": "step_singleSelect_assertQuestion_c3bb6e7ce_1_12", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the active prompt titled Programming Language is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_confirm_c3bb6e7ce_1_11" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_singleSelect_assertOptionsLoaded_c3bb6e7ce_1_12", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the prompt titled Programming Language has finished loading and lists at least one selectable option.", + "content_refs": [], + "timeout": 120, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertQuestion_c3bb6e7ce_1_12" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 120" + ] + }, + { + "step_id": "step_singleSelect_filter_c3bb6e7ce_1_12", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Python" + }, + "description": "Type the resolved option label Python into the active single-select prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertOptionsLoaded_c3bb6e7ce_1_12" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_singleSelect_assertOption_c3bb6e7ce_1_12", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the option Python is visible and selectable in the filtered single-select prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_filter_c3bb6e7ce_1_12" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_singleSelect_confirm_c3bb6e7ce_1_12", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to confirm the filtered single-select option.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertOption_c3bb6e7ce_1_12" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_confirmOption_assertPrompt_c3bb6e7ce_1_13", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the active prompt titled Workspace Folder is visible and the option Default folder is focused.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_confirm_c3bb6e7ce_1_12" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "interaction:key-press", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_confirmOption_confirm_c3bb6e7ce_1_13", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to confirm the Default folder option.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_confirmOption_assertPrompt_c3bb6e7ce_1_13" + ], + "preconditions": [ + "dhash:364:74:16:5:08056a9a5d5516b6", + "dhash:364:74:96:5:44232286e2168e01", + "dhash:364:74:0:10:f0b09494b2717075" + ], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "interaction:key-press" + ] + }, + { + "step_id": "step_textInput_assertQuestion_c3bb6e7ce_1_14", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the active prompt titled Application Name is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_confirmOption_confirm_c3bb6e7ce_1_13" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_textInput_input_c3bb6e7ce_1_14", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "${{var:app_name:vscuse_app_#####}}" + }, + "description": "Type the authored value into the active text prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_assertQuestion_c3bb6e7ce_1_14" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text" + ] + }, + { + "step_id": "step_textInput_confirm_c3bb6e7ce_1_14", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to submit the accepted text input.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_input_c3bb6e7ce_1_14" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text" + ] + }, + { + "step_id": "step_assertProjectWindowReady_assert_c3bb6e7ce_1_15", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Preview README.md editor tab is open in Visual Studio Code.", + "content_refs": [], + "timeout": 60, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_confirm_c3bb6e7ce_1_14" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:initialization", + "initialization:assertProjectWindowReady", + "step_retry_timeout: 60" + ] + }, + { + "step_id": "step_checkWorkspaceFiles_verify_c3bb6e7ce_2_1", + "agent": "code", + "tool": "", + "parameters": { + "sample": "=== Generated Script ===\nLanguage: bash\n\n```bash\nset -euo pipefail\nPROJECT_DIR=\"/home/vscode/AgentsToolkitProjects/${{var:app_name}}\" ASSERTIONS_B64=\"W3sicGF0aCI6Im0zNjVhZ2VudHMueW1sIiwiZXhpc3RzIjp0cnVlLCJjb250YWlucyI6WyJwcm92aXNpb246IiwiZGVwbG95OiJdLCJub3RDb250YWlucyI6W119XQ==\" python3 - <<'PY'\nimport base64\nimport json\nimport os\nfrom pathlib import Path\n\nproject = Path(os.environ[\"PROJECT_DIR\"]).resolve()\nassertions = json.loads(base64.b64decode(os.environ[\"ASSERTIONS_B64\"]).decode(\"utf-8\"))\nfor assertion in assertions:\n target = (project / assertion[\"path\"]).resolve()\n try:\n target.relative_to(project)\n except ValueError as error:\n raise AssertionError(\"File assertion escaped the project directory\") from error\n exists = target.is_file()\n if exists != assertion[\"exists\"]:\n raise AssertionError(f\"Unexpected file existence for {assertion['path']}\")\n if not exists:\n continue\n content = target.read_text(encoding=\"utf-8\")\n for expected in assertion.get(\"contains\", []):\n expected = expected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if expected not in content:\n raise AssertionError(f\"Expected content is absent from {assertion['path']}\")\n for unexpected in assertion.get(\"notContains\", []):\n unexpected = unexpected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if unexpected in content:\n raise AssertionError(f\"Unexpected content is present in {assertion['path']}\")\nPY\n```" + }, + "description": "@code verify the authored workspace file existence and content assertions without logging file contents.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_assertProjectWindowReady_assert_c3bb6e7ce_1_15" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:checks", + "assertion:file", + "step_retry_timeout:120" + ] + }, + { + "step_id": "step_checkWorkspaceFiles_verify_c3bb6e7ce_2_2", + "agent": "code", + "tool": "", + "parameters": { + "sample": "=== Generated Script ===\nLanguage: bash\n\n```bash\nset -euo pipefail\nPROJECT_DIR=\"/home/vscode/AgentsToolkitProjects/${{var:app_name}}\" ASSERTIONS_B64=\"W3sicGF0aCI6InNyYy9hcHAucHkiLCJleGlzdHMiOnRydWUsImNvbnRhaW5zIjpbXSwibm90Q29udGFpbnMiOltdfV0=\" python3 - <<'PY'\nimport base64\nimport json\nimport os\nfrom pathlib import Path\n\nproject = Path(os.environ[\"PROJECT_DIR\"]).resolve()\nassertions = json.loads(base64.b64decode(os.environ[\"ASSERTIONS_B64\"]).decode(\"utf-8\"))\nfor assertion in assertions:\n target = (project / assertion[\"path\"]).resolve()\n try:\n target.relative_to(project)\n except ValueError as error:\n raise AssertionError(\"File assertion escaped the project directory\") from error\n exists = target.is_file()\n if exists != assertion[\"exists\"]:\n raise AssertionError(f\"Unexpected file existence for {assertion['path']}\")\n if not exists:\n continue\n content = target.read_text(encoding=\"utf-8\")\n for expected in assertion.get(\"contains\", []):\n expected = expected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if expected not in content:\n raise AssertionError(f\"Expected content is absent from {assertion['path']}\")\n for unexpected in assertion.get(\"notContains\", []):\n unexpected = unexpected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if unexpected in content:\n raise AssertionError(f\"Unexpected content is present in {assertion['path']}\")\nPY\n```" + }, + "description": "@code verify the authored workspace file existence and content assertions without logging file contents.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_checkWorkspaceFiles_verify_c3bb6e7ce_2_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:checks", + "assertion:file", + "step_retry_timeout:120" + ] + }, + { + "step_id": "step_checkWorkspaceFiles_verify_c3bb6e7ce_2_3", + "agent": "code", + "tool": "", + "parameters": { + "sample": "=== Generated Script ===\nLanguage: bash\n\n```bash\nset -euo pipefail\nPROJECT_DIR=\"/home/vscode/AgentsToolkitProjects/${{var:app_name}}\" ASSERTIONS_B64=\"W3sicGF0aCI6InNyYy9hZ2VudC5weSIsImV4aXN0cyI6dHJ1ZSwiY29udGFpbnMiOltdLCJub3RDb250YWlucyI6W119XQ==\" python3 - <<'PY'\nimport base64\nimport json\nimport os\nfrom pathlib import Path\n\nproject = Path(os.environ[\"PROJECT_DIR\"]).resolve()\nassertions = json.loads(base64.b64decode(os.environ[\"ASSERTIONS_B64\"]).decode(\"utf-8\"))\nfor assertion in assertions:\n target = (project / assertion[\"path\"]).resolve()\n try:\n target.relative_to(project)\n except ValueError as error:\n raise AssertionError(\"File assertion escaped the project directory\") from error\n exists = target.is_file()\n if exists != assertion[\"exists\"]:\n raise AssertionError(f\"Unexpected file existence for {assertion['path']}\")\n if not exists:\n continue\n content = target.read_text(encoding=\"utf-8\")\n for expected in assertion.get(\"contains\", []):\n expected = expected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if expected not in content:\n raise AssertionError(f\"Expected content is absent from {assertion['path']}\")\n for unexpected in assertion.get(\"notContains\", []):\n unexpected = unexpected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if unexpected in content:\n raise AssertionError(f\"Unexpected content is present in {assertion['path']}\")\nPY\n```" + }, + "description": "@code verify the authored workspace file existence and content assertions without logging file contents.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_checkWorkspaceFiles_verify_c3bb6e7ce_2_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:checks", + "assertion:file", + "step_retry_timeout:120" + ] + }, + { + "step_id": "step_checkWorkspaceFiles_verify_c3bb6e7ce_2_4", + "agent": "code", + "tool": "", + "parameters": { + "sample": "=== Generated Script ===\nLanguage: bash\n\n```bash\nset -euo pipefail\nPROJECT_DIR=\"/home/vscode/AgentsToolkitProjects/${{var:app_name}}\" ASSERTIONS_B64=\"W3sicGF0aCI6InNyYy9jb25maWcucHkiLCJleGlzdHMiOnRydWUsImNvbnRhaW5zIjpbXSwibm90Q29udGFpbnMiOltdfV0=\" python3 - <<'PY'\nimport base64\nimport json\nimport os\nfrom pathlib import Path\n\nproject = Path(os.environ[\"PROJECT_DIR\"]).resolve()\nassertions = json.loads(base64.b64decode(os.environ[\"ASSERTIONS_B64\"]).decode(\"utf-8\"))\nfor assertion in assertions:\n target = (project / assertion[\"path\"]).resolve()\n try:\n target.relative_to(project)\n except ValueError as error:\n raise AssertionError(\"File assertion escaped the project directory\") from error\n exists = target.is_file()\n if exists != assertion[\"exists\"]:\n raise AssertionError(f\"Unexpected file existence for {assertion['path']}\")\n if not exists:\n continue\n content = target.read_text(encoding=\"utf-8\")\n for expected in assertion.get(\"contains\", []):\n expected = expected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if expected not in content:\n raise AssertionError(f\"Expected content is absent from {assertion['path']}\")\n for unexpected in assertion.get(\"notContains\", []):\n unexpected = unexpected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if unexpected in content:\n raise AssertionError(f\"Unexpected content is present in {assertion['path']}\")\nPY\n```" + }, + "description": "@code verify the authored workspace file existence and content assertions without logging file contents.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_checkWorkspaceFiles_verify_c3bb6e7ce_2_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:checks", + "assertion:file", + "step_retry_timeout:120" + ] + }, + { + "step_id": "step_checkWorkspaceFiles_verify_c3bb6e7ce_2_5", + "agent": "code", + "tool": "", + "parameters": { + "sample": "=== Generated Script ===\nLanguage: bash\n\n```bash\nset -euo pipefail\nPROJECT_DIR=\"/home/vscode/AgentsToolkitProjects/${{var:app_name}}\" ASSERTIONS_B64=\"W3sicGF0aCI6InNyYy9yZXF1aXJlbWVudHMudHh0IiwiZXhpc3RzIjp0cnVlLCJjb250YWlucyI6WyJtaWNyb3NvZnQtYWdlbnRzLWhvc3RpbmctYWlvaHR0cCIsIm9wZW5haSJdLCJub3RDb250YWlucyI6W119XQ==\" python3 - <<'PY'\nimport base64\nimport json\nimport os\nfrom pathlib import Path\n\nproject = Path(os.environ[\"PROJECT_DIR\"]).resolve()\nassertions = json.loads(base64.b64decode(os.environ[\"ASSERTIONS_B64\"]).decode(\"utf-8\"))\nfor assertion in assertions:\n target = (project / assertion[\"path\"]).resolve()\n try:\n target.relative_to(project)\n except ValueError as error:\n raise AssertionError(\"File assertion escaped the project directory\") from error\n exists = target.is_file()\n if exists != assertion[\"exists\"]:\n raise AssertionError(f\"Unexpected file existence for {assertion['path']}\")\n if not exists:\n continue\n content = target.read_text(encoding=\"utf-8\")\n for expected in assertion.get(\"contains\", []):\n expected = expected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if expected not in content:\n raise AssertionError(f\"Expected content is absent from {assertion['path']}\")\n for unexpected in assertion.get(\"notContains\", []):\n unexpected = unexpected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if unexpected in content:\n raise AssertionError(f\"Unexpected content is present in {assertion['path']}\")\nPY\n```" + }, + "description": "@code verify the authored workspace file existence and content assertions without logging file contents.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_checkWorkspaceFiles_verify_c3bb6e7ce_2_4" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:checks", + "assertion:file", + "step_retry_timeout:120" + ] + }, + { + "step_id": "step_checkWorkspaceFiles_verify_c3bb6e7ce_2_6", + "agent": "code", + "tool": "", + "parameters": { + "sample": "=== Generated Script ===\nLanguage: bash\n\n```bash\nset -euo pipefail\nPROJECT_DIR=\"/home/vscode/AgentsToolkitProjects/${{var:app_name}}\" ASSERTIONS_B64=\"W3sicGF0aCI6ImluZnJhL2F6dXJlLmJpY2VwIiwiZXhpc3RzIjp0cnVlLCJjb250YWlucyI6W10sIm5vdENvbnRhaW5zIjpbXX1d\" python3 - <<'PY'\nimport base64\nimport json\nimport os\nfrom pathlib import Path\n\nproject = Path(os.environ[\"PROJECT_DIR\"]).resolve()\nassertions = json.loads(base64.b64decode(os.environ[\"ASSERTIONS_B64\"]).decode(\"utf-8\"))\nfor assertion in assertions:\n target = (project / assertion[\"path\"]).resolve()\n try:\n target.relative_to(project)\n except ValueError as error:\n raise AssertionError(\"File assertion escaped the project directory\") from error\n exists = target.is_file()\n if exists != assertion[\"exists\"]:\n raise AssertionError(f\"Unexpected file existence for {assertion['path']}\")\n if not exists:\n continue\n content = target.read_text(encoding=\"utf-8\")\n for expected in assertion.get(\"contains\", []):\n expected = expected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if expected not in content:\n raise AssertionError(f\"Expected content is absent from {assertion['path']}\")\n for unexpected in assertion.get(\"notContains\", []):\n unexpected = unexpected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if unexpected in content:\n raise AssertionError(f\"Unexpected content is present in {assertion['path']}\")\nPY\n```" + }, + "description": "@code verify the authored workspace file existence and content assertions without logging file contents.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_checkWorkspaceFiles_verify_c3bb6e7ce_2_5" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:checks", + "assertion:file", + "step_retry_timeout:120" + ] + }, + { + "step_id": "step_checkWorkspaceFiles_verify_c3bb6e7ce_2_7", + "agent": "code", + "tool": "", + "parameters": { + "sample": "=== Generated Script ===\nLanguage: bash\n\n```bash\nset -euo pipefail\nPROJECT_DIR=\"/home/vscode/AgentsToolkitProjects/${{var:app_name}}\" ASSERTIONS_B64=\"W3sicGF0aCI6ImFwcFBhY2thZ2UvbWFuaWZlc3QuanNvbiIsImV4aXN0cyI6dHJ1ZSwiY29udGFpbnMiOlsiXCJtYW5pZmVzdFZlcnNpb25cIjogXCIxLjI5XCIiXSwibm90Q29udGFpbnMiOltdfV0=\" python3 - <<'PY'\nimport base64\nimport json\nimport os\nfrom pathlib import Path\n\nproject = Path(os.environ[\"PROJECT_DIR\"]).resolve()\nassertions = json.loads(base64.b64decode(os.environ[\"ASSERTIONS_B64\"]).decode(\"utf-8\"))\nfor assertion in assertions:\n target = (project / assertion[\"path\"]).resolve()\n try:\n target.relative_to(project)\n except ValueError as error:\n raise AssertionError(\"File assertion escaped the project directory\") from error\n exists = target.is_file()\n if exists != assertion[\"exists\"]:\n raise AssertionError(f\"Unexpected file existence for {assertion['path']}\")\n if not exists:\n continue\n content = target.read_text(encoding=\"utf-8\")\n for expected in assertion.get(\"contains\", []):\n expected = expected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if expected not in content:\n raise AssertionError(f\"Expected content is absent from {assertion['path']}\")\n for unexpected in assertion.get(\"notContains\", []):\n unexpected = unexpected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if unexpected in content:\n raise AssertionError(f\"Unexpected content is present in {assertion['path']}\")\nPY\n```" + }, + "description": "@code verify the authored workspace file existence and content assertions without logging file contents.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_checkWorkspaceFiles_verify_c3bb6e7ce_2_6" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:checks", + "assertion:file", + "step_retry_timeout:120" + ] + }, + { + "step_id": "step_checkWorkspaceFiles_verify_c3bb6e7ce_2_8", + "agent": "code", + "tool": "", + "parameters": { + "sample": "=== Generated Script ===\nLanguage: bash\n\n```bash\nset -euo pipefail\nPROJECT_DIR=\"/home/vscode/AgentsToolkitProjects/${{var:app_name}}\" ASSERTIONS_B64=\"W3sicGF0aCI6InBhY2thZ2UuanNvbiIsImV4aXN0cyI6ZmFsc2UsImNvbnRhaW5zIjpbXSwibm90Q29udGFpbnMiOltdfV0=\" python3 - <<'PY'\nimport base64\nimport json\nimport os\nfrom pathlib import Path\n\nproject = Path(os.environ[\"PROJECT_DIR\"]).resolve()\nassertions = json.loads(base64.b64decode(os.environ[\"ASSERTIONS_B64\"]).decode(\"utf-8\"))\nfor assertion in assertions:\n target = (project / assertion[\"path\"]).resolve()\n try:\n target.relative_to(project)\n except ValueError as error:\n raise AssertionError(\"File assertion escaped the project directory\") from error\n exists = target.is_file()\n if exists != assertion[\"exists\"]:\n raise AssertionError(f\"Unexpected file existence for {assertion['path']}\")\n if not exists:\n continue\n content = target.read_text(encoding=\"utf-8\")\n for expected in assertion.get(\"contains\", []):\n expected = expected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if expected not in content:\n raise AssertionError(f\"Expected content is absent from {assertion['path']}\")\n for unexpected in assertion.get(\"notContains\", []):\n unexpected = unexpected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if unexpected in content:\n raise AssertionError(f\"Unexpected content is present in {assertion['path']}\")\nPY\n```" + }, + "description": "@code verify the authored workspace file existence and content assertions without logging file contents.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_checkWorkspaceFiles_verify_c3bb6e7ce_2_7" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:checks", + "assertion:file", + "step_retry_timeout:120" + ] + }, + { + "step_id": "step_executeCommand_open_c3bb6e7ce_3_1", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "f1" + }, + "description": "Press the F1 key to open the Command Palette in Visual Studio Code.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_checkWorkspaceFiles_verify_c3bb6e7ce_2_8" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertPalette_c3bb6e7ce_3_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Visual Studio Code Command Palette is visible with a > character in its input box and is ready to accept a command search.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_open_c3bb6e7ce_3_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_filter_c3bb6e7ce_3_1", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Python: Create Environment..." + }, + "description": "Type the resolved command title into the active Command Palette.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertPalette_c3bb6e7ce_3_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertCommand_c3bb6e7ce_3_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Command Palette input box reads >Python: Create Environment... and the highlighted command listed under it is titled Python: Create Environment....", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_filter_c3bb6e7ce_3_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_execute_c3bb6e7ce_3_1", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to execute the selected Command Palette command.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertCommand_c3bb6e7ce_3_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_filterOption_filter_c3bb6e7ce_3_2", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Venv" + }, + "description": "Type the resolved option label into the active option picker.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_execute_c3bb6e7ce_3_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_filterOption_assertOption_c3bb6e7ce_3_2", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the option Venv is visible and selectable in the filtered option picker.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_filterOption_filter_c3bb6e7ce_3_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_filterOption_confirm_c3bb6e7ce_3_2", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to confirm the filtered option.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_filterOption_assertOption_c3bb6e7ce_3_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_filterOption_filter_c3bb6e7ce_3_3", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Python 3.12" + }, + "description": "Type the resolved option label into the active option picker.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_filterOption_confirm_c3bb6e7ce_3_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_filterOption_assertOption_c3bb6e7ce_3_3", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the option Python 3.12 is visible and selectable in the filtered option picker.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_filterOption_filter_c3bb6e7ce_3_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_filterOption_confirm_c3bb6e7ce_3_3", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to confirm the filtered option.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_filterOption_assertOption_c3bb6e7ce_3_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_multiSelect_assertQuestion_c3bb6e7ce_3_4", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the active multi-select prompt titled Select dependencies to install is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_filterOption_confirm_c3bb6e7ce_3_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:multiSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_multiSelect_assertOptionsLoaded_c3bb6e7ce_3_4", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the multi-select prompt titled Select dependencies to install has finished loading and lists at least one selectable option.", + "content_refs": [], + "timeout": 120, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_multiSelect_assertQuestion_c3bb6e7ce_3_4" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:multiSelect", + "step_retry_timeout: 120" + ] + }, + { + "step_id": "step_multiSelect_focusSelectAll_c3bb6e7ce_3_4", + "agent": "interaction", + "tool": "keyboard_shortcut", + "parameters": { + "keys": "shift+tab" + }, + "description": "Move focus from the multi-select input box to the select-all checkbox of the prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_multiSelect_assertOptionsLoaded_c3bb6e7ce_3_4" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:multiSelect" + ] + }, + { + "step_id": "step_multiSelect_selectAll_c3bb6e7ce_3_4", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "space" + }, + "description": "Press Space to check every option of the multi-select prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_multiSelect_focusSelectAll_c3bb6e7ce_3_4" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:multiSelect" + ] + }, + { + "step_id": "step_multiSelect_restoreFocus_c3bb6e7ce_3_4", + "agent": "interaction", + "tool": "keyboard_shortcut", + "parameters": { + "keys": "tab" + }, + "description": "Move focus from the select-all checkbox back to the multi-select input box.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_multiSelect_selectAll_c3bb6e7ce_3_4" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:multiSelect" + ] + }, + { + "step_id": "step_multiSelect_confirm_c3bb6e7ce_3_4", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to confirm the multi-select prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_multiSelect_restoreFocus_c3bb6e7ce_3_4" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:multiSelect" + ] + }, + { + "step_id": "step_executeCommand_open_c3bb6e7ce_3_5", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "f1" + }, + "description": "Press the F1 key to open the Command Palette in Visual Studio Code.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_multiSelect_confirm_c3bb6e7ce_3_4" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertPalette_c3bb6e7ce_3_5", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Visual Studio Code Command Palette is visible with a > character in its input box and is ready to accept a command search.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_open_c3bb6e7ce_3_5" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_filter_c3bb6e7ce_3_5", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Notifications: Show Notifications" + }, + "description": "Type the resolved command title into the active Command Palette.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertPalette_c3bb6e7ce_3_5" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertCommand_c3bb6e7ce_3_5", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Command Palette input box reads >Notifications: Show Notifications and the highlighted command listed under it is titled Notifications: Show Notifications.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_filter_c3bb6e7ce_3_5" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_execute_c3bb6e7ce_3_5", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to execute the selected Command Palette command.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertCommand_c3bb6e7ce_3_5" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_assertNotificationContains_assert_c3bb6e7ce_3_6", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion a visible Visual Studio Code notification contains The following environment is selected:.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_execute_c3bb6e7ce_3_5" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:notifications", + "action:assert-contains", + "step_retry_timeout: 300" + ] + }, + { + "step_id": "step_executeCommand_open_c3bb6e7ce_4_1", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "f1" + }, + "description": "Press the F1 key to open the Command Palette in Visual Studio Code.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_assertNotificationContains_assert_c3bb6e7ce_3_6" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertPalette_c3bb6e7ce_4_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Visual Studio Code Command Palette is visible with a > character in its input box and is ready to accept a command search.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_open_c3bb6e7ce_4_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_filter_c3bb6e7ce_4_1", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Debug: Select and Start Debugging" + }, + "description": "Type the resolved command title into the active Command Palette.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertPalette_c3bb6e7ce_4_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertCommand_c3bb6e7ce_4_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Command Palette input box reads >Debug: Select and Start Debugging and the highlighted command listed under it is titled Debug: Select and Start Debugging.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_filter_c3bb6e7ce_4_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_execute_c3bb6e7ce_4_1", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to execute the selected Command Palette command.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertCommand_c3bb6e7ce_4_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_filterOption_filter_c3bb6e7ce_4_2", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Debug in Microsoft 365 Agents Playground" + }, + "description": "Type the resolved option label into the active option picker.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_execute_c3bb6e7ce_4_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_filterOption_assertOption_c3bb6e7ce_4_2", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the option Debug in Microsoft 365 Agents Playground is visible and selectable in the filtered option picker.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_filterOption_filter_c3bb6e7ce_4_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_filterOption_confirm_c3bb6e7ce_4_2", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to confirm the filtered option.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_filterOption_assertOption_c3bb6e7ce_4_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_assertReady_assertReady_c3bb6e7ce_4_3", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Microsoft 365 Agents Playground page is open in the browser.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_filterOption_confirm_c3bb6e7ce_4_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:browser", + "action:assert-ready", + "step_retry_timeout: 180" + ] + }, + { + "step_id": "step_sendPlaygroundMessage_assertInput_c3bb6e7ce_6_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Agents Playground \"Type a message...\" input is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_assertReady_assertReady_c3bb6e7ce_4_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:browser", + "host_surface:playground", + "entry_state:chat-ready", + "action:send-message", + "step_retry_timeout: 120" + ] + }, + { + "step_id": "step_sendPlaygroundMessage_focusInput_c3bb6e7ce_6_1", + "agent": "interaction", + "tool": "click", + "parameters": { + "button": "left", + "x": 176, + "y": 710 + }, + "description": "Click the Agents Playground \"Type a message...\" input.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_sendPlaygroundMessage_assertInput_c3bb6e7ce_6_1" + ], + "preconditions": [ + "dhash:176:710:16:5:00000000006858d8", + "dhash:176:710:96:5:00000000303a8000", + "dhash:176:710:0:10:5c4a03c080828240" + ], + "postconditions": [], + "tags": [ + "component:browser", + "host_surface:playground", + "entry_state:chat-ready", + "action:send-message" + ] + }, + { + "step_id": "step_sendPlaygroundMessage_type_c3bb6e7ce_6_1", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "How to develop agent for Teams?" + }, + "description": "Type \"How to develop agent for Teams?\" into the Agents Playground message input.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_sendPlaygroundMessage_focusInput_c3bb6e7ce_6_1" + ], + "preconditions": [ + "dhash:512:384:0:20:5c4a03c080828260" + ], + "postconditions": [], + "tags": [ + "component:browser", + "host_surface:playground", + "entry_state:chat-ready", + "action:send-message" + ] + }, + { + "step_id": "step_sendPlaygroundMessage_send_c3bb6e7ce_6_1", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to send the Agents Playground message.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_sendPlaygroundMessage_type_c3bb6e7ce_6_1" + ], + "preconditions": [ + "dhash:512:384:0:20:5c4a03c080828260" + ], + "postconditions": [], + "tags": [ + "component:browser", + "host_surface:playground", + "entry_state:chat-ready", + "action:send-message" + ] + }, + { + "step_id": "step_assertChatReplied_assert_c3bb6e7ce_6_2", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the current assistant turn is complete and contains a non-empty response.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_sendPlaygroundMessage_send_c3bb6e7ce_6_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:browser", + "action:assert-chat-response", + "expectation:replied", + "step_retry_timeout: 120" + ] + } + ], + "screenshots": {} +} diff --git a/packages/tests/vscuse/vscode-test-cases/plans/basic-custom-engine-agent--basic-cea-py-azure-openai-remote-teams.json b/packages/tests/vscuse/vscode-test-cases/plans/basic-custom-engine-agent--basic-cea-py-azure-openai-remote-teams.json new file mode 100644 index 00000000000..1b89898a5f0 --- /dev/null +++ b/packages/tests/vscuse/vscode-test-cases/plans/basic-custom-engine-agent--basic-cea-py-azure-openai-remote-teams.json @@ -0,0 +1,4430 @@ +{ + "plan_metadata": { + "version": "1.1", + "plan_id": "plan_ff06c4af5799", + "execution_context": { + "delay_between_steps": 1, + "stop_on_error": true, + "precondition_wait_timeout": 30, + "precondition_retry_interval": 1 + }, + "total_steps": 188, + "name": "basic-cea-py-azure-openai-remote-teams", + "description": { + "owner": "", + "workitem": "SCN-CREATE-BASIC-CEA-01", + "other": "" + }, + "execution_order": [ + "step_closeWelcomeOverlay_assertVisible_c9bd6c5f6_1_1", + "step_closeWelcomeOverlay_close_c9bd6c5f6_1_1", + "step_closeWelcomeOverlay_assertReady_c9bd6c5f6_1_1", + "step_executeCommand_open_c9bd6c5f6_1_2", + "step_executeCommand_assertPalette_c9bd6c5f6_1_2", + "step_executeCommand_filter_c9bd6c5f6_1_2", + "step_executeCommand_assertCommand_c9bd6c5f6_1_2", + "step_executeCommand_execute_c9bd6c5f6_1_2", + "step_assertToolkitViewSettled_assert_c9bd6c5f6_1_3", + "step_closeGetStartedEditor_assertActive_c9bd6c5f6_1_4", + "step_closeGetStartedEditor_close_c9bd6c5f6_1_4", + "step_closeGetStartedEditor_assertClosed_c9bd6c5f6_1_4", + "step_executeCommand_open_c9bd6c5f6_1_5", + "step_executeCommand_assertPalette_c9bd6c5f6_1_5", + "step_executeCommand_filter_c9bd6c5f6_1_5", + "step_executeCommand_assertCommand_c9bd6c5f6_1_5", + "step_executeCommand_execute_c9bd6c5f6_1_5", + "step_singleSelect_assertQuestion_c9bd6c5f6_1_6", + "step_singleSelect_assertOptionsLoaded_c9bd6c5f6_1_6", + "step_singleSelect_filter_c9bd6c5f6_1_6", + "step_singleSelect_assertOption_c9bd6c5f6_1_6", + "step_singleSelect_confirm_c9bd6c5f6_1_6", + "step_singleSelect_assertQuestion_c9bd6c5f6_1_7", + "step_singleSelect_assertOptionsLoaded_c9bd6c5f6_1_7", + "step_singleSelect_filter_c9bd6c5f6_1_7", + "step_singleSelect_assertOption_c9bd6c5f6_1_7", + "step_singleSelect_confirm_c9bd6c5f6_1_7", + "step_singleSelect_assertQuestion_c9bd6c5f6_1_8", + "step_singleSelect_assertOptionsLoaded_c9bd6c5f6_1_8", + "step_singleSelect_filter_c9bd6c5f6_1_8", + "step_singleSelect_assertOption_c9bd6c5f6_1_8", + "step_singleSelect_confirm_c9bd6c5f6_1_8", + "step_textInput_assertQuestion_c9bd6c5f6_1_9", + "step_textInput_input_c9bd6c5f6_1_9", + "step_textInput_confirm_c9bd6c5f6_1_9", + "step_textInput_assertQuestion_c9bd6c5f6_1_10", + "step_textInput_input_c9bd6c5f6_1_10", + "step_textInput_confirm_c9bd6c5f6_1_10", + "step_textInput_assertQuestion_c9bd6c5f6_1_11", + "step_textInput_input_c9bd6c5f6_1_11", + "step_textInput_confirm_c9bd6c5f6_1_11", + "step_singleSelect_assertQuestion_c9bd6c5f6_1_12", + "step_singleSelect_assertOptionsLoaded_c9bd6c5f6_1_12", + "step_singleSelect_filter_c9bd6c5f6_1_12", + "step_singleSelect_assertOption_c9bd6c5f6_1_12", + "step_singleSelect_confirm_c9bd6c5f6_1_12", + "step_confirmOption_assertPrompt_c9bd6c5f6_1_13", + "step_confirmOption_confirm_c9bd6c5f6_1_13", + "step_textInput_assertQuestion_c9bd6c5f6_1_14", + "step_textInput_input_c9bd6c5f6_1_14", + "step_textInput_confirm_c9bd6c5f6_1_14", + "step_assertProjectWindowReady_assert_c9bd6c5f6_1_15", + "step_checkWorkspaceFiles_verify_c9bd6c5f6_2_1", + "step_checkWorkspaceFiles_verify_c9bd6c5f6_2_2", + "step_checkWorkspaceFiles_verify_c9bd6c5f6_2_3", + "step_checkWorkspaceFiles_verify_c9bd6c5f6_2_4", + "step_checkWorkspaceFiles_verify_c9bd6c5f6_2_5", + "step_checkWorkspaceFiles_verify_c9bd6c5f6_2_6", + "step_checkWorkspaceFiles_verify_c9bd6c5f6_2_7", + "step_checkWorkspaceFiles_verify_c9bd6c5f6_2_8", + "step_executeCommand_open_c9bd6c5f6_3_1", + "step_executeCommand_assertPalette_c9bd6c5f6_3_1", + "step_executeCommand_filter_c9bd6c5f6_3_1", + "step_executeCommand_assertCommand_c9bd6c5f6_3_1", + "step_executeCommand_execute_c9bd6c5f6_3_1", + "step_filterOption_filter_c9bd6c5f6_3_2", + "step_filterOption_assertOption_c9bd6c5f6_3_2", + "step_filterOption_confirm_c9bd6c5f6_3_2", + "step_filterOption_filter_c9bd6c5f6_3_3", + "step_filterOption_assertOption_c9bd6c5f6_3_3", + "step_filterOption_confirm_c9bd6c5f6_3_3", + "step_multiSelect_assertQuestion_c9bd6c5f6_3_4", + "step_multiSelect_assertOptionsLoaded_c9bd6c5f6_3_4", + "step_multiSelect_focusSelectAll_c9bd6c5f6_3_4", + "step_multiSelect_selectAll_c9bd6c5f6_3_4", + "step_multiSelect_restoreFocus_c9bd6c5f6_3_4", + "step_multiSelect_confirm_c9bd6c5f6_3_4", + "step_executeCommand_open_c9bd6c5f6_3_5", + "step_executeCommand_assertPalette_c9bd6c5f6_3_5", + "step_executeCommand_filter_c9bd6c5f6_3_5", + "step_executeCommand_assertCommand_c9bd6c5f6_3_5", + "step_executeCommand_execute_c9bd6c5f6_3_5", + "step_assertNotificationContains_assert_c9bd6c5f6_3_6", + "step_executeCommand_open_c9bd6c5f6_4_1", + "step_executeCommand_assertPalette_c9bd6c5f6_4_1", + "step_executeCommand_filter_c9bd6c5f6_4_1", + "step_executeCommand_assertCommand_c9bd6c5f6_4_1", + "step_executeCommand_execute_c9bd6c5f6_4_1", + "step_signInAzure_assertOption_c9bd6c5f6_4_2", + "step_signInAzure_selectOption_c9bd6c5f6_4_2", + "step_signInAzure_confirmSignIn_c9bd6c5f6_4_2", + "step_signInAzure_allow_c9bd6c5f6_4_2", + "step_signInAzure_focusAccount_c9bd6c5f6_4_2", + "step_signInAzure_typeAccount_c9bd6c5f6_4_2", + "step_signInAzure_next_c9bd6c5f6_4_2", + "step_signInAzure_typePassword_c9bd6c5f6_4_2", + "step_signInAzure_submit_c9bd6c5f6_4_2", + "step_signInAzure_closeBrowser_c9bd6c5f6_4_2", + "step_signInAzure_assertReady_c9bd6c5f6_4_2", + "step_executeCommand_open_c9bd6c5f6_5_1", + "step_executeCommand_assertPalette_c9bd6c5f6_5_1", + "step_executeCommand_filter_c9bd6c5f6_5_1", + "step_executeCommand_assertCommand_c9bd6c5f6_5_1", + "step_executeCommand_execute_c9bd6c5f6_5_1", + "step_signInM365FromPicker_assertOption_c9bd6c5f6_5_2", + "step_signInM365FromPicker_selectOption_c9bd6c5f6_5_2", + "step_signInM365FromPicker_confirmSignIn_c9bd6c5f6_5_2", + "step_signInM365FromPicker_useAnotherAccount_c9bd6c5f6_5_2", + "step_signInM365FromPicker_typeAccount_c9bd6c5f6_5_2", + "step_signInM365FromPicker_next_c9bd6c5f6_5_2", + "step_signInM365FromPicker_typePassword_c9bd6c5f6_5_2", + "step_signInM365FromPicker_submit_c9bd6c5f6_5_2", + "step_signInM365FromPicker_closeBrowser_c9bd6c5f6_5_2", + "step_signInM365FromPicker_assertReady_c9bd6c5f6_5_2", + "step_executeCommand_open_c9bd6c5f6_6_1", + "step_executeCommand_assertPalette_c9bd6c5f6_6_1", + "step_executeCommand_filter_c9bd6c5f6_6_1", + "step_executeCommand_assertCommand_c9bd6c5f6_6_1", + "step_executeCommand_execute_c9bd6c5f6_6_1", + "step_executeCommand_open_c9bd6c5f6_6_2", + "step_executeCommand_assertPalette_c9bd6c5f6_6_2", + "step_executeCommand_filter_c9bd6c5f6_6_2", + "step_executeCommand_assertCommand_c9bd6c5f6_6_2", + "step_executeCommand_execute_c9bd6c5f6_6_2", + "step_executeCommand_open_c9bd6c5f6_6_3", + "step_executeCommand_assertPalette_c9bd6c5f6_6_3", + "step_executeCommand_filter_c9bd6c5f6_6_3", + "step_executeCommand_assertCommand_c9bd6c5f6_6_3", + "step_executeCommand_execute_c9bd6c5f6_6_3", + "step_singleSelect_assertQuestion_c9bd6c5f6_6_4", + "step_singleSelect_assertOptionsLoaded_c9bd6c5f6_6_4", + "step_singleSelect_filter_c9bd6c5f6_6_4", + "step_singleSelect_assertOption_c9bd6c5f6_6_4", + "step_singleSelect_confirm_c9bd6c5f6_6_4", + "step_textInput_assertQuestion_c9bd6c5f6_6_5", + "step_textInput_input_c9bd6c5f6_6_5", + "step_textInput_confirm_c9bd6c5f6_6_5", + "step_singleSelect_assertQuestion_c9bd6c5f6_6_6", + "step_singleSelect_assertOptionsLoaded_c9bd6c5f6_6_6", + "step_singleSelect_filter_c9bd6c5f6_6_6", + "step_singleSelect_assertOption_c9bd6c5f6_6_6", + "step_singleSelect_confirm_c9bd6c5f6_6_6", + "step_clickPrimaryAction_assertDialog_c9bd6c5f6_6_7", + "step_clickPrimaryAction_click_c9bd6c5f6_6_7", + "step_assertNotificationContains_assert_c9bd6c5f6_6_8", + "step_executeCommand_open_c9bd6c5f6_7_1", + "step_executeCommand_assertPalette_c9bd6c5f6_7_1", + "step_executeCommand_filter_c9bd6c5f6_7_1", + "step_executeCommand_assertCommand_c9bd6c5f6_7_1", + "step_executeCommand_execute_c9bd6c5f6_7_1", + "step_executeCommand_open_c9bd6c5f6_7_2", + "step_executeCommand_assertPalette_c9bd6c5f6_7_2", + "step_executeCommand_filter_c9bd6c5f6_7_2", + "step_executeCommand_assertCommand_c9bd6c5f6_7_2", + "step_executeCommand_execute_c9bd6c5f6_7_2", + "step_executeCommand_open_c9bd6c5f6_7_3", + "step_executeCommand_assertPalette_c9bd6c5f6_7_3", + "step_executeCommand_filter_c9bd6c5f6_7_3", + "step_executeCommand_assertCommand_c9bd6c5f6_7_3", + "step_executeCommand_execute_c9bd6c5f6_7_3", + "step_clickPrimaryAction_assertDialog_c9bd6c5f6_7_4", + "step_clickPrimaryAction_click_c9bd6c5f6_7_4", + "step_assertNotificationContains_assert_c9bd6c5f6_7_5", + "step_executeCommand_open_c9bd6c5f6_8_1", + "step_executeCommand_assertPalette_c9bd6c5f6_8_1", + "step_executeCommand_filter_c9bd6c5f6_8_1", + "step_executeCommand_assertCommand_c9bd6c5f6_8_1", + "step_executeCommand_execute_c9bd6c5f6_8_1", + "step_filterOption_filter_c9bd6c5f6_8_2", + "step_filterOption_assertOption_c9bd6c5f6_8_2", + "step_filterOption_confirm_c9bd6c5f6_8_2", + "step_browserM365PasswordSignIn_assertPassword_c9bd6c5f6_8_3", + "step_browserM365PasswordSignIn_focusPassword_c9bd6c5f6_8_3", + "step_browserM365PasswordSignIn_enterPassword_c9bd6c5f6_8_3", + "step_browserM365PasswordSignIn_submitPassword_c9bd6c5f6_8_3", + "step_browserM365PasswordSignIn_assertStaySignedIn_c9bd6c5f6_8_3", + "step_browserM365PasswordSignIn_confirmStaySignedIn_c9bd6c5f6_8_3", + "step_assertReady_assertReady_c9bd6c5f6_8_4", + "step_addAndOpenApp_assertAdd_c9bd6c5f6_9_1", + "step_addAndOpenApp_add_c9bd6c5f6_9_1", + "step_addAndOpenApp_assertAdded_c9bd6c5f6_9_1", + "step_addAndOpenApp_open_c9bd6c5f6_9_1", + "step_addAndOpenApp_assertReady_c9bd6c5f6_9_1", + "step_sendTeamsMessage_assertInput_c9bd6c5f6_10_1", + "step_sendTeamsMessage_focusInput_c9bd6c5f6_10_1", + "step_sendTeamsMessage_type_c9bd6c5f6_10_1", + "step_sendTeamsMessage_send_c9bd6c5f6_10_1", + "step_assertChatReplied_assert_c9bd6c5f6_10_2" + ], + "tags": [ + "case_id:basic-cea-py-azure-openai-remote-teams", + "scenario_id:SCN-CREATE-BASIC-CEA-01", + "template_id:basic-custom-engine-agent", + "gate:pr" + ] + }, + "steps": [ + { + "step_id": "step_closeWelcomeOverlay_assertVisible_c9bd6c5f6_1_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the startup \"Welcome to VS Code\" sign-in overlay is visible and its Close button is available.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:initialization", + "initialization:closeWelcomeOverlay", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_closeWelcomeOverlay_close_c9bd6c5f6_1_1", + "agent": "interaction", + "tool": "click", + "parameters": { + "button": "left", + "x": 952, + "y": 128 + }, + "description": "Click the Close button on the startup Welcome sign-in overlay.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_closeWelcomeOverlay_assertVisible_c9bd6c5f6_1_1" + ], + "preconditions": [ + "dhash:952:128:16:5:255266345964665b", + "dhash:952:128:96:5:16100c10100c1404", + "dhash:952:128:0:10:2592eae0f08e8621" + ], + "postconditions": [], + "tags": [ + "component:initialization", + "initialization:closeWelcomeOverlay", + "force_run:true" + ] + }, + { + "step_id": "step_closeWelcomeOverlay_assertReady_c9bd6c5f6_1_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the startup sign-in overlay is no longer visible and the VS Code workbench is ready.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_closeWelcomeOverlay_close_c9bd6c5f6_1_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:initialization", + "initialization:closeWelcomeOverlay", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_open_c9bd6c5f6_1_2", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "f1" + }, + "description": "Press the F1 key to open the Command Palette in Visual Studio Code.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_closeWelcomeOverlay_assertReady_c9bd6c5f6_1_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertPalette_c9bd6c5f6_1_2", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Visual Studio Code Command Palette is visible with a > character in its input box and is ready to accept a command search.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_open_c9bd6c5f6_1_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_filter_c9bd6c5f6_1_2", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Microsoft 365 Agents Toolkit: Focus on Microsoft 365 Agents Toolkit View" + }, + "description": "Type the resolved command title into the active Command Palette.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertPalette_c9bd6c5f6_1_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertCommand_c9bd6c5f6_1_2", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Command Palette input box reads >Microsoft 365 Agents Toolkit: Focus on Microsoft 365 Agents Toolkit View and the highlighted command listed under it is titled Microsoft 365 Agents Toolkit: Focus on Microsoft 365 Agents Toolkit View.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_filter_c9bd6c5f6_1_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_execute_c9bd6c5f6_1_2", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to execute the selected Command Palette command.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertCommand_c9bd6c5f6_1_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_assertToolkitViewSettled_assert_c9bd6c5f6_1_3", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Microsoft 365 Agents Toolkit view is open in the side bar and an editor tab labeled Welcome showing the Build a Declarative Agent walkthrough is open in the editor area.", + "content_refs": [], + "timeout": 120, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_execute_c9bd6c5f6_1_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:initialization", + "initialization:assertToolkitViewSettled", + "step_retry_timeout: 120" + ] + }, + { + "step_id": "step_closeGetStartedEditor_assertActive_c9bd6c5f6_1_4", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the editor tab labeled Welcome showing the Build a Declarative Agent walkthrough is the active editor tab in the Visual Studio Code editor area.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_assertToolkitViewSettled_assert_c9bd6c5f6_1_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:initialization", + "initialization:closeGetStartedEditor", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_closeGetStartedEditor_close_c9bd6c5f6_1_4", + "agent": "interaction", + "tool": "keyboard_shortcut", + "parameters": { + "keys": "ctrl+w" + }, + "description": "Press Ctrl+W to close the Welcome editor tab.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_closeGetStartedEditor_assertActive_c9bd6c5f6_1_4" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:initialization", + "initialization:closeGetStartedEditor" + ] + }, + { + "step_id": "step_closeGetStartedEditor_assertClosed_c9bd6c5f6_1_4", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion no editor tab is open in the Visual Studio Code editor area.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_closeGetStartedEditor_close_c9bd6c5f6_1_4" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:initialization", + "initialization:closeGetStartedEditor", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_open_c9bd6c5f6_1_5", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "f1" + }, + "description": "Press the F1 key to open the Command Palette in Visual Studio Code.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_closeGetStartedEditor_assertClosed_c9bd6c5f6_1_4" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertPalette_c9bd6c5f6_1_5", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Visual Studio Code Command Palette is visible with a > character in its input box and is ready to accept a command search.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_open_c9bd6c5f6_1_5" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_filter_c9bd6c5f6_1_5", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Microsoft 365 Agents: Create New Agent/App" + }, + "description": "Type the resolved command title into the active Command Palette.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertPalette_c9bd6c5f6_1_5" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertCommand_c9bd6c5f6_1_5", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Command Palette input box reads >Microsoft 365 Agents: Create New Agent/App and the highlighted command listed under it is titled Microsoft 365 Agents: Create New Agent/App.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_filter_c9bd6c5f6_1_5" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_execute_c9bd6c5f6_1_5", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to execute the selected Command Palette command.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertCommand_c9bd6c5f6_1_5" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_singleSelect_assertQuestion_c9bd6c5f6_1_6", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the active prompt titled New Project is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_execute_c9bd6c5f6_1_5" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_singleSelect_assertOptionsLoaded_c9bd6c5f6_1_6", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the prompt titled New Project has finished loading and lists at least one selectable option.", + "content_refs": [], + "timeout": 120, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertQuestion_c9bd6c5f6_1_6" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 120" + ] + }, + { + "step_id": "step_singleSelect_filter_c9bd6c5f6_1_6", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Custom Engine Agent" + }, + "description": "Type the resolved option label Custom Engine Agent into the active single-select prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertOptionsLoaded_c9bd6c5f6_1_6" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_singleSelect_assertOption_c9bd6c5f6_1_6", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the option Custom Engine Agent is visible and selectable in the filtered single-select prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_filter_c9bd6c5f6_1_6" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_singleSelect_confirm_c9bd6c5f6_1_6", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to confirm the filtered single-select option.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertOption_c9bd6c5f6_1_6" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_singleSelect_assertQuestion_c9bd6c5f6_1_7", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the active prompt titled App Features Using Microsoft 365 Agents SDK is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_confirm_c9bd6c5f6_1_6" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_singleSelect_assertOptionsLoaded_c9bd6c5f6_1_7", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the prompt titled App Features Using Microsoft 365 Agents SDK has finished loading and lists at least one selectable option.", + "content_refs": [], + "timeout": 120, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertQuestion_c9bd6c5f6_1_7" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 120" + ] + }, + { + "step_id": "step_singleSelect_filter_c9bd6c5f6_1_7", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Basic Custom Engine Agent" + }, + "description": "Type the resolved option label Basic Custom Engine Agent into the active single-select prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertOptionsLoaded_c9bd6c5f6_1_7" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_singleSelect_assertOption_c9bd6c5f6_1_7", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the option Basic Custom Engine Agent is visible and selectable in the filtered single-select prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_filter_c9bd6c5f6_1_7" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_singleSelect_confirm_c9bd6c5f6_1_7", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to confirm the filtered single-select option.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertOption_c9bd6c5f6_1_7" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_singleSelect_assertQuestion_c9bd6c5f6_1_8", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the active prompt titled Service for Large Language Model (LLM) is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_confirm_c9bd6c5f6_1_7" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_singleSelect_assertOptionsLoaded_c9bd6c5f6_1_8", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the prompt titled Service for Large Language Model (LLM) has finished loading and lists at least one selectable option.", + "content_refs": [], + "timeout": 120, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertQuestion_c9bd6c5f6_1_8" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 120" + ] + }, + { + "step_id": "step_singleSelect_filter_c9bd6c5f6_1_8", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Azure OpenAI" + }, + "description": "Type the resolved option label Azure OpenAI into the active single-select prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertOptionsLoaded_c9bd6c5f6_1_8" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_singleSelect_assertOption_c9bd6c5f6_1_8", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the option Azure OpenAI is visible and selectable in the filtered single-select prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_filter_c9bd6c5f6_1_8" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_singleSelect_confirm_c9bd6c5f6_1_8", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to confirm the filtered single-select option.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertOption_c9bd6c5f6_1_8" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_textInput_assertQuestion_c9bd6c5f6_1_9", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the active prompt titled Azure OpenAI Key is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_confirm_c9bd6c5f6_1_8" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_textInput_input_c9bd6c5f6_1_9", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "${{secret:AZURE_OPENAI_API_KEY}}" + }, + "description": "Type the authored value into the active text prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_assertQuestion_c9bd6c5f6_1_9" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text" + ] + }, + { + "step_id": "step_textInput_confirm_c9bd6c5f6_1_9", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to submit the accepted text input.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_input_c9bd6c5f6_1_9" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text" + ] + }, + { + "step_id": "step_textInput_assertQuestion_c9bd6c5f6_1_10", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the active prompt titled Azure OpenAI Endpoint is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_confirm_c9bd6c5f6_1_9" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_textInput_input_c9bd6c5f6_1_10", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "${{env:AZURE_OPENAI_ENDPOINT}}" + }, + "description": "Type the authored value into the active text prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_assertQuestion_c9bd6c5f6_1_10" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text" + ] + }, + { + "step_id": "step_textInput_confirm_c9bd6c5f6_1_10", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to submit the accepted text input.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_input_c9bd6c5f6_1_10" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text" + ] + }, + { + "step_id": "step_textInput_assertQuestion_c9bd6c5f6_1_11", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the active prompt titled Azure OpenAI Deployment Name is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_confirm_c9bd6c5f6_1_10" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_textInput_input_c9bd6c5f6_1_11", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "${{env:AZURE_OPENAI_MODEL}}" + }, + "description": "Type the authored value into the active text prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_assertQuestion_c9bd6c5f6_1_11" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text" + ] + }, + { + "step_id": "step_textInput_confirm_c9bd6c5f6_1_11", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to submit the accepted text input.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_input_c9bd6c5f6_1_11" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text" + ] + }, + { + "step_id": "step_singleSelect_assertQuestion_c9bd6c5f6_1_12", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the active prompt titled Programming Language is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_confirm_c9bd6c5f6_1_11" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_singleSelect_assertOptionsLoaded_c9bd6c5f6_1_12", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the prompt titled Programming Language has finished loading and lists at least one selectable option.", + "content_refs": [], + "timeout": 120, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertQuestion_c9bd6c5f6_1_12" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 120" + ] + }, + { + "step_id": "step_singleSelect_filter_c9bd6c5f6_1_12", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Python" + }, + "description": "Type the resolved option label Python into the active single-select prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertOptionsLoaded_c9bd6c5f6_1_12" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_singleSelect_assertOption_c9bd6c5f6_1_12", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the option Python is visible and selectable in the filtered single-select prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_filter_c9bd6c5f6_1_12" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_singleSelect_confirm_c9bd6c5f6_1_12", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to confirm the filtered single-select option.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertOption_c9bd6c5f6_1_12" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_confirmOption_assertPrompt_c9bd6c5f6_1_13", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the active prompt titled Workspace Folder is visible and the option Default folder is focused.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_confirm_c9bd6c5f6_1_12" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "interaction:key-press", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_confirmOption_confirm_c9bd6c5f6_1_13", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to confirm the Default folder option.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_confirmOption_assertPrompt_c9bd6c5f6_1_13" + ], + "preconditions": [ + "dhash:364:74:16:5:08056a9a5d5516b6", + "dhash:364:74:96:5:44232286e2168e01", + "dhash:364:74:0:10:f0b09494b2717075" + ], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "interaction:key-press" + ] + }, + { + "step_id": "step_textInput_assertQuestion_c9bd6c5f6_1_14", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the active prompt titled Application Name is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_confirmOption_confirm_c9bd6c5f6_1_13" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_textInput_input_c9bd6c5f6_1_14", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "${{var:app_name:vscuse_app_#####}}" + }, + "description": "Type the authored value into the active text prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_assertQuestion_c9bd6c5f6_1_14" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text" + ] + }, + { + "step_id": "step_textInput_confirm_c9bd6c5f6_1_14", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to submit the accepted text input.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_input_c9bd6c5f6_1_14" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text" + ] + }, + { + "step_id": "step_assertProjectWindowReady_assert_c9bd6c5f6_1_15", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Preview README.md editor tab is open in Visual Studio Code.", + "content_refs": [], + "timeout": 60, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_confirm_c9bd6c5f6_1_14" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:initialization", + "initialization:assertProjectWindowReady", + "step_retry_timeout: 60" + ] + }, + { + "step_id": "step_checkWorkspaceFiles_verify_c9bd6c5f6_2_1", + "agent": "code", + "tool": "", + "parameters": { + "sample": "=== Generated Script ===\nLanguage: bash\n\n```bash\nset -euo pipefail\nPROJECT_DIR=\"/home/vscode/AgentsToolkitProjects/${{var:app_name}}\" ASSERTIONS_B64=\"W3sicGF0aCI6Im0zNjVhZ2VudHMueW1sIiwiZXhpc3RzIjp0cnVlLCJjb250YWlucyI6WyJwcm92aXNpb246IiwiZGVwbG95OiJdLCJub3RDb250YWlucyI6W119XQ==\" python3 - <<'PY'\nimport base64\nimport json\nimport os\nfrom pathlib import Path\n\nproject = Path(os.environ[\"PROJECT_DIR\"]).resolve()\nassertions = json.loads(base64.b64decode(os.environ[\"ASSERTIONS_B64\"]).decode(\"utf-8\"))\nfor assertion in assertions:\n target = (project / assertion[\"path\"]).resolve()\n try:\n target.relative_to(project)\n except ValueError as error:\n raise AssertionError(\"File assertion escaped the project directory\") from error\n exists = target.is_file()\n if exists != assertion[\"exists\"]:\n raise AssertionError(f\"Unexpected file existence for {assertion['path']}\")\n if not exists:\n continue\n content = target.read_text(encoding=\"utf-8\")\n for expected in assertion.get(\"contains\", []):\n expected = expected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if expected not in content:\n raise AssertionError(f\"Expected content is absent from {assertion['path']}\")\n for unexpected in assertion.get(\"notContains\", []):\n unexpected = unexpected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if unexpected in content:\n raise AssertionError(f\"Unexpected content is present in {assertion['path']}\")\nPY\n```" + }, + "description": "@code verify the authored workspace file existence and content assertions without logging file contents.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_assertProjectWindowReady_assert_c9bd6c5f6_1_15" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:checks", + "assertion:file", + "step_retry_timeout:120" + ] + }, + { + "step_id": "step_checkWorkspaceFiles_verify_c9bd6c5f6_2_2", + "agent": "code", + "tool": "", + "parameters": { + "sample": "=== Generated Script ===\nLanguage: bash\n\n```bash\nset -euo pipefail\nPROJECT_DIR=\"/home/vscode/AgentsToolkitProjects/${{var:app_name}}\" ASSERTIONS_B64=\"W3sicGF0aCI6InNyYy9hcHAucHkiLCJleGlzdHMiOnRydWUsImNvbnRhaW5zIjpbXSwibm90Q29udGFpbnMiOltdfV0=\" python3 - <<'PY'\nimport base64\nimport json\nimport os\nfrom pathlib import Path\n\nproject = Path(os.environ[\"PROJECT_DIR\"]).resolve()\nassertions = json.loads(base64.b64decode(os.environ[\"ASSERTIONS_B64\"]).decode(\"utf-8\"))\nfor assertion in assertions:\n target = (project / assertion[\"path\"]).resolve()\n try:\n target.relative_to(project)\n except ValueError as error:\n raise AssertionError(\"File assertion escaped the project directory\") from error\n exists = target.is_file()\n if exists != assertion[\"exists\"]:\n raise AssertionError(f\"Unexpected file existence for {assertion['path']}\")\n if not exists:\n continue\n content = target.read_text(encoding=\"utf-8\")\n for expected in assertion.get(\"contains\", []):\n expected = expected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if expected not in content:\n raise AssertionError(f\"Expected content is absent from {assertion['path']}\")\n for unexpected in assertion.get(\"notContains\", []):\n unexpected = unexpected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if unexpected in content:\n raise AssertionError(f\"Unexpected content is present in {assertion['path']}\")\nPY\n```" + }, + "description": "@code verify the authored workspace file existence and content assertions without logging file contents.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_checkWorkspaceFiles_verify_c9bd6c5f6_2_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:checks", + "assertion:file", + "step_retry_timeout:120" + ] + }, + { + "step_id": "step_checkWorkspaceFiles_verify_c9bd6c5f6_2_3", + "agent": "code", + "tool": "", + "parameters": { + "sample": "=== Generated Script ===\nLanguage: bash\n\n```bash\nset -euo pipefail\nPROJECT_DIR=\"/home/vscode/AgentsToolkitProjects/${{var:app_name}}\" ASSERTIONS_B64=\"W3sicGF0aCI6InNyYy9hZ2VudC5weSIsImV4aXN0cyI6dHJ1ZSwiY29udGFpbnMiOltdLCJub3RDb250YWlucyI6W119XQ==\" python3 - <<'PY'\nimport base64\nimport json\nimport os\nfrom pathlib import Path\n\nproject = Path(os.environ[\"PROJECT_DIR\"]).resolve()\nassertions = json.loads(base64.b64decode(os.environ[\"ASSERTIONS_B64\"]).decode(\"utf-8\"))\nfor assertion in assertions:\n target = (project / assertion[\"path\"]).resolve()\n try:\n target.relative_to(project)\n except ValueError as error:\n raise AssertionError(\"File assertion escaped the project directory\") from error\n exists = target.is_file()\n if exists != assertion[\"exists\"]:\n raise AssertionError(f\"Unexpected file existence for {assertion['path']}\")\n if not exists:\n continue\n content = target.read_text(encoding=\"utf-8\")\n for expected in assertion.get(\"contains\", []):\n expected = expected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if expected not in content:\n raise AssertionError(f\"Expected content is absent from {assertion['path']}\")\n for unexpected in assertion.get(\"notContains\", []):\n unexpected = unexpected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if unexpected in content:\n raise AssertionError(f\"Unexpected content is present in {assertion['path']}\")\nPY\n```" + }, + "description": "@code verify the authored workspace file existence and content assertions without logging file contents.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_checkWorkspaceFiles_verify_c9bd6c5f6_2_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:checks", + "assertion:file", + "step_retry_timeout:120" + ] + }, + { + "step_id": "step_checkWorkspaceFiles_verify_c9bd6c5f6_2_4", + "agent": "code", + "tool": "", + "parameters": { + "sample": "=== Generated Script ===\nLanguage: bash\n\n```bash\nset -euo pipefail\nPROJECT_DIR=\"/home/vscode/AgentsToolkitProjects/${{var:app_name}}\" ASSERTIONS_B64=\"W3sicGF0aCI6InNyYy9jb25maWcucHkiLCJleGlzdHMiOnRydWUsImNvbnRhaW5zIjpbXSwibm90Q29udGFpbnMiOltdfV0=\" python3 - <<'PY'\nimport base64\nimport json\nimport os\nfrom pathlib import Path\n\nproject = Path(os.environ[\"PROJECT_DIR\"]).resolve()\nassertions = json.loads(base64.b64decode(os.environ[\"ASSERTIONS_B64\"]).decode(\"utf-8\"))\nfor assertion in assertions:\n target = (project / assertion[\"path\"]).resolve()\n try:\n target.relative_to(project)\n except ValueError as error:\n raise AssertionError(\"File assertion escaped the project directory\") from error\n exists = target.is_file()\n if exists != assertion[\"exists\"]:\n raise AssertionError(f\"Unexpected file existence for {assertion['path']}\")\n if not exists:\n continue\n content = target.read_text(encoding=\"utf-8\")\n for expected in assertion.get(\"contains\", []):\n expected = expected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if expected not in content:\n raise AssertionError(f\"Expected content is absent from {assertion['path']}\")\n for unexpected in assertion.get(\"notContains\", []):\n unexpected = unexpected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if unexpected in content:\n raise AssertionError(f\"Unexpected content is present in {assertion['path']}\")\nPY\n```" + }, + "description": "@code verify the authored workspace file existence and content assertions without logging file contents.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_checkWorkspaceFiles_verify_c9bd6c5f6_2_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:checks", + "assertion:file", + "step_retry_timeout:120" + ] + }, + { + "step_id": "step_checkWorkspaceFiles_verify_c9bd6c5f6_2_5", + "agent": "code", + "tool": "", + "parameters": { + "sample": "=== Generated Script ===\nLanguage: bash\n\n```bash\nset -euo pipefail\nPROJECT_DIR=\"/home/vscode/AgentsToolkitProjects/${{var:app_name}}\" ASSERTIONS_B64=\"W3sicGF0aCI6InNyYy9yZXF1aXJlbWVudHMudHh0IiwiZXhpc3RzIjp0cnVlLCJjb250YWlucyI6WyJtaWNyb3NvZnQtYWdlbnRzLWhvc3RpbmctYWlvaHR0cCIsIm9wZW5haSJdLCJub3RDb250YWlucyI6W119XQ==\" python3 - <<'PY'\nimport base64\nimport json\nimport os\nfrom pathlib import Path\n\nproject = Path(os.environ[\"PROJECT_DIR\"]).resolve()\nassertions = json.loads(base64.b64decode(os.environ[\"ASSERTIONS_B64\"]).decode(\"utf-8\"))\nfor assertion in assertions:\n target = (project / assertion[\"path\"]).resolve()\n try:\n target.relative_to(project)\n except ValueError as error:\n raise AssertionError(\"File assertion escaped the project directory\") from error\n exists = target.is_file()\n if exists != assertion[\"exists\"]:\n raise AssertionError(f\"Unexpected file existence for {assertion['path']}\")\n if not exists:\n continue\n content = target.read_text(encoding=\"utf-8\")\n for expected in assertion.get(\"contains\", []):\n expected = expected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if expected not in content:\n raise AssertionError(f\"Expected content is absent from {assertion['path']}\")\n for unexpected in assertion.get(\"notContains\", []):\n unexpected = unexpected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if unexpected in content:\n raise AssertionError(f\"Unexpected content is present in {assertion['path']}\")\nPY\n```" + }, + "description": "@code verify the authored workspace file existence and content assertions without logging file contents.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_checkWorkspaceFiles_verify_c9bd6c5f6_2_4" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:checks", + "assertion:file", + "step_retry_timeout:120" + ] + }, + { + "step_id": "step_checkWorkspaceFiles_verify_c9bd6c5f6_2_6", + "agent": "code", + "tool": "", + "parameters": { + "sample": "=== Generated Script ===\nLanguage: bash\n\n```bash\nset -euo pipefail\nPROJECT_DIR=\"/home/vscode/AgentsToolkitProjects/${{var:app_name}}\" ASSERTIONS_B64=\"W3sicGF0aCI6ImluZnJhL2F6dXJlLmJpY2VwIiwiZXhpc3RzIjp0cnVlLCJjb250YWlucyI6W10sIm5vdENvbnRhaW5zIjpbXX1d\" python3 - <<'PY'\nimport base64\nimport json\nimport os\nfrom pathlib import Path\n\nproject = Path(os.environ[\"PROJECT_DIR\"]).resolve()\nassertions = json.loads(base64.b64decode(os.environ[\"ASSERTIONS_B64\"]).decode(\"utf-8\"))\nfor assertion in assertions:\n target = (project / assertion[\"path\"]).resolve()\n try:\n target.relative_to(project)\n except ValueError as error:\n raise AssertionError(\"File assertion escaped the project directory\") from error\n exists = target.is_file()\n if exists != assertion[\"exists\"]:\n raise AssertionError(f\"Unexpected file existence for {assertion['path']}\")\n if not exists:\n continue\n content = target.read_text(encoding=\"utf-8\")\n for expected in assertion.get(\"contains\", []):\n expected = expected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if expected not in content:\n raise AssertionError(f\"Expected content is absent from {assertion['path']}\")\n for unexpected in assertion.get(\"notContains\", []):\n unexpected = unexpected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if unexpected in content:\n raise AssertionError(f\"Unexpected content is present in {assertion['path']}\")\nPY\n```" + }, + "description": "@code verify the authored workspace file existence and content assertions without logging file contents.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_checkWorkspaceFiles_verify_c9bd6c5f6_2_5" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:checks", + "assertion:file", + "step_retry_timeout:120" + ] + }, + { + "step_id": "step_checkWorkspaceFiles_verify_c9bd6c5f6_2_7", + "agent": "code", + "tool": "", + "parameters": { + "sample": "=== Generated Script ===\nLanguage: bash\n\n```bash\nset -euo pipefail\nPROJECT_DIR=\"/home/vscode/AgentsToolkitProjects/${{var:app_name}}\" ASSERTIONS_B64=\"W3sicGF0aCI6ImFwcFBhY2thZ2UvbWFuaWZlc3QuanNvbiIsImV4aXN0cyI6dHJ1ZSwiY29udGFpbnMiOlsiXCJtYW5pZmVzdFZlcnNpb25cIjogXCIxLjI5XCIiXSwibm90Q29udGFpbnMiOltdfV0=\" python3 - <<'PY'\nimport base64\nimport json\nimport os\nfrom pathlib import Path\n\nproject = Path(os.environ[\"PROJECT_DIR\"]).resolve()\nassertions = json.loads(base64.b64decode(os.environ[\"ASSERTIONS_B64\"]).decode(\"utf-8\"))\nfor assertion in assertions:\n target = (project / assertion[\"path\"]).resolve()\n try:\n target.relative_to(project)\n except ValueError as error:\n raise AssertionError(\"File assertion escaped the project directory\") from error\n exists = target.is_file()\n if exists != assertion[\"exists\"]:\n raise AssertionError(f\"Unexpected file existence for {assertion['path']}\")\n if not exists:\n continue\n content = target.read_text(encoding=\"utf-8\")\n for expected in assertion.get(\"contains\", []):\n expected = expected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if expected not in content:\n raise AssertionError(f\"Expected content is absent from {assertion['path']}\")\n for unexpected in assertion.get(\"notContains\", []):\n unexpected = unexpected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if unexpected in content:\n raise AssertionError(f\"Unexpected content is present in {assertion['path']}\")\nPY\n```" + }, + "description": "@code verify the authored workspace file existence and content assertions without logging file contents.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_checkWorkspaceFiles_verify_c9bd6c5f6_2_6" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:checks", + "assertion:file", + "step_retry_timeout:120" + ] + }, + { + "step_id": "step_checkWorkspaceFiles_verify_c9bd6c5f6_2_8", + "agent": "code", + "tool": "", + "parameters": { + "sample": "=== Generated Script ===\nLanguage: bash\n\n```bash\nset -euo pipefail\nPROJECT_DIR=\"/home/vscode/AgentsToolkitProjects/${{var:app_name}}\" ASSERTIONS_B64=\"W3sicGF0aCI6InBhY2thZ2UuanNvbiIsImV4aXN0cyI6ZmFsc2UsImNvbnRhaW5zIjpbXSwibm90Q29udGFpbnMiOltdfV0=\" python3 - <<'PY'\nimport base64\nimport json\nimport os\nfrom pathlib import Path\n\nproject = Path(os.environ[\"PROJECT_DIR\"]).resolve()\nassertions = json.loads(base64.b64decode(os.environ[\"ASSERTIONS_B64\"]).decode(\"utf-8\"))\nfor assertion in assertions:\n target = (project / assertion[\"path\"]).resolve()\n try:\n target.relative_to(project)\n except ValueError as error:\n raise AssertionError(\"File assertion escaped the project directory\") from error\n exists = target.is_file()\n if exists != assertion[\"exists\"]:\n raise AssertionError(f\"Unexpected file existence for {assertion['path']}\")\n if not exists:\n continue\n content = target.read_text(encoding=\"utf-8\")\n for expected in assertion.get(\"contains\", []):\n expected = expected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if expected not in content:\n raise AssertionError(f\"Expected content is absent from {assertion['path']}\")\n for unexpected in assertion.get(\"notContains\", []):\n unexpected = unexpected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if unexpected in content:\n raise AssertionError(f\"Unexpected content is present in {assertion['path']}\")\nPY\n```" + }, + "description": "@code verify the authored workspace file existence and content assertions without logging file contents.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_checkWorkspaceFiles_verify_c9bd6c5f6_2_7" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:checks", + "assertion:file", + "step_retry_timeout:120" + ] + }, + { + "step_id": "step_executeCommand_open_c9bd6c5f6_3_1", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "f1" + }, + "description": "Press the F1 key to open the Command Palette in Visual Studio Code.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_checkWorkspaceFiles_verify_c9bd6c5f6_2_8" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertPalette_c9bd6c5f6_3_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Visual Studio Code Command Palette is visible with a > character in its input box and is ready to accept a command search.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_open_c9bd6c5f6_3_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_filter_c9bd6c5f6_3_1", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Python: Create Environment..." + }, + "description": "Type the resolved command title into the active Command Palette.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertPalette_c9bd6c5f6_3_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertCommand_c9bd6c5f6_3_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Command Palette input box reads >Python: Create Environment... and the highlighted command listed under it is titled Python: Create Environment....", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_filter_c9bd6c5f6_3_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_execute_c9bd6c5f6_3_1", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to execute the selected Command Palette command.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertCommand_c9bd6c5f6_3_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_filterOption_filter_c9bd6c5f6_3_2", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Venv" + }, + "description": "Type the resolved option label into the active option picker.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_execute_c9bd6c5f6_3_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_filterOption_assertOption_c9bd6c5f6_3_2", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the option Venv is visible and selectable in the filtered option picker.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_filterOption_filter_c9bd6c5f6_3_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_filterOption_confirm_c9bd6c5f6_3_2", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to confirm the filtered option.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_filterOption_assertOption_c9bd6c5f6_3_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_filterOption_filter_c9bd6c5f6_3_3", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Python 3.12" + }, + "description": "Type the resolved option label into the active option picker.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_filterOption_confirm_c9bd6c5f6_3_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_filterOption_assertOption_c9bd6c5f6_3_3", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the option Python 3.12 is visible and selectable in the filtered option picker.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_filterOption_filter_c9bd6c5f6_3_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_filterOption_confirm_c9bd6c5f6_3_3", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to confirm the filtered option.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_filterOption_assertOption_c9bd6c5f6_3_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_multiSelect_assertQuestion_c9bd6c5f6_3_4", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the active multi-select prompt titled Select dependencies to install is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_filterOption_confirm_c9bd6c5f6_3_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:multiSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_multiSelect_assertOptionsLoaded_c9bd6c5f6_3_4", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the multi-select prompt titled Select dependencies to install has finished loading and lists at least one selectable option.", + "content_refs": [], + "timeout": 120, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_multiSelect_assertQuestion_c9bd6c5f6_3_4" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:multiSelect", + "step_retry_timeout: 120" + ] + }, + { + "step_id": "step_multiSelect_focusSelectAll_c9bd6c5f6_3_4", + "agent": "interaction", + "tool": "keyboard_shortcut", + "parameters": { + "keys": "shift+tab" + }, + "description": "Move focus from the multi-select input box to the select-all checkbox of the prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_multiSelect_assertOptionsLoaded_c9bd6c5f6_3_4" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:multiSelect" + ] + }, + { + "step_id": "step_multiSelect_selectAll_c9bd6c5f6_3_4", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "space" + }, + "description": "Press Space to check every option of the multi-select prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_multiSelect_focusSelectAll_c9bd6c5f6_3_4" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:multiSelect" + ] + }, + { + "step_id": "step_multiSelect_restoreFocus_c9bd6c5f6_3_4", + "agent": "interaction", + "tool": "keyboard_shortcut", + "parameters": { + "keys": "tab" + }, + "description": "Move focus from the select-all checkbox back to the multi-select input box.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_multiSelect_selectAll_c9bd6c5f6_3_4" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:multiSelect" + ] + }, + { + "step_id": "step_multiSelect_confirm_c9bd6c5f6_3_4", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to confirm the multi-select prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_multiSelect_restoreFocus_c9bd6c5f6_3_4" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:multiSelect" + ] + }, + { + "step_id": "step_executeCommand_open_c9bd6c5f6_3_5", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "f1" + }, + "description": "Press the F1 key to open the Command Palette in Visual Studio Code.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_multiSelect_confirm_c9bd6c5f6_3_4" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertPalette_c9bd6c5f6_3_5", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Visual Studio Code Command Palette is visible with a > character in its input box and is ready to accept a command search.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_open_c9bd6c5f6_3_5" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_filter_c9bd6c5f6_3_5", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Notifications: Show Notifications" + }, + "description": "Type the resolved command title into the active Command Palette.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertPalette_c9bd6c5f6_3_5" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertCommand_c9bd6c5f6_3_5", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Command Palette input box reads >Notifications: Show Notifications and the highlighted command listed under it is titled Notifications: Show Notifications.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_filter_c9bd6c5f6_3_5" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_execute_c9bd6c5f6_3_5", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to execute the selected Command Palette command.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertCommand_c9bd6c5f6_3_5" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_assertNotificationContains_assert_c9bd6c5f6_3_6", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion a visible Visual Studio Code notification contains The following environment is selected:.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_execute_c9bd6c5f6_3_5" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:notifications", + "action:assert-contains", + "step_retry_timeout: 300" + ] + }, + { + "step_id": "step_executeCommand_open_c9bd6c5f6_4_1", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "f1" + }, + "description": "Press the F1 key to open the Command Palette in Visual Studio Code.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_assertNotificationContains_assert_c9bd6c5f6_3_6" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertPalette_c9bd6c5f6_4_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Visual Studio Code Command Palette is visible with a > character in its input box and is ready to accept a command search.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_open_c9bd6c5f6_4_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_filter_c9bd6c5f6_4_1", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "View: Show Microsoft 365 Agents Toolkit" + }, + "description": "Type the resolved command title into the active Command Palette.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertPalette_c9bd6c5f6_4_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertCommand_c9bd6c5f6_4_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Command Palette input box reads >View: Show Microsoft 365 Agents Toolkit and the highlighted command listed under it is titled View: Show Microsoft 365 Agents Toolkit.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_filter_c9bd6c5f6_4_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_execute_c9bd6c5f6_4_1", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to execute the selected Command Palette command.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertCommand_c9bd6c5f6_4_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_signInAzure_assertOption_c9bd6c5f6_4_2", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the ACCOUNTS section of the side bar lists an entry labeled Sign in to Azure.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_execute_c9bd6c5f6_4_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:authentication", + "account:azure", + "entry_state:toolkit-side-bar-visible", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_signInAzure_selectOption_c9bd6c5f6_4_2", + "agent": "interaction", + "tool": "click", + "parameters": { + "button": "left", + "x": 165, + "y": 127 + }, + "description": "Click the \"Sign in to Azure\" entry in the ACCOUNTS section of the side bar.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInAzure_assertOption_c9bd6c5f6_4_2" + ], + "preconditions": [ + "dhash:165:127:16:5:5819353567ef55aa", + "dhash:165:127:96:5:2cd1259b9b941a6a", + "dhash:165:127:0:10:a2942223a3222421" + ], + "postconditions": [], + "tags": [ + "component:authentication", + "account:azure" + ] + }, + { + "step_id": "step_signInAzure_confirmSignIn_c9bd6c5f6_4_2", + "agent": "interaction", + "tool": "click", + "parameters": { + "button": "left", + "x": 534, + "y": 98 + }, + "description": "Click the \"Sign in\" button on the Microsoft authentication popup in Visual Studio Code to proceed with Azure authorization for the Microsoft 365 Agents Toolkit.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInAzure_selectOption_c9bd6c5f6_4_2" + ], + "preconditions": [ + "dhash:534:98:16:5:554a54555555468f", + "dhash:534:98:96:5:0002740b0a700800", + "dhash:534:98:0:10:12322e2323232421" + ], + "postconditions": [], + "tags": [ + "component:authentication", + "account:azure" + ] + }, + { + "step_id": "step_signInAzure_allow_c9bd6c5f6_4_2", + "agent": "interaction", + "tool": "click", + "parameters": { + "button": "left", + "x": 457, + "y": 96 + }, + "description": "Click the \"Allow\" button in the Microsoft 365 sign-in prompt to authorize the extension \"Microsoft 365 Agents Toolkit\" within Visual Studio Code.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInAzure_confirmSignIn_c9bd6c5f6_4_2" + ], + "preconditions": [ + "dhash:457:96:16:5:524d5552564cb3ca", + "dhash:457:96:96:5:0004609c0c600400", + "dhash:457:96:0:10:d2322e2323232421" + ], + "postconditions": [], + "tags": [ + "component:authentication", + "account:azure" + ] + }, + { + "step_id": "step_signInAzure_focusAccount_c9bd6c5f6_4_2", + "agent": "interaction", + "tool": "click", + "parameters": { + "button": "left", + "x": 432, + "y": 327 + }, + "description": "Click on the \"Email, phone, or Skype\" input field in the Microsoft sign-in dialog on the login.microsoftonline.com webpage to activate text entry.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInAzure_allow_c9bd6c5f6_4_2" + ], + "preconditions": [ + "dhash:432:327:16:5:114c134b4a13b2cc", + "dhash:432:327:96:5:686000a2a95500cb", + "dhash:432:327:0:10:1361717965617935" + ], + "postconditions": [], + "tags": [ + "component:authentication", + "account:azure", + "precondition_wait_timeout: 60" + ] + }, + { + "step_id": "step_signInAzure_typeAccount_c9bd6c5f6_4_2", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "${{env:AZURE_ACCOUNT_NAME}}" + }, + "description": "Enter the resolved Azure account name into the email or username input field on the Microsoft Sign in page.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInAzure_focusAccount_c9bd6c5f6_4_2" + ], + "preconditions": [ + "dhash:512:384:0:20:1b28d0d9e7e4dae4" + ], + "postconditions": [], + "tags": [ + "component:authentication", + "account:azure", + "precondition_wait_timeout: 60" + ] + }, + { + "step_id": "step_signInAzure_next_c9bd6c5f6_4_2", + "agent": "interaction", + "tool": "click", + "parameters": { + "button": "left", + "x": 631, + "y": 462 + }, + "description": "Click the \"Next\" button on the Microsoft sign-in page to continue Azure authentication.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInAzure_typeAccount_c9bd6c5f6_4_2" + ], + "preconditions": [ + "dhash:631:462:16:5:0000000091000000", + "dhash:631:462:96:5:000000004e31314e", + "dhash:631:462:0:10:1392f0dac6e6d8e4" + ], + "postconditions": [], + "tags": [ + "component:authentication", + "account:azure", + "ocr:true" + ] + }, + { + "step_id": "step_signInAzure_typePassword_c9bd6c5f6_4_2", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "${{secret:AZURE_ACCOUNT_PASSWORD}}" + }, + "description": "Type the resolved Azure account password into the Password field on the Microsoft login page.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInAzure_next_c9bd6c5f6_4_2" + ], + "preconditions": [ + "dhash:512:384:0:20:1908f0d9d1e6e6e4" + ], + "postconditions": [], + "tags": [ + "component:authentication", + "account:azure", + "precondition_wait_timeout: 60", + "delay:5" + ] + }, + { + "step_id": "step_signInAzure_submit_c9bd6c5f6_4_2", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter in the password field on the Microsoft login page to submit the Azure credentials.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInAzure_typePassword_c9bd6c5f6_4_2" + ], + "preconditions": [ + "dhash:512:384:0:20:1908f0d9d1e6e6e4" + ], + "postconditions": [], + "tags": [ + "component:authentication", + "account:azure", + "delay: 3" + ] + }, + { + "step_id": "step_signInAzure_closeBrowser_c9bd6c5f6_4_2", + "agent": "interaction", + "tool": "click", + "parameters": { + "button": "left", + "x": 991, + "y": 18 + }, + "description": "Click the red close (X) button in the top-right corner of the Google Chrome window to close the Visual Studio Code sign-in confirmation page.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInAzure_submit_c9bd6c5f6_4_2" + ], + "preconditions": [ + "dhash:991:18:16:5:b020624245454242", + "dhash:991:18:96:5:629393936a903232", + "dhash:991:18:0:10:0021410169414141" + ], + "postconditions": [], + "tags": [ + "component:authentication", + "account:azure", + "delay: 3" + ] + }, + { + "step_id": "step_signInAzure_assertReady_c9bd6c5f6_4_2", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion there's ${{env:AZURE_ACCOUNT_NAME}} in the \"ACCOUNTS\" section", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInAzure_closeBrowser_c9bd6c5f6_4_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:authentication", + "account:azure", + "readiness:account-visible", + "step_retry_timeout: 180" + ] + }, + { + "step_id": "step_executeCommand_open_c9bd6c5f6_5_1", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "f1" + }, + "description": "Press the F1 key to open the Command Palette in Visual Studio Code.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInAzure_assertReady_c9bd6c5f6_4_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertPalette_c9bd6c5f6_5_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Visual Studio Code Command Palette is visible with a > character in its input box and is ready to accept a command search.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_open_c9bd6c5f6_5_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_filter_c9bd6c5f6_5_1", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "View: Show Microsoft 365 Agents Toolkit" + }, + "description": "Type the resolved command title into the active Command Palette.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertPalette_c9bd6c5f6_5_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertCommand_c9bd6c5f6_5_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Command Palette input box reads >View: Show Microsoft 365 Agents Toolkit and the highlighted command listed under it is titled View: Show Microsoft 365 Agents Toolkit.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_filter_c9bd6c5f6_5_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_execute_c9bd6c5f6_5_1", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to execute the selected Command Palette command.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertCommand_c9bd6c5f6_5_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_signInM365FromPicker_assertOption_c9bd6c5f6_5_2", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the ACCOUNTS section of the side bar lists an entry whose label begins with Sign in to Microsoft.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_execute_c9bd6c5f6_5_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:authentication", + "account:m365", + "entry_state:toolkit-side-bar-visible", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_signInM365FromPicker_selectOption_c9bd6c5f6_5_2", + "agent": "interaction", + "tool": "click", + "parameters": { + "button": "left", + "x": 213, + "y": 102 + }, + "description": "Click the entry whose label begins with \"Sign in to Microsoft\" in the ACCOUNTS section of the side bar.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInM365FromPicker_assertOption_c9bd6c5f6_5_2" + ], + "preconditions": [ + "dhash:213:102:16:5:9c63d67674d4c718", + "dhash:213:102:96:5:8c512758d92c2cce", + "dhash:213:102:0:10:92c86223a3622421" + ], + "postconditions": [], + "tags": [ + "component:authentication", + "account:m365" + ] + }, + { + "step_id": "step_signInM365FromPicker_confirmSignIn_c9bd6c5f6_5_2", + "agent": "interaction", + "tool": "click", + "parameters": { + "button": "left", + "x": 762, + "y": 97 + }, + "description": "Click the \"Sign in\" button within the Microsoft 365 developer sandbox modal.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInM365FromPicker_selectOption_c9bd6c5f6_5_2" + ], + "preconditions": [ + "dhash:762:97:16:5:24b1a72ba9aba343", + "dhash:762:97:96:5:0008304b0f344900", + "dhash:762:97:0:10:9c68332223232421" + ], + "postconditions": [], + "tags": [ + "component:authentication", + "account:m365" + ] + }, + { + "step_id": "step_signInM365FromPicker_useAnotherAccount_c9bd6c5f6_5_2", + "agent": "interaction", + "tool": "click", + "parameters": { + "button": "left", + "x": 447, + "y": 487 + }, + "description": "Click the \"Use another account\" option on the Microsoft \"Pick an account\" login screen in Google Chrome.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInM365FromPicker_confirmSignIn_c9bd6c5f6_5_2" + ], + "preconditions": [ + "dhash:447:487:16:5:ac534b4aaaaa6a15", + "dhash:447:487:96:5:0100228d15a20000", + "dhash:447:487:0:10:1312e8d89ed6e6e4" + ], + "postconditions": [], + "tags": [ + "component:authentication", + "account:m365", + "precondition_wait_timeout: 60" + ] + }, + { + "step_id": "step_signInM365FromPicker_typeAccount_c9bd6c5f6_5_2", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "${{env:M365_ACCOUNT_NAME}}" + }, + "description": "Enter the resolved Microsoft 365 account name into the email or username input field the account picker opened.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInM365FromPicker_useAnotherAccount_c9bd6c5f6_5_2" + ], + "preconditions": [ + "dhash:512:384:0:20:1392f8d8c6e6dae4" + ], + "postconditions": [], + "tags": [ + "component:authentication", + "account:m365", + "delay: 3" + ] + }, + { + "step_id": "step_signInM365FromPicker_next_c9bd6c5f6_5_2", + "agent": "interaction", + "tool": "click", + "parameters": { + "button": "left", + "x": 655, + "y": 505 + }, + "description": "Click the blue \"Next\" button on the Microsoft sign-in page, confirming the entered email address for login.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInM365FromPicker_typeAccount_c9bd6c5f6_5_2" + ], + "preconditions": [ + "dhash:655:505:16:5:0000000080400020", + "dhash:655:505:96:5:0000408bcb4b0000", + "dhash:655:505:0:10:1392f8d8c7e6dae4" + ], + "postconditions": [], + "tags": [ + "component:authentication", + "account:m365", + "delay:3" + ] + }, + { + "step_id": "step_signInM365FromPicker_typePassword_c9bd6c5f6_5_2", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "${{secret:M365_ACCOUNT_PASSWORD}}" + }, + "description": "Type the resolved Microsoft 365 account password into the Password field on the Microsoft login page.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInM365FromPicker_next_c9bd6c5f6_5_2" + ], + "preconditions": [ + "dhash:512:384:0:20:1392e8d8d9f6e6e4" + ], + "postconditions": [], + "tags": [ + "component:authentication", + "account:m365", + "delay: 3" + ] + }, + { + "step_id": "step_signInM365FromPicker_submit_c9bd6c5f6_5_2", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to submit the Microsoft 365 login form from the password entry screen.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInM365FromPicker_typePassword_c9bd6c5f6_5_2" + ], + "preconditions": [ + "dhash:512:384:0:20:1392e8d8d9f6e6e4" + ], + "postconditions": [], + "tags": [ + "component:authentication", + "account:m365", + "delay: 3" + ] + }, + { + "step_id": "step_signInM365FromPicker_closeBrowser_c9bd6c5f6_5_2", + "agent": "interaction", + "tool": "click", + "parameters": { + "button": "left", + "x": 1008, + "y": 19 + }, + "description": "Click the \"Close\" button (red cross icon) in the browser tab bar to close the \"M365 Account - Sign In\" page.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInM365FromPicker_submit_c9bd6c5f6_5_2" + ], + "preconditions": [ + "dhash:1008:19:16:5:a322c95a325ac922", + "dhash:1008:19:96:5:926363639200c6c4", + "dhash:1008:19:0:10:1312094769614541" + ], + "postconditions": [], + "tags": [ + "component:authentication", + "account:m365", + "delay: 3" + ] + }, + { + "step_id": "step_signInM365FromPicker_assertReady_c9bd6c5f6_5_2", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion there's ${{env:M365_ACCOUNT_NAME}} in the \"ACCOUNTS\" section", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInM365FromPicker_closeBrowser_c9bd6c5f6_5_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:authentication", + "account:m365", + "readiness:account-visible", + "step_retry_timeout: 180" + ] + }, + { + "step_id": "step_executeCommand_open_c9bd6c5f6_6_1", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "f1" + }, + "description": "Press the F1 key to open the Command Palette in Visual Studio Code.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInM365FromPicker_assertReady_c9bd6c5f6_5_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertPalette_c9bd6c5f6_6_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Visual Studio Code Command Palette is visible with a > character in its input box and is ready to accept a command search.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_open_c9bd6c5f6_6_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_filter_c9bd6c5f6_6_1", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Notifications: Clear All Notifications" + }, + "description": "Type the resolved command title into the active Command Palette.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertPalette_c9bd6c5f6_6_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertCommand_c9bd6c5f6_6_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Command Palette input box reads >Notifications: Clear All Notifications and the highlighted command listed under it is titled Notifications: Clear All Notifications.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_filter_c9bd6c5f6_6_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_execute_c9bd6c5f6_6_1", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to execute the selected Command Palette command.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertCommand_c9bd6c5f6_6_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_open_c9bd6c5f6_6_2", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "f1" + }, + "description": "Press the F1 key to open the Command Palette in Visual Studio Code.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_execute_c9bd6c5f6_6_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertPalette_c9bd6c5f6_6_2", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Visual Studio Code Command Palette is visible with a > character in its input box and is ready to accept a command search.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_open_c9bd6c5f6_6_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_filter_c9bd6c5f6_6_2", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Notifications: Show Notifications" + }, + "description": "Type the resolved command title into the active Command Palette.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertPalette_c9bd6c5f6_6_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertCommand_c9bd6c5f6_6_2", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Command Palette input box reads >Notifications: Show Notifications and the highlighted command listed under it is titled Notifications: Show Notifications.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_filter_c9bd6c5f6_6_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_execute_c9bd6c5f6_6_2", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to execute the selected Command Palette command.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertCommand_c9bd6c5f6_6_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_open_c9bd6c5f6_6_3", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "f1" + }, + "description": "Press the F1 key to open the Command Palette in Visual Studio Code.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_execute_c9bd6c5f6_6_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertPalette_c9bd6c5f6_6_3", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Visual Studio Code Command Palette is visible with a > character in its input box and is ready to accept a command search.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_open_c9bd6c5f6_6_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_filter_c9bd6c5f6_6_3", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Microsoft 365 Agents: Provision" + }, + "description": "Type the resolved command title into the active Command Palette.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertPalette_c9bd6c5f6_6_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertCommand_c9bd6c5f6_6_3", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Command Palette input box reads >Microsoft 365 Agents: Provision and the highlighted command listed under it is titled Microsoft 365 Agents: Provision.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_filter_c9bd6c5f6_6_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_execute_c9bd6c5f6_6_3", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to execute the selected Command Palette command.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertCommand_c9bd6c5f6_6_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_singleSelect_assertQuestion_c9bd6c5f6_6_4", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the active prompt titled Select a resource group is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_execute_c9bd6c5f6_6_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_singleSelect_assertOptionsLoaded_c9bd6c5f6_6_4", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the prompt titled Select a resource group has finished loading and lists at least one selectable option.", + "content_refs": [], + "timeout": 120, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertQuestion_c9bd6c5f6_6_4" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 120" + ] + }, + { + "step_id": "step_singleSelect_filter_c9bd6c5f6_6_4", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "+ New resource group" + }, + "description": "Type the resolved option label + New resource group into the active single-select prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertOptionsLoaded_c9bd6c5f6_6_4" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_singleSelect_assertOption_c9bd6c5f6_6_4", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the option + New resource group is visible and selectable in the filtered single-select prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_filter_c9bd6c5f6_6_4" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_singleSelect_confirm_c9bd6c5f6_6_4", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to confirm the filtered single-select option.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertOption_c9bd6c5f6_6_4" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_textInput_assertQuestion_c9bd6c5f6_6_5", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the active prompt titled New resource group name is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_confirm_c9bd6c5f6_6_4" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_textInput_input_c9bd6c5f6_6_5", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "${{var:app_name}}-rg" + }, + "description": "Type the authored value into the active text prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_assertQuestion_c9bd6c5f6_6_5" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text" + ] + }, + { + "step_id": "step_textInput_confirm_c9bd6c5f6_6_5", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to submit the accepted text input.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_input_c9bd6c5f6_6_5" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text" + ] + }, + { + "step_id": "step_singleSelect_assertQuestion_c9bd6c5f6_6_6", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the active prompt titled Location for the new resource group is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_confirm_c9bd6c5f6_6_5" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_singleSelect_assertOptionsLoaded_c9bd6c5f6_6_6", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the prompt titled Location for the new resource group has finished loading and lists at least one selectable option.", + "content_refs": [], + "timeout": 120, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertQuestion_c9bd6c5f6_6_6" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 120" + ] + }, + { + "step_id": "step_singleSelect_filter_c9bd6c5f6_6_6", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "${{env:RESOURCE_GROUP_REGION}}" + }, + "description": "Type the resolved option label ${{env:RESOURCE_GROUP_REGION}} into the active single-select prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertOptionsLoaded_c9bd6c5f6_6_6" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_singleSelect_assertOption_c9bd6c5f6_6_6", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the option ${{env:RESOURCE_GROUP_REGION}} is visible and selectable in the filtered single-select prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_filter_c9bd6c5f6_6_6" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_singleSelect_confirm_c9bd6c5f6_6_6", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to confirm the filtered single-select option.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertOption_c9bd6c5f6_6_6" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_clickPrimaryAction_assertDialog_c9bd6c5f6_6_7", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the dialog Costs may apply based on usage. Do you want to provision resources in dev environment using listed accounts? is visible with the primary action Provision.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_confirm_c9bd6c5f6_6_6" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:dialog", + "action:click-primary", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_clickPrimaryAction_click_c9bd6c5f6_6_7", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to activate the primary action Provision in the confirmed dialog.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_clickPrimaryAction_assertDialog_c9bd6c5f6_6_7" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:dialog", + "action:click-primary" + ] + }, + { + "step_id": "step_assertNotificationContains_assert_c9bd6c5f6_6_8", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion a visible Visual Studio Code notification contains provision stage executed successfully.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_clickPrimaryAction_click_c9bd6c5f6_6_7" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:notifications", + "action:assert-contains", + "step_retry_timeout: 900" + ] + }, + { + "step_id": "step_executeCommand_open_c9bd6c5f6_7_1", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "f1" + }, + "description": "Press the F1 key to open the Command Palette in Visual Studio Code.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_assertNotificationContains_assert_c9bd6c5f6_6_8" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertPalette_c9bd6c5f6_7_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Visual Studio Code Command Palette is visible with a > character in its input box and is ready to accept a command search.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_open_c9bd6c5f6_7_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_filter_c9bd6c5f6_7_1", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Notifications: Clear All Notifications" + }, + "description": "Type the resolved command title into the active Command Palette.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertPalette_c9bd6c5f6_7_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertCommand_c9bd6c5f6_7_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Command Palette input box reads >Notifications: Clear All Notifications and the highlighted command listed under it is titled Notifications: Clear All Notifications.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_filter_c9bd6c5f6_7_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_execute_c9bd6c5f6_7_1", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to execute the selected Command Palette command.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertCommand_c9bd6c5f6_7_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_open_c9bd6c5f6_7_2", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "f1" + }, + "description": "Press the F1 key to open the Command Palette in Visual Studio Code.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_execute_c9bd6c5f6_7_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertPalette_c9bd6c5f6_7_2", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Visual Studio Code Command Palette is visible with a > character in its input box and is ready to accept a command search.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_open_c9bd6c5f6_7_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_filter_c9bd6c5f6_7_2", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Notifications: Show Notifications" + }, + "description": "Type the resolved command title into the active Command Palette.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertPalette_c9bd6c5f6_7_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertCommand_c9bd6c5f6_7_2", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Command Palette input box reads >Notifications: Show Notifications and the highlighted command listed under it is titled Notifications: Show Notifications.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_filter_c9bd6c5f6_7_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_execute_c9bd6c5f6_7_2", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to execute the selected Command Palette command.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertCommand_c9bd6c5f6_7_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_open_c9bd6c5f6_7_3", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "f1" + }, + "description": "Press the F1 key to open the Command Palette in Visual Studio Code.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_execute_c9bd6c5f6_7_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertPalette_c9bd6c5f6_7_3", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Visual Studio Code Command Palette is visible with a > character in its input box and is ready to accept a command search.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_open_c9bd6c5f6_7_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_filter_c9bd6c5f6_7_3", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Microsoft 365 Agents: Deploy" + }, + "description": "Type the resolved command title into the active Command Palette.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertPalette_c9bd6c5f6_7_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertCommand_c9bd6c5f6_7_3", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Command Palette input box reads >Microsoft 365 Agents: Deploy and the highlighted command listed under it is titled Microsoft 365 Agents: Deploy.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_filter_c9bd6c5f6_7_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_execute_c9bd6c5f6_7_3", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to execute the selected Command Palette command.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertCommand_c9bd6c5f6_7_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_clickPrimaryAction_assertDialog_c9bd6c5f6_7_4", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the dialog Do you want to deploy resources in dev environment? is visible with the primary action Deploy.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_execute_c9bd6c5f6_7_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:dialog", + "action:click-primary", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_clickPrimaryAction_click_c9bd6c5f6_7_4", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to activate the primary action Deploy in the confirmed dialog.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_clickPrimaryAction_assertDialog_c9bd6c5f6_7_4" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:dialog", + "action:click-primary" + ] + }, + { + "step_id": "step_assertNotificationContains_assert_c9bd6c5f6_7_5", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion a visible Visual Studio Code notification contains actions in deploy stage executed successfully.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_clickPrimaryAction_click_c9bd6c5f6_7_4" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:notifications", + "action:assert-contains", + "step_retry_timeout: 900" + ] + }, + { + "step_id": "step_executeCommand_open_c9bd6c5f6_8_1", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "f1" + }, + "description": "Press the F1 key to open the Command Palette in Visual Studio Code.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_assertNotificationContains_assert_c9bd6c5f6_7_5" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertPalette_c9bd6c5f6_8_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Visual Studio Code Command Palette is visible with a > character in its input box and is ready to accept a command search.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_open_c9bd6c5f6_8_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_filter_c9bd6c5f6_8_1", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Debug: Select and Start Debugging" + }, + "description": "Type the resolved command title into the active Command Palette.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertPalette_c9bd6c5f6_8_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertCommand_c9bd6c5f6_8_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Command Palette input box reads >Debug: Select and Start Debugging and the highlighted command listed under it is titled Debug: Select and Start Debugging.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_filter_c9bd6c5f6_8_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_execute_c9bd6c5f6_8_1", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to execute the selected Command Palette command.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertCommand_c9bd6c5f6_8_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_filterOption_filter_c9bd6c5f6_8_2", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Launch Remote (Chrome)" + }, + "description": "Type the resolved option label into the active option picker.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_execute_c9bd6c5f6_8_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_filterOption_assertOption_c9bd6c5f6_8_2", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the option Launch Remote (Chrome) is visible and selectable in the filtered option picker.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_filterOption_filter_c9bd6c5f6_8_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_filterOption_confirm_c9bd6c5f6_8_2", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to confirm the filtered option.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_filterOption_assertOption_c9bd6c5f6_8_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_browserM365PasswordSignIn_assertPassword_c9bd6c5f6_8_3", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Microsoft sign-in page in Chrome names ${{env:M365_ACCOUNT_NAME}} and asks for that account's password.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_filterOption_confirm_c9bd6c5f6_8_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:authentication", + "surface:browser", + "step_retry_timeout: 300" + ] + }, + { + "step_id": "step_browserM365PasswordSignIn_focusPassword_c9bd6c5f6_8_3", + "agent": "interaction", + "tool": "click", + "parameters": { + "button": "left", + "x": 400, + "y": 405 + }, + "description": "Click the password input on the Microsoft sign-in page to move focus out of the browser address bar.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_browserM365PasswordSignIn_assertPassword_c9bd6c5f6_8_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:authentication", + "surface:browser" + ] + }, + { + "step_id": "step_browserM365PasswordSignIn_enterPassword_c9bd6c5f6_8_3", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "${{secret:M365_ACCOUNT_PASSWORD}}" + }, + "description": "Enter the registered Microsoft 365 password in the focused password input of the browser sign-in form.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_browserM365PasswordSignIn_focusPassword_c9bd6c5f6_8_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:authentication", + "surface:browser" + ] + }, + { + "step_id": "step_browserM365PasswordSignIn_submitPassword_c9bd6c5f6_8_3", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to submit the Microsoft 365 password.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_browserM365PasswordSignIn_enterPassword_c9bd6c5f6_8_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:authentication", + "surface:browser" + ] + }, + { + "step_id": "step_browserM365PasswordSignIn_assertStaySignedIn_c9bd6c5f6_8_3", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Microsoft Stay signed in question is visible with Yes focused.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_browserM365PasswordSignIn_submitPassword_c9bd6c5f6_8_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:authentication", + "surface:browser", + "step_retry_timeout: 120" + ] + }, + { + "step_id": "step_browserM365PasswordSignIn_confirmStaySignedIn_c9bd6c5f6_8_3", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to confirm staying signed in.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_browserM365PasswordSignIn_assertStaySignedIn_c9bd6c5f6_8_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:authentication", + "surface:browser", + "delay: 30" + ] + }, + { + "step_id": "step_assertReady_assertReady_c9bd6c5f6_8_4", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Microsoft Teams app details page for an app whose name starts with ${{var:app_name}} is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_browserM365PasswordSignIn_confirmStaySignedIn_c9bd6c5f6_8_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:browser", + "action:assert-ready", + "step_retry_timeout: 180" + ] + }, + { + "step_id": "step_addAndOpenApp_assertAdd_c9bd6c5f6_9_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the blue \"Add\" button exists.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_assertReady_assertReady_c9bd6c5f6_8_4" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:browser", + "host_surface:teams", + "entry_state:add", + "step_retry_timeout: 180" + ] + }, + { + "step_id": "step_addAndOpenApp_add_c9bd6c5f6_9_1", + "agent": "interaction", + "tool": "click", + "parameters": { + "button": "left", + "x": 288, + "y": 214 + }, + "description": "Click Add on the app details popup within the Microsoft Teams interface.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_addAndOpenApp_assertAdd_c9bd6c5f6_9_1" + ], + "preconditions": [ + "dhash:288:214:16:5:05100a0511030b12", + "dhash:288:214:96:5:2616011c1c01005b", + "dhash:288:214:0:10:00b4b0d8f8fcf0d8" + ], + "postconditions": [], + "tags": [ + "component:browser", + "host_surface:teams", + "entry_state:add" + ] + }, + { + "step_id": "step_addAndOpenApp_assertAdded_c9bd6c5f6_9_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the \"Added successfully!\" dialog and its Open button are visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_addAndOpenApp_add_c9bd6c5f6_9_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:browser", + "host_surface:teams", + "entry_state:added", + "step_retry_timeout: 180" + ] + }, + { + "step_id": "step_addAndOpenApp_open_c9bd6c5f6_9_1", + "agent": "interaction", + "tool": "click", + "parameters": { + "button": "left", + "x": 533, + "y": 508 + }, + "description": "Click Open in the Microsoft Teams Added successfully dialog.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_addAndOpenApp_assertAdded_c9bd6c5f6_9_1" + ], + "preconditions": [ + "dhash:533:508:16:5:00987494ca4acacc", + "dhash:533:508:96:5:000058a48598e36b", + "dhash:533:508:0:10:1669696969696979" + ], + "postconditions": [], + "tags": [ + "component:browser", + "host_surface:teams", + "entry_state:added", + "precondition_wait_timeout: 120" + ] + }, + { + "step_id": "step_addAndOpenApp_assertReady_c9bd6c5f6_9_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Microsoft Teams app details page for an app whose name starts with ${{var:app_name}} is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_addAndOpenApp_open_c9bd6c5f6_9_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:browser", + "host_surface:teams", + "readiness:chat-ready", + "step_retry_timeout: 180" + ] + }, + { + "step_id": "step_sendTeamsMessage_assertInput_c9bd6c5f6_10_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Teams \"Type a message\" input is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_addAndOpenApp_assertReady_c9bd6c5f6_9_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:browser", + "host_surface:teams", + "entry_state:chat-ready", + "action:send-message", + "step_retry_timeout: 120" + ] + }, + { + "step_id": "step_sendTeamsMessage_focusInput_c9bd6c5f6_10_1", + "agent": "interaction", + "tool": "click", + "parameters": { + "button": "left", + "x": 200, + "y": 712 + }, + "description": "Click the Teams \"Type a message\" input.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_sendTeamsMessage_assertInput_c9bd6c5f6_10_1" + ], + "preconditions": [ + "dhash:200:712:16:5:258c421e0d2c2d1c", + "dhash:200:712:96:5:0020887362000200", + "dhash:200:712:0:10:24b4b08e8e8c81a1" + ], + "postconditions": [], + "tags": [ + "component:browser", + "host_surface:teams", + "entry_state:chat-ready", + "action:send-message" + ] + }, + { + "step_id": "step_sendTeamsMessage_type_c9bd6c5f6_10_1", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "How to develop agent for Teams?" + }, + "description": "Type \"How to develop agent for Teams?\" into the Teams message input.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_sendTeamsMessage_focusInput_c9bd6c5f6_10_1" + ], + "preconditions": [ + "dhash:512:384:0:20:24b4b08e8e8c80a9" + ], + "postconditions": [], + "tags": [ + "component:browser", + "host_surface:teams", + "entry_state:chat-ready", + "action:send-message" + ] + }, + { + "step_id": "step_sendTeamsMessage_send_c9bd6c5f6_10_1", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to send the Teams message.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_sendTeamsMessage_type_c9bd6c5f6_10_1" + ], + "preconditions": [ + "dhash:512:384:0:20:24b4b08e8e8c80b9" + ], + "postconditions": [], + "tags": [ + "component:browser", + "host_surface:teams", + "entry_state:chat-ready", + "action:send-message" + ] + }, + { + "step_id": "step_assertChatReplied_assert_c9bd6c5f6_10_2", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the current assistant turn is complete and contains a non-empty response.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_sendTeamsMessage_send_c9bd6c5f6_10_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:browser", + "action:assert-chat-response", + "expectation:replied", + "step_retry_timeout: 120" + ] + } + ], + "screenshots": {} +} diff --git a/packages/tests/vscuse/vscode-test-cases/plans/da-api-plugin-from-existing-api--da-api-plugin-from-existing-api-api-key-remote-preview.json b/packages/tests/vscuse/vscode-test-cases/plans/da-api-plugin-from-existing-api--da-api-plugin-from-existing-api-api-key-remote-preview.json index b9359580ce0..d1603fdf959 100644 --- a/packages/tests/vscuse/vscode-test-cases/plans/da-api-plugin-from-existing-api--da-api-plugin-from-existing-api-api-key-remote-preview.json +++ b/packages/tests/vscuse/vscode-test-cases/plans/da-api-plugin-from-existing-api--da-api-plugin-from-existing-api-api-key-remote-preview.json @@ -8,7 +8,7 @@ "precondition_wait_timeout": 30, "precondition_retry_interval": 1 }, - "total_steps": 113, + "total_steps": 118, "name": "da-api-plugin-from-existing-api-api-key-remote-preview", "description": { "owner": "", @@ -97,14 +97,19 @@ "step_executeCommand_filter_c8af7aec5_4_2", "step_executeCommand_assertCommand_c8af7aec5_4_2", "step_executeCommand_execute_c8af7aec5_4_2", - "step_clickOption_assertPrompt_c8af7aec5_4_3", - "step_clickOption_click_c8af7aec5_4_3", - "step_textInput_assertQuestion_c8af7aec5_4_4", - "step_textInput_input_c8af7aec5_4_4", - "step_textInput_confirm_c8af7aec5_4_4", - "step_clickPrimaryAction_assertDialog_c8af7aec5_4_5", - "step_clickPrimaryAction_click_c8af7aec5_4_5", - "step_assertNotificationContains_assert_c8af7aec5_4_6", + "step_executeCommand_open_c8af7aec5_4_3", + "step_executeCommand_assertPalette_c8af7aec5_4_3", + "step_executeCommand_filter_c8af7aec5_4_3", + "step_executeCommand_assertCommand_c8af7aec5_4_3", + "step_executeCommand_execute_c8af7aec5_4_3", + "step_clickOption_assertPrompt_c8af7aec5_4_4", + "step_clickOption_click_c8af7aec5_4_4", + "step_textInput_assertQuestion_c8af7aec5_4_5", + "step_textInput_input_c8af7aec5_4_5", + "step_textInput_confirm_c8af7aec5_4_5", + "step_clickPrimaryAction_assertDialog_c8af7aec5_4_6", + "step_clickPrimaryAction_click_c8af7aec5_4_6", + "step_assertNotificationContains_assert_c8af7aec5_4_7", "step_executeCommand_open_c8af7aec5_5_1", "step_executeCommand_assertPalette_c8af7aec5_5_1", "step_executeCommand_filter_c8af7aec5_5_1", @@ -534,7 +539,7 @@ "agent": "assertion", "tool": "", "parameters": {}, - "description": "@assertion the prompt titled New Project lists at least one option below its input box.", + "description": "@assertion the prompt titled New Project has finished loading and lists at least one selectable option.", "content_refs": [], "timeout": 120, "retry_count": 0, @@ -641,7 +646,7 @@ "agent": "assertion", "tool": "", "parameters": {}, - "description": "@assertion the prompt titled Create Declarative Agent lists at least one option below its input box.", + "description": "@assertion the prompt titled Create Declarative Agent has finished loading and lists at least one selectable option.", "content_refs": [], "timeout": 120, "retry_count": 0, @@ -748,7 +753,7 @@ "agent": "assertion", "tool": "", "parameters": {}, - "description": "@assertion the prompt titled Create an Action lists at least one option below its input box.", + "description": "@assertion the prompt titled Create an Action has finished loading and lists at least one selectable option.", "content_refs": [], "timeout": 120, "retry_count": 0, @@ -855,7 +860,7 @@ "agent": "assertion", "tool": "", "parameters": {}, - "description": "@assertion the prompt titled OpenAPI Spec Document lists at least one option below its input box.", + "description": "@assertion the prompt titled OpenAPI Spec Document has finished loading and lists at least one selectable option.", "content_refs": [], "timeout": 120, "retry_count": 0, @@ -1027,7 +1032,7 @@ "agent": "assertion", "tool": "", "parameters": {}, - "description": "@assertion the multi-select prompt titled Select Operation(s) Copilot Can Interact with lists at least one option below its input box.", + "description": "@assertion the multi-select prompt titled Select Operation(s) Copilot Can Interact with has finished loading and lists at least one selectable option.", "content_refs": [], "timeout": 120, "retry_count": 0, @@ -1776,7 +1781,7 @@ "agent": "interaction", "tool": "type_text", "parameters": { - "text": "Notifications: Show Notifications" + "text": "Notifications: Clear All Notifications" }, "description": "Type the resolved command title into the active Command Palette.", "content_refs": [], @@ -1798,7 +1803,7 @@ "agent": "assertion", "tool": "", "parameters": {}, - "description": "@assertion the Command Palette input box reads >Notifications: Show Notifications and the highlighted command listed under it is titled Notifications: Show Notifications.", + "description": "@assertion the Command Palette input box reads >Notifications: Clear All Notifications and the highlighted command listed under it is titled Notifications: Clear All Notifications.", "content_refs": [], "timeout": 30, "retry_count": 0, @@ -1884,7 +1889,7 @@ "agent": "interaction", "tool": "type_text", "parameters": { - "text": "Microsoft 365 Agents: Provision" + "text": "Notifications: Show Notifications" }, "description": "Type the resolved command title into the active Command Palette.", "content_refs": [], @@ -1906,7 +1911,7 @@ "agent": "assertion", "tool": "", "parameters": {}, - "description": "@assertion the Command Palette input box reads >Microsoft 365 Agents: Provision and the highlighted command listed under it is titled Microsoft 365 Agents: Provision.", + "description": "@assertion the Command Palette input box reads >Notifications: Show Notifications and the highlighted command listed under it is titled Notifications: Show Notifications.", "content_refs": [], "timeout": 30, "retry_count": 0, @@ -1945,7 +1950,115 @@ ] }, { - "step_id": "step_clickOption_assertPrompt_c8af7aec5_4_3", + "step_id": "step_executeCommand_open_c8af7aec5_4_3", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "f1" + }, + "description": "Press the F1 key to open the Command Palette in Visual Studio Code.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_execute_c8af7aec5_4_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertPalette_c8af7aec5_4_3", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Visual Studio Code Command Palette is visible with a > character in its input box and is ready to accept a command search.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_open_c8af7aec5_4_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_filter_c8af7aec5_4_3", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Microsoft 365 Agents: Provision" + }, + "description": "Type the resolved command title into the active Command Palette.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertPalette_c8af7aec5_4_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertCommand_c8af7aec5_4_3", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Command Palette input box reads >Microsoft 365 Agents: Provision and the highlighted command listed under it is titled Microsoft 365 Agents: Provision.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_filter_c8af7aec5_4_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_execute_c8af7aec5_4_3", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to execute the selected Command Palette command.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertCommand_c8af7aec5_4_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_clickOption_assertPrompt_c8af7aec5_4_4", "agent": "assertion", "tool": "", "parameters": {}, @@ -1955,7 +2068,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_executeCommand_execute_c8af7aec5_4_2" + "step_executeCommand_execute_c8af7aec5_4_3" ], "preconditions": [], "postconditions": [], @@ -1967,7 +2080,7 @@ ] }, { - "step_id": "step_clickOption_click_c8af7aec5_4_3", + "step_id": "step_clickOption_click_c8af7aec5_4_4", "agent": "interaction", "tool": "click", "parameters": { @@ -1981,7 +2094,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_clickOption_assertPrompt_c8af7aec5_4_3" + "step_clickOption_assertPrompt_c8af7aec5_4_4" ], "preconditions": [ "dhash:292:77:16:5:0000000000000000", @@ -1996,7 +2109,7 @@ ] }, { - "step_id": "step_textInput_assertQuestion_c8af7aec5_4_4", + "step_id": "step_textInput_assertQuestion_c8af7aec5_4_5", "agent": "assertion", "tool": "", "parameters": {}, @@ -2006,7 +2119,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_clickOption_click_c8af7aec5_4_3" + "step_clickOption_click_c8af7aec5_4_4" ], "preconditions": [], "postconditions": [], @@ -2017,7 +2130,7 @@ ] }, { - "step_id": "step_textInput_input_c8af7aec5_4_4", + "step_id": "step_textInput_input_c8af7aec5_4_5", "agent": "interaction", "tool": "type_text", "parameters": { @@ -2029,7 +2142,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_textInput_assertQuestion_c8af7aec5_4_4" + "step_textInput_assertQuestion_c8af7aec5_4_5" ], "preconditions": [], "postconditions": [], @@ -2039,7 +2152,7 @@ ] }, { - "step_id": "step_textInput_confirm_c8af7aec5_4_4", + "step_id": "step_textInput_confirm_c8af7aec5_4_5", "agent": "interaction", "tool": "key_press", "parameters": { @@ -2051,7 +2164,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_textInput_input_c8af7aec5_4_4" + "step_textInput_input_c8af7aec5_4_5" ], "preconditions": [], "postconditions": [], @@ -2061,7 +2174,7 @@ ] }, { - "step_id": "step_clickPrimaryAction_assertDialog_c8af7aec5_4_5", + "step_id": "step_clickPrimaryAction_assertDialog_c8af7aec5_4_6", "agent": "assertion", "tool": "", "parameters": {}, @@ -2071,7 +2184,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_textInput_confirm_c8af7aec5_4_4" + "step_textInput_confirm_c8af7aec5_4_5" ], "preconditions": [], "postconditions": [], @@ -2082,7 +2195,7 @@ ] }, { - "step_id": "step_clickPrimaryAction_click_c8af7aec5_4_5", + "step_id": "step_clickPrimaryAction_click_c8af7aec5_4_6", "agent": "interaction", "tool": "key_press", "parameters": { @@ -2094,7 +2207,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_clickPrimaryAction_assertDialog_c8af7aec5_4_5" + "step_clickPrimaryAction_assertDialog_c8af7aec5_4_6" ], "preconditions": [], "postconditions": [], @@ -2104,7 +2217,7 @@ ] }, { - "step_id": "step_assertNotificationContains_assert_c8af7aec5_4_6", + "step_id": "step_assertNotificationContains_assert_c8af7aec5_4_7", "agent": "assertion", "tool": "", "parameters": {}, @@ -2114,14 +2227,14 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_clickPrimaryAction_click_c8af7aec5_4_5" + "step_clickPrimaryAction_click_c8af7aec5_4_6" ], "preconditions": [], "postconditions": [], "tags": [ "component:notifications", "action:assert-contains", - "step_retry_timeout: 300" + "step_retry_timeout: 900" ] }, { @@ -2137,7 +2250,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_assertNotificationContains_assert_c8af7aec5_4_6" + "step_assertNotificationContains_assert_c8af7aec5_4_7" ], "preconditions": [], "postconditions": [], diff --git a/packages/tests/vscuse/vscode-test-cases/plans/da-api-plugin-from-existing-api--da-api-plugin-from-existing-api-bearer-remote-preview.json b/packages/tests/vscuse/vscode-test-cases/plans/da-api-plugin-from-existing-api--da-api-plugin-from-existing-api-bearer-remote-preview.json index 26d9c493613..7d81838199e 100644 --- a/packages/tests/vscuse/vscode-test-cases/plans/da-api-plugin-from-existing-api--da-api-plugin-from-existing-api-bearer-remote-preview.json +++ b/packages/tests/vscuse/vscode-test-cases/plans/da-api-plugin-from-existing-api--da-api-plugin-from-existing-api-bearer-remote-preview.json @@ -8,7 +8,7 @@ "precondition_wait_timeout": 30, "precondition_retry_interval": 1 }, - "total_steps": 113, + "total_steps": 118, "name": "da-api-plugin-from-existing-api-bearer-remote-preview", "description": { "owner": "", @@ -97,14 +97,19 @@ "step_executeCommand_filter_cccb76852_4_2", "step_executeCommand_assertCommand_cccb76852_4_2", "step_executeCommand_execute_cccb76852_4_2", - "step_clickOption_assertPrompt_cccb76852_4_3", - "step_clickOption_click_cccb76852_4_3", - "step_textInput_assertQuestion_cccb76852_4_4", - "step_textInput_input_cccb76852_4_4", - "step_textInput_confirm_cccb76852_4_4", - "step_clickPrimaryAction_assertDialog_cccb76852_4_5", - "step_clickPrimaryAction_click_cccb76852_4_5", - "step_assertNotificationContains_assert_cccb76852_4_6", + "step_executeCommand_open_cccb76852_4_3", + "step_executeCommand_assertPalette_cccb76852_4_3", + "step_executeCommand_filter_cccb76852_4_3", + "step_executeCommand_assertCommand_cccb76852_4_3", + "step_executeCommand_execute_cccb76852_4_3", + "step_clickOption_assertPrompt_cccb76852_4_4", + "step_clickOption_click_cccb76852_4_4", + "step_textInput_assertQuestion_cccb76852_4_5", + "step_textInput_input_cccb76852_4_5", + "step_textInput_confirm_cccb76852_4_5", + "step_clickPrimaryAction_assertDialog_cccb76852_4_6", + "step_clickPrimaryAction_click_cccb76852_4_6", + "step_assertNotificationContains_assert_cccb76852_4_7", "step_executeCommand_open_cccb76852_5_1", "step_executeCommand_assertPalette_cccb76852_5_1", "step_executeCommand_filter_cccb76852_5_1", @@ -534,7 +539,7 @@ "agent": "assertion", "tool": "", "parameters": {}, - "description": "@assertion the prompt titled New Project lists at least one option below its input box.", + "description": "@assertion the prompt titled New Project has finished loading and lists at least one selectable option.", "content_refs": [], "timeout": 120, "retry_count": 0, @@ -641,7 +646,7 @@ "agent": "assertion", "tool": "", "parameters": {}, - "description": "@assertion the prompt titled Create Declarative Agent lists at least one option below its input box.", + "description": "@assertion the prompt titled Create Declarative Agent has finished loading and lists at least one selectable option.", "content_refs": [], "timeout": 120, "retry_count": 0, @@ -748,7 +753,7 @@ "agent": "assertion", "tool": "", "parameters": {}, - "description": "@assertion the prompt titled Create an Action lists at least one option below its input box.", + "description": "@assertion the prompt titled Create an Action has finished loading and lists at least one selectable option.", "content_refs": [], "timeout": 120, "retry_count": 0, @@ -855,7 +860,7 @@ "agent": "assertion", "tool": "", "parameters": {}, - "description": "@assertion the prompt titled OpenAPI Spec Document lists at least one option below its input box.", + "description": "@assertion the prompt titled OpenAPI Spec Document has finished loading and lists at least one selectable option.", "content_refs": [], "timeout": 120, "retry_count": 0, @@ -1027,7 +1032,7 @@ "agent": "assertion", "tool": "", "parameters": {}, - "description": "@assertion the multi-select prompt titled Select Operation(s) Copilot Can Interact with lists at least one option below its input box.", + "description": "@assertion the multi-select prompt titled Select Operation(s) Copilot Can Interact with has finished loading and lists at least one selectable option.", "content_refs": [], "timeout": 120, "retry_count": 0, @@ -1776,7 +1781,7 @@ "agent": "interaction", "tool": "type_text", "parameters": { - "text": "Notifications: Show Notifications" + "text": "Notifications: Clear All Notifications" }, "description": "Type the resolved command title into the active Command Palette.", "content_refs": [], @@ -1798,7 +1803,7 @@ "agent": "assertion", "tool": "", "parameters": {}, - "description": "@assertion the Command Palette input box reads >Notifications: Show Notifications and the highlighted command listed under it is titled Notifications: Show Notifications.", + "description": "@assertion the Command Palette input box reads >Notifications: Clear All Notifications and the highlighted command listed under it is titled Notifications: Clear All Notifications.", "content_refs": [], "timeout": 30, "retry_count": 0, @@ -1884,7 +1889,7 @@ "agent": "interaction", "tool": "type_text", "parameters": { - "text": "Microsoft 365 Agents: Provision" + "text": "Notifications: Show Notifications" }, "description": "Type the resolved command title into the active Command Palette.", "content_refs": [], @@ -1906,7 +1911,7 @@ "agent": "assertion", "tool": "", "parameters": {}, - "description": "@assertion the Command Palette input box reads >Microsoft 365 Agents: Provision and the highlighted command listed under it is titled Microsoft 365 Agents: Provision.", + "description": "@assertion the Command Palette input box reads >Notifications: Show Notifications and the highlighted command listed under it is titled Notifications: Show Notifications.", "content_refs": [], "timeout": 30, "retry_count": 0, @@ -1945,7 +1950,115 @@ ] }, { - "step_id": "step_clickOption_assertPrompt_cccb76852_4_3", + "step_id": "step_executeCommand_open_cccb76852_4_3", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "f1" + }, + "description": "Press the F1 key to open the Command Palette in Visual Studio Code.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_execute_cccb76852_4_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertPalette_cccb76852_4_3", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Visual Studio Code Command Palette is visible with a > character in its input box and is ready to accept a command search.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_open_cccb76852_4_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_filter_cccb76852_4_3", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Microsoft 365 Agents: Provision" + }, + "description": "Type the resolved command title into the active Command Palette.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertPalette_cccb76852_4_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertCommand_cccb76852_4_3", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Command Palette input box reads >Microsoft 365 Agents: Provision and the highlighted command listed under it is titled Microsoft 365 Agents: Provision.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_filter_cccb76852_4_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_execute_cccb76852_4_3", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to execute the selected Command Palette command.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertCommand_cccb76852_4_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_clickOption_assertPrompt_cccb76852_4_4", "agent": "assertion", "tool": "", "parameters": {}, @@ -1955,7 +2068,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_executeCommand_execute_cccb76852_4_2" + "step_executeCommand_execute_cccb76852_4_3" ], "preconditions": [], "postconditions": [], @@ -1967,7 +2080,7 @@ ] }, { - "step_id": "step_clickOption_click_cccb76852_4_3", + "step_id": "step_clickOption_click_cccb76852_4_4", "agent": "interaction", "tool": "click", "parameters": { @@ -1981,7 +2094,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_clickOption_assertPrompt_cccb76852_4_3" + "step_clickOption_assertPrompt_cccb76852_4_4" ], "preconditions": [ "dhash:292:77:16:5:0000000000000000", @@ -1996,7 +2109,7 @@ ] }, { - "step_id": "step_textInput_assertQuestion_cccb76852_4_4", + "step_id": "step_textInput_assertQuestion_cccb76852_4_5", "agent": "assertion", "tool": "", "parameters": {}, @@ -2006,7 +2119,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_clickOption_click_cccb76852_4_3" + "step_clickOption_click_cccb76852_4_4" ], "preconditions": [], "postconditions": [], @@ -2017,7 +2130,7 @@ ] }, { - "step_id": "step_textInput_input_cccb76852_4_4", + "step_id": "step_textInput_input_cccb76852_4_5", "agent": "interaction", "tool": "type_text", "parameters": { @@ -2029,7 +2142,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_textInput_assertQuestion_cccb76852_4_4" + "step_textInput_assertQuestion_cccb76852_4_5" ], "preconditions": [], "postconditions": [], @@ -2039,7 +2152,7 @@ ] }, { - "step_id": "step_textInput_confirm_cccb76852_4_4", + "step_id": "step_textInput_confirm_cccb76852_4_5", "agent": "interaction", "tool": "key_press", "parameters": { @@ -2051,7 +2164,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_textInput_input_cccb76852_4_4" + "step_textInput_input_cccb76852_4_5" ], "preconditions": [], "postconditions": [], @@ -2061,7 +2174,7 @@ ] }, { - "step_id": "step_clickPrimaryAction_assertDialog_cccb76852_4_5", + "step_id": "step_clickPrimaryAction_assertDialog_cccb76852_4_6", "agent": "assertion", "tool": "", "parameters": {}, @@ -2071,7 +2184,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_textInput_confirm_cccb76852_4_4" + "step_textInput_confirm_cccb76852_4_5" ], "preconditions": [], "postconditions": [], @@ -2082,7 +2195,7 @@ ] }, { - "step_id": "step_clickPrimaryAction_click_cccb76852_4_5", + "step_id": "step_clickPrimaryAction_click_cccb76852_4_6", "agent": "interaction", "tool": "key_press", "parameters": { @@ -2094,7 +2207,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_clickPrimaryAction_assertDialog_cccb76852_4_5" + "step_clickPrimaryAction_assertDialog_cccb76852_4_6" ], "preconditions": [], "postconditions": [], @@ -2104,7 +2217,7 @@ ] }, { - "step_id": "step_assertNotificationContains_assert_cccb76852_4_6", + "step_id": "step_assertNotificationContains_assert_cccb76852_4_7", "agent": "assertion", "tool": "", "parameters": {}, @@ -2114,14 +2227,14 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_clickPrimaryAction_click_cccb76852_4_5" + "step_clickPrimaryAction_click_cccb76852_4_6" ], "preconditions": [], "postconditions": [], "tags": [ "component:notifications", "action:assert-contains", - "step_retry_timeout: 300" + "step_retry_timeout: 900" ] }, { @@ -2137,7 +2250,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_assertNotificationContains_assert_cccb76852_4_6" + "step_assertNotificationContains_assert_cccb76852_4_7" ], "preconditions": [], "postconditions": [], diff --git a/packages/tests/vscuse/vscode-test-cases/plans/da-api-plugin-from-existing-api--da-api-plugin-from-existing-api-no-auth-remote-preview.json b/packages/tests/vscuse/vscode-test-cases/plans/da-api-plugin-from-existing-api--da-api-plugin-from-existing-api-no-auth-remote-preview.json index f4406f39a24..b744fbba9a2 100644 --- a/packages/tests/vscuse/vscode-test-cases/plans/da-api-plugin-from-existing-api--da-api-plugin-from-existing-api-no-auth-remote-preview.json +++ b/packages/tests/vscuse/vscode-test-cases/plans/da-api-plugin-from-existing-api--da-api-plugin-from-existing-api-no-auth-remote-preview.json @@ -8,7 +8,7 @@ "precondition_wait_timeout": 30, "precondition_retry_interval": 1 }, - "total_steps": 107, + "total_steps": 112, "name": "da-api-plugin-from-existing-api-no-auth-remote-preview", "description": { "owner": "", @@ -101,9 +101,14 @@ "step_executeCommand_filter_c2579f408_4_2", "step_executeCommand_assertCommand_c2579f408_4_2", "step_executeCommand_execute_c2579f408_4_2", - "step_clickOption_assertPrompt_c2579f408_4_3", - "step_clickOption_click_c2579f408_4_3", - "step_assertNotificationContains_assert_c2579f408_4_4", + "step_executeCommand_open_c2579f408_4_3", + "step_executeCommand_assertPalette_c2579f408_4_3", + "step_executeCommand_filter_c2579f408_4_3", + "step_executeCommand_assertCommand_c2579f408_4_3", + "step_executeCommand_execute_c2579f408_4_3", + "step_clickOption_assertPrompt_c2579f408_4_4", + "step_clickOption_click_c2579f408_4_4", + "step_assertNotificationContains_assert_c2579f408_4_5", "step_executeCommand_open_c2579f408_5_1", "step_executeCommand_assertPalette_c2579f408_5_1", "step_executeCommand_filter_c2579f408_5_1", @@ -528,7 +533,7 @@ "agent": "assertion", "tool": "", "parameters": {}, - "description": "@assertion the prompt titled New Project lists at least one option below its input box.", + "description": "@assertion the prompt titled New Project has finished loading and lists at least one selectable option.", "content_refs": [], "timeout": 120, "retry_count": 0, @@ -635,7 +640,7 @@ "agent": "assertion", "tool": "", "parameters": {}, - "description": "@assertion the prompt titled Create Declarative Agent lists at least one option below its input box.", + "description": "@assertion the prompt titled Create Declarative Agent has finished loading and lists at least one selectable option.", "content_refs": [], "timeout": 120, "retry_count": 0, @@ -742,7 +747,7 @@ "agent": "assertion", "tool": "", "parameters": {}, - "description": "@assertion the prompt titled Create an Action lists at least one option below its input box.", + "description": "@assertion the prompt titled Create an Action has finished loading and lists at least one selectable option.", "content_refs": [], "timeout": 120, "retry_count": 0, @@ -849,7 +854,7 @@ "agent": "assertion", "tool": "", "parameters": {}, - "description": "@assertion the prompt titled OpenAPI Spec Document lists at least one option below its input box.", + "description": "@assertion the prompt titled OpenAPI Spec Document has finished loading and lists at least one selectable option.", "content_refs": [], "timeout": 120, "retry_count": 0, @@ -1021,7 +1026,7 @@ "agent": "assertion", "tool": "", "parameters": {}, - "description": "@assertion the multi-select prompt titled Select Operation(s) Copilot Can Interact with lists at least one option below its input box.", + "description": "@assertion the multi-select prompt titled Select Operation(s) Copilot Can Interact with has finished loading and lists at least one selectable option.", "content_refs": [], "timeout": 120, "retry_count": 0, @@ -1862,7 +1867,7 @@ "agent": "interaction", "tool": "type_text", "parameters": { - "text": "Notifications: Show Notifications" + "text": "Notifications: Clear All Notifications" }, "description": "Type the resolved command title into the active Command Palette.", "content_refs": [], @@ -1884,7 +1889,7 @@ "agent": "assertion", "tool": "", "parameters": {}, - "description": "@assertion the Command Palette input box reads >Notifications: Show Notifications and the highlighted command listed under it is titled Notifications: Show Notifications.", + "description": "@assertion the Command Palette input box reads >Notifications: Clear All Notifications and the highlighted command listed under it is titled Notifications: Clear All Notifications.", "content_refs": [], "timeout": 30, "retry_count": 0, @@ -1970,7 +1975,7 @@ "agent": "interaction", "tool": "type_text", "parameters": { - "text": "Microsoft 365 Agents: Provision" + "text": "Notifications: Show Notifications" }, "description": "Type the resolved command title into the active Command Palette.", "content_refs": [], @@ -1992,7 +1997,7 @@ "agent": "assertion", "tool": "", "parameters": {}, - "description": "@assertion the Command Palette input box reads >Microsoft 365 Agents: Provision and the highlighted command listed under it is titled Microsoft 365 Agents: Provision.", + "description": "@assertion the Command Palette input box reads >Notifications: Show Notifications and the highlighted command listed under it is titled Notifications: Show Notifications.", "content_refs": [], "timeout": 30, "retry_count": 0, @@ -2031,7 +2036,115 @@ ] }, { - "step_id": "step_clickOption_assertPrompt_c2579f408_4_3", + "step_id": "step_executeCommand_open_c2579f408_4_3", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "f1" + }, + "description": "Press the F1 key to open the Command Palette in Visual Studio Code.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_execute_c2579f408_4_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertPalette_c2579f408_4_3", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Visual Studio Code Command Palette is visible with a > character in its input box and is ready to accept a command search.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_open_c2579f408_4_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_filter_c2579f408_4_3", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Microsoft 365 Agents: Provision" + }, + "description": "Type the resolved command title into the active Command Palette.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertPalette_c2579f408_4_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertCommand_c2579f408_4_3", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Command Palette input box reads >Microsoft 365 Agents: Provision and the highlighted command listed under it is titled Microsoft 365 Agents: Provision.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_filter_c2579f408_4_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_execute_c2579f408_4_3", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to execute the selected Command Palette command.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertCommand_c2579f408_4_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_clickOption_assertPrompt_c2579f408_4_4", "agent": "assertion", "tool": "", "parameters": {}, @@ -2041,7 +2154,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_executeCommand_execute_c2579f408_4_2" + "step_executeCommand_execute_c2579f408_4_3" ], "preconditions": [], "postconditions": [], @@ -2053,7 +2166,7 @@ ] }, { - "step_id": "step_clickOption_click_c2579f408_4_3", + "step_id": "step_clickOption_click_c2579f408_4_4", "agent": "interaction", "tool": "click", "parameters": { @@ -2067,7 +2180,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_clickOption_assertPrompt_c2579f408_4_3" + "step_clickOption_assertPrompt_c2579f408_4_4" ], "preconditions": [ "dhash:292:77:16:5:0000000000000000", @@ -2082,7 +2195,7 @@ ] }, { - "step_id": "step_assertNotificationContains_assert_c2579f408_4_4", + "step_id": "step_assertNotificationContains_assert_c2579f408_4_5", "agent": "assertion", "tool": "", "parameters": {}, @@ -2092,14 +2205,14 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_clickOption_click_c2579f408_4_3" + "step_clickOption_click_c2579f408_4_4" ], "preconditions": [], "postconditions": [], "tags": [ "component:notifications", "action:assert-contains", - "step_retry_timeout: 300" + "step_retry_timeout: 900" ] }, { @@ -2115,7 +2228,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_assertNotificationContains_assert_c2579f408_4_4" + "step_assertNotificationContains_assert_c2579f408_4_5" ], "preconditions": [], "postconditions": [], diff --git a/packages/tests/vscuse/vscode-test-cases/plans/da-api-plugin-from-existing-api--da-api-plugin-from-existing-api-oauth-remote-preview.json b/packages/tests/vscuse/vscode-test-cases/plans/da-api-plugin-from-existing-api--da-api-plugin-from-existing-api-oauth-remote-preview.json index e767400ba39..6940b53153b 100644 --- a/packages/tests/vscuse/vscode-test-cases/plans/da-api-plugin-from-existing-api--da-api-plugin-from-existing-api-oauth-remote-preview.json +++ b/packages/tests/vscuse/vscode-test-cases/plans/da-api-plugin-from-existing-api--da-api-plugin-from-existing-api-oauth-remote-preview.json @@ -8,7 +8,7 @@ "precondition_wait_timeout": 30, "precondition_retry_interval": 1 }, - "total_steps": 127, + "total_steps": 132, "name": "da-api-plugin-from-existing-api-oauth-remote-preview", "description": { "owner": "", @@ -97,17 +97,22 @@ "step_executeCommand_filter_cd7e35bb7_4_2", "step_executeCommand_assertCommand_cd7e35bb7_4_2", "step_executeCommand_execute_cd7e35bb7_4_2", - "step_clickOption_assertPrompt_cd7e35bb7_4_3", - "step_clickOption_click_cd7e35bb7_4_3", - "step_textInput_assertQuestion_cd7e35bb7_4_4", - "step_textInput_input_cd7e35bb7_4_4", - "step_textInput_confirm_cd7e35bb7_4_4", + "step_executeCommand_open_cd7e35bb7_4_3", + "step_executeCommand_assertPalette_cd7e35bb7_4_3", + "step_executeCommand_filter_cd7e35bb7_4_3", + "step_executeCommand_assertCommand_cd7e35bb7_4_3", + "step_executeCommand_execute_cd7e35bb7_4_3", + "step_clickOption_assertPrompt_cd7e35bb7_4_4", + "step_clickOption_click_cd7e35bb7_4_4", "step_textInput_assertQuestion_cd7e35bb7_4_5", "step_textInput_input_cd7e35bb7_4_5", "step_textInput_confirm_cd7e35bb7_4_5", - "step_clickPrimaryAction_assertDialog_cd7e35bb7_4_6", - "step_clickPrimaryAction_click_cd7e35bb7_4_6", - "step_assertNotificationContains_assert_cd7e35bb7_4_7", + "step_textInput_assertQuestion_cd7e35bb7_4_6", + "step_textInput_input_cd7e35bb7_4_6", + "step_textInput_confirm_cd7e35bb7_4_6", + "step_clickPrimaryAction_assertDialog_cd7e35bb7_4_7", + "step_clickPrimaryAction_click_cd7e35bb7_4_7", + "step_assertNotificationContains_assert_cd7e35bb7_4_8", "step_executeCommand_open_cd7e35bb7_5_1", "step_executeCommand_assertPalette_cd7e35bb7_5_1", "step_executeCommand_filter_cd7e35bb7_5_1", @@ -548,7 +553,7 @@ "agent": "assertion", "tool": "", "parameters": {}, - "description": "@assertion the prompt titled New Project lists at least one option below its input box.", + "description": "@assertion the prompt titled New Project has finished loading and lists at least one selectable option.", "content_refs": [], "timeout": 120, "retry_count": 0, @@ -655,7 +660,7 @@ "agent": "assertion", "tool": "", "parameters": {}, - "description": "@assertion the prompt titled Create Declarative Agent lists at least one option below its input box.", + "description": "@assertion the prompt titled Create Declarative Agent has finished loading and lists at least one selectable option.", "content_refs": [], "timeout": 120, "retry_count": 0, @@ -762,7 +767,7 @@ "agent": "assertion", "tool": "", "parameters": {}, - "description": "@assertion the prompt titled Create an Action lists at least one option below its input box.", + "description": "@assertion the prompt titled Create an Action has finished loading and lists at least one selectable option.", "content_refs": [], "timeout": 120, "retry_count": 0, @@ -869,7 +874,7 @@ "agent": "assertion", "tool": "", "parameters": {}, - "description": "@assertion the prompt titled OpenAPI Spec Document lists at least one option below its input box.", + "description": "@assertion the prompt titled OpenAPI Spec Document has finished loading and lists at least one selectable option.", "content_refs": [], "timeout": 120, "retry_count": 0, @@ -1041,7 +1046,7 @@ "agent": "assertion", "tool": "", "parameters": {}, - "description": "@assertion the multi-select prompt titled Select Operation(s) Copilot Can Interact with lists at least one option below its input box.", + "description": "@assertion the multi-select prompt titled Select Operation(s) Copilot Can Interact with has finished loading and lists at least one selectable option.", "content_refs": [], "timeout": 120, "retry_count": 0, @@ -1790,7 +1795,7 @@ "agent": "interaction", "tool": "type_text", "parameters": { - "text": "Notifications: Show Notifications" + "text": "Notifications: Clear All Notifications" }, "description": "Type the resolved command title into the active Command Palette.", "content_refs": [], @@ -1812,7 +1817,7 @@ "agent": "assertion", "tool": "", "parameters": {}, - "description": "@assertion the Command Palette input box reads >Notifications: Show Notifications and the highlighted command listed under it is titled Notifications: Show Notifications.", + "description": "@assertion the Command Palette input box reads >Notifications: Clear All Notifications and the highlighted command listed under it is titled Notifications: Clear All Notifications.", "content_refs": [], "timeout": 30, "retry_count": 0, @@ -1898,7 +1903,7 @@ "agent": "interaction", "tool": "type_text", "parameters": { - "text": "Microsoft 365 Agents: Provision" + "text": "Notifications: Show Notifications" }, "description": "Type the resolved command title into the active Command Palette.", "content_refs": [], @@ -1920,7 +1925,7 @@ "agent": "assertion", "tool": "", "parameters": {}, - "description": "@assertion the Command Palette input box reads >Microsoft 365 Agents: Provision and the highlighted command listed under it is titled Microsoft 365 Agents: Provision.", + "description": "@assertion the Command Palette input box reads >Notifications: Show Notifications and the highlighted command listed under it is titled Notifications: Show Notifications.", "content_refs": [], "timeout": 30, "retry_count": 0, @@ -1959,7 +1964,115 @@ ] }, { - "step_id": "step_clickOption_assertPrompt_cd7e35bb7_4_3", + "step_id": "step_executeCommand_open_cd7e35bb7_4_3", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "f1" + }, + "description": "Press the F1 key to open the Command Palette in Visual Studio Code.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_execute_cd7e35bb7_4_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertPalette_cd7e35bb7_4_3", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Visual Studio Code Command Palette is visible with a > character in its input box and is ready to accept a command search.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_open_cd7e35bb7_4_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_filter_cd7e35bb7_4_3", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Microsoft 365 Agents: Provision" + }, + "description": "Type the resolved command title into the active Command Palette.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertPalette_cd7e35bb7_4_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertCommand_cd7e35bb7_4_3", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Command Palette input box reads >Microsoft 365 Agents: Provision and the highlighted command listed under it is titled Microsoft 365 Agents: Provision.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_filter_cd7e35bb7_4_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_execute_cd7e35bb7_4_3", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to execute the selected Command Palette command.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertCommand_cd7e35bb7_4_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_clickOption_assertPrompt_cd7e35bb7_4_4", "agent": "assertion", "tool": "", "parameters": {}, @@ -1969,7 +2082,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_executeCommand_execute_cd7e35bb7_4_2" + "step_executeCommand_execute_cd7e35bb7_4_3" ], "preconditions": [], "postconditions": [], @@ -1981,7 +2094,7 @@ ] }, { - "step_id": "step_clickOption_click_cd7e35bb7_4_3", + "step_id": "step_clickOption_click_cd7e35bb7_4_4", "agent": "interaction", "tool": "click", "parameters": { @@ -1995,7 +2108,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_clickOption_assertPrompt_cd7e35bb7_4_3" + "step_clickOption_assertPrompt_cd7e35bb7_4_4" ], "preconditions": [ "dhash:292:77:16:5:0000000000000000", @@ -2010,7 +2123,7 @@ ] }, { - "step_id": "step_textInput_assertQuestion_cd7e35bb7_4_4", + "step_id": "step_textInput_assertQuestion_cd7e35bb7_4_5", "agent": "assertion", "tool": "", "parameters": {}, @@ -2020,7 +2133,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_clickOption_click_cd7e35bb7_4_3" + "step_clickOption_click_cd7e35bb7_4_4" ], "preconditions": [], "postconditions": [], @@ -2031,7 +2144,7 @@ ] }, { - "step_id": "step_textInput_input_cd7e35bb7_4_4", + "step_id": "step_textInput_input_cd7e35bb7_4_5", "agent": "interaction", "tool": "type_text", "parameters": { @@ -2043,7 +2156,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_textInput_assertQuestion_cd7e35bb7_4_4" + "step_textInput_assertQuestion_cd7e35bb7_4_5" ], "preconditions": [], "postconditions": [], @@ -2053,7 +2166,7 @@ ] }, { - "step_id": "step_textInput_confirm_cd7e35bb7_4_4", + "step_id": "step_textInput_confirm_cd7e35bb7_4_5", "agent": "interaction", "tool": "key_press", "parameters": { @@ -2065,7 +2178,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_textInput_input_cd7e35bb7_4_4" + "step_textInput_input_cd7e35bb7_4_5" ], "preconditions": [], "postconditions": [], @@ -2075,7 +2188,7 @@ ] }, { - "step_id": "step_textInput_assertQuestion_cd7e35bb7_4_5", + "step_id": "step_textInput_assertQuestion_cd7e35bb7_4_6", "agent": "assertion", "tool": "", "parameters": {}, @@ -2085,7 +2198,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_textInput_confirm_cd7e35bb7_4_4" + "step_textInput_confirm_cd7e35bb7_4_5" ], "preconditions": [], "postconditions": [], @@ -2096,7 +2209,7 @@ ] }, { - "step_id": "step_textInput_input_cd7e35bb7_4_5", + "step_id": "step_textInput_input_cd7e35bb7_4_6", "agent": "interaction", "tool": "type_text", "parameters": { @@ -2108,7 +2221,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_textInput_assertQuestion_cd7e35bb7_4_5" + "step_textInput_assertQuestion_cd7e35bb7_4_6" ], "preconditions": [], "postconditions": [], @@ -2118,7 +2231,7 @@ ] }, { - "step_id": "step_textInput_confirm_cd7e35bb7_4_5", + "step_id": "step_textInput_confirm_cd7e35bb7_4_6", "agent": "interaction", "tool": "key_press", "parameters": { @@ -2130,7 +2243,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_textInput_input_cd7e35bb7_4_5" + "step_textInput_input_cd7e35bb7_4_6" ], "preconditions": [], "postconditions": [], @@ -2140,7 +2253,7 @@ ] }, { - "step_id": "step_clickPrimaryAction_assertDialog_cd7e35bb7_4_6", + "step_id": "step_clickPrimaryAction_assertDialog_cd7e35bb7_4_7", "agent": "assertion", "tool": "", "parameters": {}, @@ -2150,7 +2263,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_textInput_confirm_cd7e35bb7_4_5" + "step_textInput_confirm_cd7e35bb7_4_6" ], "preconditions": [], "postconditions": [], @@ -2161,7 +2274,7 @@ ] }, { - "step_id": "step_clickPrimaryAction_click_cd7e35bb7_4_6", + "step_id": "step_clickPrimaryAction_click_cd7e35bb7_4_7", "agent": "interaction", "tool": "key_press", "parameters": { @@ -2173,7 +2286,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_clickPrimaryAction_assertDialog_cd7e35bb7_4_6" + "step_clickPrimaryAction_assertDialog_cd7e35bb7_4_7" ], "preconditions": [], "postconditions": [], @@ -2183,7 +2296,7 @@ ] }, { - "step_id": "step_assertNotificationContains_assert_cd7e35bb7_4_7", + "step_id": "step_assertNotificationContains_assert_cd7e35bb7_4_8", "agent": "assertion", "tool": "", "parameters": {}, @@ -2193,14 +2306,14 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_clickPrimaryAction_click_cd7e35bb7_4_6" + "step_clickPrimaryAction_click_cd7e35bb7_4_7" ], "preconditions": [], "postconditions": [], "tags": [ "component:notifications", "action:assert-contains", - "step_retry_timeout: 300" + "step_retry_timeout: 900" ] }, { @@ -2216,7 +2329,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_assertNotificationContains_assert_cd7e35bb7_4_7" + "step_assertNotificationContains_assert_cd7e35bb7_4_8" ], "preconditions": [], "postconditions": [], diff --git a/packages/tests/vscuse/vscode-test-cases/plans/da-api-plugin-from-scratch--da-api-plugin-from-scratch-js.json b/packages/tests/vscuse/vscode-test-cases/plans/da-api-plugin-from-scratch--da-api-plugin-from-scratch-js.json index a57b2f58b7d..e2a4353caf0 100644 --- a/packages/tests/vscuse/vscode-test-cases/plans/da-api-plugin-from-scratch--da-api-plugin-from-scratch-js.json +++ b/packages/tests/vscuse/vscode-test-cases/plans/da-api-plugin-from-scratch--da-api-plugin-from-scratch-js.json @@ -8,7 +8,7 @@ "precondition_wait_timeout": 30, "precondition_retry_interval": 1 }, - "total_steps": 160, + "total_steps": 170, "name": "da-api-plugin-from-scratch-js", "description": { "owner": "", @@ -115,24 +115,29 @@ "step_executeCommand_filter_c919bef1e_5_2", "step_executeCommand_assertCommand_c919bef1e_5_2", "step_executeCommand_execute_c919bef1e_5_2", - "step_clickOption_assertPrompt_c919bef1e_5_3", - "step_clickOption_click_c919bef1e_5_3", - "step_singleSelect_assertQuestion_c919bef1e_5_4", - "step_singleSelect_assertOptionsLoaded_c919bef1e_5_4", - "step_singleSelect_filter_c919bef1e_5_4", - "step_singleSelect_assertOption_c919bef1e_5_4", - "step_singleSelect_confirm_c919bef1e_5_4", - "step_textInput_assertQuestion_c919bef1e_5_5", - "step_textInput_input_c919bef1e_5_5", - "step_textInput_confirm_c919bef1e_5_5", - "step_singleSelect_assertQuestion_c919bef1e_5_6", - "step_singleSelect_assertOptionsLoaded_c919bef1e_5_6", - "step_singleSelect_filter_c919bef1e_5_6", - "step_singleSelect_assertOption_c919bef1e_5_6", - "step_singleSelect_confirm_c919bef1e_5_6", - "step_clickPrimaryAction_assertDialog_c919bef1e_5_7", - "step_clickPrimaryAction_click_c919bef1e_5_7", - "step_assertNotificationContains_assert_c919bef1e_5_8", + "step_executeCommand_open_c919bef1e_5_3", + "step_executeCommand_assertPalette_c919bef1e_5_3", + "step_executeCommand_filter_c919bef1e_5_3", + "step_executeCommand_assertCommand_c919bef1e_5_3", + "step_executeCommand_execute_c919bef1e_5_3", + "step_clickOption_assertPrompt_c919bef1e_5_4", + "step_clickOption_click_c919bef1e_5_4", + "step_singleSelect_assertQuestion_c919bef1e_5_5", + "step_singleSelect_assertOptionsLoaded_c919bef1e_5_5", + "step_singleSelect_filter_c919bef1e_5_5", + "step_singleSelect_assertOption_c919bef1e_5_5", + "step_singleSelect_confirm_c919bef1e_5_5", + "step_textInput_assertQuestion_c919bef1e_5_6", + "step_textInput_input_c919bef1e_5_6", + "step_textInput_confirm_c919bef1e_5_6", + "step_singleSelect_assertQuestion_c919bef1e_5_7", + "step_singleSelect_assertOptionsLoaded_c919bef1e_5_7", + "step_singleSelect_filter_c919bef1e_5_7", + "step_singleSelect_assertOption_c919bef1e_5_7", + "step_singleSelect_confirm_c919bef1e_5_7", + "step_clickPrimaryAction_assertDialog_c919bef1e_5_8", + "step_clickPrimaryAction_click_c919bef1e_5_8", + "step_assertNotificationContains_assert_c919bef1e_5_9", "step_executeCommand_open_c919bef1e_6_1", "step_executeCommand_assertPalette_c919bef1e_6_1", "step_executeCommand_filter_c919bef1e_6_1", @@ -143,11 +148,16 @@ "step_executeCommand_filter_c919bef1e_6_2", "step_executeCommand_assertCommand_c919bef1e_6_2", "step_executeCommand_execute_c919bef1e_6_2", - "step_clickOption_assertPrompt_c919bef1e_6_3", - "step_clickOption_click_c919bef1e_6_3", - "step_clickPrimaryAction_assertDialog_c919bef1e_6_4", - "step_clickPrimaryAction_click_c919bef1e_6_4", - "step_assertNotificationContains_assert_c919bef1e_6_5", + "step_executeCommand_open_c919bef1e_6_3", + "step_executeCommand_assertPalette_c919bef1e_6_3", + "step_executeCommand_filter_c919bef1e_6_3", + "step_executeCommand_assertCommand_c919bef1e_6_3", + "step_executeCommand_execute_c919bef1e_6_3", + "step_clickOption_assertPrompt_c919bef1e_6_4", + "step_clickOption_click_c919bef1e_6_4", + "step_clickPrimaryAction_assertDialog_c919bef1e_6_5", + "step_clickPrimaryAction_click_c919bef1e_6_5", + "step_assertNotificationContains_assert_c919bef1e_6_6", "step_executeCommand_open_c919bef1e_7_1", "step_executeCommand_assertPalette_c919bef1e_7_1", "step_executeCommand_filter_c919bef1e_7_1", @@ -581,7 +591,7 @@ "agent": "assertion", "tool": "", "parameters": {}, - "description": "@assertion the prompt titled New Project lists at least one option below its input box.", + "description": "@assertion the prompt titled New Project has finished loading and lists at least one selectable option.", "content_refs": [], "timeout": 120, "retry_count": 0, @@ -688,7 +698,7 @@ "agent": "assertion", "tool": "", "parameters": {}, - "description": "@assertion the prompt titled Create Declarative Agent lists at least one option below its input box.", + "description": "@assertion the prompt titled Create Declarative Agent has finished loading and lists at least one selectable option.", "content_refs": [], "timeout": 120, "retry_count": 0, @@ -795,7 +805,7 @@ "agent": "assertion", "tool": "", "parameters": {}, - "description": "@assertion the prompt titled Create an Action lists at least one option below its input box.", + "description": "@assertion the prompt titled Create an Action has finished loading and lists at least one selectable option.", "content_refs": [], "timeout": 120, "retry_count": 0, @@ -902,7 +912,7 @@ "agent": "assertion", "tool": "", "parameters": {}, - "description": "@assertion the prompt titled Authentication Type lists at least one option below its input box.", + "description": "@assertion the prompt titled Authentication Type has finished loading and lists at least one selectable option.", "content_refs": [], "timeout": 120, "retry_count": 0, @@ -1009,7 +1019,7 @@ "agent": "assertion", "tool": "", "parameters": {}, - "description": "@assertion the prompt titled Programming Language lists at least one option below its input box.", + "description": "@assertion the prompt titled Programming Language has finished loading and lists at least one selectable option.", "content_refs": [], "timeout": 120, "retry_count": 0, @@ -2272,7 +2282,7 @@ "agent": "interaction", "tool": "type_text", "parameters": { - "text": "Notifications: Show Notifications" + "text": "Notifications: Clear All Notifications" }, "description": "Type the resolved command title into the active Command Palette.", "content_refs": [], @@ -2294,7 +2304,7 @@ "agent": "assertion", "tool": "", "parameters": {}, - "description": "@assertion the Command Palette input box reads >Notifications: Show Notifications and the highlighted command listed under it is titled Notifications: Show Notifications.", + "description": "@assertion the Command Palette input box reads >Notifications: Clear All Notifications and the highlighted command listed under it is titled Notifications: Clear All Notifications.", "content_refs": [], "timeout": 30, "retry_count": 0, @@ -2380,7 +2390,7 @@ "agent": "interaction", "tool": "type_text", "parameters": { - "text": "Microsoft 365 Agents: Provision" + "text": "Notifications: Show Notifications" }, "description": "Type the resolved command title into the active Command Palette.", "content_refs": [], @@ -2402,7 +2412,7 @@ "agent": "assertion", "tool": "", "parameters": {}, - "description": "@assertion the Command Palette input box reads >Microsoft 365 Agents: Provision and the highlighted command listed under it is titled Microsoft 365 Agents: Provision.", + "description": "@assertion the Command Palette input box reads >Notifications: Show Notifications and the highlighted command listed under it is titled Notifications: Show Notifications.", "content_refs": [], "timeout": 30, "retry_count": 0, @@ -2441,7 +2451,115 @@ ] }, { - "step_id": "step_clickOption_assertPrompt_c919bef1e_5_3", + "step_id": "step_executeCommand_open_c919bef1e_5_3", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "f1" + }, + "description": "Press the F1 key to open the Command Palette in Visual Studio Code.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_execute_c919bef1e_5_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertPalette_c919bef1e_5_3", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Visual Studio Code Command Palette is visible with a > character in its input box and is ready to accept a command search.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_open_c919bef1e_5_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_filter_c919bef1e_5_3", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Microsoft 365 Agents: Provision" + }, + "description": "Type the resolved command title into the active Command Palette.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertPalette_c919bef1e_5_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertCommand_c919bef1e_5_3", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Command Palette input box reads >Microsoft 365 Agents: Provision and the highlighted command listed under it is titled Microsoft 365 Agents: Provision.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_filter_c919bef1e_5_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_execute_c919bef1e_5_3", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to execute the selected Command Palette command.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertCommand_c919bef1e_5_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_clickOption_assertPrompt_c919bef1e_5_4", "agent": "assertion", "tool": "", "parameters": {}, @@ -2451,7 +2569,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_executeCommand_execute_c919bef1e_5_2" + "step_executeCommand_execute_c919bef1e_5_3" ], "preconditions": [], "postconditions": [], @@ -2463,7 +2581,7 @@ ] }, { - "step_id": "step_clickOption_click_c919bef1e_5_3", + "step_id": "step_clickOption_click_c919bef1e_5_4", "agent": "interaction", "tool": "click", "parameters": { @@ -2477,7 +2595,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_clickOption_assertPrompt_c919bef1e_5_3" + "step_clickOption_assertPrompt_c919bef1e_5_4" ], "preconditions": [ "dhash:292:77:16:5:0000000000000000", @@ -2492,7 +2610,7 @@ ] }, { - "step_id": "step_singleSelect_assertQuestion_c919bef1e_5_4", + "step_id": "step_singleSelect_assertQuestion_c919bef1e_5_5", "agent": "assertion", "tool": "", "parameters": {}, @@ -2502,7 +2620,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_clickOption_click_c919bef1e_5_3" + "step_clickOption_click_c919bef1e_5_4" ], "preconditions": [], "postconditions": [], @@ -2513,17 +2631,17 @@ ] }, { - "step_id": "step_singleSelect_assertOptionsLoaded_c919bef1e_5_4", + "step_id": "step_singleSelect_assertOptionsLoaded_c919bef1e_5_5", "agent": "assertion", "tool": "", "parameters": {}, - "description": "@assertion the prompt titled Select a resource group lists at least one option below its input box.", + "description": "@assertion the prompt titled Select a resource group has finished loading and lists at least one selectable option.", "content_refs": [], "timeout": 120, "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_singleSelect_assertQuestion_c919bef1e_5_4" + "step_singleSelect_assertQuestion_c919bef1e_5_5" ], "preconditions": [], "postconditions": [], @@ -2534,7 +2652,7 @@ ] }, { - "step_id": "step_singleSelect_filter_c919bef1e_5_4", + "step_id": "step_singleSelect_filter_c919bef1e_5_5", "agent": "interaction", "tool": "type_text", "parameters": { @@ -2546,7 +2664,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_singleSelect_assertOptionsLoaded_c919bef1e_5_4" + "step_singleSelect_assertOptionsLoaded_c919bef1e_5_5" ], "preconditions": [], "postconditions": [], @@ -2556,7 +2674,7 @@ ] }, { - "step_id": "step_singleSelect_assertOption_c919bef1e_5_4", + "step_id": "step_singleSelect_assertOption_c919bef1e_5_5", "agent": "assertion", "tool": "", "parameters": {}, @@ -2566,7 +2684,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_singleSelect_filter_c919bef1e_5_4" + "step_singleSelect_filter_c919bef1e_5_5" ], "preconditions": [], "postconditions": [], @@ -2577,7 +2695,7 @@ ] }, { - "step_id": "step_singleSelect_confirm_c919bef1e_5_4", + "step_id": "step_singleSelect_confirm_c919bef1e_5_5", "agent": "interaction", "tool": "key_press", "parameters": { @@ -2589,7 +2707,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_singleSelect_assertOption_c919bef1e_5_4" + "step_singleSelect_assertOption_c919bef1e_5_5" ], "preconditions": [], "postconditions": [], @@ -2599,7 +2717,7 @@ ] }, { - "step_id": "step_textInput_assertQuestion_c919bef1e_5_5", + "step_id": "step_textInput_assertQuestion_c919bef1e_5_6", "agent": "assertion", "tool": "", "parameters": {}, @@ -2609,7 +2727,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_singleSelect_confirm_c919bef1e_5_4" + "step_singleSelect_confirm_c919bef1e_5_5" ], "preconditions": [], "postconditions": [], @@ -2620,7 +2738,7 @@ ] }, { - "step_id": "step_textInput_input_c919bef1e_5_5", + "step_id": "step_textInput_input_c919bef1e_5_6", "agent": "interaction", "tool": "type_text", "parameters": { @@ -2632,7 +2750,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_textInput_assertQuestion_c919bef1e_5_5" + "step_textInput_assertQuestion_c919bef1e_5_6" ], "preconditions": [], "postconditions": [], @@ -2642,7 +2760,7 @@ ] }, { - "step_id": "step_textInput_confirm_c919bef1e_5_5", + "step_id": "step_textInput_confirm_c919bef1e_5_6", "agent": "interaction", "tool": "key_press", "parameters": { @@ -2654,7 +2772,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_textInput_input_c919bef1e_5_5" + "step_textInput_input_c919bef1e_5_6" ], "preconditions": [], "postconditions": [], @@ -2664,7 +2782,7 @@ ] }, { - "step_id": "step_singleSelect_assertQuestion_c919bef1e_5_6", + "step_id": "step_singleSelect_assertQuestion_c919bef1e_5_7", "agent": "assertion", "tool": "", "parameters": {}, @@ -2674,7 +2792,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_textInput_confirm_c919bef1e_5_5" + "step_textInput_confirm_c919bef1e_5_6" ], "preconditions": [], "postconditions": [], @@ -2685,17 +2803,17 @@ ] }, { - "step_id": "step_singleSelect_assertOptionsLoaded_c919bef1e_5_6", + "step_id": "step_singleSelect_assertOptionsLoaded_c919bef1e_5_7", "agent": "assertion", "tool": "", "parameters": {}, - "description": "@assertion the prompt titled Location for the new resource group lists at least one option below its input box.", + "description": "@assertion the prompt titled Location for the new resource group has finished loading and lists at least one selectable option.", "content_refs": [], "timeout": 120, "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_singleSelect_assertQuestion_c919bef1e_5_6" + "step_singleSelect_assertQuestion_c919bef1e_5_7" ], "preconditions": [], "postconditions": [], @@ -2706,7 +2824,7 @@ ] }, { - "step_id": "step_singleSelect_filter_c919bef1e_5_6", + "step_id": "step_singleSelect_filter_c919bef1e_5_7", "agent": "interaction", "tool": "type_text", "parameters": { @@ -2718,7 +2836,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_singleSelect_assertOptionsLoaded_c919bef1e_5_6" + "step_singleSelect_assertOptionsLoaded_c919bef1e_5_7" ], "preconditions": [], "postconditions": [], @@ -2728,7 +2846,7 @@ ] }, { - "step_id": "step_singleSelect_assertOption_c919bef1e_5_6", + "step_id": "step_singleSelect_assertOption_c919bef1e_5_7", "agent": "assertion", "tool": "", "parameters": {}, @@ -2738,7 +2856,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_singleSelect_filter_c919bef1e_5_6" + "step_singleSelect_filter_c919bef1e_5_7" ], "preconditions": [], "postconditions": [], @@ -2749,7 +2867,7 @@ ] }, { - "step_id": "step_singleSelect_confirm_c919bef1e_5_6", + "step_id": "step_singleSelect_confirm_c919bef1e_5_7", "agent": "interaction", "tool": "key_press", "parameters": { @@ -2761,7 +2879,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_singleSelect_assertOption_c919bef1e_5_6" + "step_singleSelect_assertOption_c919bef1e_5_7" ], "preconditions": [], "postconditions": [], @@ -2771,7 +2889,7 @@ ] }, { - "step_id": "step_clickPrimaryAction_assertDialog_c919bef1e_5_7", + "step_id": "step_clickPrimaryAction_assertDialog_c919bef1e_5_8", "agent": "assertion", "tool": "", "parameters": {}, @@ -2781,7 +2899,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_singleSelect_confirm_c919bef1e_5_6" + "step_singleSelect_confirm_c919bef1e_5_7" ], "preconditions": [], "postconditions": [], @@ -2792,7 +2910,7 @@ ] }, { - "step_id": "step_clickPrimaryAction_click_c919bef1e_5_7", + "step_id": "step_clickPrimaryAction_click_c919bef1e_5_8", "agent": "interaction", "tool": "key_press", "parameters": { @@ -2804,7 +2922,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_clickPrimaryAction_assertDialog_c919bef1e_5_7" + "step_clickPrimaryAction_assertDialog_c919bef1e_5_8" ], "preconditions": [], "postconditions": [], @@ -2814,7 +2932,7 @@ ] }, { - "step_id": "step_assertNotificationContains_assert_c919bef1e_5_8", + "step_id": "step_assertNotificationContains_assert_c919bef1e_5_9", "agent": "assertion", "tool": "", "parameters": {}, @@ -2824,14 +2942,14 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_clickPrimaryAction_click_c919bef1e_5_7" + "step_clickPrimaryAction_click_c919bef1e_5_8" ], "preconditions": [], "postconditions": [], "tags": [ "component:notifications", "action:assert-contains", - "step_retry_timeout: 300" + "step_retry_timeout: 900" ] }, { @@ -2847,7 +2965,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_assertNotificationContains_assert_c919bef1e_5_8" + "step_assertNotificationContains_assert_c919bef1e_5_9" ], "preconditions": [], "postconditions": [], @@ -2882,7 +3000,7 @@ "agent": "interaction", "tool": "type_text", "parameters": { - "text": "Notifications: Show Notifications" + "text": "Notifications: Clear All Notifications" }, "description": "Type the resolved command title into the active Command Palette.", "content_refs": [], @@ -2904,7 +3022,7 @@ "agent": "assertion", "tool": "", "parameters": {}, - "description": "@assertion the Command Palette input box reads >Notifications: Show Notifications and the highlighted command listed under it is titled Notifications: Show Notifications.", + "description": "@assertion the Command Palette input box reads >Notifications: Clear All Notifications and the highlighted command listed under it is titled Notifications: Clear All Notifications.", "content_refs": [], "timeout": 30, "retry_count": 0, @@ -2990,7 +3108,7 @@ "agent": "interaction", "tool": "type_text", "parameters": { - "text": "Microsoft 365 Agents: Deploy" + "text": "Notifications: Show Notifications" }, "description": "Type the resolved command title into the active Command Palette.", "content_refs": [], @@ -3012,7 +3130,7 @@ "agent": "assertion", "tool": "", "parameters": {}, - "description": "@assertion the Command Palette input box reads >Microsoft 365 Agents: Deploy and the highlighted command listed under it is titled Microsoft 365 Agents: Deploy.", + "description": "@assertion the Command Palette input box reads >Notifications: Show Notifications and the highlighted command listed under it is titled Notifications: Show Notifications.", "content_refs": [], "timeout": 30, "retry_count": 0, @@ -3051,7 +3169,115 @@ ] }, { - "step_id": "step_clickOption_assertPrompt_c919bef1e_6_3", + "step_id": "step_executeCommand_open_c919bef1e_6_3", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "f1" + }, + "description": "Press the F1 key to open the Command Palette in Visual Studio Code.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_execute_c919bef1e_6_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertPalette_c919bef1e_6_3", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Visual Studio Code Command Palette is visible with a > character in its input box and is ready to accept a command search.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_open_c919bef1e_6_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_filter_c919bef1e_6_3", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Microsoft 365 Agents: Deploy" + }, + "description": "Type the resolved command title into the active Command Palette.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertPalette_c919bef1e_6_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertCommand_c919bef1e_6_3", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Command Palette input box reads >Microsoft 365 Agents: Deploy and the highlighted command listed under it is titled Microsoft 365 Agents: Deploy.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_filter_c919bef1e_6_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_execute_c919bef1e_6_3", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to execute the selected Command Palette command.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertCommand_c919bef1e_6_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_clickOption_assertPrompt_c919bef1e_6_4", "agent": "assertion", "tool": "", "parameters": {}, @@ -3061,7 +3287,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_executeCommand_execute_c919bef1e_6_2" + "step_executeCommand_execute_c919bef1e_6_3" ], "preconditions": [], "postconditions": [], @@ -3073,7 +3299,7 @@ ] }, { - "step_id": "step_clickOption_click_c919bef1e_6_3", + "step_id": "step_clickOption_click_c919bef1e_6_4", "agent": "interaction", "tool": "click", "parameters": { @@ -3087,7 +3313,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_clickOption_assertPrompt_c919bef1e_6_3" + "step_clickOption_assertPrompt_c919bef1e_6_4" ], "preconditions": [ "dhash:292:77:16:5:0000000000000000", @@ -3102,7 +3328,7 @@ ] }, { - "step_id": "step_clickPrimaryAction_assertDialog_c919bef1e_6_4", + "step_id": "step_clickPrimaryAction_assertDialog_c919bef1e_6_5", "agent": "assertion", "tool": "", "parameters": {}, @@ -3112,7 +3338,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_clickOption_click_c919bef1e_6_3" + "step_clickOption_click_c919bef1e_6_4" ], "preconditions": [], "postconditions": [], @@ -3123,7 +3349,7 @@ ] }, { - "step_id": "step_clickPrimaryAction_click_c919bef1e_6_4", + "step_id": "step_clickPrimaryAction_click_c919bef1e_6_5", "agent": "interaction", "tool": "key_press", "parameters": { @@ -3135,7 +3361,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_clickPrimaryAction_assertDialog_c919bef1e_6_4" + "step_clickPrimaryAction_assertDialog_c919bef1e_6_5" ], "preconditions": [], "postconditions": [], @@ -3145,7 +3371,7 @@ ] }, { - "step_id": "step_assertNotificationContains_assert_c919bef1e_6_5", + "step_id": "step_assertNotificationContains_assert_c919bef1e_6_6", "agent": "assertion", "tool": "", "parameters": {}, @@ -3155,14 +3381,14 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_clickPrimaryAction_click_c919bef1e_6_4" + "step_clickPrimaryAction_click_c919bef1e_6_5" ], "preconditions": [], "postconditions": [], "tags": [ "component:notifications", "action:assert-contains", - "step_retry_timeout: 300" + "step_retry_timeout: 900" ] }, { @@ -3178,7 +3404,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_assertNotificationContains_assert_c919bef1e_6_5" + "step_assertNotificationContains_assert_c919bef1e_6_6" ], "preconditions": [], "postconditions": [], diff --git a/packages/tests/vscuse/vscode-test-cases/plans/da-api-plugin-from-scratch--da-api-plugin-from-scratch-ts.json b/packages/tests/vscuse/vscode-test-cases/plans/da-api-plugin-from-scratch--da-api-plugin-from-scratch-ts.json index 65e9925bc37..0d922e594c3 100644 --- a/packages/tests/vscuse/vscode-test-cases/plans/da-api-plugin-from-scratch--da-api-plugin-from-scratch-ts.json +++ b/packages/tests/vscuse/vscode-test-cases/plans/da-api-plugin-from-scratch--da-api-plugin-from-scratch-ts.json @@ -8,7 +8,7 @@ "precondition_wait_timeout": 30, "precondition_retry_interval": 1 }, - "total_steps": 160, + "total_steps": 170, "name": "da-api-plugin-from-scratch-ts", "description": { "owner": "", @@ -115,24 +115,29 @@ "step_executeCommand_filter_ccf08c250_5_2", "step_executeCommand_assertCommand_ccf08c250_5_2", "step_executeCommand_execute_ccf08c250_5_2", - "step_clickOption_assertPrompt_ccf08c250_5_3", - "step_clickOption_click_ccf08c250_5_3", - "step_singleSelect_assertQuestion_ccf08c250_5_4", - "step_singleSelect_assertOptionsLoaded_ccf08c250_5_4", - "step_singleSelect_filter_ccf08c250_5_4", - "step_singleSelect_assertOption_ccf08c250_5_4", - "step_singleSelect_confirm_ccf08c250_5_4", - "step_textInput_assertQuestion_ccf08c250_5_5", - "step_textInput_input_ccf08c250_5_5", - "step_textInput_confirm_ccf08c250_5_5", - "step_singleSelect_assertQuestion_ccf08c250_5_6", - "step_singleSelect_assertOptionsLoaded_ccf08c250_5_6", - "step_singleSelect_filter_ccf08c250_5_6", - "step_singleSelect_assertOption_ccf08c250_5_6", - "step_singleSelect_confirm_ccf08c250_5_6", - "step_clickPrimaryAction_assertDialog_ccf08c250_5_7", - "step_clickPrimaryAction_click_ccf08c250_5_7", - "step_assertNotificationContains_assert_ccf08c250_5_8", + "step_executeCommand_open_ccf08c250_5_3", + "step_executeCommand_assertPalette_ccf08c250_5_3", + "step_executeCommand_filter_ccf08c250_5_3", + "step_executeCommand_assertCommand_ccf08c250_5_3", + "step_executeCommand_execute_ccf08c250_5_3", + "step_clickOption_assertPrompt_ccf08c250_5_4", + "step_clickOption_click_ccf08c250_5_4", + "step_singleSelect_assertQuestion_ccf08c250_5_5", + "step_singleSelect_assertOptionsLoaded_ccf08c250_5_5", + "step_singleSelect_filter_ccf08c250_5_5", + "step_singleSelect_assertOption_ccf08c250_5_5", + "step_singleSelect_confirm_ccf08c250_5_5", + "step_textInput_assertQuestion_ccf08c250_5_6", + "step_textInput_input_ccf08c250_5_6", + "step_textInput_confirm_ccf08c250_5_6", + "step_singleSelect_assertQuestion_ccf08c250_5_7", + "step_singleSelect_assertOptionsLoaded_ccf08c250_5_7", + "step_singleSelect_filter_ccf08c250_5_7", + "step_singleSelect_assertOption_ccf08c250_5_7", + "step_singleSelect_confirm_ccf08c250_5_7", + "step_clickPrimaryAction_assertDialog_ccf08c250_5_8", + "step_clickPrimaryAction_click_ccf08c250_5_8", + "step_assertNotificationContains_assert_ccf08c250_5_9", "step_executeCommand_open_ccf08c250_6_1", "step_executeCommand_assertPalette_ccf08c250_6_1", "step_executeCommand_filter_ccf08c250_6_1", @@ -143,11 +148,16 @@ "step_executeCommand_filter_ccf08c250_6_2", "step_executeCommand_assertCommand_ccf08c250_6_2", "step_executeCommand_execute_ccf08c250_6_2", - "step_clickOption_assertPrompt_ccf08c250_6_3", - "step_clickOption_click_ccf08c250_6_3", - "step_clickPrimaryAction_assertDialog_ccf08c250_6_4", - "step_clickPrimaryAction_click_ccf08c250_6_4", - "step_assertNotificationContains_assert_ccf08c250_6_5", + "step_executeCommand_open_ccf08c250_6_3", + "step_executeCommand_assertPalette_ccf08c250_6_3", + "step_executeCommand_filter_ccf08c250_6_3", + "step_executeCommand_assertCommand_ccf08c250_6_3", + "step_executeCommand_execute_ccf08c250_6_3", + "step_clickOption_assertPrompt_ccf08c250_6_4", + "step_clickOption_click_ccf08c250_6_4", + "step_clickPrimaryAction_assertDialog_ccf08c250_6_5", + "step_clickPrimaryAction_click_ccf08c250_6_5", + "step_assertNotificationContains_assert_ccf08c250_6_6", "step_executeCommand_open_ccf08c250_7_1", "step_executeCommand_assertPalette_ccf08c250_7_1", "step_executeCommand_filter_ccf08c250_7_1", @@ -581,7 +591,7 @@ "agent": "assertion", "tool": "", "parameters": {}, - "description": "@assertion the prompt titled New Project lists at least one option below its input box.", + "description": "@assertion the prompt titled New Project has finished loading and lists at least one selectable option.", "content_refs": [], "timeout": 120, "retry_count": 0, @@ -688,7 +698,7 @@ "agent": "assertion", "tool": "", "parameters": {}, - "description": "@assertion the prompt titled Create Declarative Agent lists at least one option below its input box.", + "description": "@assertion the prompt titled Create Declarative Agent has finished loading and lists at least one selectable option.", "content_refs": [], "timeout": 120, "retry_count": 0, @@ -795,7 +805,7 @@ "agent": "assertion", "tool": "", "parameters": {}, - "description": "@assertion the prompt titled Create an Action lists at least one option below its input box.", + "description": "@assertion the prompt titled Create an Action has finished loading and lists at least one selectable option.", "content_refs": [], "timeout": 120, "retry_count": 0, @@ -902,7 +912,7 @@ "agent": "assertion", "tool": "", "parameters": {}, - "description": "@assertion the prompt titled Authentication Type lists at least one option below its input box.", + "description": "@assertion the prompt titled Authentication Type has finished loading and lists at least one selectable option.", "content_refs": [], "timeout": 120, "retry_count": 0, @@ -1009,7 +1019,7 @@ "agent": "assertion", "tool": "", "parameters": {}, - "description": "@assertion the prompt titled Programming Language lists at least one option below its input box.", + "description": "@assertion the prompt titled Programming Language has finished loading and lists at least one selectable option.", "content_refs": [], "timeout": 120, "retry_count": 0, @@ -2272,7 +2282,7 @@ "agent": "interaction", "tool": "type_text", "parameters": { - "text": "Notifications: Show Notifications" + "text": "Notifications: Clear All Notifications" }, "description": "Type the resolved command title into the active Command Palette.", "content_refs": [], @@ -2294,7 +2304,7 @@ "agent": "assertion", "tool": "", "parameters": {}, - "description": "@assertion the Command Palette input box reads >Notifications: Show Notifications and the highlighted command listed under it is titled Notifications: Show Notifications.", + "description": "@assertion the Command Palette input box reads >Notifications: Clear All Notifications and the highlighted command listed under it is titled Notifications: Clear All Notifications.", "content_refs": [], "timeout": 30, "retry_count": 0, @@ -2380,7 +2390,7 @@ "agent": "interaction", "tool": "type_text", "parameters": { - "text": "Microsoft 365 Agents: Provision" + "text": "Notifications: Show Notifications" }, "description": "Type the resolved command title into the active Command Palette.", "content_refs": [], @@ -2402,7 +2412,7 @@ "agent": "assertion", "tool": "", "parameters": {}, - "description": "@assertion the Command Palette input box reads >Microsoft 365 Agents: Provision and the highlighted command listed under it is titled Microsoft 365 Agents: Provision.", + "description": "@assertion the Command Palette input box reads >Notifications: Show Notifications and the highlighted command listed under it is titled Notifications: Show Notifications.", "content_refs": [], "timeout": 30, "retry_count": 0, @@ -2441,7 +2451,115 @@ ] }, { - "step_id": "step_clickOption_assertPrompt_ccf08c250_5_3", + "step_id": "step_executeCommand_open_ccf08c250_5_3", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "f1" + }, + "description": "Press the F1 key to open the Command Palette in Visual Studio Code.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_execute_ccf08c250_5_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertPalette_ccf08c250_5_3", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Visual Studio Code Command Palette is visible with a > character in its input box and is ready to accept a command search.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_open_ccf08c250_5_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_filter_ccf08c250_5_3", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Microsoft 365 Agents: Provision" + }, + "description": "Type the resolved command title into the active Command Palette.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertPalette_ccf08c250_5_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertCommand_ccf08c250_5_3", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Command Palette input box reads >Microsoft 365 Agents: Provision and the highlighted command listed under it is titled Microsoft 365 Agents: Provision.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_filter_ccf08c250_5_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_execute_ccf08c250_5_3", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to execute the selected Command Palette command.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertCommand_ccf08c250_5_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_clickOption_assertPrompt_ccf08c250_5_4", "agent": "assertion", "tool": "", "parameters": {}, @@ -2451,7 +2569,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_executeCommand_execute_ccf08c250_5_2" + "step_executeCommand_execute_ccf08c250_5_3" ], "preconditions": [], "postconditions": [], @@ -2463,7 +2581,7 @@ ] }, { - "step_id": "step_clickOption_click_ccf08c250_5_3", + "step_id": "step_clickOption_click_ccf08c250_5_4", "agent": "interaction", "tool": "click", "parameters": { @@ -2477,7 +2595,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_clickOption_assertPrompt_ccf08c250_5_3" + "step_clickOption_assertPrompt_ccf08c250_5_4" ], "preconditions": [ "dhash:292:77:16:5:0000000000000000", @@ -2492,7 +2610,7 @@ ] }, { - "step_id": "step_singleSelect_assertQuestion_ccf08c250_5_4", + "step_id": "step_singleSelect_assertQuestion_ccf08c250_5_5", "agent": "assertion", "tool": "", "parameters": {}, @@ -2502,7 +2620,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_clickOption_click_ccf08c250_5_3" + "step_clickOption_click_ccf08c250_5_4" ], "preconditions": [], "postconditions": [], @@ -2513,17 +2631,17 @@ ] }, { - "step_id": "step_singleSelect_assertOptionsLoaded_ccf08c250_5_4", + "step_id": "step_singleSelect_assertOptionsLoaded_ccf08c250_5_5", "agent": "assertion", "tool": "", "parameters": {}, - "description": "@assertion the prompt titled Select a resource group lists at least one option below its input box.", + "description": "@assertion the prompt titled Select a resource group has finished loading and lists at least one selectable option.", "content_refs": [], "timeout": 120, "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_singleSelect_assertQuestion_ccf08c250_5_4" + "step_singleSelect_assertQuestion_ccf08c250_5_5" ], "preconditions": [], "postconditions": [], @@ -2534,7 +2652,7 @@ ] }, { - "step_id": "step_singleSelect_filter_ccf08c250_5_4", + "step_id": "step_singleSelect_filter_ccf08c250_5_5", "agent": "interaction", "tool": "type_text", "parameters": { @@ -2546,7 +2664,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_singleSelect_assertOptionsLoaded_ccf08c250_5_4" + "step_singleSelect_assertOptionsLoaded_ccf08c250_5_5" ], "preconditions": [], "postconditions": [], @@ -2556,7 +2674,7 @@ ] }, { - "step_id": "step_singleSelect_assertOption_ccf08c250_5_4", + "step_id": "step_singleSelect_assertOption_ccf08c250_5_5", "agent": "assertion", "tool": "", "parameters": {}, @@ -2566,7 +2684,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_singleSelect_filter_ccf08c250_5_4" + "step_singleSelect_filter_ccf08c250_5_5" ], "preconditions": [], "postconditions": [], @@ -2577,7 +2695,7 @@ ] }, { - "step_id": "step_singleSelect_confirm_ccf08c250_5_4", + "step_id": "step_singleSelect_confirm_ccf08c250_5_5", "agent": "interaction", "tool": "key_press", "parameters": { @@ -2589,7 +2707,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_singleSelect_assertOption_ccf08c250_5_4" + "step_singleSelect_assertOption_ccf08c250_5_5" ], "preconditions": [], "postconditions": [], @@ -2599,7 +2717,7 @@ ] }, { - "step_id": "step_textInput_assertQuestion_ccf08c250_5_5", + "step_id": "step_textInput_assertQuestion_ccf08c250_5_6", "agent": "assertion", "tool": "", "parameters": {}, @@ -2609,7 +2727,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_singleSelect_confirm_ccf08c250_5_4" + "step_singleSelect_confirm_ccf08c250_5_5" ], "preconditions": [], "postconditions": [], @@ -2620,7 +2738,7 @@ ] }, { - "step_id": "step_textInput_input_ccf08c250_5_5", + "step_id": "step_textInput_input_ccf08c250_5_6", "agent": "interaction", "tool": "type_text", "parameters": { @@ -2632,7 +2750,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_textInput_assertQuestion_ccf08c250_5_5" + "step_textInput_assertQuestion_ccf08c250_5_6" ], "preconditions": [], "postconditions": [], @@ -2642,7 +2760,7 @@ ] }, { - "step_id": "step_textInput_confirm_ccf08c250_5_5", + "step_id": "step_textInput_confirm_ccf08c250_5_6", "agent": "interaction", "tool": "key_press", "parameters": { @@ -2654,7 +2772,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_textInput_input_ccf08c250_5_5" + "step_textInput_input_ccf08c250_5_6" ], "preconditions": [], "postconditions": [], @@ -2664,7 +2782,7 @@ ] }, { - "step_id": "step_singleSelect_assertQuestion_ccf08c250_5_6", + "step_id": "step_singleSelect_assertQuestion_ccf08c250_5_7", "agent": "assertion", "tool": "", "parameters": {}, @@ -2674,7 +2792,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_textInput_confirm_ccf08c250_5_5" + "step_textInput_confirm_ccf08c250_5_6" ], "preconditions": [], "postconditions": [], @@ -2685,17 +2803,17 @@ ] }, { - "step_id": "step_singleSelect_assertOptionsLoaded_ccf08c250_5_6", + "step_id": "step_singleSelect_assertOptionsLoaded_ccf08c250_5_7", "agent": "assertion", "tool": "", "parameters": {}, - "description": "@assertion the prompt titled Location for the new resource group lists at least one option below its input box.", + "description": "@assertion the prompt titled Location for the new resource group has finished loading and lists at least one selectable option.", "content_refs": [], "timeout": 120, "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_singleSelect_assertQuestion_ccf08c250_5_6" + "step_singleSelect_assertQuestion_ccf08c250_5_7" ], "preconditions": [], "postconditions": [], @@ -2706,7 +2824,7 @@ ] }, { - "step_id": "step_singleSelect_filter_ccf08c250_5_6", + "step_id": "step_singleSelect_filter_ccf08c250_5_7", "agent": "interaction", "tool": "type_text", "parameters": { @@ -2718,7 +2836,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_singleSelect_assertOptionsLoaded_ccf08c250_5_6" + "step_singleSelect_assertOptionsLoaded_ccf08c250_5_7" ], "preconditions": [], "postconditions": [], @@ -2728,7 +2846,7 @@ ] }, { - "step_id": "step_singleSelect_assertOption_ccf08c250_5_6", + "step_id": "step_singleSelect_assertOption_ccf08c250_5_7", "agent": "assertion", "tool": "", "parameters": {}, @@ -2738,7 +2856,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_singleSelect_filter_ccf08c250_5_6" + "step_singleSelect_filter_ccf08c250_5_7" ], "preconditions": [], "postconditions": [], @@ -2749,7 +2867,7 @@ ] }, { - "step_id": "step_singleSelect_confirm_ccf08c250_5_6", + "step_id": "step_singleSelect_confirm_ccf08c250_5_7", "agent": "interaction", "tool": "key_press", "parameters": { @@ -2761,7 +2879,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_singleSelect_assertOption_ccf08c250_5_6" + "step_singleSelect_assertOption_ccf08c250_5_7" ], "preconditions": [], "postconditions": [], @@ -2771,7 +2889,7 @@ ] }, { - "step_id": "step_clickPrimaryAction_assertDialog_ccf08c250_5_7", + "step_id": "step_clickPrimaryAction_assertDialog_ccf08c250_5_8", "agent": "assertion", "tool": "", "parameters": {}, @@ -2781,7 +2899,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_singleSelect_confirm_ccf08c250_5_6" + "step_singleSelect_confirm_ccf08c250_5_7" ], "preconditions": [], "postconditions": [], @@ -2792,7 +2910,7 @@ ] }, { - "step_id": "step_clickPrimaryAction_click_ccf08c250_5_7", + "step_id": "step_clickPrimaryAction_click_ccf08c250_5_8", "agent": "interaction", "tool": "key_press", "parameters": { @@ -2804,7 +2922,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_clickPrimaryAction_assertDialog_ccf08c250_5_7" + "step_clickPrimaryAction_assertDialog_ccf08c250_5_8" ], "preconditions": [], "postconditions": [], @@ -2814,7 +2932,7 @@ ] }, { - "step_id": "step_assertNotificationContains_assert_ccf08c250_5_8", + "step_id": "step_assertNotificationContains_assert_ccf08c250_5_9", "agent": "assertion", "tool": "", "parameters": {}, @@ -2824,14 +2942,14 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_clickPrimaryAction_click_ccf08c250_5_7" + "step_clickPrimaryAction_click_ccf08c250_5_8" ], "preconditions": [], "postconditions": [], "tags": [ "component:notifications", "action:assert-contains", - "step_retry_timeout: 300" + "step_retry_timeout: 900" ] }, { @@ -2847,7 +2965,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_assertNotificationContains_assert_ccf08c250_5_8" + "step_assertNotificationContains_assert_ccf08c250_5_9" ], "preconditions": [], "postconditions": [], @@ -2882,7 +3000,7 @@ "agent": "interaction", "tool": "type_text", "parameters": { - "text": "Notifications: Show Notifications" + "text": "Notifications: Clear All Notifications" }, "description": "Type the resolved command title into the active Command Palette.", "content_refs": [], @@ -2904,7 +3022,7 @@ "agent": "assertion", "tool": "", "parameters": {}, - "description": "@assertion the Command Palette input box reads >Notifications: Show Notifications and the highlighted command listed under it is titled Notifications: Show Notifications.", + "description": "@assertion the Command Palette input box reads >Notifications: Clear All Notifications and the highlighted command listed under it is titled Notifications: Clear All Notifications.", "content_refs": [], "timeout": 30, "retry_count": 0, @@ -2990,7 +3108,7 @@ "agent": "interaction", "tool": "type_text", "parameters": { - "text": "Microsoft 365 Agents: Deploy" + "text": "Notifications: Show Notifications" }, "description": "Type the resolved command title into the active Command Palette.", "content_refs": [], @@ -3012,7 +3130,7 @@ "agent": "assertion", "tool": "", "parameters": {}, - "description": "@assertion the Command Palette input box reads >Microsoft 365 Agents: Deploy and the highlighted command listed under it is titled Microsoft 365 Agents: Deploy.", + "description": "@assertion the Command Palette input box reads >Notifications: Show Notifications and the highlighted command listed under it is titled Notifications: Show Notifications.", "content_refs": [], "timeout": 30, "retry_count": 0, @@ -3051,7 +3169,115 @@ ] }, { - "step_id": "step_clickOption_assertPrompt_ccf08c250_6_3", + "step_id": "step_executeCommand_open_ccf08c250_6_3", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "f1" + }, + "description": "Press the F1 key to open the Command Palette in Visual Studio Code.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_execute_ccf08c250_6_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertPalette_ccf08c250_6_3", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Visual Studio Code Command Palette is visible with a > character in its input box and is ready to accept a command search.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_open_ccf08c250_6_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_filter_ccf08c250_6_3", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Microsoft 365 Agents: Deploy" + }, + "description": "Type the resolved command title into the active Command Palette.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertPalette_ccf08c250_6_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertCommand_ccf08c250_6_3", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Command Palette input box reads >Microsoft 365 Agents: Deploy and the highlighted command listed under it is titled Microsoft 365 Agents: Deploy.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_filter_ccf08c250_6_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_execute_ccf08c250_6_3", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to execute the selected Command Palette command.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertCommand_ccf08c250_6_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_clickOption_assertPrompt_ccf08c250_6_4", "agent": "assertion", "tool": "", "parameters": {}, @@ -3061,7 +3287,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_executeCommand_execute_ccf08c250_6_2" + "step_executeCommand_execute_ccf08c250_6_3" ], "preconditions": [], "postconditions": [], @@ -3073,7 +3299,7 @@ ] }, { - "step_id": "step_clickOption_click_ccf08c250_6_3", + "step_id": "step_clickOption_click_ccf08c250_6_4", "agent": "interaction", "tool": "click", "parameters": { @@ -3087,7 +3313,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_clickOption_assertPrompt_ccf08c250_6_3" + "step_clickOption_assertPrompt_ccf08c250_6_4" ], "preconditions": [ "dhash:292:77:16:5:0000000000000000", @@ -3102,7 +3328,7 @@ ] }, { - "step_id": "step_clickPrimaryAction_assertDialog_ccf08c250_6_4", + "step_id": "step_clickPrimaryAction_assertDialog_ccf08c250_6_5", "agent": "assertion", "tool": "", "parameters": {}, @@ -3112,7 +3338,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_clickOption_click_ccf08c250_6_3" + "step_clickOption_click_ccf08c250_6_4" ], "preconditions": [], "postconditions": [], @@ -3123,7 +3349,7 @@ ] }, { - "step_id": "step_clickPrimaryAction_click_ccf08c250_6_4", + "step_id": "step_clickPrimaryAction_click_ccf08c250_6_5", "agent": "interaction", "tool": "key_press", "parameters": { @@ -3135,7 +3361,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_clickPrimaryAction_assertDialog_ccf08c250_6_4" + "step_clickPrimaryAction_assertDialog_ccf08c250_6_5" ], "preconditions": [], "postconditions": [], @@ -3145,7 +3371,7 @@ ] }, { - "step_id": "step_assertNotificationContains_assert_ccf08c250_6_5", + "step_id": "step_assertNotificationContains_assert_ccf08c250_6_6", "agent": "assertion", "tool": "", "parameters": {}, @@ -3155,14 +3381,14 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_clickPrimaryAction_click_ccf08c250_6_4" + "step_clickPrimaryAction_click_ccf08c250_6_5" ], "preconditions": [], "postconditions": [], "tags": [ "component:notifications", "action:assert-contains", - "step_retry_timeout: 300" + "step_retry_timeout: 900" ] }, { @@ -3178,7 +3404,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_assertNotificationContains_assert_ccf08c250_6_5" + "step_assertNotificationContains_assert_ccf08c250_6_6" ], "preconditions": [], "postconditions": [], diff --git a/packages/tests/vscuse/vscode-test-cases/plans/da-mcp-server--da-mcp-remote-entra-preview.json b/packages/tests/vscuse/vscode-test-cases/plans/da-mcp-server--da-mcp-remote-entra-preview.json index cf92ae959f4..1945f8aa74e 100644 --- a/packages/tests/vscuse/vscode-test-cases/plans/da-mcp-server--da-mcp-remote-entra-preview.json +++ b/packages/tests/vscuse/vscode-test-cases/plans/da-mcp-server--da-mcp-remote-entra-preview.json @@ -8,7 +8,7 @@ "precondition_wait_timeout": 30, "precondition_retry_interval": 1 }, - "total_steps": 99, + "total_steps": 104, "name": "da-mcp-remote-entra-preview", "description": { "owner": "", @@ -95,7 +95,12 @@ "step_executeCommand_filter_c0af3d3fa_4_2", "step_executeCommand_assertCommand_c0af3d3fa_4_2", "step_executeCommand_execute_c0af3d3fa_4_2", - "step_assertNotificationContains_assert_c0af3d3fa_4_3", + "step_executeCommand_open_c0af3d3fa_4_3", + "step_executeCommand_assertPalette_c0af3d3fa_4_3", + "step_executeCommand_filter_c0af3d3fa_4_3", + "step_executeCommand_assertCommand_c0af3d3fa_4_3", + "step_executeCommand_execute_c0af3d3fa_4_3", + "step_assertNotificationContains_assert_c0af3d3fa_4_4", "step_executeCommand_open_c0af3d3fa_5_1", "step_executeCommand_assertPalette_c0af3d3fa_5_1", "step_executeCommand_filter_c0af3d3fa_5_1", @@ -522,7 +527,7 @@ "agent": "assertion", "tool": "", "parameters": {}, - "description": "@assertion the prompt titled New Project lists at least one option below its input box.", + "description": "@assertion the prompt titled New Project has finished loading and lists at least one selectable option.", "content_refs": [], "timeout": 120, "retry_count": 0, @@ -629,7 +634,7 @@ "agent": "assertion", "tool": "", "parameters": {}, - "description": "@assertion the prompt titled Create Declarative Agent lists at least one option below its input box.", + "description": "@assertion the prompt titled Create Declarative Agent has finished loading and lists at least one selectable option.", "content_refs": [], "timeout": 120, "retry_count": 0, @@ -736,7 +741,7 @@ "agent": "assertion", "tool": "", "parameters": {}, - "description": "@assertion the prompt titled Create an Action lists at least one option below its input box.", + "description": "@assertion the prompt titled Create an Action has finished loading and lists at least one selectable option.", "content_refs": [], "timeout": 120, "retry_count": 0, @@ -908,7 +913,7 @@ "agent": "assertion", "tool": "", "parameters": {}, - "description": "@assertion the prompt titled Select Authentication Type lists at least one option below its input box.", + "description": "@assertion the prompt titled Select Authentication Type has finished loading and lists at least one selectable option.", "content_refs": [], "timeout": 120, "retry_count": 0, @@ -1722,7 +1727,7 @@ "agent": "interaction", "tool": "type_text", "parameters": { - "text": "Notifications: Show Notifications" + "text": "Notifications: Clear All Notifications" }, "description": "Type the resolved command title into the active Command Palette.", "content_refs": [], @@ -1744,7 +1749,7 @@ "agent": "assertion", "tool": "", "parameters": {}, - "description": "@assertion the Command Palette input box reads >Notifications: Show Notifications and the highlighted command listed under it is titled Notifications: Show Notifications.", + "description": "@assertion the Command Palette input box reads >Notifications: Clear All Notifications and the highlighted command listed under it is titled Notifications: Clear All Notifications.", "content_refs": [], "timeout": 30, "retry_count": 0, @@ -1830,7 +1835,7 @@ "agent": "interaction", "tool": "type_text", "parameters": { - "text": "Microsoft 365 Agents: Provision" + "text": "Notifications: Show Notifications" }, "description": "Type the resolved command title into the active Command Palette.", "content_refs": [], @@ -1852,7 +1857,7 @@ "agent": "assertion", "tool": "", "parameters": {}, - "description": "@assertion the Command Palette input box reads >Microsoft 365 Agents: Provision and the highlighted command listed under it is titled Microsoft 365 Agents: Provision.", + "description": "@assertion the Command Palette input box reads >Notifications: Show Notifications and the highlighted command listed under it is titled Notifications: Show Notifications.", "content_refs": [], "timeout": 30, "retry_count": 0, @@ -1891,7 +1896,115 @@ ] }, { - "step_id": "step_assertNotificationContains_assert_c0af3d3fa_4_3", + "step_id": "step_executeCommand_open_c0af3d3fa_4_3", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "f1" + }, + "description": "Press the F1 key to open the Command Palette in Visual Studio Code.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_execute_c0af3d3fa_4_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertPalette_c0af3d3fa_4_3", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Visual Studio Code Command Palette is visible with a > character in its input box and is ready to accept a command search.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_open_c0af3d3fa_4_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_filter_c0af3d3fa_4_3", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Microsoft 365 Agents: Provision" + }, + "description": "Type the resolved command title into the active Command Palette.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertPalette_c0af3d3fa_4_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertCommand_c0af3d3fa_4_3", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Command Palette input box reads >Microsoft 365 Agents: Provision and the highlighted command listed under it is titled Microsoft 365 Agents: Provision.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_filter_c0af3d3fa_4_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_execute_c0af3d3fa_4_3", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to execute the selected Command Palette command.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertCommand_c0af3d3fa_4_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_assertNotificationContains_assert_c0af3d3fa_4_4", "agent": "assertion", "tool": "", "parameters": {}, @@ -1901,14 +2014,14 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_executeCommand_execute_c0af3d3fa_4_2" + "step_executeCommand_execute_c0af3d3fa_4_3" ], "preconditions": [], "postconditions": [], "tags": [ "component:notifications", "action:assert-contains", - "step_retry_timeout: 300" + "step_retry_timeout: 900" ] }, { @@ -1924,7 +2037,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_assertNotificationContains_assert_c0af3d3fa_4_3" + "step_assertNotificationContains_assert_c0af3d3fa_4_4" ], "preconditions": [], "postconditions": [], diff --git a/packages/tests/vscuse/vscode-test-cases/plans/da-mcp-server--da-mcp-remote-none-preview.json b/packages/tests/vscuse/vscode-test-cases/plans/da-mcp-server--da-mcp-remote-none-preview.json index 520b0b4b7a9..234c4d716a2 100644 --- a/packages/tests/vscuse/vscode-test-cases/plans/da-mcp-server--da-mcp-remote-none-preview.json +++ b/packages/tests/vscuse/vscode-test-cases/plans/da-mcp-server--da-mcp-remote-none-preview.json @@ -8,7 +8,7 @@ "precondition_wait_timeout": 30, "precondition_retry_interval": 1 }, - "total_steps": 102, + "total_steps": 107, "name": "da-mcp-remote-none-preview", "description": { "owner": "", @@ -92,7 +92,12 @@ "step_executeCommand_filter_cbe46eee0_4_2", "step_executeCommand_assertCommand_cbe46eee0_4_2", "step_executeCommand_execute_cbe46eee0_4_2", - "step_assertNotificationContains_assert_cbe46eee0_4_3", + "step_executeCommand_open_cbe46eee0_4_3", + "step_executeCommand_assertPalette_cbe46eee0_4_3", + "step_executeCommand_filter_cbe46eee0_4_3", + "step_executeCommand_assertCommand_cbe46eee0_4_3", + "step_executeCommand_execute_cbe46eee0_4_3", + "step_assertNotificationContains_assert_cbe46eee0_4_4", "step_executeCommand_open_cbe46eee0_5_1", "step_executeCommand_assertPalette_cbe46eee0_5_1", "step_executeCommand_filter_cbe46eee0_5_1", @@ -525,7 +530,7 @@ "agent": "assertion", "tool": "", "parameters": {}, - "description": "@assertion the prompt titled New Project lists at least one option below its input box.", + "description": "@assertion the prompt titled New Project has finished loading and lists at least one selectable option.", "content_refs": [], "timeout": 120, "retry_count": 0, @@ -632,7 +637,7 @@ "agent": "assertion", "tool": "", "parameters": {}, - "description": "@assertion the prompt titled Create Declarative Agent lists at least one option below its input box.", + "description": "@assertion the prompt titled Create Declarative Agent has finished loading and lists at least one selectable option.", "content_refs": [], "timeout": 120, "retry_count": 0, @@ -739,7 +744,7 @@ "agent": "assertion", "tool": "", "parameters": {}, - "description": "@assertion the prompt titled Create an Action lists at least one option below its input box.", + "description": "@assertion the prompt titled Create an Action has finished loading and lists at least one selectable option.", "content_refs": [], "timeout": 120, "retry_count": 0, @@ -911,7 +916,7 @@ "agent": "assertion", "tool": "", "parameters": {}, - "description": "@assertion the prompt titled Select Authentication Type lists at least one option below its input box.", + "description": "@assertion the prompt titled Select Authentication Type has finished loading and lists at least one selectable option.", "content_refs": [], "timeout": 120, "retry_count": 0, @@ -1660,7 +1665,7 @@ "agent": "interaction", "tool": "type_text", "parameters": { - "text": "Notifications: Show Notifications" + "text": "Notifications: Clear All Notifications" }, "description": "Type the resolved command title into the active Command Palette.", "content_refs": [], @@ -1682,7 +1687,7 @@ "agent": "assertion", "tool": "", "parameters": {}, - "description": "@assertion the Command Palette input box reads >Notifications: Show Notifications and the highlighted command listed under it is titled Notifications: Show Notifications.", + "description": "@assertion the Command Palette input box reads >Notifications: Clear All Notifications and the highlighted command listed under it is titled Notifications: Clear All Notifications.", "content_refs": [], "timeout": 30, "retry_count": 0, @@ -1768,7 +1773,7 @@ "agent": "interaction", "tool": "type_text", "parameters": { - "text": "Microsoft 365 Agents: Provision" + "text": "Notifications: Show Notifications" }, "description": "Type the resolved command title into the active Command Palette.", "content_refs": [], @@ -1790,7 +1795,7 @@ "agent": "assertion", "tool": "", "parameters": {}, - "description": "@assertion the Command Palette input box reads >Microsoft 365 Agents: Provision and the highlighted command listed under it is titled Microsoft 365 Agents: Provision.", + "description": "@assertion the Command Palette input box reads >Notifications: Show Notifications and the highlighted command listed under it is titled Notifications: Show Notifications.", "content_refs": [], "timeout": 30, "retry_count": 0, @@ -1829,7 +1834,115 @@ ] }, { - "step_id": "step_assertNotificationContains_assert_cbe46eee0_4_3", + "step_id": "step_executeCommand_open_cbe46eee0_4_3", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "f1" + }, + "description": "Press the F1 key to open the Command Palette in Visual Studio Code.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_execute_cbe46eee0_4_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertPalette_cbe46eee0_4_3", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Visual Studio Code Command Palette is visible with a > character in its input box and is ready to accept a command search.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_open_cbe46eee0_4_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_filter_cbe46eee0_4_3", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Microsoft 365 Agents: Provision" + }, + "description": "Type the resolved command title into the active Command Palette.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertPalette_cbe46eee0_4_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertCommand_cbe46eee0_4_3", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Command Palette input box reads >Microsoft 365 Agents: Provision and the highlighted command listed under it is titled Microsoft 365 Agents: Provision.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_filter_cbe46eee0_4_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_execute_cbe46eee0_4_3", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to execute the selected Command Palette command.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertCommand_cbe46eee0_4_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_assertNotificationContains_assert_cbe46eee0_4_4", "agent": "assertion", "tool": "", "parameters": {}, @@ -1839,14 +1952,14 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_executeCommand_execute_cbe46eee0_4_2" + "step_executeCommand_execute_cbe46eee0_4_3" ], "preconditions": [], "postconditions": [], "tags": [ "component:notifications", "action:assert-contains", - "step_retry_timeout: 300" + "step_retry_timeout: 900" ] }, { @@ -1862,7 +1975,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_assertNotificationContains_assert_cbe46eee0_4_3" + "step_assertNotificationContains_assert_cbe46eee0_4_4" ], "preconditions": [], "postconditions": [], diff --git a/packages/tests/vscuse/vscode-test-cases/plans/da-mcp-server--da-mcp-remote-oauth-preview.json b/packages/tests/vscuse/vscode-test-cases/plans/da-mcp-server--da-mcp-remote-oauth-preview.json index eff26c89948..1e9e49fde9b 100644 --- a/packages/tests/vscuse/vscode-test-cases/plans/da-mcp-server--da-mcp-remote-oauth-preview.json +++ b/packages/tests/vscuse/vscode-test-cases/plans/da-mcp-server--da-mcp-remote-oauth-preview.json @@ -8,7 +8,7 @@ "precondition_wait_timeout": 30, "precondition_retry_interval": 1 }, - "total_steps": 111, + "total_steps": 116, "name": "da-mcp-remote-oauth-preview", "description": { "owner": "", @@ -101,7 +101,12 @@ "step_executeCommand_filter_cc3292876_4_2", "step_executeCommand_assertCommand_cc3292876_4_2", "step_executeCommand_execute_cc3292876_4_2", - "step_assertNotificationContains_assert_cc3292876_4_3", + "step_executeCommand_open_cc3292876_4_3", + "step_executeCommand_assertPalette_cc3292876_4_3", + "step_executeCommand_filter_cc3292876_4_3", + "step_executeCommand_assertCommand_cc3292876_4_3", + "step_executeCommand_execute_cc3292876_4_3", + "step_assertNotificationContains_assert_cc3292876_4_4", "step_executeCommand_open_cc3292876_5_1", "step_executeCommand_assertPalette_cc3292876_5_1", "step_executeCommand_filter_cc3292876_5_1", @@ -534,7 +539,7 @@ "agent": "assertion", "tool": "", "parameters": {}, - "description": "@assertion the prompt titled New Project lists at least one option below its input box.", + "description": "@assertion the prompt titled New Project has finished loading and lists at least one selectable option.", "content_refs": [], "timeout": 120, "retry_count": 0, @@ -641,7 +646,7 @@ "agent": "assertion", "tool": "", "parameters": {}, - "description": "@assertion the prompt titled Create Declarative Agent lists at least one option below its input box.", + "description": "@assertion the prompt titled Create Declarative Agent has finished loading and lists at least one selectable option.", "content_refs": [], "timeout": 120, "retry_count": 0, @@ -748,7 +753,7 @@ "agent": "assertion", "tool": "", "parameters": {}, - "description": "@assertion the prompt titled Create an Action lists at least one option below its input box.", + "description": "@assertion the prompt titled Create an Action has finished loading and lists at least one selectable option.", "content_refs": [], "timeout": 120, "retry_count": 0, @@ -920,7 +925,7 @@ "agent": "assertion", "tool": "", "parameters": {}, - "description": "@assertion the prompt titled Select Authentication Type lists at least one option below its input box.", + "description": "@assertion the prompt titled Select Authentication Type has finished loading and lists at least one selectable option.", "content_refs": [], "timeout": 120, "retry_count": 0, @@ -1864,7 +1869,7 @@ "agent": "interaction", "tool": "type_text", "parameters": { - "text": "Notifications: Show Notifications" + "text": "Notifications: Clear All Notifications" }, "description": "Type the resolved command title into the active Command Palette.", "content_refs": [], @@ -1886,7 +1891,7 @@ "agent": "assertion", "tool": "", "parameters": {}, - "description": "@assertion the Command Palette input box reads >Notifications: Show Notifications and the highlighted command listed under it is titled Notifications: Show Notifications.", + "description": "@assertion the Command Palette input box reads >Notifications: Clear All Notifications and the highlighted command listed under it is titled Notifications: Clear All Notifications.", "content_refs": [], "timeout": 30, "retry_count": 0, @@ -1972,7 +1977,7 @@ "agent": "interaction", "tool": "type_text", "parameters": { - "text": "Microsoft 365 Agents: Provision" + "text": "Notifications: Show Notifications" }, "description": "Type the resolved command title into the active Command Palette.", "content_refs": [], @@ -1994,7 +1999,7 @@ "agent": "assertion", "tool": "", "parameters": {}, - "description": "@assertion the Command Palette input box reads >Microsoft 365 Agents: Provision and the highlighted command listed under it is titled Microsoft 365 Agents: Provision.", + "description": "@assertion the Command Palette input box reads >Notifications: Show Notifications and the highlighted command listed under it is titled Notifications: Show Notifications.", "content_refs": [], "timeout": 30, "retry_count": 0, @@ -2033,7 +2038,115 @@ ] }, { - "step_id": "step_assertNotificationContains_assert_cc3292876_4_3", + "step_id": "step_executeCommand_open_cc3292876_4_3", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "f1" + }, + "description": "Press the F1 key to open the Command Palette in Visual Studio Code.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_execute_cc3292876_4_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertPalette_cc3292876_4_3", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Visual Studio Code Command Palette is visible with a > character in its input box and is ready to accept a command search.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_open_cc3292876_4_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_filter_cc3292876_4_3", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Microsoft 365 Agents: Provision" + }, + "description": "Type the resolved command title into the active Command Palette.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertPalette_cc3292876_4_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertCommand_cc3292876_4_3", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Command Palette input box reads >Microsoft 365 Agents: Provision and the highlighted command listed under it is titled Microsoft 365 Agents: Provision.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_filter_cc3292876_4_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_execute_cc3292876_4_3", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to execute the selected Command Palette command.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertCommand_cc3292876_4_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_assertNotificationContains_assert_cc3292876_4_4", "agent": "assertion", "tool": "", "parameters": {}, @@ -2043,14 +2156,14 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_executeCommand_execute_cc3292876_4_2" + "step_executeCommand_execute_cc3292876_4_3" ], "preconditions": [], "postconditions": [], "tags": [ "component:notifications", "action:assert-contains", - "step_retry_timeout: 300" + "step_retry_timeout: 900" ] }, { @@ -2066,7 +2179,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_assertNotificationContains_assert_cc3292876_4_3" + "step_assertNotificationContains_assert_cc3292876_4_4" ], "preconditions": [], "postconditions": [], diff --git a/packages/tests/vscuse/vscode-test-cases/plans/da-no-action--da-no-action-remote-preview.json b/packages/tests/vscuse/vscode-test-cases/plans/da-no-action--da-no-action-remote-preview.json index d72439fc64f..6b321566144 100644 --- a/packages/tests/vscuse/vscode-test-cases/plans/da-no-action--da-no-action-remote-preview.json +++ b/packages/tests/vscuse/vscode-test-cases/plans/da-no-action--da-no-action-remote-preview.json @@ -8,7 +8,7 @@ "precondition_wait_timeout": 30, "precondition_retry_interval": 1 }, - "total_steps": 90, + "total_steps": 95, "name": "da-no-action-remote-preview", "description": { "owner": "", @@ -78,9 +78,14 @@ "step_executeCommand_filter_c60abcc38_4_2", "step_executeCommand_assertCommand_c60abcc38_4_2", "step_executeCommand_execute_c60abcc38_4_2", - "step_clickOption_assertPrompt_c60abcc38_4_3", - "step_clickOption_click_c60abcc38_4_3", - "step_assertNotificationContains_assert_c60abcc38_4_4", + "step_executeCommand_open_c60abcc38_4_3", + "step_executeCommand_assertPalette_c60abcc38_4_3", + "step_executeCommand_filter_c60abcc38_4_3", + "step_executeCommand_assertCommand_c60abcc38_4_3", + "step_executeCommand_execute_c60abcc38_4_3", + "step_clickOption_assertPrompt_c60abcc38_4_4", + "step_clickOption_click_c60abcc38_4_4", + "step_assertNotificationContains_assert_c60abcc38_4_5", "step_executeCommand_open_c60abcc38_5_1", "step_executeCommand_assertPalette_c60abcc38_5_1", "step_executeCommand_filter_c60abcc38_5_1", @@ -511,7 +516,7 @@ "agent": "assertion", "tool": "", "parameters": {}, - "description": "@assertion the prompt titled New Project lists at least one option below its input box.", + "description": "@assertion the prompt titled New Project has finished loading and lists at least one selectable option.", "content_refs": [], "timeout": 120, "retry_count": 0, @@ -618,7 +623,7 @@ "agent": "assertion", "tool": "", "parameters": {}, - "description": "@assertion the prompt titled Create Declarative Agent lists at least one option below its input box.", + "description": "@assertion the prompt titled Create Declarative Agent has finished loading and lists at least one selectable option.", "content_refs": [], "timeout": 120, "retry_count": 0, @@ -1344,7 +1349,7 @@ "agent": "interaction", "tool": "type_text", "parameters": { - "text": "Notifications: Show Notifications" + "text": "Notifications: Clear All Notifications" }, "description": "Type the resolved command title into the active Command Palette.", "content_refs": [], @@ -1366,7 +1371,7 @@ "agent": "assertion", "tool": "", "parameters": {}, - "description": "@assertion the Command Palette input box reads >Notifications: Show Notifications and the highlighted command listed under it is titled Notifications: Show Notifications.", + "description": "@assertion the Command Palette input box reads >Notifications: Clear All Notifications and the highlighted command listed under it is titled Notifications: Clear All Notifications.", "content_refs": [], "timeout": 30, "retry_count": 0, @@ -1452,7 +1457,7 @@ "agent": "interaction", "tool": "type_text", "parameters": { - "text": "Microsoft 365 Agents: Provision" + "text": "Notifications: Show Notifications" }, "description": "Type the resolved command title into the active Command Palette.", "content_refs": [], @@ -1474,7 +1479,7 @@ "agent": "assertion", "tool": "", "parameters": {}, - "description": "@assertion the Command Palette input box reads >Microsoft 365 Agents: Provision and the highlighted command listed under it is titled Microsoft 365 Agents: Provision.", + "description": "@assertion the Command Palette input box reads >Notifications: Show Notifications and the highlighted command listed under it is titled Notifications: Show Notifications.", "content_refs": [], "timeout": 30, "retry_count": 0, @@ -1513,7 +1518,115 @@ ] }, { - "step_id": "step_clickOption_assertPrompt_c60abcc38_4_3", + "step_id": "step_executeCommand_open_c60abcc38_4_3", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "f1" + }, + "description": "Press the F1 key to open the Command Palette in Visual Studio Code.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_execute_c60abcc38_4_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertPalette_c60abcc38_4_3", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Visual Studio Code Command Palette is visible with a > character in its input box and is ready to accept a command search.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_open_c60abcc38_4_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_filter_c60abcc38_4_3", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Microsoft 365 Agents: Provision" + }, + "description": "Type the resolved command title into the active Command Palette.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertPalette_c60abcc38_4_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertCommand_c60abcc38_4_3", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Command Palette input box reads >Microsoft 365 Agents: Provision and the highlighted command listed under it is titled Microsoft 365 Agents: Provision.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_filter_c60abcc38_4_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_execute_c60abcc38_4_3", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to execute the selected Command Palette command.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertCommand_c60abcc38_4_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_clickOption_assertPrompt_c60abcc38_4_4", "agent": "assertion", "tool": "", "parameters": {}, @@ -1523,7 +1636,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_executeCommand_execute_c60abcc38_4_2" + "step_executeCommand_execute_c60abcc38_4_3" ], "preconditions": [], "postconditions": [], @@ -1535,7 +1648,7 @@ ] }, { - "step_id": "step_clickOption_click_c60abcc38_4_3", + "step_id": "step_clickOption_click_c60abcc38_4_4", "agent": "interaction", "tool": "click", "parameters": { @@ -1549,7 +1662,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_clickOption_assertPrompt_c60abcc38_4_3" + "step_clickOption_assertPrompt_c60abcc38_4_4" ], "preconditions": [ "dhash:292:77:16:5:0000000000000000", @@ -1564,7 +1677,7 @@ ] }, { - "step_id": "step_assertNotificationContains_assert_c60abcc38_4_4", + "step_id": "step_assertNotificationContains_assert_c60abcc38_4_5", "agent": "assertion", "tool": "", "parameters": {}, @@ -1574,14 +1687,14 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_clickOption_click_c60abcc38_4_3" + "step_clickOption_click_c60abcc38_4_4" ], "preconditions": [], "postconditions": [], "tags": [ "component:notifications", "action:assert-contains", - "step_retry_timeout: 300" + "step_retry_timeout: 900" ] }, { @@ -1597,7 +1710,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_assertNotificationContains_assert_c60abcc38_4_4" + "step_assertNotificationContains_assert_c60abcc38_4_5" ], "preconditions": [], "postconditions": [], diff --git a/packages/tests/vscuse/vscode-test-cases/plans/weather-agent--weather-js-azure-openai-local-teams.json b/packages/tests/vscuse/vscode-test-cases/plans/weather-agent--weather-js-azure-openai-local-teams.json new file mode 100644 index 00000000000..880fc9b0e68 --- /dev/null +++ b/packages/tests/vscuse/vscode-test-cases/plans/weather-agent--weather-js-azure-openai-local-teams.json @@ -0,0 +1,2342 @@ +{ + "plan_metadata": { + "version": "1.1", + "plan_id": "plan_966c17f1d243", + "execution_context": { + "delay_between_steps": 1, + "stop_on_error": true, + "precondition_wait_timeout": 30, + "precondition_retry_interval": 1 + }, + "total_steps": 98, + "name": "weather-js-azure-openai-local-teams", + "description": { + "owner": "", + "workitem": "SCN-CREATE-WEATHER-01", + "other": "" + }, + "execution_order": [ + "step_closeWelcomeOverlay_assertVisible_c65c229e7_1_1", + "step_closeWelcomeOverlay_close_c65c229e7_1_1", + "step_closeWelcomeOverlay_assertReady_c65c229e7_1_1", + "step_executeCommand_open_c65c229e7_1_2", + "step_executeCommand_assertPalette_c65c229e7_1_2", + "step_executeCommand_filter_c65c229e7_1_2", + "step_executeCommand_assertCommand_c65c229e7_1_2", + "step_executeCommand_execute_c65c229e7_1_2", + "step_assertToolkitViewSettled_assert_c65c229e7_1_3", + "step_closeGetStartedEditor_assertActive_c65c229e7_1_4", + "step_closeGetStartedEditor_close_c65c229e7_1_4", + "step_closeGetStartedEditor_assertClosed_c65c229e7_1_4", + "step_executeCommand_open_c65c229e7_1_5", + "step_executeCommand_assertPalette_c65c229e7_1_5", + "step_executeCommand_filter_c65c229e7_1_5", + "step_executeCommand_assertCommand_c65c229e7_1_5", + "step_executeCommand_execute_c65c229e7_1_5", + "step_singleSelect_assertQuestion_c65c229e7_1_6", + "step_singleSelect_assertOptionsLoaded_c65c229e7_1_6", + "step_singleSelect_filter_c65c229e7_1_6", + "step_singleSelect_assertOption_c65c229e7_1_6", + "step_singleSelect_confirm_c65c229e7_1_6", + "step_singleSelect_assertQuestion_c65c229e7_1_7", + "step_singleSelect_assertOptionsLoaded_c65c229e7_1_7", + "step_singleSelect_filter_c65c229e7_1_7", + "step_singleSelect_assertOption_c65c229e7_1_7", + "step_singleSelect_confirm_c65c229e7_1_7", + "step_singleSelect_assertQuestion_c65c229e7_1_8", + "step_singleSelect_assertOptionsLoaded_c65c229e7_1_8", + "step_singleSelect_filter_c65c229e7_1_8", + "step_singleSelect_assertOption_c65c229e7_1_8", + "step_singleSelect_confirm_c65c229e7_1_8", + "step_textInput_assertQuestion_c65c229e7_1_9", + "step_textInput_input_c65c229e7_1_9", + "step_textInput_confirm_c65c229e7_1_9", + "step_textInput_assertQuestion_c65c229e7_1_10", + "step_textInput_input_c65c229e7_1_10", + "step_textInput_confirm_c65c229e7_1_10", + "step_textInput_assertQuestion_c65c229e7_1_11", + "step_textInput_input_c65c229e7_1_11", + "step_textInput_confirm_c65c229e7_1_11", + "step_singleSelect_assertQuestion_c65c229e7_1_12", + "step_singleSelect_assertOptionsLoaded_c65c229e7_1_12", + "step_singleSelect_filter_c65c229e7_1_12", + "step_singleSelect_assertOption_c65c229e7_1_12", + "step_singleSelect_confirm_c65c229e7_1_12", + "step_confirmOption_assertPrompt_c65c229e7_1_13", + "step_confirmOption_confirm_c65c229e7_1_13", + "step_textInput_assertQuestion_c65c229e7_1_14", + "step_textInput_input_c65c229e7_1_14", + "step_textInput_confirm_c65c229e7_1_14", + "step_assertProjectWindowReady_assert_c65c229e7_1_15", + "step_checkWorkspaceFiles_verify_c65c229e7_2_1", + "step_checkWorkspaceFiles_verify_c65c229e7_2_2", + "step_checkWorkspaceFiles_verify_c65c229e7_2_3", + "step_checkWorkspaceFiles_verify_c65c229e7_2_4", + "step_checkWorkspaceFiles_verify_c65c229e7_2_5", + "step_executeCommand_open_c65c229e7_3_1", + "step_executeCommand_assertPalette_c65c229e7_3_1", + "step_executeCommand_filter_c65c229e7_3_1", + "step_executeCommand_assertCommand_c65c229e7_3_1", + "step_executeCommand_execute_c65c229e7_3_1", + "step_signInM365_assertOption_c65c229e7_3_2", + "step_signInM365_selectOption_c65c229e7_3_2", + "step_signInM365_confirmSignIn_c65c229e7_3_2", + "step_signInM365_focusAccount_c65c229e7_3_2", + "step_signInM365_typeAccount_c65c229e7_3_2", + "step_signInM365_next_c65c229e7_3_2", + "step_signInM365_typePassword_c65c229e7_3_2", + "step_signInM365_submit_c65c229e7_3_2", + "step_signInM365_closeBrowser_c65c229e7_3_2", + "step_signInM365_assertReady_c65c229e7_3_2", + "step_executeCommand_open_c65c229e7_4_1", + "step_executeCommand_assertPalette_c65c229e7_4_1", + "step_executeCommand_filter_c65c229e7_4_1", + "step_executeCommand_assertCommand_c65c229e7_4_1", + "step_executeCommand_execute_c65c229e7_4_1", + "step_filterOption_filter_c65c229e7_4_2", + "step_filterOption_assertOption_c65c229e7_4_2", + "step_filterOption_confirm_c65c229e7_4_2", + "step_browserM365PasswordSignIn_assertPassword_c65c229e7_4_3", + "step_browserM365PasswordSignIn_focusPassword_c65c229e7_4_3", + "step_browserM365PasswordSignIn_enterPassword_c65c229e7_4_3", + "step_browserM365PasswordSignIn_submitPassword_c65c229e7_4_3", + "step_browserM365PasswordSignIn_assertStaySignedIn_c65c229e7_4_3", + "step_browserM365PasswordSignIn_confirmStaySignedIn_c65c229e7_4_3", + "step_assertReady_assertReady_c65c229e7_4_4", + "step_addAndOpenApp_assertAdd_c65c229e7_5_1", + "step_addAndOpenApp_add_c65c229e7_5_1", + "step_addAndOpenApp_assertAdded_c65c229e7_5_1", + "step_addAndOpenApp_open_c65c229e7_5_1", + "step_addAndOpenApp_assertReady_c65c229e7_5_1", + "step_sendTeamsMessage_assertInput_c65c229e7_6_1", + "step_sendTeamsMessage_focusInput_c65c229e7_6_1", + "step_sendTeamsMessage_type_c65c229e7_6_1", + "step_sendTeamsMessage_send_c65c229e7_6_1", + "step_assertChatReplied_assert_c65c229e7_6_2", + "step_assertChatContains_assert_c65c229e7_6_3" + ], + "tags": [ + "case_id:weather-js-azure-openai-local-teams", + "scenario_id:SCN-CREATE-WEATHER-01", + "template_id:weather-agent", + "gate:pr" + ] + }, + "steps": [ + { + "step_id": "step_closeWelcomeOverlay_assertVisible_c65c229e7_1_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the startup \"Welcome to VS Code\" sign-in overlay is visible and its Close button is available.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:initialization", + "initialization:closeWelcomeOverlay", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_closeWelcomeOverlay_close_c65c229e7_1_1", + "agent": "interaction", + "tool": "click", + "parameters": { + "button": "left", + "x": 952, + "y": 128 + }, + "description": "Click the Close button on the startup Welcome sign-in overlay.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_closeWelcomeOverlay_assertVisible_c65c229e7_1_1" + ], + "preconditions": [ + "dhash:952:128:16:5:255266345964665b", + "dhash:952:128:96:5:16100c10100c1404", + "dhash:952:128:0:10:2592eae0f08e8621" + ], + "postconditions": [], + "tags": [ + "component:initialization", + "initialization:closeWelcomeOverlay", + "force_run:true" + ] + }, + { + "step_id": "step_closeWelcomeOverlay_assertReady_c65c229e7_1_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the startup sign-in overlay is no longer visible and the VS Code workbench is ready.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_closeWelcomeOverlay_close_c65c229e7_1_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:initialization", + "initialization:closeWelcomeOverlay", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_open_c65c229e7_1_2", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "f1" + }, + "description": "Press the F1 key to open the Command Palette in Visual Studio Code.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_closeWelcomeOverlay_assertReady_c65c229e7_1_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertPalette_c65c229e7_1_2", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Visual Studio Code Command Palette is visible with a > character in its input box and is ready to accept a command search.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_open_c65c229e7_1_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_filter_c65c229e7_1_2", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Microsoft 365 Agents Toolkit: Focus on Microsoft 365 Agents Toolkit View" + }, + "description": "Type the resolved command title into the active Command Palette.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertPalette_c65c229e7_1_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertCommand_c65c229e7_1_2", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Command Palette input box reads >Microsoft 365 Agents Toolkit: Focus on Microsoft 365 Agents Toolkit View and the highlighted command listed under it is titled Microsoft 365 Agents Toolkit: Focus on Microsoft 365 Agents Toolkit View.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_filter_c65c229e7_1_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_execute_c65c229e7_1_2", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to execute the selected Command Palette command.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertCommand_c65c229e7_1_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_assertToolkitViewSettled_assert_c65c229e7_1_3", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Microsoft 365 Agents Toolkit view is open in the side bar and an editor tab labeled Welcome showing the Build a Declarative Agent walkthrough is open in the editor area.", + "content_refs": [], + "timeout": 120, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_execute_c65c229e7_1_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:initialization", + "initialization:assertToolkitViewSettled", + "step_retry_timeout: 120" + ] + }, + { + "step_id": "step_closeGetStartedEditor_assertActive_c65c229e7_1_4", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the editor tab labeled Welcome showing the Build a Declarative Agent walkthrough is the active editor tab in the Visual Studio Code editor area.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_assertToolkitViewSettled_assert_c65c229e7_1_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:initialization", + "initialization:closeGetStartedEditor", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_closeGetStartedEditor_close_c65c229e7_1_4", + "agent": "interaction", + "tool": "keyboard_shortcut", + "parameters": { + "keys": "ctrl+w" + }, + "description": "Press Ctrl+W to close the Welcome editor tab.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_closeGetStartedEditor_assertActive_c65c229e7_1_4" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:initialization", + "initialization:closeGetStartedEditor" + ] + }, + { + "step_id": "step_closeGetStartedEditor_assertClosed_c65c229e7_1_4", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion no editor tab is open in the Visual Studio Code editor area.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_closeGetStartedEditor_close_c65c229e7_1_4" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:initialization", + "initialization:closeGetStartedEditor", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_open_c65c229e7_1_5", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "f1" + }, + "description": "Press the F1 key to open the Command Palette in Visual Studio Code.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_closeGetStartedEditor_assertClosed_c65c229e7_1_4" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertPalette_c65c229e7_1_5", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Visual Studio Code Command Palette is visible with a > character in its input box and is ready to accept a command search.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_open_c65c229e7_1_5" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_filter_c65c229e7_1_5", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Microsoft 365 Agents: Create New Agent/App" + }, + "description": "Type the resolved command title into the active Command Palette.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertPalette_c65c229e7_1_5" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertCommand_c65c229e7_1_5", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Command Palette input box reads >Microsoft 365 Agents: Create New Agent/App and the highlighted command listed under it is titled Microsoft 365 Agents: Create New Agent/App.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_filter_c65c229e7_1_5" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_execute_c65c229e7_1_5", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to execute the selected Command Palette command.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertCommand_c65c229e7_1_5" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_singleSelect_assertQuestion_c65c229e7_1_6", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the active prompt titled New Project is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_execute_c65c229e7_1_5" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_singleSelect_assertOptionsLoaded_c65c229e7_1_6", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the prompt titled New Project has finished loading and lists at least one selectable option.", + "content_refs": [], + "timeout": 120, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertQuestion_c65c229e7_1_6" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 120" + ] + }, + { + "step_id": "step_singleSelect_filter_c65c229e7_1_6", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Custom Engine Agent" + }, + "description": "Type the resolved option label Custom Engine Agent into the active single-select prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertOptionsLoaded_c65c229e7_1_6" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_singleSelect_assertOption_c65c229e7_1_6", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the option Custom Engine Agent is visible and selectable in the filtered single-select prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_filter_c65c229e7_1_6" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_singleSelect_confirm_c65c229e7_1_6", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to confirm the filtered single-select option.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertOption_c65c229e7_1_6" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_singleSelect_assertQuestion_c65c229e7_1_7", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the active prompt titled App Features Using Microsoft 365 Agents SDK is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_confirm_c65c229e7_1_6" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_singleSelect_assertOptionsLoaded_c65c229e7_1_7", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the prompt titled App Features Using Microsoft 365 Agents SDK has finished loading and lists at least one selectable option.", + "content_refs": [], + "timeout": 120, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertQuestion_c65c229e7_1_7" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 120" + ] + }, + { + "step_id": "step_singleSelect_filter_c65c229e7_1_7", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Weather Agent" + }, + "description": "Type the resolved option label Weather Agent into the active single-select prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertOptionsLoaded_c65c229e7_1_7" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_singleSelect_assertOption_c65c229e7_1_7", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the option Weather Agent is visible and selectable in the filtered single-select prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_filter_c65c229e7_1_7" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_singleSelect_confirm_c65c229e7_1_7", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to confirm the filtered single-select option.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertOption_c65c229e7_1_7" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_singleSelect_assertQuestion_c65c229e7_1_8", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the active prompt titled Service for Large Language Model (LLM) is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_confirm_c65c229e7_1_7" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_singleSelect_assertOptionsLoaded_c65c229e7_1_8", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the prompt titled Service for Large Language Model (LLM) has finished loading and lists at least one selectable option.", + "content_refs": [], + "timeout": 120, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertQuestion_c65c229e7_1_8" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 120" + ] + }, + { + "step_id": "step_singleSelect_filter_c65c229e7_1_8", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Azure OpenAI" + }, + "description": "Type the resolved option label Azure OpenAI into the active single-select prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertOptionsLoaded_c65c229e7_1_8" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_singleSelect_assertOption_c65c229e7_1_8", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the option Azure OpenAI is visible and selectable in the filtered single-select prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_filter_c65c229e7_1_8" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_singleSelect_confirm_c65c229e7_1_8", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to confirm the filtered single-select option.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertOption_c65c229e7_1_8" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_textInput_assertQuestion_c65c229e7_1_9", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the active prompt titled Azure OpenAI Key is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_confirm_c65c229e7_1_8" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_textInput_input_c65c229e7_1_9", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "${{secret:AZURE_OPENAI_API_KEY}}" + }, + "description": "Type the authored value into the active text prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_assertQuestion_c65c229e7_1_9" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text" + ] + }, + { + "step_id": "step_textInput_confirm_c65c229e7_1_9", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to submit the accepted text input.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_input_c65c229e7_1_9" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text" + ] + }, + { + "step_id": "step_textInput_assertQuestion_c65c229e7_1_10", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the active prompt titled Azure OpenAI Endpoint is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_confirm_c65c229e7_1_9" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_textInput_input_c65c229e7_1_10", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "${{env:AZURE_OPENAI_ENDPOINT}}" + }, + "description": "Type the authored value into the active text prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_assertQuestion_c65c229e7_1_10" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text" + ] + }, + { + "step_id": "step_textInput_confirm_c65c229e7_1_10", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to submit the accepted text input.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_input_c65c229e7_1_10" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text" + ] + }, + { + "step_id": "step_textInput_assertQuestion_c65c229e7_1_11", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the active prompt titled Azure OpenAI Deployment Name is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_confirm_c65c229e7_1_10" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_textInput_input_c65c229e7_1_11", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "${{env:AZURE_OPENAI_MODEL}}" + }, + "description": "Type the authored value into the active text prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_assertQuestion_c65c229e7_1_11" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text" + ] + }, + { + "step_id": "step_textInput_confirm_c65c229e7_1_11", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to submit the accepted text input.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_input_c65c229e7_1_11" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text" + ] + }, + { + "step_id": "step_singleSelect_assertQuestion_c65c229e7_1_12", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the active prompt titled Programming Language is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_confirm_c65c229e7_1_11" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_singleSelect_assertOptionsLoaded_c65c229e7_1_12", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the prompt titled Programming Language has finished loading and lists at least one selectable option.", + "content_refs": [], + "timeout": 120, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertQuestion_c65c229e7_1_12" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 120" + ] + }, + { + "step_id": "step_singleSelect_filter_c65c229e7_1_12", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "JavaScript" + }, + "description": "Type the resolved option label JavaScript into the active single-select prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertOptionsLoaded_c65c229e7_1_12" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_singleSelect_assertOption_c65c229e7_1_12", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the option JavaScript is visible and selectable in the filtered single-select prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_filter_c65c229e7_1_12" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_singleSelect_confirm_c65c229e7_1_12", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to confirm the filtered single-select option.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertOption_c65c229e7_1_12" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_confirmOption_assertPrompt_c65c229e7_1_13", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the active prompt titled Workspace Folder is visible and the option Default folder is focused.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_confirm_c65c229e7_1_12" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "interaction:key-press", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_confirmOption_confirm_c65c229e7_1_13", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to confirm the Default folder option.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_confirmOption_assertPrompt_c65c229e7_1_13" + ], + "preconditions": [ + "dhash:364:74:16:5:08056a9a5d5516b6", + "dhash:364:74:96:5:44232286e2168e01", + "dhash:364:74:0:10:f0b09494b2717075" + ], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "interaction:key-press" + ] + }, + { + "step_id": "step_textInput_assertQuestion_c65c229e7_1_14", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the active prompt titled Application Name is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_confirmOption_confirm_c65c229e7_1_13" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_textInput_input_c65c229e7_1_14", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "${{var:app_name:vscuse_app_#####}}" + }, + "description": "Type the authored value into the active text prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_assertQuestion_c65c229e7_1_14" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text" + ] + }, + { + "step_id": "step_textInput_confirm_c65c229e7_1_14", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to submit the accepted text input.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_input_c65c229e7_1_14" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text" + ] + }, + { + "step_id": "step_assertProjectWindowReady_assert_c65c229e7_1_15", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Preview README.md editor tab is open in Visual Studio Code.", + "content_refs": [], + "timeout": 60, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_confirm_c65c229e7_1_14" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:initialization", + "initialization:assertProjectWindowReady", + "step_retry_timeout: 60" + ] + }, + { + "step_id": "step_checkWorkspaceFiles_verify_c65c229e7_2_1", + "agent": "code", + "tool": "", + "parameters": { + "sample": "=== Generated Script ===\nLanguage: bash\n\n```bash\nset -euo pipefail\nPROJECT_DIR=\"/home/vscode/AgentsToolkitProjects/${{var:app_name}}\" ASSERTIONS_B64=\"W3sicGF0aCI6InNyYy9pbmRleC5qcyIsImV4aXN0cyI6dHJ1ZSwiY29udGFpbnMiOltdLCJub3RDb250YWlucyI6W119XQ==\" python3 - <<'PY'\nimport base64\nimport json\nimport os\nfrom pathlib import Path\n\nproject = Path(os.environ[\"PROJECT_DIR\"]).resolve()\nassertions = json.loads(base64.b64decode(os.environ[\"ASSERTIONS_B64\"]).decode(\"utf-8\"))\nfor assertion in assertions:\n target = (project / assertion[\"path\"]).resolve()\n try:\n target.relative_to(project)\n except ValueError as error:\n raise AssertionError(\"File assertion escaped the project directory\") from error\n exists = target.is_file()\n if exists != assertion[\"exists\"]:\n raise AssertionError(f\"Unexpected file existence for {assertion['path']}\")\n if not exists:\n continue\n content = target.read_text(encoding=\"utf-8\")\n for expected in assertion.get(\"contains\", []):\n expected = expected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if expected not in content:\n raise AssertionError(f\"Expected content is absent from {assertion['path']}\")\n for unexpected in assertion.get(\"notContains\", []):\n unexpected = unexpected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if unexpected in content:\n raise AssertionError(f\"Unexpected content is present in {assertion['path']}\")\nPY\n```" + }, + "description": "@code verify the authored workspace file existence and content assertions without logging file contents.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_assertProjectWindowReady_assert_c65c229e7_1_15" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:checks", + "assertion:file", + "step_retry_timeout:120" + ] + }, + { + "step_id": "step_checkWorkspaceFiles_verify_c65c229e7_2_2", + "agent": "code", + "tool": "", + "parameters": { + "sample": "=== Generated Script ===\nLanguage: bash\n\n```bash\nset -euo pipefail\nPROJECT_DIR=\"/home/vscode/AgentsToolkitProjects/${{var:app_name}}\" ASSERTIONS_B64=\"W3sicGF0aCI6InNyYy9hZ2VudC5qcyIsImV4aXN0cyI6dHJ1ZSwiY29udGFpbnMiOltdLCJub3RDb250YWlucyI6W119XQ==\" python3 - <<'PY'\nimport base64\nimport json\nimport os\nfrom pathlib import Path\n\nproject = Path(os.environ[\"PROJECT_DIR\"]).resolve()\nassertions = json.loads(base64.b64decode(os.environ[\"ASSERTIONS_B64\"]).decode(\"utf-8\"))\nfor assertion in assertions:\n target = (project / assertion[\"path\"]).resolve()\n try:\n target.relative_to(project)\n except ValueError as error:\n raise AssertionError(\"File assertion escaped the project directory\") from error\n exists = target.is_file()\n if exists != assertion[\"exists\"]:\n raise AssertionError(f\"Unexpected file existence for {assertion['path']}\")\n if not exists:\n continue\n content = target.read_text(encoding=\"utf-8\")\n for expected in assertion.get(\"contains\", []):\n expected = expected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if expected not in content:\n raise AssertionError(f\"Expected content is absent from {assertion['path']}\")\n for unexpected in assertion.get(\"notContains\", []):\n unexpected = unexpected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if unexpected in content:\n raise AssertionError(f\"Unexpected content is present in {assertion['path']}\")\nPY\n```" + }, + "description": "@code verify the authored workspace file existence and content assertions without logging file contents.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_checkWorkspaceFiles_verify_c65c229e7_2_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:checks", + "assertion:file", + "step_retry_timeout:120" + ] + }, + { + "step_id": "step_checkWorkspaceFiles_verify_c65c229e7_2_3", + "agent": "code", + "tool": "", + "parameters": { + "sample": "=== Generated Script ===\nLanguage: bash\n\n```bash\nset -euo pipefail\nPROJECT_DIR=\"/home/vscode/AgentsToolkitProjects/${{var:app_name}}\" ASSERTIONS_B64=\"W3sicGF0aCI6InNyYy90b29scy9nZXRXZWF0aGVyVG9vbC5qcyIsImV4aXN0cyI6dHJ1ZSwiY29udGFpbnMiOltdLCJub3RDb250YWlucyI6W119XQ==\" python3 - <<'PY'\nimport base64\nimport json\nimport os\nfrom pathlib import Path\n\nproject = Path(os.environ[\"PROJECT_DIR\"]).resolve()\nassertions = json.loads(base64.b64decode(os.environ[\"ASSERTIONS_B64\"]).decode(\"utf-8\"))\nfor assertion in assertions:\n target = (project / assertion[\"path\"]).resolve()\n try:\n target.relative_to(project)\n except ValueError as error:\n raise AssertionError(\"File assertion escaped the project directory\") from error\n exists = target.is_file()\n if exists != assertion[\"exists\"]:\n raise AssertionError(f\"Unexpected file existence for {assertion['path']}\")\n if not exists:\n continue\n content = target.read_text(encoding=\"utf-8\")\n for expected in assertion.get(\"contains\", []):\n expected = expected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if expected not in content:\n raise AssertionError(f\"Expected content is absent from {assertion['path']}\")\n for unexpected in assertion.get(\"notContains\", []):\n unexpected = unexpected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if unexpected in content:\n raise AssertionError(f\"Unexpected content is present in {assertion['path']}\")\nPY\n```" + }, + "description": "@code verify the authored workspace file existence and content assertions without logging file contents.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_checkWorkspaceFiles_verify_c65c229e7_2_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:checks", + "assertion:file", + "step_retry_timeout:120" + ] + }, + { + "step_id": "step_checkWorkspaceFiles_verify_c65c229e7_2_4", + "agent": "code", + "tool": "", + "parameters": { + "sample": "=== Generated Script ===\nLanguage: bash\n\n```bash\nset -euo pipefail\nPROJECT_DIR=\"/home/vscode/AgentsToolkitProjects/${{var:app_name}}\" ASSERTIONS_B64=\"W3sicGF0aCI6InBhY2thZ2UuanNvbiIsImV4aXN0cyI6dHJ1ZSwiY29udGFpbnMiOlsiXCJzdGFydFwiIiwiXCJkZXY6dGVhbXNmeFwiIl0sIm5vdENvbnRhaW5zIjpbXX1d\" python3 - <<'PY'\nimport base64\nimport json\nimport os\nfrom pathlib import Path\n\nproject = Path(os.environ[\"PROJECT_DIR\"]).resolve()\nassertions = json.loads(base64.b64decode(os.environ[\"ASSERTIONS_B64\"]).decode(\"utf-8\"))\nfor assertion in assertions:\n target = (project / assertion[\"path\"]).resolve()\n try:\n target.relative_to(project)\n except ValueError as error:\n raise AssertionError(\"File assertion escaped the project directory\") from error\n exists = target.is_file()\n if exists != assertion[\"exists\"]:\n raise AssertionError(f\"Unexpected file existence for {assertion['path']}\")\n if not exists:\n continue\n content = target.read_text(encoding=\"utf-8\")\n for expected in assertion.get(\"contains\", []):\n expected = expected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if expected not in content:\n raise AssertionError(f\"Expected content is absent from {assertion['path']}\")\n for unexpected in assertion.get(\"notContains\", []):\n unexpected = unexpected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if unexpected in content:\n raise AssertionError(f\"Unexpected content is present in {assertion['path']}\")\nPY\n```" + }, + "description": "@code verify the authored workspace file existence and content assertions without logging file contents.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_checkWorkspaceFiles_verify_c65c229e7_2_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:checks", + "assertion:file", + "step_retry_timeout:120" + ] + }, + { + "step_id": "step_checkWorkspaceFiles_verify_c65c229e7_2_5", + "agent": "code", + "tool": "", + "parameters": { + "sample": "=== Generated Script ===\nLanguage: bash\n\n```bash\nset -euo pipefail\nPROJECT_DIR=\"/home/vscode/AgentsToolkitProjects/${{var:app_name}}\" ASSERTIONS_B64=\"W3sicGF0aCI6InNyYy9pbmRleC50cyIsImV4aXN0cyI6ZmFsc2UsImNvbnRhaW5zIjpbXSwibm90Q29udGFpbnMiOltdfV0=\" python3 - <<'PY'\nimport base64\nimport json\nimport os\nfrom pathlib import Path\n\nproject = Path(os.environ[\"PROJECT_DIR\"]).resolve()\nassertions = json.loads(base64.b64decode(os.environ[\"ASSERTIONS_B64\"]).decode(\"utf-8\"))\nfor assertion in assertions:\n target = (project / assertion[\"path\"]).resolve()\n try:\n target.relative_to(project)\n except ValueError as error:\n raise AssertionError(\"File assertion escaped the project directory\") from error\n exists = target.is_file()\n if exists != assertion[\"exists\"]:\n raise AssertionError(f\"Unexpected file existence for {assertion['path']}\")\n if not exists:\n continue\n content = target.read_text(encoding=\"utf-8\")\n for expected in assertion.get(\"contains\", []):\n expected = expected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if expected not in content:\n raise AssertionError(f\"Expected content is absent from {assertion['path']}\")\n for unexpected in assertion.get(\"notContains\", []):\n unexpected = unexpected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if unexpected in content:\n raise AssertionError(f\"Unexpected content is present in {assertion['path']}\")\nPY\n```" + }, + "description": "@code verify the authored workspace file existence and content assertions without logging file contents.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_checkWorkspaceFiles_verify_c65c229e7_2_4" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:checks", + "assertion:file", + "step_retry_timeout:120" + ] + }, + { + "step_id": "step_executeCommand_open_c65c229e7_3_1", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "f1" + }, + "description": "Press the F1 key to open the Command Palette in Visual Studio Code.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_checkWorkspaceFiles_verify_c65c229e7_2_5" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertPalette_c65c229e7_3_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Visual Studio Code Command Palette is visible with a > character in its input box and is ready to accept a command search.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_open_c65c229e7_3_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_filter_c65c229e7_3_1", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "View: Show Microsoft 365 Agents Toolkit" + }, + "description": "Type the resolved command title into the active Command Palette.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertPalette_c65c229e7_3_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertCommand_c65c229e7_3_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Command Palette input box reads >View: Show Microsoft 365 Agents Toolkit and the highlighted command listed under it is titled View: Show Microsoft 365 Agents Toolkit.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_filter_c65c229e7_3_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_execute_c65c229e7_3_1", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to execute the selected Command Palette command.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertCommand_c65c229e7_3_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_signInM365_assertOption_c65c229e7_3_2", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the ACCOUNTS section of the side bar lists an entry whose label begins with Sign in to Microsoft.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_execute_c65c229e7_3_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:authentication", + "account:m365", + "entry_state:toolkit-side-bar-visible", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_signInM365_selectOption_c65c229e7_3_2", + "agent": "interaction", + "tool": "click", + "parameters": { + "button": "left", + "x": 213, + "y": 102 + }, + "description": "Click the entry whose label begins with \"Sign in to Microsoft\" in the ACCOUNTS section of the side bar.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInM365_assertOption_c65c229e7_3_2" + ], + "preconditions": [ + "dhash:213:102:16:5:9c63d67674d4c718", + "dhash:213:102:96:5:8c512758d92c2cce", + "dhash:213:102:0:10:92c86223a3622421" + ], + "postconditions": [], + "tags": [ + "component:authentication", + "account:m365" + ] + }, + { + "step_id": "step_signInM365_confirmSignIn_c65c229e7_3_2", + "agent": "interaction", + "tool": "click", + "parameters": { + "button": "left", + "x": 762, + "y": 97 + }, + "description": "Click the \"Sign in\" button within the Microsoft 365 developer sandbox modal.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInM365_selectOption_c65c229e7_3_2" + ], + "preconditions": [ + "dhash:762:97:16:5:24b1a72ba9aba343", + "dhash:762:97:96:5:0008304b0f344900", + "dhash:762:97:0:10:9c68332223232421" + ], + "postconditions": [], + "tags": [ + "component:authentication", + "account:m365" + ] + }, + { + "step_id": "step_signInM365_focusAccount_c65c229e7_3_2", + "agent": "interaction", + "tool": "click", + "parameters": { + "button": "left", + "x": 369, + "y": 350 + }, + "description": "Click on the \"Email or phone\" input field in the Microsoft Sign-in form on the login.microsoftonline.com webpage to focus the cursor for credential entry.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInM365_confirmSignIn_c65c229e7_3_2" + ], + "preconditions": [ + "dhash:369:350:16:5:2113d25252525221", + "dhash:369:350:96:5:0919006d19220812", + "dhash:369:350:0:10:1b88d0d1e5e6dae4" + ], + "postconditions": [], + "tags": [ + "component:authentication", + "account:m365", + "precondition_wait_timeout: 60" + ] + }, + { + "step_id": "step_signInM365_typeAccount_c65c229e7_3_2", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "${{env:M365_ACCOUNT_NAME}}" + }, + "description": "Enter the resolved Microsoft 365 account name into the email or username input field on the Microsoft Sign in page.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInM365_focusAccount_c65c229e7_3_2" + ], + "preconditions": [ + "dhash:512:384:0:20:1b28f0d9e7e6dae4" + ], + "postconditions": [], + "tags": [ + "component:authentication", + "account:m365", + "delay: 3" + ] + }, + { + "step_id": "step_signInM365_next_c65c229e7_3_2", + "agent": "interaction", + "tool": "click", + "parameters": { + "button": "left", + "x": 629, + "y": 484 + }, + "description": "Click the blue \"Next\" button on the Microsoft sign-in page, confirming the entered email address for login.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInM365_typeAccount_c65c229e7_3_2" + ], + "preconditions": [ + "dhash:629:484:16:5:23248c4b6c24d32c", + "dhash:629:484:96:5:00004eb131860000", + "dhash:629:484:0:10:1b28f0d9e7e6dae4" + ], + "postconditions": [], + "tags": [ + "component:authentication", + "account:m365", + "delay:3" + ] + }, + { + "step_id": "step_signInM365_typePassword_c65c229e7_3_2", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "${{secret:M365_ACCOUNT_PASSWORD}}" + }, + "description": "Type the resolved Microsoft 365 account password into the Password field on the Microsoft login page.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInM365_next_c65c229e7_3_2" + ], + "preconditions": [ + "dhash:512:384:0:20:1b08f0d9d1e6e6e4" + ], + "postconditions": [], + "tags": [ + "component:authentication", + "account:m365", + "delay: 3" + ] + }, + { + "step_id": "step_signInM365_submit_c65c229e7_3_2", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to submit the Microsoft 365 login form from the password entry screen.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInM365_typePassword_c65c229e7_3_2" + ], + "preconditions": [ + "dhash:512:384:0:20:1b08f0d9d1e6e6e4" + ], + "postconditions": [], + "tags": [ + "component:authentication", + "account:m365", + "delay: 3" + ] + }, + { + "step_id": "step_signInM365_closeBrowser_c65c229e7_3_2", + "agent": "interaction", + "tool": "click", + "parameters": { + "button": "left", + "x": 1004, + "y": 19 + }, + "description": "Click the \"Close\" button (red cross icon) in the browser tab bar to close the \"M365 Account - Sign In\" page.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInM365_submit_c65c229e7_3_2" + ], + "preconditions": [ + "dhash:1004:19:16:5:aac833964c9633cc", + "dhash:1004:19:96:5:d2232323c200e6e6", + "dhash:1004:19:0:10:0b01410169414141" + ], + "postconditions": [], + "tags": [ + "component:authentication", + "account:m365", + "delay: 3" + ] + }, + { + "step_id": "step_signInM365_assertReady_c65c229e7_3_2", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion there's ${{env:M365_ACCOUNT_NAME}} in the \"ACCOUNTS\" section", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInM365_closeBrowser_c65c229e7_3_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:authentication", + "account:m365", + "readiness:account-visible", + "step_retry_timeout: 180" + ] + }, + { + "step_id": "step_executeCommand_open_c65c229e7_4_1", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "f1" + }, + "description": "Press the F1 key to open the Command Palette in Visual Studio Code.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInM365_assertReady_c65c229e7_3_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertPalette_c65c229e7_4_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Visual Studio Code Command Palette is visible with a > character in its input box and is ready to accept a command search.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_open_c65c229e7_4_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_filter_c65c229e7_4_1", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Debug: Select and Start Debugging" + }, + "description": "Type the resolved command title into the active Command Palette.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertPalette_c65c229e7_4_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertCommand_c65c229e7_4_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Command Palette input box reads >Debug: Select and Start Debugging and the highlighted command listed under it is titled Debug: Select and Start Debugging.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_filter_c65c229e7_4_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_execute_c65c229e7_4_1", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to execute the selected Command Palette command.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertCommand_c65c229e7_4_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_filterOption_filter_c65c229e7_4_2", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Debug in Teams (Chrome)" + }, + "description": "Type the resolved option label into the active option picker.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_execute_c65c229e7_4_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_filterOption_assertOption_c65c229e7_4_2", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the option Debug in Teams (Chrome) is visible and selectable in the filtered option picker.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_filterOption_filter_c65c229e7_4_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_filterOption_confirm_c65c229e7_4_2", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to confirm the filtered option.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_filterOption_assertOption_c65c229e7_4_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_browserM365PasswordSignIn_assertPassword_c65c229e7_4_3", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Microsoft sign-in page in Chrome names ${{env:M365_ACCOUNT_NAME}} and asks for that account's password.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_filterOption_confirm_c65c229e7_4_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:authentication", + "surface:browser", + "step_retry_timeout: 300" + ] + }, + { + "step_id": "step_browserM365PasswordSignIn_focusPassword_c65c229e7_4_3", + "agent": "interaction", + "tool": "click", + "parameters": { + "button": "left", + "x": 400, + "y": 405 + }, + "description": "Click the password input on the Microsoft sign-in page to move focus out of the browser address bar.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_browserM365PasswordSignIn_assertPassword_c65c229e7_4_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:authentication", + "surface:browser" + ] + }, + { + "step_id": "step_browserM365PasswordSignIn_enterPassword_c65c229e7_4_3", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "${{secret:M365_ACCOUNT_PASSWORD}}" + }, + "description": "Enter the registered Microsoft 365 password in the focused password input of the browser sign-in form.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_browserM365PasswordSignIn_focusPassword_c65c229e7_4_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:authentication", + "surface:browser" + ] + }, + { + "step_id": "step_browserM365PasswordSignIn_submitPassword_c65c229e7_4_3", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to submit the Microsoft 365 password.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_browserM365PasswordSignIn_enterPassword_c65c229e7_4_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:authentication", + "surface:browser" + ] + }, + { + "step_id": "step_browserM365PasswordSignIn_assertStaySignedIn_c65c229e7_4_3", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Microsoft Stay signed in question is visible with Yes focused.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_browserM365PasswordSignIn_submitPassword_c65c229e7_4_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:authentication", + "surface:browser", + "step_retry_timeout: 120" + ] + }, + { + "step_id": "step_browserM365PasswordSignIn_confirmStaySignedIn_c65c229e7_4_3", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to confirm staying signed in.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_browserM365PasswordSignIn_assertStaySignedIn_c65c229e7_4_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:authentication", + "surface:browser", + "delay: 30" + ] + }, + { + "step_id": "step_assertReady_assertReady_c65c229e7_4_4", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Microsoft Teams app details page for an app whose name starts with ${{var:app_name}} is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_browserM365PasswordSignIn_confirmStaySignedIn_c65c229e7_4_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:browser", + "action:assert-ready", + "step_retry_timeout: 180" + ] + }, + { + "step_id": "step_addAndOpenApp_assertAdd_c65c229e7_5_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the blue \"Add\" button exists.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_assertReady_assertReady_c65c229e7_4_4" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:browser", + "host_surface:teams", + "entry_state:add", + "step_retry_timeout: 180" + ] + }, + { + "step_id": "step_addAndOpenApp_add_c65c229e7_5_1", + "agent": "interaction", + "tool": "click", + "parameters": { + "button": "left", + "x": 288, + "y": 214 + }, + "description": "Click Add on the app details popup within the Microsoft Teams interface.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_addAndOpenApp_assertAdd_c65c229e7_5_1" + ], + "preconditions": [ + "dhash:288:214:16:5:05100a0511030b12", + "dhash:288:214:96:5:2616011c1c01005b", + "dhash:288:214:0:10:00b4b0d8f8fcf0d8" + ], + "postconditions": [], + "tags": [ + "component:browser", + "host_surface:teams", + "entry_state:add" + ] + }, + { + "step_id": "step_addAndOpenApp_assertAdded_c65c229e7_5_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the \"Added successfully!\" dialog and its Open button are visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_addAndOpenApp_add_c65c229e7_5_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:browser", + "host_surface:teams", + "entry_state:added", + "step_retry_timeout: 180" + ] + }, + { + "step_id": "step_addAndOpenApp_open_c65c229e7_5_1", + "agent": "interaction", + "tool": "click", + "parameters": { + "button": "left", + "x": 533, + "y": 508 + }, + "description": "Click Open in the Microsoft Teams Added successfully dialog.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_addAndOpenApp_assertAdded_c65c229e7_5_1" + ], + "preconditions": [ + "dhash:533:508:16:5:00987494ca4acacc", + "dhash:533:508:96:5:000058a48598e36b", + "dhash:533:508:0:10:1669696969696979" + ], + "postconditions": [], + "tags": [ + "component:browser", + "host_surface:teams", + "entry_state:added", + "precondition_wait_timeout: 120" + ] + }, + { + "step_id": "step_addAndOpenApp_assertReady_c65c229e7_5_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Microsoft Teams app details page for an app whose name starts with ${{var:app_name}} is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_addAndOpenApp_open_c65c229e7_5_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:browser", + "host_surface:teams", + "readiness:chat-ready", + "step_retry_timeout: 180" + ] + }, + { + "step_id": "step_sendTeamsMessage_assertInput_c65c229e7_6_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Teams \"Type a message\" input is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_addAndOpenApp_assertReady_c65c229e7_5_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:browser", + "host_surface:teams", + "entry_state:chat-ready", + "action:send-message", + "step_retry_timeout: 120" + ] + }, + { + "step_id": "step_sendTeamsMessage_focusInput_c65c229e7_6_1", + "agent": "interaction", + "tool": "click", + "parameters": { + "button": "left", + "x": 200, + "y": 712 + }, + "description": "Click the Teams \"Type a message\" input.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_sendTeamsMessage_assertInput_c65c229e7_6_1" + ], + "preconditions": [ + "dhash:200:712:16:5:258c421e0d2c2d1c", + "dhash:200:712:96:5:0020887362000200", + "dhash:200:712:0:10:24b4b08e8e8c81a1" + ], + "postconditions": [], + "tags": [ + "component:browser", + "host_surface:teams", + "entry_state:chat-ready", + "action:send-message" + ] + }, + { + "step_id": "step_sendTeamsMessage_type_c65c229e7_6_1", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "What is the weather in Seattle?" + }, + "description": "Type \"What is the weather in Seattle?\" into the Teams message input.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_sendTeamsMessage_focusInput_c65c229e7_6_1" + ], + "preconditions": [ + "dhash:512:384:0:20:24b4b08e8e8c80a9" + ], + "postconditions": [], + "tags": [ + "component:browser", + "host_surface:teams", + "entry_state:chat-ready", + "action:send-message" + ] + }, + { + "step_id": "step_sendTeamsMessage_send_c65c229e7_6_1", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to send the Teams message.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_sendTeamsMessage_type_c65c229e7_6_1" + ], + "preconditions": [ + "dhash:512:384:0:20:24b4b08e8e8c80b9" + ], + "postconditions": [], + "tags": [ + "component:browser", + "host_surface:teams", + "entry_state:chat-ready", + "action:send-message" + ] + }, + { + "step_id": "step_assertChatReplied_assert_c65c229e7_6_2", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the current assistant turn is complete and contains a non-empty response.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_sendTeamsMessage_send_c65c229e7_6_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:browser", + "action:assert-chat-response", + "expectation:replied", + "step_retry_timeout: 120" + ] + }, + { + "step_id": "step_assertChatContains_assert_c65c229e7_6_3", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the current assistant response contains \"Seattle\".", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_assertChatReplied_assert_c65c229e7_6_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:browser", + "action:assert-chat-response", + "expectation:contains", + "step_retry_timeout: 120" + ] + } + ], + "screenshots": {} +} diff --git a/packages/tests/vscuse/vscode-test-cases/plans/weather-agent--weather-js-azure-openai-playground.json b/packages/tests/vscuse/vscode-test-cases/plans/weather-agent--weather-js-azure-openai-playground.json new file mode 100644 index 00000000000..770099923d8 --- /dev/null +++ b/packages/tests/vscuse/vscode-test-cases/plans/weather-agent--weather-js-azure-openai-playground.json @@ -0,0 +1,1688 @@ +{ + "plan_metadata": { + "version": "1.1", + "plan_id": "plan_fe7df427419e", + "execution_context": { + "delay_between_steps": 1, + "stop_on_error": true, + "precondition_wait_timeout": 30, + "precondition_retry_interval": 1 + }, + "total_steps": 72, + "name": "weather-js-azure-openai-playground", + "description": { + "owner": "", + "workitem": "SCN-CREATE-WEATHER-01", + "other": "" + }, + "execution_order": [ + "step_closeWelcomeOverlay_assertVisible_cabaadc0f_1_1", + "step_closeWelcomeOverlay_close_cabaadc0f_1_1", + "step_closeWelcomeOverlay_assertReady_cabaadc0f_1_1", + "step_executeCommand_open_cabaadc0f_1_2", + "step_executeCommand_assertPalette_cabaadc0f_1_2", + "step_executeCommand_filter_cabaadc0f_1_2", + "step_executeCommand_assertCommand_cabaadc0f_1_2", + "step_executeCommand_execute_cabaadc0f_1_2", + "step_assertToolkitViewSettled_assert_cabaadc0f_1_3", + "step_closeGetStartedEditor_assertActive_cabaadc0f_1_4", + "step_closeGetStartedEditor_close_cabaadc0f_1_4", + "step_closeGetStartedEditor_assertClosed_cabaadc0f_1_4", + "step_executeCommand_open_cabaadc0f_1_5", + "step_executeCommand_assertPalette_cabaadc0f_1_5", + "step_executeCommand_filter_cabaadc0f_1_5", + "step_executeCommand_assertCommand_cabaadc0f_1_5", + "step_executeCommand_execute_cabaadc0f_1_5", + "step_singleSelect_assertQuestion_cabaadc0f_1_6", + "step_singleSelect_assertOptionsLoaded_cabaadc0f_1_6", + "step_singleSelect_filter_cabaadc0f_1_6", + "step_singleSelect_assertOption_cabaadc0f_1_6", + "step_singleSelect_confirm_cabaadc0f_1_6", + "step_singleSelect_assertQuestion_cabaadc0f_1_7", + "step_singleSelect_assertOptionsLoaded_cabaadc0f_1_7", + "step_singleSelect_filter_cabaadc0f_1_7", + "step_singleSelect_assertOption_cabaadc0f_1_7", + "step_singleSelect_confirm_cabaadc0f_1_7", + "step_singleSelect_assertQuestion_cabaadc0f_1_8", + "step_singleSelect_assertOptionsLoaded_cabaadc0f_1_8", + "step_singleSelect_filter_cabaadc0f_1_8", + "step_singleSelect_assertOption_cabaadc0f_1_8", + "step_singleSelect_confirm_cabaadc0f_1_8", + "step_textInput_assertQuestion_cabaadc0f_1_9", + "step_textInput_input_cabaadc0f_1_9", + "step_textInput_confirm_cabaadc0f_1_9", + "step_textInput_assertQuestion_cabaadc0f_1_10", + "step_textInput_input_cabaadc0f_1_10", + "step_textInput_confirm_cabaadc0f_1_10", + "step_textInput_assertQuestion_cabaadc0f_1_11", + "step_textInput_input_cabaadc0f_1_11", + "step_textInput_confirm_cabaadc0f_1_11", + "step_singleSelect_assertQuestion_cabaadc0f_1_12", + "step_singleSelect_assertOptionsLoaded_cabaadc0f_1_12", + "step_singleSelect_filter_cabaadc0f_1_12", + "step_singleSelect_assertOption_cabaadc0f_1_12", + "step_singleSelect_confirm_cabaadc0f_1_12", + "step_confirmOption_assertPrompt_cabaadc0f_1_13", + "step_confirmOption_confirm_cabaadc0f_1_13", + "step_textInput_assertQuestion_cabaadc0f_1_14", + "step_textInput_input_cabaadc0f_1_14", + "step_textInput_confirm_cabaadc0f_1_14", + "step_assertProjectWindowReady_assert_cabaadc0f_1_15", + "step_checkWorkspaceFiles_verify_cabaadc0f_2_1", + "step_checkWorkspaceFiles_verify_cabaadc0f_2_2", + "step_checkWorkspaceFiles_verify_cabaadc0f_2_3", + "step_checkWorkspaceFiles_verify_cabaadc0f_2_4", + "step_checkWorkspaceFiles_verify_cabaadc0f_2_5", + "step_executeCommand_open_cabaadc0f_3_1", + "step_executeCommand_assertPalette_cabaadc0f_3_1", + "step_executeCommand_filter_cabaadc0f_3_1", + "step_executeCommand_assertCommand_cabaadc0f_3_1", + "step_executeCommand_execute_cabaadc0f_3_1", + "step_filterOption_filter_cabaadc0f_3_2", + "step_filterOption_assertOption_cabaadc0f_3_2", + "step_filterOption_confirm_cabaadc0f_3_2", + "step_assertReady_assertReady_cabaadc0f_3_3", + "step_sendPlaygroundMessage_assertInput_cabaadc0f_5_1", + "step_sendPlaygroundMessage_focusInput_cabaadc0f_5_1", + "step_sendPlaygroundMessage_type_cabaadc0f_5_1", + "step_sendPlaygroundMessage_send_cabaadc0f_5_1", + "step_assertChatReplied_assert_cabaadc0f_5_2", + "step_assertChatContains_assert_cabaadc0f_5_3" + ], + "tags": [ + "case_id:weather-js-azure-openai-playground", + "scenario_id:SCN-CREATE-WEATHER-01", + "template_id:weather-agent", + "gate:pr" + ] + }, + "steps": [ + { + "step_id": "step_closeWelcomeOverlay_assertVisible_cabaadc0f_1_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the startup \"Welcome to VS Code\" sign-in overlay is visible and its Close button is available.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:initialization", + "initialization:closeWelcomeOverlay", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_closeWelcomeOverlay_close_cabaadc0f_1_1", + "agent": "interaction", + "tool": "click", + "parameters": { + "button": "left", + "x": 952, + "y": 128 + }, + "description": "Click the Close button on the startup Welcome sign-in overlay.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_closeWelcomeOverlay_assertVisible_cabaadc0f_1_1" + ], + "preconditions": [ + "dhash:952:128:16:5:255266345964665b", + "dhash:952:128:96:5:16100c10100c1404", + "dhash:952:128:0:10:2592eae0f08e8621" + ], + "postconditions": [], + "tags": [ + "component:initialization", + "initialization:closeWelcomeOverlay", + "force_run:true" + ] + }, + { + "step_id": "step_closeWelcomeOverlay_assertReady_cabaadc0f_1_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the startup sign-in overlay is no longer visible and the VS Code workbench is ready.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_closeWelcomeOverlay_close_cabaadc0f_1_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:initialization", + "initialization:closeWelcomeOverlay", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_open_cabaadc0f_1_2", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "f1" + }, + "description": "Press the F1 key to open the Command Palette in Visual Studio Code.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_closeWelcomeOverlay_assertReady_cabaadc0f_1_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertPalette_cabaadc0f_1_2", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Visual Studio Code Command Palette is visible with a > character in its input box and is ready to accept a command search.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_open_cabaadc0f_1_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_filter_cabaadc0f_1_2", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Microsoft 365 Agents Toolkit: Focus on Microsoft 365 Agents Toolkit View" + }, + "description": "Type the resolved command title into the active Command Palette.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertPalette_cabaadc0f_1_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertCommand_cabaadc0f_1_2", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Command Palette input box reads >Microsoft 365 Agents Toolkit: Focus on Microsoft 365 Agents Toolkit View and the highlighted command listed under it is titled Microsoft 365 Agents Toolkit: Focus on Microsoft 365 Agents Toolkit View.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_filter_cabaadc0f_1_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_execute_cabaadc0f_1_2", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to execute the selected Command Palette command.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertCommand_cabaadc0f_1_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_assertToolkitViewSettled_assert_cabaadc0f_1_3", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Microsoft 365 Agents Toolkit view is open in the side bar and an editor tab labeled Welcome showing the Build a Declarative Agent walkthrough is open in the editor area.", + "content_refs": [], + "timeout": 120, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_execute_cabaadc0f_1_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:initialization", + "initialization:assertToolkitViewSettled", + "step_retry_timeout: 120" + ] + }, + { + "step_id": "step_closeGetStartedEditor_assertActive_cabaadc0f_1_4", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the editor tab labeled Welcome showing the Build a Declarative Agent walkthrough is the active editor tab in the Visual Studio Code editor area.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_assertToolkitViewSettled_assert_cabaadc0f_1_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:initialization", + "initialization:closeGetStartedEditor", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_closeGetStartedEditor_close_cabaadc0f_1_4", + "agent": "interaction", + "tool": "keyboard_shortcut", + "parameters": { + "keys": "ctrl+w" + }, + "description": "Press Ctrl+W to close the Welcome editor tab.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_closeGetStartedEditor_assertActive_cabaadc0f_1_4" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:initialization", + "initialization:closeGetStartedEditor" + ] + }, + { + "step_id": "step_closeGetStartedEditor_assertClosed_cabaadc0f_1_4", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion no editor tab is open in the Visual Studio Code editor area.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_closeGetStartedEditor_close_cabaadc0f_1_4" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:initialization", + "initialization:closeGetStartedEditor", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_open_cabaadc0f_1_5", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "f1" + }, + "description": "Press the F1 key to open the Command Palette in Visual Studio Code.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_closeGetStartedEditor_assertClosed_cabaadc0f_1_4" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertPalette_cabaadc0f_1_5", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Visual Studio Code Command Palette is visible with a > character in its input box and is ready to accept a command search.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_open_cabaadc0f_1_5" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_filter_cabaadc0f_1_5", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Microsoft 365 Agents: Create New Agent/App" + }, + "description": "Type the resolved command title into the active Command Palette.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertPalette_cabaadc0f_1_5" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertCommand_cabaadc0f_1_5", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Command Palette input box reads >Microsoft 365 Agents: Create New Agent/App and the highlighted command listed under it is titled Microsoft 365 Agents: Create New Agent/App.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_filter_cabaadc0f_1_5" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_execute_cabaadc0f_1_5", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to execute the selected Command Palette command.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertCommand_cabaadc0f_1_5" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_singleSelect_assertQuestion_cabaadc0f_1_6", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the active prompt titled New Project is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_execute_cabaadc0f_1_5" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_singleSelect_assertOptionsLoaded_cabaadc0f_1_6", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the prompt titled New Project has finished loading and lists at least one selectable option.", + "content_refs": [], + "timeout": 120, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertQuestion_cabaadc0f_1_6" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 120" + ] + }, + { + "step_id": "step_singleSelect_filter_cabaadc0f_1_6", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Custom Engine Agent" + }, + "description": "Type the resolved option label Custom Engine Agent into the active single-select prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertOptionsLoaded_cabaadc0f_1_6" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_singleSelect_assertOption_cabaadc0f_1_6", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the option Custom Engine Agent is visible and selectable in the filtered single-select prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_filter_cabaadc0f_1_6" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_singleSelect_confirm_cabaadc0f_1_6", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to confirm the filtered single-select option.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertOption_cabaadc0f_1_6" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_singleSelect_assertQuestion_cabaadc0f_1_7", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the active prompt titled App Features Using Microsoft 365 Agents SDK is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_confirm_cabaadc0f_1_6" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_singleSelect_assertOptionsLoaded_cabaadc0f_1_7", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the prompt titled App Features Using Microsoft 365 Agents SDK has finished loading and lists at least one selectable option.", + "content_refs": [], + "timeout": 120, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertQuestion_cabaadc0f_1_7" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 120" + ] + }, + { + "step_id": "step_singleSelect_filter_cabaadc0f_1_7", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Weather Agent" + }, + "description": "Type the resolved option label Weather Agent into the active single-select prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertOptionsLoaded_cabaadc0f_1_7" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_singleSelect_assertOption_cabaadc0f_1_7", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the option Weather Agent is visible and selectable in the filtered single-select prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_filter_cabaadc0f_1_7" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_singleSelect_confirm_cabaadc0f_1_7", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to confirm the filtered single-select option.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertOption_cabaadc0f_1_7" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_singleSelect_assertQuestion_cabaadc0f_1_8", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the active prompt titled Service for Large Language Model (LLM) is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_confirm_cabaadc0f_1_7" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_singleSelect_assertOptionsLoaded_cabaadc0f_1_8", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the prompt titled Service for Large Language Model (LLM) has finished loading and lists at least one selectable option.", + "content_refs": [], + "timeout": 120, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertQuestion_cabaadc0f_1_8" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 120" + ] + }, + { + "step_id": "step_singleSelect_filter_cabaadc0f_1_8", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Azure OpenAI" + }, + "description": "Type the resolved option label Azure OpenAI into the active single-select prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertOptionsLoaded_cabaadc0f_1_8" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_singleSelect_assertOption_cabaadc0f_1_8", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the option Azure OpenAI is visible and selectable in the filtered single-select prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_filter_cabaadc0f_1_8" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_singleSelect_confirm_cabaadc0f_1_8", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to confirm the filtered single-select option.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertOption_cabaadc0f_1_8" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_textInput_assertQuestion_cabaadc0f_1_9", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the active prompt titled Azure OpenAI Key is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_confirm_cabaadc0f_1_8" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_textInput_input_cabaadc0f_1_9", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "${{secret:AZURE_OPENAI_API_KEY}}" + }, + "description": "Type the authored value into the active text prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_assertQuestion_cabaadc0f_1_9" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text" + ] + }, + { + "step_id": "step_textInput_confirm_cabaadc0f_1_9", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to submit the accepted text input.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_input_cabaadc0f_1_9" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text" + ] + }, + { + "step_id": "step_textInput_assertQuestion_cabaadc0f_1_10", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the active prompt titled Azure OpenAI Endpoint is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_confirm_cabaadc0f_1_9" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_textInput_input_cabaadc0f_1_10", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "${{env:AZURE_OPENAI_ENDPOINT}}" + }, + "description": "Type the authored value into the active text prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_assertQuestion_cabaadc0f_1_10" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text" + ] + }, + { + "step_id": "step_textInput_confirm_cabaadc0f_1_10", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to submit the accepted text input.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_input_cabaadc0f_1_10" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text" + ] + }, + { + "step_id": "step_textInput_assertQuestion_cabaadc0f_1_11", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the active prompt titled Azure OpenAI Deployment Name is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_confirm_cabaadc0f_1_10" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_textInput_input_cabaadc0f_1_11", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "${{env:AZURE_OPENAI_MODEL}}" + }, + "description": "Type the authored value into the active text prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_assertQuestion_cabaadc0f_1_11" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text" + ] + }, + { + "step_id": "step_textInput_confirm_cabaadc0f_1_11", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to submit the accepted text input.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_input_cabaadc0f_1_11" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text" + ] + }, + { + "step_id": "step_singleSelect_assertQuestion_cabaadc0f_1_12", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the active prompt titled Programming Language is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_confirm_cabaadc0f_1_11" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_singleSelect_assertOptionsLoaded_cabaadc0f_1_12", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the prompt titled Programming Language has finished loading and lists at least one selectable option.", + "content_refs": [], + "timeout": 120, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertQuestion_cabaadc0f_1_12" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 120" + ] + }, + { + "step_id": "step_singleSelect_filter_cabaadc0f_1_12", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "JavaScript" + }, + "description": "Type the resolved option label JavaScript into the active single-select prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertOptionsLoaded_cabaadc0f_1_12" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_singleSelect_assertOption_cabaadc0f_1_12", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the option JavaScript is visible and selectable in the filtered single-select prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_filter_cabaadc0f_1_12" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_singleSelect_confirm_cabaadc0f_1_12", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to confirm the filtered single-select option.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertOption_cabaadc0f_1_12" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_confirmOption_assertPrompt_cabaadc0f_1_13", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the active prompt titled Workspace Folder is visible and the option Default folder is focused.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_confirm_cabaadc0f_1_12" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "interaction:key-press", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_confirmOption_confirm_cabaadc0f_1_13", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to confirm the Default folder option.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_confirmOption_assertPrompt_cabaadc0f_1_13" + ], + "preconditions": [ + "dhash:364:74:16:5:08056a9a5d5516b6", + "dhash:364:74:96:5:44232286e2168e01", + "dhash:364:74:0:10:f0b09494b2717075" + ], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "interaction:key-press" + ] + }, + { + "step_id": "step_textInput_assertQuestion_cabaadc0f_1_14", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the active prompt titled Application Name is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_confirmOption_confirm_cabaadc0f_1_13" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_textInput_input_cabaadc0f_1_14", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "${{var:app_name:vscuse_app_#####}}" + }, + "description": "Type the authored value into the active text prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_assertQuestion_cabaadc0f_1_14" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text" + ] + }, + { + "step_id": "step_textInput_confirm_cabaadc0f_1_14", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to submit the accepted text input.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_input_cabaadc0f_1_14" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text" + ] + }, + { + "step_id": "step_assertProjectWindowReady_assert_cabaadc0f_1_15", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Preview README.md editor tab is open in Visual Studio Code.", + "content_refs": [], + "timeout": 60, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_confirm_cabaadc0f_1_14" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:initialization", + "initialization:assertProjectWindowReady", + "step_retry_timeout: 60" + ] + }, + { + "step_id": "step_checkWorkspaceFiles_verify_cabaadc0f_2_1", + "agent": "code", + "tool": "", + "parameters": { + "sample": "=== Generated Script ===\nLanguage: bash\n\n```bash\nset -euo pipefail\nPROJECT_DIR=\"/home/vscode/AgentsToolkitProjects/${{var:app_name}}\" ASSERTIONS_B64=\"W3sicGF0aCI6InNyYy9pbmRleC5qcyIsImV4aXN0cyI6dHJ1ZSwiY29udGFpbnMiOltdLCJub3RDb250YWlucyI6W119XQ==\" python3 - <<'PY'\nimport base64\nimport json\nimport os\nfrom pathlib import Path\n\nproject = Path(os.environ[\"PROJECT_DIR\"]).resolve()\nassertions = json.loads(base64.b64decode(os.environ[\"ASSERTIONS_B64\"]).decode(\"utf-8\"))\nfor assertion in assertions:\n target = (project / assertion[\"path\"]).resolve()\n try:\n target.relative_to(project)\n except ValueError as error:\n raise AssertionError(\"File assertion escaped the project directory\") from error\n exists = target.is_file()\n if exists != assertion[\"exists\"]:\n raise AssertionError(f\"Unexpected file existence for {assertion['path']}\")\n if not exists:\n continue\n content = target.read_text(encoding=\"utf-8\")\n for expected in assertion.get(\"contains\", []):\n expected = expected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if expected not in content:\n raise AssertionError(f\"Expected content is absent from {assertion['path']}\")\n for unexpected in assertion.get(\"notContains\", []):\n unexpected = unexpected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if unexpected in content:\n raise AssertionError(f\"Unexpected content is present in {assertion['path']}\")\nPY\n```" + }, + "description": "@code verify the authored workspace file existence and content assertions without logging file contents.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_assertProjectWindowReady_assert_cabaadc0f_1_15" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:checks", + "assertion:file", + "step_retry_timeout:120" + ] + }, + { + "step_id": "step_checkWorkspaceFiles_verify_cabaadc0f_2_2", + "agent": "code", + "tool": "", + "parameters": { + "sample": "=== Generated Script ===\nLanguage: bash\n\n```bash\nset -euo pipefail\nPROJECT_DIR=\"/home/vscode/AgentsToolkitProjects/${{var:app_name}}\" ASSERTIONS_B64=\"W3sicGF0aCI6InNyYy9hZ2VudC5qcyIsImV4aXN0cyI6dHJ1ZSwiY29udGFpbnMiOltdLCJub3RDb250YWlucyI6W119XQ==\" python3 - <<'PY'\nimport base64\nimport json\nimport os\nfrom pathlib import Path\n\nproject = Path(os.environ[\"PROJECT_DIR\"]).resolve()\nassertions = json.loads(base64.b64decode(os.environ[\"ASSERTIONS_B64\"]).decode(\"utf-8\"))\nfor assertion in assertions:\n target = (project / assertion[\"path\"]).resolve()\n try:\n target.relative_to(project)\n except ValueError as error:\n raise AssertionError(\"File assertion escaped the project directory\") from error\n exists = target.is_file()\n if exists != assertion[\"exists\"]:\n raise AssertionError(f\"Unexpected file existence for {assertion['path']}\")\n if not exists:\n continue\n content = target.read_text(encoding=\"utf-8\")\n for expected in assertion.get(\"contains\", []):\n expected = expected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if expected not in content:\n raise AssertionError(f\"Expected content is absent from {assertion['path']}\")\n for unexpected in assertion.get(\"notContains\", []):\n unexpected = unexpected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if unexpected in content:\n raise AssertionError(f\"Unexpected content is present in {assertion['path']}\")\nPY\n```" + }, + "description": "@code verify the authored workspace file existence and content assertions without logging file contents.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_checkWorkspaceFiles_verify_cabaadc0f_2_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:checks", + "assertion:file", + "step_retry_timeout:120" + ] + }, + { + "step_id": "step_checkWorkspaceFiles_verify_cabaadc0f_2_3", + "agent": "code", + "tool": "", + "parameters": { + "sample": "=== Generated Script ===\nLanguage: bash\n\n```bash\nset -euo pipefail\nPROJECT_DIR=\"/home/vscode/AgentsToolkitProjects/${{var:app_name}}\" ASSERTIONS_B64=\"W3sicGF0aCI6InNyYy90b29scy9nZXRXZWF0aGVyVG9vbC5qcyIsImV4aXN0cyI6dHJ1ZSwiY29udGFpbnMiOltdLCJub3RDb250YWlucyI6W119XQ==\" python3 - <<'PY'\nimport base64\nimport json\nimport os\nfrom pathlib import Path\n\nproject = Path(os.environ[\"PROJECT_DIR\"]).resolve()\nassertions = json.loads(base64.b64decode(os.environ[\"ASSERTIONS_B64\"]).decode(\"utf-8\"))\nfor assertion in assertions:\n target = (project / assertion[\"path\"]).resolve()\n try:\n target.relative_to(project)\n except ValueError as error:\n raise AssertionError(\"File assertion escaped the project directory\") from error\n exists = target.is_file()\n if exists != assertion[\"exists\"]:\n raise AssertionError(f\"Unexpected file existence for {assertion['path']}\")\n if not exists:\n continue\n content = target.read_text(encoding=\"utf-8\")\n for expected in assertion.get(\"contains\", []):\n expected = expected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if expected not in content:\n raise AssertionError(f\"Expected content is absent from {assertion['path']}\")\n for unexpected in assertion.get(\"notContains\", []):\n unexpected = unexpected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if unexpected in content:\n raise AssertionError(f\"Unexpected content is present in {assertion['path']}\")\nPY\n```" + }, + "description": "@code verify the authored workspace file existence and content assertions without logging file contents.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_checkWorkspaceFiles_verify_cabaadc0f_2_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:checks", + "assertion:file", + "step_retry_timeout:120" + ] + }, + { + "step_id": "step_checkWorkspaceFiles_verify_cabaadc0f_2_4", + "agent": "code", + "tool": "", + "parameters": { + "sample": "=== Generated Script ===\nLanguage: bash\n\n```bash\nset -euo pipefail\nPROJECT_DIR=\"/home/vscode/AgentsToolkitProjects/${{var:app_name}}\" ASSERTIONS_B64=\"W3sicGF0aCI6InBhY2thZ2UuanNvbiIsImV4aXN0cyI6dHJ1ZSwiY29udGFpbnMiOlsiXCJzdGFydFwiIiwiXCJkZXY6dGVhbXNmeFwiIl0sIm5vdENvbnRhaW5zIjpbXX1d\" python3 - <<'PY'\nimport base64\nimport json\nimport os\nfrom pathlib import Path\n\nproject = Path(os.environ[\"PROJECT_DIR\"]).resolve()\nassertions = json.loads(base64.b64decode(os.environ[\"ASSERTIONS_B64\"]).decode(\"utf-8\"))\nfor assertion in assertions:\n target = (project / assertion[\"path\"]).resolve()\n try:\n target.relative_to(project)\n except ValueError as error:\n raise AssertionError(\"File assertion escaped the project directory\") from error\n exists = target.is_file()\n if exists != assertion[\"exists\"]:\n raise AssertionError(f\"Unexpected file existence for {assertion['path']}\")\n if not exists:\n continue\n content = target.read_text(encoding=\"utf-8\")\n for expected in assertion.get(\"contains\", []):\n expected = expected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if expected not in content:\n raise AssertionError(f\"Expected content is absent from {assertion['path']}\")\n for unexpected in assertion.get(\"notContains\", []):\n unexpected = unexpected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if unexpected in content:\n raise AssertionError(f\"Unexpected content is present in {assertion['path']}\")\nPY\n```" + }, + "description": "@code verify the authored workspace file existence and content assertions without logging file contents.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_checkWorkspaceFiles_verify_cabaadc0f_2_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:checks", + "assertion:file", + "step_retry_timeout:120" + ] + }, + { + "step_id": "step_checkWorkspaceFiles_verify_cabaadc0f_2_5", + "agent": "code", + "tool": "", + "parameters": { + "sample": "=== Generated Script ===\nLanguage: bash\n\n```bash\nset -euo pipefail\nPROJECT_DIR=\"/home/vscode/AgentsToolkitProjects/${{var:app_name}}\" ASSERTIONS_B64=\"W3sicGF0aCI6InNyYy9pbmRleC50cyIsImV4aXN0cyI6ZmFsc2UsImNvbnRhaW5zIjpbXSwibm90Q29udGFpbnMiOltdfV0=\" python3 - <<'PY'\nimport base64\nimport json\nimport os\nfrom pathlib import Path\n\nproject = Path(os.environ[\"PROJECT_DIR\"]).resolve()\nassertions = json.loads(base64.b64decode(os.environ[\"ASSERTIONS_B64\"]).decode(\"utf-8\"))\nfor assertion in assertions:\n target = (project / assertion[\"path\"]).resolve()\n try:\n target.relative_to(project)\n except ValueError as error:\n raise AssertionError(\"File assertion escaped the project directory\") from error\n exists = target.is_file()\n if exists != assertion[\"exists\"]:\n raise AssertionError(f\"Unexpected file existence for {assertion['path']}\")\n if not exists:\n continue\n content = target.read_text(encoding=\"utf-8\")\n for expected in assertion.get(\"contains\", []):\n expected = expected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if expected not in content:\n raise AssertionError(f\"Expected content is absent from {assertion['path']}\")\n for unexpected in assertion.get(\"notContains\", []):\n unexpected = unexpected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if unexpected in content:\n raise AssertionError(f\"Unexpected content is present in {assertion['path']}\")\nPY\n```" + }, + "description": "@code verify the authored workspace file existence and content assertions without logging file contents.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_checkWorkspaceFiles_verify_cabaadc0f_2_4" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:checks", + "assertion:file", + "step_retry_timeout:120" + ] + }, + { + "step_id": "step_executeCommand_open_cabaadc0f_3_1", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "f1" + }, + "description": "Press the F1 key to open the Command Palette in Visual Studio Code.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_checkWorkspaceFiles_verify_cabaadc0f_2_5" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertPalette_cabaadc0f_3_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Visual Studio Code Command Palette is visible with a > character in its input box and is ready to accept a command search.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_open_cabaadc0f_3_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_filter_cabaadc0f_3_1", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Debug: Select and Start Debugging" + }, + "description": "Type the resolved command title into the active Command Palette.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertPalette_cabaadc0f_3_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertCommand_cabaadc0f_3_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Command Palette input box reads >Debug: Select and Start Debugging and the highlighted command listed under it is titled Debug: Select and Start Debugging.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_filter_cabaadc0f_3_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_execute_cabaadc0f_3_1", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to execute the selected Command Palette command.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertCommand_cabaadc0f_3_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_filterOption_filter_cabaadc0f_3_2", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Debug in Microsoft 365 Agents Playground" + }, + "description": "Type the resolved option label into the active option picker.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_execute_cabaadc0f_3_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_filterOption_assertOption_cabaadc0f_3_2", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the option Debug in Microsoft 365 Agents Playground is visible and selectable in the filtered option picker.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_filterOption_filter_cabaadc0f_3_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_filterOption_confirm_cabaadc0f_3_2", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to confirm the filtered option.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_filterOption_assertOption_cabaadc0f_3_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_assertReady_assertReady_cabaadc0f_3_3", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Microsoft 365 Agents Playground page is open in the browser.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_filterOption_confirm_cabaadc0f_3_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:browser", + "action:assert-ready", + "step_retry_timeout: 180" + ] + }, + { + "step_id": "step_sendPlaygroundMessage_assertInput_cabaadc0f_5_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Agents Playground \"Type a message...\" input is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_assertReady_assertReady_cabaadc0f_3_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:browser", + "host_surface:playground", + "entry_state:chat-ready", + "action:send-message", + "step_retry_timeout: 120" + ] + }, + { + "step_id": "step_sendPlaygroundMessage_focusInput_cabaadc0f_5_1", + "agent": "interaction", + "tool": "click", + "parameters": { + "button": "left", + "x": 176, + "y": 710 + }, + "description": "Click the Agents Playground \"Type a message...\" input.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_sendPlaygroundMessage_assertInput_cabaadc0f_5_1" + ], + "preconditions": [ + "dhash:176:710:16:5:00000000006858d8", + "dhash:176:710:96:5:00000000303a8000", + "dhash:176:710:0:10:5c4a03c080828240" + ], + "postconditions": [], + "tags": [ + "component:browser", + "host_surface:playground", + "entry_state:chat-ready", + "action:send-message" + ] + }, + { + "step_id": "step_sendPlaygroundMessage_type_cabaadc0f_5_1", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "What is the weather in Seattle?" + }, + "description": "Type \"What is the weather in Seattle?\" into the Agents Playground message input.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_sendPlaygroundMessage_focusInput_cabaadc0f_5_1" + ], + "preconditions": [ + "dhash:512:384:0:20:5c4a03c080828260" + ], + "postconditions": [], + "tags": [ + "component:browser", + "host_surface:playground", + "entry_state:chat-ready", + "action:send-message" + ] + }, + { + "step_id": "step_sendPlaygroundMessage_send_cabaadc0f_5_1", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to send the Agents Playground message.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_sendPlaygroundMessage_type_cabaadc0f_5_1" + ], + "preconditions": [ + "dhash:512:384:0:20:5c4a03c080828260" + ], + "postconditions": [], + "tags": [ + "component:browser", + "host_surface:playground", + "entry_state:chat-ready", + "action:send-message" + ] + }, + { + "step_id": "step_assertChatReplied_assert_cabaadc0f_5_2", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the current assistant turn is complete and contains a non-empty response.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_sendPlaygroundMessage_send_cabaadc0f_5_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:browser", + "action:assert-chat-response", + "expectation:replied", + "step_retry_timeout: 120" + ] + }, + { + "step_id": "step_assertChatContains_assert_cabaadc0f_5_3", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the current assistant response contains \"Seattle\".", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_assertChatReplied_assert_cabaadc0f_5_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:browser", + "action:assert-chat-response", + "expectation:contains", + "step_retry_timeout: 120" + ] + } + ], + "screenshots": {} +} diff --git a/packages/tests/vscuse/vscode-test-cases/plans/weather-agent--weather-js-azure-openai-remote-teams.json b/packages/tests/vscuse/vscode-test-cases/plans/weather-agent--weather-js-azure-openai-remote-teams.json new file mode 100644 index 00000000000..c4818f7ed78 --- /dev/null +++ b/packages/tests/vscuse/vscode-test-cases/plans/weather-agent--weather-js-azure-openai-remote-teams.json @@ -0,0 +1,3861 @@ +{ + "plan_metadata": { + "version": "1.1", + "plan_id": "plan_916019b2a9fd", + "execution_context": { + "delay_between_steps": 1, + "stop_on_error": true, + "precondition_wait_timeout": 30, + "precondition_retry_interval": 1 + }, + "total_steps": 163, + "name": "weather-js-azure-openai-remote-teams", + "description": { + "owner": "", + "workitem": "SCN-CREATE-WEATHER-01", + "other": "" + }, + "execution_order": [ + "step_closeWelcomeOverlay_assertVisible_c1d26615d_1_1", + "step_closeWelcomeOverlay_close_c1d26615d_1_1", + "step_closeWelcomeOverlay_assertReady_c1d26615d_1_1", + "step_executeCommand_open_c1d26615d_1_2", + "step_executeCommand_assertPalette_c1d26615d_1_2", + "step_executeCommand_filter_c1d26615d_1_2", + "step_executeCommand_assertCommand_c1d26615d_1_2", + "step_executeCommand_execute_c1d26615d_1_2", + "step_assertToolkitViewSettled_assert_c1d26615d_1_3", + "step_closeGetStartedEditor_assertActive_c1d26615d_1_4", + "step_closeGetStartedEditor_close_c1d26615d_1_4", + "step_closeGetStartedEditor_assertClosed_c1d26615d_1_4", + "step_executeCommand_open_c1d26615d_1_5", + "step_executeCommand_assertPalette_c1d26615d_1_5", + "step_executeCommand_filter_c1d26615d_1_5", + "step_executeCommand_assertCommand_c1d26615d_1_5", + "step_executeCommand_execute_c1d26615d_1_5", + "step_singleSelect_assertQuestion_c1d26615d_1_6", + "step_singleSelect_assertOptionsLoaded_c1d26615d_1_6", + "step_singleSelect_filter_c1d26615d_1_6", + "step_singleSelect_assertOption_c1d26615d_1_6", + "step_singleSelect_confirm_c1d26615d_1_6", + "step_singleSelect_assertQuestion_c1d26615d_1_7", + "step_singleSelect_assertOptionsLoaded_c1d26615d_1_7", + "step_singleSelect_filter_c1d26615d_1_7", + "step_singleSelect_assertOption_c1d26615d_1_7", + "step_singleSelect_confirm_c1d26615d_1_7", + "step_singleSelect_assertQuestion_c1d26615d_1_8", + "step_singleSelect_assertOptionsLoaded_c1d26615d_1_8", + "step_singleSelect_filter_c1d26615d_1_8", + "step_singleSelect_assertOption_c1d26615d_1_8", + "step_singleSelect_confirm_c1d26615d_1_8", + "step_textInput_assertQuestion_c1d26615d_1_9", + "step_textInput_input_c1d26615d_1_9", + "step_textInput_confirm_c1d26615d_1_9", + "step_textInput_assertQuestion_c1d26615d_1_10", + "step_textInput_input_c1d26615d_1_10", + "step_textInput_confirm_c1d26615d_1_10", + "step_textInput_assertQuestion_c1d26615d_1_11", + "step_textInput_input_c1d26615d_1_11", + "step_textInput_confirm_c1d26615d_1_11", + "step_singleSelect_assertQuestion_c1d26615d_1_12", + "step_singleSelect_assertOptionsLoaded_c1d26615d_1_12", + "step_singleSelect_filter_c1d26615d_1_12", + "step_singleSelect_assertOption_c1d26615d_1_12", + "step_singleSelect_confirm_c1d26615d_1_12", + "step_confirmOption_assertPrompt_c1d26615d_1_13", + "step_confirmOption_confirm_c1d26615d_1_13", + "step_textInput_assertQuestion_c1d26615d_1_14", + "step_textInput_input_c1d26615d_1_14", + "step_textInput_confirm_c1d26615d_1_14", + "step_assertProjectWindowReady_assert_c1d26615d_1_15", + "step_checkWorkspaceFiles_verify_c1d26615d_2_1", + "step_checkWorkspaceFiles_verify_c1d26615d_2_2", + "step_checkWorkspaceFiles_verify_c1d26615d_2_3", + "step_checkWorkspaceFiles_verify_c1d26615d_2_4", + "step_checkWorkspaceFiles_verify_c1d26615d_2_5", + "step_executeCommand_open_c1d26615d_3_1", + "step_executeCommand_assertPalette_c1d26615d_3_1", + "step_executeCommand_filter_c1d26615d_3_1", + "step_executeCommand_assertCommand_c1d26615d_3_1", + "step_executeCommand_execute_c1d26615d_3_1", + "step_signInAzure_assertOption_c1d26615d_3_2", + "step_signInAzure_selectOption_c1d26615d_3_2", + "step_signInAzure_confirmSignIn_c1d26615d_3_2", + "step_signInAzure_allow_c1d26615d_3_2", + "step_signInAzure_focusAccount_c1d26615d_3_2", + "step_signInAzure_typeAccount_c1d26615d_3_2", + "step_signInAzure_next_c1d26615d_3_2", + "step_signInAzure_typePassword_c1d26615d_3_2", + "step_signInAzure_submit_c1d26615d_3_2", + "step_signInAzure_closeBrowser_c1d26615d_3_2", + "step_signInAzure_assertReady_c1d26615d_3_2", + "step_executeCommand_open_c1d26615d_4_1", + "step_executeCommand_assertPalette_c1d26615d_4_1", + "step_executeCommand_filter_c1d26615d_4_1", + "step_executeCommand_assertCommand_c1d26615d_4_1", + "step_executeCommand_execute_c1d26615d_4_1", + "step_signInM365FromPicker_assertOption_c1d26615d_4_2", + "step_signInM365FromPicker_selectOption_c1d26615d_4_2", + "step_signInM365FromPicker_confirmSignIn_c1d26615d_4_2", + "step_signInM365FromPicker_useAnotherAccount_c1d26615d_4_2", + "step_signInM365FromPicker_typeAccount_c1d26615d_4_2", + "step_signInM365FromPicker_next_c1d26615d_4_2", + "step_signInM365FromPicker_typePassword_c1d26615d_4_2", + "step_signInM365FromPicker_submit_c1d26615d_4_2", + "step_signInM365FromPicker_closeBrowser_c1d26615d_4_2", + "step_signInM365FromPicker_assertReady_c1d26615d_4_2", + "step_executeCommand_open_c1d26615d_5_1", + "step_executeCommand_assertPalette_c1d26615d_5_1", + "step_executeCommand_filter_c1d26615d_5_1", + "step_executeCommand_assertCommand_c1d26615d_5_1", + "step_executeCommand_execute_c1d26615d_5_1", + "step_executeCommand_open_c1d26615d_5_2", + "step_executeCommand_assertPalette_c1d26615d_5_2", + "step_executeCommand_filter_c1d26615d_5_2", + "step_executeCommand_assertCommand_c1d26615d_5_2", + "step_executeCommand_execute_c1d26615d_5_2", + "step_executeCommand_open_c1d26615d_5_3", + "step_executeCommand_assertPalette_c1d26615d_5_3", + "step_executeCommand_filter_c1d26615d_5_3", + "step_executeCommand_assertCommand_c1d26615d_5_3", + "step_executeCommand_execute_c1d26615d_5_3", + "step_singleSelect_assertQuestion_c1d26615d_5_4", + "step_singleSelect_assertOptionsLoaded_c1d26615d_5_4", + "step_singleSelect_filter_c1d26615d_5_4", + "step_singleSelect_assertOption_c1d26615d_5_4", + "step_singleSelect_confirm_c1d26615d_5_4", + "step_textInput_assertQuestion_c1d26615d_5_5", + "step_textInput_input_c1d26615d_5_5", + "step_textInput_confirm_c1d26615d_5_5", + "step_singleSelect_assertQuestion_c1d26615d_5_6", + "step_singleSelect_assertOptionsLoaded_c1d26615d_5_6", + "step_singleSelect_filter_c1d26615d_5_6", + "step_singleSelect_assertOption_c1d26615d_5_6", + "step_singleSelect_confirm_c1d26615d_5_6", + "step_clickPrimaryAction_assertDialog_c1d26615d_5_7", + "step_clickPrimaryAction_click_c1d26615d_5_7", + "step_assertNotificationContains_assert_c1d26615d_5_8", + "step_executeCommand_open_c1d26615d_6_1", + "step_executeCommand_assertPalette_c1d26615d_6_1", + "step_executeCommand_filter_c1d26615d_6_1", + "step_executeCommand_assertCommand_c1d26615d_6_1", + "step_executeCommand_execute_c1d26615d_6_1", + "step_executeCommand_open_c1d26615d_6_2", + "step_executeCommand_assertPalette_c1d26615d_6_2", + "step_executeCommand_filter_c1d26615d_6_2", + "step_executeCommand_assertCommand_c1d26615d_6_2", + "step_executeCommand_execute_c1d26615d_6_2", + "step_executeCommand_open_c1d26615d_6_3", + "step_executeCommand_assertPalette_c1d26615d_6_3", + "step_executeCommand_filter_c1d26615d_6_3", + "step_executeCommand_assertCommand_c1d26615d_6_3", + "step_executeCommand_execute_c1d26615d_6_3", + "step_clickPrimaryAction_assertDialog_c1d26615d_6_4", + "step_clickPrimaryAction_click_c1d26615d_6_4", + "step_assertNotificationContains_assert_c1d26615d_6_5", + "step_executeCommand_open_c1d26615d_7_1", + "step_executeCommand_assertPalette_c1d26615d_7_1", + "step_executeCommand_filter_c1d26615d_7_1", + "step_executeCommand_assertCommand_c1d26615d_7_1", + "step_executeCommand_execute_c1d26615d_7_1", + "step_filterOption_filter_c1d26615d_7_2", + "step_filterOption_assertOption_c1d26615d_7_2", + "step_filterOption_confirm_c1d26615d_7_2", + "step_browserM365PasswordSignIn_assertPassword_c1d26615d_7_3", + "step_browserM365PasswordSignIn_focusPassword_c1d26615d_7_3", + "step_browserM365PasswordSignIn_enterPassword_c1d26615d_7_3", + "step_browserM365PasswordSignIn_submitPassword_c1d26615d_7_3", + "step_browserM365PasswordSignIn_assertStaySignedIn_c1d26615d_7_3", + "step_browserM365PasswordSignIn_confirmStaySignedIn_c1d26615d_7_3", + "step_assertReady_assertReady_c1d26615d_7_4", + "step_addAndOpenApp_assertAdd_c1d26615d_8_1", + "step_addAndOpenApp_add_c1d26615d_8_1", + "step_addAndOpenApp_assertAdded_c1d26615d_8_1", + "step_addAndOpenApp_open_c1d26615d_8_1", + "step_addAndOpenApp_assertReady_c1d26615d_8_1", + "step_sendTeamsMessage_assertInput_c1d26615d_9_1", + "step_sendTeamsMessage_focusInput_c1d26615d_9_1", + "step_sendTeamsMessage_type_c1d26615d_9_1", + "step_sendTeamsMessage_send_c1d26615d_9_1", + "step_assertChatReplied_assert_c1d26615d_9_2", + "step_assertChatContains_assert_c1d26615d_9_3" + ], + "tags": [ + "case_id:weather-js-azure-openai-remote-teams", + "scenario_id:SCN-CREATE-WEATHER-01", + "template_id:weather-agent", + "gate:pr" + ] + }, + "steps": [ + { + "step_id": "step_closeWelcomeOverlay_assertVisible_c1d26615d_1_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the startup \"Welcome to VS Code\" sign-in overlay is visible and its Close button is available.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:initialization", + "initialization:closeWelcomeOverlay", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_closeWelcomeOverlay_close_c1d26615d_1_1", + "agent": "interaction", + "tool": "click", + "parameters": { + "button": "left", + "x": 952, + "y": 128 + }, + "description": "Click the Close button on the startup Welcome sign-in overlay.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_closeWelcomeOverlay_assertVisible_c1d26615d_1_1" + ], + "preconditions": [ + "dhash:952:128:16:5:255266345964665b", + "dhash:952:128:96:5:16100c10100c1404", + "dhash:952:128:0:10:2592eae0f08e8621" + ], + "postconditions": [], + "tags": [ + "component:initialization", + "initialization:closeWelcomeOverlay", + "force_run:true" + ] + }, + { + "step_id": "step_closeWelcomeOverlay_assertReady_c1d26615d_1_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the startup sign-in overlay is no longer visible and the VS Code workbench is ready.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_closeWelcomeOverlay_close_c1d26615d_1_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:initialization", + "initialization:closeWelcomeOverlay", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_open_c1d26615d_1_2", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "f1" + }, + "description": "Press the F1 key to open the Command Palette in Visual Studio Code.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_closeWelcomeOverlay_assertReady_c1d26615d_1_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertPalette_c1d26615d_1_2", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Visual Studio Code Command Palette is visible with a > character in its input box and is ready to accept a command search.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_open_c1d26615d_1_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_filter_c1d26615d_1_2", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Microsoft 365 Agents Toolkit: Focus on Microsoft 365 Agents Toolkit View" + }, + "description": "Type the resolved command title into the active Command Palette.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertPalette_c1d26615d_1_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertCommand_c1d26615d_1_2", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Command Palette input box reads >Microsoft 365 Agents Toolkit: Focus on Microsoft 365 Agents Toolkit View and the highlighted command listed under it is titled Microsoft 365 Agents Toolkit: Focus on Microsoft 365 Agents Toolkit View.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_filter_c1d26615d_1_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_execute_c1d26615d_1_2", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to execute the selected Command Palette command.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertCommand_c1d26615d_1_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_assertToolkitViewSettled_assert_c1d26615d_1_3", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Microsoft 365 Agents Toolkit view is open in the side bar and an editor tab labeled Welcome showing the Build a Declarative Agent walkthrough is open in the editor area.", + "content_refs": [], + "timeout": 120, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_execute_c1d26615d_1_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:initialization", + "initialization:assertToolkitViewSettled", + "step_retry_timeout: 120" + ] + }, + { + "step_id": "step_closeGetStartedEditor_assertActive_c1d26615d_1_4", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the editor tab labeled Welcome showing the Build a Declarative Agent walkthrough is the active editor tab in the Visual Studio Code editor area.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_assertToolkitViewSettled_assert_c1d26615d_1_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:initialization", + "initialization:closeGetStartedEditor", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_closeGetStartedEditor_close_c1d26615d_1_4", + "agent": "interaction", + "tool": "keyboard_shortcut", + "parameters": { + "keys": "ctrl+w" + }, + "description": "Press Ctrl+W to close the Welcome editor tab.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_closeGetStartedEditor_assertActive_c1d26615d_1_4" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:initialization", + "initialization:closeGetStartedEditor" + ] + }, + { + "step_id": "step_closeGetStartedEditor_assertClosed_c1d26615d_1_4", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion no editor tab is open in the Visual Studio Code editor area.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_closeGetStartedEditor_close_c1d26615d_1_4" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:initialization", + "initialization:closeGetStartedEditor", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_open_c1d26615d_1_5", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "f1" + }, + "description": "Press the F1 key to open the Command Palette in Visual Studio Code.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_closeGetStartedEditor_assertClosed_c1d26615d_1_4" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertPalette_c1d26615d_1_5", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Visual Studio Code Command Palette is visible with a > character in its input box and is ready to accept a command search.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_open_c1d26615d_1_5" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_filter_c1d26615d_1_5", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Microsoft 365 Agents: Create New Agent/App" + }, + "description": "Type the resolved command title into the active Command Palette.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertPalette_c1d26615d_1_5" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertCommand_c1d26615d_1_5", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Command Palette input box reads >Microsoft 365 Agents: Create New Agent/App and the highlighted command listed under it is titled Microsoft 365 Agents: Create New Agent/App.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_filter_c1d26615d_1_5" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_execute_c1d26615d_1_5", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to execute the selected Command Palette command.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertCommand_c1d26615d_1_5" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_singleSelect_assertQuestion_c1d26615d_1_6", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the active prompt titled New Project is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_execute_c1d26615d_1_5" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_singleSelect_assertOptionsLoaded_c1d26615d_1_6", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the prompt titled New Project has finished loading and lists at least one selectable option.", + "content_refs": [], + "timeout": 120, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertQuestion_c1d26615d_1_6" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 120" + ] + }, + { + "step_id": "step_singleSelect_filter_c1d26615d_1_6", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Custom Engine Agent" + }, + "description": "Type the resolved option label Custom Engine Agent into the active single-select prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertOptionsLoaded_c1d26615d_1_6" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_singleSelect_assertOption_c1d26615d_1_6", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the option Custom Engine Agent is visible and selectable in the filtered single-select prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_filter_c1d26615d_1_6" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_singleSelect_confirm_c1d26615d_1_6", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to confirm the filtered single-select option.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertOption_c1d26615d_1_6" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_singleSelect_assertQuestion_c1d26615d_1_7", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the active prompt titled App Features Using Microsoft 365 Agents SDK is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_confirm_c1d26615d_1_6" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_singleSelect_assertOptionsLoaded_c1d26615d_1_7", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the prompt titled App Features Using Microsoft 365 Agents SDK has finished loading and lists at least one selectable option.", + "content_refs": [], + "timeout": 120, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertQuestion_c1d26615d_1_7" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 120" + ] + }, + { + "step_id": "step_singleSelect_filter_c1d26615d_1_7", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Weather Agent" + }, + "description": "Type the resolved option label Weather Agent into the active single-select prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertOptionsLoaded_c1d26615d_1_7" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_singleSelect_assertOption_c1d26615d_1_7", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the option Weather Agent is visible and selectable in the filtered single-select prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_filter_c1d26615d_1_7" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_singleSelect_confirm_c1d26615d_1_7", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to confirm the filtered single-select option.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertOption_c1d26615d_1_7" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_singleSelect_assertQuestion_c1d26615d_1_8", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the active prompt titled Service for Large Language Model (LLM) is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_confirm_c1d26615d_1_7" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_singleSelect_assertOptionsLoaded_c1d26615d_1_8", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the prompt titled Service for Large Language Model (LLM) has finished loading and lists at least one selectable option.", + "content_refs": [], + "timeout": 120, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertQuestion_c1d26615d_1_8" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 120" + ] + }, + { + "step_id": "step_singleSelect_filter_c1d26615d_1_8", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Azure OpenAI" + }, + "description": "Type the resolved option label Azure OpenAI into the active single-select prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertOptionsLoaded_c1d26615d_1_8" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_singleSelect_assertOption_c1d26615d_1_8", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the option Azure OpenAI is visible and selectable in the filtered single-select prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_filter_c1d26615d_1_8" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_singleSelect_confirm_c1d26615d_1_8", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to confirm the filtered single-select option.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertOption_c1d26615d_1_8" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_textInput_assertQuestion_c1d26615d_1_9", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the active prompt titled Azure OpenAI Key is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_confirm_c1d26615d_1_8" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_textInput_input_c1d26615d_1_9", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "${{secret:AZURE_OPENAI_API_KEY}}" + }, + "description": "Type the authored value into the active text prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_assertQuestion_c1d26615d_1_9" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text" + ] + }, + { + "step_id": "step_textInput_confirm_c1d26615d_1_9", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to submit the accepted text input.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_input_c1d26615d_1_9" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text" + ] + }, + { + "step_id": "step_textInput_assertQuestion_c1d26615d_1_10", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the active prompt titled Azure OpenAI Endpoint is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_confirm_c1d26615d_1_9" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_textInput_input_c1d26615d_1_10", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "${{env:AZURE_OPENAI_ENDPOINT}}" + }, + "description": "Type the authored value into the active text prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_assertQuestion_c1d26615d_1_10" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text" + ] + }, + { + "step_id": "step_textInput_confirm_c1d26615d_1_10", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to submit the accepted text input.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_input_c1d26615d_1_10" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text" + ] + }, + { + "step_id": "step_textInput_assertQuestion_c1d26615d_1_11", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the active prompt titled Azure OpenAI Deployment Name is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_confirm_c1d26615d_1_10" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_textInput_input_c1d26615d_1_11", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "${{env:AZURE_OPENAI_MODEL}}" + }, + "description": "Type the authored value into the active text prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_assertQuestion_c1d26615d_1_11" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text" + ] + }, + { + "step_id": "step_textInput_confirm_c1d26615d_1_11", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to submit the accepted text input.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_input_c1d26615d_1_11" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text" + ] + }, + { + "step_id": "step_singleSelect_assertQuestion_c1d26615d_1_12", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the active prompt titled Programming Language is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_confirm_c1d26615d_1_11" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_singleSelect_assertOptionsLoaded_c1d26615d_1_12", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the prompt titled Programming Language has finished loading and lists at least one selectable option.", + "content_refs": [], + "timeout": 120, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertQuestion_c1d26615d_1_12" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 120" + ] + }, + { + "step_id": "step_singleSelect_filter_c1d26615d_1_12", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "JavaScript" + }, + "description": "Type the resolved option label JavaScript into the active single-select prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertOptionsLoaded_c1d26615d_1_12" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_singleSelect_assertOption_c1d26615d_1_12", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the option JavaScript is visible and selectable in the filtered single-select prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_filter_c1d26615d_1_12" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_singleSelect_confirm_c1d26615d_1_12", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to confirm the filtered single-select option.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertOption_c1d26615d_1_12" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_confirmOption_assertPrompt_c1d26615d_1_13", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the active prompt titled Workspace Folder is visible and the option Default folder is focused.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_confirm_c1d26615d_1_12" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "interaction:key-press", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_confirmOption_confirm_c1d26615d_1_13", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to confirm the Default folder option.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_confirmOption_assertPrompt_c1d26615d_1_13" + ], + "preconditions": [ + "dhash:364:74:16:5:08056a9a5d5516b6", + "dhash:364:74:96:5:44232286e2168e01", + "dhash:364:74:0:10:f0b09494b2717075" + ], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "interaction:key-press" + ] + }, + { + "step_id": "step_textInput_assertQuestion_c1d26615d_1_14", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the active prompt titled Application Name is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_confirmOption_confirm_c1d26615d_1_13" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_textInput_input_c1d26615d_1_14", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "${{var:app_name:vscuse_app_#####}}" + }, + "description": "Type the authored value into the active text prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_assertQuestion_c1d26615d_1_14" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text" + ] + }, + { + "step_id": "step_textInput_confirm_c1d26615d_1_14", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to submit the accepted text input.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_input_c1d26615d_1_14" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text" + ] + }, + { + "step_id": "step_assertProjectWindowReady_assert_c1d26615d_1_15", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Preview README.md editor tab is open in Visual Studio Code.", + "content_refs": [], + "timeout": 60, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_confirm_c1d26615d_1_14" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:initialization", + "initialization:assertProjectWindowReady", + "step_retry_timeout: 60" + ] + }, + { + "step_id": "step_checkWorkspaceFiles_verify_c1d26615d_2_1", + "agent": "code", + "tool": "", + "parameters": { + "sample": "=== Generated Script ===\nLanguage: bash\n\n```bash\nset -euo pipefail\nPROJECT_DIR=\"/home/vscode/AgentsToolkitProjects/${{var:app_name}}\" ASSERTIONS_B64=\"W3sicGF0aCI6InNyYy9pbmRleC5qcyIsImV4aXN0cyI6dHJ1ZSwiY29udGFpbnMiOltdLCJub3RDb250YWlucyI6W119XQ==\" python3 - <<'PY'\nimport base64\nimport json\nimport os\nfrom pathlib import Path\n\nproject = Path(os.environ[\"PROJECT_DIR\"]).resolve()\nassertions = json.loads(base64.b64decode(os.environ[\"ASSERTIONS_B64\"]).decode(\"utf-8\"))\nfor assertion in assertions:\n target = (project / assertion[\"path\"]).resolve()\n try:\n target.relative_to(project)\n except ValueError as error:\n raise AssertionError(\"File assertion escaped the project directory\") from error\n exists = target.is_file()\n if exists != assertion[\"exists\"]:\n raise AssertionError(f\"Unexpected file existence for {assertion['path']}\")\n if not exists:\n continue\n content = target.read_text(encoding=\"utf-8\")\n for expected in assertion.get(\"contains\", []):\n expected = expected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if expected not in content:\n raise AssertionError(f\"Expected content is absent from {assertion['path']}\")\n for unexpected in assertion.get(\"notContains\", []):\n unexpected = unexpected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if unexpected in content:\n raise AssertionError(f\"Unexpected content is present in {assertion['path']}\")\nPY\n```" + }, + "description": "@code verify the authored workspace file existence and content assertions without logging file contents.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_assertProjectWindowReady_assert_c1d26615d_1_15" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:checks", + "assertion:file", + "step_retry_timeout:120" + ] + }, + { + "step_id": "step_checkWorkspaceFiles_verify_c1d26615d_2_2", + "agent": "code", + "tool": "", + "parameters": { + "sample": "=== Generated Script ===\nLanguage: bash\n\n```bash\nset -euo pipefail\nPROJECT_DIR=\"/home/vscode/AgentsToolkitProjects/${{var:app_name}}\" ASSERTIONS_B64=\"W3sicGF0aCI6InNyYy9hZ2VudC5qcyIsImV4aXN0cyI6dHJ1ZSwiY29udGFpbnMiOltdLCJub3RDb250YWlucyI6W119XQ==\" python3 - <<'PY'\nimport base64\nimport json\nimport os\nfrom pathlib import Path\n\nproject = Path(os.environ[\"PROJECT_DIR\"]).resolve()\nassertions = json.loads(base64.b64decode(os.environ[\"ASSERTIONS_B64\"]).decode(\"utf-8\"))\nfor assertion in assertions:\n target = (project / assertion[\"path\"]).resolve()\n try:\n target.relative_to(project)\n except ValueError as error:\n raise AssertionError(\"File assertion escaped the project directory\") from error\n exists = target.is_file()\n if exists != assertion[\"exists\"]:\n raise AssertionError(f\"Unexpected file existence for {assertion['path']}\")\n if not exists:\n continue\n content = target.read_text(encoding=\"utf-8\")\n for expected in assertion.get(\"contains\", []):\n expected = expected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if expected not in content:\n raise AssertionError(f\"Expected content is absent from {assertion['path']}\")\n for unexpected in assertion.get(\"notContains\", []):\n unexpected = unexpected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if unexpected in content:\n raise AssertionError(f\"Unexpected content is present in {assertion['path']}\")\nPY\n```" + }, + "description": "@code verify the authored workspace file existence and content assertions without logging file contents.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_checkWorkspaceFiles_verify_c1d26615d_2_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:checks", + "assertion:file", + "step_retry_timeout:120" + ] + }, + { + "step_id": "step_checkWorkspaceFiles_verify_c1d26615d_2_3", + "agent": "code", + "tool": "", + "parameters": { + "sample": "=== Generated Script ===\nLanguage: bash\n\n```bash\nset -euo pipefail\nPROJECT_DIR=\"/home/vscode/AgentsToolkitProjects/${{var:app_name}}\" ASSERTIONS_B64=\"W3sicGF0aCI6InNyYy90b29scy9nZXRXZWF0aGVyVG9vbC5qcyIsImV4aXN0cyI6dHJ1ZSwiY29udGFpbnMiOltdLCJub3RDb250YWlucyI6W119XQ==\" python3 - <<'PY'\nimport base64\nimport json\nimport os\nfrom pathlib import Path\n\nproject = Path(os.environ[\"PROJECT_DIR\"]).resolve()\nassertions = json.loads(base64.b64decode(os.environ[\"ASSERTIONS_B64\"]).decode(\"utf-8\"))\nfor assertion in assertions:\n target = (project / assertion[\"path\"]).resolve()\n try:\n target.relative_to(project)\n except ValueError as error:\n raise AssertionError(\"File assertion escaped the project directory\") from error\n exists = target.is_file()\n if exists != assertion[\"exists\"]:\n raise AssertionError(f\"Unexpected file existence for {assertion['path']}\")\n if not exists:\n continue\n content = target.read_text(encoding=\"utf-8\")\n for expected in assertion.get(\"contains\", []):\n expected = expected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if expected not in content:\n raise AssertionError(f\"Expected content is absent from {assertion['path']}\")\n for unexpected in assertion.get(\"notContains\", []):\n unexpected = unexpected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if unexpected in content:\n raise AssertionError(f\"Unexpected content is present in {assertion['path']}\")\nPY\n```" + }, + "description": "@code verify the authored workspace file existence and content assertions without logging file contents.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_checkWorkspaceFiles_verify_c1d26615d_2_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:checks", + "assertion:file", + "step_retry_timeout:120" + ] + }, + { + "step_id": "step_checkWorkspaceFiles_verify_c1d26615d_2_4", + "agent": "code", + "tool": "", + "parameters": { + "sample": "=== Generated Script ===\nLanguage: bash\n\n```bash\nset -euo pipefail\nPROJECT_DIR=\"/home/vscode/AgentsToolkitProjects/${{var:app_name}}\" ASSERTIONS_B64=\"W3sicGF0aCI6InBhY2thZ2UuanNvbiIsImV4aXN0cyI6dHJ1ZSwiY29udGFpbnMiOlsiXCJzdGFydFwiIiwiXCJkZXY6dGVhbXNmeFwiIl0sIm5vdENvbnRhaW5zIjpbXX1d\" python3 - <<'PY'\nimport base64\nimport json\nimport os\nfrom pathlib import Path\n\nproject = Path(os.environ[\"PROJECT_DIR\"]).resolve()\nassertions = json.loads(base64.b64decode(os.environ[\"ASSERTIONS_B64\"]).decode(\"utf-8\"))\nfor assertion in assertions:\n target = (project / assertion[\"path\"]).resolve()\n try:\n target.relative_to(project)\n except ValueError as error:\n raise AssertionError(\"File assertion escaped the project directory\") from error\n exists = target.is_file()\n if exists != assertion[\"exists\"]:\n raise AssertionError(f\"Unexpected file existence for {assertion['path']}\")\n if not exists:\n continue\n content = target.read_text(encoding=\"utf-8\")\n for expected in assertion.get(\"contains\", []):\n expected = expected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if expected not in content:\n raise AssertionError(f\"Expected content is absent from {assertion['path']}\")\n for unexpected in assertion.get(\"notContains\", []):\n unexpected = unexpected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if unexpected in content:\n raise AssertionError(f\"Unexpected content is present in {assertion['path']}\")\nPY\n```" + }, + "description": "@code verify the authored workspace file existence and content assertions without logging file contents.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_checkWorkspaceFiles_verify_c1d26615d_2_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:checks", + "assertion:file", + "step_retry_timeout:120" + ] + }, + { + "step_id": "step_checkWorkspaceFiles_verify_c1d26615d_2_5", + "agent": "code", + "tool": "", + "parameters": { + "sample": "=== Generated Script ===\nLanguage: bash\n\n```bash\nset -euo pipefail\nPROJECT_DIR=\"/home/vscode/AgentsToolkitProjects/${{var:app_name}}\" ASSERTIONS_B64=\"W3sicGF0aCI6InNyYy9pbmRleC50cyIsImV4aXN0cyI6ZmFsc2UsImNvbnRhaW5zIjpbXSwibm90Q29udGFpbnMiOltdfV0=\" python3 - <<'PY'\nimport base64\nimport json\nimport os\nfrom pathlib import Path\n\nproject = Path(os.environ[\"PROJECT_DIR\"]).resolve()\nassertions = json.loads(base64.b64decode(os.environ[\"ASSERTIONS_B64\"]).decode(\"utf-8\"))\nfor assertion in assertions:\n target = (project / assertion[\"path\"]).resolve()\n try:\n target.relative_to(project)\n except ValueError as error:\n raise AssertionError(\"File assertion escaped the project directory\") from error\n exists = target.is_file()\n if exists != assertion[\"exists\"]:\n raise AssertionError(f\"Unexpected file existence for {assertion['path']}\")\n if not exists:\n continue\n content = target.read_text(encoding=\"utf-8\")\n for expected in assertion.get(\"contains\", []):\n expected = expected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if expected not in content:\n raise AssertionError(f\"Expected content is absent from {assertion['path']}\")\n for unexpected in assertion.get(\"notContains\", []):\n unexpected = unexpected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if unexpected in content:\n raise AssertionError(f\"Unexpected content is present in {assertion['path']}\")\nPY\n```" + }, + "description": "@code verify the authored workspace file existence and content assertions without logging file contents.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_checkWorkspaceFiles_verify_c1d26615d_2_4" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:checks", + "assertion:file", + "step_retry_timeout:120" + ] + }, + { + "step_id": "step_executeCommand_open_c1d26615d_3_1", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "f1" + }, + "description": "Press the F1 key to open the Command Palette in Visual Studio Code.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_checkWorkspaceFiles_verify_c1d26615d_2_5" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertPalette_c1d26615d_3_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Visual Studio Code Command Palette is visible with a > character in its input box and is ready to accept a command search.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_open_c1d26615d_3_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_filter_c1d26615d_3_1", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "View: Show Microsoft 365 Agents Toolkit" + }, + "description": "Type the resolved command title into the active Command Palette.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertPalette_c1d26615d_3_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertCommand_c1d26615d_3_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Command Palette input box reads >View: Show Microsoft 365 Agents Toolkit and the highlighted command listed under it is titled View: Show Microsoft 365 Agents Toolkit.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_filter_c1d26615d_3_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_execute_c1d26615d_3_1", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to execute the selected Command Palette command.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertCommand_c1d26615d_3_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_signInAzure_assertOption_c1d26615d_3_2", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the ACCOUNTS section of the side bar lists an entry labeled Sign in to Azure.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_execute_c1d26615d_3_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:authentication", + "account:azure", + "entry_state:toolkit-side-bar-visible", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_signInAzure_selectOption_c1d26615d_3_2", + "agent": "interaction", + "tool": "click", + "parameters": { + "button": "left", + "x": 165, + "y": 127 + }, + "description": "Click the \"Sign in to Azure\" entry in the ACCOUNTS section of the side bar.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInAzure_assertOption_c1d26615d_3_2" + ], + "preconditions": [ + "dhash:165:127:16:5:5819353567ef55aa", + "dhash:165:127:96:5:2cd1259b9b941a6a", + "dhash:165:127:0:10:a2942223a3222421" + ], + "postconditions": [], + "tags": [ + "component:authentication", + "account:azure" + ] + }, + { + "step_id": "step_signInAzure_confirmSignIn_c1d26615d_3_2", + "agent": "interaction", + "tool": "click", + "parameters": { + "button": "left", + "x": 534, + "y": 98 + }, + "description": "Click the \"Sign in\" button on the Microsoft authentication popup in Visual Studio Code to proceed with Azure authorization for the Microsoft 365 Agents Toolkit.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInAzure_selectOption_c1d26615d_3_2" + ], + "preconditions": [ + "dhash:534:98:16:5:554a54555555468f", + "dhash:534:98:96:5:0002740b0a700800", + "dhash:534:98:0:10:12322e2323232421" + ], + "postconditions": [], + "tags": [ + "component:authentication", + "account:azure" + ] + }, + { + "step_id": "step_signInAzure_allow_c1d26615d_3_2", + "agent": "interaction", + "tool": "click", + "parameters": { + "button": "left", + "x": 457, + "y": 96 + }, + "description": "Click the \"Allow\" button in the Microsoft 365 sign-in prompt to authorize the extension \"Microsoft 365 Agents Toolkit\" within Visual Studio Code.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInAzure_confirmSignIn_c1d26615d_3_2" + ], + "preconditions": [ + "dhash:457:96:16:5:524d5552564cb3ca", + "dhash:457:96:96:5:0004609c0c600400", + "dhash:457:96:0:10:d2322e2323232421" + ], + "postconditions": [], + "tags": [ + "component:authentication", + "account:azure" + ] + }, + { + "step_id": "step_signInAzure_focusAccount_c1d26615d_3_2", + "agent": "interaction", + "tool": "click", + "parameters": { + "button": "left", + "x": 432, + "y": 327 + }, + "description": "Click on the \"Email, phone, or Skype\" input field in the Microsoft sign-in dialog on the login.microsoftonline.com webpage to activate text entry.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInAzure_allow_c1d26615d_3_2" + ], + "preconditions": [ + "dhash:432:327:16:5:114c134b4a13b2cc", + "dhash:432:327:96:5:686000a2a95500cb", + "dhash:432:327:0:10:1361717965617935" + ], + "postconditions": [], + "tags": [ + "component:authentication", + "account:azure", + "precondition_wait_timeout: 60" + ] + }, + { + "step_id": "step_signInAzure_typeAccount_c1d26615d_3_2", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "${{env:AZURE_ACCOUNT_NAME}}" + }, + "description": "Enter the resolved Azure account name into the email or username input field on the Microsoft Sign in page.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInAzure_focusAccount_c1d26615d_3_2" + ], + "preconditions": [ + "dhash:512:384:0:20:1b28d0d9e7e4dae4" + ], + "postconditions": [], + "tags": [ + "component:authentication", + "account:azure", + "precondition_wait_timeout: 60" + ] + }, + { + "step_id": "step_signInAzure_next_c1d26615d_3_2", + "agent": "interaction", + "tool": "click", + "parameters": { + "button": "left", + "x": 631, + "y": 462 + }, + "description": "Click the \"Next\" button on the Microsoft sign-in page to continue Azure authentication.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInAzure_typeAccount_c1d26615d_3_2" + ], + "preconditions": [ + "dhash:631:462:16:5:0000000091000000", + "dhash:631:462:96:5:000000004e31314e", + "dhash:631:462:0:10:1392f0dac6e6d8e4" + ], + "postconditions": [], + "tags": [ + "component:authentication", + "account:azure", + "ocr:true" + ] + }, + { + "step_id": "step_signInAzure_typePassword_c1d26615d_3_2", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "${{secret:AZURE_ACCOUNT_PASSWORD}}" + }, + "description": "Type the resolved Azure account password into the Password field on the Microsoft login page.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInAzure_next_c1d26615d_3_2" + ], + "preconditions": [ + "dhash:512:384:0:20:1908f0d9d1e6e6e4" + ], + "postconditions": [], + "tags": [ + "component:authentication", + "account:azure", + "precondition_wait_timeout: 60", + "delay:5" + ] + }, + { + "step_id": "step_signInAzure_submit_c1d26615d_3_2", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter in the password field on the Microsoft login page to submit the Azure credentials.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInAzure_typePassword_c1d26615d_3_2" + ], + "preconditions": [ + "dhash:512:384:0:20:1908f0d9d1e6e6e4" + ], + "postconditions": [], + "tags": [ + "component:authentication", + "account:azure", + "delay: 3" + ] + }, + { + "step_id": "step_signInAzure_closeBrowser_c1d26615d_3_2", + "agent": "interaction", + "tool": "click", + "parameters": { + "button": "left", + "x": 991, + "y": 18 + }, + "description": "Click the red close (X) button in the top-right corner of the Google Chrome window to close the Visual Studio Code sign-in confirmation page.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInAzure_submit_c1d26615d_3_2" + ], + "preconditions": [ + "dhash:991:18:16:5:b020624245454242", + "dhash:991:18:96:5:629393936a903232", + "dhash:991:18:0:10:0021410169414141" + ], + "postconditions": [], + "tags": [ + "component:authentication", + "account:azure", + "delay: 3" + ] + }, + { + "step_id": "step_signInAzure_assertReady_c1d26615d_3_2", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion there's ${{env:AZURE_ACCOUNT_NAME}} in the \"ACCOUNTS\" section", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInAzure_closeBrowser_c1d26615d_3_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:authentication", + "account:azure", + "readiness:account-visible", + "step_retry_timeout: 180" + ] + }, + { + "step_id": "step_executeCommand_open_c1d26615d_4_1", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "f1" + }, + "description": "Press the F1 key to open the Command Palette in Visual Studio Code.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInAzure_assertReady_c1d26615d_3_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertPalette_c1d26615d_4_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Visual Studio Code Command Palette is visible with a > character in its input box and is ready to accept a command search.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_open_c1d26615d_4_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_filter_c1d26615d_4_1", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "View: Show Microsoft 365 Agents Toolkit" + }, + "description": "Type the resolved command title into the active Command Palette.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertPalette_c1d26615d_4_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertCommand_c1d26615d_4_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Command Palette input box reads >View: Show Microsoft 365 Agents Toolkit and the highlighted command listed under it is titled View: Show Microsoft 365 Agents Toolkit.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_filter_c1d26615d_4_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_execute_c1d26615d_4_1", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to execute the selected Command Palette command.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertCommand_c1d26615d_4_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_signInM365FromPicker_assertOption_c1d26615d_4_2", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the ACCOUNTS section of the side bar lists an entry whose label begins with Sign in to Microsoft.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_execute_c1d26615d_4_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:authentication", + "account:m365", + "entry_state:toolkit-side-bar-visible", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_signInM365FromPicker_selectOption_c1d26615d_4_2", + "agent": "interaction", + "tool": "click", + "parameters": { + "button": "left", + "x": 213, + "y": 102 + }, + "description": "Click the entry whose label begins with \"Sign in to Microsoft\" in the ACCOUNTS section of the side bar.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInM365FromPicker_assertOption_c1d26615d_4_2" + ], + "preconditions": [ + "dhash:213:102:16:5:9c63d67674d4c718", + "dhash:213:102:96:5:8c512758d92c2cce", + "dhash:213:102:0:10:92c86223a3622421" + ], + "postconditions": [], + "tags": [ + "component:authentication", + "account:m365" + ] + }, + { + "step_id": "step_signInM365FromPicker_confirmSignIn_c1d26615d_4_2", + "agent": "interaction", + "tool": "click", + "parameters": { + "button": "left", + "x": 762, + "y": 97 + }, + "description": "Click the \"Sign in\" button within the Microsoft 365 developer sandbox modal.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInM365FromPicker_selectOption_c1d26615d_4_2" + ], + "preconditions": [ + "dhash:762:97:16:5:24b1a72ba9aba343", + "dhash:762:97:96:5:0008304b0f344900", + "dhash:762:97:0:10:9c68332223232421" + ], + "postconditions": [], + "tags": [ + "component:authentication", + "account:m365" + ] + }, + { + "step_id": "step_signInM365FromPicker_useAnotherAccount_c1d26615d_4_2", + "agent": "interaction", + "tool": "click", + "parameters": { + "button": "left", + "x": 447, + "y": 487 + }, + "description": "Click the \"Use another account\" option on the Microsoft \"Pick an account\" login screen in Google Chrome.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInM365FromPicker_confirmSignIn_c1d26615d_4_2" + ], + "preconditions": [ + "dhash:447:487:16:5:ac534b4aaaaa6a15", + "dhash:447:487:96:5:0100228d15a20000", + "dhash:447:487:0:10:1312e8d89ed6e6e4" + ], + "postconditions": [], + "tags": [ + "component:authentication", + "account:m365", + "precondition_wait_timeout: 60" + ] + }, + { + "step_id": "step_signInM365FromPicker_typeAccount_c1d26615d_4_2", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "${{env:M365_ACCOUNT_NAME}}" + }, + "description": "Enter the resolved Microsoft 365 account name into the email or username input field the account picker opened.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInM365FromPicker_useAnotherAccount_c1d26615d_4_2" + ], + "preconditions": [ + "dhash:512:384:0:20:1392f8d8c6e6dae4" + ], + "postconditions": [], + "tags": [ + "component:authentication", + "account:m365", + "delay: 3" + ] + }, + { + "step_id": "step_signInM365FromPicker_next_c1d26615d_4_2", + "agent": "interaction", + "tool": "click", + "parameters": { + "button": "left", + "x": 655, + "y": 505 + }, + "description": "Click the blue \"Next\" button on the Microsoft sign-in page, confirming the entered email address for login.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInM365FromPicker_typeAccount_c1d26615d_4_2" + ], + "preconditions": [ + "dhash:655:505:16:5:0000000080400020", + "dhash:655:505:96:5:0000408bcb4b0000", + "dhash:655:505:0:10:1392f8d8c7e6dae4" + ], + "postconditions": [], + "tags": [ + "component:authentication", + "account:m365", + "delay:3" + ] + }, + { + "step_id": "step_signInM365FromPicker_typePassword_c1d26615d_4_2", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "${{secret:M365_ACCOUNT_PASSWORD}}" + }, + "description": "Type the resolved Microsoft 365 account password into the Password field on the Microsoft login page.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInM365FromPicker_next_c1d26615d_4_2" + ], + "preconditions": [ + "dhash:512:384:0:20:1392e8d8d9f6e6e4" + ], + "postconditions": [], + "tags": [ + "component:authentication", + "account:m365", + "delay: 3" + ] + }, + { + "step_id": "step_signInM365FromPicker_submit_c1d26615d_4_2", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to submit the Microsoft 365 login form from the password entry screen.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInM365FromPicker_typePassword_c1d26615d_4_2" + ], + "preconditions": [ + "dhash:512:384:0:20:1392e8d8d9f6e6e4" + ], + "postconditions": [], + "tags": [ + "component:authentication", + "account:m365", + "delay: 3" + ] + }, + { + "step_id": "step_signInM365FromPicker_closeBrowser_c1d26615d_4_2", + "agent": "interaction", + "tool": "click", + "parameters": { + "button": "left", + "x": 1008, + "y": 19 + }, + "description": "Click the \"Close\" button (red cross icon) in the browser tab bar to close the \"M365 Account - Sign In\" page.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInM365FromPicker_submit_c1d26615d_4_2" + ], + "preconditions": [ + "dhash:1008:19:16:5:a322c95a325ac922", + "dhash:1008:19:96:5:926363639200c6c4", + "dhash:1008:19:0:10:1312094769614541" + ], + "postconditions": [], + "tags": [ + "component:authentication", + "account:m365", + "delay: 3" + ] + }, + { + "step_id": "step_signInM365FromPicker_assertReady_c1d26615d_4_2", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion there's ${{env:M365_ACCOUNT_NAME}} in the \"ACCOUNTS\" section", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInM365FromPicker_closeBrowser_c1d26615d_4_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:authentication", + "account:m365", + "readiness:account-visible", + "step_retry_timeout: 180" + ] + }, + { + "step_id": "step_executeCommand_open_c1d26615d_5_1", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "f1" + }, + "description": "Press the F1 key to open the Command Palette in Visual Studio Code.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInM365FromPicker_assertReady_c1d26615d_4_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertPalette_c1d26615d_5_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Visual Studio Code Command Palette is visible with a > character in its input box and is ready to accept a command search.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_open_c1d26615d_5_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_filter_c1d26615d_5_1", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Notifications: Clear All Notifications" + }, + "description": "Type the resolved command title into the active Command Palette.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertPalette_c1d26615d_5_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertCommand_c1d26615d_5_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Command Palette input box reads >Notifications: Clear All Notifications and the highlighted command listed under it is titled Notifications: Clear All Notifications.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_filter_c1d26615d_5_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_execute_c1d26615d_5_1", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to execute the selected Command Palette command.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertCommand_c1d26615d_5_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_open_c1d26615d_5_2", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "f1" + }, + "description": "Press the F1 key to open the Command Palette in Visual Studio Code.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_execute_c1d26615d_5_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertPalette_c1d26615d_5_2", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Visual Studio Code Command Palette is visible with a > character in its input box and is ready to accept a command search.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_open_c1d26615d_5_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_filter_c1d26615d_5_2", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Notifications: Show Notifications" + }, + "description": "Type the resolved command title into the active Command Palette.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertPalette_c1d26615d_5_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertCommand_c1d26615d_5_2", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Command Palette input box reads >Notifications: Show Notifications and the highlighted command listed under it is titled Notifications: Show Notifications.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_filter_c1d26615d_5_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_execute_c1d26615d_5_2", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to execute the selected Command Palette command.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertCommand_c1d26615d_5_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_open_c1d26615d_5_3", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "f1" + }, + "description": "Press the F1 key to open the Command Palette in Visual Studio Code.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_execute_c1d26615d_5_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertPalette_c1d26615d_5_3", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Visual Studio Code Command Palette is visible with a > character in its input box and is ready to accept a command search.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_open_c1d26615d_5_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_filter_c1d26615d_5_3", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Microsoft 365 Agents: Provision" + }, + "description": "Type the resolved command title into the active Command Palette.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertPalette_c1d26615d_5_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertCommand_c1d26615d_5_3", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Command Palette input box reads >Microsoft 365 Agents: Provision and the highlighted command listed under it is titled Microsoft 365 Agents: Provision.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_filter_c1d26615d_5_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_execute_c1d26615d_5_3", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to execute the selected Command Palette command.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertCommand_c1d26615d_5_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_singleSelect_assertQuestion_c1d26615d_5_4", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the active prompt titled Select a resource group is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_execute_c1d26615d_5_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_singleSelect_assertOptionsLoaded_c1d26615d_5_4", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the prompt titled Select a resource group has finished loading and lists at least one selectable option.", + "content_refs": [], + "timeout": 120, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertQuestion_c1d26615d_5_4" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 120" + ] + }, + { + "step_id": "step_singleSelect_filter_c1d26615d_5_4", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "+ New resource group" + }, + "description": "Type the resolved option label + New resource group into the active single-select prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertOptionsLoaded_c1d26615d_5_4" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_singleSelect_assertOption_c1d26615d_5_4", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the option + New resource group is visible and selectable in the filtered single-select prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_filter_c1d26615d_5_4" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_singleSelect_confirm_c1d26615d_5_4", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to confirm the filtered single-select option.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertOption_c1d26615d_5_4" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_textInput_assertQuestion_c1d26615d_5_5", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the active prompt titled New resource group name is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_confirm_c1d26615d_5_4" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_textInput_input_c1d26615d_5_5", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "${{var:app_name}}-rg" + }, + "description": "Type the authored value into the active text prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_assertQuestion_c1d26615d_5_5" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text" + ] + }, + { + "step_id": "step_textInput_confirm_c1d26615d_5_5", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to submit the accepted text input.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_input_c1d26615d_5_5" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text" + ] + }, + { + "step_id": "step_singleSelect_assertQuestion_c1d26615d_5_6", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the active prompt titled Location for the new resource group is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_confirm_c1d26615d_5_5" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_singleSelect_assertOptionsLoaded_c1d26615d_5_6", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the prompt titled Location for the new resource group has finished loading and lists at least one selectable option.", + "content_refs": [], + "timeout": 120, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertQuestion_c1d26615d_5_6" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 120" + ] + }, + { + "step_id": "step_singleSelect_filter_c1d26615d_5_6", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "${{env:RESOURCE_GROUP_REGION}}" + }, + "description": "Type the resolved option label ${{env:RESOURCE_GROUP_REGION}} into the active single-select prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertOptionsLoaded_c1d26615d_5_6" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_singleSelect_assertOption_c1d26615d_5_6", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the option ${{env:RESOURCE_GROUP_REGION}} is visible and selectable in the filtered single-select prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_filter_c1d26615d_5_6" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_singleSelect_confirm_c1d26615d_5_6", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to confirm the filtered single-select option.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertOption_c1d26615d_5_6" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_clickPrimaryAction_assertDialog_c1d26615d_5_7", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the dialog Costs may apply based on usage. Do you want to provision resources in dev environment using listed accounts? is visible with the primary action Provision.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_confirm_c1d26615d_5_6" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:dialog", + "action:click-primary", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_clickPrimaryAction_click_c1d26615d_5_7", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to activate the primary action Provision in the confirmed dialog.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_clickPrimaryAction_assertDialog_c1d26615d_5_7" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:dialog", + "action:click-primary" + ] + }, + { + "step_id": "step_assertNotificationContains_assert_c1d26615d_5_8", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion a visible Visual Studio Code notification contains provision stage executed successfully.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_clickPrimaryAction_click_c1d26615d_5_7" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:notifications", + "action:assert-contains", + "step_retry_timeout: 900" + ] + }, + { + "step_id": "step_executeCommand_open_c1d26615d_6_1", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "f1" + }, + "description": "Press the F1 key to open the Command Palette in Visual Studio Code.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_assertNotificationContains_assert_c1d26615d_5_8" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertPalette_c1d26615d_6_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Visual Studio Code Command Palette is visible with a > character in its input box and is ready to accept a command search.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_open_c1d26615d_6_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_filter_c1d26615d_6_1", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Notifications: Clear All Notifications" + }, + "description": "Type the resolved command title into the active Command Palette.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertPalette_c1d26615d_6_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertCommand_c1d26615d_6_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Command Palette input box reads >Notifications: Clear All Notifications and the highlighted command listed under it is titled Notifications: Clear All Notifications.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_filter_c1d26615d_6_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_execute_c1d26615d_6_1", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to execute the selected Command Palette command.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertCommand_c1d26615d_6_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_open_c1d26615d_6_2", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "f1" + }, + "description": "Press the F1 key to open the Command Palette in Visual Studio Code.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_execute_c1d26615d_6_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertPalette_c1d26615d_6_2", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Visual Studio Code Command Palette is visible with a > character in its input box and is ready to accept a command search.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_open_c1d26615d_6_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_filter_c1d26615d_6_2", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Notifications: Show Notifications" + }, + "description": "Type the resolved command title into the active Command Palette.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertPalette_c1d26615d_6_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertCommand_c1d26615d_6_2", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Command Palette input box reads >Notifications: Show Notifications and the highlighted command listed under it is titled Notifications: Show Notifications.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_filter_c1d26615d_6_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_execute_c1d26615d_6_2", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to execute the selected Command Palette command.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertCommand_c1d26615d_6_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_open_c1d26615d_6_3", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "f1" + }, + "description": "Press the F1 key to open the Command Palette in Visual Studio Code.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_execute_c1d26615d_6_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertPalette_c1d26615d_6_3", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Visual Studio Code Command Palette is visible with a > character in its input box and is ready to accept a command search.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_open_c1d26615d_6_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_filter_c1d26615d_6_3", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Microsoft 365 Agents: Deploy" + }, + "description": "Type the resolved command title into the active Command Palette.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertPalette_c1d26615d_6_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertCommand_c1d26615d_6_3", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Command Palette input box reads >Microsoft 365 Agents: Deploy and the highlighted command listed under it is titled Microsoft 365 Agents: Deploy.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_filter_c1d26615d_6_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_execute_c1d26615d_6_3", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to execute the selected Command Palette command.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertCommand_c1d26615d_6_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_clickPrimaryAction_assertDialog_c1d26615d_6_4", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the dialog Do you want to deploy resources in dev environment? is visible with the primary action Deploy.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_execute_c1d26615d_6_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:dialog", + "action:click-primary", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_clickPrimaryAction_click_c1d26615d_6_4", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to activate the primary action Deploy in the confirmed dialog.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_clickPrimaryAction_assertDialog_c1d26615d_6_4" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:dialog", + "action:click-primary" + ] + }, + { + "step_id": "step_assertNotificationContains_assert_c1d26615d_6_5", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion a visible Visual Studio Code notification contains actions in deploy stage executed successfully.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_clickPrimaryAction_click_c1d26615d_6_4" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:notifications", + "action:assert-contains", + "step_retry_timeout: 900" + ] + }, + { + "step_id": "step_executeCommand_open_c1d26615d_7_1", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "f1" + }, + "description": "Press the F1 key to open the Command Palette in Visual Studio Code.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_assertNotificationContains_assert_c1d26615d_6_5" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertPalette_c1d26615d_7_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Visual Studio Code Command Palette is visible with a > character in its input box and is ready to accept a command search.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_open_c1d26615d_7_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_filter_c1d26615d_7_1", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Debug: Select and Start Debugging" + }, + "description": "Type the resolved command title into the active Command Palette.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertPalette_c1d26615d_7_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertCommand_c1d26615d_7_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Command Palette input box reads >Debug: Select and Start Debugging and the highlighted command listed under it is titled Debug: Select and Start Debugging.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_filter_c1d26615d_7_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_execute_c1d26615d_7_1", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to execute the selected Command Palette command.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertCommand_c1d26615d_7_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_filterOption_filter_c1d26615d_7_2", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Launch Remote in Teams (Chrome)" + }, + "description": "Type the resolved option label into the active option picker.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_execute_c1d26615d_7_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_filterOption_assertOption_c1d26615d_7_2", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the option Launch Remote in Teams (Chrome) is visible and selectable in the filtered option picker.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_filterOption_filter_c1d26615d_7_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_filterOption_confirm_c1d26615d_7_2", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to confirm the filtered option.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_filterOption_assertOption_c1d26615d_7_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_browserM365PasswordSignIn_assertPassword_c1d26615d_7_3", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Microsoft sign-in page in Chrome names ${{env:M365_ACCOUNT_NAME}} and asks for that account's password.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_filterOption_confirm_c1d26615d_7_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:authentication", + "surface:browser", + "step_retry_timeout: 300" + ] + }, + { + "step_id": "step_browserM365PasswordSignIn_focusPassword_c1d26615d_7_3", + "agent": "interaction", + "tool": "click", + "parameters": { + "button": "left", + "x": 400, + "y": 405 + }, + "description": "Click the password input on the Microsoft sign-in page to move focus out of the browser address bar.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_browserM365PasswordSignIn_assertPassword_c1d26615d_7_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:authentication", + "surface:browser" + ] + }, + { + "step_id": "step_browserM365PasswordSignIn_enterPassword_c1d26615d_7_3", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "${{secret:M365_ACCOUNT_PASSWORD}}" + }, + "description": "Enter the registered Microsoft 365 password in the focused password input of the browser sign-in form.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_browserM365PasswordSignIn_focusPassword_c1d26615d_7_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:authentication", + "surface:browser" + ] + }, + { + "step_id": "step_browserM365PasswordSignIn_submitPassword_c1d26615d_7_3", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to submit the Microsoft 365 password.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_browserM365PasswordSignIn_enterPassword_c1d26615d_7_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:authentication", + "surface:browser" + ] + }, + { + "step_id": "step_browserM365PasswordSignIn_assertStaySignedIn_c1d26615d_7_3", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Microsoft Stay signed in question is visible with Yes focused.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_browserM365PasswordSignIn_submitPassword_c1d26615d_7_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:authentication", + "surface:browser", + "step_retry_timeout: 120" + ] + }, + { + "step_id": "step_browserM365PasswordSignIn_confirmStaySignedIn_c1d26615d_7_3", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to confirm staying signed in.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_browserM365PasswordSignIn_assertStaySignedIn_c1d26615d_7_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:authentication", + "surface:browser", + "delay: 30" + ] + }, + { + "step_id": "step_assertReady_assertReady_c1d26615d_7_4", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Microsoft Teams app details page for an app whose name starts with ${{var:app_name}} is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_browserM365PasswordSignIn_confirmStaySignedIn_c1d26615d_7_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:browser", + "action:assert-ready", + "step_retry_timeout: 180" + ] + }, + { + "step_id": "step_addAndOpenApp_assertAdd_c1d26615d_8_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the blue \"Add\" button exists.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_assertReady_assertReady_c1d26615d_7_4" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:browser", + "host_surface:teams", + "entry_state:add", + "step_retry_timeout: 180" + ] + }, + { + "step_id": "step_addAndOpenApp_add_c1d26615d_8_1", + "agent": "interaction", + "tool": "click", + "parameters": { + "button": "left", + "x": 288, + "y": 214 + }, + "description": "Click Add on the app details popup within the Microsoft Teams interface.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_addAndOpenApp_assertAdd_c1d26615d_8_1" + ], + "preconditions": [ + "dhash:288:214:16:5:05100a0511030b12", + "dhash:288:214:96:5:2616011c1c01005b", + "dhash:288:214:0:10:00b4b0d8f8fcf0d8" + ], + "postconditions": [], + "tags": [ + "component:browser", + "host_surface:teams", + "entry_state:add" + ] + }, + { + "step_id": "step_addAndOpenApp_assertAdded_c1d26615d_8_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the \"Added successfully!\" dialog and its Open button are visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_addAndOpenApp_add_c1d26615d_8_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:browser", + "host_surface:teams", + "entry_state:added", + "step_retry_timeout: 180" + ] + }, + { + "step_id": "step_addAndOpenApp_open_c1d26615d_8_1", + "agent": "interaction", + "tool": "click", + "parameters": { + "button": "left", + "x": 533, + "y": 508 + }, + "description": "Click Open in the Microsoft Teams Added successfully dialog.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_addAndOpenApp_assertAdded_c1d26615d_8_1" + ], + "preconditions": [ + "dhash:533:508:16:5:00987494ca4acacc", + "dhash:533:508:96:5:000058a48598e36b", + "dhash:533:508:0:10:1669696969696979" + ], + "postconditions": [], + "tags": [ + "component:browser", + "host_surface:teams", + "entry_state:added", + "precondition_wait_timeout: 120" + ] + }, + { + "step_id": "step_addAndOpenApp_assertReady_c1d26615d_8_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Microsoft Teams app details page for an app whose name starts with ${{var:app_name}} is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_addAndOpenApp_open_c1d26615d_8_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:browser", + "host_surface:teams", + "readiness:chat-ready", + "step_retry_timeout: 180" + ] + }, + { + "step_id": "step_sendTeamsMessage_assertInput_c1d26615d_9_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Teams \"Type a message\" input is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_addAndOpenApp_assertReady_c1d26615d_8_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:browser", + "host_surface:teams", + "entry_state:chat-ready", + "action:send-message", + "step_retry_timeout: 120" + ] + }, + { + "step_id": "step_sendTeamsMessage_focusInput_c1d26615d_9_1", + "agent": "interaction", + "tool": "click", + "parameters": { + "button": "left", + "x": 200, + "y": 712 + }, + "description": "Click the Teams \"Type a message\" input.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_sendTeamsMessage_assertInput_c1d26615d_9_1" + ], + "preconditions": [ + "dhash:200:712:16:5:258c421e0d2c2d1c", + "dhash:200:712:96:5:0020887362000200", + "dhash:200:712:0:10:24b4b08e8e8c81a1" + ], + "postconditions": [], + "tags": [ + "component:browser", + "host_surface:teams", + "entry_state:chat-ready", + "action:send-message" + ] + }, + { + "step_id": "step_sendTeamsMessage_type_c1d26615d_9_1", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "What is the weather in Seattle?" + }, + "description": "Type \"What is the weather in Seattle?\" into the Teams message input.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_sendTeamsMessage_focusInput_c1d26615d_9_1" + ], + "preconditions": [ + "dhash:512:384:0:20:24b4b08e8e8c80a9" + ], + "postconditions": [], + "tags": [ + "component:browser", + "host_surface:teams", + "entry_state:chat-ready", + "action:send-message" + ] + }, + { + "step_id": "step_sendTeamsMessage_send_c1d26615d_9_1", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to send the Teams message.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_sendTeamsMessage_type_c1d26615d_9_1" + ], + "preconditions": [ + "dhash:512:384:0:20:24b4b08e8e8c80b9" + ], + "postconditions": [], + "tags": [ + "component:browser", + "host_surface:teams", + "entry_state:chat-ready", + "action:send-message" + ] + }, + { + "step_id": "step_assertChatReplied_assert_c1d26615d_9_2", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the current assistant turn is complete and contains a non-empty response.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_sendTeamsMessage_send_c1d26615d_9_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:browser", + "action:assert-chat-response", + "expectation:replied", + "step_retry_timeout: 120" + ] + }, + { + "step_id": "step_assertChatContains_assert_c1d26615d_9_3", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the current assistant response contains \"Seattle\".", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_assertChatReplied_assert_c1d26615d_9_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:browser", + "action:assert-chat-response", + "expectation:contains", + "step_retry_timeout: 120" + ] + } + ], + "screenshots": {} +} diff --git a/packages/tests/vscuse/vscode-test-cases/plans/weather-agent--weather-js-openai-local-teams.json b/packages/tests/vscuse/vscode-test-cases/plans/weather-agent--weather-js-openai-local-teams.json new file mode 100644 index 00000000000..fd4a79f2fb9 --- /dev/null +++ b/packages/tests/vscuse/vscode-test-cases/plans/weather-agent--weather-js-openai-local-teams.json @@ -0,0 +1,2230 @@ +{ + "plan_metadata": { + "version": "1.1", + "plan_id": "plan_cbb1b917cee7", + "execution_context": { + "delay_between_steps": 1, + "stop_on_error": true, + "precondition_wait_timeout": 30, + "precondition_retry_interval": 1 + }, + "total_steps": 93, + "name": "weather-js-openai-local-teams", + "description": { + "owner": "", + "workitem": "SCN-CREATE-WEATHER-03", + "other": "" + }, + "execution_order": [ + "step_closeWelcomeOverlay_assertVisible_ce0ec2ba7_1_1", + "step_closeWelcomeOverlay_close_ce0ec2ba7_1_1", + "step_closeWelcomeOverlay_assertReady_ce0ec2ba7_1_1", + "step_executeCommand_open_ce0ec2ba7_1_2", + "step_executeCommand_assertPalette_ce0ec2ba7_1_2", + "step_executeCommand_filter_ce0ec2ba7_1_2", + "step_executeCommand_assertCommand_ce0ec2ba7_1_2", + "step_executeCommand_execute_ce0ec2ba7_1_2", + "step_assertToolkitViewSettled_assert_ce0ec2ba7_1_3", + "step_closeGetStartedEditor_assertActive_ce0ec2ba7_1_4", + "step_closeGetStartedEditor_close_ce0ec2ba7_1_4", + "step_closeGetStartedEditor_assertClosed_ce0ec2ba7_1_4", + "step_executeCommand_open_ce0ec2ba7_1_5", + "step_executeCommand_assertPalette_ce0ec2ba7_1_5", + "step_executeCommand_filter_ce0ec2ba7_1_5", + "step_executeCommand_assertCommand_ce0ec2ba7_1_5", + "step_executeCommand_execute_ce0ec2ba7_1_5", + "step_singleSelect_assertQuestion_ce0ec2ba7_1_6", + "step_singleSelect_assertOptionsLoaded_ce0ec2ba7_1_6", + "step_singleSelect_filter_ce0ec2ba7_1_6", + "step_singleSelect_assertOption_ce0ec2ba7_1_6", + "step_singleSelect_confirm_ce0ec2ba7_1_6", + "step_singleSelect_assertQuestion_ce0ec2ba7_1_7", + "step_singleSelect_assertOptionsLoaded_ce0ec2ba7_1_7", + "step_singleSelect_filter_ce0ec2ba7_1_7", + "step_singleSelect_assertOption_ce0ec2ba7_1_7", + "step_singleSelect_confirm_ce0ec2ba7_1_7", + "step_singleSelect_assertQuestion_ce0ec2ba7_1_8", + "step_singleSelect_assertOptionsLoaded_ce0ec2ba7_1_8", + "step_singleSelect_filter_ce0ec2ba7_1_8", + "step_singleSelect_assertOption_ce0ec2ba7_1_8", + "step_singleSelect_confirm_ce0ec2ba7_1_8", + "step_textInput_assertQuestion_ce0ec2ba7_1_9", + "step_textInput_input_ce0ec2ba7_1_9", + "step_textInput_confirm_ce0ec2ba7_1_9", + "step_singleSelect_assertQuestion_ce0ec2ba7_1_10", + "step_singleSelect_assertOptionsLoaded_ce0ec2ba7_1_10", + "step_singleSelect_filter_ce0ec2ba7_1_10", + "step_singleSelect_assertOption_ce0ec2ba7_1_10", + "step_singleSelect_confirm_ce0ec2ba7_1_10", + "step_confirmOption_assertPrompt_ce0ec2ba7_1_11", + "step_confirmOption_confirm_ce0ec2ba7_1_11", + "step_textInput_assertQuestion_ce0ec2ba7_1_12", + "step_textInput_input_ce0ec2ba7_1_12", + "step_textInput_confirm_ce0ec2ba7_1_12", + "step_assertProjectWindowReady_assert_ce0ec2ba7_1_13", + "step_checkWorkspaceFiles_verify_ce0ec2ba7_2_1", + "step_checkWorkspaceFiles_verify_ce0ec2ba7_2_2", + "step_checkWorkspaceFiles_verify_ce0ec2ba7_2_3", + "step_checkWorkspaceFiles_verify_ce0ec2ba7_2_4", + "step_checkWorkspaceFiles_verify_ce0ec2ba7_2_5", + "step_setLocalEnvironmentVariable_ce0ec2ba7_3_1", + "step_executeCommand_open_ce0ec2ba7_4_1", + "step_executeCommand_assertPalette_ce0ec2ba7_4_1", + "step_executeCommand_filter_ce0ec2ba7_4_1", + "step_executeCommand_assertCommand_ce0ec2ba7_4_1", + "step_executeCommand_execute_ce0ec2ba7_4_1", + "step_signInM365_assertOption_ce0ec2ba7_4_2", + "step_signInM365_selectOption_ce0ec2ba7_4_2", + "step_signInM365_confirmSignIn_ce0ec2ba7_4_2", + "step_signInM365_focusAccount_ce0ec2ba7_4_2", + "step_signInM365_typeAccount_ce0ec2ba7_4_2", + "step_signInM365_next_ce0ec2ba7_4_2", + "step_signInM365_typePassword_ce0ec2ba7_4_2", + "step_signInM365_submit_ce0ec2ba7_4_2", + "step_signInM365_closeBrowser_ce0ec2ba7_4_2", + "step_signInM365_assertReady_ce0ec2ba7_4_2", + "step_executeCommand_open_ce0ec2ba7_5_1", + "step_executeCommand_assertPalette_ce0ec2ba7_5_1", + "step_executeCommand_filter_ce0ec2ba7_5_1", + "step_executeCommand_assertCommand_ce0ec2ba7_5_1", + "step_executeCommand_execute_ce0ec2ba7_5_1", + "step_filterOption_filter_ce0ec2ba7_5_2", + "step_filterOption_assertOption_ce0ec2ba7_5_2", + "step_filterOption_confirm_ce0ec2ba7_5_2", + "step_browserM365PasswordSignIn_assertPassword_ce0ec2ba7_5_3", + "step_browserM365PasswordSignIn_focusPassword_ce0ec2ba7_5_3", + "step_browserM365PasswordSignIn_enterPassword_ce0ec2ba7_5_3", + "step_browserM365PasswordSignIn_submitPassword_ce0ec2ba7_5_3", + "step_browserM365PasswordSignIn_assertStaySignedIn_ce0ec2ba7_5_3", + "step_browserM365PasswordSignIn_confirmStaySignedIn_ce0ec2ba7_5_3", + "step_assertReady_assertReady_ce0ec2ba7_5_4", + "step_addAndOpenApp_assertAdd_ce0ec2ba7_6_1", + "step_addAndOpenApp_add_ce0ec2ba7_6_1", + "step_addAndOpenApp_assertAdded_ce0ec2ba7_6_1", + "step_addAndOpenApp_open_ce0ec2ba7_6_1", + "step_addAndOpenApp_assertReady_ce0ec2ba7_6_1", + "step_sendTeamsMessage_assertInput_ce0ec2ba7_7_1", + "step_sendTeamsMessage_focusInput_ce0ec2ba7_7_1", + "step_sendTeamsMessage_type_ce0ec2ba7_7_1", + "step_sendTeamsMessage_send_ce0ec2ba7_7_1", + "step_assertChatReplied_assert_ce0ec2ba7_7_2", + "step_assertChatContains_assert_ce0ec2ba7_7_3" + ], + "tags": [ + "case_id:weather-js-openai-local-teams", + "scenario_id:SCN-CREATE-WEATHER-03", + "template_id:weather-agent", + "gate:pr" + ] + }, + "steps": [ + { + "step_id": "step_closeWelcomeOverlay_assertVisible_ce0ec2ba7_1_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the startup \"Welcome to VS Code\" sign-in overlay is visible and its Close button is available.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:initialization", + "initialization:closeWelcomeOverlay", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_closeWelcomeOverlay_close_ce0ec2ba7_1_1", + "agent": "interaction", + "tool": "click", + "parameters": { + "button": "left", + "x": 952, + "y": 128 + }, + "description": "Click the Close button on the startup Welcome sign-in overlay.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_closeWelcomeOverlay_assertVisible_ce0ec2ba7_1_1" + ], + "preconditions": [ + "dhash:952:128:16:5:255266345964665b", + "dhash:952:128:96:5:16100c10100c1404", + "dhash:952:128:0:10:2592eae0f08e8621" + ], + "postconditions": [], + "tags": [ + "component:initialization", + "initialization:closeWelcomeOverlay", + "force_run:true" + ] + }, + { + "step_id": "step_closeWelcomeOverlay_assertReady_ce0ec2ba7_1_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the startup sign-in overlay is no longer visible and the VS Code workbench is ready.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_closeWelcomeOverlay_close_ce0ec2ba7_1_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:initialization", + "initialization:closeWelcomeOverlay", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_open_ce0ec2ba7_1_2", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "f1" + }, + "description": "Press the F1 key to open the Command Palette in Visual Studio Code.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_closeWelcomeOverlay_assertReady_ce0ec2ba7_1_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertPalette_ce0ec2ba7_1_2", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Visual Studio Code Command Palette is visible with a > character in its input box and is ready to accept a command search.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_open_ce0ec2ba7_1_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_filter_ce0ec2ba7_1_2", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Microsoft 365 Agents Toolkit: Focus on Microsoft 365 Agents Toolkit View" + }, + "description": "Type the resolved command title into the active Command Palette.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertPalette_ce0ec2ba7_1_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertCommand_ce0ec2ba7_1_2", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Command Palette input box reads >Microsoft 365 Agents Toolkit: Focus on Microsoft 365 Agents Toolkit View and the highlighted command listed under it is titled Microsoft 365 Agents Toolkit: Focus on Microsoft 365 Agents Toolkit View.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_filter_ce0ec2ba7_1_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_execute_ce0ec2ba7_1_2", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to execute the selected Command Palette command.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertCommand_ce0ec2ba7_1_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_assertToolkitViewSettled_assert_ce0ec2ba7_1_3", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Microsoft 365 Agents Toolkit view is open in the side bar and an editor tab labeled Welcome showing the Build a Declarative Agent walkthrough is open in the editor area.", + "content_refs": [], + "timeout": 120, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_execute_ce0ec2ba7_1_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:initialization", + "initialization:assertToolkitViewSettled", + "step_retry_timeout: 120" + ] + }, + { + "step_id": "step_closeGetStartedEditor_assertActive_ce0ec2ba7_1_4", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the editor tab labeled Welcome showing the Build a Declarative Agent walkthrough is the active editor tab in the Visual Studio Code editor area.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_assertToolkitViewSettled_assert_ce0ec2ba7_1_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:initialization", + "initialization:closeGetStartedEditor", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_closeGetStartedEditor_close_ce0ec2ba7_1_4", + "agent": "interaction", + "tool": "keyboard_shortcut", + "parameters": { + "keys": "ctrl+w" + }, + "description": "Press Ctrl+W to close the Welcome editor tab.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_closeGetStartedEditor_assertActive_ce0ec2ba7_1_4" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:initialization", + "initialization:closeGetStartedEditor" + ] + }, + { + "step_id": "step_closeGetStartedEditor_assertClosed_ce0ec2ba7_1_4", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion no editor tab is open in the Visual Studio Code editor area.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_closeGetStartedEditor_close_ce0ec2ba7_1_4" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:initialization", + "initialization:closeGetStartedEditor", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_open_ce0ec2ba7_1_5", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "f1" + }, + "description": "Press the F1 key to open the Command Palette in Visual Studio Code.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_closeGetStartedEditor_assertClosed_ce0ec2ba7_1_4" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertPalette_ce0ec2ba7_1_5", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Visual Studio Code Command Palette is visible with a > character in its input box and is ready to accept a command search.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_open_ce0ec2ba7_1_5" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_filter_ce0ec2ba7_1_5", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Microsoft 365 Agents: Create New Agent/App" + }, + "description": "Type the resolved command title into the active Command Palette.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertPalette_ce0ec2ba7_1_5" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertCommand_ce0ec2ba7_1_5", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Command Palette input box reads >Microsoft 365 Agents: Create New Agent/App and the highlighted command listed under it is titled Microsoft 365 Agents: Create New Agent/App.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_filter_ce0ec2ba7_1_5" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_execute_ce0ec2ba7_1_5", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to execute the selected Command Palette command.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertCommand_ce0ec2ba7_1_5" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_singleSelect_assertQuestion_ce0ec2ba7_1_6", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the active prompt titled New Project is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_execute_ce0ec2ba7_1_5" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_singleSelect_assertOptionsLoaded_ce0ec2ba7_1_6", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the prompt titled New Project has finished loading and lists at least one selectable option.", + "content_refs": [], + "timeout": 120, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertQuestion_ce0ec2ba7_1_6" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 120" + ] + }, + { + "step_id": "step_singleSelect_filter_ce0ec2ba7_1_6", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Custom Engine Agent" + }, + "description": "Type the resolved option label Custom Engine Agent into the active single-select prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertOptionsLoaded_ce0ec2ba7_1_6" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_singleSelect_assertOption_ce0ec2ba7_1_6", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the option Custom Engine Agent is visible and selectable in the filtered single-select prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_filter_ce0ec2ba7_1_6" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_singleSelect_confirm_ce0ec2ba7_1_6", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to confirm the filtered single-select option.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertOption_ce0ec2ba7_1_6" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_singleSelect_assertQuestion_ce0ec2ba7_1_7", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the active prompt titled App Features Using Microsoft 365 Agents SDK is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_confirm_ce0ec2ba7_1_6" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_singleSelect_assertOptionsLoaded_ce0ec2ba7_1_7", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the prompt titled App Features Using Microsoft 365 Agents SDK has finished loading and lists at least one selectable option.", + "content_refs": [], + "timeout": 120, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertQuestion_ce0ec2ba7_1_7" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 120" + ] + }, + { + "step_id": "step_singleSelect_filter_ce0ec2ba7_1_7", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Weather Agent" + }, + "description": "Type the resolved option label Weather Agent into the active single-select prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertOptionsLoaded_ce0ec2ba7_1_7" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_singleSelect_assertOption_ce0ec2ba7_1_7", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the option Weather Agent is visible and selectable in the filtered single-select prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_filter_ce0ec2ba7_1_7" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_singleSelect_confirm_ce0ec2ba7_1_7", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to confirm the filtered single-select option.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertOption_ce0ec2ba7_1_7" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_singleSelect_assertQuestion_ce0ec2ba7_1_8", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the active prompt titled Service for Large Language Model (LLM) is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_confirm_ce0ec2ba7_1_7" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_singleSelect_assertOptionsLoaded_ce0ec2ba7_1_8", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the prompt titled Service for Large Language Model (LLM) has finished loading and lists at least one selectable option.", + "content_refs": [], + "timeout": 120, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertQuestion_ce0ec2ba7_1_8" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 120" + ] + }, + { + "step_id": "step_singleSelect_filter_ce0ec2ba7_1_8", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "OpenAI" + }, + "description": "Type the resolved option label OpenAI into the active single-select prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertOptionsLoaded_ce0ec2ba7_1_8" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_singleSelect_assertOption_ce0ec2ba7_1_8", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the option OpenAI is visible and selectable in the filtered single-select prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_filter_ce0ec2ba7_1_8" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_singleSelect_confirm_ce0ec2ba7_1_8", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to confirm the filtered single-select option.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertOption_ce0ec2ba7_1_8" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_textInput_assertQuestion_ce0ec2ba7_1_9", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the active prompt titled OpenAI Key is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_confirm_ce0ec2ba7_1_8" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_textInput_input_ce0ec2ba7_1_9", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "${{secret:AZURE_OPENAI_API_KEY}}" + }, + "description": "Type the authored value into the active text prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_assertQuestion_ce0ec2ba7_1_9" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text" + ] + }, + { + "step_id": "step_textInput_confirm_ce0ec2ba7_1_9", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to submit the accepted text input.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_input_ce0ec2ba7_1_9" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text" + ] + }, + { + "step_id": "step_singleSelect_assertQuestion_ce0ec2ba7_1_10", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the active prompt titled Programming Language is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_confirm_ce0ec2ba7_1_9" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_singleSelect_assertOptionsLoaded_ce0ec2ba7_1_10", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the prompt titled Programming Language has finished loading and lists at least one selectable option.", + "content_refs": [], + "timeout": 120, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertQuestion_ce0ec2ba7_1_10" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 120" + ] + }, + { + "step_id": "step_singleSelect_filter_ce0ec2ba7_1_10", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "JavaScript" + }, + "description": "Type the resolved option label JavaScript into the active single-select prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertOptionsLoaded_ce0ec2ba7_1_10" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_singleSelect_assertOption_ce0ec2ba7_1_10", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the option JavaScript is visible and selectable in the filtered single-select prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_filter_ce0ec2ba7_1_10" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_singleSelect_confirm_ce0ec2ba7_1_10", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to confirm the filtered single-select option.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertOption_ce0ec2ba7_1_10" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_confirmOption_assertPrompt_ce0ec2ba7_1_11", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the active prompt titled Workspace Folder is visible and the option Default folder is focused.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_confirm_ce0ec2ba7_1_10" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "interaction:key-press", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_confirmOption_confirm_ce0ec2ba7_1_11", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to confirm the Default folder option.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_confirmOption_assertPrompt_ce0ec2ba7_1_11" + ], + "preconditions": [ + "dhash:364:74:16:5:08056a9a5d5516b6", + "dhash:364:74:96:5:44232286e2168e01", + "dhash:364:74:0:10:f0b09494b2717075" + ], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "interaction:key-press" + ] + }, + { + "step_id": "step_textInput_assertQuestion_ce0ec2ba7_1_12", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the active prompt titled Application Name is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_confirmOption_confirm_ce0ec2ba7_1_11" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_textInput_input_ce0ec2ba7_1_12", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "${{var:app_name:vscuse_app_#####}}" + }, + "description": "Type the authored value into the active text prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_assertQuestion_ce0ec2ba7_1_12" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text" + ] + }, + { + "step_id": "step_textInput_confirm_ce0ec2ba7_1_12", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to submit the accepted text input.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_input_ce0ec2ba7_1_12" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text" + ] + }, + { + "step_id": "step_assertProjectWindowReady_assert_ce0ec2ba7_1_13", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Preview README.md editor tab is open in Visual Studio Code.", + "content_refs": [], + "timeout": 60, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_confirm_ce0ec2ba7_1_12" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:initialization", + "initialization:assertProjectWindowReady", + "step_retry_timeout: 60" + ] + }, + { + "step_id": "step_checkWorkspaceFiles_verify_ce0ec2ba7_2_1", + "agent": "code", + "tool": "", + "parameters": { + "sample": "=== Generated Script ===\nLanguage: bash\n\n```bash\nset -euo pipefail\nPROJECT_DIR=\"/home/vscode/AgentsToolkitProjects/${{var:app_name}}\" ASSERTIONS_B64=\"W3sicGF0aCI6InNyYy9pbmRleC5qcyIsImV4aXN0cyI6dHJ1ZSwiY29udGFpbnMiOltdLCJub3RDb250YWlucyI6W119XQ==\" python3 - <<'PY'\nimport base64\nimport json\nimport os\nfrom pathlib import Path\n\nproject = Path(os.environ[\"PROJECT_DIR\"]).resolve()\nassertions = json.loads(base64.b64decode(os.environ[\"ASSERTIONS_B64\"]).decode(\"utf-8\"))\nfor assertion in assertions:\n target = (project / assertion[\"path\"]).resolve()\n try:\n target.relative_to(project)\n except ValueError as error:\n raise AssertionError(\"File assertion escaped the project directory\") from error\n exists = target.is_file()\n if exists != assertion[\"exists\"]:\n raise AssertionError(f\"Unexpected file existence for {assertion['path']}\")\n if not exists:\n continue\n content = target.read_text(encoding=\"utf-8\")\n for expected in assertion.get(\"contains\", []):\n expected = expected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if expected not in content:\n raise AssertionError(f\"Expected content is absent from {assertion['path']}\")\n for unexpected in assertion.get(\"notContains\", []):\n unexpected = unexpected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if unexpected in content:\n raise AssertionError(f\"Unexpected content is present in {assertion['path']}\")\nPY\n```" + }, + "description": "@code verify the authored workspace file existence and content assertions without logging file contents.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_assertProjectWindowReady_assert_ce0ec2ba7_1_13" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:checks", + "assertion:file", + "step_retry_timeout:120" + ] + }, + { + "step_id": "step_checkWorkspaceFiles_verify_ce0ec2ba7_2_2", + "agent": "code", + "tool": "", + "parameters": { + "sample": "=== Generated Script ===\nLanguage: bash\n\n```bash\nset -euo pipefail\nPROJECT_DIR=\"/home/vscode/AgentsToolkitProjects/${{var:app_name}}\" ASSERTIONS_B64=\"W3sicGF0aCI6InNyYy9hZ2VudC5qcyIsImV4aXN0cyI6dHJ1ZSwiY29udGFpbnMiOltdLCJub3RDb250YWlucyI6W119XQ==\" python3 - <<'PY'\nimport base64\nimport json\nimport os\nfrom pathlib import Path\n\nproject = Path(os.environ[\"PROJECT_DIR\"]).resolve()\nassertions = json.loads(base64.b64decode(os.environ[\"ASSERTIONS_B64\"]).decode(\"utf-8\"))\nfor assertion in assertions:\n target = (project / assertion[\"path\"]).resolve()\n try:\n target.relative_to(project)\n except ValueError as error:\n raise AssertionError(\"File assertion escaped the project directory\") from error\n exists = target.is_file()\n if exists != assertion[\"exists\"]:\n raise AssertionError(f\"Unexpected file existence for {assertion['path']}\")\n if not exists:\n continue\n content = target.read_text(encoding=\"utf-8\")\n for expected in assertion.get(\"contains\", []):\n expected = expected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if expected not in content:\n raise AssertionError(f\"Expected content is absent from {assertion['path']}\")\n for unexpected in assertion.get(\"notContains\", []):\n unexpected = unexpected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if unexpected in content:\n raise AssertionError(f\"Unexpected content is present in {assertion['path']}\")\nPY\n```" + }, + "description": "@code verify the authored workspace file existence and content assertions without logging file contents.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_checkWorkspaceFiles_verify_ce0ec2ba7_2_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:checks", + "assertion:file", + "step_retry_timeout:120" + ] + }, + { + "step_id": "step_checkWorkspaceFiles_verify_ce0ec2ba7_2_3", + "agent": "code", + "tool": "", + "parameters": { + "sample": "=== Generated Script ===\nLanguage: bash\n\n```bash\nset -euo pipefail\nPROJECT_DIR=\"/home/vscode/AgentsToolkitProjects/${{var:app_name}}\" ASSERTIONS_B64=\"W3sicGF0aCI6InNyYy90b29scy9nZXRXZWF0aGVyVG9vbC5qcyIsImV4aXN0cyI6dHJ1ZSwiY29udGFpbnMiOltdLCJub3RDb250YWlucyI6W119XQ==\" python3 - <<'PY'\nimport base64\nimport json\nimport os\nfrom pathlib import Path\n\nproject = Path(os.environ[\"PROJECT_DIR\"]).resolve()\nassertions = json.loads(base64.b64decode(os.environ[\"ASSERTIONS_B64\"]).decode(\"utf-8\"))\nfor assertion in assertions:\n target = (project / assertion[\"path\"]).resolve()\n try:\n target.relative_to(project)\n except ValueError as error:\n raise AssertionError(\"File assertion escaped the project directory\") from error\n exists = target.is_file()\n if exists != assertion[\"exists\"]:\n raise AssertionError(f\"Unexpected file existence for {assertion['path']}\")\n if not exists:\n continue\n content = target.read_text(encoding=\"utf-8\")\n for expected in assertion.get(\"contains\", []):\n expected = expected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if expected not in content:\n raise AssertionError(f\"Expected content is absent from {assertion['path']}\")\n for unexpected in assertion.get(\"notContains\", []):\n unexpected = unexpected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if unexpected in content:\n raise AssertionError(f\"Unexpected content is present in {assertion['path']}\")\nPY\n```" + }, + "description": "@code verify the authored workspace file existence and content assertions without logging file contents.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_checkWorkspaceFiles_verify_ce0ec2ba7_2_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:checks", + "assertion:file", + "step_retry_timeout:120" + ] + }, + { + "step_id": "step_checkWorkspaceFiles_verify_ce0ec2ba7_2_4", + "agent": "code", + "tool": "", + "parameters": { + "sample": "=== Generated Script ===\nLanguage: bash\n\n```bash\nset -euo pipefail\nPROJECT_DIR=\"/home/vscode/AgentsToolkitProjects/${{var:app_name}}\" ASSERTIONS_B64=\"W3sicGF0aCI6InBhY2thZ2UuanNvbiIsImV4aXN0cyI6dHJ1ZSwiY29udGFpbnMiOlsiXCJzdGFydFwiIiwiXCJkZXY6dGVhbXNmeFwiIl0sIm5vdENvbnRhaW5zIjpbXX1d\" python3 - <<'PY'\nimport base64\nimport json\nimport os\nfrom pathlib import Path\n\nproject = Path(os.environ[\"PROJECT_DIR\"]).resolve()\nassertions = json.loads(base64.b64decode(os.environ[\"ASSERTIONS_B64\"]).decode(\"utf-8\"))\nfor assertion in assertions:\n target = (project / assertion[\"path\"]).resolve()\n try:\n target.relative_to(project)\n except ValueError as error:\n raise AssertionError(\"File assertion escaped the project directory\") from error\n exists = target.is_file()\n if exists != assertion[\"exists\"]:\n raise AssertionError(f\"Unexpected file existence for {assertion['path']}\")\n if not exists:\n continue\n content = target.read_text(encoding=\"utf-8\")\n for expected in assertion.get(\"contains\", []):\n expected = expected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if expected not in content:\n raise AssertionError(f\"Expected content is absent from {assertion['path']}\")\n for unexpected in assertion.get(\"notContains\", []):\n unexpected = unexpected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if unexpected in content:\n raise AssertionError(f\"Unexpected content is present in {assertion['path']}\")\nPY\n```" + }, + "description": "@code verify the authored workspace file existence and content assertions without logging file contents.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_checkWorkspaceFiles_verify_ce0ec2ba7_2_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:checks", + "assertion:file", + "step_retry_timeout:120" + ] + }, + { + "step_id": "step_checkWorkspaceFiles_verify_ce0ec2ba7_2_5", + "agent": "code", + "tool": "", + "parameters": { + "sample": "=== Generated Script ===\nLanguage: bash\n\n```bash\nset -euo pipefail\nPROJECT_DIR=\"/home/vscode/AgentsToolkitProjects/${{var:app_name}}\" ASSERTIONS_B64=\"W3sicGF0aCI6InNyYy9pbmRleC50cyIsImV4aXN0cyI6ZmFsc2UsImNvbnRhaW5zIjpbXSwibm90Q29udGFpbnMiOltdfV0=\" python3 - <<'PY'\nimport base64\nimport json\nimport os\nfrom pathlib import Path\n\nproject = Path(os.environ[\"PROJECT_DIR\"]).resolve()\nassertions = json.loads(base64.b64decode(os.environ[\"ASSERTIONS_B64\"]).decode(\"utf-8\"))\nfor assertion in assertions:\n target = (project / assertion[\"path\"]).resolve()\n try:\n target.relative_to(project)\n except ValueError as error:\n raise AssertionError(\"File assertion escaped the project directory\") from error\n exists = target.is_file()\n if exists != assertion[\"exists\"]:\n raise AssertionError(f\"Unexpected file existence for {assertion['path']}\")\n if not exists:\n continue\n content = target.read_text(encoding=\"utf-8\")\n for expected in assertion.get(\"contains\", []):\n expected = expected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if expected not in content:\n raise AssertionError(f\"Expected content is absent from {assertion['path']}\")\n for unexpected in assertion.get(\"notContains\", []):\n unexpected = unexpected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if unexpected in content:\n raise AssertionError(f\"Unexpected content is present in {assertion['path']}\")\nPY\n```" + }, + "description": "@code verify the authored workspace file existence and content assertions without logging file contents.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_checkWorkspaceFiles_verify_ce0ec2ba7_2_4" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:checks", + "assertion:file", + "step_retry_timeout:120" + ] + }, + { + "step_id": "step_setLocalEnvironmentVariable_ce0ec2ba7_3_1", + "agent": "code", + "tool": "", + "parameters": { + "sample": "=== Generated Script ===\nLanguage: bash\n\n```bash\nset -euo pipefail\nPROJECT_DIR=\"/home/vscode/AgentsToolkitProjects/${{var:app_name}}\" VARIABLE_NAME=\"OPENAI_BASE_URL\" VARIABLE_VALUE=\"${{env:AZURE_OPENAI_ENDPOINT}}/openai/v1\" python3 - <<'PY'\nimport os\nfrom pathlib import Path\n\nlifecycle = Path(os.environ[\"PROJECT_DIR\"]).resolve() / \"m365agents.local.yml\"\nname = os.environ[\"VARIABLE_NAME\"]\nvalue = os.environ[\"VARIABLE_VALUE\"]\nlines = lifecycle.read_text(encoding=\"utf-8\").splitlines()\ntarget = next((index for index, line in enumerate(lines) if line.strip() == \"target: ./.localConfigs\"), None)\nif target is None:\n raise AssertionError(\"The local lifecycle writes no .localConfigs environment file\")\nheader = next((index for index in range(target + 1, len(lines)) if lines[index].strip() == \"envs:\"), None)\nif header is None:\n raise AssertionError(\"The .localConfigs environment file declares no envs mapping\")\nindent = \" \" * (len(lines[header]) - len(lines[header].lstrip()) + 2)\nend = header + 1\nwhile end < len(lines) and lines[end].startswith(indent) and lines[end].strip():\n end += 1\nkept = [line for line in lines[header + 1 : end] if not line.strip().startswith(name + \":\")]\nlines[header + 1 : end] = kept + [indent + name + \": \" + value]\nlifecycle.write_text(\"\\n\".join(lines) + \"\\n\", encoding=\"utf-8\")\nPY\n```" + }, + "description": "@code add the named variable to the envs mapping the local lifecycle writes into .localConfigs, without logging its value.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_checkWorkspaceFiles_verify_ce0ec2ba7_2_5" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:workspace", + "operation:local-environment", + "step_retry_timeout: 120" + ] + }, + { + "step_id": "step_executeCommand_open_ce0ec2ba7_4_1", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "f1" + }, + "description": "Press the F1 key to open the Command Palette in Visual Studio Code.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_setLocalEnvironmentVariable_ce0ec2ba7_3_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertPalette_ce0ec2ba7_4_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Visual Studio Code Command Palette is visible with a > character in its input box and is ready to accept a command search.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_open_ce0ec2ba7_4_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_filter_ce0ec2ba7_4_1", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "View: Show Microsoft 365 Agents Toolkit" + }, + "description": "Type the resolved command title into the active Command Palette.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertPalette_ce0ec2ba7_4_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertCommand_ce0ec2ba7_4_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Command Palette input box reads >View: Show Microsoft 365 Agents Toolkit and the highlighted command listed under it is titled View: Show Microsoft 365 Agents Toolkit.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_filter_ce0ec2ba7_4_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_execute_ce0ec2ba7_4_1", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to execute the selected Command Palette command.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertCommand_ce0ec2ba7_4_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_signInM365_assertOption_ce0ec2ba7_4_2", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the ACCOUNTS section of the side bar lists an entry whose label begins with Sign in to Microsoft.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_execute_ce0ec2ba7_4_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:authentication", + "account:m365", + "entry_state:toolkit-side-bar-visible", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_signInM365_selectOption_ce0ec2ba7_4_2", + "agent": "interaction", + "tool": "click", + "parameters": { + "button": "left", + "x": 213, + "y": 102 + }, + "description": "Click the entry whose label begins with \"Sign in to Microsoft\" in the ACCOUNTS section of the side bar.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInM365_assertOption_ce0ec2ba7_4_2" + ], + "preconditions": [ + "dhash:213:102:16:5:9c63d67674d4c718", + "dhash:213:102:96:5:8c512758d92c2cce", + "dhash:213:102:0:10:92c86223a3622421" + ], + "postconditions": [], + "tags": [ + "component:authentication", + "account:m365" + ] + }, + { + "step_id": "step_signInM365_confirmSignIn_ce0ec2ba7_4_2", + "agent": "interaction", + "tool": "click", + "parameters": { + "button": "left", + "x": 762, + "y": 97 + }, + "description": "Click the \"Sign in\" button within the Microsoft 365 developer sandbox modal.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInM365_selectOption_ce0ec2ba7_4_2" + ], + "preconditions": [ + "dhash:762:97:16:5:24b1a72ba9aba343", + "dhash:762:97:96:5:0008304b0f344900", + "dhash:762:97:0:10:9c68332223232421" + ], + "postconditions": [], + "tags": [ + "component:authentication", + "account:m365" + ] + }, + { + "step_id": "step_signInM365_focusAccount_ce0ec2ba7_4_2", + "agent": "interaction", + "tool": "click", + "parameters": { + "button": "left", + "x": 369, + "y": 350 + }, + "description": "Click on the \"Email or phone\" input field in the Microsoft Sign-in form on the login.microsoftonline.com webpage to focus the cursor for credential entry.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInM365_confirmSignIn_ce0ec2ba7_4_2" + ], + "preconditions": [ + "dhash:369:350:16:5:2113d25252525221", + "dhash:369:350:96:5:0919006d19220812", + "dhash:369:350:0:10:1b88d0d1e5e6dae4" + ], + "postconditions": [], + "tags": [ + "component:authentication", + "account:m365", + "precondition_wait_timeout: 60" + ] + }, + { + "step_id": "step_signInM365_typeAccount_ce0ec2ba7_4_2", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "${{env:M365_ACCOUNT_NAME}}" + }, + "description": "Enter the resolved Microsoft 365 account name into the email or username input field on the Microsoft Sign in page.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInM365_focusAccount_ce0ec2ba7_4_2" + ], + "preconditions": [ + "dhash:512:384:0:20:1b28f0d9e7e6dae4" + ], + "postconditions": [], + "tags": [ + "component:authentication", + "account:m365", + "delay: 3" + ] + }, + { + "step_id": "step_signInM365_next_ce0ec2ba7_4_2", + "agent": "interaction", + "tool": "click", + "parameters": { + "button": "left", + "x": 629, + "y": 484 + }, + "description": "Click the blue \"Next\" button on the Microsoft sign-in page, confirming the entered email address for login.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInM365_typeAccount_ce0ec2ba7_4_2" + ], + "preconditions": [ + "dhash:629:484:16:5:23248c4b6c24d32c", + "dhash:629:484:96:5:00004eb131860000", + "dhash:629:484:0:10:1b28f0d9e7e6dae4" + ], + "postconditions": [], + "tags": [ + "component:authentication", + "account:m365", + "delay:3" + ] + }, + { + "step_id": "step_signInM365_typePassword_ce0ec2ba7_4_2", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "${{secret:M365_ACCOUNT_PASSWORD}}" + }, + "description": "Type the resolved Microsoft 365 account password into the Password field on the Microsoft login page.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInM365_next_ce0ec2ba7_4_2" + ], + "preconditions": [ + "dhash:512:384:0:20:1b08f0d9d1e6e6e4" + ], + "postconditions": [], + "tags": [ + "component:authentication", + "account:m365", + "delay: 3" + ] + }, + { + "step_id": "step_signInM365_submit_ce0ec2ba7_4_2", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to submit the Microsoft 365 login form from the password entry screen.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInM365_typePassword_ce0ec2ba7_4_2" + ], + "preconditions": [ + "dhash:512:384:0:20:1b08f0d9d1e6e6e4" + ], + "postconditions": [], + "tags": [ + "component:authentication", + "account:m365", + "delay: 3" + ] + }, + { + "step_id": "step_signInM365_closeBrowser_ce0ec2ba7_4_2", + "agent": "interaction", + "tool": "click", + "parameters": { + "button": "left", + "x": 1004, + "y": 19 + }, + "description": "Click the \"Close\" button (red cross icon) in the browser tab bar to close the \"M365 Account - Sign In\" page.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInM365_submit_ce0ec2ba7_4_2" + ], + "preconditions": [ + "dhash:1004:19:16:5:aac833964c9633cc", + "dhash:1004:19:96:5:d2232323c200e6e6", + "dhash:1004:19:0:10:0b01410169414141" + ], + "postconditions": [], + "tags": [ + "component:authentication", + "account:m365", + "delay: 3" + ] + }, + { + "step_id": "step_signInM365_assertReady_ce0ec2ba7_4_2", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion there's ${{env:M365_ACCOUNT_NAME}} in the \"ACCOUNTS\" section", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInM365_closeBrowser_ce0ec2ba7_4_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:authentication", + "account:m365", + "readiness:account-visible", + "step_retry_timeout: 180" + ] + }, + { + "step_id": "step_executeCommand_open_ce0ec2ba7_5_1", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "f1" + }, + "description": "Press the F1 key to open the Command Palette in Visual Studio Code.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInM365_assertReady_ce0ec2ba7_4_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertPalette_ce0ec2ba7_5_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Visual Studio Code Command Palette is visible with a > character in its input box and is ready to accept a command search.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_open_ce0ec2ba7_5_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_filter_ce0ec2ba7_5_1", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Debug: Select and Start Debugging" + }, + "description": "Type the resolved command title into the active Command Palette.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertPalette_ce0ec2ba7_5_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertCommand_ce0ec2ba7_5_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Command Palette input box reads >Debug: Select and Start Debugging and the highlighted command listed under it is titled Debug: Select and Start Debugging.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_filter_ce0ec2ba7_5_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_execute_ce0ec2ba7_5_1", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to execute the selected Command Palette command.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertCommand_ce0ec2ba7_5_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_filterOption_filter_ce0ec2ba7_5_2", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Debug in Teams (Chrome)" + }, + "description": "Type the resolved option label into the active option picker.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_execute_ce0ec2ba7_5_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_filterOption_assertOption_ce0ec2ba7_5_2", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the option Debug in Teams (Chrome) is visible and selectable in the filtered option picker.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_filterOption_filter_ce0ec2ba7_5_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_filterOption_confirm_ce0ec2ba7_5_2", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to confirm the filtered option.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_filterOption_assertOption_ce0ec2ba7_5_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_browserM365PasswordSignIn_assertPassword_ce0ec2ba7_5_3", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Microsoft sign-in page in Chrome names ${{env:M365_ACCOUNT_NAME}} and asks for that account's password.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_filterOption_confirm_ce0ec2ba7_5_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:authentication", + "surface:browser", + "step_retry_timeout: 300" + ] + }, + { + "step_id": "step_browserM365PasswordSignIn_focusPassword_ce0ec2ba7_5_3", + "agent": "interaction", + "tool": "click", + "parameters": { + "button": "left", + "x": 400, + "y": 405 + }, + "description": "Click the password input on the Microsoft sign-in page to move focus out of the browser address bar.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_browserM365PasswordSignIn_assertPassword_ce0ec2ba7_5_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:authentication", + "surface:browser" + ] + }, + { + "step_id": "step_browserM365PasswordSignIn_enterPassword_ce0ec2ba7_5_3", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "${{secret:M365_ACCOUNT_PASSWORD}}" + }, + "description": "Enter the registered Microsoft 365 password in the focused password input of the browser sign-in form.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_browserM365PasswordSignIn_focusPassword_ce0ec2ba7_5_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:authentication", + "surface:browser" + ] + }, + { + "step_id": "step_browserM365PasswordSignIn_submitPassword_ce0ec2ba7_5_3", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to submit the Microsoft 365 password.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_browserM365PasswordSignIn_enterPassword_ce0ec2ba7_5_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:authentication", + "surface:browser" + ] + }, + { + "step_id": "step_browserM365PasswordSignIn_assertStaySignedIn_ce0ec2ba7_5_3", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Microsoft Stay signed in question is visible with Yes focused.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_browserM365PasswordSignIn_submitPassword_ce0ec2ba7_5_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:authentication", + "surface:browser", + "step_retry_timeout: 120" + ] + }, + { + "step_id": "step_browserM365PasswordSignIn_confirmStaySignedIn_ce0ec2ba7_5_3", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to confirm staying signed in.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_browserM365PasswordSignIn_assertStaySignedIn_ce0ec2ba7_5_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:authentication", + "surface:browser", + "delay: 30" + ] + }, + { + "step_id": "step_assertReady_assertReady_ce0ec2ba7_5_4", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Microsoft Teams app details page for an app whose name starts with ${{var:app_name}} is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_browserM365PasswordSignIn_confirmStaySignedIn_ce0ec2ba7_5_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:browser", + "action:assert-ready", + "step_retry_timeout: 180" + ] + }, + { + "step_id": "step_addAndOpenApp_assertAdd_ce0ec2ba7_6_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the blue \"Add\" button exists.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_assertReady_assertReady_ce0ec2ba7_5_4" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:browser", + "host_surface:teams", + "entry_state:add", + "step_retry_timeout: 180" + ] + }, + { + "step_id": "step_addAndOpenApp_add_ce0ec2ba7_6_1", + "agent": "interaction", + "tool": "click", + "parameters": { + "button": "left", + "x": 288, + "y": 214 + }, + "description": "Click Add on the app details popup within the Microsoft Teams interface.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_addAndOpenApp_assertAdd_ce0ec2ba7_6_1" + ], + "preconditions": [ + "dhash:288:214:16:5:05100a0511030b12", + "dhash:288:214:96:5:2616011c1c01005b", + "dhash:288:214:0:10:00b4b0d8f8fcf0d8" + ], + "postconditions": [], + "tags": [ + "component:browser", + "host_surface:teams", + "entry_state:add" + ] + }, + { + "step_id": "step_addAndOpenApp_assertAdded_ce0ec2ba7_6_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the \"Added successfully!\" dialog and its Open button are visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_addAndOpenApp_add_ce0ec2ba7_6_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:browser", + "host_surface:teams", + "entry_state:added", + "step_retry_timeout: 180" + ] + }, + { + "step_id": "step_addAndOpenApp_open_ce0ec2ba7_6_1", + "agent": "interaction", + "tool": "click", + "parameters": { + "button": "left", + "x": 533, + "y": 508 + }, + "description": "Click Open in the Microsoft Teams Added successfully dialog.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_addAndOpenApp_assertAdded_ce0ec2ba7_6_1" + ], + "preconditions": [ + "dhash:533:508:16:5:00987494ca4acacc", + "dhash:533:508:96:5:000058a48598e36b", + "dhash:533:508:0:10:1669696969696979" + ], + "postconditions": [], + "tags": [ + "component:browser", + "host_surface:teams", + "entry_state:added", + "precondition_wait_timeout: 120" + ] + }, + { + "step_id": "step_addAndOpenApp_assertReady_ce0ec2ba7_6_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Microsoft Teams app details page for an app whose name starts with ${{var:app_name}} is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_addAndOpenApp_open_ce0ec2ba7_6_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:browser", + "host_surface:teams", + "readiness:chat-ready", + "step_retry_timeout: 180" + ] + }, + { + "step_id": "step_sendTeamsMessage_assertInput_ce0ec2ba7_7_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Teams \"Type a message\" input is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_addAndOpenApp_assertReady_ce0ec2ba7_6_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:browser", + "host_surface:teams", + "entry_state:chat-ready", + "action:send-message", + "step_retry_timeout: 120" + ] + }, + { + "step_id": "step_sendTeamsMessage_focusInput_ce0ec2ba7_7_1", + "agent": "interaction", + "tool": "click", + "parameters": { + "button": "left", + "x": 200, + "y": 712 + }, + "description": "Click the Teams \"Type a message\" input.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_sendTeamsMessage_assertInput_ce0ec2ba7_7_1" + ], + "preconditions": [ + "dhash:200:712:16:5:258c421e0d2c2d1c", + "dhash:200:712:96:5:0020887362000200", + "dhash:200:712:0:10:24b4b08e8e8c81a1" + ], + "postconditions": [], + "tags": [ + "component:browser", + "host_surface:teams", + "entry_state:chat-ready", + "action:send-message" + ] + }, + { + "step_id": "step_sendTeamsMessage_type_ce0ec2ba7_7_1", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "What is the weather in Seattle?" + }, + "description": "Type \"What is the weather in Seattle?\" into the Teams message input.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_sendTeamsMessage_focusInput_ce0ec2ba7_7_1" + ], + "preconditions": [ + "dhash:512:384:0:20:24b4b08e8e8c80a9" + ], + "postconditions": [], + "tags": [ + "component:browser", + "host_surface:teams", + "entry_state:chat-ready", + "action:send-message" + ] + }, + { + "step_id": "step_sendTeamsMessage_send_ce0ec2ba7_7_1", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to send the Teams message.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_sendTeamsMessage_type_ce0ec2ba7_7_1" + ], + "preconditions": [ + "dhash:512:384:0:20:24b4b08e8e8c80b9" + ], + "postconditions": [], + "tags": [ + "component:browser", + "host_surface:teams", + "entry_state:chat-ready", + "action:send-message" + ] + }, + { + "step_id": "step_assertChatReplied_assert_ce0ec2ba7_7_2", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the current assistant turn is complete and contains a non-empty response.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_sendTeamsMessage_send_ce0ec2ba7_7_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:browser", + "action:assert-chat-response", + "expectation:replied", + "step_retry_timeout: 120" + ] + }, + { + "step_id": "step_assertChatContains_assert_ce0ec2ba7_7_3", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the current assistant response contains \"Seattle\".", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_assertChatReplied_assert_ce0ec2ba7_7_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:browser", + "action:assert-chat-response", + "expectation:contains", + "step_retry_timeout: 120" + ] + } + ], + "screenshots": {} +} diff --git a/packages/tests/vscuse/vscode-test-cases/plans/weather-agent--weather-js-openai-remote-preview.json b/packages/tests/vscuse/vscode-test-cases/plans/weather-agent--weather-js-openai-remote-teams.json similarity index 69% rename from packages/tests/vscuse/vscode-test-cases/plans/weather-agent--weather-js-openai-remote-preview.json rename to packages/tests/vscuse/vscode-test-cases/plans/weather-agent--weather-js-openai-remote-teams.json index 0fe04c0c88d..3f3e9357394 100644 --- a/packages/tests/vscuse/vscode-test-cases/plans/weather-agent--weather-js-openai-remote-preview.json +++ b/packages/tests/vscuse/vscode-test-cases/plans/weather-agent--weather-js-openai-remote-teams.json @@ -1,159 +1,175 @@ { "plan_metadata": { "version": "1.1", - "plan_id": "plan_ca281817a192", + "plan_id": "plan_6dff7c1ed859", "execution_context": { "delay_between_steps": 1, "stop_on_error": true, "precondition_wait_timeout": 30, "precondition_retry_interval": 1 }, - "total_steps": 135, - "name": "weather-js-openai-remote-preview", + "total_steps": 151, + "name": "weather-js-openai-remote-teams", "description": { "owner": "", "workitem": "SCN-CREATE-WEATHER-03", "other": "" }, "execution_order": [ - "step_closeWelcomeOverlay_assertVisible_c61edf2e8_1_1", - "step_closeWelcomeOverlay_close_c61edf2e8_1_1", - "step_closeWelcomeOverlay_assertReady_c61edf2e8_1_1", - "step_executeCommand_open_c61edf2e8_1_2", - "step_executeCommand_assertPalette_c61edf2e8_1_2", - "step_executeCommand_filter_c61edf2e8_1_2", - "step_executeCommand_assertCommand_c61edf2e8_1_2", - "step_executeCommand_execute_c61edf2e8_1_2", - "step_assertToolkitViewSettled_assert_c61edf2e8_1_3", - "step_closeGetStartedEditor_assertActive_c61edf2e8_1_4", - "step_closeGetStartedEditor_close_c61edf2e8_1_4", - "step_closeGetStartedEditor_assertClosed_c61edf2e8_1_4", - "step_executeCommand_open_c61edf2e8_1_5", - "step_executeCommand_assertPalette_c61edf2e8_1_5", - "step_executeCommand_filter_c61edf2e8_1_5", - "step_executeCommand_assertCommand_c61edf2e8_1_5", - "step_executeCommand_execute_c61edf2e8_1_5", - "step_singleSelect_assertQuestion_c61edf2e8_1_6", - "step_singleSelect_assertOptionsLoaded_c61edf2e8_1_6", - "step_singleSelect_filter_c61edf2e8_1_6", - "step_singleSelect_assertOption_c61edf2e8_1_6", - "step_singleSelect_confirm_c61edf2e8_1_6", - "step_singleSelect_assertQuestion_c61edf2e8_1_7", - "step_singleSelect_assertOptionsLoaded_c61edf2e8_1_7", - "step_singleSelect_filter_c61edf2e8_1_7", - "step_singleSelect_assertOption_c61edf2e8_1_7", - "step_singleSelect_confirm_c61edf2e8_1_7", - "step_singleSelect_assertQuestion_c61edf2e8_1_8", - "step_singleSelect_assertOptionsLoaded_c61edf2e8_1_8", - "step_singleSelect_filter_c61edf2e8_1_8", - "step_singleSelect_assertOption_c61edf2e8_1_8", - "step_singleSelect_confirm_c61edf2e8_1_8", - "step_textInput_assertQuestion_c61edf2e8_1_9", - "step_textInput_input_c61edf2e8_1_9", - "step_textInput_confirm_c61edf2e8_1_9", - "step_singleSelect_assertQuestion_c61edf2e8_1_10", - "step_singleSelect_assertOptionsLoaded_c61edf2e8_1_10", - "step_singleSelect_filter_c61edf2e8_1_10", - "step_singleSelect_assertOption_c61edf2e8_1_10", - "step_singleSelect_confirm_c61edf2e8_1_10", - "step_confirmOption_assertPrompt_c61edf2e8_1_11", - "step_confirmOption_confirm_c61edf2e8_1_11", - "step_textInput_assertQuestion_c61edf2e8_1_12", - "step_textInput_input_c61edf2e8_1_12", - "step_textInput_confirm_c61edf2e8_1_12", - "step_assertProjectWindowReady_assert_c61edf2e8_1_13", - "step_checkWorkspaceFiles_verify_c61edf2e8_2_1", - "step_checkWorkspaceFiles_verify_c61edf2e8_2_2", - "step_checkWorkspaceFiles_verify_c61edf2e8_2_3", - "step_checkWorkspaceFiles_verify_c61edf2e8_2_4", - "step_checkWorkspaceFiles_verify_c61edf2e8_2_5", - "step_executeCommand_open_c61edf2e8_3_1", - "step_executeCommand_assertPalette_c61edf2e8_3_1", - "step_executeCommand_filter_c61edf2e8_3_1", - "step_executeCommand_assertCommand_c61edf2e8_3_1", - "step_executeCommand_execute_c61edf2e8_3_1", - "step_signInAzure_assertOption_c61edf2e8_3_2", - "step_signInAzure_selectOption_c61edf2e8_3_2", - "step_signInAzure_confirmSignIn_c61edf2e8_3_2", - "step_signInAzure_allow_c61edf2e8_3_2", - "step_signInAzure_focusAccount_c61edf2e8_3_2", - "step_signInAzure_typeAccount_c61edf2e8_3_2", - "step_signInAzure_next_c61edf2e8_3_2", - "step_signInAzure_typePassword_c61edf2e8_3_2", - "step_signInAzure_submit_c61edf2e8_3_2", - "step_signInAzure_closeBrowser_c61edf2e8_3_2", - "step_signInAzure_assertReady_c61edf2e8_3_2", - "step_executeCommand_open_c61edf2e8_4_1", - "step_executeCommand_assertPalette_c61edf2e8_4_1", - "step_executeCommand_filter_c61edf2e8_4_1", - "step_executeCommand_assertCommand_c61edf2e8_4_1", - "step_executeCommand_execute_c61edf2e8_4_1", - "step_signInM365FromPicker_assertOption_c61edf2e8_4_2", - "step_signInM365FromPicker_selectOption_c61edf2e8_4_2", - "step_signInM365FromPicker_confirmSignIn_c61edf2e8_4_2", - "step_signInM365FromPicker_useAnotherAccount_c61edf2e8_4_2", - "step_signInM365FromPicker_typeAccount_c61edf2e8_4_2", - "step_signInM365FromPicker_next_c61edf2e8_4_2", - "step_signInM365FromPicker_typePassword_c61edf2e8_4_2", - "step_signInM365FromPicker_submit_c61edf2e8_4_2", - "step_signInM365FromPicker_closeBrowser_c61edf2e8_4_2", - "step_signInM365FromPicker_assertReady_c61edf2e8_4_2", - "step_executeCommand_open_c61edf2e8_5_1", - "step_executeCommand_assertPalette_c61edf2e8_5_1", - "step_executeCommand_filter_c61edf2e8_5_1", - "step_executeCommand_assertCommand_c61edf2e8_5_1", - "step_executeCommand_execute_c61edf2e8_5_1", - "step_executeCommand_open_c61edf2e8_5_2", - "step_executeCommand_assertPalette_c61edf2e8_5_2", - "step_executeCommand_filter_c61edf2e8_5_2", - "step_executeCommand_assertCommand_c61edf2e8_5_2", - "step_executeCommand_execute_c61edf2e8_5_2", - "step_singleSelect_assertQuestion_c61edf2e8_5_3", - "step_singleSelect_assertOptionsLoaded_c61edf2e8_5_3", - "step_singleSelect_filter_c61edf2e8_5_3", - "step_singleSelect_assertOption_c61edf2e8_5_3", - "step_singleSelect_confirm_c61edf2e8_5_3", - "step_textInput_assertQuestion_c61edf2e8_5_4", - "step_textInput_input_c61edf2e8_5_4", - "step_textInput_confirm_c61edf2e8_5_4", - "step_singleSelect_assertQuestion_c61edf2e8_5_5", - "step_singleSelect_assertOptionsLoaded_c61edf2e8_5_5", - "step_singleSelect_filter_c61edf2e8_5_5", - "step_singleSelect_assertOption_c61edf2e8_5_5", - "step_singleSelect_confirm_c61edf2e8_5_5", - "step_clickPrimaryAction_assertDialog_c61edf2e8_5_6", - "step_clickPrimaryAction_click_c61edf2e8_5_6", - "step_assertNotificationContains_assert_c61edf2e8_5_7", - "step_executeCommand_open_c61edf2e8_6_1", - "step_executeCommand_assertPalette_c61edf2e8_6_1", - "step_executeCommand_filter_c61edf2e8_6_1", - "step_executeCommand_assertCommand_c61edf2e8_6_1", - "step_executeCommand_execute_c61edf2e8_6_1", - "step_executeCommand_open_c61edf2e8_6_2", - "step_executeCommand_assertPalette_c61edf2e8_6_2", - "step_executeCommand_filter_c61edf2e8_6_2", - "step_executeCommand_assertCommand_c61edf2e8_6_2", - "step_executeCommand_execute_c61edf2e8_6_2", - "step_clickPrimaryAction_assertDialog_c61edf2e8_6_3", - "step_clickPrimaryAction_click_c61edf2e8_6_3", - "step_assertNotificationContains_assert_c61edf2e8_6_4", - "step_executeCommand_open_c61edf2e8_7_1", - "step_executeCommand_assertPalette_c61edf2e8_7_1", - "step_executeCommand_filter_c61edf2e8_7_1", - "step_executeCommand_assertCommand_c61edf2e8_7_1", - "step_executeCommand_execute_c61edf2e8_7_1", - "step_filterOption_filter_c61edf2e8_7_2", - "step_filterOption_assertOption_c61edf2e8_7_2", - "step_filterOption_confirm_c61edf2e8_7_2", - "step_assertReady_assertReady_c61edf2e8_7_3", - "step_addAndOpenApp_assertAdd_c61edf2e8_8_1", - "step_addAndOpenApp_add_c61edf2e8_8_1", - "step_addAndOpenApp_assertAdded_c61edf2e8_8_1", - "step_addAndOpenApp_open_c61edf2e8_8_1", - "step_addAndOpenApp_assertReady_c61edf2e8_8_1" + "step_closeWelcomeOverlay_assertVisible_c36a630d1_1_1", + "step_closeWelcomeOverlay_close_c36a630d1_1_1", + "step_closeWelcomeOverlay_assertReady_c36a630d1_1_1", + "step_executeCommand_open_c36a630d1_1_2", + "step_executeCommand_assertPalette_c36a630d1_1_2", + "step_executeCommand_filter_c36a630d1_1_2", + "step_executeCommand_assertCommand_c36a630d1_1_2", + "step_executeCommand_execute_c36a630d1_1_2", + "step_assertToolkitViewSettled_assert_c36a630d1_1_3", + "step_closeGetStartedEditor_assertActive_c36a630d1_1_4", + "step_closeGetStartedEditor_close_c36a630d1_1_4", + "step_closeGetStartedEditor_assertClosed_c36a630d1_1_4", + "step_executeCommand_open_c36a630d1_1_5", + "step_executeCommand_assertPalette_c36a630d1_1_5", + "step_executeCommand_filter_c36a630d1_1_5", + "step_executeCommand_assertCommand_c36a630d1_1_5", + "step_executeCommand_execute_c36a630d1_1_5", + "step_singleSelect_assertQuestion_c36a630d1_1_6", + "step_singleSelect_assertOptionsLoaded_c36a630d1_1_6", + "step_singleSelect_filter_c36a630d1_1_6", + "step_singleSelect_assertOption_c36a630d1_1_6", + "step_singleSelect_confirm_c36a630d1_1_6", + "step_singleSelect_assertQuestion_c36a630d1_1_7", + "step_singleSelect_assertOptionsLoaded_c36a630d1_1_7", + "step_singleSelect_filter_c36a630d1_1_7", + "step_singleSelect_assertOption_c36a630d1_1_7", + "step_singleSelect_confirm_c36a630d1_1_7", + "step_singleSelect_assertQuestion_c36a630d1_1_8", + "step_singleSelect_assertOptionsLoaded_c36a630d1_1_8", + "step_singleSelect_filter_c36a630d1_1_8", + "step_singleSelect_assertOption_c36a630d1_1_8", + "step_singleSelect_confirm_c36a630d1_1_8", + "step_textInput_assertQuestion_c36a630d1_1_9", + "step_textInput_input_c36a630d1_1_9", + "step_textInput_confirm_c36a630d1_1_9", + "step_singleSelect_assertQuestion_c36a630d1_1_10", + "step_singleSelect_assertOptionsLoaded_c36a630d1_1_10", + "step_singleSelect_filter_c36a630d1_1_10", + "step_singleSelect_assertOption_c36a630d1_1_10", + "step_singleSelect_confirm_c36a630d1_1_10", + "step_confirmOption_assertPrompt_c36a630d1_1_11", + "step_confirmOption_confirm_c36a630d1_1_11", + "step_textInput_assertQuestion_c36a630d1_1_12", + "step_textInput_input_c36a630d1_1_12", + "step_textInput_confirm_c36a630d1_1_12", + "step_assertProjectWindowReady_assert_c36a630d1_1_13", + "step_checkWorkspaceFiles_verify_c36a630d1_2_1", + "step_checkWorkspaceFiles_verify_c36a630d1_2_2", + "step_checkWorkspaceFiles_verify_c36a630d1_2_3", + "step_checkWorkspaceFiles_verify_c36a630d1_2_4", + "step_checkWorkspaceFiles_verify_c36a630d1_2_5", + "step_executeCommand_open_c36a630d1_3_1", + "step_executeCommand_assertPalette_c36a630d1_3_1", + "step_executeCommand_filter_c36a630d1_3_1", + "step_executeCommand_assertCommand_c36a630d1_3_1", + "step_executeCommand_execute_c36a630d1_3_1", + "step_signInAzure_assertOption_c36a630d1_3_2", + "step_signInAzure_selectOption_c36a630d1_3_2", + "step_signInAzure_confirmSignIn_c36a630d1_3_2", + "step_signInAzure_allow_c36a630d1_3_2", + "step_signInAzure_focusAccount_c36a630d1_3_2", + "step_signInAzure_typeAccount_c36a630d1_3_2", + "step_signInAzure_next_c36a630d1_3_2", + "step_signInAzure_typePassword_c36a630d1_3_2", + "step_signInAzure_submit_c36a630d1_3_2", + "step_signInAzure_closeBrowser_c36a630d1_3_2", + "step_signInAzure_assertReady_c36a630d1_3_2", + "step_executeCommand_open_c36a630d1_4_1", + "step_executeCommand_assertPalette_c36a630d1_4_1", + "step_executeCommand_filter_c36a630d1_4_1", + "step_executeCommand_assertCommand_c36a630d1_4_1", + "step_executeCommand_execute_c36a630d1_4_1", + "step_signInM365FromPicker_assertOption_c36a630d1_4_2", + "step_signInM365FromPicker_selectOption_c36a630d1_4_2", + "step_signInM365FromPicker_confirmSignIn_c36a630d1_4_2", + "step_signInM365FromPicker_useAnotherAccount_c36a630d1_4_2", + "step_signInM365FromPicker_typeAccount_c36a630d1_4_2", + "step_signInM365FromPicker_next_c36a630d1_4_2", + "step_signInM365FromPicker_typePassword_c36a630d1_4_2", + "step_signInM365FromPicker_submit_c36a630d1_4_2", + "step_signInM365FromPicker_closeBrowser_c36a630d1_4_2", + "step_signInM365FromPicker_assertReady_c36a630d1_4_2", + "step_executeCommand_open_c36a630d1_5_1", + "step_executeCommand_assertPalette_c36a630d1_5_1", + "step_executeCommand_filter_c36a630d1_5_1", + "step_executeCommand_assertCommand_c36a630d1_5_1", + "step_executeCommand_execute_c36a630d1_5_1", + "step_executeCommand_open_c36a630d1_5_2", + "step_executeCommand_assertPalette_c36a630d1_5_2", + "step_executeCommand_filter_c36a630d1_5_2", + "step_executeCommand_assertCommand_c36a630d1_5_2", + "step_executeCommand_execute_c36a630d1_5_2", + "step_executeCommand_open_c36a630d1_5_3", + "step_executeCommand_assertPalette_c36a630d1_5_3", + "step_executeCommand_filter_c36a630d1_5_3", + "step_executeCommand_assertCommand_c36a630d1_5_3", + "step_executeCommand_execute_c36a630d1_5_3", + "step_singleSelect_assertQuestion_c36a630d1_5_4", + "step_singleSelect_assertOptionsLoaded_c36a630d1_5_4", + "step_singleSelect_filter_c36a630d1_5_4", + "step_singleSelect_assertOption_c36a630d1_5_4", + "step_singleSelect_confirm_c36a630d1_5_4", + "step_textInput_assertQuestion_c36a630d1_5_5", + "step_textInput_input_c36a630d1_5_5", + "step_textInput_confirm_c36a630d1_5_5", + "step_singleSelect_assertQuestion_c36a630d1_5_6", + "step_singleSelect_assertOptionsLoaded_c36a630d1_5_6", + "step_singleSelect_filter_c36a630d1_5_6", + "step_singleSelect_assertOption_c36a630d1_5_6", + "step_singleSelect_confirm_c36a630d1_5_6", + "step_clickPrimaryAction_assertDialog_c36a630d1_5_7", + "step_clickPrimaryAction_click_c36a630d1_5_7", + "step_assertNotificationContains_assert_c36a630d1_5_8", + "step_executeCommand_open_c36a630d1_6_1", + "step_executeCommand_assertPalette_c36a630d1_6_1", + "step_executeCommand_filter_c36a630d1_6_1", + "step_executeCommand_assertCommand_c36a630d1_6_1", + "step_executeCommand_execute_c36a630d1_6_1", + "step_executeCommand_open_c36a630d1_6_2", + "step_executeCommand_assertPalette_c36a630d1_6_2", + "step_executeCommand_filter_c36a630d1_6_2", + "step_executeCommand_assertCommand_c36a630d1_6_2", + "step_executeCommand_execute_c36a630d1_6_2", + "step_executeCommand_open_c36a630d1_6_3", + "step_executeCommand_assertPalette_c36a630d1_6_3", + "step_executeCommand_filter_c36a630d1_6_3", + "step_executeCommand_assertCommand_c36a630d1_6_3", + "step_executeCommand_execute_c36a630d1_6_3", + "step_clickPrimaryAction_assertDialog_c36a630d1_6_4", + "step_clickPrimaryAction_click_c36a630d1_6_4", + "step_assertNotificationContains_assert_c36a630d1_6_5", + "step_executeCommand_open_c36a630d1_7_1", + "step_executeCommand_assertPalette_c36a630d1_7_1", + "step_executeCommand_filter_c36a630d1_7_1", + "step_executeCommand_assertCommand_c36a630d1_7_1", + "step_executeCommand_execute_c36a630d1_7_1", + "step_filterOption_filter_c36a630d1_7_2", + "step_filterOption_assertOption_c36a630d1_7_2", + "step_filterOption_confirm_c36a630d1_7_2", + "step_browserM365PasswordSignIn_assertPassword_c36a630d1_7_3", + "step_browserM365PasswordSignIn_focusPassword_c36a630d1_7_3", + "step_browserM365PasswordSignIn_enterPassword_c36a630d1_7_3", + "step_browserM365PasswordSignIn_submitPassword_c36a630d1_7_3", + "step_browserM365PasswordSignIn_assertStaySignedIn_c36a630d1_7_3", + "step_browserM365PasswordSignIn_confirmStaySignedIn_c36a630d1_7_3", + "step_assertReady_assertReady_c36a630d1_7_4", + "step_addAndOpenApp_assertAdd_c36a630d1_8_1", + "step_addAndOpenApp_add_c36a630d1_8_1", + "step_addAndOpenApp_assertAdded_c36a630d1_8_1", + "step_addAndOpenApp_open_c36a630d1_8_1", + "step_addAndOpenApp_assertReady_c36a630d1_8_1" ], "tags": [ - "case_id:weather-js-openai-remote-preview", + "case_id:weather-js-openai-remote-teams", "scenario_id:SCN-CREATE-WEATHER-03", "template_id:weather-agent", "gate:pr" @@ -161,7 +177,7 @@ }, "steps": [ { - "step_id": "step_closeWelcomeOverlay_assertVisible_c61edf2e8_1_1", + "step_id": "step_closeWelcomeOverlay_assertVisible_c36a630d1_1_1", "agent": "assertion", "tool": "", "parameters": {}, @@ -180,7 +196,7 @@ ] }, { - "step_id": "step_closeWelcomeOverlay_close_c61edf2e8_1_1", + "step_id": "step_closeWelcomeOverlay_close_c36a630d1_1_1", "agent": "interaction", "tool": "click", "parameters": { @@ -194,7 +210,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_closeWelcomeOverlay_assertVisible_c61edf2e8_1_1" + "step_closeWelcomeOverlay_assertVisible_c36a630d1_1_1" ], "preconditions": [ "dhash:952:128:16:5:255266345964665b", @@ -209,7 +225,7 @@ ] }, { - "step_id": "step_closeWelcomeOverlay_assertReady_c61edf2e8_1_1", + "step_id": "step_closeWelcomeOverlay_assertReady_c36a630d1_1_1", "agent": "assertion", "tool": "", "parameters": {}, @@ -219,7 +235,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_closeWelcomeOverlay_close_c61edf2e8_1_1" + "step_closeWelcomeOverlay_close_c36a630d1_1_1" ], "preconditions": [], "postconditions": [], @@ -230,7 +246,7 @@ ] }, { - "step_id": "step_executeCommand_open_c61edf2e8_1_2", + "step_id": "step_executeCommand_open_c36a630d1_1_2", "agent": "interaction", "tool": "key_press", "parameters": { @@ -242,7 +258,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_closeWelcomeOverlay_assertReady_c61edf2e8_1_1" + "step_closeWelcomeOverlay_assertReady_c36a630d1_1_1" ], "preconditions": [], "postconditions": [], @@ -252,7 +268,7 @@ ] }, { - "step_id": "step_executeCommand_assertPalette_c61edf2e8_1_2", + "step_id": "step_executeCommand_assertPalette_c36a630d1_1_2", "agent": "assertion", "tool": "", "parameters": {}, @@ -262,7 +278,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_executeCommand_open_c61edf2e8_1_2" + "step_executeCommand_open_c36a630d1_1_2" ], "preconditions": [], "postconditions": [], @@ -273,7 +289,7 @@ ] }, { - "step_id": "step_executeCommand_filter_c61edf2e8_1_2", + "step_id": "step_executeCommand_filter_c36a630d1_1_2", "agent": "interaction", "tool": "type_text", "parameters": { @@ -285,7 +301,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_executeCommand_assertPalette_c61edf2e8_1_2" + "step_executeCommand_assertPalette_c36a630d1_1_2" ], "preconditions": [], "postconditions": [], @@ -295,7 +311,7 @@ ] }, { - "step_id": "step_executeCommand_assertCommand_c61edf2e8_1_2", + "step_id": "step_executeCommand_assertCommand_c36a630d1_1_2", "agent": "assertion", "tool": "", "parameters": {}, @@ -305,7 +321,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_executeCommand_filter_c61edf2e8_1_2" + "step_executeCommand_filter_c36a630d1_1_2" ], "preconditions": [], "postconditions": [], @@ -316,7 +332,7 @@ ] }, { - "step_id": "step_executeCommand_execute_c61edf2e8_1_2", + "step_id": "step_executeCommand_execute_c36a630d1_1_2", "agent": "interaction", "tool": "key_press", "parameters": { @@ -328,7 +344,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_executeCommand_assertCommand_c61edf2e8_1_2" + "step_executeCommand_assertCommand_c36a630d1_1_2" ], "preconditions": [], "postconditions": [], @@ -338,7 +354,7 @@ ] }, { - "step_id": "step_assertToolkitViewSettled_assert_c61edf2e8_1_3", + "step_id": "step_assertToolkitViewSettled_assert_c36a630d1_1_3", "agent": "assertion", "tool": "", "parameters": {}, @@ -348,7 +364,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_executeCommand_execute_c61edf2e8_1_2" + "step_executeCommand_execute_c36a630d1_1_2" ], "preconditions": [], "postconditions": [], @@ -359,7 +375,7 @@ ] }, { - "step_id": "step_closeGetStartedEditor_assertActive_c61edf2e8_1_4", + "step_id": "step_closeGetStartedEditor_assertActive_c36a630d1_1_4", "agent": "assertion", "tool": "", "parameters": {}, @@ -369,7 +385,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_assertToolkitViewSettled_assert_c61edf2e8_1_3" + "step_assertToolkitViewSettled_assert_c36a630d1_1_3" ], "preconditions": [], "postconditions": [], @@ -380,7 +396,7 @@ ] }, { - "step_id": "step_closeGetStartedEditor_close_c61edf2e8_1_4", + "step_id": "step_closeGetStartedEditor_close_c36a630d1_1_4", "agent": "interaction", "tool": "keyboard_shortcut", "parameters": { @@ -392,7 +408,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_closeGetStartedEditor_assertActive_c61edf2e8_1_4" + "step_closeGetStartedEditor_assertActive_c36a630d1_1_4" ], "preconditions": [], "postconditions": [], @@ -402,7 +418,7 @@ ] }, { - "step_id": "step_closeGetStartedEditor_assertClosed_c61edf2e8_1_4", + "step_id": "step_closeGetStartedEditor_assertClosed_c36a630d1_1_4", "agent": "assertion", "tool": "", "parameters": {}, @@ -412,7 +428,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_closeGetStartedEditor_close_c61edf2e8_1_4" + "step_closeGetStartedEditor_close_c36a630d1_1_4" ], "preconditions": [], "postconditions": [], @@ -423,7 +439,7 @@ ] }, { - "step_id": "step_executeCommand_open_c61edf2e8_1_5", + "step_id": "step_executeCommand_open_c36a630d1_1_5", "agent": "interaction", "tool": "key_press", "parameters": { @@ -435,7 +451,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_closeGetStartedEditor_assertClosed_c61edf2e8_1_4" + "step_closeGetStartedEditor_assertClosed_c36a630d1_1_4" ], "preconditions": [], "postconditions": [], @@ -445,7 +461,7 @@ ] }, { - "step_id": "step_executeCommand_assertPalette_c61edf2e8_1_5", + "step_id": "step_executeCommand_assertPalette_c36a630d1_1_5", "agent": "assertion", "tool": "", "parameters": {}, @@ -455,7 +471,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_executeCommand_open_c61edf2e8_1_5" + "step_executeCommand_open_c36a630d1_1_5" ], "preconditions": [], "postconditions": [], @@ -466,7 +482,7 @@ ] }, { - "step_id": "step_executeCommand_filter_c61edf2e8_1_5", + "step_id": "step_executeCommand_filter_c36a630d1_1_5", "agent": "interaction", "tool": "type_text", "parameters": { @@ -478,7 +494,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_executeCommand_assertPalette_c61edf2e8_1_5" + "step_executeCommand_assertPalette_c36a630d1_1_5" ], "preconditions": [], "postconditions": [], @@ -488,7 +504,7 @@ ] }, { - "step_id": "step_executeCommand_assertCommand_c61edf2e8_1_5", + "step_id": "step_executeCommand_assertCommand_c36a630d1_1_5", "agent": "assertion", "tool": "", "parameters": {}, @@ -498,7 +514,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_executeCommand_filter_c61edf2e8_1_5" + "step_executeCommand_filter_c36a630d1_1_5" ], "preconditions": [], "postconditions": [], @@ -509,7 +525,7 @@ ] }, { - "step_id": "step_executeCommand_execute_c61edf2e8_1_5", + "step_id": "step_executeCommand_execute_c36a630d1_1_5", "agent": "interaction", "tool": "key_press", "parameters": { @@ -521,7 +537,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_executeCommand_assertCommand_c61edf2e8_1_5" + "step_executeCommand_assertCommand_c36a630d1_1_5" ], "preconditions": [], "postconditions": [], @@ -531,7 +547,7 @@ ] }, { - "step_id": "step_singleSelect_assertQuestion_c61edf2e8_1_6", + "step_id": "step_singleSelect_assertQuestion_c36a630d1_1_6", "agent": "assertion", "tool": "", "parameters": {}, @@ -541,7 +557,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_executeCommand_execute_c61edf2e8_1_5" + "step_executeCommand_execute_c36a630d1_1_5" ], "preconditions": [], "postconditions": [], @@ -552,17 +568,17 @@ ] }, { - "step_id": "step_singleSelect_assertOptionsLoaded_c61edf2e8_1_6", + "step_id": "step_singleSelect_assertOptionsLoaded_c36a630d1_1_6", "agent": "assertion", "tool": "", "parameters": {}, - "description": "@assertion the prompt titled New Project lists at least one option below its input box.", + "description": "@assertion the prompt titled New Project has finished loading and lists at least one selectable option.", "content_refs": [], "timeout": 120, "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_singleSelect_assertQuestion_c61edf2e8_1_6" + "step_singleSelect_assertQuestion_c36a630d1_1_6" ], "preconditions": [], "postconditions": [], @@ -573,7 +589,7 @@ ] }, { - "step_id": "step_singleSelect_filter_c61edf2e8_1_6", + "step_id": "step_singleSelect_filter_c36a630d1_1_6", "agent": "interaction", "tool": "type_text", "parameters": { @@ -585,7 +601,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_singleSelect_assertOptionsLoaded_c61edf2e8_1_6" + "step_singleSelect_assertOptionsLoaded_c36a630d1_1_6" ], "preconditions": [], "postconditions": [], @@ -595,7 +611,7 @@ ] }, { - "step_id": "step_singleSelect_assertOption_c61edf2e8_1_6", + "step_id": "step_singleSelect_assertOption_c36a630d1_1_6", "agent": "assertion", "tool": "", "parameters": {}, @@ -605,7 +621,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_singleSelect_filter_c61edf2e8_1_6" + "step_singleSelect_filter_c36a630d1_1_6" ], "preconditions": [], "postconditions": [], @@ -616,7 +632,7 @@ ] }, { - "step_id": "step_singleSelect_confirm_c61edf2e8_1_6", + "step_id": "step_singleSelect_confirm_c36a630d1_1_6", "agent": "interaction", "tool": "key_press", "parameters": { @@ -628,7 +644,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_singleSelect_assertOption_c61edf2e8_1_6" + "step_singleSelect_assertOption_c36a630d1_1_6" ], "preconditions": [], "postconditions": [], @@ -638,7 +654,7 @@ ] }, { - "step_id": "step_singleSelect_assertQuestion_c61edf2e8_1_7", + "step_id": "step_singleSelect_assertQuestion_c36a630d1_1_7", "agent": "assertion", "tool": "", "parameters": {}, @@ -648,7 +664,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_singleSelect_confirm_c61edf2e8_1_6" + "step_singleSelect_confirm_c36a630d1_1_6" ], "preconditions": [], "postconditions": [], @@ -659,17 +675,17 @@ ] }, { - "step_id": "step_singleSelect_assertOptionsLoaded_c61edf2e8_1_7", + "step_id": "step_singleSelect_assertOptionsLoaded_c36a630d1_1_7", "agent": "assertion", "tool": "", "parameters": {}, - "description": "@assertion the prompt titled App Features Using Microsoft 365 Agents SDK lists at least one option below its input box.", + "description": "@assertion the prompt titled App Features Using Microsoft 365 Agents SDK has finished loading and lists at least one selectable option.", "content_refs": [], "timeout": 120, "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_singleSelect_assertQuestion_c61edf2e8_1_7" + "step_singleSelect_assertQuestion_c36a630d1_1_7" ], "preconditions": [], "postconditions": [], @@ -680,7 +696,7 @@ ] }, { - "step_id": "step_singleSelect_filter_c61edf2e8_1_7", + "step_id": "step_singleSelect_filter_c36a630d1_1_7", "agent": "interaction", "tool": "type_text", "parameters": { @@ -692,7 +708,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_singleSelect_assertOptionsLoaded_c61edf2e8_1_7" + "step_singleSelect_assertOptionsLoaded_c36a630d1_1_7" ], "preconditions": [], "postconditions": [], @@ -702,7 +718,7 @@ ] }, { - "step_id": "step_singleSelect_assertOption_c61edf2e8_1_7", + "step_id": "step_singleSelect_assertOption_c36a630d1_1_7", "agent": "assertion", "tool": "", "parameters": {}, @@ -712,7 +728,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_singleSelect_filter_c61edf2e8_1_7" + "step_singleSelect_filter_c36a630d1_1_7" ], "preconditions": [], "postconditions": [], @@ -723,7 +739,7 @@ ] }, { - "step_id": "step_singleSelect_confirm_c61edf2e8_1_7", + "step_id": "step_singleSelect_confirm_c36a630d1_1_7", "agent": "interaction", "tool": "key_press", "parameters": { @@ -735,7 +751,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_singleSelect_assertOption_c61edf2e8_1_7" + "step_singleSelect_assertOption_c36a630d1_1_7" ], "preconditions": [], "postconditions": [], @@ -745,7 +761,7 @@ ] }, { - "step_id": "step_singleSelect_assertQuestion_c61edf2e8_1_8", + "step_id": "step_singleSelect_assertQuestion_c36a630d1_1_8", "agent": "assertion", "tool": "", "parameters": {}, @@ -755,7 +771,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_singleSelect_confirm_c61edf2e8_1_7" + "step_singleSelect_confirm_c36a630d1_1_7" ], "preconditions": [], "postconditions": [], @@ -766,17 +782,17 @@ ] }, { - "step_id": "step_singleSelect_assertOptionsLoaded_c61edf2e8_1_8", + "step_id": "step_singleSelect_assertOptionsLoaded_c36a630d1_1_8", "agent": "assertion", "tool": "", "parameters": {}, - "description": "@assertion the prompt titled Service for Large Language Model (LLM) lists at least one option below its input box.", + "description": "@assertion the prompt titled Service for Large Language Model (LLM) has finished loading and lists at least one selectable option.", "content_refs": [], "timeout": 120, "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_singleSelect_assertQuestion_c61edf2e8_1_8" + "step_singleSelect_assertQuestion_c36a630d1_1_8" ], "preconditions": [], "postconditions": [], @@ -787,7 +803,7 @@ ] }, { - "step_id": "step_singleSelect_filter_c61edf2e8_1_8", + "step_id": "step_singleSelect_filter_c36a630d1_1_8", "agent": "interaction", "tool": "type_text", "parameters": { @@ -799,7 +815,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_singleSelect_assertOptionsLoaded_c61edf2e8_1_8" + "step_singleSelect_assertOptionsLoaded_c36a630d1_1_8" ], "preconditions": [], "postconditions": [], @@ -809,7 +825,7 @@ ] }, { - "step_id": "step_singleSelect_assertOption_c61edf2e8_1_8", + "step_id": "step_singleSelect_assertOption_c36a630d1_1_8", "agent": "assertion", "tool": "", "parameters": {}, @@ -819,7 +835,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_singleSelect_filter_c61edf2e8_1_8" + "step_singleSelect_filter_c36a630d1_1_8" ], "preconditions": [], "postconditions": [], @@ -830,7 +846,7 @@ ] }, { - "step_id": "step_singleSelect_confirm_c61edf2e8_1_8", + "step_id": "step_singleSelect_confirm_c36a630d1_1_8", "agent": "interaction", "tool": "key_press", "parameters": { @@ -842,7 +858,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_singleSelect_assertOption_c61edf2e8_1_8" + "step_singleSelect_assertOption_c36a630d1_1_8" ], "preconditions": [], "postconditions": [], @@ -852,7 +868,7 @@ ] }, { - "step_id": "step_textInput_assertQuestion_c61edf2e8_1_9", + "step_id": "step_textInput_assertQuestion_c36a630d1_1_9", "agent": "assertion", "tool": "", "parameters": {}, @@ -862,7 +878,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_singleSelect_confirm_c61edf2e8_1_8" + "step_singleSelect_confirm_c36a630d1_1_8" ], "preconditions": [], "postconditions": [], @@ -873,11 +889,11 @@ ] }, { - "step_id": "step_textInput_input_c61edf2e8_1_9", + "step_id": "step_textInput_input_c36a630d1_1_9", "agent": "interaction", "tool": "type_text", "parameters": { - "text": "${{secret:OPENAI_API_KEY}}" + "text": "${{secret:AZURE_OPENAI_API_KEY}}" }, "description": "Type the authored value into the active text prompt.", "content_refs": [], @@ -885,7 +901,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_textInput_assertQuestion_c61edf2e8_1_9" + "step_textInput_assertQuestion_c36a630d1_1_9" ], "preconditions": [], "postconditions": [], @@ -895,7 +911,7 @@ ] }, { - "step_id": "step_textInput_confirm_c61edf2e8_1_9", + "step_id": "step_textInput_confirm_c36a630d1_1_9", "agent": "interaction", "tool": "key_press", "parameters": { @@ -907,7 +923,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_textInput_input_c61edf2e8_1_9" + "step_textInput_input_c36a630d1_1_9" ], "preconditions": [], "postconditions": [], @@ -917,7 +933,7 @@ ] }, { - "step_id": "step_singleSelect_assertQuestion_c61edf2e8_1_10", + "step_id": "step_singleSelect_assertQuestion_c36a630d1_1_10", "agent": "assertion", "tool": "", "parameters": {}, @@ -927,7 +943,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_textInput_confirm_c61edf2e8_1_9" + "step_textInput_confirm_c36a630d1_1_9" ], "preconditions": [], "postconditions": [], @@ -938,17 +954,17 @@ ] }, { - "step_id": "step_singleSelect_assertOptionsLoaded_c61edf2e8_1_10", + "step_id": "step_singleSelect_assertOptionsLoaded_c36a630d1_1_10", "agent": "assertion", "tool": "", "parameters": {}, - "description": "@assertion the prompt titled Programming Language lists at least one option below its input box.", + "description": "@assertion the prompt titled Programming Language has finished loading and lists at least one selectable option.", "content_refs": [], "timeout": 120, "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_singleSelect_assertQuestion_c61edf2e8_1_10" + "step_singleSelect_assertQuestion_c36a630d1_1_10" ], "preconditions": [], "postconditions": [], @@ -959,7 +975,7 @@ ] }, { - "step_id": "step_singleSelect_filter_c61edf2e8_1_10", + "step_id": "step_singleSelect_filter_c36a630d1_1_10", "agent": "interaction", "tool": "type_text", "parameters": { @@ -971,7 +987,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_singleSelect_assertOptionsLoaded_c61edf2e8_1_10" + "step_singleSelect_assertOptionsLoaded_c36a630d1_1_10" ], "preconditions": [], "postconditions": [], @@ -981,7 +997,7 @@ ] }, { - "step_id": "step_singleSelect_assertOption_c61edf2e8_1_10", + "step_id": "step_singleSelect_assertOption_c36a630d1_1_10", "agent": "assertion", "tool": "", "parameters": {}, @@ -991,7 +1007,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_singleSelect_filter_c61edf2e8_1_10" + "step_singleSelect_filter_c36a630d1_1_10" ], "preconditions": [], "postconditions": [], @@ -1002,7 +1018,7 @@ ] }, { - "step_id": "step_singleSelect_confirm_c61edf2e8_1_10", + "step_id": "step_singleSelect_confirm_c36a630d1_1_10", "agent": "interaction", "tool": "key_press", "parameters": { @@ -1014,7 +1030,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_singleSelect_assertOption_c61edf2e8_1_10" + "step_singleSelect_assertOption_c36a630d1_1_10" ], "preconditions": [], "postconditions": [], @@ -1024,7 +1040,7 @@ ] }, { - "step_id": "step_confirmOption_assertPrompt_c61edf2e8_1_11", + "step_id": "step_confirmOption_assertPrompt_c36a630d1_1_11", "agent": "assertion", "tool": "", "parameters": {}, @@ -1034,7 +1050,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_singleSelect_confirm_c61edf2e8_1_10" + "step_singleSelect_confirm_c36a630d1_1_10" ], "preconditions": [], "postconditions": [], @@ -1046,7 +1062,7 @@ ] }, { - "step_id": "step_confirmOption_confirm_c61edf2e8_1_11", + "step_id": "step_confirmOption_confirm_c36a630d1_1_11", "agent": "interaction", "tool": "key_press", "parameters": { @@ -1058,7 +1074,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_confirmOption_assertPrompt_c61edf2e8_1_11" + "step_confirmOption_assertPrompt_c36a630d1_1_11" ], "preconditions": [ "dhash:364:74:16:5:08056a9a5d5516b6", @@ -1073,7 +1089,7 @@ ] }, { - "step_id": "step_textInput_assertQuestion_c61edf2e8_1_12", + "step_id": "step_textInput_assertQuestion_c36a630d1_1_12", "agent": "assertion", "tool": "", "parameters": {}, @@ -1083,7 +1099,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_confirmOption_confirm_c61edf2e8_1_11" + "step_confirmOption_confirm_c36a630d1_1_11" ], "preconditions": [], "postconditions": [], @@ -1094,7 +1110,7 @@ ] }, { - "step_id": "step_textInput_input_c61edf2e8_1_12", + "step_id": "step_textInput_input_c36a630d1_1_12", "agent": "interaction", "tool": "type_text", "parameters": { @@ -1106,7 +1122,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_textInput_assertQuestion_c61edf2e8_1_12" + "step_textInput_assertQuestion_c36a630d1_1_12" ], "preconditions": [], "postconditions": [], @@ -1116,7 +1132,7 @@ ] }, { - "step_id": "step_textInput_confirm_c61edf2e8_1_12", + "step_id": "step_textInput_confirm_c36a630d1_1_12", "agent": "interaction", "tool": "key_press", "parameters": { @@ -1128,7 +1144,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_textInput_input_c61edf2e8_1_12" + "step_textInput_input_c36a630d1_1_12" ], "preconditions": [], "postconditions": [], @@ -1138,7 +1154,7 @@ ] }, { - "step_id": "step_assertProjectWindowReady_assert_c61edf2e8_1_13", + "step_id": "step_assertProjectWindowReady_assert_c36a630d1_1_13", "agent": "assertion", "tool": "", "parameters": {}, @@ -1148,7 +1164,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_textInput_confirm_c61edf2e8_1_12" + "step_textInput_confirm_c36a630d1_1_12" ], "preconditions": [], "postconditions": [], @@ -1159,7 +1175,7 @@ ] }, { - "step_id": "step_checkWorkspaceFiles_verify_c61edf2e8_2_1", + "step_id": "step_checkWorkspaceFiles_verify_c36a630d1_2_1", "agent": "code", "tool": "", "parameters": { @@ -1171,7 +1187,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_assertProjectWindowReady_assert_c61edf2e8_1_13" + "step_assertProjectWindowReady_assert_c36a630d1_1_13" ], "preconditions": [], "postconditions": [], @@ -1182,7 +1198,7 @@ ] }, { - "step_id": "step_checkWorkspaceFiles_verify_c61edf2e8_2_2", + "step_id": "step_checkWorkspaceFiles_verify_c36a630d1_2_2", "agent": "code", "tool": "", "parameters": { @@ -1194,7 +1210,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_checkWorkspaceFiles_verify_c61edf2e8_2_1" + "step_checkWorkspaceFiles_verify_c36a630d1_2_1" ], "preconditions": [], "postconditions": [], @@ -1205,7 +1221,7 @@ ] }, { - "step_id": "step_checkWorkspaceFiles_verify_c61edf2e8_2_3", + "step_id": "step_checkWorkspaceFiles_verify_c36a630d1_2_3", "agent": "code", "tool": "", "parameters": { @@ -1217,7 +1233,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_checkWorkspaceFiles_verify_c61edf2e8_2_2" + "step_checkWorkspaceFiles_verify_c36a630d1_2_2" ], "preconditions": [], "postconditions": [], @@ -1228,7 +1244,7 @@ ] }, { - "step_id": "step_checkWorkspaceFiles_verify_c61edf2e8_2_4", + "step_id": "step_checkWorkspaceFiles_verify_c36a630d1_2_4", "agent": "code", "tool": "", "parameters": { @@ -1240,7 +1256,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_checkWorkspaceFiles_verify_c61edf2e8_2_3" + "step_checkWorkspaceFiles_verify_c36a630d1_2_3" ], "preconditions": [], "postconditions": [], @@ -1251,7 +1267,7 @@ ] }, { - "step_id": "step_checkWorkspaceFiles_verify_c61edf2e8_2_5", + "step_id": "step_checkWorkspaceFiles_verify_c36a630d1_2_5", "agent": "code", "tool": "", "parameters": { @@ -1263,7 +1279,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_checkWorkspaceFiles_verify_c61edf2e8_2_4" + "step_checkWorkspaceFiles_verify_c36a630d1_2_4" ], "preconditions": [], "postconditions": [], @@ -1274,7 +1290,7 @@ ] }, { - "step_id": "step_executeCommand_open_c61edf2e8_3_1", + "step_id": "step_executeCommand_open_c36a630d1_3_1", "agent": "interaction", "tool": "key_press", "parameters": { @@ -1286,7 +1302,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_checkWorkspaceFiles_verify_c61edf2e8_2_5" + "step_checkWorkspaceFiles_verify_c36a630d1_2_5" ], "preconditions": [], "postconditions": [], @@ -1296,7 +1312,7 @@ ] }, { - "step_id": "step_executeCommand_assertPalette_c61edf2e8_3_1", + "step_id": "step_executeCommand_assertPalette_c36a630d1_3_1", "agent": "assertion", "tool": "", "parameters": {}, @@ -1306,7 +1322,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_executeCommand_open_c61edf2e8_3_1" + "step_executeCommand_open_c36a630d1_3_1" ], "preconditions": [], "postconditions": [], @@ -1317,7 +1333,7 @@ ] }, { - "step_id": "step_executeCommand_filter_c61edf2e8_3_1", + "step_id": "step_executeCommand_filter_c36a630d1_3_1", "agent": "interaction", "tool": "type_text", "parameters": { @@ -1329,7 +1345,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_executeCommand_assertPalette_c61edf2e8_3_1" + "step_executeCommand_assertPalette_c36a630d1_3_1" ], "preconditions": [], "postconditions": [], @@ -1339,7 +1355,7 @@ ] }, { - "step_id": "step_executeCommand_assertCommand_c61edf2e8_3_1", + "step_id": "step_executeCommand_assertCommand_c36a630d1_3_1", "agent": "assertion", "tool": "", "parameters": {}, @@ -1349,7 +1365,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_executeCommand_filter_c61edf2e8_3_1" + "step_executeCommand_filter_c36a630d1_3_1" ], "preconditions": [], "postconditions": [], @@ -1360,7 +1376,7 @@ ] }, { - "step_id": "step_executeCommand_execute_c61edf2e8_3_1", + "step_id": "step_executeCommand_execute_c36a630d1_3_1", "agent": "interaction", "tool": "key_press", "parameters": { @@ -1372,7 +1388,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_executeCommand_assertCommand_c61edf2e8_3_1" + "step_executeCommand_assertCommand_c36a630d1_3_1" ], "preconditions": [], "postconditions": [], @@ -1382,7 +1398,7 @@ ] }, { - "step_id": "step_signInAzure_assertOption_c61edf2e8_3_2", + "step_id": "step_signInAzure_assertOption_c36a630d1_3_2", "agent": "assertion", "tool": "", "parameters": {}, @@ -1392,7 +1408,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_executeCommand_execute_c61edf2e8_3_1" + "step_executeCommand_execute_c36a630d1_3_1" ], "preconditions": [], "postconditions": [], @@ -1404,7 +1420,7 @@ ] }, { - "step_id": "step_signInAzure_selectOption_c61edf2e8_3_2", + "step_id": "step_signInAzure_selectOption_c36a630d1_3_2", "agent": "interaction", "tool": "click", "parameters": { @@ -1418,7 +1434,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_signInAzure_assertOption_c61edf2e8_3_2" + "step_signInAzure_assertOption_c36a630d1_3_2" ], "preconditions": [ "dhash:165:127:16:5:5819353567ef55aa", @@ -1432,7 +1448,7 @@ ] }, { - "step_id": "step_signInAzure_confirmSignIn_c61edf2e8_3_2", + "step_id": "step_signInAzure_confirmSignIn_c36a630d1_3_2", "agent": "interaction", "tool": "click", "parameters": { @@ -1446,7 +1462,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_signInAzure_selectOption_c61edf2e8_3_2" + "step_signInAzure_selectOption_c36a630d1_3_2" ], "preconditions": [ "dhash:534:98:16:5:554a54555555468f", @@ -1460,7 +1476,7 @@ ] }, { - "step_id": "step_signInAzure_allow_c61edf2e8_3_2", + "step_id": "step_signInAzure_allow_c36a630d1_3_2", "agent": "interaction", "tool": "click", "parameters": { @@ -1474,7 +1490,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_signInAzure_confirmSignIn_c61edf2e8_3_2" + "step_signInAzure_confirmSignIn_c36a630d1_3_2" ], "preconditions": [ "dhash:457:96:16:5:524d5552564cb3ca", @@ -1488,7 +1504,7 @@ ] }, { - "step_id": "step_signInAzure_focusAccount_c61edf2e8_3_2", + "step_id": "step_signInAzure_focusAccount_c36a630d1_3_2", "agent": "interaction", "tool": "click", "parameters": { @@ -1502,7 +1518,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_signInAzure_allow_c61edf2e8_3_2" + "step_signInAzure_allow_c36a630d1_3_2" ], "preconditions": [ "dhash:432:327:16:5:114c134b4a13b2cc", @@ -1517,7 +1533,7 @@ ] }, { - "step_id": "step_signInAzure_typeAccount_c61edf2e8_3_2", + "step_id": "step_signInAzure_typeAccount_c36a630d1_3_2", "agent": "interaction", "tool": "type_text", "parameters": { @@ -1529,7 +1545,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_signInAzure_focusAccount_c61edf2e8_3_2" + "step_signInAzure_focusAccount_c36a630d1_3_2" ], "preconditions": [ "dhash:512:384:0:20:1b28d0d9e7e4dae4" @@ -1542,7 +1558,7 @@ ] }, { - "step_id": "step_signInAzure_next_c61edf2e8_3_2", + "step_id": "step_signInAzure_next_c36a630d1_3_2", "agent": "interaction", "tool": "click", "parameters": { @@ -1556,7 +1572,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_signInAzure_typeAccount_c61edf2e8_3_2" + "step_signInAzure_typeAccount_c36a630d1_3_2" ], "preconditions": [ "dhash:631:462:16:5:0000000091000000", @@ -1571,7 +1587,7 @@ ] }, { - "step_id": "step_signInAzure_typePassword_c61edf2e8_3_2", + "step_id": "step_signInAzure_typePassword_c36a630d1_3_2", "agent": "interaction", "tool": "type_text", "parameters": { @@ -1583,7 +1599,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_signInAzure_next_c61edf2e8_3_2" + "step_signInAzure_next_c36a630d1_3_2" ], "preconditions": [ "dhash:512:384:0:20:1908f0d9d1e6e6e4" @@ -1597,7 +1613,7 @@ ] }, { - "step_id": "step_signInAzure_submit_c61edf2e8_3_2", + "step_id": "step_signInAzure_submit_c36a630d1_3_2", "agent": "interaction", "tool": "key_press", "parameters": { @@ -1609,7 +1625,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_signInAzure_typePassword_c61edf2e8_3_2" + "step_signInAzure_typePassword_c36a630d1_3_2" ], "preconditions": [ "dhash:512:384:0:20:1908f0d9d1e6e6e4" @@ -1622,7 +1638,7 @@ ] }, { - "step_id": "step_signInAzure_closeBrowser_c61edf2e8_3_2", + "step_id": "step_signInAzure_closeBrowser_c36a630d1_3_2", "agent": "interaction", "tool": "click", "parameters": { @@ -1636,7 +1652,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_signInAzure_submit_c61edf2e8_3_2" + "step_signInAzure_submit_c36a630d1_3_2" ], "preconditions": [ "dhash:991:18:16:5:b020624245454242", @@ -1651,7 +1667,7 @@ ] }, { - "step_id": "step_signInAzure_assertReady_c61edf2e8_3_2", + "step_id": "step_signInAzure_assertReady_c36a630d1_3_2", "agent": "assertion", "tool": "", "parameters": {}, @@ -1661,7 +1677,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_signInAzure_closeBrowser_c61edf2e8_3_2" + "step_signInAzure_closeBrowser_c36a630d1_3_2" ], "preconditions": [], "postconditions": [], @@ -1673,7 +1689,7 @@ ] }, { - "step_id": "step_executeCommand_open_c61edf2e8_4_1", + "step_id": "step_executeCommand_open_c36a630d1_4_1", "agent": "interaction", "tool": "key_press", "parameters": { @@ -1685,7 +1701,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_signInAzure_assertReady_c61edf2e8_3_2" + "step_signInAzure_assertReady_c36a630d1_3_2" ], "preconditions": [], "postconditions": [], @@ -1695,7 +1711,7 @@ ] }, { - "step_id": "step_executeCommand_assertPalette_c61edf2e8_4_1", + "step_id": "step_executeCommand_assertPalette_c36a630d1_4_1", "agent": "assertion", "tool": "", "parameters": {}, @@ -1705,7 +1721,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_executeCommand_open_c61edf2e8_4_1" + "step_executeCommand_open_c36a630d1_4_1" ], "preconditions": [], "postconditions": [], @@ -1716,7 +1732,7 @@ ] }, { - "step_id": "step_executeCommand_filter_c61edf2e8_4_1", + "step_id": "step_executeCommand_filter_c36a630d1_4_1", "agent": "interaction", "tool": "type_text", "parameters": { @@ -1728,7 +1744,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_executeCommand_assertPalette_c61edf2e8_4_1" + "step_executeCommand_assertPalette_c36a630d1_4_1" ], "preconditions": [], "postconditions": [], @@ -1738,7 +1754,7 @@ ] }, { - "step_id": "step_executeCommand_assertCommand_c61edf2e8_4_1", + "step_id": "step_executeCommand_assertCommand_c36a630d1_4_1", "agent": "assertion", "tool": "", "parameters": {}, @@ -1748,7 +1764,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_executeCommand_filter_c61edf2e8_4_1" + "step_executeCommand_filter_c36a630d1_4_1" ], "preconditions": [], "postconditions": [], @@ -1759,7 +1775,7 @@ ] }, { - "step_id": "step_executeCommand_execute_c61edf2e8_4_1", + "step_id": "step_executeCommand_execute_c36a630d1_4_1", "agent": "interaction", "tool": "key_press", "parameters": { @@ -1771,7 +1787,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_executeCommand_assertCommand_c61edf2e8_4_1" + "step_executeCommand_assertCommand_c36a630d1_4_1" ], "preconditions": [], "postconditions": [], @@ -1781,7 +1797,7 @@ ] }, { - "step_id": "step_signInM365FromPicker_assertOption_c61edf2e8_4_2", + "step_id": "step_signInM365FromPicker_assertOption_c36a630d1_4_2", "agent": "assertion", "tool": "", "parameters": {}, @@ -1791,7 +1807,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_executeCommand_execute_c61edf2e8_4_1" + "step_executeCommand_execute_c36a630d1_4_1" ], "preconditions": [], "postconditions": [], @@ -1803,7 +1819,7 @@ ] }, { - "step_id": "step_signInM365FromPicker_selectOption_c61edf2e8_4_2", + "step_id": "step_signInM365FromPicker_selectOption_c36a630d1_4_2", "agent": "interaction", "tool": "click", "parameters": { @@ -1817,7 +1833,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_signInM365FromPicker_assertOption_c61edf2e8_4_2" + "step_signInM365FromPicker_assertOption_c36a630d1_4_2" ], "preconditions": [ "dhash:213:102:16:5:9c63d67674d4c718", @@ -1831,7 +1847,7 @@ ] }, { - "step_id": "step_signInM365FromPicker_confirmSignIn_c61edf2e8_4_2", + "step_id": "step_signInM365FromPicker_confirmSignIn_c36a630d1_4_2", "agent": "interaction", "tool": "click", "parameters": { @@ -1845,7 +1861,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_signInM365FromPicker_selectOption_c61edf2e8_4_2" + "step_signInM365FromPicker_selectOption_c36a630d1_4_2" ], "preconditions": [ "dhash:762:97:16:5:24b1a72ba9aba343", @@ -1859,7 +1875,7 @@ ] }, { - "step_id": "step_signInM365FromPicker_useAnotherAccount_c61edf2e8_4_2", + "step_id": "step_signInM365FromPicker_useAnotherAccount_c36a630d1_4_2", "agent": "interaction", "tool": "click", "parameters": { @@ -1873,7 +1889,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_signInM365FromPicker_confirmSignIn_c61edf2e8_4_2" + "step_signInM365FromPicker_confirmSignIn_c36a630d1_4_2" ], "preconditions": [ "dhash:447:487:16:5:ac534b4aaaaa6a15", @@ -1888,7 +1904,7 @@ ] }, { - "step_id": "step_signInM365FromPicker_typeAccount_c61edf2e8_4_2", + "step_id": "step_signInM365FromPicker_typeAccount_c36a630d1_4_2", "agent": "interaction", "tool": "type_text", "parameters": { @@ -1900,7 +1916,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_signInM365FromPicker_useAnotherAccount_c61edf2e8_4_2" + "step_signInM365FromPicker_useAnotherAccount_c36a630d1_4_2" ], "preconditions": [ "dhash:512:384:0:20:1392f8d8c6e6dae4" @@ -1913,7 +1929,7 @@ ] }, { - "step_id": "step_signInM365FromPicker_next_c61edf2e8_4_2", + "step_id": "step_signInM365FromPicker_next_c36a630d1_4_2", "agent": "interaction", "tool": "click", "parameters": { @@ -1927,7 +1943,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_signInM365FromPicker_typeAccount_c61edf2e8_4_2" + "step_signInM365FromPicker_typeAccount_c36a630d1_4_2" ], "preconditions": [ "dhash:655:505:16:5:0000000080400020", @@ -1942,7 +1958,7 @@ ] }, { - "step_id": "step_signInM365FromPicker_typePassword_c61edf2e8_4_2", + "step_id": "step_signInM365FromPicker_typePassword_c36a630d1_4_2", "agent": "interaction", "tool": "type_text", "parameters": { @@ -1954,7 +1970,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_signInM365FromPicker_next_c61edf2e8_4_2" + "step_signInM365FromPicker_next_c36a630d1_4_2" ], "preconditions": [ "dhash:512:384:0:20:1392e8d8d9f6e6e4" @@ -1967,7 +1983,7 @@ ] }, { - "step_id": "step_signInM365FromPicker_submit_c61edf2e8_4_2", + "step_id": "step_signInM365FromPicker_submit_c36a630d1_4_2", "agent": "interaction", "tool": "key_press", "parameters": { @@ -1979,7 +1995,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_signInM365FromPicker_typePassword_c61edf2e8_4_2" + "step_signInM365FromPicker_typePassword_c36a630d1_4_2" ], "preconditions": [ "dhash:512:384:0:20:1392e8d8d9f6e6e4" @@ -1992,7 +2008,7 @@ ] }, { - "step_id": "step_signInM365FromPicker_closeBrowser_c61edf2e8_4_2", + "step_id": "step_signInM365FromPicker_closeBrowser_c36a630d1_4_2", "agent": "interaction", "tool": "click", "parameters": { @@ -2006,7 +2022,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_signInM365FromPicker_submit_c61edf2e8_4_2" + "step_signInM365FromPicker_submit_c36a630d1_4_2" ], "preconditions": [ "dhash:1008:19:16:5:a322c95a325ac922", @@ -2021,7 +2037,7 @@ ] }, { - "step_id": "step_signInM365FromPicker_assertReady_c61edf2e8_4_2", + "step_id": "step_signInM365FromPicker_assertReady_c36a630d1_4_2", "agent": "assertion", "tool": "", "parameters": {}, @@ -2031,7 +2047,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_signInM365FromPicker_closeBrowser_c61edf2e8_4_2" + "step_signInM365FromPicker_closeBrowser_c36a630d1_4_2" ], "preconditions": [], "postconditions": [], @@ -2043,7 +2059,7 @@ ] }, { - "step_id": "step_executeCommand_open_c61edf2e8_5_1", + "step_id": "step_executeCommand_open_c36a630d1_5_1", "agent": "interaction", "tool": "key_press", "parameters": { @@ -2055,7 +2071,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_signInM365FromPicker_assertReady_c61edf2e8_4_2" + "step_signInM365FromPicker_assertReady_c36a630d1_4_2" ], "preconditions": [], "postconditions": [], @@ -2065,7 +2081,7 @@ ] }, { - "step_id": "step_executeCommand_assertPalette_c61edf2e8_5_1", + "step_id": "step_executeCommand_assertPalette_c36a630d1_5_1", "agent": "assertion", "tool": "", "parameters": {}, @@ -2075,7 +2091,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_executeCommand_open_c61edf2e8_5_1" + "step_executeCommand_open_c36a630d1_5_1" ], "preconditions": [], "postconditions": [], @@ -2086,7 +2102,115 @@ ] }, { - "step_id": "step_executeCommand_filter_c61edf2e8_5_1", + "step_id": "step_executeCommand_filter_c36a630d1_5_1", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Notifications: Clear All Notifications" + }, + "description": "Type the resolved command title into the active Command Palette.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertPalette_c36a630d1_5_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertCommand_c36a630d1_5_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Command Palette input box reads >Notifications: Clear All Notifications and the highlighted command listed under it is titled Notifications: Clear All Notifications.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_filter_c36a630d1_5_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_execute_c36a630d1_5_1", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to execute the selected Command Palette command.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertCommand_c36a630d1_5_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_open_c36a630d1_5_2", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "f1" + }, + "description": "Press the F1 key to open the Command Palette in Visual Studio Code.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_execute_c36a630d1_5_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertPalette_c36a630d1_5_2", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Visual Studio Code Command Palette is visible with a > character in its input box and is ready to accept a command search.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_open_c36a630d1_5_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_filter_c36a630d1_5_2", "agent": "interaction", "tool": "type_text", "parameters": { @@ -2098,7 +2222,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_executeCommand_assertPalette_c61edf2e8_5_1" + "step_executeCommand_assertPalette_c36a630d1_5_2" ], "preconditions": [], "postconditions": [], @@ -2108,7 +2232,7 @@ ] }, { - "step_id": "step_executeCommand_assertCommand_c61edf2e8_5_1", + "step_id": "step_executeCommand_assertCommand_c36a630d1_5_2", "agent": "assertion", "tool": "", "parameters": {}, @@ -2118,7 +2242,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_executeCommand_filter_c61edf2e8_5_1" + "step_executeCommand_filter_c36a630d1_5_2" ], "preconditions": [], "postconditions": [], @@ -2129,7 +2253,7 @@ ] }, { - "step_id": "step_executeCommand_execute_c61edf2e8_5_1", + "step_id": "step_executeCommand_execute_c36a630d1_5_2", "agent": "interaction", "tool": "key_press", "parameters": { @@ -2141,7 +2265,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_executeCommand_assertCommand_c61edf2e8_5_1" + "step_executeCommand_assertCommand_c36a630d1_5_2" ], "preconditions": [], "postconditions": [], @@ -2151,7 +2275,7 @@ ] }, { - "step_id": "step_executeCommand_open_c61edf2e8_5_2", + "step_id": "step_executeCommand_open_c36a630d1_5_3", "agent": "interaction", "tool": "key_press", "parameters": { @@ -2163,7 +2287,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_executeCommand_execute_c61edf2e8_5_1" + "step_executeCommand_execute_c36a630d1_5_2" ], "preconditions": [], "postconditions": [], @@ -2173,7 +2297,7 @@ ] }, { - "step_id": "step_executeCommand_assertPalette_c61edf2e8_5_2", + "step_id": "step_executeCommand_assertPalette_c36a630d1_5_3", "agent": "assertion", "tool": "", "parameters": {}, @@ -2183,7 +2307,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_executeCommand_open_c61edf2e8_5_2" + "step_executeCommand_open_c36a630d1_5_3" ], "preconditions": [], "postconditions": [], @@ -2194,7 +2318,7 @@ ] }, { - "step_id": "step_executeCommand_filter_c61edf2e8_5_2", + "step_id": "step_executeCommand_filter_c36a630d1_5_3", "agent": "interaction", "tool": "type_text", "parameters": { @@ -2206,7 +2330,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_executeCommand_assertPalette_c61edf2e8_5_2" + "step_executeCommand_assertPalette_c36a630d1_5_3" ], "preconditions": [], "postconditions": [], @@ -2216,7 +2340,7 @@ ] }, { - "step_id": "step_executeCommand_assertCommand_c61edf2e8_5_2", + "step_id": "step_executeCommand_assertCommand_c36a630d1_5_3", "agent": "assertion", "tool": "", "parameters": {}, @@ -2226,7 +2350,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_executeCommand_filter_c61edf2e8_5_2" + "step_executeCommand_filter_c36a630d1_5_3" ], "preconditions": [], "postconditions": [], @@ -2237,7 +2361,7 @@ ] }, { - "step_id": "step_executeCommand_execute_c61edf2e8_5_2", + "step_id": "step_executeCommand_execute_c36a630d1_5_3", "agent": "interaction", "tool": "key_press", "parameters": { @@ -2249,7 +2373,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_executeCommand_assertCommand_c61edf2e8_5_2" + "step_executeCommand_assertCommand_c36a630d1_5_3" ], "preconditions": [], "postconditions": [], @@ -2259,7 +2383,7 @@ ] }, { - "step_id": "step_singleSelect_assertQuestion_c61edf2e8_5_3", + "step_id": "step_singleSelect_assertQuestion_c36a630d1_5_4", "agent": "assertion", "tool": "", "parameters": {}, @@ -2269,7 +2393,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_executeCommand_execute_c61edf2e8_5_2" + "step_executeCommand_execute_c36a630d1_5_3" ], "preconditions": [], "postconditions": [], @@ -2280,17 +2404,17 @@ ] }, { - "step_id": "step_singleSelect_assertOptionsLoaded_c61edf2e8_5_3", + "step_id": "step_singleSelect_assertOptionsLoaded_c36a630d1_5_4", "agent": "assertion", "tool": "", "parameters": {}, - "description": "@assertion the prompt titled Select a resource group lists at least one option below its input box.", + "description": "@assertion the prompt titled Select a resource group has finished loading and lists at least one selectable option.", "content_refs": [], "timeout": 120, "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_singleSelect_assertQuestion_c61edf2e8_5_3" + "step_singleSelect_assertQuestion_c36a630d1_5_4" ], "preconditions": [], "postconditions": [], @@ -2301,7 +2425,7 @@ ] }, { - "step_id": "step_singleSelect_filter_c61edf2e8_5_3", + "step_id": "step_singleSelect_filter_c36a630d1_5_4", "agent": "interaction", "tool": "type_text", "parameters": { @@ -2313,7 +2437,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_singleSelect_assertOptionsLoaded_c61edf2e8_5_3" + "step_singleSelect_assertOptionsLoaded_c36a630d1_5_4" ], "preconditions": [], "postconditions": [], @@ -2323,7 +2447,7 @@ ] }, { - "step_id": "step_singleSelect_assertOption_c61edf2e8_5_3", + "step_id": "step_singleSelect_assertOption_c36a630d1_5_4", "agent": "assertion", "tool": "", "parameters": {}, @@ -2333,7 +2457,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_singleSelect_filter_c61edf2e8_5_3" + "step_singleSelect_filter_c36a630d1_5_4" ], "preconditions": [], "postconditions": [], @@ -2344,7 +2468,7 @@ ] }, { - "step_id": "step_singleSelect_confirm_c61edf2e8_5_3", + "step_id": "step_singleSelect_confirm_c36a630d1_5_4", "agent": "interaction", "tool": "key_press", "parameters": { @@ -2356,7 +2480,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_singleSelect_assertOption_c61edf2e8_5_3" + "step_singleSelect_assertOption_c36a630d1_5_4" ], "preconditions": [], "postconditions": [], @@ -2366,7 +2490,7 @@ ] }, { - "step_id": "step_textInput_assertQuestion_c61edf2e8_5_4", + "step_id": "step_textInput_assertQuestion_c36a630d1_5_5", "agent": "assertion", "tool": "", "parameters": {}, @@ -2376,7 +2500,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_singleSelect_confirm_c61edf2e8_5_3" + "step_singleSelect_confirm_c36a630d1_5_4" ], "preconditions": [], "postconditions": [], @@ -2387,7 +2511,7 @@ ] }, { - "step_id": "step_textInput_input_c61edf2e8_5_4", + "step_id": "step_textInput_input_c36a630d1_5_5", "agent": "interaction", "tool": "type_text", "parameters": { @@ -2399,7 +2523,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_textInput_assertQuestion_c61edf2e8_5_4" + "step_textInput_assertQuestion_c36a630d1_5_5" ], "preconditions": [], "postconditions": [], @@ -2409,7 +2533,7 @@ ] }, { - "step_id": "step_textInput_confirm_c61edf2e8_5_4", + "step_id": "step_textInput_confirm_c36a630d1_5_5", "agent": "interaction", "tool": "key_press", "parameters": { @@ -2421,7 +2545,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_textInput_input_c61edf2e8_5_4" + "step_textInput_input_c36a630d1_5_5" ], "preconditions": [], "postconditions": [], @@ -2431,7 +2555,7 @@ ] }, { - "step_id": "step_singleSelect_assertQuestion_c61edf2e8_5_5", + "step_id": "step_singleSelect_assertQuestion_c36a630d1_5_6", "agent": "assertion", "tool": "", "parameters": {}, @@ -2441,7 +2565,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_textInput_confirm_c61edf2e8_5_4" + "step_textInput_confirm_c36a630d1_5_5" ], "preconditions": [], "postconditions": [], @@ -2452,17 +2576,17 @@ ] }, { - "step_id": "step_singleSelect_assertOptionsLoaded_c61edf2e8_5_5", + "step_id": "step_singleSelect_assertOptionsLoaded_c36a630d1_5_6", "agent": "assertion", "tool": "", "parameters": {}, - "description": "@assertion the prompt titled Location for the new resource group lists at least one option below its input box.", + "description": "@assertion the prompt titled Location for the new resource group has finished loading and lists at least one selectable option.", "content_refs": [], "timeout": 120, "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_singleSelect_assertQuestion_c61edf2e8_5_5" + "step_singleSelect_assertQuestion_c36a630d1_5_6" ], "preconditions": [], "postconditions": [], @@ -2473,7 +2597,7 @@ ] }, { - "step_id": "step_singleSelect_filter_c61edf2e8_5_5", + "step_id": "step_singleSelect_filter_c36a630d1_5_6", "agent": "interaction", "tool": "type_text", "parameters": { @@ -2485,7 +2609,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_singleSelect_assertOptionsLoaded_c61edf2e8_5_5" + "step_singleSelect_assertOptionsLoaded_c36a630d1_5_6" ], "preconditions": [], "postconditions": [], @@ -2495,7 +2619,7 @@ ] }, { - "step_id": "step_singleSelect_assertOption_c61edf2e8_5_5", + "step_id": "step_singleSelect_assertOption_c36a630d1_5_6", "agent": "assertion", "tool": "", "parameters": {}, @@ -2505,7 +2629,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_singleSelect_filter_c61edf2e8_5_5" + "step_singleSelect_filter_c36a630d1_5_6" ], "preconditions": [], "postconditions": [], @@ -2516,7 +2640,7 @@ ] }, { - "step_id": "step_singleSelect_confirm_c61edf2e8_5_5", + "step_id": "step_singleSelect_confirm_c36a630d1_5_6", "agent": "interaction", "tool": "key_press", "parameters": { @@ -2528,7 +2652,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_singleSelect_assertOption_c61edf2e8_5_5" + "step_singleSelect_assertOption_c36a630d1_5_6" ], "preconditions": [], "postconditions": [], @@ -2538,7 +2662,7 @@ ] }, { - "step_id": "step_clickPrimaryAction_assertDialog_c61edf2e8_5_6", + "step_id": "step_clickPrimaryAction_assertDialog_c36a630d1_5_7", "agent": "assertion", "tool": "", "parameters": {}, @@ -2548,7 +2672,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_singleSelect_confirm_c61edf2e8_5_5" + "step_singleSelect_confirm_c36a630d1_5_6" ], "preconditions": [], "postconditions": [], @@ -2559,7 +2683,7 @@ ] }, { - "step_id": "step_clickPrimaryAction_click_c61edf2e8_5_6", + "step_id": "step_clickPrimaryAction_click_c36a630d1_5_7", "agent": "interaction", "tool": "key_press", "parameters": { @@ -2571,7 +2695,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_clickPrimaryAction_assertDialog_c61edf2e8_5_6" + "step_clickPrimaryAction_assertDialog_c36a630d1_5_7" ], "preconditions": [], "postconditions": [], @@ -2581,7 +2705,7 @@ ] }, { - "step_id": "step_assertNotificationContains_assert_c61edf2e8_5_7", + "step_id": "step_assertNotificationContains_assert_c36a630d1_5_8", "agent": "assertion", "tool": "", "parameters": {}, @@ -2591,18 +2715,126 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_clickPrimaryAction_click_c61edf2e8_5_6" + "step_clickPrimaryAction_click_c36a630d1_5_7" ], "preconditions": [], "postconditions": [], "tags": [ "component:notifications", "action:assert-contains", - "step_retry_timeout: 300" + "step_retry_timeout: 900" + ] + }, + { + "step_id": "step_executeCommand_open_c36a630d1_6_1", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "f1" + }, + "description": "Press the F1 key to open the Command Palette in Visual Studio Code.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_assertNotificationContains_assert_c36a630d1_5_8" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertPalette_c36a630d1_6_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Visual Studio Code Command Palette is visible with a > character in its input box and is ready to accept a command search.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_open_c36a630d1_6_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_filter_c36a630d1_6_1", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Notifications: Clear All Notifications" + }, + "description": "Type the resolved command title into the active Command Palette.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertPalette_c36a630d1_6_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertCommand_c36a630d1_6_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Command Palette input box reads >Notifications: Clear All Notifications and the highlighted command listed under it is titled Notifications: Clear All Notifications.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_filter_c36a630d1_6_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" ] }, { - "step_id": "step_executeCommand_open_c61edf2e8_6_1", + "step_id": "step_executeCommand_execute_c36a630d1_6_1", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to execute the selected Command Palette command.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertCommand_c36a630d1_6_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_open_c36a630d1_6_2", "agent": "interaction", "tool": "key_press", "parameters": { @@ -2614,7 +2846,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_assertNotificationContains_assert_c61edf2e8_5_7" + "step_executeCommand_execute_c36a630d1_6_1" ], "preconditions": [], "postconditions": [], @@ -2624,7 +2856,7 @@ ] }, { - "step_id": "step_executeCommand_assertPalette_c61edf2e8_6_1", + "step_id": "step_executeCommand_assertPalette_c36a630d1_6_2", "agent": "assertion", "tool": "", "parameters": {}, @@ -2634,7 +2866,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_executeCommand_open_c61edf2e8_6_1" + "step_executeCommand_open_c36a630d1_6_2" ], "preconditions": [], "postconditions": [], @@ -2645,7 +2877,7 @@ ] }, { - "step_id": "step_executeCommand_filter_c61edf2e8_6_1", + "step_id": "step_executeCommand_filter_c36a630d1_6_2", "agent": "interaction", "tool": "type_text", "parameters": { @@ -2657,7 +2889,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_executeCommand_assertPalette_c61edf2e8_6_1" + "step_executeCommand_assertPalette_c36a630d1_6_2" ], "preconditions": [], "postconditions": [], @@ -2667,7 +2899,7 @@ ] }, { - "step_id": "step_executeCommand_assertCommand_c61edf2e8_6_1", + "step_id": "step_executeCommand_assertCommand_c36a630d1_6_2", "agent": "assertion", "tool": "", "parameters": {}, @@ -2677,7 +2909,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_executeCommand_filter_c61edf2e8_6_1" + "step_executeCommand_filter_c36a630d1_6_2" ], "preconditions": [], "postconditions": [], @@ -2688,7 +2920,7 @@ ] }, { - "step_id": "step_executeCommand_execute_c61edf2e8_6_1", + "step_id": "step_executeCommand_execute_c36a630d1_6_2", "agent": "interaction", "tool": "key_press", "parameters": { @@ -2700,7 +2932,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_executeCommand_assertCommand_c61edf2e8_6_1" + "step_executeCommand_assertCommand_c36a630d1_6_2" ], "preconditions": [], "postconditions": [], @@ -2710,7 +2942,7 @@ ] }, { - "step_id": "step_executeCommand_open_c61edf2e8_6_2", + "step_id": "step_executeCommand_open_c36a630d1_6_3", "agent": "interaction", "tool": "key_press", "parameters": { @@ -2722,7 +2954,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_executeCommand_execute_c61edf2e8_6_1" + "step_executeCommand_execute_c36a630d1_6_2" ], "preconditions": [], "postconditions": [], @@ -2732,7 +2964,7 @@ ] }, { - "step_id": "step_executeCommand_assertPalette_c61edf2e8_6_2", + "step_id": "step_executeCommand_assertPalette_c36a630d1_6_3", "agent": "assertion", "tool": "", "parameters": {}, @@ -2742,7 +2974,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_executeCommand_open_c61edf2e8_6_2" + "step_executeCommand_open_c36a630d1_6_3" ], "preconditions": [], "postconditions": [], @@ -2753,7 +2985,7 @@ ] }, { - "step_id": "step_executeCommand_filter_c61edf2e8_6_2", + "step_id": "step_executeCommand_filter_c36a630d1_6_3", "agent": "interaction", "tool": "type_text", "parameters": { @@ -2765,7 +2997,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_executeCommand_assertPalette_c61edf2e8_6_2" + "step_executeCommand_assertPalette_c36a630d1_6_3" ], "preconditions": [], "postconditions": [], @@ -2775,7 +3007,7 @@ ] }, { - "step_id": "step_executeCommand_assertCommand_c61edf2e8_6_2", + "step_id": "step_executeCommand_assertCommand_c36a630d1_6_3", "agent": "assertion", "tool": "", "parameters": {}, @@ -2785,7 +3017,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_executeCommand_filter_c61edf2e8_6_2" + "step_executeCommand_filter_c36a630d1_6_3" ], "preconditions": [], "postconditions": [], @@ -2796,7 +3028,7 @@ ] }, { - "step_id": "step_executeCommand_execute_c61edf2e8_6_2", + "step_id": "step_executeCommand_execute_c36a630d1_6_3", "agent": "interaction", "tool": "key_press", "parameters": { @@ -2808,7 +3040,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_executeCommand_assertCommand_c61edf2e8_6_2" + "step_executeCommand_assertCommand_c36a630d1_6_3" ], "preconditions": [], "postconditions": [], @@ -2818,7 +3050,7 @@ ] }, { - "step_id": "step_clickPrimaryAction_assertDialog_c61edf2e8_6_3", + "step_id": "step_clickPrimaryAction_assertDialog_c36a630d1_6_4", "agent": "assertion", "tool": "", "parameters": {}, @@ -2828,7 +3060,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_executeCommand_execute_c61edf2e8_6_2" + "step_executeCommand_execute_c36a630d1_6_3" ], "preconditions": [], "postconditions": [], @@ -2839,7 +3071,7 @@ ] }, { - "step_id": "step_clickPrimaryAction_click_c61edf2e8_6_3", + "step_id": "step_clickPrimaryAction_click_c36a630d1_6_4", "agent": "interaction", "tool": "key_press", "parameters": { @@ -2851,7 +3083,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_clickPrimaryAction_assertDialog_c61edf2e8_6_3" + "step_clickPrimaryAction_assertDialog_c36a630d1_6_4" ], "preconditions": [], "postconditions": [], @@ -2861,7 +3093,7 @@ ] }, { - "step_id": "step_assertNotificationContains_assert_c61edf2e8_6_4", + "step_id": "step_assertNotificationContains_assert_c36a630d1_6_5", "agent": "assertion", "tool": "", "parameters": {}, @@ -2871,18 +3103,18 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_clickPrimaryAction_click_c61edf2e8_6_3" + "step_clickPrimaryAction_click_c36a630d1_6_4" ], "preconditions": [], "postconditions": [], "tags": [ "component:notifications", "action:assert-contains", - "step_retry_timeout: 300" + "step_retry_timeout: 900" ] }, { - "step_id": "step_executeCommand_open_c61edf2e8_7_1", + "step_id": "step_executeCommand_open_c36a630d1_7_1", "agent": "interaction", "tool": "key_press", "parameters": { @@ -2894,7 +3126,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_assertNotificationContains_assert_c61edf2e8_6_4" + "step_assertNotificationContains_assert_c36a630d1_6_5" ], "preconditions": [], "postconditions": [], @@ -2904,7 +3136,7 @@ ] }, { - "step_id": "step_executeCommand_assertPalette_c61edf2e8_7_1", + "step_id": "step_executeCommand_assertPalette_c36a630d1_7_1", "agent": "assertion", "tool": "", "parameters": {}, @@ -2914,7 +3146,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_executeCommand_open_c61edf2e8_7_1" + "step_executeCommand_open_c36a630d1_7_1" ], "preconditions": [], "postconditions": [], @@ -2925,7 +3157,7 @@ ] }, { - "step_id": "step_executeCommand_filter_c61edf2e8_7_1", + "step_id": "step_executeCommand_filter_c36a630d1_7_1", "agent": "interaction", "tool": "type_text", "parameters": { @@ -2937,7 +3169,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_executeCommand_assertPalette_c61edf2e8_7_1" + "step_executeCommand_assertPalette_c36a630d1_7_1" ], "preconditions": [], "postconditions": [], @@ -2947,7 +3179,7 @@ ] }, { - "step_id": "step_executeCommand_assertCommand_c61edf2e8_7_1", + "step_id": "step_executeCommand_assertCommand_c36a630d1_7_1", "agent": "assertion", "tool": "", "parameters": {}, @@ -2957,7 +3189,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_executeCommand_filter_c61edf2e8_7_1" + "step_executeCommand_filter_c36a630d1_7_1" ], "preconditions": [], "postconditions": [], @@ -2968,7 +3200,7 @@ ] }, { - "step_id": "step_executeCommand_execute_c61edf2e8_7_1", + "step_id": "step_executeCommand_execute_c36a630d1_7_1", "agent": "interaction", "tool": "key_press", "parameters": { @@ -2980,7 +3212,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_executeCommand_assertCommand_c61edf2e8_7_1" + "step_executeCommand_assertCommand_c36a630d1_7_1" ], "preconditions": [], "postconditions": [], @@ -2990,7 +3222,7 @@ ] }, { - "step_id": "step_filterOption_filter_c61edf2e8_7_2", + "step_id": "step_filterOption_filter_c36a630d1_7_2", "agent": "interaction", "tool": "type_text", "parameters": { @@ -3002,7 +3234,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_executeCommand_execute_c61edf2e8_7_1" + "step_executeCommand_execute_c36a630d1_7_1" ], "preconditions": [], "postconditions": [], @@ -3012,7 +3244,7 @@ ] }, { - "step_id": "step_filterOption_assertOption_c61edf2e8_7_2", + "step_id": "step_filterOption_assertOption_c36a630d1_7_2", "agent": "assertion", "tool": "", "parameters": {}, @@ -3022,7 +3254,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_filterOption_filter_c61edf2e8_7_2" + "step_filterOption_filter_c36a630d1_7_2" ], "preconditions": [], "postconditions": [], @@ -3033,7 +3265,7 @@ ] }, { - "step_id": "step_filterOption_confirm_c61edf2e8_7_2", + "step_id": "step_filterOption_confirm_c36a630d1_7_2", "agent": "interaction", "tool": "key_press", "parameters": { @@ -3045,7 +3277,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_filterOption_assertOption_c61edf2e8_7_2" + "step_filterOption_assertOption_c36a630d1_7_2" ], "preconditions": [], "postconditions": [], @@ -3055,7 +3287,140 @@ ] }, { - "step_id": "step_assertReady_assertReady_c61edf2e8_7_3", + "step_id": "step_browserM365PasswordSignIn_assertPassword_c36a630d1_7_3", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Microsoft sign-in page in Chrome names ${{env:M365_ACCOUNT_NAME}} and asks for that account's password.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_filterOption_confirm_c36a630d1_7_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:authentication", + "surface:browser", + "step_retry_timeout: 300" + ] + }, + { + "step_id": "step_browserM365PasswordSignIn_focusPassword_c36a630d1_7_3", + "agent": "interaction", + "tool": "click", + "parameters": { + "button": "left", + "x": 400, + "y": 405 + }, + "description": "Click the password input on the Microsoft sign-in page to move focus out of the browser address bar.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_browserM365PasswordSignIn_assertPassword_c36a630d1_7_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:authentication", + "surface:browser" + ] + }, + { + "step_id": "step_browserM365PasswordSignIn_enterPassword_c36a630d1_7_3", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "${{secret:M365_ACCOUNT_PASSWORD}}" + }, + "description": "Enter the registered Microsoft 365 password in the focused password input of the browser sign-in form.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_browserM365PasswordSignIn_focusPassword_c36a630d1_7_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:authentication", + "surface:browser" + ] + }, + { + "step_id": "step_browserM365PasswordSignIn_submitPassword_c36a630d1_7_3", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to submit the Microsoft 365 password.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_browserM365PasswordSignIn_enterPassword_c36a630d1_7_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:authentication", + "surface:browser" + ] + }, + { + "step_id": "step_browserM365PasswordSignIn_assertStaySignedIn_c36a630d1_7_3", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Microsoft Stay signed in question is visible with Yes focused.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_browserM365PasswordSignIn_submitPassword_c36a630d1_7_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:authentication", + "surface:browser", + "step_retry_timeout: 120" + ] + }, + { + "step_id": "step_browserM365PasswordSignIn_confirmStaySignedIn_c36a630d1_7_3", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to confirm staying signed in.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_browserM365PasswordSignIn_assertStaySignedIn_c36a630d1_7_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:authentication", + "surface:browser", + "delay: 30" + ] + }, + { + "step_id": "step_assertReady_assertReady_c36a630d1_7_4", "agent": "assertion", "tool": "", "parameters": {}, @@ -3065,7 +3430,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_filterOption_confirm_c61edf2e8_7_2" + "step_browserM365PasswordSignIn_confirmStaySignedIn_c36a630d1_7_3" ], "preconditions": [], "postconditions": [], @@ -3076,7 +3441,7 @@ ] }, { - "step_id": "step_addAndOpenApp_assertAdd_c61edf2e8_8_1", + "step_id": "step_addAndOpenApp_assertAdd_c36a630d1_8_1", "agent": "assertion", "tool": "", "parameters": {}, @@ -3086,7 +3451,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_assertReady_assertReady_c61edf2e8_7_3" + "step_assertReady_assertReady_c36a630d1_7_4" ], "preconditions": [], "postconditions": [], @@ -3098,7 +3463,7 @@ ] }, { - "step_id": "step_addAndOpenApp_add_c61edf2e8_8_1", + "step_id": "step_addAndOpenApp_add_c36a630d1_8_1", "agent": "interaction", "tool": "click", "parameters": { @@ -3112,7 +3477,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_addAndOpenApp_assertAdd_c61edf2e8_8_1" + "step_addAndOpenApp_assertAdd_c36a630d1_8_1" ], "preconditions": [ "dhash:288:214:16:5:05100a0511030b12", @@ -3127,7 +3492,7 @@ ] }, { - "step_id": "step_addAndOpenApp_assertAdded_c61edf2e8_8_1", + "step_id": "step_addAndOpenApp_assertAdded_c36a630d1_8_1", "agent": "assertion", "tool": "", "parameters": {}, @@ -3137,7 +3502,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_addAndOpenApp_add_c61edf2e8_8_1" + "step_addAndOpenApp_add_c36a630d1_8_1" ], "preconditions": [], "postconditions": [], @@ -3149,7 +3514,7 @@ ] }, { - "step_id": "step_addAndOpenApp_open_c61edf2e8_8_1", + "step_id": "step_addAndOpenApp_open_c36a630d1_8_1", "agent": "interaction", "tool": "click", "parameters": { @@ -3163,7 +3528,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_addAndOpenApp_assertAdded_c61edf2e8_8_1" + "step_addAndOpenApp_assertAdded_c36a630d1_8_1" ], "preconditions": [ "dhash:533:508:16:5:00987494ca4acacc", @@ -3179,7 +3544,7 @@ ] }, { - "step_id": "step_addAndOpenApp_assertReady_c61edf2e8_8_1", + "step_id": "step_addAndOpenApp_assertReady_c36a630d1_8_1", "agent": "assertion", "tool": "", "parameters": {}, @@ -3189,7 +3554,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_addAndOpenApp_open_c61edf2e8_8_1" + "step_addAndOpenApp_open_c36a630d1_8_1" ], "preconditions": [], "postconditions": [], diff --git a/packages/tests/vscuse/vscode-test-cases/plans/weather-agent--weather-ts-azure-openai-local-copilot.json b/packages/tests/vscuse/vscode-test-cases/plans/weather-agent--weather-ts-azure-openai-local-copilot.json new file mode 100644 index 00000000000..4aed48f1327 --- /dev/null +++ b/packages/tests/vscuse/vscode-test-cases/plans/weather-agent--weather-ts-azure-openai-local-copilot.json @@ -0,0 +1,2345 @@ +{ + "plan_metadata": { + "version": "1.1", + "plan_id": "plan_dcba0ab02566", + "execution_context": { + "delay_between_steps": 1, + "stop_on_error": true, + "precondition_wait_timeout": 30, + "precondition_retry_interval": 1 + }, + "total_steps": 99, + "name": "weather-ts-azure-openai-local-copilot", + "description": { + "owner": "", + "workitem": "SCN-CREATE-WEATHER-01", + "other": "" + }, + "execution_order": [ + "step_closeWelcomeOverlay_assertVisible_cf4f7ebda_1_1", + "step_closeWelcomeOverlay_close_cf4f7ebda_1_1", + "step_closeWelcomeOverlay_assertReady_cf4f7ebda_1_1", + "step_executeCommand_open_cf4f7ebda_1_2", + "step_executeCommand_assertPalette_cf4f7ebda_1_2", + "step_executeCommand_filter_cf4f7ebda_1_2", + "step_executeCommand_assertCommand_cf4f7ebda_1_2", + "step_executeCommand_execute_cf4f7ebda_1_2", + "step_assertToolkitViewSettled_assert_cf4f7ebda_1_3", + "step_closeGetStartedEditor_assertActive_cf4f7ebda_1_4", + "step_closeGetStartedEditor_close_cf4f7ebda_1_4", + "step_closeGetStartedEditor_assertClosed_cf4f7ebda_1_4", + "step_executeCommand_open_cf4f7ebda_1_5", + "step_executeCommand_assertPalette_cf4f7ebda_1_5", + "step_executeCommand_filter_cf4f7ebda_1_5", + "step_executeCommand_assertCommand_cf4f7ebda_1_5", + "step_executeCommand_execute_cf4f7ebda_1_5", + "step_singleSelect_assertQuestion_cf4f7ebda_1_6", + "step_singleSelect_assertOptionsLoaded_cf4f7ebda_1_6", + "step_singleSelect_filter_cf4f7ebda_1_6", + "step_singleSelect_assertOption_cf4f7ebda_1_6", + "step_singleSelect_confirm_cf4f7ebda_1_6", + "step_singleSelect_assertQuestion_cf4f7ebda_1_7", + "step_singleSelect_assertOptionsLoaded_cf4f7ebda_1_7", + "step_singleSelect_filter_cf4f7ebda_1_7", + "step_singleSelect_assertOption_cf4f7ebda_1_7", + "step_singleSelect_confirm_cf4f7ebda_1_7", + "step_singleSelect_assertQuestion_cf4f7ebda_1_8", + "step_singleSelect_assertOptionsLoaded_cf4f7ebda_1_8", + "step_singleSelect_filter_cf4f7ebda_1_8", + "step_singleSelect_assertOption_cf4f7ebda_1_8", + "step_singleSelect_confirm_cf4f7ebda_1_8", + "step_textInput_assertQuestion_cf4f7ebda_1_9", + "step_textInput_input_cf4f7ebda_1_9", + "step_textInput_confirm_cf4f7ebda_1_9", + "step_textInput_assertQuestion_cf4f7ebda_1_10", + "step_textInput_input_cf4f7ebda_1_10", + "step_textInput_confirm_cf4f7ebda_1_10", + "step_textInput_assertQuestion_cf4f7ebda_1_11", + "step_textInput_input_cf4f7ebda_1_11", + "step_textInput_confirm_cf4f7ebda_1_11", + "step_singleSelect_assertQuestion_cf4f7ebda_1_12", + "step_singleSelect_assertOptionsLoaded_cf4f7ebda_1_12", + "step_singleSelect_filter_cf4f7ebda_1_12", + "step_singleSelect_assertOption_cf4f7ebda_1_12", + "step_singleSelect_confirm_cf4f7ebda_1_12", + "step_confirmOption_assertPrompt_cf4f7ebda_1_13", + "step_confirmOption_confirm_cf4f7ebda_1_13", + "step_textInput_assertQuestion_cf4f7ebda_1_14", + "step_textInput_input_cf4f7ebda_1_14", + "step_textInput_confirm_cf4f7ebda_1_14", + "step_assertProjectWindowReady_assert_cf4f7ebda_1_15", + "step_checkWorkspaceFiles_verify_cf4f7ebda_2_1", + "step_checkWorkspaceFiles_verify_cf4f7ebda_2_2", + "step_checkWorkspaceFiles_verify_cf4f7ebda_2_3", + "step_checkWorkspaceFiles_verify_cf4f7ebda_2_4", + "step_checkWorkspaceFiles_verify_cf4f7ebda_2_5", + "step_checkWorkspaceFiles_verify_cf4f7ebda_2_6", + "step_checkWorkspaceFiles_verify_cf4f7ebda_2_7", + "step_executeCommand_open_cf4f7ebda_3_1", + "step_executeCommand_assertPalette_cf4f7ebda_3_1", + "step_executeCommand_filter_cf4f7ebda_3_1", + "step_executeCommand_assertCommand_cf4f7ebda_3_1", + "step_executeCommand_execute_cf4f7ebda_3_1", + "step_signInM365_assertOption_cf4f7ebda_3_2", + "step_signInM365_selectOption_cf4f7ebda_3_2", + "step_signInM365_confirmSignIn_cf4f7ebda_3_2", + "step_signInM365_focusAccount_cf4f7ebda_3_2", + "step_signInM365_typeAccount_cf4f7ebda_3_2", + "step_signInM365_next_cf4f7ebda_3_2", + "step_signInM365_typePassword_cf4f7ebda_3_2", + "step_signInM365_submit_cf4f7ebda_3_2", + "step_signInM365_closeBrowser_cf4f7ebda_3_2", + "step_signInM365_assertReady_cf4f7ebda_3_2", + "step_executeCommand_open_cf4f7ebda_4_1", + "step_executeCommand_assertPalette_cf4f7ebda_4_1", + "step_executeCommand_filter_cf4f7ebda_4_1", + "step_executeCommand_assertCommand_cf4f7ebda_4_1", + "step_executeCommand_execute_cf4f7ebda_4_1", + "step_filterOption_filter_cf4f7ebda_4_2", + "step_filterOption_assertOption_cf4f7ebda_4_2", + "step_filterOption_confirm_cf4f7ebda_4_2", + "step_browserM365SignIn_assertAccount_cf4f7ebda_4_3", + "step_browserM365SignIn_focusAccount_cf4f7ebda_4_3", + "step_browserM365SignIn_enterAccount_cf4f7ebda_4_3", + "step_browserM365SignIn_submitAccount_cf4f7ebda_4_3", + "step_browserM365SignIn_assertPassword_cf4f7ebda_4_3", + "step_browserM365SignIn_enterPassword_cf4f7ebda_4_3", + "step_browserM365SignIn_submitPassword_cf4f7ebda_4_3", + "step_browserM365SignIn_assertStaySignedIn_cf4f7ebda_4_3", + "step_browserM365SignIn_confirmStaySignedIn_cf4f7ebda_4_3", + "step_browserM365SignIn_refresh_cf4f7ebda_4_3", + "step_assertReady_assertReady_cf4f7ebda_4_4", + "step_sendCopilotMessage_assertInput_cf4f7ebda_6_1", + "step_sendCopilotMessage_focusInput_cf4f7ebda_6_1", + "step_sendCopilotMessage_type_cf4f7ebda_6_1", + "step_sendCopilotMessage_send_cf4f7ebda_6_1", + "step_assertChatReplied_assert_cf4f7ebda_6_2", + "step_assertChatContains_assert_cf4f7ebda_6_3" + ], + "tags": [ + "case_id:weather-ts-azure-openai-local-copilot", + "scenario_id:SCN-CREATE-WEATHER-01", + "template_id:weather-agent", + "gate:pr" + ] + }, + "steps": [ + { + "step_id": "step_closeWelcomeOverlay_assertVisible_cf4f7ebda_1_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the startup \"Welcome to VS Code\" sign-in overlay is visible and its Close button is available.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:initialization", + "initialization:closeWelcomeOverlay", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_closeWelcomeOverlay_close_cf4f7ebda_1_1", + "agent": "interaction", + "tool": "click", + "parameters": { + "button": "left", + "x": 952, + "y": 128 + }, + "description": "Click the Close button on the startup Welcome sign-in overlay.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_closeWelcomeOverlay_assertVisible_cf4f7ebda_1_1" + ], + "preconditions": [ + "dhash:952:128:16:5:255266345964665b", + "dhash:952:128:96:5:16100c10100c1404", + "dhash:952:128:0:10:2592eae0f08e8621" + ], + "postconditions": [], + "tags": [ + "component:initialization", + "initialization:closeWelcomeOverlay", + "force_run:true" + ] + }, + { + "step_id": "step_closeWelcomeOverlay_assertReady_cf4f7ebda_1_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the startup sign-in overlay is no longer visible and the VS Code workbench is ready.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_closeWelcomeOverlay_close_cf4f7ebda_1_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:initialization", + "initialization:closeWelcomeOverlay", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_open_cf4f7ebda_1_2", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "f1" + }, + "description": "Press the F1 key to open the Command Palette in Visual Studio Code.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_closeWelcomeOverlay_assertReady_cf4f7ebda_1_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertPalette_cf4f7ebda_1_2", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Visual Studio Code Command Palette is visible with a > character in its input box and is ready to accept a command search.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_open_cf4f7ebda_1_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_filter_cf4f7ebda_1_2", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Microsoft 365 Agents Toolkit: Focus on Microsoft 365 Agents Toolkit View" + }, + "description": "Type the resolved command title into the active Command Palette.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertPalette_cf4f7ebda_1_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertCommand_cf4f7ebda_1_2", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Command Palette input box reads >Microsoft 365 Agents Toolkit: Focus on Microsoft 365 Agents Toolkit View and the highlighted command listed under it is titled Microsoft 365 Agents Toolkit: Focus on Microsoft 365 Agents Toolkit View.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_filter_cf4f7ebda_1_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_execute_cf4f7ebda_1_2", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to execute the selected Command Palette command.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertCommand_cf4f7ebda_1_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_assertToolkitViewSettled_assert_cf4f7ebda_1_3", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Microsoft 365 Agents Toolkit view is open in the side bar and an editor tab labeled Welcome showing the Build a Declarative Agent walkthrough is open in the editor area.", + "content_refs": [], + "timeout": 120, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_execute_cf4f7ebda_1_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:initialization", + "initialization:assertToolkitViewSettled", + "step_retry_timeout: 120" + ] + }, + { + "step_id": "step_closeGetStartedEditor_assertActive_cf4f7ebda_1_4", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the editor tab labeled Welcome showing the Build a Declarative Agent walkthrough is the active editor tab in the Visual Studio Code editor area.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_assertToolkitViewSettled_assert_cf4f7ebda_1_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:initialization", + "initialization:closeGetStartedEditor", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_closeGetStartedEditor_close_cf4f7ebda_1_4", + "agent": "interaction", + "tool": "keyboard_shortcut", + "parameters": { + "keys": "ctrl+w" + }, + "description": "Press Ctrl+W to close the Welcome editor tab.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_closeGetStartedEditor_assertActive_cf4f7ebda_1_4" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:initialization", + "initialization:closeGetStartedEditor" + ] + }, + { + "step_id": "step_closeGetStartedEditor_assertClosed_cf4f7ebda_1_4", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion no editor tab is open in the Visual Studio Code editor area.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_closeGetStartedEditor_close_cf4f7ebda_1_4" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:initialization", + "initialization:closeGetStartedEditor", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_open_cf4f7ebda_1_5", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "f1" + }, + "description": "Press the F1 key to open the Command Palette in Visual Studio Code.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_closeGetStartedEditor_assertClosed_cf4f7ebda_1_4" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertPalette_cf4f7ebda_1_5", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Visual Studio Code Command Palette is visible with a > character in its input box and is ready to accept a command search.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_open_cf4f7ebda_1_5" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_filter_cf4f7ebda_1_5", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Microsoft 365 Agents: Create New Agent/App" + }, + "description": "Type the resolved command title into the active Command Palette.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertPalette_cf4f7ebda_1_5" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertCommand_cf4f7ebda_1_5", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Command Palette input box reads >Microsoft 365 Agents: Create New Agent/App and the highlighted command listed under it is titled Microsoft 365 Agents: Create New Agent/App.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_filter_cf4f7ebda_1_5" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_execute_cf4f7ebda_1_5", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to execute the selected Command Palette command.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertCommand_cf4f7ebda_1_5" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_singleSelect_assertQuestion_cf4f7ebda_1_6", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the active prompt titled New Project is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_execute_cf4f7ebda_1_5" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_singleSelect_assertOptionsLoaded_cf4f7ebda_1_6", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the prompt titled New Project has finished loading and lists at least one selectable option.", + "content_refs": [], + "timeout": 120, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertQuestion_cf4f7ebda_1_6" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 120" + ] + }, + { + "step_id": "step_singleSelect_filter_cf4f7ebda_1_6", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Custom Engine Agent" + }, + "description": "Type the resolved option label Custom Engine Agent into the active single-select prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertOptionsLoaded_cf4f7ebda_1_6" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_singleSelect_assertOption_cf4f7ebda_1_6", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the option Custom Engine Agent is visible and selectable in the filtered single-select prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_filter_cf4f7ebda_1_6" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_singleSelect_confirm_cf4f7ebda_1_6", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to confirm the filtered single-select option.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertOption_cf4f7ebda_1_6" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_singleSelect_assertQuestion_cf4f7ebda_1_7", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the active prompt titled App Features Using Microsoft 365 Agents SDK is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_confirm_cf4f7ebda_1_6" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_singleSelect_assertOptionsLoaded_cf4f7ebda_1_7", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the prompt titled App Features Using Microsoft 365 Agents SDK has finished loading and lists at least one selectable option.", + "content_refs": [], + "timeout": 120, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertQuestion_cf4f7ebda_1_7" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 120" + ] + }, + { + "step_id": "step_singleSelect_filter_cf4f7ebda_1_7", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Weather Agent" + }, + "description": "Type the resolved option label Weather Agent into the active single-select prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertOptionsLoaded_cf4f7ebda_1_7" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_singleSelect_assertOption_cf4f7ebda_1_7", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the option Weather Agent is visible and selectable in the filtered single-select prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_filter_cf4f7ebda_1_7" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_singleSelect_confirm_cf4f7ebda_1_7", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to confirm the filtered single-select option.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertOption_cf4f7ebda_1_7" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_singleSelect_assertQuestion_cf4f7ebda_1_8", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the active prompt titled Service for Large Language Model (LLM) is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_confirm_cf4f7ebda_1_7" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_singleSelect_assertOptionsLoaded_cf4f7ebda_1_8", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the prompt titled Service for Large Language Model (LLM) has finished loading and lists at least one selectable option.", + "content_refs": [], + "timeout": 120, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertQuestion_cf4f7ebda_1_8" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 120" + ] + }, + { + "step_id": "step_singleSelect_filter_cf4f7ebda_1_8", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Azure OpenAI" + }, + "description": "Type the resolved option label Azure OpenAI into the active single-select prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertOptionsLoaded_cf4f7ebda_1_8" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_singleSelect_assertOption_cf4f7ebda_1_8", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the option Azure OpenAI is visible and selectable in the filtered single-select prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_filter_cf4f7ebda_1_8" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_singleSelect_confirm_cf4f7ebda_1_8", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to confirm the filtered single-select option.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertOption_cf4f7ebda_1_8" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_textInput_assertQuestion_cf4f7ebda_1_9", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the active prompt titled Azure OpenAI Key is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_confirm_cf4f7ebda_1_8" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_textInput_input_cf4f7ebda_1_9", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "${{secret:AZURE_OPENAI_API_KEY}}" + }, + "description": "Type the authored value into the active text prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_assertQuestion_cf4f7ebda_1_9" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text" + ] + }, + { + "step_id": "step_textInput_confirm_cf4f7ebda_1_9", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to submit the accepted text input.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_input_cf4f7ebda_1_9" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text" + ] + }, + { + "step_id": "step_textInput_assertQuestion_cf4f7ebda_1_10", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the active prompt titled Azure OpenAI Endpoint is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_confirm_cf4f7ebda_1_9" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_textInput_input_cf4f7ebda_1_10", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "${{env:AZURE_OPENAI_ENDPOINT}}" + }, + "description": "Type the authored value into the active text prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_assertQuestion_cf4f7ebda_1_10" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text" + ] + }, + { + "step_id": "step_textInput_confirm_cf4f7ebda_1_10", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to submit the accepted text input.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_input_cf4f7ebda_1_10" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text" + ] + }, + { + "step_id": "step_textInput_assertQuestion_cf4f7ebda_1_11", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the active prompt titled Azure OpenAI Deployment Name is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_confirm_cf4f7ebda_1_10" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_textInput_input_cf4f7ebda_1_11", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "${{env:AZURE_OPENAI_MODEL}}" + }, + "description": "Type the authored value into the active text prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_assertQuestion_cf4f7ebda_1_11" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text" + ] + }, + { + "step_id": "step_textInput_confirm_cf4f7ebda_1_11", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to submit the accepted text input.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_input_cf4f7ebda_1_11" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text" + ] + }, + { + "step_id": "step_singleSelect_assertQuestion_cf4f7ebda_1_12", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the active prompt titled Programming Language is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_confirm_cf4f7ebda_1_11" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_singleSelect_assertOptionsLoaded_cf4f7ebda_1_12", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the prompt titled Programming Language has finished loading and lists at least one selectable option.", + "content_refs": [], + "timeout": 120, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertQuestion_cf4f7ebda_1_12" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 120" + ] + }, + { + "step_id": "step_singleSelect_filter_cf4f7ebda_1_12", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "TypeScript" + }, + "description": "Type the resolved option label TypeScript into the active single-select prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertOptionsLoaded_cf4f7ebda_1_12" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_singleSelect_assertOption_cf4f7ebda_1_12", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the option TypeScript is visible and selectable in the filtered single-select prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_filter_cf4f7ebda_1_12" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_singleSelect_confirm_cf4f7ebda_1_12", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to confirm the filtered single-select option.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertOption_cf4f7ebda_1_12" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_confirmOption_assertPrompt_cf4f7ebda_1_13", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the active prompt titled Workspace Folder is visible and the option Default folder is focused.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_confirm_cf4f7ebda_1_12" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "interaction:key-press", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_confirmOption_confirm_cf4f7ebda_1_13", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to confirm the Default folder option.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_confirmOption_assertPrompt_cf4f7ebda_1_13" + ], + "preconditions": [ + "dhash:364:74:16:5:08056a9a5d5516b6", + "dhash:364:74:96:5:44232286e2168e01", + "dhash:364:74:0:10:f0b09494b2717075" + ], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "interaction:key-press" + ] + }, + { + "step_id": "step_textInput_assertQuestion_cf4f7ebda_1_14", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the active prompt titled Application Name is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_confirmOption_confirm_cf4f7ebda_1_13" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_textInput_input_cf4f7ebda_1_14", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "${{var:app_name:vscuse_app_#####}}" + }, + "description": "Type the authored value into the active text prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_assertQuestion_cf4f7ebda_1_14" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text" + ] + }, + { + "step_id": "step_textInput_confirm_cf4f7ebda_1_14", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to submit the accepted text input.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_input_cf4f7ebda_1_14" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text" + ] + }, + { + "step_id": "step_assertProjectWindowReady_assert_cf4f7ebda_1_15", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Preview README.md editor tab is open in Visual Studio Code.", + "content_refs": [], + "timeout": 60, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_confirm_cf4f7ebda_1_14" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:initialization", + "initialization:assertProjectWindowReady", + "step_retry_timeout: 60" + ] + }, + { + "step_id": "step_checkWorkspaceFiles_verify_cf4f7ebda_2_1", + "agent": "code", + "tool": "", + "parameters": { + "sample": "=== Generated Script ===\nLanguage: bash\n\n```bash\nset -euo pipefail\nPROJECT_DIR=\"/home/vscode/AgentsToolkitProjects/${{var:app_name}}\" ASSERTIONS_B64=\"W3sicGF0aCI6Im0zNjVhZ2VudHMueW1sIiwiZXhpc3RzIjp0cnVlLCJjb250YWlucyI6WyJ2ZXJzaW9uOiB2MS4xMSIsInByb3Zpc2lvbjoiLCJkZXBsb3k6Il0sIm5vdENvbnRhaW5zIjpbIm9hdXRoL3JlZ2lzdGVyIiwiZGNyL3JlZ2lzdGVyIl19XQ==\" python3 - <<'PY'\nimport base64\nimport json\nimport os\nfrom pathlib import Path\n\nproject = Path(os.environ[\"PROJECT_DIR\"]).resolve()\nassertions = json.loads(base64.b64decode(os.environ[\"ASSERTIONS_B64\"]).decode(\"utf-8\"))\nfor assertion in assertions:\n target = (project / assertion[\"path\"]).resolve()\n try:\n target.relative_to(project)\n except ValueError as error:\n raise AssertionError(\"File assertion escaped the project directory\") from error\n exists = target.is_file()\n if exists != assertion[\"exists\"]:\n raise AssertionError(f\"Unexpected file existence for {assertion['path']}\")\n if not exists:\n continue\n content = target.read_text(encoding=\"utf-8\")\n for expected in assertion.get(\"contains\", []):\n expected = expected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if expected not in content:\n raise AssertionError(f\"Expected content is absent from {assertion['path']}\")\n for unexpected in assertion.get(\"notContains\", []):\n unexpected = unexpected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if unexpected in content:\n raise AssertionError(f\"Unexpected content is present in {assertion['path']}\")\nPY\n```" + }, + "description": "@code verify the authored workspace file existence and content assertions without logging file contents.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_assertProjectWindowReady_assert_cf4f7ebda_1_15" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:checks", + "assertion:file", + "step_retry_timeout:120" + ] + }, + { + "step_id": "step_checkWorkspaceFiles_verify_cf4f7ebda_2_2", + "agent": "code", + "tool": "", + "parameters": { + "sample": "=== Generated Script ===\nLanguage: bash\n\n```bash\nset -euo pipefail\nPROJECT_DIR=\"/home/vscode/AgentsToolkitProjects/${{var:app_name}}\" ASSERTIONS_B64=\"W3sicGF0aCI6InNyYy9pbmRleC50cyIsImV4aXN0cyI6dHJ1ZSwiY29udGFpbnMiOltdLCJub3RDb250YWlucyI6W119XQ==\" python3 - <<'PY'\nimport base64\nimport json\nimport os\nfrom pathlib import Path\n\nproject = Path(os.environ[\"PROJECT_DIR\"]).resolve()\nassertions = json.loads(base64.b64decode(os.environ[\"ASSERTIONS_B64\"]).decode(\"utf-8\"))\nfor assertion in assertions:\n target = (project / assertion[\"path\"]).resolve()\n try:\n target.relative_to(project)\n except ValueError as error:\n raise AssertionError(\"File assertion escaped the project directory\") from error\n exists = target.is_file()\n if exists != assertion[\"exists\"]:\n raise AssertionError(f\"Unexpected file existence for {assertion['path']}\")\n if not exists:\n continue\n content = target.read_text(encoding=\"utf-8\")\n for expected in assertion.get(\"contains\", []):\n expected = expected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if expected not in content:\n raise AssertionError(f\"Expected content is absent from {assertion['path']}\")\n for unexpected in assertion.get(\"notContains\", []):\n unexpected = unexpected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if unexpected in content:\n raise AssertionError(f\"Unexpected content is present in {assertion['path']}\")\nPY\n```" + }, + "description": "@code verify the authored workspace file existence and content assertions without logging file contents.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_checkWorkspaceFiles_verify_cf4f7ebda_2_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:checks", + "assertion:file", + "step_retry_timeout:120" + ] + }, + { + "step_id": "step_checkWorkspaceFiles_verify_cf4f7ebda_2_3", + "agent": "code", + "tool": "", + "parameters": { + "sample": "=== Generated Script ===\nLanguage: bash\n\n```bash\nset -euo pipefail\nPROJECT_DIR=\"/home/vscode/AgentsToolkitProjects/${{var:app_name}}\" ASSERTIONS_B64=\"W3sicGF0aCI6InNyYy9hZ2VudC50cyIsImV4aXN0cyI6dHJ1ZSwiY29udGFpbnMiOltdLCJub3RDb250YWlucyI6W119XQ==\" python3 - <<'PY'\nimport base64\nimport json\nimport os\nfrom pathlib import Path\n\nproject = Path(os.environ[\"PROJECT_DIR\"]).resolve()\nassertions = json.loads(base64.b64decode(os.environ[\"ASSERTIONS_B64\"]).decode(\"utf-8\"))\nfor assertion in assertions:\n target = (project / assertion[\"path\"]).resolve()\n try:\n target.relative_to(project)\n except ValueError as error:\n raise AssertionError(\"File assertion escaped the project directory\") from error\n exists = target.is_file()\n if exists != assertion[\"exists\"]:\n raise AssertionError(f\"Unexpected file existence for {assertion['path']}\")\n if not exists:\n continue\n content = target.read_text(encoding=\"utf-8\")\n for expected in assertion.get(\"contains\", []):\n expected = expected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if expected not in content:\n raise AssertionError(f\"Expected content is absent from {assertion['path']}\")\n for unexpected in assertion.get(\"notContains\", []):\n unexpected = unexpected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if unexpected in content:\n raise AssertionError(f\"Unexpected content is present in {assertion['path']}\")\nPY\n```" + }, + "description": "@code verify the authored workspace file existence and content assertions without logging file contents.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_checkWorkspaceFiles_verify_cf4f7ebda_2_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:checks", + "assertion:file", + "step_retry_timeout:120" + ] + }, + { + "step_id": "step_checkWorkspaceFiles_verify_cf4f7ebda_2_4", + "agent": "code", + "tool": "", + "parameters": { + "sample": "=== Generated Script ===\nLanguage: bash\n\n```bash\nset -euo pipefail\nPROJECT_DIR=\"/home/vscode/AgentsToolkitProjects/${{var:app_name}}\" ASSERTIONS_B64=\"W3sicGF0aCI6InNyYy90b29scy9nZXRXZWF0aGVyVG9vbC50cyIsImV4aXN0cyI6dHJ1ZSwiY29udGFpbnMiOltdLCJub3RDb250YWlucyI6W119XQ==\" python3 - <<'PY'\nimport base64\nimport json\nimport os\nfrom pathlib import Path\n\nproject = Path(os.environ[\"PROJECT_DIR\"]).resolve()\nassertions = json.loads(base64.b64decode(os.environ[\"ASSERTIONS_B64\"]).decode(\"utf-8\"))\nfor assertion in assertions:\n target = (project / assertion[\"path\"]).resolve()\n try:\n target.relative_to(project)\n except ValueError as error:\n raise AssertionError(\"File assertion escaped the project directory\") from error\n exists = target.is_file()\n if exists != assertion[\"exists\"]:\n raise AssertionError(f\"Unexpected file existence for {assertion['path']}\")\n if not exists:\n continue\n content = target.read_text(encoding=\"utf-8\")\n for expected in assertion.get(\"contains\", []):\n expected = expected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if expected not in content:\n raise AssertionError(f\"Expected content is absent from {assertion['path']}\")\n for unexpected in assertion.get(\"notContains\", []):\n unexpected = unexpected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if unexpected in content:\n raise AssertionError(f\"Unexpected content is present in {assertion['path']}\")\nPY\n```" + }, + "description": "@code verify the authored workspace file existence and content assertions without logging file contents.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_checkWorkspaceFiles_verify_cf4f7ebda_2_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:checks", + "assertion:file", + "step_retry_timeout:120" + ] + }, + { + "step_id": "step_checkWorkspaceFiles_verify_cf4f7ebda_2_5", + "agent": "code", + "tool": "", + "parameters": { + "sample": "=== Generated Script ===\nLanguage: bash\n\n```bash\nset -euo pipefail\nPROJECT_DIR=\"/home/vscode/AgentsToolkitProjects/${{var:app_name}}\" ASSERTIONS_B64=\"W3sicGF0aCI6InBhY2thZ2UuanNvbiIsImV4aXN0cyI6dHJ1ZSwiY29udGFpbnMiOltdLCJub3RDb250YWlucyI6W119XQ==\" python3 - <<'PY'\nimport base64\nimport json\nimport os\nfrom pathlib import Path\n\nproject = Path(os.environ[\"PROJECT_DIR\"]).resolve()\nassertions = json.loads(base64.b64decode(os.environ[\"ASSERTIONS_B64\"]).decode(\"utf-8\"))\nfor assertion in assertions:\n target = (project / assertion[\"path\"]).resolve()\n try:\n target.relative_to(project)\n except ValueError as error:\n raise AssertionError(\"File assertion escaped the project directory\") from error\n exists = target.is_file()\n if exists != assertion[\"exists\"]:\n raise AssertionError(f\"Unexpected file existence for {assertion['path']}\")\n if not exists:\n continue\n content = target.read_text(encoding=\"utf-8\")\n for expected in assertion.get(\"contains\", []):\n expected = expected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if expected not in content:\n raise AssertionError(f\"Expected content is absent from {assertion['path']}\")\n for unexpected in assertion.get(\"notContains\", []):\n unexpected = unexpected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if unexpected in content:\n raise AssertionError(f\"Unexpected content is present in {assertion['path']}\")\nPY\n```" + }, + "description": "@code verify the authored workspace file existence and content assertions without logging file contents.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_checkWorkspaceFiles_verify_cf4f7ebda_2_4" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:checks", + "assertion:file", + "step_retry_timeout:120" + ] + }, + { + "step_id": "step_checkWorkspaceFiles_verify_cf4f7ebda_2_6", + "agent": "code", + "tool": "", + "parameters": { + "sample": "=== Generated Script ===\nLanguage: bash\n\n```bash\nset -euo pipefail\nPROJECT_DIR=\"/home/vscode/AgentsToolkitProjects/${{var:app_name}}\" ASSERTIONS_B64=\"W3sicGF0aCI6ImluZnJhL2F6dXJlLmJpY2VwIiwiZXhpc3RzIjp0cnVlLCJjb250YWlucyI6W10sIm5vdENvbnRhaW5zIjpbXX1d\" python3 - <<'PY'\nimport base64\nimport json\nimport os\nfrom pathlib import Path\n\nproject = Path(os.environ[\"PROJECT_DIR\"]).resolve()\nassertions = json.loads(base64.b64decode(os.environ[\"ASSERTIONS_B64\"]).decode(\"utf-8\"))\nfor assertion in assertions:\n target = (project / assertion[\"path\"]).resolve()\n try:\n target.relative_to(project)\n except ValueError as error:\n raise AssertionError(\"File assertion escaped the project directory\") from error\n exists = target.is_file()\n if exists != assertion[\"exists\"]:\n raise AssertionError(f\"Unexpected file existence for {assertion['path']}\")\n if not exists:\n continue\n content = target.read_text(encoding=\"utf-8\")\n for expected in assertion.get(\"contains\", []):\n expected = expected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if expected not in content:\n raise AssertionError(f\"Expected content is absent from {assertion['path']}\")\n for unexpected in assertion.get(\"notContains\", []):\n unexpected = unexpected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if unexpected in content:\n raise AssertionError(f\"Unexpected content is present in {assertion['path']}\")\nPY\n```" + }, + "description": "@code verify the authored workspace file existence and content assertions without logging file contents.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_checkWorkspaceFiles_verify_cf4f7ebda_2_5" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:checks", + "assertion:file", + "step_retry_timeout:120" + ] + }, + { + "step_id": "step_checkWorkspaceFiles_verify_cf4f7ebda_2_7", + "agent": "code", + "tool": "", + "parameters": { + "sample": "=== Generated Script ===\nLanguage: bash\n\n```bash\nset -euo pipefail\nPROJECT_DIR=\"/home/vscode/AgentsToolkitProjects/${{var:app_name}}\" ASSERTIONS_B64=\"W3sicGF0aCI6ImFwcFBhY2thZ2UvbWFuaWZlc3QuanNvbiIsImV4aXN0cyI6dHJ1ZSwiY29udGFpbnMiOlsiXCJtYW5pZmVzdFZlcnNpb25cIjogXCIxLjI5XCIiXSwibm90Q29udGFpbnMiOltdfV0=\" python3 - <<'PY'\nimport base64\nimport json\nimport os\nfrom pathlib import Path\n\nproject = Path(os.environ[\"PROJECT_DIR\"]).resolve()\nassertions = json.loads(base64.b64decode(os.environ[\"ASSERTIONS_B64\"]).decode(\"utf-8\"))\nfor assertion in assertions:\n target = (project / assertion[\"path\"]).resolve()\n try:\n target.relative_to(project)\n except ValueError as error:\n raise AssertionError(\"File assertion escaped the project directory\") from error\n exists = target.is_file()\n if exists != assertion[\"exists\"]:\n raise AssertionError(f\"Unexpected file existence for {assertion['path']}\")\n if not exists:\n continue\n content = target.read_text(encoding=\"utf-8\")\n for expected in assertion.get(\"contains\", []):\n expected = expected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if expected not in content:\n raise AssertionError(f\"Expected content is absent from {assertion['path']}\")\n for unexpected in assertion.get(\"notContains\", []):\n unexpected = unexpected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if unexpected in content:\n raise AssertionError(f\"Unexpected content is present in {assertion['path']}\")\nPY\n```" + }, + "description": "@code verify the authored workspace file existence and content assertions without logging file contents.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_checkWorkspaceFiles_verify_cf4f7ebda_2_6" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:checks", + "assertion:file", + "step_retry_timeout:120" + ] + }, + { + "step_id": "step_executeCommand_open_cf4f7ebda_3_1", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "f1" + }, + "description": "Press the F1 key to open the Command Palette in Visual Studio Code.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_checkWorkspaceFiles_verify_cf4f7ebda_2_7" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertPalette_cf4f7ebda_3_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Visual Studio Code Command Palette is visible with a > character in its input box and is ready to accept a command search.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_open_cf4f7ebda_3_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_filter_cf4f7ebda_3_1", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "View: Show Microsoft 365 Agents Toolkit" + }, + "description": "Type the resolved command title into the active Command Palette.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertPalette_cf4f7ebda_3_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertCommand_cf4f7ebda_3_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Command Palette input box reads >View: Show Microsoft 365 Agents Toolkit and the highlighted command listed under it is titled View: Show Microsoft 365 Agents Toolkit.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_filter_cf4f7ebda_3_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_execute_cf4f7ebda_3_1", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to execute the selected Command Palette command.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertCommand_cf4f7ebda_3_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_signInM365_assertOption_cf4f7ebda_3_2", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the ACCOUNTS section of the side bar lists an entry whose label begins with Sign in to Microsoft.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_execute_cf4f7ebda_3_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:authentication", + "account:m365", + "entry_state:toolkit-side-bar-visible", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_signInM365_selectOption_cf4f7ebda_3_2", + "agent": "interaction", + "tool": "click", + "parameters": { + "button": "left", + "x": 213, + "y": 102 + }, + "description": "Click the entry whose label begins with \"Sign in to Microsoft\" in the ACCOUNTS section of the side bar.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInM365_assertOption_cf4f7ebda_3_2" + ], + "preconditions": [ + "dhash:213:102:16:5:9c63d67674d4c718", + "dhash:213:102:96:5:8c512758d92c2cce", + "dhash:213:102:0:10:92c86223a3622421" + ], + "postconditions": [], + "tags": [ + "component:authentication", + "account:m365" + ] + }, + { + "step_id": "step_signInM365_confirmSignIn_cf4f7ebda_3_2", + "agent": "interaction", + "tool": "click", + "parameters": { + "button": "left", + "x": 762, + "y": 97 + }, + "description": "Click the \"Sign in\" button within the Microsoft 365 developer sandbox modal.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInM365_selectOption_cf4f7ebda_3_2" + ], + "preconditions": [ + "dhash:762:97:16:5:24b1a72ba9aba343", + "dhash:762:97:96:5:0008304b0f344900", + "dhash:762:97:0:10:9c68332223232421" + ], + "postconditions": [], + "tags": [ + "component:authentication", + "account:m365" + ] + }, + { + "step_id": "step_signInM365_focusAccount_cf4f7ebda_3_2", + "agent": "interaction", + "tool": "click", + "parameters": { + "button": "left", + "x": 369, + "y": 350 + }, + "description": "Click on the \"Email or phone\" input field in the Microsoft Sign-in form on the login.microsoftonline.com webpage to focus the cursor for credential entry.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInM365_confirmSignIn_cf4f7ebda_3_2" + ], + "preconditions": [ + "dhash:369:350:16:5:2113d25252525221", + "dhash:369:350:96:5:0919006d19220812", + "dhash:369:350:0:10:1b88d0d1e5e6dae4" + ], + "postconditions": [], + "tags": [ + "component:authentication", + "account:m365", + "precondition_wait_timeout: 60" + ] + }, + { + "step_id": "step_signInM365_typeAccount_cf4f7ebda_3_2", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "${{env:M365_ACCOUNT_NAME}}" + }, + "description": "Enter the resolved Microsoft 365 account name into the email or username input field on the Microsoft Sign in page.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInM365_focusAccount_cf4f7ebda_3_2" + ], + "preconditions": [ + "dhash:512:384:0:20:1b28f0d9e7e6dae4" + ], + "postconditions": [], + "tags": [ + "component:authentication", + "account:m365", + "delay: 3" + ] + }, + { + "step_id": "step_signInM365_next_cf4f7ebda_3_2", + "agent": "interaction", + "tool": "click", + "parameters": { + "button": "left", + "x": 629, + "y": 484 + }, + "description": "Click the blue \"Next\" button on the Microsoft sign-in page, confirming the entered email address for login.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInM365_typeAccount_cf4f7ebda_3_2" + ], + "preconditions": [ + "dhash:629:484:16:5:23248c4b6c24d32c", + "dhash:629:484:96:5:00004eb131860000", + "dhash:629:484:0:10:1b28f0d9e7e6dae4" + ], + "postconditions": [], + "tags": [ + "component:authentication", + "account:m365", + "delay:3" + ] + }, + { + "step_id": "step_signInM365_typePassword_cf4f7ebda_3_2", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "${{secret:M365_ACCOUNT_PASSWORD}}" + }, + "description": "Type the resolved Microsoft 365 account password into the Password field on the Microsoft login page.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInM365_next_cf4f7ebda_3_2" + ], + "preconditions": [ + "dhash:512:384:0:20:1b08f0d9d1e6e6e4" + ], + "postconditions": [], + "tags": [ + "component:authentication", + "account:m365", + "delay: 3" + ] + }, + { + "step_id": "step_signInM365_submit_cf4f7ebda_3_2", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to submit the Microsoft 365 login form from the password entry screen.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInM365_typePassword_cf4f7ebda_3_2" + ], + "preconditions": [ + "dhash:512:384:0:20:1b08f0d9d1e6e6e4" + ], + "postconditions": [], + "tags": [ + "component:authentication", + "account:m365", + "delay: 3" + ] + }, + { + "step_id": "step_signInM365_closeBrowser_cf4f7ebda_3_2", + "agent": "interaction", + "tool": "click", + "parameters": { + "button": "left", + "x": 1004, + "y": 19 + }, + "description": "Click the \"Close\" button (red cross icon) in the browser tab bar to close the \"M365 Account - Sign In\" page.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInM365_submit_cf4f7ebda_3_2" + ], + "preconditions": [ + "dhash:1004:19:16:5:aac833964c9633cc", + "dhash:1004:19:96:5:d2232323c200e6e6", + "dhash:1004:19:0:10:0b01410169414141" + ], + "postconditions": [], + "tags": [ + "component:authentication", + "account:m365", + "delay: 3" + ] + }, + { + "step_id": "step_signInM365_assertReady_cf4f7ebda_3_2", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion there's ${{env:M365_ACCOUNT_NAME}} in the \"ACCOUNTS\" section", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInM365_closeBrowser_cf4f7ebda_3_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:authentication", + "account:m365", + "readiness:account-visible", + "step_retry_timeout: 180" + ] + }, + { + "step_id": "step_executeCommand_open_cf4f7ebda_4_1", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "f1" + }, + "description": "Press the F1 key to open the Command Palette in Visual Studio Code.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInM365_assertReady_cf4f7ebda_3_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertPalette_cf4f7ebda_4_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Visual Studio Code Command Palette is visible with a > character in its input box and is ready to accept a command search.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_open_cf4f7ebda_4_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_filter_cf4f7ebda_4_1", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Debug: Select and Start Debugging" + }, + "description": "Type the resolved command title into the active Command Palette.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertPalette_cf4f7ebda_4_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertCommand_cf4f7ebda_4_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Command Palette input box reads >Debug: Select and Start Debugging and the highlighted command listed under it is titled Debug: Select and Start Debugging.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_filter_cf4f7ebda_4_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_execute_cf4f7ebda_4_1", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to execute the selected Command Palette command.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertCommand_cf4f7ebda_4_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_filterOption_filter_cf4f7ebda_4_2", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "(Preview) Debug in Copilot (Chrome)" + }, + "description": "Type the resolved option label into the active option picker.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_execute_cf4f7ebda_4_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_filterOption_assertOption_cf4f7ebda_4_2", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the option (Preview) Debug in Copilot (Chrome) is visible and selectable in the filtered option picker.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_filterOption_filter_cf4f7ebda_4_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_filterOption_confirm_cf4f7ebda_4_2", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to confirm the filtered option.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_filterOption_assertOption_cf4f7ebda_4_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_browserM365SignIn_assertAccount_cf4f7ebda_4_3", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Microsoft sign-in page is visible in Chrome with an email or username input.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_filterOption_confirm_cf4f7ebda_4_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:authentication", + "surface:browser", + "step_retry_timeout: 180" + ] + }, + { + "step_id": "step_browserM365SignIn_focusAccount_cf4f7ebda_4_3", + "agent": "interaction", + "tool": "click", + "parameters": { + "button": "left", + "x": 429, + "y": 347 + }, + "description": "Click the email or username input on the Microsoft sign-in page.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_browserM365SignIn_assertAccount_cf4f7ebda_4_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:authentication", + "surface:browser" + ] + }, + { + "step_id": "step_browserM365SignIn_enterAccount_cf4f7ebda_4_3", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "${{env:M365_ACCOUNT_NAME}}" + }, + "description": "Enter the registered Microsoft 365 account in the browser sign-in form.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_browserM365SignIn_focusAccount_cf4f7ebda_4_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:authentication", + "surface:browser" + ] + }, + { + "step_id": "step_browserM365SignIn_submitAccount_cf4f7ebda_4_3", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to continue to password entry.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_browserM365SignIn_enterAccount_cf4f7ebda_4_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:authentication", + "surface:browser" + ] + }, + { + "step_id": "step_browserM365SignIn_assertPassword_cf4f7ebda_4_3", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Microsoft sign-in password input is visible and focused in Chrome.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_browserM365SignIn_submitAccount_cf4f7ebda_4_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:authentication", + "surface:browser", + "step_retry_timeout: 120" + ] + }, + { + "step_id": "step_browserM365SignIn_enterPassword_cf4f7ebda_4_3", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "${{secret:M365_ACCOUNT_PASSWORD}}" + }, + "description": "Enter the registered Microsoft 365 password in the browser sign-in form.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_browserM365SignIn_assertPassword_cf4f7ebda_4_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:authentication", + "surface:browser" + ] + }, + { + "step_id": "step_browserM365SignIn_submitPassword_cf4f7ebda_4_3", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to submit the Microsoft 365 password.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_browserM365SignIn_enterPassword_cf4f7ebda_4_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:authentication", + "surface:browser" + ] + }, + { + "step_id": "step_browserM365SignIn_assertStaySignedIn_cf4f7ebda_4_3", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Microsoft Stay signed in question is visible with Yes focused.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_browserM365SignIn_submitPassword_cf4f7ebda_4_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:authentication", + "surface:browser", + "step_retry_timeout: 120" + ] + }, + { + "step_id": "step_browserM365SignIn_confirmStaySignedIn_cf4f7ebda_4_3", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to confirm staying signed in.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_browserM365SignIn_assertStaySignedIn_cf4f7ebda_4_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:authentication", + "surface:browser", + "delay: 30" + ] + }, + { + "step_id": "step_browserM365SignIn_refresh_cf4f7ebda_4_3", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "f5" + }, + "description": "Press F5 to refresh Microsoft 365 Copilot after browser authentication.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_browserM365SignIn_confirmStaySignedIn_cf4f7ebda_4_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:authentication", + "surface:browser", + "force_run:true" + ] + }, + { + "step_id": "step_assertReady_assertReady_cf4f7ebda_4_4", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion an agent whose name starts with ${{var:app_name}} is displayed in the main section of Microsoft 365 Copilot.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_browserM365SignIn_refresh_cf4f7ebda_4_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:browser", + "action:assert-ready", + "step_retry_timeout: 180" + ] + }, + { + "step_id": "step_sendCopilotMessage_assertInput_cf4f7ebda_6_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Microsoft 365 Copilot message input is visible and its placeholder text starts with Message ${{var:app_name}}.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_assertReady_assertReady_cf4f7ebda_4_4" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:browser", + "host_surface:copilot", + "entry_state:chat-ready", + "action:send-message", + "step_retry_timeout: 120" + ] + }, + { + "step_id": "step_sendCopilotMessage_focusInput_cf4f7ebda_6_1", + "agent": "interaction", + "tool": "click", + "parameters": { + "button": "left", + "x": 416, + "y": 369 + }, + "description": "Click the \"Message ${{var:app_name}}\" input box in the Microsoft 365 Copilot web application.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_sendCopilotMessage_assertInput_cf4f7ebda_6_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:browser", + "host_surface:copilot", + "entry_state:chat-ready", + "action:send-message", + "ocr:true" + ] + }, + { + "step_id": "step_sendCopilotMessage_type_cf4f7ebda_6_1", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "What is the weather in Seattle?" + }, + "description": "Type \"What is the weather in Seattle?\" into the Copilot message input.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_sendCopilotMessage_focusInput_cf4f7ebda_6_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:browser", + "host_surface:copilot", + "entry_state:chat-ready", + "action:send-message" + ] + }, + { + "step_id": "step_sendCopilotMessage_send_cf4f7ebda_6_1", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to send the Copilot message.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_sendCopilotMessage_type_cf4f7ebda_6_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:browser", + "host_surface:copilot", + "entry_state:chat-ready", + "action:send-message" + ] + }, + { + "step_id": "step_assertChatReplied_assert_cf4f7ebda_6_2", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the current assistant turn is complete and contains a non-empty response.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_sendCopilotMessage_send_cf4f7ebda_6_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:browser", + "action:assert-chat-response", + "expectation:replied", + "step_retry_timeout: 120" + ] + }, + { + "step_id": "step_assertChatContains_assert_cf4f7ebda_6_3", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the current assistant response contains \"Seattle\".", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_assertChatReplied_assert_cf4f7ebda_6_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:browser", + "action:assert-chat-response", + "expectation:contains", + "step_retry_timeout: 120" + ] + } + ], + "screenshots": {} +} diff --git a/packages/tests/vscuse/vscode-test-cases/plans/weather-agent--weather-ts-azure-openai-local-teams.json b/packages/tests/vscuse/vscode-test-cases/plans/weather-agent--weather-ts-azure-openai-local-teams.json new file mode 100644 index 00000000000..7850494c9b1 --- /dev/null +++ b/packages/tests/vscuse/vscode-test-cases/plans/weather-agent--weather-ts-azure-openai-local-teams.json @@ -0,0 +1,2390 @@ +{ + "plan_metadata": { + "version": "1.1", + "plan_id": "plan_e445a125b963", + "execution_context": { + "delay_between_steps": 1, + "stop_on_error": true, + "precondition_wait_timeout": 30, + "precondition_retry_interval": 1 + }, + "total_steps": 100, + "name": "weather-ts-azure-openai-local-teams", + "description": { + "owner": "", + "workitem": "SCN-CREATE-WEATHER-01", + "other": "" + }, + "execution_order": [ + "step_closeWelcomeOverlay_assertVisible_c93c4b25a_1_1", + "step_closeWelcomeOverlay_close_c93c4b25a_1_1", + "step_closeWelcomeOverlay_assertReady_c93c4b25a_1_1", + "step_executeCommand_open_c93c4b25a_1_2", + "step_executeCommand_assertPalette_c93c4b25a_1_2", + "step_executeCommand_filter_c93c4b25a_1_2", + "step_executeCommand_assertCommand_c93c4b25a_1_2", + "step_executeCommand_execute_c93c4b25a_1_2", + "step_assertToolkitViewSettled_assert_c93c4b25a_1_3", + "step_closeGetStartedEditor_assertActive_c93c4b25a_1_4", + "step_closeGetStartedEditor_close_c93c4b25a_1_4", + "step_closeGetStartedEditor_assertClosed_c93c4b25a_1_4", + "step_executeCommand_open_c93c4b25a_1_5", + "step_executeCommand_assertPalette_c93c4b25a_1_5", + "step_executeCommand_filter_c93c4b25a_1_5", + "step_executeCommand_assertCommand_c93c4b25a_1_5", + "step_executeCommand_execute_c93c4b25a_1_5", + "step_singleSelect_assertQuestion_c93c4b25a_1_6", + "step_singleSelect_assertOptionsLoaded_c93c4b25a_1_6", + "step_singleSelect_filter_c93c4b25a_1_6", + "step_singleSelect_assertOption_c93c4b25a_1_6", + "step_singleSelect_confirm_c93c4b25a_1_6", + "step_singleSelect_assertQuestion_c93c4b25a_1_7", + "step_singleSelect_assertOptionsLoaded_c93c4b25a_1_7", + "step_singleSelect_filter_c93c4b25a_1_7", + "step_singleSelect_assertOption_c93c4b25a_1_7", + "step_singleSelect_confirm_c93c4b25a_1_7", + "step_singleSelect_assertQuestion_c93c4b25a_1_8", + "step_singleSelect_assertOptionsLoaded_c93c4b25a_1_8", + "step_singleSelect_filter_c93c4b25a_1_8", + "step_singleSelect_assertOption_c93c4b25a_1_8", + "step_singleSelect_confirm_c93c4b25a_1_8", + "step_textInput_assertQuestion_c93c4b25a_1_9", + "step_textInput_input_c93c4b25a_1_9", + "step_textInput_confirm_c93c4b25a_1_9", + "step_textInput_assertQuestion_c93c4b25a_1_10", + "step_textInput_input_c93c4b25a_1_10", + "step_textInput_confirm_c93c4b25a_1_10", + "step_textInput_assertQuestion_c93c4b25a_1_11", + "step_textInput_input_c93c4b25a_1_11", + "step_textInput_confirm_c93c4b25a_1_11", + "step_singleSelect_assertQuestion_c93c4b25a_1_12", + "step_singleSelect_assertOptionsLoaded_c93c4b25a_1_12", + "step_singleSelect_filter_c93c4b25a_1_12", + "step_singleSelect_assertOption_c93c4b25a_1_12", + "step_singleSelect_confirm_c93c4b25a_1_12", + "step_confirmOption_assertPrompt_c93c4b25a_1_13", + "step_confirmOption_confirm_c93c4b25a_1_13", + "step_textInput_assertQuestion_c93c4b25a_1_14", + "step_textInput_input_c93c4b25a_1_14", + "step_textInput_confirm_c93c4b25a_1_14", + "step_assertProjectWindowReady_assert_c93c4b25a_1_15", + "step_checkWorkspaceFiles_verify_c93c4b25a_2_1", + "step_checkWorkspaceFiles_verify_c93c4b25a_2_2", + "step_checkWorkspaceFiles_verify_c93c4b25a_2_3", + "step_checkWorkspaceFiles_verify_c93c4b25a_2_4", + "step_checkWorkspaceFiles_verify_c93c4b25a_2_5", + "step_checkWorkspaceFiles_verify_c93c4b25a_2_6", + "step_checkWorkspaceFiles_verify_c93c4b25a_2_7", + "step_executeCommand_open_c93c4b25a_3_1", + "step_executeCommand_assertPalette_c93c4b25a_3_1", + "step_executeCommand_filter_c93c4b25a_3_1", + "step_executeCommand_assertCommand_c93c4b25a_3_1", + "step_executeCommand_execute_c93c4b25a_3_1", + "step_signInM365_assertOption_c93c4b25a_3_2", + "step_signInM365_selectOption_c93c4b25a_3_2", + "step_signInM365_confirmSignIn_c93c4b25a_3_2", + "step_signInM365_focusAccount_c93c4b25a_3_2", + "step_signInM365_typeAccount_c93c4b25a_3_2", + "step_signInM365_next_c93c4b25a_3_2", + "step_signInM365_typePassword_c93c4b25a_3_2", + "step_signInM365_submit_c93c4b25a_3_2", + "step_signInM365_closeBrowser_c93c4b25a_3_2", + "step_signInM365_assertReady_c93c4b25a_3_2", + "step_executeCommand_open_c93c4b25a_4_1", + "step_executeCommand_assertPalette_c93c4b25a_4_1", + "step_executeCommand_filter_c93c4b25a_4_1", + "step_executeCommand_assertCommand_c93c4b25a_4_1", + "step_executeCommand_execute_c93c4b25a_4_1", + "step_filterOption_filter_c93c4b25a_4_2", + "step_filterOption_assertOption_c93c4b25a_4_2", + "step_filterOption_confirm_c93c4b25a_4_2", + "step_browserM365PasswordSignIn_assertPassword_c93c4b25a_4_3", + "step_browserM365PasswordSignIn_focusPassword_c93c4b25a_4_3", + "step_browserM365PasswordSignIn_enterPassword_c93c4b25a_4_3", + "step_browserM365PasswordSignIn_submitPassword_c93c4b25a_4_3", + "step_browserM365PasswordSignIn_assertStaySignedIn_c93c4b25a_4_3", + "step_browserM365PasswordSignIn_confirmStaySignedIn_c93c4b25a_4_3", + "step_assertReady_assertReady_c93c4b25a_4_4", + "step_addAndOpenApp_assertAdd_c93c4b25a_5_1", + "step_addAndOpenApp_add_c93c4b25a_5_1", + "step_addAndOpenApp_assertAdded_c93c4b25a_5_1", + "step_addAndOpenApp_open_c93c4b25a_5_1", + "step_addAndOpenApp_assertReady_c93c4b25a_5_1", + "step_sendTeamsMessage_assertInput_c93c4b25a_6_1", + "step_sendTeamsMessage_focusInput_c93c4b25a_6_1", + "step_sendTeamsMessage_type_c93c4b25a_6_1", + "step_sendTeamsMessage_send_c93c4b25a_6_1", + "step_assertChatReplied_assert_c93c4b25a_6_2", + "step_assertChatContains_assert_c93c4b25a_6_3" + ], + "tags": [ + "case_id:weather-ts-azure-openai-local-teams", + "scenario_id:SCN-CREATE-WEATHER-01", + "template_id:weather-agent", + "gate:pr" + ] + }, + "steps": [ + { + "step_id": "step_closeWelcomeOverlay_assertVisible_c93c4b25a_1_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the startup \"Welcome to VS Code\" sign-in overlay is visible and its Close button is available.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:initialization", + "initialization:closeWelcomeOverlay", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_closeWelcomeOverlay_close_c93c4b25a_1_1", + "agent": "interaction", + "tool": "click", + "parameters": { + "button": "left", + "x": 952, + "y": 128 + }, + "description": "Click the Close button on the startup Welcome sign-in overlay.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_closeWelcomeOverlay_assertVisible_c93c4b25a_1_1" + ], + "preconditions": [ + "dhash:952:128:16:5:255266345964665b", + "dhash:952:128:96:5:16100c10100c1404", + "dhash:952:128:0:10:2592eae0f08e8621" + ], + "postconditions": [], + "tags": [ + "component:initialization", + "initialization:closeWelcomeOverlay", + "force_run:true" + ] + }, + { + "step_id": "step_closeWelcomeOverlay_assertReady_c93c4b25a_1_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the startup sign-in overlay is no longer visible and the VS Code workbench is ready.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_closeWelcomeOverlay_close_c93c4b25a_1_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:initialization", + "initialization:closeWelcomeOverlay", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_open_c93c4b25a_1_2", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "f1" + }, + "description": "Press the F1 key to open the Command Palette in Visual Studio Code.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_closeWelcomeOverlay_assertReady_c93c4b25a_1_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertPalette_c93c4b25a_1_2", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Visual Studio Code Command Palette is visible with a > character in its input box and is ready to accept a command search.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_open_c93c4b25a_1_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_filter_c93c4b25a_1_2", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Microsoft 365 Agents Toolkit: Focus on Microsoft 365 Agents Toolkit View" + }, + "description": "Type the resolved command title into the active Command Palette.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertPalette_c93c4b25a_1_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertCommand_c93c4b25a_1_2", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Command Palette input box reads >Microsoft 365 Agents Toolkit: Focus on Microsoft 365 Agents Toolkit View and the highlighted command listed under it is titled Microsoft 365 Agents Toolkit: Focus on Microsoft 365 Agents Toolkit View.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_filter_c93c4b25a_1_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_execute_c93c4b25a_1_2", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to execute the selected Command Palette command.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertCommand_c93c4b25a_1_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_assertToolkitViewSettled_assert_c93c4b25a_1_3", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Microsoft 365 Agents Toolkit view is open in the side bar and an editor tab labeled Welcome showing the Build a Declarative Agent walkthrough is open in the editor area.", + "content_refs": [], + "timeout": 120, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_execute_c93c4b25a_1_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:initialization", + "initialization:assertToolkitViewSettled", + "step_retry_timeout: 120" + ] + }, + { + "step_id": "step_closeGetStartedEditor_assertActive_c93c4b25a_1_4", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the editor tab labeled Welcome showing the Build a Declarative Agent walkthrough is the active editor tab in the Visual Studio Code editor area.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_assertToolkitViewSettled_assert_c93c4b25a_1_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:initialization", + "initialization:closeGetStartedEditor", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_closeGetStartedEditor_close_c93c4b25a_1_4", + "agent": "interaction", + "tool": "keyboard_shortcut", + "parameters": { + "keys": "ctrl+w" + }, + "description": "Press Ctrl+W to close the Welcome editor tab.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_closeGetStartedEditor_assertActive_c93c4b25a_1_4" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:initialization", + "initialization:closeGetStartedEditor" + ] + }, + { + "step_id": "step_closeGetStartedEditor_assertClosed_c93c4b25a_1_4", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion no editor tab is open in the Visual Studio Code editor area.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_closeGetStartedEditor_close_c93c4b25a_1_4" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:initialization", + "initialization:closeGetStartedEditor", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_open_c93c4b25a_1_5", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "f1" + }, + "description": "Press the F1 key to open the Command Palette in Visual Studio Code.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_closeGetStartedEditor_assertClosed_c93c4b25a_1_4" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertPalette_c93c4b25a_1_5", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Visual Studio Code Command Palette is visible with a > character in its input box and is ready to accept a command search.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_open_c93c4b25a_1_5" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_filter_c93c4b25a_1_5", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Microsoft 365 Agents: Create New Agent/App" + }, + "description": "Type the resolved command title into the active Command Palette.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertPalette_c93c4b25a_1_5" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertCommand_c93c4b25a_1_5", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Command Palette input box reads >Microsoft 365 Agents: Create New Agent/App and the highlighted command listed under it is titled Microsoft 365 Agents: Create New Agent/App.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_filter_c93c4b25a_1_5" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_execute_c93c4b25a_1_5", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to execute the selected Command Palette command.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertCommand_c93c4b25a_1_5" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_singleSelect_assertQuestion_c93c4b25a_1_6", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the active prompt titled New Project is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_execute_c93c4b25a_1_5" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_singleSelect_assertOptionsLoaded_c93c4b25a_1_6", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the prompt titled New Project has finished loading and lists at least one selectable option.", + "content_refs": [], + "timeout": 120, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertQuestion_c93c4b25a_1_6" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 120" + ] + }, + { + "step_id": "step_singleSelect_filter_c93c4b25a_1_6", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Custom Engine Agent" + }, + "description": "Type the resolved option label Custom Engine Agent into the active single-select prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertOptionsLoaded_c93c4b25a_1_6" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_singleSelect_assertOption_c93c4b25a_1_6", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the option Custom Engine Agent is visible and selectable in the filtered single-select prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_filter_c93c4b25a_1_6" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_singleSelect_confirm_c93c4b25a_1_6", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to confirm the filtered single-select option.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertOption_c93c4b25a_1_6" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_singleSelect_assertQuestion_c93c4b25a_1_7", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the active prompt titled App Features Using Microsoft 365 Agents SDK is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_confirm_c93c4b25a_1_6" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_singleSelect_assertOptionsLoaded_c93c4b25a_1_7", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the prompt titled App Features Using Microsoft 365 Agents SDK has finished loading and lists at least one selectable option.", + "content_refs": [], + "timeout": 120, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertQuestion_c93c4b25a_1_7" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 120" + ] + }, + { + "step_id": "step_singleSelect_filter_c93c4b25a_1_7", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Weather Agent" + }, + "description": "Type the resolved option label Weather Agent into the active single-select prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertOptionsLoaded_c93c4b25a_1_7" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_singleSelect_assertOption_c93c4b25a_1_7", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the option Weather Agent is visible and selectable in the filtered single-select prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_filter_c93c4b25a_1_7" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_singleSelect_confirm_c93c4b25a_1_7", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to confirm the filtered single-select option.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertOption_c93c4b25a_1_7" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_singleSelect_assertQuestion_c93c4b25a_1_8", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the active prompt titled Service for Large Language Model (LLM) is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_confirm_c93c4b25a_1_7" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_singleSelect_assertOptionsLoaded_c93c4b25a_1_8", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the prompt titled Service for Large Language Model (LLM) has finished loading and lists at least one selectable option.", + "content_refs": [], + "timeout": 120, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertQuestion_c93c4b25a_1_8" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 120" + ] + }, + { + "step_id": "step_singleSelect_filter_c93c4b25a_1_8", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Azure OpenAI" + }, + "description": "Type the resolved option label Azure OpenAI into the active single-select prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertOptionsLoaded_c93c4b25a_1_8" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_singleSelect_assertOption_c93c4b25a_1_8", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the option Azure OpenAI is visible and selectable in the filtered single-select prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_filter_c93c4b25a_1_8" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_singleSelect_confirm_c93c4b25a_1_8", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to confirm the filtered single-select option.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertOption_c93c4b25a_1_8" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_textInput_assertQuestion_c93c4b25a_1_9", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the active prompt titled Azure OpenAI Key is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_confirm_c93c4b25a_1_8" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_textInput_input_c93c4b25a_1_9", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "${{secret:AZURE_OPENAI_API_KEY}}" + }, + "description": "Type the authored value into the active text prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_assertQuestion_c93c4b25a_1_9" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text" + ] + }, + { + "step_id": "step_textInput_confirm_c93c4b25a_1_9", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to submit the accepted text input.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_input_c93c4b25a_1_9" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text" + ] + }, + { + "step_id": "step_textInput_assertQuestion_c93c4b25a_1_10", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the active prompt titled Azure OpenAI Endpoint is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_confirm_c93c4b25a_1_9" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_textInput_input_c93c4b25a_1_10", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "${{env:AZURE_OPENAI_ENDPOINT}}" + }, + "description": "Type the authored value into the active text prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_assertQuestion_c93c4b25a_1_10" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text" + ] + }, + { + "step_id": "step_textInput_confirm_c93c4b25a_1_10", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to submit the accepted text input.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_input_c93c4b25a_1_10" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text" + ] + }, + { + "step_id": "step_textInput_assertQuestion_c93c4b25a_1_11", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the active prompt titled Azure OpenAI Deployment Name is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_confirm_c93c4b25a_1_10" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_textInput_input_c93c4b25a_1_11", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "${{env:AZURE_OPENAI_MODEL}}" + }, + "description": "Type the authored value into the active text prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_assertQuestion_c93c4b25a_1_11" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text" + ] + }, + { + "step_id": "step_textInput_confirm_c93c4b25a_1_11", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to submit the accepted text input.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_input_c93c4b25a_1_11" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text" + ] + }, + { + "step_id": "step_singleSelect_assertQuestion_c93c4b25a_1_12", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the active prompt titled Programming Language is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_confirm_c93c4b25a_1_11" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_singleSelect_assertOptionsLoaded_c93c4b25a_1_12", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the prompt titled Programming Language has finished loading and lists at least one selectable option.", + "content_refs": [], + "timeout": 120, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertQuestion_c93c4b25a_1_12" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 120" + ] + }, + { + "step_id": "step_singleSelect_filter_c93c4b25a_1_12", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "TypeScript" + }, + "description": "Type the resolved option label TypeScript into the active single-select prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertOptionsLoaded_c93c4b25a_1_12" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_singleSelect_assertOption_c93c4b25a_1_12", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the option TypeScript is visible and selectable in the filtered single-select prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_filter_c93c4b25a_1_12" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_singleSelect_confirm_c93c4b25a_1_12", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to confirm the filtered single-select option.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertOption_c93c4b25a_1_12" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_confirmOption_assertPrompt_c93c4b25a_1_13", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the active prompt titled Workspace Folder is visible and the option Default folder is focused.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_confirm_c93c4b25a_1_12" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "interaction:key-press", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_confirmOption_confirm_c93c4b25a_1_13", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to confirm the Default folder option.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_confirmOption_assertPrompt_c93c4b25a_1_13" + ], + "preconditions": [ + "dhash:364:74:16:5:08056a9a5d5516b6", + "dhash:364:74:96:5:44232286e2168e01", + "dhash:364:74:0:10:f0b09494b2717075" + ], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "interaction:key-press" + ] + }, + { + "step_id": "step_textInput_assertQuestion_c93c4b25a_1_14", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the active prompt titled Application Name is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_confirmOption_confirm_c93c4b25a_1_13" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_textInput_input_c93c4b25a_1_14", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "${{var:app_name:vscuse_app_#####}}" + }, + "description": "Type the authored value into the active text prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_assertQuestion_c93c4b25a_1_14" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text" + ] + }, + { + "step_id": "step_textInput_confirm_c93c4b25a_1_14", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to submit the accepted text input.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_input_c93c4b25a_1_14" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text" + ] + }, + { + "step_id": "step_assertProjectWindowReady_assert_c93c4b25a_1_15", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Preview README.md editor tab is open in Visual Studio Code.", + "content_refs": [], + "timeout": 60, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_confirm_c93c4b25a_1_14" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:initialization", + "initialization:assertProjectWindowReady", + "step_retry_timeout: 60" + ] + }, + { + "step_id": "step_checkWorkspaceFiles_verify_c93c4b25a_2_1", + "agent": "code", + "tool": "", + "parameters": { + "sample": "=== Generated Script ===\nLanguage: bash\n\n```bash\nset -euo pipefail\nPROJECT_DIR=\"/home/vscode/AgentsToolkitProjects/${{var:app_name}}\" ASSERTIONS_B64=\"W3sicGF0aCI6Im0zNjVhZ2VudHMueW1sIiwiZXhpc3RzIjp0cnVlLCJjb250YWlucyI6WyJ2ZXJzaW9uOiB2MS4xMSIsInByb3Zpc2lvbjoiLCJkZXBsb3k6Il0sIm5vdENvbnRhaW5zIjpbIm9hdXRoL3JlZ2lzdGVyIiwiZGNyL3JlZ2lzdGVyIl19XQ==\" python3 - <<'PY'\nimport base64\nimport json\nimport os\nfrom pathlib import Path\n\nproject = Path(os.environ[\"PROJECT_DIR\"]).resolve()\nassertions = json.loads(base64.b64decode(os.environ[\"ASSERTIONS_B64\"]).decode(\"utf-8\"))\nfor assertion in assertions:\n target = (project / assertion[\"path\"]).resolve()\n try:\n target.relative_to(project)\n except ValueError as error:\n raise AssertionError(\"File assertion escaped the project directory\") from error\n exists = target.is_file()\n if exists != assertion[\"exists\"]:\n raise AssertionError(f\"Unexpected file existence for {assertion['path']}\")\n if not exists:\n continue\n content = target.read_text(encoding=\"utf-8\")\n for expected in assertion.get(\"contains\", []):\n expected = expected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if expected not in content:\n raise AssertionError(f\"Expected content is absent from {assertion['path']}\")\n for unexpected in assertion.get(\"notContains\", []):\n unexpected = unexpected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if unexpected in content:\n raise AssertionError(f\"Unexpected content is present in {assertion['path']}\")\nPY\n```" + }, + "description": "@code verify the authored workspace file existence and content assertions without logging file contents.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_assertProjectWindowReady_assert_c93c4b25a_1_15" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:checks", + "assertion:file", + "step_retry_timeout:120" + ] + }, + { + "step_id": "step_checkWorkspaceFiles_verify_c93c4b25a_2_2", + "agent": "code", + "tool": "", + "parameters": { + "sample": "=== Generated Script ===\nLanguage: bash\n\n```bash\nset -euo pipefail\nPROJECT_DIR=\"/home/vscode/AgentsToolkitProjects/${{var:app_name}}\" ASSERTIONS_B64=\"W3sicGF0aCI6InNyYy9pbmRleC50cyIsImV4aXN0cyI6dHJ1ZSwiY29udGFpbnMiOltdLCJub3RDb250YWlucyI6W119XQ==\" python3 - <<'PY'\nimport base64\nimport json\nimport os\nfrom pathlib import Path\n\nproject = Path(os.environ[\"PROJECT_DIR\"]).resolve()\nassertions = json.loads(base64.b64decode(os.environ[\"ASSERTIONS_B64\"]).decode(\"utf-8\"))\nfor assertion in assertions:\n target = (project / assertion[\"path\"]).resolve()\n try:\n target.relative_to(project)\n except ValueError as error:\n raise AssertionError(\"File assertion escaped the project directory\") from error\n exists = target.is_file()\n if exists != assertion[\"exists\"]:\n raise AssertionError(f\"Unexpected file existence for {assertion['path']}\")\n if not exists:\n continue\n content = target.read_text(encoding=\"utf-8\")\n for expected in assertion.get(\"contains\", []):\n expected = expected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if expected not in content:\n raise AssertionError(f\"Expected content is absent from {assertion['path']}\")\n for unexpected in assertion.get(\"notContains\", []):\n unexpected = unexpected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if unexpected in content:\n raise AssertionError(f\"Unexpected content is present in {assertion['path']}\")\nPY\n```" + }, + "description": "@code verify the authored workspace file existence and content assertions without logging file contents.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_checkWorkspaceFiles_verify_c93c4b25a_2_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:checks", + "assertion:file", + "step_retry_timeout:120" + ] + }, + { + "step_id": "step_checkWorkspaceFiles_verify_c93c4b25a_2_3", + "agent": "code", + "tool": "", + "parameters": { + "sample": "=== Generated Script ===\nLanguage: bash\n\n```bash\nset -euo pipefail\nPROJECT_DIR=\"/home/vscode/AgentsToolkitProjects/${{var:app_name}}\" ASSERTIONS_B64=\"W3sicGF0aCI6InNyYy9hZ2VudC50cyIsImV4aXN0cyI6dHJ1ZSwiY29udGFpbnMiOltdLCJub3RDb250YWlucyI6W119XQ==\" python3 - <<'PY'\nimport base64\nimport json\nimport os\nfrom pathlib import Path\n\nproject = Path(os.environ[\"PROJECT_DIR\"]).resolve()\nassertions = json.loads(base64.b64decode(os.environ[\"ASSERTIONS_B64\"]).decode(\"utf-8\"))\nfor assertion in assertions:\n target = (project / assertion[\"path\"]).resolve()\n try:\n target.relative_to(project)\n except ValueError as error:\n raise AssertionError(\"File assertion escaped the project directory\") from error\n exists = target.is_file()\n if exists != assertion[\"exists\"]:\n raise AssertionError(f\"Unexpected file existence for {assertion['path']}\")\n if not exists:\n continue\n content = target.read_text(encoding=\"utf-8\")\n for expected in assertion.get(\"contains\", []):\n expected = expected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if expected not in content:\n raise AssertionError(f\"Expected content is absent from {assertion['path']}\")\n for unexpected in assertion.get(\"notContains\", []):\n unexpected = unexpected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if unexpected in content:\n raise AssertionError(f\"Unexpected content is present in {assertion['path']}\")\nPY\n```" + }, + "description": "@code verify the authored workspace file existence and content assertions without logging file contents.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_checkWorkspaceFiles_verify_c93c4b25a_2_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:checks", + "assertion:file", + "step_retry_timeout:120" + ] + }, + { + "step_id": "step_checkWorkspaceFiles_verify_c93c4b25a_2_4", + "agent": "code", + "tool": "", + "parameters": { + "sample": "=== Generated Script ===\nLanguage: bash\n\n```bash\nset -euo pipefail\nPROJECT_DIR=\"/home/vscode/AgentsToolkitProjects/${{var:app_name}}\" ASSERTIONS_B64=\"W3sicGF0aCI6InNyYy90b29scy9nZXRXZWF0aGVyVG9vbC50cyIsImV4aXN0cyI6dHJ1ZSwiY29udGFpbnMiOltdLCJub3RDb250YWlucyI6W119XQ==\" python3 - <<'PY'\nimport base64\nimport json\nimport os\nfrom pathlib import Path\n\nproject = Path(os.environ[\"PROJECT_DIR\"]).resolve()\nassertions = json.loads(base64.b64decode(os.environ[\"ASSERTIONS_B64\"]).decode(\"utf-8\"))\nfor assertion in assertions:\n target = (project / assertion[\"path\"]).resolve()\n try:\n target.relative_to(project)\n except ValueError as error:\n raise AssertionError(\"File assertion escaped the project directory\") from error\n exists = target.is_file()\n if exists != assertion[\"exists\"]:\n raise AssertionError(f\"Unexpected file existence for {assertion['path']}\")\n if not exists:\n continue\n content = target.read_text(encoding=\"utf-8\")\n for expected in assertion.get(\"contains\", []):\n expected = expected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if expected not in content:\n raise AssertionError(f\"Expected content is absent from {assertion['path']}\")\n for unexpected in assertion.get(\"notContains\", []):\n unexpected = unexpected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if unexpected in content:\n raise AssertionError(f\"Unexpected content is present in {assertion['path']}\")\nPY\n```" + }, + "description": "@code verify the authored workspace file existence and content assertions without logging file contents.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_checkWorkspaceFiles_verify_c93c4b25a_2_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:checks", + "assertion:file", + "step_retry_timeout:120" + ] + }, + { + "step_id": "step_checkWorkspaceFiles_verify_c93c4b25a_2_5", + "agent": "code", + "tool": "", + "parameters": { + "sample": "=== Generated Script ===\nLanguage: bash\n\n```bash\nset -euo pipefail\nPROJECT_DIR=\"/home/vscode/AgentsToolkitProjects/${{var:app_name}}\" ASSERTIONS_B64=\"W3sicGF0aCI6InBhY2thZ2UuanNvbiIsImV4aXN0cyI6dHJ1ZSwiY29udGFpbnMiOltdLCJub3RDb250YWlucyI6W119XQ==\" python3 - <<'PY'\nimport base64\nimport json\nimport os\nfrom pathlib import Path\n\nproject = Path(os.environ[\"PROJECT_DIR\"]).resolve()\nassertions = json.loads(base64.b64decode(os.environ[\"ASSERTIONS_B64\"]).decode(\"utf-8\"))\nfor assertion in assertions:\n target = (project / assertion[\"path\"]).resolve()\n try:\n target.relative_to(project)\n except ValueError as error:\n raise AssertionError(\"File assertion escaped the project directory\") from error\n exists = target.is_file()\n if exists != assertion[\"exists\"]:\n raise AssertionError(f\"Unexpected file existence for {assertion['path']}\")\n if not exists:\n continue\n content = target.read_text(encoding=\"utf-8\")\n for expected in assertion.get(\"contains\", []):\n expected = expected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if expected not in content:\n raise AssertionError(f\"Expected content is absent from {assertion['path']}\")\n for unexpected in assertion.get(\"notContains\", []):\n unexpected = unexpected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if unexpected in content:\n raise AssertionError(f\"Unexpected content is present in {assertion['path']}\")\nPY\n```" + }, + "description": "@code verify the authored workspace file existence and content assertions without logging file contents.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_checkWorkspaceFiles_verify_c93c4b25a_2_4" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:checks", + "assertion:file", + "step_retry_timeout:120" + ] + }, + { + "step_id": "step_checkWorkspaceFiles_verify_c93c4b25a_2_6", + "agent": "code", + "tool": "", + "parameters": { + "sample": "=== Generated Script ===\nLanguage: bash\n\n```bash\nset -euo pipefail\nPROJECT_DIR=\"/home/vscode/AgentsToolkitProjects/${{var:app_name}}\" ASSERTIONS_B64=\"W3sicGF0aCI6ImluZnJhL2F6dXJlLmJpY2VwIiwiZXhpc3RzIjp0cnVlLCJjb250YWlucyI6W10sIm5vdENvbnRhaW5zIjpbXX1d\" python3 - <<'PY'\nimport base64\nimport json\nimport os\nfrom pathlib import Path\n\nproject = Path(os.environ[\"PROJECT_DIR\"]).resolve()\nassertions = json.loads(base64.b64decode(os.environ[\"ASSERTIONS_B64\"]).decode(\"utf-8\"))\nfor assertion in assertions:\n target = (project / assertion[\"path\"]).resolve()\n try:\n target.relative_to(project)\n except ValueError as error:\n raise AssertionError(\"File assertion escaped the project directory\") from error\n exists = target.is_file()\n if exists != assertion[\"exists\"]:\n raise AssertionError(f\"Unexpected file existence for {assertion['path']}\")\n if not exists:\n continue\n content = target.read_text(encoding=\"utf-8\")\n for expected in assertion.get(\"contains\", []):\n expected = expected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if expected not in content:\n raise AssertionError(f\"Expected content is absent from {assertion['path']}\")\n for unexpected in assertion.get(\"notContains\", []):\n unexpected = unexpected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if unexpected in content:\n raise AssertionError(f\"Unexpected content is present in {assertion['path']}\")\nPY\n```" + }, + "description": "@code verify the authored workspace file existence and content assertions without logging file contents.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_checkWorkspaceFiles_verify_c93c4b25a_2_5" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:checks", + "assertion:file", + "step_retry_timeout:120" + ] + }, + { + "step_id": "step_checkWorkspaceFiles_verify_c93c4b25a_2_7", + "agent": "code", + "tool": "", + "parameters": { + "sample": "=== Generated Script ===\nLanguage: bash\n\n```bash\nset -euo pipefail\nPROJECT_DIR=\"/home/vscode/AgentsToolkitProjects/${{var:app_name}}\" ASSERTIONS_B64=\"W3sicGF0aCI6ImFwcFBhY2thZ2UvbWFuaWZlc3QuanNvbiIsImV4aXN0cyI6dHJ1ZSwiY29udGFpbnMiOlsiXCJtYW5pZmVzdFZlcnNpb25cIjogXCIxLjI5XCIiXSwibm90Q29udGFpbnMiOltdfV0=\" python3 - <<'PY'\nimport base64\nimport json\nimport os\nfrom pathlib import Path\n\nproject = Path(os.environ[\"PROJECT_DIR\"]).resolve()\nassertions = json.loads(base64.b64decode(os.environ[\"ASSERTIONS_B64\"]).decode(\"utf-8\"))\nfor assertion in assertions:\n target = (project / assertion[\"path\"]).resolve()\n try:\n target.relative_to(project)\n except ValueError as error:\n raise AssertionError(\"File assertion escaped the project directory\") from error\n exists = target.is_file()\n if exists != assertion[\"exists\"]:\n raise AssertionError(f\"Unexpected file existence for {assertion['path']}\")\n if not exists:\n continue\n content = target.read_text(encoding=\"utf-8\")\n for expected in assertion.get(\"contains\", []):\n expected = expected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if expected not in content:\n raise AssertionError(f\"Expected content is absent from {assertion['path']}\")\n for unexpected in assertion.get(\"notContains\", []):\n unexpected = unexpected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if unexpected in content:\n raise AssertionError(f\"Unexpected content is present in {assertion['path']}\")\nPY\n```" + }, + "description": "@code verify the authored workspace file existence and content assertions without logging file contents.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_checkWorkspaceFiles_verify_c93c4b25a_2_6" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:checks", + "assertion:file", + "step_retry_timeout:120" + ] + }, + { + "step_id": "step_executeCommand_open_c93c4b25a_3_1", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "f1" + }, + "description": "Press the F1 key to open the Command Palette in Visual Studio Code.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_checkWorkspaceFiles_verify_c93c4b25a_2_7" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertPalette_c93c4b25a_3_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Visual Studio Code Command Palette is visible with a > character in its input box and is ready to accept a command search.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_open_c93c4b25a_3_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_filter_c93c4b25a_3_1", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "View: Show Microsoft 365 Agents Toolkit" + }, + "description": "Type the resolved command title into the active Command Palette.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertPalette_c93c4b25a_3_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertCommand_c93c4b25a_3_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Command Palette input box reads >View: Show Microsoft 365 Agents Toolkit and the highlighted command listed under it is titled View: Show Microsoft 365 Agents Toolkit.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_filter_c93c4b25a_3_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_execute_c93c4b25a_3_1", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to execute the selected Command Palette command.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertCommand_c93c4b25a_3_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_signInM365_assertOption_c93c4b25a_3_2", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the ACCOUNTS section of the side bar lists an entry whose label begins with Sign in to Microsoft.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_execute_c93c4b25a_3_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:authentication", + "account:m365", + "entry_state:toolkit-side-bar-visible", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_signInM365_selectOption_c93c4b25a_3_2", + "agent": "interaction", + "tool": "click", + "parameters": { + "button": "left", + "x": 213, + "y": 102 + }, + "description": "Click the entry whose label begins with \"Sign in to Microsoft\" in the ACCOUNTS section of the side bar.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInM365_assertOption_c93c4b25a_3_2" + ], + "preconditions": [ + "dhash:213:102:16:5:9c63d67674d4c718", + "dhash:213:102:96:5:8c512758d92c2cce", + "dhash:213:102:0:10:92c86223a3622421" + ], + "postconditions": [], + "tags": [ + "component:authentication", + "account:m365" + ] + }, + { + "step_id": "step_signInM365_confirmSignIn_c93c4b25a_3_2", + "agent": "interaction", + "tool": "click", + "parameters": { + "button": "left", + "x": 762, + "y": 97 + }, + "description": "Click the \"Sign in\" button within the Microsoft 365 developer sandbox modal.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInM365_selectOption_c93c4b25a_3_2" + ], + "preconditions": [ + "dhash:762:97:16:5:24b1a72ba9aba343", + "dhash:762:97:96:5:0008304b0f344900", + "dhash:762:97:0:10:9c68332223232421" + ], + "postconditions": [], + "tags": [ + "component:authentication", + "account:m365" + ] + }, + { + "step_id": "step_signInM365_focusAccount_c93c4b25a_3_2", + "agent": "interaction", + "tool": "click", + "parameters": { + "button": "left", + "x": 369, + "y": 350 + }, + "description": "Click on the \"Email or phone\" input field in the Microsoft Sign-in form on the login.microsoftonline.com webpage to focus the cursor for credential entry.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInM365_confirmSignIn_c93c4b25a_3_2" + ], + "preconditions": [ + "dhash:369:350:16:5:2113d25252525221", + "dhash:369:350:96:5:0919006d19220812", + "dhash:369:350:0:10:1b88d0d1e5e6dae4" + ], + "postconditions": [], + "tags": [ + "component:authentication", + "account:m365", + "precondition_wait_timeout: 60" + ] + }, + { + "step_id": "step_signInM365_typeAccount_c93c4b25a_3_2", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "${{env:M365_ACCOUNT_NAME}}" + }, + "description": "Enter the resolved Microsoft 365 account name into the email or username input field on the Microsoft Sign in page.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInM365_focusAccount_c93c4b25a_3_2" + ], + "preconditions": [ + "dhash:512:384:0:20:1b28f0d9e7e6dae4" + ], + "postconditions": [], + "tags": [ + "component:authentication", + "account:m365", + "delay: 3" + ] + }, + { + "step_id": "step_signInM365_next_c93c4b25a_3_2", + "agent": "interaction", + "tool": "click", + "parameters": { + "button": "left", + "x": 629, + "y": 484 + }, + "description": "Click the blue \"Next\" button on the Microsoft sign-in page, confirming the entered email address for login.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInM365_typeAccount_c93c4b25a_3_2" + ], + "preconditions": [ + "dhash:629:484:16:5:23248c4b6c24d32c", + "dhash:629:484:96:5:00004eb131860000", + "dhash:629:484:0:10:1b28f0d9e7e6dae4" + ], + "postconditions": [], + "tags": [ + "component:authentication", + "account:m365", + "delay:3" + ] + }, + { + "step_id": "step_signInM365_typePassword_c93c4b25a_3_2", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "${{secret:M365_ACCOUNT_PASSWORD}}" + }, + "description": "Type the resolved Microsoft 365 account password into the Password field on the Microsoft login page.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInM365_next_c93c4b25a_3_2" + ], + "preconditions": [ + "dhash:512:384:0:20:1b08f0d9d1e6e6e4" + ], + "postconditions": [], + "tags": [ + "component:authentication", + "account:m365", + "delay: 3" + ] + }, + { + "step_id": "step_signInM365_submit_c93c4b25a_3_2", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to submit the Microsoft 365 login form from the password entry screen.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInM365_typePassword_c93c4b25a_3_2" + ], + "preconditions": [ + "dhash:512:384:0:20:1b08f0d9d1e6e6e4" + ], + "postconditions": [], + "tags": [ + "component:authentication", + "account:m365", + "delay: 3" + ] + }, + { + "step_id": "step_signInM365_closeBrowser_c93c4b25a_3_2", + "agent": "interaction", + "tool": "click", + "parameters": { + "button": "left", + "x": 1004, + "y": 19 + }, + "description": "Click the \"Close\" button (red cross icon) in the browser tab bar to close the \"M365 Account - Sign In\" page.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInM365_submit_c93c4b25a_3_2" + ], + "preconditions": [ + "dhash:1004:19:16:5:aac833964c9633cc", + "dhash:1004:19:96:5:d2232323c200e6e6", + "dhash:1004:19:0:10:0b01410169414141" + ], + "postconditions": [], + "tags": [ + "component:authentication", + "account:m365", + "delay: 3" + ] + }, + { + "step_id": "step_signInM365_assertReady_c93c4b25a_3_2", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion there's ${{env:M365_ACCOUNT_NAME}} in the \"ACCOUNTS\" section", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInM365_closeBrowser_c93c4b25a_3_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:authentication", + "account:m365", + "readiness:account-visible", + "step_retry_timeout: 180" + ] + }, + { + "step_id": "step_executeCommand_open_c93c4b25a_4_1", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "f1" + }, + "description": "Press the F1 key to open the Command Palette in Visual Studio Code.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInM365_assertReady_c93c4b25a_3_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertPalette_c93c4b25a_4_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Visual Studio Code Command Palette is visible with a > character in its input box and is ready to accept a command search.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_open_c93c4b25a_4_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_filter_c93c4b25a_4_1", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Debug: Select and Start Debugging" + }, + "description": "Type the resolved command title into the active Command Palette.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertPalette_c93c4b25a_4_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertCommand_c93c4b25a_4_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Command Palette input box reads >Debug: Select and Start Debugging and the highlighted command listed under it is titled Debug: Select and Start Debugging.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_filter_c93c4b25a_4_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_execute_c93c4b25a_4_1", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to execute the selected Command Palette command.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertCommand_c93c4b25a_4_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_filterOption_filter_c93c4b25a_4_2", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Debug in Teams (Chrome)" + }, + "description": "Type the resolved option label into the active option picker.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_execute_c93c4b25a_4_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_filterOption_assertOption_c93c4b25a_4_2", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the option Debug in Teams (Chrome) is visible and selectable in the filtered option picker.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_filterOption_filter_c93c4b25a_4_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_filterOption_confirm_c93c4b25a_4_2", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to confirm the filtered option.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_filterOption_assertOption_c93c4b25a_4_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_browserM365PasswordSignIn_assertPassword_c93c4b25a_4_3", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Microsoft sign-in page in Chrome names ${{env:M365_ACCOUNT_NAME}} and asks for that account's password.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_filterOption_confirm_c93c4b25a_4_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:authentication", + "surface:browser", + "step_retry_timeout: 300" + ] + }, + { + "step_id": "step_browserM365PasswordSignIn_focusPassword_c93c4b25a_4_3", + "agent": "interaction", + "tool": "click", + "parameters": { + "button": "left", + "x": 400, + "y": 405 + }, + "description": "Click the password input on the Microsoft sign-in page to move focus out of the browser address bar.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_browserM365PasswordSignIn_assertPassword_c93c4b25a_4_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:authentication", + "surface:browser" + ] + }, + { + "step_id": "step_browserM365PasswordSignIn_enterPassword_c93c4b25a_4_3", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "${{secret:M365_ACCOUNT_PASSWORD}}" + }, + "description": "Enter the registered Microsoft 365 password in the focused password input of the browser sign-in form.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_browserM365PasswordSignIn_focusPassword_c93c4b25a_4_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:authentication", + "surface:browser" + ] + }, + { + "step_id": "step_browserM365PasswordSignIn_submitPassword_c93c4b25a_4_3", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to submit the Microsoft 365 password.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_browserM365PasswordSignIn_enterPassword_c93c4b25a_4_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:authentication", + "surface:browser" + ] + }, + { + "step_id": "step_browserM365PasswordSignIn_assertStaySignedIn_c93c4b25a_4_3", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Microsoft Stay signed in question is visible with Yes focused.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_browserM365PasswordSignIn_submitPassword_c93c4b25a_4_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:authentication", + "surface:browser", + "step_retry_timeout: 120" + ] + }, + { + "step_id": "step_browserM365PasswordSignIn_confirmStaySignedIn_c93c4b25a_4_3", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to confirm staying signed in.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_browserM365PasswordSignIn_assertStaySignedIn_c93c4b25a_4_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:authentication", + "surface:browser", + "delay: 30" + ] + }, + { + "step_id": "step_assertReady_assertReady_c93c4b25a_4_4", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Microsoft Teams app details page for an app whose name starts with ${{var:app_name}} is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_browserM365PasswordSignIn_confirmStaySignedIn_c93c4b25a_4_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:browser", + "action:assert-ready", + "step_retry_timeout: 180" + ] + }, + { + "step_id": "step_addAndOpenApp_assertAdd_c93c4b25a_5_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the blue \"Add\" button exists.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_assertReady_assertReady_c93c4b25a_4_4" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:browser", + "host_surface:teams", + "entry_state:add", + "step_retry_timeout: 180" + ] + }, + { + "step_id": "step_addAndOpenApp_add_c93c4b25a_5_1", + "agent": "interaction", + "tool": "click", + "parameters": { + "button": "left", + "x": 288, + "y": 214 + }, + "description": "Click Add on the app details popup within the Microsoft Teams interface.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_addAndOpenApp_assertAdd_c93c4b25a_5_1" + ], + "preconditions": [ + "dhash:288:214:16:5:05100a0511030b12", + "dhash:288:214:96:5:2616011c1c01005b", + "dhash:288:214:0:10:00b4b0d8f8fcf0d8" + ], + "postconditions": [], + "tags": [ + "component:browser", + "host_surface:teams", + "entry_state:add" + ] + }, + { + "step_id": "step_addAndOpenApp_assertAdded_c93c4b25a_5_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the \"Added successfully!\" dialog and its Open button are visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_addAndOpenApp_add_c93c4b25a_5_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:browser", + "host_surface:teams", + "entry_state:added", + "step_retry_timeout: 180" + ] + }, + { + "step_id": "step_addAndOpenApp_open_c93c4b25a_5_1", + "agent": "interaction", + "tool": "click", + "parameters": { + "button": "left", + "x": 533, + "y": 508 + }, + "description": "Click Open in the Microsoft Teams Added successfully dialog.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_addAndOpenApp_assertAdded_c93c4b25a_5_1" + ], + "preconditions": [ + "dhash:533:508:16:5:00987494ca4acacc", + "dhash:533:508:96:5:000058a48598e36b", + "dhash:533:508:0:10:1669696969696979" + ], + "postconditions": [], + "tags": [ + "component:browser", + "host_surface:teams", + "entry_state:added", + "precondition_wait_timeout: 120" + ] + }, + { + "step_id": "step_addAndOpenApp_assertReady_c93c4b25a_5_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Microsoft Teams app details page for an app whose name starts with ${{var:app_name}} is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_addAndOpenApp_open_c93c4b25a_5_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:browser", + "host_surface:teams", + "readiness:chat-ready", + "step_retry_timeout: 180" + ] + }, + { + "step_id": "step_sendTeamsMessage_assertInput_c93c4b25a_6_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Teams \"Type a message\" input is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_addAndOpenApp_assertReady_c93c4b25a_5_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:browser", + "host_surface:teams", + "entry_state:chat-ready", + "action:send-message", + "step_retry_timeout: 120" + ] + }, + { + "step_id": "step_sendTeamsMessage_focusInput_c93c4b25a_6_1", + "agent": "interaction", + "tool": "click", + "parameters": { + "button": "left", + "x": 200, + "y": 712 + }, + "description": "Click the Teams \"Type a message\" input.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_sendTeamsMessage_assertInput_c93c4b25a_6_1" + ], + "preconditions": [ + "dhash:200:712:16:5:258c421e0d2c2d1c", + "dhash:200:712:96:5:0020887362000200", + "dhash:200:712:0:10:24b4b08e8e8c81a1" + ], + "postconditions": [], + "tags": [ + "component:browser", + "host_surface:teams", + "entry_state:chat-ready", + "action:send-message" + ] + }, + { + "step_id": "step_sendTeamsMessage_type_c93c4b25a_6_1", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "What is the weather in Seattle?" + }, + "description": "Type \"What is the weather in Seattle?\" into the Teams message input.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_sendTeamsMessage_focusInput_c93c4b25a_6_1" + ], + "preconditions": [ + "dhash:512:384:0:20:24b4b08e8e8c80a9" + ], + "postconditions": [], + "tags": [ + "component:browser", + "host_surface:teams", + "entry_state:chat-ready", + "action:send-message" + ] + }, + { + "step_id": "step_sendTeamsMessage_send_c93c4b25a_6_1", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to send the Teams message.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_sendTeamsMessage_type_c93c4b25a_6_1" + ], + "preconditions": [ + "dhash:512:384:0:20:24b4b08e8e8c80b9" + ], + "postconditions": [], + "tags": [ + "component:browser", + "host_surface:teams", + "entry_state:chat-ready", + "action:send-message" + ] + }, + { + "step_id": "step_assertChatReplied_assert_c93c4b25a_6_2", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the current assistant turn is complete and contains a non-empty response.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_sendTeamsMessage_send_c93c4b25a_6_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:browser", + "action:assert-chat-response", + "expectation:replied", + "step_retry_timeout: 120" + ] + }, + { + "step_id": "step_assertChatContains_assert_c93c4b25a_6_3", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the current assistant response contains \"Seattle\".", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_assertChatReplied_assert_c93c4b25a_6_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:browser", + "action:assert-chat-response", + "expectation:contains", + "step_retry_timeout: 120" + ] + } + ], + "screenshots": {} +} diff --git a/packages/tests/vscuse/vscode-test-cases/plans/weather-agent--weather-ts-azure-openai-playground.json b/packages/tests/vscuse/vscode-test-cases/plans/weather-agent--weather-ts-azure-openai-playground.json new file mode 100644 index 00000000000..745d78ba2ae --- /dev/null +++ b/packages/tests/vscuse/vscode-test-cases/plans/weather-agent--weather-ts-azure-openai-playground.json @@ -0,0 +1,1736 @@ +{ + "plan_metadata": { + "version": "1.1", + "plan_id": "plan_8fb214f92bd8", + "execution_context": { + "delay_between_steps": 1, + "stop_on_error": true, + "precondition_wait_timeout": 30, + "precondition_retry_interval": 1 + }, + "total_steps": 74, + "name": "weather-ts-azure-openai-playground", + "description": { + "owner": "", + "workitem": "SCN-CREATE-WEATHER-01", + "other": "" + }, + "execution_order": [ + "step_closeWelcomeOverlay_assertVisible_c3b349e90_1_1", + "step_closeWelcomeOverlay_close_c3b349e90_1_1", + "step_closeWelcomeOverlay_assertReady_c3b349e90_1_1", + "step_executeCommand_open_c3b349e90_1_2", + "step_executeCommand_assertPalette_c3b349e90_1_2", + "step_executeCommand_filter_c3b349e90_1_2", + "step_executeCommand_assertCommand_c3b349e90_1_2", + "step_executeCommand_execute_c3b349e90_1_2", + "step_assertToolkitViewSettled_assert_c3b349e90_1_3", + "step_closeGetStartedEditor_assertActive_c3b349e90_1_4", + "step_closeGetStartedEditor_close_c3b349e90_1_4", + "step_closeGetStartedEditor_assertClosed_c3b349e90_1_4", + "step_executeCommand_open_c3b349e90_1_5", + "step_executeCommand_assertPalette_c3b349e90_1_5", + "step_executeCommand_filter_c3b349e90_1_5", + "step_executeCommand_assertCommand_c3b349e90_1_5", + "step_executeCommand_execute_c3b349e90_1_5", + "step_singleSelect_assertQuestion_c3b349e90_1_6", + "step_singleSelect_assertOptionsLoaded_c3b349e90_1_6", + "step_singleSelect_filter_c3b349e90_1_6", + "step_singleSelect_assertOption_c3b349e90_1_6", + "step_singleSelect_confirm_c3b349e90_1_6", + "step_singleSelect_assertQuestion_c3b349e90_1_7", + "step_singleSelect_assertOptionsLoaded_c3b349e90_1_7", + "step_singleSelect_filter_c3b349e90_1_7", + "step_singleSelect_assertOption_c3b349e90_1_7", + "step_singleSelect_confirm_c3b349e90_1_7", + "step_singleSelect_assertQuestion_c3b349e90_1_8", + "step_singleSelect_assertOptionsLoaded_c3b349e90_1_8", + "step_singleSelect_filter_c3b349e90_1_8", + "step_singleSelect_assertOption_c3b349e90_1_8", + "step_singleSelect_confirm_c3b349e90_1_8", + "step_textInput_assertQuestion_c3b349e90_1_9", + "step_textInput_input_c3b349e90_1_9", + "step_textInput_confirm_c3b349e90_1_9", + "step_textInput_assertQuestion_c3b349e90_1_10", + "step_textInput_input_c3b349e90_1_10", + "step_textInput_confirm_c3b349e90_1_10", + "step_textInput_assertQuestion_c3b349e90_1_11", + "step_textInput_input_c3b349e90_1_11", + "step_textInput_confirm_c3b349e90_1_11", + "step_singleSelect_assertQuestion_c3b349e90_1_12", + "step_singleSelect_assertOptionsLoaded_c3b349e90_1_12", + "step_singleSelect_filter_c3b349e90_1_12", + "step_singleSelect_assertOption_c3b349e90_1_12", + "step_singleSelect_confirm_c3b349e90_1_12", + "step_confirmOption_assertPrompt_c3b349e90_1_13", + "step_confirmOption_confirm_c3b349e90_1_13", + "step_textInput_assertQuestion_c3b349e90_1_14", + "step_textInput_input_c3b349e90_1_14", + "step_textInput_confirm_c3b349e90_1_14", + "step_assertProjectWindowReady_assert_c3b349e90_1_15", + "step_checkWorkspaceFiles_verify_c3b349e90_2_1", + "step_checkWorkspaceFiles_verify_c3b349e90_2_2", + "step_checkWorkspaceFiles_verify_c3b349e90_2_3", + "step_checkWorkspaceFiles_verify_c3b349e90_2_4", + "step_checkWorkspaceFiles_verify_c3b349e90_2_5", + "step_checkWorkspaceFiles_verify_c3b349e90_2_6", + "step_checkWorkspaceFiles_verify_c3b349e90_2_7", + "step_executeCommand_open_c3b349e90_3_1", + "step_executeCommand_assertPalette_c3b349e90_3_1", + "step_executeCommand_filter_c3b349e90_3_1", + "step_executeCommand_assertCommand_c3b349e90_3_1", + "step_executeCommand_execute_c3b349e90_3_1", + "step_filterOption_filter_c3b349e90_3_2", + "step_filterOption_assertOption_c3b349e90_3_2", + "step_filterOption_confirm_c3b349e90_3_2", + "step_assertReady_assertReady_c3b349e90_3_3", + "step_sendPlaygroundMessage_assertInput_c3b349e90_5_1", + "step_sendPlaygroundMessage_focusInput_c3b349e90_5_1", + "step_sendPlaygroundMessage_type_c3b349e90_5_1", + "step_sendPlaygroundMessage_send_c3b349e90_5_1", + "step_assertChatReplied_assert_c3b349e90_5_2", + "step_assertChatContains_assert_c3b349e90_5_3" + ], + "tags": [ + "case_id:weather-ts-azure-openai-playground", + "scenario_id:SCN-CREATE-WEATHER-01", + "template_id:weather-agent", + "gate:pr" + ] + }, + "steps": [ + { + "step_id": "step_closeWelcomeOverlay_assertVisible_c3b349e90_1_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the startup \"Welcome to VS Code\" sign-in overlay is visible and its Close button is available.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:initialization", + "initialization:closeWelcomeOverlay", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_closeWelcomeOverlay_close_c3b349e90_1_1", + "agent": "interaction", + "tool": "click", + "parameters": { + "button": "left", + "x": 952, + "y": 128 + }, + "description": "Click the Close button on the startup Welcome sign-in overlay.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_closeWelcomeOverlay_assertVisible_c3b349e90_1_1" + ], + "preconditions": [ + "dhash:952:128:16:5:255266345964665b", + "dhash:952:128:96:5:16100c10100c1404", + "dhash:952:128:0:10:2592eae0f08e8621" + ], + "postconditions": [], + "tags": [ + "component:initialization", + "initialization:closeWelcomeOverlay", + "force_run:true" + ] + }, + { + "step_id": "step_closeWelcomeOverlay_assertReady_c3b349e90_1_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the startup sign-in overlay is no longer visible and the VS Code workbench is ready.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_closeWelcomeOverlay_close_c3b349e90_1_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:initialization", + "initialization:closeWelcomeOverlay", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_open_c3b349e90_1_2", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "f1" + }, + "description": "Press the F1 key to open the Command Palette in Visual Studio Code.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_closeWelcomeOverlay_assertReady_c3b349e90_1_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertPalette_c3b349e90_1_2", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Visual Studio Code Command Palette is visible with a > character in its input box and is ready to accept a command search.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_open_c3b349e90_1_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_filter_c3b349e90_1_2", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Microsoft 365 Agents Toolkit: Focus on Microsoft 365 Agents Toolkit View" + }, + "description": "Type the resolved command title into the active Command Palette.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertPalette_c3b349e90_1_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertCommand_c3b349e90_1_2", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Command Palette input box reads >Microsoft 365 Agents Toolkit: Focus on Microsoft 365 Agents Toolkit View and the highlighted command listed under it is titled Microsoft 365 Agents Toolkit: Focus on Microsoft 365 Agents Toolkit View.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_filter_c3b349e90_1_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_execute_c3b349e90_1_2", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to execute the selected Command Palette command.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertCommand_c3b349e90_1_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_assertToolkitViewSettled_assert_c3b349e90_1_3", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Microsoft 365 Agents Toolkit view is open in the side bar and an editor tab labeled Welcome showing the Build a Declarative Agent walkthrough is open in the editor area.", + "content_refs": [], + "timeout": 120, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_execute_c3b349e90_1_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:initialization", + "initialization:assertToolkitViewSettled", + "step_retry_timeout: 120" + ] + }, + { + "step_id": "step_closeGetStartedEditor_assertActive_c3b349e90_1_4", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the editor tab labeled Welcome showing the Build a Declarative Agent walkthrough is the active editor tab in the Visual Studio Code editor area.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_assertToolkitViewSettled_assert_c3b349e90_1_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:initialization", + "initialization:closeGetStartedEditor", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_closeGetStartedEditor_close_c3b349e90_1_4", + "agent": "interaction", + "tool": "keyboard_shortcut", + "parameters": { + "keys": "ctrl+w" + }, + "description": "Press Ctrl+W to close the Welcome editor tab.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_closeGetStartedEditor_assertActive_c3b349e90_1_4" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:initialization", + "initialization:closeGetStartedEditor" + ] + }, + { + "step_id": "step_closeGetStartedEditor_assertClosed_c3b349e90_1_4", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion no editor tab is open in the Visual Studio Code editor area.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_closeGetStartedEditor_close_c3b349e90_1_4" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:initialization", + "initialization:closeGetStartedEditor", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_open_c3b349e90_1_5", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "f1" + }, + "description": "Press the F1 key to open the Command Palette in Visual Studio Code.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_closeGetStartedEditor_assertClosed_c3b349e90_1_4" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertPalette_c3b349e90_1_5", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Visual Studio Code Command Palette is visible with a > character in its input box and is ready to accept a command search.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_open_c3b349e90_1_5" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_filter_c3b349e90_1_5", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Microsoft 365 Agents: Create New Agent/App" + }, + "description": "Type the resolved command title into the active Command Palette.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertPalette_c3b349e90_1_5" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertCommand_c3b349e90_1_5", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Command Palette input box reads >Microsoft 365 Agents: Create New Agent/App and the highlighted command listed under it is titled Microsoft 365 Agents: Create New Agent/App.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_filter_c3b349e90_1_5" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_execute_c3b349e90_1_5", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to execute the selected Command Palette command.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertCommand_c3b349e90_1_5" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_singleSelect_assertQuestion_c3b349e90_1_6", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the active prompt titled New Project is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_execute_c3b349e90_1_5" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_singleSelect_assertOptionsLoaded_c3b349e90_1_6", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the prompt titled New Project has finished loading and lists at least one selectable option.", + "content_refs": [], + "timeout": 120, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertQuestion_c3b349e90_1_6" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 120" + ] + }, + { + "step_id": "step_singleSelect_filter_c3b349e90_1_6", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Custom Engine Agent" + }, + "description": "Type the resolved option label Custom Engine Agent into the active single-select prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertOptionsLoaded_c3b349e90_1_6" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_singleSelect_assertOption_c3b349e90_1_6", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the option Custom Engine Agent is visible and selectable in the filtered single-select prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_filter_c3b349e90_1_6" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_singleSelect_confirm_c3b349e90_1_6", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to confirm the filtered single-select option.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertOption_c3b349e90_1_6" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_singleSelect_assertQuestion_c3b349e90_1_7", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the active prompt titled App Features Using Microsoft 365 Agents SDK is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_confirm_c3b349e90_1_6" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_singleSelect_assertOptionsLoaded_c3b349e90_1_7", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the prompt titled App Features Using Microsoft 365 Agents SDK has finished loading and lists at least one selectable option.", + "content_refs": [], + "timeout": 120, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertQuestion_c3b349e90_1_7" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 120" + ] + }, + { + "step_id": "step_singleSelect_filter_c3b349e90_1_7", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Weather Agent" + }, + "description": "Type the resolved option label Weather Agent into the active single-select prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertOptionsLoaded_c3b349e90_1_7" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_singleSelect_assertOption_c3b349e90_1_7", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the option Weather Agent is visible and selectable in the filtered single-select prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_filter_c3b349e90_1_7" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_singleSelect_confirm_c3b349e90_1_7", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to confirm the filtered single-select option.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertOption_c3b349e90_1_7" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_singleSelect_assertQuestion_c3b349e90_1_8", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the active prompt titled Service for Large Language Model (LLM) is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_confirm_c3b349e90_1_7" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_singleSelect_assertOptionsLoaded_c3b349e90_1_8", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the prompt titled Service for Large Language Model (LLM) has finished loading and lists at least one selectable option.", + "content_refs": [], + "timeout": 120, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertQuestion_c3b349e90_1_8" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 120" + ] + }, + { + "step_id": "step_singleSelect_filter_c3b349e90_1_8", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Azure OpenAI" + }, + "description": "Type the resolved option label Azure OpenAI into the active single-select prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertOptionsLoaded_c3b349e90_1_8" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_singleSelect_assertOption_c3b349e90_1_8", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the option Azure OpenAI is visible and selectable in the filtered single-select prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_filter_c3b349e90_1_8" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_singleSelect_confirm_c3b349e90_1_8", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to confirm the filtered single-select option.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertOption_c3b349e90_1_8" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_textInput_assertQuestion_c3b349e90_1_9", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the active prompt titled Azure OpenAI Key is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_confirm_c3b349e90_1_8" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_textInput_input_c3b349e90_1_9", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "${{secret:AZURE_OPENAI_API_KEY}}" + }, + "description": "Type the authored value into the active text prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_assertQuestion_c3b349e90_1_9" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text" + ] + }, + { + "step_id": "step_textInput_confirm_c3b349e90_1_9", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to submit the accepted text input.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_input_c3b349e90_1_9" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text" + ] + }, + { + "step_id": "step_textInput_assertQuestion_c3b349e90_1_10", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the active prompt titled Azure OpenAI Endpoint is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_confirm_c3b349e90_1_9" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_textInput_input_c3b349e90_1_10", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "${{env:AZURE_OPENAI_ENDPOINT}}" + }, + "description": "Type the authored value into the active text prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_assertQuestion_c3b349e90_1_10" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text" + ] + }, + { + "step_id": "step_textInput_confirm_c3b349e90_1_10", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to submit the accepted text input.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_input_c3b349e90_1_10" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text" + ] + }, + { + "step_id": "step_textInput_assertQuestion_c3b349e90_1_11", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the active prompt titled Azure OpenAI Deployment Name is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_confirm_c3b349e90_1_10" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_textInput_input_c3b349e90_1_11", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "${{env:AZURE_OPENAI_MODEL}}" + }, + "description": "Type the authored value into the active text prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_assertQuestion_c3b349e90_1_11" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text" + ] + }, + { + "step_id": "step_textInput_confirm_c3b349e90_1_11", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to submit the accepted text input.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_input_c3b349e90_1_11" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text" + ] + }, + { + "step_id": "step_singleSelect_assertQuestion_c3b349e90_1_12", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the active prompt titled Programming Language is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_confirm_c3b349e90_1_11" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_singleSelect_assertOptionsLoaded_c3b349e90_1_12", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the prompt titled Programming Language has finished loading and lists at least one selectable option.", + "content_refs": [], + "timeout": 120, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertQuestion_c3b349e90_1_12" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 120" + ] + }, + { + "step_id": "step_singleSelect_filter_c3b349e90_1_12", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "TypeScript" + }, + "description": "Type the resolved option label TypeScript into the active single-select prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertOptionsLoaded_c3b349e90_1_12" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_singleSelect_assertOption_c3b349e90_1_12", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the option TypeScript is visible and selectable in the filtered single-select prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_filter_c3b349e90_1_12" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_singleSelect_confirm_c3b349e90_1_12", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to confirm the filtered single-select option.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertOption_c3b349e90_1_12" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_confirmOption_assertPrompt_c3b349e90_1_13", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the active prompt titled Workspace Folder is visible and the option Default folder is focused.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_confirm_c3b349e90_1_12" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "interaction:key-press", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_confirmOption_confirm_c3b349e90_1_13", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to confirm the Default folder option.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_confirmOption_assertPrompt_c3b349e90_1_13" + ], + "preconditions": [ + "dhash:364:74:16:5:08056a9a5d5516b6", + "dhash:364:74:96:5:44232286e2168e01", + "dhash:364:74:0:10:f0b09494b2717075" + ], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "interaction:key-press" + ] + }, + { + "step_id": "step_textInput_assertQuestion_c3b349e90_1_14", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the active prompt titled Application Name is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_confirmOption_confirm_c3b349e90_1_13" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_textInput_input_c3b349e90_1_14", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "${{var:app_name:vscuse_app_#####}}" + }, + "description": "Type the authored value into the active text prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_assertQuestion_c3b349e90_1_14" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text" + ] + }, + { + "step_id": "step_textInput_confirm_c3b349e90_1_14", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to submit the accepted text input.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_input_c3b349e90_1_14" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text" + ] + }, + { + "step_id": "step_assertProjectWindowReady_assert_c3b349e90_1_15", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Preview README.md editor tab is open in Visual Studio Code.", + "content_refs": [], + "timeout": 60, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_confirm_c3b349e90_1_14" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:initialization", + "initialization:assertProjectWindowReady", + "step_retry_timeout: 60" + ] + }, + { + "step_id": "step_checkWorkspaceFiles_verify_c3b349e90_2_1", + "agent": "code", + "tool": "", + "parameters": { + "sample": "=== Generated Script ===\nLanguage: bash\n\n```bash\nset -euo pipefail\nPROJECT_DIR=\"/home/vscode/AgentsToolkitProjects/${{var:app_name}}\" ASSERTIONS_B64=\"W3sicGF0aCI6Im0zNjVhZ2VudHMueW1sIiwiZXhpc3RzIjp0cnVlLCJjb250YWlucyI6WyJ2ZXJzaW9uOiB2MS4xMSIsInByb3Zpc2lvbjoiLCJkZXBsb3k6Il0sIm5vdENvbnRhaW5zIjpbIm9hdXRoL3JlZ2lzdGVyIiwiZGNyL3JlZ2lzdGVyIl19XQ==\" python3 - <<'PY'\nimport base64\nimport json\nimport os\nfrom pathlib import Path\n\nproject = Path(os.environ[\"PROJECT_DIR\"]).resolve()\nassertions = json.loads(base64.b64decode(os.environ[\"ASSERTIONS_B64\"]).decode(\"utf-8\"))\nfor assertion in assertions:\n target = (project / assertion[\"path\"]).resolve()\n try:\n target.relative_to(project)\n except ValueError as error:\n raise AssertionError(\"File assertion escaped the project directory\") from error\n exists = target.is_file()\n if exists != assertion[\"exists\"]:\n raise AssertionError(f\"Unexpected file existence for {assertion['path']}\")\n if not exists:\n continue\n content = target.read_text(encoding=\"utf-8\")\n for expected in assertion.get(\"contains\", []):\n expected = expected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if expected not in content:\n raise AssertionError(f\"Expected content is absent from {assertion['path']}\")\n for unexpected in assertion.get(\"notContains\", []):\n unexpected = unexpected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if unexpected in content:\n raise AssertionError(f\"Unexpected content is present in {assertion['path']}\")\nPY\n```" + }, + "description": "@code verify the authored workspace file existence and content assertions without logging file contents.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_assertProjectWindowReady_assert_c3b349e90_1_15" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:checks", + "assertion:file", + "step_retry_timeout:120" + ] + }, + { + "step_id": "step_checkWorkspaceFiles_verify_c3b349e90_2_2", + "agent": "code", + "tool": "", + "parameters": { + "sample": "=== Generated Script ===\nLanguage: bash\n\n```bash\nset -euo pipefail\nPROJECT_DIR=\"/home/vscode/AgentsToolkitProjects/${{var:app_name}}\" ASSERTIONS_B64=\"W3sicGF0aCI6InNyYy9pbmRleC50cyIsImV4aXN0cyI6dHJ1ZSwiY29udGFpbnMiOltdLCJub3RDb250YWlucyI6W119XQ==\" python3 - <<'PY'\nimport base64\nimport json\nimport os\nfrom pathlib import Path\n\nproject = Path(os.environ[\"PROJECT_DIR\"]).resolve()\nassertions = json.loads(base64.b64decode(os.environ[\"ASSERTIONS_B64\"]).decode(\"utf-8\"))\nfor assertion in assertions:\n target = (project / assertion[\"path\"]).resolve()\n try:\n target.relative_to(project)\n except ValueError as error:\n raise AssertionError(\"File assertion escaped the project directory\") from error\n exists = target.is_file()\n if exists != assertion[\"exists\"]:\n raise AssertionError(f\"Unexpected file existence for {assertion['path']}\")\n if not exists:\n continue\n content = target.read_text(encoding=\"utf-8\")\n for expected in assertion.get(\"contains\", []):\n expected = expected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if expected not in content:\n raise AssertionError(f\"Expected content is absent from {assertion['path']}\")\n for unexpected in assertion.get(\"notContains\", []):\n unexpected = unexpected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if unexpected in content:\n raise AssertionError(f\"Unexpected content is present in {assertion['path']}\")\nPY\n```" + }, + "description": "@code verify the authored workspace file existence and content assertions without logging file contents.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_checkWorkspaceFiles_verify_c3b349e90_2_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:checks", + "assertion:file", + "step_retry_timeout:120" + ] + }, + { + "step_id": "step_checkWorkspaceFiles_verify_c3b349e90_2_3", + "agent": "code", + "tool": "", + "parameters": { + "sample": "=== Generated Script ===\nLanguage: bash\n\n```bash\nset -euo pipefail\nPROJECT_DIR=\"/home/vscode/AgentsToolkitProjects/${{var:app_name}}\" ASSERTIONS_B64=\"W3sicGF0aCI6InNyYy9hZ2VudC50cyIsImV4aXN0cyI6dHJ1ZSwiY29udGFpbnMiOltdLCJub3RDb250YWlucyI6W119XQ==\" python3 - <<'PY'\nimport base64\nimport json\nimport os\nfrom pathlib import Path\n\nproject = Path(os.environ[\"PROJECT_DIR\"]).resolve()\nassertions = json.loads(base64.b64decode(os.environ[\"ASSERTIONS_B64\"]).decode(\"utf-8\"))\nfor assertion in assertions:\n target = (project / assertion[\"path\"]).resolve()\n try:\n target.relative_to(project)\n except ValueError as error:\n raise AssertionError(\"File assertion escaped the project directory\") from error\n exists = target.is_file()\n if exists != assertion[\"exists\"]:\n raise AssertionError(f\"Unexpected file existence for {assertion['path']}\")\n if not exists:\n continue\n content = target.read_text(encoding=\"utf-8\")\n for expected in assertion.get(\"contains\", []):\n expected = expected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if expected not in content:\n raise AssertionError(f\"Expected content is absent from {assertion['path']}\")\n for unexpected in assertion.get(\"notContains\", []):\n unexpected = unexpected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if unexpected in content:\n raise AssertionError(f\"Unexpected content is present in {assertion['path']}\")\nPY\n```" + }, + "description": "@code verify the authored workspace file existence and content assertions without logging file contents.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_checkWorkspaceFiles_verify_c3b349e90_2_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:checks", + "assertion:file", + "step_retry_timeout:120" + ] + }, + { + "step_id": "step_checkWorkspaceFiles_verify_c3b349e90_2_4", + "agent": "code", + "tool": "", + "parameters": { + "sample": "=== Generated Script ===\nLanguage: bash\n\n```bash\nset -euo pipefail\nPROJECT_DIR=\"/home/vscode/AgentsToolkitProjects/${{var:app_name}}\" ASSERTIONS_B64=\"W3sicGF0aCI6InNyYy90b29scy9nZXRXZWF0aGVyVG9vbC50cyIsImV4aXN0cyI6dHJ1ZSwiY29udGFpbnMiOltdLCJub3RDb250YWlucyI6W119XQ==\" python3 - <<'PY'\nimport base64\nimport json\nimport os\nfrom pathlib import Path\n\nproject = Path(os.environ[\"PROJECT_DIR\"]).resolve()\nassertions = json.loads(base64.b64decode(os.environ[\"ASSERTIONS_B64\"]).decode(\"utf-8\"))\nfor assertion in assertions:\n target = (project / assertion[\"path\"]).resolve()\n try:\n target.relative_to(project)\n except ValueError as error:\n raise AssertionError(\"File assertion escaped the project directory\") from error\n exists = target.is_file()\n if exists != assertion[\"exists\"]:\n raise AssertionError(f\"Unexpected file existence for {assertion['path']}\")\n if not exists:\n continue\n content = target.read_text(encoding=\"utf-8\")\n for expected in assertion.get(\"contains\", []):\n expected = expected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if expected not in content:\n raise AssertionError(f\"Expected content is absent from {assertion['path']}\")\n for unexpected in assertion.get(\"notContains\", []):\n unexpected = unexpected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if unexpected in content:\n raise AssertionError(f\"Unexpected content is present in {assertion['path']}\")\nPY\n```" + }, + "description": "@code verify the authored workspace file existence and content assertions without logging file contents.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_checkWorkspaceFiles_verify_c3b349e90_2_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:checks", + "assertion:file", + "step_retry_timeout:120" + ] + }, + { + "step_id": "step_checkWorkspaceFiles_verify_c3b349e90_2_5", + "agent": "code", + "tool": "", + "parameters": { + "sample": "=== Generated Script ===\nLanguage: bash\n\n```bash\nset -euo pipefail\nPROJECT_DIR=\"/home/vscode/AgentsToolkitProjects/${{var:app_name}}\" ASSERTIONS_B64=\"W3sicGF0aCI6InBhY2thZ2UuanNvbiIsImV4aXN0cyI6dHJ1ZSwiY29udGFpbnMiOltdLCJub3RDb250YWlucyI6W119XQ==\" python3 - <<'PY'\nimport base64\nimport json\nimport os\nfrom pathlib import Path\n\nproject = Path(os.environ[\"PROJECT_DIR\"]).resolve()\nassertions = json.loads(base64.b64decode(os.environ[\"ASSERTIONS_B64\"]).decode(\"utf-8\"))\nfor assertion in assertions:\n target = (project / assertion[\"path\"]).resolve()\n try:\n target.relative_to(project)\n except ValueError as error:\n raise AssertionError(\"File assertion escaped the project directory\") from error\n exists = target.is_file()\n if exists != assertion[\"exists\"]:\n raise AssertionError(f\"Unexpected file existence for {assertion['path']}\")\n if not exists:\n continue\n content = target.read_text(encoding=\"utf-8\")\n for expected in assertion.get(\"contains\", []):\n expected = expected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if expected not in content:\n raise AssertionError(f\"Expected content is absent from {assertion['path']}\")\n for unexpected in assertion.get(\"notContains\", []):\n unexpected = unexpected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if unexpected in content:\n raise AssertionError(f\"Unexpected content is present in {assertion['path']}\")\nPY\n```" + }, + "description": "@code verify the authored workspace file existence and content assertions without logging file contents.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_checkWorkspaceFiles_verify_c3b349e90_2_4" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:checks", + "assertion:file", + "step_retry_timeout:120" + ] + }, + { + "step_id": "step_checkWorkspaceFiles_verify_c3b349e90_2_6", + "agent": "code", + "tool": "", + "parameters": { + "sample": "=== Generated Script ===\nLanguage: bash\n\n```bash\nset -euo pipefail\nPROJECT_DIR=\"/home/vscode/AgentsToolkitProjects/${{var:app_name}}\" ASSERTIONS_B64=\"W3sicGF0aCI6ImluZnJhL2F6dXJlLmJpY2VwIiwiZXhpc3RzIjp0cnVlLCJjb250YWlucyI6W10sIm5vdENvbnRhaW5zIjpbXX1d\" python3 - <<'PY'\nimport base64\nimport json\nimport os\nfrom pathlib import Path\n\nproject = Path(os.environ[\"PROJECT_DIR\"]).resolve()\nassertions = json.loads(base64.b64decode(os.environ[\"ASSERTIONS_B64\"]).decode(\"utf-8\"))\nfor assertion in assertions:\n target = (project / assertion[\"path\"]).resolve()\n try:\n target.relative_to(project)\n except ValueError as error:\n raise AssertionError(\"File assertion escaped the project directory\") from error\n exists = target.is_file()\n if exists != assertion[\"exists\"]:\n raise AssertionError(f\"Unexpected file existence for {assertion['path']}\")\n if not exists:\n continue\n content = target.read_text(encoding=\"utf-8\")\n for expected in assertion.get(\"contains\", []):\n expected = expected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if expected not in content:\n raise AssertionError(f\"Expected content is absent from {assertion['path']}\")\n for unexpected in assertion.get(\"notContains\", []):\n unexpected = unexpected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if unexpected in content:\n raise AssertionError(f\"Unexpected content is present in {assertion['path']}\")\nPY\n```" + }, + "description": "@code verify the authored workspace file existence and content assertions without logging file contents.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_checkWorkspaceFiles_verify_c3b349e90_2_5" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:checks", + "assertion:file", + "step_retry_timeout:120" + ] + }, + { + "step_id": "step_checkWorkspaceFiles_verify_c3b349e90_2_7", + "agent": "code", + "tool": "", + "parameters": { + "sample": "=== Generated Script ===\nLanguage: bash\n\n```bash\nset -euo pipefail\nPROJECT_DIR=\"/home/vscode/AgentsToolkitProjects/${{var:app_name}}\" ASSERTIONS_B64=\"W3sicGF0aCI6ImFwcFBhY2thZ2UvbWFuaWZlc3QuanNvbiIsImV4aXN0cyI6dHJ1ZSwiY29udGFpbnMiOlsiXCJtYW5pZmVzdFZlcnNpb25cIjogXCIxLjI5XCIiXSwibm90Q29udGFpbnMiOltdfV0=\" python3 - <<'PY'\nimport base64\nimport json\nimport os\nfrom pathlib import Path\n\nproject = Path(os.environ[\"PROJECT_DIR\"]).resolve()\nassertions = json.loads(base64.b64decode(os.environ[\"ASSERTIONS_B64\"]).decode(\"utf-8\"))\nfor assertion in assertions:\n target = (project / assertion[\"path\"]).resolve()\n try:\n target.relative_to(project)\n except ValueError as error:\n raise AssertionError(\"File assertion escaped the project directory\") from error\n exists = target.is_file()\n if exists != assertion[\"exists\"]:\n raise AssertionError(f\"Unexpected file existence for {assertion['path']}\")\n if not exists:\n continue\n content = target.read_text(encoding=\"utf-8\")\n for expected in assertion.get(\"contains\", []):\n expected = expected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if expected not in content:\n raise AssertionError(f\"Expected content is absent from {assertion['path']}\")\n for unexpected in assertion.get(\"notContains\", []):\n unexpected = unexpected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if unexpected in content:\n raise AssertionError(f\"Unexpected content is present in {assertion['path']}\")\nPY\n```" + }, + "description": "@code verify the authored workspace file existence and content assertions without logging file contents.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_checkWorkspaceFiles_verify_c3b349e90_2_6" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:checks", + "assertion:file", + "step_retry_timeout:120" + ] + }, + { + "step_id": "step_executeCommand_open_c3b349e90_3_1", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "f1" + }, + "description": "Press the F1 key to open the Command Palette in Visual Studio Code.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_checkWorkspaceFiles_verify_c3b349e90_2_7" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertPalette_c3b349e90_3_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Visual Studio Code Command Palette is visible with a > character in its input box and is ready to accept a command search.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_open_c3b349e90_3_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_filter_c3b349e90_3_1", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Debug: Select and Start Debugging" + }, + "description": "Type the resolved command title into the active Command Palette.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertPalette_c3b349e90_3_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertCommand_c3b349e90_3_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Command Palette input box reads >Debug: Select and Start Debugging and the highlighted command listed under it is titled Debug: Select and Start Debugging.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_filter_c3b349e90_3_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_execute_c3b349e90_3_1", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to execute the selected Command Palette command.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertCommand_c3b349e90_3_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_filterOption_filter_c3b349e90_3_2", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Debug in Microsoft 365 Agents Playground" + }, + "description": "Type the resolved option label into the active option picker.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_execute_c3b349e90_3_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_filterOption_assertOption_c3b349e90_3_2", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the option Debug in Microsoft 365 Agents Playground is visible and selectable in the filtered option picker.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_filterOption_filter_c3b349e90_3_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_filterOption_confirm_c3b349e90_3_2", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to confirm the filtered option.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_filterOption_assertOption_c3b349e90_3_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_assertReady_assertReady_c3b349e90_3_3", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Microsoft 365 Agents Playground page is open in the browser.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_filterOption_confirm_c3b349e90_3_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:browser", + "action:assert-ready", + "step_retry_timeout: 180" + ] + }, + { + "step_id": "step_sendPlaygroundMessage_assertInput_c3b349e90_5_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Agents Playground \"Type a message...\" input is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_assertReady_assertReady_c3b349e90_3_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:browser", + "host_surface:playground", + "entry_state:chat-ready", + "action:send-message", + "step_retry_timeout: 120" + ] + }, + { + "step_id": "step_sendPlaygroundMessage_focusInput_c3b349e90_5_1", + "agent": "interaction", + "tool": "click", + "parameters": { + "button": "left", + "x": 176, + "y": 710 + }, + "description": "Click the Agents Playground \"Type a message...\" input.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_sendPlaygroundMessage_assertInput_c3b349e90_5_1" + ], + "preconditions": [ + "dhash:176:710:16:5:00000000006858d8", + "dhash:176:710:96:5:00000000303a8000", + "dhash:176:710:0:10:5c4a03c080828240" + ], + "postconditions": [], + "tags": [ + "component:browser", + "host_surface:playground", + "entry_state:chat-ready", + "action:send-message" + ] + }, + { + "step_id": "step_sendPlaygroundMessage_type_c3b349e90_5_1", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "What is the weather in Seattle?" + }, + "description": "Type \"What is the weather in Seattle?\" into the Agents Playground message input.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_sendPlaygroundMessage_focusInput_c3b349e90_5_1" + ], + "preconditions": [ + "dhash:512:384:0:20:5c4a03c080828260" + ], + "postconditions": [], + "tags": [ + "component:browser", + "host_surface:playground", + "entry_state:chat-ready", + "action:send-message" + ] + }, + { + "step_id": "step_sendPlaygroundMessage_send_c3b349e90_5_1", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to send the Agents Playground message.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_sendPlaygroundMessage_type_c3b349e90_5_1" + ], + "preconditions": [ + "dhash:512:384:0:20:5c4a03c080828260" + ], + "postconditions": [], + "tags": [ + "component:browser", + "host_surface:playground", + "entry_state:chat-ready", + "action:send-message" + ] + }, + { + "step_id": "step_assertChatReplied_assert_c3b349e90_5_2", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the current assistant turn is complete and contains a non-empty response.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_sendPlaygroundMessage_send_c3b349e90_5_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:browser", + "action:assert-chat-response", + "expectation:replied", + "step_retry_timeout: 120" + ] + }, + { + "step_id": "step_assertChatContains_assert_c3b349e90_5_3", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the current assistant response contains \"Seattle\".", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_assertChatReplied_assert_c3b349e90_5_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:browser", + "action:assert-chat-response", + "expectation:contains", + "step_retry_timeout: 120" + ] + } + ], + "screenshots": {} +} diff --git a/packages/tests/vscuse/vscode-test-cases/plans/weather-agent--weather-ts-azure-openai-remote-copilot.json b/packages/tests/vscuse/vscode-test-cases/plans/weather-agent--weather-ts-azure-openai-remote-copilot.json new file mode 100644 index 00000000000..ab70f45ffcc --- /dev/null +++ b/packages/tests/vscuse/vscode-test-cases/plans/weather-agent--weather-ts-azure-openai-remote-copilot.json @@ -0,0 +1,3864 @@ +{ + "plan_metadata": { + "version": "1.1", + "plan_id": "plan_8921ed503ddb", + "execution_context": { + "delay_between_steps": 1, + "stop_on_error": true, + "precondition_wait_timeout": 30, + "precondition_retry_interval": 1 + }, + "total_steps": 164, + "name": "weather-ts-azure-openai-remote-copilot", + "description": { + "owner": "", + "workitem": "SCN-CREATE-WEATHER-01", + "other": "" + }, + "execution_order": [ + "step_closeWelcomeOverlay_assertVisible_c41d76889_1_1", + "step_closeWelcomeOverlay_close_c41d76889_1_1", + "step_closeWelcomeOverlay_assertReady_c41d76889_1_1", + "step_executeCommand_open_c41d76889_1_2", + "step_executeCommand_assertPalette_c41d76889_1_2", + "step_executeCommand_filter_c41d76889_1_2", + "step_executeCommand_assertCommand_c41d76889_1_2", + "step_executeCommand_execute_c41d76889_1_2", + "step_assertToolkitViewSettled_assert_c41d76889_1_3", + "step_closeGetStartedEditor_assertActive_c41d76889_1_4", + "step_closeGetStartedEditor_close_c41d76889_1_4", + "step_closeGetStartedEditor_assertClosed_c41d76889_1_4", + "step_executeCommand_open_c41d76889_1_5", + "step_executeCommand_assertPalette_c41d76889_1_5", + "step_executeCommand_filter_c41d76889_1_5", + "step_executeCommand_assertCommand_c41d76889_1_5", + "step_executeCommand_execute_c41d76889_1_5", + "step_singleSelect_assertQuestion_c41d76889_1_6", + "step_singleSelect_assertOptionsLoaded_c41d76889_1_6", + "step_singleSelect_filter_c41d76889_1_6", + "step_singleSelect_assertOption_c41d76889_1_6", + "step_singleSelect_confirm_c41d76889_1_6", + "step_singleSelect_assertQuestion_c41d76889_1_7", + "step_singleSelect_assertOptionsLoaded_c41d76889_1_7", + "step_singleSelect_filter_c41d76889_1_7", + "step_singleSelect_assertOption_c41d76889_1_7", + "step_singleSelect_confirm_c41d76889_1_7", + "step_singleSelect_assertQuestion_c41d76889_1_8", + "step_singleSelect_assertOptionsLoaded_c41d76889_1_8", + "step_singleSelect_filter_c41d76889_1_8", + "step_singleSelect_assertOption_c41d76889_1_8", + "step_singleSelect_confirm_c41d76889_1_8", + "step_textInput_assertQuestion_c41d76889_1_9", + "step_textInput_input_c41d76889_1_9", + "step_textInput_confirm_c41d76889_1_9", + "step_textInput_assertQuestion_c41d76889_1_10", + "step_textInput_input_c41d76889_1_10", + "step_textInput_confirm_c41d76889_1_10", + "step_textInput_assertQuestion_c41d76889_1_11", + "step_textInput_input_c41d76889_1_11", + "step_textInput_confirm_c41d76889_1_11", + "step_singleSelect_assertQuestion_c41d76889_1_12", + "step_singleSelect_assertOptionsLoaded_c41d76889_1_12", + "step_singleSelect_filter_c41d76889_1_12", + "step_singleSelect_assertOption_c41d76889_1_12", + "step_singleSelect_confirm_c41d76889_1_12", + "step_confirmOption_assertPrompt_c41d76889_1_13", + "step_confirmOption_confirm_c41d76889_1_13", + "step_textInput_assertQuestion_c41d76889_1_14", + "step_textInput_input_c41d76889_1_14", + "step_textInput_confirm_c41d76889_1_14", + "step_assertProjectWindowReady_assert_c41d76889_1_15", + "step_checkWorkspaceFiles_verify_c41d76889_2_1", + "step_checkWorkspaceFiles_verify_c41d76889_2_2", + "step_checkWorkspaceFiles_verify_c41d76889_2_3", + "step_checkWorkspaceFiles_verify_c41d76889_2_4", + "step_checkWorkspaceFiles_verify_c41d76889_2_5", + "step_checkWorkspaceFiles_verify_c41d76889_2_6", + "step_checkWorkspaceFiles_verify_c41d76889_2_7", + "step_executeCommand_open_c41d76889_3_1", + "step_executeCommand_assertPalette_c41d76889_3_1", + "step_executeCommand_filter_c41d76889_3_1", + "step_executeCommand_assertCommand_c41d76889_3_1", + "step_executeCommand_execute_c41d76889_3_1", + "step_signInAzure_assertOption_c41d76889_3_2", + "step_signInAzure_selectOption_c41d76889_3_2", + "step_signInAzure_confirmSignIn_c41d76889_3_2", + "step_signInAzure_allow_c41d76889_3_2", + "step_signInAzure_focusAccount_c41d76889_3_2", + "step_signInAzure_typeAccount_c41d76889_3_2", + "step_signInAzure_next_c41d76889_3_2", + "step_signInAzure_typePassword_c41d76889_3_2", + "step_signInAzure_submit_c41d76889_3_2", + "step_signInAzure_closeBrowser_c41d76889_3_2", + "step_signInAzure_assertReady_c41d76889_3_2", + "step_executeCommand_open_c41d76889_4_1", + "step_executeCommand_assertPalette_c41d76889_4_1", + "step_executeCommand_filter_c41d76889_4_1", + "step_executeCommand_assertCommand_c41d76889_4_1", + "step_executeCommand_execute_c41d76889_4_1", + "step_signInM365FromPicker_assertOption_c41d76889_4_2", + "step_signInM365FromPicker_selectOption_c41d76889_4_2", + "step_signInM365FromPicker_confirmSignIn_c41d76889_4_2", + "step_signInM365FromPicker_useAnotherAccount_c41d76889_4_2", + "step_signInM365FromPicker_typeAccount_c41d76889_4_2", + "step_signInM365FromPicker_next_c41d76889_4_2", + "step_signInM365FromPicker_typePassword_c41d76889_4_2", + "step_signInM365FromPicker_submit_c41d76889_4_2", + "step_signInM365FromPicker_closeBrowser_c41d76889_4_2", + "step_signInM365FromPicker_assertReady_c41d76889_4_2", + "step_executeCommand_open_c41d76889_5_1", + "step_executeCommand_assertPalette_c41d76889_5_1", + "step_executeCommand_filter_c41d76889_5_1", + "step_executeCommand_assertCommand_c41d76889_5_1", + "step_executeCommand_execute_c41d76889_5_1", + "step_executeCommand_open_c41d76889_5_2", + "step_executeCommand_assertPalette_c41d76889_5_2", + "step_executeCommand_filter_c41d76889_5_2", + "step_executeCommand_assertCommand_c41d76889_5_2", + "step_executeCommand_execute_c41d76889_5_2", + "step_executeCommand_open_c41d76889_5_3", + "step_executeCommand_assertPalette_c41d76889_5_3", + "step_executeCommand_filter_c41d76889_5_3", + "step_executeCommand_assertCommand_c41d76889_5_3", + "step_executeCommand_execute_c41d76889_5_3", + "step_singleSelect_assertQuestion_c41d76889_5_4", + "step_singleSelect_assertOptionsLoaded_c41d76889_5_4", + "step_singleSelect_filter_c41d76889_5_4", + "step_singleSelect_assertOption_c41d76889_5_4", + "step_singleSelect_confirm_c41d76889_5_4", + "step_textInput_assertQuestion_c41d76889_5_5", + "step_textInput_input_c41d76889_5_5", + "step_textInput_confirm_c41d76889_5_5", + "step_singleSelect_assertQuestion_c41d76889_5_6", + "step_singleSelect_assertOptionsLoaded_c41d76889_5_6", + "step_singleSelect_filter_c41d76889_5_6", + "step_singleSelect_assertOption_c41d76889_5_6", + "step_singleSelect_confirm_c41d76889_5_6", + "step_clickPrimaryAction_assertDialog_c41d76889_5_7", + "step_clickPrimaryAction_click_c41d76889_5_7", + "step_assertNotificationContains_assert_c41d76889_5_8", + "step_executeCommand_open_c41d76889_6_1", + "step_executeCommand_assertPalette_c41d76889_6_1", + "step_executeCommand_filter_c41d76889_6_1", + "step_executeCommand_assertCommand_c41d76889_6_1", + "step_executeCommand_execute_c41d76889_6_1", + "step_executeCommand_open_c41d76889_6_2", + "step_executeCommand_assertPalette_c41d76889_6_2", + "step_executeCommand_filter_c41d76889_6_2", + "step_executeCommand_assertCommand_c41d76889_6_2", + "step_executeCommand_execute_c41d76889_6_2", + "step_executeCommand_open_c41d76889_6_3", + "step_executeCommand_assertPalette_c41d76889_6_3", + "step_executeCommand_filter_c41d76889_6_3", + "step_executeCommand_assertCommand_c41d76889_6_3", + "step_executeCommand_execute_c41d76889_6_3", + "step_clickPrimaryAction_assertDialog_c41d76889_6_4", + "step_clickPrimaryAction_click_c41d76889_6_4", + "step_assertNotificationContains_assert_c41d76889_6_5", + "step_executeCommand_open_c41d76889_7_1", + "step_executeCommand_assertPalette_c41d76889_7_1", + "step_executeCommand_filter_c41d76889_7_1", + "step_executeCommand_assertCommand_c41d76889_7_1", + "step_executeCommand_execute_c41d76889_7_1", + "step_filterOption_filter_c41d76889_7_2", + "step_filterOption_assertOption_c41d76889_7_2", + "step_filterOption_confirm_c41d76889_7_2", + "step_browserM365SignIn_assertAccount_c41d76889_7_3", + "step_browserM365SignIn_focusAccount_c41d76889_7_3", + "step_browserM365SignIn_enterAccount_c41d76889_7_3", + "step_browserM365SignIn_submitAccount_c41d76889_7_3", + "step_browserM365SignIn_assertPassword_c41d76889_7_3", + "step_browserM365SignIn_enterPassword_c41d76889_7_3", + "step_browserM365SignIn_submitPassword_c41d76889_7_3", + "step_browserM365SignIn_assertStaySignedIn_c41d76889_7_3", + "step_browserM365SignIn_confirmStaySignedIn_c41d76889_7_3", + "step_browserM365SignIn_refresh_c41d76889_7_3", + "step_assertReady_assertReady_c41d76889_7_4", + "step_sendCopilotMessage_assertInput_c41d76889_9_1", + "step_sendCopilotMessage_focusInput_c41d76889_9_1", + "step_sendCopilotMessage_type_c41d76889_9_1", + "step_sendCopilotMessage_send_c41d76889_9_1", + "step_assertChatReplied_assert_c41d76889_9_2", + "step_assertChatContains_assert_c41d76889_9_3" + ], + "tags": [ + "case_id:weather-ts-azure-openai-remote-copilot", + "scenario_id:SCN-CREATE-WEATHER-01", + "template_id:weather-agent", + "gate:pr" + ] + }, + "steps": [ + { + "step_id": "step_closeWelcomeOverlay_assertVisible_c41d76889_1_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the startup \"Welcome to VS Code\" sign-in overlay is visible and its Close button is available.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:initialization", + "initialization:closeWelcomeOverlay", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_closeWelcomeOverlay_close_c41d76889_1_1", + "agent": "interaction", + "tool": "click", + "parameters": { + "button": "left", + "x": 952, + "y": 128 + }, + "description": "Click the Close button on the startup Welcome sign-in overlay.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_closeWelcomeOverlay_assertVisible_c41d76889_1_1" + ], + "preconditions": [ + "dhash:952:128:16:5:255266345964665b", + "dhash:952:128:96:5:16100c10100c1404", + "dhash:952:128:0:10:2592eae0f08e8621" + ], + "postconditions": [], + "tags": [ + "component:initialization", + "initialization:closeWelcomeOverlay", + "force_run:true" + ] + }, + { + "step_id": "step_closeWelcomeOverlay_assertReady_c41d76889_1_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the startup sign-in overlay is no longer visible and the VS Code workbench is ready.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_closeWelcomeOverlay_close_c41d76889_1_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:initialization", + "initialization:closeWelcomeOverlay", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_open_c41d76889_1_2", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "f1" + }, + "description": "Press the F1 key to open the Command Palette in Visual Studio Code.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_closeWelcomeOverlay_assertReady_c41d76889_1_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertPalette_c41d76889_1_2", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Visual Studio Code Command Palette is visible with a > character in its input box and is ready to accept a command search.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_open_c41d76889_1_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_filter_c41d76889_1_2", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Microsoft 365 Agents Toolkit: Focus on Microsoft 365 Agents Toolkit View" + }, + "description": "Type the resolved command title into the active Command Palette.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertPalette_c41d76889_1_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertCommand_c41d76889_1_2", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Command Palette input box reads >Microsoft 365 Agents Toolkit: Focus on Microsoft 365 Agents Toolkit View and the highlighted command listed under it is titled Microsoft 365 Agents Toolkit: Focus on Microsoft 365 Agents Toolkit View.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_filter_c41d76889_1_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_execute_c41d76889_1_2", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to execute the selected Command Palette command.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertCommand_c41d76889_1_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_assertToolkitViewSettled_assert_c41d76889_1_3", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Microsoft 365 Agents Toolkit view is open in the side bar and an editor tab labeled Welcome showing the Build a Declarative Agent walkthrough is open in the editor area.", + "content_refs": [], + "timeout": 120, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_execute_c41d76889_1_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:initialization", + "initialization:assertToolkitViewSettled", + "step_retry_timeout: 120" + ] + }, + { + "step_id": "step_closeGetStartedEditor_assertActive_c41d76889_1_4", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the editor tab labeled Welcome showing the Build a Declarative Agent walkthrough is the active editor tab in the Visual Studio Code editor area.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_assertToolkitViewSettled_assert_c41d76889_1_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:initialization", + "initialization:closeGetStartedEditor", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_closeGetStartedEditor_close_c41d76889_1_4", + "agent": "interaction", + "tool": "keyboard_shortcut", + "parameters": { + "keys": "ctrl+w" + }, + "description": "Press Ctrl+W to close the Welcome editor tab.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_closeGetStartedEditor_assertActive_c41d76889_1_4" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:initialization", + "initialization:closeGetStartedEditor" + ] + }, + { + "step_id": "step_closeGetStartedEditor_assertClosed_c41d76889_1_4", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion no editor tab is open in the Visual Studio Code editor area.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_closeGetStartedEditor_close_c41d76889_1_4" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:initialization", + "initialization:closeGetStartedEditor", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_open_c41d76889_1_5", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "f1" + }, + "description": "Press the F1 key to open the Command Palette in Visual Studio Code.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_closeGetStartedEditor_assertClosed_c41d76889_1_4" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertPalette_c41d76889_1_5", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Visual Studio Code Command Palette is visible with a > character in its input box and is ready to accept a command search.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_open_c41d76889_1_5" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_filter_c41d76889_1_5", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Microsoft 365 Agents: Create New Agent/App" + }, + "description": "Type the resolved command title into the active Command Palette.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertPalette_c41d76889_1_5" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertCommand_c41d76889_1_5", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Command Palette input box reads >Microsoft 365 Agents: Create New Agent/App and the highlighted command listed under it is titled Microsoft 365 Agents: Create New Agent/App.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_filter_c41d76889_1_5" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_execute_c41d76889_1_5", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to execute the selected Command Palette command.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertCommand_c41d76889_1_5" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_singleSelect_assertQuestion_c41d76889_1_6", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the active prompt titled New Project is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_execute_c41d76889_1_5" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_singleSelect_assertOptionsLoaded_c41d76889_1_6", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the prompt titled New Project has finished loading and lists at least one selectable option.", + "content_refs": [], + "timeout": 120, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertQuestion_c41d76889_1_6" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 120" + ] + }, + { + "step_id": "step_singleSelect_filter_c41d76889_1_6", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Custom Engine Agent" + }, + "description": "Type the resolved option label Custom Engine Agent into the active single-select prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertOptionsLoaded_c41d76889_1_6" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_singleSelect_assertOption_c41d76889_1_6", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the option Custom Engine Agent is visible and selectable in the filtered single-select prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_filter_c41d76889_1_6" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_singleSelect_confirm_c41d76889_1_6", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to confirm the filtered single-select option.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertOption_c41d76889_1_6" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_singleSelect_assertQuestion_c41d76889_1_7", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the active prompt titled App Features Using Microsoft 365 Agents SDK is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_confirm_c41d76889_1_6" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_singleSelect_assertOptionsLoaded_c41d76889_1_7", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the prompt titled App Features Using Microsoft 365 Agents SDK has finished loading and lists at least one selectable option.", + "content_refs": [], + "timeout": 120, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertQuestion_c41d76889_1_7" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 120" + ] + }, + { + "step_id": "step_singleSelect_filter_c41d76889_1_7", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Weather Agent" + }, + "description": "Type the resolved option label Weather Agent into the active single-select prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertOptionsLoaded_c41d76889_1_7" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_singleSelect_assertOption_c41d76889_1_7", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the option Weather Agent is visible and selectable in the filtered single-select prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_filter_c41d76889_1_7" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_singleSelect_confirm_c41d76889_1_7", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to confirm the filtered single-select option.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertOption_c41d76889_1_7" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_singleSelect_assertQuestion_c41d76889_1_8", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the active prompt titled Service for Large Language Model (LLM) is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_confirm_c41d76889_1_7" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_singleSelect_assertOptionsLoaded_c41d76889_1_8", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the prompt titled Service for Large Language Model (LLM) has finished loading and lists at least one selectable option.", + "content_refs": [], + "timeout": 120, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertQuestion_c41d76889_1_8" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 120" + ] + }, + { + "step_id": "step_singleSelect_filter_c41d76889_1_8", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Azure OpenAI" + }, + "description": "Type the resolved option label Azure OpenAI into the active single-select prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertOptionsLoaded_c41d76889_1_8" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_singleSelect_assertOption_c41d76889_1_8", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the option Azure OpenAI is visible and selectable in the filtered single-select prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_filter_c41d76889_1_8" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_singleSelect_confirm_c41d76889_1_8", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to confirm the filtered single-select option.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertOption_c41d76889_1_8" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_textInput_assertQuestion_c41d76889_1_9", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the active prompt titled Azure OpenAI Key is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_confirm_c41d76889_1_8" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_textInput_input_c41d76889_1_9", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "${{secret:AZURE_OPENAI_API_KEY}}" + }, + "description": "Type the authored value into the active text prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_assertQuestion_c41d76889_1_9" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text" + ] + }, + { + "step_id": "step_textInput_confirm_c41d76889_1_9", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to submit the accepted text input.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_input_c41d76889_1_9" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text" + ] + }, + { + "step_id": "step_textInput_assertQuestion_c41d76889_1_10", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the active prompt titled Azure OpenAI Endpoint is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_confirm_c41d76889_1_9" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_textInput_input_c41d76889_1_10", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "${{env:AZURE_OPENAI_ENDPOINT}}" + }, + "description": "Type the authored value into the active text prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_assertQuestion_c41d76889_1_10" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text" + ] + }, + { + "step_id": "step_textInput_confirm_c41d76889_1_10", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to submit the accepted text input.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_input_c41d76889_1_10" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text" + ] + }, + { + "step_id": "step_textInput_assertQuestion_c41d76889_1_11", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the active prompt titled Azure OpenAI Deployment Name is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_confirm_c41d76889_1_10" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_textInput_input_c41d76889_1_11", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "${{env:AZURE_OPENAI_MODEL}}" + }, + "description": "Type the authored value into the active text prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_assertQuestion_c41d76889_1_11" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text" + ] + }, + { + "step_id": "step_textInput_confirm_c41d76889_1_11", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to submit the accepted text input.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_input_c41d76889_1_11" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text" + ] + }, + { + "step_id": "step_singleSelect_assertQuestion_c41d76889_1_12", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the active prompt titled Programming Language is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_confirm_c41d76889_1_11" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_singleSelect_assertOptionsLoaded_c41d76889_1_12", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the prompt titled Programming Language has finished loading and lists at least one selectable option.", + "content_refs": [], + "timeout": 120, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertQuestion_c41d76889_1_12" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 120" + ] + }, + { + "step_id": "step_singleSelect_filter_c41d76889_1_12", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "TypeScript" + }, + "description": "Type the resolved option label TypeScript into the active single-select prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertOptionsLoaded_c41d76889_1_12" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_singleSelect_assertOption_c41d76889_1_12", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the option TypeScript is visible and selectable in the filtered single-select prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_filter_c41d76889_1_12" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_singleSelect_confirm_c41d76889_1_12", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to confirm the filtered single-select option.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertOption_c41d76889_1_12" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_confirmOption_assertPrompt_c41d76889_1_13", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the active prompt titled Workspace Folder is visible and the option Default folder is focused.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_confirm_c41d76889_1_12" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "interaction:key-press", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_confirmOption_confirm_c41d76889_1_13", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to confirm the Default folder option.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_confirmOption_assertPrompt_c41d76889_1_13" + ], + "preconditions": [ + "dhash:364:74:16:5:08056a9a5d5516b6", + "dhash:364:74:96:5:44232286e2168e01", + "dhash:364:74:0:10:f0b09494b2717075" + ], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "interaction:key-press" + ] + }, + { + "step_id": "step_textInput_assertQuestion_c41d76889_1_14", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the active prompt titled Application Name is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_confirmOption_confirm_c41d76889_1_13" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_textInput_input_c41d76889_1_14", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "${{var:app_name:vscuse_app_#####}}" + }, + "description": "Type the authored value into the active text prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_assertQuestion_c41d76889_1_14" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text" + ] + }, + { + "step_id": "step_textInput_confirm_c41d76889_1_14", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to submit the accepted text input.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_input_c41d76889_1_14" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text" + ] + }, + { + "step_id": "step_assertProjectWindowReady_assert_c41d76889_1_15", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Preview README.md editor tab is open in Visual Studio Code.", + "content_refs": [], + "timeout": 60, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_confirm_c41d76889_1_14" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:initialization", + "initialization:assertProjectWindowReady", + "step_retry_timeout: 60" + ] + }, + { + "step_id": "step_checkWorkspaceFiles_verify_c41d76889_2_1", + "agent": "code", + "tool": "", + "parameters": { + "sample": "=== Generated Script ===\nLanguage: bash\n\n```bash\nset -euo pipefail\nPROJECT_DIR=\"/home/vscode/AgentsToolkitProjects/${{var:app_name}}\" ASSERTIONS_B64=\"W3sicGF0aCI6Im0zNjVhZ2VudHMueW1sIiwiZXhpc3RzIjp0cnVlLCJjb250YWlucyI6WyJ2ZXJzaW9uOiB2MS4xMSIsInByb3Zpc2lvbjoiLCJkZXBsb3k6Il0sIm5vdENvbnRhaW5zIjpbIm9hdXRoL3JlZ2lzdGVyIiwiZGNyL3JlZ2lzdGVyIl19XQ==\" python3 - <<'PY'\nimport base64\nimport json\nimport os\nfrom pathlib import Path\n\nproject = Path(os.environ[\"PROJECT_DIR\"]).resolve()\nassertions = json.loads(base64.b64decode(os.environ[\"ASSERTIONS_B64\"]).decode(\"utf-8\"))\nfor assertion in assertions:\n target = (project / assertion[\"path\"]).resolve()\n try:\n target.relative_to(project)\n except ValueError as error:\n raise AssertionError(\"File assertion escaped the project directory\") from error\n exists = target.is_file()\n if exists != assertion[\"exists\"]:\n raise AssertionError(f\"Unexpected file existence for {assertion['path']}\")\n if not exists:\n continue\n content = target.read_text(encoding=\"utf-8\")\n for expected in assertion.get(\"contains\", []):\n expected = expected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if expected not in content:\n raise AssertionError(f\"Expected content is absent from {assertion['path']}\")\n for unexpected in assertion.get(\"notContains\", []):\n unexpected = unexpected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if unexpected in content:\n raise AssertionError(f\"Unexpected content is present in {assertion['path']}\")\nPY\n```" + }, + "description": "@code verify the authored workspace file existence and content assertions without logging file contents.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_assertProjectWindowReady_assert_c41d76889_1_15" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:checks", + "assertion:file", + "step_retry_timeout:120" + ] + }, + { + "step_id": "step_checkWorkspaceFiles_verify_c41d76889_2_2", + "agent": "code", + "tool": "", + "parameters": { + "sample": "=== Generated Script ===\nLanguage: bash\n\n```bash\nset -euo pipefail\nPROJECT_DIR=\"/home/vscode/AgentsToolkitProjects/${{var:app_name}}\" ASSERTIONS_B64=\"W3sicGF0aCI6InNyYy9pbmRleC50cyIsImV4aXN0cyI6dHJ1ZSwiY29udGFpbnMiOltdLCJub3RDb250YWlucyI6W119XQ==\" python3 - <<'PY'\nimport base64\nimport json\nimport os\nfrom pathlib import Path\n\nproject = Path(os.environ[\"PROJECT_DIR\"]).resolve()\nassertions = json.loads(base64.b64decode(os.environ[\"ASSERTIONS_B64\"]).decode(\"utf-8\"))\nfor assertion in assertions:\n target = (project / assertion[\"path\"]).resolve()\n try:\n target.relative_to(project)\n except ValueError as error:\n raise AssertionError(\"File assertion escaped the project directory\") from error\n exists = target.is_file()\n if exists != assertion[\"exists\"]:\n raise AssertionError(f\"Unexpected file existence for {assertion['path']}\")\n if not exists:\n continue\n content = target.read_text(encoding=\"utf-8\")\n for expected in assertion.get(\"contains\", []):\n expected = expected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if expected not in content:\n raise AssertionError(f\"Expected content is absent from {assertion['path']}\")\n for unexpected in assertion.get(\"notContains\", []):\n unexpected = unexpected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if unexpected in content:\n raise AssertionError(f\"Unexpected content is present in {assertion['path']}\")\nPY\n```" + }, + "description": "@code verify the authored workspace file existence and content assertions without logging file contents.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_checkWorkspaceFiles_verify_c41d76889_2_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:checks", + "assertion:file", + "step_retry_timeout:120" + ] + }, + { + "step_id": "step_checkWorkspaceFiles_verify_c41d76889_2_3", + "agent": "code", + "tool": "", + "parameters": { + "sample": "=== Generated Script ===\nLanguage: bash\n\n```bash\nset -euo pipefail\nPROJECT_DIR=\"/home/vscode/AgentsToolkitProjects/${{var:app_name}}\" ASSERTIONS_B64=\"W3sicGF0aCI6InNyYy9hZ2VudC50cyIsImV4aXN0cyI6dHJ1ZSwiY29udGFpbnMiOltdLCJub3RDb250YWlucyI6W119XQ==\" python3 - <<'PY'\nimport base64\nimport json\nimport os\nfrom pathlib import Path\n\nproject = Path(os.environ[\"PROJECT_DIR\"]).resolve()\nassertions = json.loads(base64.b64decode(os.environ[\"ASSERTIONS_B64\"]).decode(\"utf-8\"))\nfor assertion in assertions:\n target = (project / assertion[\"path\"]).resolve()\n try:\n target.relative_to(project)\n except ValueError as error:\n raise AssertionError(\"File assertion escaped the project directory\") from error\n exists = target.is_file()\n if exists != assertion[\"exists\"]:\n raise AssertionError(f\"Unexpected file existence for {assertion['path']}\")\n if not exists:\n continue\n content = target.read_text(encoding=\"utf-8\")\n for expected in assertion.get(\"contains\", []):\n expected = expected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if expected not in content:\n raise AssertionError(f\"Expected content is absent from {assertion['path']}\")\n for unexpected in assertion.get(\"notContains\", []):\n unexpected = unexpected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if unexpected in content:\n raise AssertionError(f\"Unexpected content is present in {assertion['path']}\")\nPY\n```" + }, + "description": "@code verify the authored workspace file existence and content assertions without logging file contents.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_checkWorkspaceFiles_verify_c41d76889_2_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:checks", + "assertion:file", + "step_retry_timeout:120" + ] + }, + { + "step_id": "step_checkWorkspaceFiles_verify_c41d76889_2_4", + "agent": "code", + "tool": "", + "parameters": { + "sample": "=== Generated Script ===\nLanguage: bash\n\n```bash\nset -euo pipefail\nPROJECT_DIR=\"/home/vscode/AgentsToolkitProjects/${{var:app_name}}\" ASSERTIONS_B64=\"W3sicGF0aCI6InNyYy90b29scy9nZXRXZWF0aGVyVG9vbC50cyIsImV4aXN0cyI6dHJ1ZSwiY29udGFpbnMiOltdLCJub3RDb250YWlucyI6W119XQ==\" python3 - <<'PY'\nimport base64\nimport json\nimport os\nfrom pathlib import Path\n\nproject = Path(os.environ[\"PROJECT_DIR\"]).resolve()\nassertions = json.loads(base64.b64decode(os.environ[\"ASSERTIONS_B64\"]).decode(\"utf-8\"))\nfor assertion in assertions:\n target = (project / assertion[\"path\"]).resolve()\n try:\n target.relative_to(project)\n except ValueError as error:\n raise AssertionError(\"File assertion escaped the project directory\") from error\n exists = target.is_file()\n if exists != assertion[\"exists\"]:\n raise AssertionError(f\"Unexpected file existence for {assertion['path']}\")\n if not exists:\n continue\n content = target.read_text(encoding=\"utf-8\")\n for expected in assertion.get(\"contains\", []):\n expected = expected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if expected not in content:\n raise AssertionError(f\"Expected content is absent from {assertion['path']}\")\n for unexpected in assertion.get(\"notContains\", []):\n unexpected = unexpected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if unexpected in content:\n raise AssertionError(f\"Unexpected content is present in {assertion['path']}\")\nPY\n```" + }, + "description": "@code verify the authored workspace file existence and content assertions without logging file contents.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_checkWorkspaceFiles_verify_c41d76889_2_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:checks", + "assertion:file", + "step_retry_timeout:120" + ] + }, + { + "step_id": "step_checkWorkspaceFiles_verify_c41d76889_2_5", + "agent": "code", + "tool": "", + "parameters": { + "sample": "=== Generated Script ===\nLanguage: bash\n\n```bash\nset -euo pipefail\nPROJECT_DIR=\"/home/vscode/AgentsToolkitProjects/${{var:app_name}}\" ASSERTIONS_B64=\"W3sicGF0aCI6InBhY2thZ2UuanNvbiIsImV4aXN0cyI6dHJ1ZSwiY29udGFpbnMiOltdLCJub3RDb250YWlucyI6W119XQ==\" python3 - <<'PY'\nimport base64\nimport json\nimport os\nfrom pathlib import Path\n\nproject = Path(os.environ[\"PROJECT_DIR\"]).resolve()\nassertions = json.loads(base64.b64decode(os.environ[\"ASSERTIONS_B64\"]).decode(\"utf-8\"))\nfor assertion in assertions:\n target = (project / assertion[\"path\"]).resolve()\n try:\n target.relative_to(project)\n except ValueError as error:\n raise AssertionError(\"File assertion escaped the project directory\") from error\n exists = target.is_file()\n if exists != assertion[\"exists\"]:\n raise AssertionError(f\"Unexpected file existence for {assertion['path']}\")\n if not exists:\n continue\n content = target.read_text(encoding=\"utf-8\")\n for expected in assertion.get(\"contains\", []):\n expected = expected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if expected not in content:\n raise AssertionError(f\"Expected content is absent from {assertion['path']}\")\n for unexpected in assertion.get(\"notContains\", []):\n unexpected = unexpected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if unexpected in content:\n raise AssertionError(f\"Unexpected content is present in {assertion['path']}\")\nPY\n```" + }, + "description": "@code verify the authored workspace file existence and content assertions without logging file contents.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_checkWorkspaceFiles_verify_c41d76889_2_4" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:checks", + "assertion:file", + "step_retry_timeout:120" + ] + }, + { + "step_id": "step_checkWorkspaceFiles_verify_c41d76889_2_6", + "agent": "code", + "tool": "", + "parameters": { + "sample": "=== Generated Script ===\nLanguage: bash\n\n```bash\nset -euo pipefail\nPROJECT_DIR=\"/home/vscode/AgentsToolkitProjects/${{var:app_name}}\" ASSERTIONS_B64=\"W3sicGF0aCI6ImluZnJhL2F6dXJlLmJpY2VwIiwiZXhpc3RzIjp0cnVlLCJjb250YWlucyI6W10sIm5vdENvbnRhaW5zIjpbXX1d\" python3 - <<'PY'\nimport base64\nimport json\nimport os\nfrom pathlib import Path\n\nproject = Path(os.environ[\"PROJECT_DIR\"]).resolve()\nassertions = json.loads(base64.b64decode(os.environ[\"ASSERTIONS_B64\"]).decode(\"utf-8\"))\nfor assertion in assertions:\n target = (project / assertion[\"path\"]).resolve()\n try:\n target.relative_to(project)\n except ValueError as error:\n raise AssertionError(\"File assertion escaped the project directory\") from error\n exists = target.is_file()\n if exists != assertion[\"exists\"]:\n raise AssertionError(f\"Unexpected file existence for {assertion['path']}\")\n if not exists:\n continue\n content = target.read_text(encoding=\"utf-8\")\n for expected in assertion.get(\"contains\", []):\n expected = expected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if expected not in content:\n raise AssertionError(f\"Expected content is absent from {assertion['path']}\")\n for unexpected in assertion.get(\"notContains\", []):\n unexpected = unexpected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if unexpected in content:\n raise AssertionError(f\"Unexpected content is present in {assertion['path']}\")\nPY\n```" + }, + "description": "@code verify the authored workspace file existence and content assertions without logging file contents.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_checkWorkspaceFiles_verify_c41d76889_2_5" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:checks", + "assertion:file", + "step_retry_timeout:120" + ] + }, + { + "step_id": "step_checkWorkspaceFiles_verify_c41d76889_2_7", + "agent": "code", + "tool": "", + "parameters": { + "sample": "=== Generated Script ===\nLanguage: bash\n\n```bash\nset -euo pipefail\nPROJECT_DIR=\"/home/vscode/AgentsToolkitProjects/${{var:app_name}}\" ASSERTIONS_B64=\"W3sicGF0aCI6ImFwcFBhY2thZ2UvbWFuaWZlc3QuanNvbiIsImV4aXN0cyI6dHJ1ZSwiY29udGFpbnMiOlsiXCJtYW5pZmVzdFZlcnNpb25cIjogXCIxLjI5XCIiXSwibm90Q29udGFpbnMiOltdfV0=\" python3 - <<'PY'\nimport base64\nimport json\nimport os\nfrom pathlib import Path\n\nproject = Path(os.environ[\"PROJECT_DIR\"]).resolve()\nassertions = json.loads(base64.b64decode(os.environ[\"ASSERTIONS_B64\"]).decode(\"utf-8\"))\nfor assertion in assertions:\n target = (project / assertion[\"path\"]).resolve()\n try:\n target.relative_to(project)\n except ValueError as error:\n raise AssertionError(\"File assertion escaped the project directory\") from error\n exists = target.is_file()\n if exists != assertion[\"exists\"]:\n raise AssertionError(f\"Unexpected file existence for {assertion['path']}\")\n if not exists:\n continue\n content = target.read_text(encoding=\"utf-8\")\n for expected in assertion.get(\"contains\", []):\n expected = expected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if expected not in content:\n raise AssertionError(f\"Expected content is absent from {assertion['path']}\")\n for unexpected in assertion.get(\"notContains\", []):\n unexpected = unexpected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if unexpected in content:\n raise AssertionError(f\"Unexpected content is present in {assertion['path']}\")\nPY\n```" + }, + "description": "@code verify the authored workspace file existence and content assertions without logging file contents.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_checkWorkspaceFiles_verify_c41d76889_2_6" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:checks", + "assertion:file", + "step_retry_timeout:120" + ] + }, + { + "step_id": "step_executeCommand_open_c41d76889_3_1", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "f1" + }, + "description": "Press the F1 key to open the Command Palette in Visual Studio Code.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_checkWorkspaceFiles_verify_c41d76889_2_7" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertPalette_c41d76889_3_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Visual Studio Code Command Palette is visible with a > character in its input box and is ready to accept a command search.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_open_c41d76889_3_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_filter_c41d76889_3_1", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "View: Show Microsoft 365 Agents Toolkit" + }, + "description": "Type the resolved command title into the active Command Palette.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertPalette_c41d76889_3_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertCommand_c41d76889_3_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Command Palette input box reads >View: Show Microsoft 365 Agents Toolkit and the highlighted command listed under it is titled View: Show Microsoft 365 Agents Toolkit.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_filter_c41d76889_3_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_execute_c41d76889_3_1", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to execute the selected Command Palette command.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertCommand_c41d76889_3_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_signInAzure_assertOption_c41d76889_3_2", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the ACCOUNTS section of the side bar lists an entry labeled Sign in to Azure.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_execute_c41d76889_3_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:authentication", + "account:azure", + "entry_state:toolkit-side-bar-visible", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_signInAzure_selectOption_c41d76889_3_2", + "agent": "interaction", + "tool": "click", + "parameters": { + "button": "left", + "x": 165, + "y": 127 + }, + "description": "Click the \"Sign in to Azure\" entry in the ACCOUNTS section of the side bar.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInAzure_assertOption_c41d76889_3_2" + ], + "preconditions": [ + "dhash:165:127:16:5:5819353567ef55aa", + "dhash:165:127:96:5:2cd1259b9b941a6a", + "dhash:165:127:0:10:a2942223a3222421" + ], + "postconditions": [], + "tags": [ + "component:authentication", + "account:azure" + ] + }, + { + "step_id": "step_signInAzure_confirmSignIn_c41d76889_3_2", + "agent": "interaction", + "tool": "click", + "parameters": { + "button": "left", + "x": 534, + "y": 98 + }, + "description": "Click the \"Sign in\" button on the Microsoft authentication popup in Visual Studio Code to proceed with Azure authorization for the Microsoft 365 Agents Toolkit.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInAzure_selectOption_c41d76889_3_2" + ], + "preconditions": [ + "dhash:534:98:16:5:554a54555555468f", + "dhash:534:98:96:5:0002740b0a700800", + "dhash:534:98:0:10:12322e2323232421" + ], + "postconditions": [], + "tags": [ + "component:authentication", + "account:azure" + ] + }, + { + "step_id": "step_signInAzure_allow_c41d76889_3_2", + "agent": "interaction", + "tool": "click", + "parameters": { + "button": "left", + "x": 457, + "y": 96 + }, + "description": "Click the \"Allow\" button in the Microsoft 365 sign-in prompt to authorize the extension \"Microsoft 365 Agents Toolkit\" within Visual Studio Code.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInAzure_confirmSignIn_c41d76889_3_2" + ], + "preconditions": [ + "dhash:457:96:16:5:524d5552564cb3ca", + "dhash:457:96:96:5:0004609c0c600400", + "dhash:457:96:0:10:d2322e2323232421" + ], + "postconditions": [], + "tags": [ + "component:authentication", + "account:azure" + ] + }, + { + "step_id": "step_signInAzure_focusAccount_c41d76889_3_2", + "agent": "interaction", + "tool": "click", + "parameters": { + "button": "left", + "x": 432, + "y": 327 + }, + "description": "Click on the \"Email, phone, or Skype\" input field in the Microsoft sign-in dialog on the login.microsoftonline.com webpage to activate text entry.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInAzure_allow_c41d76889_3_2" + ], + "preconditions": [ + "dhash:432:327:16:5:114c134b4a13b2cc", + "dhash:432:327:96:5:686000a2a95500cb", + "dhash:432:327:0:10:1361717965617935" + ], + "postconditions": [], + "tags": [ + "component:authentication", + "account:azure", + "precondition_wait_timeout: 60" + ] + }, + { + "step_id": "step_signInAzure_typeAccount_c41d76889_3_2", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "${{env:AZURE_ACCOUNT_NAME}}" + }, + "description": "Enter the resolved Azure account name into the email or username input field on the Microsoft Sign in page.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInAzure_focusAccount_c41d76889_3_2" + ], + "preconditions": [ + "dhash:512:384:0:20:1b28d0d9e7e4dae4" + ], + "postconditions": [], + "tags": [ + "component:authentication", + "account:azure", + "precondition_wait_timeout: 60" + ] + }, + { + "step_id": "step_signInAzure_next_c41d76889_3_2", + "agent": "interaction", + "tool": "click", + "parameters": { + "button": "left", + "x": 631, + "y": 462 + }, + "description": "Click the \"Next\" button on the Microsoft sign-in page to continue Azure authentication.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInAzure_typeAccount_c41d76889_3_2" + ], + "preconditions": [ + "dhash:631:462:16:5:0000000091000000", + "dhash:631:462:96:5:000000004e31314e", + "dhash:631:462:0:10:1392f0dac6e6d8e4" + ], + "postconditions": [], + "tags": [ + "component:authentication", + "account:azure", + "ocr:true" + ] + }, + { + "step_id": "step_signInAzure_typePassword_c41d76889_3_2", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "${{secret:AZURE_ACCOUNT_PASSWORD}}" + }, + "description": "Type the resolved Azure account password into the Password field on the Microsoft login page.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInAzure_next_c41d76889_3_2" + ], + "preconditions": [ + "dhash:512:384:0:20:1908f0d9d1e6e6e4" + ], + "postconditions": [], + "tags": [ + "component:authentication", + "account:azure", + "precondition_wait_timeout: 60", + "delay:5" + ] + }, + { + "step_id": "step_signInAzure_submit_c41d76889_3_2", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter in the password field on the Microsoft login page to submit the Azure credentials.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInAzure_typePassword_c41d76889_3_2" + ], + "preconditions": [ + "dhash:512:384:0:20:1908f0d9d1e6e6e4" + ], + "postconditions": [], + "tags": [ + "component:authentication", + "account:azure", + "delay: 3" + ] + }, + { + "step_id": "step_signInAzure_closeBrowser_c41d76889_3_2", + "agent": "interaction", + "tool": "click", + "parameters": { + "button": "left", + "x": 991, + "y": 18 + }, + "description": "Click the red close (X) button in the top-right corner of the Google Chrome window to close the Visual Studio Code sign-in confirmation page.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInAzure_submit_c41d76889_3_2" + ], + "preconditions": [ + "dhash:991:18:16:5:b020624245454242", + "dhash:991:18:96:5:629393936a903232", + "dhash:991:18:0:10:0021410169414141" + ], + "postconditions": [], + "tags": [ + "component:authentication", + "account:azure", + "delay: 3" + ] + }, + { + "step_id": "step_signInAzure_assertReady_c41d76889_3_2", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion there's ${{env:AZURE_ACCOUNT_NAME}} in the \"ACCOUNTS\" section", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInAzure_closeBrowser_c41d76889_3_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:authentication", + "account:azure", + "readiness:account-visible", + "step_retry_timeout: 180" + ] + }, + { + "step_id": "step_executeCommand_open_c41d76889_4_1", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "f1" + }, + "description": "Press the F1 key to open the Command Palette in Visual Studio Code.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInAzure_assertReady_c41d76889_3_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertPalette_c41d76889_4_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Visual Studio Code Command Palette is visible with a > character in its input box and is ready to accept a command search.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_open_c41d76889_4_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_filter_c41d76889_4_1", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "View: Show Microsoft 365 Agents Toolkit" + }, + "description": "Type the resolved command title into the active Command Palette.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertPalette_c41d76889_4_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertCommand_c41d76889_4_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Command Palette input box reads >View: Show Microsoft 365 Agents Toolkit and the highlighted command listed under it is titled View: Show Microsoft 365 Agents Toolkit.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_filter_c41d76889_4_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_execute_c41d76889_4_1", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to execute the selected Command Palette command.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertCommand_c41d76889_4_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_signInM365FromPicker_assertOption_c41d76889_4_2", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the ACCOUNTS section of the side bar lists an entry whose label begins with Sign in to Microsoft.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_execute_c41d76889_4_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:authentication", + "account:m365", + "entry_state:toolkit-side-bar-visible", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_signInM365FromPicker_selectOption_c41d76889_4_2", + "agent": "interaction", + "tool": "click", + "parameters": { + "button": "left", + "x": 213, + "y": 102 + }, + "description": "Click the entry whose label begins with \"Sign in to Microsoft\" in the ACCOUNTS section of the side bar.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInM365FromPicker_assertOption_c41d76889_4_2" + ], + "preconditions": [ + "dhash:213:102:16:5:9c63d67674d4c718", + "dhash:213:102:96:5:8c512758d92c2cce", + "dhash:213:102:0:10:92c86223a3622421" + ], + "postconditions": [], + "tags": [ + "component:authentication", + "account:m365" + ] + }, + { + "step_id": "step_signInM365FromPicker_confirmSignIn_c41d76889_4_2", + "agent": "interaction", + "tool": "click", + "parameters": { + "button": "left", + "x": 762, + "y": 97 + }, + "description": "Click the \"Sign in\" button within the Microsoft 365 developer sandbox modal.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInM365FromPicker_selectOption_c41d76889_4_2" + ], + "preconditions": [ + "dhash:762:97:16:5:24b1a72ba9aba343", + "dhash:762:97:96:5:0008304b0f344900", + "dhash:762:97:0:10:9c68332223232421" + ], + "postconditions": [], + "tags": [ + "component:authentication", + "account:m365" + ] + }, + { + "step_id": "step_signInM365FromPicker_useAnotherAccount_c41d76889_4_2", + "agent": "interaction", + "tool": "click", + "parameters": { + "button": "left", + "x": 447, + "y": 487 + }, + "description": "Click the \"Use another account\" option on the Microsoft \"Pick an account\" login screen in Google Chrome.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInM365FromPicker_confirmSignIn_c41d76889_4_2" + ], + "preconditions": [ + "dhash:447:487:16:5:ac534b4aaaaa6a15", + "dhash:447:487:96:5:0100228d15a20000", + "dhash:447:487:0:10:1312e8d89ed6e6e4" + ], + "postconditions": [], + "tags": [ + "component:authentication", + "account:m365", + "precondition_wait_timeout: 60" + ] + }, + { + "step_id": "step_signInM365FromPicker_typeAccount_c41d76889_4_2", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "${{env:M365_ACCOUNT_NAME}}" + }, + "description": "Enter the resolved Microsoft 365 account name into the email or username input field the account picker opened.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInM365FromPicker_useAnotherAccount_c41d76889_4_2" + ], + "preconditions": [ + "dhash:512:384:0:20:1392f8d8c6e6dae4" + ], + "postconditions": [], + "tags": [ + "component:authentication", + "account:m365", + "delay: 3" + ] + }, + { + "step_id": "step_signInM365FromPicker_next_c41d76889_4_2", + "agent": "interaction", + "tool": "click", + "parameters": { + "button": "left", + "x": 655, + "y": 505 + }, + "description": "Click the blue \"Next\" button on the Microsoft sign-in page, confirming the entered email address for login.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInM365FromPicker_typeAccount_c41d76889_4_2" + ], + "preconditions": [ + "dhash:655:505:16:5:0000000080400020", + "dhash:655:505:96:5:0000408bcb4b0000", + "dhash:655:505:0:10:1392f8d8c7e6dae4" + ], + "postconditions": [], + "tags": [ + "component:authentication", + "account:m365", + "delay:3" + ] + }, + { + "step_id": "step_signInM365FromPicker_typePassword_c41d76889_4_2", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "${{secret:M365_ACCOUNT_PASSWORD}}" + }, + "description": "Type the resolved Microsoft 365 account password into the Password field on the Microsoft login page.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInM365FromPicker_next_c41d76889_4_2" + ], + "preconditions": [ + "dhash:512:384:0:20:1392e8d8d9f6e6e4" + ], + "postconditions": [], + "tags": [ + "component:authentication", + "account:m365", + "delay: 3" + ] + }, + { + "step_id": "step_signInM365FromPicker_submit_c41d76889_4_2", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to submit the Microsoft 365 login form from the password entry screen.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInM365FromPicker_typePassword_c41d76889_4_2" + ], + "preconditions": [ + "dhash:512:384:0:20:1392e8d8d9f6e6e4" + ], + "postconditions": [], + "tags": [ + "component:authentication", + "account:m365", + "delay: 3" + ] + }, + { + "step_id": "step_signInM365FromPicker_closeBrowser_c41d76889_4_2", + "agent": "interaction", + "tool": "click", + "parameters": { + "button": "left", + "x": 1008, + "y": 19 + }, + "description": "Click the \"Close\" button (red cross icon) in the browser tab bar to close the \"M365 Account - Sign In\" page.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInM365FromPicker_submit_c41d76889_4_2" + ], + "preconditions": [ + "dhash:1008:19:16:5:a322c95a325ac922", + "dhash:1008:19:96:5:926363639200c6c4", + "dhash:1008:19:0:10:1312094769614541" + ], + "postconditions": [], + "tags": [ + "component:authentication", + "account:m365", + "delay: 3" + ] + }, + { + "step_id": "step_signInM365FromPicker_assertReady_c41d76889_4_2", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion there's ${{env:M365_ACCOUNT_NAME}} in the \"ACCOUNTS\" section", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInM365FromPicker_closeBrowser_c41d76889_4_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:authentication", + "account:m365", + "readiness:account-visible", + "step_retry_timeout: 180" + ] + }, + { + "step_id": "step_executeCommand_open_c41d76889_5_1", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "f1" + }, + "description": "Press the F1 key to open the Command Palette in Visual Studio Code.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInM365FromPicker_assertReady_c41d76889_4_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertPalette_c41d76889_5_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Visual Studio Code Command Palette is visible with a > character in its input box and is ready to accept a command search.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_open_c41d76889_5_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_filter_c41d76889_5_1", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Notifications: Clear All Notifications" + }, + "description": "Type the resolved command title into the active Command Palette.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertPalette_c41d76889_5_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertCommand_c41d76889_5_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Command Palette input box reads >Notifications: Clear All Notifications and the highlighted command listed under it is titled Notifications: Clear All Notifications.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_filter_c41d76889_5_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_execute_c41d76889_5_1", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to execute the selected Command Palette command.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertCommand_c41d76889_5_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_open_c41d76889_5_2", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "f1" + }, + "description": "Press the F1 key to open the Command Palette in Visual Studio Code.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_execute_c41d76889_5_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertPalette_c41d76889_5_2", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Visual Studio Code Command Palette is visible with a > character in its input box and is ready to accept a command search.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_open_c41d76889_5_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_filter_c41d76889_5_2", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Notifications: Show Notifications" + }, + "description": "Type the resolved command title into the active Command Palette.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertPalette_c41d76889_5_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertCommand_c41d76889_5_2", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Command Palette input box reads >Notifications: Show Notifications and the highlighted command listed under it is titled Notifications: Show Notifications.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_filter_c41d76889_5_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_execute_c41d76889_5_2", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to execute the selected Command Palette command.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertCommand_c41d76889_5_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_open_c41d76889_5_3", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "f1" + }, + "description": "Press the F1 key to open the Command Palette in Visual Studio Code.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_execute_c41d76889_5_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertPalette_c41d76889_5_3", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Visual Studio Code Command Palette is visible with a > character in its input box and is ready to accept a command search.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_open_c41d76889_5_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_filter_c41d76889_5_3", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Microsoft 365 Agents: Provision" + }, + "description": "Type the resolved command title into the active Command Palette.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertPalette_c41d76889_5_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertCommand_c41d76889_5_3", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Command Palette input box reads >Microsoft 365 Agents: Provision and the highlighted command listed under it is titled Microsoft 365 Agents: Provision.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_filter_c41d76889_5_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_execute_c41d76889_5_3", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to execute the selected Command Palette command.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertCommand_c41d76889_5_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_singleSelect_assertQuestion_c41d76889_5_4", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the active prompt titled Select a resource group is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_execute_c41d76889_5_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_singleSelect_assertOptionsLoaded_c41d76889_5_4", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the prompt titled Select a resource group has finished loading and lists at least one selectable option.", + "content_refs": [], + "timeout": 120, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertQuestion_c41d76889_5_4" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 120" + ] + }, + { + "step_id": "step_singleSelect_filter_c41d76889_5_4", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "+ New resource group" + }, + "description": "Type the resolved option label + New resource group into the active single-select prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertOptionsLoaded_c41d76889_5_4" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_singleSelect_assertOption_c41d76889_5_4", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the option + New resource group is visible and selectable in the filtered single-select prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_filter_c41d76889_5_4" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_singleSelect_confirm_c41d76889_5_4", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to confirm the filtered single-select option.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertOption_c41d76889_5_4" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_textInput_assertQuestion_c41d76889_5_5", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the active prompt titled New resource group name is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_confirm_c41d76889_5_4" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_textInput_input_c41d76889_5_5", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "${{var:app_name}}-rg" + }, + "description": "Type the authored value into the active text prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_assertQuestion_c41d76889_5_5" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text" + ] + }, + { + "step_id": "step_textInput_confirm_c41d76889_5_5", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to submit the accepted text input.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_input_c41d76889_5_5" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text" + ] + }, + { + "step_id": "step_singleSelect_assertQuestion_c41d76889_5_6", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the active prompt titled Location for the new resource group is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_confirm_c41d76889_5_5" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_singleSelect_assertOptionsLoaded_c41d76889_5_6", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the prompt titled Location for the new resource group has finished loading and lists at least one selectable option.", + "content_refs": [], + "timeout": 120, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertQuestion_c41d76889_5_6" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 120" + ] + }, + { + "step_id": "step_singleSelect_filter_c41d76889_5_6", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "${{env:RESOURCE_GROUP_REGION}}" + }, + "description": "Type the resolved option label ${{env:RESOURCE_GROUP_REGION}} into the active single-select prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertOptionsLoaded_c41d76889_5_6" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_singleSelect_assertOption_c41d76889_5_6", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the option ${{env:RESOURCE_GROUP_REGION}} is visible and selectable in the filtered single-select prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_filter_c41d76889_5_6" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_singleSelect_confirm_c41d76889_5_6", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to confirm the filtered single-select option.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertOption_c41d76889_5_6" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_clickPrimaryAction_assertDialog_c41d76889_5_7", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the dialog Costs may apply based on usage. Do you want to provision resources in dev environment using listed accounts? is visible with the primary action Provision.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_confirm_c41d76889_5_6" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:dialog", + "action:click-primary", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_clickPrimaryAction_click_c41d76889_5_7", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to activate the primary action Provision in the confirmed dialog.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_clickPrimaryAction_assertDialog_c41d76889_5_7" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:dialog", + "action:click-primary" + ] + }, + { + "step_id": "step_assertNotificationContains_assert_c41d76889_5_8", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion a visible Visual Studio Code notification contains provision stage executed successfully.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_clickPrimaryAction_click_c41d76889_5_7" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:notifications", + "action:assert-contains", + "step_retry_timeout: 900" + ] + }, + { + "step_id": "step_executeCommand_open_c41d76889_6_1", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "f1" + }, + "description": "Press the F1 key to open the Command Palette in Visual Studio Code.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_assertNotificationContains_assert_c41d76889_5_8" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertPalette_c41d76889_6_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Visual Studio Code Command Palette is visible with a > character in its input box and is ready to accept a command search.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_open_c41d76889_6_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_filter_c41d76889_6_1", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Notifications: Clear All Notifications" + }, + "description": "Type the resolved command title into the active Command Palette.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertPalette_c41d76889_6_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertCommand_c41d76889_6_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Command Palette input box reads >Notifications: Clear All Notifications and the highlighted command listed under it is titled Notifications: Clear All Notifications.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_filter_c41d76889_6_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_execute_c41d76889_6_1", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to execute the selected Command Palette command.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertCommand_c41d76889_6_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_open_c41d76889_6_2", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "f1" + }, + "description": "Press the F1 key to open the Command Palette in Visual Studio Code.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_execute_c41d76889_6_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertPalette_c41d76889_6_2", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Visual Studio Code Command Palette is visible with a > character in its input box and is ready to accept a command search.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_open_c41d76889_6_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_filter_c41d76889_6_2", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Notifications: Show Notifications" + }, + "description": "Type the resolved command title into the active Command Palette.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertPalette_c41d76889_6_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertCommand_c41d76889_6_2", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Command Palette input box reads >Notifications: Show Notifications and the highlighted command listed under it is titled Notifications: Show Notifications.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_filter_c41d76889_6_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_execute_c41d76889_6_2", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to execute the selected Command Palette command.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertCommand_c41d76889_6_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_open_c41d76889_6_3", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "f1" + }, + "description": "Press the F1 key to open the Command Palette in Visual Studio Code.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_execute_c41d76889_6_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertPalette_c41d76889_6_3", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Visual Studio Code Command Palette is visible with a > character in its input box and is ready to accept a command search.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_open_c41d76889_6_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_filter_c41d76889_6_3", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Microsoft 365 Agents: Deploy" + }, + "description": "Type the resolved command title into the active Command Palette.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertPalette_c41d76889_6_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertCommand_c41d76889_6_3", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Command Palette input box reads >Microsoft 365 Agents: Deploy and the highlighted command listed under it is titled Microsoft 365 Agents: Deploy.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_filter_c41d76889_6_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_execute_c41d76889_6_3", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to execute the selected Command Palette command.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertCommand_c41d76889_6_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_clickPrimaryAction_assertDialog_c41d76889_6_4", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the dialog Do you want to deploy resources in dev environment? is visible with the primary action Deploy.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_execute_c41d76889_6_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:dialog", + "action:click-primary", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_clickPrimaryAction_click_c41d76889_6_4", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to activate the primary action Deploy in the confirmed dialog.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_clickPrimaryAction_assertDialog_c41d76889_6_4" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:dialog", + "action:click-primary" + ] + }, + { + "step_id": "step_assertNotificationContains_assert_c41d76889_6_5", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion a visible Visual Studio Code notification contains actions in deploy stage executed successfully.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_clickPrimaryAction_click_c41d76889_6_4" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:notifications", + "action:assert-contains", + "step_retry_timeout: 900" + ] + }, + { + "step_id": "step_executeCommand_open_c41d76889_7_1", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "f1" + }, + "description": "Press the F1 key to open the Command Palette in Visual Studio Code.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_assertNotificationContains_assert_c41d76889_6_5" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertPalette_c41d76889_7_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Visual Studio Code Command Palette is visible with a > character in its input box and is ready to accept a command search.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_open_c41d76889_7_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_filter_c41d76889_7_1", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Debug: Select and Start Debugging" + }, + "description": "Type the resolved command title into the active Command Palette.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertPalette_c41d76889_7_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertCommand_c41d76889_7_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Command Palette input box reads >Debug: Select and Start Debugging and the highlighted command listed under it is titled Debug: Select and Start Debugging.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_filter_c41d76889_7_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_execute_c41d76889_7_1", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to execute the selected Command Palette command.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertCommand_c41d76889_7_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_filterOption_filter_c41d76889_7_2", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "(Preview) Launch Remote in Copilot (Chrome)" + }, + "description": "Type the resolved option label into the active option picker.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_execute_c41d76889_7_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_filterOption_assertOption_c41d76889_7_2", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the option (Preview) Launch Remote in Copilot (Chrome) is visible and selectable in the filtered option picker.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_filterOption_filter_c41d76889_7_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_filterOption_confirm_c41d76889_7_2", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to confirm the filtered option.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_filterOption_assertOption_c41d76889_7_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_browserM365SignIn_assertAccount_c41d76889_7_3", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Microsoft sign-in page is visible in Chrome with an email or username input.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_filterOption_confirm_c41d76889_7_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:authentication", + "surface:browser", + "step_retry_timeout: 180" + ] + }, + { + "step_id": "step_browserM365SignIn_focusAccount_c41d76889_7_3", + "agent": "interaction", + "tool": "click", + "parameters": { + "button": "left", + "x": 429, + "y": 347 + }, + "description": "Click the email or username input on the Microsoft sign-in page.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_browserM365SignIn_assertAccount_c41d76889_7_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:authentication", + "surface:browser" + ] + }, + { + "step_id": "step_browserM365SignIn_enterAccount_c41d76889_7_3", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "${{env:M365_ACCOUNT_NAME}}" + }, + "description": "Enter the registered Microsoft 365 account in the browser sign-in form.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_browserM365SignIn_focusAccount_c41d76889_7_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:authentication", + "surface:browser" + ] + }, + { + "step_id": "step_browserM365SignIn_submitAccount_c41d76889_7_3", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to continue to password entry.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_browserM365SignIn_enterAccount_c41d76889_7_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:authentication", + "surface:browser" + ] + }, + { + "step_id": "step_browserM365SignIn_assertPassword_c41d76889_7_3", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Microsoft sign-in password input is visible and focused in Chrome.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_browserM365SignIn_submitAccount_c41d76889_7_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:authentication", + "surface:browser", + "step_retry_timeout: 120" + ] + }, + { + "step_id": "step_browserM365SignIn_enterPassword_c41d76889_7_3", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "${{secret:M365_ACCOUNT_PASSWORD}}" + }, + "description": "Enter the registered Microsoft 365 password in the browser sign-in form.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_browserM365SignIn_assertPassword_c41d76889_7_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:authentication", + "surface:browser" + ] + }, + { + "step_id": "step_browserM365SignIn_submitPassword_c41d76889_7_3", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to submit the Microsoft 365 password.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_browserM365SignIn_enterPassword_c41d76889_7_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:authentication", + "surface:browser" + ] + }, + { + "step_id": "step_browserM365SignIn_assertStaySignedIn_c41d76889_7_3", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Microsoft Stay signed in question is visible with Yes focused.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_browserM365SignIn_submitPassword_c41d76889_7_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:authentication", + "surface:browser", + "step_retry_timeout: 120" + ] + }, + { + "step_id": "step_browserM365SignIn_confirmStaySignedIn_c41d76889_7_3", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to confirm staying signed in.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_browserM365SignIn_assertStaySignedIn_c41d76889_7_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:authentication", + "surface:browser", + "delay: 30" + ] + }, + { + "step_id": "step_browserM365SignIn_refresh_c41d76889_7_3", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "f5" + }, + "description": "Press F5 to refresh Microsoft 365 Copilot after browser authentication.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_browserM365SignIn_confirmStaySignedIn_c41d76889_7_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:authentication", + "surface:browser", + "force_run:true" + ] + }, + { + "step_id": "step_assertReady_assertReady_c41d76889_7_4", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion an agent whose name starts with ${{var:app_name}} is displayed in the main section of Microsoft 365 Copilot.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_browserM365SignIn_refresh_c41d76889_7_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:browser", + "action:assert-ready", + "step_retry_timeout: 180" + ] + }, + { + "step_id": "step_sendCopilotMessage_assertInput_c41d76889_9_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Microsoft 365 Copilot message input is visible and its placeholder text starts with Message ${{var:app_name}}.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_assertReady_assertReady_c41d76889_7_4" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:browser", + "host_surface:copilot", + "entry_state:chat-ready", + "action:send-message", + "step_retry_timeout: 120" + ] + }, + { + "step_id": "step_sendCopilotMessage_focusInput_c41d76889_9_1", + "agent": "interaction", + "tool": "click", + "parameters": { + "button": "left", + "x": 416, + "y": 369 + }, + "description": "Click the \"Message ${{var:app_name}}\" input box in the Microsoft 365 Copilot web application.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_sendCopilotMessage_assertInput_c41d76889_9_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:browser", + "host_surface:copilot", + "entry_state:chat-ready", + "action:send-message", + "ocr:true" + ] + }, + { + "step_id": "step_sendCopilotMessage_type_c41d76889_9_1", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "What is the weather in Seattle?" + }, + "description": "Type \"What is the weather in Seattle?\" into the Copilot message input.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_sendCopilotMessage_focusInput_c41d76889_9_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:browser", + "host_surface:copilot", + "entry_state:chat-ready", + "action:send-message" + ] + }, + { + "step_id": "step_sendCopilotMessage_send_c41d76889_9_1", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to send the Copilot message.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_sendCopilotMessage_type_c41d76889_9_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:browser", + "host_surface:copilot", + "entry_state:chat-ready", + "action:send-message" + ] + }, + { + "step_id": "step_assertChatReplied_assert_c41d76889_9_2", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the current assistant turn is complete and contains a non-empty response.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_sendCopilotMessage_send_c41d76889_9_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:browser", + "action:assert-chat-response", + "expectation:replied", + "step_retry_timeout: 120" + ] + }, + { + "step_id": "step_assertChatContains_assert_c41d76889_9_3", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the current assistant response contains \"Seattle\".", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_assertChatReplied_assert_c41d76889_9_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:browser", + "action:assert-chat-response", + "expectation:contains", + "step_retry_timeout: 120" + ] + } + ], + "screenshots": {} +} diff --git a/packages/tests/vscuse/vscode-test-cases/plans/weather-agent--weather-ts-azure-openai-remote-teams.json b/packages/tests/vscuse/vscode-test-cases/plans/weather-agent--weather-ts-azure-openai-remote-teams.json new file mode 100644 index 00000000000..2dd850baae5 --- /dev/null +++ b/packages/tests/vscuse/vscode-test-cases/plans/weather-agent--weather-ts-azure-openai-remote-teams.json @@ -0,0 +1,3909 @@ +{ + "plan_metadata": { + "version": "1.1", + "plan_id": "plan_439b98d6bc82", + "execution_context": { + "delay_between_steps": 1, + "stop_on_error": true, + "precondition_wait_timeout": 30, + "precondition_retry_interval": 1 + }, + "total_steps": 165, + "name": "weather-ts-azure-openai-remote-teams", + "description": { + "owner": "", + "workitem": "SCN-CREATE-WEATHER-01", + "other": "" + }, + "execution_order": [ + "step_closeWelcomeOverlay_assertVisible_c16c2d022_1_1", + "step_closeWelcomeOverlay_close_c16c2d022_1_1", + "step_closeWelcomeOverlay_assertReady_c16c2d022_1_1", + "step_executeCommand_open_c16c2d022_1_2", + "step_executeCommand_assertPalette_c16c2d022_1_2", + "step_executeCommand_filter_c16c2d022_1_2", + "step_executeCommand_assertCommand_c16c2d022_1_2", + "step_executeCommand_execute_c16c2d022_1_2", + "step_assertToolkitViewSettled_assert_c16c2d022_1_3", + "step_closeGetStartedEditor_assertActive_c16c2d022_1_4", + "step_closeGetStartedEditor_close_c16c2d022_1_4", + "step_closeGetStartedEditor_assertClosed_c16c2d022_1_4", + "step_executeCommand_open_c16c2d022_1_5", + "step_executeCommand_assertPalette_c16c2d022_1_5", + "step_executeCommand_filter_c16c2d022_1_5", + "step_executeCommand_assertCommand_c16c2d022_1_5", + "step_executeCommand_execute_c16c2d022_1_5", + "step_singleSelect_assertQuestion_c16c2d022_1_6", + "step_singleSelect_assertOptionsLoaded_c16c2d022_1_6", + "step_singleSelect_filter_c16c2d022_1_6", + "step_singleSelect_assertOption_c16c2d022_1_6", + "step_singleSelect_confirm_c16c2d022_1_6", + "step_singleSelect_assertQuestion_c16c2d022_1_7", + "step_singleSelect_assertOptionsLoaded_c16c2d022_1_7", + "step_singleSelect_filter_c16c2d022_1_7", + "step_singleSelect_assertOption_c16c2d022_1_7", + "step_singleSelect_confirm_c16c2d022_1_7", + "step_singleSelect_assertQuestion_c16c2d022_1_8", + "step_singleSelect_assertOptionsLoaded_c16c2d022_1_8", + "step_singleSelect_filter_c16c2d022_1_8", + "step_singleSelect_assertOption_c16c2d022_1_8", + "step_singleSelect_confirm_c16c2d022_1_8", + "step_textInput_assertQuestion_c16c2d022_1_9", + "step_textInput_input_c16c2d022_1_9", + "step_textInput_confirm_c16c2d022_1_9", + "step_textInput_assertQuestion_c16c2d022_1_10", + "step_textInput_input_c16c2d022_1_10", + "step_textInput_confirm_c16c2d022_1_10", + "step_textInput_assertQuestion_c16c2d022_1_11", + "step_textInput_input_c16c2d022_1_11", + "step_textInput_confirm_c16c2d022_1_11", + "step_singleSelect_assertQuestion_c16c2d022_1_12", + "step_singleSelect_assertOptionsLoaded_c16c2d022_1_12", + "step_singleSelect_filter_c16c2d022_1_12", + "step_singleSelect_assertOption_c16c2d022_1_12", + "step_singleSelect_confirm_c16c2d022_1_12", + "step_confirmOption_assertPrompt_c16c2d022_1_13", + "step_confirmOption_confirm_c16c2d022_1_13", + "step_textInput_assertQuestion_c16c2d022_1_14", + "step_textInput_input_c16c2d022_1_14", + "step_textInput_confirm_c16c2d022_1_14", + "step_assertProjectWindowReady_assert_c16c2d022_1_15", + "step_checkWorkspaceFiles_verify_c16c2d022_2_1", + "step_checkWorkspaceFiles_verify_c16c2d022_2_2", + "step_checkWorkspaceFiles_verify_c16c2d022_2_3", + "step_checkWorkspaceFiles_verify_c16c2d022_2_4", + "step_checkWorkspaceFiles_verify_c16c2d022_2_5", + "step_checkWorkspaceFiles_verify_c16c2d022_2_6", + "step_checkWorkspaceFiles_verify_c16c2d022_2_7", + "step_executeCommand_open_c16c2d022_3_1", + "step_executeCommand_assertPalette_c16c2d022_3_1", + "step_executeCommand_filter_c16c2d022_3_1", + "step_executeCommand_assertCommand_c16c2d022_3_1", + "step_executeCommand_execute_c16c2d022_3_1", + "step_signInAzure_assertOption_c16c2d022_3_2", + "step_signInAzure_selectOption_c16c2d022_3_2", + "step_signInAzure_confirmSignIn_c16c2d022_3_2", + "step_signInAzure_allow_c16c2d022_3_2", + "step_signInAzure_focusAccount_c16c2d022_3_2", + "step_signInAzure_typeAccount_c16c2d022_3_2", + "step_signInAzure_next_c16c2d022_3_2", + "step_signInAzure_typePassword_c16c2d022_3_2", + "step_signInAzure_submit_c16c2d022_3_2", + "step_signInAzure_closeBrowser_c16c2d022_3_2", + "step_signInAzure_assertReady_c16c2d022_3_2", + "step_executeCommand_open_c16c2d022_4_1", + "step_executeCommand_assertPalette_c16c2d022_4_1", + "step_executeCommand_filter_c16c2d022_4_1", + "step_executeCommand_assertCommand_c16c2d022_4_1", + "step_executeCommand_execute_c16c2d022_4_1", + "step_signInM365FromPicker_assertOption_c16c2d022_4_2", + "step_signInM365FromPicker_selectOption_c16c2d022_4_2", + "step_signInM365FromPicker_confirmSignIn_c16c2d022_4_2", + "step_signInM365FromPicker_useAnotherAccount_c16c2d022_4_2", + "step_signInM365FromPicker_typeAccount_c16c2d022_4_2", + "step_signInM365FromPicker_next_c16c2d022_4_2", + "step_signInM365FromPicker_typePassword_c16c2d022_4_2", + "step_signInM365FromPicker_submit_c16c2d022_4_2", + "step_signInM365FromPicker_closeBrowser_c16c2d022_4_2", + "step_signInM365FromPicker_assertReady_c16c2d022_4_2", + "step_executeCommand_open_c16c2d022_5_1", + "step_executeCommand_assertPalette_c16c2d022_5_1", + "step_executeCommand_filter_c16c2d022_5_1", + "step_executeCommand_assertCommand_c16c2d022_5_1", + "step_executeCommand_execute_c16c2d022_5_1", + "step_executeCommand_open_c16c2d022_5_2", + "step_executeCommand_assertPalette_c16c2d022_5_2", + "step_executeCommand_filter_c16c2d022_5_2", + "step_executeCommand_assertCommand_c16c2d022_5_2", + "step_executeCommand_execute_c16c2d022_5_2", + "step_executeCommand_open_c16c2d022_5_3", + "step_executeCommand_assertPalette_c16c2d022_5_3", + "step_executeCommand_filter_c16c2d022_5_3", + "step_executeCommand_assertCommand_c16c2d022_5_3", + "step_executeCommand_execute_c16c2d022_5_3", + "step_singleSelect_assertQuestion_c16c2d022_5_4", + "step_singleSelect_assertOptionsLoaded_c16c2d022_5_4", + "step_singleSelect_filter_c16c2d022_5_4", + "step_singleSelect_assertOption_c16c2d022_5_4", + "step_singleSelect_confirm_c16c2d022_5_4", + "step_textInput_assertQuestion_c16c2d022_5_5", + "step_textInput_input_c16c2d022_5_5", + "step_textInput_confirm_c16c2d022_5_5", + "step_singleSelect_assertQuestion_c16c2d022_5_6", + "step_singleSelect_assertOptionsLoaded_c16c2d022_5_6", + "step_singleSelect_filter_c16c2d022_5_6", + "step_singleSelect_assertOption_c16c2d022_5_6", + "step_singleSelect_confirm_c16c2d022_5_6", + "step_clickPrimaryAction_assertDialog_c16c2d022_5_7", + "step_clickPrimaryAction_click_c16c2d022_5_7", + "step_assertNotificationContains_assert_c16c2d022_5_8", + "step_executeCommand_open_c16c2d022_6_1", + "step_executeCommand_assertPalette_c16c2d022_6_1", + "step_executeCommand_filter_c16c2d022_6_1", + "step_executeCommand_assertCommand_c16c2d022_6_1", + "step_executeCommand_execute_c16c2d022_6_1", + "step_executeCommand_open_c16c2d022_6_2", + "step_executeCommand_assertPalette_c16c2d022_6_2", + "step_executeCommand_filter_c16c2d022_6_2", + "step_executeCommand_assertCommand_c16c2d022_6_2", + "step_executeCommand_execute_c16c2d022_6_2", + "step_executeCommand_open_c16c2d022_6_3", + "step_executeCommand_assertPalette_c16c2d022_6_3", + "step_executeCommand_filter_c16c2d022_6_3", + "step_executeCommand_assertCommand_c16c2d022_6_3", + "step_executeCommand_execute_c16c2d022_6_3", + "step_clickPrimaryAction_assertDialog_c16c2d022_6_4", + "step_clickPrimaryAction_click_c16c2d022_6_4", + "step_assertNotificationContains_assert_c16c2d022_6_5", + "step_executeCommand_open_c16c2d022_7_1", + "step_executeCommand_assertPalette_c16c2d022_7_1", + "step_executeCommand_filter_c16c2d022_7_1", + "step_executeCommand_assertCommand_c16c2d022_7_1", + "step_executeCommand_execute_c16c2d022_7_1", + "step_filterOption_filter_c16c2d022_7_2", + "step_filterOption_assertOption_c16c2d022_7_2", + "step_filterOption_confirm_c16c2d022_7_2", + "step_browserM365PasswordSignIn_assertPassword_c16c2d022_7_3", + "step_browserM365PasswordSignIn_focusPassword_c16c2d022_7_3", + "step_browserM365PasswordSignIn_enterPassword_c16c2d022_7_3", + "step_browserM365PasswordSignIn_submitPassword_c16c2d022_7_3", + "step_browserM365PasswordSignIn_assertStaySignedIn_c16c2d022_7_3", + "step_browserM365PasswordSignIn_confirmStaySignedIn_c16c2d022_7_3", + "step_assertReady_assertReady_c16c2d022_7_4", + "step_addAndOpenApp_assertAdd_c16c2d022_8_1", + "step_addAndOpenApp_add_c16c2d022_8_1", + "step_addAndOpenApp_assertAdded_c16c2d022_8_1", + "step_addAndOpenApp_open_c16c2d022_8_1", + "step_addAndOpenApp_assertReady_c16c2d022_8_1", + "step_sendTeamsMessage_assertInput_c16c2d022_9_1", + "step_sendTeamsMessage_focusInput_c16c2d022_9_1", + "step_sendTeamsMessage_type_c16c2d022_9_1", + "step_sendTeamsMessage_send_c16c2d022_9_1", + "step_assertChatReplied_assert_c16c2d022_9_2", + "step_assertChatContains_assert_c16c2d022_9_3" + ], + "tags": [ + "case_id:weather-ts-azure-openai-remote-teams", + "scenario_id:SCN-CREATE-WEATHER-01", + "template_id:weather-agent", + "gate:pr" + ] + }, + "steps": [ + { + "step_id": "step_closeWelcomeOverlay_assertVisible_c16c2d022_1_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the startup \"Welcome to VS Code\" sign-in overlay is visible and its Close button is available.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:initialization", + "initialization:closeWelcomeOverlay", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_closeWelcomeOverlay_close_c16c2d022_1_1", + "agent": "interaction", + "tool": "click", + "parameters": { + "button": "left", + "x": 952, + "y": 128 + }, + "description": "Click the Close button on the startup Welcome sign-in overlay.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_closeWelcomeOverlay_assertVisible_c16c2d022_1_1" + ], + "preconditions": [ + "dhash:952:128:16:5:255266345964665b", + "dhash:952:128:96:5:16100c10100c1404", + "dhash:952:128:0:10:2592eae0f08e8621" + ], + "postconditions": [], + "tags": [ + "component:initialization", + "initialization:closeWelcomeOverlay", + "force_run:true" + ] + }, + { + "step_id": "step_closeWelcomeOverlay_assertReady_c16c2d022_1_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the startup sign-in overlay is no longer visible and the VS Code workbench is ready.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_closeWelcomeOverlay_close_c16c2d022_1_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:initialization", + "initialization:closeWelcomeOverlay", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_open_c16c2d022_1_2", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "f1" + }, + "description": "Press the F1 key to open the Command Palette in Visual Studio Code.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_closeWelcomeOverlay_assertReady_c16c2d022_1_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertPalette_c16c2d022_1_2", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Visual Studio Code Command Palette is visible with a > character in its input box and is ready to accept a command search.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_open_c16c2d022_1_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_filter_c16c2d022_1_2", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Microsoft 365 Agents Toolkit: Focus on Microsoft 365 Agents Toolkit View" + }, + "description": "Type the resolved command title into the active Command Palette.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertPalette_c16c2d022_1_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertCommand_c16c2d022_1_2", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Command Palette input box reads >Microsoft 365 Agents Toolkit: Focus on Microsoft 365 Agents Toolkit View and the highlighted command listed under it is titled Microsoft 365 Agents Toolkit: Focus on Microsoft 365 Agents Toolkit View.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_filter_c16c2d022_1_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_execute_c16c2d022_1_2", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to execute the selected Command Palette command.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertCommand_c16c2d022_1_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_assertToolkitViewSettled_assert_c16c2d022_1_3", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Microsoft 365 Agents Toolkit view is open in the side bar and an editor tab labeled Welcome showing the Build a Declarative Agent walkthrough is open in the editor area.", + "content_refs": [], + "timeout": 120, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_execute_c16c2d022_1_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:initialization", + "initialization:assertToolkitViewSettled", + "step_retry_timeout: 120" + ] + }, + { + "step_id": "step_closeGetStartedEditor_assertActive_c16c2d022_1_4", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the editor tab labeled Welcome showing the Build a Declarative Agent walkthrough is the active editor tab in the Visual Studio Code editor area.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_assertToolkitViewSettled_assert_c16c2d022_1_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:initialization", + "initialization:closeGetStartedEditor", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_closeGetStartedEditor_close_c16c2d022_1_4", + "agent": "interaction", + "tool": "keyboard_shortcut", + "parameters": { + "keys": "ctrl+w" + }, + "description": "Press Ctrl+W to close the Welcome editor tab.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_closeGetStartedEditor_assertActive_c16c2d022_1_4" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:initialization", + "initialization:closeGetStartedEditor" + ] + }, + { + "step_id": "step_closeGetStartedEditor_assertClosed_c16c2d022_1_4", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion no editor tab is open in the Visual Studio Code editor area.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_closeGetStartedEditor_close_c16c2d022_1_4" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:initialization", + "initialization:closeGetStartedEditor", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_open_c16c2d022_1_5", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "f1" + }, + "description": "Press the F1 key to open the Command Palette in Visual Studio Code.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_closeGetStartedEditor_assertClosed_c16c2d022_1_4" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertPalette_c16c2d022_1_5", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Visual Studio Code Command Palette is visible with a > character in its input box and is ready to accept a command search.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_open_c16c2d022_1_5" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_filter_c16c2d022_1_5", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Microsoft 365 Agents: Create New Agent/App" + }, + "description": "Type the resolved command title into the active Command Palette.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertPalette_c16c2d022_1_5" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertCommand_c16c2d022_1_5", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Command Palette input box reads >Microsoft 365 Agents: Create New Agent/App and the highlighted command listed under it is titled Microsoft 365 Agents: Create New Agent/App.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_filter_c16c2d022_1_5" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_execute_c16c2d022_1_5", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to execute the selected Command Palette command.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertCommand_c16c2d022_1_5" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_singleSelect_assertQuestion_c16c2d022_1_6", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the active prompt titled New Project is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_execute_c16c2d022_1_5" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_singleSelect_assertOptionsLoaded_c16c2d022_1_6", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the prompt titled New Project has finished loading and lists at least one selectable option.", + "content_refs": [], + "timeout": 120, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertQuestion_c16c2d022_1_6" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 120" + ] + }, + { + "step_id": "step_singleSelect_filter_c16c2d022_1_6", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Custom Engine Agent" + }, + "description": "Type the resolved option label Custom Engine Agent into the active single-select prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertOptionsLoaded_c16c2d022_1_6" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_singleSelect_assertOption_c16c2d022_1_6", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the option Custom Engine Agent is visible and selectable in the filtered single-select prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_filter_c16c2d022_1_6" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_singleSelect_confirm_c16c2d022_1_6", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to confirm the filtered single-select option.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertOption_c16c2d022_1_6" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_singleSelect_assertQuestion_c16c2d022_1_7", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the active prompt titled App Features Using Microsoft 365 Agents SDK is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_confirm_c16c2d022_1_6" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_singleSelect_assertOptionsLoaded_c16c2d022_1_7", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the prompt titled App Features Using Microsoft 365 Agents SDK has finished loading and lists at least one selectable option.", + "content_refs": [], + "timeout": 120, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertQuestion_c16c2d022_1_7" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 120" + ] + }, + { + "step_id": "step_singleSelect_filter_c16c2d022_1_7", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Weather Agent" + }, + "description": "Type the resolved option label Weather Agent into the active single-select prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertOptionsLoaded_c16c2d022_1_7" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_singleSelect_assertOption_c16c2d022_1_7", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the option Weather Agent is visible and selectable in the filtered single-select prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_filter_c16c2d022_1_7" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_singleSelect_confirm_c16c2d022_1_7", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to confirm the filtered single-select option.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertOption_c16c2d022_1_7" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_singleSelect_assertQuestion_c16c2d022_1_8", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the active prompt titled Service for Large Language Model (LLM) is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_confirm_c16c2d022_1_7" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_singleSelect_assertOptionsLoaded_c16c2d022_1_8", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the prompt titled Service for Large Language Model (LLM) has finished loading and lists at least one selectable option.", + "content_refs": [], + "timeout": 120, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertQuestion_c16c2d022_1_8" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 120" + ] + }, + { + "step_id": "step_singleSelect_filter_c16c2d022_1_8", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Azure OpenAI" + }, + "description": "Type the resolved option label Azure OpenAI into the active single-select prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertOptionsLoaded_c16c2d022_1_8" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_singleSelect_assertOption_c16c2d022_1_8", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the option Azure OpenAI is visible and selectable in the filtered single-select prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_filter_c16c2d022_1_8" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_singleSelect_confirm_c16c2d022_1_8", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to confirm the filtered single-select option.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertOption_c16c2d022_1_8" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_textInput_assertQuestion_c16c2d022_1_9", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the active prompt titled Azure OpenAI Key is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_confirm_c16c2d022_1_8" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_textInput_input_c16c2d022_1_9", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "${{secret:AZURE_OPENAI_API_KEY}}" + }, + "description": "Type the authored value into the active text prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_assertQuestion_c16c2d022_1_9" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text" + ] + }, + { + "step_id": "step_textInput_confirm_c16c2d022_1_9", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to submit the accepted text input.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_input_c16c2d022_1_9" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text" + ] + }, + { + "step_id": "step_textInput_assertQuestion_c16c2d022_1_10", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the active prompt titled Azure OpenAI Endpoint is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_confirm_c16c2d022_1_9" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_textInput_input_c16c2d022_1_10", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "${{env:AZURE_OPENAI_ENDPOINT}}" + }, + "description": "Type the authored value into the active text prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_assertQuestion_c16c2d022_1_10" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text" + ] + }, + { + "step_id": "step_textInput_confirm_c16c2d022_1_10", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to submit the accepted text input.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_input_c16c2d022_1_10" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text" + ] + }, + { + "step_id": "step_textInput_assertQuestion_c16c2d022_1_11", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the active prompt titled Azure OpenAI Deployment Name is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_confirm_c16c2d022_1_10" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_textInput_input_c16c2d022_1_11", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "${{env:AZURE_OPENAI_MODEL}}" + }, + "description": "Type the authored value into the active text prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_assertQuestion_c16c2d022_1_11" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text" + ] + }, + { + "step_id": "step_textInput_confirm_c16c2d022_1_11", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to submit the accepted text input.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_input_c16c2d022_1_11" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text" + ] + }, + { + "step_id": "step_singleSelect_assertQuestion_c16c2d022_1_12", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the active prompt titled Programming Language is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_confirm_c16c2d022_1_11" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_singleSelect_assertOptionsLoaded_c16c2d022_1_12", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the prompt titled Programming Language has finished loading and lists at least one selectable option.", + "content_refs": [], + "timeout": 120, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertQuestion_c16c2d022_1_12" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 120" + ] + }, + { + "step_id": "step_singleSelect_filter_c16c2d022_1_12", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "TypeScript" + }, + "description": "Type the resolved option label TypeScript into the active single-select prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertOptionsLoaded_c16c2d022_1_12" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_singleSelect_assertOption_c16c2d022_1_12", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the option TypeScript is visible and selectable in the filtered single-select prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_filter_c16c2d022_1_12" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_singleSelect_confirm_c16c2d022_1_12", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to confirm the filtered single-select option.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertOption_c16c2d022_1_12" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_confirmOption_assertPrompt_c16c2d022_1_13", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the active prompt titled Workspace Folder is visible and the option Default folder is focused.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_confirm_c16c2d022_1_12" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "interaction:key-press", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_confirmOption_confirm_c16c2d022_1_13", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to confirm the Default folder option.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_confirmOption_assertPrompt_c16c2d022_1_13" + ], + "preconditions": [ + "dhash:364:74:16:5:08056a9a5d5516b6", + "dhash:364:74:96:5:44232286e2168e01", + "dhash:364:74:0:10:f0b09494b2717075" + ], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "interaction:key-press" + ] + }, + { + "step_id": "step_textInput_assertQuestion_c16c2d022_1_14", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the active prompt titled Application Name is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_confirmOption_confirm_c16c2d022_1_13" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_textInput_input_c16c2d022_1_14", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "${{var:app_name:vscuse_app_#####}}" + }, + "description": "Type the authored value into the active text prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_assertQuestion_c16c2d022_1_14" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text" + ] + }, + { + "step_id": "step_textInput_confirm_c16c2d022_1_14", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to submit the accepted text input.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_input_c16c2d022_1_14" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text" + ] + }, + { + "step_id": "step_assertProjectWindowReady_assert_c16c2d022_1_15", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Preview README.md editor tab is open in Visual Studio Code.", + "content_refs": [], + "timeout": 60, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_confirm_c16c2d022_1_14" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:initialization", + "initialization:assertProjectWindowReady", + "step_retry_timeout: 60" + ] + }, + { + "step_id": "step_checkWorkspaceFiles_verify_c16c2d022_2_1", + "agent": "code", + "tool": "", + "parameters": { + "sample": "=== Generated Script ===\nLanguage: bash\n\n```bash\nset -euo pipefail\nPROJECT_DIR=\"/home/vscode/AgentsToolkitProjects/${{var:app_name}}\" ASSERTIONS_B64=\"W3sicGF0aCI6Im0zNjVhZ2VudHMueW1sIiwiZXhpc3RzIjp0cnVlLCJjb250YWlucyI6WyJ2ZXJzaW9uOiB2MS4xMSIsInByb3Zpc2lvbjoiLCJkZXBsb3k6Il0sIm5vdENvbnRhaW5zIjpbIm9hdXRoL3JlZ2lzdGVyIiwiZGNyL3JlZ2lzdGVyIl19XQ==\" python3 - <<'PY'\nimport base64\nimport json\nimport os\nfrom pathlib import Path\n\nproject = Path(os.environ[\"PROJECT_DIR\"]).resolve()\nassertions = json.loads(base64.b64decode(os.environ[\"ASSERTIONS_B64\"]).decode(\"utf-8\"))\nfor assertion in assertions:\n target = (project / assertion[\"path\"]).resolve()\n try:\n target.relative_to(project)\n except ValueError as error:\n raise AssertionError(\"File assertion escaped the project directory\") from error\n exists = target.is_file()\n if exists != assertion[\"exists\"]:\n raise AssertionError(f\"Unexpected file existence for {assertion['path']}\")\n if not exists:\n continue\n content = target.read_text(encoding=\"utf-8\")\n for expected in assertion.get(\"contains\", []):\n expected = expected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if expected not in content:\n raise AssertionError(f\"Expected content is absent from {assertion['path']}\")\n for unexpected in assertion.get(\"notContains\", []):\n unexpected = unexpected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if unexpected in content:\n raise AssertionError(f\"Unexpected content is present in {assertion['path']}\")\nPY\n```" + }, + "description": "@code verify the authored workspace file existence and content assertions without logging file contents.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_assertProjectWindowReady_assert_c16c2d022_1_15" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:checks", + "assertion:file", + "step_retry_timeout:120" + ] + }, + { + "step_id": "step_checkWorkspaceFiles_verify_c16c2d022_2_2", + "agent": "code", + "tool": "", + "parameters": { + "sample": "=== Generated Script ===\nLanguage: bash\n\n```bash\nset -euo pipefail\nPROJECT_DIR=\"/home/vscode/AgentsToolkitProjects/${{var:app_name}}\" ASSERTIONS_B64=\"W3sicGF0aCI6InNyYy9pbmRleC50cyIsImV4aXN0cyI6dHJ1ZSwiY29udGFpbnMiOltdLCJub3RDb250YWlucyI6W119XQ==\" python3 - <<'PY'\nimport base64\nimport json\nimport os\nfrom pathlib import Path\n\nproject = Path(os.environ[\"PROJECT_DIR\"]).resolve()\nassertions = json.loads(base64.b64decode(os.environ[\"ASSERTIONS_B64\"]).decode(\"utf-8\"))\nfor assertion in assertions:\n target = (project / assertion[\"path\"]).resolve()\n try:\n target.relative_to(project)\n except ValueError as error:\n raise AssertionError(\"File assertion escaped the project directory\") from error\n exists = target.is_file()\n if exists != assertion[\"exists\"]:\n raise AssertionError(f\"Unexpected file existence for {assertion['path']}\")\n if not exists:\n continue\n content = target.read_text(encoding=\"utf-8\")\n for expected in assertion.get(\"contains\", []):\n expected = expected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if expected not in content:\n raise AssertionError(f\"Expected content is absent from {assertion['path']}\")\n for unexpected in assertion.get(\"notContains\", []):\n unexpected = unexpected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if unexpected in content:\n raise AssertionError(f\"Unexpected content is present in {assertion['path']}\")\nPY\n```" + }, + "description": "@code verify the authored workspace file existence and content assertions without logging file contents.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_checkWorkspaceFiles_verify_c16c2d022_2_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:checks", + "assertion:file", + "step_retry_timeout:120" + ] + }, + { + "step_id": "step_checkWorkspaceFiles_verify_c16c2d022_2_3", + "agent": "code", + "tool": "", + "parameters": { + "sample": "=== Generated Script ===\nLanguage: bash\n\n```bash\nset -euo pipefail\nPROJECT_DIR=\"/home/vscode/AgentsToolkitProjects/${{var:app_name}}\" ASSERTIONS_B64=\"W3sicGF0aCI6InNyYy9hZ2VudC50cyIsImV4aXN0cyI6dHJ1ZSwiY29udGFpbnMiOltdLCJub3RDb250YWlucyI6W119XQ==\" python3 - <<'PY'\nimport base64\nimport json\nimport os\nfrom pathlib import Path\n\nproject = Path(os.environ[\"PROJECT_DIR\"]).resolve()\nassertions = json.loads(base64.b64decode(os.environ[\"ASSERTIONS_B64\"]).decode(\"utf-8\"))\nfor assertion in assertions:\n target = (project / assertion[\"path\"]).resolve()\n try:\n target.relative_to(project)\n except ValueError as error:\n raise AssertionError(\"File assertion escaped the project directory\") from error\n exists = target.is_file()\n if exists != assertion[\"exists\"]:\n raise AssertionError(f\"Unexpected file existence for {assertion['path']}\")\n if not exists:\n continue\n content = target.read_text(encoding=\"utf-8\")\n for expected in assertion.get(\"contains\", []):\n expected = expected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if expected not in content:\n raise AssertionError(f\"Expected content is absent from {assertion['path']}\")\n for unexpected in assertion.get(\"notContains\", []):\n unexpected = unexpected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if unexpected in content:\n raise AssertionError(f\"Unexpected content is present in {assertion['path']}\")\nPY\n```" + }, + "description": "@code verify the authored workspace file existence and content assertions without logging file contents.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_checkWorkspaceFiles_verify_c16c2d022_2_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:checks", + "assertion:file", + "step_retry_timeout:120" + ] + }, + { + "step_id": "step_checkWorkspaceFiles_verify_c16c2d022_2_4", + "agent": "code", + "tool": "", + "parameters": { + "sample": "=== Generated Script ===\nLanguage: bash\n\n```bash\nset -euo pipefail\nPROJECT_DIR=\"/home/vscode/AgentsToolkitProjects/${{var:app_name}}\" ASSERTIONS_B64=\"W3sicGF0aCI6InNyYy90b29scy9nZXRXZWF0aGVyVG9vbC50cyIsImV4aXN0cyI6dHJ1ZSwiY29udGFpbnMiOltdLCJub3RDb250YWlucyI6W119XQ==\" python3 - <<'PY'\nimport base64\nimport json\nimport os\nfrom pathlib import Path\n\nproject = Path(os.environ[\"PROJECT_DIR\"]).resolve()\nassertions = json.loads(base64.b64decode(os.environ[\"ASSERTIONS_B64\"]).decode(\"utf-8\"))\nfor assertion in assertions:\n target = (project / assertion[\"path\"]).resolve()\n try:\n target.relative_to(project)\n except ValueError as error:\n raise AssertionError(\"File assertion escaped the project directory\") from error\n exists = target.is_file()\n if exists != assertion[\"exists\"]:\n raise AssertionError(f\"Unexpected file existence for {assertion['path']}\")\n if not exists:\n continue\n content = target.read_text(encoding=\"utf-8\")\n for expected in assertion.get(\"contains\", []):\n expected = expected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if expected not in content:\n raise AssertionError(f\"Expected content is absent from {assertion['path']}\")\n for unexpected in assertion.get(\"notContains\", []):\n unexpected = unexpected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if unexpected in content:\n raise AssertionError(f\"Unexpected content is present in {assertion['path']}\")\nPY\n```" + }, + "description": "@code verify the authored workspace file existence and content assertions without logging file contents.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_checkWorkspaceFiles_verify_c16c2d022_2_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:checks", + "assertion:file", + "step_retry_timeout:120" + ] + }, + { + "step_id": "step_checkWorkspaceFiles_verify_c16c2d022_2_5", + "agent": "code", + "tool": "", + "parameters": { + "sample": "=== Generated Script ===\nLanguage: bash\n\n```bash\nset -euo pipefail\nPROJECT_DIR=\"/home/vscode/AgentsToolkitProjects/${{var:app_name}}\" ASSERTIONS_B64=\"W3sicGF0aCI6InBhY2thZ2UuanNvbiIsImV4aXN0cyI6dHJ1ZSwiY29udGFpbnMiOltdLCJub3RDb250YWlucyI6W119XQ==\" python3 - <<'PY'\nimport base64\nimport json\nimport os\nfrom pathlib import Path\n\nproject = Path(os.environ[\"PROJECT_DIR\"]).resolve()\nassertions = json.loads(base64.b64decode(os.environ[\"ASSERTIONS_B64\"]).decode(\"utf-8\"))\nfor assertion in assertions:\n target = (project / assertion[\"path\"]).resolve()\n try:\n target.relative_to(project)\n except ValueError as error:\n raise AssertionError(\"File assertion escaped the project directory\") from error\n exists = target.is_file()\n if exists != assertion[\"exists\"]:\n raise AssertionError(f\"Unexpected file existence for {assertion['path']}\")\n if not exists:\n continue\n content = target.read_text(encoding=\"utf-8\")\n for expected in assertion.get(\"contains\", []):\n expected = expected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if expected not in content:\n raise AssertionError(f\"Expected content is absent from {assertion['path']}\")\n for unexpected in assertion.get(\"notContains\", []):\n unexpected = unexpected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if unexpected in content:\n raise AssertionError(f\"Unexpected content is present in {assertion['path']}\")\nPY\n```" + }, + "description": "@code verify the authored workspace file existence and content assertions without logging file contents.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_checkWorkspaceFiles_verify_c16c2d022_2_4" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:checks", + "assertion:file", + "step_retry_timeout:120" + ] + }, + { + "step_id": "step_checkWorkspaceFiles_verify_c16c2d022_2_6", + "agent": "code", + "tool": "", + "parameters": { + "sample": "=== Generated Script ===\nLanguage: bash\n\n```bash\nset -euo pipefail\nPROJECT_DIR=\"/home/vscode/AgentsToolkitProjects/${{var:app_name}}\" ASSERTIONS_B64=\"W3sicGF0aCI6ImluZnJhL2F6dXJlLmJpY2VwIiwiZXhpc3RzIjp0cnVlLCJjb250YWlucyI6W10sIm5vdENvbnRhaW5zIjpbXX1d\" python3 - <<'PY'\nimport base64\nimport json\nimport os\nfrom pathlib import Path\n\nproject = Path(os.environ[\"PROJECT_DIR\"]).resolve()\nassertions = json.loads(base64.b64decode(os.environ[\"ASSERTIONS_B64\"]).decode(\"utf-8\"))\nfor assertion in assertions:\n target = (project / assertion[\"path\"]).resolve()\n try:\n target.relative_to(project)\n except ValueError as error:\n raise AssertionError(\"File assertion escaped the project directory\") from error\n exists = target.is_file()\n if exists != assertion[\"exists\"]:\n raise AssertionError(f\"Unexpected file existence for {assertion['path']}\")\n if not exists:\n continue\n content = target.read_text(encoding=\"utf-8\")\n for expected in assertion.get(\"contains\", []):\n expected = expected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if expected not in content:\n raise AssertionError(f\"Expected content is absent from {assertion['path']}\")\n for unexpected in assertion.get(\"notContains\", []):\n unexpected = unexpected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if unexpected in content:\n raise AssertionError(f\"Unexpected content is present in {assertion['path']}\")\nPY\n```" + }, + "description": "@code verify the authored workspace file existence and content assertions without logging file contents.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_checkWorkspaceFiles_verify_c16c2d022_2_5" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:checks", + "assertion:file", + "step_retry_timeout:120" + ] + }, + { + "step_id": "step_checkWorkspaceFiles_verify_c16c2d022_2_7", + "agent": "code", + "tool": "", + "parameters": { + "sample": "=== Generated Script ===\nLanguage: bash\n\n```bash\nset -euo pipefail\nPROJECT_DIR=\"/home/vscode/AgentsToolkitProjects/${{var:app_name}}\" ASSERTIONS_B64=\"W3sicGF0aCI6ImFwcFBhY2thZ2UvbWFuaWZlc3QuanNvbiIsImV4aXN0cyI6dHJ1ZSwiY29udGFpbnMiOlsiXCJtYW5pZmVzdFZlcnNpb25cIjogXCIxLjI5XCIiXSwibm90Q29udGFpbnMiOltdfV0=\" python3 - <<'PY'\nimport base64\nimport json\nimport os\nfrom pathlib import Path\n\nproject = Path(os.environ[\"PROJECT_DIR\"]).resolve()\nassertions = json.loads(base64.b64decode(os.environ[\"ASSERTIONS_B64\"]).decode(\"utf-8\"))\nfor assertion in assertions:\n target = (project / assertion[\"path\"]).resolve()\n try:\n target.relative_to(project)\n except ValueError as error:\n raise AssertionError(\"File assertion escaped the project directory\") from error\n exists = target.is_file()\n if exists != assertion[\"exists\"]:\n raise AssertionError(f\"Unexpected file existence for {assertion['path']}\")\n if not exists:\n continue\n content = target.read_text(encoding=\"utf-8\")\n for expected in assertion.get(\"contains\", []):\n expected = expected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if expected not in content:\n raise AssertionError(f\"Expected content is absent from {assertion['path']}\")\n for unexpected in assertion.get(\"notContains\", []):\n unexpected = unexpected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if unexpected in content:\n raise AssertionError(f\"Unexpected content is present in {assertion['path']}\")\nPY\n```" + }, + "description": "@code verify the authored workspace file existence and content assertions without logging file contents.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_checkWorkspaceFiles_verify_c16c2d022_2_6" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:checks", + "assertion:file", + "step_retry_timeout:120" + ] + }, + { + "step_id": "step_executeCommand_open_c16c2d022_3_1", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "f1" + }, + "description": "Press the F1 key to open the Command Palette in Visual Studio Code.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_checkWorkspaceFiles_verify_c16c2d022_2_7" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertPalette_c16c2d022_3_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Visual Studio Code Command Palette is visible with a > character in its input box and is ready to accept a command search.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_open_c16c2d022_3_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_filter_c16c2d022_3_1", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "View: Show Microsoft 365 Agents Toolkit" + }, + "description": "Type the resolved command title into the active Command Palette.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertPalette_c16c2d022_3_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertCommand_c16c2d022_3_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Command Palette input box reads >View: Show Microsoft 365 Agents Toolkit and the highlighted command listed under it is titled View: Show Microsoft 365 Agents Toolkit.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_filter_c16c2d022_3_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_execute_c16c2d022_3_1", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to execute the selected Command Palette command.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertCommand_c16c2d022_3_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_signInAzure_assertOption_c16c2d022_3_2", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the ACCOUNTS section of the side bar lists an entry labeled Sign in to Azure.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_execute_c16c2d022_3_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:authentication", + "account:azure", + "entry_state:toolkit-side-bar-visible", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_signInAzure_selectOption_c16c2d022_3_2", + "agent": "interaction", + "tool": "click", + "parameters": { + "button": "left", + "x": 165, + "y": 127 + }, + "description": "Click the \"Sign in to Azure\" entry in the ACCOUNTS section of the side bar.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInAzure_assertOption_c16c2d022_3_2" + ], + "preconditions": [ + "dhash:165:127:16:5:5819353567ef55aa", + "dhash:165:127:96:5:2cd1259b9b941a6a", + "dhash:165:127:0:10:a2942223a3222421" + ], + "postconditions": [], + "tags": [ + "component:authentication", + "account:azure" + ] + }, + { + "step_id": "step_signInAzure_confirmSignIn_c16c2d022_3_2", + "agent": "interaction", + "tool": "click", + "parameters": { + "button": "left", + "x": 534, + "y": 98 + }, + "description": "Click the \"Sign in\" button on the Microsoft authentication popup in Visual Studio Code to proceed with Azure authorization for the Microsoft 365 Agents Toolkit.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInAzure_selectOption_c16c2d022_3_2" + ], + "preconditions": [ + "dhash:534:98:16:5:554a54555555468f", + "dhash:534:98:96:5:0002740b0a700800", + "dhash:534:98:0:10:12322e2323232421" + ], + "postconditions": [], + "tags": [ + "component:authentication", + "account:azure" + ] + }, + { + "step_id": "step_signInAzure_allow_c16c2d022_3_2", + "agent": "interaction", + "tool": "click", + "parameters": { + "button": "left", + "x": 457, + "y": 96 + }, + "description": "Click the \"Allow\" button in the Microsoft 365 sign-in prompt to authorize the extension \"Microsoft 365 Agents Toolkit\" within Visual Studio Code.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInAzure_confirmSignIn_c16c2d022_3_2" + ], + "preconditions": [ + "dhash:457:96:16:5:524d5552564cb3ca", + "dhash:457:96:96:5:0004609c0c600400", + "dhash:457:96:0:10:d2322e2323232421" + ], + "postconditions": [], + "tags": [ + "component:authentication", + "account:azure" + ] + }, + { + "step_id": "step_signInAzure_focusAccount_c16c2d022_3_2", + "agent": "interaction", + "tool": "click", + "parameters": { + "button": "left", + "x": 432, + "y": 327 + }, + "description": "Click on the \"Email, phone, or Skype\" input field in the Microsoft sign-in dialog on the login.microsoftonline.com webpage to activate text entry.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInAzure_allow_c16c2d022_3_2" + ], + "preconditions": [ + "dhash:432:327:16:5:114c134b4a13b2cc", + "dhash:432:327:96:5:686000a2a95500cb", + "dhash:432:327:0:10:1361717965617935" + ], + "postconditions": [], + "tags": [ + "component:authentication", + "account:azure", + "precondition_wait_timeout: 60" + ] + }, + { + "step_id": "step_signInAzure_typeAccount_c16c2d022_3_2", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "${{env:AZURE_ACCOUNT_NAME}}" + }, + "description": "Enter the resolved Azure account name into the email or username input field on the Microsoft Sign in page.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInAzure_focusAccount_c16c2d022_3_2" + ], + "preconditions": [ + "dhash:512:384:0:20:1b28d0d9e7e4dae4" + ], + "postconditions": [], + "tags": [ + "component:authentication", + "account:azure", + "precondition_wait_timeout: 60" + ] + }, + { + "step_id": "step_signInAzure_next_c16c2d022_3_2", + "agent": "interaction", + "tool": "click", + "parameters": { + "button": "left", + "x": 631, + "y": 462 + }, + "description": "Click the \"Next\" button on the Microsoft sign-in page to continue Azure authentication.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInAzure_typeAccount_c16c2d022_3_2" + ], + "preconditions": [ + "dhash:631:462:16:5:0000000091000000", + "dhash:631:462:96:5:000000004e31314e", + "dhash:631:462:0:10:1392f0dac6e6d8e4" + ], + "postconditions": [], + "tags": [ + "component:authentication", + "account:azure", + "ocr:true" + ] + }, + { + "step_id": "step_signInAzure_typePassword_c16c2d022_3_2", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "${{secret:AZURE_ACCOUNT_PASSWORD}}" + }, + "description": "Type the resolved Azure account password into the Password field on the Microsoft login page.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInAzure_next_c16c2d022_3_2" + ], + "preconditions": [ + "dhash:512:384:0:20:1908f0d9d1e6e6e4" + ], + "postconditions": [], + "tags": [ + "component:authentication", + "account:azure", + "precondition_wait_timeout: 60", + "delay:5" + ] + }, + { + "step_id": "step_signInAzure_submit_c16c2d022_3_2", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter in the password field on the Microsoft login page to submit the Azure credentials.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInAzure_typePassword_c16c2d022_3_2" + ], + "preconditions": [ + "dhash:512:384:0:20:1908f0d9d1e6e6e4" + ], + "postconditions": [], + "tags": [ + "component:authentication", + "account:azure", + "delay: 3" + ] + }, + { + "step_id": "step_signInAzure_closeBrowser_c16c2d022_3_2", + "agent": "interaction", + "tool": "click", + "parameters": { + "button": "left", + "x": 991, + "y": 18 + }, + "description": "Click the red close (X) button in the top-right corner of the Google Chrome window to close the Visual Studio Code sign-in confirmation page.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInAzure_submit_c16c2d022_3_2" + ], + "preconditions": [ + "dhash:991:18:16:5:b020624245454242", + "dhash:991:18:96:5:629393936a903232", + "dhash:991:18:0:10:0021410169414141" + ], + "postconditions": [], + "tags": [ + "component:authentication", + "account:azure", + "delay: 3" + ] + }, + { + "step_id": "step_signInAzure_assertReady_c16c2d022_3_2", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion there's ${{env:AZURE_ACCOUNT_NAME}} in the \"ACCOUNTS\" section", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInAzure_closeBrowser_c16c2d022_3_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:authentication", + "account:azure", + "readiness:account-visible", + "step_retry_timeout: 180" + ] + }, + { + "step_id": "step_executeCommand_open_c16c2d022_4_1", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "f1" + }, + "description": "Press the F1 key to open the Command Palette in Visual Studio Code.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInAzure_assertReady_c16c2d022_3_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertPalette_c16c2d022_4_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Visual Studio Code Command Palette is visible with a > character in its input box and is ready to accept a command search.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_open_c16c2d022_4_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_filter_c16c2d022_4_1", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "View: Show Microsoft 365 Agents Toolkit" + }, + "description": "Type the resolved command title into the active Command Palette.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertPalette_c16c2d022_4_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertCommand_c16c2d022_4_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Command Palette input box reads >View: Show Microsoft 365 Agents Toolkit and the highlighted command listed under it is titled View: Show Microsoft 365 Agents Toolkit.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_filter_c16c2d022_4_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_execute_c16c2d022_4_1", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to execute the selected Command Palette command.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertCommand_c16c2d022_4_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_signInM365FromPicker_assertOption_c16c2d022_4_2", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the ACCOUNTS section of the side bar lists an entry whose label begins with Sign in to Microsoft.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_execute_c16c2d022_4_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:authentication", + "account:m365", + "entry_state:toolkit-side-bar-visible", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_signInM365FromPicker_selectOption_c16c2d022_4_2", + "agent": "interaction", + "tool": "click", + "parameters": { + "button": "left", + "x": 213, + "y": 102 + }, + "description": "Click the entry whose label begins with \"Sign in to Microsoft\" in the ACCOUNTS section of the side bar.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInM365FromPicker_assertOption_c16c2d022_4_2" + ], + "preconditions": [ + "dhash:213:102:16:5:9c63d67674d4c718", + "dhash:213:102:96:5:8c512758d92c2cce", + "dhash:213:102:0:10:92c86223a3622421" + ], + "postconditions": [], + "tags": [ + "component:authentication", + "account:m365" + ] + }, + { + "step_id": "step_signInM365FromPicker_confirmSignIn_c16c2d022_4_2", + "agent": "interaction", + "tool": "click", + "parameters": { + "button": "left", + "x": 762, + "y": 97 + }, + "description": "Click the \"Sign in\" button within the Microsoft 365 developer sandbox modal.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInM365FromPicker_selectOption_c16c2d022_4_2" + ], + "preconditions": [ + "dhash:762:97:16:5:24b1a72ba9aba343", + "dhash:762:97:96:5:0008304b0f344900", + "dhash:762:97:0:10:9c68332223232421" + ], + "postconditions": [], + "tags": [ + "component:authentication", + "account:m365" + ] + }, + { + "step_id": "step_signInM365FromPicker_useAnotherAccount_c16c2d022_4_2", + "agent": "interaction", + "tool": "click", + "parameters": { + "button": "left", + "x": 447, + "y": 487 + }, + "description": "Click the \"Use another account\" option on the Microsoft \"Pick an account\" login screen in Google Chrome.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInM365FromPicker_confirmSignIn_c16c2d022_4_2" + ], + "preconditions": [ + "dhash:447:487:16:5:ac534b4aaaaa6a15", + "dhash:447:487:96:5:0100228d15a20000", + "dhash:447:487:0:10:1312e8d89ed6e6e4" + ], + "postconditions": [], + "tags": [ + "component:authentication", + "account:m365", + "precondition_wait_timeout: 60" + ] + }, + { + "step_id": "step_signInM365FromPicker_typeAccount_c16c2d022_4_2", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "${{env:M365_ACCOUNT_NAME}}" + }, + "description": "Enter the resolved Microsoft 365 account name into the email or username input field the account picker opened.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInM365FromPicker_useAnotherAccount_c16c2d022_4_2" + ], + "preconditions": [ + "dhash:512:384:0:20:1392f8d8c6e6dae4" + ], + "postconditions": [], + "tags": [ + "component:authentication", + "account:m365", + "delay: 3" + ] + }, + { + "step_id": "step_signInM365FromPicker_next_c16c2d022_4_2", + "agent": "interaction", + "tool": "click", + "parameters": { + "button": "left", + "x": 655, + "y": 505 + }, + "description": "Click the blue \"Next\" button on the Microsoft sign-in page, confirming the entered email address for login.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInM365FromPicker_typeAccount_c16c2d022_4_2" + ], + "preconditions": [ + "dhash:655:505:16:5:0000000080400020", + "dhash:655:505:96:5:0000408bcb4b0000", + "dhash:655:505:0:10:1392f8d8c7e6dae4" + ], + "postconditions": [], + "tags": [ + "component:authentication", + "account:m365", + "delay:3" + ] + }, + { + "step_id": "step_signInM365FromPicker_typePassword_c16c2d022_4_2", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "${{secret:M365_ACCOUNT_PASSWORD}}" + }, + "description": "Type the resolved Microsoft 365 account password into the Password field on the Microsoft login page.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInM365FromPicker_next_c16c2d022_4_2" + ], + "preconditions": [ + "dhash:512:384:0:20:1392e8d8d9f6e6e4" + ], + "postconditions": [], + "tags": [ + "component:authentication", + "account:m365", + "delay: 3" + ] + }, + { + "step_id": "step_signInM365FromPicker_submit_c16c2d022_4_2", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to submit the Microsoft 365 login form from the password entry screen.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInM365FromPicker_typePassword_c16c2d022_4_2" + ], + "preconditions": [ + "dhash:512:384:0:20:1392e8d8d9f6e6e4" + ], + "postconditions": [], + "tags": [ + "component:authentication", + "account:m365", + "delay: 3" + ] + }, + { + "step_id": "step_signInM365FromPicker_closeBrowser_c16c2d022_4_2", + "agent": "interaction", + "tool": "click", + "parameters": { + "button": "left", + "x": 1008, + "y": 19 + }, + "description": "Click the \"Close\" button (red cross icon) in the browser tab bar to close the \"M365 Account - Sign In\" page.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInM365FromPicker_submit_c16c2d022_4_2" + ], + "preconditions": [ + "dhash:1008:19:16:5:a322c95a325ac922", + "dhash:1008:19:96:5:926363639200c6c4", + "dhash:1008:19:0:10:1312094769614541" + ], + "postconditions": [], + "tags": [ + "component:authentication", + "account:m365", + "delay: 3" + ] + }, + { + "step_id": "step_signInM365FromPicker_assertReady_c16c2d022_4_2", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion there's ${{env:M365_ACCOUNT_NAME}} in the \"ACCOUNTS\" section", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInM365FromPicker_closeBrowser_c16c2d022_4_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:authentication", + "account:m365", + "readiness:account-visible", + "step_retry_timeout: 180" + ] + }, + { + "step_id": "step_executeCommand_open_c16c2d022_5_1", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "f1" + }, + "description": "Press the F1 key to open the Command Palette in Visual Studio Code.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInM365FromPicker_assertReady_c16c2d022_4_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertPalette_c16c2d022_5_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Visual Studio Code Command Palette is visible with a > character in its input box and is ready to accept a command search.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_open_c16c2d022_5_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_filter_c16c2d022_5_1", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Notifications: Clear All Notifications" + }, + "description": "Type the resolved command title into the active Command Palette.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertPalette_c16c2d022_5_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertCommand_c16c2d022_5_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Command Palette input box reads >Notifications: Clear All Notifications and the highlighted command listed under it is titled Notifications: Clear All Notifications.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_filter_c16c2d022_5_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_execute_c16c2d022_5_1", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to execute the selected Command Palette command.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertCommand_c16c2d022_5_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_open_c16c2d022_5_2", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "f1" + }, + "description": "Press the F1 key to open the Command Palette in Visual Studio Code.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_execute_c16c2d022_5_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertPalette_c16c2d022_5_2", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Visual Studio Code Command Palette is visible with a > character in its input box and is ready to accept a command search.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_open_c16c2d022_5_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_filter_c16c2d022_5_2", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Notifications: Show Notifications" + }, + "description": "Type the resolved command title into the active Command Palette.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertPalette_c16c2d022_5_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertCommand_c16c2d022_5_2", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Command Palette input box reads >Notifications: Show Notifications and the highlighted command listed under it is titled Notifications: Show Notifications.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_filter_c16c2d022_5_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_execute_c16c2d022_5_2", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to execute the selected Command Palette command.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertCommand_c16c2d022_5_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_open_c16c2d022_5_3", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "f1" + }, + "description": "Press the F1 key to open the Command Palette in Visual Studio Code.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_execute_c16c2d022_5_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertPalette_c16c2d022_5_3", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Visual Studio Code Command Palette is visible with a > character in its input box and is ready to accept a command search.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_open_c16c2d022_5_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_filter_c16c2d022_5_3", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Microsoft 365 Agents: Provision" + }, + "description": "Type the resolved command title into the active Command Palette.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertPalette_c16c2d022_5_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertCommand_c16c2d022_5_3", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Command Palette input box reads >Microsoft 365 Agents: Provision and the highlighted command listed under it is titled Microsoft 365 Agents: Provision.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_filter_c16c2d022_5_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_execute_c16c2d022_5_3", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to execute the selected Command Palette command.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertCommand_c16c2d022_5_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_singleSelect_assertQuestion_c16c2d022_5_4", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the active prompt titled Select a resource group is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_execute_c16c2d022_5_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_singleSelect_assertOptionsLoaded_c16c2d022_5_4", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the prompt titled Select a resource group has finished loading and lists at least one selectable option.", + "content_refs": [], + "timeout": 120, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertQuestion_c16c2d022_5_4" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 120" + ] + }, + { + "step_id": "step_singleSelect_filter_c16c2d022_5_4", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "+ New resource group" + }, + "description": "Type the resolved option label + New resource group into the active single-select prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertOptionsLoaded_c16c2d022_5_4" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_singleSelect_assertOption_c16c2d022_5_4", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the option + New resource group is visible and selectable in the filtered single-select prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_filter_c16c2d022_5_4" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_singleSelect_confirm_c16c2d022_5_4", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to confirm the filtered single-select option.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertOption_c16c2d022_5_4" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_textInput_assertQuestion_c16c2d022_5_5", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the active prompt titled New resource group name is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_confirm_c16c2d022_5_4" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_textInput_input_c16c2d022_5_5", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "${{var:app_name}}-rg" + }, + "description": "Type the authored value into the active text prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_assertQuestion_c16c2d022_5_5" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text" + ] + }, + { + "step_id": "step_textInput_confirm_c16c2d022_5_5", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to submit the accepted text input.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_input_c16c2d022_5_5" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text" + ] + }, + { + "step_id": "step_singleSelect_assertQuestion_c16c2d022_5_6", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the active prompt titled Location for the new resource group is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_confirm_c16c2d022_5_5" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_singleSelect_assertOptionsLoaded_c16c2d022_5_6", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the prompt titled Location for the new resource group has finished loading and lists at least one selectable option.", + "content_refs": [], + "timeout": 120, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertQuestion_c16c2d022_5_6" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 120" + ] + }, + { + "step_id": "step_singleSelect_filter_c16c2d022_5_6", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "${{env:RESOURCE_GROUP_REGION}}" + }, + "description": "Type the resolved option label ${{env:RESOURCE_GROUP_REGION}} into the active single-select prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertOptionsLoaded_c16c2d022_5_6" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_singleSelect_assertOption_c16c2d022_5_6", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the option ${{env:RESOURCE_GROUP_REGION}} is visible and selectable in the filtered single-select prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_filter_c16c2d022_5_6" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_singleSelect_confirm_c16c2d022_5_6", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to confirm the filtered single-select option.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertOption_c16c2d022_5_6" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_clickPrimaryAction_assertDialog_c16c2d022_5_7", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the dialog Costs may apply based on usage. Do you want to provision resources in dev environment using listed accounts? is visible with the primary action Provision.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_confirm_c16c2d022_5_6" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:dialog", + "action:click-primary", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_clickPrimaryAction_click_c16c2d022_5_7", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to activate the primary action Provision in the confirmed dialog.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_clickPrimaryAction_assertDialog_c16c2d022_5_7" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:dialog", + "action:click-primary" + ] + }, + { + "step_id": "step_assertNotificationContains_assert_c16c2d022_5_8", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion a visible Visual Studio Code notification contains provision stage executed successfully.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_clickPrimaryAction_click_c16c2d022_5_7" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:notifications", + "action:assert-contains", + "step_retry_timeout: 900" + ] + }, + { + "step_id": "step_executeCommand_open_c16c2d022_6_1", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "f1" + }, + "description": "Press the F1 key to open the Command Palette in Visual Studio Code.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_assertNotificationContains_assert_c16c2d022_5_8" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertPalette_c16c2d022_6_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Visual Studio Code Command Palette is visible with a > character in its input box and is ready to accept a command search.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_open_c16c2d022_6_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_filter_c16c2d022_6_1", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Notifications: Clear All Notifications" + }, + "description": "Type the resolved command title into the active Command Palette.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertPalette_c16c2d022_6_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertCommand_c16c2d022_6_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Command Palette input box reads >Notifications: Clear All Notifications and the highlighted command listed under it is titled Notifications: Clear All Notifications.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_filter_c16c2d022_6_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_execute_c16c2d022_6_1", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to execute the selected Command Palette command.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertCommand_c16c2d022_6_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_open_c16c2d022_6_2", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "f1" + }, + "description": "Press the F1 key to open the Command Palette in Visual Studio Code.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_execute_c16c2d022_6_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertPalette_c16c2d022_6_2", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Visual Studio Code Command Palette is visible with a > character in its input box and is ready to accept a command search.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_open_c16c2d022_6_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_filter_c16c2d022_6_2", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Notifications: Show Notifications" + }, + "description": "Type the resolved command title into the active Command Palette.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertPalette_c16c2d022_6_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertCommand_c16c2d022_6_2", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Command Palette input box reads >Notifications: Show Notifications and the highlighted command listed under it is titled Notifications: Show Notifications.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_filter_c16c2d022_6_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_execute_c16c2d022_6_2", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to execute the selected Command Palette command.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertCommand_c16c2d022_6_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_open_c16c2d022_6_3", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "f1" + }, + "description": "Press the F1 key to open the Command Palette in Visual Studio Code.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_execute_c16c2d022_6_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertPalette_c16c2d022_6_3", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Visual Studio Code Command Palette is visible with a > character in its input box and is ready to accept a command search.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_open_c16c2d022_6_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_filter_c16c2d022_6_3", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Microsoft 365 Agents: Deploy" + }, + "description": "Type the resolved command title into the active Command Palette.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertPalette_c16c2d022_6_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertCommand_c16c2d022_6_3", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Command Palette input box reads >Microsoft 365 Agents: Deploy and the highlighted command listed under it is titled Microsoft 365 Agents: Deploy.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_filter_c16c2d022_6_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_execute_c16c2d022_6_3", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to execute the selected Command Palette command.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertCommand_c16c2d022_6_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_clickPrimaryAction_assertDialog_c16c2d022_6_4", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the dialog Do you want to deploy resources in dev environment? is visible with the primary action Deploy.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_execute_c16c2d022_6_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:dialog", + "action:click-primary", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_clickPrimaryAction_click_c16c2d022_6_4", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to activate the primary action Deploy in the confirmed dialog.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_clickPrimaryAction_assertDialog_c16c2d022_6_4" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:dialog", + "action:click-primary" + ] + }, + { + "step_id": "step_assertNotificationContains_assert_c16c2d022_6_5", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion a visible Visual Studio Code notification contains actions in deploy stage executed successfully.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_clickPrimaryAction_click_c16c2d022_6_4" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:notifications", + "action:assert-contains", + "step_retry_timeout: 900" + ] + }, + { + "step_id": "step_executeCommand_open_c16c2d022_7_1", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "f1" + }, + "description": "Press the F1 key to open the Command Palette in Visual Studio Code.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_assertNotificationContains_assert_c16c2d022_6_5" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertPalette_c16c2d022_7_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Visual Studio Code Command Palette is visible with a > character in its input box and is ready to accept a command search.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_open_c16c2d022_7_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_filter_c16c2d022_7_1", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Debug: Select and Start Debugging" + }, + "description": "Type the resolved command title into the active Command Palette.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertPalette_c16c2d022_7_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertCommand_c16c2d022_7_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Command Palette input box reads >Debug: Select and Start Debugging and the highlighted command listed under it is titled Debug: Select and Start Debugging.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_filter_c16c2d022_7_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_execute_c16c2d022_7_1", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to execute the selected Command Palette command.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertCommand_c16c2d022_7_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_filterOption_filter_c16c2d022_7_2", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Launch Remote in Teams (Chrome)" + }, + "description": "Type the resolved option label into the active option picker.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_execute_c16c2d022_7_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_filterOption_assertOption_c16c2d022_7_2", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the option Launch Remote in Teams (Chrome) is visible and selectable in the filtered option picker.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_filterOption_filter_c16c2d022_7_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_filterOption_confirm_c16c2d022_7_2", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to confirm the filtered option.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_filterOption_assertOption_c16c2d022_7_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_browserM365PasswordSignIn_assertPassword_c16c2d022_7_3", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Microsoft sign-in page in Chrome names ${{env:M365_ACCOUNT_NAME}} and asks for that account's password.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_filterOption_confirm_c16c2d022_7_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:authentication", + "surface:browser", + "step_retry_timeout: 300" + ] + }, + { + "step_id": "step_browserM365PasswordSignIn_focusPassword_c16c2d022_7_3", + "agent": "interaction", + "tool": "click", + "parameters": { + "button": "left", + "x": 400, + "y": 405 + }, + "description": "Click the password input on the Microsoft sign-in page to move focus out of the browser address bar.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_browserM365PasswordSignIn_assertPassword_c16c2d022_7_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:authentication", + "surface:browser" + ] + }, + { + "step_id": "step_browserM365PasswordSignIn_enterPassword_c16c2d022_7_3", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "${{secret:M365_ACCOUNT_PASSWORD}}" + }, + "description": "Enter the registered Microsoft 365 password in the focused password input of the browser sign-in form.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_browserM365PasswordSignIn_focusPassword_c16c2d022_7_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:authentication", + "surface:browser" + ] + }, + { + "step_id": "step_browserM365PasswordSignIn_submitPassword_c16c2d022_7_3", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to submit the Microsoft 365 password.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_browserM365PasswordSignIn_enterPassword_c16c2d022_7_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:authentication", + "surface:browser" + ] + }, + { + "step_id": "step_browserM365PasswordSignIn_assertStaySignedIn_c16c2d022_7_3", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Microsoft Stay signed in question is visible with Yes focused.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_browserM365PasswordSignIn_submitPassword_c16c2d022_7_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:authentication", + "surface:browser", + "step_retry_timeout: 120" + ] + }, + { + "step_id": "step_browserM365PasswordSignIn_confirmStaySignedIn_c16c2d022_7_3", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to confirm staying signed in.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_browserM365PasswordSignIn_assertStaySignedIn_c16c2d022_7_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:authentication", + "surface:browser", + "delay: 30" + ] + }, + { + "step_id": "step_assertReady_assertReady_c16c2d022_7_4", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Microsoft Teams app details page for an app whose name starts with ${{var:app_name}} is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_browserM365PasswordSignIn_confirmStaySignedIn_c16c2d022_7_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:browser", + "action:assert-ready", + "step_retry_timeout: 180" + ] + }, + { + "step_id": "step_addAndOpenApp_assertAdd_c16c2d022_8_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the blue \"Add\" button exists.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_assertReady_assertReady_c16c2d022_7_4" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:browser", + "host_surface:teams", + "entry_state:add", + "step_retry_timeout: 180" + ] + }, + { + "step_id": "step_addAndOpenApp_add_c16c2d022_8_1", + "agent": "interaction", + "tool": "click", + "parameters": { + "button": "left", + "x": 288, + "y": 214 + }, + "description": "Click Add on the app details popup within the Microsoft Teams interface.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_addAndOpenApp_assertAdd_c16c2d022_8_1" + ], + "preconditions": [ + "dhash:288:214:16:5:05100a0511030b12", + "dhash:288:214:96:5:2616011c1c01005b", + "dhash:288:214:0:10:00b4b0d8f8fcf0d8" + ], + "postconditions": [], + "tags": [ + "component:browser", + "host_surface:teams", + "entry_state:add" + ] + }, + { + "step_id": "step_addAndOpenApp_assertAdded_c16c2d022_8_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the \"Added successfully!\" dialog and its Open button are visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_addAndOpenApp_add_c16c2d022_8_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:browser", + "host_surface:teams", + "entry_state:added", + "step_retry_timeout: 180" + ] + }, + { + "step_id": "step_addAndOpenApp_open_c16c2d022_8_1", + "agent": "interaction", + "tool": "click", + "parameters": { + "button": "left", + "x": 533, + "y": 508 + }, + "description": "Click Open in the Microsoft Teams Added successfully dialog.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_addAndOpenApp_assertAdded_c16c2d022_8_1" + ], + "preconditions": [ + "dhash:533:508:16:5:00987494ca4acacc", + "dhash:533:508:96:5:000058a48598e36b", + "dhash:533:508:0:10:1669696969696979" + ], + "postconditions": [], + "tags": [ + "component:browser", + "host_surface:teams", + "entry_state:added", + "precondition_wait_timeout: 120" + ] + }, + { + "step_id": "step_addAndOpenApp_assertReady_c16c2d022_8_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Microsoft Teams app details page for an app whose name starts with ${{var:app_name}} is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_addAndOpenApp_open_c16c2d022_8_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:browser", + "host_surface:teams", + "readiness:chat-ready", + "step_retry_timeout: 180" + ] + }, + { + "step_id": "step_sendTeamsMessage_assertInput_c16c2d022_9_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Teams \"Type a message\" input is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_addAndOpenApp_assertReady_c16c2d022_8_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:browser", + "host_surface:teams", + "entry_state:chat-ready", + "action:send-message", + "step_retry_timeout: 120" + ] + }, + { + "step_id": "step_sendTeamsMessage_focusInput_c16c2d022_9_1", + "agent": "interaction", + "tool": "click", + "parameters": { + "button": "left", + "x": 200, + "y": 712 + }, + "description": "Click the Teams \"Type a message\" input.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_sendTeamsMessage_assertInput_c16c2d022_9_1" + ], + "preconditions": [ + "dhash:200:712:16:5:258c421e0d2c2d1c", + "dhash:200:712:96:5:0020887362000200", + "dhash:200:712:0:10:24b4b08e8e8c81a1" + ], + "postconditions": [], + "tags": [ + "component:browser", + "host_surface:teams", + "entry_state:chat-ready", + "action:send-message" + ] + }, + { + "step_id": "step_sendTeamsMessage_type_c16c2d022_9_1", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "What is the weather in Seattle?" + }, + "description": "Type \"What is the weather in Seattle?\" into the Teams message input.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_sendTeamsMessage_focusInput_c16c2d022_9_1" + ], + "preconditions": [ + "dhash:512:384:0:20:24b4b08e8e8c80a9" + ], + "postconditions": [], + "tags": [ + "component:browser", + "host_surface:teams", + "entry_state:chat-ready", + "action:send-message" + ] + }, + { + "step_id": "step_sendTeamsMessage_send_c16c2d022_9_1", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to send the Teams message.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_sendTeamsMessage_type_c16c2d022_9_1" + ], + "preconditions": [ + "dhash:512:384:0:20:24b4b08e8e8c80b9" + ], + "postconditions": [], + "tags": [ + "component:browser", + "host_surface:teams", + "entry_state:chat-ready", + "action:send-message" + ] + }, + { + "step_id": "step_assertChatReplied_assert_c16c2d022_9_2", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the current assistant turn is complete and contains a non-empty response.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_sendTeamsMessage_send_c16c2d022_9_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:browser", + "action:assert-chat-response", + "expectation:replied", + "step_retry_timeout: 120" + ] + }, + { + "step_id": "step_assertChatContains_assert_c16c2d022_9_3", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the current assistant response contains \"Seattle\".", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_assertChatReplied_assert_c16c2d022_9_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:browser", + "action:assert-chat-response", + "expectation:contains", + "step_retry_timeout: 120" + ] + } + ], + "screenshots": {} +} diff --git a/packages/tests/vscuse/vscode-test-cases/plans/weather-agent--weather-ts-openai-local-teams.json b/packages/tests/vscuse/vscode-test-cases/plans/weather-agent--weather-ts-openai-local-teams.json new file mode 100644 index 00000000000..6ca7ceb93f8 --- /dev/null +++ b/packages/tests/vscuse/vscode-test-cases/plans/weather-agent--weather-ts-openai-local-teams.json @@ -0,0 +1,2278 @@ +{ + "plan_metadata": { + "version": "1.1", + "plan_id": "plan_a86b093a22d5", + "execution_context": { + "delay_between_steps": 1, + "stop_on_error": true, + "precondition_wait_timeout": 30, + "precondition_retry_interval": 1 + }, + "total_steps": 95, + "name": "weather-ts-openai-local-teams", + "description": { + "owner": "", + "workitem": "SCN-CREATE-WEATHER-03", + "other": "" + }, + "execution_order": [ + "step_closeWelcomeOverlay_assertVisible_cc58c0052_1_1", + "step_closeWelcomeOverlay_close_cc58c0052_1_1", + "step_closeWelcomeOverlay_assertReady_cc58c0052_1_1", + "step_executeCommand_open_cc58c0052_1_2", + "step_executeCommand_assertPalette_cc58c0052_1_2", + "step_executeCommand_filter_cc58c0052_1_2", + "step_executeCommand_assertCommand_cc58c0052_1_2", + "step_executeCommand_execute_cc58c0052_1_2", + "step_assertToolkitViewSettled_assert_cc58c0052_1_3", + "step_closeGetStartedEditor_assertActive_cc58c0052_1_4", + "step_closeGetStartedEditor_close_cc58c0052_1_4", + "step_closeGetStartedEditor_assertClosed_cc58c0052_1_4", + "step_executeCommand_open_cc58c0052_1_5", + "step_executeCommand_assertPalette_cc58c0052_1_5", + "step_executeCommand_filter_cc58c0052_1_5", + "step_executeCommand_assertCommand_cc58c0052_1_5", + "step_executeCommand_execute_cc58c0052_1_5", + "step_singleSelect_assertQuestion_cc58c0052_1_6", + "step_singleSelect_assertOptionsLoaded_cc58c0052_1_6", + "step_singleSelect_filter_cc58c0052_1_6", + "step_singleSelect_assertOption_cc58c0052_1_6", + "step_singleSelect_confirm_cc58c0052_1_6", + "step_singleSelect_assertQuestion_cc58c0052_1_7", + "step_singleSelect_assertOptionsLoaded_cc58c0052_1_7", + "step_singleSelect_filter_cc58c0052_1_7", + "step_singleSelect_assertOption_cc58c0052_1_7", + "step_singleSelect_confirm_cc58c0052_1_7", + "step_singleSelect_assertQuestion_cc58c0052_1_8", + "step_singleSelect_assertOptionsLoaded_cc58c0052_1_8", + "step_singleSelect_filter_cc58c0052_1_8", + "step_singleSelect_assertOption_cc58c0052_1_8", + "step_singleSelect_confirm_cc58c0052_1_8", + "step_textInput_assertQuestion_cc58c0052_1_9", + "step_textInput_input_cc58c0052_1_9", + "step_textInput_confirm_cc58c0052_1_9", + "step_singleSelect_assertQuestion_cc58c0052_1_10", + "step_singleSelect_assertOptionsLoaded_cc58c0052_1_10", + "step_singleSelect_filter_cc58c0052_1_10", + "step_singleSelect_assertOption_cc58c0052_1_10", + "step_singleSelect_confirm_cc58c0052_1_10", + "step_confirmOption_assertPrompt_cc58c0052_1_11", + "step_confirmOption_confirm_cc58c0052_1_11", + "step_textInput_assertQuestion_cc58c0052_1_12", + "step_textInput_input_cc58c0052_1_12", + "step_textInput_confirm_cc58c0052_1_12", + "step_assertProjectWindowReady_assert_cc58c0052_1_13", + "step_checkWorkspaceFiles_verify_cc58c0052_2_1", + "step_checkWorkspaceFiles_verify_cc58c0052_2_2", + "step_checkWorkspaceFiles_verify_cc58c0052_2_3", + "step_checkWorkspaceFiles_verify_cc58c0052_2_4", + "step_checkWorkspaceFiles_verify_cc58c0052_2_5", + "step_checkWorkspaceFiles_verify_cc58c0052_2_6", + "step_checkWorkspaceFiles_verify_cc58c0052_2_7", + "step_setLocalEnvironmentVariable_cc58c0052_3_1", + "step_executeCommand_open_cc58c0052_4_1", + "step_executeCommand_assertPalette_cc58c0052_4_1", + "step_executeCommand_filter_cc58c0052_4_1", + "step_executeCommand_assertCommand_cc58c0052_4_1", + "step_executeCommand_execute_cc58c0052_4_1", + "step_signInM365_assertOption_cc58c0052_4_2", + "step_signInM365_selectOption_cc58c0052_4_2", + "step_signInM365_confirmSignIn_cc58c0052_4_2", + "step_signInM365_focusAccount_cc58c0052_4_2", + "step_signInM365_typeAccount_cc58c0052_4_2", + "step_signInM365_next_cc58c0052_4_2", + "step_signInM365_typePassword_cc58c0052_4_2", + "step_signInM365_submit_cc58c0052_4_2", + "step_signInM365_closeBrowser_cc58c0052_4_2", + "step_signInM365_assertReady_cc58c0052_4_2", + "step_executeCommand_open_cc58c0052_5_1", + "step_executeCommand_assertPalette_cc58c0052_5_1", + "step_executeCommand_filter_cc58c0052_5_1", + "step_executeCommand_assertCommand_cc58c0052_5_1", + "step_executeCommand_execute_cc58c0052_5_1", + "step_filterOption_filter_cc58c0052_5_2", + "step_filterOption_assertOption_cc58c0052_5_2", + "step_filterOption_confirm_cc58c0052_5_2", + "step_browserM365PasswordSignIn_assertPassword_cc58c0052_5_3", + "step_browserM365PasswordSignIn_focusPassword_cc58c0052_5_3", + "step_browserM365PasswordSignIn_enterPassword_cc58c0052_5_3", + "step_browserM365PasswordSignIn_submitPassword_cc58c0052_5_3", + "step_browserM365PasswordSignIn_assertStaySignedIn_cc58c0052_5_3", + "step_browserM365PasswordSignIn_confirmStaySignedIn_cc58c0052_5_3", + "step_assertReady_assertReady_cc58c0052_5_4", + "step_addAndOpenApp_assertAdd_cc58c0052_6_1", + "step_addAndOpenApp_add_cc58c0052_6_1", + "step_addAndOpenApp_assertAdded_cc58c0052_6_1", + "step_addAndOpenApp_open_cc58c0052_6_1", + "step_addAndOpenApp_assertReady_cc58c0052_6_1", + "step_sendTeamsMessage_assertInput_cc58c0052_7_1", + "step_sendTeamsMessage_focusInput_cc58c0052_7_1", + "step_sendTeamsMessage_type_cc58c0052_7_1", + "step_sendTeamsMessage_send_cc58c0052_7_1", + "step_assertChatReplied_assert_cc58c0052_7_2", + "step_assertChatContains_assert_cc58c0052_7_3" + ], + "tags": [ + "case_id:weather-ts-openai-local-teams", + "scenario_id:SCN-CREATE-WEATHER-03", + "template_id:weather-agent", + "gate:pr" + ] + }, + "steps": [ + { + "step_id": "step_closeWelcomeOverlay_assertVisible_cc58c0052_1_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the startup \"Welcome to VS Code\" sign-in overlay is visible and its Close button is available.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:initialization", + "initialization:closeWelcomeOverlay", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_closeWelcomeOverlay_close_cc58c0052_1_1", + "agent": "interaction", + "tool": "click", + "parameters": { + "button": "left", + "x": 952, + "y": 128 + }, + "description": "Click the Close button on the startup Welcome sign-in overlay.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_closeWelcomeOverlay_assertVisible_cc58c0052_1_1" + ], + "preconditions": [ + "dhash:952:128:16:5:255266345964665b", + "dhash:952:128:96:5:16100c10100c1404", + "dhash:952:128:0:10:2592eae0f08e8621" + ], + "postconditions": [], + "tags": [ + "component:initialization", + "initialization:closeWelcomeOverlay", + "force_run:true" + ] + }, + { + "step_id": "step_closeWelcomeOverlay_assertReady_cc58c0052_1_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the startup sign-in overlay is no longer visible and the VS Code workbench is ready.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_closeWelcomeOverlay_close_cc58c0052_1_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:initialization", + "initialization:closeWelcomeOverlay", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_open_cc58c0052_1_2", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "f1" + }, + "description": "Press the F1 key to open the Command Palette in Visual Studio Code.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_closeWelcomeOverlay_assertReady_cc58c0052_1_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertPalette_cc58c0052_1_2", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Visual Studio Code Command Palette is visible with a > character in its input box and is ready to accept a command search.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_open_cc58c0052_1_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_filter_cc58c0052_1_2", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Microsoft 365 Agents Toolkit: Focus on Microsoft 365 Agents Toolkit View" + }, + "description": "Type the resolved command title into the active Command Palette.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertPalette_cc58c0052_1_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertCommand_cc58c0052_1_2", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Command Palette input box reads >Microsoft 365 Agents Toolkit: Focus on Microsoft 365 Agents Toolkit View and the highlighted command listed under it is titled Microsoft 365 Agents Toolkit: Focus on Microsoft 365 Agents Toolkit View.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_filter_cc58c0052_1_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_execute_cc58c0052_1_2", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to execute the selected Command Palette command.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertCommand_cc58c0052_1_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_assertToolkitViewSettled_assert_cc58c0052_1_3", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Microsoft 365 Agents Toolkit view is open in the side bar and an editor tab labeled Welcome showing the Build a Declarative Agent walkthrough is open in the editor area.", + "content_refs": [], + "timeout": 120, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_execute_cc58c0052_1_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:initialization", + "initialization:assertToolkitViewSettled", + "step_retry_timeout: 120" + ] + }, + { + "step_id": "step_closeGetStartedEditor_assertActive_cc58c0052_1_4", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the editor tab labeled Welcome showing the Build a Declarative Agent walkthrough is the active editor tab in the Visual Studio Code editor area.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_assertToolkitViewSettled_assert_cc58c0052_1_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:initialization", + "initialization:closeGetStartedEditor", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_closeGetStartedEditor_close_cc58c0052_1_4", + "agent": "interaction", + "tool": "keyboard_shortcut", + "parameters": { + "keys": "ctrl+w" + }, + "description": "Press Ctrl+W to close the Welcome editor tab.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_closeGetStartedEditor_assertActive_cc58c0052_1_4" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:initialization", + "initialization:closeGetStartedEditor" + ] + }, + { + "step_id": "step_closeGetStartedEditor_assertClosed_cc58c0052_1_4", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion no editor tab is open in the Visual Studio Code editor area.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_closeGetStartedEditor_close_cc58c0052_1_4" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:initialization", + "initialization:closeGetStartedEditor", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_open_cc58c0052_1_5", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "f1" + }, + "description": "Press the F1 key to open the Command Palette in Visual Studio Code.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_closeGetStartedEditor_assertClosed_cc58c0052_1_4" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertPalette_cc58c0052_1_5", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Visual Studio Code Command Palette is visible with a > character in its input box and is ready to accept a command search.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_open_cc58c0052_1_5" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_filter_cc58c0052_1_5", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Microsoft 365 Agents: Create New Agent/App" + }, + "description": "Type the resolved command title into the active Command Palette.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertPalette_cc58c0052_1_5" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertCommand_cc58c0052_1_5", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Command Palette input box reads >Microsoft 365 Agents: Create New Agent/App and the highlighted command listed under it is titled Microsoft 365 Agents: Create New Agent/App.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_filter_cc58c0052_1_5" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_execute_cc58c0052_1_5", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to execute the selected Command Palette command.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertCommand_cc58c0052_1_5" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_singleSelect_assertQuestion_cc58c0052_1_6", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the active prompt titled New Project is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_execute_cc58c0052_1_5" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_singleSelect_assertOptionsLoaded_cc58c0052_1_6", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the prompt titled New Project has finished loading and lists at least one selectable option.", + "content_refs": [], + "timeout": 120, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertQuestion_cc58c0052_1_6" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 120" + ] + }, + { + "step_id": "step_singleSelect_filter_cc58c0052_1_6", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Custom Engine Agent" + }, + "description": "Type the resolved option label Custom Engine Agent into the active single-select prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertOptionsLoaded_cc58c0052_1_6" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_singleSelect_assertOption_cc58c0052_1_6", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the option Custom Engine Agent is visible and selectable in the filtered single-select prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_filter_cc58c0052_1_6" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_singleSelect_confirm_cc58c0052_1_6", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to confirm the filtered single-select option.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertOption_cc58c0052_1_6" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_singleSelect_assertQuestion_cc58c0052_1_7", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the active prompt titled App Features Using Microsoft 365 Agents SDK is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_confirm_cc58c0052_1_6" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_singleSelect_assertOptionsLoaded_cc58c0052_1_7", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the prompt titled App Features Using Microsoft 365 Agents SDK has finished loading and lists at least one selectable option.", + "content_refs": [], + "timeout": 120, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertQuestion_cc58c0052_1_7" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 120" + ] + }, + { + "step_id": "step_singleSelect_filter_cc58c0052_1_7", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Weather Agent" + }, + "description": "Type the resolved option label Weather Agent into the active single-select prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertOptionsLoaded_cc58c0052_1_7" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_singleSelect_assertOption_cc58c0052_1_7", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the option Weather Agent is visible and selectable in the filtered single-select prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_filter_cc58c0052_1_7" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_singleSelect_confirm_cc58c0052_1_7", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to confirm the filtered single-select option.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertOption_cc58c0052_1_7" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_singleSelect_assertQuestion_cc58c0052_1_8", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the active prompt titled Service for Large Language Model (LLM) is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_confirm_cc58c0052_1_7" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_singleSelect_assertOptionsLoaded_cc58c0052_1_8", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the prompt titled Service for Large Language Model (LLM) has finished loading and lists at least one selectable option.", + "content_refs": [], + "timeout": 120, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertQuestion_cc58c0052_1_8" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 120" + ] + }, + { + "step_id": "step_singleSelect_filter_cc58c0052_1_8", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "OpenAI" + }, + "description": "Type the resolved option label OpenAI into the active single-select prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertOptionsLoaded_cc58c0052_1_8" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_singleSelect_assertOption_cc58c0052_1_8", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the option OpenAI is visible and selectable in the filtered single-select prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_filter_cc58c0052_1_8" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_singleSelect_confirm_cc58c0052_1_8", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to confirm the filtered single-select option.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertOption_cc58c0052_1_8" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_textInput_assertQuestion_cc58c0052_1_9", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the active prompt titled OpenAI Key is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_confirm_cc58c0052_1_8" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_textInput_input_cc58c0052_1_9", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "${{secret:AZURE_OPENAI_API_KEY}}" + }, + "description": "Type the authored value into the active text prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_assertQuestion_cc58c0052_1_9" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text" + ] + }, + { + "step_id": "step_textInput_confirm_cc58c0052_1_9", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to submit the accepted text input.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_input_cc58c0052_1_9" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text" + ] + }, + { + "step_id": "step_singleSelect_assertQuestion_cc58c0052_1_10", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the active prompt titled Programming Language is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_confirm_cc58c0052_1_9" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_singleSelect_assertOptionsLoaded_cc58c0052_1_10", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the prompt titled Programming Language has finished loading and lists at least one selectable option.", + "content_refs": [], + "timeout": 120, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertQuestion_cc58c0052_1_10" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 120" + ] + }, + { + "step_id": "step_singleSelect_filter_cc58c0052_1_10", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "TypeScript" + }, + "description": "Type the resolved option label TypeScript into the active single-select prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertOptionsLoaded_cc58c0052_1_10" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_singleSelect_assertOption_cc58c0052_1_10", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the option TypeScript is visible and selectable in the filtered single-select prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_filter_cc58c0052_1_10" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_singleSelect_confirm_cc58c0052_1_10", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to confirm the filtered single-select option.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_assertOption_cc58c0052_1_10" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_confirmOption_assertPrompt_cc58c0052_1_11", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the active prompt titled Workspace Folder is visible and the option Default folder is focused.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_singleSelect_confirm_cc58c0052_1_10" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "interaction:key-press", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_confirmOption_confirm_cc58c0052_1_11", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to confirm the Default folder option.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_confirmOption_assertPrompt_cc58c0052_1_11" + ], + "preconditions": [ + "dhash:364:74:16:5:08056a9a5d5516b6", + "dhash:364:74:96:5:44232286e2168e01", + "dhash:364:74:0:10:f0b09494b2717075" + ], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "interaction:key-press" + ] + }, + { + "step_id": "step_textInput_assertQuestion_cc58c0052_1_12", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the active prompt titled Application Name is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_confirmOption_confirm_cc58c0052_1_11" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_textInput_input_cc58c0052_1_12", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "${{var:app_name:vscuse_app_#####}}" + }, + "description": "Type the authored value into the active text prompt.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_assertQuestion_cc58c0052_1_12" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text" + ] + }, + { + "step_id": "step_textInput_confirm_cc58c0052_1_12", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to submit the accepted text input.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_input_cc58c0052_1_12" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:text" + ] + }, + { + "step_id": "step_assertProjectWindowReady_assert_cc58c0052_1_13", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Preview README.md editor tab is open in Visual Studio Code.", + "content_refs": [], + "timeout": 60, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_textInput_confirm_cc58c0052_1_12" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:initialization", + "initialization:assertProjectWindowReady", + "step_retry_timeout: 60" + ] + }, + { + "step_id": "step_checkWorkspaceFiles_verify_cc58c0052_2_1", + "agent": "code", + "tool": "", + "parameters": { + "sample": "=== Generated Script ===\nLanguage: bash\n\n```bash\nset -euo pipefail\nPROJECT_DIR=\"/home/vscode/AgentsToolkitProjects/${{var:app_name}}\" ASSERTIONS_B64=\"W3sicGF0aCI6Im0zNjVhZ2VudHMueW1sIiwiZXhpc3RzIjp0cnVlLCJjb250YWlucyI6WyJ2ZXJzaW9uOiB2MS4xMSIsInByb3Zpc2lvbjoiLCJkZXBsb3k6Il0sIm5vdENvbnRhaW5zIjpbIm9hdXRoL3JlZ2lzdGVyIiwiZGNyL3JlZ2lzdGVyIl19XQ==\" python3 - <<'PY'\nimport base64\nimport json\nimport os\nfrom pathlib import Path\n\nproject = Path(os.environ[\"PROJECT_DIR\"]).resolve()\nassertions = json.loads(base64.b64decode(os.environ[\"ASSERTIONS_B64\"]).decode(\"utf-8\"))\nfor assertion in assertions:\n target = (project / assertion[\"path\"]).resolve()\n try:\n target.relative_to(project)\n except ValueError as error:\n raise AssertionError(\"File assertion escaped the project directory\") from error\n exists = target.is_file()\n if exists != assertion[\"exists\"]:\n raise AssertionError(f\"Unexpected file existence for {assertion['path']}\")\n if not exists:\n continue\n content = target.read_text(encoding=\"utf-8\")\n for expected in assertion.get(\"contains\", []):\n expected = expected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if expected not in content:\n raise AssertionError(f\"Expected content is absent from {assertion['path']}\")\n for unexpected in assertion.get(\"notContains\", []):\n unexpected = unexpected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if unexpected in content:\n raise AssertionError(f\"Unexpected content is present in {assertion['path']}\")\nPY\n```" + }, + "description": "@code verify the authored workspace file existence and content assertions without logging file contents.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_assertProjectWindowReady_assert_cc58c0052_1_13" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:checks", + "assertion:file", + "step_retry_timeout:120" + ] + }, + { + "step_id": "step_checkWorkspaceFiles_verify_cc58c0052_2_2", + "agent": "code", + "tool": "", + "parameters": { + "sample": "=== Generated Script ===\nLanguage: bash\n\n```bash\nset -euo pipefail\nPROJECT_DIR=\"/home/vscode/AgentsToolkitProjects/${{var:app_name}}\" ASSERTIONS_B64=\"W3sicGF0aCI6InNyYy9pbmRleC50cyIsImV4aXN0cyI6dHJ1ZSwiY29udGFpbnMiOltdLCJub3RDb250YWlucyI6W119XQ==\" python3 - <<'PY'\nimport base64\nimport json\nimport os\nfrom pathlib import Path\n\nproject = Path(os.environ[\"PROJECT_DIR\"]).resolve()\nassertions = json.loads(base64.b64decode(os.environ[\"ASSERTIONS_B64\"]).decode(\"utf-8\"))\nfor assertion in assertions:\n target = (project / assertion[\"path\"]).resolve()\n try:\n target.relative_to(project)\n except ValueError as error:\n raise AssertionError(\"File assertion escaped the project directory\") from error\n exists = target.is_file()\n if exists != assertion[\"exists\"]:\n raise AssertionError(f\"Unexpected file existence for {assertion['path']}\")\n if not exists:\n continue\n content = target.read_text(encoding=\"utf-8\")\n for expected in assertion.get(\"contains\", []):\n expected = expected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if expected not in content:\n raise AssertionError(f\"Expected content is absent from {assertion['path']}\")\n for unexpected in assertion.get(\"notContains\", []):\n unexpected = unexpected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if unexpected in content:\n raise AssertionError(f\"Unexpected content is present in {assertion['path']}\")\nPY\n```" + }, + "description": "@code verify the authored workspace file existence and content assertions without logging file contents.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_checkWorkspaceFiles_verify_cc58c0052_2_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:checks", + "assertion:file", + "step_retry_timeout:120" + ] + }, + { + "step_id": "step_checkWorkspaceFiles_verify_cc58c0052_2_3", + "agent": "code", + "tool": "", + "parameters": { + "sample": "=== Generated Script ===\nLanguage: bash\n\n```bash\nset -euo pipefail\nPROJECT_DIR=\"/home/vscode/AgentsToolkitProjects/${{var:app_name}}\" ASSERTIONS_B64=\"W3sicGF0aCI6InNyYy9hZ2VudC50cyIsImV4aXN0cyI6dHJ1ZSwiY29udGFpbnMiOltdLCJub3RDb250YWlucyI6W119XQ==\" python3 - <<'PY'\nimport base64\nimport json\nimport os\nfrom pathlib import Path\n\nproject = Path(os.environ[\"PROJECT_DIR\"]).resolve()\nassertions = json.loads(base64.b64decode(os.environ[\"ASSERTIONS_B64\"]).decode(\"utf-8\"))\nfor assertion in assertions:\n target = (project / assertion[\"path\"]).resolve()\n try:\n target.relative_to(project)\n except ValueError as error:\n raise AssertionError(\"File assertion escaped the project directory\") from error\n exists = target.is_file()\n if exists != assertion[\"exists\"]:\n raise AssertionError(f\"Unexpected file existence for {assertion['path']}\")\n if not exists:\n continue\n content = target.read_text(encoding=\"utf-8\")\n for expected in assertion.get(\"contains\", []):\n expected = expected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if expected not in content:\n raise AssertionError(f\"Expected content is absent from {assertion['path']}\")\n for unexpected in assertion.get(\"notContains\", []):\n unexpected = unexpected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if unexpected in content:\n raise AssertionError(f\"Unexpected content is present in {assertion['path']}\")\nPY\n```" + }, + "description": "@code verify the authored workspace file existence and content assertions without logging file contents.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_checkWorkspaceFiles_verify_cc58c0052_2_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:checks", + "assertion:file", + "step_retry_timeout:120" + ] + }, + { + "step_id": "step_checkWorkspaceFiles_verify_cc58c0052_2_4", + "agent": "code", + "tool": "", + "parameters": { + "sample": "=== Generated Script ===\nLanguage: bash\n\n```bash\nset -euo pipefail\nPROJECT_DIR=\"/home/vscode/AgentsToolkitProjects/${{var:app_name}}\" ASSERTIONS_B64=\"W3sicGF0aCI6InNyYy90b29scy9nZXRXZWF0aGVyVG9vbC50cyIsImV4aXN0cyI6dHJ1ZSwiY29udGFpbnMiOltdLCJub3RDb250YWlucyI6W119XQ==\" python3 - <<'PY'\nimport base64\nimport json\nimport os\nfrom pathlib import Path\n\nproject = Path(os.environ[\"PROJECT_DIR\"]).resolve()\nassertions = json.loads(base64.b64decode(os.environ[\"ASSERTIONS_B64\"]).decode(\"utf-8\"))\nfor assertion in assertions:\n target = (project / assertion[\"path\"]).resolve()\n try:\n target.relative_to(project)\n except ValueError as error:\n raise AssertionError(\"File assertion escaped the project directory\") from error\n exists = target.is_file()\n if exists != assertion[\"exists\"]:\n raise AssertionError(f\"Unexpected file existence for {assertion['path']}\")\n if not exists:\n continue\n content = target.read_text(encoding=\"utf-8\")\n for expected in assertion.get(\"contains\", []):\n expected = expected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if expected not in content:\n raise AssertionError(f\"Expected content is absent from {assertion['path']}\")\n for unexpected in assertion.get(\"notContains\", []):\n unexpected = unexpected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if unexpected in content:\n raise AssertionError(f\"Unexpected content is present in {assertion['path']}\")\nPY\n```" + }, + "description": "@code verify the authored workspace file existence and content assertions without logging file contents.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_checkWorkspaceFiles_verify_cc58c0052_2_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:checks", + "assertion:file", + "step_retry_timeout:120" + ] + }, + { + "step_id": "step_checkWorkspaceFiles_verify_cc58c0052_2_5", + "agent": "code", + "tool": "", + "parameters": { + "sample": "=== Generated Script ===\nLanguage: bash\n\n```bash\nset -euo pipefail\nPROJECT_DIR=\"/home/vscode/AgentsToolkitProjects/${{var:app_name}}\" ASSERTIONS_B64=\"W3sicGF0aCI6InBhY2thZ2UuanNvbiIsImV4aXN0cyI6dHJ1ZSwiY29udGFpbnMiOltdLCJub3RDb250YWlucyI6W119XQ==\" python3 - <<'PY'\nimport base64\nimport json\nimport os\nfrom pathlib import Path\n\nproject = Path(os.environ[\"PROJECT_DIR\"]).resolve()\nassertions = json.loads(base64.b64decode(os.environ[\"ASSERTIONS_B64\"]).decode(\"utf-8\"))\nfor assertion in assertions:\n target = (project / assertion[\"path\"]).resolve()\n try:\n target.relative_to(project)\n except ValueError as error:\n raise AssertionError(\"File assertion escaped the project directory\") from error\n exists = target.is_file()\n if exists != assertion[\"exists\"]:\n raise AssertionError(f\"Unexpected file existence for {assertion['path']}\")\n if not exists:\n continue\n content = target.read_text(encoding=\"utf-8\")\n for expected in assertion.get(\"contains\", []):\n expected = expected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if expected not in content:\n raise AssertionError(f\"Expected content is absent from {assertion['path']}\")\n for unexpected in assertion.get(\"notContains\", []):\n unexpected = unexpected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if unexpected in content:\n raise AssertionError(f\"Unexpected content is present in {assertion['path']}\")\nPY\n```" + }, + "description": "@code verify the authored workspace file existence and content assertions without logging file contents.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_checkWorkspaceFiles_verify_cc58c0052_2_4" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:checks", + "assertion:file", + "step_retry_timeout:120" + ] + }, + { + "step_id": "step_checkWorkspaceFiles_verify_cc58c0052_2_6", + "agent": "code", + "tool": "", + "parameters": { + "sample": "=== Generated Script ===\nLanguage: bash\n\n```bash\nset -euo pipefail\nPROJECT_DIR=\"/home/vscode/AgentsToolkitProjects/${{var:app_name}}\" ASSERTIONS_B64=\"W3sicGF0aCI6ImluZnJhL2F6dXJlLmJpY2VwIiwiZXhpc3RzIjp0cnVlLCJjb250YWlucyI6W10sIm5vdENvbnRhaW5zIjpbXX1d\" python3 - <<'PY'\nimport base64\nimport json\nimport os\nfrom pathlib import Path\n\nproject = Path(os.environ[\"PROJECT_DIR\"]).resolve()\nassertions = json.loads(base64.b64decode(os.environ[\"ASSERTIONS_B64\"]).decode(\"utf-8\"))\nfor assertion in assertions:\n target = (project / assertion[\"path\"]).resolve()\n try:\n target.relative_to(project)\n except ValueError as error:\n raise AssertionError(\"File assertion escaped the project directory\") from error\n exists = target.is_file()\n if exists != assertion[\"exists\"]:\n raise AssertionError(f\"Unexpected file existence for {assertion['path']}\")\n if not exists:\n continue\n content = target.read_text(encoding=\"utf-8\")\n for expected in assertion.get(\"contains\", []):\n expected = expected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if expected not in content:\n raise AssertionError(f\"Expected content is absent from {assertion['path']}\")\n for unexpected in assertion.get(\"notContains\", []):\n unexpected = unexpected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if unexpected in content:\n raise AssertionError(f\"Unexpected content is present in {assertion['path']}\")\nPY\n```" + }, + "description": "@code verify the authored workspace file existence and content assertions without logging file contents.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_checkWorkspaceFiles_verify_cc58c0052_2_5" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:checks", + "assertion:file", + "step_retry_timeout:120" + ] + }, + { + "step_id": "step_checkWorkspaceFiles_verify_cc58c0052_2_7", + "agent": "code", + "tool": "", + "parameters": { + "sample": "=== Generated Script ===\nLanguage: bash\n\n```bash\nset -euo pipefail\nPROJECT_DIR=\"/home/vscode/AgentsToolkitProjects/${{var:app_name}}\" ASSERTIONS_B64=\"W3sicGF0aCI6ImFwcFBhY2thZ2UvbWFuaWZlc3QuanNvbiIsImV4aXN0cyI6dHJ1ZSwiY29udGFpbnMiOlsiXCJtYW5pZmVzdFZlcnNpb25cIjogXCIxLjI5XCIiXSwibm90Q29udGFpbnMiOltdfV0=\" python3 - <<'PY'\nimport base64\nimport json\nimport os\nfrom pathlib import Path\n\nproject = Path(os.environ[\"PROJECT_DIR\"]).resolve()\nassertions = json.loads(base64.b64decode(os.environ[\"ASSERTIONS_B64\"]).decode(\"utf-8\"))\nfor assertion in assertions:\n target = (project / assertion[\"path\"]).resolve()\n try:\n target.relative_to(project)\n except ValueError as error:\n raise AssertionError(\"File assertion escaped the project directory\") from error\n exists = target.is_file()\n if exists != assertion[\"exists\"]:\n raise AssertionError(f\"Unexpected file existence for {assertion['path']}\")\n if not exists:\n continue\n content = target.read_text(encoding=\"utf-8\")\n for expected in assertion.get(\"contains\", []):\n expected = expected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if expected not in content:\n raise AssertionError(f\"Expected content is absent from {assertion['path']}\")\n for unexpected in assertion.get(\"notContains\", []):\n unexpected = unexpected.replace(\"__VSCUSE_APP_NAME__\", project.name)\n if unexpected in content:\n raise AssertionError(f\"Unexpected content is present in {assertion['path']}\")\nPY\n```" + }, + "description": "@code verify the authored workspace file existence and content assertions without logging file contents.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_checkWorkspaceFiles_verify_cc58c0052_2_6" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:checks", + "assertion:file", + "step_retry_timeout:120" + ] + }, + { + "step_id": "step_setLocalEnvironmentVariable_cc58c0052_3_1", + "agent": "code", + "tool": "", + "parameters": { + "sample": "=== Generated Script ===\nLanguage: bash\n\n```bash\nset -euo pipefail\nPROJECT_DIR=\"/home/vscode/AgentsToolkitProjects/${{var:app_name}}\" VARIABLE_NAME=\"OPENAI_BASE_URL\" VARIABLE_VALUE=\"${{env:AZURE_OPENAI_ENDPOINT}}/openai/v1\" python3 - <<'PY'\nimport os\nfrom pathlib import Path\n\nlifecycle = Path(os.environ[\"PROJECT_DIR\"]).resolve() / \"m365agents.local.yml\"\nname = os.environ[\"VARIABLE_NAME\"]\nvalue = os.environ[\"VARIABLE_VALUE\"]\nlines = lifecycle.read_text(encoding=\"utf-8\").splitlines()\ntarget = next((index for index, line in enumerate(lines) if line.strip() == \"target: ./.localConfigs\"), None)\nif target is None:\n raise AssertionError(\"The local lifecycle writes no .localConfigs environment file\")\nheader = next((index for index in range(target + 1, len(lines)) if lines[index].strip() == \"envs:\"), None)\nif header is None:\n raise AssertionError(\"The .localConfigs environment file declares no envs mapping\")\nindent = \" \" * (len(lines[header]) - len(lines[header].lstrip()) + 2)\nend = header + 1\nwhile end < len(lines) and lines[end].startswith(indent) and lines[end].strip():\n end += 1\nkept = [line for line in lines[header + 1 : end] if not line.strip().startswith(name + \":\")]\nlines[header + 1 : end] = kept + [indent + name + \": \" + value]\nlifecycle.write_text(\"\\n\".join(lines) + \"\\n\", encoding=\"utf-8\")\nPY\n```" + }, + "description": "@code add the named variable to the envs mapping the local lifecycle writes into .localConfigs, without logging its value.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_checkWorkspaceFiles_verify_cc58c0052_2_7" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:workspace", + "operation:local-environment", + "step_retry_timeout: 120" + ] + }, + { + "step_id": "step_executeCommand_open_cc58c0052_4_1", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "f1" + }, + "description": "Press the F1 key to open the Command Palette in Visual Studio Code.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_setLocalEnvironmentVariable_cc58c0052_3_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertPalette_cc58c0052_4_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Visual Studio Code Command Palette is visible with a > character in its input box and is ready to accept a command search.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_open_cc58c0052_4_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_filter_cc58c0052_4_1", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "View: Show Microsoft 365 Agents Toolkit" + }, + "description": "Type the resolved command title into the active Command Palette.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertPalette_cc58c0052_4_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertCommand_cc58c0052_4_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Command Palette input box reads >View: Show Microsoft 365 Agents Toolkit and the highlighted command listed under it is titled View: Show Microsoft 365 Agents Toolkit.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_filter_cc58c0052_4_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_execute_cc58c0052_4_1", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to execute the selected Command Palette command.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertCommand_cc58c0052_4_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_signInM365_assertOption_cc58c0052_4_2", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the ACCOUNTS section of the side bar lists an entry whose label begins with Sign in to Microsoft.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_execute_cc58c0052_4_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:authentication", + "account:m365", + "entry_state:toolkit-side-bar-visible", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_signInM365_selectOption_cc58c0052_4_2", + "agent": "interaction", + "tool": "click", + "parameters": { + "button": "left", + "x": 213, + "y": 102 + }, + "description": "Click the entry whose label begins with \"Sign in to Microsoft\" in the ACCOUNTS section of the side bar.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInM365_assertOption_cc58c0052_4_2" + ], + "preconditions": [ + "dhash:213:102:16:5:9c63d67674d4c718", + "dhash:213:102:96:5:8c512758d92c2cce", + "dhash:213:102:0:10:92c86223a3622421" + ], + "postconditions": [], + "tags": [ + "component:authentication", + "account:m365" + ] + }, + { + "step_id": "step_signInM365_confirmSignIn_cc58c0052_4_2", + "agent": "interaction", + "tool": "click", + "parameters": { + "button": "left", + "x": 762, + "y": 97 + }, + "description": "Click the \"Sign in\" button within the Microsoft 365 developer sandbox modal.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInM365_selectOption_cc58c0052_4_2" + ], + "preconditions": [ + "dhash:762:97:16:5:24b1a72ba9aba343", + "dhash:762:97:96:5:0008304b0f344900", + "dhash:762:97:0:10:9c68332223232421" + ], + "postconditions": [], + "tags": [ + "component:authentication", + "account:m365" + ] + }, + { + "step_id": "step_signInM365_focusAccount_cc58c0052_4_2", + "agent": "interaction", + "tool": "click", + "parameters": { + "button": "left", + "x": 369, + "y": 350 + }, + "description": "Click on the \"Email or phone\" input field in the Microsoft Sign-in form on the login.microsoftonline.com webpage to focus the cursor for credential entry.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInM365_confirmSignIn_cc58c0052_4_2" + ], + "preconditions": [ + "dhash:369:350:16:5:2113d25252525221", + "dhash:369:350:96:5:0919006d19220812", + "dhash:369:350:0:10:1b88d0d1e5e6dae4" + ], + "postconditions": [], + "tags": [ + "component:authentication", + "account:m365", + "precondition_wait_timeout: 60" + ] + }, + { + "step_id": "step_signInM365_typeAccount_cc58c0052_4_2", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "${{env:M365_ACCOUNT_NAME}}" + }, + "description": "Enter the resolved Microsoft 365 account name into the email or username input field on the Microsoft Sign in page.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInM365_focusAccount_cc58c0052_4_2" + ], + "preconditions": [ + "dhash:512:384:0:20:1b28f0d9e7e6dae4" + ], + "postconditions": [], + "tags": [ + "component:authentication", + "account:m365", + "delay: 3" + ] + }, + { + "step_id": "step_signInM365_next_cc58c0052_4_2", + "agent": "interaction", + "tool": "click", + "parameters": { + "button": "left", + "x": 629, + "y": 484 + }, + "description": "Click the blue \"Next\" button on the Microsoft sign-in page, confirming the entered email address for login.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInM365_typeAccount_cc58c0052_4_2" + ], + "preconditions": [ + "dhash:629:484:16:5:23248c4b6c24d32c", + "dhash:629:484:96:5:00004eb131860000", + "dhash:629:484:0:10:1b28f0d9e7e6dae4" + ], + "postconditions": [], + "tags": [ + "component:authentication", + "account:m365", + "delay:3" + ] + }, + { + "step_id": "step_signInM365_typePassword_cc58c0052_4_2", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "${{secret:M365_ACCOUNT_PASSWORD}}" + }, + "description": "Type the resolved Microsoft 365 account password into the Password field on the Microsoft login page.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInM365_next_cc58c0052_4_2" + ], + "preconditions": [ + "dhash:512:384:0:20:1b08f0d9d1e6e6e4" + ], + "postconditions": [], + "tags": [ + "component:authentication", + "account:m365", + "delay: 3" + ] + }, + { + "step_id": "step_signInM365_submit_cc58c0052_4_2", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to submit the Microsoft 365 login form from the password entry screen.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInM365_typePassword_cc58c0052_4_2" + ], + "preconditions": [ + "dhash:512:384:0:20:1b08f0d9d1e6e6e4" + ], + "postconditions": [], + "tags": [ + "component:authentication", + "account:m365", + "delay: 3" + ] + }, + { + "step_id": "step_signInM365_closeBrowser_cc58c0052_4_2", + "agent": "interaction", + "tool": "click", + "parameters": { + "button": "left", + "x": 1004, + "y": 19 + }, + "description": "Click the \"Close\" button (red cross icon) in the browser tab bar to close the \"M365 Account - Sign In\" page.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInM365_submit_cc58c0052_4_2" + ], + "preconditions": [ + "dhash:1004:19:16:5:aac833964c9633cc", + "dhash:1004:19:96:5:d2232323c200e6e6", + "dhash:1004:19:0:10:0b01410169414141" + ], + "postconditions": [], + "tags": [ + "component:authentication", + "account:m365", + "delay: 3" + ] + }, + { + "step_id": "step_signInM365_assertReady_cc58c0052_4_2", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion there's ${{env:M365_ACCOUNT_NAME}} in the \"ACCOUNTS\" section", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInM365_closeBrowser_cc58c0052_4_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:authentication", + "account:m365", + "readiness:account-visible", + "step_retry_timeout: 180" + ] + }, + { + "step_id": "step_executeCommand_open_cc58c0052_5_1", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "f1" + }, + "description": "Press the F1 key to open the Command Palette in Visual Studio Code.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInM365_assertReady_cc58c0052_4_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertPalette_cc58c0052_5_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Visual Studio Code Command Palette is visible with a > character in its input box and is ready to accept a command search.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_open_cc58c0052_5_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_filter_cc58c0052_5_1", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Debug: Select and Start Debugging" + }, + "description": "Type the resolved command title into the active Command Palette.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertPalette_cc58c0052_5_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertCommand_cc58c0052_5_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Command Palette input box reads >Debug: Select and Start Debugging and the highlighted command listed under it is titled Debug: Select and Start Debugging.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_filter_cc58c0052_5_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_execute_cc58c0052_5_1", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to execute the selected Command Palette command.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertCommand_cc58c0052_5_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_filterOption_filter_cc58c0052_5_2", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Debug in Teams (Chrome)" + }, + "description": "Type the resolved option label into the active option picker.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_execute_cc58c0052_5_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_filterOption_assertOption_cc58c0052_5_2", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the option Debug in Teams (Chrome) is visible and selectable in the filtered option picker.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_filterOption_filter_cc58c0052_5_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_filterOption_confirm_cc58c0052_5_2", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to confirm the filtered option.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_filterOption_assertOption_cc58c0052_5_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:quick-input", + "answer_type:singleSelect" + ] + }, + { + "step_id": "step_browserM365PasswordSignIn_assertPassword_cc58c0052_5_3", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Microsoft sign-in page in Chrome names ${{env:M365_ACCOUNT_NAME}} and asks for that account's password.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_filterOption_confirm_cc58c0052_5_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:authentication", + "surface:browser", + "step_retry_timeout: 300" + ] + }, + { + "step_id": "step_browserM365PasswordSignIn_focusPassword_cc58c0052_5_3", + "agent": "interaction", + "tool": "click", + "parameters": { + "button": "left", + "x": 400, + "y": 405 + }, + "description": "Click the password input on the Microsoft sign-in page to move focus out of the browser address bar.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_browserM365PasswordSignIn_assertPassword_cc58c0052_5_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:authentication", + "surface:browser" + ] + }, + { + "step_id": "step_browserM365PasswordSignIn_enterPassword_cc58c0052_5_3", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "${{secret:M365_ACCOUNT_PASSWORD}}" + }, + "description": "Enter the registered Microsoft 365 password in the focused password input of the browser sign-in form.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_browserM365PasswordSignIn_focusPassword_cc58c0052_5_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:authentication", + "surface:browser" + ] + }, + { + "step_id": "step_browserM365PasswordSignIn_submitPassword_cc58c0052_5_3", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to submit the Microsoft 365 password.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_browserM365PasswordSignIn_enterPassword_cc58c0052_5_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:authentication", + "surface:browser" + ] + }, + { + "step_id": "step_browserM365PasswordSignIn_assertStaySignedIn_cc58c0052_5_3", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Microsoft Stay signed in question is visible with Yes focused.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_browserM365PasswordSignIn_submitPassword_cc58c0052_5_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:authentication", + "surface:browser", + "step_retry_timeout: 120" + ] + }, + { + "step_id": "step_browserM365PasswordSignIn_confirmStaySignedIn_cc58c0052_5_3", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to confirm staying signed in.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_browserM365PasswordSignIn_assertStaySignedIn_cc58c0052_5_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:authentication", + "surface:browser", + "delay: 30" + ] + }, + { + "step_id": "step_assertReady_assertReady_cc58c0052_5_4", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Microsoft Teams app details page for an app whose name starts with ${{var:app_name}} is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_browserM365PasswordSignIn_confirmStaySignedIn_cc58c0052_5_3" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:browser", + "action:assert-ready", + "step_retry_timeout: 180" + ] + }, + { + "step_id": "step_addAndOpenApp_assertAdd_cc58c0052_6_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the blue \"Add\" button exists.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_assertReady_assertReady_cc58c0052_5_4" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:browser", + "host_surface:teams", + "entry_state:add", + "step_retry_timeout: 180" + ] + }, + { + "step_id": "step_addAndOpenApp_add_cc58c0052_6_1", + "agent": "interaction", + "tool": "click", + "parameters": { + "button": "left", + "x": 288, + "y": 214 + }, + "description": "Click Add on the app details popup within the Microsoft Teams interface.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_addAndOpenApp_assertAdd_cc58c0052_6_1" + ], + "preconditions": [ + "dhash:288:214:16:5:05100a0511030b12", + "dhash:288:214:96:5:2616011c1c01005b", + "dhash:288:214:0:10:00b4b0d8f8fcf0d8" + ], + "postconditions": [], + "tags": [ + "component:browser", + "host_surface:teams", + "entry_state:add" + ] + }, + { + "step_id": "step_addAndOpenApp_assertAdded_cc58c0052_6_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the \"Added successfully!\" dialog and its Open button are visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_addAndOpenApp_add_cc58c0052_6_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:browser", + "host_surface:teams", + "entry_state:added", + "step_retry_timeout: 180" + ] + }, + { + "step_id": "step_addAndOpenApp_open_cc58c0052_6_1", + "agent": "interaction", + "tool": "click", + "parameters": { + "button": "left", + "x": 533, + "y": 508 + }, + "description": "Click Open in the Microsoft Teams Added successfully dialog.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_addAndOpenApp_assertAdded_cc58c0052_6_1" + ], + "preconditions": [ + "dhash:533:508:16:5:00987494ca4acacc", + "dhash:533:508:96:5:000058a48598e36b", + "dhash:533:508:0:10:1669696969696979" + ], + "postconditions": [], + "tags": [ + "component:browser", + "host_surface:teams", + "entry_state:added", + "precondition_wait_timeout: 120" + ] + }, + { + "step_id": "step_addAndOpenApp_assertReady_cc58c0052_6_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Microsoft Teams app details page for an app whose name starts with ${{var:app_name}} is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_addAndOpenApp_open_cc58c0052_6_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:browser", + "host_surface:teams", + "readiness:chat-ready", + "step_retry_timeout: 180" + ] + }, + { + "step_id": "step_sendTeamsMessage_assertInput_cc58c0052_7_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Teams \"Type a message\" input is visible.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_addAndOpenApp_assertReady_cc58c0052_6_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:browser", + "host_surface:teams", + "entry_state:chat-ready", + "action:send-message", + "step_retry_timeout: 120" + ] + }, + { + "step_id": "step_sendTeamsMessage_focusInput_cc58c0052_7_1", + "agent": "interaction", + "tool": "click", + "parameters": { + "button": "left", + "x": 200, + "y": 712 + }, + "description": "Click the Teams \"Type a message\" input.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_sendTeamsMessage_assertInput_cc58c0052_7_1" + ], + "preconditions": [ + "dhash:200:712:16:5:258c421e0d2c2d1c", + "dhash:200:712:96:5:0020887362000200", + "dhash:200:712:0:10:24b4b08e8e8c81a1" + ], + "postconditions": [], + "tags": [ + "component:browser", + "host_surface:teams", + "entry_state:chat-ready", + "action:send-message" + ] + }, + { + "step_id": "step_sendTeamsMessage_type_cc58c0052_7_1", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "What is the weather in Seattle?" + }, + "description": "Type \"What is the weather in Seattle?\" into the Teams message input.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_sendTeamsMessage_focusInput_cc58c0052_7_1" + ], + "preconditions": [ + "dhash:512:384:0:20:24b4b08e8e8c80a9" + ], + "postconditions": [], + "tags": [ + "component:browser", + "host_surface:teams", + "entry_state:chat-ready", + "action:send-message" + ] + }, + { + "step_id": "step_sendTeamsMessage_send_cc58c0052_7_1", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to send the Teams message.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_sendTeamsMessage_type_cc58c0052_7_1" + ], + "preconditions": [ + "dhash:512:384:0:20:24b4b08e8e8c80b9" + ], + "postconditions": [], + "tags": [ + "component:browser", + "host_surface:teams", + "entry_state:chat-ready", + "action:send-message" + ] + }, + { + "step_id": "step_assertChatReplied_assert_cc58c0052_7_2", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the current assistant turn is complete and contains a non-empty response.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_sendTeamsMessage_send_cc58c0052_7_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:browser", + "action:assert-chat-response", + "expectation:replied", + "step_retry_timeout: 120" + ] + }, + { + "step_id": "step_assertChatContains_assert_cc58c0052_7_3", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the current assistant response contains \"Seattle\".", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_assertChatReplied_assert_cc58c0052_7_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:browser", + "action:assert-chat-response", + "expectation:contains", + "step_retry_timeout: 120" + ] + } + ], + "screenshots": {} +} diff --git a/packages/tests/vscuse/vscode-test-cases/plans/weather-agent--weather-ts-azure-openai-remote-preview.json b/packages/tests/vscuse/vscode-test-cases/plans/weather-agent--weather-ts-openai-remote-teams.json similarity index 73% rename from packages/tests/vscuse/vscode-test-cases/plans/weather-agent--weather-ts-azure-openai-remote-preview.json rename to packages/tests/vscuse/vscode-test-cases/plans/weather-agent--weather-ts-openai-remote-teams.json index 67dffefbae4..0b5b4f1b9f4 100644 --- a/packages/tests/vscuse/vscode-test-cases/plans/weather-agent--weather-ts-azure-openai-remote-preview.json +++ b/packages/tests/vscuse/vscode-test-cases/plans/weather-agent--weather-ts-openai-remote-teams.json @@ -1,181 +1,185 @@ { "plan_metadata": { "version": "1.1", - "plan_id": "plan_7374fcb31c11", + "plan_id": "plan_c7e9339d5b4c", "execution_context": { "delay_between_steps": 1, "stop_on_error": true, "precondition_wait_timeout": 30, "precondition_retry_interval": 1 }, - "total_steps": 149, - "name": "weather-ts-azure-openai-remote-preview", + "total_steps": 153, + "name": "weather-ts-openai-remote-teams", "description": { "owner": "", - "workitem": "SCN-CREATE-WEATHER-01", + "workitem": "SCN-CREATE-WEATHER-03", "other": "" }, "execution_order": [ - "step_closeWelcomeOverlay_assertVisible_cb4a8be87_1_1", - "step_closeWelcomeOverlay_close_cb4a8be87_1_1", - "step_closeWelcomeOverlay_assertReady_cb4a8be87_1_1", - "step_executeCommand_open_cb4a8be87_1_2", - "step_executeCommand_assertPalette_cb4a8be87_1_2", - "step_executeCommand_filter_cb4a8be87_1_2", - "step_executeCommand_assertCommand_cb4a8be87_1_2", - "step_executeCommand_execute_cb4a8be87_1_2", - "step_assertToolkitViewSettled_assert_cb4a8be87_1_3", - "step_closeGetStartedEditor_assertActive_cb4a8be87_1_4", - "step_closeGetStartedEditor_close_cb4a8be87_1_4", - "step_closeGetStartedEditor_assertClosed_cb4a8be87_1_4", - "step_executeCommand_open_cb4a8be87_1_5", - "step_executeCommand_assertPalette_cb4a8be87_1_5", - "step_executeCommand_filter_cb4a8be87_1_5", - "step_executeCommand_assertCommand_cb4a8be87_1_5", - "step_executeCommand_execute_cb4a8be87_1_5", - "step_singleSelect_assertQuestion_cb4a8be87_1_6", - "step_singleSelect_assertOptionsLoaded_cb4a8be87_1_6", - "step_singleSelect_filter_cb4a8be87_1_6", - "step_singleSelect_assertOption_cb4a8be87_1_6", - "step_singleSelect_confirm_cb4a8be87_1_6", - "step_singleSelect_assertQuestion_cb4a8be87_1_7", - "step_singleSelect_assertOptionsLoaded_cb4a8be87_1_7", - "step_singleSelect_filter_cb4a8be87_1_7", - "step_singleSelect_assertOption_cb4a8be87_1_7", - "step_singleSelect_confirm_cb4a8be87_1_7", - "step_singleSelect_assertQuestion_cb4a8be87_1_8", - "step_singleSelect_assertOptionsLoaded_cb4a8be87_1_8", - "step_singleSelect_filter_cb4a8be87_1_8", - "step_singleSelect_assertOption_cb4a8be87_1_8", - "step_singleSelect_confirm_cb4a8be87_1_8", - "step_textInput_assertQuestion_cb4a8be87_1_9", - "step_textInput_input_cb4a8be87_1_9", - "step_textInput_confirm_cb4a8be87_1_9", - "step_textInput_assertQuestion_cb4a8be87_1_10", - "step_textInput_input_cb4a8be87_1_10", - "step_textInput_confirm_cb4a8be87_1_10", - "step_textInput_assertQuestion_cb4a8be87_1_11", - "step_textInput_input_cb4a8be87_1_11", - "step_textInput_confirm_cb4a8be87_1_11", - "step_singleSelect_assertQuestion_cb4a8be87_1_12", - "step_singleSelect_assertOptionsLoaded_cb4a8be87_1_12", - "step_singleSelect_filter_cb4a8be87_1_12", - "step_singleSelect_assertOption_cb4a8be87_1_12", - "step_singleSelect_confirm_cb4a8be87_1_12", - "step_confirmOption_assertPrompt_cb4a8be87_1_13", - "step_confirmOption_confirm_cb4a8be87_1_13", - "step_textInput_assertQuestion_cb4a8be87_1_14", - "step_textInput_input_cb4a8be87_1_14", - "step_textInput_confirm_cb4a8be87_1_14", - "step_assertProjectWindowReady_assert_cb4a8be87_1_15", - "step_checkWorkspaceFiles_verify_cb4a8be87_2_1", - "step_checkWorkspaceFiles_verify_cb4a8be87_2_2", - "step_checkWorkspaceFiles_verify_cb4a8be87_2_3", - "step_checkWorkspaceFiles_verify_cb4a8be87_2_4", - "step_checkWorkspaceFiles_verify_cb4a8be87_2_5", - "step_checkWorkspaceFiles_verify_cb4a8be87_2_6", - "step_checkWorkspaceFiles_verify_cb4a8be87_2_7", - "step_executeCommand_open_cb4a8be87_3_1", - "step_executeCommand_assertPalette_cb4a8be87_3_1", - "step_executeCommand_filter_cb4a8be87_3_1", - "step_executeCommand_assertCommand_cb4a8be87_3_1", - "step_executeCommand_execute_cb4a8be87_3_1", - "step_signInAzure_assertOption_cb4a8be87_3_2", - "step_signInAzure_selectOption_cb4a8be87_3_2", - "step_signInAzure_confirmSignIn_cb4a8be87_3_2", - "step_signInAzure_allow_cb4a8be87_3_2", - "step_signInAzure_focusAccount_cb4a8be87_3_2", - "step_signInAzure_typeAccount_cb4a8be87_3_2", - "step_signInAzure_next_cb4a8be87_3_2", - "step_signInAzure_typePassword_cb4a8be87_3_2", - "step_signInAzure_submit_cb4a8be87_3_2", - "step_signInAzure_closeBrowser_cb4a8be87_3_2", - "step_signInAzure_assertReady_cb4a8be87_3_2", - "step_executeCommand_open_cb4a8be87_4_1", - "step_executeCommand_assertPalette_cb4a8be87_4_1", - "step_executeCommand_filter_cb4a8be87_4_1", - "step_executeCommand_assertCommand_cb4a8be87_4_1", - "step_executeCommand_execute_cb4a8be87_4_1", - "step_signInM365FromPicker_assertOption_cb4a8be87_4_2", - "step_signInM365FromPicker_selectOption_cb4a8be87_4_2", - "step_signInM365FromPicker_confirmSignIn_cb4a8be87_4_2", - "step_signInM365FromPicker_useAnotherAccount_cb4a8be87_4_2", - "step_signInM365FromPicker_typeAccount_cb4a8be87_4_2", - "step_signInM365FromPicker_next_cb4a8be87_4_2", - "step_signInM365FromPicker_typePassword_cb4a8be87_4_2", - "step_signInM365FromPicker_submit_cb4a8be87_4_2", - "step_signInM365FromPicker_closeBrowser_cb4a8be87_4_2", - "step_signInM365FromPicker_assertReady_cb4a8be87_4_2", - "step_executeCommand_open_cb4a8be87_5_1", - "step_executeCommand_assertPalette_cb4a8be87_5_1", - "step_executeCommand_filter_cb4a8be87_5_1", - "step_executeCommand_assertCommand_cb4a8be87_5_1", - "step_executeCommand_execute_cb4a8be87_5_1", - "step_executeCommand_open_cb4a8be87_5_2", - "step_executeCommand_assertPalette_cb4a8be87_5_2", - "step_executeCommand_filter_cb4a8be87_5_2", - "step_executeCommand_assertCommand_cb4a8be87_5_2", - "step_executeCommand_execute_cb4a8be87_5_2", - "step_singleSelect_assertQuestion_cb4a8be87_5_3", - "step_singleSelect_assertOptionsLoaded_cb4a8be87_5_3", - "step_singleSelect_filter_cb4a8be87_5_3", - "step_singleSelect_assertOption_cb4a8be87_5_3", - "step_singleSelect_confirm_cb4a8be87_5_3", - "step_textInput_assertQuestion_cb4a8be87_5_4", - "step_textInput_input_cb4a8be87_5_4", - "step_textInput_confirm_cb4a8be87_5_4", - "step_singleSelect_assertQuestion_cb4a8be87_5_5", - "step_singleSelect_assertOptionsLoaded_cb4a8be87_5_5", - "step_singleSelect_filter_cb4a8be87_5_5", - "step_singleSelect_assertOption_cb4a8be87_5_5", - "step_singleSelect_confirm_cb4a8be87_5_5", - "step_clickPrimaryAction_assertDialog_cb4a8be87_5_6", - "step_clickPrimaryAction_click_cb4a8be87_5_6", - "step_assertNotificationContains_assert_cb4a8be87_5_7", - "step_executeCommand_open_cb4a8be87_6_1", - "step_executeCommand_assertPalette_cb4a8be87_6_1", - "step_executeCommand_filter_cb4a8be87_6_1", - "step_executeCommand_assertCommand_cb4a8be87_6_1", - "step_executeCommand_execute_cb4a8be87_6_1", - "step_executeCommand_open_cb4a8be87_6_2", - "step_executeCommand_assertPalette_cb4a8be87_6_2", - "step_executeCommand_filter_cb4a8be87_6_2", - "step_executeCommand_assertCommand_cb4a8be87_6_2", - "step_executeCommand_execute_cb4a8be87_6_2", - "step_clickPrimaryAction_assertDialog_cb4a8be87_6_3", - "step_clickPrimaryAction_click_cb4a8be87_6_3", - "step_assertNotificationContains_assert_cb4a8be87_6_4", - "step_executeCommand_open_cb4a8be87_7_1", - "step_executeCommand_assertPalette_cb4a8be87_7_1", - "step_executeCommand_filter_cb4a8be87_7_1", - "step_executeCommand_assertCommand_cb4a8be87_7_1", - "step_executeCommand_execute_cb4a8be87_7_1", - "step_filterOption_filter_cb4a8be87_7_2", - "step_filterOption_assertOption_cb4a8be87_7_2", - "step_filterOption_confirm_cb4a8be87_7_2", - "step_assertReady_assertReady_cb4a8be87_7_3", - "step_addAndOpenApp_assertAdd_cb4a8be87_8_1", - "step_addAndOpenApp_add_cb4a8be87_8_1", - "step_addAndOpenApp_assertAdded_cb4a8be87_8_1", - "step_addAndOpenApp_open_cb4a8be87_8_1", - "step_addAndOpenApp_assertReady_cb4a8be87_8_1", - "step_sendTeamsMessage_assertInput_cb4a8be87_9_1", - "step_sendTeamsMessage_focusInput_cb4a8be87_9_1", - "step_sendTeamsMessage_type_cb4a8be87_9_1", - "step_sendTeamsMessage_send_cb4a8be87_9_1", - "step_assertChatReplied_assert_cb4a8be87_9_2", - "step_assertChatContains_assert_cb4a8be87_9_3" + "step_closeWelcomeOverlay_assertVisible_c3f41809f_1_1", + "step_closeWelcomeOverlay_close_c3f41809f_1_1", + "step_closeWelcomeOverlay_assertReady_c3f41809f_1_1", + "step_executeCommand_open_c3f41809f_1_2", + "step_executeCommand_assertPalette_c3f41809f_1_2", + "step_executeCommand_filter_c3f41809f_1_2", + "step_executeCommand_assertCommand_c3f41809f_1_2", + "step_executeCommand_execute_c3f41809f_1_2", + "step_assertToolkitViewSettled_assert_c3f41809f_1_3", + "step_closeGetStartedEditor_assertActive_c3f41809f_1_4", + "step_closeGetStartedEditor_close_c3f41809f_1_4", + "step_closeGetStartedEditor_assertClosed_c3f41809f_1_4", + "step_executeCommand_open_c3f41809f_1_5", + "step_executeCommand_assertPalette_c3f41809f_1_5", + "step_executeCommand_filter_c3f41809f_1_5", + "step_executeCommand_assertCommand_c3f41809f_1_5", + "step_executeCommand_execute_c3f41809f_1_5", + "step_singleSelect_assertQuestion_c3f41809f_1_6", + "step_singleSelect_assertOptionsLoaded_c3f41809f_1_6", + "step_singleSelect_filter_c3f41809f_1_6", + "step_singleSelect_assertOption_c3f41809f_1_6", + "step_singleSelect_confirm_c3f41809f_1_6", + "step_singleSelect_assertQuestion_c3f41809f_1_7", + "step_singleSelect_assertOptionsLoaded_c3f41809f_1_7", + "step_singleSelect_filter_c3f41809f_1_7", + "step_singleSelect_assertOption_c3f41809f_1_7", + "step_singleSelect_confirm_c3f41809f_1_7", + "step_singleSelect_assertQuestion_c3f41809f_1_8", + "step_singleSelect_assertOptionsLoaded_c3f41809f_1_8", + "step_singleSelect_filter_c3f41809f_1_8", + "step_singleSelect_assertOption_c3f41809f_1_8", + "step_singleSelect_confirm_c3f41809f_1_8", + "step_textInput_assertQuestion_c3f41809f_1_9", + "step_textInput_input_c3f41809f_1_9", + "step_textInput_confirm_c3f41809f_1_9", + "step_singleSelect_assertQuestion_c3f41809f_1_10", + "step_singleSelect_assertOptionsLoaded_c3f41809f_1_10", + "step_singleSelect_filter_c3f41809f_1_10", + "step_singleSelect_assertOption_c3f41809f_1_10", + "step_singleSelect_confirm_c3f41809f_1_10", + "step_confirmOption_assertPrompt_c3f41809f_1_11", + "step_confirmOption_confirm_c3f41809f_1_11", + "step_textInput_assertQuestion_c3f41809f_1_12", + "step_textInput_input_c3f41809f_1_12", + "step_textInput_confirm_c3f41809f_1_12", + "step_assertProjectWindowReady_assert_c3f41809f_1_13", + "step_checkWorkspaceFiles_verify_c3f41809f_2_1", + "step_checkWorkspaceFiles_verify_c3f41809f_2_2", + "step_checkWorkspaceFiles_verify_c3f41809f_2_3", + "step_checkWorkspaceFiles_verify_c3f41809f_2_4", + "step_checkWorkspaceFiles_verify_c3f41809f_2_5", + "step_checkWorkspaceFiles_verify_c3f41809f_2_6", + "step_checkWorkspaceFiles_verify_c3f41809f_2_7", + "step_executeCommand_open_c3f41809f_3_1", + "step_executeCommand_assertPalette_c3f41809f_3_1", + "step_executeCommand_filter_c3f41809f_3_1", + "step_executeCommand_assertCommand_c3f41809f_3_1", + "step_executeCommand_execute_c3f41809f_3_1", + "step_signInAzure_assertOption_c3f41809f_3_2", + "step_signInAzure_selectOption_c3f41809f_3_2", + "step_signInAzure_confirmSignIn_c3f41809f_3_2", + "step_signInAzure_allow_c3f41809f_3_2", + "step_signInAzure_focusAccount_c3f41809f_3_2", + "step_signInAzure_typeAccount_c3f41809f_3_2", + "step_signInAzure_next_c3f41809f_3_2", + "step_signInAzure_typePassword_c3f41809f_3_2", + "step_signInAzure_submit_c3f41809f_3_2", + "step_signInAzure_closeBrowser_c3f41809f_3_2", + "step_signInAzure_assertReady_c3f41809f_3_2", + "step_executeCommand_open_c3f41809f_4_1", + "step_executeCommand_assertPalette_c3f41809f_4_1", + "step_executeCommand_filter_c3f41809f_4_1", + "step_executeCommand_assertCommand_c3f41809f_4_1", + "step_executeCommand_execute_c3f41809f_4_1", + "step_signInM365FromPicker_assertOption_c3f41809f_4_2", + "step_signInM365FromPicker_selectOption_c3f41809f_4_2", + "step_signInM365FromPicker_confirmSignIn_c3f41809f_4_2", + "step_signInM365FromPicker_useAnotherAccount_c3f41809f_4_2", + "step_signInM365FromPicker_typeAccount_c3f41809f_4_2", + "step_signInM365FromPicker_next_c3f41809f_4_2", + "step_signInM365FromPicker_typePassword_c3f41809f_4_2", + "step_signInM365FromPicker_submit_c3f41809f_4_2", + "step_signInM365FromPicker_closeBrowser_c3f41809f_4_2", + "step_signInM365FromPicker_assertReady_c3f41809f_4_2", + "step_executeCommand_open_c3f41809f_5_1", + "step_executeCommand_assertPalette_c3f41809f_5_1", + "step_executeCommand_filter_c3f41809f_5_1", + "step_executeCommand_assertCommand_c3f41809f_5_1", + "step_executeCommand_execute_c3f41809f_5_1", + "step_executeCommand_open_c3f41809f_5_2", + "step_executeCommand_assertPalette_c3f41809f_5_2", + "step_executeCommand_filter_c3f41809f_5_2", + "step_executeCommand_assertCommand_c3f41809f_5_2", + "step_executeCommand_execute_c3f41809f_5_2", + "step_executeCommand_open_c3f41809f_5_3", + "step_executeCommand_assertPalette_c3f41809f_5_3", + "step_executeCommand_filter_c3f41809f_5_3", + "step_executeCommand_assertCommand_c3f41809f_5_3", + "step_executeCommand_execute_c3f41809f_5_3", + "step_singleSelect_assertQuestion_c3f41809f_5_4", + "step_singleSelect_assertOptionsLoaded_c3f41809f_5_4", + "step_singleSelect_filter_c3f41809f_5_4", + "step_singleSelect_assertOption_c3f41809f_5_4", + "step_singleSelect_confirm_c3f41809f_5_4", + "step_textInput_assertQuestion_c3f41809f_5_5", + "step_textInput_input_c3f41809f_5_5", + "step_textInput_confirm_c3f41809f_5_5", + "step_singleSelect_assertQuestion_c3f41809f_5_6", + "step_singleSelect_assertOptionsLoaded_c3f41809f_5_6", + "step_singleSelect_filter_c3f41809f_5_6", + "step_singleSelect_assertOption_c3f41809f_5_6", + "step_singleSelect_confirm_c3f41809f_5_6", + "step_clickPrimaryAction_assertDialog_c3f41809f_5_7", + "step_clickPrimaryAction_click_c3f41809f_5_7", + "step_assertNotificationContains_assert_c3f41809f_5_8", + "step_executeCommand_open_c3f41809f_6_1", + "step_executeCommand_assertPalette_c3f41809f_6_1", + "step_executeCommand_filter_c3f41809f_6_1", + "step_executeCommand_assertCommand_c3f41809f_6_1", + "step_executeCommand_execute_c3f41809f_6_1", + "step_executeCommand_open_c3f41809f_6_2", + "step_executeCommand_assertPalette_c3f41809f_6_2", + "step_executeCommand_filter_c3f41809f_6_2", + "step_executeCommand_assertCommand_c3f41809f_6_2", + "step_executeCommand_execute_c3f41809f_6_2", + "step_executeCommand_open_c3f41809f_6_3", + "step_executeCommand_assertPalette_c3f41809f_6_3", + "step_executeCommand_filter_c3f41809f_6_3", + "step_executeCommand_assertCommand_c3f41809f_6_3", + "step_executeCommand_execute_c3f41809f_6_3", + "step_clickPrimaryAction_assertDialog_c3f41809f_6_4", + "step_clickPrimaryAction_click_c3f41809f_6_4", + "step_assertNotificationContains_assert_c3f41809f_6_5", + "step_executeCommand_open_c3f41809f_7_1", + "step_executeCommand_assertPalette_c3f41809f_7_1", + "step_executeCommand_filter_c3f41809f_7_1", + "step_executeCommand_assertCommand_c3f41809f_7_1", + "step_executeCommand_execute_c3f41809f_7_1", + "step_filterOption_filter_c3f41809f_7_2", + "step_filterOption_assertOption_c3f41809f_7_2", + "step_filterOption_confirm_c3f41809f_7_2", + "step_browserM365PasswordSignIn_assertPassword_c3f41809f_7_3", + "step_browserM365PasswordSignIn_focusPassword_c3f41809f_7_3", + "step_browserM365PasswordSignIn_enterPassword_c3f41809f_7_3", + "step_browserM365PasswordSignIn_submitPassword_c3f41809f_7_3", + "step_browserM365PasswordSignIn_assertStaySignedIn_c3f41809f_7_3", + "step_browserM365PasswordSignIn_confirmStaySignedIn_c3f41809f_7_3", + "step_assertReady_assertReady_c3f41809f_7_4", + "step_addAndOpenApp_assertAdd_c3f41809f_8_1", + "step_addAndOpenApp_add_c3f41809f_8_1", + "step_addAndOpenApp_assertAdded_c3f41809f_8_1", + "step_addAndOpenApp_open_c3f41809f_8_1", + "step_addAndOpenApp_assertReady_c3f41809f_8_1" ], "tags": [ - "case_id:weather-ts-azure-openai-remote-preview", - "scenario_id:SCN-CREATE-WEATHER-01", + "case_id:weather-ts-openai-remote-teams", + "scenario_id:SCN-CREATE-WEATHER-03", "template_id:weather-agent", "gate:pr" ] }, "steps": [ { - "step_id": "step_closeWelcomeOverlay_assertVisible_cb4a8be87_1_1", + "step_id": "step_closeWelcomeOverlay_assertVisible_c3f41809f_1_1", "agent": "assertion", "tool": "", "parameters": {}, @@ -194,7 +198,7 @@ ] }, { - "step_id": "step_closeWelcomeOverlay_close_cb4a8be87_1_1", + "step_id": "step_closeWelcomeOverlay_close_c3f41809f_1_1", "agent": "interaction", "tool": "click", "parameters": { @@ -208,7 +212,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_closeWelcomeOverlay_assertVisible_cb4a8be87_1_1" + "step_closeWelcomeOverlay_assertVisible_c3f41809f_1_1" ], "preconditions": [ "dhash:952:128:16:5:255266345964665b", @@ -223,7 +227,7 @@ ] }, { - "step_id": "step_closeWelcomeOverlay_assertReady_cb4a8be87_1_1", + "step_id": "step_closeWelcomeOverlay_assertReady_c3f41809f_1_1", "agent": "assertion", "tool": "", "parameters": {}, @@ -233,7 +237,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_closeWelcomeOverlay_close_cb4a8be87_1_1" + "step_closeWelcomeOverlay_close_c3f41809f_1_1" ], "preconditions": [], "postconditions": [], @@ -244,7 +248,7 @@ ] }, { - "step_id": "step_executeCommand_open_cb4a8be87_1_2", + "step_id": "step_executeCommand_open_c3f41809f_1_2", "agent": "interaction", "tool": "key_press", "parameters": { @@ -256,7 +260,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_closeWelcomeOverlay_assertReady_cb4a8be87_1_1" + "step_closeWelcomeOverlay_assertReady_c3f41809f_1_1" ], "preconditions": [], "postconditions": [], @@ -266,7 +270,7 @@ ] }, { - "step_id": "step_executeCommand_assertPalette_cb4a8be87_1_2", + "step_id": "step_executeCommand_assertPalette_c3f41809f_1_2", "agent": "assertion", "tool": "", "parameters": {}, @@ -276,7 +280,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_executeCommand_open_cb4a8be87_1_2" + "step_executeCommand_open_c3f41809f_1_2" ], "preconditions": [], "postconditions": [], @@ -287,7 +291,7 @@ ] }, { - "step_id": "step_executeCommand_filter_cb4a8be87_1_2", + "step_id": "step_executeCommand_filter_c3f41809f_1_2", "agent": "interaction", "tool": "type_text", "parameters": { @@ -299,7 +303,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_executeCommand_assertPalette_cb4a8be87_1_2" + "step_executeCommand_assertPalette_c3f41809f_1_2" ], "preconditions": [], "postconditions": [], @@ -309,7 +313,7 @@ ] }, { - "step_id": "step_executeCommand_assertCommand_cb4a8be87_1_2", + "step_id": "step_executeCommand_assertCommand_c3f41809f_1_2", "agent": "assertion", "tool": "", "parameters": {}, @@ -319,7 +323,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_executeCommand_filter_cb4a8be87_1_2" + "step_executeCommand_filter_c3f41809f_1_2" ], "preconditions": [], "postconditions": [], @@ -330,7 +334,7 @@ ] }, { - "step_id": "step_executeCommand_execute_cb4a8be87_1_2", + "step_id": "step_executeCommand_execute_c3f41809f_1_2", "agent": "interaction", "tool": "key_press", "parameters": { @@ -342,7 +346,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_executeCommand_assertCommand_cb4a8be87_1_2" + "step_executeCommand_assertCommand_c3f41809f_1_2" ], "preconditions": [], "postconditions": [], @@ -352,7 +356,7 @@ ] }, { - "step_id": "step_assertToolkitViewSettled_assert_cb4a8be87_1_3", + "step_id": "step_assertToolkitViewSettled_assert_c3f41809f_1_3", "agent": "assertion", "tool": "", "parameters": {}, @@ -362,7 +366,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_executeCommand_execute_cb4a8be87_1_2" + "step_executeCommand_execute_c3f41809f_1_2" ], "preconditions": [], "postconditions": [], @@ -373,7 +377,7 @@ ] }, { - "step_id": "step_closeGetStartedEditor_assertActive_cb4a8be87_1_4", + "step_id": "step_closeGetStartedEditor_assertActive_c3f41809f_1_4", "agent": "assertion", "tool": "", "parameters": {}, @@ -383,7 +387,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_assertToolkitViewSettled_assert_cb4a8be87_1_3" + "step_assertToolkitViewSettled_assert_c3f41809f_1_3" ], "preconditions": [], "postconditions": [], @@ -394,7 +398,7 @@ ] }, { - "step_id": "step_closeGetStartedEditor_close_cb4a8be87_1_4", + "step_id": "step_closeGetStartedEditor_close_c3f41809f_1_4", "agent": "interaction", "tool": "keyboard_shortcut", "parameters": { @@ -406,7 +410,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_closeGetStartedEditor_assertActive_cb4a8be87_1_4" + "step_closeGetStartedEditor_assertActive_c3f41809f_1_4" ], "preconditions": [], "postconditions": [], @@ -416,7 +420,7 @@ ] }, { - "step_id": "step_closeGetStartedEditor_assertClosed_cb4a8be87_1_4", + "step_id": "step_closeGetStartedEditor_assertClosed_c3f41809f_1_4", "agent": "assertion", "tool": "", "parameters": {}, @@ -426,7 +430,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_closeGetStartedEditor_close_cb4a8be87_1_4" + "step_closeGetStartedEditor_close_c3f41809f_1_4" ], "preconditions": [], "postconditions": [], @@ -437,7 +441,7 @@ ] }, { - "step_id": "step_executeCommand_open_cb4a8be87_1_5", + "step_id": "step_executeCommand_open_c3f41809f_1_5", "agent": "interaction", "tool": "key_press", "parameters": { @@ -449,7 +453,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_closeGetStartedEditor_assertClosed_cb4a8be87_1_4" + "step_closeGetStartedEditor_assertClosed_c3f41809f_1_4" ], "preconditions": [], "postconditions": [], @@ -459,7 +463,7 @@ ] }, { - "step_id": "step_executeCommand_assertPalette_cb4a8be87_1_5", + "step_id": "step_executeCommand_assertPalette_c3f41809f_1_5", "agent": "assertion", "tool": "", "parameters": {}, @@ -469,7 +473,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_executeCommand_open_cb4a8be87_1_5" + "step_executeCommand_open_c3f41809f_1_5" ], "preconditions": [], "postconditions": [], @@ -480,7 +484,7 @@ ] }, { - "step_id": "step_executeCommand_filter_cb4a8be87_1_5", + "step_id": "step_executeCommand_filter_c3f41809f_1_5", "agent": "interaction", "tool": "type_text", "parameters": { @@ -492,7 +496,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_executeCommand_assertPalette_cb4a8be87_1_5" + "step_executeCommand_assertPalette_c3f41809f_1_5" ], "preconditions": [], "postconditions": [], @@ -502,7 +506,7 @@ ] }, { - "step_id": "step_executeCommand_assertCommand_cb4a8be87_1_5", + "step_id": "step_executeCommand_assertCommand_c3f41809f_1_5", "agent": "assertion", "tool": "", "parameters": {}, @@ -512,7 +516,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_executeCommand_filter_cb4a8be87_1_5" + "step_executeCommand_filter_c3f41809f_1_5" ], "preconditions": [], "postconditions": [], @@ -523,7 +527,7 @@ ] }, { - "step_id": "step_executeCommand_execute_cb4a8be87_1_5", + "step_id": "step_executeCommand_execute_c3f41809f_1_5", "agent": "interaction", "tool": "key_press", "parameters": { @@ -535,7 +539,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_executeCommand_assertCommand_cb4a8be87_1_5" + "step_executeCommand_assertCommand_c3f41809f_1_5" ], "preconditions": [], "postconditions": [], @@ -545,7 +549,7 @@ ] }, { - "step_id": "step_singleSelect_assertQuestion_cb4a8be87_1_6", + "step_id": "step_singleSelect_assertQuestion_c3f41809f_1_6", "agent": "assertion", "tool": "", "parameters": {}, @@ -555,7 +559,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_executeCommand_execute_cb4a8be87_1_5" + "step_executeCommand_execute_c3f41809f_1_5" ], "preconditions": [], "postconditions": [], @@ -566,17 +570,17 @@ ] }, { - "step_id": "step_singleSelect_assertOptionsLoaded_cb4a8be87_1_6", + "step_id": "step_singleSelect_assertOptionsLoaded_c3f41809f_1_6", "agent": "assertion", "tool": "", "parameters": {}, - "description": "@assertion the prompt titled New Project lists at least one option below its input box.", + "description": "@assertion the prompt titled New Project has finished loading and lists at least one selectable option.", "content_refs": [], "timeout": 120, "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_singleSelect_assertQuestion_cb4a8be87_1_6" + "step_singleSelect_assertQuestion_c3f41809f_1_6" ], "preconditions": [], "postconditions": [], @@ -587,7 +591,7 @@ ] }, { - "step_id": "step_singleSelect_filter_cb4a8be87_1_6", + "step_id": "step_singleSelect_filter_c3f41809f_1_6", "agent": "interaction", "tool": "type_text", "parameters": { @@ -599,7 +603,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_singleSelect_assertOptionsLoaded_cb4a8be87_1_6" + "step_singleSelect_assertOptionsLoaded_c3f41809f_1_6" ], "preconditions": [], "postconditions": [], @@ -609,7 +613,7 @@ ] }, { - "step_id": "step_singleSelect_assertOption_cb4a8be87_1_6", + "step_id": "step_singleSelect_assertOption_c3f41809f_1_6", "agent": "assertion", "tool": "", "parameters": {}, @@ -619,7 +623,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_singleSelect_filter_cb4a8be87_1_6" + "step_singleSelect_filter_c3f41809f_1_6" ], "preconditions": [], "postconditions": [], @@ -630,7 +634,7 @@ ] }, { - "step_id": "step_singleSelect_confirm_cb4a8be87_1_6", + "step_id": "step_singleSelect_confirm_c3f41809f_1_6", "agent": "interaction", "tool": "key_press", "parameters": { @@ -642,7 +646,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_singleSelect_assertOption_cb4a8be87_1_6" + "step_singleSelect_assertOption_c3f41809f_1_6" ], "preconditions": [], "postconditions": [], @@ -652,7 +656,7 @@ ] }, { - "step_id": "step_singleSelect_assertQuestion_cb4a8be87_1_7", + "step_id": "step_singleSelect_assertQuestion_c3f41809f_1_7", "agent": "assertion", "tool": "", "parameters": {}, @@ -662,7 +666,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_singleSelect_confirm_cb4a8be87_1_6" + "step_singleSelect_confirm_c3f41809f_1_6" ], "preconditions": [], "postconditions": [], @@ -673,17 +677,17 @@ ] }, { - "step_id": "step_singleSelect_assertOptionsLoaded_cb4a8be87_1_7", + "step_id": "step_singleSelect_assertOptionsLoaded_c3f41809f_1_7", "agent": "assertion", "tool": "", "parameters": {}, - "description": "@assertion the prompt titled App Features Using Microsoft 365 Agents SDK lists at least one option below its input box.", + "description": "@assertion the prompt titled App Features Using Microsoft 365 Agents SDK has finished loading and lists at least one selectable option.", "content_refs": [], "timeout": 120, "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_singleSelect_assertQuestion_cb4a8be87_1_7" + "step_singleSelect_assertQuestion_c3f41809f_1_7" ], "preconditions": [], "postconditions": [], @@ -694,7 +698,7 @@ ] }, { - "step_id": "step_singleSelect_filter_cb4a8be87_1_7", + "step_id": "step_singleSelect_filter_c3f41809f_1_7", "agent": "interaction", "tool": "type_text", "parameters": { @@ -706,7 +710,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_singleSelect_assertOptionsLoaded_cb4a8be87_1_7" + "step_singleSelect_assertOptionsLoaded_c3f41809f_1_7" ], "preconditions": [], "postconditions": [], @@ -716,7 +720,7 @@ ] }, { - "step_id": "step_singleSelect_assertOption_cb4a8be87_1_7", + "step_id": "step_singleSelect_assertOption_c3f41809f_1_7", "agent": "assertion", "tool": "", "parameters": {}, @@ -726,7 +730,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_singleSelect_filter_cb4a8be87_1_7" + "step_singleSelect_filter_c3f41809f_1_7" ], "preconditions": [], "postconditions": [], @@ -737,7 +741,7 @@ ] }, { - "step_id": "step_singleSelect_confirm_cb4a8be87_1_7", + "step_id": "step_singleSelect_confirm_c3f41809f_1_7", "agent": "interaction", "tool": "key_press", "parameters": { @@ -749,7 +753,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_singleSelect_assertOption_cb4a8be87_1_7" + "step_singleSelect_assertOption_c3f41809f_1_7" ], "preconditions": [], "postconditions": [], @@ -759,7 +763,7 @@ ] }, { - "step_id": "step_singleSelect_assertQuestion_cb4a8be87_1_8", + "step_id": "step_singleSelect_assertQuestion_c3f41809f_1_8", "agent": "assertion", "tool": "", "parameters": {}, @@ -769,7 +773,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_singleSelect_confirm_cb4a8be87_1_7" + "step_singleSelect_confirm_c3f41809f_1_7" ], "preconditions": [], "postconditions": [], @@ -780,17 +784,17 @@ ] }, { - "step_id": "step_singleSelect_assertOptionsLoaded_cb4a8be87_1_8", + "step_id": "step_singleSelect_assertOptionsLoaded_c3f41809f_1_8", "agent": "assertion", "tool": "", "parameters": {}, - "description": "@assertion the prompt titled Service for Large Language Model (LLM) lists at least one option below its input box.", + "description": "@assertion the prompt titled Service for Large Language Model (LLM) has finished loading and lists at least one selectable option.", "content_refs": [], "timeout": 120, "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_singleSelect_assertQuestion_cb4a8be87_1_8" + "step_singleSelect_assertQuestion_c3f41809f_1_8" ], "preconditions": [], "postconditions": [], @@ -801,19 +805,19 @@ ] }, { - "step_id": "step_singleSelect_filter_cb4a8be87_1_8", + "step_id": "step_singleSelect_filter_c3f41809f_1_8", "agent": "interaction", "tool": "type_text", "parameters": { - "text": "Azure OpenAI" + "text": "OpenAI" }, - "description": "Type the resolved option label Azure OpenAI into the active single-select prompt.", + "description": "Type the resolved option label OpenAI into the active single-select prompt.", "content_refs": [], "timeout": 30, "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_singleSelect_assertOptionsLoaded_cb4a8be87_1_8" + "step_singleSelect_assertOptionsLoaded_c3f41809f_1_8" ], "preconditions": [], "postconditions": [], @@ -823,17 +827,17 @@ ] }, { - "step_id": "step_singleSelect_assertOption_cb4a8be87_1_8", + "step_id": "step_singleSelect_assertOption_c3f41809f_1_8", "agent": "assertion", "tool": "", "parameters": {}, - "description": "@assertion the option Azure OpenAI is visible and selectable in the filtered single-select prompt.", + "description": "@assertion the option OpenAI is visible and selectable in the filtered single-select prompt.", "content_refs": [], "timeout": 30, "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_singleSelect_filter_cb4a8be87_1_8" + "step_singleSelect_filter_c3f41809f_1_8" ], "preconditions": [], "postconditions": [], @@ -844,7 +848,7 @@ ] }, { - "step_id": "step_singleSelect_confirm_cb4a8be87_1_8", + "step_id": "step_singleSelect_confirm_c3f41809f_1_8", "agent": "interaction", "tool": "key_press", "parameters": { @@ -856,7 +860,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_singleSelect_assertOption_cb4a8be87_1_8" + "step_singleSelect_assertOption_c3f41809f_1_8" ], "preconditions": [], "postconditions": [], @@ -866,17 +870,17 @@ ] }, { - "step_id": "step_textInput_assertQuestion_cb4a8be87_1_9", + "step_id": "step_textInput_assertQuestion_c3f41809f_1_9", "agent": "assertion", "tool": "", "parameters": {}, - "description": "@assertion the active prompt titled Azure OpenAI Key is visible.", + "description": "@assertion the active prompt titled OpenAI Key is visible.", "content_refs": [], "timeout": 30, "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_singleSelect_confirm_cb4a8be87_1_8" + "step_singleSelect_confirm_c3f41809f_1_8" ], "preconditions": [], "postconditions": [], @@ -887,7 +891,7 @@ ] }, { - "step_id": "step_textInput_input_cb4a8be87_1_9", + "step_id": "step_textInput_input_c3f41809f_1_9", "agent": "interaction", "tool": "type_text", "parameters": { @@ -899,7 +903,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_textInput_assertQuestion_cb4a8be87_1_9" + "step_textInput_assertQuestion_c3f41809f_1_9" ], "preconditions": [], "postconditions": [], @@ -909,7 +913,7 @@ ] }, { - "step_id": "step_textInput_confirm_cb4a8be87_1_9", + "step_id": "step_textInput_confirm_c3f41809f_1_9", "agent": "interaction", "tool": "key_press", "parameters": { @@ -921,7 +925,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_textInput_input_cb4a8be87_1_9" + "step_textInput_input_c3f41809f_1_9" ], "preconditions": [], "postconditions": [], @@ -931,137 +935,7 @@ ] }, { - "step_id": "step_textInput_assertQuestion_cb4a8be87_1_10", - "agent": "assertion", - "tool": "", - "parameters": {}, - "description": "@assertion the active prompt titled Azure OpenAI Endpoint is visible.", - "content_refs": [], - "timeout": 30, - "retry_count": 0, - "continue_on_error": "false", - "depends_on": [ - "step_textInput_confirm_cb4a8be87_1_9" - ], - "preconditions": [], - "postconditions": [], - "tags": [ - "component:quick-input", - "answer_type:text", - "step_retry_timeout: 30" - ] - }, - { - "step_id": "step_textInput_input_cb4a8be87_1_10", - "agent": "interaction", - "tool": "type_text", - "parameters": { - "text": "${{env:AZURE_OPENAI_ENDPOINT}}" - }, - "description": "Type the authored value into the active text prompt.", - "content_refs": [], - "timeout": 30, - "retry_count": 0, - "continue_on_error": "false", - "depends_on": [ - "step_textInput_assertQuestion_cb4a8be87_1_10" - ], - "preconditions": [], - "postconditions": [], - "tags": [ - "component:quick-input", - "answer_type:text" - ] - }, - { - "step_id": "step_textInput_confirm_cb4a8be87_1_10", - "agent": "interaction", - "tool": "key_press", - "parameters": { - "key": "enter" - }, - "description": "Press Enter to submit the accepted text input.", - "content_refs": [], - "timeout": 30, - "retry_count": 0, - "continue_on_error": "false", - "depends_on": [ - "step_textInput_input_cb4a8be87_1_10" - ], - "preconditions": [], - "postconditions": [], - "tags": [ - "component:quick-input", - "answer_type:text" - ] - }, - { - "step_id": "step_textInput_assertQuestion_cb4a8be87_1_11", - "agent": "assertion", - "tool": "", - "parameters": {}, - "description": "@assertion the active prompt titled Azure OpenAI Deployment Name is visible.", - "content_refs": [], - "timeout": 30, - "retry_count": 0, - "continue_on_error": "false", - "depends_on": [ - "step_textInput_confirm_cb4a8be87_1_10" - ], - "preconditions": [], - "postconditions": [], - "tags": [ - "component:quick-input", - "answer_type:text", - "step_retry_timeout: 30" - ] - }, - { - "step_id": "step_textInput_input_cb4a8be87_1_11", - "agent": "interaction", - "tool": "type_text", - "parameters": { - "text": "${{env:AZURE_OPENAI_MODEL}}" - }, - "description": "Type the authored value into the active text prompt.", - "content_refs": [], - "timeout": 30, - "retry_count": 0, - "continue_on_error": "false", - "depends_on": [ - "step_textInput_assertQuestion_cb4a8be87_1_11" - ], - "preconditions": [], - "postconditions": [], - "tags": [ - "component:quick-input", - "answer_type:text" - ] - }, - { - "step_id": "step_textInput_confirm_cb4a8be87_1_11", - "agent": "interaction", - "tool": "key_press", - "parameters": { - "key": "enter" - }, - "description": "Press Enter to submit the accepted text input.", - "content_refs": [], - "timeout": 30, - "retry_count": 0, - "continue_on_error": "false", - "depends_on": [ - "step_textInput_input_cb4a8be87_1_11" - ], - "preconditions": [], - "postconditions": [], - "tags": [ - "component:quick-input", - "answer_type:text" - ] - }, - { - "step_id": "step_singleSelect_assertQuestion_cb4a8be87_1_12", + "step_id": "step_singleSelect_assertQuestion_c3f41809f_1_10", "agent": "assertion", "tool": "", "parameters": {}, @@ -1071,7 +945,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_textInput_confirm_cb4a8be87_1_11" + "step_textInput_confirm_c3f41809f_1_9" ], "preconditions": [], "postconditions": [], @@ -1082,17 +956,17 @@ ] }, { - "step_id": "step_singleSelect_assertOptionsLoaded_cb4a8be87_1_12", + "step_id": "step_singleSelect_assertOptionsLoaded_c3f41809f_1_10", "agent": "assertion", "tool": "", "parameters": {}, - "description": "@assertion the prompt titled Programming Language lists at least one option below its input box.", + "description": "@assertion the prompt titled Programming Language has finished loading and lists at least one selectable option.", "content_refs": [], "timeout": 120, "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_singleSelect_assertQuestion_cb4a8be87_1_12" + "step_singleSelect_assertQuestion_c3f41809f_1_10" ], "preconditions": [], "postconditions": [], @@ -1103,7 +977,7 @@ ] }, { - "step_id": "step_singleSelect_filter_cb4a8be87_1_12", + "step_id": "step_singleSelect_filter_c3f41809f_1_10", "agent": "interaction", "tool": "type_text", "parameters": { @@ -1115,7 +989,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_singleSelect_assertOptionsLoaded_cb4a8be87_1_12" + "step_singleSelect_assertOptionsLoaded_c3f41809f_1_10" ], "preconditions": [], "postconditions": [], @@ -1125,7 +999,7 @@ ] }, { - "step_id": "step_singleSelect_assertOption_cb4a8be87_1_12", + "step_id": "step_singleSelect_assertOption_c3f41809f_1_10", "agent": "assertion", "tool": "", "parameters": {}, @@ -1135,7 +1009,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_singleSelect_filter_cb4a8be87_1_12" + "step_singleSelect_filter_c3f41809f_1_10" ], "preconditions": [], "postconditions": [], @@ -1146,7 +1020,7 @@ ] }, { - "step_id": "step_singleSelect_confirm_cb4a8be87_1_12", + "step_id": "step_singleSelect_confirm_c3f41809f_1_10", "agent": "interaction", "tool": "key_press", "parameters": { @@ -1158,7 +1032,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_singleSelect_assertOption_cb4a8be87_1_12" + "step_singleSelect_assertOption_c3f41809f_1_10" ], "preconditions": [], "postconditions": [], @@ -1168,7 +1042,7 @@ ] }, { - "step_id": "step_confirmOption_assertPrompt_cb4a8be87_1_13", + "step_id": "step_confirmOption_assertPrompt_c3f41809f_1_11", "agent": "assertion", "tool": "", "parameters": {}, @@ -1178,7 +1052,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_singleSelect_confirm_cb4a8be87_1_12" + "step_singleSelect_confirm_c3f41809f_1_10" ], "preconditions": [], "postconditions": [], @@ -1190,7 +1064,7 @@ ] }, { - "step_id": "step_confirmOption_confirm_cb4a8be87_1_13", + "step_id": "step_confirmOption_confirm_c3f41809f_1_11", "agent": "interaction", "tool": "key_press", "parameters": { @@ -1202,7 +1076,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_confirmOption_assertPrompt_cb4a8be87_1_13" + "step_confirmOption_assertPrompt_c3f41809f_1_11" ], "preconditions": [ "dhash:364:74:16:5:08056a9a5d5516b6", @@ -1217,7 +1091,7 @@ ] }, { - "step_id": "step_textInput_assertQuestion_cb4a8be87_1_14", + "step_id": "step_textInput_assertQuestion_c3f41809f_1_12", "agent": "assertion", "tool": "", "parameters": {}, @@ -1227,7 +1101,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_confirmOption_confirm_cb4a8be87_1_13" + "step_confirmOption_confirm_c3f41809f_1_11" ], "preconditions": [], "postconditions": [], @@ -1238,7 +1112,7 @@ ] }, { - "step_id": "step_textInput_input_cb4a8be87_1_14", + "step_id": "step_textInput_input_c3f41809f_1_12", "agent": "interaction", "tool": "type_text", "parameters": { @@ -1250,7 +1124,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_textInput_assertQuestion_cb4a8be87_1_14" + "step_textInput_assertQuestion_c3f41809f_1_12" ], "preconditions": [], "postconditions": [], @@ -1260,7 +1134,7 @@ ] }, { - "step_id": "step_textInput_confirm_cb4a8be87_1_14", + "step_id": "step_textInput_confirm_c3f41809f_1_12", "agent": "interaction", "tool": "key_press", "parameters": { @@ -1272,7 +1146,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_textInput_input_cb4a8be87_1_14" + "step_textInput_input_c3f41809f_1_12" ], "preconditions": [], "postconditions": [], @@ -1282,7 +1156,7 @@ ] }, { - "step_id": "step_assertProjectWindowReady_assert_cb4a8be87_1_15", + "step_id": "step_assertProjectWindowReady_assert_c3f41809f_1_13", "agent": "assertion", "tool": "", "parameters": {}, @@ -1292,7 +1166,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_textInput_confirm_cb4a8be87_1_14" + "step_textInput_confirm_c3f41809f_1_12" ], "preconditions": [], "postconditions": [], @@ -1303,7 +1177,7 @@ ] }, { - "step_id": "step_checkWorkspaceFiles_verify_cb4a8be87_2_1", + "step_id": "step_checkWorkspaceFiles_verify_c3f41809f_2_1", "agent": "code", "tool": "", "parameters": { @@ -1315,7 +1189,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_assertProjectWindowReady_assert_cb4a8be87_1_15" + "step_assertProjectWindowReady_assert_c3f41809f_1_13" ], "preconditions": [], "postconditions": [], @@ -1326,7 +1200,7 @@ ] }, { - "step_id": "step_checkWorkspaceFiles_verify_cb4a8be87_2_2", + "step_id": "step_checkWorkspaceFiles_verify_c3f41809f_2_2", "agent": "code", "tool": "", "parameters": { @@ -1338,7 +1212,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_checkWorkspaceFiles_verify_cb4a8be87_2_1" + "step_checkWorkspaceFiles_verify_c3f41809f_2_1" ], "preconditions": [], "postconditions": [], @@ -1349,7 +1223,7 @@ ] }, { - "step_id": "step_checkWorkspaceFiles_verify_cb4a8be87_2_3", + "step_id": "step_checkWorkspaceFiles_verify_c3f41809f_2_3", "agent": "code", "tool": "", "parameters": { @@ -1361,7 +1235,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_checkWorkspaceFiles_verify_cb4a8be87_2_2" + "step_checkWorkspaceFiles_verify_c3f41809f_2_2" ], "preconditions": [], "postconditions": [], @@ -1372,7 +1246,7 @@ ] }, { - "step_id": "step_checkWorkspaceFiles_verify_cb4a8be87_2_4", + "step_id": "step_checkWorkspaceFiles_verify_c3f41809f_2_4", "agent": "code", "tool": "", "parameters": { @@ -1384,7 +1258,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_checkWorkspaceFiles_verify_cb4a8be87_2_3" + "step_checkWorkspaceFiles_verify_c3f41809f_2_3" ], "preconditions": [], "postconditions": [], @@ -1395,7 +1269,7 @@ ] }, { - "step_id": "step_checkWorkspaceFiles_verify_cb4a8be87_2_5", + "step_id": "step_checkWorkspaceFiles_verify_c3f41809f_2_5", "agent": "code", "tool": "", "parameters": { @@ -1407,7 +1281,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_checkWorkspaceFiles_verify_cb4a8be87_2_4" + "step_checkWorkspaceFiles_verify_c3f41809f_2_4" ], "preconditions": [], "postconditions": [], @@ -1418,7 +1292,7 @@ ] }, { - "step_id": "step_checkWorkspaceFiles_verify_cb4a8be87_2_6", + "step_id": "step_checkWorkspaceFiles_verify_c3f41809f_2_6", "agent": "code", "tool": "", "parameters": { @@ -1430,7 +1304,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_checkWorkspaceFiles_verify_cb4a8be87_2_5" + "step_checkWorkspaceFiles_verify_c3f41809f_2_5" ], "preconditions": [], "postconditions": [], @@ -1441,7 +1315,7 @@ ] }, { - "step_id": "step_checkWorkspaceFiles_verify_cb4a8be87_2_7", + "step_id": "step_checkWorkspaceFiles_verify_c3f41809f_2_7", "agent": "code", "tool": "", "parameters": { @@ -1453,7 +1327,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_checkWorkspaceFiles_verify_cb4a8be87_2_6" + "step_checkWorkspaceFiles_verify_c3f41809f_2_6" ], "preconditions": [], "postconditions": [], @@ -1464,7 +1338,7 @@ ] }, { - "step_id": "step_executeCommand_open_cb4a8be87_3_1", + "step_id": "step_executeCommand_open_c3f41809f_3_1", "agent": "interaction", "tool": "key_press", "parameters": { @@ -1476,7 +1350,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_checkWorkspaceFiles_verify_cb4a8be87_2_7" + "step_checkWorkspaceFiles_verify_c3f41809f_2_7" ], "preconditions": [], "postconditions": [], @@ -1486,7 +1360,7 @@ ] }, { - "step_id": "step_executeCommand_assertPalette_cb4a8be87_3_1", + "step_id": "step_executeCommand_assertPalette_c3f41809f_3_1", "agent": "assertion", "tool": "", "parameters": {}, @@ -1496,7 +1370,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_executeCommand_open_cb4a8be87_3_1" + "step_executeCommand_open_c3f41809f_3_1" ], "preconditions": [], "postconditions": [], @@ -1507,7 +1381,7 @@ ] }, { - "step_id": "step_executeCommand_filter_cb4a8be87_3_1", + "step_id": "step_executeCommand_filter_c3f41809f_3_1", "agent": "interaction", "tool": "type_text", "parameters": { @@ -1519,7 +1393,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_executeCommand_assertPalette_cb4a8be87_3_1" + "step_executeCommand_assertPalette_c3f41809f_3_1" ], "preconditions": [], "postconditions": [], @@ -1529,7 +1403,7 @@ ] }, { - "step_id": "step_executeCommand_assertCommand_cb4a8be87_3_1", + "step_id": "step_executeCommand_assertCommand_c3f41809f_3_1", "agent": "assertion", "tool": "", "parameters": {}, @@ -1539,7 +1413,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_executeCommand_filter_cb4a8be87_3_1" + "step_executeCommand_filter_c3f41809f_3_1" ], "preconditions": [], "postconditions": [], @@ -1550,7 +1424,7 @@ ] }, { - "step_id": "step_executeCommand_execute_cb4a8be87_3_1", + "step_id": "step_executeCommand_execute_c3f41809f_3_1", "agent": "interaction", "tool": "key_press", "parameters": { @@ -1562,7 +1436,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_executeCommand_assertCommand_cb4a8be87_3_1" + "step_executeCommand_assertCommand_c3f41809f_3_1" ], "preconditions": [], "postconditions": [], @@ -1572,7 +1446,7 @@ ] }, { - "step_id": "step_signInAzure_assertOption_cb4a8be87_3_2", + "step_id": "step_signInAzure_assertOption_c3f41809f_3_2", "agent": "assertion", "tool": "", "parameters": {}, @@ -1582,7 +1456,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_executeCommand_execute_cb4a8be87_3_1" + "step_executeCommand_execute_c3f41809f_3_1" ], "preconditions": [], "postconditions": [], @@ -1594,7 +1468,7 @@ ] }, { - "step_id": "step_signInAzure_selectOption_cb4a8be87_3_2", + "step_id": "step_signInAzure_selectOption_c3f41809f_3_2", "agent": "interaction", "tool": "click", "parameters": { @@ -1608,7 +1482,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_signInAzure_assertOption_cb4a8be87_3_2" + "step_signInAzure_assertOption_c3f41809f_3_2" ], "preconditions": [ "dhash:165:127:16:5:5819353567ef55aa", @@ -1622,7 +1496,7 @@ ] }, { - "step_id": "step_signInAzure_confirmSignIn_cb4a8be87_3_2", + "step_id": "step_signInAzure_confirmSignIn_c3f41809f_3_2", "agent": "interaction", "tool": "click", "parameters": { @@ -1636,7 +1510,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_signInAzure_selectOption_cb4a8be87_3_2" + "step_signInAzure_selectOption_c3f41809f_3_2" ], "preconditions": [ "dhash:534:98:16:5:554a54555555468f", @@ -1650,7 +1524,7 @@ ] }, { - "step_id": "step_signInAzure_allow_cb4a8be87_3_2", + "step_id": "step_signInAzure_allow_c3f41809f_3_2", "agent": "interaction", "tool": "click", "parameters": { @@ -1664,7 +1538,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_signInAzure_confirmSignIn_cb4a8be87_3_2" + "step_signInAzure_confirmSignIn_c3f41809f_3_2" ], "preconditions": [ "dhash:457:96:16:5:524d5552564cb3ca", @@ -1678,7 +1552,7 @@ ] }, { - "step_id": "step_signInAzure_focusAccount_cb4a8be87_3_2", + "step_id": "step_signInAzure_focusAccount_c3f41809f_3_2", "agent": "interaction", "tool": "click", "parameters": { @@ -1692,7 +1566,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_signInAzure_allow_cb4a8be87_3_2" + "step_signInAzure_allow_c3f41809f_3_2" ], "preconditions": [ "dhash:432:327:16:5:114c134b4a13b2cc", @@ -1707,7 +1581,7 @@ ] }, { - "step_id": "step_signInAzure_typeAccount_cb4a8be87_3_2", + "step_id": "step_signInAzure_typeAccount_c3f41809f_3_2", "agent": "interaction", "tool": "type_text", "parameters": { @@ -1719,7 +1593,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_signInAzure_focusAccount_cb4a8be87_3_2" + "step_signInAzure_focusAccount_c3f41809f_3_2" ], "preconditions": [ "dhash:512:384:0:20:1b28d0d9e7e4dae4" @@ -1732,7 +1606,7 @@ ] }, { - "step_id": "step_signInAzure_next_cb4a8be87_3_2", + "step_id": "step_signInAzure_next_c3f41809f_3_2", "agent": "interaction", "tool": "click", "parameters": { @@ -1746,7 +1620,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_signInAzure_typeAccount_cb4a8be87_3_2" + "step_signInAzure_typeAccount_c3f41809f_3_2" ], "preconditions": [ "dhash:631:462:16:5:0000000091000000", @@ -1761,7 +1635,7 @@ ] }, { - "step_id": "step_signInAzure_typePassword_cb4a8be87_3_2", + "step_id": "step_signInAzure_typePassword_c3f41809f_3_2", "agent": "interaction", "tool": "type_text", "parameters": { @@ -1773,7 +1647,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_signInAzure_next_cb4a8be87_3_2" + "step_signInAzure_next_c3f41809f_3_2" ], "preconditions": [ "dhash:512:384:0:20:1908f0d9d1e6e6e4" @@ -1787,7 +1661,7 @@ ] }, { - "step_id": "step_signInAzure_submit_cb4a8be87_3_2", + "step_id": "step_signInAzure_submit_c3f41809f_3_2", "agent": "interaction", "tool": "key_press", "parameters": { @@ -1799,7 +1673,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_signInAzure_typePassword_cb4a8be87_3_2" + "step_signInAzure_typePassword_c3f41809f_3_2" ], "preconditions": [ "dhash:512:384:0:20:1908f0d9d1e6e6e4" @@ -1812,7 +1686,7 @@ ] }, { - "step_id": "step_signInAzure_closeBrowser_cb4a8be87_3_2", + "step_id": "step_signInAzure_closeBrowser_c3f41809f_3_2", "agent": "interaction", "tool": "click", "parameters": { @@ -1826,7 +1700,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_signInAzure_submit_cb4a8be87_3_2" + "step_signInAzure_submit_c3f41809f_3_2" ], "preconditions": [ "dhash:991:18:16:5:b020624245454242", @@ -1841,7 +1715,7 @@ ] }, { - "step_id": "step_signInAzure_assertReady_cb4a8be87_3_2", + "step_id": "step_signInAzure_assertReady_c3f41809f_3_2", "agent": "assertion", "tool": "", "parameters": {}, @@ -1851,7 +1725,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_signInAzure_closeBrowser_cb4a8be87_3_2" + "step_signInAzure_closeBrowser_c3f41809f_3_2" ], "preconditions": [], "postconditions": [], @@ -1863,7 +1737,7 @@ ] }, { - "step_id": "step_executeCommand_open_cb4a8be87_4_1", + "step_id": "step_executeCommand_open_c3f41809f_4_1", "agent": "interaction", "tool": "key_press", "parameters": { @@ -1875,7 +1749,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_signInAzure_assertReady_cb4a8be87_3_2" + "step_signInAzure_assertReady_c3f41809f_3_2" ], "preconditions": [], "postconditions": [], @@ -1885,7 +1759,7 @@ ] }, { - "step_id": "step_executeCommand_assertPalette_cb4a8be87_4_1", + "step_id": "step_executeCommand_assertPalette_c3f41809f_4_1", "agent": "assertion", "tool": "", "parameters": {}, @@ -1895,7 +1769,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_executeCommand_open_cb4a8be87_4_1" + "step_executeCommand_open_c3f41809f_4_1" ], "preconditions": [], "postconditions": [], @@ -1906,7 +1780,7 @@ ] }, { - "step_id": "step_executeCommand_filter_cb4a8be87_4_1", + "step_id": "step_executeCommand_filter_c3f41809f_4_1", "agent": "interaction", "tool": "type_text", "parameters": { @@ -1918,7 +1792,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_executeCommand_assertPalette_cb4a8be87_4_1" + "step_executeCommand_assertPalette_c3f41809f_4_1" ], "preconditions": [], "postconditions": [], @@ -1928,7 +1802,7 @@ ] }, { - "step_id": "step_executeCommand_assertCommand_cb4a8be87_4_1", + "step_id": "step_executeCommand_assertCommand_c3f41809f_4_1", "agent": "assertion", "tool": "", "parameters": {}, @@ -1938,7 +1812,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_executeCommand_filter_cb4a8be87_4_1" + "step_executeCommand_filter_c3f41809f_4_1" ], "preconditions": [], "postconditions": [], @@ -1949,7 +1823,7 @@ ] }, { - "step_id": "step_executeCommand_execute_cb4a8be87_4_1", + "step_id": "step_executeCommand_execute_c3f41809f_4_1", "agent": "interaction", "tool": "key_press", "parameters": { @@ -1961,7 +1835,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_executeCommand_assertCommand_cb4a8be87_4_1" + "step_executeCommand_assertCommand_c3f41809f_4_1" ], "preconditions": [], "postconditions": [], @@ -1971,7 +1845,7 @@ ] }, { - "step_id": "step_signInM365FromPicker_assertOption_cb4a8be87_4_2", + "step_id": "step_signInM365FromPicker_assertOption_c3f41809f_4_2", "agent": "assertion", "tool": "", "parameters": {}, @@ -1981,7 +1855,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_executeCommand_execute_cb4a8be87_4_1" + "step_executeCommand_execute_c3f41809f_4_1" ], "preconditions": [], "postconditions": [], @@ -1993,7 +1867,7 @@ ] }, { - "step_id": "step_signInM365FromPicker_selectOption_cb4a8be87_4_2", + "step_id": "step_signInM365FromPicker_selectOption_c3f41809f_4_2", "agent": "interaction", "tool": "click", "parameters": { @@ -2007,7 +1881,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_signInM365FromPicker_assertOption_cb4a8be87_4_2" + "step_signInM365FromPicker_assertOption_c3f41809f_4_2" ], "preconditions": [ "dhash:213:102:16:5:9c63d67674d4c718", @@ -2021,7 +1895,7 @@ ] }, { - "step_id": "step_signInM365FromPicker_confirmSignIn_cb4a8be87_4_2", + "step_id": "step_signInM365FromPicker_confirmSignIn_c3f41809f_4_2", "agent": "interaction", "tool": "click", "parameters": { @@ -2035,7 +1909,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_signInM365FromPicker_selectOption_cb4a8be87_4_2" + "step_signInM365FromPicker_selectOption_c3f41809f_4_2" ], "preconditions": [ "dhash:762:97:16:5:24b1a72ba9aba343", @@ -2049,7 +1923,7 @@ ] }, { - "step_id": "step_signInM365FromPicker_useAnotherAccount_cb4a8be87_4_2", + "step_id": "step_signInM365FromPicker_useAnotherAccount_c3f41809f_4_2", "agent": "interaction", "tool": "click", "parameters": { @@ -2063,7 +1937,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_signInM365FromPicker_confirmSignIn_cb4a8be87_4_2" + "step_signInM365FromPicker_confirmSignIn_c3f41809f_4_2" ], "preconditions": [ "dhash:447:487:16:5:ac534b4aaaaa6a15", @@ -2078,7 +1952,7 @@ ] }, { - "step_id": "step_signInM365FromPicker_typeAccount_cb4a8be87_4_2", + "step_id": "step_signInM365FromPicker_typeAccount_c3f41809f_4_2", "agent": "interaction", "tool": "type_text", "parameters": { @@ -2090,7 +1964,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_signInM365FromPicker_useAnotherAccount_cb4a8be87_4_2" + "step_signInM365FromPicker_useAnotherAccount_c3f41809f_4_2" ], "preconditions": [ "dhash:512:384:0:20:1392f8d8c6e6dae4" @@ -2103,7 +1977,7 @@ ] }, { - "step_id": "step_signInM365FromPicker_next_cb4a8be87_4_2", + "step_id": "step_signInM365FromPicker_next_c3f41809f_4_2", "agent": "interaction", "tool": "click", "parameters": { @@ -2117,7 +1991,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_signInM365FromPicker_typeAccount_cb4a8be87_4_2" + "step_signInM365FromPicker_typeAccount_c3f41809f_4_2" ], "preconditions": [ "dhash:655:505:16:5:0000000080400020", @@ -2132,7 +2006,7 @@ ] }, { - "step_id": "step_signInM365FromPicker_typePassword_cb4a8be87_4_2", + "step_id": "step_signInM365FromPicker_typePassword_c3f41809f_4_2", "agent": "interaction", "tool": "type_text", "parameters": { @@ -2144,7 +2018,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_signInM365FromPicker_next_cb4a8be87_4_2" + "step_signInM365FromPicker_next_c3f41809f_4_2" ], "preconditions": [ "dhash:512:384:0:20:1392e8d8d9f6e6e4" @@ -2157,7 +2031,7 @@ ] }, { - "step_id": "step_signInM365FromPicker_submit_cb4a8be87_4_2", + "step_id": "step_signInM365FromPicker_submit_c3f41809f_4_2", "agent": "interaction", "tool": "key_press", "parameters": { @@ -2169,7 +2043,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_signInM365FromPicker_typePassword_cb4a8be87_4_2" + "step_signInM365FromPicker_typePassword_c3f41809f_4_2" ], "preconditions": [ "dhash:512:384:0:20:1392e8d8d9f6e6e4" @@ -2182,7 +2056,7 @@ ] }, { - "step_id": "step_signInM365FromPicker_closeBrowser_cb4a8be87_4_2", + "step_id": "step_signInM365FromPicker_closeBrowser_c3f41809f_4_2", "agent": "interaction", "tool": "click", "parameters": { @@ -2196,7 +2070,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_signInM365FromPicker_submit_cb4a8be87_4_2" + "step_signInM365FromPicker_submit_c3f41809f_4_2" ], "preconditions": [ "dhash:1008:19:16:5:a322c95a325ac922", @@ -2211,7 +2085,7 @@ ] }, { - "step_id": "step_signInM365FromPicker_assertReady_cb4a8be87_4_2", + "step_id": "step_signInM365FromPicker_assertReady_c3f41809f_4_2", "agent": "assertion", "tool": "", "parameters": {}, @@ -2221,7 +2095,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_signInM365FromPicker_closeBrowser_cb4a8be87_4_2" + "step_signInM365FromPicker_closeBrowser_c3f41809f_4_2" ], "preconditions": [], "postconditions": [], @@ -2233,7 +2107,115 @@ ] }, { - "step_id": "step_executeCommand_open_cb4a8be87_5_1", + "step_id": "step_executeCommand_open_c3f41809f_5_1", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "f1" + }, + "description": "Press the F1 key to open the Command Palette in Visual Studio Code.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_signInM365FromPicker_assertReady_c3f41809f_4_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertPalette_c3f41809f_5_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Visual Studio Code Command Palette is visible with a > character in its input box and is ready to accept a command search.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_open_c3f41809f_5_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_filter_c3f41809f_5_1", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Notifications: Clear All Notifications" + }, + "description": "Type the resolved command title into the active Command Palette.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertPalette_c3f41809f_5_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertCommand_c3f41809f_5_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Command Palette input box reads >Notifications: Clear All Notifications and the highlighted command listed under it is titled Notifications: Clear All Notifications.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_filter_c3f41809f_5_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_execute_c3f41809f_5_1", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to execute the selected Command Palette command.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertCommand_c3f41809f_5_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_open_c3f41809f_5_2", "agent": "interaction", "tool": "key_press", "parameters": { @@ -2245,7 +2227,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_signInM365FromPicker_assertReady_cb4a8be87_4_2" + "step_executeCommand_execute_c3f41809f_5_1" ], "preconditions": [], "postconditions": [], @@ -2255,7 +2237,7 @@ ] }, { - "step_id": "step_executeCommand_assertPalette_cb4a8be87_5_1", + "step_id": "step_executeCommand_assertPalette_c3f41809f_5_2", "agent": "assertion", "tool": "", "parameters": {}, @@ -2265,7 +2247,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_executeCommand_open_cb4a8be87_5_1" + "step_executeCommand_open_c3f41809f_5_2" ], "preconditions": [], "postconditions": [], @@ -2276,7 +2258,7 @@ ] }, { - "step_id": "step_executeCommand_filter_cb4a8be87_5_1", + "step_id": "step_executeCommand_filter_c3f41809f_5_2", "agent": "interaction", "tool": "type_text", "parameters": { @@ -2288,7 +2270,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_executeCommand_assertPalette_cb4a8be87_5_1" + "step_executeCommand_assertPalette_c3f41809f_5_2" ], "preconditions": [], "postconditions": [], @@ -2298,7 +2280,7 @@ ] }, { - "step_id": "step_executeCommand_assertCommand_cb4a8be87_5_1", + "step_id": "step_executeCommand_assertCommand_c3f41809f_5_2", "agent": "assertion", "tool": "", "parameters": {}, @@ -2308,7 +2290,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_executeCommand_filter_cb4a8be87_5_1" + "step_executeCommand_filter_c3f41809f_5_2" ], "preconditions": [], "postconditions": [], @@ -2319,7 +2301,7 @@ ] }, { - "step_id": "step_executeCommand_execute_cb4a8be87_5_1", + "step_id": "step_executeCommand_execute_c3f41809f_5_2", "agent": "interaction", "tool": "key_press", "parameters": { @@ -2331,7 +2313,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_executeCommand_assertCommand_cb4a8be87_5_1" + "step_executeCommand_assertCommand_c3f41809f_5_2" ], "preconditions": [], "postconditions": [], @@ -2341,7 +2323,7 @@ ] }, { - "step_id": "step_executeCommand_open_cb4a8be87_5_2", + "step_id": "step_executeCommand_open_c3f41809f_5_3", "agent": "interaction", "tool": "key_press", "parameters": { @@ -2353,7 +2335,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_executeCommand_execute_cb4a8be87_5_1" + "step_executeCommand_execute_c3f41809f_5_2" ], "preconditions": [], "postconditions": [], @@ -2363,7 +2345,7 @@ ] }, { - "step_id": "step_executeCommand_assertPalette_cb4a8be87_5_2", + "step_id": "step_executeCommand_assertPalette_c3f41809f_5_3", "agent": "assertion", "tool": "", "parameters": {}, @@ -2373,7 +2355,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_executeCommand_open_cb4a8be87_5_2" + "step_executeCommand_open_c3f41809f_5_3" ], "preconditions": [], "postconditions": [], @@ -2384,7 +2366,7 @@ ] }, { - "step_id": "step_executeCommand_filter_cb4a8be87_5_2", + "step_id": "step_executeCommand_filter_c3f41809f_5_3", "agent": "interaction", "tool": "type_text", "parameters": { @@ -2396,7 +2378,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_executeCommand_assertPalette_cb4a8be87_5_2" + "step_executeCommand_assertPalette_c3f41809f_5_3" ], "preconditions": [], "postconditions": [], @@ -2406,7 +2388,7 @@ ] }, { - "step_id": "step_executeCommand_assertCommand_cb4a8be87_5_2", + "step_id": "step_executeCommand_assertCommand_c3f41809f_5_3", "agent": "assertion", "tool": "", "parameters": {}, @@ -2416,7 +2398,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_executeCommand_filter_cb4a8be87_5_2" + "step_executeCommand_filter_c3f41809f_5_3" ], "preconditions": [], "postconditions": [], @@ -2427,7 +2409,7 @@ ] }, { - "step_id": "step_executeCommand_execute_cb4a8be87_5_2", + "step_id": "step_executeCommand_execute_c3f41809f_5_3", "agent": "interaction", "tool": "key_press", "parameters": { @@ -2439,7 +2421,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_executeCommand_assertCommand_cb4a8be87_5_2" + "step_executeCommand_assertCommand_c3f41809f_5_3" ], "preconditions": [], "postconditions": [], @@ -2449,7 +2431,7 @@ ] }, { - "step_id": "step_singleSelect_assertQuestion_cb4a8be87_5_3", + "step_id": "step_singleSelect_assertQuestion_c3f41809f_5_4", "agent": "assertion", "tool": "", "parameters": {}, @@ -2459,7 +2441,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_executeCommand_execute_cb4a8be87_5_2" + "step_executeCommand_execute_c3f41809f_5_3" ], "preconditions": [], "postconditions": [], @@ -2470,17 +2452,17 @@ ] }, { - "step_id": "step_singleSelect_assertOptionsLoaded_cb4a8be87_5_3", + "step_id": "step_singleSelect_assertOptionsLoaded_c3f41809f_5_4", "agent": "assertion", "tool": "", "parameters": {}, - "description": "@assertion the prompt titled Select a resource group lists at least one option below its input box.", + "description": "@assertion the prompt titled Select a resource group has finished loading and lists at least one selectable option.", "content_refs": [], "timeout": 120, "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_singleSelect_assertQuestion_cb4a8be87_5_3" + "step_singleSelect_assertQuestion_c3f41809f_5_4" ], "preconditions": [], "postconditions": [], @@ -2491,7 +2473,7 @@ ] }, { - "step_id": "step_singleSelect_filter_cb4a8be87_5_3", + "step_id": "step_singleSelect_filter_c3f41809f_5_4", "agent": "interaction", "tool": "type_text", "parameters": { @@ -2503,7 +2485,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_singleSelect_assertOptionsLoaded_cb4a8be87_5_3" + "step_singleSelect_assertOptionsLoaded_c3f41809f_5_4" ], "preconditions": [], "postconditions": [], @@ -2513,7 +2495,7 @@ ] }, { - "step_id": "step_singleSelect_assertOption_cb4a8be87_5_3", + "step_id": "step_singleSelect_assertOption_c3f41809f_5_4", "agent": "assertion", "tool": "", "parameters": {}, @@ -2523,7 +2505,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_singleSelect_filter_cb4a8be87_5_3" + "step_singleSelect_filter_c3f41809f_5_4" ], "preconditions": [], "postconditions": [], @@ -2534,7 +2516,7 @@ ] }, { - "step_id": "step_singleSelect_confirm_cb4a8be87_5_3", + "step_id": "step_singleSelect_confirm_c3f41809f_5_4", "agent": "interaction", "tool": "key_press", "parameters": { @@ -2546,7 +2528,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_singleSelect_assertOption_cb4a8be87_5_3" + "step_singleSelect_assertOption_c3f41809f_5_4" ], "preconditions": [], "postconditions": [], @@ -2556,7 +2538,7 @@ ] }, { - "step_id": "step_textInput_assertQuestion_cb4a8be87_5_4", + "step_id": "step_textInput_assertQuestion_c3f41809f_5_5", "agent": "assertion", "tool": "", "parameters": {}, @@ -2566,7 +2548,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_singleSelect_confirm_cb4a8be87_5_3" + "step_singleSelect_confirm_c3f41809f_5_4" ], "preconditions": [], "postconditions": [], @@ -2577,7 +2559,7 @@ ] }, { - "step_id": "step_textInput_input_cb4a8be87_5_4", + "step_id": "step_textInput_input_c3f41809f_5_5", "agent": "interaction", "tool": "type_text", "parameters": { @@ -2589,7 +2571,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_textInput_assertQuestion_cb4a8be87_5_4" + "step_textInput_assertQuestion_c3f41809f_5_5" ], "preconditions": [], "postconditions": [], @@ -2599,7 +2581,7 @@ ] }, { - "step_id": "step_textInput_confirm_cb4a8be87_5_4", + "step_id": "step_textInput_confirm_c3f41809f_5_5", "agent": "interaction", "tool": "key_press", "parameters": { @@ -2611,7 +2593,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_textInput_input_cb4a8be87_5_4" + "step_textInput_input_c3f41809f_5_5" ], "preconditions": [], "postconditions": [], @@ -2621,7 +2603,7 @@ ] }, { - "step_id": "step_singleSelect_assertQuestion_cb4a8be87_5_5", + "step_id": "step_singleSelect_assertQuestion_c3f41809f_5_6", "agent": "assertion", "tool": "", "parameters": {}, @@ -2631,7 +2613,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_textInput_confirm_cb4a8be87_5_4" + "step_textInput_confirm_c3f41809f_5_5" ], "preconditions": [], "postconditions": [], @@ -2642,17 +2624,17 @@ ] }, { - "step_id": "step_singleSelect_assertOptionsLoaded_cb4a8be87_5_5", + "step_id": "step_singleSelect_assertOptionsLoaded_c3f41809f_5_6", "agent": "assertion", "tool": "", "parameters": {}, - "description": "@assertion the prompt titled Location for the new resource group lists at least one option below its input box.", + "description": "@assertion the prompt titled Location for the new resource group has finished loading and lists at least one selectable option.", "content_refs": [], "timeout": 120, "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_singleSelect_assertQuestion_cb4a8be87_5_5" + "step_singleSelect_assertQuestion_c3f41809f_5_6" ], "preconditions": [], "postconditions": [], @@ -2663,7 +2645,7 @@ ] }, { - "step_id": "step_singleSelect_filter_cb4a8be87_5_5", + "step_id": "step_singleSelect_filter_c3f41809f_5_6", "agent": "interaction", "tool": "type_text", "parameters": { @@ -2675,7 +2657,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_singleSelect_assertOptionsLoaded_cb4a8be87_5_5" + "step_singleSelect_assertOptionsLoaded_c3f41809f_5_6" ], "preconditions": [], "postconditions": [], @@ -2685,7 +2667,7 @@ ] }, { - "step_id": "step_singleSelect_assertOption_cb4a8be87_5_5", + "step_id": "step_singleSelect_assertOption_c3f41809f_5_6", "agent": "assertion", "tool": "", "parameters": {}, @@ -2695,7 +2677,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_singleSelect_filter_cb4a8be87_5_5" + "step_singleSelect_filter_c3f41809f_5_6" ], "preconditions": [], "postconditions": [], @@ -2706,7 +2688,7 @@ ] }, { - "step_id": "step_singleSelect_confirm_cb4a8be87_5_5", + "step_id": "step_singleSelect_confirm_c3f41809f_5_6", "agent": "interaction", "tool": "key_press", "parameters": { @@ -2718,7 +2700,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_singleSelect_assertOption_cb4a8be87_5_5" + "step_singleSelect_assertOption_c3f41809f_5_6" ], "preconditions": [], "postconditions": [], @@ -2728,7 +2710,7 @@ ] }, { - "step_id": "step_clickPrimaryAction_assertDialog_cb4a8be87_5_6", + "step_id": "step_clickPrimaryAction_assertDialog_c3f41809f_5_7", "agent": "assertion", "tool": "", "parameters": {}, @@ -2738,7 +2720,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_singleSelect_confirm_cb4a8be87_5_5" + "step_singleSelect_confirm_c3f41809f_5_6" ], "preconditions": [], "postconditions": [], @@ -2749,7 +2731,7 @@ ] }, { - "step_id": "step_clickPrimaryAction_click_cb4a8be87_5_6", + "step_id": "step_clickPrimaryAction_click_c3f41809f_5_7", "agent": "interaction", "tool": "key_press", "parameters": { @@ -2761,7 +2743,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_clickPrimaryAction_assertDialog_cb4a8be87_5_6" + "step_clickPrimaryAction_assertDialog_c3f41809f_5_7" ], "preconditions": [], "postconditions": [], @@ -2771,7 +2753,7 @@ ] }, { - "step_id": "step_assertNotificationContains_assert_cb4a8be87_5_7", + "step_id": "step_assertNotificationContains_assert_c3f41809f_5_8", "agent": "assertion", "tool": "", "parameters": {}, @@ -2781,18 +2763,18 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_clickPrimaryAction_click_cb4a8be87_5_6" + "step_clickPrimaryAction_click_c3f41809f_5_7" ], "preconditions": [], "postconditions": [], "tags": [ "component:notifications", "action:assert-contains", - "step_retry_timeout: 300" + "step_retry_timeout: 900" ] }, { - "step_id": "step_executeCommand_open_cb4a8be87_6_1", + "step_id": "step_executeCommand_open_c3f41809f_6_1", "agent": "interaction", "tool": "key_press", "parameters": { @@ -2804,7 +2786,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_assertNotificationContains_assert_cb4a8be87_5_7" + "step_assertNotificationContains_assert_c3f41809f_5_8" ], "preconditions": [], "postconditions": [], @@ -2814,7 +2796,7 @@ ] }, { - "step_id": "step_executeCommand_assertPalette_cb4a8be87_6_1", + "step_id": "step_executeCommand_assertPalette_c3f41809f_6_1", "agent": "assertion", "tool": "", "parameters": {}, @@ -2824,7 +2806,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_executeCommand_open_cb4a8be87_6_1" + "step_executeCommand_open_c3f41809f_6_1" ], "preconditions": [], "postconditions": [], @@ -2835,7 +2817,115 @@ ] }, { - "step_id": "step_executeCommand_filter_cb4a8be87_6_1", + "step_id": "step_executeCommand_filter_c3f41809f_6_1", + "agent": "interaction", + "tool": "type_text", + "parameters": { + "text": "Notifications: Clear All Notifications" + }, + "description": "Type the resolved command title into the active Command Palette.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertPalette_c3f41809f_6_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertCommand_c3f41809f_6_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Command Palette input box reads >Notifications: Clear All Notifications and the highlighted command listed under it is titled Notifications: Clear All Notifications.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_filter_c3f41809f_6_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_execute_c3f41809f_6_1", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to execute the selected Command Palette command.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_assertCommand_c3f41809f_6_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_open_c3f41809f_6_2", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "f1" + }, + "description": "Press the F1 key to open the Command Palette in Visual Studio Code.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_execute_c3f41809f_6_1" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command" + ] + }, + { + "step_id": "step_executeCommand_assertPalette_c3f41809f_6_2", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the Visual Studio Code Command Palette is visible with a > character in its input box and is ready to accept a command search.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_executeCommand_open_c3f41809f_6_2" + ], + "preconditions": [], + "postconditions": [], + "tags": [ + "component:command-palette", + "action:execute-command", + "step_retry_timeout: 30" + ] + }, + { + "step_id": "step_executeCommand_filter_c3f41809f_6_2", "agent": "interaction", "tool": "type_text", "parameters": { @@ -2847,7 +2937,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_executeCommand_assertPalette_cb4a8be87_6_1" + "step_executeCommand_assertPalette_c3f41809f_6_2" ], "preconditions": [], "postconditions": [], @@ -2857,7 +2947,7 @@ ] }, { - "step_id": "step_executeCommand_assertCommand_cb4a8be87_6_1", + "step_id": "step_executeCommand_assertCommand_c3f41809f_6_2", "agent": "assertion", "tool": "", "parameters": {}, @@ -2867,7 +2957,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_executeCommand_filter_cb4a8be87_6_1" + "step_executeCommand_filter_c3f41809f_6_2" ], "preconditions": [], "postconditions": [], @@ -2878,7 +2968,7 @@ ] }, { - "step_id": "step_executeCommand_execute_cb4a8be87_6_1", + "step_id": "step_executeCommand_execute_c3f41809f_6_2", "agent": "interaction", "tool": "key_press", "parameters": { @@ -2890,7 +2980,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_executeCommand_assertCommand_cb4a8be87_6_1" + "step_executeCommand_assertCommand_c3f41809f_6_2" ], "preconditions": [], "postconditions": [], @@ -2900,7 +2990,7 @@ ] }, { - "step_id": "step_executeCommand_open_cb4a8be87_6_2", + "step_id": "step_executeCommand_open_c3f41809f_6_3", "agent": "interaction", "tool": "key_press", "parameters": { @@ -2912,7 +3002,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_executeCommand_execute_cb4a8be87_6_1" + "step_executeCommand_execute_c3f41809f_6_2" ], "preconditions": [], "postconditions": [], @@ -2922,7 +3012,7 @@ ] }, { - "step_id": "step_executeCommand_assertPalette_cb4a8be87_6_2", + "step_id": "step_executeCommand_assertPalette_c3f41809f_6_3", "agent": "assertion", "tool": "", "parameters": {}, @@ -2932,7 +3022,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_executeCommand_open_cb4a8be87_6_2" + "step_executeCommand_open_c3f41809f_6_3" ], "preconditions": [], "postconditions": [], @@ -2943,7 +3033,7 @@ ] }, { - "step_id": "step_executeCommand_filter_cb4a8be87_6_2", + "step_id": "step_executeCommand_filter_c3f41809f_6_3", "agent": "interaction", "tool": "type_text", "parameters": { @@ -2955,7 +3045,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_executeCommand_assertPalette_cb4a8be87_6_2" + "step_executeCommand_assertPalette_c3f41809f_6_3" ], "preconditions": [], "postconditions": [], @@ -2965,7 +3055,7 @@ ] }, { - "step_id": "step_executeCommand_assertCommand_cb4a8be87_6_2", + "step_id": "step_executeCommand_assertCommand_c3f41809f_6_3", "agent": "assertion", "tool": "", "parameters": {}, @@ -2975,7 +3065,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_executeCommand_filter_cb4a8be87_6_2" + "step_executeCommand_filter_c3f41809f_6_3" ], "preconditions": [], "postconditions": [], @@ -2986,7 +3076,7 @@ ] }, { - "step_id": "step_executeCommand_execute_cb4a8be87_6_2", + "step_id": "step_executeCommand_execute_c3f41809f_6_3", "agent": "interaction", "tool": "key_press", "parameters": { @@ -2998,7 +3088,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_executeCommand_assertCommand_cb4a8be87_6_2" + "step_executeCommand_assertCommand_c3f41809f_6_3" ], "preconditions": [], "postconditions": [], @@ -3008,7 +3098,7 @@ ] }, { - "step_id": "step_clickPrimaryAction_assertDialog_cb4a8be87_6_3", + "step_id": "step_clickPrimaryAction_assertDialog_c3f41809f_6_4", "agent": "assertion", "tool": "", "parameters": {}, @@ -3018,7 +3108,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_executeCommand_execute_cb4a8be87_6_2" + "step_executeCommand_execute_c3f41809f_6_3" ], "preconditions": [], "postconditions": [], @@ -3029,7 +3119,7 @@ ] }, { - "step_id": "step_clickPrimaryAction_click_cb4a8be87_6_3", + "step_id": "step_clickPrimaryAction_click_c3f41809f_6_4", "agent": "interaction", "tool": "key_press", "parameters": { @@ -3041,7 +3131,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_clickPrimaryAction_assertDialog_cb4a8be87_6_3" + "step_clickPrimaryAction_assertDialog_c3f41809f_6_4" ], "preconditions": [], "postconditions": [], @@ -3051,7 +3141,7 @@ ] }, { - "step_id": "step_assertNotificationContains_assert_cb4a8be87_6_4", + "step_id": "step_assertNotificationContains_assert_c3f41809f_6_5", "agent": "assertion", "tool": "", "parameters": {}, @@ -3061,18 +3151,18 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_clickPrimaryAction_click_cb4a8be87_6_3" + "step_clickPrimaryAction_click_c3f41809f_6_4" ], "preconditions": [], "postconditions": [], "tags": [ "component:notifications", "action:assert-contains", - "step_retry_timeout: 300" + "step_retry_timeout: 900" ] }, { - "step_id": "step_executeCommand_open_cb4a8be87_7_1", + "step_id": "step_executeCommand_open_c3f41809f_7_1", "agent": "interaction", "tool": "key_press", "parameters": { @@ -3084,7 +3174,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_assertNotificationContains_assert_cb4a8be87_6_4" + "step_assertNotificationContains_assert_c3f41809f_6_5" ], "preconditions": [], "postconditions": [], @@ -3094,7 +3184,7 @@ ] }, { - "step_id": "step_executeCommand_assertPalette_cb4a8be87_7_1", + "step_id": "step_executeCommand_assertPalette_c3f41809f_7_1", "agent": "assertion", "tool": "", "parameters": {}, @@ -3104,7 +3194,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_executeCommand_open_cb4a8be87_7_1" + "step_executeCommand_open_c3f41809f_7_1" ], "preconditions": [], "postconditions": [], @@ -3115,7 +3205,7 @@ ] }, { - "step_id": "step_executeCommand_filter_cb4a8be87_7_1", + "step_id": "step_executeCommand_filter_c3f41809f_7_1", "agent": "interaction", "tool": "type_text", "parameters": { @@ -3127,7 +3217,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_executeCommand_assertPalette_cb4a8be87_7_1" + "step_executeCommand_assertPalette_c3f41809f_7_1" ], "preconditions": [], "postconditions": [], @@ -3137,7 +3227,7 @@ ] }, { - "step_id": "step_executeCommand_assertCommand_cb4a8be87_7_1", + "step_id": "step_executeCommand_assertCommand_c3f41809f_7_1", "agent": "assertion", "tool": "", "parameters": {}, @@ -3147,7 +3237,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_executeCommand_filter_cb4a8be87_7_1" + "step_executeCommand_filter_c3f41809f_7_1" ], "preconditions": [], "postconditions": [], @@ -3158,7 +3248,7 @@ ] }, { - "step_id": "step_executeCommand_execute_cb4a8be87_7_1", + "step_id": "step_executeCommand_execute_c3f41809f_7_1", "agent": "interaction", "tool": "key_press", "parameters": { @@ -3170,7 +3260,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_executeCommand_assertCommand_cb4a8be87_7_1" + "step_executeCommand_assertCommand_c3f41809f_7_1" ], "preconditions": [], "postconditions": [], @@ -3180,7 +3270,7 @@ ] }, { - "step_id": "step_filterOption_filter_cb4a8be87_7_2", + "step_id": "step_filterOption_filter_c3f41809f_7_2", "agent": "interaction", "tool": "type_text", "parameters": { @@ -3192,7 +3282,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_executeCommand_execute_cb4a8be87_7_1" + "step_executeCommand_execute_c3f41809f_7_1" ], "preconditions": [], "postconditions": [], @@ -3202,7 +3292,7 @@ ] }, { - "step_id": "step_filterOption_assertOption_cb4a8be87_7_2", + "step_id": "step_filterOption_assertOption_c3f41809f_7_2", "agent": "assertion", "tool": "", "parameters": {}, @@ -3212,7 +3302,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_filterOption_filter_cb4a8be87_7_2" + "step_filterOption_filter_c3f41809f_7_2" ], "preconditions": [], "postconditions": [], @@ -3223,7 +3313,7 @@ ] }, { - "step_id": "step_filterOption_confirm_cb4a8be87_7_2", + "step_id": "step_filterOption_confirm_c3f41809f_7_2", "agent": "interaction", "tool": "key_press", "parameters": { @@ -3235,7 +3325,7 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_filterOption_assertOption_cb4a8be87_7_2" + "step_filterOption_assertOption_c3f41809f_7_2" ], "preconditions": [], "postconditions": [], @@ -3245,131 +3335,140 @@ ] }, { - "step_id": "step_assertReady_assertReady_cb4a8be87_7_3", + "step_id": "step_browserM365PasswordSignIn_assertPassword_c3f41809f_7_3", "agent": "assertion", "tool": "", "parameters": {}, - "description": "@assertion the Microsoft Teams app details page for an app whose name starts with ${{var:app_name}} is visible.", + "description": "@assertion the Microsoft sign-in page in Chrome names ${{env:M365_ACCOUNT_NAME}} and asks for that account's password.", "content_refs": [], "timeout": 30, "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_filterOption_confirm_cb4a8be87_7_2" + "step_filterOption_confirm_c3f41809f_7_2" ], "preconditions": [], "postconditions": [], "tags": [ - "component:browser", - "action:assert-ready", - "step_retry_timeout: 180" + "component:authentication", + "surface:browser", + "step_retry_timeout: 300" ] }, { - "step_id": "step_addAndOpenApp_assertAdd_cb4a8be87_8_1", - "agent": "assertion", - "tool": "", - "parameters": {}, - "description": "@assertion the blue \"Add\" button exists.", + "step_id": "step_browserM365PasswordSignIn_focusPassword_c3f41809f_7_3", + "agent": "interaction", + "tool": "click", + "parameters": { + "button": "left", + "x": 400, + "y": 405 + }, + "description": "Click the password input on the Microsoft sign-in page to move focus out of the browser address bar.", "content_refs": [], "timeout": 30, "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_assertReady_assertReady_cb4a8be87_7_3" + "step_browserM365PasswordSignIn_assertPassword_c3f41809f_7_3" ], "preconditions": [], "postconditions": [], "tags": [ - "component:browser", - "host_surface:teams", - "entry_state:add", - "step_retry_timeout: 180" + "component:authentication", + "surface:browser" ] }, { - "step_id": "step_addAndOpenApp_add_cb4a8be87_8_1", + "step_id": "step_browserM365PasswordSignIn_enterPassword_c3f41809f_7_3", "agent": "interaction", - "tool": "click", + "tool": "type_text", "parameters": { - "button": "left", - "x": 288, - "y": 214 + "text": "${{secret:M365_ACCOUNT_PASSWORD}}" }, - "description": "Click Add on the app details popup within the Microsoft Teams interface.", + "description": "Enter the registered Microsoft 365 password in the focused password input of the browser sign-in form.", "content_refs": [], "timeout": 30, "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_addAndOpenApp_assertAdd_cb4a8be87_8_1" + "step_browserM365PasswordSignIn_focusPassword_c3f41809f_7_3" ], - "preconditions": [ - "dhash:288:214:16:5:05100a0511030b12", - "dhash:288:214:96:5:2616011c1c01005b", - "dhash:288:214:0:10:00b4b0d8f8fcf0d8" + "preconditions": [], + "postconditions": [], + "tags": [ + "component:authentication", + "surface:browser" + ] + }, + { + "step_id": "step_browserM365PasswordSignIn_submitPassword_c3f41809f_7_3", + "agent": "interaction", + "tool": "key_press", + "parameters": { + "key": "enter" + }, + "description": "Press Enter to submit the Microsoft 365 password.", + "content_refs": [], + "timeout": 30, + "retry_count": 0, + "continue_on_error": "false", + "depends_on": [ + "step_browserM365PasswordSignIn_enterPassword_c3f41809f_7_3" ], + "preconditions": [], "postconditions": [], "tags": [ - "component:browser", - "host_surface:teams", - "entry_state:add" + "component:authentication", + "surface:browser" ] }, { - "step_id": "step_addAndOpenApp_assertAdded_cb4a8be87_8_1", + "step_id": "step_browserM365PasswordSignIn_assertStaySignedIn_c3f41809f_7_3", "agent": "assertion", "tool": "", "parameters": {}, - "description": "@assertion the \"Added successfully!\" dialog and its Open button are visible.", + "description": "@assertion the Microsoft Stay signed in question is visible with Yes focused.", "content_refs": [], "timeout": 30, "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_addAndOpenApp_add_cb4a8be87_8_1" + "step_browserM365PasswordSignIn_submitPassword_c3f41809f_7_3" ], "preconditions": [], "postconditions": [], "tags": [ - "component:browser", - "host_surface:teams", - "entry_state:added", - "step_retry_timeout: 180" + "component:authentication", + "surface:browser", + "step_retry_timeout: 120" ] }, { - "step_id": "step_addAndOpenApp_open_cb4a8be87_8_1", + "step_id": "step_browserM365PasswordSignIn_confirmStaySignedIn_c3f41809f_7_3", "agent": "interaction", - "tool": "click", + "tool": "key_press", "parameters": { - "button": "left", - "x": 533, - "y": 508 + "key": "enter" }, - "description": "Click Open in the Microsoft Teams Added successfully dialog.", + "description": "Press Enter to confirm staying signed in.", "content_refs": [], "timeout": 30, "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_addAndOpenApp_assertAdded_cb4a8be87_8_1" - ], - "preconditions": [ - "dhash:533:508:16:5:00987494ca4acacc", - "dhash:533:508:96:5:000058a48598e36b", - "dhash:533:508:0:10:1669696969696979" + "step_browserM365PasswordSignIn_assertStaySignedIn_c3f41809f_7_3" ], + "preconditions": [], "postconditions": [], "tags": [ - "component:browser", - "host_surface:teams", - "entry_state:added", - "precondition_wait_timeout: 120" + "component:authentication", + "surface:browser", + "delay: 30" ] }, { - "step_id": "step_addAndOpenApp_assertReady_cb4a8be87_8_1", + "step_id": "step_assertReady_assertReady_c3f41809f_7_4", "agent": "assertion", "tool": "", "parameters": {}, @@ -3379,164 +3478,139 @@ "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_addAndOpenApp_open_cb4a8be87_8_1" + "step_browserM365PasswordSignIn_confirmStaySignedIn_c3f41809f_7_3" ], "preconditions": [], "postconditions": [], "tags": [ "component:browser", - "host_surface:teams", - "readiness:chat-ready", + "action:assert-ready", "step_retry_timeout: 180" ] }, { - "step_id": "step_sendTeamsMessage_assertInput_cb4a8be87_9_1", + "step_id": "step_addAndOpenApp_assertAdd_c3f41809f_8_1", "agent": "assertion", "tool": "", "parameters": {}, - "description": "@assertion the Teams \"Type a message\" input is visible.", + "description": "@assertion the blue \"Add\" button exists.", "content_refs": [], "timeout": 30, "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_addAndOpenApp_assertReady_cb4a8be87_8_1" + "step_assertReady_assertReady_c3f41809f_7_4" ], "preconditions": [], "postconditions": [], "tags": [ "component:browser", "host_surface:teams", - "entry_state:chat-ready", - "action:send-message", - "step_retry_timeout: 120" + "entry_state:add", + "step_retry_timeout: 180" ] }, { - "step_id": "step_sendTeamsMessage_focusInput_cb4a8be87_9_1", + "step_id": "step_addAndOpenApp_add_c3f41809f_8_1", "agent": "interaction", "tool": "click", "parameters": { "button": "left", - "x": 200, - "y": 712 + "x": 288, + "y": 214 }, - "description": "Click the Teams \"Type a message\" input.", + "description": "Click Add on the app details popup within the Microsoft Teams interface.", "content_refs": [], "timeout": 30, "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_sendTeamsMessage_assertInput_cb4a8be87_9_1" + "step_addAndOpenApp_assertAdd_c3f41809f_8_1" ], "preconditions": [ - "dhash:200:712:16:5:258c421e0d2c2d1c", - "dhash:200:712:96:5:0020887362000200", - "dhash:200:712:0:10:24b4b08e8e8c81a1" + "dhash:288:214:16:5:05100a0511030b12", + "dhash:288:214:96:5:2616011c1c01005b", + "dhash:288:214:0:10:00b4b0d8f8fcf0d8" ], "postconditions": [], "tags": [ "component:browser", "host_surface:teams", - "entry_state:chat-ready", - "action:send-message" + "entry_state:add" ] }, { - "step_id": "step_sendTeamsMessage_type_cb4a8be87_9_1", - "agent": "interaction", - "tool": "type_text", - "parameters": { - "text": "What is the weather in Seattle?" - }, - "description": "Type \"What is the weather in Seattle?\" into the Teams message input.", + "step_id": "step_addAndOpenApp_assertAdded_c3f41809f_8_1", + "agent": "assertion", + "tool": "", + "parameters": {}, + "description": "@assertion the \"Added successfully!\" dialog and its Open button are visible.", "content_refs": [], "timeout": 30, "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_sendTeamsMessage_focusInput_cb4a8be87_9_1" - ], - "preconditions": [ - "dhash:512:384:0:20:24b4b08e8e8c80a9" + "step_addAndOpenApp_add_c3f41809f_8_1" ], + "preconditions": [], "postconditions": [], "tags": [ "component:browser", "host_surface:teams", - "entry_state:chat-ready", - "action:send-message" + "entry_state:added", + "step_retry_timeout: 180" ] }, { - "step_id": "step_sendTeamsMessage_send_cb4a8be87_9_1", + "step_id": "step_addAndOpenApp_open_c3f41809f_8_1", "agent": "interaction", - "tool": "key_press", + "tool": "click", "parameters": { - "key": "enter" + "button": "left", + "x": 533, + "y": 508 }, - "description": "Press Enter to send the Teams message.", + "description": "Click Open in the Microsoft Teams Added successfully dialog.", "content_refs": [], "timeout": 30, "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_sendTeamsMessage_type_cb4a8be87_9_1" + "step_addAndOpenApp_assertAdded_c3f41809f_8_1" ], "preconditions": [ - "dhash:512:384:0:20:24b4b08e8e8c80b9" + "dhash:533:508:16:5:00987494ca4acacc", + "dhash:533:508:96:5:000058a48598e36b", + "dhash:533:508:0:10:1669696969696979" ], "postconditions": [], "tags": [ "component:browser", "host_surface:teams", - "entry_state:chat-ready", - "action:send-message" - ] - }, - { - "step_id": "step_assertChatReplied_assert_cb4a8be87_9_2", - "agent": "assertion", - "tool": "", - "parameters": {}, - "description": "@assertion the current assistant turn is complete and contains a non-empty response.", - "content_refs": [], - "timeout": 30, - "retry_count": 0, - "continue_on_error": "false", - "depends_on": [ - "step_sendTeamsMessage_send_cb4a8be87_9_1" - ], - "preconditions": [], - "postconditions": [], - "tags": [ - "component:browser", - "action:assert-chat-response", - "expectation:replied", - "step_retry_timeout: 120" + "entry_state:added", + "precondition_wait_timeout: 120" ] }, { - "step_id": "step_assertChatContains_assert_cb4a8be87_9_3", + "step_id": "step_addAndOpenApp_assertReady_c3f41809f_8_1", "agent": "assertion", "tool": "", "parameters": {}, - "description": "@assertion the current assistant response contains \"Seattle\".", + "description": "@assertion the Microsoft Teams app details page for an app whose name starts with ${{var:app_name}} is visible.", "content_refs": [], "timeout": 30, "retry_count": 0, "continue_on_error": "false", "depends_on": [ - "step_assertChatReplied_assert_cb4a8be87_9_2" + "step_addAndOpenApp_open_c3f41809f_8_1" ], "preconditions": [], "postconditions": [], "tags": [ "component:browser", - "action:assert-chat-response", - "expectation:contains", - "step_retry_timeout: 120" + "host_surface:teams", + "readiness:chat-ready", + "step_retry_timeout: 180" ] } ], diff --git a/templates/v4/create/weather-agent/content/javascript/src/agent.js.tpl b/templates/v4/create/weather-agent/content/javascript/src/agent.js.tpl index 852e95b9568..72cae7b987b 100644 --- a/templates/v4/create/weather-agent/content/javascript/src/agent.js.tpl +++ b/templates/v4/create/weather-agent/content/javascript/src/agent.js.tpl @@ -57,7 +57,7 @@ weatherAgent.onConversationUpdate( {{#useOpenAI}} const agentModel = new ChatOpenAI({ apiKey: process.env.OPENAI_API_KEY, - model: "gpt-3.5-turbo", + model: "gpt-4o-mini", temperature: 0, }); {{/useOpenAI}} diff --git a/templates/v4/create/weather-agent/content/typescript/src/agent.ts.tpl b/templates/v4/create/weather-agent/content/typescript/src/agent.ts.tpl index b70246217bf..c3b4079e2f4 100644 --- a/templates/v4/create/weather-agent/content/typescript/src/agent.ts.tpl +++ b/templates/v4/create/weather-agent/content/typescript/src/agent.ts.tpl @@ -66,7 +66,7 @@ interface WeatherForecastAgentResponse { {{#useOpenAI}} const agentModel = new ChatOpenAI({ apiKey: process.env.OPENAI_API_KEY, - model: "gpt-3.5-turbo", + model: "gpt-4o-mini", temperature: 0, }); {{/useOpenAI}} diff --git a/templates/vsc/js/weather-agent/src/agent.js.tpl b/templates/vsc/js/weather-agent/src/agent.js.tpl index 852e95b9568..72cae7b987b 100644 --- a/templates/vsc/js/weather-agent/src/agent.js.tpl +++ b/templates/vsc/js/weather-agent/src/agent.js.tpl @@ -57,7 +57,7 @@ weatherAgent.onConversationUpdate( {{#useOpenAI}} const agentModel = new ChatOpenAI({ apiKey: process.env.OPENAI_API_KEY, - model: "gpt-3.5-turbo", + model: "gpt-4o-mini", temperature: 0, }); {{/useOpenAI}} diff --git a/templates/vsc/ts/weather-agent/src/agent.ts.tpl b/templates/vsc/ts/weather-agent/src/agent.ts.tpl index b70246217bf..c3b4079e2f4 100644 --- a/templates/vsc/ts/weather-agent/src/agent.ts.tpl +++ b/templates/vsc/ts/weather-agent/src/agent.ts.tpl @@ -66,7 +66,7 @@ interface WeatherForecastAgentResponse { {{#useOpenAI}} const agentModel = new ChatOpenAI({ apiKey: process.env.OPENAI_API_KEY, - model: "gpt-3.5-turbo", + model: "gpt-4o-mini", temperature: 0, }); {{/useOpenAI}}