You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
cleanup: remove internal service references from docs and code (#317)
Remove all references to the internal MOS (Microsoft Online Services)
Titles service that were left over after PR #315 stripped the upload
logic from the publish command.
- Rewrite DEVELOPER.md publish section to reflect zip-only workflow
- Update README.md, design.md, and subdirectory READMEs accordingly
- Remove dead MOS error codes from ErrorCodes.cs and ErrorMessages.cs
- Update deprecation messages in CreateInstanceCommand and A365CreateInstanceRunner
- Fix comment in PermissionsSubcommand referencing "MOS Power Platform API"
- Remove stale MosConstants, MosTokenService, AgentPublishService, PublishHelpers
entries from README docs (those files no longer exist)
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: README.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -19,7 +19,7 @@ The Microsoft Agent 365 DevTools CLI can be used through the developer journey o
19
19
-**develop**: Manage MCP tool servers for agent development
20
20
-**develop-mcp**: Manage MCP servers in Dataverse environments
21
21
-**setup**: Set up your Agent 365 environment by creating Azure resources, configuring permissions, and registering your agent blueprint for deployment
22
-
-**publish**: Update agent manifest and publish package to MOS (Microsoft Online Services); configure federated identity and app role assignments. After publishing, hire your agent through Teams to complete onboarding.
22
+
-**publish**: Update agent manifest IDs and package the manifest for upload to the Microsoft 365 Admin Center. After uploading, hire your agent through Teams to complete onboarding.
23
23
-**deploy**: Deploy Agent 365 application binaries to the configured Azure App Service and update Agent 365 Tool permissions
24
24
-**config**: Configure Azure subscription, resource settings, and deployment options for Agent 365 CLI commands
25
25
-**query-entra**: Query Microsoft Entra ID for agent information (scopes, permissions, consent status)
The `publish` command packages and publishes your agent manifest to the MOS (Microsoft Online Services) Titles service. It uses **embedded templates** for complete portability - no external file dependencies required.
151
+
The `publish` command updates manifest IDs from your agent blueprint and packages the manifest files into a zip ready for upload to the Microsoft 365 Admin Center. It uses **embedded templates** for complete portability — no external file dependencies required.
152
152
153
153
**Key Features:**
154
154
-**Embedded Templates**: Manifest templates (JSON + PNG) are embedded in the CLI binary
155
-
-**Fully Portable**: No external file dependencies - works from any directory
156
-
-**Automatic ID Updates**: Updates both `manifest.json` and `agenticUserTemplateManifest.json` with agent blueprint ID
157
-
-**Interactive Customization**: Prompts for manifest customization before upload
158
-
-**Graceful Degradation**: Falls back to manual upload if permissions are insufficient
159
-
-**Graph API Integration**: Configures federated identity credentials and role assignments
155
+
-**Fully Portable**: No external file dependencies — works from any directory
156
+
-**Automatic ID Updates**: Updates both `manifest.json` and `agenticUserTemplateManifest.json` with the agent blueprint ID
160
157
161
158
**Command Options:**
162
-
-`a365 publish` — Publish agent manifest with embedded templates
163
-
-`a365 publish --dry-run` — Preview changes without uploading
164
-
-`a365 publish --skip-graph` — Skip Graph API operations (federated identity, role assignments)
165
-
-`a365 publish --mos-env <env>` — Target specific MOS environment (default: prod)
166
-
-`a365 publish --mos-token <token>` — Override MOS authentication token
159
+
-`a365 publish` — Update manifest IDs and create the manifest zip package
160
+
-`a365 publish --dry-run` — Preview changes without writing files or creating the zip
167
161
168
162
**Manifest Structure:**
169
163
170
164
The publish command works with two manifest files:
171
165
172
166
1.**`manifest.json`** - Teams app manifest with agent metadata
If automated upload fails due to insufficient privileges:
228
-
229
-
1. Locate the generated `manifest.zip` file (path shown in error message)
230
-
2. Navigate to MOS Titles portal: `https://titles.prod.mos.microsoft.com`
231
-
3. Go to Packages section
232
-
4. Upload the manifest.zip file
233
-
5. Follow the portal workflow to complete publishing
234
-
235
-
For detailed MOS upload instructions, see the [MOS Titles Documentation](https://aka.ms/mos-titles-docs).
236
-
237
-
**MOS Token Authentication:**
238
-
239
-
The publish command uses **custom client app** authentication to acquire MOS (Microsoft Office Store) tokens:
240
-
241
-
-**MosTokenService**: Native C# service using MSAL.NET for interactive authentication
242
-
-**Custom Client App**: Uses the client app ID configured during `a365 config init` (not hardcoded Microsoft IDs)
243
-
-**Tenant-Specific Authorities**: Uses `https://login.microsoftonline.com/{tenantId}` for single-tenant app support (not `/common` endpoint)
244
-
-**Token Caching**: Caches tokens locally in `.mos-token-cache.json` to reduce auth prompts
245
-
-**MOS Environments**: Supports prod, sdf, test, gccm, gcch, and dod environments
246
-
-**Redirect URI**: Uses `http://localhost:8400/` for OAuth callback (aligns with custom client app configuration)
247
-
248
-
**Important:** Single-tenant apps (created after October 15, 2018) cannot use the `/common` endpoint due to Azure policy. The CLI automatically uses tenant-specific authority URLs built from the `TenantId` in your configuration to ensure compatibility.
249
-
250
-
**MOS Prerequisites (Auto-Configured):**
251
-
252
-
On first run, `a365 publish` automatically configures MOS API access:
253
-
254
-
1.**Service Principal Creation**: Creates service principals for MOS resource apps in your tenant:
255
-
-`6ec511af-06dc-4fe2-b493-63a37bc397b1` (TPS AppServices 3p App - MOS publishing)
256
-
-`8578e004-a5c6-46e7-913e-12f58912df43` (Power Platform API - MOS token acquisition)
257
-
-`e8be65d6-d430-4289-a665-51bf2a194bda` (MOS Titles API - titles.prod.mos.microsoft.com access)
258
-
259
-
2.**Idempotency Check**: Skips setup if MOS permissions already exist in custom client app
260
-
261
-
3.**Admin Consent Detection**: Checks OAuth2 permission grants and prompts user to grant admin consent if missing
199
+
After `a365 publish` completes:
262
200
263
-
4.**Fail-Fast on Privilege Errors**: If you lack Application Administrator/Cloud Application Administrator/Global Administrator role, the CLI shows manual service principal creation commands:
264
-
```bash
265
-
az ad sp create --id 6ec511af-06dc-4fe2-b493-63a37bc397b1
266
-
az ad sp create --id 8578e004-a5c6-46e7-913e-12f58912df43
267
-
az ad sp create --id e8be65d6-d430-4289-a665-51bf2a194bda
268
-
```
201
+
1. Locate the generated `manifest.zip` file (path shown in output)
202
+
2. Go to [Microsoft 365 Admin Center](https://admin.microsoft.com) > Settings > Integrated apps
203
+
3. Upload the `manifest.zip` file
204
+
4. Follow the portal workflow to complete publishing
269
205
270
206
**Architecture Details:**
271
207
272
-
-**MosConstants.cs**: Centralized constants for MOS resource app IDs, environment scopes, authorities, redirect URI
273
-
-**MosTokenService.cs**: Handles token acquisition using MSAL.NET PublicClientApplication with tenant-specific authorities:
274
-
- Validates both `ClientAppId` and `TenantId` from configuration
0 commit comments