MCPcopy Index your code
hub / github.com/coder/mux / getPresetParamNames

Method getPresetParamNames

src/node/services/coderService.ts:675–711  ·  view source on GitHub ↗

* Get parameter names covered by a preset. * Returns empty set if preset not found (allows creation to proceed without preset params).

(
    templateName: string,
    presetName: string,
    org?: string,
    signal?: AbortSignal
  )

Source from the content-addressed store, hash-verified

673 * Returns empty set if preset not found (allows creation to proceed without preset params).
674 */
675 private async getPresetParamNames(
676 templateName: string,
677 presetName: string,
678 org?: string,
679 signal?: AbortSignal
680 ): Promise<Set<string>> {
681 try {
682 const args = ["templates", "presets", "list", templateName, "--output=json"];
683 if (org) args.push("--org", org);
684 const stdout = await this.runCoderJsonCommand(args, { signal });
685
686 // Same non-JSON guard as listPresets (CLI prints info message for no presets)
687 if (!stdout.trim() || !stdout.trimStart().startsWith("[")) {
688 return new Set();
689 }
690
691 const raw = JSON.parse(stdout) as Array<{
692 TemplatePreset: {
693 Name: string;
694 Parameters?: Array<{ Name: string }>;
695 };
696 }>;
697
698 const preset = raw.find((p) => p.TemplatePreset.Name === presetName);
699 if (!preset?.TemplatePreset.Parameters) {
700 return new Set();
701 }
702
703 return new Set(preset.TemplatePreset.Parameters.map((p) => p.Name));
704 } catch (error) {
705 if (signal?.aborted) {
706 throw error;
707 }
708 log.debug("Failed to get preset param names", { templateName, presetName, error });
709 return new Set();
710 }
711 }
712
713 /**
714 * Parse rich parameter data from the Coder API.

Callers 1

createWorkspaceMethod · 0.95

Calls 4

runCoderJsonCommandMethod · 0.95
debugMethod · 0.80
pushMethod · 0.65
parseMethod · 0.45

Tested by

no test coverage detected