@get-bb/plugin-sdk 0.5.16 → 0.5.23

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.
@@ -3281,7 +3281,8 @@ var BRIDGE_JSON_RPC_ERRORS = {
3281
3281
  BRIDGE_ERROR: -32e3,
3282
3282
  NO_ACTIVE_TURN: -32001,
3283
3283
  SESSION_NOT_RESTORABLE: -32002,
3284
- FORK_CHECKPOINT_UNSUPPORTED: -32003
3284
+ FORK_CHECKPOINT_UNSUPPORTED: -32003,
3285
+ MISSING_EXECUTABLE: -32004
3285
3286
  };
3286
3287
  var providerRecoveryHintSchema = z24.object({
3287
3288
  kind: providerRecoveryKindSchema,
@@ -4618,12 +4619,33 @@ var acpLooseConfigOptionSchema = z35.object({
4618
4619
  currentValue: z35.unknown().optional(),
4619
4620
  options: z35.unknown().optional()
4620
4621
  }).passthrough();
4622
+ var acpConfigOptionSelectGroupSchema = z35.object({
4623
+ group: z35.string(),
4624
+ options: z35.array(z35.unknown())
4625
+ }).passthrough();
4626
+ function flattenAcpConfigOptionGroups(option) {
4627
+ if (typeof option !== "object" || option === null) {
4628
+ return option;
4629
+ }
4630
+ const { options } = option;
4631
+ if (!Array.isArray(options)) {
4632
+ return option;
4633
+ }
4634
+ return {
4635
+ ...option,
4636
+ options: options.flatMap((entry) => {
4637
+ const group = acpConfigOptionSelectGroupSchema.safeParse(entry);
4638
+ return group.success ? group.data.options : [entry];
4639
+ })
4640
+ };
4641
+ }
4621
4642
  function parseAcpConfigOptions(options, ctx) {
4622
4643
  if (options == null) {
4623
4644
  return void 0;
4624
4645
  }
4625
4646
  const parsedOptions = [];
4626
- for (const option of options) {
4647
+ for (const rawOption of options) {
4648
+ const option = flattenAcpConfigOptionGroups(rawOption);
4627
4649
  const loose = acpLooseConfigOptionSchema.safeParse(option);
4628
4650
  if (!loose.success) {
4629
4651
  continue;
@@ -4652,7 +4652,8 @@ var BRIDGE_JSON_RPC_ERRORS = {
4652
4652
  BRIDGE_ERROR: -32e3,
4653
4653
  NO_ACTIVE_TURN: -32001,
4654
4654
  SESSION_NOT_RESTORABLE: -32002,
4655
- FORK_CHECKPOINT_UNSUPPORTED: -32003
4655
+ FORK_CHECKPOINT_UNSUPPORTED: -32003,
4656
+ MISSING_EXECUTABLE: -32004
4656
4657
  };
4657
4658
  var providerRecoveryHintSchema = z25.object({
4658
4659
  kind: providerRecoveryKindSchema,
@@ -4,13 +4,7 @@ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
4
  var __getOwnPropNames = Object.getOwnPropertyNames;
5
5
  var __getProtoOf = Object.getPrototypeOf;
6
6
  var __hasOwnProp = Object.prototype.hasOwnProperty;
7
- var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
8
- get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
9
- }) : x)(function(x) {
10
- if (typeof require !== "undefined") return require.apply(this, arguments);
11
- throw Error('Dynamic require of "' + x + '" is not supported');
12
- });
13
- var __commonJS = (cb, mod) => function __require2() {
7
+ var __commonJS = (cb, mod) => function __require() {
14
8
  try {
15
9
  return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
16
10
  } catch (e) {
@@ -545,503 +539,6 @@ var require_valid = __commonJS({
545
539
  }
546
540
  });
547
541
 
548
- // ../../node_modules/.pnpm/isexe@2.0.0/node_modules/isexe/windows.js
549
- var require_windows = __commonJS({
550
- "../../node_modules/.pnpm/isexe@2.0.0/node_modules/isexe/windows.js"(exports, module) {
551
- module.exports = isexe;
552
- isexe.sync = sync;
553
- var fs = __require("fs");
554
- function checkPathExt(path2, options) {
555
- var pathext = options.pathExt !== void 0 ? options.pathExt : process.env.PATHEXT;
556
- if (!pathext) {
557
- return true;
558
- }
559
- pathext = pathext.split(";");
560
- if (pathext.indexOf("") !== -1) {
561
- return true;
562
- }
563
- for (var i = 0; i < pathext.length; i++) {
564
- var p = pathext[i].toLowerCase();
565
- if (p && path2.substr(-p.length).toLowerCase() === p) {
566
- return true;
567
- }
568
- }
569
- return false;
570
- }
571
- function checkStat(stat, path2, options) {
572
- if (!stat.isSymbolicLink() && !stat.isFile()) {
573
- return false;
574
- }
575
- return checkPathExt(path2, options);
576
- }
577
- function isexe(path2, options, cb) {
578
- fs.stat(path2, function(er, stat) {
579
- cb(er, er ? false : checkStat(stat, path2, options));
580
- });
581
- }
582
- function sync(path2, options) {
583
- return checkStat(fs.statSync(path2), path2, options);
584
- }
585
- }
586
- });
587
-
588
- // ../../node_modules/.pnpm/isexe@2.0.0/node_modules/isexe/mode.js
589
- var require_mode = __commonJS({
590
- "../../node_modules/.pnpm/isexe@2.0.0/node_modules/isexe/mode.js"(exports, module) {
591
- module.exports = isexe;
592
- isexe.sync = sync;
593
- var fs = __require("fs");
594
- function isexe(path2, options, cb) {
595
- fs.stat(path2, function(er, stat) {
596
- cb(er, er ? false : checkStat(stat, options));
597
- });
598
- }
599
- function sync(path2, options) {
600
- return checkStat(fs.statSync(path2), options);
601
- }
602
- function checkStat(stat, options) {
603
- return stat.isFile() && checkMode(stat, options);
604
- }
605
- function checkMode(stat, options) {
606
- var mod = stat.mode;
607
- var uid = stat.uid;
608
- var gid = stat.gid;
609
- var myUid = options.uid !== void 0 ? options.uid : process.getuid && process.getuid();
610
- var myGid = options.gid !== void 0 ? options.gid : process.getgid && process.getgid();
611
- var u = parseInt("100", 8);
612
- var g = parseInt("010", 8);
613
- var o = parseInt("001", 8);
614
- var ug = u | g;
615
- var ret = mod & o || mod & g && gid === myGid || mod & u && uid === myUid || mod & ug && myUid === 0;
616
- return ret;
617
- }
618
- }
619
- });
620
-
621
- // ../../node_modules/.pnpm/isexe@2.0.0/node_modules/isexe/index.js
622
- var require_isexe = __commonJS({
623
- "../../node_modules/.pnpm/isexe@2.0.0/node_modules/isexe/index.js"(exports, module) {
624
- var fs = __require("fs");
625
- var core;
626
- if (process.platform === "win32" || global.TESTING_WINDOWS) {
627
- core = require_windows();
628
- } else {
629
- core = require_mode();
630
- }
631
- module.exports = isexe;
632
- isexe.sync = sync;
633
- function isexe(path2, options, cb) {
634
- if (typeof options === "function") {
635
- cb = options;
636
- options = {};
637
- }
638
- if (!cb) {
639
- if (typeof Promise !== "function") {
640
- throw new TypeError("callback not provided");
641
- }
642
- return new Promise(function(resolve2, reject) {
643
- isexe(path2, options || {}, function(er, is) {
644
- if (er) {
645
- reject(er);
646
- } else {
647
- resolve2(is);
648
- }
649
- });
650
- });
651
- }
652
- core(path2, options || {}, function(er, is) {
653
- if (er) {
654
- if (er.code === "EACCES" || options && options.ignoreErrors) {
655
- er = null;
656
- is = false;
657
- }
658
- }
659
- cb(er, is);
660
- });
661
- }
662
- function sync(path2, options) {
663
- try {
664
- return core.sync(path2, options || {});
665
- } catch (er) {
666
- if (options && options.ignoreErrors || er.code === "EACCES") {
667
- return false;
668
- } else {
669
- throw er;
670
- }
671
- }
672
- }
673
- }
674
- });
675
-
676
- // ../../node_modules/.pnpm/which@2.0.2/node_modules/which/which.js
677
- var require_which = __commonJS({
678
- "../../node_modules/.pnpm/which@2.0.2/node_modules/which/which.js"(exports, module) {
679
- var isWindows = process.platform === "win32" || process.env.OSTYPE === "cygwin" || process.env.OSTYPE === "msys";
680
- var path2 = __require("path");
681
- var COLON = isWindows ? ";" : ":";
682
- var isexe = require_isexe();
683
- var getNotFoundError = (cmd) => Object.assign(new Error(`not found: ${cmd}`), { code: "ENOENT" });
684
- var getPathInfo = (cmd, opt) => {
685
- const colon = opt.colon || COLON;
686
- const pathEnv = cmd.match(/\//) || isWindows && cmd.match(/\\/) ? [""] : [
687
- // windows always checks the cwd first
688
- ...isWindows ? [process.cwd()] : [],
689
- ...(opt.path || process.env.PATH || /* istanbul ignore next: very unusual */
690
- "").split(colon)
691
- ];
692
- const pathExtExe = isWindows ? opt.pathExt || process.env.PATHEXT || ".EXE;.CMD;.BAT;.COM" : "";
693
- const pathExt = isWindows ? pathExtExe.split(colon) : [""];
694
- if (isWindows) {
695
- if (cmd.indexOf(".") !== -1 && pathExt[0] !== "")
696
- pathExt.unshift("");
697
- }
698
- return {
699
- pathEnv,
700
- pathExt,
701
- pathExtExe
702
- };
703
- };
704
- var which = (cmd, opt, cb) => {
705
- if (typeof opt === "function") {
706
- cb = opt;
707
- opt = {};
708
- }
709
- if (!opt)
710
- opt = {};
711
- const { pathEnv, pathExt, pathExtExe } = getPathInfo(cmd, opt);
712
- const found = [];
713
- const step = (i) => new Promise((resolve2, reject) => {
714
- if (i === pathEnv.length)
715
- return opt.all && found.length ? resolve2(found) : reject(getNotFoundError(cmd));
716
- const ppRaw = pathEnv[i];
717
- const pathPart = /^".*"$/.test(ppRaw) ? ppRaw.slice(1, -1) : ppRaw;
718
- const pCmd = path2.join(pathPart, cmd);
719
- const p = !pathPart && /^\.[\\\/]/.test(cmd) ? cmd.slice(0, 2) + pCmd : pCmd;
720
- resolve2(subStep(p, i, 0));
721
- });
722
- const subStep = (p, i, ii) => new Promise((resolve2, reject) => {
723
- if (ii === pathExt.length)
724
- return resolve2(step(i + 1));
725
- const ext = pathExt[ii];
726
- isexe(p + ext, { pathExt: pathExtExe }, (er, is) => {
727
- if (!er && is) {
728
- if (opt.all)
729
- found.push(p + ext);
730
- else
731
- return resolve2(p + ext);
732
- }
733
- return resolve2(subStep(p, i, ii + 1));
734
- });
735
- });
736
- return cb ? step(0).then((res) => cb(null, res), cb) : step(0);
737
- };
738
- var whichSync = (cmd, opt) => {
739
- opt = opt || {};
740
- const { pathEnv, pathExt, pathExtExe } = getPathInfo(cmd, opt);
741
- const found = [];
742
- for (let i = 0; i < pathEnv.length; i++) {
743
- const ppRaw = pathEnv[i];
744
- const pathPart = /^".*"$/.test(ppRaw) ? ppRaw.slice(1, -1) : ppRaw;
745
- const pCmd = path2.join(pathPart, cmd);
746
- const p = !pathPart && /^\.[\\\/]/.test(cmd) ? cmd.slice(0, 2) + pCmd : pCmd;
747
- for (let j = 0; j < pathExt.length; j++) {
748
- const cur = p + pathExt[j];
749
- try {
750
- const is = isexe.sync(cur, { pathExt: pathExtExe });
751
- if (is) {
752
- if (opt.all)
753
- found.push(cur);
754
- else
755
- return cur;
756
- }
757
- } catch (ex) {
758
- }
759
- }
760
- }
761
- if (opt.all && found.length)
762
- return found;
763
- if (opt.nothrow)
764
- return null;
765
- throw getNotFoundError(cmd);
766
- };
767
- module.exports = which;
768
- which.sync = whichSync;
769
- }
770
- });
771
-
772
- // ../../node_modules/.pnpm/path-key@3.1.1/node_modules/path-key/index.js
773
- var require_path_key = __commonJS({
774
- "../../node_modules/.pnpm/path-key@3.1.1/node_modules/path-key/index.js"(exports, module) {
775
- "use strict";
776
- var pathKey = (options = {}) => {
777
- const environment = options.env || process.env;
778
- const platform = options.platform || process.platform;
779
- if (platform !== "win32") {
780
- return "PATH";
781
- }
782
- return Object.keys(environment).reverse().find((key) => key.toUpperCase() === "PATH") || "Path";
783
- };
784
- module.exports = pathKey;
785
- module.exports.default = pathKey;
786
- }
787
- });
788
-
789
- // ../../node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/lib/util/resolveCommand.js
790
- var require_resolveCommand = __commonJS({
791
- "../../node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/lib/util/resolveCommand.js"(exports, module) {
792
- "use strict";
793
- var path2 = __require("path");
794
- var which = require_which();
795
- var getPathKey = require_path_key();
796
- function resolveCommandAttempt(parsed, withoutPathExt) {
797
- const env = parsed.options.env || process.env;
798
- const cwd = process.cwd();
799
- const hasCustomCwd = parsed.options.cwd != null;
800
- const shouldSwitchCwd = hasCustomCwd && process.chdir !== void 0 && !process.chdir.disabled;
801
- if (shouldSwitchCwd) {
802
- try {
803
- process.chdir(parsed.options.cwd);
804
- } catch (err) {
805
- }
806
- }
807
- let resolved;
808
- try {
809
- resolved = which.sync(parsed.command, {
810
- path: env[getPathKey({ env })],
811
- pathExt: withoutPathExt ? path2.delimiter : void 0
812
- });
813
- } catch (e) {
814
- } finally {
815
- if (shouldSwitchCwd) {
816
- process.chdir(cwd);
817
- }
818
- }
819
- if (resolved) {
820
- resolved = path2.resolve(hasCustomCwd ? parsed.options.cwd : "", resolved);
821
- }
822
- return resolved;
823
- }
824
- function resolveCommand(parsed) {
825
- return resolveCommandAttempt(parsed) || resolveCommandAttempt(parsed, true);
826
- }
827
- module.exports = resolveCommand;
828
- }
829
- });
830
-
831
- // ../../node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/lib/util/escape.js
832
- var require_escape = __commonJS({
833
- "../../node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/lib/util/escape.js"(exports, module) {
834
- "use strict";
835
- var metaCharsRegExp = /([()\][%!^"`<>&|;, *?])/g;
836
- function escapeCommand(arg) {
837
- arg = arg.replace(metaCharsRegExp, "^$1");
838
- return arg;
839
- }
840
- function escapeArgument(arg, doubleEscapeMetaChars) {
841
- arg = `${arg}`;
842
- arg = arg.replace(/(?=(\\+?)?)\1"/g, '$1$1\\"');
843
- arg = arg.replace(/(?=(\\+?)?)\1$/, "$1$1");
844
- arg = `"${arg}"`;
845
- arg = arg.replace(metaCharsRegExp, "^$1");
846
- if (doubleEscapeMetaChars) {
847
- arg = arg.replace(metaCharsRegExp, "^$1");
848
- }
849
- return arg;
850
- }
851
- module.exports.command = escapeCommand;
852
- module.exports.argument = escapeArgument;
853
- }
854
- });
855
-
856
- // ../../node_modules/.pnpm/shebang-regex@3.0.0/node_modules/shebang-regex/index.js
857
- var require_shebang_regex = __commonJS({
858
- "../../node_modules/.pnpm/shebang-regex@3.0.0/node_modules/shebang-regex/index.js"(exports, module) {
859
- "use strict";
860
- module.exports = /^#!(.*)/;
861
- }
862
- });
863
-
864
- // ../../node_modules/.pnpm/shebang-command@2.0.0/node_modules/shebang-command/index.js
865
- var require_shebang_command = __commonJS({
866
- "../../node_modules/.pnpm/shebang-command@2.0.0/node_modules/shebang-command/index.js"(exports, module) {
867
- "use strict";
868
- var shebangRegex = require_shebang_regex();
869
- module.exports = (string = "") => {
870
- const match = string.match(shebangRegex);
871
- if (!match) {
872
- return null;
873
- }
874
- const [path2, argument] = match[0].replace(/#! ?/, "").split(" ");
875
- const binary = path2.split("/").pop();
876
- if (binary === "env") {
877
- return argument;
878
- }
879
- return argument ? `${binary} ${argument}` : binary;
880
- };
881
- }
882
- });
883
-
884
- // ../../node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/lib/util/readShebang.js
885
- var require_readShebang = __commonJS({
886
- "../../node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/lib/util/readShebang.js"(exports, module) {
887
- "use strict";
888
- var fs = __require("fs");
889
- var shebangCommand = require_shebang_command();
890
- function readShebang(command) {
891
- const size = 150;
892
- const buffer = Buffer.alloc(size);
893
- let fd;
894
- try {
895
- fd = fs.openSync(command, "r");
896
- fs.readSync(fd, buffer, 0, size, 0);
897
- fs.closeSync(fd);
898
- } catch (e) {
899
- }
900
- return shebangCommand(buffer.toString());
901
- }
902
- module.exports = readShebang;
903
- }
904
- });
905
-
906
- // ../../node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/lib/parse.js
907
- var require_parse2 = __commonJS({
908
- "../../node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/lib/parse.js"(exports, module) {
909
- "use strict";
910
- var path2 = __require("path");
911
- var resolveCommand = require_resolveCommand();
912
- var escape = require_escape();
913
- var readShebang = require_readShebang();
914
- var isWin = process.platform === "win32";
915
- var isExecutableRegExp = /\.(?:com|exe)$/i;
916
- var isCmdShimRegExp = /node_modules[\\/].bin[\\/][^\\/]+\.cmd$/i;
917
- function detectShebang(parsed) {
918
- parsed.file = resolveCommand(parsed);
919
- const shebang = parsed.file && readShebang(parsed.file);
920
- if (shebang) {
921
- parsed.args.unshift(parsed.file);
922
- parsed.command = shebang;
923
- return resolveCommand(parsed);
924
- }
925
- return parsed.file;
926
- }
927
- function parseNonShell(parsed) {
928
- if (!isWin) {
929
- return parsed;
930
- }
931
- const commandFile = detectShebang(parsed);
932
- const needsShell = !isExecutableRegExp.test(commandFile);
933
- if (parsed.options.forceShell || needsShell) {
934
- const needsDoubleEscapeMetaChars = isCmdShimRegExp.test(commandFile);
935
- parsed.command = path2.normalize(parsed.command);
936
- parsed.command = escape.command(parsed.command);
937
- parsed.args = parsed.args.map((arg) => escape.argument(arg, needsDoubleEscapeMetaChars));
938
- const shellCommand = [parsed.command].concat(parsed.args).join(" ");
939
- parsed.args = ["/d", "/s", "/c", `"${shellCommand}"`];
940
- parsed.command = process.env.comspec || "cmd.exe";
941
- parsed.options.windowsVerbatimArguments = true;
942
- }
943
- return parsed;
944
- }
945
- function parse(command, args, options) {
946
- if (args && !Array.isArray(args)) {
947
- options = args;
948
- args = null;
949
- }
950
- args = args ? args.slice(0) : [];
951
- options = Object.assign({}, options);
952
- const parsed = {
953
- command,
954
- args,
955
- options,
956
- file: void 0,
957
- original: {
958
- command,
959
- args
960
- }
961
- };
962
- return options.shell ? parsed : parseNonShell(parsed);
963
- }
964
- module.exports = parse;
965
- }
966
- });
967
-
968
- // ../../node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/lib/enoent.js
969
- var require_enoent = __commonJS({
970
- "../../node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/lib/enoent.js"(exports, module) {
971
- "use strict";
972
- var isWin = process.platform === "win32";
973
- function notFoundError(original, syscall) {
974
- return Object.assign(new Error(`${syscall} ${original.command} ENOENT`), {
975
- code: "ENOENT",
976
- errno: "ENOENT",
977
- syscall: `${syscall} ${original.command}`,
978
- path: original.command,
979
- spawnargs: original.args
980
- });
981
- }
982
- function hookChildProcess(cp, parsed) {
983
- if (!isWin) {
984
- return;
985
- }
986
- const originalEmit = cp.emit;
987
- cp.emit = function(name, arg1) {
988
- if (name === "exit") {
989
- const err = verifyENOENT(arg1, parsed);
990
- if (err) {
991
- return originalEmit.call(cp, "error", err);
992
- }
993
- }
994
- return originalEmit.apply(cp, arguments);
995
- };
996
- }
997
- function verifyENOENT(status, parsed) {
998
- if (isWin && status === 1 && !parsed.file) {
999
- return notFoundError(parsed.original, "spawn");
1000
- }
1001
- return null;
1002
- }
1003
- function verifyENOENTSync(status, parsed) {
1004
- if (isWin && status === 1 && !parsed.file) {
1005
- return notFoundError(parsed.original, "spawnSync");
1006
- }
1007
- return null;
1008
- }
1009
- module.exports = {
1010
- hookChildProcess,
1011
- verifyENOENT,
1012
- verifyENOENTSync,
1013
- notFoundError
1014
- };
1015
- }
1016
- });
1017
-
1018
- // ../../node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/index.js
1019
- var require_cross_spawn = __commonJS({
1020
- "../../node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/index.js"(exports, module) {
1021
- "use strict";
1022
- var cp = __require("child_process");
1023
- var parse = require_parse2();
1024
- var enoent = require_enoent();
1025
- function spawn(command, args, options) {
1026
- const parsed = parse(command, args, options);
1027
- const spawned = cp.spawn(parsed.command, parsed.args, parsed.options);
1028
- enoent.hookChildProcess(spawned, parsed);
1029
- return spawned;
1030
- }
1031
- function spawnSync(command, args, options) {
1032
- const parsed = parse(command, args, options);
1033
- const result = cp.spawnSync(parsed.command, parsed.args, parsed.options);
1034
- result.error = result.error || enoent.verifyENOENTSync(result.status, parsed);
1035
- return result;
1036
- }
1037
- module.exports = spawn;
1038
- module.exports.spawn = spawn;
1039
- module.exports.sync = spawnSync;
1040
- module.exports._parse = parse;
1041
- module.exports._enoent = enoent;
1042
- }
1043
- });
1044
-
1045
542
  // ../provider-bridge-protocol/src/bridge-kit/adapter-utils.ts
1046
543
  import { z as z2 } from "zod";
1047
544
 
@@ -4552,7 +4049,8 @@ var BRIDGE_JSON_RPC_ERRORS = {
4552
4049
  BRIDGE_ERROR: -32e3,
4553
4050
  NO_ACTIVE_TURN: -32001,
4554
4051
  SESSION_NOT_RESTORABLE: -32002,
4555
- FORK_CHECKPOINT_UNSUPPORTED: -32003
4052
+ FORK_CHECKPOINT_UNSUPPORTED: -32003,
4053
+ MISSING_EXECUTABLE: -32004
4556
4054
  };
4557
4055
  var providerRecoveryHintSchema = z26.object({
4558
4056
  kind: providerRecoveryKindSchema,
@@ -5208,7 +4706,7 @@ var threadDeltaNotificationParamsSchema = z33.object({
5208
4706
  }).passthrough();
5209
4707
 
5210
4708
  // ../process-utils/src/index.ts
5211
- var import_cross_spawn = __toESM(require_cross_spawn(), 1);
4709
+ import crossSpawn from "cross-spawn";
5212
4710
  function sanitizeInheritedChildProcessEnv(args) {
5213
4711
  const sanitizedEnv = {};
5214
4712
  for (const [key, value] of Object.entries(args.env)) {
@@ -1578,6 +1578,9 @@ var testPluginSdkApp = {
1578
1578
  experimental_usePluginId() {
1579
1579
  return useSlotEnv("experimental_usePluginId").pluginId;
1580
1580
  },
1581
+ experimental_useQuestionFormHost() {
1582
+ return useSlotEnv("experimental_useQuestionFormHost").questionFormHost;
1583
+ },
1581
1584
  useBbNavigate() {
1582
1585
  return useSlotEnv("useBbNavigate").navigate;
1583
1586
  },
@@ -2310,6 +2313,11 @@ ${block}
2310
2313
  settingsState: { values: options.settings, isLoading: false },
2311
2314
  bbContext: { projectId, threadId },
2312
2315
  pluginId: options.pluginId ?? "test-plugin",
2316
+ questionFormHost: {
2317
+ shortcuts: /* @__PURE__ */ new Map(),
2318
+ registerChoiceHandler: () => () => {
2319
+ }
2320
+ },
2313
2321
  navigate,
2314
2322
  navigateCalls,
2315
2323
  appPanel,