@grekt/cli 6.35.0 → 6.36.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/dist/index.js +1181 -52
  2. package/package.json +2 -1
package/dist/index.js CHANGED
@@ -34844,7 +34844,7 @@ var require_dist_cjs32 = __commonJS((exports2) => {
34844
34844
  // node_modules/@aws-sdk/util-arn-parser/dist-cjs/index.js
34845
34845
  var require_dist_cjs33 = __commonJS((exports2) => {
34846
34846
  var validate2 = (str2) => typeof str2 === "string" && str2.indexOf("arn:") === 0 && str2.split(":").length >= 6;
34847
- var parse6 = (arn) => {
34847
+ var parse7 = (arn) => {
34848
34848
  const segments = arn.split(":");
34849
34849
  if (segments.length < 6 || segments[0] !== "arn")
34850
34850
  throw new Error("Malformed ARN");
@@ -34865,7 +34865,7 @@ var require_dist_cjs33 = __commonJS((exports2) => {
34865
34865
  return `arn:${partition}:${service}:${region}:${accountId}:${resource}`;
34866
34866
  };
34867
34867
  exports2.build = build;
34868
- exports2.parse = parse6;
34868
+ exports2.parse = parse7;
34869
34869
  exports2.validate = validate2;
34870
34870
  });
34871
34871
 
@@ -38008,7 +38008,7 @@ var require_dist_cjs49 = __commonJS((exports2) => {
38008
38008
  // node_modules/@aws-sdk/signature-v4-multi-region/node_modules/@aws-sdk/middleware-sdk-s3/node_modules/@aws-sdk/util-arn-parser/dist-cjs/index.js
38009
38009
  var require_dist_cjs50 = __commonJS((exports2) => {
38010
38010
  var validate2 = (str2) => typeof str2 === "string" && str2.indexOf("arn:") === 0 && str2.split(":").length >= 6;
38011
- var parse6 = (arn) => {
38011
+ var parse7 = (arn) => {
38012
38012
  const segments = arn.split(":");
38013
38013
  if (segments.length < 6 || segments[0] !== "arn")
38014
38014
  throw new Error("Malformed ARN");
@@ -38029,7 +38029,7 @@ var require_dist_cjs50 = __commonJS((exports2) => {
38029
38029
  return `arn:${partition}:${service}:${region}:${accountId}:${resource}`;
38030
38030
  };
38031
38031
  exports2.build = build;
38032
- exports2.parse = parse6;
38032
+ exports2.parse = parse7;
38033
38033
  exports2.validate = validate2;
38034
38034
  });
38035
38035
 
@@ -58479,7 +58479,7 @@ var require_utils3 = __commonJS((exports2) => {
58479
58479
  var require_stringify6 = __commonJS((exports2, module2) => {
58480
58480
  var utils = require_utils3();
58481
58481
  module2.exports = (ast, options2 = {}) => {
58482
- const stringify = (node, parent = {}) => {
58482
+ const stringify2 = (node, parent = {}) => {
58483
58483
  const invalidBlock = options2.escapeInvalid && utils.isInvalidBrace(parent);
58484
58484
  const invalidNode = node.invalid === true && options2.escapeInvalid === true;
58485
58485
  let output = "";
@@ -58494,12 +58494,12 @@ var require_stringify6 = __commonJS((exports2, module2) => {
58494
58494
  }
58495
58495
  if (node.nodes) {
58496
58496
  for (const child of node.nodes) {
58497
- output += stringify(child);
58497
+ output += stringify2(child);
58498
58498
  }
58499
58499
  }
58500
58500
  return output;
58501
58501
  };
58502
- return stringify(ast);
58502
+ return stringify2(ast);
58503
58503
  };
58504
58504
  });
58505
58505
 
@@ -58766,7 +58766,7 @@ var require_fill_range = __commonJS((exports2, module2) => {
58766
58766
  ;
58767
58767
  return index > 0;
58768
58768
  };
58769
- var stringify = (start, end, options2) => {
58769
+ var stringify2 = (start, end, options2) => {
58770
58770
  if (typeof start === "string" || typeof end === "string") {
58771
58771
  return true;
58772
58772
  }
@@ -58868,7 +58868,7 @@ var require_fill_range = __commonJS((exports2, module2) => {
58868
58868
  step = Math.max(Math.abs(step), 1);
58869
58869
  let padded = zeros(startString) || zeros(endString) || zeros(stepString);
58870
58870
  let maxLen = padded ? Math.max(startString.length, endString.length, stepString.length) : 0;
58871
- let toNumber = padded === false && stringify(start, end, options2) === false;
58871
+ let toNumber = padded === false && stringify2(start, end, options2) === false;
58872
58872
  let format = options2.transform || transform(toNumber);
58873
58873
  if (options2.toRegex && step === 1) {
58874
58874
  return toRange(toMaxLen(start, maxLen), toMaxLen(end, maxLen), true, options2);
@@ -58998,7 +58998,7 @@ var require_compile = __commonJS((exports2, module2) => {
58998
58998
  // node_modules/braces/lib/expand.js
58999
58999
  var require_expand = __commonJS((exports2, module2) => {
59000
59000
  var fill = require_fill_range();
59001
- var stringify = require_stringify6();
59001
+ var stringify2 = require_stringify6();
59002
59002
  var utils = require_utils3();
59003
59003
  var append = (queue = "", stash = "", enclose = false) => {
59004
59004
  const result = [];
@@ -59035,7 +59035,7 @@ var require_expand = __commonJS((exports2, module2) => {
59035
59035
  q = p.queue;
59036
59036
  }
59037
59037
  if (node.invalid || node.dollar) {
59038
- q.push(append(q.pop(), stringify(node, options2)));
59038
+ q.push(append(q.pop(), stringify2(node, options2)));
59039
59039
  return;
59040
59040
  }
59041
59041
  if (node.type === "brace" && node.invalid !== true && node.nodes.length === 2) {
@@ -59049,7 +59049,7 @@ var require_expand = __commonJS((exports2, module2) => {
59049
59049
  }
59050
59050
  let range = fill(...args, options2);
59051
59051
  if (range.length === 0) {
59052
- range = stringify(node, options2);
59052
+ range = stringify2(node, options2);
59053
59053
  }
59054
59054
  q.push(append(q.pop(), range));
59055
59055
  node.nodes = [];
@@ -59143,7 +59143,7 @@ var require_constants4 = __commonJS((exports2, module2) => {
59143
59143
 
59144
59144
  // node_modules/braces/lib/parse.js
59145
59145
  var require_parse5 = __commonJS((exports2, module2) => {
59146
- var stringify = require_stringify6();
59146
+ var stringify2 = require_stringify6();
59147
59147
  var {
59148
59148
  MAX_LENGTH,
59149
59149
  CHAR_BACKSLASH,
@@ -59161,7 +59161,7 @@ var require_parse5 = __commonJS((exports2, module2) => {
59161
59161
  CHAR_NO_BREAK_SPACE,
59162
59162
  CHAR_ZERO_WIDTH_NOBREAK_SPACE
59163
59163
  } = require_constants4();
59164
- var parse6 = (input, options2 = {}) => {
59164
+ var parse7 = (input, options2 = {}) => {
59165
59165
  if (typeof input !== "string") {
59166
59166
  throw new TypeError("Expected a string");
59167
59167
  }
@@ -59304,7 +59304,7 @@ var require_parse5 = __commonJS((exports2, module2) => {
59304
59304
  if (block.ranges > 0) {
59305
59305
  block.ranges = 0;
59306
59306
  const open = block.nodes.shift();
59307
- block.nodes = [open, { type: "text", value: stringify(block) }];
59307
+ block.nodes = [open, { type: "text", value: stringify2(block) }];
59308
59308
  }
59309
59309
  push2({ type: "comma", value });
59310
59310
  block.commas++;
@@ -59365,15 +59365,15 @@ var require_parse5 = __commonJS((exports2, module2) => {
59365
59365
  push2({ type: "eos" });
59366
59366
  return ast;
59367
59367
  };
59368
- module2.exports = parse6;
59368
+ module2.exports = parse7;
59369
59369
  });
59370
59370
 
59371
59371
  // node_modules/braces/index.js
59372
59372
  var require_braces = __commonJS((exports2, module2) => {
59373
- var stringify = require_stringify6();
59373
+ var stringify2 = require_stringify6();
59374
59374
  var compile = require_compile();
59375
59375
  var expand = require_expand();
59376
- var parse6 = require_parse5();
59376
+ var parse7 = require_parse5();
59377
59377
  var braces = (input, options2 = {}) => {
59378
59378
  let output = [];
59379
59379
  if (Array.isArray(input)) {
@@ -59393,12 +59393,12 @@ var require_braces = __commonJS((exports2, module2) => {
59393
59393
  }
59394
59394
  return output;
59395
59395
  };
59396
- braces.parse = (input, options2 = {}) => parse6(input, options2);
59396
+ braces.parse = (input, options2 = {}) => parse7(input, options2);
59397
59397
  braces.stringify = (input, options2 = {}) => {
59398
59398
  if (typeof input === "string") {
59399
- return stringify(braces.parse(input, options2), options2);
59399
+ return stringify2(braces.parse(input, options2), options2);
59400
59400
  }
59401
- return stringify(input, options2);
59401
+ return stringify2(input, options2);
59402
59402
  };
59403
59403
  braces.compile = (input, options2 = {}) => {
59404
59404
  if (typeof input === "string") {
@@ -59970,7 +59970,7 @@ var require_parse6 = __commonJS((exports2, module2) => {
59970
59970
  var syntaxError = (type, char) => {
59971
59971
  return `Missing ${type}: "${char}" - use "\\\\${char}" to match literal characters`;
59972
59972
  };
59973
- var parse6 = (input, options2) => {
59973
+ var parse7 = (input, options2) => {
59974
59974
  if (typeof input !== "string") {
59975
59975
  throw new TypeError("Expected a string");
59976
59976
  }
@@ -60120,7 +60120,7 @@ var require_parse6 = __commonJS((exports2, module2) => {
60120
60120
  output = token.close = `)$))${extglobStar}`;
60121
60121
  }
60122
60122
  if (token.inner.includes("*") && (rest = remaining()) && /^\.[^\\/.]+$/.test(rest)) {
60123
- const expression = parse6(rest, { ...options2, fastpaths: false }).output;
60123
+ const expression = parse7(rest, { ...options2, fastpaths: false }).output;
60124
60124
  output = token.close = `)${expression})${extglobStar})`;
60125
60125
  }
60126
60126
  if (token.prev.type === "bos") {
@@ -60649,7 +60649,7 @@ var require_parse6 = __commonJS((exports2, module2) => {
60649
60649
  }
60650
60650
  return state;
60651
60651
  };
60652
- parse6.fastpaths = (input, options2) => {
60652
+ parse7.fastpaths = (input, options2) => {
60653
60653
  const opts = { ...options2 };
60654
60654
  const max = typeof opts.maxLength === "number" ? Math.min(MAX_LENGTH, opts.maxLength) : MAX_LENGTH;
60655
60655
  const len = input.length;
@@ -60718,14 +60718,14 @@ var require_parse6 = __commonJS((exports2, module2) => {
60718
60718
  }
60719
60719
  return source;
60720
60720
  };
60721
- module2.exports = parse6;
60721
+ module2.exports = parse7;
60722
60722
  });
60723
60723
 
60724
60724
  // node_modules/picomatch/lib/picomatch.js
60725
60725
  var require_picomatch = __commonJS((exports2, module2) => {
60726
60726
  var path8 = __require("path");
60727
60727
  var scan = require_scan();
60728
- var parse6 = require_parse6();
60728
+ var parse7 = require_parse6();
60729
60729
  var utils = require_utils4();
60730
60730
  var constants2 = require_constants5();
60731
60731
  var isObject = (val) => val && typeof val === "object" && !Array.isArray(val);
@@ -60815,7 +60815,7 @@ var require_picomatch = __commonJS((exports2, module2) => {
60815
60815
  picomatch.parse = (pattern, options2) => {
60816
60816
  if (Array.isArray(pattern))
60817
60817
  return pattern.map((p) => picomatch.parse(p, options2));
60818
- return parse6(pattern, { ...options2, fastpaths: false });
60818
+ return parse7(pattern, { ...options2, fastpaths: false });
60819
60819
  };
60820
60820
  picomatch.scan = (input, options2) => scan(input, options2);
60821
60821
  picomatch.compileRe = (state, options2, returnOutput = false, returnState = false) => {
@@ -60841,10 +60841,10 @@ var require_picomatch = __commonJS((exports2, module2) => {
60841
60841
  }
60842
60842
  let parsed = { negated: false, fastpaths: true };
60843
60843
  if (options2.fastpaths !== false && (input[0] === "." || input[0] === "*")) {
60844
- parsed.output = parse6.fastpaths(input, options2);
60844
+ parsed.output = parse7.fastpaths(input, options2);
60845
60845
  }
60846
60846
  if (!parsed.output) {
60847
- parsed = parse6(input, options2);
60847
+ parsed = parse7(input, options2);
60848
60848
  }
60849
60849
  return picomatch.compileRe(parsed, options2, returnOutput, returnState);
60850
60850
  };
@@ -96744,6 +96744,34 @@ async function promptAndInstallHooks(projectRoot, artifactId, hookFiles) {
96744
96744
  // src/sync/mcp/mcp.ts
96745
96745
  import { dirname as dirname8, join as join25, relative as relative6 } from "path";
96746
96746
 
96747
+ // src/sync/plugins/codex/codex.mcp.ts
96748
+ var codexMcpTransform = (_serverName, content, executablePath) => {
96749
+ if (content.url) {
96750
+ return {
96751
+ url: content.url,
96752
+ ...content.headers && { http_headers: content.headers }
96753
+ };
96754
+ }
96755
+ return {
96756
+ command: executablePath,
96757
+ ...content.args?.length && { args: content.args },
96758
+ ...content.env && { env: content.env }
96759
+ };
96760
+ };
96761
+ var codexMcpConfig = {
96762
+ configFile: ".codex/config.toml",
96763
+ serverKey: "mcp_servers",
96764
+ format: "toml",
96765
+ transform: codexMcpTransform
96766
+ };
96767
+
96768
+ // src/sync/plugins/zed/zed.mcp.ts
96769
+ var zedMcpConfig = {
96770
+ configFile: ".zed/settings.json",
96771
+ serverKey: "context_servers",
96772
+ transform: standardMcpTransform
96773
+ };
96774
+
96747
96775
  // src/sync/mcp/mcp.config.ts
96748
96776
  var MCP_CONFIGS = {
96749
96777
  claude: claudeMcpConfig,
@@ -96752,7 +96780,9 @@ var MCP_CONFIGS = {
96752
96780
  amazonq: amazonqMcpConfig,
96753
96781
  opencode: opencodeMcpConfig,
96754
96782
  kiro: kiroMcpConfig,
96783
+ codex: codexMcpConfig,
96755
96784
  gemini: geminiMcpConfig,
96785
+ zed: zedMcpConfig,
96756
96786
  roocode: roocodeMcpConfig,
96757
96787
  kilocode: kilocodeMcpConfig,
96758
96788
  amp: ampMcpConfig
@@ -96764,6 +96794,1092 @@ function getMcpTargetIds() {
96764
96794
  return Object.keys(MCP_CONFIGS);
96765
96795
  }
96766
96796
 
96797
+ // node_modules/smol-toml/dist/error.js
96798
+ /*!
96799
+ * Copyright (c) Squirrel Chat et al., All rights reserved.
96800
+ * SPDX-License-Identifier: BSD-3-Clause
96801
+ *
96802
+ * Redistribution and use in source and binary forms, with or without
96803
+ * modification, are permitted provided that the following conditions are met:
96804
+ *
96805
+ * 1. Redistributions of source code must retain the above copyright notice, this
96806
+ * list of conditions and the following disclaimer.
96807
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
96808
+ * this list of conditions and the following disclaimer in the
96809
+ * documentation and/or other materials provided with the distribution.
96810
+ * 3. Neither the name of the copyright holder nor the names of its contributors
96811
+ * may be used to endorse or promote products derived from this software without
96812
+ * specific prior written permission.
96813
+ *
96814
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
96815
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
96816
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
96817
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
96818
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
96819
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
96820
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
96821
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
96822
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
96823
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
96824
+ */
96825
+ function getLineColFromPtr(string, ptr) {
96826
+ let lines = string.slice(0, ptr).split(/\r\n|\n|\r/g);
96827
+ return [lines.length, lines.pop().length + 1];
96828
+ }
96829
+ function makeCodeBlock(string, line, column) {
96830
+ let lines = string.split(/\r\n|\n|\r/g);
96831
+ let codeblock = "";
96832
+ let numberLen = (Math.log10(line + 1) | 0) + 1;
96833
+ for (let i = line - 1;i <= line + 1; i++) {
96834
+ let l = lines[i - 1];
96835
+ if (!l)
96836
+ continue;
96837
+ codeblock += i.toString().padEnd(numberLen, " ");
96838
+ codeblock += ": ";
96839
+ codeblock += l;
96840
+ codeblock += `
96841
+ `;
96842
+ if (i === line) {
96843
+ codeblock += " ".repeat(numberLen + column + 2);
96844
+ codeblock += `^
96845
+ `;
96846
+ }
96847
+ }
96848
+ return codeblock;
96849
+ }
96850
+
96851
+ class TomlError extends Error {
96852
+ line;
96853
+ column;
96854
+ codeblock;
96855
+ constructor(message, options2) {
96856
+ const [line, column] = getLineColFromPtr(options2.toml, options2.ptr);
96857
+ const codeblock = makeCodeBlock(options2.toml, line, column);
96858
+ super(`Invalid TOML document: ${message}
96859
+
96860
+ ${codeblock}`, options2);
96861
+ this.line = line;
96862
+ this.column = column;
96863
+ this.codeblock = codeblock;
96864
+ }
96865
+ }
96866
+
96867
+ // node_modules/smol-toml/dist/util.js
96868
+ /*!
96869
+ * Copyright (c) Squirrel Chat et al., All rights reserved.
96870
+ * SPDX-License-Identifier: BSD-3-Clause
96871
+ *
96872
+ * Redistribution and use in source and binary forms, with or without
96873
+ * modification, are permitted provided that the following conditions are met:
96874
+ *
96875
+ * 1. Redistributions of source code must retain the above copyright notice, this
96876
+ * list of conditions and the following disclaimer.
96877
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
96878
+ * this list of conditions and the following disclaimer in the
96879
+ * documentation and/or other materials provided with the distribution.
96880
+ * 3. Neither the name of the copyright holder nor the names of its contributors
96881
+ * may be used to endorse or promote products derived from this software without
96882
+ * specific prior written permission.
96883
+ *
96884
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
96885
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
96886
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
96887
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
96888
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
96889
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
96890
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
96891
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
96892
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
96893
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
96894
+ */
96895
+ function isEscaped(str2, ptr) {
96896
+ let i = 0;
96897
+ while (str2[ptr - ++i] === "\\")
96898
+ ;
96899
+ return --i && i % 2;
96900
+ }
96901
+ function indexOfNewline(str2, start = 0, end = str2.length) {
96902
+ let idx = str2.indexOf(`
96903
+ `, start);
96904
+ if (str2[idx - 1] === "\r")
96905
+ idx--;
96906
+ return idx <= end ? idx : -1;
96907
+ }
96908
+ function skipComment(str2, ptr) {
96909
+ for (let i = ptr;i < str2.length; i++) {
96910
+ let c = str2[i];
96911
+ if (c === `
96912
+ `)
96913
+ return i;
96914
+ if (c === "\r" && str2[i + 1] === `
96915
+ `)
96916
+ return i + 1;
96917
+ if (c < " " && c !== "\t" || c === "") {
96918
+ throw new TomlError("control characters are not allowed in comments", {
96919
+ toml: str2,
96920
+ ptr
96921
+ });
96922
+ }
96923
+ }
96924
+ return str2.length;
96925
+ }
96926
+ function skipVoid(str2, ptr, banNewLines, banComments) {
96927
+ let c;
96928
+ while ((c = str2[ptr]) === " " || c === "\t" || !banNewLines && (c === `
96929
+ ` || c === "\r" && str2[ptr + 1] === `
96930
+ `))
96931
+ ptr++;
96932
+ return banComments || c !== "#" ? ptr : skipVoid(str2, skipComment(str2, ptr), banNewLines);
96933
+ }
96934
+ function skipUntil(str2, ptr, sep3, end, banNewLines = false) {
96935
+ if (!end) {
96936
+ ptr = indexOfNewline(str2, ptr);
96937
+ return ptr < 0 ? str2.length : ptr;
96938
+ }
96939
+ for (let i = ptr;i < str2.length; i++) {
96940
+ let c = str2[i];
96941
+ if (c === "#") {
96942
+ i = indexOfNewline(str2, i);
96943
+ } else if (c === sep3) {
96944
+ return i + 1;
96945
+ } else if (c === end || banNewLines && (c === `
96946
+ ` || c === "\r" && str2[i + 1] === `
96947
+ `)) {
96948
+ return i;
96949
+ }
96950
+ }
96951
+ throw new TomlError("cannot find end of structure", {
96952
+ toml: str2,
96953
+ ptr
96954
+ });
96955
+ }
96956
+ function getStringEnd(str2, seek) {
96957
+ let first = str2[seek];
96958
+ let target = first === str2[seek + 1] && str2[seek + 1] === str2[seek + 2] ? str2.slice(seek, seek + 3) : first;
96959
+ seek += target.length - 1;
96960
+ do
96961
+ seek = str2.indexOf(target, ++seek);
96962
+ while (seek > -1 && first !== "'" && isEscaped(str2, seek));
96963
+ if (seek > -1) {
96964
+ seek += target.length;
96965
+ if (target.length > 1) {
96966
+ if (str2[seek] === first)
96967
+ seek++;
96968
+ if (str2[seek] === first)
96969
+ seek++;
96970
+ }
96971
+ }
96972
+ return seek;
96973
+ }
96974
+
96975
+ // node_modules/smol-toml/dist/date.js
96976
+ /*!
96977
+ * Copyright (c) Squirrel Chat et al., All rights reserved.
96978
+ * SPDX-License-Identifier: BSD-3-Clause
96979
+ *
96980
+ * Redistribution and use in source and binary forms, with or without
96981
+ * modification, are permitted provided that the following conditions are met:
96982
+ *
96983
+ * 1. Redistributions of source code must retain the above copyright notice, this
96984
+ * list of conditions and the following disclaimer.
96985
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
96986
+ * this list of conditions and the following disclaimer in the
96987
+ * documentation and/or other materials provided with the distribution.
96988
+ * 3. Neither the name of the copyright holder nor the names of its contributors
96989
+ * may be used to endorse or promote products derived from this software without
96990
+ * specific prior written permission.
96991
+ *
96992
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
96993
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
96994
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
96995
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
96996
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
96997
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
96998
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
96999
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
97000
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
97001
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
97002
+ */
97003
+ var DATE_TIME_RE = /^(\d{4}-\d{2}-\d{2})?[T ]?(?:(\d{2}):\d{2}(?::\d{2}(?:\.\d+)?)?)?(Z|[-+]\d{2}:\d{2})?$/i;
97004
+
97005
+ class TomlDate extends Date {
97006
+ #hasDate = false;
97007
+ #hasTime = false;
97008
+ #offset = null;
97009
+ constructor(date) {
97010
+ let hasDate = true;
97011
+ let hasTime = true;
97012
+ let offset = "Z";
97013
+ if (typeof date === "string") {
97014
+ let match = date.match(DATE_TIME_RE);
97015
+ if (match) {
97016
+ if (!match[1]) {
97017
+ hasDate = false;
97018
+ date = `0000-01-01T${date}`;
97019
+ }
97020
+ hasTime = !!match[2];
97021
+ hasTime && date[10] === " " && (date = date.replace(" ", "T"));
97022
+ if (match[2] && +match[2] > 23) {
97023
+ date = "";
97024
+ } else {
97025
+ offset = match[3] || null;
97026
+ date = date.toUpperCase();
97027
+ if (!offset && hasTime)
97028
+ date += "Z";
97029
+ }
97030
+ } else {
97031
+ date = "";
97032
+ }
97033
+ }
97034
+ super(date);
97035
+ if (!isNaN(this.getTime())) {
97036
+ this.#hasDate = hasDate;
97037
+ this.#hasTime = hasTime;
97038
+ this.#offset = offset;
97039
+ }
97040
+ }
97041
+ isDateTime() {
97042
+ return this.#hasDate && this.#hasTime;
97043
+ }
97044
+ isLocal() {
97045
+ return !this.#hasDate || !this.#hasTime || !this.#offset;
97046
+ }
97047
+ isDate() {
97048
+ return this.#hasDate && !this.#hasTime;
97049
+ }
97050
+ isTime() {
97051
+ return this.#hasTime && !this.#hasDate;
97052
+ }
97053
+ isValid() {
97054
+ return this.#hasDate || this.#hasTime;
97055
+ }
97056
+ toISOString() {
97057
+ let iso = super.toISOString();
97058
+ if (this.isDate())
97059
+ return iso.slice(0, 10);
97060
+ if (this.isTime())
97061
+ return iso.slice(11, 23);
97062
+ if (this.#offset === null)
97063
+ return iso.slice(0, -1);
97064
+ if (this.#offset === "Z")
97065
+ return iso;
97066
+ let offset = +this.#offset.slice(1, 3) * 60 + +this.#offset.slice(4, 6);
97067
+ offset = this.#offset[0] === "-" ? offset : -offset;
97068
+ let offsetDate = new Date(this.getTime() - offset * 60000);
97069
+ return offsetDate.toISOString().slice(0, -1) + this.#offset;
97070
+ }
97071
+ static wrapAsOffsetDateTime(jsDate, offset = "Z") {
97072
+ let date = new TomlDate(jsDate);
97073
+ date.#offset = offset;
97074
+ return date;
97075
+ }
97076
+ static wrapAsLocalDateTime(jsDate) {
97077
+ let date = new TomlDate(jsDate);
97078
+ date.#offset = null;
97079
+ return date;
97080
+ }
97081
+ static wrapAsLocalDate(jsDate) {
97082
+ let date = new TomlDate(jsDate);
97083
+ date.#hasTime = false;
97084
+ date.#offset = null;
97085
+ return date;
97086
+ }
97087
+ static wrapAsLocalTime(jsDate) {
97088
+ let date = new TomlDate(jsDate);
97089
+ date.#hasDate = false;
97090
+ date.#offset = null;
97091
+ return date;
97092
+ }
97093
+ }
97094
+
97095
+ // node_modules/smol-toml/dist/primitive.js
97096
+ /*!
97097
+ * Copyright (c) Squirrel Chat et al., All rights reserved.
97098
+ * SPDX-License-Identifier: BSD-3-Clause
97099
+ *
97100
+ * Redistribution and use in source and binary forms, with or without
97101
+ * modification, are permitted provided that the following conditions are met:
97102
+ *
97103
+ * 1. Redistributions of source code must retain the above copyright notice, this
97104
+ * list of conditions and the following disclaimer.
97105
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
97106
+ * this list of conditions and the following disclaimer in the
97107
+ * documentation and/or other materials provided with the distribution.
97108
+ * 3. Neither the name of the copyright holder nor the names of its contributors
97109
+ * may be used to endorse or promote products derived from this software without
97110
+ * specific prior written permission.
97111
+ *
97112
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
97113
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
97114
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
97115
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
97116
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
97117
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
97118
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
97119
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
97120
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
97121
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
97122
+ */
97123
+ var INT_REGEX = /^((0x[0-9a-fA-F](_?[0-9a-fA-F])*)|(([+-]|0[ob])?\d(_?\d)*))$/;
97124
+ var FLOAT_REGEX = /^[+-]?\d(_?\d)*(\.\d(_?\d)*)?([eE][+-]?\d(_?\d)*)?$/;
97125
+ var LEADING_ZERO = /^[+-]?0[0-9_]/;
97126
+ var ESCAPE_REGEX = /^[0-9a-f]{2,8}$/i;
97127
+ var ESC_MAP = {
97128
+ b: "\b",
97129
+ t: "\t",
97130
+ n: `
97131
+ `,
97132
+ f: "\f",
97133
+ r: "\r",
97134
+ e: "\x1B",
97135
+ '"': '"',
97136
+ "\\": "\\"
97137
+ };
97138
+ function parseString(str2, ptr = 0, endPtr = str2.length) {
97139
+ let isLiteral = str2[ptr] === "'";
97140
+ let isMultiline = str2[ptr++] === str2[ptr] && str2[ptr] === str2[ptr + 1];
97141
+ if (isMultiline) {
97142
+ endPtr -= 2;
97143
+ if (str2[ptr += 2] === "\r")
97144
+ ptr++;
97145
+ if (str2[ptr] === `
97146
+ `)
97147
+ ptr++;
97148
+ }
97149
+ let tmp = 0;
97150
+ let isEscape;
97151
+ let parsed = "";
97152
+ let sliceStart = ptr;
97153
+ while (ptr < endPtr - 1) {
97154
+ let c = str2[ptr++];
97155
+ if (c === `
97156
+ ` || c === "\r" && str2[ptr] === `
97157
+ `) {
97158
+ if (!isMultiline) {
97159
+ throw new TomlError("newlines are not allowed in strings", {
97160
+ toml: str2,
97161
+ ptr: ptr - 1
97162
+ });
97163
+ }
97164
+ } else if (c < " " && c !== "\t" || c === "") {
97165
+ throw new TomlError("control characters are not allowed in strings", {
97166
+ toml: str2,
97167
+ ptr: ptr - 1
97168
+ });
97169
+ }
97170
+ if (isEscape) {
97171
+ isEscape = false;
97172
+ if (c === "x" || c === "u" || c === "U") {
97173
+ let code2 = str2.slice(ptr, ptr += c === "x" ? 2 : c === "u" ? 4 : 8);
97174
+ if (!ESCAPE_REGEX.test(code2)) {
97175
+ throw new TomlError("invalid unicode escape", {
97176
+ toml: str2,
97177
+ ptr: tmp
97178
+ });
97179
+ }
97180
+ try {
97181
+ parsed += String.fromCodePoint(parseInt(code2, 16));
97182
+ } catch {
97183
+ throw new TomlError("invalid unicode escape", {
97184
+ toml: str2,
97185
+ ptr: tmp
97186
+ });
97187
+ }
97188
+ } else if (isMultiline && (c === `
97189
+ ` || c === " " || c === "\t" || c === "\r")) {
97190
+ ptr = skipVoid(str2, ptr - 1, true);
97191
+ if (str2[ptr] !== `
97192
+ ` && str2[ptr] !== "\r") {
97193
+ throw new TomlError("invalid escape: only line-ending whitespace may be escaped", {
97194
+ toml: str2,
97195
+ ptr: tmp
97196
+ });
97197
+ }
97198
+ ptr = skipVoid(str2, ptr);
97199
+ } else if (c in ESC_MAP) {
97200
+ parsed += ESC_MAP[c];
97201
+ } else {
97202
+ throw new TomlError("unrecognized escape sequence", {
97203
+ toml: str2,
97204
+ ptr: tmp
97205
+ });
97206
+ }
97207
+ sliceStart = ptr;
97208
+ } else if (!isLiteral && c === "\\") {
97209
+ tmp = ptr - 1;
97210
+ isEscape = true;
97211
+ parsed += str2.slice(sliceStart, tmp);
97212
+ }
97213
+ }
97214
+ return parsed + str2.slice(sliceStart, endPtr - 1);
97215
+ }
97216
+ function parseValue2(value, toml, ptr, integersAsBigInt) {
97217
+ if (value === "true")
97218
+ return true;
97219
+ if (value === "false")
97220
+ return false;
97221
+ if (value === "-inf")
97222
+ return -Infinity;
97223
+ if (value === "inf" || value === "+inf")
97224
+ return Infinity;
97225
+ if (value === "nan" || value === "+nan" || value === "-nan")
97226
+ return NaN;
97227
+ if (value === "-0")
97228
+ return integersAsBigInt ? 0n : 0;
97229
+ let isInt = INT_REGEX.test(value);
97230
+ if (isInt || FLOAT_REGEX.test(value)) {
97231
+ if (LEADING_ZERO.test(value)) {
97232
+ throw new TomlError("leading zeroes are not allowed", {
97233
+ toml,
97234
+ ptr
97235
+ });
97236
+ }
97237
+ value = value.replace(/_/g, "");
97238
+ let numeric = +value;
97239
+ if (isNaN(numeric)) {
97240
+ throw new TomlError("invalid number", {
97241
+ toml,
97242
+ ptr
97243
+ });
97244
+ }
97245
+ if (isInt) {
97246
+ if ((isInt = !Number.isSafeInteger(numeric)) && !integersAsBigInt) {
97247
+ throw new TomlError("integer value cannot be represented losslessly", {
97248
+ toml,
97249
+ ptr
97250
+ });
97251
+ }
97252
+ if (isInt || integersAsBigInt === true)
97253
+ numeric = BigInt(value);
97254
+ }
97255
+ return numeric;
97256
+ }
97257
+ const date = new TomlDate(value);
97258
+ if (!date.isValid()) {
97259
+ throw new TomlError("invalid value", {
97260
+ toml,
97261
+ ptr
97262
+ });
97263
+ }
97264
+ return date;
97265
+ }
97266
+
97267
+ // node_modules/smol-toml/dist/extract.js
97268
+ /*!
97269
+ * Copyright (c) Squirrel Chat et al., All rights reserved.
97270
+ * SPDX-License-Identifier: BSD-3-Clause
97271
+ *
97272
+ * Redistribution and use in source and binary forms, with or without
97273
+ * modification, are permitted provided that the following conditions are met:
97274
+ *
97275
+ * 1. Redistributions of source code must retain the above copyright notice, this
97276
+ * list of conditions and the following disclaimer.
97277
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
97278
+ * this list of conditions and the following disclaimer in the
97279
+ * documentation and/or other materials provided with the distribution.
97280
+ * 3. Neither the name of the copyright holder nor the names of its contributors
97281
+ * may be used to endorse or promote products derived from this software without
97282
+ * specific prior written permission.
97283
+ *
97284
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
97285
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
97286
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
97287
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
97288
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
97289
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
97290
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
97291
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
97292
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
97293
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
97294
+ */
97295
+ function sliceAndTrimEndOf(str2, startPtr, endPtr) {
97296
+ let value = str2.slice(startPtr, endPtr);
97297
+ let commentIdx = value.indexOf("#");
97298
+ if (commentIdx > -1) {
97299
+ skipComment(str2, commentIdx);
97300
+ value = value.slice(0, commentIdx);
97301
+ }
97302
+ return [value.trimEnd(), commentIdx];
97303
+ }
97304
+ function extractValue(str2, ptr, end, depth, integersAsBigInt) {
97305
+ if (depth === 0) {
97306
+ throw new TomlError("document contains excessively nested structures. aborting.", {
97307
+ toml: str2,
97308
+ ptr
97309
+ });
97310
+ }
97311
+ let c = str2[ptr];
97312
+ if (c === "[" || c === "{") {
97313
+ let [value, endPtr2] = c === "[" ? parseArray(str2, ptr, depth, integersAsBigInt) : parseInlineTable(str2, ptr, depth, integersAsBigInt);
97314
+ if (end) {
97315
+ endPtr2 = skipVoid(str2, endPtr2);
97316
+ if (str2[endPtr2] === ",")
97317
+ endPtr2++;
97318
+ else if (str2[endPtr2] !== end) {
97319
+ throw new TomlError("expected comma or end of structure", {
97320
+ toml: str2,
97321
+ ptr: endPtr2
97322
+ });
97323
+ }
97324
+ }
97325
+ return [value, endPtr2];
97326
+ }
97327
+ let endPtr;
97328
+ if (c === '"' || c === "'") {
97329
+ endPtr = getStringEnd(str2, ptr);
97330
+ let parsed = parseString(str2, ptr, endPtr);
97331
+ if (end) {
97332
+ endPtr = skipVoid(str2, endPtr);
97333
+ if (str2[endPtr] && str2[endPtr] !== "," && str2[endPtr] !== end && str2[endPtr] !== `
97334
+ ` && str2[endPtr] !== "\r") {
97335
+ throw new TomlError("unexpected character encountered", {
97336
+ toml: str2,
97337
+ ptr: endPtr
97338
+ });
97339
+ }
97340
+ endPtr += +(str2[endPtr] === ",");
97341
+ }
97342
+ return [parsed, endPtr];
97343
+ }
97344
+ endPtr = skipUntil(str2, ptr, ",", end);
97345
+ let slice = sliceAndTrimEndOf(str2, ptr, endPtr - +(str2[endPtr - 1] === ","));
97346
+ if (!slice[0]) {
97347
+ throw new TomlError("incomplete key-value declaration: no value specified", {
97348
+ toml: str2,
97349
+ ptr
97350
+ });
97351
+ }
97352
+ if (end && slice[1] > -1) {
97353
+ endPtr = skipVoid(str2, ptr + slice[1]);
97354
+ endPtr += +(str2[endPtr] === ",");
97355
+ }
97356
+ return [
97357
+ parseValue2(slice[0], str2, ptr, integersAsBigInt),
97358
+ endPtr
97359
+ ];
97360
+ }
97361
+
97362
+ // node_modules/smol-toml/dist/struct.js
97363
+ /*!
97364
+ * Copyright (c) Squirrel Chat et al., All rights reserved.
97365
+ * SPDX-License-Identifier: BSD-3-Clause
97366
+ *
97367
+ * Redistribution and use in source and binary forms, with or without
97368
+ * modification, are permitted provided that the following conditions are met:
97369
+ *
97370
+ * 1. Redistributions of source code must retain the above copyright notice, this
97371
+ * list of conditions and the following disclaimer.
97372
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
97373
+ * this list of conditions and the following disclaimer in the
97374
+ * documentation and/or other materials provided with the distribution.
97375
+ * 3. Neither the name of the copyright holder nor the names of its contributors
97376
+ * may be used to endorse or promote products derived from this software without
97377
+ * specific prior written permission.
97378
+ *
97379
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
97380
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
97381
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
97382
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
97383
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
97384
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
97385
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
97386
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
97387
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
97388
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
97389
+ */
97390
+ var KEY_PART_RE = /^[a-zA-Z0-9-_]+[ \t]*$/;
97391
+ function parseKey(str2, ptr, end = "=") {
97392
+ let dot = ptr - 1;
97393
+ let parsed = [];
97394
+ let endPtr = str2.indexOf(end, ptr);
97395
+ if (endPtr < 0) {
97396
+ throw new TomlError("incomplete key-value: cannot find end of key", {
97397
+ toml: str2,
97398
+ ptr
97399
+ });
97400
+ }
97401
+ do {
97402
+ let c = str2[ptr = ++dot];
97403
+ if (c !== " " && c !== "\t") {
97404
+ if (c === '"' || c === "'") {
97405
+ if (c === str2[ptr + 1] && c === str2[ptr + 2]) {
97406
+ throw new TomlError("multiline strings are not allowed in keys", {
97407
+ toml: str2,
97408
+ ptr
97409
+ });
97410
+ }
97411
+ let eos = getStringEnd(str2, ptr);
97412
+ if (eos < 0) {
97413
+ throw new TomlError("unfinished string encountered", {
97414
+ toml: str2,
97415
+ ptr
97416
+ });
97417
+ }
97418
+ dot = str2.indexOf(".", eos);
97419
+ let strEnd = str2.slice(eos, dot < 0 || dot > endPtr ? endPtr : dot);
97420
+ let newLine = indexOfNewline(strEnd);
97421
+ if (newLine > -1) {
97422
+ throw new TomlError("newlines are not allowed in keys", {
97423
+ toml: str2,
97424
+ ptr: ptr + dot + newLine
97425
+ });
97426
+ }
97427
+ if (strEnd.trimStart()) {
97428
+ throw new TomlError("found extra tokens after the string part", {
97429
+ toml: str2,
97430
+ ptr: eos
97431
+ });
97432
+ }
97433
+ if (endPtr < eos) {
97434
+ endPtr = str2.indexOf(end, eos);
97435
+ if (endPtr < 0) {
97436
+ throw new TomlError("incomplete key-value: cannot find end of key", {
97437
+ toml: str2,
97438
+ ptr
97439
+ });
97440
+ }
97441
+ }
97442
+ parsed.push(parseString(str2, ptr, eos));
97443
+ } else {
97444
+ dot = str2.indexOf(".", ptr);
97445
+ let part = str2.slice(ptr, dot < 0 || dot > endPtr ? endPtr : dot);
97446
+ if (!KEY_PART_RE.test(part)) {
97447
+ throw new TomlError("only letter, numbers, dashes and underscores are allowed in keys", {
97448
+ toml: str2,
97449
+ ptr
97450
+ });
97451
+ }
97452
+ parsed.push(part.trimEnd());
97453
+ }
97454
+ }
97455
+ } while (dot + 1 && dot < endPtr);
97456
+ return [parsed, skipVoid(str2, endPtr + 1, true, true)];
97457
+ }
97458
+ function parseInlineTable(str2, ptr, depth, integersAsBigInt) {
97459
+ let res = {};
97460
+ let seen = new Set;
97461
+ let c;
97462
+ ptr++;
97463
+ while ((c = str2[ptr++]) !== "}" && c) {
97464
+ if (c === ",") {
97465
+ throw new TomlError("expected value, found comma", {
97466
+ toml: str2,
97467
+ ptr: ptr - 1
97468
+ });
97469
+ } else if (c === "#")
97470
+ ptr = skipComment(str2, ptr);
97471
+ else if (c !== " " && c !== "\t" && c !== `
97472
+ ` && c !== "\r") {
97473
+ let k;
97474
+ let t = res;
97475
+ let hasOwn = false;
97476
+ let [key, keyEndPtr] = parseKey(str2, ptr - 1);
97477
+ for (let i = 0;i < key.length; i++) {
97478
+ if (i)
97479
+ t = hasOwn ? t[k] : t[k] = {};
97480
+ k = key[i];
97481
+ if ((hasOwn = Object.hasOwn(t, k)) && (typeof t[k] !== "object" || seen.has(t[k]))) {
97482
+ throw new TomlError("trying to redefine an already defined value", {
97483
+ toml: str2,
97484
+ ptr
97485
+ });
97486
+ }
97487
+ if (!hasOwn && k === "__proto__") {
97488
+ Object.defineProperty(t, k, { enumerable: true, configurable: true, writable: true });
97489
+ }
97490
+ }
97491
+ if (hasOwn) {
97492
+ throw new TomlError("trying to redefine an already defined value", {
97493
+ toml: str2,
97494
+ ptr
97495
+ });
97496
+ }
97497
+ let [value, valueEndPtr] = extractValue(str2, keyEndPtr, "}", depth - 1, integersAsBigInt);
97498
+ seen.add(value);
97499
+ t[k] = value;
97500
+ ptr = valueEndPtr;
97501
+ }
97502
+ }
97503
+ if (!c) {
97504
+ throw new TomlError("unfinished table encountered", {
97505
+ toml: str2,
97506
+ ptr
97507
+ });
97508
+ }
97509
+ return [res, ptr];
97510
+ }
97511
+ function parseArray(str2, ptr, depth, integersAsBigInt) {
97512
+ let res = [];
97513
+ let c;
97514
+ ptr++;
97515
+ while ((c = str2[ptr++]) !== "]" && c) {
97516
+ if (c === ",") {
97517
+ throw new TomlError("expected value, found comma", {
97518
+ toml: str2,
97519
+ ptr: ptr - 1
97520
+ });
97521
+ } else if (c === "#")
97522
+ ptr = skipComment(str2, ptr);
97523
+ else if (c !== " " && c !== "\t" && c !== `
97524
+ ` && c !== "\r") {
97525
+ let e = extractValue(str2, ptr - 1, "]", depth - 1, integersAsBigInt);
97526
+ res.push(e[0]);
97527
+ ptr = e[1];
97528
+ }
97529
+ }
97530
+ if (!c) {
97531
+ throw new TomlError("unfinished array encountered", {
97532
+ toml: str2,
97533
+ ptr
97534
+ });
97535
+ }
97536
+ return [res, ptr];
97537
+ }
97538
+
97539
+ // node_modules/smol-toml/dist/parse.js
97540
+ /*!
97541
+ * Copyright (c) Squirrel Chat et al., All rights reserved.
97542
+ * SPDX-License-Identifier: BSD-3-Clause
97543
+ *
97544
+ * Redistribution and use in source and binary forms, with or without
97545
+ * modification, are permitted provided that the following conditions are met:
97546
+ *
97547
+ * 1. Redistributions of source code must retain the above copyright notice, this
97548
+ * list of conditions and the following disclaimer.
97549
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
97550
+ * this list of conditions and the following disclaimer in the
97551
+ * documentation and/or other materials provided with the distribution.
97552
+ * 3. Neither the name of the copyright holder nor the names of its contributors
97553
+ * may be used to endorse or promote products derived from this software without
97554
+ * specific prior written permission.
97555
+ *
97556
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
97557
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
97558
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
97559
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
97560
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
97561
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
97562
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
97563
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
97564
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
97565
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
97566
+ */
97567
+ function peekTable(key, table, meta, type) {
97568
+ let t = table;
97569
+ let m = meta;
97570
+ let k;
97571
+ let hasOwn = false;
97572
+ let state;
97573
+ for (let i = 0;i < key.length; i++) {
97574
+ if (i) {
97575
+ t = hasOwn ? t[k] : t[k] = {};
97576
+ m = (state = m[k]).c;
97577
+ if (type === 0 && (state.t === 1 || state.t === 2)) {
97578
+ return null;
97579
+ }
97580
+ if (state.t === 2) {
97581
+ let l = t.length - 1;
97582
+ t = t[l];
97583
+ m = m[l].c;
97584
+ }
97585
+ }
97586
+ k = key[i];
97587
+ if ((hasOwn = Object.hasOwn(t, k)) && m[k]?.t === 0 && m[k]?.d) {
97588
+ return null;
97589
+ }
97590
+ if (!hasOwn) {
97591
+ if (k === "__proto__") {
97592
+ Object.defineProperty(t, k, { enumerable: true, configurable: true, writable: true });
97593
+ Object.defineProperty(m, k, { enumerable: true, configurable: true, writable: true });
97594
+ }
97595
+ m[k] = {
97596
+ t: i < key.length - 1 && type === 2 ? 3 : type,
97597
+ d: false,
97598
+ i: 0,
97599
+ c: {}
97600
+ };
97601
+ }
97602
+ }
97603
+ state = m[k];
97604
+ if (state.t !== type && !(type === 1 && state.t === 3)) {
97605
+ return null;
97606
+ }
97607
+ if (type === 2) {
97608
+ if (!state.d) {
97609
+ state.d = true;
97610
+ t[k] = [];
97611
+ }
97612
+ t[k].push(t = {});
97613
+ state.c[state.i++] = state = { t: 1, d: false, i: 0, c: {} };
97614
+ }
97615
+ if (state.d) {
97616
+ return null;
97617
+ }
97618
+ state.d = true;
97619
+ if (type === 1) {
97620
+ t = hasOwn ? t[k] : t[k] = {};
97621
+ } else if (type === 0 && hasOwn) {
97622
+ return null;
97623
+ }
97624
+ return [k, t, state.c];
97625
+ }
97626
+ function parse6(toml, { maxDepth = 1000, integersAsBigInt } = {}) {
97627
+ let res = {};
97628
+ let meta = {};
97629
+ let tbl = res;
97630
+ let m = meta;
97631
+ for (let ptr = skipVoid(toml, 0);ptr < toml.length; ) {
97632
+ if (toml[ptr] === "[") {
97633
+ let isTableArray = toml[++ptr] === "[";
97634
+ let k = parseKey(toml, ptr += +isTableArray, "]");
97635
+ if (isTableArray) {
97636
+ if (toml[k[1] - 1] !== "]") {
97637
+ throw new TomlError("expected end of table declaration", {
97638
+ toml,
97639
+ ptr: k[1] - 1
97640
+ });
97641
+ }
97642
+ k[1]++;
97643
+ }
97644
+ let p = peekTable(k[0], res, meta, isTableArray ? 2 : 1);
97645
+ if (!p) {
97646
+ throw new TomlError("trying to redefine an already defined table or value", {
97647
+ toml,
97648
+ ptr
97649
+ });
97650
+ }
97651
+ m = p[2];
97652
+ tbl = p[1];
97653
+ ptr = k[1];
97654
+ } else {
97655
+ let k = parseKey(toml, ptr);
97656
+ let p = peekTable(k[0], tbl, m, 0);
97657
+ if (!p) {
97658
+ throw new TomlError("trying to redefine an already defined table or value", {
97659
+ toml,
97660
+ ptr
97661
+ });
97662
+ }
97663
+ let v = extractValue(toml, k[1], undefined, maxDepth, integersAsBigInt);
97664
+ p[1][p[0]] = v[0];
97665
+ ptr = v[1];
97666
+ }
97667
+ ptr = skipVoid(toml, ptr, true);
97668
+ if (toml[ptr] && toml[ptr] !== `
97669
+ ` && toml[ptr] !== "\r") {
97670
+ throw new TomlError("each key-value declaration must be followed by an end-of-line", {
97671
+ toml,
97672
+ ptr
97673
+ });
97674
+ }
97675
+ ptr = skipVoid(toml, ptr);
97676
+ }
97677
+ return res;
97678
+ }
97679
+
97680
+ // node_modules/smol-toml/dist/stringify.js
97681
+ /*!
97682
+ * Copyright (c) Squirrel Chat et al., All rights reserved.
97683
+ * SPDX-License-Identifier: BSD-3-Clause
97684
+ *
97685
+ * Redistribution and use in source and binary forms, with or without
97686
+ * modification, are permitted provided that the following conditions are met:
97687
+ *
97688
+ * 1. Redistributions of source code must retain the above copyright notice, this
97689
+ * list of conditions and the following disclaimer.
97690
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
97691
+ * this list of conditions and the following disclaimer in the
97692
+ * documentation and/or other materials provided with the distribution.
97693
+ * 3. Neither the name of the copyright holder nor the names of its contributors
97694
+ * may be used to endorse or promote products derived from this software without
97695
+ * specific prior written permission.
97696
+ *
97697
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
97698
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
97699
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
97700
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
97701
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
97702
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
97703
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
97704
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
97705
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
97706
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
97707
+ */
97708
+ var BARE_KEY = /^[a-z0-9-_]+$/i;
97709
+ function extendedTypeOf(obj) {
97710
+ let type = typeof obj;
97711
+ if (type === "object") {
97712
+ if (Array.isArray(obj))
97713
+ return "array";
97714
+ if (obj instanceof Date)
97715
+ return "date";
97716
+ }
97717
+ return type;
97718
+ }
97719
+ function isArrayOfTables(obj) {
97720
+ for (let i = 0;i < obj.length; i++) {
97721
+ if (extendedTypeOf(obj[i]) !== "object")
97722
+ return false;
97723
+ }
97724
+ return obj.length != 0;
97725
+ }
97726
+ function formatString(s) {
97727
+ return JSON.stringify(s).replace(/\x7f/g, "\\u007f");
97728
+ }
97729
+ function stringifyValue(val, type, depth, numberAsFloat) {
97730
+ if (depth === 0) {
97731
+ throw new Error("Could not stringify the object: maximum object depth exceeded");
97732
+ }
97733
+ if (type === "number") {
97734
+ if (isNaN(val))
97735
+ return "nan";
97736
+ if (val === Infinity)
97737
+ return "inf";
97738
+ if (val === -Infinity)
97739
+ return "-inf";
97740
+ if (numberAsFloat && Number.isInteger(val))
97741
+ return val.toFixed(1);
97742
+ return val.toString();
97743
+ }
97744
+ if (type === "bigint" || type === "boolean") {
97745
+ return val.toString();
97746
+ }
97747
+ if (type === "string") {
97748
+ return formatString(val);
97749
+ }
97750
+ if (type === "date") {
97751
+ if (isNaN(val.getTime())) {
97752
+ throw new TypeError("cannot serialize invalid date");
97753
+ }
97754
+ return val.toISOString();
97755
+ }
97756
+ if (type === "object") {
97757
+ return stringifyInlineTable(val, depth, numberAsFloat);
97758
+ }
97759
+ if (type === "array") {
97760
+ return stringifyArray(val, depth, numberAsFloat);
97761
+ }
97762
+ }
97763
+ function stringifyInlineTable(obj, depth, numberAsFloat) {
97764
+ let keys = Object.keys(obj);
97765
+ if (keys.length === 0)
97766
+ return "{}";
97767
+ let res = "{ ";
97768
+ for (let i = 0;i < keys.length; i++) {
97769
+ let k = keys[i];
97770
+ if (i)
97771
+ res += ", ";
97772
+ res += BARE_KEY.test(k) ? k : formatString(k);
97773
+ res += " = ";
97774
+ res += stringifyValue(obj[k], extendedTypeOf(obj[k]), depth - 1, numberAsFloat);
97775
+ }
97776
+ return res + " }";
97777
+ }
97778
+ function stringifyArray(array, depth, numberAsFloat) {
97779
+ if (array.length === 0)
97780
+ return "[]";
97781
+ let res = "[ ";
97782
+ for (let i = 0;i < array.length; i++) {
97783
+ if (i)
97784
+ res += ", ";
97785
+ if (array[i] === null || array[i] === undefined) {
97786
+ throw new TypeError("arrays cannot contain null or undefined values");
97787
+ }
97788
+ res += stringifyValue(array[i], extendedTypeOf(array[i]), depth - 1, numberAsFloat);
97789
+ }
97790
+ return res + " ]";
97791
+ }
97792
+ function stringifyArrayTable(array, key, depth, numberAsFloat) {
97793
+ if (depth === 0) {
97794
+ throw new Error("Could not stringify the object: maximum object depth exceeded");
97795
+ }
97796
+ let res = "";
97797
+ for (let i = 0;i < array.length; i++) {
97798
+ res += `${res && `
97799
+ `}[[${key}]]
97800
+ `;
97801
+ res += stringifyTable(0, array[i], key, depth, numberAsFloat);
97802
+ }
97803
+ return res;
97804
+ }
97805
+ function stringifyTable(tableKey, obj, prefix, depth, numberAsFloat) {
97806
+ if (depth === 0) {
97807
+ throw new Error("Could not stringify the object: maximum object depth exceeded");
97808
+ }
97809
+ let preamble = "";
97810
+ let tables = "";
97811
+ let keys = Object.keys(obj);
97812
+ for (let i = 0;i < keys.length; i++) {
97813
+ let k = keys[i];
97814
+ if (obj[k] !== null && obj[k] !== undefined) {
97815
+ let type = extendedTypeOf(obj[k]);
97816
+ if (type === "symbol" || type === "function") {
97817
+ throw new TypeError(`cannot serialize values of type '${type}'`);
97818
+ }
97819
+ let key = BARE_KEY.test(k) ? k : formatString(k);
97820
+ if (type === "array" && isArrayOfTables(obj[k])) {
97821
+ tables += (tables && `
97822
+ `) + stringifyArrayTable(obj[k], prefix ? `${prefix}.${key}` : key, depth - 1, numberAsFloat);
97823
+ } else if (type === "object") {
97824
+ let tblKey = prefix ? `${prefix}.${key}` : key;
97825
+ tables += (tables && `
97826
+ `) + stringifyTable(tblKey, obj[k], tblKey, depth - 1, numberAsFloat);
97827
+ } else {
97828
+ preamble += key;
97829
+ preamble += " = ";
97830
+ preamble += stringifyValue(obj[k], type, depth, numberAsFloat);
97831
+ preamble += `
97832
+ `;
97833
+ }
97834
+ }
97835
+ }
97836
+ if (tableKey && (preamble || !tables))
97837
+ preamble = preamble ? `[${tableKey}]
97838
+ ${preamble}` : `[${tableKey}]`;
97839
+ return preamble && tables ? `${preamble}
97840
+ ${tables}` : preamble || tables;
97841
+ }
97842
+ function stringify(obj, { maxDepth = 1000, numbersAsFloat = false } = {}) {
97843
+ if (extendedTypeOf(obj) !== "object") {
97844
+ throw new TypeError("stringify can only be called with an object");
97845
+ }
97846
+ let str2 = stringifyTable(0, obj, "", maxDepth, numbersAsFloat);
97847
+ if (str2[str2.length - 1] !== `
97848
+ `)
97849
+ return str2 + `
97850
+ `;
97851
+ return str2;
97852
+ }
97853
+
97854
+ // node_modules/smol-toml/dist/index.js
97855
+ /*!
97856
+ * Copyright (c) Squirrel Chat et al., All rights reserved.
97857
+ * SPDX-License-Identifier: BSD-3-Clause
97858
+ *
97859
+ * Redistribution and use in source and binary forms, with or without
97860
+ * modification, are permitted provided that the following conditions are met:
97861
+ *
97862
+ * 1. Redistributions of source code must retain the above copyright notice, this
97863
+ * list of conditions and the following disclaimer.
97864
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
97865
+ * this list of conditions and the following disclaimer in the
97866
+ * documentation and/or other materials provided with the distribution.
97867
+ * 3. Neither the name of the copyright holder nor the names of its contributors
97868
+ * may be used to endorse or promote products derived from this software without
97869
+ * specific prior written permission.
97870
+ *
97871
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
97872
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
97873
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
97874
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
97875
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
97876
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
97877
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
97878
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
97879
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
97880
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
97881
+ */
97882
+
96767
97883
  // src/sync/mcp/mcp.ts
96768
97884
  var SERVER_NAME_SEPARATOR = "--";
96769
97885
  var KEY_SEPARATOR = ".";
@@ -96831,24 +97947,40 @@ function deleteNestedValue(obj, key) {
96831
97947
  }
96832
97948
  }
96833
97949
  }
96834
- function readConfigFile(projectRoot, configFile) {
96835
- const fullPath = join25(projectRoot, configFile);
97950
+ function resolveFormat(filePath, explicit) {
97951
+ if (explicit)
97952
+ return explicit;
97953
+ return filePath.endsWith(".toml") ? "toml" : "json";
97954
+ }
97955
+ function readConfigFile(options2) {
97956
+ const fullPath = join25(options2.projectRoot, options2.filePath);
96836
97957
  if (!fs.exists(fullPath)) {
96837
97958
  return {};
96838
97959
  }
96839
97960
  try {
96840
- return JSON.parse(fs.readFile(fullPath));
97961
+ const raw2 = fs.readFile(fullPath);
97962
+ const format = resolveFormat(options2.filePath, options2.format);
97963
+ if (format === "toml") {
97964
+ return parse6(raw2);
97965
+ }
97966
+ return JSON.parse(raw2);
96841
97967
  } catch {
96842
97968
  return {};
96843
97969
  }
96844
97970
  }
96845
- function writeConfigFile(projectRoot, configFile, data) {
96846
- const fullPath = join25(projectRoot, configFile);
97971
+ function writeConfigFile(options2) {
97972
+ const fullPath = join25(options2.projectRoot, options2.filePath);
96847
97973
  const dir = dirname8(fullPath);
96848
97974
  if (!fs.exists(dir)) {
96849
97975
  fs.mkdir(dir, { recursive: true });
96850
97976
  }
96851
- fs.writeFile(fullPath, JSON.stringify(data, null, 2) + `
97977
+ const format = resolveFormat(options2.filePath, options2.format);
97978
+ if (format === "toml") {
97979
+ fs.writeFile(fullPath, stringify(options2.data) + `
97980
+ `);
97981
+ return;
97982
+ }
97983
+ fs.writeFile(fullPath, JSON.stringify(options2.data, null, 2) + `
96852
97984
  `);
96853
97985
  }
96854
97986
  function resolveExecutablePath(projectRoot, artifactId, content) {
@@ -96887,9 +98019,7 @@ function installMcps(projectRoot, artifactId, mcpFiles, activeTargets) {
96887
98019
  return result;
96888
98020
  }
96889
98021
  for (const [targetId, mcpConfig] of targetConfigs) {
96890
- if (mcpConfig.format && mcpConfig.format !== "json")
96891
- continue;
96892
- const configData = readConfigFile(projectRoot, mcpConfig.configFile);
98022
+ const configData = readConfigFile({ projectRoot, filePath: mcpConfig.configFile, format: mcpConfig.format });
96893
98023
  const servers = getNestedValue(configData, mcpConfig.serverKey) ?? {};
96894
98024
  for (const serverName of Object.keys(servers)) {
96895
98025
  if (isOwnedByArtifact(serverName, artifactId)) {
@@ -96903,7 +98033,7 @@ function installMcps(projectRoot, artifactId, mcpFiles, activeTargets) {
96903
98033
  servers[serverName] = mcpConfig.transform(serverName, content, executablePath);
96904
98034
  }
96905
98035
  setNestedValue(configData, mcpConfig.serverKey, servers);
96906
- writeConfigFile(projectRoot, mcpConfig.configFile, configData);
98036
+ writeConfigFile({ projectRoot, filePath: mcpConfig.configFile, data: configData, format: mcpConfig.format });
96907
98037
  result.targets.push(targetId);
96908
98038
  result.installed += mcpFiles.length;
96909
98039
  }
@@ -96913,9 +98043,7 @@ function uninstallMcps(projectRoot, artifactId, activeTargets) {
96913
98043
  let removedCount = 0;
96914
98044
  const targetConfigs = collectTargetConfigs(activeTargets);
96915
98045
  for (const [_targetId, mcpConfig] of targetConfigs) {
96916
- if (mcpConfig.format && mcpConfig.format !== "json")
96917
- continue;
96918
- const configData = readConfigFile(projectRoot, mcpConfig.configFile);
98046
+ const configData = readConfigFile({ projectRoot, filePath: mcpConfig.configFile, format: mcpConfig.format });
96919
98047
  const servers = getNestedValue(configData, mcpConfig.serverKey);
96920
98048
  if (!servers)
96921
98049
  continue;
@@ -96933,7 +98061,7 @@ function uninstallMcps(projectRoot, artifactId, activeTargets) {
96933
98061
  } else {
96934
98062
  deleteNestedValue(configData, mcpConfig.serverKey);
96935
98063
  }
96936
- writeConfigFile(projectRoot, mcpConfig.configFile, configData);
98064
+ writeConfigFile({ projectRoot, filePath: mcpConfig.configFile, data: configData, format: mcpConfig.format });
96937
98065
  }
96938
98066
  }
96939
98067
  return removedCount;
@@ -98067,8 +99195,8 @@ function resolveRegistry3(scope, localConfig) {
98067
99195
  }
98068
99196
 
98069
99197
  // node_modules/@supabase/supabase-js/dist/index.mjs
98070
- var exports_dist3 = {};
98071
- __export(exports_dist3, {
99198
+ var exports_dist4 = {};
99199
+ __export(exports_dist4, {
98072
99200
  createClient: () => createClient,
98073
99201
  SupabaseClient: () => SupabaseClient,
98074
99202
  PostgrestError: () => PostgrestError,
@@ -98081,8 +99209,8 @@ __export(exports_dist3, {
98081
99209
  var import_functions_js = __toESM(require_main(), 1);
98082
99210
 
98083
99211
  // node_modules/@supabase/postgrest-js/dist/index.mjs
98084
- var exports_dist = {};
98085
- __export(exports_dist, {
99212
+ var exports_dist2 = {};
99213
+ __export(exports_dist2, {
98086
99214
  default: () => src_default,
98087
99215
  PostgrestTransformBuilder: () => PostgrestTransformBuilder,
98088
99216
  PostgrestQueryBuilder: () => PostgrestQueryBuilder,
@@ -98691,8 +99819,8 @@ var src_default = {
98691
99819
  var import_realtime_js = __toESM(require_main2(), 1);
98692
99820
 
98693
99821
  // node_modules/@supabase/storage-js/dist/index.mjs
98694
- var exports_dist2 = {};
98695
- __export(exports_dist2, {
99822
+ var exports_dist3 = {};
99823
+ __export(exports_dist3, {
98696
99824
  isStorageVectorsError: () => isStorageVectorsError,
98697
99825
  isStorageError: () => isStorageError,
98698
99826
  VectorIndexScope: () => VectorIndexScope,
@@ -99989,8 +101117,8 @@ var StorageClient = class extends StorageBucketApi {
99989
101117
 
99990
101118
  // node_modules/@supabase/supabase-js/dist/index.mjs
99991
101119
  var import_auth_js = __toESM(require_main3(), 1);
99992
- __reExport(exports_dist3, __toESM(require_main2(), 1));
99993
- __reExport(exports_dist3, __toESM(require_main3(), 1));
101120
+ __reExport(exports_dist4, __toESM(require_main2(), 1));
101121
+ __reExport(exports_dist4, __toESM(require_main3(), 1));
99994
101122
  var version2 = "2.93.3";
99995
101123
  var JS_ENV = "";
99996
101124
  if (typeof Deno !== "undefined")
@@ -102549,7 +103677,7 @@ var whoamiCommand = new Command("whoami").description("Show current user").actio
102549
103677
  // package.json
102550
103678
  var package_default = {
102551
103679
  name: "@grekt/cli",
102552
- version: "6.35.0",
103680
+ version: "6.36.0",
102553
103681
  description: "AI tools versioned, synced, and shared across tools and teams",
102554
103682
  type: "module",
102555
103683
  bin: {
@@ -102593,6 +103721,7 @@ var package_default = {
102593
103721
  "fast-glob": "^3.3.3",
102594
103722
  "gray-matter": "^4.0.3",
102595
103723
  ora: "^8.1.1",
103724
+ "smol-toml": "^1.6.0",
102596
103725
  tar: "^7.4.0",
102597
103726
  yaml: "^2.6.1",
102598
103727
  zod: "^3.24.1"