@hyperfrontend/features 0.1.0 → 0.2.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.
Files changed (159) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/_dependencies/@hyperfrontend/builder/bundle/dependencies/index.cjs.js +1 -0
  3. package/_dependencies/@hyperfrontend/builder/bundle/dependencies/index.esm.js +1 -0
  4. package/_dependencies/@hyperfrontend/builder/bundle/dependencies/worker/index.cjs.js +1 -0
  5. package/_dependencies/@hyperfrontend/builder/bundle/dependencies/worker/index.esm.js +1 -0
  6. package/_dependencies/@hyperfrontend/builder/bundle/index.cjs.js +12 -10
  7. package/_dependencies/@hyperfrontend/builder/bundle/index.esm.js +14 -12
  8. package/_dependencies/@hyperfrontend/builder/bundle/rollup/index.cjs.js +2 -0
  9. package/_dependencies/@hyperfrontend/builder/bundle/rollup/index.esm.js +2 -0
  10. package/_dependencies/@hyperfrontend/builder/bundle/rollup/worker/index.cjs.js +2 -0
  11. package/_dependencies/@hyperfrontend/builder/bundle/rollup/worker/index.esm.js +2 -0
  12. package/_dependencies/@hyperfrontend/builder/index.cjs.js +87 -53
  13. package/_dependencies/@hyperfrontend/builder/index.esm.js +89 -55
  14. package/_dependencies/@hyperfrontend/immutable-api-utils/built-in-copy/promise/index.cjs.js +4 -0
  15. package/_dependencies/@hyperfrontend/immutable-api-utils/built-in-copy/promise/index.esm.js +3 -1
  16. package/_dependencies/@hyperfrontend/immutable-api-utils/built-in-copy/reflect/index.cjs.js +10 -0
  17. package/_dependencies/@hyperfrontend/immutable-api-utils/built-in-copy/reflect/index.esm.js +6 -0
  18. package/_dependencies/@hyperfrontend/immutable-api-utils/built-in-copy/timers/index.cjs.js +5 -0
  19. package/_dependencies/@hyperfrontend/immutable-api-utils/built-in-copy/timers/index.esm.js +5 -1
  20. package/_dependencies/@hyperfrontend/immutable-api-utils/built-in-copy/typed-arrays/index.cjs.js +2 -2
  21. package/_dependencies/@hyperfrontend/immutable-api-utils/built-in-copy/typed-arrays/index.esm.js +2 -2
  22. package/_dependencies/@hyperfrontend/network-protocol/browser/channel/index.cjs.js +5 -19
  23. package/_dependencies/@hyperfrontend/network-protocol/browser/channel/index.esm.js +1 -15
  24. package/_dependencies/@hyperfrontend/network-protocol/browser/data/index.cjs.js +15 -23
  25. package/_dependencies/@hyperfrontend/network-protocol/browser/data/index.esm.js +7 -15
  26. package/_dependencies/@hyperfrontend/network-protocol/browser/packet/index.cjs.js +6 -14
  27. package/_dependencies/@hyperfrontend/network-protocol/browser/packet/index.esm.js +7 -15
  28. package/_dependencies/@hyperfrontend/network-protocol/browser/receiver/index.cjs.js +4 -18
  29. package/_dependencies/@hyperfrontend/network-protocol/browser/receiver/index.esm.js +1 -15
  30. package/_dependencies/@hyperfrontend/network-protocol/browser/sender/index.cjs.js +5 -19
  31. package/_dependencies/@hyperfrontend/network-protocol/browser/sender/index.esm.js +2 -16
  32. package/_dependencies/@hyperfrontend/network-protocol/browser/v1/index.cjs.js +16 -24
  33. package/_dependencies/@hyperfrontend/network-protocol/browser/v1/index.esm.js +7 -15
  34. package/_dependencies/@hyperfrontend/network-protocol/browser/v2/index.cjs.js +16 -24
  35. package/_dependencies/@hyperfrontend/network-protocol/browser/v2/index.esm.js +7 -15
  36. package/_dependencies/@hyperfrontend/network-protocol/node/channel/index.cjs.js +3 -17
  37. package/_dependencies/@hyperfrontend/network-protocol/node/channel/index.esm.js +1 -15
  38. package/_dependencies/@hyperfrontend/network-protocol/node/data/index.cjs.js +6 -14
  39. package/_dependencies/@hyperfrontend/network-protocol/node/data/index.esm.js +7 -15
  40. package/_dependencies/@hyperfrontend/network-protocol/node/packet/index.cjs.js +6 -14
  41. package/_dependencies/@hyperfrontend/network-protocol/node/packet/index.esm.js +7 -15
  42. package/_dependencies/@hyperfrontend/network-protocol/node/receiver/index.cjs.js +3 -17
  43. package/_dependencies/@hyperfrontend/network-protocol/node/receiver/index.esm.js +1 -15
  44. package/_dependencies/@hyperfrontend/network-protocol/node/sender/index.cjs.js +2 -16
  45. package/_dependencies/@hyperfrontend/network-protocol/node/sender/index.esm.js +2 -16
  46. package/_dependencies/@hyperfrontend/network-protocol/node/v1/index.cjs.js +6 -14
  47. package/_dependencies/@hyperfrontend/network-protocol/node/v1/index.esm.js +7 -15
  48. package/_dependencies/@hyperfrontend/network-protocol/node/v2/index.cjs.js +6 -14
  49. package/_dependencies/@hyperfrontend/network-protocol/node/v2/index.esm.js +7 -15
  50. package/_dependencies/@hyperfrontend/nexus/index.cjs.js +49 -19
  51. package/_dependencies/@hyperfrontend/nexus/index.esm.js +49 -19
  52. package/_dependencies/@hyperfrontend/project-scope/core/fs/index.cjs.js +62 -0
  53. package/_dependencies/@hyperfrontend/project-scope/core/fs/index.esm.js +60 -2
  54. package/_shared/generators/feature/generate-feature-module/index.esm.js +11 -6
  55. package/_shared/generators/metadata/generate-metadata/index.esm.js +1 -0
  56. package/_shared/shared/control/index.cjs.js +12 -2
  57. package/_shared/shared/control/index.esm.js +12 -2
  58. package/_shared/shared/request/index.cjs.js +91 -0
  59. package/_shared/shared/request/index.esm.js +88 -0
  60. package/_shared/shared/shutdown/index.esm.js +12 -0
  61. package/bin/hf.js +643 -70
  62. package/bundle/host/index.iife.js +290 -4041
  63. package/bundle/host/index.iife.min.js +1 -1
  64. package/bundle/host/index.umd.js +290 -4041
  65. package/bundle/host/index.umd.min.js +1 -1
  66. package/bundle/hostee/index.iife.js +215 -2893
  67. package/bundle/hostee/index.iife.min.js +1 -1
  68. package/bundle/hostee/index.umd.js +215 -2893
  69. package/bundle/hostee/index.umd.min.js +1 -1
  70. package/cli/args.d.ts +2 -0
  71. package/cli/args.d.ts.map +1 -1
  72. package/cli/commands/build.d.ts +8 -5
  73. package/cli/commands/build.d.ts.map +1 -1
  74. package/cli/commands/dev.d.ts +7 -2
  75. package/cli/commands/dev.d.ts.map +1 -1
  76. package/cli/config/resolve.d.ts +3 -1
  77. package/cli/config/resolve.d.ts.map +1 -1
  78. package/cli/index.cjs.js +643 -70
  79. package/cli/index.d.ts +21 -10
  80. package/cli/index.esm.js +591 -60
  81. package/cli/usage.d.ts +1 -1
  82. package/cli/usage.d.ts.map +1 -1
  83. package/generators/feature/generate-feature-module.d.ts.map +1 -1
  84. package/generators/index.cjs.js +435 -42
  85. package/generators/index.d.ts +9 -8
  86. package/generators/index.esm.js +404 -30
  87. package/generators/metadata/generate-metadata.d.ts +4 -4
  88. package/generators/metadata/generate-metadata.d.ts.map +1 -1
  89. package/generators/shell/connector-types.d.ts +19 -0
  90. package/generators/shell/connector-types.d.ts.map +1 -0
  91. package/generators/shell/generate-shell.d.ts +5 -4
  92. package/generators/shell/generate-shell.d.ts.map +1 -1
  93. package/generators/shell/schema-type.d.ts +20 -0
  94. package/generators/shell/schema-type.d.ts.map +1 -0
  95. package/generators/shell/source-literal.d.ts +28 -0
  96. package/generators/shell/source-literal.d.ts.map +1 -1
  97. package/host/create-shell.d.ts +4 -1
  98. package/host/create-shell.d.ts.map +1 -1
  99. package/host/display-modes/dialog.d.ts +1 -1
  100. package/host/display-modes/dialog.d.ts.map +1 -1
  101. package/host/display-modes/embedded.d.ts +1 -1
  102. package/host/display-modes/embedded.d.ts.map +1 -1
  103. package/host/index.cjs.js +150 -30
  104. package/host/index.d.ts +53 -38
  105. package/host/index.d.ts.map +1 -1
  106. package/host/index.esm.js +129 -9
  107. package/host/lifecycle.d.ts.map +1 -1
  108. package/host/plugins.d.ts +1 -34
  109. package/host/plugins.d.ts.map +1 -1
  110. package/host/types.d.ts +49 -0
  111. package/host/types.d.ts.map +1 -1
  112. package/hostee/index.cjs.js +54 -9
  113. package/hostee/index.d.ts +41 -1
  114. package/hostee/index.d.ts.map +1 -1
  115. package/hostee/index.esm.js +51 -6
  116. package/hostee/lifecycle.d.ts.map +1 -1
  117. package/hostee/types.d.ts +40 -0
  118. package/hostee/types.d.ts.map +1 -1
  119. package/index.cjs.js +32 -1
  120. package/index.d.ts +89 -3
  121. package/index.d.ts.map +1 -1
  122. package/index.esm.js +32 -1
  123. package/nx/executors/build/index.cjs.js +14975 -137
  124. package/nx/executors/build/index.esm.js +14935 -115
  125. package/nx/executors/serve/executor.d.ts.map +1 -1
  126. package/nx/executors/serve/index.cjs.js +6594 -80
  127. package/nx/executors/serve/index.esm.js +6529 -44
  128. package/nx/generators/feature/index.cjs.js +8751 -108
  129. package/nx/generators/feature/index.esm.js +8711 -81
  130. package/package.json +15 -5
  131. package/server/debug-ui/index.d.ts +2 -0
  132. package/server/debug-ui/index.d.ts.map +1 -0
  133. package/server/debug-ui/index.html +15 -0
  134. package/server/debug-ui/index.iife.js +427 -0
  135. package/server/debug-ui/index.iife.min.js +1 -0
  136. package/server/dev-server.d.ts.map +1 -1
  137. package/server/index.cjs.js +78 -10
  138. package/server/index.esm.js +78 -11
  139. package/server/module-dir.d.ts +17 -0
  140. package/server/module-dir.d.ts.map +1 -0
  141. package/server/module-dir.stub.d.ts +15 -0
  142. package/server/module-dir.stub.d.ts.map +1 -0
  143. package/shared/contract.d.ts +1 -1
  144. package/shared/contract.d.ts.map +1 -1
  145. package/shared/control.d.ts +4 -0
  146. package/shared/control.d.ts.map +1 -1
  147. package/shared/invert-contract.d.ts +20 -0
  148. package/shared/invert-contract.d.ts.map +1 -0
  149. package/shared/request.d.ts +68 -0
  150. package/shared/request.d.ts.map +1 -0
  151. package/{nx/shared → shared}/shutdown.d.ts +3 -2
  152. package/shared/shutdown.d.ts.map +1 -0
  153. package/shared/types.d.ts +72 -1
  154. package/shared/types.d.ts.map +1 -1
  155. package/_shared/nx/shared/context/index.cjs.js +0 -18
  156. package/_shared/nx/shared/context/index.esm.js +0 -16
  157. package/nx/shared/shutdown.d.ts.map +0 -1
  158. package/server/debug-ui/bootstrap.d.ts +0 -2
  159. package/server/debug-ui/bootstrap.d.ts.map +0 -1
package/CHANGELOG.md CHANGED
@@ -2,6 +2,23 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file.
4
4
 
5
+ ## [0.2.0](https://github.com/AndrewRedican/hyperfrontend/compare/6b5a02be62850b0509b9fd71ad9232655cf5fbbf...4084db19f1de72e3859e4eecac8a2b55c957565b) - 2026-07-04
6
+
7
+ ### Features
8
+
9
+ - add request/response messaging to the shell and feature handles
10
+ - generate typed, protocol-carrying, self-contained connectors
11
+ - add the experience-plugin lifecycle seam to the shell
12
+ - export contract option types from the hostee entry
13
+
14
+ ### Bug Fixes
15
+
16
+ - locate debug-UI assets from the package bin layout
17
+ - bundle workspace deps into the nx plugin entries
18
+ - invert feature contracts for host-side channels
19
+ - keep hf dev serving and ship a self-locating debug UI
20
+ - relativize generated contract imports and type handler stubs
21
+
5
22
  ## 0.1.0 - 2026-06-28
6
23
 
7
24
  ### Features
@@ -35894,6 +35894,7 @@ const buildWorkspaceJsConfig = (job) => {
35894
35894
  declaration: false,
35895
35895
  declarationMap: false,
35896
35896
  sourceMap: false,
35897
+ filterRoot: workspaceRoot,
35897
35898
  compilerOptions: {
35898
35899
  baseUrl: workspaceRoot,
35899
35900
  outDir: path$2.dirname(job.outputPath),
@@ -35874,6 +35874,7 @@ const buildWorkspaceJsConfig = (job) => {
35874
35874
  declaration: false,
35875
35875
  declarationMap: false,
35876
35876
  sourceMap: false,
35877
+ filterRoot: workspaceRoot,
35877
35878
  compilerOptions: {
35878
35879
  baseUrl: workspaceRoot,
35879
35880
  outDir: dirname(job.outputPath),
@@ -35712,6 +35712,7 @@ const buildWorkspaceJsConfig = (job) => {
35712
35712
  declaration: false,
35713
35713
  declarationMap: false,
35714
35714
  sourceMap: false,
35715
+ filterRoot: workspaceRoot,
35715
35716
  compilerOptions: {
35716
35717
  baseUrl: workspaceRoot,
35717
35718
  outDir: path$3.dirname(job.outputPath),
@@ -35691,6 +35691,7 @@ const buildWorkspaceJsConfig = (job) => {
35691
35691
  declaration: false,
35692
35692
  declarationMap: false,
35693
35693
  sourceMap: false,
35694
+ filterRoot: workspaceRoot,
35694
35695
  compilerOptions: {
35695
35696
  baseUrl: workspaceRoot,
35696
35697
  outDir: dirname$1(job.outputPath),
@@ -184,15 +184,15 @@ function notFnMsg(label) {
184
184
 
185
185
  const logger = createLogger(index_cjs_js$4.error, index_cjs_js$4.warn, index_cjs_js$4.log, index_cjs_js$4.info, index_cjs_js$4.debug);
186
186
 
187
- const log$b = logger.channel('builder:bundle:dependencies:pre-pass');
187
+ const log$c = logger.channel('builder:bundle:dependencies:pre-pass');
188
188
 
189
- const log$a = logger.channel('builder:bundle:declarations:dts-per-entry');
189
+ const log$b = logger.channel('builder:bundle:declarations:dts-per-entry');
190
190
 
191
- const log$9 = logger.channel('builder:bundle:declarations:dts-pre-pass');
191
+ const log$a = logger.channel('builder:bundle:declarations:dts-pre-pass');
192
192
 
193
- const log$8 = logger.channel('builder:bundle:declarations');
193
+ const log$9 = logger.channel('builder:bundle:declarations');
194
194
 
195
- const log$7 = logger.channel('builder:bundle:declarations:prune-orphans');
195
+ const log$8 = logger.channel('builder:bundle:declarations:prune-orphans');
196
196
 
197
197
  const EVAL_SIDE_EFFECT_KINDS = index_cjs_js$7.createSet([
198
198
  ts.SyntaxKind.CallExpression,
@@ -203,13 +203,13 @@ const EVAL_SIDE_EFFECT_KINDS = index_cjs_js$7.createSet([
203
203
  ]);
204
204
  const PURE_GLOBAL_CALLEES = index_cjs_js$7.createSet(['Object.freeze', 'Object.seal', 'Object.preventExtensions']);
205
205
 
206
- const log$6 = logger.channel('builder:bundle:dedupe');
206
+ const log$7 = logger.channel('builder:bundle:dedupe');
207
+
208
+ const log$6 = logger.channel('builder:bundle:dependencies:prune');
207
209
 
208
210
  const log$5 = logger.channel('builder:bundle:dependencies:prune');
209
211
 
210
212
  const log$4 = logger.channel('builder:bundle:dependencies:prune');
211
-
212
- const log$3 = logger.channel('builder:bundle:dependencies:prune');
213
213
  const VALUE_END_TOKENS = index_cjs_js$7.createSet([
214
214
  ts.SyntaxKind.Identifier,
215
215
  ts.SyntaxKind.NumericLiteral,
@@ -230,8 +230,10 @@ const VALUE_END_TOKENS = index_cjs_js$7.createSet([
230
230
  ts.SyntaxKind.NullKeyword,
231
231
  ]);
232
232
 
233
- const log$2 = logger.channel('builder:bundle:dependencies:prune');
233
+ const log$3 = logger.channel('builder:bundle:dependencies:prune');
234
+
235
+ const log$2 = logger.channel('builder:bundle:rollup:dispatch');
234
236
 
235
- const log$1 = logger.channel('builder:bundle:rollup:dispatch');
237
+ const log$1 = logger.channel('builder:bundle:strip-comments');
236
238
 
237
239
  const log = logger.channel('builder:bundle');
@@ -3,7 +3,7 @@ import { createError } from '../../immutable-api-utils/built-in-copy/error/index
3
3
  import { createSet } from '../../immutable-api-utils/built-in-copy/set/index.esm.js';
4
4
  import { freeze } from '../../immutable-api-utils/built-in-copy/object/index.esm.js';
5
5
  import { dateNow } from '../../immutable-api-utils/built-in-copy/date/index.esm.js';
6
- import { debug, info, log as log$c, warn, error } from '../../immutable-api-utils/built-in-copy/console/index.esm.js';
6
+ import { debug, info, log as log$d, warn, error } from '../../immutable-api-utils/built-in-copy/console/index.esm.js';
7
7
  import ts from 'typescript';
8
8
 
9
9
  const logLevels = ['none', 'error', 'warn', 'log', 'info', 'debug'];
@@ -180,17 +180,17 @@ function notFnMsg(label) {
180
180
  return `Cannot create a logger when ${label} is not a function`;
181
181
  }
182
182
 
183
- const logger = createLogger(error, warn, log$c, info, debug);
183
+ const logger = createLogger(error, warn, log$d, info, debug);
184
184
 
185
- const log$b = logger.channel('builder:bundle:dependencies:pre-pass');
185
+ const log$c = logger.channel('builder:bundle:dependencies:pre-pass');
186
186
 
187
- const log$a = logger.channel('builder:bundle:declarations:dts-per-entry');
187
+ const log$b = logger.channel('builder:bundle:declarations:dts-per-entry');
188
188
 
189
- const log$9 = logger.channel('builder:bundle:declarations:dts-pre-pass');
189
+ const log$a = logger.channel('builder:bundle:declarations:dts-pre-pass');
190
190
 
191
- const log$8 = logger.channel('builder:bundle:declarations');
191
+ const log$9 = logger.channel('builder:bundle:declarations');
192
192
 
193
- const log$7 = logger.channel('builder:bundle:declarations:prune-orphans');
193
+ const log$8 = logger.channel('builder:bundle:declarations:prune-orphans');
194
194
 
195
195
  const EVAL_SIDE_EFFECT_KINDS = createSet([
196
196
  ts.SyntaxKind.CallExpression,
@@ -201,13 +201,13 @@ const EVAL_SIDE_EFFECT_KINDS = createSet([
201
201
  ]);
202
202
  const PURE_GLOBAL_CALLEES = createSet(['Object.freeze', 'Object.seal', 'Object.preventExtensions']);
203
203
 
204
- const log$6 = logger.channel('builder:bundle:dedupe');
204
+ const log$7 = logger.channel('builder:bundle:dedupe');
205
+
206
+ const log$6 = logger.channel('builder:bundle:dependencies:prune');
205
207
 
206
208
  const log$5 = logger.channel('builder:bundle:dependencies:prune');
207
209
 
208
210
  const log$4 = logger.channel('builder:bundle:dependencies:prune');
209
-
210
- const log$3 = logger.channel('builder:bundle:dependencies:prune');
211
211
  const VALUE_END_TOKENS = createSet([
212
212
  ts.SyntaxKind.Identifier,
213
213
  ts.SyntaxKind.NumericLiteral,
@@ -228,8 +228,10 @@ const VALUE_END_TOKENS = createSet([
228
228
  ts.SyntaxKind.NullKeyword,
229
229
  ]);
230
230
 
231
- const log$2 = logger.channel('builder:bundle:dependencies:prune');
231
+ const log$3 = logger.channel('builder:bundle:dependencies:prune');
232
+
233
+ const log$2 = logger.channel('builder:bundle:rollup:dispatch');
232
234
 
233
- const log$1 = logger.channel('builder:bundle:rollup:dispatch');
235
+ const log$1 = logger.channel('builder:bundle:strip-comments');
234
236
 
235
237
  const log = logger.channel('builder:bundle');
@@ -68808,6 +68808,7 @@ const buildEntryPlugins = (job, format) => {
68808
68808
  declaration: false,
68809
68809
  declarationMap: false,
68810
68810
  sourceMap: job.sourcemap,
68811
+ filterRoot: job.workspaceRoot,
68811
68812
  compilerOptions: {
68812
68813
  baseUrl: job.workspaceRoot,
68813
68814
  outDir: job.outputDir,
@@ -68832,6 +68833,7 @@ const buildBundlePlugins = (job) => [
68832
68833
  declaration: false,
68833
68834
  declarationMap: false,
68834
68835
  sourceMap: true,
68836
+ filterRoot: job.workspaceRoot,
68835
68837
  compilerOptions: {
68836
68838
  baseUrl: job.workspaceRoot,
68837
68839
  outDir: job.outputDir,
@@ -68789,6 +68789,7 @@ const buildEntryPlugins = (job, format) => {
68789
68789
  declaration: false,
68790
68790
  declarationMap: false,
68791
68791
  sourceMap: job.sourcemap,
68792
+ filterRoot: job.workspaceRoot,
68792
68793
  compilerOptions: {
68793
68794
  baseUrl: job.workspaceRoot,
68794
68795
  outDir: job.outputDir,
@@ -68813,6 +68814,7 @@ const buildBundlePlugins = (job) => [
68813
68814
  declaration: false,
68814
68815
  declarationMap: false,
68815
68816
  sourceMap: true,
68817
+ filterRoot: job.workspaceRoot,
68816
68818
  compilerOptions: {
68817
68819
  baseUrl: job.workspaceRoot,
68818
68820
  outDir: job.outputDir,
@@ -68636,6 +68636,7 @@ const buildEntryPlugins = (job, format) => {
68636
68636
  declaration: false,
68637
68637
  declarationMap: false,
68638
68638
  sourceMap: job.sourcemap,
68639
+ filterRoot: job.workspaceRoot,
68639
68640
  compilerOptions: {
68640
68641
  baseUrl: job.workspaceRoot,
68641
68642
  outDir: job.outputDir,
@@ -68660,6 +68661,7 @@ const buildBundlePlugins = (job) => [
68660
68661
  declaration: false,
68661
68662
  declarationMap: false,
68662
68663
  sourceMap: true,
68664
+ filterRoot: job.workspaceRoot,
68663
68665
  compilerOptions: {
68664
68666
  baseUrl: job.workspaceRoot,
68665
68667
  outDir: job.outputDir,
@@ -68614,6 +68614,7 @@ const buildEntryPlugins = (job, format) => {
68614
68614
  declaration: false,
68615
68615
  declarationMap: false,
68616
68616
  sourceMap: job.sourcemap,
68617
+ filterRoot: job.workspaceRoot,
68617
68618
  compilerOptions: {
68618
68619
  baseUrl: job.workspaceRoot,
68619
68620
  outDir: job.outputDir,
@@ -68638,6 +68639,7 @@ const buildBundlePlugins = (job) => [
68638
68639
  declaration: false,
68639
68640
  declarationMap: false,
68640
68641
  sourceMap: true,
68642
+ filterRoot: job.workspaceRoot,
68641
68643
  compilerOptions: {
68642
68644
  baseUrl: job.workspaceRoot,
68643
68645
  outDir: job.outputDir,