@intentius/chant-lexicon-gitlab 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.
@@ -0,0 +1,3 @@
1
+ import type { CompositeEntry } from "@intentius/chant/lexicon";
2
+ export declare const compositeCatalog: CompositeEntry[];
3
+ //# sourceMappingURL=catalog.d.ts.map
@@ -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,EAia5C,CAAC"}
@@ -28,12 +28,12 @@ export declare const NodePipeline: import("@intentius/chant").CompositeDefinitio
28
28
  }>;
29
29
  /** NodePipeline preset for Bun projects. */
30
30
  export declare const BunPipeline: import("@intentius/chant").CompositeDefinition<{
31
- nodeVersion?: string | undefined;
32
31
  defaults?: {
33
32
  defaults?: Partial<ConstructorParameters<typeof Default>[0]>;
34
33
  build?: Partial<ConstructorParameters<typeof Job>[0]>;
35
34
  test?: Partial<ConstructorParameters<typeof Job>[0]>;
36
35
  } | undefined;
36
+ nodeVersion?: string | undefined;
37
37
  installCommand?: string | undefined;
38
38
  buildScript?: string | undefined;
39
39
  buildArtifactPaths?: string[] | undefined;
@@ -47,12 +47,12 @@ export declare const BunPipeline: import("@intentius/chant").CompositeDefinition
47
47
  }>;
48
48
  /** NodePipeline preset for pnpm projects. */
49
49
  export declare const PnpmPipeline: import("@intentius/chant").CompositeDefinition<{
50
- nodeVersion?: string | undefined;
51
50
  defaults?: {
52
51
  defaults?: Partial<ConstructorParameters<typeof Default>[0]>;
53
52
  build?: Partial<ConstructorParameters<typeof Job>[0]>;
54
53
  test?: Partial<ConstructorParameters<typeof Job>[0]>;
55
54
  } | undefined;
55
+ nodeVersion?: string | undefined;
56
56
  installCommand?: string | undefined;
57
57
  buildScript?: string | undefined;
58
58
  buildArtifactPaths?: string[] | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"node-pipeline.d.ts","sourceRoot":"","sources":["../../src/composites/node-pipeline.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAE,OAAO,EAA2B,MAAM,cAAc,CAAC;AAGrE,MAAM,WAAW,iBAAiB;IAChC,qCAAqC;IACrC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,sCAAsC;IACtC,cAAc,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,CAAC;IACxC,qEAAqE;IACrE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,wCAAwC;IACxC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oDAAoD;IACpD,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B,yCAAyC;IACzC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,6CAA6C;IAC7C,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,mEAAmE;IACnE,QAAQ,CAAC,EAAE;QACT,QAAQ,CAAC,EAAE,OAAO,CAAC,qBAAqB,CAAC,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7D,KAAK,CAAC,EAAE,OAAO,CAAC,qBAAqB,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACtD,IAAI,CAAC,EAAE,OAAO,CAAC,qBAAqB,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KACtD,CAAC;CACH;AA0BD,eAAO,MAAM,YAAY;;;;EAqDP,CAAC;AAEnB,4CAA4C;AAC5C,eAAO,MAAM,WAAW;kBArGR,MAAM;eAcT;QACT,QAAQ,CAAC,EAAE,OAAO,CAAC,qBAAqB,CAAC,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7D,KAAK,CAAC,EAAE,OAAO,CAAC,qBAAqB,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACtD,IAAI,CAAC,EAAE,OAAO,CAAC,qBAAqB,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KACtD;qBANgB,MAAM;kBART,MAAM;yBAIC,MAAM,EAAE;qBAEZ,MAAM;iBAJV,MAAM;qBAJF,KAAK,GAAG,MAAM,GAAG,KAAK;;;;;EAmGgD,CAAC;AAE1F,6CAA6C;AAC7C,eAAO,MAAM,YAAY;kBAxGT,MAAM;eAcT;QACT,QAAQ,CAAC,EAAE,OAAO,CAAC,qBAAqB,CAAC,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7D,KAAK,CAAC,EAAE,OAAO,CAAC,qBAAqB,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACtD,IAAI,CAAC,EAAE,OAAO,CAAC,qBAAqB,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KACtD;qBANgB,MAAM;kBART,MAAM;yBAIC,MAAM,EAAE;qBAEZ,MAAM;iBAJV,MAAM;qBAJF,KAAK,GAAG,MAAM,GAAG,KAAK;;;;;EAsGkD,CAAC"}
1
+ {"version":3,"file":"node-pipeline.d.ts","sourceRoot":"","sources":["../../src/composites/node-pipeline.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAE,OAAO,EAA2B,MAAM,cAAc,CAAC;AAGrE,MAAM,WAAW,iBAAiB;IAChC,qCAAqC;IACrC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,sCAAsC;IACtC,cAAc,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,CAAC;IACxC,qEAAqE;IACrE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,wCAAwC;IACxC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oDAAoD;IACpD,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B,yCAAyC;IACzC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,6CAA6C;IAC7C,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,mEAAmE;IACnE,QAAQ,CAAC,EAAE;QACT,QAAQ,CAAC,EAAE,OAAO,CAAC,qBAAqB,CAAC,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7D,KAAK,CAAC,EAAE,OAAO,CAAC,qBAAqB,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACtD,IAAI,CAAC,EAAE,OAAO,CAAC,qBAAqB,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KACtD,CAAC;CACH;AA0BD,eAAO,MAAM,YAAY;;;;EAqDP,CAAC;AAEnB,4CAA4C;AAC5C,eAAO,MAAM,WAAW;eAvFX;QACT,QAAQ,CAAC,EAAE,OAAO,CAAC,qBAAqB,CAAC,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7D,KAAK,CAAC,EAAE,OAAO,CAAC,qBAAqB,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACtD,IAAI,CAAC,EAAE,OAAO,CAAC,qBAAqB,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KACtD;kBAlBa,MAAM;qBAYH,MAAM;kBART,MAAM;yBAIC,MAAM,EAAE;qBAEZ,MAAM;iBAJV,MAAM;qBAJF,KAAK,GAAG,MAAM,GAAG,KAAK;;;;;EAmGgD,CAAC;AAE1F,6CAA6C;AAC7C,eAAO,MAAM,YAAY;eA1FZ;QACT,QAAQ,CAAC,EAAE,OAAO,CAAC,qBAAqB,CAAC,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7D,KAAK,CAAC,EAAE,OAAO,CAAC,qBAAqB,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACtD,IAAI,CAAC,EAAE,OAAO,CAAC,qBAAqB,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KACtD;kBAlBa,MAAM;qBAYH,MAAM;kBART,MAAM;yBAIC,MAAM,EAAE;qBAEZ,MAAM;iBAJV,MAAM;qBAJF,KAAK,GAAG,MAAM,GAAG,KAAK;;;;;EAsGkD,CAAC"}
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "algorithm": "sha256",
3
3
  "artifacts": {
4
- "manifest.json": "94d177edba9b8db0b2ef785e9c4ff4c95e6935648a1456d14f69ae1f7c6ff3ee",
4
+ "manifest.json": "09093077b454b21d48e28b6313a9a9d30e4380bcc3a0d0a6f19556a350a909af",
5
5
  "meta.json": "931fc3246a55645b1493080bbeb160e5d205e42349e8bdca96ca243adb5f0da3",
6
6
  "types/index.d.ts": "5cd2e99f135a929b72bdd822d00d780d39b1cd407ba0cfb3d511c7ac9d667b58",
7
7
  "rules/artifact-no-expiry.ts": "3f3cabf9792cbf8207e53a25f506715466b19ec25e9c3b4d0d77fed6b2eb4542",
@@ -55,5 +55,5 @@
55
55
  "skills/chant-gitlab-migrate.md": "4853d04980560b379e5b0f7267dcb0a1e5d5879cb9e9931681ce76b2a5fe69d8",
56
56
  "skills/chant-gitlab-patterns.md": "6d9a44e9e8de4c3820be9d65381b0d2ede4cb3626aaaf0011e21838a9fbf556e"
57
57
  },
58
- "composite": "7ac0433a9271589536f5656d109abe30a0c5d8e75f4bb3b8f293f33e344cdb70"
58
+ "composite": "6d481c321cf31f44bb053a7c64c022b4556acd45ae5561c86067571cab5670da"
59
59
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gitlab",
3
- "version": "0.84.0",
3
+ "version": "0.86.0",
4
4
  "chantVersion": ">=0.1.0",
5
5
  "namespace": "GitLab",
6
6
  "intrinsics": [
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAiC,MAAM,0BAA0B,CAAC;AAoB7F,eAAO,MAAM,YAAY,EAAE,aAohB1B,CAAC"}
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAiC,MAAM,0BAA0B,CAAC;AAoB7F,eAAO,MAAM,YAAY,EAAE,aAwhB1B,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@intentius/chant-lexicon-gitlab",
3
- "version": "0.84.0",
3
+ "version": "0.86.0",
4
4
  "description": "GitLab CI lexicon for chant — declarative IaC in TypeScript",
5
5
  "license": "Apache-2.0",
6
6
  "homepage": "https://intentius.io/chant",
@@ -67,8 +67,8 @@
67
67
  "typescript": "^5.9.3"
68
68
  },
69
69
  "peerDependencies": {
70
- "@intentius/chant": "^0.84.0",
71
- "@intentius/chant-lexicon-github": "^0.84.0",
70
+ "@intentius/chant": "^0.86.0",
71
+ "@intentius/chant-lexicon-github": "^0.86.0",
72
72
  "typescript": "^5.9.3"
73
73
  },
74
74
  "peerDependenciesMeta": {
@@ -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 gitlab 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 { gitlabPlugin } 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 gitlab 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 -- gitlab`").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("gitlab");
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(gitlabPlugin.composites?.()).toBe(compositeCatalog);
38
+ });
39
+ });
@@ -0,0 +1,423 @@
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": "BunPipeline",
9
+ "lexicon": "gitlab",
10
+ "description": "NodePipeline preset for Bun projects.",
11
+ "bundles": [
12
+ "Default",
13
+ "Job"
14
+ ],
15
+ "params": [
16
+ {
17
+ "name": "defaults",
18
+ "type": "{ defaults?: Partial<ConstructorParameters<typeof Default>[0]>; build?: Partial<ConstructorParameters<typeof Job>[0]>...",
19
+ "required": false,
20
+ "description": "Per-member defaults for customizing the generated resources."
21
+ },
22
+ {
23
+ "name": "nodeVersion",
24
+ "type": "string",
25
+ "required": false,
26
+ "description": "Node.js version."
27
+ },
28
+ {
29
+ "name": "installCommand",
30
+ "type": "string",
31
+ "required": false,
32
+ "description": "Override auto-detected install command"
33
+ },
34
+ {
35
+ "name": "buildScript",
36
+ "type": "string",
37
+ "required": false,
38
+ "description": "Build script name (runs via package manager)."
39
+ },
40
+ {
41
+ "name": "buildArtifactPaths",
42
+ "type": "string[]",
43
+ "required": false,
44
+ "description": "Artifact paths from build."
45
+ },
46
+ {
47
+ "name": "artifactExpiry",
48
+ "type": "string",
49
+ "required": false,
50
+ "description": "Artifact expiry."
51
+ },
52
+ {
53
+ "name": "testScript",
54
+ "type": "string",
55
+ "required": false,
56
+ "description": "Test script name."
57
+ },
58
+ {
59
+ "name": "packageManager",
60
+ "type": "\"npm\" | \"pnpm\" | \"bun\"",
61
+ "required": false,
62
+ "description": "Package manager."
63
+ }
64
+ ]
65
+ },
66
+ {
67
+ "name": "DockerBuild",
68
+ "lexicon": "gitlab",
69
+ "description": "Bundles Job.",
70
+ "bundles": [
71
+ "Job"
72
+ ],
73
+ "params": [
74
+ {
75
+ "name": "stage",
76
+ "type": "string",
77
+ "required": false,
78
+ "description": "Job stage."
79
+ },
80
+ {
81
+ "name": "tag",
82
+ "type": "string",
83
+ "required": false,
84
+ "description": "Image tag."
85
+ },
86
+ {
87
+ "name": "dockerfile",
88
+ "type": "string",
89
+ "required": false,
90
+ "description": "Dockerfile path."
91
+ },
92
+ {
93
+ "name": "context",
94
+ "type": "string",
95
+ "required": false,
96
+ "description": "Build context."
97
+ },
98
+ {
99
+ "name": "registry",
100
+ "type": "string",
101
+ "required": false,
102
+ "description": "Container registry."
103
+ },
104
+ {
105
+ "name": "image",
106
+ "type": "string",
107
+ "required": false,
108
+ "description": "Full image name."
109
+ },
110
+ {
111
+ "name": "tagLatest",
112
+ "type": "boolean",
113
+ "required": false,
114
+ "description": "Tag as :latest on default branch."
115
+ },
116
+ {
117
+ "name": "buildArgs",
118
+ "type": "Record<string, string>",
119
+ "required": false,
120
+ "description": "Extra docker build --build-arg flags"
121
+ },
122
+ {
123
+ "name": "rules",
124
+ "type": "InstanceType<typeof Rule>[]",
125
+ "required": false,
126
+ "description": "Job rules."
127
+ },
128
+ {
129
+ "name": "dockerVersion",
130
+ "type": "string",
131
+ "required": false,
132
+ "description": "Docker version."
133
+ },
134
+ {
135
+ "name": "defaults",
136
+ "type": "{ build?: Partial<ConstructorParameters<typeof Job>[0]>; }",
137
+ "required": false,
138
+ "description": "Per-member defaults for customizing the build job."
139
+ }
140
+ ]
141
+ },
142
+ {
143
+ "name": "MrPlanReport",
144
+ "lexicon": "gitlab",
145
+ "description": "A CI job that publishes `chant lifecycle plan` as the GitLab merge-request plan widget.",
146
+ "bundles": [
147
+ "Job"
148
+ ],
149
+ "params": [
150
+ {
151
+ "name": "environment",
152
+ "type": "string",
153
+ "required": true,
154
+ "description": "Lifecycle environment to plan against — the `<environment>` argument of `chant lifecycle plan`."
155
+ },
156
+ {
157
+ "name": "lexicon",
158
+ "type": "string",
159
+ "required": false,
160
+ "description": "Restrict the plan to one lexicon (the optional `[lexicon]` argument)."
161
+ },
162
+ {
163
+ "name": "stage",
164
+ "type": "string",
165
+ "required": false,
166
+ "description": "Stage for the plan job."
167
+ },
168
+ {
169
+ "name": "image",
170
+ "type": "string",
171
+ "required": false,
172
+ "description": "Image to run chant in."
173
+ },
174
+ {
175
+ "name": "ownedOnly",
176
+ "type": "boolean",
177
+ "required": false,
178
+ "description": "Plan against chant-owned resources only (passes `--owned`)."
179
+ },
180
+ {
181
+ "name": "reportFile",
182
+ "type": "string",
183
+ "required": false,
184
+ "description": "Artifact filename the report is written to."
185
+ },
186
+ {
187
+ "name": "before",
188
+ "type": "string[]",
189
+ "required": false,
190
+ "description": "Commands to run before the plan — typically cloud-credential setup, since the plan queries the live system to classify create/update/delete."
191
+ },
192
+ {
193
+ "name": "defaults",
194
+ "type": "{ plan?: Partial<ConstructorParameters<typeof Job>[0]>; }",
195
+ "required": false,
196
+ "description": "Per-member defaults for customizing the generated job."
197
+ }
198
+ ]
199
+ },
200
+ {
201
+ "name": "NodePipeline",
202
+ "lexicon": "gitlab",
203
+ "description": "Bundles Default, Job.",
204
+ "bundles": [
205
+ "Default",
206
+ "Job"
207
+ ],
208
+ "params": [
209
+ {
210
+ "name": "nodeVersion",
211
+ "type": "string",
212
+ "required": false,
213
+ "description": "Node.js version."
214
+ },
215
+ {
216
+ "name": "packageManager",
217
+ "type": "\"npm\" | \"pnpm\" | \"bun\"",
218
+ "required": false,
219
+ "description": "Package manager."
220
+ },
221
+ {
222
+ "name": "buildScript",
223
+ "type": "string",
224
+ "required": false,
225
+ "description": "Build script name (runs via package manager)."
226
+ },
227
+ {
228
+ "name": "testScript",
229
+ "type": "string",
230
+ "required": false,
231
+ "description": "Test script name."
232
+ },
233
+ {
234
+ "name": "buildArtifactPaths",
235
+ "type": "string[]",
236
+ "required": false,
237
+ "description": "Artifact paths from build."
238
+ },
239
+ {
240
+ "name": "artifactExpiry",
241
+ "type": "string",
242
+ "required": false,
243
+ "description": "Artifact expiry."
244
+ },
245
+ {
246
+ "name": "installCommand",
247
+ "type": "string",
248
+ "required": false,
249
+ "description": "Override auto-detected install command"
250
+ },
251
+ {
252
+ "name": "defaults",
253
+ "type": "{ defaults?: Partial<ConstructorParameters<typeof Default>[0]>; build?: Partial<ConstructorParameters<typeof Job>[0]>...",
254
+ "required": false,
255
+ "description": "Per-member defaults for customizing the generated resources."
256
+ }
257
+ ]
258
+ },
259
+ {
260
+ "name": "PnpmPipeline",
261
+ "lexicon": "gitlab",
262
+ "description": "NodePipeline preset for pnpm projects.",
263
+ "bundles": [
264
+ "Default",
265
+ "Job"
266
+ ],
267
+ "params": [
268
+ {
269
+ "name": "defaults",
270
+ "type": "{ defaults?: Partial<ConstructorParameters<typeof Default>[0]>; build?: Partial<ConstructorParameters<typeof Job>[0]>...",
271
+ "required": false,
272
+ "description": "Per-member defaults for customizing the generated resources."
273
+ },
274
+ {
275
+ "name": "nodeVersion",
276
+ "type": "string",
277
+ "required": false,
278
+ "description": "Node.js version."
279
+ },
280
+ {
281
+ "name": "installCommand",
282
+ "type": "string",
283
+ "required": false,
284
+ "description": "Override auto-detected install command"
285
+ },
286
+ {
287
+ "name": "buildScript",
288
+ "type": "string",
289
+ "required": false,
290
+ "description": "Build script name (runs via package manager)."
291
+ },
292
+ {
293
+ "name": "buildArtifactPaths",
294
+ "type": "string[]",
295
+ "required": false,
296
+ "description": "Artifact paths from build."
297
+ },
298
+ {
299
+ "name": "artifactExpiry",
300
+ "type": "string",
301
+ "required": false,
302
+ "description": "Artifact expiry."
303
+ },
304
+ {
305
+ "name": "testScript",
306
+ "type": "string",
307
+ "required": false,
308
+ "description": "Test script name."
309
+ },
310
+ {
311
+ "name": "packageManager",
312
+ "type": "\"npm\" | \"pnpm\" | \"bun\"",
313
+ "required": false,
314
+ "description": "Package manager."
315
+ }
316
+ ]
317
+ },
318
+ {
319
+ "name": "PythonPipeline",
320
+ "lexicon": "gitlab",
321
+ "description": "Bundles Default, Job.",
322
+ "bundles": [
323
+ "Default",
324
+ "Job"
325
+ ],
326
+ "params": [
327
+ {
328
+ "name": "pythonVersion",
329
+ "type": "string",
330
+ "required": false,
331
+ "description": "Python version."
332
+ },
333
+ {
334
+ "name": "testCommand",
335
+ "type": "string",
336
+ "required": false,
337
+ "description": "Test command."
338
+ },
339
+ {
340
+ "name": "lintCommand",
341
+ "type": "string | null",
342
+ "required": false,
343
+ "description": "Lint command."
344
+ },
345
+ {
346
+ "name": "requirementsFile",
347
+ "type": "string",
348
+ "required": false,
349
+ "description": "Requirements file."
350
+ },
351
+ {
352
+ "name": "usePoetry",
353
+ "type": "boolean",
354
+ "required": false,
355
+ "description": "Use poetry instead of pip."
356
+ },
357
+ {
358
+ "name": "defaults",
359
+ "type": "{ defaults?: Partial<ConstructorParameters<typeof Default>[0]>; test?: Partial<ConstructorParameters<typeof Job>[0]>;...",
360
+ "required": false,
361
+ "description": "Per-member defaults for customizing the generated resources."
362
+ }
363
+ ]
364
+ },
365
+ {
366
+ "name": "ReviewApp",
367
+ "lexicon": "gitlab",
368
+ "description": "Bundles Job.",
369
+ "bundles": [
370
+ "Job"
371
+ ],
372
+ "params": [
373
+ {
374
+ "name": "name",
375
+ "type": "string",
376
+ "required": true,
377
+ "description": "Base name for the jobs (e.g. \"review\" → review-deploy, review-stop in YAML)."
378
+ },
379
+ {
380
+ "name": "deployScript",
381
+ "type": "string | string[]",
382
+ "required": true,
383
+ "description": "Deploy script command(s)."
384
+ },
385
+ {
386
+ "name": "stopScript",
387
+ "type": "string | string[]",
388
+ "required": false,
389
+ "description": "Stop script command(s)."
390
+ },
391
+ {
392
+ "name": "urlPattern",
393
+ "type": "string",
394
+ "required": false,
395
+ "description": "Environment URL pattern."
396
+ },
397
+ {
398
+ "name": "autoStopIn",
399
+ "type": "string",
400
+ "required": false,
401
+ "description": "Auto-stop timer."
402
+ },
403
+ {
404
+ "name": "image",
405
+ "type": "InstanceType<typeof Image>",
406
+ "required": false,
407
+ "description": "Override image for both jobs."
408
+ },
409
+ {
410
+ "name": "stage",
411
+ "type": "string",
412
+ "required": false,
413
+ "description": "Job stage."
414
+ },
415
+ {
416
+ "name": "defaults",
417
+ "type": "{ deploy?: Partial<ConstructorParameters<typeof Job>[0]>; stop?: Partial<ConstructorParameters<typeof Job>[0]>; }",
418
+ "required": false,
419
+ "description": "Per-member defaults for customizing the deploy and stop jobs."
420
+ }
421
+ ]
422
+ }
423
+ ];
package/src/plugin.ts CHANGED
@@ -5,6 +5,7 @@
5
5
  * for GitLab CI/CD pipelines.
6
6
  */
7
7
 
8
+ import { compositeCatalog } from "./composites/catalog";
8
9
  import type { LexiconPlugin, IntrinsicDef, InitTemplateSet } from "@intentius/chant/lexicon";
9
10
  import type { LintRule } from "@intentius/chant/lint/rule";
10
11
  import { postSynthChecks as postSynthCheckList } from "./lint/post-synth";
@@ -274,6 +275,10 @@ export const test = new Job({
274
275
  console.error(`Packaged ${stats.resources} entities, ${stats.ruleCount} rules, ${stats.skillCount} skills`);
275
276
  },
276
277
 
278
+ composites() {
279
+ return compositeCatalog;
280
+ },
281
+
277
282
  mcpTools() {
278
283
  return [
279
284
  createDiffTool(gitlabSerializer, "Compare current build output against previous output for GitLab CI", "gitlab"),