switchroom 0.15.37 → 0.15.38

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 (72) hide show
  1. package/dist/agent-scheduler/index.js +89 -89
  2. package/dist/auth-broker/index.js +89 -89
  3. package/dist/cli/autoaccept-poll.js +13 -7
  4. package/dist/cli/drive-write-pretool.mjs +10 -10
  5. package/dist/cli/notion-write-pretool.mjs +91 -91
  6. package/dist/cli/skill-validate-pretool.mjs +72 -72
  7. package/dist/cli/switchroom.js +821 -572
  8. package/dist/cli/ui/index.html +87 -17
  9. package/dist/host-control/main.js +158 -158
  10. package/dist/vault/approvals/kernel-server.js +91 -91
  11. package/dist/vault/broker/server.js +92 -92
  12. package/package.json +1 -1
  13. package/profiles/_base/cron-session.sh.hbs +1 -1
  14. package/profiles/_base/start.sh.hbs +1 -1
  15. package/skills/switchroom-manage/SKILL.md +1 -1
  16. package/skills/switchroom-runtime/SKILL.md +1 -1
  17. package/telegram-plugin/answer-stream.ts +1 -1
  18. package/telegram-plugin/bridge/bridge.ts +18 -1
  19. package/telegram-plugin/bridge/ipc-client.ts +4 -1
  20. package/telegram-plugin/bridge/tool-filter.ts +77 -0
  21. package/telegram-plugin/chat-lock.ts +1 -1
  22. package/telegram-plugin/credits-watch.ts +1 -1
  23. package/telegram-plugin/dist/bridge/bridge.js +141 -115
  24. package/telegram-plugin/dist/gateway/gateway.js +318 -207
  25. package/telegram-plugin/dist/server.js +193 -164
  26. package/telegram-plugin/gateway/auto-classify-mid-turn.ts +1 -1
  27. package/telegram-plugin/gateway/boot-card.ts +5 -1
  28. package/telegram-plugin/gateway/boot-probes.ts +62 -0
  29. package/telegram-plugin/gateway/cron-session.ts +1 -1
  30. package/telegram-plugin/gateway/gateway.ts +133 -12
  31. package/telegram-plugin/gateway/grant-restart.ts +1 -1
  32. package/telegram-plugin/gateway/inbound-delivery-machine-dispatch.ts +1 -1
  33. package/telegram-plugin/gateway/inbound-delivery-machine-shadow.ts +1 -1
  34. package/telegram-plugin/gateway/inbound-delivery-machine.ts +1 -1
  35. package/telegram-plugin/gateway/interrupt-defer.ts +1 -1
  36. package/telegram-plugin/gateway/ipc-protocol.ts +12 -0
  37. package/telegram-plugin/gateway/permission-card-origin.ts +62 -0
  38. package/telegram-plugin/gateway/permission-timeout.ts +70 -0
  39. package/telegram-plugin/gateway/prefix-warmup.ts +1 -1
  40. package/telegram-plugin/gateway/webhook-ingest-server.test.ts +1 -1
  41. package/telegram-plugin/gateway/webhook-ingest-server.ts +1 -1
  42. package/telegram-plugin/hooks/subagent-tracker-pretool.mjs +1 -1
  43. package/telegram-plugin/interrupt-marker.ts +1 -1
  44. package/telegram-plugin/over-ping-safety-net.ts +1 -1
  45. package/telegram-plugin/scoped-approval.ts +1 -1
  46. package/telegram-plugin/secret-detect/vault-error.ts +1 -1
  47. package/telegram-plugin/silence-poke.ts +2 -2
  48. package/telegram-plugin/silent-reply-anchor.ts +1 -1
  49. package/telegram-plugin/slot-banner-driver.ts +1 -1
  50. package/telegram-plugin/startup-reset.ts +1 -1
  51. package/telegram-plugin/tests/boot-probes-connections.test.ts +66 -0
  52. package/telegram-plugin/tests/gateway-startup-reset.test.ts +1 -1
  53. package/telegram-plugin/tests/inbound-delivery-machine.test.ts +1 -1
  54. package/telegram-plugin/tests/permission-card-origin.test.ts +97 -0
  55. package/telegram-plugin/tests/permission-card-routing.test.ts +23 -0
  56. package/telegram-plugin/tests/permission-no-repeat-wiring.test.ts +76 -0
  57. package/telegram-plugin/tests/permission-timeout.test.ts +87 -0
  58. package/telegram-plugin/tests/scoped-approval.test.ts +1 -1
  59. package/telegram-plugin/tests/silence-poke.test.ts +1 -1
  60. package/telegram-plugin/tests/tool-filter.test.ts +87 -0
  61. package/telegram-plugin/tests/turn-flush-safety.test.ts +1 -1
  62. package/telegram-plugin/turn-flush-safety.ts +1 -1
  63. package/telegram-plugin/uat/assertions.ts +1 -1
  64. package/telegram-plugin/uat/scenarios/bg-sub-agent-dispatch-dm.test.ts +1 -1
  65. package/telegram-plugin/uat/scenarios/fuzz-extended-dm.test.ts +1 -1
  66. package/telegram-plugin/uat/scenarios/jtbd-fast-ack-dm.test.ts +1 -1
  67. package/telegram-plugin/uat/scenarios/jtbd-fast-trivial-dm.test.ts +2 -2
  68. package/telegram-plugin/uat/scenarios/jtbd-forwarded-burst-dm.test.ts +1 -1
  69. package/telegram-plugin/uat/scenarios/jtbd-memory-survives-restart-dm.test.ts +1 -1
  70. package/telegram-plugin/uat/scenarios/jtbd-rapid-followup-dm.test.ts +1 -1
  71. package/telegram-plugin/uat/scenarios/jtbd-reflective-status-reaction-dm.test.ts +1 -1
  72. package/telegram-plugin/uat/scenarios/jtbd-wake-audit-content-dm.test.ts +1 -1
@@ -66,7 +66,7 @@ var __export = (target, all) => {
66
66
  var __esm = (fn, res) => () => (fn && (res = fn(fn = 0)), res);
67
67
  var __require = /* @__PURE__ */ createRequire(import.meta.url);
68
68
 
69
- // ../switchroom-sec-1417/node_modules/.bun/commander@13.1.0/node_modules/commander/lib/error.js
69
+ // node_modules/.bun/commander@13.1.0/node_modules/commander/lib/error.js
70
70
  var require_error = __commonJS((exports) => {
71
71
  class CommanderError extends Error {
72
72
  constructor(exitCode, code, message) {
@@ -90,7 +90,7 @@ var require_error = __commonJS((exports) => {
90
90
  exports.InvalidArgumentError = InvalidArgumentError;
91
91
  });
92
92
 
93
- // ../switchroom-sec-1417/node_modules/.bun/commander@13.1.0/node_modules/commander/lib/argument.js
93
+ // node_modules/.bun/commander@13.1.0/node_modules/commander/lib/argument.js
94
94
  var require_argument = __commonJS((exports) => {
95
95
  var { InvalidArgumentError } = require_error();
96
96
 
@@ -169,7 +169,7 @@ var require_argument = __commonJS((exports) => {
169
169
  exports.humanReadableArgName = humanReadableArgName;
170
170
  });
171
171
 
172
- // ../switchroom-sec-1417/node_modules/.bun/commander@13.1.0/node_modules/commander/lib/help.js
172
+ // node_modules/.bun/commander@13.1.0/node_modules/commander/lib/help.js
173
173
  var require_help = __commonJS((exports) => {
174
174
  var { humanReadableArgName } = require_argument();
175
175
 
@@ -519,7 +519,7 @@ ${itemIndentStr}`);
519
519
  exports.stripColor = stripColor;
520
520
  });
521
521
 
522
- // ../switchroom-sec-1417/node_modules/.bun/commander@13.1.0/node_modules/commander/lib/option.js
522
+ // node_modules/.bun/commander@13.1.0/node_modules/commander/lib/option.js
523
523
  var require_option = __commonJS((exports) => {
524
524
  var { InvalidArgumentError } = require_error();
525
525
 
@@ -697,7 +697,7 @@ var require_option = __commonJS((exports) => {
697
697
  exports.DualOptions = DualOptions;
698
698
  });
699
699
 
700
- // ../switchroom-sec-1417/node_modules/.bun/commander@13.1.0/node_modules/commander/lib/suggestSimilar.js
700
+ // node_modules/.bun/commander@13.1.0/node_modules/commander/lib/suggestSimilar.js
701
701
  var require_suggestSimilar = __commonJS((exports) => {
702
702
  var maxDistance = 3;
703
703
  function editDistance(a, b) {
@@ -770,7 +770,7 @@ var require_suggestSimilar = __commonJS((exports) => {
770
770
  exports.suggestSimilar = suggestSimilar;
771
771
  });
772
772
 
773
- // ../switchroom-sec-1417/node_modules/.bun/commander@13.1.0/node_modules/commander/lib/command.js
773
+ // node_modules/.bun/commander@13.1.0/node_modules/commander/lib/command.js
774
774
  var require_command = __commonJS((exports) => {
775
775
  var EventEmitter = __require("node:events").EventEmitter;
776
776
  var childProcess = __require("node:child_process");
@@ -2080,7 +2080,7 @@ Expecting one of '${allowedValues.join("', '")}'`);
2080
2080
  exports.useColor = useColor;
2081
2081
  });
2082
2082
 
2083
- // ../switchroom-sec-1417/node_modules/.bun/commander@13.1.0/node_modules/commander/index.js
2083
+ // node_modules/.bun/commander@13.1.0/node_modules/commander/index.js
2084
2084
  var require_commander = __commonJS((exports) => {
2085
2085
  var { Argument } = require_argument();
2086
2086
  var { Command } = require_command();
@@ -2100,7 +2100,7 @@ var require_commander = __commonJS((exports) => {
2100
2100
  exports.InvalidOptionArgumentError = InvalidArgumentError;
2101
2101
  });
2102
2102
 
2103
- // ../switchroom-sec-1417/node_modules/.bun/chalk@5.6.2/node_modules/chalk/source/vendor/ansi-styles/index.js
2103
+ // node_modules/.bun/chalk@5.6.2/node_modules/chalk/source/vendor/ansi-styles/index.js
2104
2104
  function assembleStyles() {
2105
2105
  const codes = new Map;
2106
2106
  for (const [groupName, group] of Object.entries(styles)) {
@@ -2276,7 +2276,7 @@ var init_ansi_styles = __esm(() => {
2276
2276
  ansi_styles_default = ansiStyles;
2277
2277
  });
2278
2278
 
2279
- // ../switchroom-sec-1417/node_modules/.bun/chalk@5.6.2/node_modules/chalk/source/vendor/supports-color/index.js
2279
+ // node_modules/.bun/chalk@5.6.2/node_modules/chalk/source/vendor/supports-color/index.js
2280
2280
  import process2 from "node:process";
2281
2281
  import os from "node:os";
2282
2282
  import tty from "node:tty";
@@ -2410,7 +2410,7 @@ var init_supports_color = __esm(() => {
2410
2410
  supports_color_default = supportsColor;
2411
2411
  });
2412
2412
 
2413
- // ../switchroom-sec-1417/node_modules/.bun/chalk@5.6.2/node_modules/chalk/source/utilities.js
2413
+ // node_modules/.bun/chalk@5.6.2/node_modules/chalk/source/utilities.js
2414
2414
  function stringReplaceAll(string, substring, replacer) {
2415
2415
  let index = string.indexOf(substring);
2416
2416
  if (index === -1) {
@@ -2443,7 +2443,7 @@ function stringEncaseCRLFWithFirstIndex(string, prefix, postfix, index) {
2443
2443
  return returnValue;
2444
2444
  }
2445
2445
 
2446
- // ../switchroom-sec-1417/node_modules/.bun/chalk@5.6.2/node_modules/chalk/source/index.js
2446
+ // node_modules/.bun/chalk@5.6.2/node_modules/chalk/source/index.js
2447
2447
  function createChalk(options) {
2448
2448
  return chalkFactory(options);
2449
2449
  }
@@ -2589,7 +2589,7 @@ var init_source = __esm(() => {
2589
2589
  source_default = chalk;
2590
2590
  });
2591
2591
 
2592
- // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/nodes/identity.js
2592
+ // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/nodes/identity.js
2593
2593
  var require_identity = __commonJS((exports) => {
2594
2594
  var ALIAS = Symbol.for("yaml.alias");
2595
2595
  var DOC = Symbol.for("yaml.document");
@@ -2643,7 +2643,7 @@ var require_identity = __commonJS((exports) => {
2643
2643
  exports.isSeq = isSeq;
2644
2644
  });
2645
2645
 
2646
- // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/visit.js
2646
+ // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/visit.js
2647
2647
  var require_visit = __commonJS((exports) => {
2648
2648
  var identity = require_identity();
2649
2649
  var BREAK = Symbol("break visit");
@@ -2798,7 +2798,7 @@ var require_visit = __commonJS((exports) => {
2798
2798
  exports.visitAsync = visitAsync;
2799
2799
  });
2800
2800
 
2801
- // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/doc/directives.js
2801
+ // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/doc/directives.js
2802
2802
  var require_directives = __commonJS((exports) => {
2803
2803
  var identity = require_identity();
2804
2804
  var visit = require_visit();
@@ -2950,7 +2950,7 @@ var require_directives = __commonJS((exports) => {
2950
2950
  exports.Directives = Directives;
2951
2951
  });
2952
2952
 
2953
- // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/doc/anchors.js
2953
+ // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/doc/anchors.js
2954
2954
  var require_anchors = __commonJS((exports) => {
2955
2955
  var identity = require_identity();
2956
2956
  var visit = require_visit();
@@ -3012,7 +3012,7 @@ var require_anchors = __commonJS((exports) => {
3012
3012
  exports.findNewAnchor = findNewAnchor;
3013
3013
  });
3014
3014
 
3015
- // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/doc/applyReviver.js
3015
+ // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/doc/applyReviver.js
3016
3016
  var require_applyReviver = __commonJS((exports) => {
3017
3017
  function applyReviver(reviver, obj, key, val) {
3018
3018
  if (val && typeof val === "object") {
@@ -3059,7 +3059,7 @@ var require_applyReviver = __commonJS((exports) => {
3059
3059
  exports.applyReviver = applyReviver;
3060
3060
  });
3061
3061
 
3062
- // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/nodes/toJS.js
3062
+ // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/nodes/toJS.js
3063
3063
  var require_toJS = __commonJS((exports) => {
3064
3064
  var identity = require_identity();
3065
3065
  function toJS(value, arg, ctx) {
@@ -3086,7 +3086,7 @@ var require_toJS = __commonJS((exports) => {
3086
3086
  exports.toJS = toJS;
3087
3087
  });
3088
3088
 
3089
- // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/nodes/Node.js
3089
+ // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/nodes/Node.js
3090
3090
  var require_Node = __commonJS((exports) => {
3091
3091
  var applyReviver = require_applyReviver();
3092
3092
  var identity = require_identity();
@@ -3123,7 +3123,7 @@ var require_Node = __commonJS((exports) => {
3123
3123
  exports.NodeBase = NodeBase;
3124
3124
  });
3125
3125
 
3126
- // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/nodes/Alias.js
3126
+ // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/nodes/Alias.js
3127
3127
  var require_Alias = __commonJS((exports) => {
3128
3128
  var anchors = require_anchors();
3129
3129
  var visit = require_visit();
@@ -3231,7 +3231,7 @@ var require_Alias = __commonJS((exports) => {
3231
3231
  exports.Alias = Alias;
3232
3232
  });
3233
3233
 
3234
- // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/nodes/Scalar.js
3234
+ // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/nodes/Scalar.js
3235
3235
  var require_Scalar = __commonJS((exports) => {
3236
3236
  var identity = require_identity();
3237
3237
  var Node = require_Node();
@@ -3259,7 +3259,7 @@ var require_Scalar = __commonJS((exports) => {
3259
3259
  exports.isScalarValue = isScalarValue;
3260
3260
  });
3261
3261
 
3262
- // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/doc/createNode.js
3262
+ // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/doc/createNode.js
3263
3263
  var require_createNode = __commonJS((exports) => {
3264
3264
  var Alias = require_Alias();
3265
3265
  var identity = require_identity();
@@ -3331,7 +3331,7 @@ var require_createNode = __commonJS((exports) => {
3331
3331
  exports.createNode = createNode;
3332
3332
  });
3333
3333
 
3334
- // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/nodes/Collection.js
3334
+ // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/nodes/Collection.js
3335
3335
  var require_Collection = __commonJS((exports) => {
3336
3336
  var createNode = require_createNode();
3337
3337
  var identity = require_identity();
@@ -3446,7 +3446,7 @@ var require_Collection = __commonJS((exports) => {
3446
3446
  exports.isEmptyPath = isEmptyPath;
3447
3447
  });
3448
3448
 
3449
- // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/stringify/stringifyComment.js
3449
+ // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/stringify/stringifyComment.js
3450
3450
  var require_stringifyComment = __commonJS((exports) => {
3451
3451
  var stringifyComment = (str) => str.replace(/^(?!$)(?: $)?/gm, "#");
3452
3452
  function indentComment(comment, indent) {
@@ -3463,7 +3463,7 @@ var require_stringifyComment = __commonJS((exports) => {
3463
3463
  exports.stringifyComment = stringifyComment;
3464
3464
  });
3465
3465
 
3466
- // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/stringify/foldFlowLines.js
3466
+ // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/stringify/foldFlowLines.js
3467
3467
  var require_foldFlowLines = __commonJS((exports) => {
3468
3468
  var FOLD_FLOW = "flow";
3469
3469
  var FOLD_BLOCK = "block";
@@ -3600,7 +3600,7 @@ ${indent}${text.slice(fold + 1, end2)}`;
3600
3600
  exports.foldFlowLines = foldFlowLines;
3601
3601
  });
3602
3602
 
3603
- // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/stringify/stringifyString.js
3603
+ // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/stringify/stringifyString.js
3604
3604
  var require_stringifyString = __commonJS((exports) => {
3605
3605
  var Scalar = require_Scalar();
3606
3606
  var foldFlowLines = require_foldFlowLines();
@@ -3898,7 +3898,7 @@ ${indent}`);
3898
3898
  exports.stringifyString = stringifyString;
3899
3899
  });
3900
3900
 
3901
- // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/stringify/stringify.js
3901
+ // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/stringify/stringify.js
3902
3902
  var require_stringify = __commonJS((exports) => {
3903
3903
  var anchors = require_anchors();
3904
3904
  var identity = require_identity();
@@ -4019,7 +4019,7 @@ ${ctx.indent}${str}`;
4019
4019
  exports.stringify = stringify;
4020
4020
  });
4021
4021
 
4022
- // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/stringify/stringifyPair.js
4022
+ // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/stringify/stringifyPair.js
4023
4023
  var require_stringifyPair = __commonJS((exports) => {
4024
4024
  var identity = require_identity();
4025
4025
  var Scalar = require_Scalar();
@@ -4155,7 +4155,7 @@ ${ctx.indent}`;
4155
4155
  exports.stringifyPair = stringifyPair;
4156
4156
  });
4157
4157
 
4158
- // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/log.js
4158
+ // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/log.js
4159
4159
  var require_log = __commonJS((exports) => {
4160
4160
  var node_process = __require("process");
4161
4161
  function debug(logLevel, ...messages) {
@@ -4174,7 +4174,7 @@ var require_log = __commonJS((exports) => {
4174
4174
  exports.warn = warn;
4175
4175
  });
4176
4176
 
4177
- // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/schema/yaml-1.1/merge.js
4177
+ // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/schema/yaml-1.1/merge.js
4178
4178
  var require_merge = __commonJS((exports) => {
4179
4179
  var identity = require_identity();
4180
4180
  var Scalar = require_Scalar();
@@ -4228,7 +4228,7 @@ var require_merge = __commonJS((exports) => {
4228
4228
  exports.merge = merge;
4229
4229
  });
4230
4230
 
4231
- // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/nodes/addPairToJSMap.js
4231
+ // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/nodes/addPairToJSMap.js
4232
4232
  var require_addPairToJSMap = __commonJS((exports) => {
4233
4233
  var log = require_log();
4234
4234
  var merge = require_merge();
@@ -4289,7 +4289,7 @@ var require_addPairToJSMap = __commonJS((exports) => {
4289
4289
  exports.addPairToJSMap = addPairToJSMap;
4290
4290
  });
4291
4291
 
4292
- // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/nodes/Pair.js
4292
+ // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/nodes/Pair.js
4293
4293
  var require_Pair = __commonJS((exports) => {
4294
4294
  var createNode = require_createNode();
4295
4295
  var stringifyPair = require_stringifyPair();
@@ -4327,7 +4327,7 @@ var require_Pair = __commonJS((exports) => {
4327
4327
  exports.createPair = createPair;
4328
4328
  });
4329
4329
 
4330
- // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/stringify/stringifyCollection.js
4330
+ // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/stringify/stringifyCollection.js
4331
4331
  var require_stringifyCollection = __commonJS((exports) => {
4332
4332
  var identity = require_identity();
4333
4333
  var stringify = require_stringify();
@@ -4479,7 +4479,7 @@ ${indent}${end}`;
4479
4479
  exports.stringifyCollection = stringifyCollection;
4480
4480
  });
4481
4481
 
4482
- // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/nodes/YAMLMap.js
4482
+ // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/nodes/YAMLMap.js
4483
4483
  var require_YAMLMap = __commonJS((exports) => {
4484
4484
  var stringifyCollection = require_stringifyCollection();
4485
4485
  var addPairToJSMap = require_addPairToJSMap();
@@ -4606,7 +4606,7 @@ var require_YAMLMap = __commonJS((exports) => {
4606
4606
  exports.findPair = findPair;
4607
4607
  });
4608
4608
 
4609
- // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/schema/common/map.js
4609
+ // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/schema/common/map.js
4610
4610
  var require_map = __commonJS((exports) => {
4611
4611
  var identity = require_identity();
4612
4612
  var YAMLMap = require_YAMLMap();
@@ -4625,7 +4625,7 @@ var require_map = __commonJS((exports) => {
4625
4625
  exports.map = map;
4626
4626
  });
4627
4627
 
4628
- // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/nodes/YAMLSeq.js
4628
+ // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/nodes/YAMLSeq.js
4629
4629
  var require_YAMLSeq = __commonJS((exports) => {
4630
4630
  var createNode = require_createNode();
4631
4631
  var stringifyCollection = require_stringifyCollection();
@@ -4718,7 +4718,7 @@ var require_YAMLSeq = __commonJS((exports) => {
4718
4718
  exports.YAMLSeq = YAMLSeq;
4719
4719
  });
4720
4720
 
4721
- // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/schema/common/seq.js
4721
+ // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/schema/common/seq.js
4722
4722
  var require_seq = __commonJS((exports) => {
4723
4723
  var identity = require_identity();
4724
4724
  var YAMLSeq = require_YAMLSeq();
@@ -4737,7 +4737,7 @@ var require_seq = __commonJS((exports) => {
4737
4737
  exports.seq = seq;
4738
4738
  });
4739
4739
 
4740
- // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/schema/common/string.js
4740
+ // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/schema/common/string.js
4741
4741
  var require_string = __commonJS((exports) => {
4742
4742
  var stringifyString = require_stringifyString();
4743
4743
  var string = {
@@ -4753,7 +4753,7 @@ var require_string = __commonJS((exports) => {
4753
4753
  exports.string = string;
4754
4754
  });
4755
4755
 
4756
- // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/schema/common/null.js
4756
+ // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/schema/common/null.js
4757
4757
  var require_null = __commonJS((exports) => {
4758
4758
  var Scalar = require_Scalar();
4759
4759
  var nullTag = {
@@ -4768,7 +4768,7 @@ var require_null = __commonJS((exports) => {
4768
4768
  exports.nullTag = nullTag;
4769
4769
  });
4770
4770
 
4771
- // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/schema/core/bool.js
4771
+ // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/schema/core/bool.js
4772
4772
  var require_bool = __commonJS((exports) => {
4773
4773
  var Scalar = require_Scalar();
4774
4774
  var boolTag = {
@@ -4789,7 +4789,7 @@ var require_bool = __commonJS((exports) => {
4789
4789
  exports.boolTag = boolTag;
4790
4790
  });
4791
4791
 
4792
- // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/stringify/stringifyNumber.js
4792
+ // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/stringify/stringifyNumber.js
4793
4793
  var require_stringifyNumber = __commonJS((exports) => {
4794
4794
  function stringifyNumber({ format, minFractionDigits, tag, value }) {
4795
4795
  if (typeof value === "bigint")
@@ -4813,7 +4813,7 @@ var require_stringifyNumber = __commonJS((exports) => {
4813
4813
  exports.stringifyNumber = stringifyNumber;
4814
4814
  });
4815
4815
 
4816
- // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/schema/core/float.js
4816
+ // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/schema/core/float.js
4817
4817
  var require_float = __commonJS((exports) => {
4818
4818
  var Scalar = require_Scalar();
4819
4819
  var stringifyNumber = require_stringifyNumber();
@@ -4856,7 +4856,7 @@ var require_float = __commonJS((exports) => {
4856
4856
  exports.floatNaN = floatNaN;
4857
4857
  });
4858
4858
 
4859
- // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/schema/core/int.js
4859
+ // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/schema/core/int.js
4860
4860
  var require_int = __commonJS((exports) => {
4861
4861
  var stringifyNumber = require_stringifyNumber();
4862
4862
  var intIdentify = (value) => typeof value === "bigint" || Number.isInteger(value);
@@ -4898,7 +4898,7 @@ var require_int = __commonJS((exports) => {
4898
4898
  exports.intOct = intOct;
4899
4899
  });
4900
4900
 
4901
- // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/schema/core/schema.js
4901
+ // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/schema/core/schema.js
4902
4902
  var require_schema = __commonJS((exports) => {
4903
4903
  var map = require_map();
4904
4904
  var _null = require_null();
@@ -4923,7 +4923,7 @@ var require_schema = __commonJS((exports) => {
4923
4923
  exports.schema = schema;
4924
4924
  });
4925
4925
 
4926
- // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/schema/json/schema.js
4926
+ // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/schema/json/schema.js
4927
4927
  var require_schema2 = __commonJS((exports) => {
4928
4928
  var Scalar = require_Scalar();
4929
4929
  var map = require_map();
@@ -4987,7 +4987,7 @@ var require_schema2 = __commonJS((exports) => {
4987
4987
  exports.schema = schema;
4988
4988
  });
4989
4989
 
4990
- // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/schema/yaml-1.1/binary.js
4990
+ // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/schema/yaml-1.1/binary.js
4991
4991
  var require_binary = __commonJS((exports) => {
4992
4992
  var node_buffer = __require("buffer");
4993
4993
  var Scalar = require_Scalar();
@@ -5042,7 +5042,7 @@ var require_binary = __commonJS((exports) => {
5042
5042
  exports.binary = binary;
5043
5043
  });
5044
5044
 
5045
- // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/schema/yaml-1.1/pairs.js
5045
+ // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/schema/yaml-1.1/pairs.js
5046
5046
  var require_pairs = __commonJS((exports) => {
5047
5047
  var identity = require_identity();
5048
5048
  var Pair = require_Pair();
@@ -5117,7 +5117,7 @@ ${cn.comment}` : item.comment;
5117
5117
  exports.resolvePairs = resolvePairs;
5118
5118
  });
5119
5119
 
5120
- // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/schema/yaml-1.1/omap.js
5120
+ // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/schema/yaml-1.1/omap.js
5121
5121
  var require_omap = __commonJS((exports) => {
5122
5122
  var identity = require_identity();
5123
5123
  var toJS = require_toJS();
@@ -5189,7 +5189,7 @@ var require_omap = __commonJS((exports) => {
5189
5189
  exports.omap = omap;
5190
5190
  });
5191
5191
 
5192
- // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/schema/yaml-1.1/bool.js
5192
+ // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/schema/yaml-1.1/bool.js
5193
5193
  var require_bool2 = __commonJS((exports) => {
5194
5194
  var Scalar = require_Scalar();
5195
5195
  function boolStringify({ value, source }, ctx) {
@@ -5218,7 +5218,7 @@ var require_bool2 = __commonJS((exports) => {
5218
5218
  exports.trueTag = trueTag;
5219
5219
  });
5220
5220
 
5221
- // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/schema/yaml-1.1/float.js
5221
+ // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/schema/yaml-1.1/float.js
5222
5222
  var require_float2 = __commonJS((exports) => {
5223
5223
  var Scalar = require_Scalar();
5224
5224
  var stringifyNumber = require_stringifyNumber();
@@ -5264,7 +5264,7 @@ var require_float2 = __commonJS((exports) => {
5264
5264
  exports.floatNaN = floatNaN;
5265
5265
  });
5266
5266
 
5267
- // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/schema/yaml-1.1/int.js
5267
+ // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/schema/yaml-1.1/int.js
5268
5268
  var require_int2 = __commonJS((exports) => {
5269
5269
  var stringifyNumber = require_stringifyNumber();
5270
5270
  var intIdentify = (value) => typeof value === "bigint" || Number.isInteger(value);
@@ -5340,7 +5340,7 @@ var require_int2 = __commonJS((exports) => {
5340
5340
  exports.intOct = intOct;
5341
5341
  });
5342
5342
 
5343
- // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/schema/yaml-1.1/set.js
5343
+ // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/schema/yaml-1.1/set.js
5344
5344
  var require_set = __commonJS((exports) => {
5345
5345
  var identity = require_identity();
5346
5346
  var Pair = require_Pair();
@@ -5423,7 +5423,7 @@ var require_set = __commonJS((exports) => {
5423
5423
  exports.set = set;
5424
5424
  });
5425
5425
 
5426
- // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/schema/yaml-1.1/timestamp.js
5426
+ // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/schema/yaml-1.1/timestamp.js
5427
5427
  var require_timestamp = __commonJS((exports) => {
5428
5428
  var stringifyNumber = require_stringifyNumber();
5429
5429
  function parseSexagesimal(str, asBigInt) {
@@ -5505,7 +5505,7 @@ var require_timestamp = __commonJS((exports) => {
5505
5505
  exports.timestamp = timestamp;
5506
5506
  });
5507
5507
 
5508
- // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/schema/yaml-1.1/schema.js
5508
+ // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/schema/yaml-1.1/schema.js
5509
5509
  var require_schema3 = __commonJS((exports) => {
5510
5510
  var map = require_map();
5511
5511
  var _null = require_null();
@@ -5546,7 +5546,7 @@ var require_schema3 = __commonJS((exports) => {
5546
5546
  exports.schema = schema;
5547
5547
  });
5548
5548
 
5549
- // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/schema/tags.js
5549
+ // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/schema/tags.js
5550
5550
  var require_tags = __commonJS((exports) => {
5551
5551
  var map = require_map();
5552
5552
  var _null = require_null();
@@ -5637,7 +5637,7 @@ var require_tags = __commonJS((exports) => {
5637
5637
  exports.getTags = getTags;
5638
5638
  });
5639
5639
 
5640
- // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/schema/Schema.js
5640
+ // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/schema/Schema.js
5641
5641
  var require_Schema = __commonJS((exports) => {
5642
5642
  var identity = require_identity();
5643
5643
  var map = require_map();
@@ -5667,7 +5667,7 @@ var require_Schema = __commonJS((exports) => {
5667
5667
  exports.Schema = Schema;
5668
5668
  });
5669
5669
 
5670
- // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/stringify/stringifyDocument.js
5670
+ // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/stringify/stringifyDocument.js
5671
5671
  var require_stringifyDocument = __commonJS((exports) => {
5672
5672
  var identity = require_identity();
5673
5673
  var stringify = require_stringify();
@@ -5747,7 +5747,7 @@ var require_stringifyDocument = __commonJS((exports) => {
5747
5747
  exports.stringifyDocument = stringifyDocument;
5748
5748
  });
5749
5749
 
5750
- // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/doc/Document.js
5750
+ // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/doc/Document.js
5751
5751
  var require_Document = __commonJS((exports) => {
5752
5752
  var Alias = require_Alias();
5753
5753
  var Collection = require_Collection();
@@ -5982,7 +5982,7 @@ var require_Document = __commonJS((exports) => {
5982
5982
  exports.Document = Document;
5983
5983
  });
5984
5984
 
5985
- // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/errors.js
5985
+ // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/errors.js
5986
5986
  var require_errors = __commonJS((exports) => {
5987
5987
  class YAMLError extends Error {
5988
5988
  constructor(name, pos, code, message) {
@@ -6047,7 +6047,7 @@ ${pointer}
6047
6047
  exports.prettifyError = prettifyError;
6048
6048
  });
6049
6049
 
6050
- // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/compose/resolve-props.js
6050
+ // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/compose/resolve-props.js
6051
6051
  var require_resolve_props = __commonJS((exports) => {
6052
6052
  function resolveProps(tokens, { flow, indicator, next, offset, onError, parentIndent, startOnNewline }) {
6053
6053
  let spaceBefore = false;
@@ -6177,7 +6177,7 @@ var require_resolve_props = __commonJS((exports) => {
6177
6177
  exports.resolveProps = resolveProps;
6178
6178
  });
6179
6179
 
6180
- // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/compose/util-contains-newline.js
6180
+ // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/compose/util-contains-newline.js
6181
6181
  var require_util_contains_newline = __commonJS((exports) => {
6182
6182
  function containsNewline(key) {
6183
6183
  if (!key)
@@ -6217,7 +6217,7 @@ var require_util_contains_newline = __commonJS((exports) => {
6217
6217
  exports.containsNewline = containsNewline;
6218
6218
  });
6219
6219
 
6220
- // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/compose/util-flow-indent-check.js
6220
+ // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/compose/util-flow-indent-check.js
6221
6221
  var require_util_flow_indent_check = __commonJS((exports) => {
6222
6222
  var utilContainsNewline = require_util_contains_newline();
6223
6223
  function flowIndentCheck(indent, fc, onError) {
@@ -6232,7 +6232,7 @@ var require_util_flow_indent_check = __commonJS((exports) => {
6232
6232
  exports.flowIndentCheck = flowIndentCheck;
6233
6233
  });
6234
6234
 
6235
- // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/compose/util-map-includes.js
6235
+ // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/compose/util-map-includes.js
6236
6236
  var require_util_map_includes = __commonJS((exports) => {
6237
6237
  var identity = require_identity();
6238
6238
  function mapIncludes(ctx, items, search) {
@@ -6245,7 +6245,7 @@ var require_util_map_includes = __commonJS((exports) => {
6245
6245
  exports.mapIncludes = mapIncludes;
6246
6246
  });
6247
6247
 
6248
- // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/compose/resolve-block-map.js
6248
+ // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/compose/resolve-block-map.js
6249
6249
  var require_resolve_block_map = __commonJS((exports) => {
6250
6250
  var Pair = require_Pair();
6251
6251
  var YAMLMap = require_YAMLMap();
@@ -6352,7 +6352,7 @@ var require_resolve_block_map = __commonJS((exports) => {
6352
6352
  exports.resolveBlockMap = resolveBlockMap;
6353
6353
  });
6354
6354
 
6355
- // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/compose/resolve-block-seq.js
6355
+ // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/compose/resolve-block-seq.js
6356
6356
  var require_resolve_block_seq = __commonJS((exports) => {
6357
6357
  var YAMLSeq = require_YAMLSeq();
6358
6358
  var resolveProps = require_resolve_props();
@@ -6400,7 +6400,7 @@ var require_resolve_block_seq = __commonJS((exports) => {
6400
6400
  exports.resolveBlockSeq = resolveBlockSeq;
6401
6401
  });
6402
6402
 
6403
- // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/compose/resolve-end.js
6403
+ // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/compose/resolve-end.js
6404
6404
  var require_resolve_end = __commonJS((exports) => {
6405
6405
  function resolveEnd(end, offset, reqSpace, onError) {
6406
6406
  let comment = "";
@@ -6440,7 +6440,7 @@ var require_resolve_end = __commonJS((exports) => {
6440
6440
  exports.resolveEnd = resolveEnd;
6441
6441
  });
6442
6442
 
6443
- // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/compose/resolve-flow-collection.js
6443
+ // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/compose/resolve-flow-collection.js
6444
6444
  var require_resolve_flow_collection = __commonJS((exports) => {
6445
6445
  var identity = require_identity();
6446
6446
  var Pair = require_Pair();
@@ -6631,7 +6631,7 @@ var require_resolve_flow_collection = __commonJS((exports) => {
6631
6631
  exports.resolveFlowCollection = resolveFlowCollection;
6632
6632
  });
6633
6633
 
6634
- // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/compose/compose-collection.js
6634
+ // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/compose/compose-collection.js
6635
6635
  var require_compose_collection = __commonJS((exports) => {
6636
6636
  var identity = require_identity();
6637
6637
  var Scalar = require_Scalar();
@@ -6693,7 +6693,7 @@ var require_compose_collection = __commonJS((exports) => {
6693
6693
  exports.composeCollection = composeCollection;
6694
6694
  });
6695
6695
 
6696
- // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/compose/resolve-block-scalar.js
6696
+ // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/compose/resolve-block-scalar.js
6697
6697
  var require_resolve_block_scalar = __commonJS((exports) => {
6698
6698
  var Scalar = require_Scalar();
6699
6699
  function resolveBlockScalar(ctx, scalar, onError) {
@@ -6886,7 +6886,7 @@ var require_resolve_block_scalar = __commonJS((exports) => {
6886
6886
  exports.resolveBlockScalar = resolveBlockScalar;
6887
6887
  });
6888
6888
 
6889
- // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/compose/resolve-flow-scalar.js
6889
+ // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/compose/resolve-flow-scalar.js
6890
6890
  var require_resolve_flow_scalar = __commonJS((exports) => {
6891
6891
  var Scalar = require_Scalar();
6892
6892
  var resolveEnd = require_resolve_end();
@@ -7102,7 +7102,7 @@ var require_resolve_flow_scalar = __commonJS((exports) => {
7102
7102
  exports.resolveFlowScalar = resolveFlowScalar;
7103
7103
  });
7104
7104
 
7105
- // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/compose/compose-scalar.js
7105
+ // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/compose/compose-scalar.js
7106
7106
  var require_compose_scalar = __commonJS((exports) => {
7107
7107
  var identity = require_identity();
7108
7108
  var Scalar = require_Scalar();
@@ -7180,7 +7180,7 @@ var require_compose_scalar = __commonJS((exports) => {
7180
7180
  exports.composeScalar = composeScalar;
7181
7181
  });
7182
7182
 
7183
- // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/compose/util-empty-scalar-position.js
7183
+ // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/compose/util-empty-scalar-position.js
7184
7184
  var require_util_empty_scalar_position = __commonJS((exports) => {
7185
7185
  function emptyScalarPosition(offset, before, pos) {
7186
7186
  if (before) {
@@ -7207,7 +7207,7 @@ var require_util_empty_scalar_position = __commonJS((exports) => {
7207
7207
  exports.emptyScalarPosition = emptyScalarPosition;
7208
7208
  });
7209
7209
 
7210
- // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/compose/compose-node.js
7210
+ // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/compose/compose-node.js
7211
7211
  var require_compose_node = __commonJS((exports) => {
7212
7212
  var Alias = require_Alias();
7213
7213
  var identity = require_identity();
@@ -7310,7 +7310,7 @@ var require_compose_node = __commonJS((exports) => {
7310
7310
  exports.composeNode = composeNode;
7311
7311
  });
7312
7312
 
7313
- // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/compose/compose-doc.js
7313
+ // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/compose/compose-doc.js
7314
7314
  var require_compose_doc = __commonJS((exports) => {
7315
7315
  var Document = require_Document();
7316
7316
  var composeNode = require_compose_node();
@@ -7350,7 +7350,7 @@ var require_compose_doc = __commonJS((exports) => {
7350
7350
  exports.composeDoc = composeDoc;
7351
7351
  });
7352
7352
 
7353
- // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/compose/composer.js
7353
+ // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/compose/composer.js
7354
7354
  var require_composer = __commonJS((exports) => {
7355
7355
  var node_process = __require("process");
7356
7356
  var directives = require_directives();
@@ -7539,7 +7539,7 @@ ${end.comment}` : end.comment;
7539
7539
  exports.Composer = Composer;
7540
7540
  });
7541
7541
 
7542
- // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/parse/cst-scalar.js
7542
+ // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/parse/cst-scalar.js
7543
7543
  var require_cst_scalar = __commonJS((exports) => {
7544
7544
  var resolveBlockScalar = require_resolve_block_scalar();
7545
7545
  var resolveFlowScalar = require_resolve_flow_scalar();
@@ -7729,7 +7729,7 @@ var require_cst_scalar = __commonJS((exports) => {
7729
7729
  exports.setScalarValue = setScalarValue;
7730
7730
  });
7731
7731
 
7732
- // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/parse/cst-stringify.js
7732
+ // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/parse/cst-stringify.js
7733
7733
  var require_cst_stringify = __commonJS((exports) => {
7734
7734
  var stringify = (cst) => ("type" in cst) ? stringifyToken(cst) : stringifyItem(cst);
7735
7735
  function stringifyToken(token) {
@@ -7787,7 +7787,7 @@ var require_cst_stringify = __commonJS((exports) => {
7787
7787
  exports.stringify = stringify;
7788
7788
  });
7789
7789
 
7790
- // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/parse/cst-visit.js
7790
+ // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/parse/cst-visit.js
7791
7791
  var require_cst_visit = __commonJS((exports) => {
7792
7792
  var BREAK = Symbol("break visit");
7793
7793
  var SKIP = Symbol("skip children");
@@ -7846,7 +7846,7 @@ var require_cst_visit = __commonJS((exports) => {
7846
7846
  exports.visit = visit;
7847
7847
  });
7848
7848
 
7849
- // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/parse/cst.js
7849
+ // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/parse/cst.js
7850
7850
  var require_cst = __commonJS((exports) => {
7851
7851
  var cstScalar = require_cst_scalar();
7852
7852
  var cstStringify = require_cst_stringify();
@@ -7947,7 +7947,7 @@ var require_cst = __commonJS((exports) => {
7947
7947
  exports.tokenType = tokenType;
7948
7948
  });
7949
7949
 
7950
- // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/parse/lexer.js
7950
+ // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/parse/lexer.js
7951
7951
  var require_lexer = __commonJS((exports) => {
7952
7952
  var cst = require_cst();
7953
7953
  function isEmpty(ch) {
@@ -8533,7 +8533,7 @@ var require_lexer = __commonJS((exports) => {
8533
8533
  exports.Lexer = Lexer;
8534
8534
  });
8535
8535
 
8536
- // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/parse/line-counter.js
8536
+ // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/parse/line-counter.js
8537
8537
  var require_line_counter = __commonJS((exports) => {
8538
8538
  class LineCounter {
8539
8539
  constructor() {
@@ -8561,7 +8561,7 @@ var require_line_counter = __commonJS((exports) => {
8561
8561
  exports.LineCounter = LineCounter;
8562
8562
  });
8563
8563
 
8564
- // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/parse/parser.js
8564
+ // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/parse/parser.js
8565
8565
  var require_parser = __commonJS((exports) => {
8566
8566
  var node_process = __require("process");
8567
8567
  var cst = require_cst();
@@ -9410,7 +9410,7 @@ var require_parser = __commonJS((exports) => {
9410
9410
  exports.Parser = Parser;
9411
9411
  });
9412
9412
 
9413
- // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/public-api.js
9413
+ // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/public-api.js
9414
9414
  var require_public_api = __commonJS((exports) => {
9415
9415
  var composer = require_composer();
9416
9416
  var Document = require_Document();
@@ -9504,7 +9504,7 @@ var require_public_api = __commonJS((exports) => {
9504
9504
  exports.stringify = stringify;
9505
9505
  });
9506
9506
 
9507
- // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/index.js
9507
+ // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/index.js
9508
9508
  var require_dist = __commonJS((exports) => {
9509
9509
  var composer = require_composer();
9510
9510
  var Document = require_Document();
@@ -9553,7 +9553,7 @@ var require_dist = __commonJS((exports) => {
9553
9553
  exports.visitAsync = visit.visitAsync;
9554
9554
  });
9555
9555
 
9556
- // ../switchroom-sec-1417/node_modules/.bun/zod@3.25.76/node_modules/zod/v3/helpers/util.js
9556
+ // node_modules/.bun/zod@3.25.76/node_modules/zod/v3/helpers/util.js
9557
9557
  var util, objectUtil, ZodParsedType, getParsedType = (data) => {
9558
9558
  const t = typeof data;
9559
9559
  switch (t) {
@@ -9684,7 +9684,7 @@ var init_util = __esm(() => {
9684
9684
  ]);
9685
9685
  });
9686
9686
 
9687
- // ../switchroom-sec-1417/node_modules/.bun/zod@3.25.76/node_modules/zod/v3/ZodError.js
9687
+ // node_modules/.bun/zod@3.25.76/node_modules/zod/v3/ZodError.js
9688
9688
  var ZodIssueCode, quotelessJson = (obj) => {
9689
9689
  const json = JSON.stringify(obj, null, 2);
9690
9690
  return json.replace(/"([^"]+)":/g, "$1:");
@@ -9805,7 +9805,7 @@ var init_ZodError = __esm(() => {
9805
9805
  };
9806
9806
  });
9807
9807
 
9808
- // ../switchroom-sec-1417/node_modules/.bun/zod@3.25.76/node_modules/zod/v3/locales/en.js
9808
+ // node_modules/.bun/zod@3.25.76/node_modules/zod/v3/locales/en.js
9809
9809
  var errorMap = (issue, _ctx) => {
9810
9810
  let message;
9811
9811
  switch (issue.code) {
@@ -9912,7 +9912,7 @@ var init_en = __esm(() => {
9912
9912
  en_default = errorMap;
9913
9913
  });
9914
9914
 
9915
- // ../switchroom-sec-1417/node_modules/.bun/zod@3.25.76/node_modules/zod/v3/errors.js
9915
+ // node_modules/.bun/zod@3.25.76/node_modules/zod/v3/errors.js
9916
9916
  function setErrorMap(map) {
9917
9917
  overrideErrorMap = map;
9918
9918
  }
@@ -9925,7 +9925,7 @@ var init_errors = __esm(() => {
9925
9925
  overrideErrorMap = en_default;
9926
9926
  });
9927
9927
 
9928
- // ../switchroom-sec-1417/node_modules/.bun/zod@3.25.76/node_modules/zod/v3/helpers/parseUtil.js
9928
+ // node_modules/.bun/zod@3.25.76/node_modules/zod/v3/helpers/parseUtil.js
9929
9929
  function addIssueToContext(ctx, issueData) {
9930
9930
  const overrideMap = getErrorMap();
9931
9931
  const issue = makeIssue({
@@ -10030,10 +10030,10 @@ var init_parseUtil = __esm(() => {
10030
10030
  });
10031
10031
  });
10032
10032
 
10033
- // ../switchroom-sec-1417/node_modules/.bun/zod@3.25.76/node_modules/zod/v3/helpers/typeAliases.js
10033
+ // node_modules/.bun/zod@3.25.76/node_modules/zod/v3/helpers/typeAliases.js
10034
10034
  var init_typeAliases = () => {};
10035
10035
 
10036
- // ../switchroom-sec-1417/node_modules/.bun/zod@3.25.76/node_modules/zod/v3/helpers/errorUtil.js
10036
+ // node_modules/.bun/zod@3.25.76/node_modules/zod/v3/helpers/errorUtil.js
10037
10037
  var errorUtil;
10038
10038
  var init_errorUtil = __esm(() => {
10039
10039
  (function(errorUtil2) {
@@ -10042,7 +10042,7 @@ var init_errorUtil = __esm(() => {
10042
10042
  })(errorUtil || (errorUtil = {}));
10043
10043
  });
10044
10044
 
10045
- // ../switchroom-sec-1417/node_modules/.bun/zod@3.25.76/node_modules/zod/v3/types.js
10045
+ // node_modules/.bun/zod@3.25.76/node_modules/zod/v3/types.js
10046
10046
  class ParseInputLazyPath {
10047
10047
  constructor(parent, value, path, key) {
10048
10048
  this._cachedPath = [];
@@ -13393,7 +13393,7 @@ var init_types = __esm(() => {
13393
13393
  NEVER = INVALID;
13394
13394
  });
13395
13395
 
13396
- // ../switchroom-sec-1417/node_modules/.bun/zod@3.25.76/node_modules/zod/v3/external.js
13396
+ // node_modules/.bun/zod@3.25.76/node_modules/zod/v3/external.js
13397
13397
  var exports_external = {};
13398
13398
  __export(exports_external, {
13399
13399
  void: () => voidType,
@@ -13513,7 +13513,7 @@ var init_external = __esm(() => {
13513
13513
  init_ZodError();
13514
13514
  });
13515
13515
 
13516
- // ../switchroom-sec-1417/node_modules/.bun/zod@3.25.76/node_modules/zod/index.js
13516
+ // node_modules/.bun/zod@3.25.76/node_modules/zod/index.js
13517
13517
  var init_zod = __esm(() => {
13518
13518
  init_external();
13519
13519
  init_external();
@@ -13565,7 +13565,7 @@ var init_schema = __esm(() => {
13565
13565
  ScheduleEntrySchema = exports_external.object({
13566
13566
  cron: exports_external.string().describe("Cron expression (e.g., '0 8 * * *')"),
13567
13567
  prompt: exports_external.string().optional().describe("Prompt to send at the scheduled time (the escalation prompt when " + "kind=poll; templated with {{diff}}). Required for kind prompt/poll; " + "absent for kind=action (an action has no model fire, so no prompt)."),
13568
- kind: exports_external.enum(["poll", "prompt", "action"]).optional().describe("Tier-0 routing (docs/rfcs/cheap-cron-sessions.md). 'prompt' (default) " + "fires a model turn every tick (Tier 1/2 per `context`). 'poll' runs a " + "model-free deterministic check (requires `poll`) and only escalates to " + "a model fire on a hit. 'action' runs a model-free deterministic verb " + "(requires `action`) that COMPLETES the work and never escalates \u2014 zero " + "tokens, no session. poll/prompt tiering is on by default " + "(SWITCHROOM_CHEAP_CRON=0 is the kill-switch); an action is model-free " + "regardless (the kill-switch governs model tiering, not deterministic " + "actions)."),
13568
+ kind: exports_external.enum(["poll", "prompt", "action"]).optional().describe("Tier-0 routing (reference/rfcs/cheap-cron-sessions.md). 'prompt' (default) " + "fires a model turn every tick (Tier 1/2 per `context`). 'poll' runs a " + "model-free deterministic check (requires `poll`) and only escalates to " + "a model fire on a hit. 'action' runs a model-free deterministic verb " + "(requires `action`) that COMPLETES the work and never escalates \u2014 zero " + "tokens, no session. poll/prompt tiering is on by default " + "(SWITCHROOM_CHEAP_CRON=0 is the kill-switch); an action is model-free " + "regardless (the kill-switch governs model tiering, not deterministic " + "actions)."),
13569
13569
  poll: PollSpecSchema.optional().describe("Required iff kind=poll. The declarative poll spec."),
13570
13570
  action: ActionSpecSchema.optional().describe("Required iff kind=action. The declarative action spec (telegram-message or webhook)."),
13571
13571
  model: exports_external.string().optional().describe("Cron model hint. Reactivated by SWITCHROOM_CHEAP_CRON (was DEPRECATED/" + "IGNORED in v0.8). A known-cheap id (sonnet/haiku family) routes the " + "fire to a fresh cheap cron session (Tier 1, `context: fresh`); 'opus', " + "a custom id, or unset routes to the agent's live session (Tier 2, " + "`context: agent`) \u2014 the conservative default that preserves pre-v0.8 " + "behaviour. Note: a live session's model is fixed at launch, so on Tier " + "2 this is informational. See docs/scheduling.md."),
@@ -13574,7 +13574,7 @@ var init_schema = __esm(() => {
13574
13574
  topic: exports_external.union([
13575
13575
  exports_external.string().min(1, "topic alias must be non-empty"),
13576
13576
  exports_external.number().int().positive("topic ID must be a positive integer")
13577
- ]).optional().describe("Forum topic this cron fires into when the owning agent is in " + "supergroup-owned mode (channels.telegram.chat_id set). Either a " + 'string alias resolved against `topic_aliases` (e.g. "planning") ' + "or a numeric topic ID. Falls back to the agent's `default_topic_id` " + "when unset. Ignored for agents in fleet-shared or dm_only mode. " + "Alias-resolution happens at config-load \u2014 typos surface immediately. " + "See docs/rfcs/supergroup-mode.md.")
13577
+ ]).optional().describe("Forum topic this cron fires into when the owning agent is in " + "supergroup-owned mode (channels.telegram.chat_id set). Either a " + 'string alias resolved against `topic_aliases` (e.g. "planning") ' + "or a numeric topic ID. Falls back to the agent's `default_topic_id` " + "when unset. Ignored for agents in fleet-shared or dm_only mode. " + "Alias-resolution happens at config-load \u2014 typos surface immediately. " + "See reference/rfcs/supergroup-mode.md.")
13578
13578
  }).superRefine((entry, ctx) => {
13579
13579
  const kind = entry.kind ?? "prompt";
13580
13580
  if (kind === "poll" && !entry.poll) {
@@ -13747,15 +13747,15 @@ var init_schema = __esm(() => {
13747
13747
  webhook_rate_limit: exports_external.object({
13748
13748
  rpm: exports_external.number().int().positive()
13749
13749
  }).optional().describe("Per-source rate limit for the webhook ingest path (#714). " + "Off by default \u2014 when this key is absent the handler skips " + "rate-limit checks entirely. Opt in by setting `rpm` to an " + "integer requests-per-minute (token bucket per (agent, source); " + "burst equal to rpm). When enabled, exceeding the limit returns " + "429 with Retry-After header; first throttle event per " + "(agent, source) per 60s window is written to " + "<agent>/telegram/issues.jsonl. " + "Cascades from defaults.channels.telegram.webhook_rate_limit."),
13750
- webhook_via_gateway: exports_external.boolean().optional().describe("Route verified webhook events to the agent's in-container gateway " + "over a peercred-gated UDS (<agent>/telegram/webhook.sock) instead " + "of having the host-side web receiver write the agent dir directly. " + "Required under the Docker runtime: the receiver runs as the host " + "operator UID and cannot write the per-agent-UID-owned agent dir " + "(EACCES 500) nor connect the gateway socket. When true the gateway " + "(running as the agent UID) becomes the sole writer of " + "webhook-events.jsonl + dedup/cooldown state and also fires " + "webhook_dispatch. Off by default for back-compat with host-runtime " + "installs. See docs/rfcs/webhook-via-gateway-socket.md."),
13751
- webhook_require_edge: exports_external.boolean().optional().describe("Cloudflare-only edge lock: require the X-Switchroom-Edge header " + "(injected by a Cloudflare Transform Rule on hooks.switchroom.ai) to " + "match the operator's edge secret at ~/.switchroom/webhook-edge-secret " + "before any HMAC verification; reject 403 otherwise. Proves the " + "request entered through our Cloudflare edge \u2014 the per-agent HMAC " + "alone can't (it proves body provenance, not network path). Stacks " + "on the GitHub-IP WAF + per-agent HMAC. Fail-closed: when required " + "but the secret file is missing/empty every request is rejected. Off " + "by default. See docs/rfcs/webhook-cloudflare-edge-lock.md."),
13750
+ webhook_via_gateway: exports_external.boolean().optional().describe("Route verified webhook events to the agent's in-container gateway " + "over a peercred-gated UDS (<agent>/telegram/webhook.sock) instead " + "of having the host-side web receiver write the agent dir directly. " + "Required under the Docker runtime: the receiver runs as the host " + "operator UID and cannot write the per-agent-UID-owned agent dir " + "(EACCES 500) nor connect the gateway socket. When true the gateway " + "(running as the agent UID) becomes the sole writer of " + "webhook-events.jsonl + dedup/cooldown state and also fires " + "webhook_dispatch. Off by default for back-compat with host-runtime " + "installs. See reference/rfcs/webhook-via-gateway-socket.md."),
13751
+ webhook_require_edge: exports_external.boolean().optional().describe("Cloudflare-only edge lock: require the X-Switchroom-Edge header " + "(injected by a Cloudflare Transform Rule on hooks.switchroom.ai) to " + "match the operator's edge secret at ~/.switchroom/webhook-edge-secret " + "before any HMAC verification; reject 403 otherwise. Proves the " + "request entered through our Cloudflare edge \u2014 the per-agent HMAC " + "alone can't (it proves body provenance, not network path). Stacks " + "on the GitHub-IP WAF + per-agent HMAC. Fail-closed: when required " + "but the secret file is missing/empty every request is rejected. Off " + "by default. See reference/rfcs/webhook-cloudflare-edge-lock.md."),
13752
13752
  linear_agent: exports_external.object({
13753
13753
  enabled: exports_external.boolean(),
13754
13754
  token: exports_external.string().describe("vault:<key> reference to the Linear OAuth app token (actor=app). " + "Resolved at runtime via the vault broker (canonically " + "vault:linear/<agent>/token). Never an inline literal."),
13755
13755
  workspace_id: exports_external.string().optional().describe("Optional Linear workspace (organization) id this agent is " + "installed into. Informational \u2014 used for setup hints and " + "multi-workspace disambiguation; the token already scopes the " + "app to its workspace."),
13756
13756
  default_team_id: exports_external.string().optional().describe("Optional Linear team id new captured issues file into when the " + "agent doesn't pass an explicit team_id. Unnecessary for a " + "single-team workspace (auto-resolved); set it only when the " + "workspace has multiple teams. Manage via " + "`switchroom linear-agent set-team <agent> <team>`.")
13757
13757
  }).optional().describe("Linear first-class agent integration (#2298). When enabled, the " + "agent appears in a Linear workspace as an app actor (own name/" + "avatar, @-mentionable, delegate-assignable). Linear AgentSessionEvent " + "webhooks (mention / delegation) wake the agent instantly via the " + "same gateway inject path as webhook_dispatch, tagged " + 'meta.source="linear" with the agent_session_id, and the agent ' + "responds with structured AgentActivity (thought/message/complete/" + "error) via the linear_agent_activity MCP tool. Builds the " + "session-lifecycle layer on top of the plain webhook_sources:[linear] " + "+ webhook_dispatch support (#2272). The OAuth app token is stored in " + "the vault and referenced here as vault:linear/<agent>/token; run " + "`switchroom linear-agent setup <agent>` to provision it. Off by " + "default \u2014 opt in per agent. Cascades from " + "defaults.channels.telegram.linear_agent."),
13758
- chat_id: exports_external.string().regex(/^-\d+$/, 'supergroup chat_id must be a negative integer as a string (e.g. "-1001234567890")').optional().describe("Per-agent supergroup ID \u2014 overrides fleet `telegram.forum_chat_id`. " + "When set, requires `default_topic_id`. Negative integer as string. " + "Forbidden when `dm_only: true`. See docs/rfcs/supergroup-mode.md."),
13758
+ chat_id: exports_external.string().regex(/^-\d+$/, 'supergroup chat_id must be a negative integer as a string (e.g. "-1001234567890")').optional().describe("Per-agent supergroup ID \u2014 overrides fleet `telegram.forum_chat_id`. " + "When set, requires `default_topic_id`. Negative integer as string. " + "Forbidden when `dm_only: true`. See reference/rfcs/supergroup-mode.md."),
13759
13759
  default_topic_id: exports_external.number().int().positive().optional().describe("Forum topic ID this agent's automated outbounds default to when " + "no more-specific alias resolves. Defaults to General (topic 1) when " + "`chat_id` is set and this is omitted \u2014 set it only to pin a different " + "fallback topic. " + "Telegram's General topic is `id=1` at MTProto but sends omit the " + "field \u2014 the outbound wrapper strips `message_thread_id === 1` " + "on send. Forbidden when `dm_only: true`."),
13760
13760
  topic_aliases: exports_external.record(exports_external.string(), exports_external.number().int().positive()).optional().describe("Operator-friendly names for forum topic IDs (e.g. " + "`{ general: 1, planning: 17, cron: 23, admin: 31, alerts: 41 }`). " + "Referenced from per-cron `topic:` fields and the outbound router " + "for autonomous events (boot \u2192 alerts, hostd \u2192 admin, etc.). " + "Cascades per-key through defaults \u2192 profile \u2192 agent.")
13761
13761
  }).optional().superRefine((tg, ctx) => {
@@ -13981,7 +13981,7 @@ var init_schema = __esm(() => {
13981
13981
  drive: AgentGoogleWorkspaceConfigSchema.describe("RFC D legacy key \u2014 use `google_workspace:` instead. Per-agent " + "google_workspace overrides (currently approvers + tier). When set, " + "replaces the top-level approvers list for this agent. " + "google_client_id/secret are not per-agent \u2014 they live at the top level."),
13982
13982
  google_workspace: AgentGoogleWorkspaceConfigSchema.describe("RFC G canonical key. Per-agent Google Workspace overrides \u2014 currently " + "approvers (replaces, does not extend the top-level list) and tier " + "(`core` | `extended` | `complete`, replaces top-level default). " + "google_client_id/secret are not per-agent \u2014 they live at the top level. " + "Mutually exclusive with `drive:` on the same agent (loader fails fast " + "if both are set)."),
13983
13983
  microsoft_workspace: AgentMicrosoftWorkspaceConfigSchema.describe("RFC #1873 (Microsoft 365 integration). Per-agent Microsoft Workspace " + "override \u2014 pins the Microsoft account this agent reads via the " + "auth-broker (must be a key in top-level `microsoft_accounts:` with " + "this agent in its `enabled_for[]`) and optionally overrides org_mode. " + "microsoft_client_id/secret are not per-agent."),
13984
- notion_workspace: AgentNotionWorkspaceConfigSchema.describe("RFC docs/rfcs/notion-integration.md. Per-agent Notion access. " + "Presence opts the agent IN (launcher scaffolded, MCP entry emitted, " + "broker grants the integration token). Optional `databases:` filter " + "narrows which DBs this agent may read/write \u2014 names must resolve in " + "top-level notion_workspace.databases. Absence opts the agent OUT."),
13984
+ notion_workspace: AgentNotionWorkspaceConfigSchema.describe("RFC reference/rfcs/notion-integration.md. Per-agent Notion access. " + "Presence opts the agent IN (launcher scaffolded, MCP entry emitted, " + "broker grants the integration token). Optional `databases:` filter " + "narrows which DBs this agent may read/write \u2014 names must resolve in " + "top-level notion_workspace.databases. Absence opts the agent OUT."),
13985
13985
  repos: exports_external.record(exports_external.string().regex(/^[a-z0-9][a-z0-9-]*$/, "Repo slug must be kebab-case ASCII: start with a lowercase letter or digit, contain only lowercase letters, digits, and hyphens"), exports_external.object({
13986
13986
  url: exports_external.string().min(1).describe("Git remote URL for the repo (e.g. 'git@github.com:org/repo.git' or " + "'https://github.com/org/repo.git'). Used verbatim for git clone."),
13987
13987
  branch_default: exports_external.string().optional().describe("Default branch to track (defaults to the remote's HEAD, typically 'main'). " + "The per-agent branch 'agent/<agentName>/main' fast-forwards to this branch " + "when the worktree is clean on session start.")
@@ -14116,9 +14116,9 @@ var init_schema = __esm(() => {
14116
14116
  drive: GoogleWorkspaceConfigSchema.describe("RFC D legacy key \u2014 use `google_workspace:` instead. Optional Google " + "Workspace onboarding configuration. When set, supplies Google OAuth " + "client credentials, the approver allowlist for `switchroom drive " + "connect`, and the optional tier knob. Env vars " + "(SWITCHROOM_GOOGLE_CLIENT_ID, SWITCHROOM_GOOGLE_CLIENT_SECRET, " + "SWITCHROOM_APPROVER_USER_ID) take precedence over this block when " + "set, preserving back-compat with the env-only flow shipped in #766."),
14117
14117
  google_workspace: GoogleWorkspaceConfigSchema.describe("RFC G canonical key. Top-level Google Workspace configuration \u2014 " + "OAuth client credentials, approver allowlist, and tier knob (`core` " + "| `extended` | `complete`, default `core`). Mutually exclusive with " + "`drive:` at the top level (loader fails fast if both are set)."),
14118
14118
  microsoft_workspace: MicrosoftWorkspaceConfigSchema.describe("RFC #1873 (Microsoft 365 integration). Top-level Microsoft Workspace " + "configuration \u2014 OAuth client credentials (Entra app), authority " + "endpoint (defaults to /common for personal MSA + work), and the " + "org_mode opt-in for Teams/SharePoint surfaces. Block is optional; " + "when omitted the broker does not register the Microsoft provider."),
14119
- notion_workspace: NotionWorkspaceConfigSchema.describe("RFC docs/rfcs/notion-integration.md. Top-level Notion integration " + "config \u2014 vault key for the integration token, friendly-name \u2192 " + "database UUID map, optional MCP-package version pin, and optional " + "global rate-limit override (default 3 rps, Notion's documented " + "public-API limit). Block is optional; when omitted no agent gets a " + "Notion MCP entry regardless of per-agent config."),
14119
+ notion_workspace: NotionWorkspaceConfigSchema.describe("RFC reference/rfcs/notion-integration.md. Top-level Notion integration " + "config \u2014 vault key for the integration token, friendly-name \u2192 " + "database UUID map, optional MCP-package version pin, and optional " + "global rate-limit override (default 3 rps, Notion's documented " + "public-API limit). Block is optional; when omitted no agent gets a " + "Notion MCP entry regardless of per-agent config."),
14120
14120
  quota: QuotaConfigSchema.optional().describe("Optional weekly/monthly USD spend budgets rendered in the session " + "greeting. Usage is read from ccusage at runtime; no network calls."),
14121
- host_control: HostControlConfigSchema.default({}).describe("Host-control daemon configuration. Defaults to enabled=true since " + "RFC C Phase 2 (docs/rfcs/host-control-daemon.md). Omit the block " + "to accept defaults; set `enabled: false` only on legacy systemd-" + "mode installs (removal tracked as RFC C Phase 3)."),
14121
+ host_control: HostControlConfigSchema.default({}).describe("Host-control daemon configuration. Defaults to enabled=true since " + "RFC C Phase 2 (reference/rfcs/host-control-daemon.md). Omit the block " + "to accept defaults; set `enabled: false` only on legacy systemd-" + "mode installs (removal tracked as RFC C Phase 3)."),
14122
14122
  hostd: HostdConfigSchema.default({}).describe("hostd verb-level knobs (RFC admin-agent-config-edit). Distinct " + "from `host_control:` which governs whether the daemon runs at " + "all. Scopes the opt-in flag and rate cap for the " + "`config_propose_edit` verb (disabled by default)."),
14123
14123
  web_service: WebServiceConfigSchema.default({}).describe("Web-service container (dashboard + GitHub-webhook receiver) config. " + "Defaults to managed=false so existing systemd-mode installs are " + "untouched. Set managed: true after cutting over to the " + "`switchroom-web` container \u2014 then `switchroom update` keeps it " + "refreshed. See `switchroom webd install`."),
14124
14124
  google_accounts: exports_external.record(exports_external.string().regex(/^[^@\s:]+@[^@\s:]+\.[^@\s:]+$/, {
@@ -14140,7 +14140,7 @@ var init_schema = __esm(() => {
14140
14140
  agents: exports_external.record(exports_external.string().regex(/^[a-z0-9][a-z0-9_-]{0,50}$/, {
14141
14141
  message: "Agent name must start with a letter/digit, contain only lowercase letters/digits/hyphens/underscores, and be at most 51 characters (Telegram callback_data byte limit)"
14142
14142
  }), AgentSchema).describe("Map of agent name to agent configuration"),
14143
- cron: CronConfigSchema.optional().describe("Cheap-cron settings (docs/rfcs/cheap-cron-sessions.md). Operator-owned " + "egress allowlist + host-pinned secret bindings for Tier-0 http-diff " + "polls (\u00a76.1). Required to enable any http-diff poll; not agent-writable.")
14143
+ cron: CronConfigSchema.optional().describe("Cheap-cron settings (reference/rfcs/cheap-cron-sessions.md). Operator-owned " + "egress allowlist + host-pinned secret bindings for Tier-0 http-diff " + "polls (\u00a76.1). Required to enable any http-diff poll; not agent-writable.")
14144
14144
  });
14145
14145
  });
14146
14146
 
@@ -15897,7 +15897,7 @@ var init_acl = __esm(() => {
15897
15897
  ]);
15898
15898
  });
15899
15899
 
15900
- // ../switchroom-sec-1417/node_modules/.bun/handlebars@4.7.9/node_modules/handlebars/dist/cjs/handlebars/utils.js
15900
+ // node_modules/.bun/handlebars@4.7.9/node_modules/handlebars/dist/cjs/handlebars/utils.js
15901
15901
  var require_utils = __commonJS((exports) => {
15902
15902
  exports.__esModule = true;
15903
15903
  exports.extend = extend;
@@ -15993,7 +15993,7 @@ var require_utils = __commonJS((exports) => {
15993
15993
  }
15994
15994
  });
15995
15995
 
15996
- // ../switchroom-sec-1417/node_modules/.bun/handlebars@4.7.9/node_modules/handlebars/dist/cjs/handlebars/exception.js
15996
+ // node_modules/.bun/handlebars@4.7.9/node_modules/handlebars/dist/cjs/handlebars/exception.js
15997
15997
  var require_exception = __commonJS((exports, module) => {
15998
15998
  exports.__esModule = true;
15999
15999
  var errorProps = ["description", "fileName", "lineNumber", "endLineNumber", "message", "name", "number", "stack"];
@@ -16038,7 +16038,7 @@ var require_exception = __commonJS((exports, module) => {
16038
16038
  module.exports = exports["default"];
16039
16039
  });
16040
16040
 
16041
- // ../switchroom-sec-1417/node_modules/.bun/handlebars@4.7.9/node_modules/handlebars/dist/cjs/handlebars/helpers/block-helper-missing.js
16041
+ // node_modules/.bun/handlebars@4.7.9/node_modules/handlebars/dist/cjs/handlebars/helpers/block-helper-missing.js
16042
16042
  var require_block_helper_missing = __commonJS((exports, module) => {
16043
16043
  exports.__esModule = true;
16044
16044
  var _utils = require_utils();
@@ -16071,7 +16071,7 @@ var require_block_helper_missing = __commonJS((exports, module) => {
16071
16071
  module.exports = exports["default"];
16072
16072
  });
16073
16073
 
16074
- // ../switchroom-sec-1417/node_modules/.bun/handlebars@4.7.9/node_modules/handlebars/dist/cjs/handlebars/helpers/each.js
16074
+ // node_modules/.bun/handlebars@4.7.9/node_modules/handlebars/dist/cjs/handlebars/helpers/each.js
16075
16075
  var require_each = __commonJS((exports, module) => {
16076
16076
  exports.__esModule = true;
16077
16077
  function _interopRequireDefault(obj) {
@@ -16152,7 +16152,7 @@ var require_each = __commonJS((exports, module) => {
16152
16152
  module.exports = exports["default"];
16153
16153
  });
16154
16154
 
16155
- // ../switchroom-sec-1417/node_modules/.bun/handlebars@4.7.9/node_modules/handlebars/dist/cjs/handlebars/helpers/helper-missing.js
16155
+ // node_modules/.bun/handlebars@4.7.9/node_modules/handlebars/dist/cjs/handlebars/helpers/helper-missing.js
16156
16156
  var require_helper_missing = __commonJS((exports, module) => {
16157
16157
  exports.__esModule = true;
16158
16158
  function _interopRequireDefault(obj) {
@@ -16172,7 +16172,7 @@ var require_helper_missing = __commonJS((exports, module) => {
16172
16172
  module.exports = exports["default"];
16173
16173
  });
16174
16174
 
16175
- // ../switchroom-sec-1417/node_modules/.bun/handlebars@4.7.9/node_modules/handlebars/dist/cjs/handlebars/helpers/if.js
16175
+ // node_modules/.bun/handlebars@4.7.9/node_modules/handlebars/dist/cjs/handlebars/helpers/if.js
16176
16176
  var require_if = __commonJS((exports, module) => {
16177
16177
  exports.__esModule = true;
16178
16178
  function _interopRequireDefault(obj) {
@@ -16209,7 +16209,7 @@ var require_if = __commonJS((exports, module) => {
16209
16209
  module.exports = exports["default"];
16210
16210
  });
16211
16211
 
16212
- // ../switchroom-sec-1417/node_modules/.bun/handlebars@4.7.9/node_modules/handlebars/dist/cjs/handlebars/helpers/log.js
16212
+ // node_modules/.bun/handlebars@4.7.9/node_modules/handlebars/dist/cjs/handlebars/helpers/log.js
16213
16213
  var require_log2 = __commonJS((exports, module) => {
16214
16214
  exports.__esModule = true;
16215
16215
  exports.default = function(instance) {
@@ -16231,7 +16231,7 @@ var require_log2 = __commonJS((exports, module) => {
16231
16231
  module.exports = exports["default"];
16232
16232
  });
16233
16233
 
16234
- // ../switchroom-sec-1417/node_modules/.bun/handlebars@4.7.9/node_modules/handlebars/dist/cjs/handlebars/helpers/lookup.js
16234
+ // node_modules/.bun/handlebars@4.7.9/node_modules/handlebars/dist/cjs/handlebars/helpers/lookup.js
16235
16235
  var require_lookup = __commonJS((exports, module) => {
16236
16236
  exports.__esModule = true;
16237
16237
  exports.default = function(instance) {
@@ -16245,7 +16245,7 @@ var require_lookup = __commonJS((exports, module) => {
16245
16245
  module.exports = exports["default"];
16246
16246
  });
16247
16247
 
16248
- // ../switchroom-sec-1417/node_modules/.bun/handlebars@4.7.9/node_modules/handlebars/dist/cjs/handlebars/helpers/with.js
16248
+ // node_modules/.bun/handlebars@4.7.9/node_modules/handlebars/dist/cjs/handlebars/helpers/with.js
16249
16249
  var require_with = __commonJS((exports, module) => {
16250
16250
  exports.__esModule = true;
16251
16251
  function _interopRequireDefault(obj) {
@@ -16281,7 +16281,7 @@ var require_with = __commonJS((exports, module) => {
16281
16281
  module.exports = exports["default"];
16282
16282
  });
16283
16283
 
16284
- // ../switchroom-sec-1417/node_modules/.bun/handlebars@4.7.9/node_modules/handlebars/dist/cjs/handlebars/helpers.js
16284
+ // node_modules/.bun/handlebars@4.7.9/node_modules/handlebars/dist/cjs/handlebars/helpers.js
16285
16285
  var require_helpers = __commonJS((exports) => {
16286
16286
  exports.__esModule = true;
16287
16287
  exports.registerDefaultHelpers = registerDefaultHelpers;
@@ -16322,7 +16322,7 @@ var require_helpers = __commonJS((exports) => {
16322
16322
  }
16323
16323
  });
16324
16324
 
16325
- // ../switchroom-sec-1417/node_modules/.bun/handlebars@4.7.9/node_modules/handlebars/dist/cjs/handlebars/decorators/inline.js
16325
+ // node_modules/.bun/handlebars@4.7.9/node_modules/handlebars/dist/cjs/handlebars/decorators/inline.js
16326
16326
  var require_inline = __commonJS((exports, module) => {
16327
16327
  exports.__esModule = true;
16328
16328
  var _utils = require_utils();
@@ -16346,7 +16346,7 @@ var require_inline = __commonJS((exports, module) => {
16346
16346
  module.exports = exports["default"];
16347
16347
  });
16348
16348
 
16349
- // ../switchroom-sec-1417/node_modules/.bun/handlebars@4.7.9/node_modules/handlebars/dist/cjs/handlebars/decorators.js
16349
+ // node_modules/.bun/handlebars@4.7.9/node_modules/handlebars/dist/cjs/handlebars/decorators.js
16350
16350
  var require_decorators = __commonJS((exports) => {
16351
16351
  exports.__esModule = true;
16352
16352
  exports.registerDefaultDecorators = registerDefaultDecorators;
@@ -16360,7 +16360,7 @@ var require_decorators = __commonJS((exports) => {
16360
16360
  }
16361
16361
  });
16362
16362
 
16363
- // ../switchroom-sec-1417/node_modules/.bun/handlebars@4.7.9/node_modules/handlebars/dist/cjs/handlebars/logger.js
16363
+ // node_modules/.bun/handlebars@4.7.9/node_modules/handlebars/dist/cjs/handlebars/logger.js
16364
16364
  var require_logger = __commonJS((exports, module) => {
16365
16365
  exports.__esModule = true;
16366
16366
  var _utils = require_utils();
@@ -16396,7 +16396,7 @@ var require_logger = __commonJS((exports, module) => {
16396
16396
  module.exports = exports["default"];
16397
16397
  });
16398
16398
 
16399
- // ../switchroom-sec-1417/node_modules/.bun/handlebars@4.7.9/node_modules/handlebars/dist/cjs/handlebars/internal/proto-access.js
16399
+ // node_modules/.bun/handlebars@4.7.9/node_modules/handlebars/dist/cjs/handlebars/internal/proto-access.js
16400
16400
  var require_proto_access = __commonJS((exports) => {
16401
16401
  exports.__esModule = true;
16402
16402
  exports.createProtoAccessControl = createProtoAccessControl;
@@ -16463,7 +16463,7 @@ var require_proto_access = __commonJS((exports) => {
16463
16463
  }
16464
16464
  });
16465
16465
 
16466
- // ../switchroom-sec-1417/node_modules/.bun/handlebars@4.7.9/node_modules/handlebars/dist/cjs/handlebars/base.js
16466
+ // node_modules/.bun/handlebars@4.7.9/node_modules/handlebars/dist/cjs/handlebars/base.js
16467
16467
  var require_base = __commonJS((exports) => {
16468
16468
  exports.__esModule = true;
16469
16469
  exports.HandlebarsEnvironment = HandlebarsEnvironment;
@@ -16556,7 +16556,7 @@ var require_base = __commonJS((exports) => {
16556
16556
  exports.logger = _logger2["default"];
16557
16557
  });
16558
16558
 
16559
- // ../switchroom-sec-1417/node_modules/.bun/handlebars@4.7.9/node_modules/handlebars/dist/cjs/handlebars/safe-string.js
16559
+ // node_modules/.bun/handlebars@4.7.9/node_modules/handlebars/dist/cjs/handlebars/safe-string.js
16560
16560
  var require_safe_string = __commonJS((exports, module) => {
16561
16561
  exports.__esModule = true;
16562
16562
  function SafeString(string) {
@@ -16569,7 +16569,7 @@ var require_safe_string = __commonJS((exports, module) => {
16569
16569
  module.exports = exports["default"];
16570
16570
  });
16571
16571
 
16572
- // ../switchroom-sec-1417/node_modules/.bun/handlebars@4.7.9/node_modules/handlebars/dist/cjs/handlebars/internal/wrapHelper.js
16572
+ // node_modules/.bun/handlebars@4.7.9/node_modules/handlebars/dist/cjs/handlebars/internal/wrapHelper.js
16573
16573
  var require_wrapHelper = __commonJS((exports) => {
16574
16574
  exports.__esModule = true;
16575
16575
  exports.wrapHelper = wrapHelper;
@@ -16586,7 +16586,7 @@ var require_wrapHelper = __commonJS((exports) => {
16586
16586
  }
16587
16587
  });
16588
16588
 
16589
- // ../switchroom-sec-1417/node_modules/.bun/handlebars@4.7.9/node_modules/handlebars/dist/cjs/handlebars/runtime.js
16589
+ // node_modules/.bun/handlebars@4.7.9/node_modules/handlebars/dist/cjs/handlebars/runtime.js
16590
16590
  var require_runtime = __commonJS((exports) => {
16591
16591
  exports.__esModule = true;
16592
16592
  exports.checkRevision = checkRevision;
@@ -16901,7 +16901,7 @@ var require_runtime = __commonJS((exports) => {
16901
16901
  }
16902
16902
  });
16903
16903
 
16904
- // ../switchroom-sec-1417/node_modules/.bun/handlebars@4.7.9/node_modules/handlebars/dist/cjs/handlebars/no-conflict.js
16904
+ // node_modules/.bun/handlebars@4.7.9/node_modules/handlebars/dist/cjs/handlebars/no-conflict.js
16905
16905
  var require_no_conflict = __commonJS((exports, module) => {
16906
16906
  exports.__esModule = true;
16907
16907
  exports.default = function(Handlebars) {
@@ -16925,7 +16925,7 @@ var require_no_conflict = __commonJS((exports, module) => {
16925
16925
  module.exports = exports["default"];
16926
16926
  });
16927
16927
 
16928
- // ../switchroom-sec-1417/node_modules/.bun/handlebars@4.7.9/node_modules/handlebars/dist/cjs/handlebars.runtime.js
16928
+ // node_modules/.bun/handlebars@4.7.9/node_modules/handlebars/dist/cjs/handlebars.runtime.js
16929
16929
  var require_handlebars_runtime = __commonJS((exports, module) => {
16930
16930
  exports.__esModule = true;
16931
16931
  function _interopRequireDefault(obj) {
@@ -16979,7 +16979,7 @@ var require_handlebars_runtime = __commonJS((exports, module) => {
16979
16979
  module.exports = exports["default"];
16980
16980
  });
16981
16981
 
16982
- // ../switchroom-sec-1417/node_modules/.bun/handlebars@4.7.9/node_modules/handlebars/dist/cjs/handlebars/compiler/ast.js
16982
+ // node_modules/.bun/handlebars@4.7.9/node_modules/handlebars/dist/cjs/handlebars/compiler/ast.js
16983
16983
  var require_ast = __commonJS((exports, module) => {
16984
16984
  exports.__esModule = true;
16985
16985
  var AST = {
@@ -16999,7 +16999,7 @@ var require_ast = __commonJS((exports, module) => {
16999
16999
  module.exports = exports["default"];
17000
17000
  });
17001
17001
 
17002
- // ../switchroom-sec-1417/node_modules/.bun/handlebars@4.7.9/node_modules/handlebars/dist/cjs/handlebars/compiler/parser.js
17002
+ // node_modules/.bun/handlebars@4.7.9/node_modules/handlebars/dist/cjs/handlebars/compiler/parser.js
17003
17003
  var require_parser2 = __commonJS((exports, module) => {
17004
17004
  exports.__esModule = true;
17005
17005
  var handlebars = function() {
@@ -17723,7 +17723,7 @@ Expecting ` + expected.join(", ") + ", got '" + (this.terminals_[symbol] || symb
17723
17723
  module.exports = exports["default"];
17724
17724
  });
17725
17725
 
17726
- // ../switchroom-sec-1417/node_modules/.bun/handlebars@4.7.9/node_modules/handlebars/dist/cjs/handlebars/compiler/visitor.js
17726
+ // node_modules/.bun/handlebars@4.7.9/node_modules/handlebars/dist/cjs/handlebars/compiler/visitor.js
17727
17727
  var require_visitor = __commonJS((exports, module) => {
17728
17728
  exports.__esModule = true;
17729
17729
  function _interopRequireDefault(obj) {
@@ -17828,7 +17828,7 @@ var require_visitor = __commonJS((exports, module) => {
17828
17828
  module.exports = exports["default"];
17829
17829
  });
17830
17830
 
17831
- // ../switchroom-sec-1417/node_modules/.bun/handlebars@4.7.9/node_modules/handlebars/dist/cjs/handlebars/compiler/whitespace-control.js
17831
+ // node_modules/.bun/handlebars@4.7.9/node_modules/handlebars/dist/cjs/handlebars/compiler/whitespace-control.js
17832
17832
  var require_whitespace_control = __commonJS((exports, module) => {
17833
17833
  exports.__esModule = true;
17834
17834
  function _interopRequireDefault(obj) {
@@ -17974,7 +17974,7 @@ var require_whitespace_control = __commonJS((exports, module) => {
17974
17974
  module.exports = exports["default"];
17975
17975
  });
17976
17976
 
17977
- // ../switchroom-sec-1417/node_modules/.bun/handlebars@4.7.9/node_modules/handlebars/dist/cjs/handlebars/compiler/helpers.js
17977
+ // node_modules/.bun/handlebars@4.7.9/node_modules/handlebars/dist/cjs/handlebars/compiler/helpers.js
17978
17978
  var require_helpers2 = __commonJS((exports) => {
17979
17979
  exports.__esModule = true;
17980
17980
  exports.SourceLocation = SourceLocation;
@@ -18159,7 +18159,7 @@ var require_helpers2 = __commonJS((exports) => {
18159
18159
  }
18160
18160
  });
18161
18161
 
18162
- // ../switchroom-sec-1417/node_modules/.bun/handlebars@4.7.9/node_modules/handlebars/dist/cjs/handlebars/compiler/base.js
18162
+ // node_modules/.bun/handlebars@4.7.9/node_modules/handlebars/dist/cjs/handlebars/compiler/base.js
18163
18163
  var require_base2 = __commonJS((exports) => {
18164
18164
  exports.__esModule = true;
18165
18165
  exports.parseWithoutProcessing = parseWithoutProcessing;
@@ -18258,7 +18258,7 @@ var require_base2 = __commonJS((exports) => {
18258
18258
  }
18259
18259
  });
18260
18260
 
18261
- // ../switchroom-sec-1417/node_modules/.bun/handlebars@4.7.9/node_modules/handlebars/dist/cjs/handlebars/compiler/compiler.js
18261
+ // node_modules/.bun/handlebars@4.7.9/node_modules/handlebars/dist/cjs/handlebars/compiler/compiler.js
18262
18262
  var require_compiler = __commonJS((exports) => {
18263
18263
  exports.__esModule = true;
18264
18264
  exports.Compiler = Compiler;
@@ -18675,7 +18675,7 @@ var require_compiler = __commonJS((exports) => {
18675
18675
  }
18676
18676
  });
18677
18677
 
18678
- // ../switchroom-sec-1417/node_modules/.bun/source-map@0.6.1/node_modules/source-map/lib/base64.js
18678
+ // node_modules/.bun/source-map@0.6.1/node_modules/source-map/lib/base64.js
18679
18679
  var require_base64 = __commonJS((exports) => {
18680
18680
  var intToCharMap = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split("");
18681
18681
  exports.encode = function(number) {
@@ -18714,7 +18714,7 @@ var require_base64 = __commonJS((exports) => {
18714
18714
  };
18715
18715
  });
18716
18716
 
18717
- // ../switchroom-sec-1417/node_modules/.bun/source-map@0.6.1/node_modules/source-map/lib/base64-vlq.js
18717
+ // node_modules/.bun/source-map@0.6.1/node_modules/source-map/lib/base64-vlq.js
18718
18718
  var require_base64_vlq = __commonJS((exports) => {
18719
18719
  var base64 = require_base64();
18720
18720
  var VLQ_BASE_SHIFT = 5;
@@ -18766,7 +18766,7 @@ var require_base64_vlq = __commonJS((exports) => {
18766
18766
  };
18767
18767
  });
18768
18768
 
18769
- // ../switchroom-sec-1417/node_modules/.bun/source-map@0.6.1/node_modules/source-map/lib/util.js
18769
+ // node_modules/.bun/source-map@0.6.1/node_modules/source-map/lib/util.js
18770
18770
  var require_util = __commonJS((exports) => {
18771
18771
  function getArg(aArgs, aName, aDefaultValue) {
18772
18772
  if (aName in aArgs) {
@@ -19065,7 +19065,7 @@ var require_util = __commonJS((exports) => {
19065
19065
  exports.computeSourceURL = computeSourceURL;
19066
19066
  });
19067
19067
 
19068
- // ../switchroom-sec-1417/node_modules/.bun/source-map@0.6.1/node_modules/source-map/lib/array-set.js
19068
+ // node_modules/.bun/source-map@0.6.1/node_modules/source-map/lib/array-set.js
19069
19069
  var require_array_set = __commonJS((exports) => {
19070
19070
  var util3 = require_util();
19071
19071
  var has = Object.prototype.hasOwnProperty;
@@ -19133,7 +19133,7 @@ var require_array_set = __commonJS((exports) => {
19133
19133
  exports.ArraySet = ArraySet;
19134
19134
  });
19135
19135
 
19136
- // ../switchroom-sec-1417/node_modules/.bun/source-map@0.6.1/node_modules/source-map/lib/mapping-list.js
19136
+ // node_modules/.bun/source-map@0.6.1/node_modules/source-map/lib/mapping-list.js
19137
19137
  var require_mapping_list = __commonJS((exports) => {
19138
19138
  var util3 = require_util();
19139
19139
  function generatedPositionAfter(mappingA, mappingB) {
@@ -19170,7 +19170,7 @@ var require_mapping_list = __commonJS((exports) => {
19170
19170
  exports.MappingList = MappingList;
19171
19171
  });
19172
19172
 
19173
- // ../switchroom-sec-1417/node_modules/.bun/source-map@0.6.1/node_modules/source-map/lib/source-map-generator.js
19173
+ // node_modules/.bun/source-map@0.6.1/node_modules/source-map/lib/source-map-generator.js
19174
19174
  var require_source_map_generator = __commonJS((exports) => {
19175
19175
  var base64VLQ = require_base64_vlq();
19176
19176
  var util3 = require_util();
@@ -19440,7 +19440,7 @@ var require_source_map_generator = __commonJS((exports) => {
19440
19440
  exports.SourceMapGenerator = SourceMapGenerator;
19441
19441
  });
19442
19442
 
19443
- // ../switchroom-sec-1417/node_modules/.bun/source-map@0.6.1/node_modules/source-map/lib/binary-search.js
19443
+ // node_modules/.bun/source-map@0.6.1/node_modules/source-map/lib/binary-search.js
19444
19444
  var require_binary_search = __commonJS((exports) => {
19445
19445
  exports.GREATEST_LOWER_BOUND = 1;
19446
19446
  exports.LEAST_UPPER_BOUND = 2;
@@ -19487,7 +19487,7 @@ var require_binary_search = __commonJS((exports) => {
19487
19487
  };
19488
19488
  });
19489
19489
 
19490
- // ../switchroom-sec-1417/node_modules/.bun/source-map@0.6.1/node_modules/source-map/lib/quick-sort.js
19490
+ // node_modules/.bun/source-map@0.6.1/node_modules/source-map/lib/quick-sort.js
19491
19491
  var require_quick_sort = __commonJS((exports) => {
19492
19492
  function swap(ary, x, y) {
19493
19493
  var temp = ary[x];
@@ -19520,7 +19520,7 @@ var require_quick_sort = __commonJS((exports) => {
19520
19520
  };
19521
19521
  });
19522
19522
 
19523
- // ../switchroom-sec-1417/node_modules/.bun/source-map@0.6.1/node_modules/source-map/lib/source-map-consumer.js
19523
+ // node_modules/.bun/source-map@0.6.1/node_modules/source-map/lib/source-map-consumer.js
19524
19524
  var require_source_map_consumer = __commonJS((exports) => {
19525
19525
  var util3 = require_util();
19526
19526
  var binarySearch = require_binary_search();
@@ -20089,7 +20089,7 @@ var require_source_map_consumer = __commonJS((exports) => {
20089
20089
  exports.IndexedSourceMapConsumer = IndexedSourceMapConsumer;
20090
20090
  });
20091
20091
 
20092
- // ../switchroom-sec-1417/node_modules/.bun/source-map@0.6.1/node_modules/source-map/lib/source-node.js
20092
+ // node_modules/.bun/source-map@0.6.1/node_modules/source-map/lib/source-node.js
20093
20093
  var require_source_node = __commonJS((exports) => {
20094
20094
  var SourceMapGenerator = require_source_map_generator().SourceMapGenerator;
20095
20095
  var util3 = require_util();
@@ -20343,14 +20343,14 @@ var require_source_node = __commonJS((exports) => {
20343
20343
  exports.SourceNode = SourceNode;
20344
20344
  });
20345
20345
 
20346
- // ../switchroom-sec-1417/node_modules/.bun/source-map@0.6.1/node_modules/source-map/source-map.js
20346
+ // node_modules/.bun/source-map@0.6.1/node_modules/source-map/source-map.js
20347
20347
  var require_source_map = __commonJS((exports) => {
20348
20348
  exports.SourceMapGenerator = require_source_map_generator().SourceMapGenerator;
20349
20349
  exports.SourceMapConsumer = require_source_map_consumer().SourceMapConsumer;
20350
20350
  exports.SourceNode = require_source_node().SourceNode;
20351
20351
  });
20352
20352
 
20353
- // ../switchroom-sec-1417/node_modules/.bun/handlebars@4.7.9/node_modules/handlebars/dist/cjs/handlebars/compiler/code-gen.js
20353
+ // node_modules/.bun/handlebars@4.7.9/node_modules/handlebars/dist/cjs/handlebars/compiler/code-gen.js
20354
20354
  var require_code_gen = __commonJS((exports, module) => {
20355
20355
  exports.__esModule = true;
20356
20356
  var _utils = require_utils();
@@ -20483,7 +20483,7 @@ var require_code_gen = __commonJS((exports, module) => {
20483
20483
  module.exports = exports["default"];
20484
20484
  });
20485
20485
 
20486
- // ../switchroom-sec-1417/node_modules/.bun/handlebars@4.7.9/node_modules/handlebars/dist/cjs/handlebars/compiler/javascript-compiler.js
20486
+ // node_modules/.bun/handlebars@4.7.9/node_modules/handlebars/dist/cjs/handlebars/compiler/javascript-compiler.js
20487
20487
  var require_javascript_compiler = __commonJS((exports, module) => {
20488
20488
  exports.__esModule = true;
20489
20489
  function _interopRequireDefault(obj) {
@@ -21251,7 +21251,7 @@ var require_javascript_compiler = __commonJS((exports, module) => {
21251
21251
  module.exports = exports["default"];
21252
21252
  });
21253
21253
 
21254
- // ../switchroom-sec-1417/node_modules/.bun/handlebars@4.7.9/node_modules/handlebars/dist/cjs/handlebars.js
21254
+ // node_modules/.bun/handlebars@4.7.9/node_modules/handlebars/dist/cjs/handlebars.js
21255
21255
  var require_handlebars = __commonJS((exports, module) => {
21256
21256
  exports.__esModule = true;
21257
21257
  function _interopRequireDefault(obj) {
@@ -21295,7 +21295,7 @@ var require_handlebars = __commonJS((exports, module) => {
21295
21295
  module.exports = exports["default"];
21296
21296
  });
21297
21297
 
21298
- // ../switchroom-sec-1417/node_modules/.bun/handlebars@4.7.9/node_modules/handlebars/dist/cjs/handlebars/compiler/printer.js
21298
+ // node_modules/.bun/handlebars@4.7.9/node_modules/handlebars/dist/cjs/handlebars/compiler/printer.js
21299
21299
  var require_printer = __commonJS((exports) => {
21300
21300
  exports.__esModule = true;
21301
21301
  exports.print = print;
@@ -21439,7 +21439,7 @@ var require_printer = __commonJS((exports) => {
21439
21439
  };
21440
21440
  });
21441
21441
 
21442
- // ../switchroom-sec-1417/node_modules/.bun/handlebars@4.7.9/node_modules/handlebars/lib/index.js
21442
+ // node_modules/.bun/handlebars@4.7.9/node_modules/handlebars/lib/index.js
21443
21443
  var require_lib = __commonJS((exports, module) => {
21444
21444
  var handlebars = require_handlebars()["default"];
21445
21445
  var printer = require_printer();
@@ -31570,6 +31570,106 @@ var init_doctor_notion = __esm(() => {
31570
31570
  HEARTBEAT_STALE_MS = 60 * 1000;
31571
31571
  });
31572
31572
 
31573
+ // src/cli/doctor-mcp-secrets.ts
31574
+ function computeMcpSecretRequirements(config) {
31575
+ const cfg = config;
31576
+ const reqs = [];
31577
+ for (const [agent, agentConfig] of Object.entries(cfg.agents ?? {})) {
31578
+ if (!agentConfig)
31579
+ continue;
31580
+ const profileName = agentConfig.extends;
31581
+ const profileMcp = profileName != null && profileName.length > 0 ? cfg.profiles?.[profileName]?.mcp_servers ?? {} : {};
31582
+ const effectiveMcp = {
31583
+ ...cfg.defaults?.mcp_servers ?? {},
31584
+ ...profileMcp,
31585
+ ...agentConfig.mcp_servers ?? {}
31586
+ };
31587
+ for (const [server, entry] of Object.entries(effectiveMcp)) {
31588
+ if (!entry || typeof entry !== "object")
31589
+ continue;
31590
+ const declared = entry.secrets;
31591
+ if (!Array.isArray(declared))
31592
+ continue;
31593
+ const keys = declared.filter((k) => typeof k === "string" && k.length > 0);
31594
+ if (keys.length === 0)
31595
+ continue;
31596
+ reqs.push({ agent, server, keys });
31597
+ }
31598
+ }
31599
+ return reqs;
31600
+ }
31601
+ async function runMcpSecretChecks(config, deps = {}) {
31602
+ const reqs = computeMcpSecretRequirements(config);
31603
+ if (reqs.length === 0)
31604
+ return [];
31605
+ const read = deps.vaultAclReader ?? (async () => ({
31606
+ kind: "unreachable",
31607
+ msg: "no vault reader wired"
31608
+ }));
31609
+ const aclCache = new Map;
31610
+ const readKey = async (key) => {
31611
+ const cached = aclCache.get(key);
31612
+ if (cached)
31613
+ return cached;
31614
+ const r = await read(key);
31615
+ aclCache.set(key, r);
31616
+ return r;
31617
+ };
31618
+ const agentsNeedingKey = new Map;
31619
+ for (const r of reqs) {
31620
+ for (const key of r.keys) {
31621
+ let set = agentsNeedingKey.get(key);
31622
+ if (!set) {
31623
+ set = new Set;
31624
+ agentsNeedingKey.set(key, set);
31625
+ }
31626
+ set.add(r.agent);
31627
+ }
31628
+ }
31629
+ const results = [];
31630
+ for (const r of reqs) {
31631
+ for (const key of r.keys) {
31632
+ const acl = await readKey(key);
31633
+ const name = `mcp-conn:${r.agent}:${r.server}:${key}`;
31634
+ const want = [...agentsNeedingKey.get(key) ?? new Set].sort();
31635
+ if (acl.kind === "unreachable") {
31636
+ results.push({
31637
+ name,
31638
+ status: "warn",
31639
+ detail: `vault-broker unreachable, can't verify '${key}' for MCP '${r.server}': ${acl.msg}`,
31640
+ fix: "Ensure the vault-broker is running and the operator socket is reachable, then re-run doctor."
31641
+ });
31642
+ continue;
31643
+ }
31644
+ if (acl.kind === "not_found") {
31645
+ results.push({
31646
+ name,
31647
+ status: "fail",
31648
+ detail: `agent '${r.agent}' loads MCP '${r.server}' which needs vault key '${key}', but the key is missing \u2014 '${r.server}' is configured but NOT authed and will fail at runtime`,
31649
+ fix: `switchroom vault set ${key} --allow ${want.join(",")} (then provide the value), or remove '${r.server}' from this agent's mcp_servers.`
31650
+ });
31651
+ continue;
31652
+ }
31653
+ if (!acl.allow.includes(r.agent)) {
31654
+ const updated = [...new Set([...acl.allow, r.agent])].sort().join(",");
31655
+ results.push({
31656
+ name,
31657
+ status: "fail",
31658
+ detail: `agent '${r.agent}' loads MCP '${r.server}' but is NOT on the vault ACL for '${key}' \u2014 the broker will deny it at runtime`,
31659
+ fix: `switchroom vault set ${key} --allow ${updated} (vault set overwrites the scope \u2014 re-state the full list including '${r.agent}').`
31660
+ });
31661
+ continue;
31662
+ }
31663
+ results.push({
31664
+ name,
31665
+ status: "ok",
31666
+ detail: `MCP '${r.server}' \u2192 '${key}' present + ACL-allowed`
31667
+ });
31668
+ }
31669
+ }
31670
+ return results;
31671
+ }
31672
+
31573
31673
  // src/cli/doctor-credentials-migration.ts
31574
31674
  import {
31575
31675
  existsSync as realExistsSync5,
@@ -33909,6 +34009,20 @@ function registerDoctorCommand(program3) {
33909
34009
  console.error(`Unknown skill: ${opts.skill}. Supported: mff`);
33910
34010
  process.exit(1);
33911
34011
  }
34012
+ const vaultAclReader = async (key) => {
34013
+ try {
34014
+ const { getViaBrokerStructured: getViaBrokerStructured2 } = await Promise.resolve().then(() => (init_client(), exports_client));
34015
+ const result = await getViaBrokerStructured2(key);
34016
+ if (result.kind === "ok") {
34017
+ return { kind: "ok", allow: result.entry.scope?.allow ?? [] };
34018
+ }
34019
+ if (result.kind === "not_found")
34020
+ return { kind: "not_found" };
34021
+ return { kind: "unreachable", msg: result.msg };
34022
+ } catch (err) {
34023
+ return { kind: "unreachable", msg: err.message };
34024
+ }
34025
+ };
33912
34026
  const sections = [
33913
34027
  { title: "Dependencies", results: checkDependencies() },
33914
34028
  { title: "Skills Prerequisites", results: checkSkillsPrerequisites() },
@@ -33950,25 +34064,11 @@ function registerDoctorCommand(program3) {
33950
34064
  },
33951
34065
  {
33952
34066
  title: "Notion (RFC notion-integration)",
33953
- results: await runNotionChecks(config, {
33954
- vaultAclReader: async (key) => {
33955
- try {
33956
- const { getViaBrokerStructured: getViaBrokerStructured2 } = await Promise.resolve().then(() => (init_client(), exports_client));
33957
- const result = await getViaBrokerStructured2(key);
33958
- if (result.kind === "ok") {
33959
- return {
33960
- kind: "ok",
33961
- allow: result.entry.scope?.allow ?? []
33962
- };
33963
- }
33964
- if (result.kind === "not_found")
33965
- return { kind: "not_found" };
33966
- return { kind: "unreachable", msg: result.msg };
33967
- } catch (err) {
33968
- return { kind: "unreachable", msg: err.message };
33969
- }
33970
- }
33971
- })
34067
+ results: await runNotionChecks(config, { vaultAclReader })
34068
+ },
34069
+ {
34070
+ title: "MCP Connections (auth)",
34071
+ results: await runMcpSecretChecks(config, { vaultAclReader })
33972
34072
  },
33973
34073
  { title: "MFF Skill", results: await checkMff(passphrase, vaultPath, config) },
33974
34074
  { title: "Webkite", results: runWebkiteChecks(config) },
@@ -34091,7 +34191,7 @@ function deriveSlug(inputs, existing) {
34091
34191
  return `${base}_${n}`;
34092
34192
  }
34093
34193
 
34094
- // ../switchroom-sec-1417/node_modules/.bun/boundary@2.0.0/node_modules/boundary/lib/index.js
34194
+ // node_modules/.bun/boundary@2.0.0/node_modules/boundary/lib/index.js
34095
34195
  var require_lib2 = __commonJS((exports2) => {
34096
34196
  Object.defineProperty(exports2, "__esModule", { value: true });
34097
34197
  exports2.binarySearch = exports2.upperBound = exports2.lowerBound = exports2.compare = undefined;
@@ -34138,7 +34238,7 @@ var require_lib2 = __commonJS((exports2) => {
34138
34238
  exports2.binarySearch = binarySearch;
34139
34239
  });
34140
34240
 
34141
- // ../switchroom-sec-1417/node_modules/.bun/structured-source@4.0.0/node_modules/structured-source/lib/structured-source.js
34241
+ // node_modules/.bun/structured-source@4.0.0/node_modules/structured-source/lib/structured-source.js
34142
34242
  var require_structured_source = __commonJS((exports2) => {
34143
34243
  Object.defineProperty(exports2, "__esModule", { value: true });
34144
34244
  exports2.StructuredSource = undefined;
@@ -34193,13 +34293,13 @@ var require_structured_source = __commonJS((exports2) => {
34193
34293
  }
34194
34294
  exports2.StructuredSource = StructuredSource;
34195
34295
  });
34196
- // ../switchroom-sec-1417/node_modules/.bun/@secretlint+core@12.2.0/node_modules/@secretlint/core/module/SecretLintSourceCodeImpl.js
34296
+ // node_modules/.bun/@secretlint+core@12.2.0/node_modules/@secretlint/core/module/SecretLintSourceCodeImpl.js
34197
34297
  var import_structured_source;
34198
34298
  var init_SecretLintSourceCodeImpl = __esm(() => {
34199
34299
  import_structured_source = __toESM(require_structured_source(), 1);
34200
34300
  });
34201
34301
 
34202
- // ../switchroom-sec-1417/node_modules/.bun/@secretlint+core@12.2.0/node_modules/@secretlint/core/module/helper/promise-event-emitter.js
34302
+ // node_modules/.bun/@secretlint+core@12.2.0/node_modules/@secretlint/core/module/helper/promise-event-emitter.js
34203
34303
  class EventEmitter {
34204
34304
  #listeners = new Map;
34205
34305
  on(type, listener) {
@@ -34238,9 +34338,9 @@ class EventEmitter {
34238
34338
  return Array.from(this.#listeners.get(type) ?? []);
34239
34339
  }
34240
34340
  }
34241
- // ../switchroom-sec-1417/node_modules/.bun/@secretlint+core@12.2.0/node_modules/@secretlint/core/module/RuleContext.js
34341
+ // node_modules/.bun/@secretlint+core@12.2.0/node_modules/@secretlint/core/module/RuleContext.js
34242
34342
  var init_RuleContext = () => {};
34243
- // ../switchroom-sec-1417/node_modules/.bun/@secretlint+profiler@12.2.0/node_modules/@secretlint/profiler/module/index.js
34343
+ // node_modules/.bun/@secretlint+profiler@12.2.0/node_modules/@secretlint/profiler/module/index.js
34244
34344
  class SecretLintProfiler {
34245
34345
  perf;
34246
34346
  entries = [];
@@ -34297,7 +34397,7 @@ class SecretLintProfiler {
34297
34397
  }
34298
34398
  }
34299
34399
 
34300
- // ../switchroom-sec-1417/node_modules/.bun/@secretlint+profiler@12.2.0/node_modules/@secretlint/profiler/module/node.js
34400
+ // node_modules/.bun/@secretlint+profiler@12.2.0/node_modules/@secretlint/profiler/module/node.js
34301
34401
  import perf_hooks from "node:perf_hooks";
34302
34402
 
34303
34403
  class NullPerformanceObserver {
@@ -34312,19 +34412,19 @@ var init_node = __esm(() => {
34312
34412
  });
34313
34413
  });
34314
34414
 
34315
- // ../switchroom-sec-1417/node_modules/.bun/@secretlint+core@12.2.0/node_modules/@secretlint/core/module/RunningEvents.js
34415
+ // node_modules/.bun/@secretlint+core@12.2.0/node_modules/@secretlint/core/module/RunningEvents.js
34316
34416
  var init_RunningEvents = __esm(() => {
34317
34417
  init_node();
34318
34418
  });
34319
34419
 
34320
- // ../switchroom-sec-1417/node_modules/.bun/@secretlint+core@12.2.0/node_modules/@secretlint/core/module/RulePresetContext.js
34420
+ // node_modules/.bun/@secretlint+core@12.2.0/node_modules/@secretlint/core/module/RulePresetContext.js
34321
34421
  var init_RulePresetContext = __esm(() => {
34322
34422
  init_RuleContext();
34323
34423
  });
34324
- // ../switchroom-sec-1417/node_modules/.bun/@secretlint+core@12.2.0/node_modules/@secretlint/core/module/messages/index.js
34424
+ // node_modules/.bun/@secretlint+core@12.2.0/node_modules/@secretlint/core/module/messages/index.js
34325
34425
  var init_messages = () => {};
34326
34426
 
34327
- // ../switchroom-sec-1417/node_modules/.bun/ms@2.1.3/node_modules/ms/index.js
34427
+ // node_modules/.bun/ms@2.1.3/node_modules/ms/index.js
34328
34428
  var require_ms = __commonJS((exports2, module) => {
34329
34429
  var s = 1000;
34330
34430
  var m = s * 60;
@@ -34434,7 +34534,7 @@ var require_ms = __commonJS((exports2, module) => {
34434
34534
  }
34435
34535
  });
34436
34536
 
34437
- // ../switchroom-sec-1417/node_modules/.bun/debug@4.4.3/node_modules/debug/src/common.js
34537
+ // node_modules/.bun/debug@4.4.3/node_modules/debug/src/common.js
34438
34538
  var require_common = __commonJS((exports2, module) => {
34439
34539
  function setup(env2) {
34440
34540
  createDebug.debug = createDebug;
@@ -34609,7 +34709,7 @@ var require_common = __commonJS((exports2, module) => {
34609
34709
  module.exports = setup;
34610
34710
  });
34611
34711
 
34612
- // ../switchroom-sec-1417/node_modules/.bun/debug@4.4.3/node_modules/debug/src/browser.js
34712
+ // node_modules/.bun/debug@4.4.3/node_modules/debug/src/browser.js
34613
34713
  var require_browser = __commonJS((exports2, module) => {
34614
34714
  exports2.formatArgs = formatArgs;
34615
34715
  exports2.save = save;
@@ -34769,7 +34869,7 @@ var require_browser = __commonJS((exports2, module) => {
34769
34869
  };
34770
34870
  });
34771
34871
 
34772
- // ../switchroom-sec-1417/node_modules/.bun/has-flag@4.0.0/node_modules/has-flag/index.js
34872
+ // node_modules/.bun/has-flag@4.0.0/node_modules/has-flag/index.js
34773
34873
  var require_has_flag = __commonJS((exports2, module) => {
34774
34874
  module.exports = (flag, argv = process.argv) => {
34775
34875
  const prefix = flag.startsWith("-") ? "" : flag.length === 1 ? "-" : "--";
@@ -34779,7 +34879,7 @@ var require_has_flag = __commonJS((exports2, module) => {
34779
34879
  };
34780
34880
  });
34781
34881
 
34782
- // ../switchroom-sec-1417/node_modules/.bun/supports-color@7.2.0/node_modules/supports-color/index.js
34882
+ // node_modules/.bun/supports-color@7.2.0/node_modules/supports-color/index.js
34783
34883
  var require_supports_color = __commonJS((exports2, module) => {
34784
34884
  var os5 = __require("os");
34785
34885
  var tty2 = __require("tty");
@@ -34878,7 +34978,7 @@ var require_supports_color = __commonJS((exports2, module) => {
34878
34978
  };
34879
34979
  });
34880
34980
 
34881
- // ../switchroom-sec-1417/node_modules/.bun/debug@4.4.3/node_modules/debug/src/node.js
34981
+ // node_modules/.bun/debug@4.4.3/node_modules/debug/src/node.js
34882
34982
  var require_node = __commonJS((exports2, module) => {
34883
34983
  var tty2 = __require("tty");
34884
34984
  var util3 = __require("util");
@@ -35049,7 +35149,7 @@ var require_node = __commonJS((exports2, module) => {
35049
35149
  };
35050
35150
  });
35051
35151
 
35052
- // ../switchroom-sec-1417/node_modules/.bun/debug@4.4.3/node_modules/debug/src/index.js
35152
+ // node_modules/.bun/debug@4.4.3/node_modules/debug/src/index.js
35053
35153
  var require_src = __commonJS((exports2, module) => {
35054
35154
  if (typeof process === "undefined" || process.type === "renderer" || false || process.__nwjs) {
35055
35155
  module.exports = require_browser();
@@ -35058,7 +35158,7 @@ var require_src = __commonJS((exports2, module) => {
35058
35158
  }
35059
35159
  });
35060
35160
 
35061
- // ../switchroom-sec-1417/node_modules/.bun/@secretlint+core@12.2.0/node_modules/@secretlint/core/module/index.js
35161
+ // node_modules/.bun/@secretlint+core@12.2.0/node_modules/@secretlint/core/module/index.js
35062
35162
  var import_debug, debug;
35063
35163
  var init_module = __esm(() => {
35064
35164
  init_SecretLintSourceCodeImpl();
@@ -35071,7 +35171,7 @@ var init_module = __esm(() => {
35071
35171
  debug = import_debug.default("@secretlint/core");
35072
35172
  });
35073
35173
 
35074
- // ../switchroom-sec-1417/node_modules/.bun/@secretlint+secretlint-rule-preset-recommend@12.2.0/node_modules/@secretlint/secretlint-rule-preset-recommend/module/index.js
35174
+ // node_modules/.bun/@secretlint+secretlint-rule-preset-recommend@12.2.0/node_modules/@secretlint/secretlint-rule-preset-recommend/module/index.js
35075
35175
  function requireLodash_uniq() {
35076
35176
  if (hasRequiredLodash_uniq)
35077
35177
  return lodash_uniq;
@@ -36754,7 +36854,7 @@ var init_secretlint_source = __esm(() => {
36754
36854
  init_suppressor();
36755
36855
  });
36756
36856
 
36757
- // ../switchroom-sec-1417/node_modules/.bun/zod@3.25.76/node_modules/zod/v4/core/core.js
36857
+ // node_modules/.bun/zod@3.25.76/node_modules/zod/v4/core/core.js
36758
36858
  function $constructor(name, initializer, params) {
36759
36859
  function init(inst, def) {
36760
36860
  var _a;
@@ -36817,7 +36917,7 @@ var init_core = __esm(() => {
36817
36917
  globalConfig = {};
36818
36918
  });
36819
36919
 
36820
- // ../switchroom-sec-1417/node_modules/.bun/zod@3.25.76/node_modules/zod/v4/core/util.js
36920
+ // node_modules/.bun/zod@3.25.76/node_modules/zod/v4/core/util.js
36821
36921
  var exports_util = {};
36822
36922
  __export(exports_util, {
36823
36923
  unwrapMessage: () => unwrapMessage,
@@ -37333,7 +37433,7 @@ var init_util2 = __esm(() => {
37333
37433
  };
37334
37434
  });
37335
37435
 
37336
- // ../switchroom-sec-1417/node_modules/.bun/zod@3.25.76/node_modules/zod/v4/core/errors.js
37436
+ // node_modules/.bun/zod@3.25.76/node_modules/zod/v4/core/errors.js
37337
37437
  function flattenError(error, mapper = (issue2) => issue2.message) {
37338
37438
  const fieldErrors = {};
37339
37439
  const formErrors = [];
@@ -37411,7 +37511,7 @@ var init_errors2 = __esm(() => {
37411
37511
  $ZodRealError = $constructor("$ZodError", initializer, { Parent: Error });
37412
37512
  });
37413
37513
 
37414
- // ../switchroom-sec-1417/node_modules/.bun/zod@3.25.76/node_modules/zod/v4/core/parse.js
37514
+ // node_modules/.bun/zod@3.25.76/node_modules/zod/v4/core/parse.js
37415
37515
  var _parse = (_Err) => (schema, value, _ctx, _params) => {
37416
37516
  const ctx = _ctx ? Object.assign(_ctx, { async: false }) : { async: false };
37417
37517
  const result = schema._zod.run({ value, issues: [] }, ctx);
@@ -37463,7 +37563,7 @@ var init_parse = __esm(() => {
37463
37563
  safeParseAsync = /* @__PURE__ */ _safeParseAsync($ZodRealError);
37464
37564
  });
37465
37565
 
37466
- // ../switchroom-sec-1417/node_modules/.bun/zod@3.25.76/node_modules/zod/v4/core/regexes.js
37566
+ // node_modules/.bun/zod@3.25.76/node_modules/zod/v4/core/regexes.js
37467
37567
  function emoji() {
37468
37568
  return new RegExp(_emoji, "u");
37469
37569
  }
@@ -37520,7 +37620,7 @@ var init_regexes = __esm(() => {
37520
37620
  uppercase = /^[^a-z]*$/;
37521
37621
  });
37522
37622
 
37523
- // ../switchroom-sec-1417/node_modules/.bun/zod@3.25.76/node_modules/zod/v4/core/checks.js
37623
+ // node_modules/.bun/zod@3.25.76/node_modules/zod/v4/core/checks.js
37524
37624
  var $ZodCheck, numericOriginMap, $ZodCheckLessThan, $ZodCheckGreaterThan, $ZodCheckMultipleOf, $ZodCheckNumberFormat, $ZodCheckMaxLength, $ZodCheckMinLength, $ZodCheckLengthEquals, $ZodCheckStringFormat, $ZodCheckRegex, $ZodCheckLowerCase, $ZodCheckUpperCase, $ZodCheckIncludes, $ZodCheckStartsWith, $ZodCheckEndsWith, $ZodCheckOverwrite;
37525
37625
  var init_checks = __esm(() => {
37526
37626
  init_core();
@@ -37910,7 +38010,7 @@ var init_checks = __esm(() => {
37910
38010
  });
37911
38011
  });
37912
38012
 
37913
- // ../switchroom-sec-1417/node_modules/.bun/zod@3.25.76/node_modules/zod/v4/core/doc.js
38013
+ // node_modules/.bun/zod@3.25.76/node_modules/zod/v4/core/doc.js
37914
38014
  class Doc {
37915
38015
  constructor(args = []) {
37916
38016
  this.content = [];
@@ -37948,7 +38048,7 @@ class Doc {
37948
38048
  }
37949
38049
  }
37950
38050
 
37951
- // ../switchroom-sec-1417/node_modules/.bun/zod@3.25.76/node_modules/zod/v4/core/versions.js
38051
+ // node_modules/.bun/zod@3.25.76/node_modules/zod/v4/core/versions.js
37952
38052
  var version2;
37953
38053
  var init_versions = __esm(() => {
37954
38054
  version2 = {
@@ -37958,7 +38058,7 @@ var init_versions = __esm(() => {
37958
38058
  };
37959
38059
  });
37960
38060
 
37961
- // ../switchroom-sec-1417/node_modules/.bun/zod@3.25.76/node_modules/zod/v4/core/schemas.js
38061
+ // node_modules/.bun/zod@3.25.76/node_modules/zod/v4/core/schemas.js
37962
38062
  function isValidBase64(data) {
37963
38063
  if (data === "")
37964
38064
  return true;
@@ -39200,7 +39300,7 @@ var init_schemas = __esm(() => {
39200
39300
  });
39201
39301
  });
39202
39302
 
39203
- // ../switchroom-sec-1417/node_modules/.bun/zod@3.25.76/node_modules/zod/v4/locales/en.js
39303
+ // node_modules/.bun/zod@3.25.76/node_modules/zod/v4/locales/en.js
39204
39304
  function en_default2() {
39205
39305
  return {
39206
39306
  localeError: error()
@@ -39320,10 +39420,10 @@ var init_en2 = __esm(() => {
39320
39420
  init_util2();
39321
39421
  });
39322
39422
 
39323
- // ../switchroom-sec-1417/node_modules/.bun/zod@3.25.76/node_modules/zod/v4/locales/index.js
39423
+ // node_modules/.bun/zod@3.25.76/node_modules/zod/v4/locales/index.js
39324
39424
  var init_locales = () => {};
39325
39425
 
39326
- // ../switchroom-sec-1417/node_modules/.bun/zod@3.25.76/node_modules/zod/v4/core/registries.js
39426
+ // node_modules/.bun/zod@3.25.76/node_modules/zod/v4/core/registries.js
39327
39427
  class $ZodRegistry {
39328
39428
  constructor() {
39329
39429
  this._map = new Map;
@@ -39376,7 +39476,7 @@ var init_registries = __esm(() => {
39376
39476
  globalRegistry = /* @__PURE__ */ registry();
39377
39477
  });
39378
39478
 
39379
- // ../switchroom-sec-1417/node_modules/.bun/zod@3.25.76/node_modules/zod/v4/core/api.js
39479
+ // node_modules/.bun/zod@3.25.76/node_modules/zod/v4/core/api.js
39380
39480
  function _string(Class2, params) {
39381
39481
  return new Class2({
39382
39482
  type: "string",
@@ -39816,16 +39916,16 @@ var init_api = __esm(() => {
39816
39916
  init_util2();
39817
39917
  });
39818
39918
 
39819
- // ../switchroom-sec-1417/node_modules/.bun/zod@3.25.76/node_modules/zod/v4/core/function.js
39919
+ // node_modules/.bun/zod@3.25.76/node_modules/zod/v4/core/function.js
39820
39920
  var init_function = () => {};
39821
39921
 
39822
- // ../switchroom-sec-1417/node_modules/.bun/zod@3.25.76/node_modules/zod/v4/core/to-json-schema.js
39922
+ // node_modules/.bun/zod@3.25.76/node_modules/zod/v4/core/to-json-schema.js
39823
39923
  var init_to_json_schema = () => {};
39824
39924
 
39825
- // ../switchroom-sec-1417/node_modules/.bun/zod@3.25.76/node_modules/zod/v4/core/json-schema.js
39925
+ // node_modules/.bun/zod@3.25.76/node_modules/zod/v4/core/json-schema.js
39826
39926
  var init_json_schema = () => {};
39827
39927
 
39828
- // ../switchroom-sec-1417/node_modules/.bun/zod@3.25.76/node_modules/zod/v4/core/index.js
39928
+ // node_modules/.bun/zod@3.25.76/node_modules/zod/v4/core/index.js
39829
39929
  var init_core2 = __esm(() => {
39830
39930
  init_util2();
39831
39931
  init_regexes();
@@ -39843,24 +39943,24 @@ var init_core2 = __esm(() => {
39843
39943
  init_to_json_schema();
39844
39944
  });
39845
39945
 
39846
- // ../switchroom-sec-1417/node_modules/.bun/zod@3.25.76/node_modules/zod/v4/mini/parse.js
39946
+ // node_modules/.bun/zod@3.25.76/node_modules/zod/v4/mini/parse.js
39847
39947
  var init_parse2 = __esm(() => {
39848
39948
  init_core2();
39849
39949
  });
39850
39950
 
39851
- // ../switchroom-sec-1417/node_modules/.bun/zod@3.25.76/node_modules/zod/v4/mini/schemas.js
39951
+ // node_modules/.bun/zod@3.25.76/node_modules/zod/v4/mini/schemas.js
39852
39952
  var init_schemas2 = () => {};
39853
39953
 
39854
- // ../switchroom-sec-1417/node_modules/.bun/zod@3.25.76/node_modules/zod/v4/mini/checks.js
39954
+ // node_modules/.bun/zod@3.25.76/node_modules/zod/v4/mini/checks.js
39855
39955
  var init_checks2 = () => {};
39856
39956
 
39857
- // ../switchroom-sec-1417/node_modules/.bun/zod@3.25.76/node_modules/zod/v4/mini/iso.js
39957
+ // node_modules/.bun/zod@3.25.76/node_modules/zod/v4/mini/iso.js
39858
39958
  var init_iso = () => {};
39859
39959
 
39860
- // ../switchroom-sec-1417/node_modules/.bun/zod@3.25.76/node_modules/zod/v4/mini/coerce.js
39960
+ // node_modules/.bun/zod@3.25.76/node_modules/zod/v4/mini/coerce.js
39861
39961
  var init_coerce = () => {};
39862
39962
 
39863
- // ../switchroom-sec-1417/node_modules/.bun/zod@3.25.76/node_modules/zod/v4/mini/external.js
39963
+ // node_modules/.bun/zod@3.25.76/node_modules/zod/v4/mini/external.js
39864
39964
  var init_external2 = __esm(() => {
39865
39965
  init_core2();
39866
39966
  init_locales();
@@ -39871,17 +39971,17 @@ var init_external2 = __esm(() => {
39871
39971
  init_checks2();
39872
39972
  });
39873
39973
 
39874
- // ../switchroom-sec-1417/node_modules/.bun/zod@3.25.76/node_modules/zod/v4/mini/index.js
39974
+ // node_modules/.bun/zod@3.25.76/node_modules/zod/v4/mini/index.js
39875
39975
  var init_mini = __esm(() => {
39876
39976
  init_external2();
39877
39977
  });
39878
39978
 
39879
- // ../switchroom-sec-1417/node_modules/.bun/zod@3.25.76/node_modules/zod/v4-mini/index.js
39979
+ // node_modules/.bun/zod@3.25.76/node_modules/zod/v4-mini/index.js
39880
39980
  var init_v4_mini = __esm(() => {
39881
39981
  init_mini();
39882
39982
  });
39883
39983
 
39884
- // ../switchroom-sec-1417/node_modules/.bun/@modelcontextprotocol+sdk@1.29.0/node_modules/@modelcontextprotocol/sdk/dist/esm/server/zod-compat.js
39984
+ // node_modules/.bun/@modelcontextprotocol+sdk@1.29.0/node_modules/@modelcontextprotocol/sdk/dist/esm/server/zod-compat.js
39885
39985
  function isZ4Schema(s) {
39886
39986
  const schema = s;
39887
39987
  return !!schema._zod;
@@ -39947,12 +40047,12 @@ var init_zod_compat = __esm(() => {
39947
40047
  init_v4_mini();
39948
40048
  });
39949
40049
 
39950
- // ../switchroom-sec-1417/node_modules/.bun/zod@3.25.76/node_modules/zod/v4/classic/checks.js
40050
+ // node_modules/.bun/zod@3.25.76/node_modules/zod/v4/classic/checks.js
39951
40051
  var init_checks3 = __esm(() => {
39952
40052
  init_core2();
39953
40053
  });
39954
40054
 
39955
- // ../switchroom-sec-1417/node_modules/.bun/zod@3.25.76/node_modules/zod/v4/classic/iso.js
40055
+ // node_modules/.bun/zod@3.25.76/node_modules/zod/v4/classic/iso.js
39956
40056
  var exports_iso2 = {};
39957
40057
  __export(exports_iso2, {
39958
40058
  time: () => time2,
@@ -39998,7 +40098,7 @@ var init_iso2 = __esm(() => {
39998
40098
  });
39999
40099
  });
40000
40100
 
40001
- // ../switchroom-sec-1417/node_modules/.bun/zod@3.25.76/node_modules/zod/v4/classic/errors.js
40101
+ // node_modules/.bun/zod@3.25.76/node_modules/zod/v4/classic/errors.js
40002
40102
  var initializer2 = (inst, issues) => {
40003
40103
  $ZodError.init(inst, issues);
40004
40104
  inst.name = "ZodError";
@@ -40031,7 +40131,7 @@ var init_errors3 = __esm(() => {
40031
40131
  });
40032
40132
  });
40033
40133
 
40034
- // ../switchroom-sec-1417/node_modules/.bun/zod@3.25.76/node_modules/zod/v4/classic/parse.js
40134
+ // node_modules/.bun/zod@3.25.76/node_modules/zod/v4/classic/parse.js
40035
40135
  var parse4, parseAsync2, safeParse3, safeParseAsync2;
40036
40136
  var init_parse3 = __esm(() => {
40037
40137
  init_core2();
@@ -40042,7 +40142,7 @@ var init_parse3 = __esm(() => {
40042
40142
  safeParseAsync2 = /* @__PURE__ */ _safeParseAsync(ZodRealError);
40043
40143
  });
40044
40144
 
40045
- // ../switchroom-sec-1417/node_modules/.bun/zod@3.25.76/node_modules/zod/v4/classic/schemas.js
40145
+ // node_modules/.bun/zod@3.25.76/node_modules/zod/v4/classic/schemas.js
40046
40146
  function string2(params) {
40047
40147
  return _string(ZodString2, params);
40048
40148
  }
@@ -40656,13 +40756,13 @@ var init_schemas3 = __esm(() => {
40656
40756
  });
40657
40757
  });
40658
40758
 
40659
- // ../switchroom-sec-1417/node_modules/.bun/zod@3.25.76/node_modules/zod/v4/classic/compat.js
40759
+ // node_modules/.bun/zod@3.25.76/node_modules/zod/v4/classic/compat.js
40660
40760
  var init_compat = () => {};
40661
40761
 
40662
- // ../switchroom-sec-1417/node_modules/.bun/zod@3.25.76/node_modules/zod/v4/classic/coerce.js
40762
+ // node_modules/.bun/zod@3.25.76/node_modules/zod/v4/classic/coerce.js
40663
40763
  var init_coerce2 = () => {};
40664
40764
 
40665
- // ../switchroom-sec-1417/node_modules/.bun/zod@3.25.76/node_modules/zod/v4/classic/external.js
40765
+ // node_modules/.bun/zod@3.25.76/node_modules/zod/v4/classic/external.js
40666
40766
  var init_external3 = __esm(() => {
40667
40767
  init_core2();
40668
40768
  init_core2();
@@ -40678,17 +40778,17 @@ var init_external3 = __esm(() => {
40678
40778
  config(en_default2());
40679
40779
  });
40680
40780
 
40681
- // ../switchroom-sec-1417/node_modules/.bun/zod@3.25.76/node_modules/zod/v4/classic/index.js
40781
+ // node_modules/.bun/zod@3.25.76/node_modules/zod/v4/classic/index.js
40682
40782
  var init_classic = __esm(() => {
40683
40783
  init_external3();
40684
40784
  });
40685
40785
 
40686
- // ../switchroom-sec-1417/node_modules/.bun/zod@3.25.76/node_modules/zod/v4/index.js
40786
+ // node_modules/.bun/zod@3.25.76/node_modules/zod/v4/index.js
40687
40787
  var init_v4 = __esm(() => {
40688
40788
  init_classic();
40689
40789
  });
40690
40790
 
40691
- // ../switchroom-sec-1417/node_modules/.bun/@modelcontextprotocol+sdk@1.29.0/node_modules/@modelcontextprotocol/sdk/dist/esm/types.js
40791
+ // node_modules/.bun/@modelcontextprotocol+sdk@1.29.0/node_modules/@modelcontextprotocol/sdk/dist/esm/types.js
40692
40792
  var LATEST_PROTOCOL_VERSION = "2025-11-25", SUPPORTED_PROTOCOL_VERSIONS, RELATED_TASK_META_KEY = "io.modelcontextprotocol/related-task", JSONRPC_VERSION = "2.0", AssertObjectSchema, ProgressTokenSchema, CursorSchema, TaskCreationParamsSchema, TaskMetadataSchema, RelatedTaskMetadataSchema, RequestMetaSchema, BaseRequestParamsSchema, TaskAugmentedRequestParamsSchema, isTaskAugmentedRequestParams = (value) => TaskAugmentedRequestParamsSchema.safeParse(value).success, RequestSchema4, NotificationsParamsSchema, NotificationSchema, ResultSchema2, RequestIdSchema, JSONRPCRequestSchema, isJSONRPCRequest = (value) => JSONRPCRequestSchema.safeParse(value).success, JSONRPCNotificationSchema, isJSONRPCNotification = (value) => JSONRPCNotificationSchema.safeParse(value).success, JSONRPCResultResponseSchema, isJSONRPCResultResponse = (value) => JSONRPCResultResponseSchema.safeParse(value).success, ErrorCode2, JSONRPCErrorResponseSchema, isJSONRPCErrorResponse = (value) => JSONRPCErrorResponseSchema.safeParse(value).success, JSONRPCMessageSchema, JSONRPCResponseSchema, EmptyResultSchema, CancelledNotificationParamsSchema, CancelledNotificationSchema, IconSchema, IconsSchema, BaseMetadataSchema, ImplementationSchema, FormElicitationCapabilitySchema, ElicitationCapabilitySchema, ClientTasksCapabilitySchema, ServerTasksCapabilitySchema, ClientCapabilitiesSchema, InitializeRequestParamsSchema, InitializeRequestSchema, ServerCapabilitiesSchema, InitializeResultSchema, InitializedNotificationSchema, PingRequestSchema, ProgressSchema, ProgressNotificationParamsSchema, ProgressNotificationSchema, PaginatedRequestParamsSchema, PaginatedRequestSchema, PaginatedResultSchema, TaskStatusSchema, TaskSchema, CreateTaskResultSchema, TaskStatusNotificationParamsSchema, TaskStatusNotificationSchema, GetTaskRequestSchema, GetTaskResultSchema, GetTaskPayloadRequestSchema, GetTaskPayloadResultSchema, ListTasksRequestSchema, ListTasksResultSchema, CancelTaskRequestSchema, CancelTaskResultSchema, ResourceContentsSchema, TextResourceContentsSchema, Base64Schema, BlobResourceContentsSchema, RoleSchema, AnnotationsSchema, ResourceSchema, ResourceTemplateSchema, ListResourcesRequestSchema, ListResourcesResultSchema, ListResourceTemplatesRequestSchema, ListResourceTemplatesResultSchema, ResourceRequestParamsSchema, ReadResourceRequestParamsSchema, ReadResourceRequestSchema, ReadResourceResultSchema, ResourceListChangedNotificationSchema, SubscribeRequestParamsSchema, SubscribeRequestSchema, UnsubscribeRequestParamsSchema, UnsubscribeRequestSchema, ResourceUpdatedNotificationParamsSchema, ResourceUpdatedNotificationSchema, PromptArgumentSchema, PromptSchema, ListPromptsRequestSchema, ListPromptsResultSchema, GetPromptRequestParamsSchema, GetPromptRequestSchema, TextContentSchema, ImageContentSchema, AudioContentSchema, ToolUseContentSchema, EmbeddedResourceSchema, ResourceLinkSchema, ContentBlockSchema, PromptMessageSchema, GetPromptResultSchema, PromptListChangedNotificationSchema, ToolAnnotationsSchema, ToolExecutionSchema, ToolSchema, ListToolsRequestSchema, ListToolsResultSchema, CallToolResultSchema, CompatibilityCallToolResultSchema, CallToolRequestParamsSchema, CallToolRequestSchema, ToolListChangedNotificationSchema, ListChangedOptionsBaseSchema, LoggingLevelSchema, SetLevelRequestParamsSchema, SetLevelRequestSchema, LoggingMessageNotificationParamsSchema, LoggingMessageNotificationSchema, ModelHintSchema, ModelPreferencesSchema, ToolChoiceSchema, ToolResultContentSchema, SamplingContentSchema, SamplingMessageContentBlockSchema, SamplingMessageSchema, CreateMessageRequestParamsSchema, CreateMessageRequestSchema, CreateMessageResultSchema, CreateMessageResultWithToolsSchema, BooleanSchemaSchema, StringSchemaSchema, NumberSchemaSchema, UntitledSingleSelectEnumSchemaSchema, TitledSingleSelectEnumSchemaSchema, LegacyTitledEnumSchemaSchema, SingleSelectEnumSchemaSchema, UntitledMultiSelectEnumSchemaSchema, TitledMultiSelectEnumSchemaSchema, MultiSelectEnumSchemaSchema, EnumSchemaSchema, PrimitiveSchemaDefinitionSchema, ElicitRequestFormParamsSchema, ElicitRequestURLParamsSchema, ElicitRequestParamsSchema, ElicitRequestSchema, ElicitationCompleteNotificationParamsSchema, ElicitationCompleteNotificationSchema, ElicitResultSchema, ResourceTemplateReferenceSchema, PromptReferenceSchema, CompleteRequestParamsSchema, CompleteRequestSchema, CompleteResultSchema, RootSchema, ListRootsRequestSchema, ListRootsResultSchema, RootsListChangedNotificationSchema, ClientRequestSchema, ClientNotificationSchema, ClientResultSchema, ServerRequestSchema, ServerNotificationSchema, ServerResultSchema, McpError, UrlElicitationRequiredError;
40693
40793
  var init_types2 = __esm(() => {
40694
40794
  init_v4();
@@ -41516,65 +41616,65 @@ var init_types2 = __esm(() => {
41516
41616
  };
41517
41617
  });
41518
41618
 
41519
- // ../switchroom-sec-1417/node_modules/.bun/@modelcontextprotocol+sdk@1.29.0/node_modules/@modelcontextprotocol/sdk/dist/esm/experimental/tasks/interfaces.js
41619
+ // node_modules/.bun/@modelcontextprotocol+sdk@1.29.0/node_modules/@modelcontextprotocol/sdk/dist/esm/experimental/tasks/interfaces.js
41520
41620
  function isTerminal(status) {
41521
41621
  return status === "completed" || status === "failed" || status === "cancelled";
41522
41622
  }
41523
41623
 
41524
- // ../switchroom-sec-1417/node_modules/.bun/zod-to-json-schema@3.25.2+27912429049419a2/node_modules/zod-to-json-schema/dist/esm/Options.js
41624
+ // node_modules/.bun/zod-to-json-schema@3.25.2+27912429049419a2/node_modules/zod-to-json-schema/dist/esm/Options.js
41525
41625
  var ignoreOverride;
41526
41626
  var init_Options = __esm(() => {
41527
41627
  ignoreOverride = Symbol("Let zodToJsonSchema decide on which parser to use");
41528
41628
  });
41529
41629
 
41530
- // ../switchroom-sec-1417/node_modules/.bun/zod-to-json-schema@3.25.2+27912429049419a2/node_modules/zod-to-json-schema/dist/esm/Refs.js
41630
+ // node_modules/.bun/zod-to-json-schema@3.25.2+27912429049419a2/node_modules/zod-to-json-schema/dist/esm/Refs.js
41531
41631
  var init_Refs = __esm(() => {
41532
41632
  init_Options();
41533
41633
  });
41534
- // ../switchroom-sec-1417/node_modules/.bun/zod-to-json-schema@3.25.2+27912429049419a2/node_modules/zod-to-json-schema/dist/esm/parsers/any.js
41634
+ // node_modules/.bun/zod-to-json-schema@3.25.2+27912429049419a2/node_modules/zod-to-json-schema/dist/esm/parsers/any.js
41535
41635
  var init_any = () => {};
41536
41636
 
41537
- // ../switchroom-sec-1417/node_modules/.bun/zod-to-json-schema@3.25.2+27912429049419a2/node_modules/zod-to-json-schema/dist/esm/parsers/array.js
41637
+ // node_modules/.bun/zod-to-json-schema@3.25.2+27912429049419a2/node_modules/zod-to-json-schema/dist/esm/parsers/array.js
41538
41638
  var init_array = __esm(() => {
41539
41639
  init_parseDef();
41540
41640
  });
41541
41641
 
41542
- // ../switchroom-sec-1417/node_modules/.bun/zod-to-json-schema@3.25.2+27912429049419a2/node_modules/zod-to-json-schema/dist/esm/parsers/bigint.js
41642
+ // node_modules/.bun/zod-to-json-schema@3.25.2+27912429049419a2/node_modules/zod-to-json-schema/dist/esm/parsers/bigint.js
41543
41643
  var init_bigint = () => {};
41544
- // ../switchroom-sec-1417/node_modules/.bun/zod-to-json-schema@3.25.2+27912429049419a2/node_modules/zod-to-json-schema/dist/esm/parsers/branded.js
41644
+ // node_modules/.bun/zod-to-json-schema@3.25.2+27912429049419a2/node_modules/zod-to-json-schema/dist/esm/parsers/branded.js
41545
41645
  var init_branded = __esm(() => {
41546
41646
  init_parseDef();
41547
41647
  });
41548
41648
 
41549
- // ../switchroom-sec-1417/node_modules/.bun/zod-to-json-schema@3.25.2+27912429049419a2/node_modules/zod-to-json-schema/dist/esm/parsers/catch.js
41649
+ // node_modules/.bun/zod-to-json-schema@3.25.2+27912429049419a2/node_modules/zod-to-json-schema/dist/esm/parsers/catch.js
41550
41650
  var init_catch = __esm(() => {
41551
41651
  init_parseDef();
41552
41652
  });
41553
41653
 
41554
- // ../switchroom-sec-1417/node_modules/.bun/zod-to-json-schema@3.25.2+27912429049419a2/node_modules/zod-to-json-schema/dist/esm/parsers/date.js
41654
+ // node_modules/.bun/zod-to-json-schema@3.25.2+27912429049419a2/node_modules/zod-to-json-schema/dist/esm/parsers/date.js
41555
41655
  var init_date = () => {};
41556
41656
 
41557
- // ../switchroom-sec-1417/node_modules/.bun/zod-to-json-schema@3.25.2+27912429049419a2/node_modules/zod-to-json-schema/dist/esm/parsers/default.js
41657
+ // node_modules/.bun/zod-to-json-schema@3.25.2+27912429049419a2/node_modules/zod-to-json-schema/dist/esm/parsers/default.js
41558
41658
  var init_default = __esm(() => {
41559
41659
  init_parseDef();
41560
41660
  });
41561
41661
 
41562
- // ../switchroom-sec-1417/node_modules/.bun/zod-to-json-schema@3.25.2+27912429049419a2/node_modules/zod-to-json-schema/dist/esm/parsers/effects.js
41662
+ // node_modules/.bun/zod-to-json-schema@3.25.2+27912429049419a2/node_modules/zod-to-json-schema/dist/esm/parsers/effects.js
41563
41663
  var init_effects = __esm(() => {
41564
41664
  init_parseDef();
41565
41665
  init_any();
41566
41666
  });
41567
- // ../switchroom-sec-1417/node_modules/.bun/zod-to-json-schema@3.25.2+27912429049419a2/node_modules/zod-to-json-schema/dist/esm/parsers/intersection.js
41667
+ // node_modules/.bun/zod-to-json-schema@3.25.2+27912429049419a2/node_modules/zod-to-json-schema/dist/esm/parsers/intersection.js
41568
41668
  var init_intersection = __esm(() => {
41569
41669
  init_parseDef();
41570
41670
  });
41571
- // ../switchroom-sec-1417/node_modules/.bun/zod-to-json-schema@3.25.2+27912429049419a2/node_modules/zod-to-json-schema/dist/esm/parsers/string.js
41671
+ // node_modules/.bun/zod-to-json-schema@3.25.2+27912429049419a2/node_modules/zod-to-json-schema/dist/esm/parsers/string.js
41572
41672
  var ALPHA_NUMERIC;
41573
41673
  var init_string = __esm(() => {
41574
41674
  ALPHA_NUMERIC = new Set("ABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyz0123456789");
41575
41675
  });
41576
41676
 
41577
- // ../switchroom-sec-1417/node_modules/.bun/zod-to-json-schema@3.25.2+27912429049419a2/node_modules/zod-to-json-schema/dist/esm/parsers/record.js
41677
+ // node_modules/.bun/zod-to-json-schema@3.25.2+27912429049419a2/node_modules/zod-to-json-schema/dist/esm/parsers/record.js
41578
41678
  var init_record = __esm(() => {
41579
41679
  init_parseDef();
41580
41680
  init_string();
@@ -41582,77 +41682,77 @@ var init_record = __esm(() => {
41582
41682
  init_any();
41583
41683
  });
41584
41684
 
41585
- // ../switchroom-sec-1417/node_modules/.bun/zod-to-json-schema@3.25.2+27912429049419a2/node_modules/zod-to-json-schema/dist/esm/parsers/map.js
41685
+ // node_modules/.bun/zod-to-json-schema@3.25.2+27912429049419a2/node_modules/zod-to-json-schema/dist/esm/parsers/map.js
41586
41686
  var init_map = __esm(() => {
41587
41687
  init_parseDef();
41588
41688
  init_record();
41589
41689
  init_any();
41590
41690
  });
41591
- // ../switchroom-sec-1417/node_modules/.bun/zod-to-json-schema@3.25.2+27912429049419a2/node_modules/zod-to-json-schema/dist/esm/parsers/never.js
41691
+ // node_modules/.bun/zod-to-json-schema@3.25.2+27912429049419a2/node_modules/zod-to-json-schema/dist/esm/parsers/never.js
41592
41692
  var init_never = __esm(() => {
41593
41693
  init_any();
41594
41694
  });
41595
- // ../switchroom-sec-1417/node_modules/.bun/zod-to-json-schema@3.25.2+27912429049419a2/node_modules/zod-to-json-schema/dist/esm/parsers/union.js
41695
+ // node_modules/.bun/zod-to-json-schema@3.25.2+27912429049419a2/node_modules/zod-to-json-schema/dist/esm/parsers/union.js
41596
41696
  var init_union = __esm(() => {
41597
41697
  init_parseDef();
41598
41698
  });
41599
41699
 
41600
- // ../switchroom-sec-1417/node_modules/.bun/zod-to-json-schema@3.25.2+27912429049419a2/node_modules/zod-to-json-schema/dist/esm/parsers/nullable.js
41700
+ // node_modules/.bun/zod-to-json-schema@3.25.2+27912429049419a2/node_modules/zod-to-json-schema/dist/esm/parsers/nullable.js
41601
41701
  var init_nullable = __esm(() => {
41602
41702
  init_parseDef();
41603
41703
  init_union();
41604
41704
  });
41605
41705
 
41606
- // ../switchroom-sec-1417/node_modules/.bun/zod-to-json-schema@3.25.2+27912429049419a2/node_modules/zod-to-json-schema/dist/esm/parsers/number.js
41706
+ // node_modules/.bun/zod-to-json-schema@3.25.2+27912429049419a2/node_modules/zod-to-json-schema/dist/esm/parsers/number.js
41607
41707
  var init_number = () => {};
41608
41708
 
41609
- // ../switchroom-sec-1417/node_modules/.bun/zod-to-json-schema@3.25.2+27912429049419a2/node_modules/zod-to-json-schema/dist/esm/parsers/object.js
41709
+ // node_modules/.bun/zod-to-json-schema@3.25.2+27912429049419a2/node_modules/zod-to-json-schema/dist/esm/parsers/object.js
41610
41710
  var init_object = __esm(() => {
41611
41711
  init_parseDef();
41612
41712
  });
41613
41713
 
41614
- // ../switchroom-sec-1417/node_modules/.bun/zod-to-json-schema@3.25.2+27912429049419a2/node_modules/zod-to-json-schema/dist/esm/parsers/optional.js
41714
+ // node_modules/.bun/zod-to-json-schema@3.25.2+27912429049419a2/node_modules/zod-to-json-schema/dist/esm/parsers/optional.js
41615
41715
  var init_optional = __esm(() => {
41616
41716
  init_parseDef();
41617
41717
  init_any();
41618
41718
  });
41619
41719
 
41620
- // ../switchroom-sec-1417/node_modules/.bun/zod-to-json-schema@3.25.2+27912429049419a2/node_modules/zod-to-json-schema/dist/esm/parsers/pipeline.js
41720
+ // node_modules/.bun/zod-to-json-schema@3.25.2+27912429049419a2/node_modules/zod-to-json-schema/dist/esm/parsers/pipeline.js
41621
41721
  var init_pipeline = __esm(() => {
41622
41722
  init_parseDef();
41623
41723
  });
41624
41724
 
41625
- // ../switchroom-sec-1417/node_modules/.bun/zod-to-json-schema@3.25.2+27912429049419a2/node_modules/zod-to-json-schema/dist/esm/parsers/promise.js
41725
+ // node_modules/.bun/zod-to-json-schema@3.25.2+27912429049419a2/node_modules/zod-to-json-schema/dist/esm/parsers/promise.js
41626
41726
  var init_promise = __esm(() => {
41627
41727
  init_parseDef();
41628
41728
  });
41629
41729
 
41630
- // ../switchroom-sec-1417/node_modules/.bun/zod-to-json-schema@3.25.2+27912429049419a2/node_modules/zod-to-json-schema/dist/esm/parsers/set.js
41730
+ // node_modules/.bun/zod-to-json-schema@3.25.2+27912429049419a2/node_modules/zod-to-json-schema/dist/esm/parsers/set.js
41631
41731
  var init_set = __esm(() => {
41632
41732
  init_parseDef();
41633
41733
  });
41634
41734
 
41635
- // ../switchroom-sec-1417/node_modules/.bun/zod-to-json-schema@3.25.2+27912429049419a2/node_modules/zod-to-json-schema/dist/esm/parsers/tuple.js
41735
+ // node_modules/.bun/zod-to-json-schema@3.25.2+27912429049419a2/node_modules/zod-to-json-schema/dist/esm/parsers/tuple.js
41636
41736
  var init_tuple = __esm(() => {
41637
41737
  init_parseDef();
41638
41738
  });
41639
41739
 
41640
- // ../switchroom-sec-1417/node_modules/.bun/zod-to-json-schema@3.25.2+27912429049419a2/node_modules/zod-to-json-schema/dist/esm/parsers/undefined.js
41740
+ // node_modules/.bun/zod-to-json-schema@3.25.2+27912429049419a2/node_modules/zod-to-json-schema/dist/esm/parsers/undefined.js
41641
41741
  var init_undefined = __esm(() => {
41642
41742
  init_any();
41643
41743
  });
41644
41744
 
41645
- // ../switchroom-sec-1417/node_modules/.bun/zod-to-json-schema@3.25.2+27912429049419a2/node_modules/zod-to-json-schema/dist/esm/parsers/unknown.js
41745
+ // node_modules/.bun/zod-to-json-schema@3.25.2+27912429049419a2/node_modules/zod-to-json-schema/dist/esm/parsers/unknown.js
41646
41746
  var init_unknown = __esm(() => {
41647
41747
  init_any();
41648
41748
  });
41649
41749
 
41650
- // ../switchroom-sec-1417/node_modules/.bun/zod-to-json-schema@3.25.2+27912429049419a2/node_modules/zod-to-json-schema/dist/esm/parsers/readonly.js
41750
+ // node_modules/.bun/zod-to-json-schema@3.25.2+27912429049419a2/node_modules/zod-to-json-schema/dist/esm/parsers/readonly.js
41651
41751
  var init_readonly = __esm(() => {
41652
41752
  init_parseDef();
41653
41753
  });
41654
41754
 
41655
- // ../switchroom-sec-1417/node_modules/.bun/zod-to-json-schema@3.25.2+27912429049419a2/node_modules/zod-to-json-schema/dist/esm/selectParser.js
41755
+ // node_modules/.bun/zod-to-json-schema@3.25.2+27912429049419a2/node_modules/zod-to-json-schema/dist/esm/selectParser.js
41656
41756
  var init_selectParser = __esm(() => {
41657
41757
  init_any();
41658
41758
  init_array();
@@ -41681,24 +41781,24 @@ var init_selectParser = __esm(() => {
41681
41781
  init_readonly();
41682
41782
  });
41683
41783
 
41684
- // ../switchroom-sec-1417/node_modules/.bun/zod-to-json-schema@3.25.2+27912429049419a2/node_modules/zod-to-json-schema/dist/esm/parseDef.js
41784
+ // node_modules/.bun/zod-to-json-schema@3.25.2+27912429049419a2/node_modules/zod-to-json-schema/dist/esm/parseDef.js
41685
41785
  var init_parseDef = __esm(() => {
41686
41786
  init_Options();
41687
41787
  init_selectParser();
41688
41788
  init_any();
41689
41789
  });
41690
41790
 
41691
- // ../switchroom-sec-1417/node_modules/.bun/zod-to-json-schema@3.25.2+27912429049419a2/node_modules/zod-to-json-schema/dist/esm/parseTypes.js
41791
+ // node_modules/.bun/zod-to-json-schema@3.25.2+27912429049419a2/node_modules/zod-to-json-schema/dist/esm/parseTypes.js
41692
41792
  var init_parseTypes = () => {};
41693
41793
 
41694
- // ../switchroom-sec-1417/node_modules/.bun/zod-to-json-schema@3.25.2+27912429049419a2/node_modules/zod-to-json-schema/dist/esm/zodToJsonSchema.js
41794
+ // node_modules/.bun/zod-to-json-schema@3.25.2+27912429049419a2/node_modules/zod-to-json-schema/dist/esm/zodToJsonSchema.js
41695
41795
  var init_zodToJsonSchema = __esm(() => {
41696
41796
  init_parseDef();
41697
41797
  init_Refs();
41698
41798
  init_any();
41699
41799
  });
41700
41800
 
41701
- // ../switchroom-sec-1417/node_modules/.bun/zod-to-json-schema@3.25.2+27912429049419a2/node_modules/zod-to-json-schema/dist/esm/index.js
41801
+ // node_modules/.bun/zod-to-json-schema@3.25.2+27912429049419a2/node_modules/zod-to-json-schema/dist/esm/index.js
41702
41802
  var init_esm = __esm(() => {
41703
41803
  init_zodToJsonSchema();
41704
41804
  init_Options();
@@ -41734,7 +41834,7 @@ var init_esm = __esm(() => {
41734
41834
  init_zodToJsonSchema();
41735
41835
  });
41736
41836
 
41737
- // ../switchroom-sec-1417/node_modules/.bun/@modelcontextprotocol+sdk@1.29.0/node_modules/@modelcontextprotocol/sdk/dist/esm/server/zod-json-schema-compat.js
41837
+ // node_modules/.bun/@modelcontextprotocol+sdk@1.29.0/node_modules/@modelcontextprotocol/sdk/dist/esm/server/zod-json-schema-compat.js
41738
41838
  function getMethodLiteral(schema) {
41739
41839
  const shape = getObjectShape(schema);
41740
41840
  const methodSchema = shape?.method;
@@ -41759,7 +41859,7 @@ var init_zod_json_schema_compat = __esm(() => {
41759
41859
  init_esm();
41760
41860
  });
41761
41861
 
41762
- // ../switchroom-sec-1417/node_modules/.bun/@modelcontextprotocol+sdk@1.29.0/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/protocol.js
41862
+ // node_modules/.bun/@modelcontextprotocol+sdk@1.29.0/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/protocol.js
41763
41863
  class Protocol {
41764
41864
  constructor(_options) {
41765
41865
  this._options = _options;
@@ -42604,7 +42704,7 @@ var init_protocol4 = __esm(() => {
42604
42704
  init_zod_json_schema_compat();
42605
42705
  });
42606
42706
 
42607
- // ../switchroom-sec-1417/node_modules/.bun/ajv@8.18.0/node_modules/ajv/dist/compile/codegen/code.js
42707
+ // node_modules/.bun/ajv@8.18.0/node_modules/ajv/dist/compile/codegen/code.js
42608
42708
  var require_code = __commonJS((exports2) => {
42609
42709
  Object.defineProperty(exports2, "__esModule", { value: true });
42610
42710
  exports2.regexpCode = exports2.getEsmExportName = exports2.getProperty = exports2.safeStringify = exports2.stringify = exports2.strConcat = exports2.addCodeArg = exports2.str = exports2._ = exports2.nil = exports2._Code = exports2.Name = exports2.IDENTIFIER = exports2._CodeOrName = undefined;
@@ -42758,7 +42858,7 @@ var require_code = __commonJS((exports2) => {
42758
42858
  exports2.regexpCode = regexpCode;
42759
42859
  });
42760
42860
 
42761
- // ../switchroom-sec-1417/node_modules/.bun/ajv@8.18.0/node_modules/ajv/dist/compile/codegen/scope.js
42861
+ // node_modules/.bun/ajv@8.18.0/node_modules/ajv/dist/compile/codegen/scope.js
42762
42862
  var require_scope = __commonJS((exports2) => {
42763
42863
  Object.defineProperty(exports2, "__esModule", { value: true });
42764
42864
  exports2.ValueScope = exports2.ValueScopeName = exports2.Scope = exports2.varKinds = exports2.UsedValueState = undefined;
@@ -42904,7 +43004,7 @@ var require_scope = __commonJS((exports2) => {
42904
43004
  exports2.ValueScope = ValueScope;
42905
43005
  });
42906
43006
 
42907
- // ../switchroom-sec-1417/node_modules/.bun/ajv@8.18.0/node_modules/ajv/dist/compile/codegen/index.js
43007
+ // node_modules/.bun/ajv@8.18.0/node_modules/ajv/dist/compile/codegen/index.js
42908
43008
  var require_codegen = __commonJS((exports2) => {
42909
43009
  Object.defineProperty(exports2, "__esModule", { value: true });
42910
43010
  exports2.or = exports2.and = exports2.not = exports2.CodeGen = exports2.operators = exports2.varKinds = exports2.ValueScopeName = exports2.ValueScope = exports2.Scope = exports2.Name = exports2.regexpCode = exports2.stringify = exports2.getProperty = exports2.nil = exports2.strConcat = exports2.str = exports2._ = undefined;
@@ -43614,7 +43714,7 @@ var require_codegen = __commonJS((exports2) => {
43614
43714
  }
43615
43715
  });
43616
43716
 
43617
- // ../switchroom-sec-1417/node_modules/.bun/ajv@8.18.0/node_modules/ajv/dist/compile/util.js
43717
+ // node_modules/.bun/ajv@8.18.0/node_modules/ajv/dist/compile/util.js
43618
43718
  var require_util2 = __commonJS((exports2) => {
43619
43719
  Object.defineProperty(exports2, "__esModule", { value: true });
43620
43720
  exports2.checkStrictMode = exports2.getErrorPath = exports2.Type = exports2.useFunc = exports2.setEvaluated = exports2.evaluatedPropsToName = exports2.mergeEvaluated = exports2.eachItem = exports2.unescapeJsonPointer = exports2.escapeJsonPointer = exports2.escapeFragment = exports2.unescapeFragment = exports2.schemaRefOrVal = exports2.schemaHasRulesButRef = exports2.schemaHasRules = exports2.checkUnknownRules = exports2.alwaysValidSchema = exports2.toHash = undefined;
@@ -43778,7 +43878,7 @@ var require_util2 = __commonJS((exports2) => {
43778
43878
  exports2.checkStrictMode = checkStrictMode;
43779
43879
  });
43780
43880
 
43781
- // ../switchroom-sec-1417/node_modules/.bun/ajv@8.18.0/node_modules/ajv/dist/compile/names.js
43881
+ // node_modules/.bun/ajv@8.18.0/node_modules/ajv/dist/compile/names.js
43782
43882
  var require_names = __commonJS((exports2) => {
43783
43883
  Object.defineProperty(exports2, "__esModule", { value: true });
43784
43884
  var codegen_1 = require_codegen();
@@ -43803,7 +43903,7 @@ var require_names = __commonJS((exports2) => {
43803
43903
  exports2.default = names;
43804
43904
  });
43805
43905
 
43806
- // ../switchroom-sec-1417/node_modules/.bun/ajv@8.18.0/node_modules/ajv/dist/compile/errors.js
43906
+ // node_modules/.bun/ajv@8.18.0/node_modules/ajv/dist/compile/errors.js
43807
43907
  var require_errors2 = __commonJS((exports2) => {
43808
43908
  Object.defineProperty(exports2, "__esModule", { value: true });
43809
43909
  exports2.extendErrors = exports2.resetErrorsCount = exports2.reportExtraError = exports2.reportError = exports2.keyword$DataError = exports2.keywordError = undefined;
@@ -43921,7 +44021,7 @@ var require_errors2 = __commonJS((exports2) => {
43921
44021
  }
43922
44022
  });
43923
44023
 
43924
- // ../switchroom-sec-1417/node_modules/.bun/ajv@8.18.0/node_modules/ajv/dist/compile/validate/boolSchema.js
44024
+ // node_modules/.bun/ajv@8.18.0/node_modules/ajv/dist/compile/validate/boolSchema.js
43925
44025
  var require_boolSchema = __commonJS((exports2) => {
43926
44026
  Object.defineProperty(exports2, "__esModule", { value: true });
43927
44027
  exports2.boolOrEmptySchema = exports2.topBoolOrEmptySchema = undefined;
@@ -43969,7 +44069,7 @@ var require_boolSchema = __commonJS((exports2) => {
43969
44069
  }
43970
44070
  });
43971
44071
 
43972
- // ../switchroom-sec-1417/node_modules/.bun/ajv@8.18.0/node_modules/ajv/dist/compile/rules.js
44072
+ // node_modules/.bun/ajv@8.18.0/node_modules/ajv/dist/compile/rules.js
43973
44073
  var require_rules = __commonJS((exports2) => {
43974
44074
  Object.defineProperty(exports2, "__esModule", { value: true });
43975
44075
  exports2.getRules = exports2.isJSONType = undefined;
@@ -43997,7 +44097,7 @@ var require_rules = __commonJS((exports2) => {
43997
44097
  exports2.getRules = getRules;
43998
44098
  });
43999
44099
 
44000
- // ../switchroom-sec-1417/node_modules/.bun/ajv@8.18.0/node_modules/ajv/dist/compile/validate/applicability.js
44100
+ // node_modules/.bun/ajv@8.18.0/node_modules/ajv/dist/compile/validate/applicability.js
44001
44101
  var require_applicability = __commonJS((exports2) => {
44002
44102
  Object.defineProperty(exports2, "__esModule", { value: true });
44003
44103
  exports2.shouldUseRule = exports2.shouldUseGroup = exports2.schemaHasRulesForType = undefined;
@@ -44017,7 +44117,7 @@ var require_applicability = __commonJS((exports2) => {
44017
44117
  exports2.shouldUseRule = shouldUseRule;
44018
44118
  });
44019
44119
 
44020
- // ../switchroom-sec-1417/node_modules/.bun/ajv@8.18.0/node_modules/ajv/dist/compile/validate/dataType.js
44120
+ // node_modules/.bun/ajv@8.18.0/node_modules/ajv/dist/compile/validate/dataType.js
44021
44121
  var require_dataType = __commonJS((exports2) => {
44022
44122
  Object.defineProperty(exports2, "__esModule", { value: true });
44023
44123
  exports2.reportTypeError = exports2.checkDataTypes = exports2.checkDataType = exports2.coerceAndCheckDataType = exports2.getJSONTypes = exports2.getSchemaTypes = exports2.DataType = undefined;
@@ -44198,7 +44298,7 @@ var require_dataType = __commonJS((exports2) => {
44198
44298
  }
44199
44299
  });
44200
44300
 
44201
- // ../switchroom-sec-1417/node_modules/.bun/ajv@8.18.0/node_modules/ajv/dist/compile/validate/defaults.js
44301
+ // node_modules/.bun/ajv@8.18.0/node_modules/ajv/dist/compile/validate/defaults.js
44202
44302
  var require_defaults = __commonJS((exports2) => {
44203
44303
  Object.defineProperty(exports2, "__esModule", { value: true });
44204
44304
  exports2.assignDefaults = undefined;
@@ -44232,7 +44332,7 @@ var require_defaults = __commonJS((exports2) => {
44232
44332
  }
44233
44333
  });
44234
44334
 
44235
- // ../switchroom-sec-1417/node_modules/.bun/ajv@8.18.0/node_modules/ajv/dist/vocabularies/code.js
44335
+ // node_modules/.bun/ajv@8.18.0/node_modules/ajv/dist/vocabularies/code.js
44236
44336
  var require_code2 = __commonJS((exports2) => {
44237
44337
  Object.defineProperty(exports2, "__esModule", { value: true });
44238
44338
  exports2.validateUnion = exports2.validateArray = exports2.usePattern = exports2.callValidateCode = exports2.schemaProperties = exports2.allSchemaProperties = exports2.noPropertyInData = exports2.propertyInData = exports2.isOwnProperty = exports2.hasPropFunc = exports2.reportMissingProp = exports2.checkMissingProp = exports2.checkReportMissingProp = undefined;
@@ -44361,7 +44461,7 @@ var require_code2 = __commonJS((exports2) => {
44361
44461
  exports2.validateUnion = validateUnion;
44362
44462
  });
44363
44463
 
44364
- // ../switchroom-sec-1417/node_modules/.bun/ajv@8.18.0/node_modules/ajv/dist/compile/validate/keyword.js
44464
+ // node_modules/.bun/ajv@8.18.0/node_modules/ajv/dist/compile/validate/keyword.js
44365
44465
  var require_keyword = __commonJS((exports2) => {
44366
44466
  Object.defineProperty(exports2, "__esModule", { value: true });
44367
44467
  exports2.validateKeywordUsage = exports2.validSchemaType = exports2.funcKeywordCode = exports2.macroKeywordCode = undefined;
@@ -44476,7 +44576,7 @@ var require_keyword = __commonJS((exports2) => {
44476
44576
  exports2.validateKeywordUsage = validateKeywordUsage;
44477
44577
  });
44478
44578
 
44479
- // ../switchroom-sec-1417/node_modules/.bun/ajv@8.18.0/node_modules/ajv/dist/compile/validate/subschema.js
44579
+ // node_modules/.bun/ajv@8.18.0/node_modules/ajv/dist/compile/validate/subschema.js
44480
44580
  var require_subschema = __commonJS((exports2) => {
44481
44581
  Object.defineProperty(exports2, "__esModule", { value: true });
44482
44582
  exports2.extendSubschemaMode = exports2.extendSubschemaData = exports2.getSubschema = undefined;
@@ -44556,7 +44656,7 @@ var require_subschema = __commonJS((exports2) => {
44556
44656
  exports2.extendSubschemaMode = extendSubschemaMode;
44557
44657
  });
44558
44658
 
44559
- // ../switchroom-sec-1417/node_modules/.bun/fast-deep-equal@3.1.3/node_modules/fast-deep-equal/index.js
44659
+ // node_modules/.bun/fast-deep-equal@3.1.3/node_modules/fast-deep-equal/index.js
44560
44660
  var require_fast_deep_equal = __commonJS((exports2, module) => {
44561
44661
  module.exports = function equal(a, b) {
44562
44662
  if (a === b)
@@ -44598,7 +44698,7 @@ var require_fast_deep_equal = __commonJS((exports2, module) => {
44598
44698
  };
44599
44699
  });
44600
44700
 
44601
- // ../switchroom-sec-1417/node_modules/.bun/json-schema-traverse@1.0.0/node_modules/json-schema-traverse/index.js
44701
+ // node_modules/.bun/json-schema-traverse@1.0.0/node_modules/json-schema-traverse/index.js
44602
44702
  var require_json_schema_traverse = __commonJS((exports2, module) => {
44603
44703
  var traverse = module.exports = function(schema, opts, cb) {
44604
44704
  if (typeof opts == "function") {
@@ -44681,7 +44781,7 @@ var require_json_schema_traverse = __commonJS((exports2, module) => {
44681
44781
  }
44682
44782
  });
44683
44783
 
44684
- // ../switchroom-sec-1417/node_modules/.bun/ajv@8.18.0/node_modules/ajv/dist/compile/resolve.js
44784
+ // node_modules/.bun/ajv@8.18.0/node_modules/ajv/dist/compile/resolve.js
44685
44785
  var require_resolve = __commonJS((exports2) => {
44686
44786
  Object.defineProperty(exports2, "__esModule", { value: true });
44687
44787
  exports2.getSchemaRefs = exports2.resolveUrl = exports2.normalizeId = exports2._getFullPath = exports2.getFullPath = exports2.inlineRef = undefined;
@@ -44834,7 +44934,7 @@ var require_resolve = __commonJS((exports2) => {
44834
44934
  exports2.getSchemaRefs = getSchemaRefs;
44835
44935
  });
44836
44936
 
44837
- // ../switchroom-sec-1417/node_modules/.bun/ajv@8.18.0/node_modules/ajv/dist/compile/validate/index.js
44937
+ // node_modules/.bun/ajv@8.18.0/node_modules/ajv/dist/compile/validate/index.js
44838
44938
  var require_validate = __commonJS((exports2) => {
44839
44939
  Object.defineProperty(exports2, "__esModule", { value: true });
44840
44940
  exports2.getData = exports2.KeywordCxt = exports2.validateFunctionCode = undefined;
@@ -45339,7 +45439,7 @@ var require_validate = __commonJS((exports2) => {
45339
45439
  exports2.getData = getData;
45340
45440
  });
45341
45441
 
45342
- // ../switchroom-sec-1417/node_modules/.bun/ajv@8.18.0/node_modules/ajv/dist/runtime/validation_error.js
45442
+ // node_modules/.bun/ajv@8.18.0/node_modules/ajv/dist/runtime/validation_error.js
45343
45443
  var require_validation_error = __commonJS((exports2) => {
45344
45444
  Object.defineProperty(exports2, "__esModule", { value: true });
45345
45445
 
@@ -45353,7 +45453,7 @@ var require_validation_error = __commonJS((exports2) => {
45353
45453
  exports2.default = ValidationError;
45354
45454
  });
45355
45455
 
45356
- // ../switchroom-sec-1417/node_modules/.bun/ajv@8.18.0/node_modules/ajv/dist/compile/ref_error.js
45456
+ // node_modules/.bun/ajv@8.18.0/node_modules/ajv/dist/compile/ref_error.js
45357
45457
  var require_ref_error = __commonJS((exports2) => {
45358
45458
  Object.defineProperty(exports2, "__esModule", { value: true });
45359
45459
  var resolve_1 = require_resolve();
@@ -45368,7 +45468,7 @@ var require_ref_error = __commonJS((exports2) => {
45368
45468
  exports2.default = MissingRefError;
45369
45469
  });
45370
45470
 
45371
- // ../switchroom-sec-1417/node_modules/.bun/ajv@8.18.0/node_modules/ajv/dist/compile/index.js
45471
+ // node_modules/.bun/ajv@8.18.0/node_modules/ajv/dist/compile/index.js
45372
45472
  var require_compile = __commonJS((exports2) => {
45373
45473
  Object.defineProperty(exports2, "__esModule", { value: true });
45374
45474
  exports2.resolveSchema = exports2.getCompilingSchema = exports2.resolveRef = exports2.compileSchema = exports2.SchemaEnv = undefined;
@@ -45589,7 +45689,7 @@ var require_compile = __commonJS((exports2) => {
45589
45689
  }
45590
45690
  });
45591
45691
 
45592
- // ../switchroom-sec-1417/node_modules/.bun/ajv@8.18.0/node_modules/ajv/dist/refs/data.json
45692
+ // node_modules/.bun/ajv@8.18.0/node_modules/ajv/dist/refs/data.json
45593
45693
  var require_data = __commonJS((exports2, module) => {
45594
45694
  module.exports = {
45595
45695
  $id: "https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#",
@@ -45606,7 +45706,7 @@ var require_data = __commonJS((exports2, module) => {
45606
45706
  };
45607
45707
  });
45608
45708
 
45609
- // ../switchroom-sec-1417/node_modules/.bun/fast-uri@3.1.0/node_modules/fast-uri/lib/utils.js
45709
+ // node_modules/.bun/fast-uri@3.1.0/node_modules/fast-uri/lib/utils.js
45610
45710
  var require_utils2 = __commonJS((exports2, module) => {
45611
45711
  var isUUID = RegExp.prototype.test.bind(/^[\da-f]{8}-[\da-f]{4}-[\da-f]{4}-[\da-f]{4}-[\da-f]{12}$/iu);
45612
45712
  var isIPv4 = RegExp.prototype.test.bind(/^(?:(?:25[0-5]|2[0-4]\d|1\d{2}|[1-9]\d|\d)\.){3}(?:25[0-5]|2[0-4]\d|1\d{2}|[1-9]\d|\d)$/u);
@@ -45861,7 +45961,7 @@ var require_utils2 = __commonJS((exports2, module) => {
45861
45961
  };
45862
45962
  });
45863
45963
 
45864
- // ../switchroom-sec-1417/node_modules/.bun/fast-uri@3.1.0/node_modules/fast-uri/lib/schemes.js
45964
+ // node_modules/.bun/fast-uri@3.1.0/node_modules/fast-uri/lib/schemes.js
45865
45965
  var require_schemes = __commonJS((exports2, module) => {
45866
45966
  var { isUUID } = require_utils2();
45867
45967
  var URN_REG = /([\da-z][\d\-a-z]{0,31}):((?:[\w!$'()*+,\-.:;=@]|%[\da-f]{2})+)/iu;
@@ -46035,7 +46135,7 @@ var require_schemes = __commonJS((exports2, module) => {
46035
46135
  };
46036
46136
  });
46037
46137
 
46038
- // ../switchroom-sec-1417/node_modules/.bun/fast-uri@3.1.0/node_modules/fast-uri/index.js
46138
+ // node_modules/.bun/fast-uri@3.1.0/node_modules/fast-uri/index.js
46039
46139
  var require_fast_uri = __commonJS((exports2, module) => {
46040
46140
  var { normalizeIPv6, removeDotSegments, recomposeAuthority, normalizeComponentEncoding, isIPv4, nonSimpleDomain } = require_utils2();
46041
46141
  var { SCHEMES, getSchemeHandler } = require_schemes();
@@ -46286,7 +46386,7 @@ var require_fast_uri = __commonJS((exports2, module) => {
46286
46386
  module.exports.fastUri = fastUri;
46287
46387
  });
46288
46388
 
46289
- // ../switchroom-sec-1417/node_modules/.bun/ajv@8.18.0/node_modules/ajv/dist/runtime/uri.js
46389
+ // node_modules/.bun/ajv@8.18.0/node_modules/ajv/dist/runtime/uri.js
46290
46390
  var require_uri = __commonJS((exports2) => {
46291
46391
  Object.defineProperty(exports2, "__esModule", { value: true });
46292
46392
  var uri = require_fast_uri();
@@ -46294,7 +46394,7 @@ var require_uri = __commonJS((exports2) => {
46294
46394
  exports2.default = uri;
46295
46395
  });
46296
46396
 
46297
- // ../switchroom-sec-1417/node_modules/.bun/ajv@8.18.0/node_modules/ajv/dist/core.js
46397
+ // node_modules/.bun/ajv@8.18.0/node_modules/ajv/dist/core.js
46298
46398
  var require_core = __commonJS((exports2) => {
46299
46399
  Object.defineProperty(exports2, "__esModule", { value: true });
46300
46400
  exports2.CodeGen = exports2.Name = exports2.nil = exports2.stringify = exports2.str = exports2._ = exports2.KeywordCxt = undefined;
@@ -46887,7 +46987,7 @@ var require_core = __commonJS((exports2) => {
46887
46987
  }
46888
46988
  });
46889
46989
 
46890
- // ../switchroom-sec-1417/node_modules/.bun/ajv@8.18.0/node_modules/ajv/dist/vocabularies/core/id.js
46990
+ // node_modules/.bun/ajv@8.18.0/node_modules/ajv/dist/vocabularies/core/id.js
46891
46991
  var require_id = __commonJS((exports2) => {
46892
46992
  Object.defineProperty(exports2, "__esModule", { value: true });
46893
46993
  var def = {
@@ -46899,7 +46999,7 @@ var require_id = __commonJS((exports2) => {
46899
46999
  exports2.default = def;
46900
47000
  });
46901
47001
 
46902
- // ../switchroom-sec-1417/node_modules/.bun/ajv@8.18.0/node_modules/ajv/dist/vocabularies/core/ref.js
47002
+ // node_modules/.bun/ajv@8.18.0/node_modules/ajv/dist/vocabularies/core/ref.js
46903
47003
  var require_ref = __commonJS((exports2) => {
46904
47004
  Object.defineProperty(exports2, "__esModule", { value: true });
46905
47005
  exports2.callRef = exports2.getValidate = undefined;
@@ -47018,7 +47118,7 @@ var require_ref = __commonJS((exports2) => {
47018
47118
  exports2.default = def;
47019
47119
  });
47020
47120
 
47021
- // ../switchroom-sec-1417/node_modules/.bun/ajv@8.18.0/node_modules/ajv/dist/vocabularies/core/index.js
47121
+ // node_modules/.bun/ajv@8.18.0/node_modules/ajv/dist/vocabularies/core/index.js
47022
47122
  var require_core2 = __commonJS((exports2) => {
47023
47123
  Object.defineProperty(exports2, "__esModule", { value: true });
47024
47124
  var id_1 = require_id();
@@ -47036,7 +47136,7 @@ var require_core2 = __commonJS((exports2) => {
47036
47136
  exports2.default = core2;
47037
47137
  });
47038
47138
 
47039
- // ../switchroom-sec-1417/node_modules/.bun/ajv@8.18.0/node_modules/ajv/dist/vocabularies/validation/limitNumber.js
47139
+ // node_modules/.bun/ajv@8.18.0/node_modules/ajv/dist/vocabularies/validation/limitNumber.js
47040
47140
  var require_limitNumber = __commonJS((exports2) => {
47041
47141
  Object.defineProperty(exports2, "__esModule", { value: true });
47042
47142
  var codegen_1 = require_codegen();
@@ -47065,7 +47165,7 @@ var require_limitNumber = __commonJS((exports2) => {
47065
47165
  exports2.default = def;
47066
47166
  });
47067
47167
 
47068
- // ../switchroom-sec-1417/node_modules/.bun/ajv@8.18.0/node_modules/ajv/dist/vocabularies/validation/multipleOf.js
47168
+ // node_modules/.bun/ajv@8.18.0/node_modules/ajv/dist/vocabularies/validation/multipleOf.js
47069
47169
  var require_multipleOf = __commonJS((exports2) => {
47070
47170
  Object.defineProperty(exports2, "__esModule", { value: true });
47071
47171
  var codegen_1 = require_codegen();
@@ -47090,7 +47190,7 @@ var require_multipleOf = __commonJS((exports2) => {
47090
47190
  exports2.default = def;
47091
47191
  });
47092
47192
 
47093
- // ../switchroom-sec-1417/node_modules/.bun/ajv@8.18.0/node_modules/ajv/dist/runtime/ucs2length.js
47193
+ // node_modules/.bun/ajv@8.18.0/node_modules/ajv/dist/runtime/ucs2length.js
47094
47194
  var require_ucs2length = __commonJS((exports2) => {
47095
47195
  Object.defineProperty(exports2, "__esModule", { value: true });
47096
47196
  function ucs2length(str) {
@@ -47113,7 +47213,7 @@ var require_ucs2length = __commonJS((exports2) => {
47113
47213
  ucs2length.code = 'require("ajv/dist/runtime/ucs2length").default';
47114
47214
  });
47115
47215
 
47116
- // ../switchroom-sec-1417/node_modules/.bun/ajv@8.18.0/node_modules/ajv/dist/vocabularies/validation/limitLength.js
47216
+ // node_modules/.bun/ajv@8.18.0/node_modules/ajv/dist/vocabularies/validation/limitLength.js
47117
47217
  var require_limitLength = __commonJS((exports2) => {
47118
47218
  Object.defineProperty(exports2, "__esModule", { value: true });
47119
47219
  var codegen_1 = require_codegen();
@@ -47142,7 +47242,7 @@ var require_limitLength = __commonJS((exports2) => {
47142
47242
  exports2.default = def;
47143
47243
  });
47144
47244
 
47145
- // ../switchroom-sec-1417/node_modules/.bun/ajv@8.18.0/node_modules/ajv/dist/vocabularies/validation/pattern.js
47245
+ // node_modules/.bun/ajv@8.18.0/node_modules/ajv/dist/vocabularies/validation/pattern.js
47146
47246
  var require_pattern = __commonJS((exports2) => {
47147
47247
  Object.defineProperty(exports2, "__esModule", { value: true });
47148
47248
  var code_1 = require_code2();
@@ -47176,7 +47276,7 @@ var require_pattern = __commonJS((exports2) => {
47176
47276
  exports2.default = def;
47177
47277
  });
47178
47278
 
47179
- // ../switchroom-sec-1417/node_modules/.bun/ajv@8.18.0/node_modules/ajv/dist/vocabularies/validation/limitProperties.js
47279
+ // node_modules/.bun/ajv@8.18.0/node_modules/ajv/dist/vocabularies/validation/limitProperties.js
47180
47280
  var require_limitProperties = __commonJS((exports2) => {
47181
47281
  Object.defineProperty(exports2, "__esModule", { value: true });
47182
47282
  var codegen_1 = require_codegen();
@@ -47202,7 +47302,7 @@ var require_limitProperties = __commonJS((exports2) => {
47202
47302
  exports2.default = def;
47203
47303
  });
47204
47304
 
47205
- // ../switchroom-sec-1417/node_modules/.bun/ajv@8.18.0/node_modules/ajv/dist/vocabularies/validation/required.js
47305
+ // node_modules/.bun/ajv@8.18.0/node_modules/ajv/dist/vocabularies/validation/required.js
47206
47306
  var require_required = __commonJS((exports2) => {
47207
47307
  Object.defineProperty(exports2, "__esModule", { value: true });
47208
47308
  var code_1 = require_code2();
@@ -47281,7 +47381,7 @@ var require_required = __commonJS((exports2) => {
47281
47381
  exports2.default = def;
47282
47382
  });
47283
47383
 
47284
- // ../switchroom-sec-1417/node_modules/.bun/ajv@8.18.0/node_modules/ajv/dist/vocabularies/validation/limitItems.js
47384
+ // node_modules/.bun/ajv@8.18.0/node_modules/ajv/dist/vocabularies/validation/limitItems.js
47285
47385
  var require_limitItems = __commonJS((exports2) => {
47286
47386
  Object.defineProperty(exports2, "__esModule", { value: true });
47287
47387
  var codegen_1 = require_codegen();
@@ -47307,7 +47407,7 @@ var require_limitItems = __commonJS((exports2) => {
47307
47407
  exports2.default = def;
47308
47408
  });
47309
47409
 
47310
- // ../switchroom-sec-1417/node_modules/.bun/ajv@8.18.0/node_modules/ajv/dist/runtime/equal.js
47410
+ // node_modules/.bun/ajv@8.18.0/node_modules/ajv/dist/runtime/equal.js
47311
47411
  var require_equal = __commonJS((exports2) => {
47312
47412
  Object.defineProperty(exports2, "__esModule", { value: true });
47313
47413
  var equal = require_fast_deep_equal();
@@ -47315,7 +47415,7 @@ var require_equal = __commonJS((exports2) => {
47315
47415
  exports2.default = equal;
47316
47416
  });
47317
47417
 
47318
- // ../switchroom-sec-1417/node_modules/.bun/ajv@8.18.0/node_modules/ajv/dist/vocabularies/validation/uniqueItems.js
47418
+ // node_modules/.bun/ajv@8.18.0/node_modules/ajv/dist/vocabularies/validation/uniqueItems.js
47319
47419
  var require_uniqueItems = __commonJS((exports2) => {
47320
47420
  Object.defineProperty(exports2, "__esModule", { value: true });
47321
47421
  var dataType_1 = require_dataType();
@@ -47379,7 +47479,7 @@ var require_uniqueItems = __commonJS((exports2) => {
47379
47479
  exports2.default = def;
47380
47480
  });
47381
47481
 
47382
- // ../switchroom-sec-1417/node_modules/.bun/ajv@8.18.0/node_modules/ajv/dist/vocabularies/validation/const.js
47482
+ // node_modules/.bun/ajv@8.18.0/node_modules/ajv/dist/vocabularies/validation/const.js
47383
47483
  var require_const = __commonJS((exports2) => {
47384
47484
  Object.defineProperty(exports2, "__esModule", { value: true });
47385
47485
  var codegen_1 = require_codegen();
@@ -47405,7 +47505,7 @@ var require_const = __commonJS((exports2) => {
47405
47505
  exports2.default = def;
47406
47506
  });
47407
47507
 
47408
- // ../switchroom-sec-1417/node_modules/.bun/ajv@8.18.0/node_modules/ajv/dist/vocabularies/validation/enum.js
47508
+ // node_modules/.bun/ajv@8.18.0/node_modules/ajv/dist/vocabularies/validation/enum.js
47409
47509
  var require_enum = __commonJS((exports2) => {
47410
47510
  Object.defineProperty(exports2, "__esModule", { value: true });
47411
47511
  var codegen_1 = require_codegen();
@@ -47451,7 +47551,7 @@ var require_enum = __commonJS((exports2) => {
47451
47551
  exports2.default = def;
47452
47552
  });
47453
47553
 
47454
- // ../switchroom-sec-1417/node_modules/.bun/ajv@8.18.0/node_modules/ajv/dist/vocabularies/validation/index.js
47554
+ // node_modules/.bun/ajv@8.18.0/node_modules/ajv/dist/vocabularies/validation/index.js
47455
47555
  var require_validation = __commonJS((exports2) => {
47456
47556
  Object.defineProperty(exports2, "__esModule", { value: true });
47457
47557
  var limitNumber_1 = require_limitNumber();
@@ -47481,7 +47581,7 @@ var require_validation = __commonJS((exports2) => {
47481
47581
  exports2.default = validation;
47482
47582
  });
47483
47583
 
47484
- // ../switchroom-sec-1417/node_modules/.bun/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/additionalItems.js
47584
+ // node_modules/.bun/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/additionalItems.js
47485
47585
  var require_additionalItems = __commonJS((exports2) => {
47486
47586
  Object.defineProperty(exports2, "__esModule", { value: true });
47487
47587
  exports2.validateAdditionalItems = undefined;
@@ -47531,7 +47631,7 @@ var require_additionalItems = __commonJS((exports2) => {
47531
47631
  exports2.default = def;
47532
47632
  });
47533
47633
 
47534
- // ../switchroom-sec-1417/node_modules/.bun/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/items.js
47634
+ // node_modules/.bun/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/items.js
47535
47635
  var require_items = __commonJS((exports2) => {
47536
47636
  Object.defineProperty(exports2, "__esModule", { value: true });
47537
47637
  exports2.validateTuple = undefined;
@@ -47585,7 +47685,7 @@ var require_items = __commonJS((exports2) => {
47585
47685
  exports2.default = def;
47586
47686
  });
47587
47687
 
47588
- // ../switchroom-sec-1417/node_modules/.bun/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/prefixItems.js
47688
+ // node_modules/.bun/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/prefixItems.js
47589
47689
  var require_prefixItems = __commonJS((exports2) => {
47590
47690
  Object.defineProperty(exports2, "__esModule", { value: true });
47591
47691
  var items_1 = require_items();
@@ -47599,7 +47699,7 @@ var require_prefixItems = __commonJS((exports2) => {
47599
47699
  exports2.default = def;
47600
47700
  });
47601
47701
 
47602
- // ../switchroom-sec-1417/node_modules/.bun/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/items2020.js
47702
+ // node_modules/.bun/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/items2020.js
47603
47703
  var require_items2020 = __commonJS((exports2) => {
47604
47704
  Object.defineProperty(exports2, "__esModule", { value: true });
47605
47705
  var codegen_1 = require_codegen();
@@ -47631,7 +47731,7 @@ var require_items2020 = __commonJS((exports2) => {
47631
47731
  exports2.default = def;
47632
47732
  });
47633
47733
 
47634
- // ../switchroom-sec-1417/node_modules/.bun/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/contains.js
47734
+ // node_modules/.bun/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/contains.js
47635
47735
  var require_contains = __commonJS((exports2) => {
47636
47736
  Object.defineProperty(exports2, "__esModule", { value: true });
47637
47737
  var codegen_1 = require_codegen();
@@ -47722,7 +47822,7 @@ var require_contains = __commonJS((exports2) => {
47722
47822
  exports2.default = def;
47723
47823
  });
47724
47824
 
47725
- // ../switchroom-sec-1417/node_modules/.bun/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/dependencies.js
47825
+ // node_modules/.bun/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/dependencies.js
47726
47826
  var require_dependencies = __commonJS((exports2) => {
47727
47827
  Object.defineProperty(exports2, "__esModule", { value: true });
47728
47828
  exports2.validateSchemaDeps = exports2.validatePropertyDeps = exports2.error = undefined;
@@ -47807,7 +47907,7 @@ var require_dependencies = __commonJS((exports2) => {
47807
47907
  exports2.default = def;
47808
47908
  });
47809
47909
 
47810
- // ../switchroom-sec-1417/node_modules/.bun/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/propertyNames.js
47910
+ // node_modules/.bun/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/propertyNames.js
47811
47911
  var require_propertyNames = __commonJS((exports2) => {
47812
47912
  Object.defineProperty(exports2, "__esModule", { value: true });
47813
47913
  var codegen_1 = require_codegen();
@@ -47847,7 +47947,7 @@ var require_propertyNames = __commonJS((exports2) => {
47847
47947
  exports2.default = def;
47848
47948
  });
47849
47949
 
47850
- // ../switchroom-sec-1417/node_modules/.bun/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/additionalProperties.js
47950
+ // node_modules/.bun/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/additionalProperties.js
47851
47951
  var require_additionalProperties = __commonJS((exports2) => {
47852
47952
  Object.defineProperty(exports2, "__esModule", { value: true });
47853
47953
  var code_1 = require_code2();
@@ -47950,7 +48050,7 @@ var require_additionalProperties = __commonJS((exports2) => {
47950
48050
  exports2.default = def;
47951
48051
  });
47952
48052
 
47953
- // ../switchroom-sec-1417/node_modules/.bun/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/properties.js
48053
+ // node_modules/.bun/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/properties.js
47954
48054
  var require_properties = __commonJS((exports2) => {
47955
48055
  Object.defineProperty(exports2, "__esModule", { value: true });
47956
48056
  var validate_1 = require_validate();
@@ -48005,7 +48105,7 @@ var require_properties = __commonJS((exports2) => {
48005
48105
  exports2.default = def;
48006
48106
  });
48007
48107
 
48008
- // ../switchroom-sec-1417/node_modules/.bun/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/patternProperties.js
48108
+ // node_modules/.bun/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/patternProperties.js
48009
48109
  var require_patternProperties = __commonJS((exports2) => {
48010
48110
  Object.defineProperty(exports2, "__esModule", { value: true });
48011
48111
  var code_1 = require_code2();
@@ -48076,7 +48176,7 @@ var require_patternProperties = __commonJS((exports2) => {
48076
48176
  exports2.default = def;
48077
48177
  });
48078
48178
 
48079
- // ../switchroom-sec-1417/node_modules/.bun/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/not.js
48179
+ // node_modules/.bun/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/not.js
48080
48180
  var require_not = __commonJS((exports2) => {
48081
48181
  Object.defineProperty(exports2, "__esModule", { value: true });
48082
48182
  var util_1 = require_util2();
@@ -48104,7 +48204,7 @@ var require_not = __commonJS((exports2) => {
48104
48204
  exports2.default = def;
48105
48205
  });
48106
48206
 
48107
- // ../switchroom-sec-1417/node_modules/.bun/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/anyOf.js
48207
+ // node_modules/.bun/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/anyOf.js
48108
48208
  var require_anyOf = __commonJS((exports2) => {
48109
48209
  Object.defineProperty(exports2, "__esModule", { value: true });
48110
48210
  var code_1 = require_code2();
@@ -48118,7 +48218,7 @@ var require_anyOf = __commonJS((exports2) => {
48118
48218
  exports2.default = def;
48119
48219
  });
48120
48220
 
48121
- // ../switchroom-sec-1417/node_modules/.bun/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/oneOf.js
48221
+ // node_modules/.bun/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/oneOf.js
48122
48222
  var require_oneOf = __commonJS((exports2) => {
48123
48223
  Object.defineProperty(exports2, "__esModule", { value: true });
48124
48224
  var codegen_1 = require_codegen();
@@ -48173,7 +48273,7 @@ var require_oneOf = __commonJS((exports2) => {
48173
48273
  exports2.default = def;
48174
48274
  });
48175
48275
 
48176
- // ../switchroom-sec-1417/node_modules/.bun/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/allOf.js
48276
+ // node_modules/.bun/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/allOf.js
48177
48277
  var require_allOf = __commonJS((exports2) => {
48178
48278
  Object.defineProperty(exports2, "__esModule", { value: true });
48179
48279
  var util_1 = require_util2();
@@ -48197,7 +48297,7 @@ var require_allOf = __commonJS((exports2) => {
48197
48297
  exports2.default = def;
48198
48298
  });
48199
48299
 
48200
- // ../switchroom-sec-1417/node_modules/.bun/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/if.js
48300
+ // node_modules/.bun/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/if.js
48201
48301
  var require_if2 = __commonJS((exports2) => {
48202
48302
  Object.defineProperty(exports2, "__esModule", { value: true });
48203
48303
  var codegen_1 = require_codegen();
@@ -48263,7 +48363,7 @@ var require_if2 = __commonJS((exports2) => {
48263
48363
  exports2.default = def;
48264
48364
  });
48265
48365
 
48266
- // ../switchroom-sec-1417/node_modules/.bun/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/thenElse.js
48366
+ // node_modules/.bun/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/thenElse.js
48267
48367
  var require_thenElse = __commonJS((exports2) => {
48268
48368
  Object.defineProperty(exports2, "__esModule", { value: true });
48269
48369
  var util_1 = require_util2();
@@ -48278,7 +48378,7 @@ var require_thenElse = __commonJS((exports2) => {
48278
48378
  exports2.default = def;
48279
48379
  });
48280
48380
 
48281
- // ../switchroom-sec-1417/node_modules/.bun/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/index.js
48381
+ // node_modules/.bun/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/index.js
48282
48382
  var require_applicator = __commonJS((exports2) => {
48283
48383
  Object.defineProperty(exports2, "__esModule", { value: true });
48284
48384
  var additionalItems_1 = require_additionalItems();
@@ -48321,7 +48421,7 @@ var require_applicator = __commonJS((exports2) => {
48321
48421
  exports2.default = getApplicator;
48322
48422
  });
48323
48423
 
48324
- // ../switchroom-sec-1417/node_modules/.bun/ajv@8.18.0/node_modules/ajv/dist/vocabularies/format/format.js
48424
+ // node_modules/.bun/ajv@8.18.0/node_modules/ajv/dist/vocabularies/format/format.js
48325
48425
  var require_format = __commonJS((exports2) => {
48326
48426
  Object.defineProperty(exports2, "__esModule", { value: true });
48327
48427
  var codegen_1 = require_codegen();
@@ -48408,7 +48508,7 @@ var require_format = __commonJS((exports2) => {
48408
48508
  exports2.default = def;
48409
48509
  });
48410
48510
 
48411
- // ../switchroom-sec-1417/node_modules/.bun/ajv@8.18.0/node_modules/ajv/dist/vocabularies/format/index.js
48511
+ // node_modules/.bun/ajv@8.18.0/node_modules/ajv/dist/vocabularies/format/index.js
48412
48512
  var require_format2 = __commonJS((exports2) => {
48413
48513
  Object.defineProperty(exports2, "__esModule", { value: true });
48414
48514
  var format_1 = require_format();
@@ -48416,7 +48516,7 @@ var require_format2 = __commonJS((exports2) => {
48416
48516
  exports2.default = format;
48417
48517
  });
48418
48518
 
48419
- // ../switchroom-sec-1417/node_modules/.bun/ajv@8.18.0/node_modules/ajv/dist/vocabularies/metadata.js
48519
+ // node_modules/.bun/ajv@8.18.0/node_modules/ajv/dist/vocabularies/metadata.js
48420
48520
  var require_metadata = __commonJS((exports2) => {
48421
48521
  Object.defineProperty(exports2, "__esModule", { value: true });
48422
48522
  exports2.contentVocabulary = exports2.metadataVocabulary = undefined;
@@ -48436,7 +48536,7 @@ var require_metadata = __commonJS((exports2) => {
48436
48536
  ];
48437
48537
  });
48438
48538
 
48439
- // ../switchroom-sec-1417/node_modules/.bun/ajv@8.18.0/node_modules/ajv/dist/vocabularies/draft7.js
48539
+ // node_modules/.bun/ajv@8.18.0/node_modules/ajv/dist/vocabularies/draft7.js
48440
48540
  var require_draft7 = __commonJS((exports2) => {
48441
48541
  Object.defineProperty(exports2, "__esModule", { value: true });
48442
48542
  var core_1 = require_core2();
@@ -48455,7 +48555,7 @@ var require_draft7 = __commonJS((exports2) => {
48455
48555
  exports2.default = draft7Vocabularies;
48456
48556
  });
48457
48557
 
48458
- // ../switchroom-sec-1417/node_modules/.bun/ajv@8.18.0/node_modules/ajv/dist/vocabularies/discriminator/types.js
48558
+ // node_modules/.bun/ajv@8.18.0/node_modules/ajv/dist/vocabularies/discriminator/types.js
48459
48559
  var require_types = __commonJS((exports2) => {
48460
48560
  Object.defineProperty(exports2, "__esModule", { value: true });
48461
48561
  exports2.DiscrError = undefined;
@@ -48466,7 +48566,7 @@ var require_types = __commonJS((exports2) => {
48466
48566
  })(DiscrError || (exports2.DiscrError = DiscrError = {}));
48467
48567
  });
48468
48568
 
48469
- // ../switchroom-sec-1417/node_modules/.bun/ajv@8.18.0/node_modules/ajv/dist/vocabularies/discriminator/index.js
48569
+ // node_modules/.bun/ajv@8.18.0/node_modules/ajv/dist/vocabularies/discriminator/index.js
48470
48570
  var require_discriminator = __commonJS((exports2) => {
48471
48571
  Object.defineProperty(exports2, "__esModule", { value: true });
48472
48572
  var codegen_1 = require_codegen();
@@ -48568,7 +48668,7 @@ var require_discriminator = __commonJS((exports2) => {
48568
48668
  exports2.default = def;
48569
48669
  });
48570
48670
 
48571
- // ../switchroom-sec-1417/node_modules/.bun/ajv@8.18.0/node_modules/ajv/dist/refs/json-schema-draft-07.json
48671
+ // node_modules/.bun/ajv@8.18.0/node_modules/ajv/dist/refs/json-schema-draft-07.json
48572
48672
  var require_json_schema_draft_07 = __commonJS((exports2, module) => {
48573
48673
  module.exports = {
48574
48674
  $schema: "http://json-schema.org/draft-07/schema#",
@@ -48723,7 +48823,7 @@ var require_json_schema_draft_07 = __commonJS((exports2, module) => {
48723
48823
  };
48724
48824
  });
48725
48825
 
48726
- // ../switchroom-sec-1417/node_modules/.bun/ajv@8.18.0/node_modules/ajv/dist/ajv.js
48826
+ // node_modules/.bun/ajv@8.18.0/node_modules/ajv/dist/ajv.js
48727
48827
  var require_ajv = __commonJS((exports2, module) => {
48728
48828
  Object.defineProperty(exports2, "__esModule", { value: true });
48729
48829
  exports2.MissingRefError = exports2.ValidationError = exports2.CodeGen = exports2.Name = exports2.nil = exports2.stringify = exports2.str = exports2._ = exports2.KeywordCxt = exports2.Ajv = undefined;
@@ -48791,7 +48891,7 @@ var require_ajv = __commonJS((exports2, module) => {
48791
48891
  } });
48792
48892
  });
48793
48893
 
48794
- // ../switchroom-sec-1417/node_modules/.bun/ajv-formats@3.0.1/node_modules/ajv-formats/dist/formats.js
48894
+ // node_modules/.bun/ajv-formats@3.0.1/node_modules/ajv-formats/dist/formats.js
48795
48895
  var require_formats = __commonJS((exports2) => {
48796
48896
  Object.defineProperty(exports2, "__esModule", { value: true });
48797
48897
  exports2.formatNames = exports2.fastFormats = exports2.fullFormats = undefined;
@@ -48968,7 +49068,7 @@ var require_formats = __commonJS((exports2) => {
48968
49068
  }
48969
49069
  });
48970
49070
 
48971
- // ../switchroom-sec-1417/node_modules/.bun/ajv-formats@3.0.1/node_modules/ajv-formats/dist/limit.js
49071
+ // node_modules/.bun/ajv-formats@3.0.1/node_modules/ajv-formats/dist/limit.js
48972
49072
  var require_limit = __commonJS((exports2) => {
48973
49073
  Object.defineProperty(exports2, "__esModule", { value: true });
48974
49074
  exports2.formatLimitDefinition = undefined;
@@ -49037,7 +49137,7 @@ var require_limit = __commonJS((exports2) => {
49037
49137
  exports2.default = formatLimitPlugin;
49038
49138
  });
49039
49139
 
49040
- // ../switchroom-sec-1417/node_modules/.bun/ajv-formats@3.0.1/node_modules/ajv-formats/dist/index.js
49140
+ // node_modules/.bun/ajv-formats@3.0.1/node_modules/ajv-formats/dist/index.js
49041
49141
  var require_dist2 = __commonJS((exports2, module) => {
49042
49142
  Object.defineProperty(exports2, "__esModule", { value: true });
49043
49143
  var formats_1 = require_formats();
@@ -49076,7 +49176,7 @@ var require_dist2 = __commonJS((exports2, module) => {
49076
49176
  exports2.default = formatsPlugin;
49077
49177
  });
49078
49178
 
49079
- // ../switchroom-sec-1417/node_modules/.bun/@modelcontextprotocol+sdk@1.29.0/node_modules/@modelcontextprotocol/sdk/dist/esm/validation/ajv-provider.js
49179
+ // node_modules/.bun/@modelcontextprotocol+sdk@1.29.0/node_modules/@modelcontextprotocol/sdk/dist/esm/validation/ajv-provider.js
49080
49180
  function createDefaultAjvInstance() {
49081
49181
  const ajv = new import_ajv.default({
49082
49182
  strict: false,
@@ -49119,7 +49219,7 @@ var init_ajv_provider = __esm(() => {
49119
49219
  import_ajv_formats = __toESM(require_dist2(), 1);
49120
49220
  });
49121
49221
 
49122
- // ../switchroom-sec-1417/node_modules/.bun/@modelcontextprotocol+sdk@1.29.0/node_modules/@modelcontextprotocol/sdk/dist/esm/experimental/tasks/server.js
49222
+ // node_modules/.bun/@modelcontextprotocol+sdk@1.29.0/node_modules/@modelcontextprotocol/sdk/dist/esm/experimental/tasks/server.js
49123
49223
  class ExperimentalServerTasks {
49124
49224
  constructor(_server) {
49125
49225
  this._server = _server;
@@ -49200,7 +49300,7 @@ var init_server = __esm(() => {
49200
49300
  init_types2();
49201
49301
  });
49202
49302
 
49203
- // ../switchroom-sec-1417/node_modules/.bun/@modelcontextprotocol+sdk@1.29.0/node_modules/@modelcontextprotocol/sdk/dist/esm/experimental/tasks/helpers.js
49303
+ // node_modules/.bun/@modelcontextprotocol+sdk@1.29.0/node_modules/@modelcontextprotocol/sdk/dist/esm/experimental/tasks/helpers.js
49204
49304
  function assertToolsCallTaskCapability(requests, method, entityName) {
49205
49305
  if (!requests) {
49206
49306
  throw new Error(`${entityName} does not support task creation (required for ${method})`);
@@ -49235,7 +49335,7 @@ function assertClientRequestTaskCapability(requests, method, entityName) {
49235
49335
  }
49236
49336
  }
49237
49337
 
49238
- // ../switchroom-sec-1417/node_modules/.bun/@modelcontextprotocol+sdk@1.29.0/node_modules/@modelcontextprotocol/sdk/dist/esm/server/index.js
49338
+ // node_modules/.bun/@modelcontextprotocol+sdk@1.29.0/node_modules/@modelcontextprotocol/sdk/dist/esm/server/index.js
49239
49339
  var Server;
49240
49340
  var init_server2 = __esm(() => {
49241
49341
  init_protocol4();
@@ -49576,7 +49676,7 @@ var init_server2 = __esm(() => {
49576
49676
  };
49577
49677
  });
49578
49678
 
49579
- // ../switchroom-sec-1417/node_modules/.bun/@modelcontextprotocol+sdk@1.29.0/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/stdio.js
49679
+ // node_modules/.bun/@modelcontextprotocol+sdk@1.29.0/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/stdio.js
49580
49680
  class ReadBuffer {
49581
49681
  append(chunk2) {
49582
49682
  this._buffer = this._buffer ? Buffer.concat([this._buffer, chunk2]) : chunk2;
@@ -49609,7 +49709,7 @@ var init_stdio = __esm(() => {
49609
49709
  init_types2();
49610
49710
  });
49611
49711
 
49612
- // ../switchroom-sec-1417/node_modules/.bun/@modelcontextprotocol+sdk@1.29.0/node_modules/@modelcontextprotocol/sdk/dist/esm/server/stdio.js
49712
+ // node_modules/.bun/@modelcontextprotocol+sdk@1.29.0/node_modules/@modelcontextprotocol/sdk/dist/esm/server/stdio.js
49613
49713
  import process3 from "node:process";
49614
49714
 
49615
49715
  class StdioServerTransport {
@@ -50575,7 +50675,7 @@ var init_server4 = __esm(() => {
50575
50675
  ];
50576
50676
  });
50577
50677
 
50578
- // ../switchroom-sec-1417/node_modules/.bun/commander@13.1.0/node_modules/commander/esm.mjs
50678
+ // node_modules/.bun/commander@13.1.0/node_modules/commander/esm.mjs
50579
50679
  var import__ = __toESM(require_commander(), 1);
50580
50680
  var {
50581
50681
  program,
@@ -50592,8 +50692,8 @@ var {
50592
50692
  } = import__.default;
50593
50693
 
50594
50694
  // src/build-info.ts
50595
- var VERSION = "0.15.37";
50596
- var COMMIT_SHA = "bc83a0a6";
50695
+ var VERSION = "0.15.38";
50696
+ var COMMIT_SHA = "d28a331f";
50597
50697
 
50598
50698
  // src/cli/agent.ts
50599
50699
  init_source();
@@ -53134,6 +53234,7 @@ function scaffoldAgent(name, agentConfigRaw, agentsDir, telegramConfig, switchro
53134
53234
  const switchroomCliPath = "/usr/local/bin/switchroom";
53135
53235
  const resolvedConfigPath = DOCKER_CONFIG_PATH;
53136
53236
  const telegramStateDir = `${DOCKER_AGENT_HOME}/.switchroom/agents/${name}/telegram`;
53237
+ const linearAgentEnabled = agentConfig.channels?.telegram?.linear_agent?.enabled === true;
53137
53238
  const mcpServers = {
53138
53239
  "switchroom-telegram": {
53139
53240
  command: "bun",
@@ -53141,9 +53242,10 @@ function scaffoldAgent(name, agentConfigRaw, agentsDir, telegramConfig, switchro
53141
53242
  env: {
53142
53243
  TELEGRAM_STATE_DIR: telegramStateDir,
53143
53244
  SWITCHROOM_CONFIG: resolvedConfigPath,
53144
- SWITCHROOM_CLI_PATH: switchroomCliPath
53245
+ SWITCHROOM_CLI_PATH: switchroomCliPath,
53246
+ ...linearAgentEnabled ? { SWITCHROOM_TELEGRAM_LINEAR: "1" } : {}
53145
53247
  },
53146
- alwaysLoad: true
53248
+ alwaysLoad: false
53147
53249
  },
53148
53250
  "agent-config": {
53149
53251
  command: switchroomCliPath,
@@ -54203,6 +54305,7 @@ ${body}
54203
54305
  const switchroomCliPath = "/usr/local/bin/switchroom";
54204
54306
  const resolvedConfigPath = DOCKER_CONFIG_PATH;
54205
54307
  const telegramStateDir = `${DOCKER_AGENT_HOME}/.switchroom/agents/${name}/telegram`;
54308
+ const linearAgentEnabled = agentConfig.channels?.telegram?.linear_agent?.enabled === true;
54206
54309
  const mcpServers = {
54207
54310
  "switchroom-telegram": {
54208
54311
  command: "bun",
@@ -54210,9 +54313,10 @@ ${body}
54210
54313
  env: {
54211
54314
  TELEGRAM_STATE_DIR: telegramStateDir,
54212
54315
  SWITCHROOM_CONFIG: resolvedConfigPath,
54213
- SWITCHROOM_CLI_PATH: switchroomCliPath
54316
+ SWITCHROOM_CLI_PATH: switchroomCliPath,
54317
+ ...linearAgentEnabled ? { SWITCHROOM_TELEGRAM_LINEAR: "1" } : {}
54214
54318
  },
54215
- alwaysLoad: true
54319
+ alwaysLoad: false
54216
54320
  },
54217
54321
  "agent-config": {
54218
54322
  command: switchroomCliPath,
@@ -58912,7 +59016,7 @@ function hasGoogleAccountEntry(doc, account) {
58912
59016
  // src/cli/auth-google.ts
58913
59017
  init_helpers();
58914
59018
  function registerAuthGoogleSubcommands(program3, authParent) {
58915
- const google = authParent.command("google").description("Manage Google Workspace accounts shared across agents (RFC G \u2014 see docs/rfcs/google-workspace-generalization.md)");
59019
+ const google = authParent.command("google").description("Manage Google Workspace accounts shared across agents (RFC G \u2014 see reference/rfcs/google-workspace-generalization.md)");
58916
59020
  registerConnect(google, program3);
58917
59021
  registerEnable(google, program3);
58918
59022
  registerDisable(google, program3);
@@ -59696,7 +59800,7 @@ function buildMicrosoftCredentials(opts) {
59696
59800
 
59697
59801
  // src/cli/auth-microsoft.ts
59698
59802
  function registerAuthMicrosoftSubcommands(program3, authParent) {
59699
- const microsoft = authParent.command("microsoft").description("Manage Microsoft 365 accounts shared across agents (RFC #1873 \u2014 see docs/rfcs/microsoft-workspace.md)");
59803
+ const microsoft = authParent.command("microsoft").description("Manage Microsoft 365 accounts shared across agents (RFC #1873 \u2014 see reference/rfcs/microsoft-workspace.md)");
59700
59804
  registerEnable2(microsoft, program3);
59701
59805
  registerDisable2(microsoft, program3);
59702
59806
  registerList2(microsoft, program3);
@@ -61684,7 +61788,7 @@ function createAuditLogger(opts = {}) {
61684
61788
  // src/vault/grants.ts
61685
61789
  import { randomBytes as randomBytes8 } from "node:crypto";
61686
61790
 
61687
- // ../switchroom-sec-1417/node_modules/.bun/bcryptjs@3.0.3/node_modules/bcryptjs/index.js
61791
+ // node_modules/.bun/bcryptjs@3.0.3/node_modules/bcryptjs/index.js
61688
61792
  import nodeCrypto from "crypto";
61689
61793
  var randomFallback = null;
61690
61794
  function randomBytes7(len) {
@@ -69174,7 +69278,7 @@ init_client3();
69174
69278
  init_client();
69175
69279
  import { homedir as homedir23 } from "node:os";
69176
69280
 
69177
- // ../switchroom-sec-1417/node_modules/.bun/posthog-node@5.29.2/node_modules/posthog-node/dist/extensions/error-tracking/modifiers/module.node.mjs
69281
+ // node_modules/.bun/posthog-node@5.29.2/node_modules/posthog-node/dist/extensions/error-tracking/modifiers/module.node.mjs
69178
69282
  import { dirname as dirname9, posix, sep as sep2 } from "path";
69179
69283
  function createModulerModifier() {
69180
69284
  const getModuleFromFileName = createGetModuleFromFilename();
@@ -69210,7 +69314,7 @@ function normalizeWindowsPath(path4) {
69210
69314
  return path4.replace(/^[A-Z]:/, "").replace(/\\/g, "/");
69211
69315
  }
69212
69316
 
69213
- // ../switchroom-sec-1417/node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/featureFlagUtils.mjs
69317
+ // node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/featureFlagUtils.mjs
69214
69318
  var normalizeFlagsResponse = (flagsResponse) => {
69215
69319
  if ("flags" in flagsResponse) {
69216
69320
  const featureFlags = getFlagValuesFromFlags(flagsResponse.flags);
@@ -69281,7 +69385,7 @@ var parsePayload = (response) => {
69281
69385
  }
69282
69386
  };
69283
69387
 
69284
- // ../switchroom-sec-1417/node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/gzip.mjs
69388
+ // node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/gzip.mjs
69285
69389
  function isGzipSupported() {
69286
69390
  return "CompressionStream" in globalThis;
69287
69391
  }
@@ -69301,7 +69405,7 @@ async function gzipCompress(input, isDebug = true) {
69301
69405
  }
69302
69406
  }
69303
69407
 
69304
- // ../switchroom-sec-1417/node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/vendor/uuidv7.mjs
69408
+ // node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/vendor/uuidv7.mjs
69305
69409
  /*! For license information please see uuidv7.mjs.LICENSE.txt */
69306
69410
  var DIGITS = "0123456789abcdef";
69307
69411
 
@@ -69479,7 +69583,7 @@ var defaultGenerator;
69479
69583
  var uuidv7 = () => uuidv7obj().toString();
69480
69584
  var uuidv7obj = () => (defaultGenerator || (defaultGenerator = new V7Generator)).generate();
69481
69585
 
69482
- // ../switchroom-sec-1417/node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/types.mjs
69586
+ // node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/types.mjs
69483
69587
  var types_PostHogPersistedProperty = /* @__PURE__ */ function(PostHogPersistedProperty) {
69484
69588
  PostHogPersistedProperty["AnonymousId"] = "anonymous_id";
69485
69589
  PostHogPersistedProperty["DistinctId"] = "distinct_id";
@@ -69512,7 +69616,7 @@ var types_PostHogPersistedProperty = /* @__PURE__ */ function(PostHogPersistedPr
69512
69616
  return PostHogPersistedProperty;
69513
69617
  }({});
69514
69618
 
69515
- // ../switchroom-sec-1417/node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/utils/bot-detection.mjs
69619
+ // node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/utils/bot-detection.mjs
69516
69620
  var DEFAULT_BLOCKED_UA_STRS = [
69517
69621
  "amazonbot",
69518
69622
  "amazonproductbot",
@@ -69601,7 +69705,7 @@ var isBlockedUA = function(ua, customBlockedUserAgents = []) {
69601
69705
  return uaLower.indexOf(blockedUaLower) !== -1;
69602
69706
  });
69603
69707
  };
69604
- // ../switchroom-sec-1417/node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/utils/type-utils.mjs
69708
+ // node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/utils/type-utils.mjs
69605
69709
  var nativeIsArray = Array.isArray;
69606
69710
  var ObjProto = Object.prototype;
69607
69711
  var type_utils_hasOwnProperty = ObjProto.hasOwnProperty;
@@ -69638,7 +69742,7 @@ function isInstanceOf(candidate, base) {
69638
69742
  }
69639
69743
  }
69640
69744
 
69641
- // ../switchroom-sec-1417/node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/utils/number-utils.mjs
69745
+ // node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/utils/number-utils.mjs
69642
69746
  function clampToRange(value, min, max, logger, fallbackValue) {
69643
69747
  if (min > max) {
69644
69748
  logger.warn("min cannot be greater than max.");
@@ -69658,7 +69762,7 @@ function clampToRange(value, min, max, logger, fallbackValue) {
69658
69762
  return clampToRange(fallbackValue || max, min, max, logger);
69659
69763
  }
69660
69764
 
69661
- // ../switchroom-sec-1417/node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/utils/bucketed-rate-limiter.mjs
69765
+ // node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/utils/bucketed-rate-limiter.mjs
69662
69766
  var ONE_DAY_IN_MS = 86400000;
69663
69767
 
69664
69768
  class BucketedRateLimiter {
@@ -69702,7 +69806,7 @@ class BucketedRateLimiter {
69702
69806
  this._buckets = {};
69703
69807
  }
69704
69808
  }
69705
- // ../switchroom-sec-1417/node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/utils/promise-queue.mjs
69809
+ // node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/utils/promise-queue.mjs
69706
69810
  class PromiseQueue {
69707
69811
  add(promise) {
69708
69812
  const promiseUUID = uuidv7();
@@ -69728,7 +69832,7 @@ class PromiseQueue {
69728
69832
  this.promiseByIds = {};
69729
69833
  }
69730
69834
  }
69731
- // ../switchroom-sec-1417/node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/utils/logger.mjs
69835
+ // node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/utils/logger.mjs
69732
69836
  function createConsole(consoleLike = console) {
69733
69837
  const lockedMethods = {
69734
69838
  log: consoleLike.log.bind(consoleLike),
@@ -69766,7 +69870,7 @@ var passThrough = (fn) => fn();
69766
69870
  function createLogger(prefix, maybeCall = passThrough) {
69767
69871
  return _createLogger(prefix, maybeCall, createConsole());
69768
69872
  }
69769
- // ../switchroom-sec-1417/node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/utils/user-agent-utils.mjs
69873
+ // node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/utils/user-agent-utils.mjs
69770
69874
  var MOBILE = "Mobile";
69771
69875
  var IOS = "iOS";
69772
69876
  var ANDROID = "Android";
@@ -70023,7 +70127,7 @@ var osMatchers = [
70023
70127
  ]
70024
70128
  ];
70025
70129
 
70026
- // ../switchroom-sec-1417/node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/utils/index.mjs
70130
+ // node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/utils/index.mjs
70027
70131
  var STRING_FORMAT = "utf8";
70028
70132
  function assert(truthyValue, message) {
70029
70133
  if (!truthyValue || typeof truthyValue != "string" || isEmpty(truthyValue))
@@ -70071,7 +70175,7 @@ function allSettled(promises) {
70071
70175
  reason
70072
70176
  }))));
70073
70177
  }
70074
- // ../switchroom-sec-1417/node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/eventemitter.mjs
70178
+ // node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/eventemitter.mjs
70075
70179
  class SimpleEventEmitter {
70076
70180
  constructor() {
70077
70181
  this.events = {};
@@ -70093,7 +70197,7 @@ class SimpleEventEmitter {
70093
70197
  }
70094
70198
  }
70095
70199
 
70096
- // ../switchroom-sec-1417/node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/posthog-core-stateless.mjs
70200
+ // node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/posthog-core-stateless.mjs
70097
70201
  class PostHogFetchHttpError extends Error {
70098
70202
  constructor(response, reqByteLength) {
70099
70203
  super("HTTP error while fetching PostHog: status=" + response.status + ", reqByteLength=" + reqByteLength), this.response = response, this.reqByteLength = reqByteLength, this.name = "PostHogFetchHttpError";
@@ -70808,7 +70912,7 @@ class PostHogCoreStateless {
70808
70912
  return this.shutdownPromise;
70809
70913
  }
70810
70914
  }
70811
- // ../switchroom-sec-1417/node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/error-tracking/index.mjs
70915
+ // node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/error-tracking/index.mjs
70812
70916
  var exports_error_tracking = {};
70813
70917
  __export(exports_error_tracking, {
70814
70918
  winjsStackLineParser: () => winjsStackLineParser,
@@ -70832,7 +70936,7 @@ __export(exports_error_tracking, {
70832
70936
  DOMExceptionCoercer: () => DOMExceptionCoercer
70833
70937
  });
70834
70938
 
70835
- // ../switchroom-sec-1417/node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/error-tracking/chunk-ids.mjs
70939
+ // node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/error-tracking/chunk-ids.mjs
70836
70940
  var parsedStackResults;
70837
70941
  var lastKeysCount;
70838
70942
  var cachedFilenameChunkIds;
@@ -70871,7 +70975,7 @@ function getFilenameToChunkIdMap(stackParser) {
70871
70975
  return cachedFilenameChunkIds;
70872
70976
  }
70873
70977
 
70874
- // ../switchroom-sec-1417/node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/error-tracking/error-properties-builder.mjs
70978
+ // node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/error-tracking/error-properties-builder.mjs
70875
70979
  var MAX_CAUSE_RECURSION = 4;
70876
70980
 
70877
70981
  class ErrorPropertiesBuilder {
@@ -70993,7 +71097,7 @@ class ErrorPropertiesBuilder {
70993
71097
  return context;
70994
71098
  }
70995
71099
  }
70996
- // ../switchroom-sec-1417/node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/error-tracking/parsers/base.mjs
71100
+ // node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/error-tracking/parsers/base.mjs
70997
71101
  var UNKNOWN_FUNCTION = "?";
70998
71102
  function createFrame(platform, filename, func, lineno, colno) {
70999
71103
  const frame = {
@@ -71009,7 +71113,7 @@ function createFrame(platform, filename, func, lineno, colno) {
71009
71113
  return frame;
71010
71114
  }
71011
71115
 
71012
- // ../switchroom-sec-1417/node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/error-tracking/parsers/safari.mjs
71116
+ // node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/error-tracking/parsers/safari.mjs
71013
71117
  var extractSafariExtensionDetails = (func, filename) => {
71014
71118
  const isSafariExtension = func.indexOf("safari-extension") !== -1;
71015
71119
  const isSafariWebExtension = func.indexOf("safari-web-extension") !== -1;
@@ -71022,7 +71126,7 @@ var extractSafariExtensionDetails = (func, filename) => {
71022
71126
  ];
71023
71127
  };
71024
71128
 
71025
- // ../switchroom-sec-1417/node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/error-tracking/parsers/chrome.mjs
71129
+ // node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/error-tracking/parsers/chrome.mjs
71026
71130
  var chromeRegexNoFnName = /^\s*at (\S+?)(?::(\d+))(?::(\d+))\s*$/i;
71027
71131
  var chromeRegex = /^\s*at (?:(.+?\)(?: \[.+\])?|.*?) ?\((?:address at )?)?(?:async )?((?:<anonymous>|[-a-z]+:|.*bundle|\/)?.*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i;
71028
71132
  var chromeEvalRegex = /\((\S*)(?::(\d+))(?::(\d+))\)/;
@@ -71048,7 +71152,7 @@ var chromeStackLineParser = (line, platform) => {
71048
71152
  }
71049
71153
  };
71050
71154
 
71051
- // ../switchroom-sec-1417/node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/error-tracking/parsers/gecko.mjs
71155
+ // node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/error-tracking/parsers/gecko.mjs
71052
71156
  var geckoREgex = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)?((?:[-a-z]+)?:\/.*?|\[native code\]|[^@]*(?:bundle|\d+\.js)|\/[\w\-. /=]+)(?::(\d+))?(?::(\d+))?\s*$/i;
71053
71157
  var geckoEvalRegex = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i;
71054
71158
  var geckoStackLineParser = (line, platform) => {
@@ -71071,14 +71175,14 @@ var geckoStackLineParser = (line, platform) => {
71071
71175
  }
71072
71176
  };
71073
71177
 
71074
- // ../switchroom-sec-1417/node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/error-tracking/parsers/winjs.mjs
71178
+ // node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/error-tracking/parsers/winjs.mjs
71075
71179
  var winjsRegex = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:[-a-z]+):.*?):(\d+)(?::(\d+))?\)?\s*$/i;
71076
71180
  var winjsStackLineParser = (line, platform) => {
71077
71181
  const parts = winjsRegex.exec(line);
71078
71182
  return parts ? createFrame(platform, parts[2], parts[1] || UNKNOWN_FUNCTION, +parts[3], parts[4] ? +parts[4] : undefined) : undefined;
71079
71183
  };
71080
71184
 
71081
- // ../switchroom-sec-1417/node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/error-tracking/parsers/opera.mjs
71185
+ // node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/error-tracking/parsers/opera.mjs
71082
71186
  var opera10Regex = / line (\d+).*script (?:in )?(\S+)(?:: in function (\S+))?$/i;
71083
71187
  var opera10StackLineParser = (line, platform) => {
71084
71188
  const parts = opera10Regex.exec(line);
@@ -71090,7 +71194,7 @@ var opera11StackLineParser = (line, platform) => {
71090
71194
  return parts ? createFrame(platform, parts[5], parts[3] || parts[4] || UNKNOWN_FUNCTION, +parts[1], +parts[2]) : undefined;
71091
71195
  };
71092
71196
 
71093
- // ../switchroom-sec-1417/node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/error-tracking/parsers/node.mjs
71197
+ // node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/error-tracking/parsers/node.mjs
71094
71198
  var FILENAME_MATCH = /^\s*[-]{4,}$/;
71095
71199
  var FULL_MATCH = /at (?:async )?(?:(.+?)\s+\()?(?:(.+):(\d+):(\d+)?|([^)]+))\)?/;
71096
71200
  var nodeStackLineParser = (line, platform) => {
@@ -71159,7 +71263,7 @@ function _parseIntOrUndefined(input) {
71159
71263
  return parseInt(input || "", 10) || undefined;
71160
71264
  }
71161
71265
 
71162
- // ../switchroom-sec-1417/node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/error-tracking/parsers/index.mjs
71266
+ // node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/error-tracking/parsers/index.mjs
71163
71267
  var WEBPACK_ERROR_REGEXP = /\(error: (.*)\)/;
71164
71268
  var STACKTRACE_FRAME_LIMIT = 50;
71165
71269
  function reverseAndStripFrames(stack) {
@@ -71204,7 +71308,7 @@ function createStackParser(platform, ...parsers) {
71204
71308
  return reverseAndStripFrames(frames);
71205
71309
  };
71206
71310
  }
71207
- // ../switchroom-sec-1417/node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/error-tracking/coercers/dom-exception-coercer.mjs
71311
+ // node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/error-tracking/coercers/dom-exception-coercer.mjs
71208
71312
  class DOMExceptionCoercer {
71209
71313
  match(err) {
71210
71314
  return this.isDOMException(err) || this.isDOMError(err);
@@ -71234,7 +71338,7 @@ class DOMExceptionCoercer {
71234
71338
  return isBuiltin(err, "DOMError");
71235
71339
  }
71236
71340
  }
71237
- // ../switchroom-sec-1417/node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/error-tracking/coercers/error-coercer.mjs
71341
+ // node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/error-tracking/coercers/error-coercer.mjs
71238
71342
  class ErrorCoercer {
71239
71343
  match(err) {
71240
71344
  return isPlainError(err);
@@ -71261,7 +71365,7 @@ class ErrorCoercer {
71261
71365
  return err.stacktrace || err.stack || undefined;
71262
71366
  }
71263
71367
  }
71264
- // ../switchroom-sec-1417/node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/error-tracking/coercers/error-event-coercer.mjs
71368
+ // node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/error-tracking/coercers/error-event-coercer.mjs
71265
71369
  class ErrorEventCoercer {
71266
71370
  constructor() {}
71267
71371
  match(err) {
@@ -71279,7 +71383,7 @@ class ErrorEventCoercer {
71279
71383
  return exceptionLike;
71280
71384
  }
71281
71385
  }
71282
- // ../switchroom-sec-1417/node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/error-tracking/coercers/string-coercer.mjs
71386
+ // node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/error-tracking/coercers/string-coercer.mjs
71283
71387
  var ERROR_TYPES_PATTERN = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/i;
71284
71388
 
71285
71389
  class StringCoercer {
@@ -71309,7 +71413,7 @@ class StringCoercer {
71309
71413
  ];
71310
71414
  }
71311
71415
  }
71312
- // ../switchroom-sec-1417/node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/error-tracking/types.mjs
71416
+ // node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/error-tracking/types.mjs
71313
71417
  var severityLevels = [
71314
71418
  "fatal",
71315
71419
  "error",
@@ -71319,7 +71423,7 @@ var severityLevels = [
71319
71423
  "debug"
71320
71424
  ];
71321
71425
 
71322
- // ../switchroom-sec-1417/node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/error-tracking/coercers/utils.mjs
71426
+ // node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/error-tracking/coercers/utils.mjs
71323
71427
  function extractExceptionKeysForMessage(err, maxLength = 40) {
71324
71428
  const keys = Object.keys(err);
71325
71429
  keys.sort();
@@ -71336,7 +71440,7 @@ function extractExceptionKeysForMessage(err, maxLength = 40) {
71336
71440
  return "";
71337
71441
  }
71338
71442
 
71339
- // ../switchroom-sec-1417/node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/error-tracking/coercers/object-coercer.mjs
71443
+ // node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/error-tracking/coercers/object-coercer.mjs
71340
71444
  class ObjectCoercer {
71341
71445
  match(candidate) {
71342
71446
  return typeof candidate == "object" && candidate !== null;
@@ -71389,7 +71493,7 @@ class ObjectCoercer {
71389
71493
  }
71390
71494
  }
71391
71495
  }
71392
- // ../switchroom-sec-1417/node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/error-tracking/coercers/event-coercer.mjs
71496
+ // node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/error-tracking/coercers/event-coercer.mjs
71393
71497
  class EventCoercer {
71394
71498
  match(err) {
71395
71499
  return isEvent(err);
@@ -71404,7 +71508,7 @@ class EventCoercer {
71404
71508
  };
71405
71509
  }
71406
71510
  }
71407
- // ../switchroom-sec-1417/node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/error-tracking/coercers/primitive-coercer.mjs
71511
+ // node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/error-tracking/coercers/primitive-coercer.mjs
71408
71512
  class PrimitiveCoercer {
71409
71513
  match(candidate) {
71410
71514
  return isPrimitive(candidate);
@@ -71418,7 +71522,7 @@ class PrimitiveCoercer {
71418
71522
  };
71419
71523
  }
71420
71524
  }
71421
- // ../switchroom-sec-1417/node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/error-tracking/coercers/promise-rejection-event.mjs
71525
+ // node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/error-tracking/coercers/promise-rejection-event.mjs
71422
71526
  class PromiseRejectionEventCoercer {
71423
71527
  match(err) {
71424
71528
  return isBuiltin(err, "PromiseRejectionEvent") || this.isCustomEventWrappingRejection(err);
@@ -71454,7 +71558,7 @@ class PromiseRejectionEventCoercer {
71454
71558
  return error;
71455
71559
  }
71456
71560
  }
71457
- // ../switchroom-sec-1417/node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/error-tracking/utils.mjs
71561
+ // node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/error-tracking/utils.mjs
71458
71562
  class ReduceableCache {
71459
71563
  constructor(_maxSize) {
71460
71564
  this._maxSize = _maxSize;
@@ -71479,7 +71583,7 @@ class ReduceableCache {
71479
71583
  }
71480
71584
  }
71481
71585
  }
71482
- // ../switchroom-sec-1417/node_modules/.bun/posthog-node@5.29.2/node_modules/posthog-node/dist/extensions/error-tracking/modifiers/context-lines.node.mjs
71586
+ // node_modules/.bun/posthog-node@5.29.2/node_modules/posthog-node/dist/extensions/error-tracking/modifiers/context-lines.node.mjs
71483
71587
  import { createReadStream } from "node:fs";
71484
71588
  import { createInterface as createInterface5 } from "node:readline";
71485
71589
  var LRU_FILE_CONTENTS_CACHE = new exports_error_tracking.ReduceableCache(25);
@@ -71697,7 +71801,7 @@ function snipLine(line, colno) {
71697
71801
  return newLine;
71698
71802
  }
71699
71803
 
71700
- // ../switchroom-sec-1417/node_modules/.bun/posthog-node@5.29.2/node_modules/posthog-node/dist/extensions/error-tracking/autocapture.mjs
71804
+ // node_modules/.bun/posthog-node@5.29.2/node_modules/posthog-node/dist/extensions/error-tracking/autocapture.mjs
71701
71805
  function makeUncaughtExceptionHandler(captureFn, onFatalFn) {
71702
71806
  let calledFatalError = false;
71703
71807
  return Object.assign((error) => {
@@ -71729,7 +71833,7 @@ function addUnhandledRejectionListener(captureFn) {
71729
71833
  }));
71730
71834
  }
71731
71835
 
71732
- // ../switchroom-sec-1417/node_modules/.bun/posthog-node@5.29.2/node_modules/posthog-node/dist/extensions/error-tracking/index.mjs
71836
+ // node_modules/.bun/posthog-node@5.29.2/node_modules/posthog-node/dist/extensions/error-tracking/index.mjs
71733
71837
  var SHUTDOWN_TIMEOUT = 2000;
71734
71838
 
71735
71839
  class ErrorTracking {
@@ -71798,10 +71902,10 @@ class ErrorTracking {
71798
71902
  }
71799
71903
  }
71800
71904
 
71801
- // ../switchroom-sec-1417/node_modules/.bun/posthog-node@5.29.2/node_modules/posthog-node/dist/version.mjs
71905
+ // node_modules/.bun/posthog-node@5.29.2/node_modules/posthog-node/dist/version.mjs
71802
71906
  var version = "5.29.2";
71803
71907
 
71804
- // ../switchroom-sec-1417/node_modules/.bun/posthog-node@5.29.2/node_modules/posthog-node/dist/types.mjs
71908
+ // node_modules/.bun/posthog-node@5.29.2/node_modules/posthog-node/dist/types.mjs
71805
71909
  var FeatureFlagError2 = {
71806
71910
  ERRORS_WHILE_COMPUTING: "errors_while_computing_flags",
71807
71911
  FLAG_MISSING: "flag_missing",
@@ -71809,7 +71913,7 @@ var FeatureFlagError2 = {
71809
71913
  UNKNOWN_ERROR: "unknown_error"
71810
71914
  };
71811
71915
 
71812
- // ../switchroom-sec-1417/node_modules/.bun/posthog-node@5.29.2/node_modules/posthog-node/dist/extensions/feature-flags/crypto.mjs
71916
+ // node_modules/.bun/posthog-node@5.29.2/node_modules/posthog-node/dist/extensions/feature-flags/crypto.mjs
71813
71917
  async function hashSHA1(text) {
71814
71918
  const subtle = globalThis.crypto?.subtle;
71815
71919
  if (!subtle)
@@ -71819,7 +71923,7 @@ async function hashSHA1(text) {
71819
71923
  return hashArray.map((byte) => byte.toString(16).padStart(2, "0")).join("");
71820
71924
  }
71821
71925
 
71822
- // ../switchroom-sec-1417/node_modules/.bun/posthog-node@5.29.2/node_modules/posthog-node/dist/extensions/feature-flags/feature-flags.mjs
71926
+ // node_modules/.bun/posthog-node@5.29.2/node_modules/posthog-node/dist/extensions/feature-flags/feature-flags.mjs
71823
71927
  var SIXTY_SECONDS = 60000;
71824
71928
  var LONG_SCALE = 1152921504606847000;
71825
71929
  var NULL_VALUES_ALLOWED_OPERATORS = [
@@ -72693,7 +72797,7 @@ function relativeDateParseForFeatureFlagMatching(value) {
72693
72797
  }
72694
72798
  }
72695
72799
 
72696
- // ../switchroom-sec-1417/node_modules/.bun/posthog-node@5.29.2/node_modules/posthog-node/dist/storage-memory.mjs
72800
+ // node_modules/.bun/posthog-node@5.29.2/node_modules/posthog-node/dist/storage-memory.mjs
72697
72801
  class PostHogMemoryStorage {
72698
72802
  getProperty(key) {
72699
72803
  return this._memoryStorage[key];
@@ -72706,7 +72810,7 @@ class PostHogMemoryStorage {
72706
72810
  }
72707
72811
  }
72708
72812
 
72709
- // ../switchroom-sec-1417/node_modules/.bun/posthog-node@5.29.2/node_modules/posthog-node/dist/client.mjs
72813
+ // node_modules/.bun/posthog-node@5.29.2/node_modules/posthog-node/dist/client.mjs
72710
72814
  var MINIMUM_POLLING_INTERVAL = 100;
72711
72815
  var THIRTY_SECONDS = 30000;
72712
72816
  var MAX_CACHE_SIZE = 50000;
@@ -73494,7 +73598,7 @@ class PostHogBackendClient extends PostHogCoreStateless {
73494
73598
  }
73495
73599
  }
73496
73600
 
73497
- // ../switchroom-sec-1417/node_modules/.bun/posthog-node@5.29.2/node_modules/posthog-node/dist/extensions/context/context.mjs
73601
+ // node_modules/.bun/posthog-node@5.29.2/node_modules/posthog-node/dist/extensions/context/context.mjs
73498
73602
  import { AsyncLocalStorage } from "node:async_hooks";
73499
73603
 
73500
73604
  class PostHogContext {
@@ -73525,7 +73629,7 @@ class PostHogContext {
73525
73629
  }
73526
73630
  }
73527
73631
 
73528
- // ../switchroom-sec-1417/node_modules/.bun/posthog-node@5.29.2/node_modules/posthog-node/dist/extensions/sentry-integration.mjs
73632
+ // node_modules/.bun/posthog-node@5.29.2/node_modules/posthog-node/dist/extensions/sentry-integration.mjs
73529
73633
  var NAME = "posthog-node";
73530
73634
  function createEventProcessor(_posthog, { organization, projectId, prefix, severityAllowList = [
73531
73635
  "error"
@@ -73593,7 +73697,7 @@ class PostHogSentryIntegration {
73593
73697
  };
73594
73698
  }
73595
73699
  }
73596
- // ../switchroom-sec-1417/node_modules/.bun/posthog-node@5.29.2/node_modules/posthog-node/dist/entrypoints/index.node.mjs
73700
+ // node_modules/.bun/posthog-node@5.29.2/node_modules/posthog-node/dist/entrypoints/index.node.mjs
73597
73701
  ErrorTracking.errorPropertiesBuilder = new exports_error_tracking.ErrorPropertiesBuilder([
73598
73702
  new exports_error_tracking.EventCoercer,
73599
73703
  new exports_error_tracking.ErrorCoercer,
@@ -74806,6 +74910,28 @@ function handleGetNotionWorkspace(config) {
74806
74910
  fullAccessAgents
74807
74911
  };
74808
74912
  }
74913
+ function handleGetLinearAgents(config) {
74914
+ const agentNames = Object.keys(config.agents ?? {});
74915
+ const agents = [];
74916
+ for (const name of agentNames) {
74917
+ const rawAgent = config.agents?.[name];
74918
+ if (!rawAgent)
74919
+ continue;
74920
+ const linear = resolveAgentConfig(config.defaults, config.profiles, rawAgent).channels?.telegram?.linear_agent;
74921
+ if (!linear?.enabled)
74922
+ continue;
74923
+ const tok = linear.token;
74924
+ const tokenVaultKey = typeof tok === "string" && tok.startsWith("vault:") ? tok : null;
74925
+ agents.push({
74926
+ agent: name,
74927
+ workspaceId: linear.workspace_id ?? null,
74928
+ defaultTeamId: linear.default_team_id ?? null,
74929
+ tokenVaultKey
74930
+ });
74931
+ }
74932
+ agents.sort((a, b) => a.agent.localeCompare(b.agent));
74933
+ return { configured: agents.length > 0, agents };
74934
+ }
74809
74935
  var connectionAccessStatuses = new Map;
74810
74936
  function reapConnectionAccessStatuses(now = Date.now()) {
74811
74937
  for (const [id, s] of connectionAccessStatuses) {
@@ -75877,6 +76003,23 @@ var MIME_TYPES = {
75877
76003
  ".svg": "image/svg+xml",
75878
76004
  ".ico": "image/x-icon"
75879
76005
  };
76006
+ var SPA_TAB_ROUTES = new Set([
76007
+ "summary",
76008
+ "agents",
76009
+ "accounts",
76010
+ "system",
76011
+ "memory",
76012
+ "connections",
76013
+ "schedule",
76014
+ "approvals"
76015
+ ]);
76016
+ function resolveDashboardFilePath(pathname) {
76017
+ const routeName = pathname.replace(/^\/+/, "").replace(/\/+$/, "");
76018
+ return pathname === "/" || SPA_TAB_ROUTES.has(routeName) ? "/index.html" : pathname;
76019
+ }
76020
+ function dashboardCacheControl(ext) {
76021
+ return ext === ".html" ? "no-cache, must-revalidate" : undefined;
76022
+ }
75880
76023
  function jsonResponse(data, status = 200) {
75881
76024
  return new Response(JSON.stringify(data), {
75882
76025
  status,
@@ -76114,6 +76257,9 @@ function parseRoute(pathname, method) {
76114
76257
  if (method === "GET" && pathname === "/api/notion-workspace") {
76115
76258
  return { handler: "getNotionWorkspace", params: {} };
76116
76259
  }
76260
+ if (method === "GET" && pathname === "/api/linear-agents") {
76261
+ return { handler: "getLinearAgents", params: {} };
76262
+ }
76117
76263
  if (method === "GET" && pathname === "/api/schedule") {
76118
76264
  return { handler: "getSchedule", params: {} };
76119
76265
  }
@@ -76205,8 +76351,8 @@ function startWebServer(config, port, hostname = "127.0.0.1", configPath) {
76205
76351
  return new Response("Unauthorized", { status: 401 });
76206
76352
  }
76207
76353
  const wsProto = req.headers.get("Sec-WebSocket-Protocol");
76208
- const headers = wsProto && wsProto.split(",").map((s) => s.trim()).includes("bearer") ? { "Sec-WebSocket-Protocol": "bearer" } : undefined;
76209
- const upgraded = server2.upgrade(req, headers ? { headers } : undefined);
76354
+ const headers2 = wsProto && wsProto.split(",").map((s) => s.trim()).includes("bearer") ? { "Sec-WebSocket-Protocol": "bearer" } : undefined;
76355
+ const upgraded = server2.upgrade(req, headers2 ? { headers: headers2 } : undefined);
76210
76356
  if (!upgraded) {
76211
76357
  return new Response("WebSocket upgrade failed", { status: 400 });
76212
76358
  }
@@ -76294,6 +76440,8 @@ function startWebServer(config, port, hostname = "127.0.0.1", configPath) {
76294
76440
  return (async () => jsonResponse(await handleGetMicrosoftAccounts(freshConfig())))();
76295
76441
  case "getNotionWorkspace":
76296
76442
  return jsonResponse(handleGetNotionWorkspace(freshConfig()));
76443
+ case "getLinearAgents":
76444
+ return jsonResponse(handleGetLinearAgents(freshConfig()));
76297
76445
  case "getSchedule":
76298
76446
  return (async () => jsonResponse(withStamp(await cachedSchedule())))();
76299
76447
  case "getApprovals":
@@ -76428,7 +76576,7 @@ function startWebServer(config, port, hostname = "127.0.0.1", configPath) {
76428
76576
  }
76429
76577
  }
76430
76578
  }
76431
- let filePath = pathname === "/" ? "/index.html" : pathname;
76579
+ const filePath = resolveDashboardFilePath(pathname);
76432
76580
  const fullPath = join47(uiDir, filePath);
76433
76581
  if (!existsSync50(fullPath)) {
76434
76582
  return new Response("Not Found", { status: 404 });
@@ -76446,9 +76594,11 @@ function startWebServer(config, port, hostname = "127.0.0.1", configPath) {
76446
76594
  const ext = extname(realFullPath);
76447
76595
  const contentType = MIME_TYPES[ext] ?? "application/octet-stream";
76448
76596
  const content = readFileSync46(realFullPath);
76449
- return new Response(content, {
76450
- headers: { "Content-Type": contentType }
76451
- });
76597
+ const headers = { "Content-Type": contentType };
76598
+ const cacheControl = dashboardCacheControl(ext);
76599
+ if (cacheControl)
76600
+ headers["Cache-Control"] = cacheControl;
76601
+ return new Response(content, { headers });
76452
76602
  },
76453
76603
  websocket: {
76454
76604
  open(_ws) {},
@@ -82019,7 +82169,7 @@ async function runNotionMcpLauncher(opts, runtime) {
82019
82169
  return exitCode;
82020
82170
  }
82021
82171
  function registerNotionMcpLauncherCommand(program3) {
82022
- program3.command("notion-mcp-launcher", { hidden: true }).option("--vault-key <key>", "Override the vault key holding the Notion integration token. " + "Defaults to `notion/integration-token`.", DEFAULT_VAULT_KEY).option("--mcp-version <semver>", "Override the @notionhq/notion-mcp-server version to spawn.").option("--heartbeat-path <path>", "Override the heartbeat file path. Default: /state/agent/notion-launcher.heartbeat.json").description("Internal \u2014 Notion MCP launcher. Fetches the integration token from the vault-broker and execs @notionhq/notion-mcp-server in stdio mode. RFC docs/rfcs/notion-integration.md PR 2.").action(async (opts) => {
82172
+ program3.command("notion-mcp-launcher", { hidden: true }).option("--vault-key <key>", "Override the vault key holding the Notion integration token. " + "Defaults to `notion/integration-token`.", DEFAULT_VAULT_KEY).option("--mcp-version <semver>", "Override the @notionhq/notion-mcp-server version to spawn.").option("--heartbeat-path <path>", "Override the heartbeat file path. Default: /state/agent/notion-launcher.heartbeat.json").description("Internal \u2014 Notion MCP launcher. Fetches the integration token from the vault-broker and execs @notionhq/notion-mcp-server in stdio mode. RFC reference/rfcs/notion-integration.md PR 2.").action(async (opts) => {
82023
82173
  const { getViaBrokerStructured: getViaBrokerStructured2 } = await Promise.resolve().then(() => (init_client(), exports_client));
82024
82174
  const code = await runNotionMcpLauncher(opts, {
82025
82175
  fetchToken: async () => {
@@ -82492,7 +82642,7 @@ function createNotionApiClient(opts) {
82492
82642
  // src/cli/notion.ts
82493
82643
  init_client();
82494
82644
  function registerNotionCommand(program3) {
82495
- const cmd = program3.command("notion").description("Notion integration operator helpers (list-dbs, test). See docs/rfcs/notion-integration.md.");
82645
+ const cmd = program3.command("notion").description("Notion integration operator helpers (list-dbs, test). See reference/rfcs/notion-integration.md.");
82496
82646
  cmd.command("list-dbs").description("List the databases the Notion integration can access. Output is a ready-to-paste YAML block for `notion_workspace.databases`.").option("--vault-key <key>", "Override the vault key holding the integration token.", "notion/integration-token").action(async (opts) => {
82497
82647
  const code = await runListDbs(opts);
82498
82648
  process.exit(code);
@@ -82682,7 +82832,7 @@ async function fetchToken(vaultKey) {
82682
82832
 
82683
82833
  // src/cli/apply.ts
82684
82834
  init_source();
82685
- import { accessSync as accessSync3, chownSync as chownSync7, constants as fsConstants6, copyFileSync as copyFileSync11, existsSync as existsSync74, mkdirSync as mkdirSync42, readFileSync as readFileSync63, readdirSync as readdirSync26, renameSync as renameSync14, writeFileSync as writeFileSync37 } from "node:fs";
82835
+ import { accessSync as accessSync3, chownSync as chownSync7, constants as fsConstants6, copyFileSync as copyFileSync11, existsSync as existsSync74, mkdirSync as mkdirSync43, readFileSync as readFileSync63, readdirSync as readdirSync26, renameSync as renameSync14, writeFileSync as writeFileSync38 } from "node:fs";
82686
82836
  import { mkdir as mkdir2 } from "node:fs/promises";
82687
82837
  import { spawnSync as childSpawnSync } from "node:child_process";
82688
82838
  import readline from "node:readline";
@@ -83071,16 +83221,97 @@ agents:
83071
83221
 
83072
83222
  // src/cli/apply.ts
83073
83223
  init_resolver();
83074
- import { dirname as dirname23, join as join75, resolve as resolve46 } from "node:path";
83224
+ import { dirname as dirname23, join as join76, resolve as resolve46 } from "node:path";
83075
83225
  import { homedir as homedir44 } from "node:os";
83076
83226
  import { execFileSync as execFileSync24 } from "node:child_process";
83077
83227
  init_vault();
83078
83228
  init_loader();
83079
83229
  init_loader();
83080
83230
 
83081
- // src/cli/update-prompt-hook.ts
83082
- import { existsSync as existsSync72, readFileSync as readFileSync62, writeFileSync as writeFileSync36, chmodSync as chmodSync10, mkdirSync as mkdirSync41 } from "node:fs";
83231
+ // src/agents/connection-health.ts
83232
+ import { mkdirSync as mkdirSync41, writeFileSync as writeFileSync36 } from "node:fs";
83083
83233
  import { join as join73 } from "node:path";
83234
+ var CONNECTION_HEALTH_FILENAME = "connection-health.json";
83235
+ async function computeAgentConnectionIssues(config, agentName, vaultAclReader) {
83236
+ const reqs = computeMcpSecretRequirements(config).filter((r) => r.agent === agentName);
83237
+ if (reqs.length === 0)
83238
+ return [];
83239
+ const agentsNeedingKey = new Map;
83240
+ for (const r of computeMcpSecretRequirements(config)) {
83241
+ for (const key of r.keys) {
83242
+ let set = agentsNeedingKey.get(key);
83243
+ if (!set) {
83244
+ set = new Set;
83245
+ agentsNeedingKey.set(key, set);
83246
+ }
83247
+ set.add(r.agent);
83248
+ }
83249
+ }
83250
+ const aclCache = new Map;
83251
+ const readKey = async (key) => {
83252
+ const cached = aclCache.get(key);
83253
+ if (cached)
83254
+ return cached;
83255
+ const r = await vaultAclReader(key);
83256
+ aclCache.set(key, r);
83257
+ return r;
83258
+ };
83259
+ const issues = [];
83260
+ for (const r of reqs) {
83261
+ for (const key of r.keys) {
83262
+ const acl = await readKey(key);
83263
+ const want = [...agentsNeedingKey.get(key) ?? new Set].sort();
83264
+ if (acl.kind === "unreachable")
83265
+ continue;
83266
+ if (acl.kind === "not_found") {
83267
+ issues.push({
83268
+ server: r.server,
83269
+ key,
83270
+ kind: "missing",
83271
+ detail: `MCP '${r.server}' needs vault key '${key}', but it is missing \u2014 configured but not authed`,
83272
+ fix: `switchroom vault set ${key} --allow ${want.join(",")} (then provide the value)`
83273
+ });
83274
+ continue;
83275
+ }
83276
+ if (!acl.allow.includes(agentName)) {
83277
+ const updated = [...new Set([...acl.allow, agentName])].sort().join(",");
83278
+ issues.push({
83279
+ server: r.server,
83280
+ key,
83281
+ kind: "acl",
83282
+ detail: `MCP '${r.server}' not on the vault ACL for '${key}' \u2014 broker will deny at runtime`,
83283
+ fix: `switchroom vault set ${key} --allow ${updated} (re-state the full list)`
83284
+ });
83285
+ }
83286
+ }
83287
+ }
83288
+ return issues;
83289
+ }
83290
+ function writeConnectionHealthFile(agentDir, health, deps) {
83291
+ const dir = join73(agentDir, ".claude");
83292
+ const path7 = join73(dir, CONNECTION_HEALTH_FILENAME);
83293
+ (deps?.mkdir ?? ((p, o) => mkdirSync41(p, o)))(dir, { recursive: true });
83294
+ (deps?.writeFile ?? ((p, d) => writeFileSync36(p, d)))(path7, JSON.stringify(health, null, 2) + `
83295
+ `);
83296
+ }
83297
+ async function refreshAgentConnectionHealth(config, agentName, agentDir, deps) {
83298
+ const now = deps.now ?? Date.now;
83299
+ let issues = [];
83300
+ try {
83301
+ issues = await computeAgentConnectionIssues(config, agentName, deps.vaultAclReader);
83302
+ } catch {
83303
+ issues = [];
83304
+ }
83305
+ const health = { computedAt: now(), issues };
83306
+ try {
83307
+ writeConnectionHealthFile(agentDir, health, deps);
83308
+ } catch {}
83309
+ return health;
83310
+ }
83311
+
83312
+ // src/cli/update-prompt-hook.ts
83313
+ import { existsSync as existsSync72, readFileSync as readFileSync62, writeFileSync as writeFileSync37, chmodSync as chmodSync10, mkdirSync as mkdirSync42 } from "node:fs";
83314
+ import { join as join74 } from "node:path";
83084
83315
  var HOOK_FILENAME = "update-card-on-prompt.sh";
83085
83316
  function updatePromptHookScript() {
83086
83317
  return `#!/bin/bash
@@ -83146,14 +83377,14 @@ exit 0
83146
83377
  `;
83147
83378
  }
83148
83379
  function installUpdatePromptHook(agentDir) {
83149
- const hooksDir = join73(agentDir, ".claude", "hooks");
83150
- mkdirSync41(hooksDir, { recursive: true });
83151
- const scriptPath = join73(hooksDir, HOOK_FILENAME);
83380
+ const hooksDir = join74(agentDir, ".claude", "hooks");
83381
+ mkdirSync42(hooksDir, { recursive: true });
83382
+ const scriptPath = join74(hooksDir, HOOK_FILENAME);
83152
83383
  const desired = updatePromptHookScript();
83153
83384
  let installed = false;
83154
83385
  const existing = existsSync72(scriptPath) ? readFileSync62(scriptPath, "utf-8") : "";
83155
83386
  if (existing !== desired) {
83156
- writeFileSync36(scriptPath, desired, { mode: 493 });
83387
+ writeFileSync37(scriptPath, desired, { mode: 493 });
83157
83388
  chmodSync10(scriptPath, 493);
83158
83389
  installed = true;
83159
83390
  } else {
@@ -83161,7 +83392,7 @@ function installUpdatePromptHook(agentDir) {
83161
83392
  chmodSync10(scriptPath, 493);
83162
83393
  } catch {}
83163
83394
  }
83164
- const settingsPath = join73(agentDir, ".claude", "settings.json");
83395
+ const settingsPath = join74(agentDir, ".claude", "settings.json");
83165
83396
  if (!existsSync72(settingsPath)) {
83166
83397
  return { scriptPath, settingsPath, installed };
83167
83398
  }
@@ -83198,7 +83429,7 @@ function installUpdatePromptHook(agentDir) {
83198
83429
  });
83199
83430
  hooks.UserPromptSubmit = list2;
83200
83431
  parsed.hooks = hooks;
83201
- writeFileSync36(settingsPath, JSON.stringify(parsed, null, 2) + `
83432
+ writeFileSync37(settingsPath, JSON.stringify(parsed, null, 2) + `
83202
83433
  `, { mode: 384 });
83203
83434
  installed = true;
83204
83435
  }
@@ -83263,14 +83494,14 @@ var EMBEDDED_EXAMPLES = {
83263
83494
  switchroom: switchroom_default,
83264
83495
  minimal: minimal_default
83265
83496
  };
83266
- var DEFAULT_COMPOSE_PATH2 = join75(homedir44(), ".switchroom", "compose", "docker-compose.yml");
83497
+ var DEFAULT_COMPOSE_PATH2 = join76(homedir44(), ".switchroom", "compose", "docker-compose.yml");
83267
83498
  var COMPOSE_PROJECT2 = "switchroom";
83268
83499
  function resolveVaultBindMountDir(homeDir, ctx) {
83269
83500
  const isCustomPath = ctx.migrationKind === "custom-path-skipped";
83270
83501
  if (isCustomPath && ctx.customVaultPath) {
83271
83502
  return dirname23(ctx.customVaultPath);
83272
83503
  }
83273
- return join75(homeDir, ".switchroom", "vault");
83504
+ return join76(homeDir, ".switchroom", "vault");
83274
83505
  }
83275
83506
  function inspectVaultBindMountDir(vaultDir) {
83276
83507
  if (!existsSync74(vaultDir))
@@ -83301,61 +83532,61 @@ function hasVaultRefs(value) {
83301
83532
  async function ensureHostMountSources(config) {
83302
83533
  const home2 = homedir44();
83303
83534
  const dirs = [
83304
- join75(home2, ".switchroom", "approvals"),
83305
- join75(home2, ".switchroom", "scheduler"),
83306
- join75(home2, ".switchroom", "logs"),
83307
- join75(home2, ".switchroom", "compose"),
83308
- join75(home2, ".switchroom", "broker-operator")
83535
+ join76(home2, ".switchroom", "approvals"),
83536
+ join76(home2, ".switchroom", "scheduler"),
83537
+ join76(home2, ".switchroom", "logs"),
83538
+ join76(home2, ".switchroom", "compose"),
83539
+ join76(home2, ".switchroom", "broker-operator")
83309
83540
  ];
83310
83541
  for (const name of Object.keys(config.agents)) {
83311
- dirs.push(join75(home2, ".switchroom", "agents", name));
83312
- dirs.push(join75(home2, ".switchroom", "logs", name));
83313
- dirs.push(join75(home2, ".claude", "projects", name));
83314
- dirs.push(join75(home2, ".switchroom", "audit", name));
83315
- if (existsSync74(join75(home2, ".switchroom-config"))) {
83316
- dirs.push(join75(home2, ".switchroom-config", "agents", name, "personal-skills"));
83542
+ dirs.push(join76(home2, ".switchroom", "agents", name));
83543
+ dirs.push(join76(home2, ".switchroom", "logs", name));
83544
+ dirs.push(join76(home2, ".claude", "projects", name));
83545
+ dirs.push(join76(home2, ".switchroom", "audit", name));
83546
+ if (existsSync74(join76(home2, ".switchroom-config"))) {
83547
+ dirs.push(join76(home2, ".switchroom-config", "agents", name, "personal-skills"));
83317
83548
  }
83318
83549
  }
83319
83550
  for (const dir of dirs) {
83320
83551
  await mkdir2(dir, { recursive: true });
83321
83552
  }
83322
- const autoUnlockPath = join75(home2, ".switchroom", "vault-auto-unlock");
83553
+ const autoUnlockPath = join76(home2, ".switchroom", "vault-auto-unlock");
83323
83554
  if (!existsSync74(autoUnlockPath)) {
83324
- writeFileSync37(autoUnlockPath, "", { mode: 384 });
83555
+ writeFileSync38(autoUnlockPath, "", { mode: 384 });
83325
83556
  }
83326
- const auditLogPath = join75(home2, ".switchroom", "vault-audit.log");
83557
+ const auditLogPath = join76(home2, ".switchroom", "vault-audit.log");
83327
83558
  if (!existsSync74(auditLogPath)) {
83328
- writeFileSync37(auditLogPath, "", { mode: 420 });
83559
+ writeFileSync38(auditLogPath, "", { mode: 420 });
83329
83560
  }
83330
- const grantsDbPath = join75(home2, ".switchroom", "vault-grants.db");
83561
+ const grantsDbPath = join76(home2, ".switchroom", "vault-grants.db");
83331
83562
  if (!existsSync74(grantsDbPath)) {
83332
- writeFileSync37(grantsDbPath, "", { mode: 384 });
83563
+ writeFileSync38(grantsDbPath, "", { mode: 384 });
83333
83564
  }
83334
- const hostdAuditLogPath = join75(home2, ".switchroom", "host-control-audit.log");
83565
+ const hostdAuditLogPath = join76(home2, ".switchroom", "host-control-audit.log");
83335
83566
  if (!existsSync74(hostdAuditLogPath)) {
83336
- writeFileSync37(hostdAuditLogPath, "", { mode: 420 });
83567
+ writeFileSync38(hostdAuditLogPath, "", { mode: 420 });
83337
83568
  }
83338
83569
  for (const name of Object.keys(config.agents)) {
83339
- const tokenPath = join75(home2, ".switchroom", "agents", name, ".vault-token");
83570
+ const tokenPath = join76(home2, ".switchroom", "agents", name, ".vault-token");
83340
83571
  if (!existsSync74(tokenPath)) {
83341
- writeFileSync37(tokenPath, "", { mode: 384 });
83572
+ writeFileSync38(tokenPath, "", { mode: 384 });
83342
83573
  }
83343
83574
  try {
83344
83575
  const uid = allocateAgentUid(name);
83345
83576
  chownSync7(tokenPath, uid, uid);
83346
83577
  } catch {}
83347
83578
  }
83348
- const fleetDir = join75(home2, ".switchroom", "fleet");
83579
+ const fleetDir = join76(home2, ".switchroom", "fleet");
83349
83580
  await mkdir2(fleetDir, { recursive: true });
83350
- const invariantsPath = join75(fleetDir, "switchroom-invariants.md");
83581
+ const invariantsPath = join76(fleetDir, "switchroom-invariants.md");
83351
83582
  const invariantsCanonical = renderFleetInvariants();
83352
83583
  const invariantsCurrent = existsSync74(invariantsPath) ? readFileSync63(invariantsPath, "utf-8") : null;
83353
83584
  if (invariantsCurrent !== invariantsCanonical) {
83354
- writeFileSync37(invariantsPath, invariantsCanonical, { mode: 420 });
83585
+ writeFileSync38(invariantsPath, invariantsCanonical, { mode: 420 });
83355
83586
  }
83356
- const fleetClaudePath = join75(fleetDir, "CLAUDE.md");
83587
+ const fleetClaudePath = join76(fleetDir, "CLAUDE.md");
83357
83588
  if (!existsSync74(fleetClaudePath)) {
83358
- writeFileSync37(fleetClaudePath, [
83589
+ writeFileSync38(fleetClaudePath, [
83359
83590
  "# Switchroom fleet defaults",
83360
83591
  "",
83361
83592
  "Operator-owned fleet brain. Every agent reads this via",
@@ -83438,16 +83669,16 @@ function detectAndReportLegacyGdriveSlots(vaultPath) {
83438
83669
  }
83439
83670
  function writeInstallTypeCache(homeDir = homedir44()) {
83440
83671
  const ctx = detectInstallType();
83441
- const dir = join75(homeDir, ".switchroom");
83442
- const out = join75(dir, "install-type.json");
83672
+ const dir = join76(homeDir, ".switchroom");
83673
+ const out = join76(dir, "install-type.json");
83443
83674
  const tmp = `${out}.tmp`;
83444
- mkdirSync42(dir, { recursive: true });
83675
+ mkdirSync43(dir, { recursive: true });
83445
83676
  const payload = {
83446
83677
  install_type: ctx.install_type,
83447
83678
  detected_at: new Date().toISOString(),
83448
83679
  source_paths: ctx.source_paths
83449
83680
  };
83450
- writeFileSync37(tmp, JSON.stringify(payload, null, 2), { mode: 420 });
83681
+ writeFileSync38(tmp, JSON.stringify(payload, null, 2), { mode: 420 });
83451
83682
  renameSync14(tmp, out);
83452
83683
  return out;
83453
83684
  }
@@ -83474,6 +83705,20 @@ Applying switchroom config...
83474
83705
  writeOut(source_default.gray(` (--only=${options.only}: scaffolding/aligning this agent only; ` + `compose still covers all ${allAgentNames.length})
83475
83706
  `));
83476
83707
  }
83708
+ const connHealthVaultAclReader = async (key) => {
83709
+ try {
83710
+ const { getViaBrokerStructured: getViaBrokerStructured2 } = await Promise.resolve().then(() => (init_client(), exports_client));
83711
+ const result = await getViaBrokerStructured2(key);
83712
+ if (result.kind === "ok") {
83713
+ return { kind: "ok", allow: result.entry.scope?.allow ?? [] };
83714
+ }
83715
+ if (result.kind === "not_found")
83716
+ return { kind: "not_found" };
83717
+ return { kind: "unreachable", msg: result.msg };
83718
+ } catch (err) {
83719
+ return { kind: "unreachable", msg: err.message };
83720
+ }
83721
+ };
83477
83722
  let scaffolded = 0;
83478
83723
  const failures = [];
83479
83724
 
@@ -83488,14 +83733,17 @@ Applying switchroom config...
83488
83733
  writeOut(source_default.green(` + ${name}`) + source_default.gray(` (${agentConfig.extends ?? "default"}) \u2014 ${detail}
83489
83734
  `));
83490
83735
  try {
83491
- installUpdatePromptHook(join75(agentsDir, name));
83736
+ installUpdatePromptHook(join76(agentsDir, name));
83492
83737
  } catch (hookErr) {
83493
83738
  writeOut(source_default.gray(` (update-prompt hook install failed for ${name}: ${hookErr.message})
83494
83739
  `));
83495
83740
  }
83741
+ await refreshAgentConnectionHealth(config, name, join76(agentsDir, name), {
83742
+ vaultAclReader: connHealthVaultAclReader
83743
+ });
83496
83744
  try {
83497
83745
  const uid = allocateAgentUid(name);
83498
- alignAgentUid(name, join75(agentsDir, name), uid, {
83746
+ alignAgentUid(name, join76(agentsDir, name), uid, {
83499
83747
  confirm: !options.nonInteractive,
83500
83748
  writeOut
83501
83749
  });
@@ -83503,12 +83751,12 @@ Applying switchroom config...
83503
83751
  const msg = alignErr.message;
83504
83752
  if (options.allowUnaligned) {
83505
83753
  writeOut(source_default.yellow(` ! could not chown ${name} state dir: ${msg}
83506
- ` + ` continuing because --allow-unaligned was passed; agent may fail on first write.
83754
+ continuing because --allow-unaligned was passed; agent may fail on first write.
83507
83755
  `));
83508
83756
  } else {
83509
83757
  writeOut(source_default.red(` x could not chown ${name} state dir: ${msg}
83510
- ` + ` The bind-mounted state dir must be owned by the container's UID or the agent will fail on first write.
83511
- ` + ` Fix: run \`switchroom apply\` from a TTY so it can prompt for sudo, OR run the suggested chown manually, OR re-run with --allow-unaligned to skip this check.
83758
+ The bind-mounted state dir must be owned by the container's UID or the agent will fail on first write.
83759
+ Fix: run \`switchroom apply\` from a TTY so it can prompt for sudo, OR run the suggested chown manually, OR re-run with --allow-unaligned to skip this check.
83512
83760
  `));
83513
83761
  throw new UidAlignmentAbort(`UID alignment failed for agent ${name}; aborting apply (pass --allow-unaligned to override).`);
83514
83762
  }
@@ -83532,14 +83780,14 @@ Applying switchroom config...
83532
83780
  for (const name of agentNames) {
83533
83781
  try {
83534
83782
  const uid = allocateAgentUid(name);
83535
- alignAgentUid(name, join75(agentsDir, name), uid, {
83783
+ alignAgentUid(name, join76(agentsDir, name), uid, {
83536
83784
  confirm: !options.nonInteractive,
83537
83785
  writeOut
83538
83786
  });
83539
83787
  } catch (alignErr) {
83540
83788
  const msg = alignErr.message;
83541
83789
  writeOut(source_default.yellow(` ! post-mount-source UID re-align failed for ${name}: ${msg}
83542
- ` + ` Agent may fail to write supervisor logs on first boot.
83790
+ Agent may fail to write supervisor logs on first boot.
83543
83791
  `));
83544
83792
  }
83545
83793
  }
@@ -83582,7 +83830,7 @@ Applying switchroom config...
83582
83830
  ];
83583
83831
  if (!acceptable.includes(postMigrationInspect.kind)) {
83584
83832
  writeErr(source_default.red(`Post-migration verification failed: state is ${postMigrationInspect.kind}
83585
- ` + `Expected one of: ${acceptable.join(", ")}
83833
+ Expected one of: ${acceptable.join(", ")}
83586
83834
  ` + `This is a switchroom bug \u2014 please file an issue with the apply log.
83587
83835
  `));
83588
83836
  process.exit(5);
@@ -83597,11 +83845,11 @@ Applying switchroom config...
83597
83845
  writeErr(source_default.red(`Vault directory ${vaultDir} contains unexpected files:
83598
83846
  ` + unknown.map((n) => ` - ${n}
83599
83847
  `).join("") + `Refusing to bind-mount: a docker bind-mount source is the
83600
- ` + `entire directory, so unexpected files would be visible inside
83601
- ` + `the broker container. Move them out, then re-run apply.
83602
- ` + `Known artifacts: vault.enc, vault.enc.bak, vault.enc.tmp,
83603
- ` + `vault.enc.lock (PID-file flock from saveVault), and
83604
- ` + `.vault.enc.<pid>.<ms>.tmp (atomicWriteFileSync sibling-tmp).
83848
+ entire directory, so unexpected files would be visible inside
83849
+ the broker container. Move them out, then re-run apply.
83850
+ Known artifacts: vault.enc, vault.enc.bak, vault.enc.tmp,
83851
+ vault.enc.lock (PID-file flock from saveVault), and
83852
+ .vault.enc.<pid>.<ms>.tmp (atomicWriteFileSync sibling-tmp).
83605
83853
  `));
83606
83854
  process.exit(6);
83607
83855
  }
@@ -83620,8 +83868,8 @@ Applying switchroom config...
83620
83868
  Wrote `) + displayComposePath + source_default.gray(` (${composeBytes} bytes)
83621
83869
  `));
83622
83870
  writeOut(`Bring the fleet up with:
83623
- ` + ` docker compose -p ${COMPOSE_PROJECT2} -f ${displayComposePath} pull && \\
83624
- ` + ` docker compose -p ${COMPOSE_PROJECT2} -f ${displayComposePath} up -d --remove-orphans
83871
+ docker compose -p ${COMPOSE_PROJECT2} -f ${displayComposePath} pull && \\
83872
+ docker compose -p ${COMPOSE_PROJECT2} -f ${displayComposePath} up -d --remove-orphans
83625
83873
  `);
83626
83874
  writeOut(source_default.gray(` (If pull returns 401, login to ghcr.io first: see docs/operators/install.md#ghcr-auth)
83627
83875
  `));
@@ -83680,7 +83928,7 @@ function copyExampleConfig2(name) {
83680
83928
  }
83681
83929
  const embedded = EMBEDDED_EXAMPLES[name];
83682
83930
  if (embedded !== undefined) {
83683
- writeFileSync37(dest, embedded, { encoding: "utf8" });
83931
+ writeFileSync38(dest, embedded, { encoding: "utf8" });
83684
83932
  console.log(source_default.green(`Copied ${name}.yaml -> switchroom.yaml`));
83685
83933
  return;
83686
83934
  }
@@ -83696,7 +83944,7 @@ function findUnwritableAgentDirs(config, opts) {
83696
83944
  const targets = opts.only ? [opts.only] : Object.keys(config.agents ?? {});
83697
83945
  const unwritable = [];
83698
83946
  for (const name of targets) {
83699
- const startSh = join75(agentsDir, name, "start.sh");
83947
+ const startSh = join76(agentsDir, name, "start.sh");
83700
83948
  if (!existsSync74(startSh))
83701
83949
  continue;
83702
83950
  try {
@@ -83743,7 +83991,8 @@ function reexecUnderSudo() {
83743
83991
  if (errCode === "ENOENT") {
83744
83992
  process.stderr.write(source_default.red(`
83745
83993
  ERROR: sudo not found on PATH. Re-run as root, or use
83746
- ` + " `switchroom apply --compose-only` to skip the per-agent\n" + ` scaffold refresh entirely (compose file still regenerates).
83994
+ \`switchroom apply --compose-only\` to skip the per-agent
83995
+ scaffold refresh entirely (compose file still regenerates).
83747
83996
  `));
83748
83997
  process.exit(1);
83749
83998
  }
@@ -83756,7 +84005,7 @@ ERROR: failed to spawn sudo: ${result.error.message}
83756
84005
  process.exit(result.status ?? 1);
83757
84006
  }
83758
84007
  function registerApplyCommand(program3) {
83759
- program3.command("apply").description("Apply switchroom.yaml: scaffold every agent and (re)generate the compose file. Run `docker compose -f <path> up -d` afterwards to bring the fleet up.").option("--build-local [context]", "Dev-only: emit `build:` blocks instead of GHCR `image:` refs so `docker compose up --build` rebuilds from in-tree Dockerfiles. Optional context path (defaults to cwd).").option("-o, --out <path>", `Override compose output path (default: ${DEFAULT_COMPOSE_PATH2}).`).option("--example <name>", "Copy an example config into cwd before applying (e.g., 'switchroom' or 'minimal').").option("--non-interactive", "Skip prompts (e.g. sudo-chown explainer for UID alignment). Use in CI / scripts.").option("--allow-unaligned", "Treat UID-alignment chown failures as warnings instead of hard errors. Unsafe: an unaligned state dir will break the agent on first write. Use only if you know you'll fix ownership out-of-band.").option("--only <agent>", "Restrict scaffold + UID-alignment to a single agent (compose still covers the full fleet). Use during a v0.6 \u2192 v0.7 cutover to migrate agents one at a time without breaking the systemd-managed siblings.").option("--compose-only", "Skip the per-agent scaffold loop entirely; only (re)generate the compose file. Use in CI / scripts that can't chown into per-agent state dirs (mode 0700, owned by per-agent UIDs in v0.7+ docker mode). The full apply still runs preflight + emits compose; only the start.sh / .mcp.json / settings.json refresh is skipped.").option("--no-doctor", "Skip the post-apply doctor sweep that surfaces stale start.sh / unhealthy agents (#929). Default: doctor runs after a successful scaffold so the operator sees whether the v0.7+ post-Phase-4 supervisor block is now in place. `switchroom update` passes this internally to avoid running doctor twice (it has its own doctor step).").addOption(new Option("--channel <c>", "Override the resolved `release` block for this apply run: " + "follow the named channel pointer (dev|rc|latest). Mutually " + "exclusive with --pin.").choices(["dev", "rc", "latest"]).conflicts("pin")).addOption(new Option("--pin <p>", "Override the resolved `release` block for this apply run: " + "pin to a specific build (sha-<7-40 hex> or v<semver>). " + "Mutually exclusive with --channel.").conflicts("channel")).option("--print-sudo-cmd", "Print the sudo invocation that `apply` would re-exec itself with when escalation is needed, then exit. Operators who want to script the escalation themselves (CI, custom orchestration) can capture this. Note: tokens are space-separated and not shell-quoted; re-quote arguments if pasting into a shell.").addOption(new Option("--skip-self-elevate").default(false).hideHelp()).action(async (opts) => {
84008
+ program3.command("apply").description("Apply switchroom.yaml: scaffold every agent and (re)generate the compose file. Run `docker compose -f <path> up -d` afterwards to bring the fleet up.").option("--build-local [context]", "Dev-only: emit `build:` blocks instead of GHCR `image:` refs so `docker compose up --build` rebuilds from in-tree Dockerfiles. Optional context path (defaults to cwd).").option("-o, --out <path>", `Override compose output path (default: ${DEFAULT_COMPOSE_PATH2}).`).option("--example <name>", "Copy an example config into cwd before applying (e.g., 'switchroom' or 'minimal').").option("--non-interactive", "Skip prompts (e.g. sudo-chown explainer for UID alignment). Use in CI / scripts.").option("--allow-unaligned", "Treat UID-alignment chown failures as warnings instead of hard errors. Unsafe: an unaligned state dir will break the agent on first write. Use only if you know you'll fix ownership out-of-band.").option("--only <agent>", "Restrict scaffold + UID-alignment to a single agent (compose still covers the full fleet). Use during a v0.6 \u2192 v0.7 cutover to migrate agents one at a time without breaking the systemd-managed siblings.").option("--compose-only", "Skip the per-agent scaffold loop entirely; only (re)generate the compose file. Use in CI / scripts that can't chown into per-agent state dirs (mode 0700, owned by per-agent UIDs in v0.7+ docker mode). The full apply still runs preflight + emits compose; only the start.sh / .mcp.json / settings.json refresh is skipped.").option("--no-doctor", "Skip the post-apply doctor sweep that surfaces stale start.sh / unhealthy agents (#929). Default: doctor runs after a successful scaffold so the operator sees whether the v0.7+ post-Phase-4 supervisor block is now in place. `switchroom update` passes this internally to avoid running doctor twice (it has its own doctor step).").addOption(new Option("--channel <c>", "Override the resolved `release` block for this apply run: follow the named channel pointer (dev|rc|latest). Mutually exclusive with --pin.").choices(["dev", "rc", "latest"]).conflicts("pin")).addOption(new Option("--pin <p>", "Override the resolved `release` block for this apply run: pin to a specific build (sha-<7-40 hex> or v<semver>). Mutually exclusive with --channel.").conflicts("channel")).option("--print-sudo-cmd", "Print the sudo invocation that `apply` would re-exec itself with when escalation is needed, then exit. Operators who want to script the escalation themselves (CI, custom orchestration) can capture this. Note: tokens are space-separated and not shell-quoted; re-quote arguments if pasting into a shell.").addOption(new Option("--skip-self-elevate").default(false).hideHelp()).action(async (opts) => {
83760
84009
  try {
83761
84010
  if (opts.example) {
83762
84011
  copyExampleConfig2(opts.example);
@@ -83782,7 +84031,7 @@ function registerApplyCommand(program3) {
83782
84031
  const canPrompt = !opts.nonInteractive && process.stdin.isTTY === true;
83783
84032
  const proceed = canPrompt ? await confirmYesNo(`Re-exec under sudo to refresh them? [Y/n] `) : true;
83784
84033
  if (!proceed) {
83785
- process.stderr.write(source_default.gray("Skipping. Re-run with --compose-only to regenerate compose " + `without touching per-agent files.
84034
+ process.stderr.write(source_default.gray(`Skipping. Re-run with --compose-only to regenerate compose without touching per-agent files.
83786
84035
  `));
83787
84036
  process.exit(0);
83788
84037
  }
@@ -83876,7 +84125,7 @@ function runRedactStdin() {
83876
84125
 
83877
84126
  // src/cli/status-ask.ts
83878
84127
  import { readFileSync as readFileSync64, existsSync as existsSync75, readdirSync as readdirSync27 } from "node:fs";
83879
- import { join as join76 } from "node:path";
84128
+ import { join as join77 } from "node:path";
83880
84129
  import { homedir as homedir45 } from "node:os";
83881
84130
 
83882
84131
  // src/status-ask/report.ts
@@ -84212,7 +84461,7 @@ function resolveSources(explicitPath) {
84212
84461
  const config = loadConfig();
84213
84462
  agentsDir = resolveAgentsDir(config);
84214
84463
  } catch {
84215
- agentsDir = join76(homedir45(), ".switchroom", "agents");
84464
+ agentsDir = join77(homedir45(), ".switchroom", "agents");
84216
84465
  }
84217
84466
  if (!existsSync75(agentsDir))
84218
84467
  return [];
@@ -84224,7 +84473,7 @@ function resolveSources(explicitPath) {
84224
84473
  return [];
84225
84474
  }
84226
84475
  for (const name of entries) {
84227
- const path8 = join76(agentsDir, name, "runtime-metrics.jsonl");
84476
+ const path8 = join77(agentsDir, name, "runtime-metrics.jsonl");
84228
84477
  if (existsSync75(path8)) {
84229
84478
  sources.push({ path: path8, agent: name });
84230
84479
  }
@@ -84253,7 +84502,7 @@ import {
84253
84502
  closeSync as closeSync13,
84254
84503
  existsSync as existsSync76,
84255
84504
  fsyncSync as fsyncSync6,
84256
- mkdirSync as mkdirSync43,
84505
+ mkdirSync as mkdirSync44,
84257
84506
  openSync as openSync13,
84258
84507
  readdirSync as readdirSync28,
84259
84508
  readFileSync as readFileSync65,
@@ -84262,34 +84511,34 @@ import {
84262
84511
  unlinkSync as unlinkSync14,
84263
84512
  writeSync as writeSync8
84264
84513
  } from "node:fs";
84265
- import { join as join77, resolve as resolve47 } from "node:path";
84514
+ import { join as join78, resolve as resolve47 } from "node:path";
84266
84515
  var STAGING_SUBDIR = ".staging";
84267
84516
  function overlayPathsFor(agent, opts = {}) {
84268
84517
  const base = opts.root ? resolve47(opts.root, agent) : resolve47(resolveDualPath(`~/.switchroom/agents/${agent}`));
84269
- const scheduleDir = join77(base, "schedule.d");
84270
- const scheduleStagingDir = join77(scheduleDir, STAGING_SUBDIR);
84271
- const skillsDir = join77(base, "skills.d");
84272
- const skillsStagingDir = join77(skillsDir, STAGING_SUBDIR);
84518
+ const scheduleDir = join78(base, "schedule.d");
84519
+ const scheduleStagingDir = join78(scheduleDir, STAGING_SUBDIR);
84520
+ const skillsDir = join78(base, "skills.d");
84521
+ const skillsStagingDir = join78(skillsDir, STAGING_SUBDIR);
84273
84522
  return {
84274
84523
  agentRoot: base,
84275
84524
  scheduleDir,
84276
84525
  scheduleStagingDir,
84277
84526
  skillsDir,
84278
84527
  skillsStagingDir,
84279
- lockPath: join77(base, ".lock"),
84528
+ lockPath: join78(base, ".lock"),
84280
84529
  stagingDir: scheduleStagingDir
84281
84530
  };
84282
84531
  }
84283
84532
  function ensureDirs(paths) {
84284
- mkdirSync43(paths.scheduleDir, { recursive: true });
84285
- mkdirSync43(paths.scheduleStagingDir, { recursive: true });
84533
+ mkdirSync44(paths.scheduleDir, { recursive: true });
84534
+ mkdirSync44(paths.scheduleStagingDir, { recursive: true });
84286
84535
  }
84287
84536
  function ensureSkillsDirs(paths) {
84288
- mkdirSync43(paths.skillsDir, { recursive: true });
84289
- mkdirSync43(paths.skillsStagingDir, { recursive: true });
84537
+ mkdirSync44(paths.skillsDir, { recursive: true });
84538
+ mkdirSync44(paths.skillsStagingDir, { recursive: true });
84290
84539
  }
84291
84540
  function withAgentLock(paths, fn) {
84292
- mkdirSync43(paths.agentRoot, { recursive: true });
84541
+ mkdirSync44(paths.agentRoot, { recursive: true });
84293
84542
  const start = Date.now();
84294
84543
  const TIMEOUT_MS = 5000;
84295
84544
  let fd = null;
@@ -84330,8 +84579,8 @@ function writeOverlayEntry(agent, slug, yamlText, opts = {}) {
84330
84579
  const paths = overlayPathsFor(agent, opts);
84331
84580
  return withAgentLock(paths, () => {
84332
84581
  ensureDirs(paths);
84333
- const stagingPath = join77(paths.scheduleStagingDir, `${slug}.yaml`);
84334
- const finalPath = join77(paths.scheduleDir, `${slug}.yaml`);
84582
+ const stagingPath = join78(paths.scheduleStagingDir, `${slug}.yaml`);
84583
+ const finalPath = join78(paths.scheduleDir, `${slug}.yaml`);
84335
84584
  const fd = openSync13(stagingPath, "w", 384);
84336
84585
  try {
84337
84586
  writeSync8(fd, yamlText);
@@ -84347,8 +84596,8 @@ function writeSkillsOverlayEntry(agent, slug, yamlText, opts = {}) {
84347
84596
  const paths = overlayPathsFor(agent, opts);
84348
84597
  return withAgentLock(paths, () => {
84349
84598
  ensureSkillsDirs(paths);
84350
- const stagingPath = join77(paths.skillsStagingDir, `${slug}.yaml`);
84351
- const finalPath = join77(paths.skillsDir, `${slug}.yaml`);
84599
+ const stagingPath = join78(paths.skillsStagingDir, `${slug}.yaml`);
84600
+ const finalPath = join78(paths.skillsDir, `${slug}.yaml`);
84352
84601
  const fd = openSync13(stagingPath, "w", 384);
84353
84602
  try {
84354
84603
  writeSync8(fd, yamlText);
@@ -84363,7 +84612,7 @@ function writeSkillsOverlayEntry(agent, slug, yamlText, opts = {}) {
84363
84612
  function deleteSkillsOverlayEntry(agent, slug, opts = {}) {
84364
84613
  const paths = overlayPathsFor(agent, opts);
84365
84614
  return withAgentLock(paths, () => {
84366
- const finalPath = join77(paths.skillsDir, `${slug}.yaml`);
84615
+ const finalPath = join78(paths.skillsDir, `${slug}.yaml`);
84367
84616
  if (!existsSync76(finalPath))
84368
84617
  return false;
84369
84618
  unlinkSync14(finalPath);
@@ -84378,7 +84627,7 @@ function listSkillsOverlayEntries(agent, opts = {}) {
84378
84627
  for (const name of readdirSync28(paths.skillsDir)) {
84379
84628
  if (!/\.ya?ml$/i.test(name))
84380
84629
  continue;
84381
- const full = join77(paths.skillsDir, name);
84630
+ const full = join78(paths.skillsDir, name);
84382
84631
  try {
84383
84632
  const raw = readFileSync65(full, "utf-8");
84384
84633
  const slug = name.replace(/\.ya?ml$/i, "");
@@ -84390,7 +84639,7 @@ function listSkillsOverlayEntries(agent, opts = {}) {
84390
84639
  function deleteOverlayEntry(agent, slug, opts = {}) {
84391
84640
  const paths = overlayPathsFor(agent, opts);
84392
84641
  return withAgentLock(paths, () => {
84393
- const finalPath = join77(paths.scheduleDir, `${slug}.yaml`);
84642
+ const finalPath = join78(paths.scheduleDir, `${slug}.yaml`);
84394
84643
  if (!existsSync76(finalPath))
84395
84644
  return false;
84396
84645
  unlinkSync14(finalPath);
@@ -84405,7 +84654,7 @@ function listOverlayEntries(agent, opts = {}) {
84405
84654
  for (const name of readdirSync28(paths.scheduleDir)) {
84406
84655
  if (!/\.ya?ml$/i.test(name))
84407
84656
  continue;
84408
- const full = join77(paths.scheduleDir, name);
84657
+ const full = join78(paths.scheduleDir, name);
84409
84658
  try {
84410
84659
  const raw = readFileSync65(full, "utf-8");
84411
84660
  const slug = name.replace(/\.ya?ml$/i, "");
@@ -84552,25 +84801,25 @@ import {
84552
84801
  closeSync as closeSync14,
84553
84802
  existsSync as existsSync77,
84554
84803
  fsyncSync as fsyncSync7,
84555
- mkdirSync as mkdirSync44,
84804
+ mkdirSync as mkdirSync45,
84556
84805
  openSync as openSync14,
84557
84806
  readdirSync as readdirSync29,
84558
84807
  readFileSync as readFileSync66,
84559
84808
  renameSync as renameSync16,
84560
84809
  unlinkSync as unlinkSync15,
84561
- writeFileSync as writeFileSync38,
84810
+ writeFileSync as writeFileSync39,
84562
84811
  writeSync as writeSync9
84563
84812
  } from "node:fs";
84564
- import { join as join78 } from "node:path";
84813
+ import { join as join79 } from "node:path";
84565
84814
  import { randomBytes as randomBytes14 } from "node:crypto";
84566
84815
  var STAGE_ID_PREFIX = "cap_";
84567
84816
  function pendingDir(agent, opts = {}) {
84568
84817
  const paths = overlayPathsFor(agent, opts);
84569
- return join78(paths.scheduleDir, ".pending");
84818
+ return join79(paths.scheduleDir, ".pending");
84570
84819
  }
84571
84820
  function ensurePendingDir(agent, opts = {}) {
84572
84821
  const dir = pendingDir(agent, opts);
84573
- mkdirSync44(dir, { recursive: true });
84822
+ mkdirSync45(dir, { recursive: true });
84574
84823
  return dir;
84575
84824
  }
84576
84825
  function newStageId() {
@@ -84579,8 +84828,8 @@ function newStageId() {
84579
84828
  function stagePendingScheduleEntry(opts) {
84580
84829
  const dir = ensurePendingDir(opts.agent, { root: opts.root });
84581
84830
  const stageId = opts.stageId ?? newStageId();
84582
- const yamlPath = join78(dir, `${stageId}.yaml`);
84583
- const metaPath = join78(dir, `${stageId}.meta.json`);
84831
+ const yamlPath = join79(dir, `${stageId}.yaml`);
84832
+ const metaPath = join79(dir, `${stageId}.meta.json`);
84584
84833
  const meta = {
84585
84834
  v: 1,
84586
84835
  stage_id: stageId,
@@ -84601,7 +84850,7 @@ function stagePendingScheduleEntry(opts) {
84601
84850
  }
84602
84851
  renameSync16(yamlTmp, yamlPath);
84603
84852
  }
84604
- writeFileSync38(metaPath, JSON.stringify(meta, null, 2) + `
84853
+ writeFileSync39(metaPath, JSON.stringify(meta, null, 2) + `
84605
84854
  `, { mode: 384 });
84606
84855
  return { stageId, yamlPath, metaPath };
84607
84856
  }
@@ -84614,8 +84863,8 @@ function listPendingScheduleEntries(agent, opts = {}) {
84614
84863
  if (!name.endsWith(".meta.json"))
84615
84864
  continue;
84616
84865
  const stageId = name.slice(0, -".meta.json".length);
84617
- const metaPath = join78(dir, name);
84618
- const yamlPath = join78(dir, `${stageId}.yaml`);
84866
+ const metaPath = join79(dir, name);
84867
+ const yamlPath = join79(dir, `${stageId}.yaml`);
84619
84868
  if (!existsSync77(yamlPath))
84620
84869
  continue;
84621
84870
  try {
@@ -84634,7 +84883,7 @@ function commitPendingScheduleEntry(opts) {
84634
84883
  return { committed: false, reason: "not_found" };
84635
84884
  const slug = match.meta.entry.name ?? match.stageId;
84636
84885
  const paths = overlayPathsFor(opts.agent, { root: opts.root });
84637
- const finalPath = join78(paths.scheduleDir, `${slug}.yaml`);
84886
+ const finalPath = join79(paths.scheduleDir, `${slug}.yaml`);
84638
84887
  if (existsSync77(finalPath)) {
84639
84888
  return { committed: false, reason: "slug_collision" };
84640
84889
  }
@@ -85267,7 +85516,7 @@ var import_yaml21 = __toESM(require_dist(), 1);
85267
85516
  import { existsSync as existsSync79 } from "node:fs";
85268
85517
  init_reconcile_default_skills();
85269
85518
  var import_yaml22 = __toESM(require_dist(), 1);
85270
- import { join as join79 } from "node:path";
85519
+ import { join as join80 } from "node:path";
85271
85520
  var MAX_SKILLS_PER_AGENT = 20;
85272
85521
  var V1_ALLOWED_SOURCE_PREFIX = "bundled:";
85273
85522
  function exitCodeFor2(code) {
@@ -85342,7 +85591,7 @@ function skillInstall(opts) {
85342
85591
  return err("E_SKILL_QUOTA_EXCEEDED", `agent ${agent} already has ${used} overlay-installed skills (cap ${MAX_SKILLS_PER_AGENT})`);
85343
85592
  }
85344
85593
  const poolDir = opts.bundledSkillsPoolDir ?? getBundledSkillsPoolDir();
85345
- const skillPath = join79(poolDir, skillName);
85594
+ const skillPath = join80(poolDir, skillName);
85346
85595
  if (!existsSync79(skillPath)) {
85347
85596
  return err("E_SKILL_NOT_FOUND", `bundled skill not found at ${skillPath}. The operator needs to ` + `place the skill at this path before the agent can opt in.`);
85348
85597
  }
@@ -85509,7 +85758,7 @@ import {
85509
85758
  closeSync as closeSync15,
85510
85759
  existsSync as existsSync80,
85511
85760
  lstatSync as lstatSync9,
85512
- mkdirSync as mkdirSync45,
85761
+ mkdirSync as mkdirSync46,
85513
85762
  mkdtempSync as mkdtempSync5,
85514
85763
  openSync as openSync15,
85515
85764
  readFileSync as readFileSync68,
@@ -85518,10 +85767,10 @@ import {
85518
85767
  renameSync as renameSync17,
85519
85768
  rmSync as rmSync16,
85520
85769
  statSync as statSync32,
85521
- writeFileSync as writeFileSync39
85770
+ writeFileSync as writeFileSync40
85522
85771
  } from "node:fs";
85523
85772
  import { tmpdir as tmpdir5, homedir as homedir46 } from "node:os";
85524
- import { dirname as dirname24, join as join80, relative as relative2, resolve as resolve48 } from "node:path";
85773
+ import { dirname as dirname24, join as join81, relative as relative2, resolve as resolve48 } from "node:path";
85525
85774
  import { spawnSync as spawnSync12 } from "node:child_process";
85526
85775
 
85527
85776
  // src/cli/skill-common.ts
@@ -85715,7 +85964,7 @@ function scanForClaudeP2(content) {
85715
85964
  function resolveSkillsPoolDir2(override) {
85716
85965
  const raw = override ?? "~/.switchroom/skills";
85717
85966
  if (raw.startsWith("~/")) {
85718
- return join80(homedir46(), raw.slice(2));
85967
+ return join81(homedir46(), raw.slice(2));
85719
85968
  }
85720
85969
  if (raw === "~")
85721
85970
  return homedir46();
@@ -85754,7 +86003,7 @@ function loadFromDir(dir) {
85754
86003
  const walk2 = (sub) => {
85755
86004
  const entries = readdirSync30(sub, { withFileTypes: true });
85756
86005
  for (const ent of entries) {
85757
- const full = join80(sub, ent.name);
86006
+ const full = join81(sub, ent.name);
85758
86007
  const rel = relative2(abs, full);
85759
86008
  if (ent.isSymbolicLink()) {
85760
86009
  fail3(`refusing to read symlink inside --from dir: ${rel}`);
@@ -85789,7 +86038,7 @@ function loadFromTarball(tarPath) {
85789
86038
  fail3(`tarball contains disallowed path: ${JSON.stringify(entry)} \u2014 ` + `refusing to extract before any file is written`);
85790
86039
  }
85791
86040
  }
85792
- const staging = mkdtempSync5(join80(tmpdir5(), "skill-apply-extract-"));
86041
+ const staging = mkdtempSync5(join81(tmpdir5(), "skill-apply-extract-"));
85793
86042
  try {
85794
86043
  const flags = isGz ? ["-xzf"] : ["-xf"];
85795
86044
  const r = spawnSync12("tar", [
@@ -85875,10 +86124,10 @@ function validatePayload(name, files) {
85875
86124
  errors2.push(`${path8} fails \`bash -n\` syntax check: ${(r.stderr ?? "").trim()}`);
85876
86125
  }
85877
86126
  } else if (PY_SCRIPT_RE2.test(path8)) {
85878
- const tmp = mkdtempSync5(join80(tmpdir5(), "skill-apply-py-"));
85879
- const tmpPy = join80(tmp, "check.py");
86127
+ const tmp = mkdtempSync5(join81(tmpdir5(), "skill-apply-py-"));
86128
+ const tmpPy = join81(tmp, "check.py");
85880
86129
  try {
85881
- writeFileSync39(tmpPy, content);
86130
+ writeFileSync40(tmpPy, content);
85882
86131
  const r = spawnSync12("python3", ["-m", "py_compile", tmpPy], {
85883
86132
  encoding: "utf-8"
85884
86133
  });
@@ -85899,7 +86148,7 @@ function diffSummary(currentDir, files) {
85899
86148
  if (existsSync80(currentDir)) {
85900
86149
  const walk2 = (sub) => {
85901
86150
  for (const ent of readdirSync30(sub, { withFileTypes: true })) {
85902
- const full = join80(sub, ent.name);
86151
+ const full = join81(sub, ent.name);
85903
86152
  const rel = relative2(currentDir, full);
85904
86153
  if (ent.isDirectory()) {
85905
86154
  walk2(full);
@@ -85933,9 +86182,9 @@ function diffSummary(currentDir, files) {
85933
86182
  }
85934
86183
  function writePayload(poolDir, name, files) {
85935
86184
  if (!existsSync80(poolDir)) {
85936
- mkdirSync45(poolDir, { recursive: true, mode: 493 });
86185
+ mkdirSync46(poolDir, { recursive: true, mode: 493 });
85937
86186
  }
85938
- const target = join80(poolDir, name);
86187
+ const target = join81(poolDir, name);
85939
86188
  let targetIsSymlink = false;
85940
86189
  try {
85941
86190
  const st = lstatSync9(target);
@@ -85946,15 +86195,15 @@ function writePayload(poolDir, name, files) {
85946
86195
  if (targetIsSymlink) {
85947
86196
  fail3(`refusing to overwrite symlink at ${target}; investigate manually`);
85948
86197
  }
85949
- const staging = mkdtempSync5(join80(poolDir, `.skill-apply-stage-${name}-`));
86198
+ const staging = mkdtempSync5(join81(poolDir, `.skill-apply-stage-${name}-`));
85950
86199
  let oldRename = null;
85951
86200
  try {
85952
86201
  for (const [path8, content] of Object.entries(files)) {
85953
- const full = join80(staging, path8);
85954
- mkdirSync45(dirname24(full), { recursive: true, mode: 493 });
86202
+ const full = join81(staging, path8);
86203
+ mkdirSync46(dirname24(full), { recursive: true, mode: 493 });
85955
86204
  const fd = openSync15(full, "wx");
85956
86205
  try {
85957
- writeFileSync39(fd, content);
86206
+ writeFileSync40(fd, content);
85958
86207
  } finally {
85959
86208
  closeSync15(fd);
85960
86209
  }
@@ -86028,7 +86277,7 @@ function registerSkillCommand(program3) {
86028
86277
  }
86029
86278
  const config = loadConfig();
86030
86279
  const poolDir = resolveSkillsPoolDir2(config.switchroom?.skills_dir);
86031
- const currentDir = join80(poolDir, name);
86280
+ const currentDir = join81(poolDir, name);
86032
86281
  console.log(source_default.bold(`Skill: ${name}`) + source_default.gray(` (${Object.keys(files).length} files, ${sumBytes(files)} bytes)`));
86033
86282
  console.log(source_default.bold("Diff vs current pool content:"));
86034
86283
  console.log(diffSummary(currentDir, files));
@@ -86061,7 +86310,7 @@ import {
86061
86310
  closeSync as closeSync16,
86062
86311
  existsSync as existsSync81,
86063
86312
  lstatSync as lstatSync10,
86064
- mkdirSync as mkdirSync46,
86313
+ mkdirSync as mkdirSync47,
86065
86314
  mkdtempSync as mkdtempSync6,
86066
86315
  openSync as openSync16,
86067
86316
  readFileSync as readFileSync69,
@@ -86070,9 +86319,9 @@ import {
86070
86319
  rmSync as rmSync17,
86071
86320
  statSync as statSync33,
86072
86321
  utimesSync,
86073
- writeFileSync as writeFileSync40
86322
+ writeFileSync as writeFileSync41
86074
86323
  } from "node:fs";
86075
- import { dirname as dirname25, join as join81, relative as relative3, resolve as resolve49 } from "node:path";
86324
+ import { dirname as dirname25, join as join82, relative as relative3, resolve as resolve49 } from "node:path";
86076
86325
  import { homedir as homedir47, tmpdir as tmpdir6 } from "node:os";
86077
86326
  import { spawnSync as spawnSync13 } from "node:child_process";
86078
86327
  init_helpers();
@@ -86083,10 +86332,10 @@ var TRASH_TTL_MS = 24 * 60 * 60 * 1000;
86083
86332
  var PERSONAL_SKILLS_SUBPATH = "personal-skills";
86084
86333
  function resolveConfigSkillsDir(agent) {
86085
86334
  const override = process.env.SWITCHROOM_CONFIG_DIR;
86086
- const candidate = override ? resolve49(override) : join81(homedir47(), ".switchroom-config");
86335
+ const candidate = override ? resolve49(override) : join82(homedir47(), ".switchroom-config");
86087
86336
  if (!existsSync81(candidate))
86088
86337
  return null;
86089
- return join81(candidate, "agents", agent, PERSONAL_SKILLS_SUBPATH);
86338
+ return join82(candidate, "agents", agent, PERSONAL_SKILLS_SUBPATH);
86090
86339
  }
86091
86340
  var MIRROR_PRIOR_TTL_MS = 24 * 60 * 60 * 1000;
86092
86341
  function sweepMirrorPriors(configSkillsRoot) {
@@ -86104,7 +86353,7 @@ function sweepMirrorPriors(configSkillsRoot) {
86104
86353
  if (now - ts < MIRROR_PRIOR_TTL_MS)
86105
86354
  continue;
86106
86355
  try {
86107
- rmSync17(join81(configSkillsRoot, ent), { recursive: true, force: true });
86356
+ rmSync17(join82(configSkillsRoot, ent), { recursive: true, force: true });
86108
86357
  } catch {}
86109
86358
  }
86110
86359
  } catch {}
@@ -86113,7 +86362,7 @@ function mirrorToConfigRepo(agent, name, liveSkillDir) {
86113
86362
  const configSkillsRoot = resolveConfigSkillsDir(agent);
86114
86363
  if (!configSkillsRoot)
86115
86364
  return;
86116
- const dest = join81(configSkillsRoot, name);
86365
+ const dest = join82(configSkillsRoot, name);
86117
86366
  try {
86118
86367
  if (liveSkillDir !== null) {
86119
86368
  try {
@@ -86128,31 +86377,31 @@ function mirrorToConfigRepo(agent, name, liveSkillDir) {
86128
86377
  if (liveSkillDir === null) {
86129
86378
  sweepMirrorPriors(configSkillsRoot);
86130
86379
  if (existsSync81(dest)) {
86131
- const trash = join81(configSkillsRoot, `.${name}-trash-${Date.now()}`);
86380
+ const trash = join82(configSkillsRoot, `.${name}-trash-${Date.now()}`);
86132
86381
  renameSync18(dest, trash);
86133
86382
  }
86134
86383
  return;
86135
86384
  }
86136
- mkdirSync46(configSkillsRoot, { recursive: true, mode: 493 });
86385
+ mkdirSync47(configSkillsRoot, { recursive: true, mode: 493 });
86137
86386
  sweepMirrorPriors(configSkillsRoot);
86138
- const staging = mkdtempSync6(join81(configSkillsRoot, `.${name}-staging-`));
86387
+ const staging = mkdtempSync6(join82(configSkillsRoot, `.${name}-staging-`));
86139
86388
  const walk2 = (src, dst) => {
86140
- mkdirSync46(dst, { recursive: true, mode: 493 });
86389
+ mkdirSync47(dst, { recursive: true, mode: 493 });
86141
86390
  for (const ent of readdirSync31(src, { withFileTypes: true })) {
86142
- const s = join81(src, ent.name);
86143
- const d = join81(dst, ent.name);
86391
+ const s = join82(src, ent.name);
86392
+ const d = join82(dst, ent.name);
86144
86393
  if (ent.isSymbolicLink())
86145
86394
  continue;
86146
86395
  if (ent.isDirectory())
86147
86396
  walk2(s, d);
86148
86397
  else if (ent.isFile()) {
86149
- writeFileSync40(d, readFileSync69(s));
86398
+ writeFileSync41(d, readFileSync69(s));
86150
86399
  }
86151
86400
  }
86152
86401
  };
86153
86402
  walk2(liveSkillDir, staging);
86154
86403
  if (existsSync81(dest)) {
86155
- const prior = join81(configSkillsRoot, `.${name}-prior-${Date.now()}`);
86404
+ const prior = join82(configSkillsRoot, `.${name}-prior-${Date.now()}`);
86156
86405
  renameSync18(dest, prior);
86157
86406
  }
86158
86407
  renameSync18(staging, dest);
@@ -86179,13 +86428,13 @@ function resolveAgent(opts) {
86179
86428
  function resolveAgentsRoot(opts) {
86180
86429
  if (opts.root)
86181
86430
  return resolve49(opts.root);
86182
- return join81(homedir47(), ".switchroom", "agents");
86431
+ return join82(homedir47(), ".switchroom", "agents");
86183
86432
  }
86184
86433
  function personalSkillDir(agentsRoot, agent, name) {
86185
- return join81(agentsRoot, agent, ".claude", "skills", PERSONAL_PREFIX + name);
86434
+ return join82(agentsRoot, agent, ".claude", "skills", PERSONAL_PREFIX + name);
86186
86435
  }
86187
86436
  function trashDir(agentsRoot, agent) {
86188
- return join81(agentsRoot, agent, ".claude", TRASH_DIRNAME);
86437
+ return join82(agentsRoot, agent, ".claude", TRASH_DIRNAME);
86189
86438
  }
86190
86439
  function readStdinSync2() {
86191
86440
  const chunks = [];
@@ -86215,7 +86464,7 @@ function loadFromDir2(dir) {
86215
86464
  const files = {};
86216
86465
  const walk2 = (sub) => {
86217
86466
  for (const ent of readdirSync31(sub, { withFileTypes: true })) {
86218
- const full = join81(sub, ent.name);
86467
+ const full = join82(sub, ent.name);
86219
86468
  if (ent.isSymbolicLink()) {
86220
86469
  fail4(`refusing to read symlink in --from dir: ${relative3(abs, full)}`);
86221
86470
  }
@@ -86268,10 +86517,10 @@ function behavioralValidate(files) {
86268
86517
  errors2.push(`${path8} fails \`bash -n\`: ${(r.stderr ?? "").trim()}`);
86269
86518
  }
86270
86519
  } else if (PY_SCRIPT_RE.test(path8)) {
86271
- const tmp = mkdtempSync6(join81(tmpdir6(), "skill-personal-py-"));
86272
- const tmpPy = join81(tmp, "check.py");
86520
+ const tmp = mkdtempSync6(join82(tmpdir6(), "skill-personal-py-"));
86521
+ const tmpPy = join82(tmp, "check.py");
86273
86522
  try {
86274
- writeFileSync40(tmpPy, content);
86523
+ writeFileSync41(tmpPy, content);
86275
86524
  const r = spawnSync13("python3", ["-m", "py_compile", tmpPy], {
86276
86525
  encoding: "utf-8"
86277
86526
  });
@@ -86293,7 +86542,7 @@ function sweepTrash(agentsRoot, agent) {
86293
86542
  for (const ent of readdirSync31(trash, { withFileTypes: true })) {
86294
86543
  if (!ent.isDirectory())
86295
86544
  continue;
86296
- const entPath = join81(trash, ent.name);
86545
+ const entPath = join82(trash, ent.name);
86297
86546
  try {
86298
86547
  const st = statSync33(entPath);
86299
86548
  if (now - st.mtimeMs > TRASH_TTL_MS) {
@@ -86313,16 +86562,16 @@ function writePersonalSkill(targetDir, files) {
86313
86562
  if (targetIsSymlink) {
86314
86563
  fail4(`refusing to overwrite symlink at ${targetDir}; investigate manually`);
86315
86564
  }
86316
- mkdirSync46(dirname25(targetDir), { recursive: true, mode: 493 });
86317
- const staging = mkdtempSync6(join81(dirname25(targetDir), `.skill-personal-stage-`));
86565
+ mkdirSync47(dirname25(targetDir), { recursive: true, mode: 493 });
86566
+ const staging = mkdtempSync6(join82(dirname25(targetDir), `.skill-personal-stage-`));
86318
86567
  let oldRename = null;
86319
86568
  try {
86320
86569
  for (const [path8, content] of Object.entries(files)) {
86321
- const full = join81(staging, path8);
86322
- mkdirSync46(dirname25(full), { recursive: true, mode: 493 });
86570
+ const full = join82(staging, path8);
86571
+ mkdirSync47(dirname25(full), { recursive: true, mode: 493 });
86323
86572
  const fd = openSync16(full, "wx");
86324
86573
  try {
86325
- writeFileSync40(fd, content);
86574
+ writeFileSync41(fd, content);
86326
86575
  } finally {
86327
86576
  closeSync16(fd);
86328
86577
  }
@@ -86451,10 +86700,10 @@ function editPersonalAction(name, opts) {
86451
86700
  }
86452
86701
  var CLONE_SOURCE_RE = /^(shared|bundled):([a-z0-9][a-z0-9_-]{0,62})$/;
86453
86702
  function defaultSharedRoot() {
86454
- return join81(homedir47(), ".switchroom", "skills");
86703
+ return join82(homedir47(), ".switchroom", "skills");
86455
86704
  }
86456
86705
  function defaultBundledRoot() {
86457
- return join81(homedir47(), ".switchroom", "skills", "_bundled");
86706
+ return join82(homedir47(), ".switchroom", "skills", "_bundled");
86458
86707
  }
86459
86708
  function resolveCloneSource(source, opts) {
86460
86709
  const m = CLONE_SOURCE_RE.exec(source);
@@ -86464,7 +86713,7 @@ function resolveCloneSource(source, opts) {
86464
86713
  const tier = m[1];
86465
86714
  const slug = m[2];
86466
86715
  const root = tier === "bundled" ? opts.bundledRoot ?? defaultBundledRoot() : opts.sharedRoot ?? defaultSharedRoot();
86467
- const dir = join81(root, slug);
86716
+ const dir = join82(root, slug);
86468
86717
  if (!existsSync81(dir)) {
86469
86718
  fail4(`clone source ${JSON.stringify(source)} not found at ${dir}; ` + `check \`switchroom skill search --tier ${tier}\``, 1);
86470
86719
  }
@@ -86480,7 +86729,7 @@ function readSourceFiles(dir) {
86480
86729
  const skipped = [];
86481
86730
  const walk2 = (sub) => {
86482
86731
  for (const ent of readdirSync31(sub, { withFileTypes: true })) {
86483
- const full = join81(sub, ent.name);
86732
+ const full = join82(sub, ent.name);
86484
86733
  if (ent.isSymbolicLink()) {
86485
86734
  continue;
86486
86735
  }
@@ -86589,9 +86838,9 @@ function removePersonalAction(name, opts) {
86589
86838
  throw err2;
86590
86839
  }
86591
86840
  const trashRoot = trashDir(agentsRoot, agent);
86592
- mkdirSync46(trashRoot, { recursive: true, mode: 493 });
86841
+ mkdirSync47(trashRoot, { recursive: true, mode: 493 });
86593
86842
  const ts = Date.now();
86594
- const trashTarget = join81(trashRoot, `${name}-${ts}`);
86843
+ const trashTarget = join82(trashRoot, `${name}-${ts}`);
86595
86844
  renameSync18(target, trashTarget);
86596
86845
  const now = new Date(ts);
86597
86846
  utimesSync(trashTarget, now, now);
@@ -86610,7 +86859,7 @@ function listPersonalAction(opts) {
86610
86859
  const agent = resolveAgent(opts);
86611
86860
  const agentsRoot = resolveAgentsRoot(opts);
86612
86861
  sweepTrash(agentsRoot, agent);
86613
- const skillsDir = join81(agentsRoot, agent, ".claude", "skills");
86862
+ const skillsDir = join82(agentsRoot, agent, ".claude", "skills");
86614
86863
  const personal = [];
86615
86864
  if (existsSync81(skillsDir)) {
86616
86865
  for (const ent of readdirSync31(skillsDir, { withFileTypes: true })) {
@@ -86619,7 +86868,7 @@ function listPersonalAction(opts) {
86619
86868
  if (!ent.name.startsWith(PERSONAL_PREFIX))
86620
86869
  continue;
86621
86870
  const skillName = ent.name.slice(PERSONAL_PREFIX.length);
86622
- const skillPath = join81(skillsDir, ent.name);
86871
+ const skillPath = join82(skillsDir, ent.name);
86623
86872
  let fileCount = 0;
86624
86873
  let totalBytes = 0;
86625
86874
  const walk2 = (sub) => {
@@ -86627,10 +86876,10 @@ function listPersonalAction(opts) {
86627
86876
  if (e.isFile()) {
86628
86877
  fileCount += 1;
86629
86878
  try {
86630
- totalBytes += statSync33(join81(sub, e.name)).size;
86879
+ totalBytes += statSync33(join82(sub, e.name)).size;
86631
86880
  } catch {}
86632
86881
  } else if (e.isDirectory()) {
86633
- walk2(join81(sub, e.name));
86882
+ walk2(join82(sub, e.name));
86634
86883
  }
86635
86884
  }
86636
86885
  };
@@ -86671,7 +86920,7 @@ init_helpers();
86671
86920
  var import_yaml24 = __toESM(require_dist(), 1);
86672
86921
  import { existsSync as existsSync82, readdirSync as readdirSync32, readFileSync as readFileSync70, statSync as statSync34 } from "node:fs";
86673
86922
  import { homedir as homedir48 } from "node:os";
86674
- import { join as join82, resolve as resolve50 } from "node:path";
86923
+ import { join as join83, resolve as resolve50 } from "node:path";
86675
86924
  var PERSONAL_PREFIX2 = "personal-";
86676
86925
  var BUNDLED_SUBDIR = "_bundled";
86677
86926
  var AGENT_NAME_RE3 = /^[a-z][a-z0-9_-]{0,62}$/;
@@ -86685,7 +86934,7 @@ function defaultBundledRoot2() {
86685
86934
  return resolve50(homedir48(), ".switchroom/skills/_bundled");
86686
86935
  }
86687
86936
  function readSkillFrontmatter(skillDir) {
86688
- const mdPath = join82(skillDir, "SKILL.md");
86937
+ const mdPath = join83(skillDir, "SKILL.md");
86689
86938
  if (!existsSync82(mdPath))
86690
86939
  return null;
86691
86940
  let content;
@@ -86718,7 +86967,7 @@ function readSkillFrontmatter(skillDir) {
86718
86967
  return { fm: parsed };
86719
86968
  }
86720
86969
  function statSkillMd(skillDir) {
86721
- const mdPath = join82(skillDir, "SKILL.md");
86970
+ const mdPath = join83(skillDir, "SKILL.md");
86722
86971
  try {
86723
86972
  const st = statSync34(mdPath);
86724
86973
  return { size: st.size, mtime: st.mtime.toISOString() };
@@ -86729,7 +86978,7 @@ function statSkillMd(skillDir) {
86729
86978
  function listPersonalSkills(agent, agentsRoot = defaultAgentsRoot()) {
86730
86979
  if (!AGENT_NAME_RE3.test(agent))
86731
86980
  return [];
86732
- const skillsDir = join82(agentsRoot, agent, ".claude/skills");
86981
+ const skillsDir = join83(agentsRoot, agent, ".claude/skills");
86733
86982
  if (!existsSync82(skillsDir))
86734
86983
  return [];
86735
86984
  const out = [];
@@ -86742,7 +86991,7 @@ function listPersonalSkills(agent, agentsRoot = defaultAgentsRoot()) {
86742
86991
  for (const ent of entries) {
86743
86992
  if (!ent.startsWith(PERSONAL_PREFIX2))
86744
86993
  continue;
86745
- const dirPath = join82(skillsDir, ent);
86994
+ const dirPath = join83(skillsDir, ent);
86746
86995
  try {
86747
86996
  if (!statSync34(dirPath).isDirectory())
86748
86997
  continue;
@@ -86782,7 +87031,7 @@ function listSharedSkills(sharedRoot = defaultSharedRoot2()) {
86782
87031
  continue;
86783
87032
  if (ent.startsWith("."))
86784
87033
  continue;
86785
- const dirPath = join82(sharedRoot, ent);
87034
+ const dirPath = join83(sharedRoot, ent);
86786
87035
  try {
86787
87036
  if (!statSync34(dirPath).isDirectory())
86788
87037
  continue;
@@ -86818,7 +87067,7 @@ function listBundledSkills(bundledRoot = defaultBundledRoot2()) {
86818
87067
  for (const ent of entries) {
86819
87068
  if (ent.startsWith("."))
86820
87069
  continue;
86821
- const dirPath = join82(bundledRoot, ent);
87070
+ const dirPath = join83(bundledRoot, ent);
86822
87071
  try {
86823
87072
  if (!statSync34(dirPath).isDirectory())
86824
87073
  continue;
@@ -86962,9 +87211,9 @@ function registerHostdMcpCommand(program3) {
86962
87211
  // src/cli/hostd.ts
86963
87212
  init_source();
86964
87213
  init_helpers();
86965
- import { existsSync as existsSync84, mkdirSync as mkdirSync47, readdirSync as readdirSync33, readFileSync as readFileSync72, writeFileSync as writeFileSync41, statSync as statSync35, copyFileSync as copyFileSync12 } from "node:fs";
87214
+ import { existsSync as existsSync84, mkdirSync as mkdirSync48, readdirSync as readdirSync33, readFileSync as readFileSync72, writeFileSync as writeFileSync42, statSync as statSync35, copyFileSync as copyFileSync12 } from "node:fs";
86966
87215
  import { homedir as homedir49 } from "node:os";
86967
- import { join as join83 } from "node:path";
87216
+ import { join as join84 } from "node:path";
86968
87217
  import { spawnSync as spawnSync16 } from "node:child_process";
86969
87218
 
86970
87219
  // src/cli/deploy-version-guard.ts
@@ -87127,10 +87376,10 @@ function resolveHostdHostHome(env2 = process.env, home2 = homedir49()) {
87127
87376
  return resolved;
87128
87377
  }
87129
87378
  function hostdDir() {
87130
- return join83(homedir49(), ".switchroom", "hostd");
87379
+ return join84(homedir49(), ".switchroom", "hostd");
87131
87380
  }
87132
87381
  function hostdComposePath() {
87133
- return join83(hostdDir(), "docker-compose.yml");
87382
+ return join84(hostdDir(), "docker-compose.yml");
87134
87383
  }
87135
87384
  function backupExistingCompose() {
87136
87385
  const p = hostdComposePath();
@@ -87167,7 +87416,7 @@ async function doInstall(opts, program3) {
87167
87416
  }
87168
87417
  const dir = hostdDir();
87169
87418
  const composePath = hostdComposePath();
87170
- mkdirSync47(dir, { recursive: true });
87419
+ mkdirSync48(dir, { recursive: true });
87171
87420
  const imageTag = resolveHostdImageTag(opts.tag, cfg.release);
87172
87421
  const guard = checkDowngrade({
87173
87422
  container: "switchroom-hostd",
@@ -87192,7 +87441,7 @@ async function doInstall(opts, program3) {
87192
87441
  const bak = backupExistingCompose();
87193
87442
  if (bak)
87194
87443
  console.log(source_default.dim(` Backed up existing compose to ${bak}`));
87195
- writeFileSync41(composePath, yaml, "utf8");
87444
+ writeFileSync42(composePath, yaml, "utf8");
87196
87445
  console.log(source_default.green(` \u2713 Wrote ${composePath}`));
87197
87446
  const adminAgents = Object.entries(cfg.agents ?? {}).filter(([, a]) => a?.admin === true).map(([name]) => name);
87198
87447
  console.log(source_default.dim(` agents served (one socket each): ${allAgents.length === 0 ? "(none)" : allAgents.join(", ")}`));
@@ -87250,7 +87499,7 @@ function doStatus() {
87250
87499
  for (const name of readdirSync33(dir)) {
87251
87500
  if (name === "docker-compose.yml" || name.startsWith("docker-compose.yml."))
87252
87501
  continue;
87253
- const sockPath = join83(dir, name, "sock");
87502
+ const sockPath = join84(dir, name, "sock");
87254
87503
  if (existsSync84(sockPath)) {
87255
87504
  const st = statSync35(sockPath);
87256
87505
  if ((st.mode & 61440) === 49152) {
@@ -87341,9 +87590,9 @@ The log is created when hostd handles its first privileged-verb request.`));
87341
87590
  // src/cli/webd.ts
87342
87591
  init_source();
87343
87592
  init_helpers();
87344
- import { existsSync as existsSync85, mkdirSync as mkdirSync48, writeFileSync as writeFileSync42, copyFileSync as copyFileSync13 } from "node:fs";
87593
+ import { existsSync as existsSync85, mkdirSync as mkdirSync49, writeFileSync as writeFileSync43, copyFileSync as copyFileSync13 } from "node:fs";
87345
87594
  import { homedir as homedir50 } from "node:os";
87346
- import { join as join84 } from "node:path";
87595
+ import { join as join85 } from "node:path";
87347
87596
  import { spawnSync as spawnSync17 } from "node:child_process";
87348
87597
  function resolveWebImageTag(explicitTag, release) {
87349
87598
  if (explicitTag)
@@ -87428,10 +87677,10 @@ services:
87428
87677
  `;
87429
87678
  }
87430
87679
  function webdDir() {
87431
- return join84(homedir50(), ".switchroom", "web");
87680
+ return join85(homedir50(), ".switchroom", "web");
87432
87681
  }
87433
87682
  function webdComposePath() {
87434
- return join84(webdDir(), "docker-compose.yml");
87683
+ return join85(webdDir(), "docker-compose.yml");
87435
87684
  }
87436
87685
  function backupExistingCompose2() {
87437
87686
  const p = webdComposePath();
@@ -87460,7 +87709,7 @@ async function doInstall2(opts, program3) {
87460
87709
  }
87461
87710
  const dir = webdDir();
87462
87711
  const composePath = webdComposePath();
87463
- mkdirSync48(dir, { recursive: true });
87712
+ mkdirSync49(dir, { recursive: true });
87464
87713
  const cfg = getConfig(program3);
87465
87714
  const imageTag = resolveWebImageTag(opts.tag, cfg.release);
87466
87715
  const guard = checkDowngrade({
@@ -87486,7 +87735,7 @@ async function doInstall2(opts, program3) {
87486
87735
  const bak = backupExistingCompose2();
87487
87736
  if (bak)
87488
87737
  console.log(source_default.dim(` Backed up existing compose to ${bak}`));
87489
- writeFileSync42(composePath, yaml, "utf8");
87738
+ writeFileSync43(composePath, yaml, "utf8");
87490
87739
  console.log(source_default.green(` \u2713 Wrote ${composePath}`));
87491
87740
  console.log(source_default.dim(` running as uid ${operatorUid} (operator), network_mode: host`));
87492
87741
  console.log(source_default.dim(` Pulling ghcr.io/switchroom/switchroom-web:${imageTag}\u2026`));