switchroom 0.16.29 → 0.16.46

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 (130) hide show
  1. package/dist/agent-scheduler/index.js +101 -84
  2. package/dist/auth-broker/index.js +100 -83
  3. package/dist/cli/autoaccept-poll.js +8 -8
  4. package/dist/cli/drive-write-pretool.mjs +10 -10
  5. package/dist/cli/notion-write-pretool.mjs +102 -85
  6. package/dist/cli/skill-validate-pretool.mjs +91 -91
  7. package/dist/cli/switchroom.js +62124 -60406
  8. package/dist/cli/ui/index.html +877 -214
  9. package/dist/host-control/main.js +1000 -256
  10. package/dist/vault/approvals/kernel-server.js +141 -121
  11. package/dist/vault/broker/server.js +163 -143
  12. package/examples/minimal.yaml +1 -1
  13. package/examples/switchroom.yaml +1 -1
  14. package/package.json +3 -2
  15. package/profiles/_shared/agent-self-service.md.hbs +7 -2
  16. package/profiles/_shared/reply-discipline.md.hbs +9 -0
  17. package/skills/switchroom-status/SKILL.md +1 -1
  18. package/telegram-plugin/auth-snapshot-format.ts +173 -67
  19. package/telegram-plugin/auto-fallback-fleet.ts +3 -6
  20. package/telegram-plugin/bridge/bridge.ts +2 -1
  21. package/telegram-plugin/card-format.ts +59 -3
  22. package/telegram-plugin/credits-watch.ts +4 -7
  23. package/telegram-plugin/dist/bridge/bridge.js +132 -114
  24. package/telegram-plugin/dist/gateway/gateway.js +4456 -1591
  25. package/telegram-plugin/dist/server.js +180 -163
  26. package/telegram-plugin/format.ts +551 -20
  27. package/telegram-plugin/gateway/approval-card.ts +7 -14
  28. package/telegram-plugin/gateway/approvals-commands.ts +6 -9
  29. package/telegram-plugin/gateway/auth-command.ts +35 -38
  30. package/telegram-plugin/gateway/boot-card.ts +7 -2
  31. package/telegram-plugin/gateway/chat-id-fallback.ts +46 -0
  32. package/telegram-plugin/gateway/config-approval-handler.ts +6 -9
  33. package/telegram-plugin/gateway/diff-preview-card.ts +3 -6
  34. package/telegram-plugin/gateway/gateway.ts +1524 -129
  35. package/telegram-plugin/gateway/ipc-protocol.ts +66 -2
  36. package/telegram-plugin/gateway/ipc-server.ts +91 -1
  37. package/telegram-plugin/gateway/linear-activity.ts +2 -5
  38. package/telegram-plugin/gateway/model-command.ts +173 -19
  39. package/telegram-plugin/gateway/obligation-turn-end.ts +27 -0
  40. package/telegram-plugin/gateway/permission-card-store.ts +104 -0
  41. package/telegram-plugin/gateway/permission-timeout.ts +25 -6
  42. package/telegram-plugin/gateway/status-pin-store.ts +302 -0
  43. package/telegram-plugin/gateway/turns-jsonl-rotate.ts +30 -0
  44. package/telegram-plugin/gateway/unhandled-rejection-policy.ts +12 -1
  45. package/telegram-plugin/gateway/vault-grant-inbound-builders.ts +35 -0
  46. package/telegram-plugin/gateway/vault-request-access-card.ts +61 -0
  47. package/telegram-plugin/history.ts +17 -7
  48. package/telegram-plugin/hooks/tool-label-pretool.d.mts +12 -0
  49. package/telegram-plugin/hooks/tool-label-pretool.mjs +54 -16
  50. package/telegram-plugin/idle-footer.ts +2 -2
  51. package/telegram-plugin/issues-card.ts +12 -7
  52. package/telegram-plugin/model-unavailable.ts +3 -6
  53. package/telegram-plugin/operator-events.ts +4 -6
  54. package/telegram-plugin/package.json +1 -1
  55. package/telegram-plugin/quota-check.ts +2 -2
  56. package/telegram-plugin/quota-watch.ts +7 -10
  57. package/telegram-plugin/server.ts +3 -1
  58. package/telegram-plugin/session-tail.ts +47 -1
  59. package/telegram-plugin/status-pin-driver.ts +102 -0
  60. package/telegram-plugin/status-pin.ts +76 -0
  61. package/telegram-plugin/stream-reply-handler.ts +33 -2
  62. package/telegram-plugin/subagent-watcher.ts +6 -3
  63. package/telegram-plugin/tests/always-allow-grant.test.ts +34 -2
  64. package/telegram-plugin/tests/auth-command-format2.test.ts +6 -2
  65. package/telegram-plugin/tests/auth-command-vernacular.test.ts +18 -0
  66. package/telegram-plugin/tests/auth-snapshot-format.test.ts +204 -45
  67. package/telegram-plugin/tests/card-format.test.ts +79 -0
  68. package/telegram-plugin/tests/chat-id-fallback.test.ts +74 -0
  69. package/telegram-plugin/tests/claude-code-event-contract.test.ts +151 -0
  70. package/telegram-plugin/tests/codespan-escaping-golden.test.ts +166 -0
  71. package/telegram-plugin/tests/credits-watch.test.ts +18 -0
  72. package/telegram-plugin/tests/format-consistency.test.ts +223 -0
  73. package/telegram-plugin/tests/formatting-parse-regression.test.ts +272 -0
  74. package/telegram-plugin/tests/formatting-torture-set.ts +218 -0
  75. package/telegram-plugin/tests/history.test.ts +38 -2
  76. package/telegram-plugin/tests/idle-footer.test.ts +53 -9
  77. package/telegram-plugin/tests/ipc-server-validate-rollout-status.test.ts +66 -0
  78. package/telegram-plugin/tests/issues-card.test.ts +24 -0
  79. package/telegram-plugin/tests/model-command.test.ts +213 -47
  80. package/telegram-plugin/tests/obligation-turn-end.test.ts +76 -0
  81. package/telegram-plugin/tests/paragraph-normalizer.test.ts +384 -3
  82. package/telegram-plugin/tests/permission-card-single-edit.test.ts +66 -0
  83. package/telegram-plugin/tests/permission-card-store.test.ts +83 -0
  84. package/telegram-plugin/tests/permission-timeout.test.ts +37 -6
  85. package/telegram-plugin/tests/permission-verdict-resume-guard.test.ts +23 -6
  86. package/telegram-plugin/tests/quota-check.test.ts +9 -2
  87. package/telegram-plugin/tests/quota-watch.test.ts +7 -7
  88. package/telegram-plugin/tests/rich-markdown-oracle.ts +469 -0
  89. package/telegram-plugin/tests/rollout-status-wiring.test.ts +81 -0
  90. package/telegram-plugin/tests/session-tail.test.ts +91 -0
  91. package/telegram-plugin/tests/status-pin-boot-recovery.test.ts +294 -0
  92. package/telegram-plugin/tests/status-pin-service-message-suppression.test.ts +210 -0
  93. package/telegram-plugin/tests/status-pin-store.test.ts +450 -0
  94. package/telegram-plugin/tests/status-pin.test.ts +202 -0
  95. package/telegram-plugin/tests/status-vocabulary-unification.test.ts +125 -0
  96. package/telegram-plugin/tests/stream-reply-handler.test.ts +39 -0
  97. package/telegram-plugin/tests/telegram-format.test.ts +121 -8
  98. package/telegram-plugin/tests/text-voice-scrub.test.ts +142 -22
  99. package/telegram-plugin/tests/tool-activity-summary.test.ts +88 -25
  100. package/telegram-plugin/tests/tts-normalize.test.ts +242 -0
  101. package/telegram-plugin/tests/turns-jsonl-rotate.test.ts +39 -0
  102. package/telegram-plugin/tests/unhandled-rejection-policy.test.ts +12 -0
  103. package/telegram-plugin/tests/vault-grant-inbound-builders.test.ts +54 -0
  104. package/telegram-plugin/tests/vault-request-access-card.test.ts +94 -0
  105. package/telegram-plugin/tests/vault-request-access-tool.test.ts +24 -0
  106. package/telegram-plugin/tests/voice-normalize-text.test.ts +256 -0
  107. package/telegram-plugin/tests/voice-ondemand.test.ts +299 -0
  108. package/telegram-plugin/tests/voice-out-one-send.test.ts +153 -0
  109. package/telegram-plugin/tests/voice-presynth.test.ts +437 -0
  110. package/telegram-plugin/tests/voice-synthesize-sidecar.test.ts +352 -0
  111. package/telegram-plugin/tests/voice-transcribe-sidecar.test.ts +332 -0
  112. package/telegram-plugin/tests/voice-transcribe.test.ts +188 -0
  113. package/telegram-plugin/tests/worker-activity-feed.test.ts +77 -10
  114. package/telegram-plugin/text-voice-scrub.ts +68 -18
  115. package/telegram-plugin/tool-activity-summary.ts +31 -116
  116. package/telegram-plugin/tts-normalize.ts +377 -0
  117. package/telegram-plugin/uat/driver.ts +474 -17
  118. package/telegram-plugin/uat/scenarios/jtbd-model-litellm-sr-dm.test.ts +34 -14
  119. package/telegram-plugin/uat/scenarios/jtbd-multipart-render-dm.test.ts +169 -0
  120. package/telegram-plugin/uat/scenarios/jtbd-narration-intent-dm.test.ts +134 -0
  121. package/telegram-plugin/uat/scenarios/jtbd-rich-formatting-render-dm.test.ts +254 -0
  122. package/telegram-plugin/uat/scenarios/jtbd-status-phase-transitions-dm.test.ts +109 -0
  123. package/telegram-plugin/uat/uat-driver.test.ts +297 -0
  124. package/telegram-plugin/voice-normalize-text.ts +340 -0
  125. package/telegram-plugin/voice-ondemand.ts +289 -0
  126. package/telegram-plugin/voice-presynth.ts +242 -0
  127. package/telegram-plugin/voice-synthesize-sidecar.ts +259 -0
  128. package/telegram-plugin/voice-synthesize.ts +128 -0
  129. package/telegram-plugin/voice-transcribe-sidecar.ts +176 -0
  130. package/telegram-plugin/worker-activity-feed.ts +22 -5
@@ -17,7 +17,7 @@ var __export = (target, all) => {
17
17
  var __esm = (fn, res) => () => (fn && (res = fn(fn = 0)), res);
18
18
  var __require = /* @__PURE__ */ createRequire(import.meta.url);
19
19
 
20
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/nodes/identity.js
20
+ // node_modules/yaml/dist/nodes/identity.js
21
21
  var require_identity = __commonJS((exports) => {
22
22
  var ALIAS = Symbol.for("yaml.alias");
23
23
  var DOC = Symbol.for("yaml.document");
@@ -71,7 +71,7 @@ var require_identity = __commonJS((exports) => {
71
71
  exports.isSeq = isSeq;
72
72
  });
73
73
 
74
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/visit.js
74
+ // node_modules/yaml/dist/visit.js
75
75
  var require_visit = __commonJS((exports) => {
76
76
  var identity = require_identity();
77
77
  var BREAK = Symbol("break visit");
@@ -226,7 +226,7 @@ var require_visit = __commonJS((exports) => {
226
226
  exports.visitAsync = visitAsync;
227
227
  });
228
228
 
229
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/doc/directives.js
229
+ // node_modules/yaml/dist/doc/directives.js
230
230
  var require_directives = __commonJS((exports) => {
231
231
  var identity = require_identity();
232
232
  var visit = require_visit();
@@ -378,7 +378,7 @@ var require_directives = __commonJS((exports) => {
378
378
  exports.Directives = Directives;
379
379
  });
380
380
 
381
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/doc/anchors.js
381
+ // node_modules/yaml/dist/doc/anchors.js
382
382
  var require_anchors = __commonJS((exports) => {
383
383
  var identity = require_identity();
384
384
  var visit = require_visit();
@@ -440,7 +440,7 @@ var require_anchors = __commonJS((exports) => {
440
440
  exports.findNewAnchor = findNewAnchor;
441
441
  });
442
442
 
443
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/doc/applyReviver.js
443
+ // node_modules/yaml/dist/doc/applyReviver.js
444
444
  var require_applyReviver = __commonJS((exports) => {
445
445
  function applyReviver(reviver, obj, key, val) {
446
446
  if (val && typeof val === "object") {
@@ -487,7 +487,7 @@ var require_applyReviver = __commonJS((exports) => {
487
487
  exports.applyReviver = applyReviver;
488
488
  });
489
489
 
490
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/nodes/toJS.js
490
+ // node_modules/yaml/dist/nodes/toJS.js
491
491
  var require_toJS = __commonJS((exports) => {
492
492
  var identity = require_identity();
493
493
  function toJS(value, arg, ctx) {
@@ -514,7 +514,7 @@ var require_toJS = __commonJS((exports) => {
514
514
  exports.toJS = toJS;
515
515
  });
516
516
 
517
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/nodes/Node.js
517
+ // node_modules/yaml/dist/nodes/Node.js
518
518
  var require_Node = __commonJS((exports) => {
519
519
  var applyReviver = require_applyReviver();
520
520
  var identity = require_identity();
@@ -551,7 +551,7 @@ var require_Node = __commonJS((exports) => {
551
551
  exports.NodeBase = NodeBase;
552
552
  });
553
553
 
554
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/nodes/Alias.js
554
+ // node_modules/yaml/dist/nodes/Alias.js
555
555
  var require_Alias = __commonJS((exports) => {
556
556
  var anchors = require_anchors();
557
557
  var visit = require_visit();
@@ -659,7 +659,7 @@ var require_Alias = __commonJS((exports) => {
659
659
  exports.Alias = Alias;
660
660
  });
661
661
 
662
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/nodes/Scalar.js
662
+ // node_modules/yaml/dist/nodes/Scalar.js
663
663
  var require_Scalar = __commonJS((exports) => {
664
664
  var identity = require_identity();
665
665
  var Node = require_Node();
@@ -687,7 +687,7 @@ var require_Scalar = __commonJS((exports) => {
687
687
  exports.isScalarValue = isScalarValue;
688
688
  });
689
689
 
690
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/doc/createNode.js
690
+ // node_modules/yaml/dist/doc/createNode.js
691
691
  var require_createNode = __commonJS((exports) => {
692
692
  var Alias = require_Alias();
693
693
  var identity = require_identity();
@@ -759,7 +759,7 @@ var require_createNode = __commonJS((exports) => {
759
759
  exports.createNode = createNode;
760
760
  });
761
761
 
762
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/nodes/Collection.js
762
+ // node_modules/yaml/dist/nodes/Collection.js
763
763
  var require_Collection = __commonJS((exports) => {
764
764
  var createNode = require_createNode();
765
765
  var identity = require_identity();
@@ -874,7 +874,7 @@ var require_Collection = __commonJS((exports) => {
874
874
  exports.isEmptyPath = isEmptyPath;
875
875
  });
876
876
 
877
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/stringify/stringifyComment.js
877
+ // node_modules/yaml/dist/stringify/stringifyComment.js
878
878
  var require_stringifyComment = __commonJS((exports) => {
879
879
  var stringifyComment = (str) => str.replace(/^(?!$)(?: $)?/gm, "#");
880
880
  function indentComment(comment, indent) {
@@ -891,7 +891,7 @@ var require_stringifyComment = __commonJS((exports) => {
891
891
  exports.stringifyComment = stringifyComment;
892
892
  });
893
893
 
894
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/stringify/foldFlowLines.js
894
+ // node_modules/yaml/dist/stringify/foldFlowLines.js
895
895
  var require_foldFlowLines = __commonJS((exports) => {
896
896
  var FOLD_FLOW = "flow";
897
897
  var FOLD_BLOCK = "block";
@@ -1028,7 +1028,7 @@ ${indent}${text.slice(fold + 1, end2)}`;
1028
1028
  exports.foldFlowLines = foldFlowLines;
1029
1029
  });
1030
1030
 
1031
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/stringify/stringifyString.js
1031
+ // node_modules/yaml/dist/stringify/stringifyString.js
1032
1032
  var require_stringifyString = __commonJS((exports) => {
1033
1033
  var Scalar = require_Scalar();
1034
1034
  var foldFlowLines = require_foldFlowLines();
@@ -1326,7 +1326,7 @@ ${indent}`);
1326
1326
  exports.stringifyString = stringifyString;
1327
1327
  });
1328
1328
 
1329
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/stringify/stringify.js
1329
+ // node_modules/yaml/dist/stringify/stringify.js
1330
1330
  var require_stringify = __commonJS((exports) => {
1331
1331
  var anchors = require_anchors();
1332
1332
  var identity = require_identity();
@@ -1447,7 +1447,7 @@ ${ctx.indent}${str}`;
1447
1447
  exports.stringify = stringify;
1448
1448
  });
1449
1449
 
1450
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/stringify/stringifyPair.js
1450
+ // node_modules/yaml/dist/stringify/stringifyPair.js
1451
1451
  var require_stringifyPair = __commonJS((exports) => {
1452
1452
  var identity = require_identity();
1453
1453
  var Scalar = require_Scalar();
@@ -1583,7 +1583,7 @@ ${ctx.indent}`;
1583
1583
  exports.stringifyPair = stringifyPair;
1584
1584
  });
1585
1585
 
1586
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/log.js
1586
+ // node_modules/yaml/dist/log.js
1587
1587
  var require_log = __commonJS((exports) => {
1588
1588
  var node_process = __require("process");
1589
1589
  function debug(logLevel, ...messages) {
@@ -1602,7 +1602,7 @@ var require_log = __commonJS((exports) => {
1602
1602
  exports.warn = warn;
1603
1603
  });
1604
1604
 
1605
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/schema/yaml-1.1/merge.js
1605
+ // node_modules/yaml/dist/schema/yaml-1.1/merge.js
1606
1606
  var require_merge = __commonJS((exports) => {
1607
1607
  var identity = require_identity();
1608
1608
  var Scalar = require_Scalar();
@@ -1656,7 +1656,7 @@ var require_merge = __commonJS((exports) => {
1656
1656
  exports.merge = merge;
1657
1657
  });
1658
1658
 
1659
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/nodes/addPairToJSMap.js
1659
+ // node_modules/yaml/dist/nodes/addPairToJSMap.js
1660
1660
  var require_addPairToJSMap = __commonJS((exports) => {
1661
1661
  var log = require_log();
1662
1662
  var merge = require_merge();
@@ -1717,7 +1717,7 @@ var require_addPairToJSMap = __commonJS((exports) => {
1717
1717
  exports.addPairToJSMap = addPairToJSMap;
1718
1718
  });
1719
1719
 
1720
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/nodes/Pair.js
1720
+ // node_modules/yaml/dist/nodes/Pair.js
1721
1721
  var require_Pair = __commonJS((exports) => {
1722
1722
  var createNode = require_createNode();
1723
1723
  var stringifyPair = require_stringifyPair();
@@ -1755,7 +1755,7 @@ var require_Pair = __commonJS((exports) => {
1755
1755
  exports.createPair = createPair;
1756
1756
  });
1757
1757
 
1758
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/stringify/stringifyCollection.js
1758
+ // node_modules/yaml/dist/stringify/stringifyCollection.js
1759
1759
  var require_stringifyCollection = __commonJS((exports) => {
1760
1760
  var identity = require_identity();
1761
1761
  var stringify = require_stringify();
@@ -1907,7 +1907,7 @@ ${indent}${end}`;
1907
1907
  exports.stringifyCollection = stringifyCollection;
1908
1908
  });
1909
1909
 
1910
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/nodes/YAMLMap.js
1910
+ // node_modules/yaml/dist/nodes/YAMLMap.js
1911
1911
  var require_YAMLMap = __commonJS((exports) => {
1912
1912
  var stringifyCollection = require_stringifyCollection();
1913
1913
  var addPairToJSMap = require_addPairToJSMap();
@@ -2034,7 +2034,7 @@ var require_YAMLMap = __commonJS((exports) => {
2034
2034
  exports.findPair = findPair;
2035
2035
  });
2036
2036
 
2037
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/schema/common/map.js
2037
+ // node_modules/yaml/dist/schema/common/map.js
2038
2038
  var require_map = __commonJS((exports) => {
2039
2039
  var identity = require_identity();
2040
2040
  var YAMLMap = require_YAMLMap();
@@ -2053,7 +2053,7 @@ var require_map = __commonJS((exports) => {
2053
2053
  exports.map = map;
2054
2054
  });
2055
2055
 
2056
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/nodes/YAMLSeq.js
2056
+ // node_modules/yaml/dist/nodes/YAMLSeq.js
2057
2057
  var require_YAMLSeq = __commonJS((exports) => {
2058
2058
  var createNode = require_createNode();
2059
2059
  var stringifyCollection = require_stringifyCollection();
@@ -2146,7 +2146,7 @@ var require_YAMLSeq = __commonJS((exports) => {
2146
2146
  exports.YAMLSeq = YAMLSeq;
2147
2147
  });
2148
2148
 
2149
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/schema/common/seq.js
2149
+ // node_modules/yaml/dist/schema/common/seq.js
2150
2150
  var require_seq = __commonJS((exports) => {
2151
2151
  var identity = require_identity();
2152
2152
  var YAMLSeq = require_YAMLSeq();
@@ -2165,7 +2165,7 @@ var require_seq = __commonJS((exports) => {
2165
2165
  exports.seq = seq;
2166
2166
  });
2167
2167
 
2168
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/schema/common/string.js
2168
+ // node_modules/yaml/dist/schema/common/string.js
2169
2169
  var require_string = __commonJS((exports) => {
2170
2170
  var stringifyString = require_stringifyString();
2171
2171
  var string = {
@@ -2181,7 +2181,7 @@ var require_string = __commonJS((exports) => {
2181
2181
  exports.string = string;
2182
2182
  });
2183
2183
 
2184
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/schema/common/null.js
2184
+ // node_modules/yaml/dist/schema/common/null.js
2185
2185
  var require_null = __commonJS((exports) => {
2186
2186
  var Scalar = require_Scalar();
2187
2187
  var nullTag = {
@@ -2196,7 +2196,7 @@ var require_null = __commonJS((exports) => {
2196
2196
  exports.nullTag = nullTag;
2197
2197
  });
2198
2198
 
2199
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/schema/core/bool.js
2199
+ // node_modules/yaml/dist/schema/core/bool.js
2200
2200
  var require_bool = __commonJS((exports) => {
2201
2201
  var Scalar = require_Scalar();
2202
2202
  var boolTag = {
@@ -2217,7 +2217,7 @@ var require_bool = __commonJS((exports) => {
2217
2217
  exports.boolTag = boolTag;
2218
2218
  });
2219
2219
 
2220
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/stringify/stringifyNumber.js
2220
+ // node_modules/yaml/dist/stringify/stringifyNumber.js
2221
2221
  var require_stringifyNumber = __commonJS((exports) => {
2222
2222
  function stringifyNumber({ format, minFractionDigits, tag, value }) {
2223
2223
  if (typeof value === "bigint")
@@ -2241,7 +2241,7 @@ var require_stringifyNumber = __commonJS((exports) => {
2241
2241
  exports.stringifyNumber = stringifyNumber;
2242
2242
  });
2243
2243
 
2244
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/schema/core/float.js
2244
+ // node_modules/yaml/dist/schema/core/float.js
2245
2245
  var require_float = __commonJS((exports) => {
2246
2246
  var Scalar = require_Scalar();
2247
2247
  var stringifyNumber = require_stringifyNumber();
@@ -2284,7 +2284,7 @@ var require_float = __commonJS((exports) => {
2284
2284
  exports.floatNaN = floatNaN;
2285
2285
  });
2286
2286
 
2287
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/schema/core/int.js
2287
+ // node_modules/yaml/dist/schema/core/int.js
2288
2288
  var require_int = __commonJS((exports) => {
2289
2289
  var stringifyNumber = require_stringifyNumber();
2290
2290
  var intIdentify = (value) => typeof value === "bigint" || Number.isInteger(value);
@@ -2326,7 +2326,7 @@ var require_int = __commonJS((exports) => {
2326
2326
  exports.intOct = intOct;
2327
2327
  });
2328
2328
 
2329
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/schema/core/schema.js
2329
+ // node_modules/yaml/dist/schema/core/schema.js
2330
2330
  var require_schema = __commonJS((exports) => {
2331
2331
  var map = require_map();
2332
2332
  var _null = require_null();
@@ -2351,7 +2351,7 @@ var require_schema = __commonJS((exports) => {
2351
2351
  exports.schema = schema;
2352
2352
  });
2353
2353
 
2354
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/schema/json/schema.js
2354
+ // node_modules/yaml/dist/schema/json/schema.js
2355
2355
  var require_schema2 = __commonJS((exports) => {
2356
2356
  var Scalar = require_Scalar();
2357
2357
  var map = require_map();
@@ -2415,7 +2415,7 @@ var require_schema2 = __commonJS((exports) => {
2415
2415
  exports.schema = schema;
2416
2416
  });
2417
2417
 
2418
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/schema/yaml-1.1/binary.js
2418
+ // node_modules/yaml/dist/schema/yaml-1.1/binary.js
2419
2419
  var require_binary = __commonJS((exports) => {
2420
2420
  var node_buffer = __require("buffer");
2421
2421
  var Scalar = require_Scalar();
@@ -2470,7 +2470,7 @@ var require_binary = __commonJS((exports) => {
2470
2470
  exports.binary = binary;
2471
2471
  });
2472
2472
 
2473
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/schema/yaml-1.1/pairs.js
2473
+ // node_modules/yaml/dist/schema/yaml-1.1/pairs.js
2474
2474
  var require_pairs = __commonJS((exports) => {
2475
2475
  var identity = require_identity();
2476
2476
  var Pair = require_Pair();
@@ -2545,7 +2545,7 @@ ${cn.comment}` : item.comment;
2545
2545
  exports.resolvePairs = resolvePairs;
2546
2546
  });
2547
2547
 
2548
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/schema/yaml-1.1/omap.js
2548
+ // node_modules/yaml/dist/schema/yaml-1.1/omap.js
2549
2549
  var require_omap = __commonJS((exports) => {
2550
2550
  var identity = require_identity();
2551
2551
  var toJS = require_toJS();
@@ -2617,7 +2617,7 @@ var require_omap = __commonJS((exports) => {
2617
2617
  exports.omap = omap;
2618
2618
  });
2619
2619
 
2620
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/schema/yaml-1.1/bool.js
2620
+ // node_modules/yaml/dist/schema/yaml-1.1/bool.js
2621
2621
  var require_bool2 = __commonJS((exports) => {
2622
2622
  var Scalar = require_Scalar();
2623
2623
  function boolStringify({ value, source }, ctx) {
@@ -2646,7 +2646,7 @@ var require_bool2 = __commonJS((exports) => {
2646
2646
  exports.trueTag = trueTag;
2647
2647
  });
2648
2648
 
2649
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/schema/yaml-1.1/float.js
2649
+ // node_modules/yaml/dist/schema/yaml-1.1/float.js
2650
2650
  var require_float2 = __commonJS((exports) => {
2651
2651
  var Scalar = require_Scalar();
2652
2652
  var stringifyNumber = require_stringifyNumber();
@@ -2692,7 +2692,7 @@ var require_float2 = __commonJS((exports) => {
2692
2692
  exports.floatNaN = floatNaN;
2693
2693
  });
2694
2694
 
2695
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/schema/yaml-1.1/int.js
2695
+ // node_modules/yaml/dist/schema/yaml-1.1/int.js
2696
2696
  var require_int2 = __commonJS((exports) => {
2697
2697
  var stringifyNumber = require_stringifyNumber();
2698
2698
  var intIdentify = (value) => typeof value === "bigint" || Number.isInteger(value);
@@ -2768,7 +2768,7 @@ var require_int2 = __commonJS((exports) => {
2768
2768
  exports.intOct = intOct;
2769
2769
  });
2770
2770
 
2771
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/schema/yaml-1.1/set.js
2771
+ // node_modules/yaml/dist/schema/yaml-1.1/set.js
2772
2772
  var require_set = __commonJS((exports) => {
2773
2773
  var identity = require_identity();
2774
2774
  var Pair = require_Pair();
@@ -2851,7 +2851,7 @@ var require_set = __commonJS((exports) => {
2851
2851
  exports.set = set;
2852
2852
  });
2853
2853
 
2854
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/schema/yaml-1.1/timestamp.js
2854
+ // node_modules/yaml/dist/schema/yaml-1.1/timestamp.js
2855
2855
  var require_timestamp = __commonJS((exports) => {
2856
2856
  var stringifyNumber = require_stringifyNumber();
2857
2857
  function parseSexagesimal(str, asBigInt) {
@@ -2933,7 +2933,7 @@ var require_timestamp = __commonJS((exports) => {
2933
2933
  exports.timestamp = timestamp;
2934
2934
  });
2935
2935
 
2936
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/schema/yaml-1.1/schema.js
2936
+ // node_modules/yaml/dist/schema/yaml-1.1/schema.js
2937
2937
  var require_schema3 = __commonJS((exports) => {
2938
2938
  var map = require_map();
2939
2939
  var _null = require_null();
@@ -2974,7 +2974,7 @@ var require_schema3 = __commonJS((exports) => {
2974
2974
  exports.schema = schema;
2975
2975
  });
2976
2976
 
2977
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/schema/tags.js
2977
+ // node_modules/yaml/dist/schema/tags.js
2978
2978
  var require_tags = __commonJS((exports) => {
2979
2979
  var map = require_map();
2980
2980
  var _null = require_null();
@@ -3065,7 +3065,7 @@ var require_tags = __commonJS((exports) => {
3065
3065
  exports.getTags = getTags;
3066
3066
  });
3067
3067
 
3068
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/schema/Schema.js
3068
+ // node_modules/yaml/dist/schema/Schema.js
3069
3069
  var require_Schema = __commonJS((exports) => {
3070
3070
  var identity = require_identity();
3071
3071
  var map = require_map();
@@ -3095,7 +3095,7 @@ var require_Schema = __commonJS((exports) => {
3095
3095
  exports.Schema = Schema;
3096
3096
  });
3097
3097
 
3098
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/stringify/stringifyDocument.js
3098
+ // node_modules/yaml/dist/stringify/stringifyDocument.js
3099
3099
  var require_stringifyDocument = __commonJS((exports) => {
3100
3100
  var identity = require_identity();
3101
3101
  var stringify = require_stringify();
@@ -3175,7 +3175,7 @@ var require_stringifyDocument = __commonJS((exports) => {
3175
3175
  exports.stringifyDocument = stringifyDocument;
3176
3176
  });
3177
3177
 
3178
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/doc/Document.js
3178
+ // node_modules/yaml/dist/doc/Document.js
3179
3179
  var require_Document = __commonJS((exports) => {
3180
3180
  var Alias = require_Alias();
3181
3181
  var Collection = require_Collection();
@@ -3410,7 +3410,7 @@ var require_Document = __commonJS((exports) => {
3410
3410
  exports.Document = Document;
3411
3411
  });
3412
3412
 
3413
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/errors.js
3413
+ // node_modules/yaml/dist/errors.js
3414
3414
  var require_errors = __commonJS((exports) => {
3415
3415
  class YAMLError extends Error {
3416
3416
  constructor(name, pos, code, message) {
@@ -3475,7 +3475,7 @@ ${pointer}
3475
3475
  exports.prettifyError = prettifyError;
3476
3476
  });
3477
3477
 
3478
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/compose/resolve-props.js
3478
+ // node_modules/yaml/dist/compose/resolve-props.js
3479
3479
  var require_resolve_props = __commonJS((exports) => {
3480
3480
  function resolveProps(tokens, { flow, indicator, next, offset, onError, parentIndent, startOnNewline }) {
3481
3481
  let spaceBefore = false;
@@ -3605,7 +3605,7 @@ var require_resolve_props = __commonJS((exports) => {
3605
3605
  exports.resolveProps = resolveProps;
3606
3606
  });
3607
3607
 
3608
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/compose/util-contains-newline.js
3608
+ // node_modules/yaml/dist/compose/util-contains-newline.js
3609
3609
  var require_util_contains_newline = __commonJS((exports) => {
3610
3610
  function containsNewline(key) {
3611
3611
  if (!key)
@@ -3645,7 +3645,7 @@ var require_util_contains_newline = __commonJS((exports) => {
3645
3645
  exports.containsNewline = containsNewline;
3646
3646
  });
3647
3647
 
3648
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/compose/util-flow-indent-check.js
3648
+ // node_modules/yaml/dist/compose/util-flow-indent-check.js
3649
3649
  var require_util_flow_indent_check = __commonJS((exports) => {
3650
3650
  var utilContainsNewline = require_util_contains_newline();
3651
3651
  function flowIndentCheck(indent, fc, onError) {
@@ -3660,7 +3660,7 @@ var require_util_flow_indent_check = __commonJS((exports) => {
3660
3660
  exports.flowIndentCheck = flowIndentCheck;
3661
3661
  });
3662
3662
 
3663
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/compose/util-map-includes.js
3663
+ // node_modules/yaml/dist/compose/util-map-includes.js
3664
3664
  var require_util_map_includes = __commonJS((exports) => {
3665
3665
  var identity = require_identity();
3666
3666
  function mapIncludes(ctx, items, search) {
@@ -3673,7 +3673,7 @@ var require_util_map_includes = __commonJS((exports) => {
3673
3673
  exports.mapIncludes = mapIncludes;
3674
3674
  });
3675
3675
 
3676
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/compose/resolve-block-map.js
3676
+ // node_modules/yaml/dist/compose/resolve-block-map.js
3677
3677
  var require_resolve_block_map = __commonJS((exports) => {
3678
3678
  var Pair = require_Pair();
3679
3679
  var YAMLMap = require_YAMLMap();
@@ -3780,7 +3780,7 @@ var require_resolve_block_map = __commonJS((exports) => {
3780
3780
  exports.resolveBlockMap = resolveBlockMap;
3781
3781
  });
3782
3782
 
3783
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/compose/resolve-block-seq.js
3783
+ // node_modules/yaml/dist/compose/resolve-block-seq.js
3784
3784
  var require_resolve_block_seq = __commonJS((exports) => {
3785
3785
  var YAMLSeq = require_YAMLSeq();
3786
3786
  var resolveProps = require_resolve_props();
@@ -3828,7 +3828,7 @@ var require_resolve_block_seq = __commonJS((exports) => {
3828
3828
  exports.resolveBlockSeq = resolveBlockSeq;
3829
3829
  });
3830
3830
 
3831
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/compose/resolve-end.js
3831
+ // node_modules/yaml/dist/compose/resolve-end.js
3832
3832
  var require_resolve_end = __commonJS((exports) => {
3833
3833
  function resolveEnd(end, offset, reqSpace, onError) {
3834
3834
  let comment = "";
@@ -3868,7 +3868,7 @@ var require_resolve_end = __commonJS((exports) => {
3868
3868
  exports.resolveEnd = resolveEnd;
3869
3869
  });
3870
3870
 
3871
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/compose/resolve-flow-collection.js
3871
+ // node_modules/yaml/dist/compose/resolve-flow-collection.js
3872
3872
  var require_resolve_flow_collection = __commonJS((exports) => {
3873
3873
  var identity = require_identity();
3874
3874
  var Pair = require_Pair();
@@ -4059,7 +4059,7 @@ var require_resolve_flow_collection = __commonJS((exports) => {
4059
4059
  exports.resolveFlowCollection = resolveFlowCollection;
4060
4060
  });
4061
4061
 
4062
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/compose/compose-collection.js
4062
+ // node_modules/yaml/dist/compose/compose-collection.js
4063
4063
  var require_compose_collection = __commonJS((exports) => {
4064
4064
  var identity = require_identity();
4065
4065
  var Scalar = require_Scalar();
@@ -4121,7 +4121,7 @@ var require_compose_collection = __commonJS((exports) => {
4121
4121
  exports.composeCollection = composeCollection;
4122
4122
  });
4123
4123
 
4124
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/compose/resolve-block-scalar.js
4124
+ // node_modules/yaml/dist/compose/resolve-block-scalar.js
4125
4125
  var require_resolve_block_scalar = __commonJS((exports) => {
4126
4126
  var Scalar = require_Scalar();
4127
4127
  function resolveBlockScalar(ctx, scalar, onError) {
@@ -4314,7 +4314,7 @@ var require_resolve_block_scalar = __commonJS((exports) => {
4314
4314
  exports.resolveBlockScalar = resolveBlockScalar;
4315
4315
  });
4316
4316
 
4317
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/compose/resolve-flow-scalar.js
4317
+ // node_modules/yaml/dist/compose/resolve-flow-scalar.js
4318
4318
  var require_resolve_flow_scalar = __commonJS((exports) => {
4319
4319
  var Scalar = require_Scalar();
4320
4320
  var resolveEnd = require_resolve_end();
@@ -4530,7 +4530,7 @@ var require_resolve_flow_scalar = __commonJS((exports) => {
4530
4530
  exports.resolveFlowScalar = resolveFlowScalar;
4531
4531
  });
4532
4532
 
4533
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/compose/compose-scalar.js
4533
+ // node_modules/yaml/dist/compose/compose-scalar.js
4534
4534
  var require_compose_scalar = __commonJS((exports) => {
4535
4535
  var identity = require_identity();
4536
4536
  var Scalar = require_Scalar();
@@ -4608,7 +4608,7 @@ var require_compose_scalar = __commonJS((exports) => {
4608
4608
  exports.composeScalar = composeScalar;
4609
4609
  });
4610
4610
 
4611
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/compose/util-empty-scalar-position.js
4611
+ // node_modules/yaml/dist/compose/util-empty-scalar-position.js
4612
4612
  var require_util_empty_scalar_position = __commonJS((exports) => {
4613
4613
  function emptyScalarPosition(offset, before, pos) {
4614
4614
  if (before) {
@@ -4635,7 +4635,7 @@ var require_util_empty_scalar_position = __commonJS((exports) => {
4635
4635
  exports.emptyScalarPosition = emptyScalarPosition;
4636
4636
  });
4637
4637
 
4638
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/compose/compose-node.js
4638
+ // node_modules/yaml/dist/compose/compose-node.js
4639
4639
  var require_compose_node = __commonJS((exports) => {
4640
4640
  var Alias = require_Alias();
4641
4641
  var identity = require_identity();
@@ -4738,7 +4738,7 @@ var require_compose_node = __commonJS((exports) => {
4738
4738
  exports.composeNode = composeNode;
4739
4739
  });
4740
4740
 
4741
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/compose/compose-doc.js
4741
+ // node_modules/yaml/dist/compose/compose-doc.js
4742
4742
  var require_compose_doc = __commonJS((exports) => {
4743
4743
  var Document = require_Document();
4744
4744
  var composeNode = require_compose_node();
@@ -4778,7 +4778,7 @@ var require_compose_doc = __commonJS((exports) => {
4778
4778
  exports.composeDoc = composeDoc;
4779
4779
  });
4780
4780
 
4781
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/compose/composer.js
4781
+ // node_modules/yaml/dist/compose/composer.js
4782
4782
  var require_composer = __commonJS((exports) => {
4783
4783
  var node_process = __require("process");
4784
4784
  var directives = require_directives();
@@ -4967,7 +4967,7 @@ ${end.comment}` : end.comment;
4967
4967
  exports.Composer = Composer;
4968
4968
  });
4969
4969
 
4970
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/parse/cst-scalar.js
4970
+ // node_modules/yaml/dist/parse/cst-scalar.js
4971
4971
  var require_cst_scalar = __commonJS((exports) => {
4972
4972
  var resolveBlockScalar = require_resolve_block_scalar();
4973
4973
  var resolveFlowScalar = require_resolve_flow_scalar();
@@ -5157,7 +5157,7 @@ var require_cst_scalar = __commonJS((exports) => {
5157
5157
  exports.setScalarValue = setScalarValue;
5158
5158
  });
5159
5159
 
5160
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/parse/cst-stringify.js
5160
+ // node_modules/yaml/dist/parse/cst-stringify.js
5161
5161
  var require_cst_stringify = __commonJS((exports) => {
5162
5162
  var stringify = (cst) => ("type" in cst) ? stringifyToken(cst) : stringifyItem(cst);
5163
5163
  function stringifyToken(token) {
@@ -5215,7 +5215,7 @@ var require_cst_stringify = __commonJS((exports) => {
5215
5215
  exports.stringify = stringify;
5216
5216
  });
5217
5217
 
5218
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/parse/cst-visit.js
5218
+ // node_modules/yaml/dist/parse/cst-visit.js
5219
5219
  var require_cst_visit = __commonJS((exports) => {
5220
5220
  var BREAK = Symbol("break visit");
5221
5221
  var SKIP = Symbol("skip children");
@@ -5274,7 +5274,7 @@ var require_cst_visit = __commonJS((exports) => {
5274
5274
  exports.visit = visit;
5275
5275
  });
5276
5276
 
5277
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/parse/cst.js
5277
+ // node_modules/yaml/dist/parse/cst.js
5278
5278
  var require_cst = __commonJS((exports) => {
5279
5279
  var cstScalar = require_cst_scalar();
5280
5280
  var cstStringify = require_cst_stringify();
@@ -5375,7 +5375,7 @@ var require_cst = __commonJS((exports) => {
5375
5375
  exports.tokenType = tokenType;
5376
5376
  });
5377
5377
 
5378
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/parse/lexer.js
5378
+ // node_modules/yaml/dist/parse/lexer.js
5379
5379
  var require_lexer = __commonJS((exports) => {
5380
5380
  var cst = require_cst();
5381
5381
  function isEmpty(ch) {
@@ -5961,7 +5961,7 @@ var require_lexer = __commonJS((exports) => {
5961
5961
  exports.Lexer = Lexer;
5962
5962
  });
5963
5963
 
5964
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/parse/line-counter.js
5964
+ // node_modules/yaml/dist/parse/line-counter.js
5965
5965
  var require_line_counter = __commonJS((exports) => {
5966
5966
  class LineCounter {
5967
5967
  constructor() {
@@ -5989,7 +5989,7 @@ var require_line_counter = __commonJS((exports) => {
5989
5989
  exports.LineCounter = LineCounter;
5990
5990
  });
5991
5991
 
5992
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/parse/parser.js
5992
+ // node_modules/yaml/dist/parse/parser.js
5993
5993
  var require_parser = __commonJS((exports) => {
5994
5994
  var node_process = __require("process");
5995
5995
  var cst = require_cst();
@@ -6838,7 +6838,7 @@ var require_parser = __commonJS((exports) => {
6838
6838
  exports.Parser = Parser;
6839
6839
  });
6840
6840
 
6841
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/public-api.js
6841
+ // node_modules/yaml/dist/public-api.js
6842
6842
  var require_public_api = __commonJS((exports) => {
6843
6843
  var composer = require_composer();
6844
6844
  var Document = require_Document();
@@ -6932,7 +6932,7 @@ var require_public_api = __commonJS((exports) => {
6932
6932
  exports.stringify = stringify;
6933
6933
  });
6934
6934
 
6935
- // node_modules/.bun/zod@3.25.76/node_modules/zod/v3/helpers/util.js
6935
+ // node_modules/zod/v3/helpers/util.js
6936
6936
  var util, objectUtil, ZodParsedType, getParsedType = (data) => {
6937
6937
  const t = typeof data;
6938
6938
  switch (t) {
@@ -7063,7 +7063,7 @@ var init_util = __esm(() => {
7063
7063
  ]);
7064
7064
  });
7065
7065
 
7066
- // node_modules/.bun/zod@3.25.76/node_modules/zod/v3/ZodError.js
7066
+ // node_modules/zod/v3/ZodError.js
7067
7067
  var ZodIssueCode, quotelessJson = (obj) => {
7068
7068
  const json = JSON.stringify(obj, null, 2);
7069
7069
  return json.replace(/"([^"]+)":/g, "$1:");
@@ -7184,7 +7184,7 @@ var init_ZodError = __esm(() => {
7184
7184
  };
7185
7185
  });
7186
7186
 
7187
- // node_modules/.bun/zod@3.25.76/node_modules/zod/v3/locales/en.js
7187
+ // node_modules/zod/v3/locales/en.js
7188
7188
  var errorMap = (issue, _ctx) => {
7189
7189
  let message;
7190
7190
  switch (issue.code) {
@@ -7291,7 +7291,7 @@ var init_en = __esm(() => {
7291
7291
  en_default = errorMap;
7292
7292
  });
7293
7293
 
7294
- // node_modules/.bun/zod@3.25.76/node_modules/zod/v3/errors.js
7294
+ // node_modules/zod/v3/errors.js
7295
7295
  function setErrorMap(map) {
7296
7296
  overrideErrorMap = map;
7297
7297
  }
@@ -7304,7 +7304,7 @@ var init_errors = __esm(() => {
7304
7304
  overrideErrorMap = en_default;
7305
7305
  });
7306
7306
 
7307
- // node_modules/.bun/zod@3.25.76/node_modules/zod/v3/helpers/parseUtil.js
7307
+ // node_modules/zod/v3/helpers/parseUtil.js
7308
7308
  function addIssueToContext(ctx, issueData) {
7309
7309
  const overrideMap = getErrorMap();
7310
7310
  const issue = makeIssue({
@@ -7409,10 +7409,10 @@ var init_parseUtil = __esm(() => {
7409
7409
  });
7410
7410
  });
7411
7411
 
7412
- // node_modules/.bun/zod@3.25.76/node_modules/zod/v3/helpers/typeAliases.js
7412
+ // node_modules/zod/v3/helpers/typeAliases.js
7413
7413
  var init_typeAliases = () => {};
7414
7414
 
7415
- // node_modules/.bun/zod@3.25.76/node_modules/zod/v3/helpers/errorUtil.js
7415
+ // node_modules/zod/v3/helpers/errorUtil.js
7416
7416
  var errorUtil;
7417
7417
  var init_errorUtil = __esm(() => {
7418
7418
  (function(errorUtil2) {
@@ -7421,7 +7421,7 @@ var init_errorUtil = __esm(() => {
7421
7421
  })(errorUtil || (errorUtil = {}));
7422
7422
  });
7423
7423
 
7424
- // node_modules/.bun/zod@3.25.76/node_modules/zod/v3/types.js
7424
+ // node_modules/zod/v3/types.js
7425
7425
  class ParseInputLazyPath {
7426
7426
  constructor(parent, value, path, key) {
7427
7427
  this._cachedPath = [];
@@ -10772,7 +10772,7 @@ var init_types = __esm(() => {
10772
10772
  NEVER = INVALID;
10773
10773
  });
10774
10774
 
10775
- // node_modules/.bun/zod@3.25.76/node_modules/zod/v3/external.js
10775
+ // node_modules/zod/v3/external.js
10776
10776
  var exports_external = {};
10777
10777
  __export(exports_external, {
10778
10778
  void: () => voidType,
@@ -10892,7 +10892,7 @@ var init_external = __esm(() => {
10892
10892
  init_ZodError();
10893
10893
  });
10894
10894
 
10895
- // node_modules/.bun/zod@3.25.76/node_modules/zod/index.js
10895
+ // node_modules/zod/index.js
10896
10896
  var init_zod = __esm(() => {
10897
10897
  init_external();
10898
10898
  init_external();
@@ -11656,7 +11656,7 @@ import { readFileSync as readFileSync2, existsSync as existsSync3 } from "node:f
11656
11656
  import { homedir } from "node:os";
11657
11657
  import { resolve as resolve3 } from "node:path";
11658
11658
 
11659
- // node_modules/.bun/yaml@2.8.3/node_modules/yaml/dist/index.js
11659
+ // node_modules/yaml/dist/index.js
11660
11660
  var composer = require_composer();
11661
11661
  var Document = require_Document();
11662
11662
  var Schema = require_Schema();
@@ -11900,19 +11900,30 @@ var TelegramChannelSchema = exports_external.object({
11900
11900
  stream_mode: exports_external.enum(["pty", "checklist"]).optional().describe("How live progress is streamed to Telegram during a turn. " + "'pty' (default) surfaces text snapshots of Claude Code's TUI \u2014 " + "compatible but can flicker as Ink re-renders. 'checklist' drives " + "a structured progress card from session-tail events \u2014 stable " + "order, per-tool status emojis, fires only on semantic transitions."),
11901
11901
  stream_throttle_ms: exports_external.number().int().nonnegative().optional().describe("Throttle window in ms between successive in-place stream edits " + "during a turn. Lower = more responsive stream, higher = fewer API " + "calls. Floored at 250 by draft-stream itself. Default 400 ms for DMs " + "and 1000 ms for groups/forums (respects Telegram's ~1 edit/sec/message " + "practical ceiling). Override per-agent if a particular agent needs " + "snappier or quieter streaming."),
11902
11902
  clear_status_on_completion: exports_external.boolean().optional().describe("When true, the live activity/status feed (the in-place 'what it's " + "doing' message \u2014 Reading X, Searching the web for Y, \u2026) is DELETED " + "when the turn's final answer lands, so only the reply remains. " + "Default false: the status message is left in the chat as a record " + "(its last step marked done) \u2014 no post-then-delete. Per-agent " + "override; cascades defaults \u2192 profile \u2192 agent (per-key)."),
11903
+ pin_status_while_working: exports_external.boolean().optional().describe("When true (default), the framework SILENTLY pins the already-" + "rendered status message while its work is in-flight and auto-unpins " + "it on completion \u2014 the per-turn activity/status message (foreground) " + "and the '\uD83D\uDEE0 Worker' background-worker message. Keeps in-flight work " + "in view when the conversation scrolls past it (fast turns, stacked " + "background workers, long turns). No new surface is rendered; it pins " + "a message the chat already owns. The pin never buzzes the device. " + "The ONE sanctioned pin under chat-is-the-single-source-of-truth. " + "Set false to disable. Per-agent override; cascades defaults \u2192 " + "profile \u2192 agent (per-key)."),
11903
11904
  hotReloadStable: exports_external.boolean().optional().describe("If true, the stable workspace prefix (AGENTS.md, SOUL.md, USER.md, " + "IDENTITY.md, TOOLS.md) is re-injected on every turn via " + "the UserPromptSubmit hook instead of baked into --append-system-prompt " + "at session start. Lets workspace edits propagate without a restart. " + "Costs ~5-10% per-turn latency/spend since the stable prefix is no " + "longer prompt-cached."),
11904
11905
  inject_on_change: exports_external.boolean().optional().describe("Context-efficiency gate for per-turn hook injection (default true). " + "When true (the default), the turn-pacing directive and dynamic " + "workspace content are only re-emitted when their content changes or " + "the session_id changes \u2014 suppressing redundant injection that " + "otherwise triples compaction frequency. Set to false to revert to " + "the legacy always-emit behaviour (every turn injects the full " + "content regardless of whether it changed)."),
11905
11906
  orphan_promotion_ms: exports_external.number().int().nonnegative().optional().describe("How long (ms) a parent turn waits for a sub-agent JSONL watcher " + "to deliver sub_agent_started before the heartbeat promotes the spawn " + "to a synthesised 'running' row. Default 5000. Set to 0 to disable " + "orphan promotion entirely."),
11906
11907
  cold_sub_agent_threshold_ms: exports_external.number().int().nonnegative().optional().describe("JSONL-cold threshold (ms). When a running sub-agent emits no events " + "for this long, the heartbeat synthesises a turn_end for it so the " + "deferred-completion path can proceed. Default 30000. Set to 0 to " + "disable the synthetic close."),
11907
11908
  deferred_completion_timeout_ms: exports_external.number().int().nonnegative().optional().describe("Force-close timeout (ms) for deferred sub-agent completion. After " + "the parent turn_end arrives while sub-agents are still running, the " + "card is force-closed after this many ms even if sub-agents never " + "finish. Watcher-disconnect safety net. Default 180000 (3 min)."),
11909
+ approval_timeout_minutes: exports_external.number().int().nonnegative().optional().describe("Operator approval-card lifetime (minutes) for the tool-use 'Allow " + "once' card and the vault grant decision wait. After this long with " + "no operator tap, the card auto-denies (a TIMEOUT, not a denial \u2014 the " + "agent is told not to retry). Default 60. hostd-gated verbs " + "(mcp__hostd__*) keep their own longer window; the hostd " + "config-propose card is not governed by this key."),
11908
11910
  sub_agent_tick_interval_ms: exports_external.number().int().nonnegative().optional().describe("Heartbeat tick interval (ms) for sub-agent rendering. Forces a " + "re-render of the elapsed-time counter while sub-agents are running, " + "even during silent stretches between tool calls. Default 10000 (10 s). " + "Set to 0 to disable the elapsed-ticker path."),
11909
11911
  edit_budget_threshold: exports_external.number().int().nonnegative().optional().describe("Telegram API edit budget per minute before the progress-card driver " + "falls back to a slower coalesce window. When a chat accumulates more " + "than this many card edits in the trailing 60 s, the driver switches " + "to a wider coalesce interval until the rate drops back. Default 18. " + "Increase if your gateway frequently bumps the Telegram edit-rate ceiling " + "with many parallel sub-agents; decrease for a more conservative buffer."),
11910
11912
  stickers: exports_external.record(exports_external.string(), exports_external.string()).optional().describe("Sticker aliases for the `send_sticker` MCP tool (#576). Maps a " + "short alias name (e.g. 'happy', 'thinking') to a Telegram file_id. " + "Operator-curated \u2014 capture file_ids from inbound stickers the user " + "sends and add them here. The agent calls send_sticker(chat_id, " + "alias='happy') and the gateway resolves to the file_id at send " + "time. Aliases enable persona-flavored expressiveness without " + "exposing raw file_ids in the agent prompt. Personal-assistant / " + "health-coach personas benefit; coding agents typically don't " + "configure any."),
11911
11913
  voice_in: exports_external.object({
11912
11914
  enabled: exports_external.boolean().optional().describe("Master switch for voice-message transcription."),
11913
11915
  provider: exports_external.enum(["openai"]).optional().describe("Transcription provider. Only 'openai' (Whisper API) supported in the spike (#578); " + "Groq/Deepgram/local-whisper-cli are follow-up choices."),
11914
- language: exports_external.string().optional().describe("Optional ISO-639-1 language hint (e.g. 'en', 'fr'). Skips Whisper's auto-detection.")
11915
- }).optional().describe("Inbound voice-message transcription (#578). When enabled, voice/audio " + "messages from allowlisted users are downloaded, transcribed via the " + "configured provider, and surface to the agent as the user's text. " + "API key read from ~/.switchroom/openai-api-key (mode 0600). Off by " + "default \u2014 opt-in per agent. Cascades from defaults.channels.telegram.voice_in. " + "(Migrated from per-agent root in #596 \u2014 see consistency unification.)"),
11916
+ language: exports_external.string().optional().describe("Optional ISO-639-1 language hint (e.g. 'en', 'fr'). Skips Whisper's auto-detection."),
11917
+ api_key: exports_external.string().optional().describe("Transcription-provider API key, as a `vault:<key>` reference " + "(e.g. 'vault:openai/api-key' \u2014 the default if omitted). The " + "gateway resolves it through the vault broker at use-time and " + "never writes the resolved value to disk or the agent prompt. " + "`switchroom enable voice-in` vault-stores the key and writes " + "this reference for you. A literal key is accepted but " + "discouraged \u2014 keep secrets in the vault.")
11918
+ }).optional().describe("Inbound voice-message transcription (#578). When enabled, voice/audio " + "messages from allowlisted users are downloaded, transcribed via the " + "configured provider, and surface to the agent as the user's text. " + "The provider API key is a `vault:` reference (`api_key`, default " + "`vault:openai/api-key`) resolved through the vault broker at " + "use-time \u2014 opt-in third-party key, honest-exception per the " + "subscription-honest outcome. Off by default \u2014 opt-in per agent. " + "Cascades from defaults.channels.telegram.voice_in. " + "(Migrated from per-agent root in #596 \u2014 see consistency unification.)"),
11919
+ voice_out: exports_external.object({
11920
+ enabled: exports_external.boolean().optional().describe("Master switch for spoken-reply (TTS) voice notes."),
11921
+ engine: exports_external.enum(["kokoro", "openai"]).default("kokoro").describe("Synthesis engine. 'kokoro' = local voice sidecar (POST /tts, " + "subscription-honest, no third-party key); 'openai' = OpenAI TTS " + "cloud (honest-exception, requires an `api_key` vault ref). " + "'kokoro' is only active when the host voice verdict is local " + "(SWITCHROOM_VOICE_ENGINE === 'local'); otherwise voice-out is a " + "no-op and replies stay text-only."),
11922
+ voice: exports_external.string().optional().describe("Engine-specific voice id (e.g. a Kokoro voice name or an OpenAI " + "voice like 'alloy'). Optional \u2014 the sidecar/engine has its own " + "default when omitted."),
11923
+ reply_mode: exports_external.enum(["voice+text", "voice-only", "on-demand"]).default("voice+text").describe("How the spoken reply accompanies the text. 'voice+text' sends " + "both the normal text reply and a voice note; 'voice-only' sends " + "the voice note and suppresses the text body. 'on-demand' sends " + "the text reply with a single '\uD83D\uDD0A Listen' inline button and " + "synthesizes NO audio until the user taps it \u2014 zero GPU/sidecar " + "work unless requested, which keeps the voice pipeline " + "subscription-honest and visible (nothing is generated behind the " + "user's back). The Listen button is injected ONLY when the reply " + "carries no agent-authored buttons, to avoid colliding with the " + "single_use keyboard-strip that protects agent buttons from " + "double-fire. In every mode the text reply is ALWAYS still sent " + "when synthesis fails or the reply exceeds max_chars \u2014 the user's " + "answer is never dropped silently."),
11924
+ max_chars: exports_external.number().int().positive().optional().describe("Per-voice-note chunk size (chars). Default 600; clamped to the " + "engine's hard cap (1200). A reply LONGER than this is NOT truncated " + "to text \u2014 it's split on sentence/paragraph boundaries and spoken " + "across several sequential voice notes, so the full answer is heard " + "even when the user can't read the screen (driving / cycling). Lower " + "it for snappier individual notes; raise it (up to 1200) for fewer, " + "longer notes."),
11925
+ api_key: exports_external.string().optional().describe("OpenAI TTS API key as a `vault:<key>` reference (only used when " + "engine='openai'; default 'vault:openai/api-key'). Resolved through " + "the vault broker at use-time and never written to disk or the agent " + "prompt. Ignored for engine='kokoro' (the sidecar needs no key).")
11926
+ }).optional().describe("Outbound spoken replies via TTS (PR-C2). When enabled, the gateway " + "synthesizes the agent's text reply into an OGG/Opus voice note and " + "sends it alongside (or instead of) the text, per reply_mode. The " + "'kokoro' engine uses the local voice sidecar (POST /tts) and is only " + "active when the host voice verdict is local; the 'openai' engine is " + "an honest-exception cloud path gated on an `api_key` vault ref. Voice " + "is best-effort and fully non-fatal \u2014 any TTS error falls back to the " + "text reply. Off by default \u2014 opt-in per agent. " + "Cascades from defaults.channels.telegram.voice_out."),
11916
11927
  telegraph: exports_external.object({
11917
11928
  enabled: exports_external.boolean().optional().describe("Master switch for Telegraph Instant View publishing."),
11918
11929
  threshold: exports_external.number().int().positive().optional().describe("Char count above which a reply is published to Telegraph instead of " + "HTML-chunked into multiple Telegram messages. Default 3000 (\u22483 chunks)."),
@@ -12156,7 +12167,7 @@ var AgentSchema = exports_external.object({
12156
12167
  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")).optional(),
12157
12168
  reactions: ReactionsSchema,
12158
12169
  reaction_dispatch: ReactionDispatchSchema,
12159
- model: exports_external.string().regex(/^[a-zA-Z0-9][a-zA-Z0-9._\-/\[\]:]*$/, "Model name must be alphanumeric with ._-/[]: only (no spaces or shell specials)").optional().describe("Claude model override (e.g., 'claude-sonnet-4-6')"),
12170
+ model: exports_external.string().regex(/^[a-zA-Z0-9][a-zA-Z0-9._\-/\[\]:]*$/, "Model name must be alphanumeric with ._-/[]: only (no spaces or shell specials)").optional().describe("Claude model override (e.g., 'claude-sonnet-5')"),
12160
12171
  thinking_effort: exports_external.enum(["low", "medium", "high", "xhigh", "max"]).optional().describe("Adaptive-thinking effort level passed as --effort to the claude CLI. " + "Per-agent override wins over defaults.thinking_effort. " + "lower = faster/cheaper, higher = more reasoning. Omit to use Claude's default."),
12161
12172
  permission_mode: exports_external.enum(["acceptEdits", "auto", "bypassPermissions", "default", "dontAsk", "plan"]).optional().describe("Permission mode passed as --permission-mode to the claude CLI. " + "Per-agent override wins over defaults.permission_mode. " + "Warning: bypassPermissions and dontAsk skip all safety checks \u2014 use only in trusted sandboxes."),
12162
12173
  fallback_model: exports_external.string().regex(/^[a-zA-Z0-9][a-zA-Z0-9._\-/\[\]:]*$/, "Fallback model name must be alphanumeric with ._-/[]: only").optional().describe("Fallback model passed as --fallback-model to the claude CLI. " + "Per-agent override wins over defaults.fallback_model. " + "Used when the primary model is overloaded. Note: only functional in --print (non-interactive) mode per Claude CLI docs; silently no-ops in interactive sessions."),
@@ -12287,6 +12298,11 @@ var HostControlConfigSchema = exports_external.object({
12287
12298
  var WebServiceConfigSchema = exports_external.object({
12288
12299
  managed: exports_external.boolean().default(false).describe("Whether `switchroom update` refreshes the web-service container " + "(dashboard + GitHub-webhook receiver) via `switchroom webd " + "install`. Default: false \u2014 existing installs run the web server " + "as the legacy `switchroom-web.service` systemd unit and must not " + "be surprised by a container takeover of host loopback 127.0.0.1:" + "8080 mid-update. Set true ONLY after cutting over to the " + "container (stop+disable the systemd unit, `switchroom webd " + "install`). The container runs in its own compose project " + "(`switchroom-web`), separate from the agent fleet, with " + "network_mode: host so it keeps owning loopback:8080 for the " + "cloudflared tunnel + tailscale serve consumers.")
12289
12300
  });
12301
+ var FleetHealthConfigSchema = exports_external.object({
12302
+ owner_agent: exports_external.string().regex(/^[a-z0-9][a-z0-9_-]{0,50}$/, {
12303
+ message: "owner_agent must match the standard agent-name pattern"
12304
+ }).optional().describe("The admin agent that runs the Fleet Health sensor + deep-dive crons " + "(RFC fleet-health.md). Default unset \u2192 the feature is inert: no crons " + "are scheduled and the admin page renders its empty state. The named " + "agent must be admin: true. A dedicated owner (not any admin) keeps " + "the fleet-health work attributable, its memory scoped, and its token " + "spend accountable. The detection runs ONLY as operator-set schedules " + "on this agent \u2014 never a self-authored loop (on-leash, " + "no-self-escalation).")
12305
+ });
12290
12306
  var HostdConfigSchema = exports_external.object({
12291
12307
  config_edit_enabled: exports_external.boolean().default(false).describe("Opt-in toggle for the `config_propose_edit` hostd verb (RFC " + "admin-agent-config-edit \u00a73). Default false \u2014 the verb returns " + "`E_CONFIG_EDIT_DISABLED` until the operator explicitly flips " + "this to true. When true, admin agents can propose unified-diff " + "patches against " + "`/state/config/switchroom.yaml`, gated by an operator approval " + "card in the primary chat. Same trust posture as `update_apply` " + "and `agent_restart`: the human-in-the-loop tap is the security " + "boundary, not the agent's judgement."),
12292
12308
  config_edit_rate_per_hour: exports_external.number().int().min(1).max(20).default(3).describe("Per-requesting-agent rate cap for `config_propose_edit` cards " + "(RFC admin-agent-config-edit \u00a75). Default 3 cards/hour; min 1, " + "max 20. ENFORCED server-side: a caller exceeding this in a sliding " + "1-hour window is rejected with `E_RATE_LIMITED` (carrying a " + "`retry_after` fix) instead of posting another operator approval " + "card \u2014 so a looping agent is throttled rather than spamming the chat.")
@@ -12335,6 +12351,7 @@ var SwitchroomConfigSchema = exports_external.object({
12335
12351
  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."),
12336
12352
  host_control: HostControlConfigSchema.default({}).describe("Host-control daemon configuration. Defaults to enabled=true since " + "RFC C Phase 2 (reference/rfcs/host-control-daemon.md). Omit the block " + "to accept defaults; set `enabled: false` only on legacy systemd-" + "mode installs (removal tracked as RFC C Phase 3)."),
12337
12353
  hostd: HostdConfigSchema.default({}).describe("hostd verb-level knobs (RFC admin-agent-config-edit). Distinct " + "from `host_control:` which governs whether the daemon runs at " + "all. Scopes the opt-in flag and rate cap for the " + "`config_propose_edit` verb (disabled by default)."),
12354
+ fleet_health: FleetHealthConfigSchema.default({}).describe("Fleet Health \u2014 job-spec-anchored, operator-facing issue tracker (RFC " + "fleet-health.md, serves fleet-stays-healthy). Assigns the owner agent " + "that runs the nightly model-free sensor + weekly deep-dive. Default " + "unset owner_agent \u2192 inert; the admin page renders an empty state."),
12338
12355
  web_service: WebServiceConfigSchema.default({}).describe("Web-service container (dashboard + GitHub-webhook receiver) config. " + "Defaults to managed=false so existing systemd-mode installs are " + "untouched. Set managed: true after cutting over to the " + "`switchroom-web` container \u2014 then `switchroom update` keeps it " + "refreshed. See `switchroom webd install`."),
12339
12356
  google_accounts: exports_external.record(exports_external.string().regex(/^[^@\s:]+@[^@\s:]+\.[^@\s:]+$/, {
12340
12357
  message: "Account key must be a Google account email like 'alice@example.com' (colons not allowed)"