@layerzerolabs/vm-tooling 0.2.103 → 0.2.104

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 (49) hide show
  1. package/dist/{P4BHRQMD.js → 2MO4PR4P.js} +2 -2
  2. package/dist/2MO4PR4P.js.map +1 -0
  3. package/dist/{ZSOVVFOM.js → 3IQB2ZZF.js} +3 -3
  4. package/dist/{ZSOVVFOM.js.map → 3IQB2ZZF.js.map} +1 -1
  5. package/dist/5PWUQUE5.js +18363 -0
  6. package/dist/5PWUQUE5.js.map +1 -0
  7. package/dist/HC7LYTHL.js +53 -0
  8. package/dist/HC7LYTHL.js.map +1 -0
  9. package/dist/{BJUOU4DR.js → HOFCGMNS.js} +2 -2
  10. package/dist/{BJUOU4DR.js.map → HOFCGMNS.js.map} +1 -1
  11. package/dist/{JYJBE36S.js → INYD2E56.js} +26 -17
  12. package/dist/INYD2E56.js.map +1 -0
  13. package/dist/{AXL4SBDJ.js → RVVZQC34.js} +3 -3
  14. package/dist/{AXL4SBDJ.js.map → RVVZQC34.js.map} +1 -1
  15. package/dist/{6V27P6AU.js → SQYDOF2V.js} +3 -3
  16. package/dist/{6V27P6AU.js.map → SQYDOF2V.js.map} +1 -1
  17. package/dist/{BTPRTHPR.js → TMKE5ARZ.js} +3 -3
  18. package/dist/{BTPRTHPR.js.map → TMKE5ARZ.js.map} +1 -1
  19. package/dist/{UQGPF6NC.js → TSEHDOF7.js} +5 -5
  20. package/dist/TSEHDOF7.js.map +1 -0
  21. package/dist/cli.d.ts.map +1 -1
  22. package/dist/cli.js +7 -6
  23. package/dist/config.d.ts +3 -0
  24. package/dist/config.d.ts.map +1 -1
  25. package/dist/config.js +1 -1
  26. package/dist/core/index.d.ts +1 -0
  27. package/dist/core/index.d.ts.map +1 -1
  28. package/dist/core/index.js +6 -5
  29. package/dist/core/local-executor.d.ts +11 -0
  30. package/dist/core/local-executor.d.ts.map +1 -0
  31. package/dist/core/local-executor.js +4 -0
  32. package/dist/core/local-executor.js.map +1 -0
  33. package/dist/core/local-executor.test.js +110 -0
  34. package/dist/core/local-executor.test.js.map +1 -0
  35. package/dist/core/lock.test.js +2 -18360
  36. package/dist/core/lock.test.js.map +1 -1
  37. package/dist/core/tool-executor.d.ts +2 -1
  38. package/dist/core/tool-executor.d.ts.map +1 -1
  39. package/dist/core/tool-executor.js +5 -4
  40. package/dist/github/index.js +4 -4
  41. package/dist/github/matrix.js +3 -3
  42. package/dist/index.js +10 -9
  43. package/dist/index.js.map +1 -1
  44. package/dist/test.js +3 -3
  45. package/dist/utils/docker.js +2 -2
  46. package/package.json +5 -5
  47. package/dist/JYJBE36S.js.map +0 -1
  48. package/dist/P4BHRQMD.js.map +0 -1
  49. package/dist/UQGPF6NC.js.map +0 -1
@@ -0,0 +1,53 @@
1
+ import { init_esm_shims, __name } from './CWKWODSW.js';
2
+ import process from 'process';
3
+ import { $ } from 'zx';
4
+
5
+ // src/core/local-executor.ts
6
+ init_esm_shims();
7
+ var executeLocally = /* @__PURE__ */ __name(async (tool, resolvedVersion, { cwd, args, env, script }) => {
8
+ if (!tool.getLocalVersion) {
9
+ throw new Error(`Local execution is not supported for ${tool.name}`);
10
+ }
11
+ const localVersion = await tool.getLocalVersion({
12
+ cwd
13
+ });
14
+ if (resolvedVersion !== localVersion) {
15
+ throw new Error(`Local ${tool.name} version (${localVersion}) does not match the required version (${resolvedVersion})`);
16
+ }
17
+ console.info(`\u{1F5A5}\uFE0F Using local ${tool.name} ${localVersion}`);
18
+ const commandLine = script?.trim() ? [
19
+ "bash",
20
+ "-c",
21
+ script
22
+ ] : [
23
+ tool.name,
24
+ ...args
25
+ ];
26
+ const label = `\u23F3 ${commandLine.join(" ")}`;
27
+ console.time(label);
28
+ const output = await $({
29
+ cwd,
30
+ env: {
31
+ ...process.env,
32
+ ...Object.fromEntries((tool.defaultEnv ?? []).map(({ name, value }) => [
33
+ name,
34
+ value
35
+ ])),
36
+ ...Object.fromEntries(env.map(({ name, value }) => [
37
+ name,
38
+ value
39
+ ]))
40
+ }
41
+ })`${commandLine}`.nothrow();
42
+ console.timeEnd(label);
43
+ if (output.exitCode !== 0) {
44
+ const stdout = output.stdout.trim();
45
+ throw new Error(`Failed to run local ${tool.name} (exit code: ${output.exitCode})${stdout ? `
46
+ ${stdout}` : ""}`);
47
+ }
48
+ return output;
49
+ }, "executeLocally");
50
+
51
+ export { executeLocally };
52
+ //# sourceMappingURL=HC7LYTHL.js.map
53
+ //# sourceMappingURL=HC7LYTHL.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/core/local-executor.ts"],"names":["executeLocally","tool","resolvedVersion","cwd","args","env","script","getLocalVersion","Error","name","localVersion","console","info","commandLine","trim","label","join","time","output","$","process","Object","fromEntries","defaultEnv","map","value","nothrow","timeEnd","exitCode","stdout"],"mappings":";;;;;AAAA,cAAA,EAAA;AAYO,IAAMA,cAAAA,iCACTC,IAAAA,EACAC,eAAAA,EACA,EAAEC,GAAAA,EAAKC,IAAAA,EAAMC,GAAAA,EAAKC,MAAAA,EAAM,KAAyB;AAEjD,EAAA,IAAI,CAACL,KAAKM,eAAAA,EAAiB;AACvB,IAAA,MAAM,IAAIC,KAAAA,CAAM,CAAA,qCAAA,EAAwCP,IAAAA,CAAKQ,IAAI,CAAA,CAAE,CAAA;AACvE,EAAA;AAEA,EAAA,MAAMC,YAAAA,GAAe,MAAMT,IAAAA,CAAKM,eAAAA,CAAgB;AAAEJ,IAAAA;GAAI,CAAA;AAEtD,EAAA,IAAID,oBAAoBQ,YAAAA,EAAc;AAClC,IAAA,MAAM,IAAIF,MACN,CAAA,MAAA,EAASP,IAAAA,CAAKQ,IAAI,CAAA,UAAA,EAAaC,YAAAA,CAAAA,uCAAAA,EAAsDR,eAAAA,CAAAA,CAAAA,CAAkB,CAAA;AAE/G,EAAA;AAEAS,EAAAA,OAAAA,CAAQC,KAAK,CAAA,6BAAA,EAAoBX,IAAAA,CAAKQ,IAAI,CAAA,CAAA,EAAIC,YAAAA,CAAAA,CAAc,CAAA;AAE5D,EAAA,MAAMG,WAAAA,GAAcP,MAAAA,EAAQQ,IAAAA,EAAAA,GAAS;AAAC,IAAA,MAAA;AAAQ,IAAA,IAAA;AAAMR,IAAAA;AAAU,GAAA,GAAA;IAACL,IAAAA,CAAKQ,IAAAA;AAASL,IAAAA,GAAAA;;AAE7E,EAAA,MAAMW,KAAAA,GAAQ,CAAA,OAAA,EAAKF,WAAAA,CAAYG,IAAAA,CAAK,GAAA,CAAA,CAAA,CAAA;AACpCL,EAAAA,OAAAA,CAAQM,KAAKF,KAAAA,CAAAA;AACb,EAAA,MAAMG,MAAAA,GAAS,MAAMC,CAAAA,CAAE;AACnBhB,IAAAA,GAAAA;IACAE,GAAAA,EAAK;AACD,MAAA,GAAGe,OAAAA,CAAQf,GAAAA;MACX,GAAGgB,MAAAA,CAAOC,WAAAA,CAAAA,CAAarB,IAAAA,CAAKsB,UAAAA,IAAc,EAAA,EAAIC,GAAAA,CAAI,CAAC,EAAEf,IAAAA,EAAMgB,KAAAA,EAAK,KAAO;AAAChB,QAAAA,IAAAA;AAAMgB,QAAAA;OAAM,CAAA,CAAA;MACpF,GAAGJ,MAAAA,CAAOC,YAAYjB,GAAAA,CAAImB,GAAAA,CAAI,CAAC,EAAEf,IAAAA,EAAMgB,OAAK,KAAO;AAAChB,QAAAA,IAAAA;AAAMgB,QAAAA;OAAM,CAAA;AACpE;GACJ,CAAA,CAAA,EAAKZ,WAAAA,CAAAA,CAAAA,CAAca,OAAAA,EAAO;AAC1Bf,EAAAA,OAAAA,CAAQgB,QAAQZ,KAAAA,CAAAA;AAEhB,EAAA,IAAIG,MAAAA,CAAOU,aAAa,CAAA,EAAG;AACvB,IAAA,MAAMC,MAAAA,GAASX,MAAAA,CAAOW,MAAAA,CAAOf,IAAAA,EAAI;AAEjC,IAAA,MAAM,IAAIN,MACN,CAAA,oBAAA,EAAuBP,IAAAA,CAAKQ,IAAI,CAAA,aAAA,EAAgBS,MAAAA,CAAOU,QAAQ,CAAA,CAAA,EAAIC,MAAAA,GAAS;EAAKA,MAAAA,CAAAA,CAAAA,GAAW,EAAA,CAAA,CAAI,CAAA;AAExG,EAAA;AAEA,EAAA,OAAOX,MAAAA;AACX,CAAA,EA1C8B,gBAAA","file":"HC7LYTHL.js","sourcesContent":["import process from 'node:process';\nimport { $, type ProcessOutput } from 'zx';\n\nimport type { EnvironmentVariable, Tool } from '../config';\n\ninterface LocalExecutionOptions {\n cwd: string;\n args: string[];\n env: readonly EnvironmentVariable[];\n script?: string;\n}\n\nexport const executeLocally = async (\n tool: Tool,\n resolvedVersion: string,\n { cwd, args, env, script }: LocalExecutionOptions,\n): Promise<ProcessOutput> => {\n if (!tool.getLocalVersion) {\n throw new Error(`Local execution is not supported for ${tool.name}`);\n }\n\n const localVersion = await tool.getLocalVersion({ cwd });\n\n if (resolvedVersion !== localVersion) {\n throw new Error(\n `Local ${tool.name} version (${localVersion}) does not match the required version (${resolvedVersion})`,\n );\n }\n\n console.info(`🖥️ Using local ${tool.name} ${localVersion}`);\n\n const commandLine = script?.trim() ? ['bash', '-c', script] : [tool.name, ...args];\n\n const label = `⏳ ${commandLine.join(' ')}`;\n console.time(label);\n const output = await $({\n cwd,\n env: {\n ...process.env,\n ...Object.fromEntries((tool.defaultEnv ?? []).map(({ name, value }) => [name, value])),\n ...Object.fromEntries(env.map(({ name, value }) => [name, value])),\n },\n })`${commandLine}`.nothrow();\n console.timeEnd(label);\n\n if (output.exitCode !== 0) {\n const stdout = output.stdout.trim();\n\n throw new Error(\n `Failed to run local ${tool.name} (exit code: ${output.exitCode})${stdout ? `\\n${stdout}` : ''}`,\n );\n }\n\n return output;\n};\n"]}
@@ -49,5 +49,5 @@ var getImageDirectory = /* @__PURE__ */ __name(async () => (await getRegistryCon
49
49
  var getRegistry = /* @__PURE__ */ __name(async () => (await getRegistryConfig()).registry, "getRegistry");
50
50
 
51
51
  export { DockerRegistryMirror, getImageDirectory, getRegistry, volumeMappingSchema };
52
- //# sourceMappingURL=BJUOU4DR.js.map
53
- //# sourceMappingURL=BJUOU4DR.js.map
52
+ //# sourceMappingURL=HOFCGMNS.js.map
53
+ //# sourceMappingURL=HOFCGMNS.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/config.ts"],"names":["registryConfigCache","getRegistryConfig","envRegistry","process","env","VM_TOOLING_REGISTRY","envImageDirectory","VM_TOOLING_IMAGE_DIRECTORY","registry","imageDirectory","workspaceRoot","getFullyQualifiedRepoRootPath","configPath","join","module","default","volumeMappingBaseSchema","object","containerPath","string","hostVolumeMappingSchema","extend","type","literal","hostPath","isolateVolumeMappingSchema","name","shared","optional","boolean","locked","volumeMappingSchema","union","DockerRegistryMirror","getImageDirectory","getRegistry"],"mappings":";;;;;;AAAA,cAAA,EAAA;AAaA,IAAIA,mBAAAA;AAEJ,IAAMC,oCAAoB,MAAA,CAAA,YAAA;AACtB,EAAA,IAAI,CAACD,mBAAAA,EAAqB;AACtB,IAAA,MAAME,WAAAA,GAAcC,QAAQC,GAAAA,CAAIC,mBAAAA;AAChC,IAAA,MAAMC,iBAAAA,GAAoBH,QAAQC,GAAAA,CAAIG,0BAAAA;AAEtC,IAAA,IAAIL,eAAeI,iBAAAA,EAAmB;AAClCN,MAAAA,mBAAAA,GAAsB;QAAEQ,QAAAA,EAAUN,WAAAA;QAAaO,cAAAA,EAAgBH;AAAkB,OAAA;IACrF,CAAA,MAAO;AACH,MAAA,MAAMI,aAAAA,GAAgB,MAAMC,6BAAAA,EAAAA;AAC5B,MAAA,MAAMC,aAAaC,IAAAA,CACfH,aAAAA,EACA,SAAA,EACA,YAAA,EACA,UACA,sBAAA,CAAA;AAGJ,MAAA,MAAMI,MAAAA,GAAS,MAAM,OAAOF,UAAAA,CAAAA;AAC5BZ,MAAAA,mBAAAA,GAAsBc,MAAAA,CAAOC,OAAAA;AACjC,IAAA;AACJ,EAAA;AACA,EAAA,OAAOf,mBAAAA;AACX,CAAA,EAtB0B,mBAAA,CAAA;AAwB1B,IAAMgB,0BAA4BC,CAAAA,CAAAA,MAAAA,CAAO;AACrCC,EAAAA,aAAAA,EAAiBC,CAAAA,CAAAA,MAAAA;AACrB,CAAA,CAAA;AAEA,IAAMC,uBAAAA,GAA0BJ,wBAAwBK,MAAAA,CAAO;AAC3DC,EAAAA,IAAAA,EAAQC,UAAQ,MAAA,CAAA;AAChBC,EAAAA,QAAAA,EAAYL,CAAAA,CAAAA,MAAAA;AAChB,CAAA,CAAA;AAEA,IAAMM,0BAAAA,GAA6BT,wBAAwBK,MAAAA,CAAO;AAC9DC,EAAAA,IAAAA,EAAQC,UAAQ,SAAA,CAAA;AAChBG,EAAAA,IAAAA,EAAQP,CAAAA,CAAAA,MAAAA,EAAM;EACdQ,MAAAA,EAAUC,CAAAA,CAAAA,QAAAA,CAAWC,WAAO,CAAA;EAC5BC,MAAAA,EAAUF,CAAAA,CAAAA,QAAAA,CAAWC,WAAO;AAChC,CAAA,CAAA;AAEO,IAAME,sBAAwBC,CAAAA,CAAAA,KAAAA,CAAM;AAACZ,EAAAA,uBAAAA;AAAyBK,EAAAA;AAA2B,CAAA;AA6BzF,IAAKQ,oBAAAA,6BAAAA,qBAAAA,EAAAA;;AAAAA,EAAAA,OAAAA,qBAAAA;;AAkBL,IAAMC,iBAAAA,mBAAoB,MAAA,CAAA,YAAA,CAAa,MAAMjC,iBAAAA,IAAqBQ,cAAAA,EAAxC,mBAAA;AAC1B,IAAM0B,WAAAA,mBAAc,MAAA,CAAA,YAAA,CAAa,MAAMlC,iBAAAA,IAAqBO,QAAAA,EAAxC,aAAA","file":"BJUOU4DR.js","sourcesContent":["import { join } from 'node:path';\nimport * as z from 'zod';\n\nimport { getFullyQualifiedRepoRootPath } from '@layerzerolabs/common-node-utils';\n\nimport type { ChainContext } from './context';\nimport type { ToolCommandExecutionOptions } from './core/tool-executor';\n\ninterface RegistryConfig {\n registry: string;\n imageDirectory: string;\n}\n\nlet registryConfigCache: RegistryConfig | undefined;\n\nconst getRegistryConfig = async (): Promise<RegistryConfig> => {\n if (!registryConfigCache) {\n const envRegistry = process.env.VM_TOOLING_REGISTRY;\n const envImageDirectory = process.env.VM_TOOLING_IMAGE_DIRECTORY;\n\n if (envRegistry && envImageDirectory) {\n registryConfigCache = { registry: envRegistry, imageDirectory: envImageDirectory };\n } else {\n const workspaceRoot = await getFullyQualifiedRepoRootPath();\n const configPath = join(\n workspaceRoot,\n 'configs',\n 'vm-tooling',\n 'values',\n 'docker-image-repo.ts',\n );\n\n const module = await import(configPath);\n registryConfigCache = module.default;\n }\n }\n return registryConfigCache!;\n};\n\nconst volumeMappingBaseSchema = z.object({\n containerPath: z.string(),\n});\n\nconst hostVolumeMappingSchema = volumeMappingBaseSchema.extend({\n type: z.literal('host'),\n hostPath: z.string(),\n});\n\nconst isolateVolumeMappingSchema = volumeMappingBaseSchema.extend({\n type: z.literal('isolate'),\n name: z.string(),\n shared: z.optional(z.boolean()),\n locked: z.optional(z.boolean()),\n});\n\nexport const volumeMappingSchema = z.union([hostVolumeMappingSchema, isolateVolumeMappingSchema]);\n\nexport type VolumeMapping = z.infer<typeof volumeMappingSchema>;\n\nexport interface EnvironmentVariable {\n name: string;\n value: string;\n}\n\nexport interface Tool {\n name: string;\n privileged?: boolean;\n\n // Default isolate volumes for caching (user volumes can override these)\n defaultVolumes?: readonly VolumeMapping[];\n\n // Default environment variables (user env vars can override these)\n defaultEnv?: readonly EnvironmentVariable[];\n\n // Optional version parsing and validation functions\n getSecondaryVersion?: (args: { cwd: string }) => Promise<string>;\n\n // Optional hook called before every tool command execution (e.g., toolchain sync)\n preExecute?: (\n context: ChainContext<string>,\n options: ToolCommandExecutionOptions,\n ) => Promise<void>;\n}\n\nexport enum DockerRegistryMirror {\n PUBLIC_GAR = 'public-gar',\n}\n\nexport interface Image {\n name: string;\n versions: Record<string, string>;\n dependencies?: Record<string, string>;\n patch?: number;\n mirrorRegistries?: DockerRegistryMirror[];\n}\n\nexport interface VersionCombination<TImageId> {\n images: Record<string, TImageId>;\n description?: string;\n stable?: boolean;\n}\n\nexport const getImageDirectory = async () => (await getRegistryConfig()).imageDirectory;\nexport const getRegistry = async () => (await getRegistryConfig()).registry;\n"]}
1
+ {"version":3,"sources":["../src/config.ts"],"names":["registryConfigCache","getRegistryConfig","envRegistry","process","env","VM_TOOLING_REGISTRY","envImageDirectory","VM_TOOLING_IMAGE_DIRECTORY","registry","imageDirectory","workspaceRoot","getFullyQualifiedRepoRootPath","configPath","join","module","default","volumeMappingBaseSchema","object","containerPath","string","hostVolumeMappingSchema","extend","type","literal","hostPath","isolateVolumeMappingSchema","name","shared","optional","boolean","locked","volumeMappingSchema","union","DockerRegistryMirror","getImageDirectory","getRegistry"],"mappings":";;;;;;AAAA,cAAA,EAAA;AAaA,IAAIA,mBAAAA;AAEJ,IAAMC,oCAAoB,MAAA,CAAA,YAAA;AACtB,EAAA,IAAI,CAACD,mBAAAA,EAAqB;AACtB,IAAA,MAAME,WAAAA,GAAcC,QAAQC,GAAAA,CAAIC,mBAAAA;AAChC,IAAA,MAAMC,iBAAAA,GAAoBH,QAAQC,GAAAA,CAAIG,0BAAAA;AAEtC,IAAA,IAAIL,eAAeI,iBAAAA,EAAmB;AAClCN,MAAAA,mBAAAA,GAAsB;QAAEQ,QAAAA,EAAUN,WAAAA;QAAaO,cAAAA,EAAgBH;AAAkB,OAAA;IACrF,CAAA,MAAO;AACH,MAAA,MAAMI,aAAAA,GAAgB,MAAMC,6BAAAA,EAAAA;AAC5B,MAAA,MAAMC,aAAaC,IAAAA,CACfH,aAAAA,EACA,SAAA,EACA,YAAA,EACA,UACA,sBAAA,CAAA;AAGJ,MAAA,MAAMI,MAAAA,GAAS,MAAM,OAAOF,UAAAA,CAAAA;AAC5BZ,MAAAA,mBAAAA,GAAsBc,MAAAA,CAAOC,OAAAA;AACjC,IAAA;AACJ,EAAA;AACA,EAAA,OAAOf,mBAAAA;AACX,CAAA,EAtB0B,mBAAA,CAAA;AAwB1B,IAAMgB,0BAA4BC,CAAAA,CAAAA,MAAAA,CAAO;AACrCC,EAAAA,aAAAA,EAAiBC,CAAAA,CAAAA,MAAAA;AACrB,CAAA,CAAA;AAEA,IAAMC,uBAAAA,GAA0BJ,wBAAwBK,MAAAA,CAAO;AAC3DC,EAAAA,IAAAA,EAAQC,UAAQ,MAAA,CAAA;AAChBC,EAAAA,QAAAA,EAAYL,CAAAA,CAAAA,MAAAA;AAChB,CAAA,CAAA;AAEA,IAAMM,0BAAAA,GAA6BT,wBAAwBK,MAAAA,CAAO;AAC9DC,EAAAA,IAAAA,EAAQC,UAAQ,SAAA,CAAA;AAChBG,EAAAA,IAAAA,EAAQP,CAAAA,CAAAA,MAAAA,EAAM;EACdQ,MAAAA,EAAUC,CAAAA,CAAAA,QAAAA,CAAWC,WAAO,CAAA;EAC5BC,MAAAA,EAAUF,CAAAA,CAAAA,QAAAA,CAAWC,WAAO;AAChC,CAAA,CAAA;AAEO,IAAME,sBAAwBC,CAAAA,CAAAA,KAAAA,CAAM;AAACZ,EAAAA,uBAAAA;AAAyBK,EAAAA;AAA2B,CAAA;AA+BzF,IAAKQ,oBAAAA,6BAAAA,qBAAAA,EAAAA;;AAAAA,EAAAA,OAAAA,qBAAAA;;AAkBL,IAAMC,iBAAAA,mBAAoB,MAAA,CAAA,YAAA,CAAa,MAAMjC,iBAAAA,IAAqBQ,cAAAA,EAAxC,mBAAA;AAC1B,IAAM0B,WAAAA,mBAAc,MAAA,CAAA,YAAA,CAAa,MAAMlC,iBAAAA,IAAqBO,QAAAA,EAAxC,aAAA","file":"HOFCGMNS.js","sourcesContent":["import { join } from 'node:path';\nimport * as z from 'zod';\n\nimport { getFullyQualifiedRepoRootPath } from '@layerzerolabs/common-node-utils';\n\nimport type { ChainContext } from './context';\nimport type { ToolCommandExecutionOptions } from './core/tool-executor';\n\ninterface RegistryConfig {\n registry: string;\n imageDirectory: string;\n}\n\nlet registryConfigCache: RegistryConfig | undefined;\n\nconst getRegistryConfig = async (): Promise<RegistryConfig> => {\n if (!registryConfigCache) {\n const envRegistry = process.env.VM_TOOLING_REGISTRY;\n const envImageDirectory = process.env.VM_TOOLING_IMAGE_DIRECTORY;\n\n if (envRegistry && envImageDirectory) {\n registryConfigCache = { registry: envRegistry, imageDirectory: envImageDirectory };\n } else {\n const workspaceRoot = await getFullyQualifiedRepoRootPath();\n const configPath = join(\n workspaceRoot,\n 'configs',\n 'vm-tooling',\n 'values',\n 'docker-image-repo.ts',\n );\n\n const module = await import(configPath);\n registryConfigCache = module.default;\n }\n }\n return registryConfigCache!;\n};\n\nconst volumeMappingBaseSchema = z.object({\n containerPath: z.string(),\n});\n\nconst hostVolumeMappingSchema = volumeMappingBaseSchema.extend({\n type: z.literal('host'),\n hostPath: z.string(),\n});\n\nconst isolateVolumeMappingSchema = volumeMappingBaseSchema.extend({\n type: z.literal('isolate'),\n name: z.string(),\n shared: z.optional(z.boolean()),\n locked: z.optional(z.boolean()),\n});\n\nexport const volumeMappingSchema = z.union([hostVolumeMappingSchema, isolateVolumeMappingSchema]);\n\nexport type VolumeMapping = z.infer<typeof volumeMappingSchema>;\n\nexport interface EnvironmentVariable {\n name: string;\n value: string;\n}\n\nexport interface Tool {\n name: string;\n privileged?: boolean;\n\n // Default isolate volumes for caching (user volumes can override these)\n defaultVolumes?: readonly VolumeMapping[];\n\n // Default environment variables (user env vars can override these)\n defaultEnv?: readonly EnvironmentVariable[];\n\n // Optional version parsing and validation functions\n getSecondaryVersion?: (args: { cwd: string }) => Promise<string>;\n\n getLocalVersion?: (args: { cwd: string }) => Promise<string>;\n\n // Optional hook called before every tool command execution (e.g., toolchain sync)\n preExecute?: (\n context: ChainContext<string>,\n options: ToolCommandExecutionOptions,\n ) => Promise<void>;\n}\n\nexport enum DockerRegistryMirror {\n PUBLIC_GAR = 'public-gar',\n}\n\nexport interface Image {\n name: string;\n versions: Record<string, string>;\n dependencies?: Record<string, string>;\n patch?: number;\n mirrorRegistries?: DockerRegistryMirror[];\n}\n\nexport interface VersionCombination<TImageId> {\n images: Record<string, TImageId>;\n description?: string;\n stable?: boolean;\n}\n\nexport const getImageDirectory = async () => (await getRegistryConfig()).imageDirectory;\nexport const getRegistry = async () => (await getRegistryConfig()).registry;\n"]}
@@ -1,9 +1,10 @@
1
1
  import { stringifyError } from './2XGBQPKA.js';
2
+ import { lockMany } from './4SFAVHVD.js';
2
3
  import { resolveTypeVersions } from './6L6NUQMM.js';
3
- import { qualifyVolumeName, getImageUriForTool } from './AXL4SBDJ.js';
4
+ import { qualifyVolumeName, getImageUriForTool } from './RVVZQC34.js';
4
5
  import { findWorkspaceRoot } from './UBUQDI5Q.js';
5
6
  import { findToolByName } from './3XEUJAQB.js';
6
- import { lockMany } from './4SFAVHVD.js';
7
+ import { executeLocally } from './HC7LYTHL.js';
7
8
  import { init_esm_shims, __name } from './CWKWODSW.js';
8
9
  import { uniqBy } from 'es-toolkit';
9
10
  import os from 'os';
@@ -62,7 +63,7 @@ var ensureDockerImage = /* @__PURE__ */ __name(async (imageUri) => {
62
63
  }
63
64
  console.info(`\u2705 Successfully pulled: ${imageUri}`);
64
65
  }, "ensureDockerImage");
65
- async function executeToolCommand(context, toolName, args, { cwd, volumes: userVolumes, customEntrypoint: entrypoint, env: customEnvVars, script, publish, versions = {}, defaultVolumesEnabled = true }) {
66
+ async function executeToolCommand(context, toolName, args, { cwd, volumes: userVolumes, customEntrypoint: entrypoint, env: customEnvVars, script, publish, versions = {}, defaultVolumesEnabled = true, local }) {
66
67
  const tool = findToolByName(context, toolName);
67
68
  if (tool.preExecute) {
68
69
  await tool.preExecute(context, {
@@ -76,18 +77,6 @@ async function executeToolCommand(context, toolName, args, { cwd, volumes: userV
76
77
  defaultVolumesEnabled
77
78
  });
78
79
  }
79
- const workspaceRoot = await findWorkspaceRoot(cwd);
80
- const defaultVolumes = defaultVolumesEnabled ? tool.defaultVolumes ?? [] : [];
81
- const volumes = mergeVolumes(defaultVolumes, userVolumes).map((volume) => resolveVolumePath(volume, workspaceRoot)).map(qualifyVolumeName);
82
- if (defaultVolumes.length > 0) {
83
- console.info(`\u{1F4E6} Using ${defaultVolumes.length} default volume(s) for ${tool.name}`);
84
- if (userVolumes.length > 0) {
85
- const overrides = userVolumes.filter((uv) => defaultVolumes.some((dv) => dv.containerPath === uv.containerPath));
86
- if (overrides.length > 0) {
87
- console.info(`\u{1F527} User volumes override ${overrides.length} default volume(s)`);
88
- }
89
- }
90
- }
91
80
  const resolvedVersion = resolveTypeVersions(context, versions)[tool.name];
92
81
  if (!resolvedVersion) {
93
82
  throw new Error(`No version resolved for tool ${tool.name}`);
@@ -105,6 +94,26 @@ async function executeToolCommand(context, toolName, args, { cwd, volumes: userV
105
94
  console.warn("Could not validate secondary version:", stringifyError(error));
106
95
  }
107
96
  }
97
+ if (local) {
98
+ return executeLocally(tool, resolvedVersion, {
99
+ cwd,
100
+ args,
101
+ env: customEnvVars,
102
+ script
103
+ });
104
+ }
105
+ const workspaceRoot = await findWorkspaceRoot(cwd);
106
+ const defaultVolumes = defaultVolumesEnabled ? tool.defaultVolumes ?? [] : [];
107
+ const volumes = mergeVolumes(defaultVolumes, userVolumes).map((volume) => resolveVolumePath(volume, workspaceRoot)).map(qualifyVolumeName);
108
+ if (defaultVolumes.length > 0) {
109
+ console.info(`\u{1F4E6} Using ${defaultVolumes.length} default volume(s) for ${tool.name}`);
110
+ if (userVolumes.length > 0) {
111
+ const overrides = userVolumes.filter((userVolume) => defaultVolumes.some((defaultVolume) => defaultVolume.containerPath === userVolume.containerPath));
112
+ if (overrides.length > 0) {
113
+ console.info(`\u{1F527} User volumes override ${overrides.length} default volume(s)`);
114
+ }
115
+ }
116
+ }
108
117
  const imageUri = await getImageUriForTool(context, tool.name, resolvedVersion);
109
118
  const relativePath = path.relative(workspaceRoot, cwd);
110
119
  await ensureDockerImage(imageUri);
@@ -206,5 +215,5 @@ ${stdout}` : ""}`);
206
215
  __name(executeToolCommand, "executeToolCommand");
207
216
 
208
217
  export { executeToolCommand };
209
- //# sourceMappingURL=JYJBE36S.js.map
210
- //# sourceMappingURL=JYJBE36S.js.map
218
+ //# sourceMappingURL=INYD2E56.js.map
219
+ //# sourceMappingURL=INYD2E56.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/core/tool-executor.ts"],"names":["getHostUserIds","userInfo","os","uid","gid","undefined","$","verbose","stdio","process","stderr","mergeVolumes","defaultVolumes","userVolumes","uniqBy","volume","containerPath","resolveVolumePath","workspaceRoot","type","hostPath","path","resolve","replace","homedir","ensureDockerImage","imageUri","output","nothrow","quiet","exitCode","console","info","error","Error","stringifyError","isAuthError","includes","join","executeToolCommand","context","toolName","args","cwd","volumes","customEntrypoint","entrypoint","env","customEnvVars","script","publish","versions","defaultVolumesEnabled","local","tool","findToolByName","preExecute","resolvedVersion","resolveTypeVersions","name","getSecondaryVersion","secondaryVersion","satisfies","warn","executeLocally","findWorkspaceRoot","map","qualifyVolumeName","length","overrides","filter","userVolume","some","defaultVolume","getImageUriForTool","relativePath","relative","trim","defaultEnv","hasDockerSocketMount","dockerSocketEnv","value","envArgs","flatMap","hostUserIds","userIdEnvArgs","finalArgs","dockerArgs","privileged","p","lockMany","locked","label","time","result","timeEnd","stdout"],"mappings":";;;;;;;;;;;;;;;;AAAA,cAAA,EAAA;AAsBA,IAAMA,iCAAiB,MAAA,CAAA,MAAA;AAEnB,EAAA,MAAMC,QAAAA,GAAWC,GAAGD,QAAAA,EAAQ;AAC5B,EAAA,IAAIA,QAAAA,CAASE,GAAAA,KAAQ,EAAA,IAAMF,QAAAA,CAASG,QAAQ,EAAA,EAAI;AAC5C,IAAA,OAAOC,MAAAA;AACX,EAAA;AAEA,EAAA,OAAO;AAAEF,IAAAA,GAAAA,EAAKF,QAAAA,CAASE,GAAAA;AAAKC,IAAAA,GAAAA,EAAKH,QAAAA,CAASG;AAAI,GAAA;AAClD,CAAA,EARuB,gBAAA,CAAA;AAWvBE,CAAAA,CAAEC,OAAAA,GAAU,IAAA;AACZD,CAAAA,CAAEE,KAAAA,GAAQ;AAAC,EAAA,SAAA;AAAW,EAAA,MAAA;EAAQC,OAAAA,CAAQC;;AAMtC,IAAMC,YAAAA,mBAAe,MAAA,CAAA,CACjBC,cAAAA,EACAC,WAAAA,KACkBC,MAAAA,CAAO;AAAID,EAAAA,GAAAA,WAAAA;AAAgBD,EAAAA,GAAAA;GAAiB,CAACG,MAAAA,KAAWA,MAAAA,CAAOC,aAAa,CAAA,EAH7E,cAAA,CAAA;AAWrB,IAAMC,oCAAoB,MAAA,CAAA,CAACF,MAAAA,EAAuBG,aAAAA,KAC9CH,MAAAA,CAAOI,SAAS,MAAA,GACV;EACI,GAAGJ,MAAAA;EACHK,QAAAA,EAAUC,IAAAA,CAAKC,OAAAA,CAAQJ,aAAAA,EAAeH,MAAAA,CAAOK,QAAAA,CAASG,QAAQ,IAAA,EAAMrB,EAAAA,CAAGsB,OAAAA,EAAO,CAAA;AAClF,CAAA,GACAT,MAAAA,EANgB,mBAAA,CAAA;AAQ1B,IAAMU,iBAAAA,iCAA2BC,QAAAA,KAAAA;AAC7B,EAAA,IAAIC,MAAAA;AAEJ,EAAA,IAAI;AAWAA,IAAAA,MAAAA,GAAS,MAAMrB,CAAAA,CAAAA,sCAAAA,EAA0CoB,QAAAA,CAAAA,CAAAA,CAAWE,OAAAA,GAAUC,KAAAA,EAAK;AACnF,IAAA,IAAI,CAACF,OAAOG,QAAAA,EAAU;AAClBC,MAAAA,OAAAA,CAAQC,IAAAA,CAAK,CAAA,kCAAA,EAAgCN,QAAAA,CAAAA,CAAU,CAAA;AACvD,MAAA;AACJ,IAAA;AAEAK,IAAAA,OAAAA,CAAQC,IAAAA,CAAK,wCAAiCN,QAAAA,CAAAA;AAC9CC,IAAAA,MAAAA,GAAS,MAAMrB,CAAAA,CAAAA,YAAAA,EAAgBoB,QAAAA,CAAAA,CAAAA,CAAWE,OAAAA,EAAO;AACrD,EAAA,CAAA,CAAA,OAASK,KAAAA,EAAgB;AACrB,IAAA,MAAM,IAAIC,MAAM,CAAA,4BAAA,EAA+BR,QAAAA,KAAaS,cAAAA,CAAeF,KAAAA,CAAAA,CAAAA,CAAQ,CAAA;AACvF,EAAA;AAEA,EAAA,IAAIN,OAAOG,QAAAA,EAAU;AACjB,IAAA,MAAMpB,MAAAA,GAASiB,OAAOjB,MAAAA,IAAU,EAAA;AAChC,IAAA,MAAM0B,WAAAA,GACF1B,MAAAA,CAAO2B,QAAAA,CAAS,iCAAA,CAAA,IAChB3B,MAAAA,CAAO2B,QAAAA,CAAS,QAAA,CAAA,IAChB3B,MAAAA,CAAO2B,QAAAA,CAAS,oBAAA,CAAA;AAEpB,IAAA,MAAM,IAAIH,KAAAA,CACN;AACI,MAAA,6BAAA;AACA,MAAA,CAAA,WAAA,EAAcR,QAAAA,CAAAA,cAAAA,CAAAA;AACdU,MAAAA,WAAAA,GACM,gDAAA,GACA;AACRE,KAAAA,CAAAA,IAAAA,CAAK,IAAA,CAAA,CAAA;AAEf,EAAA;AAEAP,EAAAA,OAAAA,CAAQC,IAAAA,CAAK,CAAA,4BAAA,EAA0BN,QAAAA,CAAAA,CAAU,CAAA;AACrD,CAAA,EA7C0B,mBAAA,CAAA;AA+D1B,eAAsBa,kBAAAA,CAClBC,SACAC,QAAAA,EACAC,IAAAA,EACA,EACIC,GAAAA,EACAC,OAAAA,EAAS/B,aACTgC,gBAAAA,EAAkBC,UAAAA,EAClBC,KAAKC,aAAAA,EACLC,MAAAA,EACAC,SACAC,QAAAA,GAAW,IACXC,qBAAAA,GAAwB,IAAA,EACxBC,OAAK,EACqB;AAE9B,EAAA,MAAMC,IAAAA,GAAOC,cAAAA,CAAef,OAAAA,EAASC,QAAAA,CAAAA;AAIrC,EAAA,IAAIa,KAAKE,UAAAA,EAAY;AACjB,IAAA,MAAMF,IAAAA,CAAKE,WAAWhB,OAAAA,EAAS;AAC3BG,MAAAA,GAAAA;AACAD,MAAAA,IAAAA;MACAE,OAAAA,EAAS/B,WAAAA;MACTkC,GAAAA,EAAKC,aAAAA;AACLC,MAAAA,MAAAA;AACAC,MAAAA,OAAAA;AACAC,MAAAA,QAAAA;AACAC,MAAAA;KACJ,CAAA;AACJ,EAAA;AAGA,EAAA,MAAMK,kBAAkBC,mBAAAA,CAAoBlB,OAAAA,EAASW,QAAAA,CAAAA,CAAUG,KAAKK,IAAI,CAAA;AAExE,EAAA,IAAI,CAACF,eAAAA,EAAiB;AAClB,IAAA,MAAM,IAAIvB,KAAAA,CAAM,CAAA,6BAAA,EAAgCoB,IAAAA,CAAKK,IAAI,CAAA,CAAE,CAAA;AAC/D,EAAA;AAEA5B,EAAAA,OAAAA,CAAQC,KAAK,CAAA,UAAA,EAAMsB,IAAAA,CAAKK,IAAI,CAAA,UAAA,EAAaF,eAAAA,CAAAA,CAAiB,CAAA;AAG1D,EAAA,IAAIH,KAAKM,mBAAAA,EAAqB;AAC1B,IAAA,IAAI;AACA,MAAA,MAAMC,gBAAAA,GAAmB,MAAMP,IAAAA,CAAKM,mBAAAA,CAAoB;AAAEjB,QAAAA;OAAI,CAAA;AAE9D,MAAA,IAAI,CAAQmB,MAAAA,CAAAA,SAAAA,CAAUD,gBAAAA,EAAkBJ,eAAAA,CAAAA,EAAkB;AACtD1B,QAAAA,OAAAA,CAAQgC,IAAAA,CACJ,CAAA,sCAAA,EAAyCF,gBAAAA,CAAAA,iCAAAA,EAAoDJ,eAAAA,CAAAA,CAAAA,CAAkB,CAAA;AAEvH,MAAA;AACJ,IAAA,CAAA,CAAA,OAASxB,KAAAA,EAAO;AAEZF,MAAAA,OAAAA,CAAQgC,IAAAA,CAAK,uCAAA,EAAyC5B,cAAAA,CAAeF,KAAAA,CAAAA,CAAAA;AACzE,IAAA;AACJ,EAAA;AAEA,EAAA,IAAIoB,KAAAA,EAAO;AACP,IAAA,OAAOW,cAAAA,CAAeV,MAAMG,eAAAA,EAAiB;AACzCd,MAAAA,GAAAA;AACAD,MAAAA,IAAAA;MACAK,GAAAA,EAAKC,aAAAA;AACLC,MAAAA;KACJ,CAAA;AACJ,EAAA;AAEA,EAAA,MAAM/B,aAAAA,GAAgB,MAAM+C,iBAAAA,CAAkBtB,GAAAA,CAAAA;AAE9C,EAAA,MAAM/B,iBAAiBwC,qBAAAA,GAAyBE,IAAAA,CAAK1C,cAAAA,IAAkB,KAAM,EAAA;AAC7E,EAAA,MAAMgC,OAAAA,GAAUjC,YAAAA,CAAaC,cAAAA,EAAgBC,WAAAA,EACxCqD,GAAAA,CAAI,CAACnD,MAAAA,KAAWE,iBAAAA,CAAkBF,MAAAA,EAAQG,aAAAA,CAAAA,CAAAA,CAC1CgD,IAAIC,iBAAAA,CAAAA;AAET,EAAA,IAAIvD,cAAAA,CAAewD,SAAS,CAAA,EAAG;AAC3BrC,IAAAA,OAAAA,CAAQC,KAAK,CAAA,gBAAA,EAAYpB,cAAAA,CAAewD,MAAM,CAAA,uBAAA,EAA0Bd,IAAAA,CAAKK,IAAI,CAAA,CAAE,CAAA;AAEnF,IAAA,IAAI9C,WAAAA,CAAYuD,SAAS,CAAA,EAAG;AACxB,MAAA,MAAMC,SAAAA,GAAYxD,WAAAA,CAAYyD,MAAAA,CAAO,CAACC,UAAAA,KAClC3D,cAAAA,CAAe4D,IAAAA,CACX,CAACC,aAAAA,KAAkBA,aAAAA,CAAczD,aAAAA,KAAkBuD,UAAAA,CAAWvD,aAAa,CAAA,CAAA;AAInF,MAAA,IAAIqD,SAAAA,CAAUD,SAAS,CAAA,EAAG;AACtBrC,QAAAA,OAAAA,CAAQC,IAAAA,CAAK,CAAA,gCAAA,EAA4BqC,SAAAA,CAAUD,MAAM,CAAA,kBAAA,CAAoB,CAAA;AACjF,MAAA;AACJ,IAAA;AACJ,EAAA;AAGA,EAAA,MAAM1C,WAAW,MAAMgD,kBAAAA,CAAmBlC,OAAAA,EAASc,IAAAA,CAAKK,MAAMF,eAAAA,CAAAA;AAC9D,EAAA,MAAMkB,YAAAA,GAAetD,IAAAA,CAAKuD,QAAAA,CAAS1D,aAAAA,EAAeyB,GAAAA,CAAAA;AAElD,EAAA,MAAMlB,kBAAkBC,QAAAA,CAAAA;AAExB,EAAA,IAAIoB,UAAAA,EAAY+B,MAAAA,EAAQ;AACpB9C,IAAAA,OAAAA,CAAQC,IAAAA,CAAK,CAAA,mCAAA,EAA+Bc,UAAAA,CAAAA,CAAY,CAAA;AAC5D,EAAA;AAGA,EAAA,MAAMgC,UAAAA,GAAaxB,IAAAA,CAAKwB,UAAAA,IAAc,EAAA;AAItC,EAAA,MAAMC,oBAAAA,GAAuBnC,OAAAA,CAAQ4B,IAAAA,CACjC,CAACzD,MAAAA,KAAWA,OAAOI,IAAAA,KAAS,MAAA,IAAUJ,MAAAA,CAAOC,aAAAA,KAAkB,sBAAA,CAAA;AAEnE,EAAA,MAAMgE,kBAAyCD,oBAAAA,GACzC;AACI,IAAA;MAAEpB,IAAAA,EAAM,UAAA;MAAYsB,KAAAA,EAAOtC;AAAI,KAAA;AAC/B,IAAA;MAAEgB,IAAAA,EAAM,qBAAA;MAAuBsB,KAAAA,EAAO/D;AAAc;MAExD,EAAA;AAEN,EAAA,MAAMgE,UAAUpE,MAAAA,CACZ;AAAIkC,IAAAA,GAAAA,aAAAA;AAAkBgC,IAAAA,GAAAA,eAAAA;AAAoBF,IAAAA,GAAAA;KAC1C,CAAC,EAAEnB,IAAAA,EAAI,KAAOA,IAAAA,CAAAA,CAChBwB,QAAQ,CAAC,EAAExB,IAAAA,EAAMsB,KAAAA,EAAK,KAAO;AAAC,IAAA,IAAA;IAAM,CAAA,EAAGtB,IAAAA,IAAQsB,KAAAA,CAAAA;AAAQ,GAAA,CAAA;AAKzD,EAAA,MAAMG,cAAcpF,cAAAA,EAAAA;AACpB,EAAA,MAAMqF,gBAAgBD,WAAAA,GAChB;AAAC,IAAA,IAAA;AAAM,IAAA,CAAA,UAAA,EAAaA,YAAYjF,GAAG,CAAA,CAAA;AAAI,IAAA,IAAA;AAAM,IAAA,CAAA,UAAA,EAAaiF,YAAYhF,GAAG,CAAA;MACzE,EAAA;AAEN2B,EAAAA,OAAAA,CAAQC,KAAK,CAAA,uCAAA,EAAmCoD,WAAAA,EAAajF,GAAAA,CAAAA,CAAAA,EAAOiF,WAAAA,EAAahF,GAAAA,CAAAA,CAAK,CAAA;AAEtF,EAAA,IAAI0E,UAAAA,CAAWV,SAAS,CAAA,EAAG;AACvBrC,IAAAA,OAAAA,CAAQC,KACJ,CAAA,gBAAA,EAAY8C,UAAAA,CAAWV,MAAM,CAAA,qCAAA,EAAwCd,IAAAA,CAAKK,IAAI,CAAA,CAAE,CAAA;AAExF,EAAA;AACA,EAAA,IAAIX,aAAAA,CAAcoB,SAAS,CAAA,EAAG;AAC1BrC,IAAAA,OAAAA,CAAQC,IAAAA,CAAK,CAAA,gBAAA,EAAYgB,aAAAA,CAAcoB,MAAM,CAAA,+BAAA,CAAiC,CAAA;AAClF,EAAA;AAGA,EAAA,IAAIkB,SAAAA;AACJ,EAAA,IAAIrC,MAAAA,IAAUA,MAAAA,CAAO4B,IAAAA,EAAI,KAAO,EAAA,EAAI;AAChC9C,IAAAA,OAAAA,CAAQC,IAAAA,CAAK,CAAA,mCAAA,EAA+BiB,MAAAA,CAAAA,CAAQ,CAAA;AACpDqC,IAAAA,SAAAA,GAAY;AAAC,MAAA,MAAA;AAAQ,MAAA,IAAA;AAAMrC,MAAAA;;EAC/B,CAAA,MAAO;AACHqC,IAAAA,SAAAA,GAAYxC,eAAezC,MAAAA,GAAY;MAACiD,IAAAA,CAAKK,IAAAA;AAASjB,MAAAA,GAAAA;AAAQA,KAAAA,GAAAA,IAAAA;AAClE,EAAA;AAGA,EAAA,MAAM6C,UAAAA,GAAa;AACf,IAAA,KAAA;AACIjC,IAAAA,GAAAA,IAAAA,CAAKkC,UAAAA,GAAa;AAAC,MAAA;QAAkB,EAAA;AACzC,IAAA,MAAA;AACA,IAAA,8CAAA;AACGN,IAAAA,GAAAA,OAAAA;AACAG,IAAAA,GAAAA,aAAAA;AACH,IAAA,IAAA;AACA,IAAA,CAAA,EAAGnE,aAAAA,CAAAA,WAAAA,CAAAA;AACH,IAAA,IAAA;AACA,IAAA,CAAA,WAAA,EAAcyD,YAAAA,CAAAA,CAAAA;AACVzB,IAAAA,GAAAA,CAAAA,OAAAA,IAAW,EAAA,EAAIiC,OAAAA,CAAQ,CAACM,CAAAA,KAAM;AAAC,MAAA,IAAA;AAAMA,MAAAA,CAAAA,CAAEZ,IAAAA;AAAO,KAAA,CAAA;OAC/CjC,OAAAA,CAAQuC,OAAAA,CAAQ,CAACpE,MAAAA,KAAW;AAC3B,MAAA,IAAA;MACA,CAAA,EAAGA,MAAAA,CAAOI,SAAS,MAAA,GAASJ,MAAAA,CAAOK,WAAWL,MAAAA,CAAO4C,IAAI,CAAA,CAAA,EAAI5C,MAAAA,CAAOC,aAAa,CAAA;AACpF,KAAA,CAAA;OACG8B,UAAAA,GAAa;AAAC,MAAA,cAAA;AAAgBA,MAAAA;QAAc,EAAA;AAChDpB,IAAAA,QAAAA;AACG4D,IAAAA,GAAAA;;AAGP,EAAA,MAAM3D,MAAAA,GAAS,MAAM+D,QAAAA,CACjB9C,OAAAA,CAAQuC,OAAAA,CAAQ,CAACpE,MAAAA,KACbA,MAAAA,CAAOI,IAAAA,KAAS,SAAA,IAAaJ,MAAAA,CAAO4E,MAAAA,GAAS;IAAC5E,MAAAA,CAAO4C;MAAQ,EAAE,GAEnE,YAAA;AACI,IAAA,MAAMiC,KAAAA,GAAQ,CAAA,OAAA,EAAKN,SAAAA,CAAUhD,IAAAA,CAAK,GAAA,CAAA,CAAA,CAAA;AAClCP,IAAAA,OAAAA,CAAQ8D,KAAKD,KAAAA,CAAAA;AACb,IAAA,MAAME,MAAAA,GAAS,MAAMxF,CAAAA,CAAAA,OAAAA,EAAWiF,UAAAA,GAAa3D,OAAAA,EAAO;AACpDG,IAAAA,OAAAA,CAAQgE,QAAQH,KAAAA,CAAAA;AAEhB,IAAA,OAAOE,MAAAA;EACX,CAAA,CAAA;AAGJ,EAAA,IAAInE,OAAOG,QAAAA,EAAU;AACjB,IAAA,MAAMkE,MAAAA,GAASrE,MAAAA,CAAOqE,MAAAA,CAAOnB,IAAAA,EAAI;AACjC,IAAA,MAAM,IAAI3C,KAAAA,CACN,CAAA,2CAAA,EAA8CP,MAAAA,CAAOG,QAAQ,IAAIkE,MAAAA,GAAS;EAAKA,MAAAA,CAAAA,CAAAA,GAAW,EAAA,CAAA,CAAI,CAAA;AAEtG,EAAA;AAEA,EAAA,OAAOrE,MAAAA;AACX;AAhMsBY,MAAAA,CAAAA,kBAAAA,EAAAA,oBAAAA,CAAAA","file":"INYD2E56.js","sourcesContent":["import { uniqBy } from 'es-toolkit';\nimport os from 'node:os';\nimport path from 'node:path';\nimport process from 'node:process';\nimport * as semver from 'semver';\nimport { $, type ProcessOutput } from 'zx';\n\nimport type { EnvironmentVariable, VolumeMapping } from '../config';\nimport type { ChainContext } from '../context';\nimport { findWorkspaceRoot } from '../utils';\nimport { getImageUriForTool, qualifyVolumeName } from '../utils/docker';\nimport { stringifyError } from '../utils/error';\nimport { findToolByName } from '../utils/finder';\nimport { executeLocally } from './local-executor';\nimport { lockMany } from './lock';\nimport { resolveTypeVersions } from './version-resolver';\n\n/**\n * Get the current user's UID and GID for Docker container user matching.\n * This prevents permission issues when containers write to bind-mounted directories.\n * On Windows or when running as root, returns undefined as UID/GID matching is not needed.\n */\nconst getHostUserIds = (): { uid: number; gid: number } | undefined => {\n // os.userInfo() returns uid/gid on POSIX systems, -1 on Windows\n const userInfo = os.userInfo();\n if (userInfo.uid === -1 || userInfo.gid === -1) {\n return undefined;\n }\n\n return { uid: userInfo.uid, gid: userInfo.gid };\n};\n\n// Configure zx to inherit stdio by default (moved from original setup)\n$.verbose = true;\n$.stdio = ['inherit', 'pipe', process.stderr];\n\n/**\n * Merge default volumes with user-specified volumes\n * User volumes take precedence when containerPath conflicts\n */\nconst mergeVolumes = (\n defaultVolumes: readonly VolumeMapping[],\n userVolumes: readonly VolumeMapping[],\n): VolumeMapping[] => uniqBy([...userVolumes, ...defaultVolumes], (volume) => volume.containerPath);\n\n/**\n * Resolve a host path in a volume to an absolute path.\n * - Paths starting with ~ are resolved to home directory\n * - Relative paths (starting with . or no prefix) are resolved to workspace root\n * - Absolute paths are left unchanged\n */\nconst resolveVolumePath = (volume: VolumeMapping, workspaceRoot: string): VolumeMapping =>\n volume.type === 'host'\n ? {\n ...volume,\n hostPath: path.resolve(workspaceRoot, volume.hostPath.replace(/^~/, os.homedir())),\n }\n : volume;\n\nconst ensureDockerImage = async (imageUri: string): Promise<void> => {\n let output: ProcessOutput;\n\n try {\n // Check local images first.\n //\n // NOTE: `docker image ls <ref>` prints repository/tag in separate columns, so\n // `stdout.includes(<full-ref>)` is not reliable. Use `inspect` instead: exitCode=0\n // means the image exists locally.\n // Keep output minimal to avoid dumping full inspect JSON into CI logs.\n //\n // NOTE: Using `.quiet()` to avoid stderr being captured in the CI logs. If the image\n // is not in the cache, the process prints \"Error response from daemon: No such image: ...\"\n // which can confuse the uninitiated. It's just a cache miss, not an error.\n output = await $`docker image inspect --format {{.Id}} ${imageUri}`.nothrow().quiet();\n if (!output.exitCode) {\n console.info(`✅ Using cached Docker image: ${imageUri}`);\n return;\n }\n\n console.info('📥 Pulling Docker image from:', imageUri);\n output = await $`docker pull ${imageUri}`.nothrow();\n } catch (error: unknown) {\n throw new Error(`Failed to pull Docker image ${imageUri}: ${stringifyError(error)}`);\n }\n\n if (output.exitCode) {\n const stderr = output.stderr ?? '';\n const isAuthError =\n stderr.includes('authorization token has expired') ||\n stderr.includes('denied') ||\n stderr.includes('pull access denied');\n\n throw new Error(\n [\n 'Docker image not available:',\n ` - Image: ${imageUri} (pull failed)`,\n isAuthError\n ? ' - ECR auth expired. Run: pnpm localnet login'\n : ' - Check if the image tag exists in image registry.',\n ].join('\\n'),\n );\n }\n\n console.info(`✅ Successfully pulled: ${imageUri}`);\n};\n\nexport interface ToolCommandExecutionOptions {\n cwd: string;\n volumes: readonly VolumeMapping[];\n customEntrypoint?: string;\n env: EnvironmentVariable[];\n args?: string[];\n script?: string;\n publish?: string[];\n versions?: Record<string, string>;\n defaultVolumesEnabled?: boolean;\n local?: boolean;\n}\n\n/**\n * Enhanced tool command execution using the new version compatibility matrix system\n */\nexport async function executeToolCommand<TImageId extends string>(\n context: ChainContext<TImageId>,\n toolName: string,\n args: string[],\n {\n cwd,\n volumes: userVolumes,\n customEntrypoint: entrypoint,\n env: customEnvVars,\n script,\n publish,\n versions = {},\n defaultVolumesEnabled = true,\n local,\n }: ToolCommandExecutionOptions,\n): Promise<ProcessOutput> {\n const tool = findToolByName(context, toolName);\n\n // Run pre-execution hook if defined (e.g., toolchain sync)\n // TODO Support a local tool execution.\n if (tool.preExecute) {\n await tool.preExecute(context, {\n cwd,\n args,\n volumes: userVolumes,\n env: customEnvVars,\n script,\n publish,\n versions,\n defaultVolumesEnabled,\n });\n }\n\n // Get the resolved version for the current tool.\n const resolvedVersion = resolveTypeVersions(context, versions)[tool.name];\n\n if (!resolvedVersion) {\n throw new Error(`No version resolved for tool ${tool.name}`);\n }\n\n console.info(`🔧 ${tool.name} version: ${resolvedVersion}`);\n\n // Check secondary version validation if available\n if (tool.getSecondaryVersion) {\n try {\n const secondaryVersion = await tool.getSecondaryVersion({ cwd });\n\n if (!semver.satisfies(secondaryVersion, resolvedVersion)) {\n console.warn(\n `Warning: Local configuration version (${secondaryVersion}) differs from resolved version (${resolvedVersion})`,\n );\n }\n } catch (error) {\n // Secondary version check failed, but continue with resolved version\n console.warn('Could not validate secondary version:', stringifyError(error));\n }\n }\n\n if (local) {\n return executeLocally(tool, resolvedVersion, {\n cwd,\n args,\n env: customEnvVars,\n script,\n });\n }\n\n const workspaceRoot = await findWorkspaceRoot(cwd);\n\n const defaultVolumes = defaultVolumesEnabled ? (tool.defaultVolumes ?? []) : [];\n const volumes = mergeVolumes(defaultVolumes, userVolumes)\n .map((volume) => resolveVolumePath(volume, workspaceRoot))\n .map(qualifyVolumeName);\n\n if (defaultVolumes.length > 0) {\n console.info(`📦 Using ${defaultVolumes.length} default volume(s) for ${tool.name}`);\n\n if (userVolumes.length > 0) {\n const overrides = userVolumes.filter((userVolume) =>\n defaultVolumes.some(\n (defaultVolume) => defaultVolume.containerPath === userVolume.containerPath,\n ),\n );\n\n if (overrides.length > 0) {\n console.info(`🔧 User volumes override ${overrides.length} default volume(s)`);\n }\n }\n }\n\n // Use Docker image with merged volumes\n const imageUri = await getImageUriForTool(context, tool.name, resolvedVersion);\n const relativePath = path.relative(workspaceRoot, cwd);\n\n await ensureDockerImage(imageUri);\n\n if (entrypoint?.trim()) {\n console.info(`🔧 Using custom entrypoint: ${entrypoint}`);\n }\n\n // Merge default env vars with custom env vars (custom takes precedence)\n const defaultEnv = tool.defaultEnv ?? [];\n\n // Check if Docker socket is mounted (for tools that spawn Docker containers like anchor --verifiable)\n // If so, inject HOST_CWD and HOST_WORKSPACE_ROOT so the inner container knows the host paths\n const hasDockerSocketMount = volumes.some(\n (volume) => volume.type === 'host' && volume.containerPath === '/var/run/docker.sock',\n );\n const dockerSocketEnv: EnvironmentVariable[] = hasDockerSocketMount\n ? [\n { name: 'HOST_CWD', value: cwd },\n { name: 'HOST_WORKSPACE_ROOT', value: workspaceRoot },\n ]\n : [];\n\n const envArgs = uniqBy(\n [...customEnvVars, ...dockerSocketEnv, ...defaultEnv],\n ({ name }) => name,\n ).flatMap(({ name, value }) => ['-e', `${name}=${value}`]);\n\n // Add host user UID/GID for permission matching on Linux/macOS\n // This prevents artifacts created in containers from having root ownership\n // Used by stellar, sui, and iota images which have an entrypoint that handles UID/GID\n const hostUserIds = getHostUserIds();\n const userIdEnvArgs = hostUserIds\n ? ['-e', `LOCAL_UID=${hostUserIds.uid}`, '-e', `LOCAL_GID=${hostUserIds.gid}`]\n : [];\n\n console.info(`👤 Running container as UID:GID ${hostUserIds?.uid}:${hostUserIds?.gid}`);\n\n if (defaultEnv.length > 0) {\n console.info(\n `🌍 Using ${defaultEnv.length} default environment variable(s) for ${tool.name}`,\n );\n }\n if (customEnvVars.length > 0) {\n console.info(`🌍 Using ${customEnvVars.length} custom environment variable(s)`);\n }\n\n // Handle custom script execution\n let finalArgs: string[];\n if (script && script.trim() !== '') {\n console.info(`📜 Executing custom script: ${script}`);\n finalArgs = ['bash', '-c', script];\n } else {\n finalArgs = entrypoint === undefined ? [tool.name, ...args] : args;\n }\n\n // Build the Docker command with proper argument separation\n const dockerArgs = [\n 'run',\n ...(tool.privileged ? ['--privileged'] : []),\n '--rm',\n '--add-host=host.docker.internal:host-gateway',\n ...envArgs,\n ...userIdEnvArgs,\n '-v',\n `${workspaceRoot}:/workspace`,\n '-w',\n `/workspace/${relativePath}`,\n ...(publish ?? []).flatMap((p) => ['-p', p.trim()]),\n ...volumes.flatMap((volume) => [\n '-v',\n `${volume.type === 'host' ? volume.hostPath : volume.name}:${volume.containerPath}`,\n ]),\n ...(entrypoint ? ['--entrypoint', entrypoint] : []),\n imageUri,\n ...finalArgs,\n ];\n\n const output = await lockMany(\n volumes.flatMap((volume) =>\n volume.type === 'isolate' && volume.locked ? [volume.name] : [],\n ),\n async () => {\n const label = `⏳ ${finalArgs.join(' ')}`;\n console.time(label);\n const result = await $`docker ${dockerArgs}`.nothrow();\n console.timeEnd(label);\n\n return result;\n },\n );\n\n if (output.exitCode) {\n const stdout = output.stdout.trim();\n throw new Error(\n `Failed to run Docker container (exit code: ${output.exitCode})${stdout ? `\\n${stdout}` : ''}`,\n );\n }\n\n return output;\n}\n"]}
@@ -1,4 +1,4 @@
1
- import { getRegistry, getImageDirectory } from './BJUOU4DR.js';
1
+ import { getRegistry, getImageDirectory } from './HOFCGMNS.js';
2
2
  import { findToolVersionsForCombination, getImageName } from './3XEUJAQB.js';
3
3
  import { init_esm_shims, __name } from './CWKWODSW.js';
4
4
  import { join, basename } from 'path';
@@ -52,5 +52,5 @@ var qualifyVolumeName = /* @__PURE__ */ __name((volume) => {
52
52
  }, "qualifyVolumeName");
53
53
 
54
54
  export { getImageTag, getImageUri, getImageUriForTool, qualifyVolumeName };
55
- //# sourceMappingURL=AXL4SBDJ.js.map
56
- //# sourceMappingURL=AXL4SBDJ.js.map
55
+ //# sourceMappingURL=RVVZQC34.js.map
56
+ //# sourceMappingURL=RVVZQC34.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/utils/docker.ts"],"names":["getImageUriForTool","context","toolName","version","image","versionCombinations","flatMap","combination","imageId","images","findToolVersionsForCombination","Error","getImageUri","join","getRegistry","getImageDirectory","getImageName","name","getImageTag","versions","patch","Object","entries","sort","flat","qualifyVolumeName","volume","type","components","shared","packageName","env","npm_package_name","push","basename"],"mappings":";;;;;;;AAAA,cAAA,EAAA;AAQO,IAAMA,kBAAAA,mBAAqB,MAAA,CAAA,OAC9BC,OAAAA,EACAC,QAAAA,EACAC,OAAAA,KAAAA;AAEA,EAAA,MAAM,CAACC,KAAAA,CAAAA,GAASH,QAAQI,mBAAAA,CAAoBC,OAAAA,CAAQ,CAACC,WAAAA,KAAAA;AACjD,IAAA,MAAMC,OAAAA,GAAUD,WAAAA,CAAYE,MAAAA,CAAOP,QAAAA,CAAAA;AAEnC,IAAA,IAAI,CAACM,OAAAA,EAAS;AACV,MAAA,OAAO,EAAA;AACX,IAAA;AAEA,IAAA,MAAMJ,MAAAA,GAAQH,OAAAA,CAAQQ,MAAAA,CAAOD,OAAAA,CAAAA;AAE7B,IAAA,OAAOJ,UAASM,8BAAAA,CAA+BT,OAAAA,EAASM,WAAAA,CAAAA,CAAaL,QAAAA,MAAcC,OAAAA,GAC7E;AAACC,MAAAA;QACD,EAAA;EACV,CAAA,CAAA;AAEA,EAAA,IAAI,CAACA,KAAAA,EAAO;AACR,IAAA,MAAM,IAAIO,KAAAA,CACN,CAAA,sCAAA,EAAyCT,QAAAA,CAAAA,cAAAA,EAAyBC,OAAAA,CAAAA,CAAS,CAAA;AAEnF,EAAA;AAEA,EAAA,OAAOS,YAAYR,KAAAA,CAAAA;AACvB,CAAA,EA1BkC,oBAAA;AA4B3B,IAAMQ,WAAAA,iCAAqBR,KAAAA,KAC9BS,IAAAA,CACI,MAAMC,WAAAA,EAAAA,EACN,MAAMC,iBAAAA,EAAAA,EACN,GAAGC,YAAAA,CAAaZ,KAAAA,CAAMa,IAAI,CAAA,CAAA,CAAA,EAAKC,YAAYd,KAAAA,CAAAA,EAAQ,CAAA,EAJhC,aAAA;AAOpB,IAAMc,WAAAA,mBAAc,MAAA,CAAA,CAAC,EAAEC,QAAAA,EAAUC,OAAK,KACzC;AAAIC,EAAAA,GAAAA,MAAAA,CAAOC,OAAAA,CAAQH,QAAAA,CAAAA,CAAUI,IAAAA,GAAOC,IAAAA,EAAI;KAAQJ,KAAAA,GAAQ;AAAC,IAAA,OAAA;AAASA,IAAAA;MAAS;AAAKP,CAAAA,CAAAA,IAAAA,CAAK,GAAA,CAAA,EAD9D,aAAA;AAGpB,IAAMY,iBAAAA,2BAAqBC,MAAAA,KAAAA;AAC9B,EAAA,IAAIA,MAAAA,CAAOC,SAAS,SAAA,EAAW;AAC3B,IAAA,OAAOD,MAAAA;AACX,EAAA;AAEA,EAAA,MAAME,UAAAA,GAAa;AAAC,IAAA,kBAAA;IAAoBF,MAAAA,CAAOT;;AAE/C,EAAA,IAAI,CAACS,OAAOG,MAAAA,EAAQ;AAEhB,IAAA,MAAMC,cAAcC,GAAAA,CAAIC,gBAAAA;AAExB,IAAA,IAAI,CAACF,WAAAA,EAAa;AACd,MAAA,MAAM,IAAInB,MAAM,mDAAA,CAAA;AACpB,IAAA;AAEAiB,IAAAA,UAAAA,CAAWK,IAAAA,CAAKC,QAAAA,CAASJ,WAAAA,CAAAA,CAAAA;AAC7B,EAAA;AAEA,EAAA,OAAO;IAAE,GAAGJ,MAAAA;IAAQT,IAAAA,EAAMW,UAAAA,CAAWf,KAAK,GAAA;AAAK,GAAA;AACnD,CAAA,EAnBiC,mBAAA","file":"AXL4SBDJ.js","sourcesContent":["import { basename, join } from 'node:path';\nimport { env } from 'node:process';\n\nimport type { Image, VolumeMapping } from '../config';\nimport { getImageDirectory, getRegistry } from '../config';\nimport type { ChainContext } from '../context';\nimport { findToolVersionsForCombination, getImageName } from './finder';\n\nexport const getImageUriForTool = async <TImageId extends string>(\n context: ChainContext<TImageId>,\n toolName: string,\n version: string,\n): Promise<string> => {\n const [image] = context.versionCombinations.flatMap((combination) => {\n const imageId = combination.images[toolName];\n\n if (!imageId) {\n return [];\n }\n\n const image = context.images[imageId];\n\n return image && findToolVersionsForCombination(context, combination)[toolName] === version\n ? [image]\n : [];\n });\n\n if (!image) {\n throw new Error(\n `No version combination found for tool ${toolName} with version ${version}`,\n );\n }\n\n return getImageUri(image);\n};\n\nexport const getImageUri = async (image: Image): Promise<string> =>\n join(\n await getRegistry(),\n await getImageDirectory(),\n `${getImageName(image.name)}:${getImageTag(image)}`,\n );\n\nexport const getImageTag = ({ versions, patch }: Image): string =>\n [...Object.entries(versions).sort().flat(), ...(patch ? ['patch', patch] : [])].join('-');\n\nexport const qualifyVolumeName = (volume: VolumeMapping): VolumeMapping => {\n if (volume.type !== 'isolate') {\n return volume;\n }\n\n const components = ['lz-tooling-cache', volume.name];\n\n if (!volume.shared) {\n // This is the package name where the `lz-tool` command is executed.\n const packageName = env.npm_package_name;\n\n if (!packageName) {\n throw new Error('npm_package_name environment variable not defined');\n }\n\n components.push(basename(packageName));\n }\n\n return { ...volume, name: components.join('-') };\n};\n"]}
1
+ {"version":3,"sources":["../src/utils/docker.ts"],"names":["getImageUriForTool","context","toolName","version","image","versionCombinations","flatMap","combination","imageId","images","findToolVersionsForCombination","Error","getImageUri","join","getRegistry","getImageDirectory","getImageName","name","getImageTag","versions","patch","Object","entries","sort","flat","qualifyVolumeName","volume","type","components","shared","packageName","env","npm_package_name","push","basename"],"mappings":";;;;;;;AAAA,cAAA,EAAA;AAQO,IAAMA,kBAAAA,mBAAqB,MAAA,CAAA,OAC9BC,OAAAA,EACAC,QAAAA,EACAC,OAAAA,KAAAA;AAEA,EAAA,MAAM,CAACC,KAAAA,CAAAA,GAASH,QAAQI,mBAAAA,CAAoBC,OAAAA,CAAQ,CAACC,WAAAA,KAAAA;AACjD,IAAA,MAAMC,OAAAA,GAAUD,WAAAA,CAAYE,MAAAA,CAAOP,QAAAA,CAAAA;AAEnC,IAAA,IAAI,CAACM,OAAAA,EAAS;AACV,MAAA,OAAO,EAAA;AACX,IAAA;AAEA,IAAA,MAAMJ,MAAAA,GAAQH,OAAAA,CAAQQ,MAAAA,CAAOD,OAAAA,CAAAA;AAE7B,IAAA,OAAOJ,UAASM,8BAAAA,CAA+BT,OAAAA,EAASM,WAAAA,CAAAA,CAAaL,QAAAA,MAAcC,OAAAA,GAC7E;AAACC,MAAAA;QACD,EAAA;EACV,CAAA,CAAA;AAEA,EAAA,IAAI,CAACA,KAAAA,EAAO;AACR,IAAA,MAAM,IAAIO,KAAAA,CACN,CAAA,sCAAA,EAAyCT,QAAAA,CAAAA,cAAAA,EAAyBC,OAAAA,CAAAA,CAAS,CAAA;AAEnF,EAAA;AAEA,EAAA,OAAOS,YAAYR,KAAAA,CAAAA;AACvB,CAAA,EA1BkC,oBAAA;AA4B3B,IAAMQ,WAAAA,iCAAqBR,KAAAA,KAC9BS,IAAAA,CACI,MAAMC,WAAAA,EAAAA,EACN,MAAMC,iBAAAA,EAAAA,EACN,GAAGC,YAAAA,CAAaZ,KAAAA,CAAMa,IAAI,CAAA,CAAA,CAAA,EAAKC,YAAYd,KAAAA,CAAAA,EAAQ,CAAA,EAJhC,aAAA;AAOpB,IAAMc,WAAAA,mBAAc,MAAA,CAAA,CAAC,EAAEC,QAAAA,EAAUC,OAAK,KACzC;AAAIC,EAAAA,GAAAA,MAAAA,CAAOC,OAAAA,CAAQH,QAAAA,CAAAA,CAAUI,IAAAA,GAAOC,IAAAA,EAAI;KAAQJ,KAAAA,GAAQ;AAAC,IAAA,OAAA;AAASA,IAAAA;MAAS;AAAKP,CAAAA,CAAAA,IAAAA,CAAK,GAAA,CAAA,EAD9D,aAAA;AAGpB,IAAMY,iBAAAA,2BAAqBC,MAAAA,KAAAA;AAC9B,EAAA,IAAIA,MAAAA,CAAOC,SAAS,SAAA,EAAW;AAC3B,IAAA,OAAOD,MAAAA;AACX,EAAA;AAEA,EAAA,MAAME,UAAAA,GAAa;AAAC,IAAA,kBAAA;IAAoBF,MAAAA,CAAOT;;AAE/C,EAAA,IAAI,CAACS,OAAOG,MAAAA,EAAQ;AAEhB,IAAA,MAAMC,cAAcC,GAAAA,CAAIC,gBAAAA;AAExB,IAAA,IAAI,CAACF,WAAAA,EAAa;AACd,MAAA,MAAM,IAAInB,MAAM,mDAAA,CAAA;AACpB,IAAA;AAEAiB,IAAAA,UAAAA,CAAWK,IAAAA,CAAKC,QAAAA,CAASJ,WAAAA,CAAAA,CAAAA;AAC7B,EAAA;AAEA,EAAA,OAAO;IAAE,GAAGJ,MAAAA;IAAQT,IAAAA,EAAMW,UAAAA,CAAWf,KAAK,GAAA;AAAK,GAAA;AACnD,CAAA,EAnBiC,mBAAA","file":"RVVZQC34.js","sourcesContent":["import { basename, join } from 'node:path';\nimport { env } from 'node:process';\n\nimport type { Image, VolumeMapping } from '../config';\nimport { getImageDirectory, getRegistry } from '../config';\nimport type { ChainContext } from '../context';\nimport { findToolVersionsForCombination, getImageName } from './finder';\n\nexport const getImageUriForTool = async <TImageId extends string>(\n context: ChainContext<TImageId>,\n toolName: string,\n version: string,\n): Promise<string> => {\n const [image] = context.versionCombinations.flatMap((combination) => {\n const imageId = combination.images[toolName];\n\n if (!imageId) {\n return [];\n }\n\n const image = context.images[imageId];\n\n return image && findToolVersionsForCombination(context, combination)[toolName] === version\n ? [image]\n : [];\n });\n\n if (!image) {\n throw new Error(\n `No version combination found for tool ${toolName} with version ${version}`,\n );\n }\n\n return getImageUri(image);\n};\n\nexport const getImageUri = async (image: Image): Promise<string> =>\n join(\n await getRegistry(),\n await getImageDirectory(),\n `${getImageName(image.name)}:${getImageTag(image)}`,\n );\n\nexport const getImageTag = ({ versions, patch }: Image): string =>\n [...Object.entries(versions).sort().flat(), ...(patch ? ['patch', patch] : [])].join('-');\n\nexport const qualifyVolumeName = (volume: VolumeMapping): VolumeMapping => {\n if (volume.type !== 'isolate') {\n return volume;\n }\n\n const components = ['lz-tooling-cache', volume.name];\n\n if (!volume.shared) {\n // This is the package name where the `lz-tool` command is executed.\n const packageName = env.npm_package_name;\n\n if (!packageName) {\n throw new Error('npm_package_name environment variable not defined');\n }\n\n components.push(basename(packageName));\n }\n\n return { ...volume, name: components.join('-') };\n};\n"]}
@@ -1,4 +1,4 @@
1
- import { generateGithubMatrix } from './ZSOVVFOM.js';
1
+ import { generateGithubMatrix } from './3IQB2ZZF.js';
2
2
  import { init_esm_shims, __name } from './CWKWODSW.js';
3
3
  import { stdout } from 'process';
4
4
 
@@ -11,5 +11,5 @@ var runGithubMatrixGenerator = /* @__PURE__ */ __name(async (images, directory,
11
11
  }, "runGithubMatrixGenerator");
12
12
 
13
13
  export { runGithubMatrixGenerator };
14
- //# sourceMappingURL=6V27P6AU.js.map
15
- //# sourceMappingURL=6V27P6AU.js.map
14
+ //# sourceMappingURL=SQYDOF2V.js.map
15
+ //# sourceMappingURL=SQYDOF2V.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/github/index.ts"],"names":["runGithubMatrixGenerator","images","directory","versionCombinations","entries","generateGithubMatrix","console","warn","JSON","stringify","stdout","write"],"mappings":";;;;;AAAA,cAAA,EAAA;AAKO,IAAMA,wBAAAA,mBAA2B,MAAA,CAAA,OACpCC,MAAAA,EACAC,SAAAA,EACAC,mBAAAA,KAAAA;AAEA,EAAA,MAAMC,OAAAA,GAAUC,oBAAAA,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,MAAAA,CAAOC,KAAAA,CAAMH,IAAAA,CAAKC,SAAAA,CAAUL,OAAAA,CAAAA,CAAAA;AAChC,CAAA,EATwC,0BAAA","file":"6V27P6AU.js","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":["runGithubMatrixGenerator","images","directory","versionCombinations","entries","generateGithubMatrix","console","warn","JSON","stringify","stdout","write"],"mappings":";;;;;AAAA,cAAA,EAAA;AAKO,IAAMA,wBAAAA,mBAA2B,MAAA,CAAA,OACpCC,MAAAA,EACAC,SAAAA,EACAC,mBAAAA,KAAAA;AAEA,EAAA,MAAMC,OAAAA,GAAUC,oBAAAA,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,MAAAA,CAAOC,KAAAA,CAAMH,IAAAA,CAAKC,SAAAA,CAAUL,OAAAA,CAAAA,CAAAA;AAChC,CAAA,EATwC,0BAAA","file":"SQYDOF2V.js","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,4 +1,4 @@
1
- import { getImageTag, getImageUri } from './AXL4SBDJ.js';
1
+ import { getImageTag, getImageUri } from './RVVZQC34.js';
2
2
  import { init_esm_shims, __name } from './CWKWODSW.js';
3
3
  import { execFile } from 'child_process';
4
4
  import { promisify } from 'util';
@@ -62,5 +62,5 @@ var testTools = /* @__PURE__ */ __name(({ describe, expect, it, beforeAll }, ima
62
62
  }, "testTools");
63
63
 
64
64
  export { testTools };
65
- //# sourceMappingURL=BTPRTHPR.js.map
66
- //# sourceMappingURL=BTPRTHPR.js.map
65
+ //# sourceMappingURL=TMKE5ARZ.js.map
66
+ //# sourceMappingURL=TMKE5ARZ.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/test.ts"],"names":["COMMAND_TIMEOUT","PULL_TIMEOUT","VERSION_TEST_TIMEOUT","runCommand","command","args","timeout","promisify","execFile","killSignal","stdout","trim","ensureDockerImageExists","imageUri","testTools","describe","expect","it","beforeAll","images","_versionCombinations","versionCommands","name","image","Object","entries","getImageTag","join","toBe","literalImage","values","getImageUri","tool","expectedVersion","versions","Array","Error","version","toContain"],"mappings":";;;;;;AAAA,cAAA,EAAA;AAQA,IAAMA,kBAAkB,CAAA,GAAI,GAAA;AAC5B,IAAMC,eAAe,EAAA,GAAK,GAAA;AAC1B,IAAMC,uBAAuB,EAAA,GAAK,GAAA;AAElC,IAAMC,UAAAA,mBAAa,MAAA,CAAA,OACfC,OAAAA,EACAC,IAAAA,EACAC,OAAAA,GAAUN,eAAAA,KAAAA,CAGN,MAAMO,SAAAA,CAAUC,QAAAA,CAAAA,CAAUJ,OAAAA,EAASC,IAAAA,EAAM;AACrCC,EAAAA,OAAAA;EACAG,UAAAA,EAAY;AAChB,CAAA,CAAA,EACFC,MAAAA,CAAOC,IAAAA,EAAI,EAVE,YAAA,CAAA;AAanB,IAAMC,uBAAAA,iCAAiCC,QAAAA,KAAAA;AACnC,EAAA,MAAMV,WAAW,QAAA,EAAU;AAAC,IAAA,KAAA;AAAO,IAAA,MAAA;AAAQ,IAAA,cAAA;AAAgB,IAAA,MAAA;AAAQU,IAAAA;KAAWZ,YAAAA,CAAAA;AAClF,CAAA,EAFgC,yBAAA,CAAA;AAIzB,IAAMa,SAAAA,mBAAY,MAAA,CAAA,CACrB,EAAEC,QAAAA,EAAUC,MAAAA,EAAQC,IAAIC,SAAAA,EAAS,EACjCC,MAAAA,EACAC,oBAAAA,EACAC,eAAAA,KAAAA;AAEAN,EAAAA,QAAAA,CAAS,oBAAoB,MAAA;AACzB,IAAA,KAAA,MAAW,CAACO,IAAAA,EAAMC,KAAAA,KAAUC,MAAAA,CAAOC,OAAAA,CAAQN,MAAAA,CAAAA,EAAS;AAChDF,MAAAA,EAAAA,CAAG,CAAA,mBAAA,EAAsBK,IAAAA,CAAAA,CAAAA,EAAQ,MAAA;AAC7BN,QAAAA,MAAAA,CAAO;UAACO,KAAAA,CAAMD,IAAAA;AAAMI,UAAAA,WAAAA,CAAYH,KAAAA;AAAQI,SAAAA,CAAAA,IAAAA,CAAK,GAAA,CAAA,CAAA,CAAMC,IAAAA,CAAKN,IAAAA,CAAAA;MAC5D,CAAA,CAAA;AACJ,IAAA;EACJ,CAAA,CAAA;AAEAP,EAAAA,QAAAA,CAAS,iBAAiB,MAAA;AACtB,IAAA,KAAA,MAAWc,YAAAA,IAAgBL,MAAAA,CAAOM,MAAAA,CAAOX,MAAAA,CAAAA,EAAS;AAC9C,MAAA,MAAMI,KAAAA,GAAeM,YAAAA;AAErBd,MAAAA,QAAAA,CAASW,WAAAA,CAAYH,KAAAA,CAAAA,EAAQ,MAAA;AACzB,QAAA,IAAIV,QAAAA;AAEJK,QAAAA,SAAAA,CAAU,YAAA;AACNL,UAAAA,QAAAA,GAAW,MAAMkB,YAAYR,KAAAA,CAAAA;AAC7B,UAAA,MAAMX,wBAAwBC,QAAAA,CAAAA;AAClC,QAAA,CAAA,EAAGZ,YAAAA,CAAAA;AAEH,QAAA,KAAA,MAAW,CAAC+B,MAAMC,eAAAA,CAAAA,IAAoBT,OAAOC,OAAAA,CAAQF,KAAAA,CAAMW,QAAQ,CAAA,EAAG;AAClEjB,UAAAA,EAAAA,CACI,CAAA,YAAA,EAAee,IAAAA,CAAAA,YAAAA,EAAmBC,eAAAA,IAClC,YAAA;AACI,YAAA,IAAI,EAAEZ,eAAAA,CAAgBW,IAAAA,CAAAA,YAAiBG,KAAAA,CAAAA,EAAQ;AAC3C,cAAA,MAAM,IAAIC,MAAM,yBAAA,CAAA;AACpB,YAAA;AAEA,YAAA,MAAMC,OAAAA,GAAU,MAAMlC,UAAAA,CAAW,QAAA,EAAU;AACvC,cAAA,KAAA;AACA,cAAA,MAAA;AACA,cAAA,cAAA;AACAU,cAAAA,QAAAA;AACGQ,cAAAA,GAAAA,eAAAA,CAAgBW,IAAAA;AACtB,aAAA,CAAA;AAEDhB,YAAAA,MAAAA,CAAOqB,OAAAA,CAAAA,CAASC,SAAAA,CAAUL,eAAAA,CAAAA;AAC9B,UAAA,CAAA,EACA/B,oBAAAA,CAAAA;AAER,QAAA;MACJ,CAAA,CAAA;AACJ,IAAA;EACJ,CAAA,CAAA;AACJ,CAAA,EAlDyB,WAAA","file":"BTPRTHPR.js","sourcesContent":["import { execFile } from 'node:child_process';\nimport { promisify } from 'node:util';\nimport type * as vitest from 'vitest';\n\nimport type { VersionCombination } from './config';\nimport { type Image } from './config';\nimport { getImageTag, getImageUri } from './utils/docker';\n\nconst COMMAND_TIMEOUT = 5 * 60_000;\nconst PULL_TIMEOUT = 10 * 60_000;\nconst VERSION_TEST_TIMEOUT = 15 * 60_000;\n\nconst runCommand = async (\n command: string,\n args: string[],\n timeout = COMMAND_TIMEOUT,\n): Promise<string> =>\n (\n await promisify(execFile)(command, args, {\n timeout,\n killSignal: 'SIGKILL', // Force kill if timeout\n })\n ).stdout.trim();\n\n/** Run a no-op command in the image to trigger a pull if it's not available locally. */\nconst ensureDockerImageExists = async (imageUri: string): Promise<void> => {\n await runCommand('docker', ['run', '--rm', '--entrypoint', 'true', imageUri], PULL_TIMEOUT);\n};\n\nexport const testTools = (\n { describe, expect, it, beforeAll }: typeof vitest,\n images: Record<string, Image>,\n _versionCombinations: VersionCombination<string>[],\n versionCommands: Record<string, string[]>,\n): void => {\n describe('Docker image IDs', () => {\n for (const [name, image] of Object.entries(images)) {\n it(`has an image ID of ${name}`, () => {\n expect([image.name, getImageTag(image)].join(':')).toBe(name);\n });\n }\n });\n\n describe('Tool versions', () => {\n for (const literalImage of Object.values(images)) {\n const image: Image = literalImage;\n\n describe(getImageTag(image), () => {\n let imageUri: string;\n\n beforeAll(async () => {\n imageUri = await getImageUri(image);\n await ensureDockerImageExists(imageUri);\n }, PULL_TIMEOUT);\n\n for (const [tool, expectedVersion] of Object.entries(image.versions)) {\n it(\n `should have ${tool} of version ${expectedVersion}`,\n async () => {\n if (!(versionCommands[tool] instanceof Array)) {\n throw new Error('Missing version command');\n }\n\n const version = await runCommand('docker', [\n 'run',\n '--rm',\n '--privileged',\n imageUri,\n ...versionCommands[tool],\n ]);\n\n expect(version).toContain(expectedVersion);\n },\n VERSION_TEST_TIMEOUT,\n );\n }\n });\n }\n });\n};\n"]}
1
+ {"version":3,"sources":["../src/test.ts"],"names":["COMMAND_TIMEOUT","PULL_TIMEOUT","VERSION_TEST_TIMEOUT","runCommand","command","args","timeout","promisify","execFile","killSignal","stdout","trim","ensureDockerImageExists","imageUri","testTools","describe","expect","it","beforeAll","images","_versionCombinations","versionCommands","name","image","Object","entries","getImageTag","join","toBe","literalImage","values","getImageUri","tool","expectedVersion","versions","Array","Error","version","toContain"],"mappings":"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","file":"TMKE5ARZ.js","sourcesContent":["import { execFile } from 'node:child_process';\nimport { promisify } from 'node:util';\nimport type * as vitest from 'vitest';\n\nimport type { VersionCombination } from './config';\nimport { type Image } from './config';\nimport { getImageTag, getImageUri } from './utils/docker';\n\nconst COMMAND_TIMEOUT = 5 * 60_000;\nconst PULL_TIMEOUT = 10 * 60_000;\nconst VERSION_TEST_TIMEOUT = 15 * 60_000;\n\nconst runCommand = async (\n command: string,\n args: string[],\n timeout = COMMAND_TIMEOUT,\n): Promise<string> =>\n (\n await promisify(execFile)(command, args, {\n timeout,\n killSignal: 'SIGKILL', // Force kill if timeout\n })\n ).stdout.trim();\n\n/** Run a no-op command in the image to trigger a pull if it's not available locally. */\nconst ensureDockerImageExists = async (imageUri: string): Promise<void> => {\n await runCommand('docker', ['run', '--rm', '--entrypoint', 'true', imageUri], PULL_TIMEOUT);\n};\n\nexport const testTools = (\n { describe, expect, it, beforeAll }: typeof vitest,\n images: Record<string, Image>,\n _versionCombinations: VersionCombination<string>[],\n versionCommands: Record<string, string[]>,\n): void => {\n describe('Docker image IDs', () => {\n for (const [name, image] of Object.entries(images)) {\n it(`has an image ID of ${name}`, () => {\n expect([image.name, getImageTag(image)].join(':')).toBe(name);\n });\n }\n });\n\n describe('Tool versions', () => {\n for (const literalImage of Object.values(images)) {\n const image: Image = literalImage;\n\n describe(getImageTag(image), () => {\n let imageUri: string;\n\n beforeAll(async () => {\n imageUri = await getImageUri(image);\n await ensureDockerImageExists(imageUri);\n }, PULL_TIMEOUT);\n\n for (const [tool, expectedVersion] of Object.entries(image.versions)) {\n it(\n `should have ${tool} of version ${expectedVersion}`,\n async () => {\n if (!(versionCommands[tool] instanceof Array)) {\n throw new Error('Missing version command');\n }\n\n const version = await runCommand('docker', [\n 'run',\n '--rm',\n '--privileged',\n imageUri,\n ...versionCommands[tool],\n ]);\n\n expect(version).toContain(expectedVersion);\n },\n VERSION_TEST_TIMEOUT,\n );\n }\n });\n }\n });\n};\n"]}
@@ -1,6 +1,6 @@
1
1
  import { displayVersionCombinations, displayToolVersionInfo } from './QH3FM6DD.js';
2
- import { executeToolCommand } from './JYJBE36S.js';
3
- import { volumeMappingSchema } from './BJUOU4DR.js';
2
+ import { executeToolCommand } from './INYD2E56.js';
3
+ import { volumeMappingSchema } from './HOFCGMNS.js';
4
4
  import { getToolDefaultVersion, getToolSupportedVersions } from './3XEUJAQB.js';
5
5
  import { init_esm_shims, __name } from './CWKWODSW.js';
6
6
  import { Command } from 'commander';
@@ -100,7 +100,7 @@ var createCli = /* @__PURE__ */ __name((context, registerExtraCommands) => {
100
100
  }, []).option("-p, --publish <host_port:container_port>", "Publish a container's port(s) to the host (repeatable)", (value, previous) => [
101
101
  ...previous,
102
102
  value
103
- ], []).option("--no-default-volumes", "Disable default volumes for the tool");
103
+ ], []).option("--no-default-volumes", "Disable default volumes for the tool").option("--local", "Run the tool from the host installation instead of Docker");
104
104
  for (const tool of tools) {
105
105
  const defaultVersion = getToolDefaultVersion(context, tool.name);
106
106
  const supportedVersions = getToolSupportedVersions(context, tool.name);
@@ -128,5 +128,5 @@ var runCli = /* @__PURE__ */ __name(async (config, registerExtraCommands) => {
128
128
  }, "runCli");
129
129
 
130
130
  export { runCli };
131
- //# sourceMappingURL=UQGPF6NC.js.map
132
- //# sourceMappingURL=UQGPF6NC.js.map
131
+ //# sourceMappingURL=TSEHDOF7.js.map
132
+ //# sourceMappingURL=TSEHDOF7.js.map
@@ -0,0 +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":"TSEHDOF7.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 local?: 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 .option('--local', 'Run the tool from the host installation instead of Docker');\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"]}
package/dist/cli.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQpC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,QAAQ,CAAC;AAe1D,KAAK,qBAAqB,GAAG,CACzB,OAAO,EAAE,OAAO,EAChB,kBAAkB,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,2BAA2B,CAAC,KAC7E,IAAI,CAAC;AA+LV,eAAO,MAAM,MAAM,GAAU,QAAQ,SAAS,MAAM,EAChD,QAAQ,YAAY,CAAC,QAAQ,CAAC,EAC9B,wBAAwB,qBAAqB,KAC9C,OAAO,CAAC,IAAI,CAOd,CAAC"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQpC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,QAAQ,CAAC;AAgB1D,KAAK,qBAAqB,GAAG,CACzB,OAAO,EAAE,OAAO,EAChB,kBAAkB,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,2BAA2B,CAAC,KAC7E,IAAI,CAAC;AAgMV,eAAO,MAAM,MAAM,GAAU,QAAQ,SAAS,MAAM,EAChD,QAAQ,YAAY,CAAC,QAAQ,CAAC,EAC9B,wBAAwB,qBAAqB,KAC9C,OAAO,CAAC,IAAI,CAOd,CAAC"}
package/dist/cli.js CHANGED
@@ -1,16 +1,17 @@
1
- export { runCli } from './UQGPF6NC.js';
1
+ export { runCli } from './TSEHDOF7.js';
2
2
  import './CAPBDIIE.js';
3
3
  import './QH3FM6DD.js';
4
4
  import './S7YAUZ26.js';
5
- import './P4BHRQMD.js';
6
- import './JYJBE36S.js';
5
+ import './2MO4PR4P.js';
6
+ import './INYD2E56.js';
7
7
  import './2XGBQPKA.js';
8
+ import './4SFAVHVD.js';
8
9
  import './6L6NUQMM.js';
9
- import './AXL4SBDJ.js';
10
- import './BJUOU4DR.js';
10
+ import './RVVZQC34.js';
11
+ import './HOFCGMNS.js';
11
12
  import './UBUQDI5Q.js';
12
13
  import './3XEUJAQB.js';
13
- import './4SFAVHVD.js';
14
+ import './HC7LYTHL.js';
14
15
  import './CWKWODSW.js';
15
16
  //# sourceMappingURL=cli.js.map
16
17
  //# sourceMappingURL=cli.js.map
package/dist/config.d.ts CHANGED
@@ -25,6 +25,9 @@ export interface Tool {
25
25
  getSecondaryVersion?: (args: {
26
26
  cwd: string;
27
27
  }) => Promise<string>;
28
+ getLocalVersion?: (args: {
29
+ cwd: string;
30
+ }) => Promise<string>;
28
31
  preExecute?: (context: ChainContext<string>, options: ToolCommandExecutionOptions) => Promise<void>;
29
32
  }
30
33
  export declare enum DockerRegistryMirror {
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAIzB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,sBAAsB,CAAC;AAiDxE,eAAO,MAAM,mBAAmB;;;;;;;;;;mBAAiE,CAAC;AAElG,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEhE,MAAM,WAAW,mBAAmB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,IAAI;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,OAAO,CAAC;IAGrB,cAAc,CAAC,EAAE,SAAS,aAAa,EAAE,CAAC;IAG1C,UAAU,CAAC,EAAE,SAAS,mBAAmB,EAAE,CAAC;IAG5C,mBAAmB,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAGjE,UAAU,CAAC,EAAE,CACT,OAAO,EAAE,YAAY,CAAC,MAAM,CAAC,EAC7B,OAAO,EAAE,2BAA2B,KACnC,OAAO,CAAC,IAAI,CAAC,CAAC;CACtB;AAED,oBAAY,oBAAoB;IAC5B,UAAU,eAAe;CAC5B;AAED,MAAM,WAAW,KAAK;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gBAAgB,CAAC,EAAE,oBAAoB,EAAE,CAAC;CAC7C;AAED,MAAM,WAAW,kBAAkB,CAAC,QAAQ;IACxC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACjC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,eAAO,MAAM,iBAAiB,uBAAyD,CAAC;AACxF,eAAO,MAAM,WAAW,uBAAmD,CAAC"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAIzB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,sBAAsB,CAAC;AAiDxE,eAAO,MAAM,mBAAmB;;;;;;;;;;mBAAiE,CAAC;AAElG,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEhE,MAAM,WAAW,mBAAmB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,IAAI;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,OAAO,CAAC;IAGrB,cAAc,CAAC,EAAE,SAAS,aAAa,EAAE,CAAC;IAG1C,UAAU,CAAC,EAAE,SAAS,mBAAmB,EAAE,CAAC;IAG5C,mBAAmB,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAEjE,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAG7D,UAAU,CAAC,EAAE,CACT,OAAO,EAAE,YAAY,CAAC,MAAM,CAAC,EAC7B,OAAO,EAAE,2BAA2B,KACnC,OAAO,CAAC,IAAI,CAAC,CAAC;CACtB;AAED,oBAAY,oBAAoB;IAC5B,UAAU,eAAe;CAC5B;AAED,MAAM,WAAW,KAAK;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gBAAgB,CAAC,EAAE,oBAAoB,EAAE,CAAC;CAC7C;AAED,MAAM,WAAW,kBAAkB,CAAC,QAAQ;IACxC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACjC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,eAAO,MAAM,iBAAiB,uBAAyD,CAAC;AACxF,eAAO,MAAM,WAAW,uBAAmD,CAAC"}
package/dist/config.js CHANGED
@@ -1,4 +1,4 @@
1
- export { DockerRegistryMirror, getImageDirectory, getRegistry, volumeMappingSchema } from './BJUOU4DR.js';
1
+ export { DockerRegistryMirror, getImageDirectory, getRegistry, volumeMappingSchema } from './HOFCGMNS.js';
2
2
  import './CWKWODSW.js';
3
3
  //# sourceMappingURL=config.js.map
4
4
  //# sourceMappingURL=config.js.map
@@ -1,3 +1,4 @@
1
+ export * from './local-executor';
1
2
  export * from './tool-executor';
2
3
  export * from './version-resolver';
3
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC"}
@@ -1,12 +1,13 @@
1
- import '../P4BHRQMD.js';
2
- export { executeToolCommand } from '../JYJBE36S.js';
1
+ import '../2MO4PR4P.js';
2
+ export { executeToolCommand } from '../INYD2E56.js';
3
3
  import '../2XGBQPKA.js';
4
+ import '../4SFAVHVD.js';
4
5
  export { resolveTypeVersions } from '../6L6NUQMM.js';
5
- import '../AXL4SBDJ.js';
6
- import '../BJUOU4DR.js';
6
+ import '../RVVZQC34.js';
7
+ import '../HOFCGMNS.js';
7
8
  import '../UBUQDI5Q.js';
8
9
  import '../3XEUJAQB.js';
9
- import '../4SFAVHVD.js';
10
+ export { executeLocally } from '../HC7LYTHL.js';
10
11
  import '../CWKWODSW.js';
11
12
  //# sourceMappingURL=index.js.map
12
13
  //# sourceMappingURL=index.js.map
@@ -0,0 +1,11 @@
1
+ import { type ProcessOutput } from 'zx';
2
+ import type { EnvironmentVariable, Tool } from '../config';
3
+ interface LocalExecutionOptions {
4
+ cwd: string;
5
+ args: string[];
6
+ env: readonly EnvironmentVariable[];
7
+ script?: string;
8
+ }
9
+ export declare const executeLocally: (tool: Tool, resolvedVersion: string, { cwd, args, env, script }: LocalExecutionOptions) => Promise<ProcessOutput>;
10
+ export {};
11
+ //# sourceMappingURL=local-executor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-executor.d.ts","sourceRoot":"","sources":["../../src/core/local-executor.ts"],"names":[],"mappings":"AACA,OAAO,EAAK,KAAK,aAAa,EAAE,MAAM,IAAI,CAAC;AAE3C,OAAO,KAAK,EAAE,mBAAmB,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAE3D,UAAU,qBAAqB;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,GAAG,EAAE,SAAS,mBAAmB,EAAE,CAAC;IACpC,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,eAAO,MAAM,cAAc,GACvB,MAAM,IAAI,EACV,iBAAiB,MAAM,EACvB,4BAA4B,qBAAqB,KAClD,OAAO,CAAC,aAAa,CAsCvB,CAAC"}
@@ -0,0 +1,4 @@
1
+ export { executeLocally } from '../HC7LYTHL.js';
2
+ import '../CWKWODSW.js';
3
+ //# sourceMappingURL=local-executor.js.map
4
+ //# sourceMappingURL=local-executor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"local-executor.js"}