@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.
@@ -1,41 +1,34 @@
1
1
  import type { ExtendsFrom, Id } from './common';
2
- import type { PluginLocator } from './toolchain-config';
3
2
  /** How to order ownership rules within the generated file. */
4
- export type CodeownersOrderBy = 'file-source' | 'project-name';
3
+ export type CodeownersOrderBy = 'file-source' | 'project-id';
5
4
  /** Configures code ownership rules for generating a `CODEOWNERS` file. */
6
5
  export interface CodeownersConfig {
7
6
  /**
8
- * Paths that are applied globally to all projects. Can be relative
9
- * from the workspace root, or a wildcard match for any depth.
7
+ * A map of global file paths and glob patterns to a list of owners.
8
+ * Can be relative from the workspace root, or a wildcard match for any depth.
10
9
  */
11
10
  globalPaths: Record<string, string[]>;
12
11
  /**
13
12
  * How to order ownership rules within the generated file.
14
13
  *
15
14
  * @default 'file-source'
16
- * @type {'file-source' | 'project-name'}
15
+ * @type {'file-source' | 'project-id'}
17
16
  */
18
17
  orderBy: CodeownersOrderBy;
19
18
  /**
20
19
  * Bitbucket and GitLab only. The number of approvals required for the
21
20
  * request to be satisfied. This will be applied to all paths.
21
+ * @since 1.28.0
22
22
  */
23
23
  requiredApprovals: number | null;
24
24
  /**
25
- * Generates a `CODEOWNERS` file after aggregating all ownership
26
- * rules from each project in the workspace.
25
+ * Automatically generate a `CODEOWNERS` file during a sync operation,
26
+ * after aggregating all ownership rules from each project in the workspace.
27
27
  */
28
- syncOnRun: boolean;
28
+ sync: boolean;
29
29
  }
30
30
  /** Configures boundaries and constraints between projects. */
31
31
  export interface ConstraintsConfig {
32
- /**
33
- * Enforces relationships between projects based on each project's
34
- * `layer` setting.
35
- *
36
- * @default true
37
- */
38
- enforceProjectTypeRelationships?: boolean;
39
32
  /**
40
33
  * Enforces relationships between projects based on each project's
41
34
  * `layer` setting.
@@ -49,11 +42,51 @@ export interface ConstraintsConfig {
49
42
  */
50
43
  tagRelationships: Record<Id, Id[]>;
51
44
  }
45
+ /**
46
+ * Configures `Dockerfile` generation. When configured at the workspace-level,
47
+ * applies to all projects, but can be overridden at the project-level.
48
+ */
49
+ export interface DockerFileConfig {
50
+ /**
51
+ * A task identifier within the current project for building the project.
52
+ * If not defined, will skip the build step.
53
+ */
54
+ buildTask: Id | null;
55
+ /**
56
+ * The base Docker image to use. If not defined, will use the provided image
57
+ * from the first matching toolchain, otherwise defaults to "scratch".
58
+ */
59
+ image: string | null;
60
+ /**
61
+ * Run the `moon docker prune` command after building the
62
+ * project, but before starting it.
63
+ * @since 2.0.0
64
+ */
65
+ runPrune: boolean | null;
66
+ /**
67
+ * Run the `moon docker setup` command after scaffolding,
68
+ * but before building the project.
69
+ * @since 2.0.0
70
+ */
71
+ runSetup: boolean | null;
72
+ /**
73
+ * A task identifier within the current project for starting the project
74
+ * within the `CMD` instruction. If not defined, will skip the start step
75
+ * and not include the `CMD` instruction.
76
+ */
77
+ startTask: Id | null;
78
+ /**
79
+ * A custom template file, relative from the workspace root, to use when
80
+ * rendering the `Dockerfile`. Powered by Tera.
81
+ */
82
+ template: string | null;
83
+ }
52
84
  /** Configures aspects of the Docker pruning process. */
53
85
  export interface DockerPruneConfig {
54
86
  /**
55
87
  * Automatically delete vendor directories (package manager
56
- * dependencies, build targets, etc) while pruning.
88
+ * dependencies, build targets, etc) while pruning. This is
89
+ * handled by each toolchain plugin and not moon directly.
57
90
  *
58
91
  * @default true
59
92
  */
@@ -64,25 +97,34 @@ export interface DockerPruneConfig {
64
97
  *
65
98
  * @default true
66
99
  */
67
- installToolchainDeps?: boolean;
100
+ installToolchainDependencies?: boolean;
68
101
  }
69
- /** Configures aspects of the Docker scaffolding process. */
102
+ /**
103
+ * Configures aspects of the Docker scaffolding process.
104
+ * When configured at the workspace-level, applies to all projects,
105
+ * but can be overridden at the project-level.
106
+ */
70
107
  export interface DockerScaffoldConfig {
71
108
  /**
72
- * Copy toolchain specific configs/manifests/files into
73
- * the workspace skeleton.
74
- *
75
- * @default true
109
+ * List of glob patterns in which to include/exclude files in
110
+ * the "configs" skeleton. Applies to both project and
111
+ * workspace level scaffolding.
76
112
  */
77
- copyToolchainFiles?: boolean;
113
+ configsPhaseGlobs: string[];
78
114
  /**
79
- * List of glob patterns, relative from the workspace root,
80
- * to include (or exclude) in the workspace skeleton.
115
+ * List of glob patterns in which to include/exclude files in
116
+ * the "sources" skeleton. Applies to both project and
117
+ * workspace level scaffolding.
81
118
  */
82
- include: string[];
119
+ sourcesPhaseGlobs: string[];
83
120
  }
84
121
  /** Configures our Docker integration. */
85
122
  export interface DockerConfig {
123
+ /**
124
+ * Configures aspects of the `Dockerfile` generation process.
125
+ * @since 2.0.0
126
+ */
127
+ file: DockerFileConfig;
86
128
  /** Configures aspects of the Docker pruning process. */
87
129
  prune: DockerPruneConfig;
88
130
  /** Configures aspects of the Docker scaffolding process. */
@@ -90,56 +132,6 @@ export interface DockerConfig {
90
132
  }
91
133
  /** Configures experiments across the entire moon workspace. */
92
134
  export interface ExperimentsConfig {
93
- /**
94
- * @default true
95
- * @deprecated
96
- */
97
- actionPipelineV2?: boolean;
98
- /**
99
- * @default true
100
- * @deprecated
101
- */
102
- disallowRunInCiMismatch?: boolean;
103
- /**
104
- * Enable faster glob file system walking.
105
- *
106
- * @default true
107
- */
108
- fasterGlobWalk?: boolean;
109
- /**
110
- * Enable a faster and more accurate Git implementation.
111
- * Supports submodules, subtrees, and worktrees.
112
- *
113
- * @default true
114
- */
115
- gitV2?: boolean;
116
- /**
117
- * @default true
118
- * @deprecated
119
- */
120
- interweavedTaskInheritance?: boolean;
121
- /**
122
- * @default true
123
- * @deprecated
124
- */
125
- strictProjectAliases?: boolean;
126
- /**
127
- * @default true
128
- * @deprecated
129
- */
130
- strictProjectIds?: boolean;
131
- /**
132
- * @default true
133
- * @deprecated
134
- */
135
- taskOutputBoundaries?: boolean;
136
- }
137
- /** Configures an individual extension. */
138
- export interface ExtensionConfig {
139
- /** Arbitrary configuration that'll be passed to the WASM plugin. */
140
- config: Record<string, unknown>;
141
- /** Location of the WASM plugin to use. */
142
- plugin: PluginLocator | null;
143
135
  }
144
136
  /** Configures the generator for scaffolding from templates. */
145
137
  export interface GeneratorConfig {
@@ -155,22 +147,17 @@ export type HasherOptimization = 'accuracy' | 'performance';
155
147
  export type HasherWalkStrategy = 'glob' | 'vcs';
156
148
  /** Configures aspects of the content hashing engine. */
157
149
  export interface HasherConfig {
158
- /**
159
- * The number of files to include in each hash operation.
160
- *
161
- * @default 2500
162
- * @deprecated
163
- */
164
- batchSize?: number;
165
150
  /**
166
151
  * When `warnOnMissingInputs` is enabled, filters missing file
167
152
  * paths from logging a warning.
153
+ * @since 1.10.0
168
154
  */
169
155
  ignoreMissingPatterns: string[];
170
156
  /**
171
157
  * Filters file paths that match a configured glob pattern
172
158
  * when a hash is being generated. Patterns are workspace relative,
173
159
  * so prefixing with `**` is recommended.
160
+ * @since 1.10.0
174
161
  */
175
162
  ignorePatterns: string[];
176
163
  /**
@@ -200,32 +187,26 @@ export type NotifierEventType = 'never' | 'always' | 'failure' | 'success' | 'ta
200
187
  /** Configures how and where notifications are sent. */
201
188
  export interface NotifierConfig {
202
189
  /**
203
- * Display an OS notification for certain pipeline events.
190
+ * Display an OS notification for certain action pipeline events.
191
+ * @since 1.38.0
204
192
  *
205
193
  * @default 'never'
206
194
  */
207
195
  terminalNotifications: NotifierEventType | null;
208
196
  /**
209
197
  * Whether webhook requests require acknowledgment (2xx response).
210
- *
211
- * @default false
198
+ * @since 1.38.0
212
199
  */
213
- webhookAcknowledge?: boolean;
200
+ webhookAcknowledge: boolean;
214
201
  /** A secure URL in which to send webhooks to. */
215
202
  webhookUrl: string | null;
216
203
  }
217
204
  export type PipelineActionSwitch = null | boolean | Id[];
218
- /** Configures aspects of the task runner (also known as the action pipeline). */
205
+ /** Configures aspects of the action pipeline. */
219
206
  export interface PipelineConfig {
220
- /**
221
- * List of target's for tasks without outputs, that should be
222
- * cached and persisted.
223
- *
224
- * @deprecated
225
- */
226
- archivableTargets: string[];
227
207
  /**
228
208
  * Automatically clean the cache after every task run.
209
+ * @since 1.24.0
229
210
  *
230
211
  * @default true
231
212
  */
@@ -243,12 +224,13 @@ export interface PipelineConfig {
243
224
  */
244
225
  inheritColorsForPipedTasks?: boolean;
245
226
  /**
246
- * Run the `InstallWorkspaceDeps` and `InstallProjectDeps` actions for
247
- * each running task when changes to lockfiles and manifests are detected.
227
+ * Run the `InstallDependencies` actions for each running task
228
+ * when changes to lockfiles and manifests are detected.
229
+ * @since 1.34.0
248
230
  */
249
231
  installDependencies: PipelineActionSwitch;
250
232
  /**
251
- * Threshold in milliseconds in which to force kill running child
233
+ * A threshold in milliseconds in which to force kill running child
252
234
  * processes after the pipeline receives an external signal. A value
253
235
  * of 0 will not kill the process and let them run to completion.
254
236
  *
@@ -260,6 +242,7 @@ export interface PipelineConfig {
260
242
  /**
261
243
  * When creating `SyncProject` actions, recursively create a `SyncProject`
262
244
  * action for each project dependency, and link them as a relationship.
245
+ * @since 1.34.0
263
246
  *
264
247
  * @default true
265
248
  */
@@ -267,48 +250,73 @@ export interface PipelineConfig {
267
250
  /**
268
251
  * Run the `SyncProject` actions in the pipeline for each owning project
269
252
  * of a running task.
253
+ * @since 1.34.0
270
254
  */
271
255
  syncProjects: PipelineActionSwitch;
272
256
  /**
273
257
  * Run the `SyncWorkspace` action before all actions in the pipeline.
258
+ * @since 1.34.0
274
259
  *
275
260
  * @default true
276
261
  */
277
262
  syncWorkspace?: boolean;
278
263
  }
264
+ /** The project identifier format for glob located projects. */
265
+ export type WorkspaceProjectGlobFormat = 'dir-name' | 'source-path';
279
266
  /** Configures projects in the workspace, using both globs and explicit source paths. */
280
267
  export interface WorkspaceProjectsConfig {
281
268
  /**
282
- * A list of globs in which to locate project directories.
283
- * Can be suffixed with `moon.yml` or `moon.pkl` to only find distinct projects.
269
+ * The project identifier format for glob located projects.
270
+ * @since 2.0.0
271
+ *
272
+ * @default 'dir-name'
273
+ * @type {'dir-name' | 'source-path'}
274
+ */
275
+ globFormat: WorkspaceProjectGlobFormat;
276
+ /**
277
+ * A list of glob patterns in which to locate project directories.
278
+ * Can be suffixed with a `moon.*` config file to only find distinct projects.
284
279
  */
285
280
  globs: string[];
286
- /** A mapping of project IDs to relative file paths to each project directory. */
281
+ /** A map of project identifiers to relative file paths to each project directory. */
287
282
  sources: Record<Id, string>;
288
283
  }
289
284
  export type WorkspaceProjects = WorkspaceProjectsConfig | string[] | Record<Id, string>;
290
- /** The API format of the remote service. */
285
+ /**
286
+ * The API format of the remote service.
287
+ * @since 1.32.0
288
+ */
291
289
  export type RemoteApi = 'grpc' | 'http';
292
- /** Configures basic HTTP authentication. */
290
+ /**
291
+ * Configures basic HTTP authentication.
292
+ * @since 1.32.0
293
+ */
293
294
  export interface RemoteAuthConfig {
294
- /** HTTP headers to inject into every request. */
295
+ /** A map of HTTP headers to inject into every request. */
295
296
  headers: Record<string, string>;
296
297
  /**
297
298
  * The name of an environment variable to use as a bearer token.
298
299
  *
299
- * @envvar MOON_REMOTE_AUTH_TOKEN
300
+ * @env MOON_REMOTE_AUTH_TOKEN
300
301
  */
301
302
  token: string | null;
302
303
  }
303
- /** Supported blob compression levels for gRPC APIs. */
304
+ /**
305
+ * Supported blob compression levels for gRPC APIs.
306
+ * @since 1.31.0
307
+ */
304
308
  export type RemoteCompression = 'none' | 'zstd';
305
- /** Configures the action cache (AC) and content addressable cache (CAS). */
309
+ /**
310
+ * Configures the action cache (AC) and content addressable cache (CAS).
311
+ * @since 1.30.0
312
+ */
306
313
  export interface RemoteCacheConfig {
307
314
  /**
308
315
  * The compression format to use when uploading/downloading blobs.
316
+ * @since 1.31.0
309
317
  *
310
318
  * @default 'none'
311
- * @envvar MOON_REMOTE_CACHE_COMPRESSION
319
+ * @env MOON_REMOTE_CACHE_COMPRESSION
312
320
  * @type {'none' | 'zstd'}
313
321
  */
314
322
  compression: RemoteCompression;
@@ -316,96 +324,111 @@ export interface RemoteCacheConfig {
316
324
  * Unique instance name for blobs. Will be used as a folder name.
317
325
  *
318
326
  * @default 'moon-outputs'
319
- * @envvar MOON_REMOTE_CACHE_INSTANCE_NAME
327
+ * @env MOON_REMOTE_CACHE_INSTANCE_NAME
320
328
  */
321
329
  instanceName?: string;
322
330
  /**
323
331
  * When local, only download matching blobs and do not upload new
324
332
  * blobs. Blobs will only be uploaded in CI environments.
333
+ * @since 1.40.0
325
334
  *
326
- * @envvar MOON_REMOTE_CACHE_LOCAL_READ_ONLY
335
+ * @env MOON_REMOTE_CACHE_LOCAL_READ_ONLY
327
336
  */
328
337
  localReadOnly: boolean;
329
338
  /**
330
339
  * When downloading blobs, verify the digests/hashes in the response
331
340
  * match the associated blob contents. This will reduce performance
332
341
  * but ensure partial or corrupted blobs won't cause failures.
342
+ * @since 1.36.0
333
343
  *
334
- * @envvar MOON_REMOTE_CACHE_VERIFY_INTEGRITY
344
+ * @env MOON_REMOTE_CACHE_VERIFY_INTEGRITY
335
345
  */
336
346
  verifyIntegrity: boolean;
337
347
  }
338
- /** Configures for both server and client authentication with mTLS. */
348
+ /**
349
+ * Configures for both server and client authentication with mTLS.
350
+ * @since 1.30.0
351
+ */
339
352
  export interface RemoteMtlsConfig {
340
353
  /**
341
354
  * If true, assume that the server supports HTTP/2,
342
355
  * even if it doesn't provide protocol negotiation via ALPN.
343
356
  *
344
- * @envvar MOON_REMOTE_MTLS_HTTP
357
+ * @env MOON_REMOTE_MTLS_HTTP
345
358
  */
346
359
  assumeHttp2: boolean;
347
360
  /**
348
361
  * A file path, relative from the workspace root, to the
349
362
  * certificate authority PEM encoded X509 certificate.
350
363
  *
351
- * @envvar MOON_REMOTE_MTLS_CA_CERT
364
+ * @env MOON_REMOTE_MTLS_CA_CERT
352
365
  */
353
366
  caCert: string;
354
367
  /**
355
368
  * A file path, relative from the workspace root, to the
356
369
  * client's PEM encoded X509 certificate.
357
370
  *
358
- * @envvar MOON_REMOTE_MTLS_CLIENT_CERT
371
+ * @env MOON_REMOTE_MTLS_CLIENT_CERT
359
372
  */
360
373
  clientCert: string;
361
374
  /**
362
375
  * A file path, relative from the workspace root, to the
363
376
  * client's PEM encoded X509 private key.
364
377
  *
365
- * @envvar MOON_REMOTE_MTLS_CLIENT_KEY
378
+ * @env MOON_REMOTE_MTLS_CLIENT_KEY
366
379
  */
367
380
  clientKey: string;
368
381
  /**
369
382
  * The domain name in which to verify the TLS certificate.
370
383
  *
371
- * @envvar MOON_REMOTE_MTLS_DOMAIN
384
+ * @env MOON_REMOTE_MTLS_DOMAIN
372
385
  */
373
386
  domain: string | null;
374
387
  }
375
- /** Configures for server-only authentication with TLS. */
388
+ /**
389
+ * Configures for server-only authentication with TLS.
390
+ * @since 1.30.0
391
+ */
376
392
  export interface RemoteTlsConfig {
377
393
  /**
378
394
  * If true, assume that the server supports HTTP/2,
379
395
  * even if it doesn't provide protocol negotiation via ALPN.
380
396
  *
381
- * @envvar MOON_REMOTE_TLS_HTTP2
397
+ * @env MOON_REMOTE_TLS_HTTP2
382
398
  */
383
399
  assumeHttp2: boolean;
384
400
  /**
385
401
  * A file path, relative from the workspace root, to the
386
402
  * certificate authority PEM encoded X509 certificate.
387
403
  *
388
- * @envvar MOON_REMOTE_TLS_CERT
404
+ * @env MOON_REMOTE_TLS_CERT
389
405
  */
390
406
  cert: string;
391
407
  /**
392
408
  * The domain name in which to verify the TLS certificate.
393
409
  *
394
- * @envvar MOON_REMOTE_TLS_DOMAIN
410
+ * @env MOON_REMOTE_TLS_DOMAIN
395
411
  */
396
412
  domain: string | null;
397
413
  }
398
- /** Configures the remote service, powered by the Bazel Remote Execution API. */
414
+ /**
415
+ * Configures the remote service, powered by the Bazel Remote Execution API.
416
+ * @since 1.30.0
417
+ */
399
418
  export interface RemoteConfig {
400
419
  /**
401
420
  * The API format of the remote service.
421
+ * @since 1.32.0
402
422
  *
403
423
  * @default 'grpc'
404
- * @envvar MOON_REMOTE_API
424
+ * @env MOON_REMOTE_API
405
425
  * @type {'grpc' | 'http'}
406
426
  */
407
427
  api: RemoteApi;
408
- /** Connect to the host using basic HTTP authentication. */
428
+ /**
429
+ * Connect to the host using basic HTTP authentication.
430
+ * @since 1.32.0
431
+ */
409
432
  auth: RemoteAuthConfig | null;
410
433
  /** Configures the action cache (AC) and content addressable cache (CAS). */
411
434
  cache: RemoteCacheConfig;
@@ -413,7 +436,7 @@ export interface RemoteConfig {
413
436
  * The remote host to connect and send requests to.
414
437
  * Supports gRPC protocols.
415
438
  *
416
- * @envvar MOON_REMOTE_HOST
439
+ * @env MOON_REMOTE_HOST
417
440
  */
418
441
  host: string | null;
419
442
  /**
@@ -424,10 +447,13 @@ export interface RemoteConfig {
424
447
  /** Connect to the host using server-only authentication with TLS. */
425
448
  tls: RemoteTlsConfig | null;
426
449
  }
427
- /** The format to use for generated VCS hook files. */
428
- export type VcsHookFormat = 'bash' | 'native';
429
450
  /** The VCS being utilized by the repository. */
430
- export type VcsManager = 'git';
451
+ export type VcsClient = 'git';
452
+ /**
453
+ * The format to use for generated VCS hook files.
454
+ * @since 1.29.0
455
+ */
456
+ export type VcsHookFormat = 'bash' | 'native';
431
457
  /**
432
458
  * The upstream version control provider, where the repository
433
459
  * source code is stored.
@@ -435,6 +461,13 @@ export type VcsManager = 'git';
435
461
  export type VcsProvider = 'bitbucket' | 'github' | 'gitlab' | 'other';
436
462
  /** Configures the version control system (VCS). */
437
463
  export interface VcsConfig {
464
+ /**
465
+ * The VCS client being utilized by the repository.
466
+ *
467
+ * @default 'git'
468
+ * @type {'git'}
469
+ */
470
+ client: VcsClient;
438
471
  /**
439
472
  * The default branch / base.
440
473
  *
@@ -443,23 +476,21 @@ export interface VcsConfig {
443
476
  defaultBranch?: string;
444
477
  /**
445
478
  * The format to use for generated VCS hook files.
479
+ * @since 1.29.0
446
480
  *
447
481
  * @default 'native'
448
482
  * @type {'bash' | 'native'}
449
483
  */
450
484
  hookFormat: VcsHookFormat;
451
- /** A mapping of hooks to commands to run when the hook is triggered. */
452
- hooks: Record<string, string[]>;
453
485
  /**
454
- * The VCS client being utilized by the repository.
455
- *
456
- * @default 'git'
457
- * @type {'git'}
486
+ * A map of hooks to a list of commands to run when the hook is triggered.
487
+ * @since 1.9.0
458
488
  */
459
- manager: VcsManager;
489
+ hooks: Record<string, string[]>;
460
490
  /**
461
491
  * The upstream version control provider, where the repository
462
492
  * source code is stored.
493
+ * @since 1.8.0
463
494
  *
464
495
  * @default 'github'
465
496
  * @type {'bitbucket' | 'github' | 'gitlab' | 'other'}
@@ -467,31 +498,49 @@ export interface VcsConfig {
467
498
  provider: VcsProvider;
468
499
  /** List of remote's in which to compare branches against. */
469
500
  remoteCandidates?: string[];
470
- /** Generates hooks and scripts based on the `hooks` setting. */
471
- syncHooks: boolean;
501
+ /**
502
+ * Automatically generate hooks and scripts during a sync operation,
503
+ * based on the `hooks` setting.
504
+ * @since 1.9.0
505
+ */
506
+ sync: boolean;
472
507
  }
473
508
  /**
474
509
  * Configures all aspects of the moon workspace.
475
510
  * Docs: https://moonrepo.dev/docs/config/workspace
476
511
  */
477
512
  export interface WorkspaceConfig {
478
- /** @default 'https://moonrepo.dev/schemas/workspace.json' */
513
+ /** @default './cache/schemas/workspace.json' */
479
514
  $schema?: string;
480
- /** Configures code ownership rules for generating a `CODEOWNERS` file. */
515
+ /**
516
+ * Configures code ownership rules for generating a `CODEOWNERS` file.
517
+ * @since 1.8.0
518
+ */
481
519
  codeowners: CodeownersConfig;
482
520
  /** Configures boundaries and constraints between projects. */
483
521
  constraints: ConstraintsConfig;
484
- /** Configures Docker integration for the workspace. */
522
+ /**
523
+ * The default/main project within the workspace. When a task is
524
+ * ran without a project, the default will be used.
525
+ * @since 2.0.0
526
+ */
527
+ defaultProject: Id | null;
528
+ /**
529
+ * Configures Docker integration for the workspace.
530
+ * @since 1.27.0
531
+ */
485
532
  docker: DockerConfig;
486
- /** Configures experiments across the entire moon workspace. */
533
+ /**
534
+ * Configures experiments across the entire moon workspace.
535
+ * @since 1.11.0
536
+ */
487
537
  experiments: ExperimentsConfig;
488
538
  /**
489
- * Extends one or many workspace configuration file. Supports a relative
490
- * file path or a secure URL.
539
+ * Extends one or many workspace configuration file.
540
+ * Supports a relative file path or a secure URL.
541
+ * @since 1.12.0
491
542
  */
492
543
  extends: ExtendsFrom | null;
493
- /** Configures extensions that can be executed with `moon ext`. */
494
- extensions: Record<Id, ExtensionConfig>;
495
544
  /** Configures the generator for scaffolding from templates. */
496
545
  generator: GeneratorConfig;
497
546
  /** Configures aspects of the content hashing engine. */
@@ -499,8 +548,6 @@ export interface WorkspaceConfig {
499
548
  /** Configures how and where notifications are sent. */
500
549
  notifier: NotifierConfig;
501
550
  /** Configures aspects of the action pipeline. */
502
- runner?: PipelineConfig;
503
- /** Configures aspects of the action pipeline. */
504
551
  pipeline: PipelineConfig;
505
552
  /**
506
553
  * Configures all projects within the workspace to create a project graph.
@@ -508,15 +555,19 @@ export interface WorkspaceConfig {
508
555
  * or both values.
509
556
  */
510
557
  projects: WorkspaceProjects;
558
+ /** Configures aspects of the remote service. */
559
+ remote: RemoteConfig;
511
560
  /**
512
561
  * Collects anonymous usage information, and checks for new moon versions.
513
562
  *
514
563
  * @default true
564
+ * @env MOON_TELEMETRY
515
565
  */
516
566
  telemetry?: boolean;
517
- /** Configures aspects of the remote service. */
518
- unstable_remote: RemoteConfig;
519
- /** Configures the version control system (VCS). */
567
+ /**
568
+ * Configures the version control system (VCS). Also known as
569
+ * source code management (SCM).
570
+ */
520
571
  vcs: VcsConfig;
521
572
  /** Requires a specific version of the `moon` binary. */
522
573
  versionConstraint: string | null;
@@ -524,8 +575,8 @@ export interface WorkspaceConfig {
524
575
  /** Configures code ownership rules for generating a `CODEOWNERS` file. */
525
576
  export interface PartialCodeownersConfig {
526
577
  /**
527
- * Paths that are applied globally to all projects. Can be relative
528
- * from the workspace root, or a wildcard match for any depth.
578
+ * A map of global file paths and glob patterns to a list of owners.
579
+ * Can be relative from the workspace root, or a wildcard match for any depth.
529
580
  */
530
581
  globalPaths?: Record<string, string[]> | null;
531
582
  /**
@@ -537,23 +588,17 @@ export interface PartialCodeownersConfig {
537
588
  /**
538
589
  * Bitbucket and GitLab only. The number of approvals required for the
539
590
  * request to be satisfied. This will be applied to all paths.
591
+ * @since 1.28.0
540
592
  */
541
593
  requiredApprovals?: number | null;
542
594
  /**
543
- * Generates a `CODEOWNERS` file after aggregating all ownership
544
- * rules from each project in the workspace.
595
+ * Automatically generate a `CODEOWNERS` file during a sync operation,
596
+ * after aggregating all ownership rules from each project in the workspace.
545
597
  */
546
- syncOnRun?: boolean | null;
598
+ sync?: boolean | null;
547
599
  }
548
600
  /** Configures boundaries and constraints between projects. */
549
601
  export interface PartialConstraintsConfig {
550
- /**
551
- * Enforces relationships between projects based on each project's
552
- * `layer` setting.
553
- *
554
- * @default true
555
- */
556
- enforceProjectTypeRelationships?: boolean | null;
557
602
  /**
558
603
  * Enforces relationships between projects based on each project's
559
604
  * `layer` setting.
@@ -567,11 +612,51 @@ export interface PartialConstraintsConfig {
567
612
  */
568
613
  tagRelationships?: Record<Id, Id[]> | null;
569
614
  }
615
+ /**
616
+ * Configures `Dockerfile` generation. When configured at the workspace-level,
617
+ * applies to all projects, but can be overridden at the project-level.
618
+ */
619
+ export interface PartialDockerFileConfig {
620
+ /**
621
+ * A task identifier within the current project for building the project.
622
+ * If not defined, will skip the build step.
623
+ */
624
+ buildTask?: Id | null;
625
+ /**
626
+ * The base Docker image to use. If not defined, will use the provided image
627
+ * from the first matching toolchain, otherwise defaults to "scratch".
628
+ */
629
+ image?: string | null;
630
+ /**
631
+ * Run the `moon docker prune` command after building the
632
+ * project, but before starting it.
633
+ * @since 2.0.0
634
+ */
635
+ runPrune?: boolean | null;
636
+ /**
637
+ * Run the `moon docker setup` command after scaffolding,
638
+ * but before building the project.
639
+ * @since 2.0.0
640
+ */
641
+ runSetup?: boolean | null;
642
+ /**
643
+ * A task identifier within the current project for starting the project
644
+ * within the `CMD` instruction. If not defined, will skip the start step
645
+ * and not include the `CMD` instruction.
646
+ */
647
+ startTask?: Id | null;
648
+ /**
649
+ * A custom template file, relative from the workspace root, to use when
650
+ * rendering the `Dockerfile`. Powered by Tera.
651
+ */
652
+ template?: string | null;
653
+ }
570
654
  /** Configures aspects of the Docker pruning process. */
571
655
  export interface PartialDockerPruneConfig {
572
656
  /**
573
657
  * Automatically delete vendor directories (package manager
574
- * dependencies, build targets, etc) while pruning.
658
+ * dependencies, build targets, etc) while pruning. This is
659
+ * handled by each toolchain plugin and not moon directly.
575
660
  *
576
661
  * @default true
577
662
  */
@@ -582,25 +667,34 @@ export interface PartialDockerPruneConfig {
582
667
  *
583
668
  * @default true
584
669
  */
585
- installToolchainDeps?: boolean | null;
670
+ installToolchainDependencies?: boolean | null;
586
671
  }
587
- /** Configures aspects of the Docker scaffolding process. */
672
+ /**
673
+ * Configures aspects of the Docker scaffolding process.
674
+ * When configured at the workspace-level, applies to all projects,
675
+ * but can be overridden at the project-level.
676
+ */
588
677
  export interface PartialDockerScaffoldConfig {
589
678
  /**
590
- * Copy toolchain specific configs/manifests/files into
591
- * the workspace skeleton.
592
- *
593
- * @default true
679
+ * List of glob patterns in which to include/exclude files in
680
+ * the "configs" skeleton. Applies to both project and
681
+ * workspace level scaffolding.
594
682
  */
595
- copyToolchainFiles?: boolean | null;
683
+ configsPhaseGlobs?: string[] | null;
596
684
  /**
597
- * List of glob patterns, relative from the workspace root,
598
- * to include (or exclude) in the workspace skeleton.
685
+ * List of glob patterns in which to include/exclude files in
686
+ * the "sources" skeleton. Applies to both project and
687
+ * workspace level scaffolding.
599
688
  */
600
- include?: string[] | null;
689
+ sourcesPhaseGlobs?: string[] | null;
601
690
  }
602
691
  /** Configures our Docker integration. */
603
692
  export interface PartialDockerConfig {
693
+ /**
694
+ * Configures aspects of the `Dockerfile` generation process.
695
+ * @since 2.0.0
696
+ */
697
+ file?: PartialDockerFileConfig | null;
604
698
  /** Configures aspects of the Docker pruning process. */
605
699
  prune?: PartialDockerPruneConfig | null;
606
700
  /** Configures aspects of the Docker scaffolding process. */
@@ -608,56 +702,6 @@ export interface PartialDockerConfig {
608
702
  }
609
703
  /** Configures experiments across the entire moon workspace. */
610
704
  export interface PartialExperimentsConfig {
611
- /**
612
- * @default true
613
- * @deprecated
614
- */
615
- actionPipelineV2?: boolean | null;
616
- /**
617
- * @default true
618
- * @deprecated
619
- */
620
- disallowRunInCiMismatch?: boolean | null;
621
- /**
622
- * Enable faster glob file system walking.
623
- *
624
- * @default true
625
- */
626
- fasterGlobWalk?: boolean | null;
627
- /**
628
- * Enable a faster and more accurate Git implementation.
629
- * Supports submodules, subtrees, and worktrees.
630
- *
631
- * @default true
632
- */
633
- gitV2?: boolean | null;
634
- /**
635
- * @default true
636
- * @deprecated
637
- */
638
- interweavedTaskInheritance?: boolean | null;
639
- /**
640
- * @default true
641
- * @deprecated
642
- */
643
- strictProjectAliases?: boolean | null;
644
- /**
645
- * @default true
646
- * @deprecated
647
- */
648
- strictProjectIds?: boolean | null;
649
- /**
650
- * @default true
651
- * @deprecated
652
- */
653
- taskOutputBoundaries?: boolean | null;
654
- }
655
- /** Configures an individual extension. */
656
- export interface PartialExtensionConfig {
657
- /** Arbitrary configuration that'll be passed to the WASM plugin. */
658
- config?: Record<string, unknown> | null;
659
- /** Location of the WASM plugin to use. */
660
- plugin?: PluginLocator | null;
661
705
  }
662
706
  /** Configures the generator for scaffolding from templates. */
663
707
  export interface PartialGeneratorConfig {
@@ -669,22 +713,17 @@ export interface PartialGeneratorConfig {
669
713
  }
670
714
  /** Configures aspects of the content hashing engine. */
671
715
  export interface PartialHasherConfig {
672
- /**
673
- * The number of files to include in each hash operation.
674
- *
675
- * @default 2500
676
- * @deprecated
677
- */
678
- batchSize?: number | null;
679
716
  /**
680
717
  * When `warnOnMissingInputs` is enabled, filters missing file
681
718
  * paths from logging a warning.
719
+ * @since 1.10.0
682
720
  */
683
721
  ignoreMissingPatterns?: string[] | null;
684
722
  /**
685
723
  * Filters file paths that match a configured glob pattern
686
724
  * when a hash is being generated. Patterns are workspace relative,
687
725
  * so prefixing with `**` is recommended.
726
+ * @since 1.10.0
688
727
  */
689
728
  ignorePatterns?: string[] | null;
690
729
  /**
@@ -710,32 +749,26 @@ export interface PartialHasherConfig {
710
749
  /** Configures how and where notifications are sent. */
711
750
  export interface PartialNotifierConfig {
712
751
  /**
713
- * Display an OS notification for certain pipeline events.
752
+ * Display an OS notification for certain action pipeline events.
753
+ * @since 1.38.0
714
754
  *
715
755
  * @default 'never'
716
756
  */
717
757
  terminalNotifications?: NotifierEventType | null;
718
758
  /**
719
759
  * Whether webhook requests require acknowledgment (2xx response).
720
- *
721
- * @default false
760
+ * @since 1.38.0
722
761
  */
723
762
  webhookAcknowledge?: boolean | null;
724
763
  /** A secure URL in which to send webhooks to. */
725
764
  webhookUrl?: string | null;
726
765
  }
727
766
  export type PartialPipelineActionSwitch = null | boolean | Id[];
728
- /** Configures aspects of the task runner (also known as the action pipeline). */
767
+ /** Configures aspects of the action pipeline. */
729
768
  export interface PartialPipelineConfig {
730
- /**
731
- * List of target's for tasks without outputs, that should be
732
- * cached and persisted.
733
- *
734
- * @deprecated
735
- */
736
- archivableTargets?: string[] | null;
737
769
  /**
738
770
  * Automatically clean the cache after every task run.
771
+ * @since 1.24.0
739
772
  *
740
773
  * @default true
741
774
  */
@@ -753,12 +786,13 @@ export interface PartialPipelineConfig {
753
786
  */
754
787
  inheritColorsForPipedTasks?: boolean | null;
755
788
  /**
756
- * Run the `InstallWorkspaceDeps` and `InstallProjectDeps` actions for
757
- * each running task when changes to lockfiles and manifests are detected.
789
+ * Run the `InstallDependencies` actions for each running task
790
+ * when changes to lockfiles and manifests are detected.
791
+ * @since 1.34.0
758
792
  */
759
793
  installDependencies?: PartialPipelineActionSwitch | null;
760
794
  /**
761
- * Threshold in milliseconds in which to force kill running child
795
+ * A threshold in milliseconds in which to force kill running child
762
796
  * processes after the pipeline receives an external signal. A value
763
797
  * of 0 will not kill the process and let them run to completion.
764
798
  *
@@ -770,6 +804,7 @@ export interface PartialPipelineConfig {
770
804
  /**
771
805
  * When creating `SyncProject` actions, recursively create a `SyncProject`
772
806
  * action for each project dependency, and link them as a relationship.
807
+ * @since 1.34.0
773
808
  *
774
809
  * @default true
775
810
  */
@@ -777,10 +812,12 @@ export interface PartialPipelineConfig {
777
812
  /**
778
813
  * Run the `SyncProject` actions in the pipeline for each owning project
779
814
  * of a running task.
815
+ * @since 1.34.0
780
816
  */
781
817
  syncProjects?: PartialPipelineActionSwitch | null;
782
818
  /**
783
819
  * Run the `SyncWorkspace` action before all actions in the pipeline.
820
+ * @since 1.34.0
784
821
  *
785
822
  * @default true
786
823
  */
@@ -789,127 +826,156 @@ export interface PartialPipelineConfig {
789
826
  /** Configures projects in the workspace, using both globs and explicit source paths. */
790
827
  export interface PartialWorkspaceProjectsConfig {
791
828
  /**
792
- * A list of globs in which to locate project directories.
793
- * Can be suffixed with `moon.yml` or `moon.pkl` to only find distinct projects.
829
+ * The project identifier format for glob located projects.
830
+ * @since 2.0.0
831
+ *
832
+ * @default 'dir-name'
833
+ */
834
+ globFormat?: WorkspaceProjectGlobFormat | null;
835
+ /**
836
+ * A list of glob patterns in which to locate project directories.
837
+ * Can be suffixed with a `moon.*` config file to only find distinct projects.
794
838
  */
795
839
  globs?: string[] | null;
796
- /** A mapping of project IDs to relative file paths to each project directory. */
840
+ /** A map of project identifiers to relative file paths to each project directory. */
797
841
  sources?: Record<Id, string> | null;
798
842
  }
799
843
  export type PartialWorkspaceProjects = PartialWorkspaceProjectsConfig | string[] | Record<Id, string>;
800
- /** Configures basic HTTP authentication. */
844
+ /**
845
+ * Configures basic HTTP authentication.
846
+ * @since 1.32.0
847
+ */
801
848
  export interface PartialRemoteAuthConfig {
802
- /** HTTP headers to inject into every request. */
849
+ /** A map of HTTP headers to inject into every request. */
803
850
  headers?: Record<string, string> | null;
804
851
  /**
805
852
  * The name of an environment variable to use as a bearer token.
806
853
  *
807
- * @envvar MOON_REMOTE_AUTH_TOKEN
854
+ * @env MOON_REMOTE_AUTH_TOKEN
808
855
  */
809
856
  token?: string | null;
810
857
  }
811
- /** Configures the action cache (AC) and content addressable cache (CAS). */
858
+ /**
859
+ * Configures the action cache (AC) and content addressable cache (CAS).
860
+ * @since 1.30.0
861
+ */
812
862
  export interface PartialRemoteCacheConfig {
813
863
  /**
814
864
  * The compression format to use when uploading/downloading blobs.
865
+ * @since 1.31.0
815
866
  *
816
867
  * @default 'none'
817
- * @envvar MOON_REMOTE_CACHE_COMPRESSION
868
+ * @env MOON_REMOTE_CACHE_COMPRESSION
818
869
  */
819
870
  compression?: RemoteCompression | null;
820
871
  /**
821
872
  * Unique instance name for blobs. Will be used as a folder name.
822
873
  *
823
874
  * @default 'moon-outputs'
824
- * @envvar MOON_REMOTE_CACHE_INSTANCE_NAME
875
+ * @env MOON_REMOTE_CACHE_INSTANCE_NAME
825
876
  */
826
877
  instanceName?: string | null;
827
878
  /**
828
879
  * When local, only download matching blobs and do not upload new
829
880
  * blobs. Blobs will only be uploaded in CI environments.
881
+ * @since 1.40.0
830
882
  *
831
- * @envvar MOON_REMOTE_CACHE_LOCAL_READ_ONLY
883
+ * @env MOON_REMOTE_CACHE_LOCAL_READ_ONLY
832
884
  */
833
885
  localReadOnly?: boolean | null;
834
886
  /**
835
887
  * When downloading blobs, verify the digests/hashes in the response
836
888
  * match the associated blob contents. This will reduce performance
837
889
  * but ensure partial or corrupted blobs won't cause failures.
890
+ * @since 1.36.0
838
891
  *
839
- * @envvar MOON_REMOTE_CACHE_VERIFY_INTEGRITY
892
+ * @env MOON_REMOTE_CACHE_VERIFY_INTEGRITY
840
893
  */
841
894
  verifyIntegrity?: boolean | null;
842
895
  }
843
- /** Configures for both server and client authentication with mTLS. */
896
+ /**
897
+ * Configures for both server and client authentication with mTLS.
898
+ * @since 1.30.0
899
+ */
844
900
  export interface PartialRemoteMtlsConfig {
845
901
  /**
846
902
  * If true, assume that the server supports HTTP/2,
847
903
  * even if it doesn't provide protocol negotiation via ALPN.
848
904
  *
849
- * @envvar MOON_REMOTE_MTLS_HTTP
905
+ * @env MOON_REMOTE_MTLS_HTTP
850
906
  */
851
907
  assumeHttp2?: boolean | null;
852
908
  /**
853
909
  * A file path, relative from the workspace root, to the
854
910
  * certificate authority PEM encoded X509 certificate.
855
911
  *
856
- * @envvar MOON_REMOTE_MTLS_CA_CERT
912
+ * @env MOON_REMOTE_MTLS_CA_CERT
857
913
  */
858
914
  caCert?: string | null;
859
915
  /**
860
916
  * A file path, relative from the workspace root, to the
861
917
  * client's PEM encoded X509 certificate.
862
918
  *
863
- * @envvar MOON_REMOTE_MTLS_CLIENT_CERT
919
+ * @env MOON_REMOTE_MTLS_CLIENT_CERT
864
920
  */
865
921
  clientCert?: string | null;
866
922
  /**
867
923
  * A file path, relative from the workspace root, to the
868
924
  * client's PEM encoded X509 private key.
869
925
  *
870
- * @envvar MOON_REMOTE_MTLS_CLIENT_KEY
926
+ * @env MOON_REMOTE_MTLS_CLIENT_KEY
871
927
  */
872
928
  clientKey?: string | null;
873
929
  /**
874
930
  * The domain name in which to verify the TLS certificate.
875
931
  *
876
- * @envvar MOON_REMOTE_MTLS_DOMAIN
932
+ * @env MOON_REMOTE_MTLS_DOMAIN
877
933
  */
878
934
  domain?: string | null;
879
935
  }
880
- /** Configures for server-only authentication with TLS. */
936
+ /**
937
+ * Configures for server-only authentication with TLS.
938
+ * @since 1.30.0
939
+ */
881
940
  export interface PartialRemoteTlsConfig {
882
941
  /**
883
942
  * If true, assume that the server supports HTTP/2,
884
943
  * even if it doesn't provide protocol negotiation via ALPN.
885
944
  *
886
- * @envvar MOON_REMOTE_TLS_HTTP2
945
+ * @env MOON_REMOTE_TLS_HTTP2
887
946
  */
888
947
  assumeHttp2?: boolean | null;
889
948
  /**
890
949
  * A file path, relative from the workspace root, to the
891
950
  * certificate authority PEM encoded X509 certificate.
892
951
  *
893
- * @envvar MOON_REMOTE_TLS_CERT
952
+ * @env MOON_REMOTE_TLS_CERT
894
953
  */
895
954
  cert?: string | null;
896
955
  /**
897
956
  * The domain name in which to verify the TLS certificate.
898
957
  *
899
- * @envvar MOON_REMOTE_TLS_DOMAIN
958
+ * @env MOON_REMOTE_TLS_DOMAIN
900
959
  */
901
960
  domain?: string | null;
902
961
  }
903
- /** Configures the remote service, powered by the Bazel Remote Execution API. */
962
+ /**
963
+ * Configures the remote service, powered by the Bazel Remote Execution API.
964
+ * @since 1.30.0
965
+ */
904
966
  export interface PartialRemoteConfig {
905
967
  /**
906
968
  * The API format of the remote service.
969
+ * @since 1.32.0
907
970
  *
908
971
  * @default 'grpc'
909
- * @envvar MOON_REMOTE_API
972
+ * @env MOON_REMOTE_API
910
973
  */
911
974
  api?: RemoteApi | null;
912
- /** Connect to the host using basic HTTP authentication. */
975
+ /**
976
+ * Connect to the host using basic HTTP authentication.
977
+ * @since 1.32.0
978
+ */
913
979
  auth?: PartialRemoteAuthConfig | null;
914
980
  /** Configures the action cache (AC) and content addressable cache (CAS). */
915
981
  cache?: PartialRemoteCacheConfig | null;
@@ -917,7 +983,7 @@ export interface PartialRemoteConfig {
917
983
  * The remote host to connect and send requests to.
918
984
  * Supports gRPC protocols.
919
985
  *
920
- * @envvar MOON_REMOTE_HOST
986
+ * @env MOON_REMOTE_HOST
921
987
  */
922
988
  host?: string | null;
923
989
  /**
@@ -930,6 +996,12 @@ export interface PartialRemoteConfig {
930
996
  }
931
997
  /** Configures the version control system (VCS). */
932
998
  export interface PartialVcsConfig {
999
+ /**
1000
+ * The VCS client being utilized by the repository.
1001
+ *
1002
+ * @default 'git'
1003
+ */
1004
+ client?: VcsClient | null;
933
1005
  /**
934
1006
  * The default branch / base.
935
1007
  *
@@ -938,52 +1010,69 @@ export interface PartialVcsConfig {
938
1010
  defaultBranch?: string | null;
939
1011
  /**
940
1012
  * The format to use for generated VCS hook files.
1013
+ * @since 1.29.0
941
1014
  *
942
1015
  * @default 'native'
943
1016
  */
944
1017
  hookFormat?: VcsHookFormat | null;
945
- /** A mapping of hooks to commands to run when the hook is triggered. */
946
- hooks?: Record<string, string[]> | null;
947
1018
  /**
948
- * The VCS client being utilized by the repository.
949
- *
950
- * @default 'git'
1019
+ * A map of hooks to a list of commands to run when the hook is triggered.
1020
+ * @since 1.9.0
951
1021
  */
952
- manager?: VcsManager | null;
1022
+ hooks?: Record<string, string[]> | null;
953
1023
  /**
954
1024
  * The upstream version control provider, where the repository
955
1025
  * source code is stored.
1026
+ * @since 1.8.0
956
1027
  *
957
1028
  * @default 'github'
958
1029
  */
959
1030
  provider?: VcsProvider | null;
960
1031
  /** List of remote's in which to compare branches against. */
961
1032
  remoteCandidates?: string[] | null;
962
- /** Generates hooks and scripts based on the `hooks` setting. */
963
- syncHooks?: boolean | null;
1033
+ /**
1034
+ * Automatically generate hooks and scripts during a sync operation,
1035
+ * based on the `hooks` setting.
1036
+ * @since 1.9.0
1037
+ */
1038
+ sync?: boolean | null;
964
1039
  }
965
1040
  /**
966
1041
  * Configures all aspects of the moon workspace.
967
1042
  * Docs: https://moonrepo.dev/docs/config/workspace
968
1043
  */
969
1044
  export interface PartialWorkspaceConfig {
970
- /** @default 'https://moonrepo.dev/schemas/workspace.json' */
1045
+ /** @default './cache/schemas/workspace.json' */
971
1046
  $schema?: string | null;
972
- /** Configures code ownership rules for generating a `CODEOWNERS` file. */
1047
+ /**
1048
+ * Configures code ownership rules for generating a `CODEOWNERS` file.
1049
+ * @since 1.8.0
1050
+ */
973
1051
  codeowners?: PartialCodeownersConfig | null;
974
1052
  /** Configures boundaries and constraints between projects. */
975
1053
  constraints?: PartialConstraintsConfig | null;
976
- /** Configures Docker integration for the workspace. */
1054
+ /**
1055
+ * The default/main project within the workspace. When a task is
1056
+ * ran without a project, the default will be used.
1057
+ * @since 2.0.0
1058
+ */
1059
+ defaultProject?: Id | null;
1060
+ /**
1061
+ * Configures Docker integration for the workspace.
1062
+ * @since 1.27.0
1063
+ */
977
1064
  docker?: PartialDockerConfig | null;
978
- /** Configures experiments across the entire moon workspace. */
1065
+ /**
1066
+ * Configures experiments across the entire moon workspace.
1067
+ * @since 1.11.0
1068
+ */
979
1069
  experiments?: PartialExperimentsConfig | null;
980
1070
  /**
981
- * Extends one or many workspace configuration file. Supports a relative
982
- * file path or a secure URL.
1071
+ * Extends one or many workspace configuration file.
1072
+ * Supports a relative file path or a secure URL.
1073
+ * @since 1.12.0
983
1074
  */
984
1075
  extends?: ExtendsFrom | null;
985
- /** Configures extensions that can be executed with `moon ext`. */
986
- extensions?: Record<Id, PartialExtensionConfig> | null;
987
1076
  /** Configures the generator for scaffolding from templates. */
988
1077
  generator?: PartialGeneratorConfig | null;
989
1078
  /** Configures aspects of the content hashing engine. */
@@ -991,8 +1080,6 @@ export interface PartialWorkspaceConfig {
991
1080
  /** Configures how and where notifications are sent. */
992
1081
  notifier?: PartialNotifierConfig | null;
993
1082
  /** Configures aspects of the action pipeline. */
994
- runner?: PartialPipelineConfig | null;
995
- /** Configures aspects of the action pipeline. */
996
1083
  pipeline?: PartialPipelineConfig | null;
997
1084
  /**
998
1085
  * Configures all projects within the workspace to create a project graph.
@@ -1000,15 +1087,19 @@ export interface PartialWorkspaceConfig {
1000
1087
  * or both values.
1001
1088
  */
1002
1089
  projects?: PartialWorkspaceProjects | null;
1090
+ /** Configures aspects of the remote service. */
1091
+ remote?: PartialRemoteConfig | null;
1003
1092
  /**
1004
1093
  * Collects anonymous usage information, and checks for new moon versions.
1005
1094
  *
1006
1095
  * @default true
1096
+ * @env MOON_TELEMETRY
1007
1097
  */
1008
1098
  telemetry?: boolean | null;
1009
- /** Configures aspects of the remote service. */
1010
- unstable_remote?: PartialRemoteConfig | null;
1011
- /** Configures the version control system (VCS). */
1099
+ /**
1100
+ * Configures the version control system (VCS). Also known as
1101
+ * source code management (SCM).
1102
+ */
1012
1103
  vcs?: PartialVcsConfig | null;
1013
1104
  /** Requires a specific version of the `moon` binary. */
1014
1105
  versionConstraint?: string | null;