switchroom 0.13.52 → 0.13.54

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 (39) hide show
  1. package/dist/agent-scheduler/index.js +399 -213
  2. package/dist/auth-broker/index.js +576 -237
  3. package/dist/cli/drive-write-pretool.mjs +28 -13
  4. package/dist/cli/ms-365-write-pretool.mjs +259 -0
  5. package/dist/cli/skill-validate-pretool.mjs +72 -72
  6. package/dist/cli/switchroom.js +3241 -1382
  7. package/dist/host-control/main.js +396 -276
  8. package/dist/vault/approvals/kernel-server.js +8266 -8142
  9. package/dist/vault/broker/server.js +2894 -2770
  10. package/package.json +1 -1
  11. package/profiles/_base/start.sh.hbs +17 -0
  12. package/profiles/_shared/telegram-style.md.hbs +2 -0
  13. package/skills/switchroom-status/SKILL.md +8 -6
  14. package/telegram-plugin/chat-lock.ts +87 -19
  15. package/telegram-plugin/dist/bridge/bridge.js +112 -112
  16. package/telegram-plugin/dist/gateway/gateway.js +1283 -343
  17. package/telegram-plugin/dist/server.js +160 -160
  18. package/telegram-plugin/gateway/disconnect-flush.ts +32 -0
  19. package/telegram-plugin/gateway/gateway.ts +485 -72
  20. package/telegram-plugin/gateway/inbound-coalesce.ts +19 -6
  21. package/telegram-plugin/gateway/ipc-protocol.ts +37 -0
  22. package/telegram-plugin/gateway/ipc-server.ts +59 -0
  23. package/telegram-plugin/gateway/ms365-write-approval.test.ts +314 -0
  24. package/telegram-plugin/gateway/ms365-write-approval.ts +335 -0
  25. package/telegram-plugin/stream-reply-handler.ts +10 -8
  26. package/telegram-plugin/tests/gateway-disconnect-flush.test.ts +116 -0
  27. package/telegram-plugin/tests/inbound-coalesce.test.ts +20 -4
  28. package/telegram-plugin/tests/ipc-validator.test.ts +61 -0
  29. package/telegram-plugin/tests/outbound-ordering.test.ts +228 -0
  30. package/telegram-plugin/tests/parallel-turns-deadlock-fix.test.ts +217 -0
  31. package/telegram-plugin/tests/slash-command-smart-split.test.ts +115 -0
  32. package/telegram-plugin/tests/typing-wrap.test.ts +65 -8
  33. package/telegram-plugin/typing-wrap.ts +43 -21
  34. package/vendor/hindsight-memory/scripts/lib/gateway_ipc.py +35 -0
  35. package/vendor/hindsight-memory/scripts/recall.py +164 -4
  36. package/vendor/hindsight-memory/scripts/retain.py +52 -0
  37. package/vendor/hindsight-memory/scripts/tests/test_gateway_ipc.py +42 -0
  38. package/vendor/hindsight-memory/scripts/tests/test_recall_topic_filter.py +139 -0
  39. package/profiles/default/CLAUDE.md +0 -122
@@ -46,7 +46,7 @@ var __export = (target, all) => {
46
46
  var __esm = (fn, res) => () => (fn && (res = fn(fn = 0)), res);
47
47
  var __require = /* @__PURE__ */ createRequire(import.meta.url);
48
48
 
49
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/nodes/identity.js
49
+ // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/nodes/identity.js
50
50
  var require_identity = __commonJS((exports) => {
51
51
  var ALIAS = Symbol.for("yaml.alias");
52
52
  var DOC = Symbol.for("yaml.document");
@@ -100,7 +100,7 @@ var require_identity = __commonJS((exports) => {
100
100
  exports.isSeq = isSeq;
101
101
  });
102
102
 
103
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/visit.js
103
+ // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/visit.js
104
104
  var require_visit = __commonJS((exports) => {
105
105
  var identity = require_identity();
106
106
  var BREAK = Symbol("break visit");
@@ -255,7 +255,7 @@ var require_visit = __commonJS((exports) => {
255
255
  exports.visitAsync = visitAsync;
256
256
  });
257
257
 
258
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/doc/directives.js
258
+ // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/doc/directives.js
259
259
  var require_directives = __commonJS((exports) => {
260
260
  var identity = require_identity();
261
261
  var visit = require_visit();
@@ -407,7 +407,7 @@ var require_directives = __commonJS((exports) => {
407
407
  exports.Directives = Directives;
408
408
  });
409
409
 
410
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/doc/anchors.js
410
+ // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/doc/anchors.js
411
411
  var require_anchors = __commonJS((exports) => {
412
412
  var identity = require_identity();
413
413
  var visit = require_visit();
@@ -469,7 +469,7 @@ var require_anchors = __commonJS((exports) => {
469
469
  exports.findNewAnchor = findNewAnchor;
470
470
  });
471
471
 
472
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/doc/applyReviver.js
472
+ // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/doc/applyReviver.js
473
473
  var require_applyReviver = __commonJS((exports) => {
474
474
  function applyReviver(reviver, obj, key, val) {
475
475
  if (val && typeof val === "object") {
@@ -516,7 +516,7 @@ var require_applyReviver = __commonJS((exports) => {
516
516
  exports.applyReviver = applyReviver;
517
517
  });
518
518
 
519
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/nodes/toJS.js
519
+ // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/nodes/toJS.js
520
520
  var require_toJS = __commonJS((exports) => {
521
521
  var identity = require_identity();
522
522
  function toJS(value, arg, ctx) {
@@ -543,7 +543,7 @@ var require_toJS = __commonJS((exports) => {
543
543
  exports.toJS = toJS;
544
544
  });
545
545
 
546
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/nodes/Node.js
546
+ // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/nodes/Node.js
547
547
  var require_Node = __commonJS((exports) => {
548
548
  var applyReviver = require_applyReviver();
549
549
  var identity = require_identity();
@@ -580,7 +580,7 @@ var require_Node = __commonJS((exports) => {
580
580
  exports.NodeBase = NodeBase;
581
581
  });
582
582
 
583
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/nodes/Alias.js
583
+ // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/nodes/Alias.js
584
584
  var require_Alias = __commonJS((exports) => {
585
585
  var anchors = require_anchors();
586
586
  var visit = require_visit();
@@ -688,7 +688,7 @@ var require_Alias = __commonJS((exports) => {
688
688
  exports.Alias = Alias;
689
689
  });
690
690
 
691
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/nodes/Scalar.js
691
+ // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/nodes/Scalar.js
692
692
  var require_Scalar = __commonJS((exports) => {
693
693
  var identity = require_identity();
694
694
  var Node = require_Node();
@@ -716,7 +716,7 @@ var require_Scalar = __commonJS((exports) => {
716
716
  exports.isScalarValue = isScalarValue;
717
717
  });
718
718
 
719
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/doc/createNode.js
719
+ // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/doc/createNode.js
720
720
  var require_createNode = __commonJS((exports) => {
721
721
  var Alias = require_Alias();
722
722
  var identity = require_identity();
@@ -788,7 +788,7 @@ var require_createNode = __commonJS((exports) => {
788
788
  exports.createNode = createNode;
789
789
  });
790
790
 
791
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/nodes/Collection.js
791
+ // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/nodes/Collection.js
792
792
  var require_Collection = __commonJS((exports) => {
793
793
  var createNode = require_createNode();
794
794
  var identity = require_identity();
@@ -903,7 +903,7 @@ var require_Collection = __commonJS((exports) => {
903
903
  exports.isEmptyPath = isEmptyPath;
904
904
  });
905
905
 
906
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/stringify/stringifyComment.js
906
+ // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/stringify/stringifyComment.js
907
907
  var require_stringifyComment = __commonJS((exports) => {
908
908
  var stringifyComment = (str) => str.replace(/^(?!$)(?: $)?/gm, "#");
909
909
  function indentComment(comment, indent) {
@@ -920,7 +920,7 @@ var require_stringifyComment = __commonJS((exports) => {
920
920
  exports.stringifyComment = stringifyComment;
921
921
  });
922
922
 
923
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/stringify/foldFlowLines.js
923
+ // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/stringify/foldFlowLines.js
924
924
  var require_foldFlowLines = __commonJS((exports) => {
925
925
  var FOLD_FLOW = "flow";
926
926
  var FOLD_BLOCK = "block";
@@ -1057,7 +1057,7 @@ ${indent}${text.slice(fold + 1, end2)}`;
1057
1057
  exports.foldFlowLines = foldFlowLines;
1058
1058
  });
1059
1059
 
1060
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/stringify/stringifyString.js
1060
+ // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/stringify/stringifyString.js
1061
1061
  var require_stringifyString = __commonJS((exports) => {
1062
1062
  var Scalar = require_Scalar();
1063
1063
  var foldFlowLines = require_foldFlowLines();
@@ -1355,7 +1355,7 @@ ${indent}`);
1355
1355
  exports.stringifyString = stringifyString;
1356
1356
  });
1357
1357
 
1358
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/stringify/stringify.js
1358
+ // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/stringify/stringify.js
1359
1359
  var require_stringify = __commonJS((exports) => {
1360
1360
  var anchors = require_anchors();
1361
1361
  var identity = require_identity();
@@ -1476,7 +1476,7 @@ ${ctx.indent}${str}`;
1476
1476
  exports.stringify = stringify;
1477
1477
  });
1478
1478
 
1479
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/stringify/stringifyPair.js
1479
+ // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/stringify/stringifyPair.js
1480
1480
  var require_stringifyPair = __commonJS((exports) => {
1481
1481
  var identity = require_identity();
1482
1482
  var Scalar = require_Scalar();
@@ -1612,7 +1612,7 @@ ${ctx.indent}`;
1612
1612
  exports.stringifyPair = stringifyPair;
1613
1613
  });
1614
1614
 
1615
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/log.js
1615
+ // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/log.js
1616
1616
  var require_log = __commonJS((exports) => {
1617
1617
  var node_process = __require("process");
1618
1618
  function debug(logLevel, ...messages) {
@@ -1631,7 +1631,7 @@ var require_log = __commonJS((exports) => {
1631
1631
  exports.warn = warn;
1632
1632
  });
1633
1633
 
1634
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/schema/yaml-1.1/merge.js
1634
+ // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/schema/yaml-1.1/merge.js
1635
1635
  var require_merge = __commonJS((exports) => {
1636
1636
  var identity = require_identity();
1637
1637
  var Scalar = require_Scalar();
@@ -1685,7 +1685,7 @@ var require_merge = __commonJS((exports) => {
1685
1685
  exports.merge = merge;
1686
1686
  });
1687
1687
 
1688
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/nodes/addPairToJSMap.js
1688
+ // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/nodes/addPairToJSMap.js
1689
1689
  var require_addPairToJSMap = __commonJS((exports) => {
1690
1690
  var log = require_log();
1691
1691
  var merge = require_merge();
@@ -1746,7 +1746,7 @@ var require_addPairToJSMap = __commonJS((exports) => {
1746
1746
  exports.addPairToJSMap = addPairToJSMap;
1747
1747
  });
1748
1748
 
1749
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/nodes/Pair.js
1749
+ // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/nodes/Pair.js
1750
1750
  var require_Pair = __commonJS((exports) => {
1751
1751
  var createNode = require_createNode();
1752
1752
  var stringifyPair = require_stringifyPair();
@@ -1784,7 +1784,7 @@ var require_Pair = __commonJS((exports) => {
1784
1784
  exports.createPair = createPair;
1785
1785
  });
1786
1786
 
1787
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/stringify/stringifyCollection.js
1787
+ // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/stringify/stringifyCollection.js
1788
1788
  var require_stringifyCollection = __commonJS((exports) => {
1789
1789
  var identity = require_identity();
1790
1790
  var stringify = require_stringify();
@@ -1936,7 +1936,7 @@ ${indent}${end}`;
1936
1936
  exports.stringifyCollection = stringifyCollection;
1937
1937
  });
1938
1938
 
1939
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/nodes/YAMLMap.js
1939
+ // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/nodes/YAMLMap.js
1940
1940
  var require_YAMLMap = __commonJS((exports) => {
1941
1941
  var stringifyCollection = require_stringifyCollection();
1942
1942
  var addPairToJSMap = require_addPairToJSMap();
@@ -2063,7 +2063,7 @@ var require_YAMLMap = __commonJS((exports) => {
2063
2063
  exports.findPair = findPair;
2064
2064
  });
2065
2065
 
2066
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/schema/common/map.js
2066
+ // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/schema/common/map.js
2067
2067
  var require_map = __commonJS((exports) => {
2068
2068
  var identity = require_identity();
2069
2069
  var YAMLMap = require_YAMLMap();
@@ -2082,7 +2082,7 @@ var require_map = __commonJS((exports) => {
2082
2082
  exports.map = map;
2083
2083
  });
2084
2084
 
2085
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/nodes/YAMLSeq.js
2085
+ // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/nodes/YAMLSeq.js
2086
2086
  var require_YAMLSeq = __commonJS((exports) => {
2087
2087
  var createNode = require_createNode();
2088
2088
  var stringifyCollection = require_stringifyCollection();
@@ -2175,7 +2175,7 @@ var require_YAMLSeq = __commonJS((exports) => {
2175
2175
  exports.YAMLSeq = YAMLSeq;
2176
2176
  });
2177
2177
 
2178
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/schema/common/seq.js
2178
+ // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/schema/common/seq.js
2179
2179
  var require_seq = __commonJS((exports) => {
2180
2180
  var identity = require_identity();
2181
2181
  var YAMLSeq = require_YAMLSeq();
@@ -2194,7 +2194,7 @@ var require_seq = __commonJS((exports) => {
2194
2194
  exports.seq = seq;
2195
2195
  });
2196
2196
 
2197
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/schema/common/string.js
2197
+ // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/schema/common/string.js
2198
2198
  var require_string = __commonJS((exports) => {
2199
2199
  var stringifyString = require_stringifyString();
2200
2200
  var string = {
@@ -2210,7 +2210,7 @@ var require_string = __commonJS((exports) => {
2210
2210
  exports.string = string;
2211
2211
  });
2212
2212
 
2213
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/schema/common/null.js
2213
+ // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/schema/common/null.js
2214
2214
  var require_null = __commonJS((exports) => {
2215
2215
  var Scalar = require_Scalar();
2216
2216
  var nullTag = {
@@ -2225,7 +2225,7 @@ var require_null = __commonJS((exports) => {
2225
2225
  exports.nullTag = nullTag;
2226
2226
  });
2227
2227
 
2228
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/schema/core/bool.js
2228
+ // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/schema/core/bool.js
2229
2229
  var require_bool = __commonJS((exports) => {
2230
2230
  var Scalar = require_Scalar();
2231
2231
  var boolTag = {
@@ -2246,7 +2246,7 @@ var require_bool = __commonJS((exports) => {
2246
2246
  exports.boolTag = boolTag;
2247
2247
  });
2248
2248
 
2249
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/stringify/stringifyNumber.js
2249
+ // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/stringify/stringifyNumber.js
2250
2250
  var require_stringifyNumber = __commonJS((exports) => {
2251
2251
  function stringifyNumber({ format, minFractionDigits, tag, value }) {
2252
2252
  if (typeof value === "bigint")
@@ -2270,7 +2270,7 @@ var require_stringifyNumber = __commonJS((exports) => {
2270
2270
  exports.stringifyNumber = stringifyNumber;
2271
2271
  });
2272
2272
 
2273
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/schema/core/float.js
2273
+ // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/schema/core/float.js
2274
2274
  var require_float = __commonJS((exports) => {
2275
2275
  var Scalar = require_Scalar();
2276
2276
  var stringifyNumber = require_stringifyNumber();
@@ -2313,7 +2313,7 @@ var require_float = __commonJS((exports) => {
2313
2313
  exports.floatNaN = floatNaN;
2314
2314
  });
2315
2315
 
2316
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/schema/core/int.js
2316
+ // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/schema/core/int.js
2317
2317
  var require_int = __commonJS((exports) => {
2318
2318
  var stringifyNumber = require_stringifyNumber();
2319
2319
  var intIdentify = (value) => typeof value === "bigint" || Number.isInteger(value);
@@ -2355,7 +2355,7 @@ var require_int = __commonJS((exports) => {
2355
2355
  exports.intOct = intOct;
2356
2356
  });
2357
2357
 
2358
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/schema/core/schema.js
2358
+ // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/schema/core/schema.js
2359
2359
  var require_schema = __commonJS((exports) => {
2360
2360
  var map = require_map();
2361
2361
  var _null = require_null();
@@ -2380,7 +2380,7 @@ var require_schema = __commonJS((exports) => {
2380
2380
  exports.schema = schema;
2381
2381
  });
2382
2382
 
2383
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/schema/json/schema.js
2383
+ // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/schema/json/schema.js
2384
2384
  var require_schema2 = __commonJS((exports) => {
2385
2385
  var Scalar = require_Scalar();
2386
2386
  var map = require_map();
@@ -2444,7 +2444,7 @@ var require_schema2 = __commonJS((exports) => {
2444
2444
  exports.schema = schema;
2445
2445
  });
2446
2446
 
2447
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/schema/yaml-1.1/binary.js
2447
+ // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/schema/yaml-1.1/binary.js
2448
2448
  var require_binary = __commonJS((exports) => {
2449
2449
  var node_buffer = __require("buffer");
2450
2450
  var Scalar = require_Scalar();
@@ -2499,7 +2499,7 @@ var require_binary = __commonJS((exports) => {
2499
2499
  exports.binary = binary;
2500
2500
  });
2501
2501
 
2502
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/schema/yaml-1.1/pairs.js
2502
+ // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/schema/yaml-1.1/pairs.js
2503
2503
  var require_pairs = __commonJS((exports) => {
2504
2504
  var identity = require_identity();
2505
2505
  var Pair = require_Pair();
@@ -2574,7 +2574,7 @@ ${cn.comment}` : item.comment;
2574
2574
  exports.resolvePairs = resolvePairs;
2575
2575
  });
2576
2576
 
2577
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/schema/yaml-1.1/omap.js
2577
+ // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/schema/yaml-1.1/omap.js
2578
2578
  var require_omap = __commonJS((exports) => {
2579
2579
  var identity = require_identity();
2580
2580
  var toJS = require_toJS();
@@ -2646,7 +2646,7 @@ var require_omap = __commonJS((exports) => {
2646
2646
  exports.omap = omap;
2647
2647
  });
2648
2648
 
2649
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/schema/yaml-1.1/bool.js
2649
+ // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/schema/yaml-1.1/bool.js
2650
2650
  var require_bool2 = __commonJS((exports) => {
2651
2651
  var Scalar = require_Scalar();
2652
2652
  function boolStringify({ value, source }, ctx) {
@@ -2675,7 +2675,7 @@ var require_bool2 = __commonJS((exports) => {
2675
2675
  exports.trueTag = trueTag;
2676
2676
  });
2677
2677
 
2678
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/schema/yaml-1.1/float.js
2678
+ // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/schema/yaml-1.1/float.js
2679
2679
  var require_float2 = __commonJS((exports) => {
2680
2680
  var Scalar = require_Scalar();
2681
2681
  var stringifyNumber = require_stringifyNumber();
@@ -2721,7 +2721,7 @@ var require_float2 = __commonJS((exports) => {
2721
2721
  exports.floatNaN = floatNaN;
2722
2722
  });
2723
2723
 
2724
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/schema/yaml-1.1/int.js
2724
+ // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/schema/yaml-1.1/int.js
2725
2725
  var require_int2 = __commonJS((exports) => {
2726
2726
  var stringifyNumber = require_stringifyNumber();
2727
2727
  var intIdentify = (value) => typeof value === "bigint" || Number.isInteger(value);
@@ -2797,7 +2797,7 @@ var require_int2 = __commonJS((exports) => {
2797
2797
  exports.intOct = intOct;
2798
2798
  });
2799
2799
 
2800
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/schema/yaml-1.1/set.js
2800
+ // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/schema/yaml-1.1/set.js
2801
2801
  var require_set = __commonJS((exports) => {
2802
2802
  var identity = require_identity();
2803
2803
  var Pair = require_Pair();
@@ -2880,7 +2880,7 @@ var require_set = __commonJS((exports) => {
2880
2880
  exports.set = set;
2881
2881
  });
2882
2882
 
2883
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/schema/yaml-1.1/timestamp.js
2883
+ // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/schema/yaml-1.1/timestamp.js
2884
2884
  var require_timestamp = __commonJS((exports) => {
2885
2885
  var stringifyNumber = require_stringifyNumber();
2886
2886
  function parseSexagesimal(str, asBigInt) {
@@ -2962,7 +2962,7 @@ var require_timestamp = __commonJS((exports) => {
2962
2962
  exports.timestamp = timestamp;
2963
2963
  });
2964
2964
 
2965
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/schema/yaml-1.1/schema.js
2965
+ // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/schema/yaml-1.1/schema.js
2966
2966
  var require_schema3 = __commonJS((exports) => {
2967
2967
  var map = require_map();
2968
2968
  var _null = require_null();
@@ -3003,7 +3003,7 @@ var require_schema3 = __commonJS((exports) => {
3003
3003
  exports.schema = schema;
3004
3004
  });
3005
3005
 
3006
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/schema/tags.js
3006
+ // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/schema/tags.js
3007
3007
  var require_tags = __commonJS((exports) => {
3008
3008
  var map = require_map();
3009
3009
  var _null = require_null();
@@ -3094,7 +3094,7 @@ var require_tags = __commonJS((exports) => {
3094
3094
  exports.getTags = getTags;
3095
3095
  });
3096
3096
 
3097
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/schema/Schema.js
3097
+ // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/schema/Schema.js
3098
3098
  var require_Schema = __commonJS((exports) => {
3099
3099
  var identity = require_identity();
3100
3100
  var map = require_map();
@@ -3124,7 +3124,7 @@ var require_Schema = __commonJS((exports) => {
3124
3124
  exports.Schema = Schema;
3125
3125
  });
3126
3126
 
3127
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/stringify/stringifyDocument.js
3127
+ // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/stringify/stringifyDocument.js
3128
3128
  var require_stringifyDocument = __commonJS((exports) => {
3129
3129
  var identity = require_identity();
3130
3130
  var stringify = require_stringify();
@@ -3204,7 +3204,7 @@ var require_stringifyDocument = __commonJS((exports) => {
3204
3204
  exports.stringifyDocument = stringifyDocument;
3205
3205
  });
3206
3206
 
3207
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/doc/Document.js
3207
+ // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/doc/Document.js
3208
3208
  var require_Document = __commonJS((exports) => {
3209
3209
  var Alias = require_Alias();
3210
3210
  var Collection = require_Collection();
@@ -3439,7 +3439,7 @@ var require_Document = __commonJS((exports) => {
3439
3439
  exports.Document = Document;
3440
3440
  });
3441
3441
 
3442
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/errors.js
3442
+ // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/errors.js
3443
3443
  var require_errors = __commonJS((exports) => {
3444
3444
  class YAMLError extends Error {
3445
3445
  constructor(name, pos, code, message) {
@@ -3504,7 +3504,7 @@ ${pointer}
3504
3504
  exports.prettifyError = prettifyError;
3505
3505
  });
3506
3506
 
3507
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/compose/resolve-props.js
3507
+ // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/compose/resolve-props.js
3508
3508
  var require_resolve_props = __commonJS((exports) => {
3509
3509
  function resolveProps(tokens, { flow, indicator, next, offset, onError, parentIndent, startOnNewline }) {
3510
3510
  let spaceBefore = false;
@@ -3634,7 +3634,7 @@ var require_resolve_props = __commonJS((exports) => {
3634
3634
  exports.resolveProps = resolveProps;
3635
3635
  });
3636
3636
 
3637
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/compose/util-contains-newline.js
3637
+ // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/compose/util-contains-newline.js
3638
3638
  var require_util_contains_newline = __commonJS((exports) => {
3639
3639
  function containsNewline(key) {
3640
3640
  if (!key)
@@ -3674,7 +3674,7 @@ var require_util_contains_newline = __commonJS((exports) => {
3674
3674
  exports.containsNewline = containsNewline;
3675
3675
  });
3676
3676
 
3677
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/compose/util-flow-indent-check.js
3677
+ // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/compose/util-flow-indent-check.js
3678
3678
  var require_util_flow_indent_check = __commonJS((exports) => {
3679
3679
  var utilContainsNewline = require_util_contains_newline();
3680
3680
  function flowIndentCheck(indent, fc, onError) {
@@ -3689,7 +3689,7 @@ var require_util_flow_indent_check = __commonJS((exports) => {
3689
3689
  exports.flowIndentCheck = flowIndentCheck;
3690
3690
  });
3691
3691
 
3692
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/compose/util-map-includes.js
3692
+ // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/compose/util-map-includes.js
3693
3693
  var require_util_map_includes = __commonJS((exports) => {
3694
3694
  var identity = require_identity();
3695
3695
  function mapIncludes(ctx, items, search) {
@@ -3702,7 +3702,7 @@ var require_util_map_includes = __commonJS((exports) => {
3702
3702
  exports.mapIncludes = mapIncludes;
3703
3703
  });
3704
3704
 
3705
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/compose/resolve-block-map.js
3705
+ // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/compose/resolve-block-map.js
3706
3706
  var require_resolve_block_map = __commonJS((exports) => {
3707
3707
  var Pair = require_Pair();
3708
3708
  var YAMLMap = require_YAMLMap();
@@ -3809,7 +3809,7 @@ var require_resolve_block_map = __commonJS((exports) => {
3809
3809
  exports.resolveBlockMap = resolveBlockMap;
3810
3810
  });
3811
3811
 
3812
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/compose/resolve-block-seq.js
3812
+ // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/compose/resolve-block-seq.js
3813
3813
  var require_resolve_block_seq = __commonJS((exports) => {
3814
3814
  var YAMLSeq = require_YAMLSeq();
3815
3815
  var resolveProps = require_resolve_props();
@@ -3857,7 +3857,7 @@ var require_resolve_block_seq = __commonJS((exports) => {
3857
3857
  exports.resolveBlockSeq = resolveBlockSeq;
3858
3858
  });
3859
3859
 
3860
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/compose/resolve-end.js
3860
+ // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/compose/resolve-end.js
3861
3861
  var require_resolve_end = __commonJS((exports) => {
3862
3862
  function resolveEnd(end, offset, reqSpace, onError) {
3863
3863
  let comment = "";
@@ -3897,7 +3897,7 @@ var require_resolve_end = __commonJS((exports) => {
3897
3897
  exports.resolveEnd = resolveEnd;
3898
3898
  });
3899
3899
 
3900
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/compose/resolve-flow-collection.js
3900
+ // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/compose/resolve-flow-collection.js
3901
3901
  var require_resolve_flow_collection = __commonJS((exports) => {
3902
3902
  var identity = require_identity();
3903
3903
  var Pair = require_Pair();
@@ -4088,7 +4088,7 @@ var require_resolve_flow_collection = __commonJS((exports) => {
4088
4088
  exports.resolveFlowCollection = resolveFlowCollection;
4089
4089
  });
4090
4090
 
4091
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/compose/compose-collection.js
4091
+ // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/compose/compose-collection.js
4092
4092
  var require_compose_collection = __commonJS((exports) => {
4093
4093
  var identity = require_identity();
4094
4094
  var Scalar = require_Scalar();
@@ -4150,7 +4150,7 @@ var require_compose_collection = __commonJS((exports) => {
4150
4150
  exports.composeCollection = composeCollection;
4151
4151
  });
4152
4152
 
4153
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/compose/resolve-block-scalar.js
4153
+ // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/compose/resolve-block-scalar.js
4154
4154
  var require_resolve_block_scalar = __commonJS((exports) => {
4155
4155
  var Scalar = require_Scalar();
4156
4156
  function resolveBlockScalar(ctx, scalar, onError) {
@@ -4343,7 +4343,7 @@ var require_resolve_block_scalar = __commonJS((exports) => {
4343
4343
  exports.resolveBlockScalar = resolveBlockScalar;
4344
4344
  });
4345
4345
 
4346
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/compose/resolve-flow-scalar.js
4346
+ // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/compose/resolve-flow-scalar.js
4347
4347
  var require_resolve_flow_scalar = __commonJS((exports) => {
4348
4348
  var Scalar = require_Scalar();
4349
4349
  var resolveEnd = require_resolve_end();
@@ -4559,7 +4559,7 @@ var require_resolve_flow_scalar = __commonJS((exports) => {
4559
4559
  exports.resolveFlowScalar = resolveFlowScalar;
4560
4560
  });
4561
4561
 
4562
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/compose/compose-scalar.js
4562
+ // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/compose/compose-scalar.js
4563
4563
  var require_compose_scalar = __commonJS((exports) => {
4564
4564
  var identity = require_identity();
4565
4565
  var Scalar = require_Scalar();
@@ -4637,7 +4637,7 @@ var require_compose_scalar = __commonJS((exports) => {
4637
4637
  exports.composeScalar = composeScalar;
4638
4638
  });
4639
4639
 
4640
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/compose/util-empty-scalar-position.js
4640
+ // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/compose/util-empty-scalar-position.js
4641
4641
  var require_util_empty_scalar_position = __commonJS((exports) => {
4642
4642
  function emptyScalarPosition(offset, before, pos) {
4643
4643
  if (before) {
@@ -4664,7 +4664,7 @@ var require_util_empty_scalar_position = __commonJS((exports) => {
4664
4664
  exports.emptyScalarPosition = emptyScalarPosition;
4665
4665
  });
4666
4666
 
4667
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/compose/compose-node.js
4667
+ // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/compose/compose-node.js
4668
4668
  var require_compose_node = __commonJS((exports) => {
4669
4669
  var Alias = require_Alias();
4670
4670
  var identity = require_identity();
@@ -4767,7 +4767,7 @@ var require_compose_node = __commonJS((exports) => {
4767
4767
  exports.composeNode = composeNode;
4768
4768
  });
4769
4769
 
4770
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/compose/compose-doc.js
4770
+ // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/compose/compose-doc.js
4771
4771
  var require_compose_doc = __commonJS((exports) => {
4772
4772
  var Document = require_Document();
4773
4773
  var composeNode = require_compose_node();
@@ -4807,7 +4807,7 @@ var require_compose_doc = __commonJS((exports) => {
4807
4807
  exports.composeDoc = composeDoc;
4808
4808
  });
4809
4809
 
4810
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/compose/composer.js
4810
+ // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/compose/composer.js
4811
4811
  var require_composer = __commonJS((exports) => {
4812
4812
  var node_process = __require("process");
4813
4813
  var directives = require_directives();
@@ -4996,7 +4996,7 @@ ${end.comment}` : end.comment;
4996
4996
  exports.Composer = Composer;
4997
4997
  });
4998
4998
 
4999
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/parse/cst-scalar.js
4999
+ // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/parse/cst-scalar.js
5000
5000
  var require_cst_scalar = __commonJS((exports) => {
5001
5001
  var resolveBlockScalar = require_resolve_block_scalar();
5002
5002
  var resolveFlowScalar = require_resolve_flow_scalar();
@@ -5186,7 +5186,7 @@ var require_cst_scalar = __commonJS((exports) => {
5186
5186
  exports.setScalarValue = setScalarValue;
5187
5187
  });
5188
5188
 
5189
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/parse/cst-stringify.js
5189
+ // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/parse/cst-stringify.js
5190
5190
  var require_cst_stringify = __commonJS((exports) => {
5191
5191
  var stringify = (cst) => ("type" in cst) ? stringifyToken(cst) : stringifyItem(cst);
5192
5192
  function stringifyToken(token) {
@@ -5244,7 +5244,7 @@ var require_cst_stringify = __commonJS((exports) => {
5244
5244
  exports.stringify = stringify;
5245
5245
  });
5246
5246
 
5247
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/parse/cst-visit.js
5247
+ // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/parse/cst-visit.js
5248
5248
  var require_cst_visit = __commonJS((exports) => {
5249
5249
  var BREAK = Symbol("break visit");
5250
5250
  var SKIP = Symbol("skip children");
@@ -5303,7 +5303,7 @@ var require_cst_visit = __commonJS((exports) => {
5303
5303
  exports.visit = visit;
5304
5304
  });
5305
5305
 
5306
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/parse/cst.js
5306
+ // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/parse/cst.js
5307
5307
  var require_cst = __commonJS((exports) => {
5308
5308
  var cstScalar = require_cst_scalar();
5309
5309
  var cstStringify = require_cst_stringify();
@@ -5404,7 +5404,7 @@ var require_cst = __commonJS((exports) => {
5404
5404
  exports.tokenType = tokenType;
5405
5405
  });
5406
5406
 
5407
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/parse/lexer.js
5407
+ // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/parse/lexer.js
5408
5408
  var require_lexer = __commonJS((exports) => {
5409
5409
  var cst = require_cst();
5410
5410
  function isEmpty(ch) {
@@ -5990,7 +5990,7 @@ var require_lexer = __commonJS((exports) => {
5990
5990
  exports.Lexer = Lexer;
5991
5991
  });
5992
5992
 
5993
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/parse/line-counter.js
5993
+ // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/parse/line-counter.js
5994
5994
  var require_line_counter = __commonJS((exports) => {
5995
5995
  class LineCounter {
5996
5996
  constructor() {
@@ -6018,7 +6018,7 @@ var require_line_counter = __commonJS((exports) => {
6018
6018
  exports.LineCounter = LineCounter;
6019
6019
  });
6020
6020
 
6021
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/parse/parser.js
6021
+ // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/parse/parser.js
6022
6022
  var require_parser = __commonJS((exports) => {
6023
6023
  var node_process = __require("process");
6024
6024
  var cst = require_cst();
@@ -6867,7 +6867,7 @@ var require_parser = __commonJS((exports) => {
6867
6867
  exports.Parser = Parser;
6868
6868
  });
6869
6869
 
6870
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/public-api.js
6870
+ // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/public-api.js
6871
6871
  var require_public_api = __commonJS((exports) => {
6872
6872
  var composer = require_composer();
6873
6873
  var Document = require_Document();
@@ -7001,7 +7001,7 @@ function deriveSlug(inputs, existing) {
7001
7001
  return `${base}_${n}`;
7002
7002
  }
7003
7003
 
7004
- // node_modules/.bun/boundary@2.0.0/node_modules/boundary/lib/index.js
7004
+ // ../switchroom-sec-1417/node_modules/.bun/boundary@2.0.0/node_modules/boundary/lib/index.js
7005
7005
  var require_lib = __commonJS((exports2) => {
7006
7006
  Object.defineProperty(exports2, "__esModule", { value: true });
7007
7007
  exports2.binarySearch = exports2.upperBound = exports2.lowerBound = exports2.compare = undefined;
@@ -7048,7 +7048,7 @@ var require_lib = __commonJS((exports2) => {
7048
7048
  exports2.binarySearch = binarySearch;
7049
7049
  });
7050
7050
 
7051
- // node_modules/.bun/structured-source@4.0.0/node_modules/structured-source/lib/structured-source.js
7051
+ // ../switchroom-sec-1417/node_modules/.bun/structured-source@4.0.0/node_modules/structured-source/lib/structured-source.js
7052
7052
  var require_structured_source = __commonJS((exports2) => {
7053
7053
  Object.defineProperty(exports2, "__esModule", { value: true });
7054
7054
  exports2.StructuredSource = undefined;
@@ -7103,13 +7103,13 @@ var require_structured_source = __commonJS((exports2) => {
7103
7103
  }
7104
7104
  exports2.StructuredSource = StructuredSource;
7105
7105
  });
7106
- // node_modules/.bun/@secretlint+core@12.2.0/node_modules/@secretlint/core/module/SecretLintSourceCodeImpl.js
7106
+ // ../switchroom-sec-1417/node_modules/.bun/@secretlint+core@12.2.0/node_modules/@secretlint/core/module/SecretLintSourceCodeImpl.js
7107
7107
  var import_structured_source;
7108
7108
  var init_SecretLintSourceCodeImpl = __esm(() => {
7109
7109
  import_structured_source = __toESM(require_structured_source(), 1);
7110
7110
  });
7111
7111
 
7112
- // node_modules/.bun/@secretlint+core@12.2.0/node_modules/@secretlint/core/module/helper/promise-event-emitter.js
7112
+ // ../switchroom-sec-1417/node_modules/.bun/@secretlint+core@12.2.0/node_modules/@secretlint/core/module/helper/promise-event-emitter.js
7113
7113
  class EventEmitter {
7114
7114
  #listeners = new Map;
7115
7115
  on(type, listener) {
@@ -7148,9 +7148,9 @@ class EventEmitter {
7148
7148
  return Array.from(this.#listeners.get(type) ?? []);
7149
7149
  }
7150
7150
  }
7151
- // node_modules/.bun/@secretlint+core@12.2.0/node_modules/@secretlint/core/module/RuleContext.js
7151
+ // ../switchroom-sec-1417/node_modules/.bun/@secretlint+core@12.2.0/node_modules/@secretlint/core/module/RuleContext.js
7152
7152
  var init_RuleContext = () => {};
7153
- // node_modules/.bun/@secretlint+profiler@12.2.0/node_modules/@secretlint/profiler/module/index.js
7153
+ // ../switchroom-sec-1417/node_modules/.bun/@secretlint+profiler@12.2.0/node_modules/@secretlint/profiler/module/index.js
7154
7154
  class SecretLintProfiler {
7155
7155
  perf;
7156
7156
  entries = [];
@@ -7207,7 +7207,7 @@ class SecretLintProfiler {
7207
7207
  }
7208
7208
  }
7209
7209
 
7210
- // node_modules/.bun/@secretlint+profiler@12.2.0/node_modules/@secretlint/profiler/module/node.js
7210
+ // ../switchroom-sec-1417/node_modules/.bun/@secretlint+profiler@12.2.0/node_modules/@secretlint/profiler/module/node.js
7211
7211
  import perf_hooks from "node:perf_hooks";
7212
7212
 
7213
7213
  class NullPerformanceObserver {
@@ -7222,19 +7222,19 @@ var init_node = __esm(() => {
7222
7222
  });
7223
7223
  });
7224
7224
 
7225
- // node_modules/.bun/@secretlint+core@12.2.0/node_modules/@secretlint/core/module/RunningEvents.js
7225
+ // ../switchroom-sec-1417/node_modules/.bun/@secretlint+core@12.2.0/node_modules/@secretlint/core/module/RunningEvents.js
7226
7226
  var init_RunningEvents = __esm(() => {
7227
7227
  init_node();
7228
7228
  });
7229
7229
 
7230
- // node_modules/.bun/@secretlint+core@12.2.0/node_modules/@secretlint/core/module/RulePresetContext.js
7230
+ // ../switchroom-sec-1417/node_modules/.bun/@secretlint+core@12.2.0/node_modules/@secretlint/core/module/RulePresetContext.js
7231
7231
  var init_RulePresetContext = __esm(() => {
7232
7232
  init_RuleContext();
7233
7233
  });
7234
- // node_modules/.bun/@secretlint+core@12.2.0/node_modules/@secretlint/core/module/messages/index.js
7234
+ // ../switchroom-sec-1417/node_modules/.bun/@secretlint+core@12.2.0/node_modules/@secretlint/core/module/messages/index.js
7235
7235
  var init_messages = () => {};
7236
7236
 
7237
- // node_modules/.bun/ms@2.1.3/node_modules/ms/index.js
7237
+ // ../switchroom-sec-1417/node_modules/.bun/ms@2.1.3/node_modules/ms/index.js
7238
7238
  var require_ms = __commonJS((exports2, module) => {
7239
7239
  var s = 1000;
7240
7240
  var m = s * 60;
@@ -7344,7 +7344,7 @@ var require_ms = __commonJS((exports2, module) => {
7344
7344
  }
7345
7345
  });
7346
7346
 
7347
- // node_modules/.bun/debug@4.4.3/node_modules/debug/src/common.js
7347
+ // ../switchroom-sec-1417/node_modules/.bun/debug@4.4.3/node_modules/debug/src/common.js
7348
7348
  var require_common = __commonJS((exports2, module) => {
7349
7349
  function setup(env) {
7350
7350
  createDebug.debug = createDebug;
@@ -7519,7 +7519,7 @@ var require_common = __commonJS((exports2, module) => {
7519
7519
  module.exports = setup;
7520
7520
  });
7521
7521
 
7522
- // node_modules/.bun/debug@4.4.3/node_modules/debug/src/browser.js
7522
+ // ../switchroom-sec-1417/node_modules/.bun/debug@4.4.3/node_modules/debug/src/browser.js
7523
7523
  var require_browser = __commonJS((exports2, module) => {
7524
7524
  exports2.formatArgs = formatArgs;
7525
7525
  exports2.save = save;
@@ -7679,7 +7679,7 @@ var require_browser = __commonJS((exports2, module) => {
7679
7679
  };
7680
7680
  });
7681
7681
 
7682
- // node_modules/.bun/has-flag@4.0.0/node_modules/has-flag/index.js
7682
+ // ../switchroom-sec-1417/node_modules/.bun/has-flag@4.0.0/node_modules/has-flag/index.js
7683
7683
  var require_has_flag = __commonJS((exports2, module) => {
7684
7684
  module.exports = (flag, argv = process.argv) => {
7685
7685
  const prefix = flag.startsWith("-") ? "" : flag.length === 1 ? "-" : "--";
@@ -7689,7 +7689,7 @@ var require_has_flag = __commonJS((exports2, module) => {
7689
7689
  };
7690
7690
  });
7691
7691
 
7692
- // node_modules/.bun/supports-color@7.2.0/node_modules/supports-color/index.js
7692
+ // ../switchroom-sec-1417/node_modules/.bun/supports-color@7.2.0/node_modules/supports-color/index.js
7693
7693
  var require_supports_color = __commonJS((exports2, module) => {
7694
7694
  var os = __require("os");
7695
7695
  var tty = __require("tty");
@@ -7788,7 +7788,7 @@ var require_supports_color = __commonJS((exports2, module) => {
7788
7788
  };
7789
7789
  });
7790
7790
 
7791
- // node_modules/.bun/debug@4.4.3/node_modules/debug/src/node.js
7791
+ // ../switchroom-sec-1417/node_modules/.bun/debug@4.4.3/node_modules/debug/src/node.js
7792
7792
  var require_node = __commonJS((exports2, module) => {
7793
7793
  var tty = __require("tty");
7794
7794
  var util3 = __require("util");
@@ -7959,7 +7959,7 @@ var require_node = __commonJS((exports2, module) => {
7959
7959
  };
7960
7960
  });
7961
7961
 
7962
- // node_modules/.bun/debug@4.4.3/node_modules/debug/src/index.js
7962
+ // ../switchroom-sec-1417/node_modules/.bun/debug@4.4.3/node_modules/debug/src/index.js
7963
7963
  var require_src = __commonJS((exports2, module) => {
7964
7964
  if (typeof process === "undefined" || process.type === "renderer" || false || process.__nwjs) {
7965
7965
  module.exports = require_browser();
@@ -7968,7 +7968,7 @@ var require_src = __commonJS((exports2, module) => {
7968
7968
  }
7969
7969
  });
7970
7970
 
7971
- // node_modules/.bun/@secretlint+core@12.2.0/node_modules/@secretlint/core/module/index.js
7971
+ // ../switchroom-sec-1417/node_modules/.bun/@secretlint+core@12.2.0/node_modules/@secretlint/core/module/index.js
7972
7972
  var import_debug, debug;
7973
7973
  var init_module = __esm(() => {
7974
7974
  init_SecretLintSourceCodeImpl();
@@ -7981,7 +7981,7 @@ var init_module = __esm(() => {
7981
7981
  debug = import_debug.default("@secretlint/core");
7982
7982
  });
7983
7983
 
7984
- // node_modules/.bun/@secretlint+secretlint-rule-preset-recommend@12.2.0/node_modules/@secretlint/secretlint-rule-preset-recommend/module/index.js
7984
+ // ../switchroom-sec-1417/node_modules/.bun/@secretlint+secretlint-rule-preset-recommend@12.2.0/node_modules/@secretlint/secretlint-rule-preset-recommend/module/index.js
7985
7985
  function requireLodash_uniq() {
7986
7986
  if (hasRequiredLodash_uniq)
7987
7987
  return lodash_uniq;
@@ -9674,7 +9674,7 @@ import { readFileSync as readFileSync2, existsSync as existsSync3 } from "node:f
9674
9674
  import { homedir } from "node:os";
9675
9675
  import { resolve as resolve3 } from "node:path";
9676
9676
 
9677
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/index.js
9677
+ // ../switchroom-sec-1417/node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/index.js
9678
9678
  var composer = require_composer();
9679
9679
  var Document = require_Document();
9680
9680
  var Schema = require_Schema();
@@ -9720,7 +9720,7 @@ var $stringify = publicApi.stringify;
9720
9720
  var $visit = visit.visit;
9721
9721
  var $visitAsync = visit.visitAsync;
9722
9722
 
9723
- // node_modules/.bun/zod@3.25.76/node_modules/zod/v3/external.js
9723
+ // ../switchroom-sec-1417/node_modules/.bun/zod@3.25.76/node_modules/zod/v3/external.js
9724
9724
  var exports_external = {};
9725
9725
  __export(exports_external, {
9726
9726
  void: () => voidType,
@@ -9832,7 +9832,7 @@ __export(exports_external, {
9832
9832
  BRAND: () => BRAND
9833
9833
  });
9834
9834
 
9835
- // node_modules/.bun/zod@3.25.76/node_modules/zod/v3/helpers/util.js
9835
+ // ../switchroom-sec-1417/node_modules/.bun/zod@3.25.76/node_modules/zod/v3/helpers/util.js
9836
9836
  var util;
9837
9837
  (function(util2) {
9838
9838
  util2.assertEqual = (_) => {};
@@ -9963,7 +9963,7 @@ var getParsedType = (data) => {
9963
9963
  }
9964
9964
  };
9965
9965
 
9966
- // node_modules/.bun/zod@3.25.76/node_modules/zod/v3/ZodError.js
9966
+ // ../switchroom-sec-1417/node_modules/.bun/zod@3.25.76/node_modules/zod/v3/ZodError.js
9967
9967
  var ZodIssueCode = util.arrayToEnum([
9968
9968
  "invalid_type",
9969
9969
  "invalid_literal",
@@ -10082,7 +10082,7 @@ ZodError.create = (issues) => {
10082
10082
  return error;
10083
10083
  };
10084
10084
 
10085
- // node_modules/.bun/zod@3.25.76/node_modules/zod/v3/locales/en.js
10085
+ // ../switchroom-sec-1417/node_modules/.bun/zod@3.25.76/node_modules/zod/v3/locales/en.js
10086
10086
  var errorMap = (issue, _ctx) => {
10087
10087
  let message;
10088
10088
  switch (issue.code) {
@@ -10185,7 +10185,7 @@ var errorMap = (issue, _ctx) => {
10185
10185
  };
10186
10186
  var en_default = errorMap;
10187
10187
 
10188
- // node_modules/.bun/zod@3.25.76/node_modules/zod/v3/errors.js
10188
+ // ../switchroom-sec-1417/node_modules/.bun/zod@3.25.76/node_modules/zod/v3/errors.js
10189
10189
  var overrideErrorMap = en_default;
10190
10190
  function setErrorMap(map) {
10191
10191
  overrideErrorMap = map;
@@ -10193,7 +10193,7 @@ function setErrorMap(map) {
10193
10193
  function getErrorMap() {
10194
10194
  return overrideErrorMap;
10195
10195
  }
10196
- // node_modules/.bun/zod@3.25.76/node_modules/zod/v3/helpers/parseUtil.js
10196
+ // ../switchroom-sec-1417/node_modules/.bun/zod@3.25.76/node_modules/zod/v3/helpers/parseUtil.js
10197
10197
  var makeIssue = (params) => {
10198
10198
  const { data, path, errorMaps, issueData } = params;
10199
10199
  const fullPath = [...path, ...issueData.path || []];
@@ -10299,14 +10299,14 @@ var isAborted = (x) => x.status === "aborted";
10299
10299
  var isDirty = (x) => x.status === "dirty";
10300
10300
  var isValid = (x) => x.status === "valid";
10301
10301
  var isAsync = (x) => typeof Promise !== "undefined" && x instanceof Promise;
10302
- // node_modules/.bun/zod@3.25.76/node_modules/zod/v3/helpers/errorUtil.js
10302
+ // ../switchroom-sec-1417/node_modules/.bun/zod@3.25.76/node_modules/zod/v3/helpers/errorUtil.js
10303
10303
  var errorUtil;
10304
10304
  (function(errorUtil2) {
10305
10305
  errorUtil2.errToObj = (message) => typeof message === "string" ? { message } : message || {};
10306
10306
  errorUtil2.toString = (message) => typeof message === "string" ? message : message?.message;
10307
10307
  })(errorUtil || (errorUtil = {}));
10308
10308
 
10309
- // node_modules/.bun/zod@3.25.76/node_modules/zod/v3/types.js
10309
+ // ../switchroom-sec-1417/node_modules/.bun/zod@3.25.76/node_modules/zod/v3/types.js
10310
10310
  class ParseInputLazyPath {
10311
10311
  constructor(parent, value, path, key) {
10312
10312
  this._cachedPath = [];
@@ -13708,7 +13708,11 @@ var ScheduleEntrySchema = exports_external.object({
13708
13708
  cron: exports_external.string().describe("Cron expression (e.g., '0 8 * * *')"),
13709
13709
  prompt: exports_external.string().describe("Prompt to send at the scheduled time"),
13710
13710
  model: exports_external.string().optional().describe("DEPRECATED / IGNORED. Pre-v0.8 the singleton scheduler ran each " + "task as an isolated headless invocation and could set --model per " + "task. Post cron-fold-in (v0.8) the fire is injected into the agent's " + "running session, so it always uses the agent's configured model " + "— this field has no effect. Accepted (optional) only so existing " + "configs keep validating; set the model at the agent level instead. " + "See docs/scheduling.md."),
13711
- secrets: exports_external.array(exports_external.string().regex(/^[a-zA-Z0-9_\-/]+$/, "Secret key names must contain only alphanumeric characters, underscores, hyphens, and forward slashes")).default([]).describe("Vault key names this cron task may read via the vault-broker daemon. " + "Empty by default — broker requests for unlisted keys are denied. " + "Note: this is misconfiguration protection (a typo in cron-A doesn't " + "accidentally read cron-B's keys) rather than a security boundary — " + "anyone who can edit cron scripts can also edit switchroom.yaml, and " + "anyone with the vault passphrase can read the vault file directly. " + "See docs/configuration.md for the full framing.")
13711
+ secrets: exports_external.array(exports_external.string().regex(/^[a-zA-Z0-9_\-/]+$/, "Secret key names must contain only alphanumeric characters, underscores, hyphens, and forward slashes")).default([]).describe("Vault key names this cron task may read via the vault-broker daemon. " + "Empty by default — broker requests for unlisted keys are denied. " + "Note: this is misconfiguration protection (a typo in cron-A doesn't " + "accidentally read cron-B's keys) rather than a security boundary — " + "anyone who can edit cron scripts can also edit switchroom.yaml, and " + "anyone with the vault passphrase can read the vault file directly. " + "See docs/configuration.md for the full framing."),
13712
+ topic: exports_external.union([
13713
+ exports_external.string().min(1, "topic alias must be non-empty"),
13714
+ exports_external.number().int().positive("topic ID must be a positive integer")
13715
+ ]).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 — typos surface immediately. " + "See docs/rfcs/supergroup-mode.md.")
13712
13716
  });
13713
13717
  var AgentSoulSchema = exports_external.object({
13714
13718
  name: exports_external.string().describe("Agent persona name (e.g., 'Coach', 'Sage')"),
@@ -13728,7 +13732,8 @@ var AgentMemorySchema = exports_external.object({
13728
13732
  recall: exports_external.object({
13729
13733
  max_memories: exports_external.number().int().min(0).optional().describe("Cap on the number of memories injected into the prompt by " + "auto-recall, regardless of token budget. Plugin default is 12. " + "0 disables the cap (all memories Hindsight returns are injected)."),
13730
13734
  cache_ttl_secs: exports_external.number().int().min(0).optional().describe("Per-session recall cache TTL in seconds. When > 0, identical " + "(prompt, bank) within the same session reuse the cached recall " + "result instead of round-tripping to Hindsight. 0 disables. " + "Default is 600 (10 min) for switchroom-managed agents."),
13731
- min_overlap: exports_external.number().min(0).max(1).optional().describe("Minimum Jaccard token overlap [0.0–1.0] between the user " + "prompt and a memory's text for the memory to be injected. " + "Drops low-relevance matches before the count cap so weak hits " + "don't fill the slot on real queries. 0.0 disables (default — " + "current behaviour). Try 0.10–0.20 to start; observe the " + "`overlap_dropped` field via `switchroom memory recall-log`.")
13735
+ min_overlap: exports_external.number().min(0).max(1).optional().describe("Minimum Jaccard token overlap [0.0–1.0] between the user " + "prompt and a memory's text for the memory to be injected. " + "Drops low-relevance matches before the count cap so weak hits " + "don't fill the slot on real queries. 0.0 disables (default — " + "current behaviour). Try 0.10–0.20 to start; observe the " + "`overlap_dropped` field via `switchroom memory recall-log`."),
13736
+ topic_filter_mode: exports_external.enum(["soft-preamble", "hard-filter"]).optional().describe("Supergroup-mode cross-topic memory behaviour. Default " + "(unset) → soft-preamble: recall returns memories from all " + "topics, and a 'Current topic: …' preamble tells the model " + "to self-scope. hard-filter: drop any recalled memory whose " + "metadata.thread_id differs from the active inbound's topic. " + "Flip to hard-filter when the recall_log shows binding " + "failures (model surfacing the right memory but applying " + "it to the wrong topic).")
13732
13737
  }).optional().describe("Auto-recall tuning knobs")
13733
13738
  }).optional();
13734
13739
  var HookEntrySchema = exports_external.object({
@@ -13820,8 +13825,35 @@ var TelegramChannelSchema = exports_external.object({
13820
13825
  }).optional().describe("Auto-dispatch rules: when a verified webhook event matches a rule, " + "inject the rendered prompt into the agent's live session (#1625). " + "Supports cooldowns, quiet hours, and label/action matchers. " + "Off by default — opt in per agent. See src/web/webhook-dispatch.ts."),
13821
13826
  webhook_rate_limit: exports_external.object({
13822
13827
  rpm: exports_external.number().int().positive()
13823
- }).optional().describe("Per-source rate limit for the webhook ingest path (#714). " + "Off by default — 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.")
13824
- }).optional();
13828
+ }).optional().describe("Per-source rate limit for the webhook ingest path (#714). " + "Off by default — 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."),
13829
+ 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 — 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."),
13830
+ 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. Required when `chat_id` is set. " + "Telegram's General topic is `id=1` at MTProto but sends omit the " + "field — the outbound wrapper strips `message_thread_id === 1` " + "on send. Forbidden when `dm_only: true`."),
13831
+ 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 → alerts, hostd → admin, etc.). " + "Cascades per-key through defaults → profile → agent.")
13832
+ }).optional().superRefine((tg, ctx) => {
13833
+ if (!tg)
13834
+ return;
13835
+ if (tg.chat_id != null && tg.default_topic_id == null) {
13836
+ ctx.addIssue({
13837
+ code: exports_external.ZodIssueCode.custom,
13838
+ message: "`channels.telegram.chat_id` requires `default_topic_id` — supergroup-mode agents need a fallback topic for unclassified outbounds.",
13839
+ path: ["default_topic_id"]
13840
+ });
13841
+ }
13842
+ if (tg.default_topic_id != null && tg.chat_id == null) {
13843
+ ctx.addIssue({
13844
+ code: exports_external.ZodIssueCode.custom,
13845
+ message: "`channels.telegram.default_topic_id` requires `chat_id` — default_topic_id is only meaningful when the agent owns its own supergroup.",
13846
+ path: ["chat_id"]
13847
+ });
13848
+ }
13849
+ if (tg.topic_aliases != null && tg.chat_id == null) {
13850
+ ctx.addIssue({
13851
+ code: exports_external.ZodIssueCode.custom,
13852
+ message: "`channels.telegram.topic_aliases` requires `chat_id` — aliases only resolve in supergroup-owned mode.",
13853
+ path: ["topic_aliases"]
13854
+ });
13855
+ }
13856
+ });
13825
13857
  var ChannelsSchema = exports_external.object({
13826
13858
  telegram: TelegramChannelSchema
13827
13859
  }).optional();
@@ -13838,6 +13870,12 @@ var GoogleWorkspaceConfigSchema = exports_external.object({
13838
13870
  approvers: exports_external.array(ApproverIdSchema).min(1).describe("Array of numeric Telegram user IDs authorized to approve drive onboarding. " + "At least one must be specified."),
13839
13871
  tier: GoogleWorkspaceTierSchema.optional().describe("RFC G Phase 1: which upstream MCP tier to expose. " + "core (default) = ~16 tools (Drive+Docs+Sheets+Calendar). " + "extended = ~40 tools (+Slides, Forms, Tasks, Chat). " + "complete = ~60+ tools (+Gmail; not recommended yet — see RFC G §5).")
13840
13872
  }).optional();
13873
+ var MicrosoftWorkspaceConfigSchema = exports_external.object({
13874
+ microsoft_client_id: exports_external.string().min(1).describe("Microsoft OAuth application (client) ID from Entra portal " + "(literal string or vault reference e.g. " + "'vault:microsoft-oauth-client-id')."),
13875
+ microsoft_client_secret: exports_external.string().min(1).optional().describe("Microsoft OAuth client secret. Optional — public-client apps " + "(Mobile + Desktop platform with 'Allow public client flows' " + "enabled) work without a secret; confidential clients pass " + "one. Either literal or vault reference e.g. " + "'vault:microsoft-oauth-client-secret'."),
13876
+ authority: exports_external.string().url().optional().describe("Microsoft authority endpoint. Defaults to " + "'https://login.microsoftonline.com/common' which accepts both " + "personal MSA and work/school tenants. Override only for " + "single-tenant deployments."),
13877
+ org_mode: exports_external.boolean().optional().describe("Opt-in to Teams + SharePoint surfaces (RFC §6.4). When true, " + "the v1 scope set adds Sites.ReadWrite.All AND the launcher " + "spawns softeria with --org-mode. Defaults to false — personal " + "MSA + standard work surfaces only. Flipping for an existing " + "consented account requires re-running 'auth microsoft account " + "add --replace' to consent the additional scope.")
13878
+ }).optional();
13841
13879
  var AgentGoogleWorkspaceConfigSchema = exports_external.object({
13842
13880
  account: exports_external.string().regex(/^[^@\s:]+@[^@\s:]+\.[^@\s:]+$/, {
13843
13881
  message: "google_workspace.account must be a Google account email like " + "'alice@example.com' (colons not allowed)"
@@ -13845,6 +13883,12 @@ var AgentGoogleWorkspaceConfigSchema = exports_external.object({
13845
13883
  approvers: exports_external.array(ApproverIdSchema).min(1).optional().describe("Per-agent approver override. When set, replaces (does not extend) " + "the top-level drive.approvers list for this agent's onboarding card."),
13846
13884
  tier: GoogleWorkspaceTierSchema.optional().describe("Per-agent tier override (RFC G Phase 1). When set, replaces the " + "top-level google_workspace.tier for this agent. Common case: most " + "agents on `core`, one specialist on `extended` for Slides access.")
13847
13885
  }).optional();
13886
+ var AgentMicrosoftWorkspaceConfigSchema = exports_external.object({
13887
+ account: exports_external.string().regex(/^[^@\s:]+@[^@\s:]+\.[^@\s:]+$/, {
13888
+ message: "microsoft_workspace.account must be a Microsoft account email like " + "'alice@outlook.com' or 'alice@contoso.com' (colons not allowed)"
13889
+ }).transform((v) => v.trim().toLowerCase()).optional().describe("RFC #1873: the Microsoft account this agent uses for the M365 MCP. " + "Must be a key in top-level `microsoft_accounts:` with this agent " + "listed in its `enabled_for[]`. Read by the auth-broker " + "(get-credentials, provider=microsoft) and by the scaffold to " + "decide whether to emit the `ms-365` MCP entry. Normalized to " + "lowercase so it matches the microsoft_accounts key (which is " + "also normalized)."),
13890
+ org_mode: exports_external.boolean().optional().describe("Per-agent org_mode override (RFC #1873 §6.4). When set, replaces " + "the top-level microsoft_workspace.org_mode for this agent. " + "Defaults to top-level value (which defaults to false).")
13891
+ }).optional();
13848
13892
  var ReactionsSchema = exports_external.object({
13849
13893
  enabled: exports_external.boolean().optional().describe("Master switch for the reaction-trigger path. When false, " + "reactions are still persisted via recordReaction but never " + "dispatched to the agent as synthetic inbound turns. Default true."),
13850
13894
  trigger_emojis: exports_external.array(exports_external.string()).optional().describe("Emoji allowlist that triggers a synthetic inbound when reacted " + "to a bot message. Default ['\uD83D\uDC4E', '❌', '\uD83D\uDC4D', '✅']. Cascade " + "mode: REPLACE (not union) — setting this at a layer replaces " + "lower layers entirely, so an operator can narrow to [] to " + "disable triggering without flipping `enabled`."),
@@ -13980,6 +14024,7 @@ var AgentSchema = exports_external.object({
13980
14024
  code_repos: exports_external.array(CodeRepoEntrySchema).optional().describe("Git repositories this agent is allowed to claim worktrees from. " + "Each entry provides a short name alias, a source path, and an " + "optional concurrency cap (default 5). When code_repos is set, " + "claim_worktree accepts the alias as the repo argument. " + "Absolute paths may always be passed regardless of this list."),
13981
14025
  drive: AgentGoogleWorkspaceConfigSchema.describe("RFC D legacy key — 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 — they live at the top level."),
13982
14026
  google_workspace: AgentGoogleWorkspaceConfigSchema.describe("RFC G canonical key. Per-agent Google Workspace overrides — 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 — they live at the top level. " + "Mutually exclusive with `drive:` on the same agent (loader fails fast " + "if both are set)."),
14027
+ microsoft_workspace: AgentMicrosoftWorkspaceConfigSchema.describe("RFC #1873 (Microsoft 365 integration). Per-agent Microsoft Workspace " + "override — 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."),
13983
14028
  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({
13984
14029
  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."),
13985
14030
  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.")
@@ -13994,6 +14039,33 @@ var AgentSchema = exports_external.object({
13994
14039
  pids_limit: exports_external.number().int().positive().optional(),
13995
14040
  cpus: exports_external.number().positive().optional()
13996
14041
  }).optional()
14042
+ }).superRefine((agent, ctx) => {
14043
+ if (agent.dm_only !== true)
14044
+ return;
14045
+ const tg = agent.channels?.telegram;
14046
+ if (tg == null)
14047
+ return;
14048
+ if (tg.chat_id != null) {
14049
+ ctx.addIssue({
14050
+ code: exports_external.ZodIssueCode.custom,
14051
+ message: "`dm_only: true` forbids `channels.telegram.chat_id` — DM-only agents have their own private chat, not a supergroup.",
14052
+ path: ["channels", "telegram", "chat_id"]
14053
+ });
14054
+ }
14055
+ if (tg.default_topic_id != null) {
14056
+ ctx.addIssue({
14057
+ code: exports_external.ZodIssueCode.custom,
14058
+ message: "`dm_only: true` forbids `channels.telegram.default_topic_id` — DMs don't have forum topics.",
14059
+ path: ["channels", "telegram", "default_topic_id"]
14060
+ });
14061
+ }
14062
+ if (tg.topic_aliases != null) {
14063
+ ctx.addIssue({
14064
+ code: exports_external.ZodIssueCode.custom,
14065
+ message: "`dm_only: true` forbids `channels.telegram.topic_aliases` — DMs don't have forum topics.",
14066
+ path: ["channels", "telegram", "topic_aliases"]
14067
+ });
14068
+ }
13997
14069
  });
13998
14070
  var TelegramConfigSchema = exports_external.object({
13999
14071
  bot_token: exports_external.string().describe("Telegram bot token or vault reference (e.g., 'vault:telegram-bot-token')"),
@@ -14075,6 +14147,7 @@ var SwitchroomConfigSchema = exports_external.object({
14075
14147
  }).optional().describe("Switchroom-auth-broker configuration (RFC H). Fleet-wide active account, " + "fallback order, admin-agent ACL, and ephemeral-consumer surface. " + "Required from the v0.8+ schema onwards; pre-v0.8 fleets are migrated " + "in-place by `switchroom apply` (see src/auth/migrate-schema.ts)."),
14076
14148
  drive: GoogleWorkspaceConfigSchema.describe("RFC D legacy key — 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."),
14077
14149
  google_workspace: GoogleWorkspaceConfigSchema.describe("RFC G canonical key. Top-level Google Workspace configuration — " + "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)."),
14150
+ microsoft_workspace: MicrosoftWorkspaceConfigSchema.describe("RFC #1873 (Microsoft 365 integration). Top-level Microsoft Workspace " + "configuration — 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."),
14078
14151
  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."),
14079
14152
  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)."),
14080
14153
  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. Currently scopes the opt-in flag and rate cap for the new " + "`config_propose_edit` verb (PR 1a — disabled by default)."),
@@ -14085,6 +14158,13 @@ var SwitchroomConfigSchema = exports_external.object({
14085
14158
  message: "Agent name must match the standard agent-name pattern"
14086
14159
  })).describe("Agent slugs that may read this account's vault slots " + "(`google:<account>:refresh_token` etc). Per-agent ACL is " + "enforced at the broker, not at the agent identity layer — " + "the agent still authenticates via socket-path-as-identity " + "per RFC D §4.1, broker just gates the cross-agent token share.")
14087
14160
  })).optional().describe("RFC G Phase 2: per-Google-account ACL for vault slots holding " + "OAuth refresh tokens. Maps account email → list of agents " + "permitted to read that account's slots. Written by `switchroom " + "auth google enable|disable` (Phase 3); read by the broker on " + "every Google slot access. Replaces RFC D's per-agent vault slot " + "scope (which can't express 'two agents share one Google account')."),
14161
+ microsoft_accounts: exports_external.record(exports_external.string().regex(/^[^@\s:]+@[^@\s:]+\.[^@\s:]+$/, {
14162
+ message: "Account key must be a Microsoft account email like 'alice@outlook.com' or 'alice@contoso.com' (colons not allowed)"
14163
+ }).transform((v) => v.trim().toLowerCase()), exports_external.object({
14164
+ enabled_for: exports_external.array(exports_external.string().regex(/^[a-z0-9][a-z0-9_-]{0,50}$/, {
14165
+ message: "Agent name must match the standard agent-name pattern"
14166
+ })).describe("Agent slugs that may read this Microsoft account's broker " + "credentials. Per-agent ACL enforced at the broker; agents " + "still authenticate via socket-path-as-identity, broker just " + "gates the cross-agent token share. Mirrors google_accounts.")
14167
+ })).optional().describe("RFC #1873: per-Microsoft-account ACL. Maps account email → list of " + "agents permitted to use that account's broker credentials. Written " + "by `switchroom auth microsoft enable|disable`; read by the broker " + "on get-credentials with provider=microsoft."),
14088
14168
  defaults: AgentDefaultsSchema.describe("Implicit bottom-of-cascade profile applied to every agent before " + "per-agent config and `extends:` resolution. Tools, mcp_servers, and " + "schedule are unioned/concatenated; scalars and nested objects are " + "shallow-merged with per-agent values winning."),
14089
14169
  profiles: exports_external.record(exports_external.string(), ProfileSchema).optional().describe("Named profile definitions. Agents reference via `extends: <name>`. " + "Inline profiles declared here take priority over filesystem " + "profiles/<name>/ directories when both exist."),
14090
14170
  agents: exports_external.record(exports_external.string().regex(/^[a-z0-9][a-z0-9_-]{0,50}$/, {
@@ -14264,130 +14344,6 @@ function applyAgentOverlays(config) {
14264
14344
  return { config, warnings };
14265
14345
  }
14266
14346
 
14267
- // src/config/loader.ts
14268
- class ConfigError extends Error {
14269
- details;
14270
- constructor(message, details) {
14271
- super(message);
14272
- this.details = details;
14273
- this.name = "ConfigError";
14274
- }
14275
- }
14276
- function formatZodErrors(error) {
14277
- return error.errors.map((e) => {
14278
- const path = e.path.join(".");
14279
- return ` ${path}: ${e.message}`;
14280
- });
14281
- }
14282
- function coerceLegacyGoogleWorkspaceKeys(parsed, filePath) {
14283
- const stableStringify = (v) => {
14284
- if (v === null || typeof v !== "object")
14285
- return JSON.stringify(v);
14286
- if (Array.isArray(v))
14287
- return `[${v.map(stableStringify).join(",")}]`;
14288
- const obj = v;
14289
- const keys = Object.keys(obj).sort();
14290
- return `{${keys.map((k) => `${JSON.stringify(k)}:${stableStringify(obj[k])}`).join(",")}}`;
14291
- };
14292
- const aliasInPlace = (obj, where) => {
14293
- const a = obj.drive;
14294
- const b = obj.google_workspace;
14295
- if (a !== undefined && b !== undefined) {
14296
- if (stableStringify(a) !== stableStringify(b)) {
14297
- throw new ConfigError(`Both \`drive:\` and \`google_workspace:\` are set on ${where} in ${filePath} with different values.`, [
14298
- " These are aliases — pick one and remove the other.",
14299
- " `google_workspace:` is the RFC G canonical key; `drive:` is the legacy alias.",
14300
- " Allowed during transition: setting both with identical values."
14301
- ]);
14302
- }
14303
- return;
14304
- }
14305
- if (a !== undefined && b === undefined)
14306
- obj.google_workspace = a;
14307
- if (b !== undefined && a === undefined)
14308
- obj.drive = b;
14309
- };
14310
- aliasInPlace(parsed, "the top level");
14311
- const agents = parsed.agents;
14312
- if (agents && typeof agents === "object" && !Array.isArray(agents)) {
14313
- for (const [name, agent] of Object.entries(agents)) {
14314
- if (agent && typeof agent === "object" && !Array.isArray(agent)) {
14315
- aliasInPlace(agent, `agent \`${name}\``);
14316
- }
14317
- }
14318
- }
14319
- }
14320
- function findConfigFile(startDir) {
14321
- const envPath = process.env.SWITCHROOM_CONFIG;
14322
- const home2 = homedir();
14323
- const userDir = resolve3(home2, ".switchroom");
14324
- const searchPaths = [
14325
- envPath ? resolve3(envPath) : null,
14326
- startDir ? resolve3(startDir, "switchroom.yaml") : null,
14327
- startDir ? resolve3(startDir, "switchroom.yml") : null,
14328
- startDir ? resolve3(startDir, "clerk.yaml") : null,
14329
- startDir ? resolve3(startDir, "clerk.yml") : null,
14330
- resolve3(process.cwd(), "switchroom.yaml"),
14331
- resolve3(process.cwd(), "switchroom.yml"),
14332
- resolve3(process.cwd(), "clerk.yaml"),
14333
- resolve3(process.cwd(), "clerk.yml"),
14334
- resolve3(userDir, "switchroom.yaml"),
14335
- resolve3(userDir, "switchroom.yml"),
14336
- resolve3(userDir, "clerk.yaml"),
14337
- resolve3(userDir, "clerk.yml")
14338
- ].filter(Boolean);
14339
- for (const path of searchPaths) {
14340
- if (existsSync3(path)) {
14341
- return path;
14342
- }
14343
- }
14344
- throw new ConfigError("No switchroom.yaml found", searchPaths.map((p) => ` Searched: ${p}`));
14345
- }
14346
- function loadConfig(configPath) {
14347
- const filePath = configPath ?? findConfigFile();
14348
- if (!existsSync3(filePath)) {
14349
- throw new ConfigError(`Config file not found: ${filePath}`);
14350
- }
14351
- let raw;
14352
- try {
14353
- raw = readFileSync2(filePath, "utf-8");
14354
- } catch (err) {
14355
- throw new ConfigError(`Failed to read config file: ${filePath}`, [
14356
- ` ${err.message}`
14357
- ]);
14358
- }
14359
- let parsed;
14360
- try {
14361
- parsed = $parse(raw);
14362
- } catch (err) {
14363
- throw new ConfigError(`Invalid YAML in ${filePath}`, [
14364
- ` ${err.message}`
14365
- ]);
14366
- }
14367
- if (parsed && typeof parsed === "object" && !Array.isArray(parsed) && parsed.clerk !== undefined && parsed.switchroom === undefined) {
14368
- const obj = parsed;
14369
- obj.switchroom = obj.clerk;
14370
- delete obj.clerk;
14371
- }
14372
- if (parsed && typeof parsed === "object" && !Array.isArray(parsed)) {
14373
- coerceLegacyGoogleWorkspaceKeys(parsed, filePath);
14374
- }
14375
- let config;
14376
- try {
14377
- config = SwitchroomConfigSchema.parse(parsed);
14378
- } catch (err) {
14379
- if (err instanceof ZodError) {
14380
- throw new ConfigError("Invalid switchroom.yaml configuration", formatZodErrors(err));
14381
- }
14382
- throw err;
14383
- }
14384
- applyAgentOverlays(config);
14385
- return config;
14386
- }
14387
-
14388
- // src/agents/compose.ts
14389
- import { createHash } from "node:crypto";
14390
-
14391
14347
  // src/config/merge.ts
14392
14348
  function dedupe(items) {
14393
14349
  const seen = new Set;
@@ -14416,6 +14372,20 @@ function deepMergeJson(base, override) {
14416
14372
  }
14417
14373
  return out;
14418
14374
  }
14375
+ function resolveAgentConfig(defaults, profiles, agent) {
14376
+ if (!mergeAgentConfig.suppressDeprecationLogs && !mergeAgentConfig.notifiedWorkerIsolationMove && defaults?.subagents?.worker?.isolation === "worktree") {
14377
+ mergeAgentConfig.notifiedWorkerIsolationMove = true;
14378
+ console.warn("[switchroom] NOTICE: defaults.subagents.worker.isolation moved to the " + "`coding` profile in switchroom 0.6.6 (#682). Agents extending coding " + "still get worktree-isolated workers; other agents would have hard-failed " + "the first time they delegated. See CHANGELOG.");
14379
+ }
14380
+ const name = agent.extends;
14381
+ const profile = name && profiles ? profiles[name] : undefined;
14382
+ if (!profile) {
14383
+ return mergeAgentConfig(defaults, agent);
14384
+ }
14385
+ const { extends: _unused, ...profileWithoutExtends } = profile;
14386
+ const layered = mergeAgentConfig(defaults, profileWithoutExtends);
14387
+ return mergeAgentConfig(layered, agent);
14388
+ }
14419
14389
  function foldDeprecatedTelegramFields(config) {
14420
14390
  const c = config;
14421
14391
  const root = c;
@@ -14683,6 +14653,156 @@ function mergeAgentConfig(defaultsIn, agentIn) {
14683
14653
  mergeAgentConfig.notifiedWorkerIsolationMove = false;
14684
14654
  })(mergeAgentConfig ||= {});
14685
14655
 
14656
+ // src/config/loader.ts
14657
+ class ConfigError extends Error {
14658
+ details;
14659
+ constructor(message, details) {
14660
+ super(message);
14661
+ this.details = details;
14662
+ this.name = "ConfigError";
14663
+ }
14664
+ }
14665
+ function formatZodErrors(error) {
14666
+ return error.errors.map((e) => {
14667
+ const path = e.path.join(".");
14668
+ return ` ${path}: ${e.message}`;
14669
+ });
14670
+ }
14671
+ function coerceLegacyGoogleWorkspaceKeys(parsed, filePath) {
14672
+ const stableStringify = (v) => {
14673
+ if (v === null || typeof v !== "object")
14674
+ return JSON.stringify(v);
14675
+ if (Array.isArray(v))
14676
+ return `[${v.map(stableStringify).join(",")}]`;
14677
+ const obj = v;
14678
+ const keys = Object.keys(obj).sort();
14679
+ return `{${keys.map((k) => `${JSON.stringify(k)}:${stableStringify(obj[k])}`).join(",")}}`;
14680
+ };
14681
+ const aliasInPlace = (obj, where) => {
14682
+ const a = obj.drive;
14683
+ const b = obj.google_workspace;
14684
+ if (a !== undefined && b !== undefined) {
14685
+ if (stableStringify(a) !== stableStringify(b)) {
14686
+ throw new ConfigError(`Both \`drive:\` and \`google_workspace:\` are set on ${where} in ${filePath} with different values.`, [
14687
+ " These are aliases — pick one and remove the other.",
14688
+ " `google_workspace:` is the RFC G canonical key; `drive:` is the legacy alias.",
14689
+ " Allowed during transition: setting both with identical values."
14690
+ ]);
14691
+ }
14692
+ return;
14693
+ }
14694
+ if (a !== undefined && b === undefined)
14695
+ obj.google_workspace = a;
14696
+ if (b !== undefined && a === undefined)
14697
+ obj.drive = b;
14698
+ };
14699
+ aliasInPlace(parsed, "the top level");
14700
+ const agents = parsed.agents;
14701
+ if (agents && typeof agents === "object" && !Array.isArray(agents)) {
14702
+ for (const [name, agent] of Object.entries(agents)) {
14703
+ if (agent && typeof agent === "object" && !Array.isArray(agent)) {
14704
+ aliasInPlace(agent, `agent \`${name}\``);
14705
+ }
14706
+ }
14707
+ }
14708
+ }
14709
+ function findConfigFile(startDir) {
14710
+ const envPath = process.env.SWITCHROOM_CONFIG;
14711
+ const home2 = homedir();
14712
+ const userDir = resolve3(home2, ".switchroom");
14713
+ const searchPaths = [
14714
+ envPath ? resolve3(envPath) : null,
14715
+ startDir ? resolve3(startDir, "switchroom.yaml") : null,
14716
+ startDir ? resolve3(startDir, "switchroom.yml") : null,
14717
+ startDir ? resolve3(startDir, "clerk.yaml") : null,
14718
+ startDir ? resolve3(startDir, "clerk.yml") : null,
14719
+ resolve3(process.cwd(), "switchroom.yaml"),
14720
+ resolve3(process.cwd(), "switchroom.yml"),
14721
+ resolve3(process.cwd(), "clerk.yaml"),
14722
+ resolve3(process.cwd(), "clerk.yml"),
14723
+ resolve3(userDir, "switchroom.yaml"),
14724
+ resolve3(userDir, "switchroom.yml"),
14725
+ resolve3(userDir, "clerk.yaml"),
14726
+ resolve3(userDir, "clerk.yml")
14727
+ ].filter(Boolean);
14728
+ for (const path of searchPaths) {
14729
+ if (existsSync3(path)) {
14730
+ return path;
14731
+ }
14732
+ }
14733
+ throw new ConfigError("No switchroom.yaml found", searchPaths.map((p) => ` Searched: ${p}`));
14734
+ }
14735
+ function loadConfig(configPath) {
14736
+ const filePath = configPath ?? findConfigFile();
14737
+ if (!existsSync3(filePath)) {
14738
+ throw new ConfigError(`Config file not found: ${filePath}`);
14739
+ }
14740
+ let raw;
14741
+ try {
14742
+ raw = readFileSync2(filePath, "utf-8");
14743
+ } catch (err) {
14744
+ throw new ConfigError(`Failed to read config file: ${filePath}`, [
14745
+ ` ${err.message}`
14746
+ ]);
14747
+ }
14748
+ let parsed;
14749
+ try {
14750
+ parsed = $parse(raw);
14751
+ } catch (err) {
14752
+ throw new ConfigError(`Invalid YAML in ${filePath}`, [
14753
+ ` ${err.message}`
14754
+ ]);
14755
+ }
14756
+ if (parsed && typeof parsed === "object" && !Array.isArray(parsed) && parsed.clerk !== undefined && parsed.switchroom === undefined) {
14757
+ const obj = parsed;
14758
+ obj.switchroom = obj.clerk;
14759
+ delete obj.clerk;
14760
+ }
14761
+ if (parsed && typeof parsed === "object" && !Array.isArray(parsed)) {
14762
+ coerceLegacyGoogleWorkspaceKeys(parsed, filePath);
14763
+ }
14764
+ let config;
14765
+ try {
14766
+ config = SwitchroomConfigSchema.parse(parsed);
14767
+ } catch (err) {
14768
+ if (err instanceof ZodError) {
14769
+ throw new ConfigError("Invalid switchroom.yaml configuration", formatZodErrors(err));
14770
+ }
14771
+ throw err;
14772
+ }
14773
+ applyAgentOverlays(config);
14774
+ validateAllCronTopicAliases(config, filePath);
14775
+ return config;
14776
+ }
14777
+ function validateAllCronTopicAliases(config, filePath) {
14778
+ const issues = [];
14779
+ for (const [agentName, agentRaw] of Object.entries(config.agents)) {
14780
+ if (!agentRaw)
14781
+ continue;
14782
+ const resolved = resolveAgentConfig(config.defaults, config.profiles, agentRaw);
14783
+ const schedule = resolved.schedule ?? [];
14784
+ if (schedule.length === 0)
14785
+ continue;
14786
+ const tg = resolved.channels?.telegram;
14787
+ const aliases = new Set(Object.keys(tg?.topic_aliases ?? {}));
14788
+ for (const entry of schedule) {
14789
+ if (entry.topic == null)
14790
+ continue;
14791
+ if (typeof entry.topic === "number")
14792
+ continue;
14793
+ if (!aliases.has(entry.topic)) {
14794
+ issues.push(` agents.${agentName}.schedule cron \`${entry.cron}\`: ` + `topic alias "${entry.topic}" is not defined in ` + `channels.telegram.topic_aliases.`);
14795
+ }
14796
+ }
14797
+ }
14798
+ if (issues.length > 0) {
14799
+ throw new ConfigError(`Cron \`topic:\` alias references unknown topic_aliases in ${filePath}`, issues);
14800
+ }
14801
+ }
14802
+
14803
+ // src/agents/compose.ts
14804
+ import { createHash } from "node:crypto";
14805
+
14686
14806
  // src/vault/broker/peercred.ts
14687
14807
  var RESERVED_AGENT_NAMES = new Set(["operator", "hostd"]);
14688
14808
  function isReservedAgentName(name) {
@@ -14935,7 +15055,7 @@ function deniedResponse(request_id, error, duration_ms = 0) {
14935
15055
  // src/analytics/error-friction.ts
14936
15056
  import { createHash as createHash2 } from "node:crypto";
14937
15057
 
14938
- // node_modules/.bun/posthog-node@5.29.2/node_modules/posthog-node/dist/extensions/error-tracking/modifiers/module.node.mjs
15058
+ // ../switchroom-sec-1417/node_modules/.bun/posthog-node@5.29.2/node_modules/posthog-node/dist/extensions/error-tracking/modifiers/module.node.mjs
14939
15059
  import { dirname, posix, sep } from "path";
14940
15060
  function createModulerModifier() {
14941
15061
  const getModuleFromFileName = createGetModuleFromFilename();
@@ -14971,7 +15091,7 @@ function normalizeWindowsPath(path) {
14971
15091
  return path.replace(/^[A-Z]:/, "").replace(/\\/g, "/");
14972
15092
  }
14973
15093
 
14974
- // node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/featureFlagUtils.mjs
15094
+ // ../switchroom-sec-1417/node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/featureFlagUtils.mjs
14975
15095
  var normalizeFlagsResponse = (flagsResponse) => {
14976
15096
  if ("flags" in flagsResponse) {
14977
15097
  const featureFlags = getFlagValuesFromFlags(flagsResponse.flags);
@@ -15042,7 +15162,7 @@ var parsePayload = (response) => {
15042
15162
  }
15043
15163
  };
15044
15164
 
15045
- // node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/gzip.mjs
15165
+ // ../switchroom-sec-1417/node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/gzip.mjs
15046
15166
  function isGzipSupported() {
15047
15167
  return "CompressionStream" in globalThis;
15048
15168
  }
@@ -15062,7 +15182,7 @@ async function gzipCompress(input, isDebug = true) {
15062
15182
  }
15063
15183
  }
15064
15184
 
15065
- // node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/vendor/uuidv7.mjs
15185
+ // ../switchroom-sec-1417/node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/vendor/uuidv7.mjs
15066
15186
  /*! For license information please see uuidv7.mjs.LICENSE.txt */
15067
15187
  var DIGITS = "0123456789abcdef";
15068
15188
 
@@ -15240,7 +15360,7 @@ var defaultGenerator;
15240
15360
  var uuidv7 = () => uuidv7obj().toString();
15241
15361
  var uuidv7obj = () => (defaultGenerator || (defaultGenerator = new V7Generator)).generate();
15242
15362
 
15243
- // node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/types.mjs
15363
+ // ../switchroom-sec-1417/node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/types.mjs
15244
15364
  var types_PostHogPersistedProperty = /* @__PURE__ */ function(PostHogPersistedProperty) {
15245
15365
  PostHogPersistedProperty["AnonymousId"] = "anonymous_id";
15246
15366
  PostHogPersistedProperty["DistinctId"] = "distinct_id";
@@ -15273,7 +15393,7 @@ var types_PostHogPersistedProperty = /* @__PURE__ */ function(PostHogPersistedPr
15273
15393
  return PostHogPersistedProperty;
15274
15394
  }({});
15275
15395
 
15276
- // node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/utils/bot-detection.mjs
15396
+ // ../switchroom-sec-1417/node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/utils/bot-detection.mjs
15277
15397
  var DEFAULT_BLOCKED_UA_STRS = [
15278
15398
  "amazonbot",
15279
15399
  "amazonproductbot",
@@ -15362,7 +15482,7 @@ var isBlockedUA = function(ua, customBlockedUserAgents = []) {
15362
15482
  return uaLower.indexOf(blockedUaLower) !== -1;
15363
15483
  });
15364
15484
  };
15365
- // node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/utils/type-utils.mjs
15485
+ // ../switchroom-sec-1417/node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/utils/type-utils.mjs
15366
15486
  var nativeIsArray = Array.isArray;
15367
15487
  var ObjProto = Object.prototype;
15368
15488
  var type_utils_hasOwnProperty = ObjProto.hasOwnProperty;
@@ -15399,7 +15519,7 @@ function isInstanceOf(candidate, base) {
15399
15519
  }
15400
15520
  }
15401
15521
 
15402
- // node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/utils/number-utils.mjs
15522
+ // ../switchroom-sec-1417/node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/utils/number-utils.mjs
15403
15523
  function clampToRange(value, min, max, logger, fallbackValue) {
15404
15524
  if (min > max) {
15405
15525
  logger.warn("min cannot be greater than max.");
@@ -15419,7 +15539,7 @@ function clampToRange(value, min, max, logger, fallbackValue) {
15419
15539
  return clampToRange(fallbackValue || max, min, max, logger);
15420
15540
  }
15421
15541
 
15422
- // node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/utils/bucketed-rate-limiter.mjs
15542
+ // ../switchroom-sec-1417/node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/utils/bucketed-rate-limiter.mjs
15423
15543
  var ONE_DAY_IN_MS = 86400000;
15424
15544
 
15425
15545
  class BucketedRateLimiter {
@@ -15463,7 +15583,7 @@ class BucketedRateLimiter {
15463
15583
  this._buckets = {};
15464
15584
  }
15465
15585
  }
15466
- // node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/utils/promise-queue.mjs
15586
+ // ../switchroom-sec-1417/node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/utils/promise-queue.mjs
15467
15587
  class PromiseQueue {
15468
15588
  add(promise) {
15469
15589
  const promiseUUID = uuidv7();
@@ -15489,7 +15609,7 @@ class PromiseQueue {
15489
15609
  this.promiseByIds = {};
15490
15610
  }
15491
15611
  }
15492
- // node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/utils/logger.mjs
15612
+ // ../switchroom-sec-1417/node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/utils/logger.mjs
15493
15613
  function createConsole(consoleLike = console) {
15494
15614
  const lockedMethods = {
15495
15615
  log: consoleLike.log.bind(consoleLike),
@@ -15527,7 +15647,7 @@ var passThrough = (fn) => fn();
15527
15647
  function createLogger(prefix, maybeCall = passThrough) {
15528
15648
  return _createLogger(prefix, maybeCall, createConsole());
15529
15649
  }
15530
- // node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/utils/user-agent-utils.mjs
15650
+ // ../switchroom-sec-1417/node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/utils/user-agent-utils.mjs
15531
15651
  var MOBILE = "Mobile";
15532
15652
  var IOS = "iOS";
15533
15653
  var ANDROID = "Android";
@@ -15784,7 +15904,7 @@ var osMatchers = [
15784
15904
  ]
15785
15905
  ];
15786
15906
 
15787
- // node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/utils/index.mjs
15907
+ // ../switchroom-sec-1417/node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/utils/index.mjs
15788
15908
  var STRING_FORMAT = "utf8";
15789
15909
  function assert(truthyValue, message) {
15790
15910
  if (!truthyValue || typeof truthyValue != "string" || isEmpty(truthyValue))
@@ -15832,7 +15952,7 @@ function allSettled(promises) {
15832
15952
  reason
15833
15953
  }))));
15834
15954
  }
15835
- // node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/eventemitter.mjs
15955
+ // ../switchroom-sec-1417/node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/eventemitter.mjs
15836
15956
  class SimpleEventEmitter {
15837
15957
  constructor() {
15838
15958
  this.events = {};
@@ -15854,7 +15974,7 @@ class SimpleEventEmitter {
15854
15974
  }
15855
15975
  }
15856
15976
 
15857
- // node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/posthog-core-stateless.mjs
15977
+ // ../switchroom-sec-1417/node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/posthog-core-stateless.mjs
15858
15978
  class PostHogFetchHttpError extends Error {
15859
15979
  constructor(response, reqByteLength) {
15860
15980
  super("HTTP error while fetching PostHog: status=" + response.status + ", reqByteLength=" + reqByteLength), this.response = response, this.reqByteLength = reqByteLength, this.name = "PostHogFetchHttpError";
@@ -16569,7 +16689,7 @@ class PostHogCoreStateless {
16569
16689
  return this.shutdownPromise;
16570
16690
  }
16571
16691
  }
16572
- // node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/error-tracking/index.mjs
16692
+ // ../switchroom-sec-1417/node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/error-tracking/index.mjs
16573
16693
  var exports_error_tracking = {};
16574
16694
  __export(exports_error_tracking, {
16575
16695
  winjsStackLineParser: () => winjsStackLineParser,
@@ -16593,7 +16713,7 @@ __export(exports_error_tracking, {
16593
16713
  DOMExceptionCoercer: () => DOMExceptionCoercer
16594
16714
  });
16595
16715
 
16596
- // node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/error-tracking/chunk-ids.mjs
16716
+ // ../switchroom-sec-1417/node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/error-tracking/chunk-ids.mjs
16597
16717
  var parsedStackResults;
16598
16718
  var lastKeysCount;
16599
16719
  var cachedFilenameChunkIds;
@@ -16632,7 +16752,7 @@ function getFilenameToChunkIdMap(stackParser) {
16632
16752
  return cachedFilenameChunkIds;
16633
16753
  }
16634
16754
 
16635
- // node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/error-tracking/error-properties-builder.mjs
16755
+ // ../switchroom-sec-1417/node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/error-tracking/error-properties-builder.mjs
16636
16756
  var MAX_CAUSE_RECURSION = 4;
16637
16757
 
16638
16758
  class ErrorPropertiesBuilder {
@@ -16754,7 +16874,7 @@ class ErrorPropertiesBuilder {
16754
16874
  return context;
16755
16875
  }
16756
16876
  }
16757
- // node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/error-tracking/parsers/base.mjs
16877
+ // ../switchroom-sec-1417/node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/error-tracking/parsers/base.mjs
16758
16878
  var UNKNOWN_FUNCTION = "?";
16759
16879
  function createFrame(platform, filename, func, lineno, colno) {
16760
16880
  const frame = {
@@ -16770,7 +16890,7 @@ function createFrame(platform, filename, func, lineno, colno) {
16770
16890
  return frame;
16771
16891
  }
16772
16892
 
16773
- // node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/error-tracking/parsers/safari.mjs
16893
+ // ../switchroom-sec-1417/node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/error-tracking/parsers/safari.mjs
16774
16894
  var extractSafariExtensionDetails = (func, filename) => {
16775
16895
  const isSafariExtension = func.indexOf("safari-extension") !== -1;
16776
16896
  const isSafariWebExtension = func.indexOf("safari-web-extension") !== -1;
@@ -16783,7 +16903,7 @@ var extractSafariExtensionDetails = (func, filename) => {
16783
16903
  ];
16784
16904
  };
16785
16905
 
16786
- // node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/error-tracking/parsers/chrome.mjs
16906
+ // ../switchroom-sec-1417/node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/error-tracking/parsers/chrome.mjs
16787
16907
  var chromeRegexNoFnName = /^\s*at (\S+?)(?::(\d+))(?::(\d+))\s*$/i;
16788
16908
  var chromeRegex = /^\s*at (?:(.+?\)(?: \[.+\])?|.*?) ?\((?:address at )?)?(?:async )?((?:<anonymous>|[-a-z]+:|.*bundle|\/)?.*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i;
16789
16909
  var chromeEvalRegex = /\((\S*)(?::(\d+))(?::(\d+))\)/;
@@ -16809,7 +16929,7 @@ var chromeStackLineParser = (line, platform) => {
16809
16929
  }
16810
16930
  };
16811
16931
 
16812
- // node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/error-tracking/parsers/gecko.mjs
16932
+ // ../switchroom-sec-1417/node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/error-tracking/parsers/gecko.mjs
16813
16933
  var geckoREgex = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)?((?:[-a-z]+)?:\/.*?|\[native code\]|[^@]*(?:bundle|\d+\.js)|\/[\w\-. /=]+)(?::(\d+))?(?::(\d+))?\s*$/i;
16814
16934
  var geckoEvalRegex = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i;
16815
16935
  var geckoStackLineParser = (line, platform) => {
@@ -16832,14 +16952,14 @@ var geckoStackLineParser = (line, platform) => {
16832
16952
  }
16833
16953
  };
16834
16954
 
16835
- // node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/error-tracking/parsers/winjs.mjs
16955
+ // ../switchroom-sec-1417/node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/error-tracking/parsers/winjs.mjs
16836
16956
  var winjsRegex = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:[-a-z]+):.*?):(\d+)(?::(\d+))?\)?\s*$/i;
16837
16957
  var winjsStackLineParser = (line, platform) => {
16838
16958
  const parts = winjsRegex.exec(line);
16839
16959
  return parts ? createFrame(platform, parts[2], parts[1] || UNKNOWN_FUNCTION, +parts[3], parts[4] ? +parts[4] : undefined) : undefined;
16840
16960
  };
16841
16961
 
16842
- // node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/error-tracking/parsers/opera.mjs
16962
+ // ../switchroom-sec-1417/node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/error-tracking/parsers/opera.mjs
16843
16963
  var opera10Regex = / line (\d+).*script (?:in )?(\S+)(?:: in function (\S+))?$/i;
16844
16964
  var opera10StackLineParser = (line, platform) => {
16845
16965
  const parts = opera10Regex.exec(line);
@@ -16851,7 +16971,7 @@ var opera11StackLineParser = (line, platform) => {
16851
16971
  return parts ? createFrame(platform, parts[5], parts[3] || parts[4] || UNKNOWN_FUNCTION, +parts[1], +parts[2]) : undefined;
16852
16972
  };
16853
16973
 
16854
- // node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/error-tracking/parsers/node.mjs
16974
+ // ../switchroom-sec-1417/node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/error-tracking/parsers/node.mjs
16855
16975
  var FILENAME_MATCH = /^\s*[-]{4,}$/;
16856
16976
  var FULL_MATCH = /at (?:async )?(?:(.+?)\s+\()?(?:(.+):(\d+):(\d+)?|([^)]+))\)?/;
16857
16977
  var nodeStackLineParser = (line, platform) => {
@@ -16920,7 +17040,7 @@ function _parseIntOrUndefined(input) {
16920
17040
  return parseInt(input || "", 10) || undefined;
16921
17041
  }
16922
17042
 
16923
- // node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/error-tracking/parsers/index.mjs
17043
+ // ../switchroom-sec-1417/node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/error-tracking/parsers/index.mjs
16924
17044
  var WEBPACK_ERROR_REGEXP = /\(error: (.*)\)/;
16925
17045
  var STACKTRACE_FRAME_LIMIT = 50;
16926
17046
  function reverseAndStripFrames(stack) {
@@ -16965,7 +17085,7 @@ function createStackParser(platform, ...parsers) {
16965
17085
  return reverseAndStripFrames(frames);
16966
17086
  };
16967
17087
  }
16968
- // node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/error-tracking/coercers/dom-exception-coercer.mjs
17088
+ // ../switchroom-sec-1417/node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/error-tracking/coercers/dom-exception-coercer.mjs
16969
17089
  class DOMExceptionCoercer {
16970
17090
  match(err) {
16971
17091
  return this.isDOMException(err) || this.isDOMError(err);
@@ -16995,7 +17115,7 @@ class DOMExceptionCoercer {
16995
17115
  return isBuiltin(err, "DOMError");
16996
17116
  }
16997
17117
  }
16998
- // node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/error-tracking/coercers/error-coercer.mjs
17118
+ // ../switchroom-sec-1417/node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/error-tracking/coercers/error-coercer.mjs
16999
17119
  class ErrorCoercer {
17000
17120
  match(err) {
17001
17121
  return isPlainError(err);
@@ -17022,7 +17142,7 @@ class ErrorCoercer {
17022
17142
  return err.stacktrace || err.stack || undefined;
17023
17143
  }
17024
17144
  }
17025
- // node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/error-tracking/coercers/error-event-coercer.mjs
17145
+ // ../switchroom-sec-1417/node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/error-tracking/coercers/error-event-coercer.mjs
17026
17146
  class ErrorEventCoercer {
17027
17147
  constructor() {}
17028
17148
  match(err) {
@@ -17040,7 +17160,7 @@ class ErrorEventCoercer {
17040
17160
  return exceptionLike;
17041
17161
  }
17042
17162
  }
17043
- // node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/error-tracking/coercers/string-coercer.mjs
17163
+ // ../switchroom-sec-1417/node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/error-tracking/coercers/string-coercer.mjs
17044
17164
  var ERROR_TYPES_PATTERN = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/i;
17045
17165
 
17046
17166
  class StringCoercer {
@@ -17070,7 +17190,7 @@ class StringCoercer {
17070
17190
  ];
17071
17191
  }
17072
17192
  }
17073
- // node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/error-tracking/types.mjs
17193
+ // ../switchroom-sec-1417/node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/error-tracking/types.mjs
17074
17194
  var severityLevels = [
17075
17195
  "fatal",
17076
17196
  "error",
@@ -17080,7 +17200,7 @@ var severityLevels = [
17080
17200
  "debug"
17081
17201
  ];
17082
17202
 
17083
- // node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/error-tracking/coercers/utils.mjs
17203
+ // ../switchroom-sec-1417/node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/error-tracking/coercers/utils.mjs
17084
17204
  function extractExceptionKeysForMessage(err, maxLength = 40) {
17085
17205
  const keys = Object.keys(err);
17086
17206
  keys.sort();
@@ -17097,7 +17217,7 @@ function extractExceptionKeysForMessage(err, maxLength = 40) {
17097
17217
  return "";
17098
17218
  }
17099
17219
 
17100
- // node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/error-tracking/coercers/object-coercer.mjs
17220
+ // ../switchroom-sec-1417/node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/error-tracking/coercers/object-coercer.mjs
17101
17221
  class ObjectCoercer {
17102
17222
  match(candidate) {
17103
17223
  return typeof candidate == "object" && candidate !== null;
@@ -17150,7 +17270,7 @@ class ObjectCoercer {
17150
17270
  }
17151
17271
  }
17152
17272
  }
17153
- // node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/error-tracking/coercers/event-coercer.mjs
17273
+ // ../switchroom-sec-1417/node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/error-tracking/coercers/event-coercer.mjs
17154
17274
  class EventCoercer {
17155
17275
  match(err) {
17156
17276
  return isEvent(err);
@@ -17165,7 +17285,7 @@ class EventCoercer {
17165
17285
  };
17166
17286
  }
17167
17287
  }
17168
- // node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/error-tracking/coercers/primitive-coercer.mjs
17288
+ // ../switchroom-sec-1417/node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/error-tracking/coercers/primitive-coercer.mjs
17169
17289
  class PrimitiveCoercer {
17170
17290
  match(candidate) {
17171
17291
  return isPrimitive(candidate);
@@ -17179,7 +17299,7 @@ class PrimitiveCoercer {
17179
17299
  };
17180
17300
  }
17181
17301
  }
17182
- // node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/error-tracking/coercers/promise-rejection-event.mjs
17302
+ // ../switchroom-sec-1417/node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/error-tracking/coercers/promise-rejection-event.mjs
17183
17303
  class PromiseRejectionEventCoercer {
17184
17304
  match(err) {
17185
17305
  return isBuiltin(err, "PromiseRejectionEvent") || this.isCustomEventWrappingRejection(err);
@@ -17215,7 +17335,7 @@ class PromiseRejectionEventCoercer {
17215
17335
  return error;
17216
17336
  }
17217
17337
  }
17218
- // node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/error-tracking/utils.mjs
17338
+ // ../switchroom-sec-1417/node_modules/.bun/@posthog+core@1.25.2/node_modules/@posthog/core/dist/error-tracking/utils.mjs
17219
17339
  class ReduceableCache {
17220
17340
  constructor(_maxSize) {
17221
17341
  this._maxSize = _maxSize;
@@ -17240,7 +17360,7 @@ class ReduceableCache {
17240
17360
  }
17241
17361
  }
17242
17362
  }
17243
- // node_modules/.bun/posthog-node@5.29.2/node_modules/posthog-node/dist/extensions/error-tracking/modifiers/context-lines.node.mjs
17363
+ // ../switchroom-sec-1417/node_modules/.bun/posthog-node@5.29.2/node_modules/posthog-node/dist/extensions/error-tracking/modifiers/context-lines.node.mjs
17244
17364
  import { createReadStream } from "node:fs";
17245
17365
  import { createInterface } from "node:readline";
17246
17366
  var LRU_FILE_CONTENTS_CACHE = new exports_error_tracking.ReduceableCache(25);
@@ -17458,7 +17578,7 @@ function snipLine(line, colno) {
17458
17578
  return newLine;
17459
17579
  }
17460
17580
 
17461
- // node_modules/.bun/posthog-node@5.29.2/node_modules/posthog-node/dist/extensions/error-tracking/autocapture.mjs
17581
+ // ../switchroom-sec-1417/node_modules/.bun/posthog-node@5.29.2/node_modules/posthog-node/dist/extensions/error-tracking/autocapture.mjs
17462
17582
  function makeUncaughtExceptionHandler(captureFn, onFatalFn) {
17463
17583
  let calledFatalError = false;
17464
17584
  return Object.assign((error) => {
@@ -17490,7 +17610,7 @@ function addUnhandledRejectionListener(captureFn) {
17490
17610
  }));
17491
17611
  }
17492
17612
 
17493
- // node_modules/.bun/posthog-node@5.29.2/node_modules/posthog-node/dist/extensions/error-tracking/index.mjs
17613
+ // ../switchroom-sec-1417/node_modules/.bun/posthog-node@5.29.2/node_modules/posthog-node/dist/extensions/error-tracking/index.mjs
17494
17614
  var SHUTDOWN_TIMEOUT = 2000;
17495
17615
 
17496
17616
  class ErrorTracking {
@@ -17559,10 +17679,10 @@ class ErrorTracking {
17559
17679
  }
17560
17680
  }
17561
17681
 
17562
- // node_modules/.bun/posthog-node@5.29.2/node_modules/posthog-node/dist/version.mjs
17682
+ // ../switchroom-sec-1417/node_modules/.bun/posthog-node@5.29.2/node_modules/posthog-node/dist/version.mjs
17563
17683
  var version = "5.29.2";
17564
17684
 
17565
- // node_modules/.bun/posthog-node@5.29.2/node_modules/posthog-node/dist/types.mjs
17685
+ // ../switchroom-sec-1417/node_modules/.bun/posthog-node@5.29.2/node_modules/posthog-node/dist/types.mjs
17566
17686
  var FeatureFlagError2 = {
17567
17687
  ERRORS_WHILE_COMPUTING: "errors_while_computing_flags",
17568
17688
  FLAG_MISSING: "flag_missing",
@@ -17570,7 +17690,7 @@ var FeatureFlagError2 = {
17570
17690
  UNKNOWN_ERROR: "unknown_error"
17571
17691
  };
17572
17692
 
17573
- // node_modules/.bun/posthog-node@5.29.2/node_modules/posthog-node/dist/extensions/feature-flags/crypto.mjs
17693
+ // ../switchroom-sec-1417/node_modules/.bun/posthog-node@5.29.2/node_modules/posthog-node/dist/extensions/feature-flags/crypto.mjs
17574
17694
  async function hashSHA1(text) {
17575
17695
  const subtle = globalThis.crypto?.subtle;
17576
17696
  if (!subtle)
@@ -17580,7 +17700,7 @@ async function hashSHA1(text) {
17580
17700
  return hashArray.map((byte) => byte.toString(16).padStart(2, "0")).join("");
17581
17701
  }
17582
17702
 
17583
- // node_modules/.bun/posthog-node@5.29.2/node_modules/posthog-node/dist/extensions/feature-flags/feature-flags.mjs
17703
+ // ../switchroom-sec-1417/node_modules/.bun/posthog-node@5.29.2/node_modules/posthog-node/dist/extensions/feature-flags/feature-flags.mjs
17584
17704
  var SIXTY_SECONDS = 60000;
17585
17705
  var LONG_SCALE = 1152921504606847000;
17586
17706
  var NULL_VALUES_ALLOWED_OPERATORS = [
@@ -18454,7 +18574,7 @@ function relativeDateParseForFeatureFlagMatching(value) {
18454
18574
  }
18455
18575
  }
18456
18576
 
18457
- // node_modules/.bun/posthog-node@5.29.2/node_modules/posthog-node/dist/storage-memory.mjs
18577
+ // ../switchroom-sec-1417/node_modules/.bun/posthog-node@5.29.2/node_modules/posthog-node/dist/storage-memory.mjs
18458
18578
  class PostHogMemoryStorage {
18459
18579
  getProperty(key) {
18460
18580
  return this._memoryStorage[key];
@@ -18467,7 +18587,7 @@ class PostHogMemoryStorage {
18467
18587
  }
18468
18588
  }
18469
18589
 
18470
- // node_modules/.bun/posthog-node@5.29.2/node_modules/posthog-node/dist/client.mjs
18590
+ // ../switchroom-sec-1417/node_modules/.bun/posthog-node@5.29.2/node_modules/posthog-node/dist/client.mjs
18471
18591
  var MINIMUM_POLLING_INTERVAL = 100;
18472
18592
  var THIRTY_SECONDS = 30000;
18473
18593
  var MAX_CACHE_SIZE = 50000;
@@ -19255,7 +19375,7 @@ class PostHogBackendClient extends PostHogCoreStateless {
19255
19375
  }
19256
19376
  }
19257
19377
 
19258
- // node_modules/.bun/posthog-node@5.29.2/node_modules/posthog-node/dist/extensions/context/context.mjs
19378
+ // ../switchroom-sec-1417/node_modules/.bun/posthog-node@5.29.2/node_modules/posthog-node/dist/extensions/context/context.mjs
19259
19379
  import { AsyncLocalStorage } from "node:async_hooks";
19260
19380
 
19261
19381
  class PostHogContext {
@@ -19286,7 +19406,7 @@ class PostHogContext {
19286
19406
  }
19287
19407
  }
19288
19408
 
19289
- // node_modules/.bun/posthog-node@5.29.2/node_modules/posthog-node/dist/extensions/sentry-integration.mjs
19409
+ // ../switchroom-sec-1417/node_modules/.bun/posthog-node@5.29.2/node_modules/posthog-node/dist/extensions/sentry-integration.mjs
19290
19410
  var NAME = "posthog-node";
19291
19411
  function createEventProcessor(_posthog, { organization, projectId, prefix, severityAllowList = [
19292
19412
  "error"
@@ -19354,7 +19474,7 @@ class PostHogSentryIntegration {
19354
19474
  };
19355
19475
  }
19356
19476
  }
19357
- // node_modules/.bun/posthog-node@5.29.2/node_modules/posthog-node/dist/entrypoints/index.node.mjs
19477
+ // ../switchroom-sec-1417/node_modules/.bun/posthog-node@5.29.2/node_modules/posthog-node/dist/entrypoints/index.node.mjs
19358
19478
  ErrorTracking.errorPropertiesBuilder = new exports_error_tracking.ErrorPropertiesBuilder([
19359
19479
  new exports_error_tracking.EventCoercer,
19360
19480
  new exports_error_tracking.ErrorCoercer,