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