@moonrepo/types 1.33.2 → 2.0.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.
@@ -3,14 +3,16 @@
3
3
  /* eslint-disable */
4
4
 
5
5
  import type { Id } from './common';
6
- import type { Input, PartialTaskConfig, PlatformType, TaskConfig } from './tasks-config';
6
+ import type { Input, PartialTaskConfig, TaskConfig } from './tasks-config';
7
+ import type { PartialToolchainPluginConfig, ToolchainPluginConfig } from './toolchains-config';
7
8
  import type {
8
- PartialToolchainPluginConfig,
9
- ToolchainPluginConfig,
10
- UnresolvedVersionSpec,
11
- } from './toolchain-config';
9
+ DockerFileConfig,
10
+ DockerScaffoldConfig,
11
+ PartialDockerFileConfig,
12
+ PartialDockerScaffoldConfig,
13
+ } from './workspace-config';
12
14
 
13
- /** The scope and or relationship of the dependency. */
15
+ /** The relationship scope of a dependency. */
14
16
  export type DependencyScope = 'build' | 'development' | 'peer' | 'production' | 'root';
15
17
 
16
18
  /**
@@ -21,7 +23,7 @@ export type DependencySource = 'explicit' | 'implicit';
21
23
 
22
24
  /** Expanded information about a project dependency. */
23
25
  export interface ProjectDependencyConfig {
24
- /** ID of the depended on project. */
26
+ /** Identifier of the depended on project. */
25
27
  id: Id;
26
28
  /**
27
29
  * Scope of the dependency relationship.
@@ -43,48 +45,44 @@ export interface ProjectDependencyConfig {
43
45
 
44
46
  export type ProjectDependsOn = Id | ProjectDependencyConfig;
45
47
 
46
- /** Configures `Dockerfile` generation. */
47
- export interface ProjectDockerFileConfig {
48
- /** A task within the current project for building the project. */
49
- buildTask: Id | null;
50
- /** The base Docker image. */
51
- image: string | null;
52
- /** A task within the current project for starting the project. */
53
- startTask: Id | null;
54
- }
55
-
56
- /** Configures aspects of the Docker scaffolding process. */
57
- export interface ProjectDockerScaffoldConfig {
48
+ /**
49
+ * Configures our Docker integration.
50
+ * @since 1.27.0
51
+ */
52
+ export interface ProjectDockerConfig {
58
53
  /**
59
- * List of glob patterns, relative from the project root,
60
- * to include (or exclude) in the sources skeleton.
54
+ * Configures aspects of the `Dockerfile` generation process.
55
+ * @since 1.27.0
61
56
  */
62
- include: string[];
63
- }
64
-
65
- /** Configures our Docker integration. */
66
- export interface ProjectDockerConfig {
67
- /** Configures aspects of the `Dockerfile` generation process. */
68
- file: ProjectDockerFileConfig;
69
- /** Configures aspects of the Docker scaffolding process. */
70
- scaffold: ProjectDockerScaffoldConfig;
57
+ file: DockerFileConfig;
58
+ /**
59
+ * Configures aspects of the Docker scaffolding process.
60
+ * @since 1.27.0
61
+ */
62
+ scaffold: DockerScaffoldConfig;
71
63
  }
72
64
 
73
65
  /** Supported programming languages that each project can be written in. */
74
66
  export type LanguageType =
75
67
  | 'bash'
76
68
  | 'batch'
69
+ | 'cplusplus'
70
+ | 'csharp'
71
+ | 'dotnet'
77
72
  | 'go'
73
+ | 'java'
78
74
  | 'javascript'
75
+ | 'kotlin'
79
76
  | 'php'
80
77
  | 'python'
81
78
  | 'ruby'
82
79
  | 'rust'
80
+ | 'swift'
83
81
  | 'typescript'
84
82
  | 'unknown'
85
83
  | string;
86
84
 
87
- /** The layer within the project stack, for categorizing. */
85
+ /** The layer within the technology stack, for categorizing. */
88
86
  export type LayerType =
89
87
  | 'application'
90
88
  | 'automation'
@@ -98,11 +96,11 @@ export type OwnersPaths = string[] | Record<string, string[]>;
98
96
 
99
97
  /**
100
98
  * Defines ownership of source code within the current project, by mapping
101
- * file paths and globs to owners. An owner is either a user, team, or group.
99
+ * file paths and glob patterns to owners. An owner is either a user, team, or group.
102
100
  */
103
101
  export interface OwnersConfig {
104
102
  /**
105
- * Bitbucket only. A mapping of custom groups (prefixed with `@@@`),
103
+ * Bitbucket only. A map of custom groups (prefixed with `@@@`),
106
104
  * to a list of user and normal groups.
107
105
  */
108
106
  customGroups: Record<string, string[]>;
@@ -111,9 +109,9 @@ export interface OwnersConfig {
111
109
  /** GitLab only. Marks the code owners section as optional. */
112
110
  optional: boolean;
113
111
  /**
114
- * A mapping of file paths and file globs to owners.
112
+ * A list or map of file paths and glob patterns to owners.
115
113
  * When a list, the `defaultOwner` is the owner, and each item is a path.
116
- * When an object, the key is a path, and the value is a list of owners.
114
+ * When a map, the key is a path, and the value is a list of owners.
117
115
  */
118
116
  paths: OwnersPaths;
119
117
  /**
@@ -127,77 +125,66 @@ export interface OwnersConfig {
127
125
  /** Expanded information about the project. */
128
126
  export interface ProjectMetadataConfig {
129
127
  /**
130
- * The Slack, Discord, etc, channel to discuss the project.
128
+ * The Slack, Discord, IRC, etc, channel to discuss the project.
131
129
  * Must start with a `#`.
132
130
  */
133
131
  channel: string | null;
134
- /** A description on what the project does, and why it exists. */
135
- description: string;
132
+ /** A description on what the project does and why it exists. */
133
+ description: string | null;
136
134
  /** The individual maintainers of the project. The format is unspecified. */
137
135
  maintainers: string[];
138
136
  /** Custom metadata fields. */
139
137
  metadata: Record<string, unknown>;
140
- /** A human-readable name of the project. */
141
- name: string | null;
142
138
  /**
143
139
  * The owner of the project. Can be an individual, team, or
144
140
  * organization. The format is unspecified.
145
141
  */
146
142
  owner: string | null;
143
+ /** A human-readable title of the project. */
144
+ title: string | null;
147
145
  }
148
146
 
149
147
  /** The technology stack of the project, for categorizing. */
150
- export type StackType = 'backend' | 'frontend' | 'infrastructure' | 'systems' | 'unknown';
151
-
152
- /** Overrides top-level toolchain settings. */
153
- export interface ProjectToolchainCommonToolConfig {
154
- /** Version of the tool this project will use. */
155
- version: UnresolvedVersionSpec | null;
156
- }
148
+ export type StackType = 'backend' | 'data' | 'frontend' | 'infrastructure' | 'systems' | 'unknown';
157
149
 
158
150
  export type ProjectToolchainEntry = null | boolean | ToolchainPluginConfig;
159
151
 
160
152
  /** Overrides top-level toolchain settings, scoped to this project. */
161
- export interface ProjectToolchainConfig {
162
- /** Overrides `bun` settings. */
163
- bun: ProjectToolchainCommonToolConfig | null;
153
+ export interface ProjectToolchainsConfig {
164
154
  /**
165
- * The default toolchain(s) for all tasks within the project,
166
- * if their toolchain is unknown.
155
+ * A single toolchain, or list of toolchains, to inherit for
156
+ * this project and all of its tasks.
157
+ * @since 1.31.0
167
158
  */
168
159
  defaults?: Id | Id[] | null;
169
160
  /**
170
- * The default toolchain(s) for all tasks within the project,
171
- * if their toolchain is unknown.
161
+ * A single toolchain, or list of toolchains, to inherit for
162
+ * this project and all of its tasks.
163
+ * @since 1.31.0
172
164
  */
173
165
  default: Id | Id[] | null;
174
- /** Overrides `deno` settings. */
175
- deno: ProjectToolchainCommonToolConfig | null;
176
- /** Overrides `node` settings. */
177
- node: ProjectToolchainCommonToolConfig | null;
178
- /** Overrides toolchains by their ID. */
166
+ /** Overrides workspace-level toolchains by their identifier. */
179
167
  plugins: Record<Id, ProjectToolchainEntry>;
180
- /** Overrides `python` settings. */
181
- python: ProjectToolchainCommonToolConfig | null;
182
- /** Overrides `rust` settings. */
183
- rust: ProjectToolchainCommonToolConfig | null;
184
168
  }
185
169
 
186
- /** Controls how tasks are inherited. */
170
+ /** Controls how workspace-level tasks are inherited. */
187
171
  export interface ProjectWorkspaceInheritedTasksConfig {
188
- /** Excludes inheriting tasks by ID. */
172
+ /** Excludes inheriting tasks by their identifier. */
189
173
  exclude: Id[];
190
174
  /**
191
- * Only inherits tasks by ID, and ignores the rest.
192
- * When not defined, inherits all matching tasks.
193
- * When an empty list, inherits no tasks.
175
+ * Only inherits tasks with the provided identifiers,
176
+ * and ignores the rest. When not defined, inherits
177
+ * all matching tasks. When an empty list, inherits no tasks.
194
178
  */
195
179
  include: Id[] | null;
196
- /** Renames inherited tasks to a new ID. */
180
+ /**
181
+ * Renames inherited tasks by mapping their existing
182
+ * identifier to a new identifier, scoped to this project.
183
+ */
197
184
  rename: Record<Id, Id>;
198
185
  }
199
186
 
200
- /** Overrides top-level workspace settings, scoped to this project. */
187
+ /** Overrides workspace settings, scoped to this project. */
201
188
  export interface ProjectWorkspaceConfig {
202
189
  /** Controls how tasks are inherited. */
203
190
  inheritedTasks: ProjectWorkspaceInheritedTasksConfig;
@@ -208,43 +195,41 @@ export interface ProjectWorkspaceConfig {
208
195
  * Docs: https://moonrepo.dev/docs/config/project
209
196
  */
210
197
  export interface ProjectConfig {
211
- /** @default 'https://moonrepo.dev/schemas/project.json' */
212
- $schema?: string;
198
+ $schema: string;
199
+ /** Other projects that this project depends on. */
200
+ deps?: ProjectDependsOn[];
213
201
  /** Other projects that this project depends on. */
214
202
  dependsOn: ProjectDependsOn[];
215
- /** Configures Docker integration for this project. */
203
+ /**
204
+ * Configures Docker integration for this project.
205
+ * @since 1.27.0
206
+ */
216
207
  docker: ProjectDockerConfig;
217
208
  /**
218
- * A mapping of environment variables that will be set for
209
+ * A map of environment variables that will be inherited by
219
210
  * all tasks within the project.
220
211
  */
221
- env: Record<string, string>;
212
+ env: Record<string, string | null>;
222
213
  /**
223
- * A mapping of group IDs to a list of file paths, globs, and
214
+ * A map of group identifiers to a list of file paths, globs, and
224
215
  * environment variables, that can be referenced from tasks.
225
216
  */
226
217
  fileGroups: Record<Id, Input[]>;
227
218
  /**
228
- * Overrides the ID within the project graph, as defined in
219
+ * Overrides the identifier within the project graph, as defined in
229
220
  * the workspace `projects` setting.
221
+ * @since 1.18.0
230
222
  */
231
223
  id: Id | null;
232
224
  /**
233
225
  * The primary programming language of the project.
234
226
  *
235
227
  * @default 'unknown'
236
- * @type {'bash' | 'batch' | 'go' | 'javascript' | 'php' | 'python' | 'ruby' | 'rust' | 'typescript' | 'unknown' | string}
228
+ * @type {'bash' | 'batch' | 'cplusplus' | 'csharp' | 'dotnet' | 'go' | 'java' | 'javascript' | 'kotlin' | 'php' | 'python' | 'ruby' | 'rust' | 'swift' | 'typescript' | 'unknown' | string}
237
229
  */
238
230
  language: LanguageType;
239
231
  /**
240
- * The layer within the project stack, for categorizing.
241
- *
242
- * @default 'unknown'
243
- * @type {'application' | 'automation' | 'configuration' | 'library' | 'scaffolding' | 'tool' | 'unknown'}
244
- */
245
- type?: LayerType;
246
- /**
247
- * The layer within the project stack, for categorizing.
232
+ * The layer within the technology stack, for categorizing.
248
233
  *
249
234
  * @default 'unknown'
250
235
  * @type {'application' | 'automation' | 'configuration' | 'library' | 'scaffolding' | 'tool' | 'unknown'}
@@ -253,23 +238,17 @@ export interface ProjectConfig {
253
238
  /**
254
239
  * Defines ownership of source code within the current project, by mapping
255
240
  * file paths and globs to owners. An owner is either a user, team, or group.
241
+ * @since 1.8.0
256
242
  */
257
243
  owners: OwnersConfig;
258
- /**
259
- * The default platform for all tasks within the project,
260
- * if their platform is unknown.
261
- *
262
- * @default 'unknown'
263
- * @deprecated
264
- */
265
- platform: PlatformType | null;
266
244
  /** Expanded information about the project. */
267
245
  project: ProjectMetadataConfig | null;
268
246
  /**
269
247
  * The technology stack of the project, for categorizing.
248
+ * @since 1.22.0
270
249
  *
271
250
  * @default 'unknown'
272
- * @type {'backend' | 'frontend' | 'infrastructure' | 'systems' | 'unknown'}
251
+ * @type {'backend' | 'data' | 'frontend' | 'infrastructure' | 'systems' | 'unknown'}
273
252
  */
274
253
  stack: StackType;
275
254
  /**
@@ -277,17 +256,20 @@ export interface ProjectConfig {
277
256
  * boundary enforcement, and task inheritance.
278
257
  */
279
258
  tags: Id[];
280
- /** A mapping of tasks by ID to parameters required for running the task. */
259
+ /**
260
+ * A map of identifiers to task objects. Tasks represent the work-unit
261
+ * of a project, and can be ran in the action pipeline.
262
+ */
281
263
  tasks: Record<Id, TaskConfig>;
282
264
  /** Overrides top-level toolchain settings, scoped to this project. */
283
- toolchain: ProjectToolchainConfig;
265
+ toolchains: ProjectToolchainsConfig;
284
266
  /** Overrides top-level workspace settings, scoped to this project. */
285
267
  workspace: ProjectWorkspaceConfig;
286
268
  }
287
269
 
288
270
  /** Expanded information about a project dependency. */
289
271
  export interface PartialProjectDependencyConfig {
290
- /** ID of the depended on project. */
272
+ /** Identifier of the depended on project. */
291
273
  id?: Id | null;
292
274
  /**
293
275
  * Scope of the dependency relationship.
@@ -307,42 +289,32 @@ export interface PartialProjectDependencyConfig {
307
289
 
308
290
  export type PartialProjectDependsOn = Id | PartialProjectDependencyConfig;
309
291
 
310
- /** Configures `Dockerfile` generation. */
311
- export interface PartialProjectDockerFileConfig {
312
- /** A task within the current project for building the project. */
313
- buildTask?: Id | null;
314
- /** The base Docker image. */
315
- image?: string | null;
316
- /** A task within the current project for starting the project. */
317
- startTask?: Id | null;
318
- }
319
-
320
- /** Configures aspects of the Docker scaffolding process. */
321
- export interface PartialProjectDockerScaffoldConfig {
292
+ /**
293
+ * Configures our Docker integration.
294
+ * @since 1.27.0
295
+ */
296
+ export interface PartialProjectDockerConfig {
322
297
  /**
323
- * List of glob patterns, relative from the project root,
324
- * to include (or exclude) in the sources skeleton.
298
+ * Configures aspects of the `Dockerfile` generation process.
299
+ * @since 1.27.0
325
300
  */
326
- include?: string[] | null;
327
- }
328
-
329
- /** Configures our Docker integration. */
330
- export interface PartialProjectDockerConfig {
331
- /** Configures aspects of the `Dockerfile` generation process. */
332
- file?: PartialProjectDockerFileConfig | null;
333
- /** Configures aspects of the Docker scaffolding process. */
334
- scaffold?: PartialProjectDockerScaffoldConfig | null;
301
+ file?: PartialDockerFileConfig | null;
302
+ /**
303
+ * Configures aspects of the Docker scaffolding process.
304
+ * @since 1.27.0
305
+ */
306
+ scaffold?: PartialDockerScaffoldConfig | null;
335
307
  }
336
308
 
337
309
  export type PartialOwnersPaths = string[] | Record<string, string[]>;
338
310
 
339
311
  /**
340
312
  * Defines ownership of source code within the current project, by mapping
341
- * file paths and globs to owners. An owner is either a user, team, or group.
313
+ * file paths and glob patterns to owners. An owner is either a user, team, or group.
342
314
  */
343
315
  export interface PartialOwnersConfig {
344
316
  /**
345
- * Bitbucket only. A mapping of custom groups (prefixed with `@@@`),
317
+ * Bitbucket only. A map of custom groups (prefixed with `@@@`),
346
318
  * to a list of user and normal groups.
347
319
  */
348
320
  customGroups?: Record<string, string[]> | null;
@@ -351,9 +323,9 @@ export interface PartialOwnersConfig {
351
323
  /** GitLab only. Marks the code owners section as optional. */
352
324
  optional?: boolean | null;
353
325
  /**
354
- * A mapping of file paths and file globs to owners.
326
+ * A list or map of file paths and glob patterns to owners.
355
327
  * When a list, the `defaultOwner` is the owner, and each item is a path.
356
- * When an object, the key is a path, and the value is a list of owners.
328
+ * When a map, the key is a path, and the value is a list of owners.
357
329
  */
358
330
  paths?: PartialOwnersPaths | null;
359
331
  /**
@@ -367,74 +339,63 @@ export interface PartialOwnersConfig {
367
339
  /** Expanded information about the project. */
368
340
  export interface PartialProjectMetadataConfig {
369
341
  /**
370
- * The Slack, Discord, etc, channel to discuss the project.
342
+ * The Slack, Discord, IRC, etc, channel to discuss the project.
371
343
  * Must start with a `#`.
372
344
  */
373
345
  channel?: string | null;
374
- /** A description on what the project does, and why it exists. */
346
+ /** A description on what the project does and why it exists. */
375
347
  description?: string | null;
376
348
  /** The individual maintainers of the project. The format is unspecified. */
377
349
  maintainers?: string[] | null;
378
350
  /** Custom metadata fields. */
379
351
  metadata?: Record<string, unknown> | null;
380
- /** A human-readable name of the project. */
381
- name?: string | null;
382
352
  /**
383
353
  * The owner of the project. Can be an individual, team, or
384
354
  * organization. The format is unspecified.
385
355
  */
386
356
  owner?: string | null;
387
- }
388
-
389
- /** Overrides top-level toolchain settings. */
390
- export interface PartialProjectToolchainCommonToolConfig {
391
- /** Version of the tool this project will use. */
392
- version?: UnresolvedVersionSpec | null;
357
+ /** A human-readable title of the project. */
358
+ title?: string | null;
393
359
  }
394
360
 
395
361
  export type PartialProjectToolchainEntry = null | boolean | PartialToolchainPluginConfig;
396
362
 
397
363
  /** Overrides top-level toolchain settings, scoped to this project. */
398
- export interface PartialProjectToolchainConfig {
399
- /** Overrides `bun` settings. */
400
- bun?: PartialProjectToolchainCommonToolConfig | null;
364
+ export interface PartialProjectToolchainsConfig {
401
365
  /**
402
- * The default toolchain(s) for all tasks within the project,
403
- * if their toolchain is unknown.
366
+ * A single toolchain, or list of toolchains, to inherit for
367
+ * this project and all of its tasks.
368
+ * @since 1.31.0
404
369
  */
405
370
  defaults?: Id | Id[] | null;
406
371
  /**
407
- * The default toolchain(s) for all tasks within the project,
408
- * if their toolchain is unknown.
372
+ * A single toolchain, or list of toolchains, to inherit for
373
+ * this project and all of its tasks.
374
+ * @since 1.31.0
409
375
  */
410
376
  default?: Id | Id[] | null;
411
- /** Overrides `deno` settings. */
412
- deno?: PartialProjectToolchainCommonToolConfig | null;
413
- /** Overrides `node` settings. */
414
- node?: PartialProjectToolchainCommonToolConfig | null;
415
- /** Overrides toolchains by their ID. */
377
+ /** Overrides workspace-level toolchains by their identifier. */
416
378
  plugins?: Record<Id, PartialProjectToolchainEntry> | null;
417
- /** Overrides `python` settings. */
418
- python?: PartialProjectToolchainCommonToolConfig | null;
419
- /** Overrides `rust` settings. */
420
- rust?: PartialProjectToolchainCommonToolConfig | null;
421
379
  }
422
380
 
423
- /** Controls how tasks are inherited. */
381
+ /** Controls how workspace-level tasks are inherited. */
424
382
  export interface PartialProjectWorkspaceInheritedTasksConfig {
425
- /** Excludes inheriting tasks by ID. */
383
+ /** Excludes inheriting tasks by their identifier. */
426
384
  exclude?: Id[] | null;
427
385
  /**
428
- * Only inherits tasks by ID, and ignores the rest.
429
- * When not defined, inherits all matching tasks.
430
- * When an empty list, inherits no tasks.
386
+ * Only inherits tasks with the provided identifiers,
387
+ * and ignores the rest. When not defined, inherits
388
+ * all matching tasks. When an empty list, inherits no tasks.
431
389
  */
432
390
  include?: Id[] | null;
433
- /** Renames inherited tasks to a new ID. */
391
+ /**
392
+ * Renames inherited tasks by mapping their existing
393
+ * identifier to a new identifier, scoped to this project.
394
+ */
434
395
  rename?: Record<Id, Id> | null;
435
396
  }
436
397
 
437
- /** Overrides top-level workspace settings, scoped to this project. */
398
+ /** Overrides workspace settings, scoped to this project. */
438
399
  export interface PartialProjectWorkspaceConfig {
439
400
  /** Controls how tasks are inherited. */
440
401
  inheritedTasks?: PartialProjectWorkspaceInheritedTasksConfig | null;
@@ -445,25 +406,30 @@ export interface PartialProjectWorkspaceConfig {
445
406
  * Docs: https://moonrepo.dev/docs/config/project
446
407
  */
447
408
  export interface PartialProjectConfig {
448
- /** @default 'https://moonrepo.dev/schemas/project.json' */
449
409
  $schema?: string | null;
450
410
  /** Other projects that this project depends on. */
411
+ deps?: PartialProjectDependsOn[] | null;
412
+ /** Other projects that this project depends on. */
451
413
  dependsOn?: PartialProjectDependsOn[] | null;
452
- /** Configures Docker integration for this project. */
414
+ /**
415
+ * Configures Docker integration for this project.
416
+ * @since 1.27.0
417
+ */
453
418
  docker?: PartialProjectDockerConfig | null;
454
419
  /**
455
- * A mapping of environment variables that will be set for
420
+ * A map of environment variables that will be inherited by
456
421
  * all tasks within the project.
457
422
  */
458
- env?: Record<string, string> | null;
423
+ env?: Record<string, string | null> | null;
459
424
  /**
460
- * A mapping of group IDs to a list of file paths, globs, and
425
+ * A map of group identifiers to a list of file paths, globs, and
461
426
  * environment variables, that can be referenced from tasks.
462
427
  */
463
428
  fileGroups?: Record<Id, Input[]> | null;
464
429
  /**
465
- * Overrides the ID within the project graph, as defined in
430
+ * Overrides the identifier within the project graph, as defined in
466
431
  * the workspace `projects` setting.
432
+ * @since 1.18.0
467
433
  */
468
434
  id?: Id | null;
469
435
  /**
@@ -473,13 +439,7 @@ export interface PartialProjectConfig {
473
439
  */
474
440
  language?: LanguageType | null;
475
441
  /**
476
- * The layer within the project stack, for categorizing.
477
- *
478
- * @default 'unknown'
479
- */
480
- type?: LayerType | null;
481
- /**
482
- * The layer within the project stack, for categorizing.
442
+ * The layer within the technology stack, for categorizing.
483
443
  *
484
444
  * @default 'unknown'
485
445
  */
@@ -487,20 +447,14 @@ export interface PartialProjectConfig {
487
447
  /**
488
448
  * Defines ownership of source code within the current project, by mapping
489
449
  * file paths and globs to owners. An owner is either a user, team, or group.
450
+ * @since 1.8.0
490
451
  */
491
452
  owners?: PartialOwnersConfig | null;
492
- /**
493
- * The default platform for all tasks within the project,
494
- * if their platform is unknown.
495
- *
496
- * @default 'unknown'
497
- * @deprecated
498
- */
499
- platform?: PlatformType | null;
500
453
  /** Expanded information about the project. */
501
454
  project?: PartialProjectMetadataConfig | null;
502
455
  /**
503
456
  * The technology stack of the project, for categorizing.
457
+ * @since 1.22.0
504
458
  *
505
459
  * @default 'unknown'
506
460
  */
@@ -510,10 +464,13 @@ export interface PartialProjectConfig {
510
464
  * boundary enforcement, and task inheritance.
511
465
  */
512
466
  tags?: Id[] | null;
513
- /** A mapping of tasks by ID to parameters required for running the task. */
467
+ /**
468
+ * A map of identifiers to task objects. Tasks represent the work-unit
469
+ * of a project, and can be ran in the action pipeline.
470
+ */
514
471
  tasks?: Record<Id, PartialTaskConfig> | null;
515
472
  /** Overrides top-level toolchain settings, scoped to this project. */
516
- toolchain?: PartialProjectToolchainConfig | null;
473
+ toolchains?: PartialProjectToolchainsConfig | null;
517
474
  /** Overrides top-level workspace settings, scoped to this project. */
518
475
  workspace?: PartialProjectWorkspaceConfig | null;
519
476
  }