@layerzerolabs/vm-tooling 0.2.76 → 0.2.78

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 (125) hide show
  1. package/dist/25W5MXEX.cjs +17 -0
  2. package/dist/{KFMDBFI6.cjs.map → 25W5MXEX.cjs.map} +1 -1
  3. package/dist/{QIYLVNDK.cjs → 2JEGETUJ.cjs} +17 -17
  4. package/dist/{QIYLVNDK.cjs.map → 2JEGETUJ.cjs.map} +1 -1
  5. package/dist/{7XVJ6B7B.js → 2XGBQPKA.js} +3 -3
  6. package/dist/{7XVJ6B7B.js.map → 2XGBQPKA.js.map} +1 -1
  7. package/dist/{6N2O5WLJ.js → 3I5XNU26.js} +7 -7
  8. package/dist/{6N2O5WLJ.js.map → 3I5XNU26.js.map} +1 -1
  9. package/dist/{KWRJPB5T.js → 3XEUJAQB.js} +3 -3
  10. package/dist/{KWRJPB5T.js.map → 3XEUJAQB.js.map} +1 -1
  11. package/dist/{5GPMTH2I.cjs → 4BP4CCPZ.cjs} +9 -9
  12. package/dist/{5GPMTH2I.cjs.map → 4BP4CCPZ.cjs.map} +1 -1
  13. package/dist/{44LEKNKN.js → 4SFAVHVD.js} +3 -3
  14. package/dist/{44LEKNKN.js.map → 4SFAVHVD.js.map} +1 -1
  15. package/dist/{AWXMRCLV.cjs → 56KN6KX2.cjs} +23 -23
  16. package/dist/{AWXMRCLV.cjs.map → 56KN6KX2.cjs.map} +1 -1
  17. package/dist/{ZO7WI2XS.js → 6L6NUQMM.js} +5 -5
  18. package/dist/{ZO7WI2XS.js.map → 6L6NUQMM.js.map} +1 -1
  19. package/dist/{ZUEHTSW3.js → 6V27P6AU.js} +4 -4
  20. package/dist/{ZUEHTSW3.js.map → 6V27P6AU.js.map} +1 -1
  21. package/dist/{VKQ2FF2R.cjs → 7WWOPL2K.cjs} +8 -8
  22. package/dist/{VKQ2FF2R.cjs.map → 7WWOPL2K.cjs.map} +1 -1
  23. package/dist/{2PV3VF5J.js → AXL4SBDJ.js} +5 -5
  24. package/dist/{2PV3VF5J.js.map → AXL4SBDJ.js.map} +1 -1
  25. package/dist/{X4R3PN6F.js → BJUOU4DR.js} +3 -3
  26. package/dist/{X4R3PN6F.js.map → BJUOU4DR.js.map} +1 -1
  27. package/dist/{QLLNMABS.js → BTPRTHPR.js} +4 -4
  28. package/dist/{QLLNMABS.js.map → BTPRTHPR.js.map} +1 -1
  29. package/dist/CAPBDIIE.js +6 -0
  30. package/dist/{XROMTYOP.js.map → CAPBDIIE.js.map} +1 -1
  31. package/dist/{6AHA7PAZ.js → CWKWODSW.js} +3 -3
  32. package/dist/CWKWODSW.js.map +1 -0
  33. package/dist/{VP57EIXW.cjs → HOQEVWFL.cjs} +14 -14
  34. package/dist/{VP57EIXW.cjs.map → HOQEVWFL.cjs.map} +1 -1
  35. package/dist/{FURTC2JJ.js → KHVBCTKK.js} +9 -9
  36. package/dist/{FURTC2JJ.js.map → KHVBCTKK.js.map} +1 -1
  37. package/dist/{24WEKBY3.cjs → KHVGLVR5.cjs} +4 -4
  38. package/dist/KHVGLVR5.cjs.map +1 -0
  39. package/dist/M6CETDAD.cjs +8 -0
  40. package/dist/{Y76LNXBO.cjs.map → M6CETDAD.cjs.map} +1 -1
  41. package/dist/P4BHRQMD.js +6 -0
  42. package/dist/{22DCFDRO.js.map → P4BHRQMD.js.map} +1 -1
  43. package/dist/{GGKJNPTT.js → PYS2ZW6G.js} +6 -6
  44. package/dist/PYS2ZW6G.js.map +1 -0
  45. package/dist/{HFI4IGT2.js → QH3FM6DD.js} +5 -5
  46. package/dist/{HFI4IGT2.js.map → QH3FM6DD.js.map} +1 -1
  47. package/dist/{SGY6Q4GR.cjs → QLR2UW44.cjs} +11 -11
  48. package/dist/{SGY6Q4GR.cjs.map → QLR2UW44.cjs.map} +1 -1
  49. package/dist/{2Z4Y2ZR3.cjs → REVK4LZT.cjs} +8 -8
  50. package/dist/{2Z4Y2ZR3.cjs.map → REVK4LZT.cjs.map} +1 -1
  51. package/dist/{7PWQZJWC.cjs → RVRC4KBY.cjs} +7 -7
  52. package/dist/{7PWQZJWC.cjs.map → RVRC4KBY.cjs.map} +1 -1
  53. package/dist/{AIP5GLUJ.cjs → S6PEV2YJ.cjs} +11 -11
  54. package/dist/{AIP5GLUJ.cjs.map → S6PEV2YJ.cjs.map} +1 -1
  55. package/dist/{77VFG7S6.js → S7YAUZ26.js} +5 -5
  56. package/dist/{77VFG7S6.js.map → S7YAUZ26.js.map} +1 -1
  57. package/dist/{WSGRZJVU.js → UBUQDI5Q.js} +4 -4
  58. package/dist/{WSGRZJVU.js.map → UBUQDI5Q.js.map} +1 -1
  59. package/dist/{IPYOACCU.cjs → UOFUYV3K.cjs} +9 -9
  60. package/dist/{IPYOACCU.cjs.map → UOFUYV3K.cjs.map} +1 -1
  61. package/dist/{A5X4BLYY.cjs → WFBRUQAF.cjs} +11 -11
  62. package/dist/{A5X4BLYY.cjs.map → WFBRUQAF.cjs.map} +1 -1
  63. package/dist/X64VX57C.cjs +11 -0
  64. package/dist/{T3GK7LED.cjs.map → X64VX57C.cjs.map} +1 -1
  65. package/dist/{6LSAIGRV.cjs → XKJWJQ2X.cjs} +10 -10
  66. package/dist/{6LSAIGRV.cjs.map → XKJWJQ2X.cjs.map} +1 -1
  67. package/dist/XSZ224E6.cjs +8 -0
  68. package/dist/{24NWZBNF.cjs.map → XSZ224E6.cjs.map} +1 -1
  69. package/dist/{V7FMMGFT.js → ZSOVVFOM.js} +5 -5
  70. package/dist/{V7FMMGFT.js.map → ZSOVVFOM.js.map} +1 -1
  71. package/dist/{EUBM3LSR.cjs → ZZHCL54L.cjs} +26 -26
  72. package/dist/ZZHCL54L.cjs.map +1 -0
  73. package/dist/cli.cjs +15 -15
  74. package/dist/cli.js +14 -14
  75. package/dist/config.cjs +6 -6
  76. package/dist/config.js +2 -2
  77. package/dist/context.cjs +2 -2
  78. package/dist/context.cjs.map +1 -1
  79. package/dist/context.js +1 -1
  80. package/dist/core/index.cjs +12 -12
  81. package/dist/core/index.js +10 -10
  82. package/dist/core/lock.cjs +5 -5
  83. package/dist/core/lock.js +2 -2
  84. package/dist/core/lock.test.cjs +1046 -1046
  85. package/dist/core/lock.test.cjs.map +1 -1
  86. package/dist/core/lock.test.js +70 -70
  87. package/dist/core/lock.test.js.map +1 -1
  88. package/dist/core/tool-executor.cjs +10 -10
  89. package/dist/core/tool-executor.js +9 -9
  90. package/dist/core/version-resolver.cjs +5 -5
  91. package/dist/core/version-resolver.js +4 -4
  92. package/dist/display/formatters.cjs +5 -5
  93. package/dist/display/formatters.js +4 -4
  94. package/dist/display/index.cjs +9 -9
  95. package/dist/display/index.js +6 -6
  96. package/dist/display/version-display.cjs +7 -7
  97. package/dist/display/version-display.js +5 -5
  98. package/dist/github/index.cjs +7 -7
  99. package/dist/github/index.js +6 -6
  100. package/dist/github/matrix.cjs +6 -6
  101. package/dist/github/matrix.js +5 -5
  102. package/dist/index.cjs +25 -25
  103. package/dist/index.cjs.map +1 -1
  104. package/dist/index.js +17 -17
  105. package/dist/test.cjs +6 -6
  106. package/dist/test.js +5 -5
  107. package/dist/utils/docker.cjs +8 -8
  108. package/dist/utils/docker.js +4 -4
  109. package/dist/utils/error.cjs +3 -3
  110. package/dist/utils/error.js +2 -2
  111. package/dist/utils/finder.cjs +7 -7
  112. package/dist/utils/finder.js +2 -2
  113. package/dist/utils.cjs +6 -6
  114. package/dist/utils.js +3 -3
  115. package/package.json +4 -4
  116. package/dist/22DCFDRO.js +0 -6
  117. package/dist/24NWZBNF.cjs +0 -8
  118. package/dist/24WEKBY3.cjs.map +0 -1
  119. package/dist/6AHA7PAZ.js.map +0 -1
  120. package/dist/EUBM3LSR.cjs.map +0 -1
  121. package/dist/GGKJNPTT.js.map +0 -1
  122. package/dist/KFMDBFI6.cjs +0 -17
  123. package/dist/T3GK7LED.cjs +0 -11
  124. package/dist/XROMTYOP.js +0 -6
  125. package/dist/Y76LNXBO.cjs +0 -8
@@ -0,0 +1,17 @@
1
+ 'use strict';
2
+
3
+ var XKJWJQ2X_cjs = require('./XKJWJQ2X.cjs');
4
+ var KHVGLVR5_cjs = require('./KHVGLVR5.cjs');
5
+ var process = require('process');
6
+
7
+ // src/github/index.ts
8
+ KHVGLVR5_cjs.init_cjs_shims();
9
+ var runGithubMatrixGenerator = /* @__PURE__ */ KHVGLVR5_cjs.__name(async (images, directory, versionCombinations) => {
10
+ const entries = XKJWJQ2X_cjs.generateGithubMatrix(images, directory, versionCombinations);
11
+ console.warn("GitHub Action matrix generated:", JSON.stringify(entries, null, 2));
12
+ process.stdout.write(JSON.stringify(entries));
13
+ }, "runGithubMatrixGenerator");
14
+
15
+ exports.runGithubMatrixGenerator = runGithubMatrixGenerator;
16
+ //# sourceMappingURL=25W5MXEX.cjs.map
17
+ //# sourceMappingURL=25W5MXEX.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/github/index.ts"],"names":["init_cjs_shims","runGithubMatrixGenerator","__name","images","directory","versionCombinations","entries","generateGithubMatrix","console","warn","JSON","stringify","stdout","write"],"mappings":";;;;;;;AAAAA,4BAAA,EAAA;AAKO,IAAMC,wBAAAA,mBAA2BC,oBAAA,CAAA,OACpCC,MAAAA,EACAC,SAAAA,EACAC,mBAAAA,KAAAA;AAEA,EAAA,MAAMC,OAAAA,GAAUC,kCAAAA,CAAqBJ,MAAAA,EAAQC,SAAAA,EAAWC,mBAAAA,CAAAA;AAExDG,EAAAA,OAAAA,CAAQC,KAAK,iCAAA,EAAmCC,IAAAA,CAAKC,UAAUL,OAAAA,EAAS,IAAA,EAAM,CAAA,CAAA,CAAA;AAC9EM,EAAAA,cAAAA,CAAOC,KAAAA,CAAMH,IAAAA,CAAKC,SAAAA,CAAUL,OAAAA,CAAAA,CAAAA;AAChC,CAAA,EATwC,0BAAA","file":"KFMDBFI6.cjs","sourcesContent":["import { stdout } from 'node:process';\n\nimport type { Image, VersionCombination } from '../config';\nimport { generateGithubMatrix } from './matrix';\n\nexport const runGithubMatrixGenerator = async (\n images: Record<string, Image>,\n directory: string,\n versionCombinations?: VersionCombination<string>[],\n): Promise<void> => {\n const entries = generateGithubMatrix(images, directory, versionCombinations);\n\n console.warn('GitHub Action matrix generated:', JSON.stringify(entries, null, 2));\n stdout.write(JSON.stringify(entries));\n};\n"]}
1
+ {"version":3,"sources":["../src/github/index.ts"],"names":["init_cjs_shims","runGithubMatrixGenerator","__name","images","directory","versionCombinations","entries","generateGithubMatrix","console","warn","JSON","stringify","stdout","write"],"mappings":";;;;;;;AAAAA,2BAAA,EAAA;AAKO,IAAMC,wBAAAA,mBAA2BC,mBAAA,CAAA,OACpCC,MAAAA,EACAC,SAAAA,EACAC,mBAAAA,KAAAA;AAEA,EAAA,MAAMC,OAAAA,GAAUC,iCAAAA,CAAqBJ,MAAAA,EAAQC,SAAAA,EAAWC,mBAAAA,CAAAA;AAExDG,EAAAA,OAAAA,CAAQC,KAAK,iCAAA,EAAmCC,IAAAA,CAAKC,UAAUL,OAAAA,EAAS,IAAA,EAAM,CAAA,CAAA,CAAA;AAC9EM,EAAAA,cAAAA,CAAOC,KAAAA,CAAMH,IAAAA,CAAKC,SAAAA,CAAUL,OAAAA,CAAAA,CAAAA;AAChC,CAAA,EATwC,0BAAA","file":"25W5MXEX.cjs","sourcesContent":["import { stdout } from 'node:process';\n\nimport type { Image, VersionCombination } from '../config';\nimport { generateGithubMatrix } from './matrix';\n\nexport const runGithubMatrixGenerator = async (\n images: Record<string, Image>,\n directory: string,\n versionCombinations?: VersionCombination<string>[],\n): Promise<void> => {\n const entries = generateGithubMatrix(images, directory, versionCombinations);\n\n console.warn('GitHub Action matrix generated:', JSON.stringify(entries, null, 2));\n stdout.write(JSON.stringify(entries));\n};\n"]}
@@ -1,10 +1,10 @@
1
1
  'use strict';
2
2
 
3
- var VP57EIXW_cjs = require('./VP57EIXW.cjs');
4
- var AWXMRCLV_cjs = require('./AWXMRCLV.cjs');
5
- var _7PWQZJWC_cjs = require('./7PWQZJWC.cjs');
6
- var _5GPMTH2I_cjs = require('./5GPMTH2I.cjs');
7
- var _24WEKBY3_cjs = require('./24WEKBY3.cjs');
3
+ var HOQEVWFL_cjs = require('./HOQEVWFL.cjs');
4
+ var _56KN6KX2_cjs = require('./56KN6KX2.cjs');
5
+ var RVRC4KBY_cjs = require('./RVRC4KBY.cjs');
6
+ var _4BP4CCPZ_cjs = require('./4BP4CCPZ.cjs');
7
+ var KHVGLVR5_cjs = require('./KHVGLVR5.cjs');
8
8
  var commander = require('commander');
9
9
  var esToolkit = require('es-toolkit');
10
10
  var fs = require('fs');
@@ -18,14 +18,14 @@ var path__default = /*#__PURE__*/_interopDefault(path);
18
18
  var process__default = /*#__PURE__*/_interopDefault(process);
19
19
 
20
20
  // src/cli.ts
21
- _24WEKBY3_cjs.init_cjs_shims();
22
- var createCli = /* @__PURE__ */ _24WEKBY3_cjs.__name((context, registerExtraCommands) => {
21
+ KHVGLVR5_cjs.init_cjs_shims();
22
+ var createCli = /* @__PURE__ */ KHVGLVR5_cjs.__name((context, registerExtraCommands) => {
23
23
  const { tools } = context;
24
24
  const toolVersionOptions = Object.fromEntries(tools.map(({ name }) => [
25
25
  `${esToolkit.camelCase(name)}Version`,
26
26
  name
27
27
  ]));
28
- const parseGlobalOptions = /* @__PURE__ */ _24WEKBY3_cjs.__name(async (command) => {
28
+ const parseGlobalOptions = /* @__PURE__ */ KHVGLVR5_cjs.__name(async (command) => {
29
29
  const { cwd, volume, defaultVolumes, ...options } = command.opts();
30
30
  const resolvedCwd = cwd ?? process__default.default.cwd();
31
31
  const cliVersions = Object.fromEntries(Object.entries(options).map(([name, version]) => [
@@ -48,7 +48,7 @@ var createCli = /* @__PURE__ */ _24WEKBY3_cjs.__name((context, registerExtraComm
48
48
  const program = new commander.Command();
49
49
  program.name("lz-tool").description("\u{1F680} LayerZero VM tooling with intelligent version management\n\nUsage pattern:\n lz-tool [global-options] <tool> [tool-args...]\n\nExamples:\n lz-tool -e bash sui --help\n lz-tool --sui-version 1.38.0 sui client\n\nNote: All lz-tool options must appear BEFORE the tool name.").version("1.0.0").enablePositionalOptions();
50
50
  if (process__default.default.argv.includes("--list-versions")) {
51
- VP57EIXW_cjs.displayVersionCombinations(context);
51
+ HOQEVWFL_cjs.displayVersionCombinations(context);
52
52
  process__default.default.exit(0);
53
53
  }
54
54
  program.option("-c, --cwd <path>", "Current working directory", (input) => {
@@ -98,7 +98,7 @@ var createCli = /* @__PURE__ */ _24WEKBY3_cjs.__name((context, registerExtraComm
98
98
  }
99
99
  return [
100
100
  ...volumes,
101
- _7PWQZJWC_cjs.volumeMappingSchema.parse({
101
+ RVRC4KBY_cjs.volumeMappingSchema.parse({
102
102
  type,
103
103
  hostPath,
104
104
  containerPath,
@@ -110,23 +110,23 @@ var createCli = /* @__PURE__ */ _24WEKBY3_cjs.__name((context, registerExtraComm
110
110
  value
111
111
  ], []).option("--no-default-volumes", "Disable default volumes for the tool");
112
112
  for (const tool of tools) {
113
- const defaultVersion = _5GPMTH2I_cjs.getToolDefaultVersion(context, tool.name);
114
- const supportedVersions = _5GPMTH2I_cjs.getToolSupportedVersions(context, tool.name);
113
+ const defaultVersion = _4BP4CCPZ_cjs.getToolDefaultVersion(context, tool.name);
114
+ const supportedVersions = _4BP4CCPZ_cjs.getToolSupportedVersions(context, tool.name);
115
115
  program.option(`--${tool.name}-version <version>`, `Specify ${tool.name} version (default: ${defaultVersion}, supported: ${supportedVersions.join(", ")})`);
116
116
  }
117
117
  program.option("--list-versions", "Display all supported version combinations and exit");
118
- program.command("version-info <tool>").description("Display detailed version information for a specific tool").action((toolName) => VP57EIXW_cjs.displayToolVersionInfo(context, toolName));
118
+ program.command("version-info <tool>").description("Display detailed version information for a specific tool").action((toolName) => HOQEVWFL_cjs.displayToolVersionInfo(context, toolName));
119
119
  for (const tool of tools) {
120
120
  program.command(tool.name, {
121
121
  isDefault: false
122
122
  }).description(`Run ${tool.name} with version checking`).passThroughOptions(true).allowUnknownOption().helpOption(false).argument("[args...]", "Arguments to pass to the tool").action(async (args) => {
123
- await AWXMRCLV_cjs.executeToolCommand(context, tool.name, args, await parseGlobalOptions(program));
123
+ await _56KN6KX2_cjs.executeToolCommand(context, tool.name, args, await parseGlobalOptions(program));
124
124
  });
125
125
  }
126
126
  registerExtraCommands?.(program, parseGlobalOptions);
127
127
  return program;
128
128
  }, "createCli");
129
- var runCli = /* @__PURE__ */ _24WEKBY3_cjs.__name(async (config, registerExtraCommands) => {
129
+ var runCli = /* @__PURE__ */ KHVGLVR5_cjs.__name(async (config, registerExtraCommands) => {
130
130
  try {
131
131
  await createCli(config, registerExtraCommands).parseAsync();
132
132
  } catch (error) {
@@ -136,5 +136,5 @@ var runCli = /* @__PURE__ */ _24WEKBY3_cjs.__name(async (config, registerExtraCo
136
136
  }, "runCli");
137
137
 
138
138
  exports.runCli = runCli;
139
- //# sourceMappingURL=QIYLVNDK.cjs.map
140
- //# sourceMappingURL=QIYLVNDK.cjs.map
139
+ //# sourceMappingURL=2JEGETUJ.cjs.map
140
+ //# sourceMappingURL=2JEGETUJ.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/cli.ts"],"names":["init_cjs_shims","createCli","__name","context","registerExtraCommands","tools","toolVersionOptions","Object","fromEntries","map","name","camelCase","parseGlobalOptions","command","cwd","volume","defaultVolumes","options","opts","resolvedCwd","process","cliVersions","entries","version","filter","tool","configVersions","getDefaultVersions","versions","volumes","defaultVolumesEnabled","program","Command","description","enablePositionalOptions","argv","includes","displayVersionCombinations","exit","option","input","Error","path","isAbsolute","fs","existsSync","statSync","isDirectory","variables","valueParts","split","length","value","join","type","hostPath","containerPath","volumeMappingSchema","parse","previous","defaultVersion","getToolDefaultVersion","supportedVersions","getToolSupportedVersions","action","toolName","displayToolVersionInfo","isDefault","passThroughOptions","allowUnknownOption","helpOption","argument","args","executeToolCommand","runCli","config","parseAsync","error","console"],"mappings":"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","file":"QIYLVNDK.cjs","sourcesContent":["import { Command } from 'commander';\nimport { camelCase } from 'es-toolkit';\nimport fs from 'node:fs';\nimport path from 'node:path';\nimport process from 'node:process';\n\nimport type { EnvironmentVariable, VolumeMapping } from './config';\nimport { volumeMappingSchema } from './config';\nimport type { ChainContext } from './context';\nimport type { ToolCommandExecutionOptions } from './core';\nimport { executeToolCommand } from './core';\nimport { displayToolVersionInfo, displayVersionCombinations } from './display';\nimport { getToolDefaultVersion, getToolSupportedVersions } from './utils/finder';\n\ninterface GlobalOptions {\n cwd?: string;\n volume: VolumeMapping[];\n env: EnvironmentVariable[];\n publish?: string[];\n script?: string;\n customEntrypoint?: string;\n defaultVolumes: boolean;\n}\n\ntype RegisterExtraCommands = (\n program: Command,\n parseGlobalOptions: (command: Command) => Promise<ToolCommandExecutionOptions>,\n) => void;\n\nconst createCli = <TImageId extends string>(\n context: ChainContext<TImageId>,\n registerExtraCommands?: RegisterExtraCommands,\n): Command => {\n const { tools } = context;\n const toolVersionOptions = Object.fromEntries(\n tools.map(({ name }) => [`${camelCase(name)}Version`, name]),\n );\n\n const parseGlobalOptions = async (command: Command): Promise<ToolCommandExecutionOptions> => {\n const { cwd, volume, defaultVolumes, ...options } = command.opts<GlobalOptions>();\n const resolvedCwd = cwd ?? process.cwd();\n\n // CLI flags take precedence over project config versions\n const cliVersions = Object.fromEntries(\n Object.entries(options)\n .map(([name, version]) => [toolVersionOptions[name], version])\n .filter(([tool]) => tool),\n );\n\n // Read defaults from project config (e.g., Anchor.toml) if the chain provides a hook\n const configVersions = (await context.getDefaultVersions?.(resolvedCwd)) ?? {};\n const versions = { ...configVersions, ...cliVersions };\n\n return {\n ...options,\n cwd: resolvedCwd,\n volumes: volume,\n versions,\n defaultVolumesEnabled: defaultVolumes,\n };\n };\n\n const program = new Command();\n\n program\n .name('lz-tool')\n .description(\n '🚀 LayerZero VM tooling with intelligent version management\\n' +\n '\\n' +\n 'Usage pattern:\\n' +\n ' lz-tool [global-options] <tool> [tool-args...]\\n' +\n '\\n' +\n 'Examples:\\n' +\n ' lz-tool -e bash sui --help\\n' +\n ' lz-tool --sui-version 1.38.0 sui client\\n' +\n '\\n' +\n 'Note: All lz-tool options must appear BEFORE the tool name.',\n )\n .version('1.0.0')\n .enablePositionalOptions(); // Required for passThroughOptions to work\n\n // Check for --list-versions before parsing to avoid help display\n if (process.argv.includes('--list-versions')) {\n displayVersionCombinations(context);\n process.exit(0);\n }\n\n // Add global options.\n program\n .option('-c, --cwd <path>', 'Current working directory', (input: string) => {\n if (typeof input !== 'string') {\n throw new Error('cwd flag must be a string');\n }\n\n if (!path.isAbsolute(input)) {\n throw new Error('cwd must be an absolute path if provided');\n }\n\n if (!fs.existsSync(input)) {\n throw new Error('cwd does not exist');\n }\n\n if (!fs.statSync(input).isDirectory()) {\n throw new Error('cwd must be a directory');\n }\n\n return input;\n })\n .option(\n '-e, --custom-entrypoint <entrypoint>',\n 'Override the default Docker entrypoint for the tool',\n )\n .option(\n '--script <script>',\n 'Execute a custom script using bash -c in the Docker container (e.g., --script \"npm install && npm test\")',\n )\n .option(\n '--env <name=value>',\n 'Set environment variables for Docker container (e.g., --env NODE_ENV=production)',\n (input: string, variables: EnvironmentVariable[]) => {\n const [name, ...valueParts] = input.split('=');\n\n if (!name || !valueParts.length) {\n throw new Error(\n `Invalid environment variable format: ${input}. Use --env NAME=VALUE`,\n );\n }\n\n return [...variables, { name, value: valueParts.join('=') }];\n },\n [],\n )\n .option(\n '-v, --volume <type:hostPath:containerPath[:name]>',\n 'Volume mappings in the format type:hostPath:containerPath[:name] (e.g., host:/host/path:/container/path or isolate::/container/path:volumeName)',\n (input: string, volumes: VolumeMapping[]) => {\n const [type, hostPath, containerPath, name] = input.split(':');\n\n switch (type) {\n case 'host':\n if (!hostPath) {\n throw new Error(`Host path is required for volume type 'host'`);\n }\n break;\n case 'isolate':\n if (!name) {\n throw new Error(`Name is required for volume type 'isolate'`);\n }\n break;\n default:\n throw new Error(`Invalid volume type: ${type}`);\n }\n\n if (!containerPath) {\n throw new Error(`Container path is required`);\n }\n\n return [\n ...volumes,\n volumeMappingSchema.parse({ type, hostPath, containerPath, name }),\n ];\n },\n [],\n )\n .option(\n '-p, --publish <host_port:container_port>',\n \"Publish a container's port(s) to the host (repeatable)\",\n (value: string, previous: string[]) => [...previous, value],\n [],\n )\n .option('--no-default-volumes', 'Disable default volumes for the tool');\n\n // Add version options for each tool dynamically\n for (const tool of tools) {\n const defaultVersion = getToolDefaultVersion(context, tool.name);\n const supportedVersions = getToolSupportedVersions(context, tool.name);\n\n program.option(\n `--${tool.name}-version <version>`,\n `Specify ${tool.name} version (default: ${defaultVersion}, supported: ${supportedVersions.join(', ')})`,\n );\n }\n\n // Add utility options\n program.option('--list-versions', 'Display all supported version combinations and exit');\n\n // Add version info command\n program\n .command('version-info <tool>')\n .description('Display detailed version information for a specific tool')\n .action((toolName: string) => displayToolVersionInfo(context, toolName));\n\n for (const tool of tools) {\n // Don't add any options to the subcommand level.\n // All lz-tool options must be specified before the subcommand.\n program\n .command(tool.name, { isDefault: false })\n .description(`Run ${tool.name} with version checking`)\n .passThroughOptions(true) // Pass through all options after the subcommand\n .allowUnknownOption()\n .helpOption(false) // Disable automatic help option to pass --help to the tool\n .argument('[args...]', 'Arguments to pass to the tool')\n .action(async (args: string[]) => {\n await executeToolCommand(\n context,\n tool.name,\n args,\n await parseGlobalOptions(program),\n );\n });\n }\n\n // Allow external registration of extra commands\n registerExtraCommands?.(program, parseGlobalOptions);\n\n return program;\n};\n\nexport const runCli = async <TImageId extends string>(\n config: ChainContext<TImageId>,\n registerExtraCommands?: RegisterExtraCommands,\n): Promise<void> => {\n try {\n await createCli<TImageId>(config, registerExtraCommands).parseAsync();\n } catch (error) {\n console.error('❌ VM tool execution failed', error);\n process.exit(1);\n }\n};\n"]}
1
+ {"version":3,"sources":["../src/cli.ts"],"names":["init_cjs_shims","createCli","__name","context","registerExtraCommands","tools","toolVersionOptions","Object","fromEntries","map","name","camelCase","parseGlobalOptions","command","cwd","volume","defaultVolumes","options","opts","resolvedCwd","process","cliVersions","entries","version","filter","tool","configVersions","getDefaultVersions","versions","volumes","defaultVolumesEnabled","program","Command","description","enablePositionalOptions","argv","includes","displayVersionCombinations","exit","option","input","Error","path","isAbsolute","fs","existsSync","statSync","isDirectory","variables","valueParts","split","length","value","join","type","hostPath","containerPath","volumeMappingSchema","parse","previous","defaultVersion","getToolDefaultVersion","supportedVersions","getToolSupportedVersions","action","toolName","displayToolVersionInfo","isDefault","passThroughOptions","allowUnknownOption","helpOption","argument","args","executeToolCommand","runCli","config","parseAsync","error","console"],"mappings":"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","file":"2JEGETUJ.cjs","sourcesContent":["import { Command } from 'commander';\nimport { camelCase } from 'es-toolkit';\nimport fs from 'node:fs';\nimport path from 'node:path';\nimport process from 'node:process';\n\nimport type { EnvironmentVariable, VolumeMapping } from './config';\nimport { volumeMappingSchema } from './config';\nimport type { ChainContext } from './context';\nimport type { ToolCommandExecutionOptions } from './core';\nimport { executeToolCommand } from './core';\nimport { displayToolVersionInfo, displayVersionCombinations } from './display';\nimport { getToolDefaultVersion, getToolSupportedVersions } from './utils/finder';\n\ninterface GlobalOptions {\n cwd?: string;\n volume: VolumeMapping[];\n env: EnvironmentVariable[];\n publish?: string[];\n script?: string;\n customEntrypoint?: string;\n defaultVolumes: boolean;\n}\n\ntype RegisterExtraCommands = (\n program: Command,\n parseGlobalOptions: (command: Command) => Promise<ToolCommandExecutionOptions>,\n) => void;\n\nconst createCli = <TImageId extends string>(\n context: ChainContext<TImageId>,\n registerExtraCommands?: RegisterExtraCommands,\n): Command => {\n const { tools } = context;\n const toolVersionOptions = Object.fromEntries(\n tools.map(({ name }) => [`${camelCase(name)}Version`, name]),\n );\n\n const parseGlobalOptions = async (command: Command): Promise<ToolCommandExecutionOptions> => {\n const { cwd, volume, defaultVolumes, ...options } = command.opts<GlobalOptions>();\n const resolvedCwd = cwd ?? process.cwd();\n\n // CLI flags take precedence over project config versions\n const cliVersions = Object.fromEntries(\n Object.entries(options)\n .map(([name, version]) => [toolVersionOptions[name], version])\n .filter(([tool]) => tool),\n );\n\n // Read defaults from project config (e.g., Anchor.toml) if the chain provides a hook\n const configVersions = (await context.getDefaultVersions?.(resolvedCwd)) ?? {};\n const versions = { ...configVersions, ...cliVersions };\n\n return {\n ...options,\n cwd: resolvedCwd,\n volumes: volume,\n versions,\n defaultVolumesEnabled: defaultVolumes,\n };\n };\n\n const program = new Command();\n\n program\n .name('lz-tool')\n .description(\n '🚀 LayerZero VM tooling with intelligent version management\\n' +\n '\\n' +\n 'Usage pattern:\\n' +\n ' lz-tool [global-options] <tool> [tool-args...]\\n' +\n '\\n' +\n 'Examples:\\n' +\n ' lz-tool -e bash sui --help\\n' +\n ' lz-tool --sui-version 1.38.0 sui client\\n' +\n '\\n' +\n 'Note: All lz-tool options must appear BEFORE the tool name.',\n )\n .version('1.0.0')\n .enablePositionalOptions(); // Required for passThroughOptions to work\n\n // Check for --list-versions before parsing to avoid help display\n if (process.argv.includes('--list-versions')) {\n displayVersionCombinations(context);\n process.exit(0);\n }\n\n // Add global options.\n program\n .option('-c, --cwd <path>', 'Current working directory', (input: string) => {\n if (typeof input !== 'string') {\n throw new Error('cwd flag must be a string');\n }\n\n if (!path.isAbsolute(input)) {\n throw new Error('cwd must be an absolute path if provided');\n }\n\n if (!fs.existsSync(input)) {\n throw new Error('cwd does not exist');\n }\n\n if (!fs.statSync(input).isDirectory()) {\n throw new Error('cwd must be a directory');\n }\n\n return input;\n })\n .option(\n '-e, --custom-entrypoint <entrypoint>',\n 'Override the default Docker entrypoint for the tool',\n )\n .option(\n '--script <script>',\n 'Execute a custom script using bash -c in the Docker container (e.g., --script \"npm install && npm test\")',\n )\n .option(\n '--env <name=value>',\n 'Set environment variables for Docker container (e.g., --env NODE_ENV=production)',\n (input: string, variables: EnvironmentVariable[]) => {\n const [name, ...valueParts] = input.split('=');\n\n if (!name || !valueParts.length) {\n throw new Error(\n `Invalid environment variable format: ${input}. Use --env NAME=VALUE`,\n );\n }\n\n return [...variables, { name, value: valueParts.join('=') }];\n },\n [],\n )\n .option(\n '-v, --volume <type:hostPath:containerPath[:name]>',\n 'Volume mappings in the format type:hostPath:containerPath[:name] (e.g., host:/host/path:/container/path or isolate::/container/path:volumeName)',\n (input: string, volumes: VolumeMapping[]) => {\n const [type, hostPath, containerPath, name] = input.split(':');\n\n switch (type) {\n case 'host':\n if (!hostPath) {\n throw new Error(`Host path is required for volume type 'host'`);\n }\n break;\n case 'isolate':\n if (!name) {\n throw new Error(`Name is required for volume type 'isolate'`);\n }\n break;\n default:\n throw new Error(`Invalid volume type: ${type}`);\n }\n\n if (!containerPath) {\n throw new Error(`Container path is required`);\n }\n\n return [\n ...volumes,\n volumeMappingSchema.parse({ type, hostPath, containerPath, name }),\n ];\n },\n [],\n )\n .option(\n '-p, --publish <host_port:container_port>',\n \"Publish a container's port(s) to the host (repeatable)\",\n (value: string, previous: string[]) => [...previous, value],\n [],\n )\n .option('--no-default-volumes', 'Disable default volumes for the tool');\n\n // Add version options for each tool dynamically\n for (const tool of tools) {\n const defaultVersion = getToolDefaultVersion(context, tool.name);\n const supportedVersions = getToolSupportedVersions(context, tool.name);\n\n program.option(\n `--${tool.name}-version <version>`,\n `Specify ${tool.name} version (default: ${defaultVersion}, supported: ${supportedVersions.join(', ')})`,\n );\n }\n\n // Add utility options\n program.option('--list-versions', 'Display all supported version combinations and exit');\n\n // Add version info command\n program\n .command('version-info <tool>')\n .description('Display detailed version information for a specific tool')\n .action((toolName: string) => displayToolVersionInfo(context, toolName));\n\n for (const tool of tools) {\n // Don't add any options to the subcommand level.\n // All lz-tool options must be specified before the subcommand.\n program\n .command(tool.name, { isDefault: false })\n .description(`Run ${tool.name} with version checking`)\n .passThroughOptions(true) // Pass through all options after the subcommand\n .allowUnknownOption()\n .helpOption(false) // Disable automatic help option to pass --help to the tool\n .argument('[args...]', 'Arguments to pass to the tool')\n .action(async (args: string[]) => {\n await executeToolCommand(\n context,\n tool.name,\n args,\n await parseGlobalOptions(program),\n );\n });\n }\n\n // Allow external registration of extra commands\n registerExtraCommands?.(program, parseGlobalOptions);\n\n return program;\n};\n\nexport const runCli = async <TImageId extends string>(\n config: ChainContext<TImageId>,\n registerExtraCommands?: RegisterExtraCommands,\n): Promise<void> => {\n try {\n await createCli<TImageId>(config, registerExtraCommands).parseAsync();\n } catch (error) {\n console.error('❌ VM tool execution failed', error);\n process.exit(1);\n }\n};\n"]}
@@ -1,9 +1,9 @@
1
- import { init_esm_shims, __name } from './6AHA7PAZ.js';
1
+ import { init_esm_shims, __name } from './CWKWODSW.js';
2
2
 
3
3
  // src/utils/error.ts
4
4
  init_esm_shims();
5
5
  var stringifyError = /* @__PURE__ */ __name((error) => error instanceof Error ? error.message : String(error), "stringifyError");
6
6
 
7
7
  export { stringifyError };
8
- //# sourceMappingURL=7XVJ6B7B.js.map
9
- //# sourceMappingURL=7XVJ6B7B.js.map
8
+ //# sourceMappingURL=2XGBQPKA.js.map
9
+ //# sourceMappingURL=2XGBQPKA.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/utils/error.ts"],"names":["stringifyError","error","Error","message","String"],"mappings":";;;AAAA,cAAA,EAAA;AAAO,IAAMA,cAAAA,2BAAkBC,KAAAA,KAC3BA,KAAAA,YAAiBC,QAAQD,KAAAA,CAAME,OAAAA,GAAUC,MAAAA,CAAOH,KAAAA,CAAAA,EADtB,gBAAA","file":"7XVJ6B7B.js","sourcesContent":["export const stringifyError = (error: unknown): string =>\n error instanceof Error ? error.message : String(error);\n"]}
1
+ {"version":3,"sources":["../src/utils/error.ts"],"names":["stringifyError","error","Error","message","String"],"mappings":";;;AAAA,cAAA,EAAA;AAAO,IAAMA,cAAAA,2BAAkBC,KAAAA,KAC3BA,KAAAA,YAAiBC,QAAQD,KAAAA,CAAME,OAAAA,GAAUC,MAAAA,CAAOH,KAAAA,CAAAA,EADtB,gBAAA","file":"2XGBQPKA.js","sourcesContent":["export const stringifyError = (error: unknown): string =>\n error instanceof Error ? error.message : String(error);\n"]}
@@ -1,8 +1,8 @@
1
- import { displayVersionCombinations, displayToolVersionInfo } from './HFI4IGT2.js';
2
- import { executeToolCommand } from './FURTC2JJ.js';
3
- import { volumeMappingSchema } from './X4R3PN6F.js';
4
- import { getToolDefaultVersion, getToolSupportedVersions } from './KWRJPB5T.js';
5
- import { init_esm_shims, __name } from './6AHA7PAZ.js';
1
+ import { displayVersionCombinations, displayToolVersionInfo } from './QH3FM6DD.js';
2
+ import { executeToolCommand } from './KHVBCTKK.js';
3
+ import { volumeMappingSchema } from './BJUOU4DR.js';
4
+ import { getToolDefaultVersion, getToolSupportedVersions } from './3XEUJAQB.js';
5
+ import { init_esm_shims, __name } from './CWKWODSW.js';
6
6
  import { Command } from 'commander';
7
7
  import { camelCase } from 'es-toolkit';
8
8
  import fs from 'fs';
@@ -128,5 +128,5 @@ var runCli = /* @__PURE__ */ __name(async (config, registerExtraCommands) => {
128
128
  }, "runCli");
129
129
 
130
130
  export { runCli };
131
- //# sourceMappingURL=6N2O5WLJ.js.map
132
- //# sourceMappingURL=6N2O5WLJ.js.map
131
+ //# sourceMappingURL=3I5XNU26.js.map
132
+ //# sourceMappingURL=3I5XNU26.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/cli.ts"],"names":["createCli","context","registerExtraCommands","tools","toolVersionOptions","Object","fromEntries","map","name","camelCase","parseGlobalOptions","command","cwd","volume","defaultVolumes","options","opts","resolvedCwd","process","cliVersions","entries","version","filter","tool","configVersions","getDefaultVersions","versions","volumes","defaultVolumesEnabled","program","Command","description","enablePositionalOptions","argv","includes","displayVersionCombinations","exit","option","input","Error","path","isAbsolute","fs","existsSync","statSync","isDirectory","variables","valueParts","split","length","value","join","type","hostPath","containerPath","volumeMappingSchema","parse","previous","defaultVersion","getToolDefaultVersion","supportedVersions","getToolSupportedVersions","action","toolName","displayToolVersionInfo","isDefault","passThroughOptions","allowUnknownOption","helpOption","argument","args","executeToolCommand","runCli","config","parseAsync","error","console"],"mappings":"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","file":"6N2O5WLJ.js","sourcesContent":["import { Command } from 'commander';\nimport { camelCase } from 'es-toolkit';\nimport fs from 'node:fs';\nimport path from 'node:path';\nimport process from 'node:process';\n\nimport type { EnvironmentVariable, VolumeMapping } from './config';\nimport { volumeMappingSchema } from './config';\nimport type { ChainContext } from './context';\nimport type { ToolCommandExecutionOptions } from './core';\nimport { executeToolCommand } from './core';\nimport { displayToolVersionInfo, displayVersionCombinations } from './display';\nimport { getToolDefaultVersion, getToolSupportedVersions } from './utils/finder';\n\ninterface GlobalOptions {\n cwd?: string;\n volume: VolumeMapping[];\n env: EnvironmentVariable[];\n publish?: string[];\n script?: string;\n customEntrypoint?: string;\n defaultVolumes: boolean;\n}\n\ntype RegisterExtraCommands = (\n program: Command,\n parseGlobalOptions: (command: Command) => Promise<ToolCommandExecutionOptions>,\n) => void;\n\nconst createCli = <TImageId extends string>(\n context: ChainContext<TImageId>,\n registerExtraCommands?: RegisterExtraCommands,\n): Command => {\n const { tools } = context;\n const toolVersionOptions = Object.fromEntries(\n tools.map(({ name }) => [`${camelCase(name)}Version`, name]),\n );\n\n const parseGlobalOptions = async (command: Command): Promise<ToolCommandExecutionOptions> => {\n const { cwd, volume, defaultVolumes, ...options } = command.opts<GlobalOptions>();\n const resolvedCwd = cwd ?? process.cwd();\n\n // CLI flags take precedence over project config versions\n const cliVersions = Object.fromEntries(\n Object.entries(options)\n .map(([name, version]) => [toolVersionOptions[name], version])\n .filter(([tool]) => tool),\n );\n\n // Read defaults from project config (e.g., Anchor.toml) if the chain provides a hook\n const configVersions = (await context.getDefaultVersions?.(resolvedCwd)) ?? {};\n const versions = { ...configVersions, ...cliVersions };\n\n return {\n ...options,\n cwd: resolvedCwd,\n volumes: volume,\n versions,\n defaultVolumesEnabled: defaultVolumes,\n };\n };\n\n const program = new Command();\n\n program\n .name('lz-tool')\n .description(\n '🚀 LayerZero VM tooling with intelligent version management\\n' +\n '\\n' +\n 'Usage pattern:\\n' +\n ' lz-tool [global-options] <tool> [tool-args...]\\n' +\n '\\n' +\n 'Examples:\\n' +\n ' lz-tool -e bash sui --help\\n' +\n ' lz-tool --sui-version 1.38.0 sui client\\n' +\n '\\n' +\n 'Note: All lz-tool options must appear BEFORE the tool name.',\n )\n .version('1.0.0')\n .enablePositionalOptions(); // Required for passThroughOptions to work\n\n // Check for --list-versions before parsing to avoid help display\n if (process.argv.includes('--list-versions')) {\n displayVersionCombinations(context);\n process.exit(0);\n }\n\n // Add global options.\n program\n .option('-c, --cwd <path>', 'Current working directory', (input: string) => {\n if (typeof input !== 'string') {\n throw new Error('cwd flag must be a string');\n }\n\n if (!path.isAbsolute(input)) {\n throw new Error('cwd must be an absolute path if provided');\n }\n\n if (!fs.existsSync(input)) {\n throw new Error('cwd does not exist');\n }\n\n if (!fs.statSync(input).isDirectory()) {\n throw new Error('cwd must be a directory');\n }\n\n return input;\n })\n .option(\n '-e, --custom-entrypoint <entrypoint>',\n 'Override the default Docker entrypoint for the tool',\n )\n .option(\n '--script <script>',\n 'Execute a custom script using bash -c in the Docker container (e.g., --script \"npm install && npm test\")',\n )\n .option(\n '--env <name=value>',\n 'Set environment variables for Docker container (e.g., --env NODE_ENV=production)',\n (input: string, variables: EnvironmentVariable[]) => {\n const [name, ...valueParts] = input.split('=');\n\n if (!name || !valueParts.length) {\n throw new Error(\n `Invalid environment variable format: ${input}. Use --env NAME=VALUE`,\n );\n }\n\n return [...variables, { name, value: valueParts.join('=') }];\n },\n [],\n )\n .option(\n '-v, --volume <type:hostPath:containerPath[:name]>',\n 'Volume mappings in the format type:hostPath:containerPath[:name] (e.g., host:/host/path:/container/path or isolate::/container/path:volumeName)',\n (input: string, volumes: VolumeMapping[]) => {\n const [type, hostPath, containerPath, name] = input.split(':');\n\n switch (type) {\n case 'host':\n if (!hostPath) {\n throw new Error(`Host path is required for volume type 'host'`);\n }\n break;\n case 'isolate':\n if (!name) {\n throw new Error(`Name is required for volume type 'isolate'`);\n }\n break;\n default:\n throw new Error(`Invalid volume type: ${type}`);\n }\n\n if (!containerPath) {\n throw new Error(`Container path is required`);\n }\n\n return [\n ...volumes,\n volumeMappingSchema.parse({ type, hostPath, containerPath, name }),\n ];\n },\n [],\n )\n .option(\n '-p, --publish <host_port:container_port>',\n \"Publish a container's port(s) to the host (repeatable)\",\n (value: string, previous: string[]) => [...previous, value],\n [],\n )\n .option('--no-default-volumes', 'Disable default volumes for the tool');\n\n // Add version options for each tool dynamically\n for (const tool of tools) {\n const defaultVersion = getToolDefaultVersion(context, tool.name);\n const supportedVersions = getToolSupportedVersions(context, tool.name);\n\n program.option(\n `--${tool.name}-version <version>`,\n `Specify ${tool.name} version (default: ${defaultVersion}, supported: ${supportedVersions.join(', ')})`,\n );\n }\n\n // Add utility options\n program.option('--list-versions', 'Display all supported version combinations and exit');\n\n // Add version info command\n program\n .command('version-info <tool>')\n .description('Display detailed version information for a specific tool')\n .action((toolName: string) => displayToolVersionInfo(context, toolName));\n\n for (const tool of tools) {\n // Don't add any options to the subcommand level.\n // All lz-tool options must be specified before the subcommand.\n program\n .command(tool.name, { isDefault: false })\n .description(`Run ${tool.name} with version checking`)\n .passThroughOptions(true) // Pass through all options after the subcommand\n .allowUnknownOption()\n .helpOption(false) // Disable automatic help option to pass --help to the tool\n .argument('[args...]', 'Arguments to pass to the tool')\n .action(async (args: string[]) => {\n await executeToolCommand(\n context,\n tool.name,\n args,\n await parseGlobalOptions(program),\n );\n });\n }\n\n // Allow external registration of extra commands\n registerExtraCommands?.(program, parseGlobalOptions);\n\n return program;\n};\n\nexport const runCli = async <TImageId extends string>(\n config: ChainContext<TImageId>,\n registerExtraCommands?: RegisterExtraCommands,\n): Promise<void> => {\n try {\n await createCli<TImageId>(config, registerExtraCommands).parseAsync();\n } catch (error) {\n console.error('❌ VM tool execution failed', error);\n process.exit(1);\n }\n};\n"]}
1
+ {"version":3,"sources":["../src/cli.ts"],"names":["createCli","context","registerExtraCommands","tools","toolVersionOptions","Object","fromEntries","map","name","camelCase","parseGlobalOptions","command","cwd","volume","defaultVolumes","options","opts","resolvedCwd","process","cliVersions","entries","version","filter","tool","configVersions","getDefaultVersions","versions","volumes","defaultVolumesEnabled","program","Command","description","enablePositionalOptions","argv","includes","displayVersionCombinations","exit","option","input","Error","path","isAbsolute","fs","existsSync","statSync","isDirectory","variables","valueParts","split","length","value","join","type","hostPath","containerPath","volumeMappingSchema","parse","previous","defaultVersion","getToolDefaultVersion","supportedVersions","getToolSupportedVersions","action","toolName","displayToolVersionInfo","isDefault","passThroughOptions","allowUnknownOption","helpOption","argument","args","executeToolCommand","runCli","config","parseAsync","error","console"],"mappings":"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","file":"3I5XNU26.js","sourcesContent":["import { Command } from 'commander';\nimport { camelCase } from 'es-toolkit';\nimport fs from 'node:fs';\nimport path from 'node:path';\nimport process from 'node:process';\n\nimport type { EnvironmentVariable, VolumeMapping } from './config';\nimport { volumeMappingSchema } from './config';\nimport type { ChainContext } from './context';\nimport type { ToolCommandExecutionOptions } from './core';\nimport { executeToolCommand } from './core';\nimport { displayToolVersionInfo, displayVersionCombinations } from './display';\nimport { getToolDefaultVersion, getToolSupportedVersions } from './utils/finder';\n\ninterface GlobalOptions {\n cwd?: string;\n volume: VolumeMapping[];\n env: EnvironmentVariable[];\n publish?: string[];\n script?: string;\n customEntrypoint?: string;\n defaultVolumes: boolean;\n}\n\ntype RegisterExtraCommands = (\n program: Command,\n parseGlobalOptions: (command: Command) => Promise<ToolCommandExecutionOptions>,\n) => void;\n\nconst createCli = <TImageId extends string>(\n context: ChainContext<TImageId>,\n registerExtraCommands?: RegisterExtraCommands,\n): Command => {\n const { tools } = context;\n const toolVersionOptions = Object.fromEntries(\n tools.map(({ name }) => [`${camelCase(name)}Version`, name]),\n );\n\n const parseGlobalOptions = async (command: Command): Promise<ToolCommandExecutionOptions> => {\n const { cwd, volume, defaultVolumes, ...options } = command.opts<GlobalOptions>();\n const resolvedCwd = cwd ?? process.cwd();\n\n // CLI flags take precedence over project config versions\n const cliVersions = Object.fromEntries(\n Object.entries(options)\n .map(([name, version]) => [toolVersionOptions[name], version])\n .filter(([tool]) => tool),\n );\n\n // Read defaults from project config (e.g., Anchor.toml) if the chain provides a hook\n const configVersions = (await context.getDefaultVersions?.(resolvedCwd)) ?? {};\n const versions = { ...configVersions, ...cliVersions };\n\n return {\n ...options,\n cwd: resolvedCwd,\n volumes: volume,\n versions,\n defaultVolumesEnabled: defaultVolumes,\n };\n };\n\n const program = new Command();\n\n program\n .name('lz-tool')\n .description(\n '🚀 LayerZero VM tooling with intelligent version management\\n' +\n '\\n' +\n 'Usage pattern:\\n' +\n ' lz-tool [global-options] <tool> [tool-args...]\\n' +\n '\\n' +\n 'Examples:\\n' +\n ' lz-tool -e bash sui --help\\n' +\n ' lz-tool --sui-version 1.38.0 sui client\\n' +\n '\\n' +\n 'Note: All lz-tool options must appear BEFORE the tool name.',\n )\n .version('1.0.0')\n .enablePositionalOptions(); // Required for passThroughOptions to work\n\n // Check for --list-versions before parsing to avoid help display\n if (process.argv.includes('--list-versions')) {\n displayVersionCombinations(context);\n process.exit(0);\n }\n\n // Add global options.\n program\n .option('-c, --cwd <path>', 'Current working directory', (input: string) => {\n if (typeof input !== 'string') {\n throw new Error('cwd flag must be a string');\n }\n\n if (!path.isAbsolute(input)) {\n throw new Error('cwd must be an absolute path if provided');\n }\n\n if (!fs.existsSync(input)) {\n throw new Error('cwd does not exist');\n }\n\n if (!fs.statSync(input).isDirectory()) {\n throw new Error('cwd must be a directory');\n }\n\n return input;\n })\n .option(\n '-e, --custom-entrypoint <entrypoint>',\n 'Override the default Docker entrypoint for the tool',\n )\n .option(\n '--script <script>',\n 'Execute a custom script using bash -c in the Docker container (e.g., --script \"npm install && npm test\")',\n )\n .option(\n '--env <name=value>',\n 'Set environment variables for Docker container (e.g., --env NODE_ENV=production)',\n (input: string, variables: EnvironmentVariable[]) => {\n const [name, ...valueParts] = input.split('=');\n\n if (!name || !valueParts.length) {\n throw new Error(\n `Invalid environment variable format: ${input}. Use --env NAME=VALUE`,\n );\n }\n\n return [...variables, { name, value: valueParts.join('=') }];\n },\n [],\n )\n .option(\n '-v, --volume <type:hostPath:containerPath[:name]>',\n 'Volume mappings in the format type:hostPath:containerPath[:name] (e.g., host:/host/path:/container/path or isolate::/container/path:volumeName)',\n (input: string, volumes: VolumeMapping[]) => {\n const [type, hostPath, containerPath, name] = input.split(':');\n\n switch (type) {\n case 'host':\n if (!hostPath) {\n throw new Error(`Host path is required for volume type 'host'`);\n }\n break;\n case 'isolate':\n if (!name) {\n throw new Error(`Name is required for volume type 'isolate'`);\n }\n break;\n default:\n throw new Error(`Invalid volume type: ${type}`);\n }\n\n if (!containerPath) {\n throw new Error(`Container path is required`);\n }\n\n return [\n ...volumes,\n volumeMappingSchema.parse({ type, hostPath, containerPath, name }),\n ];\n },\n [],\n )\n .option(\n '-p, --publish <host_port:container_port>',\n \"Publish a container's port(s) to the host (repeatable)\",\n (value: string, previous: string[]) => [...previous, value],\n [],\n )\n .option('--no-default-volumes', 'Disable default volumes for the tool');\n\n // Add version options for each tool dynamically\n for (const tool of tools) {\n const defaultVersion = getToolDefaultVersion(context, tool.name);\n const supportedVersions = getToolSupportedVersions(context, tool.name);\n\n program.option(\n `--${tool.name}-version <version>`,\n `Specify ${tool.name} version (default: ${defaultVersion}, supported: ${supportedVersions.join(', ')})`,\n );\n }\n\n // Add utility options\n program.option('--list-versions', 'Display all supported version combinations and exit');\n\n // Add version info command\n program\n .command('version-info <tool>')\n .description('Display detailed version information for a specific tool')\n .action((toolName: string) => displayToolVersionInfo(context, toolName));\n\n for (const tool of tools) {\n // Don't add any options to the subcommand level.\n // All lz-tool options must be specified before the subcommand.\n program\n .command(tool.name, { isDefault: false })\n .description(`Run ${tool.name} with version checking`)\n .passThroughOptions(true) // Pass through all options after the subcommand\n .allowUnknownOption()\n .helpOption(false) // Disable automatic help option to pass --help to the tool\n .argument('[args...]', 'Arguments to pass to the tool')\n .action(async (args: string[]) => {\n await executeToolCommand(\n context,\n tool.name,\n args,\n await parseGlobalOptions(program),\n );\n });\n }\n\n // Allow external registration of extra commands\n registerExtraCommands?.(program, parseGlobalOptions);\n\n return program;\n};\n\nexport const runCli = async <TImageId extends string>(\n config: ChainContext<TImageId>,\n registerExtraCommands?: RegisterExtraCommands,\n): Promise<void> => {\n try {\n await createCli<TImageId>(config, registerExtraCommands).parseAsync();\n } catch (error) {\n console.error('❌ VM tool execution failed', error);\n process.exit(1);\n }\n};\n"]}
@@ -1,4 +1,4 @@
1
- import { init_esm_shims, __name } from './6AHA7PAZ.js';
1
+ import { init_esm_shims, __name } from './CWKWODSW.js';
2
2
  import { isString } from 'es-toolkit';
3
3
 
4
4
  // src/utils/finder.ts
@@ -38,5 +38,5 @@ var getToolSupportedVersions = /* @__PURE__ */ __name((context, toolName) => [
38
38
  ].sort(), "getToolSupportedVersions");
39
39
 
40
40
  export { findToolByName, findToolVersionsForCombination, getImageName, getToolDefaultVersion, getToolSupportedVersions };
41
- //# sourceMappingURL=KWRJPB5T.js.map
42
- //# sourceMappingURL=KWRJPB5T.js.map
41
+ //# sourceMappingURL=3XEUJAQB.js.map
42
+ //# sourceMappingURL=3XEUJAQB.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/utils/finder.ts"],"names":["findToolByName","tools","toolName","tool","find","name","Error","getImageName","basename","getToolDefaultVersion","context","combination","versionCombinations","version","findToolVersionsForCombination","console","warn","images","Object","fromEntries","entries","map","imageId","versions","getToolSupportedVersions","Set","filter","isString","sort"],"mappings":";;;;AAAA,cAAA,EAAA;AAMO,IAAMA,cAAAA,mBAAiB,MAAA,CAAA,CAC1B,EAAEC,KAAAA,IACFC,QAAAA,KAAAA;AAEA,EAAA,MAAMC,OAAOF,KAAAA,CAAMG,IAAAA,CAAK,CAACD,KAAAA,KAASA,KAAAA,CAAKE,SAASH,QAAAA,CAAAA;AAEhD,EAAA,IAAI,CAACC,IAAAA,EAAM;AACP,IAAA,MAAM,IAAIG,KAAAA,CAAM,CAAA,MAAA,EAASJ,QAAAA,CAAAA,WAAAA,CAAqB,CAAA;AAClD,EAAA;AAEA,EAAA,OAAOC,IAAAA;AACX,CAAA,EAX8B,gBAAA;AAavB,IAAMI,YAAAA,mBAAe,MAAA,CAAA,CAACC,QAAAA,KAA6B,CAAA,EAAGA,QAAAA,CAAAA,QAAAA,CAAAA,EAAjC,cAAA;AAKrB,IAAMC,qBAAAA,mBAAwB,MAAA,CAAA,CACjCC,OAAAA,EACAR,QAAAA,KAAAA;AAEA,EAAA,MAAMS,WAAAA,GAAcD,OAAAA,CAAQE,mBAAAA,CAAoB,CAAA,CAAA;AAEhD,EAAA,IAAI,CAACD,WAAAA,EAAa;AACd,IAAA,OAAO,IAAA;AACX,EAAA;AAEA,EAAA,MAAME,OAAAA,GAAUC,8BAAAA,CAA+BJ,OAAAA,EAASC,WAAAA,EAAaT,QAAAA,CAAAA;AAErE,EAAA,IAAI,CAACW,OAAAA,EAAS;AACVE,IAAAA,OAAAA,CAAQC,IAAAA,CAAK,CAAA,mCAAA,EAAsCd,QAAAA,CAAAA,WAAAA,CAAqB,CAAA;AACxE,IAAA,OAAO,IAAA;AACX,EAAA;AAEA,EAAA,OAAOW,OAAAA;AACX,CAAA,EAlBqC,uBAAA;AAoB9B,IAAMC,iDAAiC,MAAA,CAAA,CAC1C,EAAEG,QAAM,EACRN,WAAAA,KAEAO,OAAOC,WAAAA,CACHD,MAAAA,CAAOE,OAAAA,CAAQT,WAAAA,CAAYM,MAAM,CAAA,CAAEI,GAAAA,CAAI,CAAC,CAAClB,IAAAA,EAAMmB,OAAAA,CAAAA,KAAQ;AACnD,EAAA,MAAMT,OAAAA,GAAUI,MAAAA,CAAOK,OAAAA,CAAAA,CAASC,SAASpB,IAAAA,CAAAA;AAEzC,EAAA,IAAI,CAACU,OAAAA,EAAS;AACV,IAAA,MAAM,IAAIP,KAAAA,CAAM,CAAA,KAAA,EAAQH,IAAAA,CAAAA,4BAAAA,EAAmCmB,OAAAA,CAAAA,CAAS,CAAA;AACxE,EAAA;AAEA,EAAA,OAAO;AAACnB,IAAAA,IAAAA;AAAMU,IAAAA;;AAClB,CAAA,CAAA,CAAA,EAbsC,gCAAA;AAmBvC,IAAMW,wBAAAA,mBAA2B,MAAA,CAAA,CACpCd,OAAAA,EACAR,QAAAA,KAEA;AACO,EAAA,GAAA,IAAIuB,GAAAA,CACHf,OAAAA,CAAQE,mBAAAA,CACHS,GAAAA,CACG,CAACV,WAAAA,KAAgBG,8BAAAA,CAA+BJ,OAAAA,EAASC,WAAAA,EAAaT,QAAAA,CAAS,CAAA,CAElFwB,MAAAA,CAAOC,QAAAA,CAAAA;AAElBC,CAAAA,CAAAA,IAAAA,EAAI,EAZ8B,0BAAA","file":"KWRJPB5T.js","sourcesContent":["import { isString } from 'es-toolkit';\n\nimport type { VersionCombination } from '../config';\nimport type { Tool } from '../config';\nimport type { ChainContext } from '../context';\n\nexport const findToolByName = <TImageId extends string>(\n { tools }: ChainContext<TImageId>,\n toolName: string,\n): Tool => {\n const tool = tools.find((tool) => tool.name === toolName);\n\n if (!tool) {\n throw new Error(`Tool '${toolName}' not found`);\n }\n\n return tool;\n};\n\nexport const getImageName = (basename: string): string => `${basename}-tooling`;\n\n/**\n * Get default version for a specific tool from version matrix\n */\nexport const getToolDefaultVersion = <TImageId extends string>(\n context: ChainContext<TImageId>,\n toolName: string,\n): string | null => {\n const combination = context.versionCombinations[0];\n\n if (!combination) {\n return null;\n }\n\n const version = findToolVersionsForCombination(context, combination)[toolName];\n\n if (!version) {\n console.warn(`No default version found for tool '${toolName}' in matrix`);\n return null;\n }\n\n return version;\n};\n\nexport const findToolVersionsForCombination = <TImageId extends string>(\n { images }: ChainContext<TImageId>,\n combination: VersionCombination<TImageId>,\n): Record<string, string> =>\n Object.fromEntries(\n Object.entries(combination.images).map(([tool, imageId]) => {\n const version = images[imageId].versions[tool];\n\n if (!version) {\n throw new Error(`Tool ${tool} not found in Docker image: ${imageId}`);\n }\n\n return [tool, version];\n }),\n );\n\n/**\n * Get supported versions for a specific tool from version matrix\n */\nexport const getToolSupportedVersions = <TImageId extends string>(\n context: ChainContext<TImageId>,\n toolName: string,\n): string[] =>\n [\n ...new Set(\n context.versionCombinations\n .map(\n (combination) => findToolVersionsForCombination(context, combination)[toolName],\n )\n .filter(isString),\n ),\n ].sort();\n"]}
1
+ {"version":3,"sources":["../src/utils/finder.ts"],"names":["findToolByName","tools","toolName","tool","find","name","Error","getImageName","basename","getToolDefaultVersion","context","combination","versionCombinations","version","findToolVersionsForCombination","console","warn","images","Object","fromEntries","entries","map","imageId","versions","getToolSupportedVersions","Set","filter","isString","sort"],"mappings":";;;;AAAA,cAAA,EAAA;AAMO,IAAMA,cAAAA,mBAAiB,MAAA,CAAA,CAC1B,EAAEC,KAAAA,IACFC,QAAAA,KAAAA;AAEA,EAAA,MAAMC,OAAOF,KAAAA,CAAMG,IAAAA,CAAK,CAACD,KAAAA,KAASA,KAAAA,CAAKE,SAASH,QAAAA,CAAAA;AAEhD,EAAA,IAAI,CAACC,IAAAA,EAAM;AACP,IAAA,MAAM,IAAIG,KAAAA,CAAM,CAAA,MAAA,EAASJ,QAAAA,CAAAA,WAAAA,CAAqB,CAAA;AAClD,EAAA;AAEA,EAAA,OAAOC,IAAAA;AACX,CAAA,EAX8B,gBAAA;AAavB,IAAMI,YAAAA,mBAAe,MAAA,CAAA,CAACC,QAAAA,KAA6B,CAAA,EAAGA,QAAAA,CAAAA,QAAAA,CAAAA,EAAjC,cAAA;AAKrB,IAAMC,qBAAAA,mBAAwB,MAAA,CAAA,CACjCC,OAAAA,EACAR,QAAAA,KAAAA;AAEA,EAAA,MAAMS,WAAAA,GAAcD,OAAAA,CAAQE,mBAAAA,CAAoB,CAAA,CAAA;AAEhD,EAAA,IAAI,CAACD,WAAAA,EAAa;AACd,IAAA,OAAO,IAAA;AACX,EAAA;AAEA,EAAA,MAAME,OAAAA,GAAUC,8BAAAA,CAA+BJ,OAAAA,EAASC,WAAAA,EAAaT,QAAAA,CAAAA;AAErE,EAAA,IAAI,CAACW,OAAAA,EAAS;AACVE,IAAAA,OAAAA,CAAQC,IAAAA,CAAK,CAAA,mCAAA,EAAsCd,QAAAA,CAAAA,WAAAA,CAAqB,CAAA;AACxE,IAAA,OAAO,IAAA;AACX,EAAA;AAEA,EAAA,OAAOW,OAAAA;AACX,CAAA,EAlBqC,uBAAA;AAoB9B,IAAMC,iDAAiC,MAAA,CAAA,CAC1C,EAAEG,QAAM,EACRN,WAAAA,KAEAO,OAAOC,WAAAA,CACHD,MAAAA,CAAOE,OAAAA,CAAQT,WAAAA,CAAYM,MAAM,CAAA,CAAEI,GAAAA,CAAI,CAAC,CAAClB,IAAAA,EAAMmB,OAAAA,CAAAA,KAAQ;AACnD,EAAA,MAAMT,OAAAA,GAAUI,MAAAA,CAAOK,OAAAA,CAAAA,CAASC,SAASpB,IAAAA,CAAAA;AAEzC,EAAA,IAAI,CAACU,OAAAA,EAAS;AACV,IAAA,MAAM,IAAIP,KAAAA,CAAM,CAAA,KAAA,EAAQH,IAAAA,CAAAA,4BAAAA,EAAmCmB,OAAAA,CAAAA,CAAS,CAAA;AACxE,EAAA;AAEA,EAAA,OAAO;AAACnB,IAAAA,IAAAA;AAAMU,IAAAA;;AAClB,CAAA,CAAA,CAAA,EAbsC,gCAAA;AAmBvC,IAAMW,wBAAAA,mBAA2B,MAAA,CAAA,CACpCd,OAAAA,EACAR,QAAAA,KAEA;AACO,EAAA,GAAA,IAAIuB,GAAAA,CACHf,OAAAA,CAAQE,mBAAAA,CACHS,GAAAA,CACG,CAACV,WAAAA,KAAgBG,8BAAAA,CAA+BJ,OAAAA,EAASC,WAAAA,EAAaT,QAAAA,CAAS,CAAA,CAElFwB,MAAAA,CAAOC,QAAAA,CAAAA;AAElBC,CAAAA,CAAAA,IAAAA,EAAI,EAZ8B,0BAAA","file":"3XEUJAQB.js","sourcesContent":["import { isString } from 'es-toolkit';\n\nimport type { VersionCombination } from '../config';\nimport type { Tool } from '../config';\nimport type { ChainContext } from '../context';\n\nexport const findToolByName = <TImageId extends string>(\n { tools }: ChainContext<TImageId>,\n toolName: string,\n): Tool => {\n const tool = tools.find((tool) => tool.name === toolName);\n\n if (!tool) {\n throw new Error(`Tool '${toolName}' not found`);\n }\n\n return tool;\n};\n\nexport const getImageName = (basename: string): string => `${basename}-tooling`;\n\n/**\n * Get default version for a specific tool from version matrix\n */\nexport const getToolDefaultVersion = <TImageId extends string>(\n context: ChainContext<TImageId>,\n toolName: string,\n): string | null => {\n const combination = context.versionCombinations[0];\n\n if (!combination) {\n return null;\n }\n\n const version = findToolVersionsForCombination(context, combination)[toolName];\n\n if (!version) {\n console.warn(`No default version found for tool '${toolName}' in matrix`);\n return null;\n }\n\n return version;\n};\n\nexport const findToolVersionsForCombination = <TImageId extends string>(\n { images }: ChainContext<TImageId>,\n combination: VersionCombination<TImageId>,\n): Record<string, string> =>\n Object.fromEntries(\n Object.entries(combination.images).map(([tool, imageId]) => {\n const version = images[imageId].versions[tool];\n\n if (!version) {\n throw new Error(`Tool ${tool} not found in Docker image: ${imageId}`);\n }\n\n return [tool, version];\n }),\n );\n\n/**\n * Get supported versions for a specific tool from version matrix\n */\nexport const getToolSupportedVersions = <TImageId extends string>(\n context: ChainContext<TImageId>,\n toolName: string,\n): string[] =>\n [\n ...new Set(\n context.versionCombinations\n .map(\n (combination) => findToolVersionsForCombination(context, combination)[toolName],\n )\n .filter(isString),\n ),\n ].sort();\n"]}
@@ -1,19 +1,19 @@
1
1
  'use strict';
2
2
 
3
- var _24WEKBY3_cjs = require('./24WEKBY3.cjs');
3
+ var KHVGLVR5_cjs = require('./KHVGLVR5.cjs');
4
4
  var esToolkit = require('es-toolkit');
5
5
 
6
6
  // src/utils/finder.ts
7
- _24WEKBY3_cjs.init_cjs_shims();
8
- var findToolByName = /* @__PURE__ */ _24WEKBY3_cjs.__name(({ tools }, toolName) => {
7
+ KHVGLVR5_cjs.init_cjs_shims();
8
+ var findToolByName = /* @__PURE__ */ KHVGLVR5_cjs.__name(({ tools }, toolName) => {
9
9
  const tool = tools.find((tool2) => tool2.name === toolName);
10
10
  if (!tool) {
11
11
  throw new Error(`Tool '${toolName}' not found`);
12
12
  }
13
13
  return tool;
14
14
  }, "findToolByName");
15
- var getImageName = /* @__PURE__ */ _24WEKBY3_cjs.__name((basename) => `${basename}-tooling`, "getImageName");
16
- var getToolDefaultVersion = /* @__PURE__ */ _24WEKBY3_cjs.__name((context, toolName) => {
15
+ var getImageName = /* @__PURE__ */ KHVGLVR5_cjs.__name((basename) => `${basename}-tooling`, "getImageName");
16
+ var getToolDefaultVersion = /* @__PURE__ */ KHVGLVR5_cjs.__name((context, toolName) => {
17
17
  const combination = context.versionCombinations[0];
18
18
  if (!combination) {
19
19
  return null;
@@ -25,7 +25,7 @@ var getToolDefaultVersion = /* @__PURE__ */ _24WEKBY3_cjs.__name((context, toolN
25
25
  }
26
26
  return version;
27
27
  }, "getToolDefaultVersion");
28
- var findToolVersionsForCombination = /* @__PURE__ */ _24WEKBY3_cjs.__name(({ images }, combination) => Object.fromEntries(Object.entries(combination.images).map(([tool, imageId]) => {
28
+ var findToolVersionsForCombination = /* @__PURE__ */ KHVGLVR5_cjs.__name(({ images }, combination) => Object.fromEntries(Object.entries(combination.images).map(([tool, imageId]) => {
29
29
  const version = images[imageId].versions[tool];
30
30
  if (!version) {
31
31
  throw new Error(`Tool ${tool} not found in Docker image: ${imageId}`);
@@ -35,7 +35,7 @@ var findToolVersionsForCombination = /* @__PURE__ */ _24WEKBY3_cjs.__name(({ ima
35
35
  version
36
36
  ];
37
37
  })), "findToolVersionsForCombination");
38
- var getToolSupportedVersions = /* @__PURE__ */ _24WEKBY3_cjs.__name((context, toolName) => [
38
+ var getToolSupportedVersions = /* @__PURE__ */ KHVGLVR5_cjs.__name((context, toolName) => [
39
39
  ...new Set(context.versionCombinations.map((combination) => findToolVersionsForCombination(context, combination)[toolName]).filter(esToolkit.isString))
40
40
  ].sort(), "getToolSupportedVersions");
41
41
 
@@ -44,5 +44,5 @@ exports.findToolVersionsForCombination = findToolVersionsForCombination;
44
44
  exports.getImageName = getImageName;
45
45
  exports.getToolDefaultVersion = getToolDefaultVersion;
46
46
  exports.getToolSupportedVersions = getToolSupportedVersions;
47
- //# sourceMappingURL=5GPMTH2I.cjs.map
48
- //# sourceMappingURL=5GPMTH2I.cjs.map
47
+ //# sourceMappingURL=4BP4CCPZ.cjs.map
48
+ //# sourceMappingURL=4BP4CCPZ.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/utils/finder.ts"],"names":["init_cjs_shims","findToolByName","__name","tools","toolName","tool","find","name","Error","getImageName","basename","getToolDefaultVersion","context","combination","versionCombinations","version","findToolVersionsForCombination","console","warn","images","Object","fromEntries","entries","map","imageId","versions","getToolSupportedVersions","Set","filter","isString","sort"],"mappings":";;;;;;AAAAA,4BAAA,EAAA;AAMO,IAAMC,cAAAA,mBAAiBC,oBAAA,CAAA,CAC1B,EAAEC,KAAAA,IACFC,QAAAA,KAAAA;AAEA,EAAA,MAAMC,OAAOF,KAAAA,CAAMG,IAAAA,CAAK,CAACD,KAAAA,KAASA,KAAAA,CAAKE,SAASH,QAAAA,CAAAA;AAEhD,EAAA,IAAI,CAACC,IAAAA,EAAM;AACP,IAAA,MAAM,IAAIG,KAAAA,CAAM,CAAA,MAAA,EAASJ,QAAAA,CAAAA,WAAAA,CAAqB,CAAA;AAClD,EAAA;AAEA,EAAA,OAAOC,IAAAA;AACX,CAAA,EAX8B,gBAAA;AAavB,IAAMI,YAAAA,mBAAeP,oBAAA,CAAA,CAACQ,QAAAA,KAA6B,CAAA,EAAGA,QAAAA,CAAAA,QAAAA,CAAAA,EAAjC,cAAA;AAKrB,IAAMC,qBAAAA,mBAAwBT,oBAAA,CAAA,CACjCU,OAAAA,EACAR,QAAAA,KAAAA;AAEA,EAAA,MAAMS,WAAAA,GAAcD,OAAAA,CAAQE,mBAAAA,CAAoB,CAAA,CAAA;AAEhD,EAAA,IAAI,CAACD,WAAAA,EAAa;AACd,IAAA,OAAO,IAAA;AACX,EAAA;AAEA,EAAA,MAAME,OAAAA,GAAUC,8BAAAA,CAA+BJ,OAAAA,EAASC,WAAAA,EAAaT,QAAAA,CAAAA;AAErE,EAAA,IAAI,CAACW,OAAAA,EAAS;AACVE,IAAAA,OAAAA,CAAQC,IAAAA,CAAK,CAAA,mCAAA,EAAsCd,QAAAA,CAAAA,WAAAA,CAAqB,CAAA;AACxE,IAAA,OAAO,IAAA;AACX,EAAA;AAEA,EAAA,OAAOW,OAAAA;AACX,CAAA,EAlBqC,uBAAA;AAoB9B,IAAMC,iDAAiCd,oBAAA,CAAA,CAC1C,EAAEiB,QAAM,EACRN,WAAAA,KAEAO,OAAOC,WAAAA,CACHD,MAAAA,CAAOE,OAAAA,CAAQT,WAAAA,CAAYM,MAAM,CAAA,CAAEI,GAAAA,CAAI,CAAC,CAAClB,IAAAA,EAAMmB,OAAAA,CAAAA,KAAQ;AACnD,EAAA,MAAMT,OAAAA,GAAUI,MAAAA,CAAOK,OAAAA,CAAAA,CAASC,SAASpB,IAAAA,CAAAA;AAEzC,EAAA,IAAI,CAACU,OAAAA,EAAS;AACV,IAAA,MAAM,IAAIP,KAAAA,CAAM,CAAA,KAAA,EAAQH,IAAAA,CAAAA,4BAAAA,EAAmCmB,OAAAA,CAAAA,CAAS,CAAA;AACxE,EAAA;AAEA,EAAA,OAAO;AAACnB,IAAAA,IAAAA;AAAMU,IAAAA;;AAClB,CAAA,CAAA,CAAA,EAbsC,gCAAA;AAmBvC,IAAMW,wBAAAA,mBAA2BxB,oBAAA,CAAA,CACpCU,OAAAA,EACAR,QAAAA,KAEA;AACO,EAAA,GAAA,IAAIuB,GAAAA,CACHf,OAAAA,CAAQE,mBAAAA,CACHS,GAAAA,CACG,CAACV,WAAAA,KAAgBG,8BAAAA,CAA+BJ,OAAAA,EAASC,WAAAA,EAAaT,QAAAA,CAAS,CAAA,CAElFwB,MAAAA,CAAOC,kBAAAA,CAAAA;AAElBC,CAAAA,CAAAA,IAAAA,EAAI,EAZ8B,0BAAA","file":"5GPMTH2I.cjs","sourcesContent":["import { isString } from 'es-toolkit';\n\nimport type { VersionCombination } from '../config';\nimport type { Tool } from '../config';\nimport type { ChainContext } from '../context';\n\nexport const findToolByName = <TImageId extends string>(\n { tools }: ChainContext<TImageId>,\n toolName: string,\n): Tool => {\n const tool = tools.find((tool) => tool.name === toolName);\n\n if (!tool) {\n throw new Error(`Tool '${toolName}' not found`);\n }\n\n return tool;\n};\n\nexport const getImageName = (basename: string): string => `${basename}-tooling`;\n\n/**\n * Get default version for a specific tool from version matrix\n */\nexport const getToolDefaultVersion = <TImageId extends string>(\n context: ChainContext<TImageId>,\n toolName: string,\n): string | null => {\n const combination = context.versionCombinations[0];\n\n if (!combination) {\n return null;\n }\n\n const version = findToolVersionsForCombination(context, combination)[toolName];\n\n if (!version) {\n console.warn(`No default version found for tool '${toolName}' in matrix`);\n return null;\n }\n\n return version;\n};\n\nexport const findToolVersionsForCombination = <TImageId extends string>(\n { images }: ChainContext<TImageId>,\n combination: VersionCombination<TImageId>,\n): Record<string, string> =>\n Object.fromEntries(\n Object.entries(combination.images).map(([tool, imageId]) => {\n const version = images[imageId].versions[tool];\n\n if (!version) {\n throw new Error(`Tool ${tool} not found in Docker image: ${imageId}`);\n }\n\n return [tool, version];\n }),\n );\n\n/**\n * Get supported versions for a specific tool from version matrix\n */\nexport const getToolSupportedVersions = <TImageId extends string>(\n context: ChainContext<TImageId>,\n toolName: string,\n): string[] =>\n [\n ...new Set(\n context.versionCombinations\n .map(\n (combination) => findToolVersionsForCombination(context, combination)[toolName],\n )\n .filter(isString),\n ),\n ].sort();\n"]}
1
+ {"version":3,"sources":["../src/utils/finder.ts"],"names":["init_cjs_shims","findToolByName","__name","tools","toolName","tool","find","name","Error","getImageName","basename","getToolDefaultVersion","context","combination","versionCombinations","version","findToolVersionsForCombination","console","warn","images","Object","fromEntries","entries","map","imageId","versions","getToolSupportedVersions","Set","filter","isString","sort"],"mappings":";;;;;;AAAAA,2BAAA,EAAA;AAMO,IAAMC,cAAAA,mBAAiBC,mBAAA,CAAA,CAC1B,EAAEC,KAAAA,IACFC,QAAAA,KAAAA;AAEA,EAAA,MAAMC,OAAOF,KAAAA,CAAMG,IAAAA,CAAK,CAACD,KAAAA,KAASA,KAAAA,CAAKE,SAASH,QAAAA,CAAAA;AAEhD,EAAA,IAAI,CAACC,IAAAA,EAAM;AACP,IAAA,MAAM,IAAIG,KAAAA,CAAM,CAAA,MAAA,EAASJ,QAAAA,CAAAA,WAAAA,CAAqB,CAAA;AAClD,EAAA;AAEA,EAAA,OAAOC,IAAAA;AACX,CAAA,EAX8B,gBAAA;AAavB,IAAMI,YAAAA,mBAAeP,mBAAA,CAAA,CAACQ,QAAAA,KAA6B,CAAA,EAAGA,QAAAA,CAAAA,QAAAA,CAAAA,EAAjC,cAAA;AAKrB,IAAMC,qBAAAA,mBAAwBT,mBAAA,CAAA,CACjCU,OAAAA,EACAR,QAAAA,KAAAA;AAEA,EAAA,MAAMS,WAAAA,GAAcD,OAAAA,CAAQE,mBAAAA,CAAoB,CAAA,CAAA;AAEhD,EAAA,IAAI,CAACD,WAAAA,EAAa;AACd,IAAA,OAAO,IAAA;AACX,EAAA;AAEA,EAAA,MAAME,OAAAA,GAAUC,8BAAAA,CAA+BJ,OAAAA,EAASC,WAAAA,EAAaT,QAAAA,CAAAA;AAErE,EAAA,IAAI,CAACW,OAAAA,EAAS;AACVE,IAAAA,OAAAA,CAAQC,IAAAA,CAAK,CAAA,mCAAA,EAAsCd,QAAAA,CAAAA,WAAAA,CAAqB,CAAA;AACxE,IAAA,OAAO,IAAA;AACX,EAAA;AAEA,EAAA,OAAOW,OAAAA;AACX,CAAA,EAlBqC,uBAAA;AAoB9B,IAAMC,iDAAiCd,mBAAA,CAAA,CAC1C,EAAEiB,QAAM,EACRN,WAAAA,KAEAO,OAAOC,WAAAA,CACHD,MAAAA,CAAOE,OAAAA,CAAQT,WAAAA,CAAYM,MAAM,CAAA,CAAEI,GAAAA,CAAI,CAAC,CAAClB,IAAAA,EAAMmB,OAAAA,CAAAA,KAAQ;AACnD,EAAA,MAAMT,OAAAA,GAAUI,MAAAA,CAAOK,OAAAA,CAAAA,CAASC,SAASpB,IAAAA,CAAAA;AAEzC,EAAA,IAAI,CAACU,OAAAA,EAAS;AACV,IAAA,MAAM,IAAIP,KAAAA,CAAM,CAAA,KAAA,EAAQH,IAAAA,CAAAA,4BAAAA,EAAmCmB,OAAAA,CAAAA,CAAS,CAAA;AACxE,EAAA;AAEA,EAAA,OAAO;AAACnB,IAAAA,IAAAA;AAAMU,IAAAA;;AAClB,CAAA,CAAA,CAAA,EAbsC,gCAAA;AAmBvC,IAAMW,wBAAAA,mBAA2BxB,mBAAA,CAAA,CACpCU,OAAAA,EACAR,QAAAA,KAEA;AACO,EAAA,GAAA,IAAIuB,GAAAA,CACHf,OAAAA,CAAQE,mBAAAA,CACHS,GAAAA,CACG,CAACV,WAAAA,KAAgBG,8BAAAA,CAA+BJ,OAAAA,EAASC,WAAAA,EAAaT,QAAAA,CAAS,CAAA,CAElFwB,MAAAA,CAAOC,kBAAAA,CAAAA;AAElBC,CAAAA,CAAAA,IAAAA,EAAI,EAZ8B,0BAAA","file":"4BP4CCPZ.cjs","sourcesContent":["import { isString } from 'es-toolkit';\n\nimport type { VersionCombination } from '../config';\nimport type { Tool } from '../config';\nimport type { ChainContext } from '../context';\n\nexport const findToolByName = <TImageId extends string>(\n { tools }: ChainContext<TImageId>,\n toolName: string,\n): Tool => {\n const tool = tools.find((tool) => tool.name === toolName);\n\n if (!tool) {\n throw new Error(`Tool '${toolName}' not found`);\n }\n\n return tool;\n};\n\nexport const getImageName = (basename: string): string => `${basename}-tooling`;\n\n/**\n * Get default version for a specific tool from version matrix\n */\nexport const getToolDefaultVersion = <TImageId extends string>(\n context: ChainContext<TImageId>,\n toolName: string,\n): string | null => {\n const combination = context.versionCombinations[0];\n\n if (!combination) {\n return null;\n }\n\n const version = findToolVersionsForCombination(context, combination)[toolName];\n\n if (!version) {\n console.warn(`No default version found for tool '${toolName}' in matrix`);\n return null;\n }\n\n return version;\n};\n\nexport const findToolVersionsForCombination = <TImageId extends string>(\n { images }: ChainContext<TImageId>,\n combination: VersionCombination<TImageId>,\n): Record<string, string> =>\n Object.fromEntries(\n Object.entries(combination.images).map(([tool, imageId]) => {\n const version = images[imageId].versions[tool];\n\n if (!version) {\n throw new Error(`Tool ${tool} not found in Docker image: ${imageId}`);\n }\n\n return [tool, version];\n }),\n );\n\n/**\n * Get supported versions for a specific tool from version matrix\n */\nexport const getToolSupportedVersions = <TImageId extends string>(\n context: ChainContext<TImageId>,\n toolName: string,\n): string[] =>\n [\n ...new Set(\n context.versionCombinations\n .map(\n (combination) => findToolVersionsForCombination(context, combination)[toolName],\n )\n .filter(isString),\n ),\n ].sort();\n"]}
@@ -1,4 +1,4 @@
1
- import { init_esm_shims, __name } from './6AHA7PAZ.js';
1
+ import { init_esm_shims, __name } from './CWKWODSW.js';
2
2
  import { delay } from 'es-toolkit';
3
3
  import * as console from 'console';
4
4
  import { rmSync } from 'fs';
@@ -81,5 +81,5 @@ var lockMany = /* @__PURE__ */ __name(async (keys, run) => (
81
81
  ), "lockMany");
82
82
 
83
83
  export { buildLockFilePath, lock, lockMany };
84
- //# sourceMappingURL=44LEKNKN.js.map
85
- //# sourceMappingURL=44LEKNKN.js.map
84
+ //# sourceMappingURL=4SFAVHVD.js.map
85
+ //# sourceMappingURL=4SFAVHVD.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/core/lock.ts"],"names":["directory","join","homedir","defaultOptions","interval","timeout","signals","buildLockFilePath","key","lock","run","options","path","packageName","env","npm_package_name","info","unlock","rmSync","force","lockError","mkdir","recursive","handle","open","constants","O_CREAT","O_EXCL","close","error","time","stat","birthtime","_error","Date","now","getTime","Error","message","delay","signal","process","addListener","console","log","removeListener","lockMany","keys","sort","reduce"],"mappings":"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","file":"44LEKNKN.js","sourcesContent":["import { delay } from 'es-toolkit';\nimport * as console from 'node:console';\nimport { rmSync } from 'node:fs';\nimport { stat } from 'node:fs/promises';\nimport { constants, mkdir, open } from 'node:fs/promises';\nimport { homedir } from 'node:os';\nimport { join } from 'node:path';\nimport { env } from 'node:process';\n\ninterface LockOptions {\n interval?: number;\n timeout?: number;\n}\n\nconst directory = join(homedir(), '.cache/vm-tooling/locks');\nconst defaultOptions = { interval: 1000, timeout: 15 * 60_000 };\nconst signals = ['SIGINT', 'SIGTERM', 'SIGHUP'] as const;\n\nexport const buildLockFilePath = (key: string): string => join(directory, key);\n\nexport const lock = async <T>(key: string, run: () => Promise<T>, options: LockOptions = {}) => {\n const { interval, timeout } = { ...defaultOptions, ...options };\n\n const path = buildLockFilePath(key);\n const packageName = env.npm_package_name;\n const info = [...(packageName ? ['for', packageName] : []), 'at', path].join(' ');\n\n const unlock = () => rmSync(path, { force: true });\n\n while (true) {\n let lockError;\n\n try {\n await mkdir(directory, { recursive: true });\n const handle = await open(path, constants.O_CREAT | constants.O_EXCL);\n await handle.close();\n break;\n } catch (error: unknown) {\n lockError = error as Error;\n }\n\n let time: Date | undefined;\n\n try {\n time = (await stat(path)).birthtime;\n } catch (_error) {\n // \"Crush\" errors as the lock is unlocked between the `open` and `stat`.\n }\n\n if (time && Date.now() - time.getTime() > timeout) {\n // If the timeout is reached, we assume that the previous run is\n // in a bad state and recover automatically by removing the lock file\n // even when it is actually running still.\n unlock();\n throw new Error(`Timeout waiting for lock file ${info}: ${lockError.message}`);\n }\n\n await delay(interval);\n }\n\n for (const signal of signals) {\n process.addListener(signal, unlock);\n }\n\n console.log(`🔒 Acquired lock ${info}`);\n\n try {\n return await run();\n } finally {\n for (const signal of signals) {\n process.removeListener(signal, unlock);\n }\n\n unlock();\n\n console.log(`🔓 Released lock ${info}`);\n }\n};\n\nexport const lockMany = async <T>(keys: string[], run: () => Promise<T>): Promise<T> =>\n // Sort keys to avoid deadlocks.\n keys.sort().reduce((run, key) => () => lock(key, run), run)();\n"]}
1
+ {"version":3,"sources":["../src/core/lock.ts"],"names":["directory","join","homedir","defaultOptions","interval","timeout","signals","buildLockFilePath","key","lock","run","options","path","packageName","env","npm_package_name","info","unlock","rmSync","force","lockError","mkdir","recursive","handle","open","constants","O_CREAT","O_EXCL","close","error","time","stat","birthtime","_error","Date","now","getTime","Error","message","delay","signal","process","addListener","console","log","removeListener","lockMany","keys","sort","reduce"],"mappings":"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","file":"4SFAVHVD.js","sourcesContent":["import { delay } from 'es-toolkit';\nimport * as console from 'node:console';\nimport { rmSync } from 'node:fs';\nimport { stat } from 'node:fs/promises';\nimport { constants, mkdir, open } from 'node:fs/promises';\nimport { homedir } from 'node:os';\nimport { join } from 'node:path';\nimport { env } from 'node:process';\n\ninterface LockOptions {\n interval?: number;\n timeout?: number;\n}\n\nconst directory = join(homedir(), '.cache/vm-tooling/locks');\nconst defaultOptions = { interval: 1000, timeout: 15 * 60_000 };\nconst signals = ['SIGINT', 'SIGTERM', 'SIGHUP'] as const;\n\nexport const buildLockFilePath = (key: string): string => join(directory, key);\n\nexport const lock = async <T>(key: string, run: () => Promise<T>, options: LockOptions = {}) => {\n const { interval, timeout } = { ...defaultOptions, ...options };\n\n const path = buildLockFilePath(key);\n const packageName = env.npm_package_name;\n const info = [...(packageName ? ['for', packageName] : []), 'at', path].join(' ');\n\n const unlock = () => rmSync(path, { force: true });\n\n while (true) {\n let lockError;\n\n try {\n await mkdir(directory, { recursive: true });\n const handle = await open(path, constants.O_CREAT | constants.O_EXCL);\n await handle.close();\n break;\n } catch (error: unknown) {\n lockError = error as Error;\n }\n\n let time: Date | undefined;\n\n try {\n time = (await stat(path)).birthtime;\n } catch (_error) {\n // \"Crush\" errors as the lock is unlocked between the `open` and `stat`.\n }\n\n if (time && Date.now() - time.getTime() > timeout) {\n // If the timeout is reached, we assume that the previous run is\n // in a bad state and recover automatically by removing the lock file\n // even when it is actually running still.\n unlock();\n throw new Error(`Timeout waiting for lock file ${info}: ${lockError.message}`);\n }\n\n await delay(interval);\n }\n\n for (const signal of signals) {\n process.addListener(signal, unlock);\n }\n\n console.log(`🔒 Acquired lock ${info}`);\n\n try {\n return await run();\n } finally {\n for (const signal of signals) {\n process.removeListener(signal, unlock);\n }\n\n unlock();\n\n console.log(`🔓 Released lock ${info}`);\n }\n};\n\nexport const lockMany = async <T>(keys: string[], run: () => Promise<T>): Promise<T> =>\n // Sort keys to avoid deadlocks.\n keys.sort().reduce((run, key) => () => lock(key, run), run)();\n"]}
@@ -1,12 +1,12 @@
1
1
  'use strict';
2
2
 
3
- var T3GK7LED_cjs = require('./T3GK7LED.cjs');
4
- var A5X4BLYY_cjs = require('./A5X4BLYY.cjs');
5
- var AIP5GLUJ_cjs = require('./AIP5GLUJ.cjs');
6
- var _2Z4Y2ZR3_cjs = require('./2Z4Y2ZR3.cjs');
7
- var _5GPMTH2I_cjs = require('./5GPMTH2I.cjs');
8
- var VKQ2FF2R_cjs = require('./VKQ2FF2R.cjs');
9
- var _24WEKBY3_cjs = require('./24WEKBY3.cjs');
3
+ var X64VX57C_cjs = require('./X64VX57C.cjs');
4
+ var WFBRUQAF_cjs = require('./WFBRUQAF.cjs');
5
+ var S6PEV2YJ_cjs = require('./S6PEV2YJ.cjs');
6
+ var REVK4LZT_cjs = require('./REVK4LZT.cjs');
7
+ var _4BP4CCPZ_cjs = require('./4BP4CCPZ.cjs');
8
+ var _7WWOPL2K_cjs = require('./7WWOPL2K.cjs');
9
+ var KHVGLVR5_cjs = require('./KHVGLVR5.cjs');
10
10
  var esToolkit = require('es-toolkit');
11
11
  var os = require('os');
12
12
  var path = require('path');
@@ -40,8 +40,8 @@ var process__default = /*#__PURE__*/_interopDefault(process);
40
40
  var semver__namespace = /*#__PURE__*/_interopNamespace(semver);
41
41
 
42
42
  // src/core/tool-executor.ts
43
- _24WEKBY3_cjs.init_cjs_shims();
44
- var getHostUserIds = /* @__PURE__ */ _24WEKBY3_cjs.__name(() => {
43
+ KHVGLVR5_cjs.init_cjs_shims();
44
+ var getHostUserIds = /* @__PURE__ */ KHVGLVR5_cjs.__name(() => {
45
45
  const userInfo = os__default.default.userInfo();
46
46
  if (userInfo.uid === -1 || userInfo.gid === -1) {
47
47
  return void 0;
@@ -57,15 +57,15 @@ zx.$.stdio = [
57
57
  "pipe",
58
58
  process__default.default.stderr
59
59
  ];
60
- var mergeVolumes = /* @__PURE__ */ _24WEKBY3_cjs.__name((defaultVolumes, userVolumes) => esToolkit.uniqBy([
60
+ var mergeVolumes = /* @__PURE__ */ KHVGLVR5_cjs.__name((defaultVolumes, userVolumes) => esToolkit.uniqBy([
61
61
  ...userVolumes,
62
62
  ...defaultVolumes
63
63
  ], (volume) => volume.containerPath), "mergeVolumes");
64
- var resolveVolumePath = /* @__PURE__ */ _24WEKBY3_cjs.__name((volume, workspaceRoot) => volume.type === "host" ? {
64
+ var resolveVolumePath = /* @__PURE__ */ KHVGLVR5_cjs.__name((volume, workspaceRoot) => volume.type === "host" ? {
65
65
  ...volume,
66
66
  hostPath: path__default.default.resolve(workspaceRoot, volume.hostPath.replace(/^~/, os__default.default.homedir()))
67
67
  } : volume, "resolveVolumePath");
68
- var ensureDockerImage = /* @__PURE__ */ _24WEKBY3_cjs.__name(async (imageUri) => {
68
+ var ensureDockerImage = /* @__PURE__ */ KHVGLVR5_cjs.__name(async (imageUri) => {
69
69
  let output;
70
70
  try {
71
71
  output = await zx.$`docker image inspect --format {{.Id}} ${imageUri}`.nothrow().quiet();
@@ -76,7 +76,7 @@ var ensureDockerImage = /* @__PURE__ */ _24WEKBY3_cjs.__name(async (imageUri) =>
76
76
  console.info("\u{1F4E5} Pulling Docker image from:", imageUri);
77
77
  output = await zx.$`docker pull ${imageUri}`.nothrow();
78
78
  } catch (error) {
79
- throw new Error(`Failed to pull Docker image ${imageUri}: ${T3GK7LED_cjs.stringifyError(error)}`);
79
+ throw new Error(`Failed to pull Docker image ${imageUri}: ${X64VX57C_cjs.stringifyError(error)}`);
80
80
  }
81
81
  if (output.exitCode) {
82
82
  const stderr = output.stderr ?? "";
@@ -90,7 +90,7 @@ var ensureDockerImage = /* @__PURE__ */ _24WEKBY3_cjs.__name(async (imageUri) =>
90
90
  console.info(`\u2705 Successfully pulled: ${imageUri}`);
91
91
  }, "ensureDockerImage");
92
92
  async function executeToolCommand(context, toolName, args, { cwd, volumes: userVolumes, customEntrypoint: entrypoint, env: customEnvVars, script, publish, versions = {}, defaultVolumesEnabled = true }) {
93
- const tool = _5GPMTH2I_cjs.findToolByName(context, toolName);
93
+ const tool = _4BP4CCPZ_cjs.findToolByName(context, toolName);
94
94
  if (tool.preExecute) {
95
95
  await tool.preExecute(context, {
96
96
  cwd,
@@ -103,9 +103,9 @@ async function executeToolCommand(context, toolName, args, { cwd, volumes: userV
103
103
  defaultVolumesEnabled
104
104
  });
105
105
  }
106
- const workspaceRoot = await _2Z4Y2ZR3_cjs.findWorkspaceRoot(cwd);
106
+ const workspaceRoot = await REVK4LZT_cjs.findWorkspaceRoot(cwd);
107
107
  const defaultVolumes = defaultVolumesEnabled ? tool.defaultVolumes ?? [] : [];
108
- const volumes = mergeVolumes(defaultVolumes, userVolumes).map((volume) => resolveVolumePath(volume, workspaceRoot)).map(AIP5GLUJ_cjs.qualifyVolumeName);
108
+ const volumes = mergeVolumes(defaultVolumes, userVolumes).map((volume) => resolveVolumePath(volume, workspaceRoot)).map(S6PEV2YJ_cjs.qualifyVolumeName);
109
109
  if (defaultVolumes.length > 0) {
110
110
  console.info(`\u{1F4E6} Using ${defaultVolumes.length} default volume(s) for ${tool.name}`);
111
111
  if (userVolumes.length > 0) {
@@ -115,7 +115,7 @@ async function executeToolCommand(context, toolName, args, { cwd, volumes: userV
115
115
  }
116
116
  }
117
117
  }
118
- const resolvedVersion = A5X4BLYY_cjs.resolveTypeVersions(context, versions)[tool.name];
118
+ const resolvedVersion = WFBRUQAF_cjs.resolveTypeVersions(context, versions)[tool.name];
119
119
  if (!resolvedVersion) {
120
120
  throw new Error(`No version resolved for tool ${tool.name}`);
121
121
  }
@@ -129,10 +129,10 @@ async function executeToolCommand(context, toolName, args, { cwd, volumes: userV
129
129
  console.warn(`Warning: Local configuration version (${secondaryVersion}) differs from resolved version (${resolvedVersion})`);
130
130
  }
131
131
  } catch (error) {
132
- console.warn("Could not validate secondary version:", T3GK7LED_cjs.stringifyError(error));
132
+ console.warn("Could not validate secondary version:", X64VX57C_cjs.stringifyError(error));
133
133
  }
134
134
  }
135
- const imageUri = await AIP5GLUJ_cjs.getImageUriForTool(context, tool.name, resolvedVersion);
135
+ const imageUri = await S6PEV2YJ_cjs.getImageUriForTool(context, tool.name, resolvedVersion);
136
136
  const relativePath = path__default.default.relative(workspaceRoot, cwd);
137
137
  await ensureDockerImage(imageUri);
138
138
  if (entrypoint?.trim()) {
@@ -214,7 +214,7 @@ async function executeToolCommand(context, toolName, args, { cwd, volumes: userV
214
214
  imageUri,
215
215
  ...finalArgs
216
216
  ];
217
- const output = await VKQ2FF2R_cjs.lockMany(volumes.flatMap((volume) => volume.type === "isolate" && volume.locked ? [
217
+ const output = await _7WWOPL2K_cjs.lockMany(volumes.flatMap((volume) => volume.type === "isolate" && volume.locked ? [
218
218
  volume.name
219
219
  ] : []), async () => {
220
220
  const label = `\u23F3 ${finalArgs.join(" ")}`;
@@ -230,8 +230,8 @@ ${stdout}` : ""}`);
230
230
  }
231
231
  return output;
232
232
  }
233
- _24WEKBY3_cjs.__name(executeToolCommand, "executeToolCommand");
233
+ KHVGLVR5_cjs.__name(executeToolCommand, "executeToolCommand");
234
234
 
235
235
  exports.executeToolCommand = executeToolCommand;
236
- //# sourceMappingURL=AWXMRCLV.cjs.map
237
- //# sourceMappingURL=AWXMRCLV.cjs.map
236
+ //# sourceMappingURL=56KN6KX2.cjs.map
237
+ //# sourceMappingURL=56KN6KX2.cjs.map