Skip to content

Commit 6d7e3e5

Browse files
authored
Adds support for additional/unknown properties on project/service config (#6196)
Enables extension authors to add custom configuration fields to project and service configs without breaking existing functionality.
1 parent 396ced2 commit 6d7e3e5

22 files changed

+4738
-145
lines changed

.github/copilot-instructions.md

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -198,3 +198,16 @@ func TestMyFunction(t *testing.T) {
198198
When asked to prepare a release changelog, use the appropriate custom agent instructions:
199199
- `.github/agents/changelog-core.agent.md` for core CLI releases
200200
- `.github/agents/changelog-extension.agent.md` for extension releases
201+
202+
## Extensions Development
203+
204+
### Building Extensions
205+
Extensions are located in `extensions/` directory and use the extension framework:
206+
```bash
207+
# Build and install extension (example using demo extension)
208+
cd extensions/microsoft.azd.demo
209+
azd x build
210+
211+
# Test extension (using extension's namespace from extension.yaml)
212+
azd demo <command>
213+
```

cli/azd/.github/copilot-instructions.md

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,19 @@ All Go files must include Microsoft copyright header:
9696
// Licensed under the MIT License.
9797
```
9898

99+
## Extensions Development
100+
101+
### Building Extensions
102+
Extensions are located in `extensions/` directory and use the extension framework:
103+
```bash
104+
# Build and install extension (example using demo extension)
105+
cd extensions/microsoft.azd.demo
106+
azd x build
107+
108+
# Test extension (using extension's namespace from extension.yaml)
109+
azd demo <command>
110+
```
111+
99112
## MCP Tools Development
100113

101114
### Tool Pattern

cli/azd/docs/extension-framework.md

Lines changed: 102 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1158,7 +1158,7 @@ The following are a list of available gRPC services for extension developer to i
11581158

11591159
### Project Service
11601160

1161-
This service manages project configuration retrieval and related operations.
1161+
This service manages project configuration retrieval and related operations, including project and service-level configuration management.
11621162

11631163
> See [project.proto](../grpc/proto/project.proto) for more details.
11641164
@@ -1185,6 +1185,107 @@ Adds a new service to the project.
11851185
- `service`: _ServiceConfig_
11861186
- **Response:** _EmptyResponse_
11871187

1188+
#### GetConfigSection
1189+
1190+
Retrieves a project configuration section by path from AdditionalProperties.
1191+
1192+
- **Request:** _GetProjectConfigSectionRequest_
1193+
- `path` (string): Dot-notation path to the config section
1194+
- **Response:** _GetProjectConfigSectionResponse_
1195+
- Contains:
1196+
- `section` (google.protobuf.Struct): The configuration section
1197+
- `found` (bool): Whether the section exists
1198+
1199+
#### SetConfigSection
1200+
1201+
Sets a project configuration section at the specified path in AdditionalProperties.
1202+
1203+
- **Request:** _SetProjectConfigSectionRequest_
1204+
- `path` (string): Dot-notation path to the config section
1205+
- `section` (google.protobuf.Struct): The configuration section to set
1206+
- **Response:** _EmptyResponse_
1207+
1208+
#### GetConfigValue
1209+
1210+
Retrieves a single project configuration value by path from AdditionalProperties.
1211+
1212+
- **Request:** _GetProjectConfigValueRequest_
1213+
- `path` (string): Dot-notation path to the config value
1214+
- **Response:** _GetProjectConfigValueResponse_
1215+
- Contains:
1216+
- `value` (google.protobuf.Value): The configuration value
1217+
- `found` (bool): Whether the value exists
1218+
1219+
#### SetConfigValue
1220+
1221+
Sets a single project configuration value at the specified path in AdditionalProperties.
1222+
1223+
- **Request:** _SetProjectConfigValueRequest_
1224+
- `path` (string): Dot-notation path to the config value
1225+
- `value` (google.protobuf.Value): The configuration value to set
1226+
- **Response:** _EmptyResponse_
1227+
1228+
#### UnsetConfig
1229+
1230+
Removes a project configuration value or section at the specified path from AdditionalProperties.
1231+
1232+
- **Request:** _UnsetProjectConfigRequest_
1233+
- `path` (string): Dot-notation path to the config to remove
1234+
- **Response:** _EmptyResponse_
1235+
1236+
#### GetServiceConfigSection
1237+
1238+
Retrieves a service configuration section by path from service AdditionalProperties.
1239+
1240+
- **Request:** _GetServiceConfigSectionRequest_
1241+
- `service_name` (string): Name of the service
1242+
- `path` (string): Dot-notation path to the config section
1243+
- **Response:** _GetServiceConfigSectionResponse_
1244+
- Contains:
1245+
- `section` (google.protobuf.Struct): The configuration section
1246+
- `found` (bool): Whether the section exists
1247+
1248+
#### SetServiceConfigSection
1249+
1250+
Sets a service configuration section at the specified path in service AdditionalProperties.
1251+
1252+
- **Request:** _SetServiceConfigSectionRequest_
1253+
- `service_name` (string): Name of the service
1254+
- `path` (string): Dot-notation path to the config section
1255+
- `section` (google.protobuf.Struct): The configuration section to set
1256+
- **Response:** _EmptyResponse_
1257+
1258+
#### GetServiceConfigValue
1259+
1260+
Retrieves a single service configuration value by path from service AdditionalProperties.
1261+
1262+
- **Request:** _GetServiceConfigValueRequest_
1263+
- `service_name` (string): Name of the service
1264+
- `path` (string): Dot-notation path to the config value
1265+
- **Response:** _GetServiceConfigValueResponse_
1266+
- Contains:
1267+
- `value` (google.protobuf.Value): The configuration value
1268+
- `found` (bool): Whether the value exists
1269+
1270+
#### SetServiceConfigValue
1271+
1272+
Sets a single service configuration value at the specified path in service AdditionalProperties.
1273+
1274+
- **Request:** _SetServiceConfigValueRequest_
1275+
- `service_name` (string): Name of the service
1276+
- `path` (string): Dot-notation path to the config value
1277+
- `value` (google.protobuf.Value): The configuration value to set
1278+
- **Response:** _EmptyResponse_
1279+
1280+
#### UnsetServiceConfig
1281+
1282+
Removes a service configuration value or section at the specified path from service AdditionalProperties.
1283+
1284+
- **Request:** _UnsetServiceConfigRequest_
1285+
- `service_name` (string): Name of the service
1286+
- `path` (string): Dot-notation path to the config to remove
1287+
- **Response:** _EmptyResponse_
1288+
11881289
---
11891290

11901291
### Environment Service

0 commit comments

Comments
 (0)