@intentius/chant-lexicon-azure 0.84.0 → 0.86.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/composites/catalog.d.ts +3 -0
- package/dist/composites/catalog.d.ts.map +1 -0
- package/dist/integrity.json +2 -2
- package/dist/manifest.json +1 -1
- package/dist/plugin.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/composites/catalog.test.ts +39 -0
- package/src/composites/catalog.ts +861 -0
- package/src/plugin.ts +5 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../../src/composites/catalog.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE/D,eAAO,MAAM,gBAAgB,EAAE,cAAc,EAu1B5C,CAAC"}
|
package/dist/integrity.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"algorithm": "sha256",
|
|
3
3
|
"artifacts": {
|
|
4
|
-
"manifest.json": "
|
|
4
|
+
"manifest.json": "f849d106a13a50abc2576b7484f3a612acf6d9d3c09d20a12ff476c63bd33e73",
|
|
5
5
|
"meta.json": "8c7a1ea3cfaf39461d3e758fa2b0cbd70c7800fac736e56df8d14a3e07ef1840",
|
|
6
6
|
"types/index.d.ts": "b20aaa3eeb957a6a5833dcbf5fd99ce1365285eafd4b78dc9383371b1a9d4b61",
|
|
7
7
|
"rules/hardcoded-location.ts": "a9b1d1cec93f2ca9c5206641f53fc9621cefcfd2c00b3ab89c194b30a75fa949",
|
|
@@ -37,5 +37,5 @@
|
|
|
37
37
|
"skills/chant-azure-patterns.md": "1a3bacfac612826b77332d2692a59195638db9f1b5e8ea2eda7579621d25f603",
|
|
38
38
|
"skills/chant-azure-aks.md": "2d4e0098c1a22b54ffadd410564d9df0f3a04cb4eb7c6261f20ae33106e7aca8"
|
|
39
39
|
},
|
|
40
|
-
"composite": "
|
|
40
|
+
"composite": "9492c04ec67e6b79ed8a8de6a3f04edf64ec4f89ae44214bca2eaec7c98db47d"
|
|
41
41
|
}
|
package/dist/manifest.json
CHANGED
package/dist/plugin.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAgB,MAAM,0BAA0B,CAAC;AAyB5E;;;;;GAKG;AACH,eAAO,MAAM,WAAW,EAAE,aAodzB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@intentius/chant-lexicon-azure",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.86.0",
|
|
4
4
|
"description": "Azure lexicon for chant — declarative IaC in TypeScript",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"homepage": "https://intentius.io/chant",
|
|
@@ -74,7 +74,7 @@
|
|
|
74
74
|
"typescript": "^5.9.3"
|
|
75
75
|
},
|
|
76
76
|
"peerDependencies": {
|
|
77
|
-
"@intentius/chant": "^0.
|
|
77
|
+
"@intentius/chant": "^0.86.0",
|
|
78
78
|
"typescript": "^5.9.3"
|
|
79
79
|
}
|
|
80
80
|
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The composite catalog matches what this lexicon exports (#2662).
|
|
3
|
+
*
|
|
4
|
+
* `catalog.ts` is generated by `npm run generate:composite-catalogs` and is
|
|
5
|
+
* what `chant serve mcp` lists. A composite added without regenerating it would
|
|
6
|
+
* be invisible to an agent asking what azure offers; one renamed or removed
|
|
7
|
+
* would be offered and fail to import.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
import { describe, expect, test } from "vitest";
|
|
11
|
+
import { isCompositeDefinition } from "@intentius/chant";
|
|
12
|
+
import * as composites from "./index";
|
|
13
|
+
import { compositeCatalog } from "./catalog";
|
|
14
|
+
import { azurePlugin } from "../plugin";
|
|
15
|
+
|
|
16
|
+
const exported = Object.entries(composites)
|
|
17
|
+
.filter(([, value]) => isCompositeDefinition(value))
|
|
18
|
+
.map(([name]) => name)
|
|
19
|
+
.sort();
|
|
20
|
+
const catalogued = compositeCatalog.map((entry) => entry.name).sort();
|
|
21
|
+
|
|
22
|
+
describe("the azure composite catalog", () => {
|
|
23
|
+
test("every exported composite has an entry, and every entry names an exported composite", () => {
|
|
24
|
+
expect(exported.length).toBeGreaterThan(0);
|
|
25
|
+
expect(catalogued, "regenerate with `npm run generate:composite-catalogs -- azure`").toEqual(exported);
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
test("every entry says what it is and what it bundles", () => {
|
|
29
|
+
for (const entry of compositeCatalog) {
|
|
30
|
+
expect(entry.lexicon, entry.name).toBe("azure");
|
|
31
|
+
expect(entry.description.length, entry.name).toBeGreaterThan(0);
|
|
32
|
+
expect(entry.bundles.length, entry.name).toBeGreaterThan(0);
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
test("the plugin contributes it", () => {
|
|
37
|
+
expect(azurePlugin.composites?.()).toBe(compositeCatalog);
|
|
38
|
+
});
|
|
39
|
+
});
|
|
@@ -0,0 +1,861 @@
|
|
|
1
|
+
// Generated by scripts/generate-composite-catalogs.ts (#2662) from this
|
|
2
|
+
// lexicon's composite exports. Do not edit by hand: run
|
|
3
|
+
// `npm run generate:composite-catalogs`. catalog.test.ts holds it to the exports.
|
|
4
|
+
import type { CompositeEntry } from "@intentius/chant/lexicon";
|
|
5
|
+
|
|
6
|
+
export const compositeCatalog: CompositeEntry[] = [
|
|
7
|
+
{
|
|
8
|
+
"name": "ActivityLogSink",
|
|
9
|
+
"lexicon": "azure",
|
|
10
|
+
"description": "Assigns the built-in DeployIfNotExists policy that streams every subscription's activity log into a Log Analytics workspace.",
|
|
11
|
+
"bundles": [
|
|
12
|
+
"PolicyAssignment"
|
|
13
|
+
],
|
|
14
|
+
"params": [
|
|
15
|
+
{
|
|
16
|
+
"name": "workspaceId",
|
|
17
|
+
"type": "string",
|
|
18
|
+
"required": true,
|
|
19
|
+
"description": "Resource id of the Log Analytics workspace activity logs flow into."
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
"name": "location",
|
|
23
|
+
"type": "string",
|
|
24
|
+
"required": true,
|
|
25
|
+
"description": "Region for the assignment's managed identity (DeployIfNotExists remediation)."
|
|
26
|
+
}
|
|
27
|
+
]
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
"name": "AksCluster",
|
|
31
|
+
"lexicon": "azure",
|
|
32
|
+
"description": "Create an AksCluster composite — returns an AKS managed cluster with production defaults.",
|
|
33
|
+
"bundles": [
|
|
34
|
+
"AksCluster"
|
|
35
|
+
],
|
|
36
|
+
"params": [
|
|
37
|
+
{
|
|
38
|
+
"name": "name",
|
|
39
|
+
"type": "string",
|
|
40
|
+
"required": true,
|
|
41
|
+
"description": "Cluster name."
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
"name": "nodeCount",
|
|
45
|
+
"type": "number",
|
|
46
|
+
"required": false,
|
|
47
|
+
"description": "Number of nodes in the default pool (default: 3)."
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
"name": "vmSize",
|
|
51
|
+
"type": "string",
|
|
52
|
+
"required": false,
|
|
53
|
+
"description": "VM size for the default node pool (default: \"Standard_D2s_v5\")."
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
"name": "kubernetesVersion",
|
|
57
|
+
"type": "string",
|
|
58
|
+
"required": false,
|
|
59
|
+
"description": "Kubernetes version (default: \"1.28\")."
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
"name": "location",
|
|
63
|
+
"type": "string",
|
|
64
|
+
"required": false,
|
|
65
|
+
"description": "Azure region (default: resource group location)."
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
"name": "tags",
|
|
69
|
+
"type": "Record<string, string>",
|
|
70
|
+
"required": false,
|
|
71
|
+
"description": "Resource tags."
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
"name": "defaults",
|
|
75
|
+
"type": "{ cluster?: Partial<ConstructorParameters<typeof AksClusterResource>[0]>; }",
|
|
76
|
+
"required": false,
|
|
77
|
+
"description": "Per-member defaults."
|
|
78
|
+
}
|
|
79
|
+
]
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
"name": "ApplicationGateway",
|
|
83
|
+
"lexicon": "azure",
|
|
84
|
+
"description": "ApplicationGateway composite — Public IP + Application Gateway.",
|
|
85
|
+
"bundles": [
|
|
86
|
+
"ApplicationGateway",
|
|
87
|
+
"PublicIPAddress"
|
|
88
|
+
],
|
|
89
|
+
"params": [
|
|
90
|
+
{
|
|
91
|
+
"name": "name",
|
|
92
|
+
"type": "string",
|
|
93
|
+
"required": true,
|
|
94
|
+
"description": "Application Gateway name."
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
"name": "location",
|
|
98
|
+
"type": "string",
|
|
99
|
+
"required": false,
|
|
100
|
+
"description": "Azure region (default: resource group location)."
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
"name": "subnetId",
|
|
104
|
+
"type": "string",
|
|
105
|
+
"required": false,
|
|
106
|
+
"description": "Subnet ID for the gateway (required for production — defaults to placeholder)."
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
"name": "sku",
|
|
110
|
+
"type": "string",
|
|
111
|
+
"required": false,
|
|
112
|
+
"description": "SKU name (default: \"WAF_v2\")."
|
|
113
|
+
},
|
|
114
|
+
{
|
|
115
|
+
"name": "tags",
|
|
116
|
+
"type": "Record<string, string>",
|
|
117
|
+
"required": false,
|
|
118
|
+
"description": "Resource tags."
|
|
119
|
+
},
|
|
120
|
+
{
|
|
121
|
+
"name": "defaults",
|
|
122
|
+
"type": "{ publicIp?: Partial<ConstructorParameters<typeof PublicIPAddress>[0]>; gateway?: Partial<ConstructorParameters<typeo...",
|
|
123
|
+
"required": false,
|
|
124
|
+
"description": "Per-member defaults."
|
|
125
|
+
}
|
|
126
|
+
]
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
"name": "AppService",
|
|
130
|
+
"lexicon": "azure",
|
|
131
|
+
"description": "Create an AppService composite — returns an App Service Plan and a Web App.",
|
|
132
|
+
"bundles": [
|
|
133
|
+
"AppService",
|
|
134
|
+
"AppServicePlan"
|
|
135
|
+
],
|
|
136
|
+
"params": [
|
|
137
|
+
{
|
|
138
|
+
"name": "name",
|
|
139
|
+
"type": "string",
|
|
140
|
+
"required": true,
|
|
141
|
+
"description": "Web app name (globally unique)."
|
|
142
|
+
},
|
|
143
|
+
{
|
|
144
|
+
"name": "sku",
|
|
145
|
+
"type": "string",
|
|
146
|
+
"required": false,
|
|
147
|
+
"description": "App Service Plan SKU (default: \"B1\")."
|
|
148
|
+
},
|
|
149
|
+
{
|
|
150
|
+
"name": "runtime",
|
|
151
|
+
"type": "string",
|
|
152
|
+
"required": false,
|
|
153
|
+
"description": "Runtime stack (default: \"NODE|18-lts\")."
|
|
154
|
+
},
|
|
155
|
+
{
|
|
156
|
+
"name": "location",
|
|
157
|
+
"type": "string",
|
|
158
|
+
"required": false,
|
|
159
|
+
"description": "Azure region (default: resource group location)."
|
|
160
|
+
},
|
|
161
|
+
{
|
|
162
|
+
"name": "tags",
|
|
163
|
+
"type": "Record<string, string>",
|
|
164
|
+
"required": false,
|
|
165
|
+
"description": "Resource tags."
|
|
166
|
+
},
|
|
167
|
+
{
|
|
168
|
+
"name": "defaults",
|
|
169
|
+
"type": "{ plan?: Partial<ConstructorParameters<typeof AppServicePlan>[0]>; webApp?: Partial<ConstructorParameters<typeof AppS...",
|
|
170
|
+
"required": false,
|
|
171
|
+
"description": "Per-member defaults."
|
|
172
|
+
}
|
|
173
|
+
]
|
|
174
|
+
},
|
|
175
|
+
{
|
|
176
|
+
"name": "ContainerInstance",
|
|
177
|
+
"lexicon": "azure",
|
|
178
|
+
"description": "ContainerInstance composite — Container Group.",
|
|
179
|
+
"bundles": [
|
|
180
|
+
"containerGroups"
|
|
181
|
+
],
|
|
182
|
+
"params": [
|
|
183
|
+
{
|
|
184
|
+
"name": "name",
|
|
185
|
+
"type": "string",
|
|
186
|
+
"required": true,
|
|
187
|
+
"description": "Container group name."
|
|
188
|
+
},
|
|
189
|
+
{
|
|
190
|
+
"name": "location",
|
|
191
|
+
"type": "string",
|
|
192
|
+
"required": false,
|
|
193
|
+
"description": "Azure region (default: resource group location)."
|
|
194
|
+
},
|
|
195
|
+
{
|
|
196
|
+
"name": "image",
|
|
197
|
+
"type": "string",
|
|
198
|
+
"required": false,
|
|
199
|
+
"description": "Container image (default: \"mcr.microsoft.com/hello-world\")."
|
|
200
|
+
},
|
|
201
|
+
{
|
|
202
|
+
"name": "cpu",
|
|
203
|
+
"type": "number",
|
|
204
|
+
"required": false,
|
|
205
|
+
"description": "CPU cores (default: 1)."
|
|
206
|
+
},
|
|
207
|
+
{
|
|
208
|
+
"name": "memoryInGb",
|
|
209
|
+
"type": "number",
|
|
210
|
+
"required": false,
|
|
211
|
+
"description": "Memory in GB (default: 1.5)."
|
|
212
|
+
},
|
|
213
|
+
{
|
|
214
|
+
"name": "port",
|
|
215
|
+
"type": "number",
|
|
216
|
+
"required": false,
|
|
217
|
+
"description": "Container port (default: 80)."
|
|
218
|
+
},
|
|
219
|
+
{
|
|
220
|
+
"name": "publicIp",
|
|
221
|
+
"type": "boolean",
|
|
222
|
+
"required": false,
|
|
223
|
+
"description": "Whether to expose a public IP (default: false)."
|
|
224
|
+
},
|
|
225
|
+
{
|
|
226
|
+
"name": "tags",
|
|
227
|
+
"type": "Record<string, string>",
|
|
228
|
+
"required": false,
|
|
229
|
+
"description": "Resource tags."
|
|
230
|
+
},
|
|
231
|
+
{
|
|
232
|
+
"name": "defaults",
|
|
233
|
+
"type": "{ containerGroup?: Partial<ConstructorParameters<typeof containerGroups>[0]>; }",
|
|
234
|
+
"required": false,
|
|
235
|
+
"description": "Per-member defaults."
|
|
236
|
+
}
|
|
237
|
+
]
|
|
238
|
+
},
|
|
239
|
+
{
|
|
240
|
+
"name": "ContainerRegistrySecure",
|
|
241
|
+
"lexicon": "azure",
|
|
242
|
+
"description": "Create a ContainerRegistrySecure composite — returns an Azure Container Registry with security best practices.",
|
|
243
|
+
"bundles": [
|
|
244
|
+
"ContainerRegistry"
|
|
245
|
+
],
|
|
246
|
+
"params": [
|
|
247
|
+
{
|
|
248
|
+
"name": "name",
|
|
249
|
+
"type": "string",
|
|
250
|
+
"required": true,
|
|
251
|
+
"description": "Registry name (5-50 chars, alphanumeric, globally unique)."
|
|
252
|
+
},
|
|
253
|
+
{
|
|
254
|
+
"name": "sku",
|
|
255
|
+
"type": "string",
|
|
256
|
+
"required": false,
|
|
257
|
+
"description": "SKU tier (default: \"Premium\" — required for security features)."
|
|
258
|
+
},
|
|
259
|
+
{
|
|
260
|
+
"name": "location",
|
|
261
|
+
"type": "string",
|
|
262
|
+
"required": false,
|
|
263
|
+
"description": "Azure region (default: resource group location)."
|
|
264
|
+
},
|
|
265
|
+
{
|
|
266
|
+
"name": "tags",
|
|
267
|
+
"type": "Record<string, string>",
|
|
268
|
+
"required": false,
|
|
269
|
+
"description": "Resource tags."
|
|
270
|
+
},
|
|
271
|
+
{
|
|
272
|
+
"name": "defaults",
|
|
273
|
+
"type": "{ registry?: Partial<ConstructorParameters<typeof ContainerRegistry>[0]>; }",
|
|
274
|
+
"required": false,
|
|
275
|
+
"description": "Per-member defaults."
|
|
276
|
+
}
|
|
277
|
+
]
|
|
278
|
+
},
|
|
279
|
+
{
|
|
280
|
+
"name": "CosmosDatabase",
|
|
281
|
+
"lexicon": "azure",
|
|
282
|
+
"description": "CosmosDatabase composite — Cosmos DB Account + SQL Database + Container.",
|
|
283
|
+
"bundles": [
|
|
284
|
+
"CosmosDb",
|
|
285
|
+
"databaseAccounts_sqlDatabases",
|
|
286
|
+
"databaseAccounts_sqlDatabases_containers"
|
|
287
|
+
],
|
|
288
|
+
"params": [
|
|
289
|
+
{
|
|
290
|
+
"name": "name",
|
|
291
|
+
"type": "string",
|
|
292
|
+
"required": true,
|
|
293
|
+
"description": "Cosmos DB account name."
|
|
294
|
+
},
|
|
295
|
+
{
|
|
296
|
+
"name": "location",
|
|
297
|
+
"type": "string",
|
|
298
|
+
"required": false,
|
|
299
|
+
"description": "Azure region (default: resource group location)."
|
|
300
|
+
},
|
|
301
|
+
{
|
|
302
|
+
"name": "databaseName",
|
|
303
|
+
"type": "string",
|
|
304
|
+
"required": false,
|
|
305
|
+
"description": "Database name (default: \"{name}-db\")."
|
|
306
|
+
},
|
|
307
|
+
{
|
|
308
|
+
"name": "containerName",
|
|
309
|
+
"type": "string",
|
|
310
|
+
"required": false,
|
|
311
|
+
"description": "Container name (default: \"{name}-container\")."
|
|
312
|
+
},
|
|
313
|
+
{
|
|
314
|
+
"name": "partitionKeyPath",
|
|
315
|
+
"type": "string",
|
|
316
|
+
"required": false,
|
|
317
|
+
"description": "Partition key path (default: \"/id\")."
|
|
318
|
+
},
|
|
319
|
+
{
|
|
320
|
+
"name": "tags",
|
|
321
|
+
"type": "Record<string, string>",
|
|
322
|
+
"required": false,
|
|
323
|
+
"description": "Resource tags."
|
|
324
|
+
},
|
|
325
|
+
{
|
|
326
|
+
"name": "defaults",
|
|
327
|
+
"type": "{ account?: Partial<ConstructorParameters<typeof CosmosDb>[0]>; database?: Partial<ConstructorParameters<typeof datab...",
|
|
328
|
+
"required": false,
|
|
329
|
+
"description": "Per-member defaults."
|
|
330
|
+
}
|
|
331
|
+
]
|
|
332
|
+
},
|
|
333
|
+
{
|
|
334
|
+
"name": "FunctionApp",
|
|
335
|
+
"lexicon": "azure",
|
|
336
|
+
"description": "FunctionApp composite — Consumption Function App with security defaults.",
|
|
337
|
+
"bundles": [
|
|
338
|
+
"AppService",
|
|
339
|
+
"AppServicePlan",
|
|
340
|
+
"StorageAccount"
|
|
341
|
+
],
|
|
342
|
+
"params": [
|
|
343
|
+
{
|
|
344
|
+
"name": "name",
|
|
345
|
+
"type": "string",
|
|
346
|
+
"required": true,
|
|
347
|
+
"description": "Function app name."
|
|
348
|
+
},
|
|
349
|
+
{
|
|
350
|
+
"name": "location",
|
|
351
|
+
"type": "string",
|
|
352
|
+
"required": false,
|
|
353
|
+
"description": "Azure region (default: resource group location)."
|
|
354
|
+
},
|
|
355
|
+
{
|
|
356
|
+
"name": "runtime",
|
|
357
|
+
"type": "string",
|
|
358
|
+
"required": false,
|
|
359
|
+
"description": "Runtime stack (default: \"node\" — values: node, dotnet, python, java)."
|
|
360
|
+
},
|
|
361
|
+
{
|
|
362
|
+
"name": "runtimeVersion",
|
|
363
|
+
"type": "string",
|
|
364
|
+
"required": false,
|
|
365
|
+
"description": "Runtime version (default: \"~4\")."
|
|
366
|
+
},
|
|
367
|
+
{
|
|
368
|
+
"name": "tags",
|
|
369
|
+
"type": "Record<string, string>",
|
|
370
|
+
"required": false,
|
|
371
|
+
"description": "Resource tags."
|
|
372
|
+
},
|
|
373
|
+
{
|
|
374
|
+
"name": "defaults",
|
|
375
|
+
"type": "{ plan?: Partial<ConstructorParameters<typeof AppServicePlan>[0]>; functionApp?: Partial<ConstructorParameters<typeof...",
|
|
376
|
+
"required": false,
|
|
377
|
+
"description": "Per-member defaults."
|
|
378
|
+
}
|
|
379
|
+
]
|
|
380
|
+
},
|
|
381
|
+
{
|
|
382
|
+
"name": "GovernanceBaseline",
|
|
383
|
+
"lexicon": "azure",
|
|
384
|
+
"description": "`deny-classic-resources` and `deny-unmanaged-disks` defined and assigned at the management group the project deploys to (the tenant root group for the...",
|
|
385
|
+
"bundles": [
|
|
386
|
+
"PolicyAssignment",
|
|
387
|
+
"PolicyDefinition"
|
|
388
|
+
],
|
|
389
|
+
"params": []
|
|
390
|
+
},
|
|
391
|
+
{
|
|
392
|
+
"name": "GovernanceFoundation",
|
|
393
|
+
"lexicon": "azure",
|
|
394
|
+
"description": "Security / Infrastructure / Sandbox / Workloads management groups with subscriptions blocked from leaving the tenant.",
|
|
395
|
+
"bundles": [
|
|
396
|
+
"ManagementGroup",
|
|
397
|
+
"policies"
|
|
398
|
+
],
|
|
399
|
+
"params": [
|
|
400
|
+
{
|
|
401
|
+
"name": "parentId",
|
|
402
|
+
"type": "string",
|
|
403
|
+
"required": false,
|
|
404
|
+
"description": "Management group the foundation hangs under."
|
|
405
|
+
},
|
|
406
|
+
{
|
|
407
|
+
"name": "blockSubscriptionsLeavingTenant",
|
|
408
|
+
"type": "boolean",
|
|
409
|
+
"required": false,
|
|
410
|
+
"description": "Block subscriptions from leaving the tenant (default true)."
|
|
411
|
+
}
|
|
412
|
+
]
|
|
413
|
+
},
|
|
414
|
+
{
|
|
415
|
+
"name": "KeyVaultSecure",
|
|
416
|
+
"lexicon": "azure",
|
|
417
|
+
"description": "Create a KeyVaultSecure composite — returns a Key Vault with security best practices.",
|
|
418
|
+
"bundles": [
|
|
419
|
+
"KeyVault"
|
|
420
|
+
],
|
|
421
|
+
"params": [
|
|
422
|
+
{
|
|
423
|
+
"name": "name",
|
|
424
|
+
"type": "string",
|
|
425
|
+
"required": true,
|
|
426
|
+
"description": "Key vault name (3-24 chars, globally unique)."
|
|
427
|
+
},
|
|
428
|
+
{
|
|
429
|
+
"name": "tenantId",
|
|
430
|
+
"type": "string",
|
|
431
|
+
"required": true,
|
|
432
|
+
"description": "Azure AD tenant ID."
|
|
433
|
+
},
|
|
434
|
+
{
|
|
435
|
+
"name": "accessPolicies",
|
|
436
|
+
"type": "Array<{ tenantId: string; objectId: string; permissions: { keys?: string[]; secrets?: string[]; certificates?: string...",
|
|
437
|
+
"required": false,
|
|
438
|
+
"description": "Access policies (default: empty — use RBAC or add policies later)."
|
|
439
|
+
},
|
|
440
|
+
{
|
|
441
|
+
"name": "location",
|
|
442
|
+
"type": "string",
|
|
443
|
+
"required": false,
|
|
444
|
+
"description": "Azure region (default: resource group location)."
|
|
445
|
+
},
|
|
446
|
+
{
|
|
447
|
+
"name": "tags",
|
|
448
|
+
"type": "Record<string, string>",
|
|
449
|
+
"required": false,
|
|
450
|
+
"description": "Resource tags."
|
|
451
|
+
},
|
|
452
|
+
{
|
|
453
|
+
"name": "defaults",
|
|
454
|
+
"type": "{ vault?: Partial<ConstructorParameters<typeof KeyVault>[0]>; }",
|
|
455
|
+
"required": false,
|
|
456
|
+
"description": "Per-member defaults."
|
|
457
|
+
}
|
|
458
|
+
]
|
|
459
|
+
},
|
|
460
|
+
{
|
|
461
|
+
"name": "LocationRestriction",
|
|
462
|
+
"lexicon": "azure",
|
|
463
|
+
"description": "Bundles PolicyAssignment, PolicyDefinition.",
|
|
464
|
+
"bundles": [
|
|
465
|
+
"PolicyAssignment",
|
|
466
|
+
"PolicyDefinition"
|
|
467
|
+
],
|
|
468
|
+
"params": [
|
|
469
|
+
{
|
|
470
|
+
"name": "locations",
|
|
471
|
+
"type": "string[]",
|
|
472
|
+
"required": true,
|
|
473
|
+
"description": "The only locations resources may be created in (\"global\" is always excepted)."
|
|
474
|
+
}
|
|
475
|
+
]
|
|
476
|
+
},
|
|
477
|
+
{
|
|
478
|
+
"name": "PrivateEndpoint",
|
|
479
|
+
"lexicon": "azure",
|
|
480
|
+
"description": "PrivateEndpoint composite — Private Endpoint + Private DNS Zone + DNS Zone Group.",
|
|
481
|
+
"bundles": [
|
|
482
|
+
"PrivateDnsZone",
|
|
483
|
+
"privateDnsZones_virtualNetworkLinks",
|
|
484
|
+
"privateEndpoints",
|
|
485
|
+
"privateEndpoints_privateDnsZoneGroups"
|
|
486
|
+
],
|
|
487
|
+
"params": [
|
|
488
|
+
{
|
|
489
|
+
"name": "name",
|
|
490
|
+
"type": "string",
|
|
491
|
+
"required": true,
|
|
492
|
+
"description": "Private endpoint name."
|
|
493
|
+
},
|
|
494
|
+
{
|
|
495
|
+
"name": "location",
|
|
496
|
+
"type": "string",
|
|
497
|
+
"required": false,
|
|
498
|
+
"description": "Azure region (default: resource group location)."
|
|
499
|
+
},
|
|
500
|
+
{
|
|
501
|
+
"name": "targetResourceId",
|
|
502
|
+
"type": "string",
|
|
503
|
+
"required": true,
|
|
504
|
+
"description": "Target resource ID to connect privately."
|
|
505
|
+
},
|
|
506
|
+
{
|
|
507
|
+
"name": "groupId",
|
|
508
|
+
"type": "string",
|
|
509
|
+
"required": true,
|
|
510
|
+
"description": "The sub-resource (group ID) to connect to (e.g., \"blob\", \"sql\", \"vault\")."
|
|
511
|
+
},
|
|
512
|
+
{
|
|
513
|
+
"name": "subnetId",
|
|
514
|
+
"type": "string",
|
|
515
|
+
"required": true,
|
|
516
|
+
"description": "Subnet ID where the private endpoint is placed."
|
|
517
|
+
},
|
|
518
|
+
{
|
|
519
|
+
"name": "privateDnsZoneName",
|
|
520
|
+
"type": "string",
|
|
521
|
+
"required": true,
|
|
522
|
+
"description": "Private DNS zone name (e.g., \"privatelink.blob.core.windows.net\")."
|
|
523
|
+
},
|
|
524
|
+
{
|
|
525
|
+
"name": "vnetId",
|
|
526
|
+
"type": "string",
|
|
527
|
+
"required": true,
|
|
528
|
+
"description": "VNet ID to link the DNS zone to."
|
|
529
|
+
},
|
|
530
|
+
{
|
|
531
|
+
"name": "tags",
|
|
532
|
+
"type": "Record<string, string>",
|
|
533
|
+
"required": false,
|
|
534
|
+
"description": "Resource tags."
|
|
535
|
+
},
|
|
536
|
+
{
|
|
537
|
+
"name": "defaults",
|
|
538
|
+
"type": "{ privateEndpoint?: Partial<ConstructorParameters<typeof privateEndpoints>[0]>; privateDnsZone?: Partial<ConstructorP...",
|
|
539
|
+
"required": false,
|
|
540
|
+
"description": "Per-member defaults."
|
|
541
|
+
}
|
|
542
|
+
]
|
|
543
|
+
},
|
|
544
|
+
{
|
|
545
|
+
"name": "RedisCache",
|
|
546
|
+
"lexicon": "azure",
|
|
547
|
+
"description": "RedisCache composite — Azure Cache for Redis.",
|
|
548
|
+
"bundles": [
|
|
549
|
+
"RedisCache"
|
|
550
|
+
],
|
|
551
|
+
"params": [
|
|
552
|
+
{
|
|
553
|
+
"name": "name",
|
|
554
|
+
"type": "string",
|
|
555
|
+
"required": true,
|
|
556
|
+
"description": "Redis cache name."
|
|
557
|
+
},
|
|
558
|
+
{
|
|
559
|
+
"name": "location",
|
|
560
|
+
"type": "string",
|
|
561
|
+
"required": false,
|
|
562
|
+
"description": "Azure region (default: resource group location)."
|
|
563
|
+
},
|
|
564
|
+
{
|
|
565
|
+
"name": "sku",
|
|
566
|
+
"type": "string",
|
|
567
|
+
"required": false,
|
|
568
|
+
"description": "SKU name (default: \"Standard\")."
|
|
569
|
+
},
|
|
570
|
+
{
|
|
571
|
+
"name": "family",
|
|
572
|
+
"type": "string",
|
|
573
|
+
"required": false,
|
|
574
|
+
"description": "SKU family (default: \"C\")."
|
|
575
|
+
},
|
|
576
|
+
{
|
|
577
|
+
"name": "capacity",
|
|
578
|
+
"type": "number",
|
|
579
|
+
"required": false,
|
|
580
|
+
"description": "SKU capacity (default: 1)."
|
|
581
|
+
},
|
|
582
|
+
{
|
|
583
|
+
"name": "tags",
|
|
584
|
+
"type": "Record<string, string>",
|
|
585
|
+
"required": false,
|
|
586
|
+
"description": "Resource tags."
|
|
587
|
+
},
|
|
588
|
+
{
|
|
589
|
+
"name": "defaults",
|
|
590
|
+
"type": "{ redisCache?: Partial<ConstructorParameters<typeof RedisCacheResource>[0]>; }",
|
|
591
|
+
"required": false,
|
|
592
|
+
"description": "Per-member defaults."
|
|
593
|
+
}
|
|
594
|
+
]
|
|
595
|
+
},
|
|
596
|
+
{
|
|
597
|
+
"name": "ServiceBusPipeline",
|
|
598
|
+
"lexicon": "azure",
|
|
599
|
+
"description": "ServiceBusPipeline composite — ServiceBus Namespace with Queue or Topic.",
|
|
600
|
+
"bundles": [
|
|
601
|
+
"Sbnamespaces_topics",
|
|
602
|
+
"ServiceBusNamespace",
|
|
603
|
+
"namespaces_queues",
|
|
604
|
+
"namespaces_topics_subscriptions"
|
|
605
|
+
],
|
|
606
|
+
"params": [
|
|
607
|
+
{
|
|
608
|
+
"name": "name",
|
|
609
|
+
"type": "string",
|
|
610
|
+
"required": true,
|
|
611
|
+
"description": "Namespace name."
|
|
612
|
+
},
|
|
613
|
+
{
|
|
614
|
+
"name": "location",
|
|
615
|
+
"type": "string",
|
|
616
|
+
"required": false,
|
|
617
|
+
"description": "Azure region (default: resource group location)."
|
|
618
|
+
},
|
|
619
|
+
{
|
|
620
|
+
"name": "entityName",
|
|
621
|
+
"type": "string",
|
|
622
|
+
"required": false,
|
|
623
|
+
"description": "Queue or topic name (default: \"{name}-queue\")."
|
|
624
|
+
},
|
|
625
|
+
{
|
|
626
|
+
"name": "useTopic",
|
|
627
|
+
"type": "boolean",
|
|
628
|
+
"required": false,
|
|
629
|
+
"description": "Use topic+subscription instead of a queue (default: false)."
|
|
630
|
+
},
|
|
631
|
+
{
|
|
632
|
+
"name": "subscriptionName",
|
|
633
|
+
"type": "string",
|
|
634
|
+
"required": false,
|
|
635
|
+
"description": "Subscription name when useTopic is true (default: \"{entityName}-sub\")."
|
|
636
|
+
},
|
|
637
|
+
{
|
|
638
|
+
"name": "tags",
|
|
639
|
+
"type": "Record<string, string>",
|
|
640
|
+
"required": false,
|
|
641
|
+
"description": "Resource tags."
|
|
642
|
+
},
|
|
643
|
+
{
|
|
644
|
+
"name": "defaults",
|
|
645
|
+
"type": "{ namespace?: Partial<ConstructorParameters<typeof ServiceBusNamespace>[0]>; queue?: Partial<ConstructorParameters<ty...",
|
|
646
|
+
"required": false,
|
|
647
|
+
"description": "Per-member defaults."
|
|
648
|
+
}
|
|
649
|
+
]
|
|
650
|
+
},
|
|
651
|
+
{
|
|
652
|
+
"name": "SqlDatabase",
|
|
653
|
+
"lexicon": "azure",
|
|
654
|
+
"description": "Create a SqlDatabase composite — returns a SQL Server, Database, and Firewall Rule.",
|
|
655
|
+
"bundles": [
|
|
656
|
+
"SqlDatabase",
|
|
657
|
+
"SqlFirewallRule",
|
|
658
|
+
"SqlServer"
|
|
659
|
+
],
|
|
660
|
+
"params": [
|
|
661
|
+
{
|
|
662
|
+
"name": "name",
|
|
663
|
+
"type": "string",
|
|
664
|
+
"required": true,
|
|
665
|
+
"description": "SQL server name (globally unique)."
|
|
666
|
+
},
|
|
667
|
+
{
|
|
668
|
+
"name": "adminLogin",
|
|
669
|
+
"type": "string",
|
|
670
|
+
"required": true,
|
|
671
|
+
"description": "Administrator login name."
|
|
672
|
+
},
|
|
673
|
+
{
|
|
674
|
+
"name": "adminPassword",
|
|
675
|
+
"type": "string",
|
|
676
|
+
"required": true,
|
|
677
|
+
"description": "Administrator login password."
|
|
678
|
+
},
|
|
679
|
+
{
|
|
680
|
+
"name": "sku",
|
|
681
|
+
"type": "string",
|
|
682
|
+
"required": false,
|
|
683
|
+
"description": "Database SKU name (default: \"S0\")."
|
|
684
|
+
},
|
|
685
|
+
{
|
|
686
|
+
"name": "location",
|
|
687
|
+
"type": "string",
|
|
688
|
+
"required": false,
|
|
689
|
+
"description": "Azure region (default: resource group location)."
|
|
690
|
+
},
|
|
691
|
+
{
|
|
692
|
+
"name": "tags",
|
|
693
|
+
"type": "Record<string, string>",
|
|
694
|
+
"required": false,
|
|
695
|
+
"description": "Resource tags."
|
|
696
|
+
},
|
|
697
|
+
{
|
|
698
|
+
"name": "defaults",
|
|
699
|
+
"type": "{ server?: Partial<ConstructorParameters<typeof SqlServer>[0]>; database?: Partial<ConstructorParameters<typeof SqlDa...",
|
|
700
|
+
"required": false,
|
|
701
|
+
"description": "Per-member defaults."
|
|
702
|
+
}
|
|
703
|
+
]
|
|
704
|
+
},
|
|
705
|
+
{
|
|
706
|
+
"name": "StorageAccountSecure",
|
|
707
|
+
"lexicon": "azure",
|
|
708
|
+
"description": "Create a StorageAccountSecure composite — returns a Storage Account resource with security best practices.",
|
|
709
|
+
"bundles": [
|
|
710
|
+
"StorageAccount"
|
|
711
|
+
],
|
|
712
|
+
"params": [
|
|
713
|
+
{
|
|
714
|
+
"name": "name",
|
|
715
|
+
"type": "string",
|
|
716
|
+
"required": true,
|
|
717
|
+
"description": "Storage account name (3-24 chars, lowercase + digits only)."
|
|
718
|
+
},
|
|
719
|
+
{
|
|
720
|
+
"name": "location",
|
|
721
|
+
"type": "string",
|
|
722
|
+
"required": false,
|
|
723
|
+
"description": "Azure region (default: resource group location)."
|
|
724
|
+
},
|
|
725
|
+
{
|
|
726
|
+
"name": "sku",
|
|
727
|
+
"type": "string",
|
|
728
|
+
"required": false,
|
|
729
|
+
"description": "SKU name (default: \"Standard_LRS\")."
|
|
730
|
+
},
|
|
731
|
+
{
|
|
732
|
+
"name": "tags",
|
|
733
|
+
"type": "Record<string, string>",
|
|
734
|
+
"required": false,
|
|
735
|
+
"description": "Resource tags."
|
|
736
|
+
},
|
|
737
|
+
{
|
|
738
|
+
"name": "defaults",
|
|
739
|
+
"type": "{ storageAccount?: Partial<ConstructorParameters<typeof StorageAccount>[0]>; }",
|
|
740
|
+
"required": false,
|
|
741
|
+
"description": "Per-member defaults."
|
|
742
|
+
}
|
|
743
|
+
]
|
|
744
|
+
},
|
|
745
|
+
{
|
|
746
|
+
"name": "VmLinux",
|
|
747
|
+
"lexicon": "azure",
|
|
748
|
+
"description": "Create a VmLinux composite — returns a Linux VM, NIC, NSG, and optional Public IP.",
|
|
749
|
+
"bundles": [
|
|
750
|
+
"NetworkInterface",
|
|
751
|
+
"NetworkSecurityGroup",
|
|
752
|
+
"PublicIPAddress",
|
|
753
|
+
"VirtualMachine"
|
|
754
|
+
],
|
|
755
|
+
"params": [
|
|
756
|
+
{
|
|
757
|
+
"name": "name",
|
|
758
|
+
"type": "string",
|
|
759
|
+
"required": true,
|
|
760
|
+
"description": "Virtual machine name."
|
|
761
|
+
},
|
|
762
|
+
{
|
|
763
|
+
"name": "vmSize",
|
|
764
|
+
"type": "string",
|
|
765
|
+
"required": true,
|
|
766
|
+
"description": "VM size (e.g., \"Standard_B2s\", \"Standard_D2s_v5\")."
|
|
767
|
+
},
|
|
768
|
+
{
|
|
769
|
+
"name": "adminUsername",
|
|
770
|
+
"type": "string",
|
|
771
|
+
"required": true,
|
|
772
|
+
"description": "Admin username for SSH."
|
|
773
|
+
},
|
|
774
|
+
{
|
|
775
|
+
"name": "sshPublicKey",
|
|
776
|
+
"type": "string",
|
|
777
|
+
"required": true,
|
|
778
|
+
"description": "SSH public key for authentication."
|
|
779
|
+
},
|
|
780
|
+
{
|
|
781
|
+
"name": "subnetId",
|
|
782
|
+
"type": "string",
|
|
783
|
+
"required": true,
|
|
784
|
+
"description": "Subnet resource ID where the NIC will be placed."
|
|
785
|
+
},
|
|
786
|
+
{
|
|
787
|
+
"name": "location",
|
|
788
|
+
"type": "string",
|
|
789
|
+
"required": false,
|
|
790
|
+
"description": "Azure region (default: resource group location)."
|
|
791
|
+
},
|
|
792
|
+
{
|
|
793
|
+
"name": "publicIp",
|
|
794
|
+
"type": "boolean",
|
|
795
|
+
"required": false,
|
|
796
|
+
"description": "Create a public IP address (default: false)."
|
|
797
|
+
},
|
|
798
|
+
{
|
|
799
|
+
"name": "tags",
|
|
800
|
+
"type": "Record<string, string>",
|
|
801
|
+
"required": false,
|
|
802
|
+
"description": "Resource tags."
|
|
803
|
+
},
|
|
804
|
+
{
|
|
805
|
+
"name": "defaults",
|
|
806
|
+
"type": "{ virtualMachine?: Partial<ConstructorParameters<typeof VirtualMachine>[0]>; nic?: Partial<ConstructorParameters<type...",
|
|
807
|
+
"required": false,
|
|
808
|
+
"description": "Per-member defaults."
|
|
809
|
+
}
|
|
810
|
+
]
|
|
811
|
+
},
|
|
812
|
+
{
|
|
813
|
+
"name": "VnetDefault",
|
|
814
|
+
"lexicon": "azure",
|
|
815
|
+
"description": "Create a VnetDefault composite — returns a Virtual Network, two Subnets, an NSG, and a Route Table.",
|
|
816
|
+
"bundles": [
|
|
817
|
+
"NetworkSecurityGroup",
|
|
818
|
+
"RouteTable",
|
|
819
|
+
"Subnet",
|
|
820
|
+
"VirtualNetwork"
|
|
821
|
+
],
|
|
822
|
+
"params": [
|
|
823
|
+
{
|
|
824
|
+
"name": "name",
|
|
825
|
+
"type": "string",
|
|
826
|
+
"required": true,
|
|
827
|
+
"description": "Virtual network name."
|
|
828
|
+
},
|
|
829
|
+
{
|
|
830
|
+
"name": "addressPrefix",
|
|
831
|
+
"type": "string",
|
|
832
|
+
"required": false,
|
|
833
|
+
"description": "Address space prefix (default: \"10.0.0.0/16\")."
|
|
834
|
+
},
|
|
835
|
+
{
|
|
836
|
+
"name": "subnetPrefixes",
|
|
837
|
+
"type": "[string, string]",
|
|
838
|
+
"required": false,
|
|
839
|
+
"description": "Subnet address prefixes [subnet1, subnet2] (default: [\"10.0.1.0/24\", \"10.0.2.0/24\"])."
|
|
840
|
+
},
|
|
841
|
+
{
|
|
842
|
+
"name": "location",
|
|
843
|
+
"type": "string",
|
|
844
|
+
"required": false,
|
|
845
|
+
"description": "Azure region (default: resource group location)."
|
|
846
|
+
},
|
|
847
|
+
{
|
|
848
|
+
"name": "tags",
|
|
849
|
+
"type": "Record<string, string>",
|
|
850
|
+
"required": false,
|
|
851
|
+
"description": "Resource tags."
|
|
852
|
+
},
|
|
853
|
+
{
|
|
854
|
+
"name": "defaults",
|
|
855
|
+
"type": "{ virtualNetwork?: Partial<ConstructorParameters<typeof VirtualNetwork>[0]>; subnet1?: Partial<ConstructorParameters<...",
|
|
856
|
+
"required": false,
|
|
857
|
+
"description": "Per-member defaults."
|
|
858
|
+
}
|
|
859
|
+
]
|
|
860
|
+
}
|
|
861
|
+
];
|
package/src/plugin.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { compositeCatalog } from "./composites/catalog";
|
|
1
2
|
import type { LexiconPlugin, IntrinsicDef } from "@intentius/chant/lexicon";
|
|
2
3
|
import { detectTemplate } from "./detect";
|
|
3
4
|
import type { LintRule } from "@intentius/chant/lint/rule";
|
|
@@ -356,6 +357,10 @@ export const tags = defaultTags([
|
|
|
356
357
|
return azureHover(ctx);
|
|
357
358
|
},
|
|
358
359
|
|
|
360
|
+
composites() {
|
|
361
|
+
return compositeCatalog;
|
|
362
|
+
},
|
|
363
|
+
|
|
359
364
|
mcpTools(): McpToolContribution[] {
|
|
360
365
|
return [{
|
|
361
366
|
name: "azure:lookup-resource",
|