switchroom 0.15.44 → 0.16.4

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 (150) hide show
  1. package/dist/agent-scheduler/index.js +122 -88
  2. package/dist/auth-broker/index.js +463 -177
  3. package/dist/cli/autoaccept-poll.js +4842 -35
  4. package/dist/cli/drive-write-pretool.mjs +17 -14
  5. package/dist/cli/notion-write-pretool.mjs +117 -86
  6. package/dist/cli/self-improve-apply-guard-pretool.mjs +626 -0
  7. package/dist/cli/self-improve-stop.mjs +428 -0
  8. package/dist/cli/skill-validate-pretool.mjs +72 -72
  9. package/dist/cli/switchroom.js +3249 -1241
  10. package/dist/cli/ui/index.html +1 -1
  11. package/dist/host-control/main.js +2833 -355
  12. package/dist/vault/approvals/kernel-server.js +7482 -7439
  13. package/dist/vault/broker/server.js +11315 -11272
  14. package/examples/minimal.yaml +1 -0
  15. package/examples/switchroom.yaml +1 -0
  16. package/package.json +3 -3
  17. package/profiles/_base/start.sh.hbs +88 -1
  18. package/profiles/_shared/execution-discipline.md.hbs +18 -0
  19. package/profiles/default/CLAUDE.md.hbs +3 -22
  20. package/telegram-plugin/.claude-plugin/plugin.json +2 -2
  21. package/telegram-plugin/answer-stream-flag.ts +12 -49
  22. package/telegram-plugin/answer-stream.ts +5 -150
  23. package/telegram-plugin/auth-snapshot-format.ts +280 -48
  24. package/telegram-plugin/auto-fallback-fleet.ts +44 -1
  25. package/telegram-plugin/context-exhaustion.ts +12 -0
  26. package/telegram-plugin/demo-mask.ts +154 -0
  27. package/telegram-plugin/dist/bridge/bridge.js +167 -124
  28. package/telegram-plugin/dist/gateway/gateway.js +3039 -1159
  29. package/telegram-plugin/dist/server.js +215 -172
  30. package/telegram-plugin/docs/waiting-ux-spec.md +2 -2
  31. package/telegram-plugin/draft-stream.ts +47 -410
  32. package/telegram-plugin/final-answer-detect.ts +17 -12
  33. package/telegram-plugin/fleet-fallback-resume.ts +131 -0
  34. package/telegram-plugin/format.ts +56 -19
  35. package/telegram-plugin/gateway/auth-add-flow.ts +332 -127
  36. package/telegram-plugin/gateway/auth-broker-client.ts +2 -2
  37. package/telegram-plugin/gateway/auth-command.ts +70 -14
  38. package/telegram-plugin/gateway/clean-shutdown-marker.ts +44 -0
  39. package/telegram-plugin/gateway/config-approval-handler.test.ts +91 -4
  40. package/telegram-plugin/gateway/config-approval-handler.ts +94 -13
  41. package/telegram-plugin/gateway/current-turn-map.ts +188 -0
  42. package/telegram-plugin/gateway/disconnect-flush.ts +3 -1
  43. package/telegram-plugin/gateway/effort-command.ts +8 -3
  44. package/telegram-plugin/gateway/emission-authority.ts +369 -0
  45. package/telegram-plugin/gateway/feed-open-gate.ts +292 -0
  46. package/telegram-plugin/gateway/gateway.ts +1837 -291
  47. package/telegram-plugin/gateway/inject-handler.test.ts +2 -1
  48. package/telegram-plugin/gateway/ms365-write-approval.test.ts +4 -4
  49. package/telegram-plugin/gateway/represent-guard.ts +72 -0
  50. package/telegram-plugin/gateway/status-surface-log.test.ts +5 -4
  51. package/telegram-plugin/gateway/status-surface-log.ts +14 -3
  52. package/telegram-plugin/history.ts +33 -11
  53. package/telegram-plugin/hooks/repo-context-pretool.mjs +26 -0
  54. package/telegram-plugin/hooks/subagent-tracker-posttool.mjs +5 -0
  55. package/telegram-plugin/hooks/subagent-tracker-pretool.mjs +8 -0
  56. package/telegram-plugin/hooks/tool-label-pretool.mjs +39 -15
  57. package/telegram-plugin/issues-card.ts +4 -0
  58. package/telegram-plugin/model-unavailable.ts +124 -0
  59. package/telegram-plugin/narrative-dedup.ts +69 -0
  60. package/telegram-plugin/over-ping-safety-net.ts +70 -4
  61. package/telegram-plugin/package.json +3 -3
  62. package/telegram-plugin/pending-work-progress.ts +12 -0
  63. package/telegram-plugin/permission-rule.ts +32 -5
  64. package/telegram-plugin/permission-title.ts +152 -9
  65. package/telegram-plugin/quota-check.ts +13 -0
  66. package/telegram-plugin/quota-watch.ts +135 -7
  67. package/telegram-plugin/registry/turns-schema.test.ts +24 -0
  68. package/telegram-plugin/registry/turns-schema.ts +9 -0
  69. package/telegram-plugin/runtime-metrics.ts +13 -0
  70. package/telegram-plugin/session-tail.ts +96 -11
  71. package/telegram-plugin/silence-poke.ts +170 -24
  72. package/telegram-plugin/slot-banner-driver.ts +3 -0
  73. package/telegram-plugin/status-no-truncate.ts +44 -0
  74. package/telegram-plugin/status-reactions.ts +20 -3
  75. package/telegram-plugin/stream-controller.ts +4 -23
  76. package/telegram-plugin/stream-reply-handler.ts +6 -24
  77. package/telegram-plugin/streaming-metrics.ts +91 -0
  78. package/telegram-plugin/subagent-watcher.ts +212 -66
  79. package/telegram-plugin/tests/activity-ever-opened-sticky.test.ts +47 -0
  80. package/telegram-plugin/tests/answer-stream-dedup.test.ts +9 -26
  81. package/telegram-plugin/tests/answer-stream-flag.test.ts +25 -58
  82. package/telegram-plugin/tests/answer-stream-silent-markers.test.ts +41 -51
  83. package/telegram-plugin/tests/answer-stream.test.ts +2 -411
  84. package/telegram-plugin/tests/auth-add-flow.test.ts +488 -253
  85. package/telegram-plugin/tests/auth-command-format2.test.ts +71 -1
  86. package/telegram-plugin/tests/auth-snapshot-format.test.ts +376 -6
  87. package/telegram-plugin/tests/auto-fallback-fleet.test.ts +120 -0
  88. package/telegram-plugin/tests/cross-turn-card-gate.test.ts +424 -0
  89. package/telegram-plugin/tests/demo-mask.test.ts +127 -0
  90. package/telegram-plugin/tests/draft-stream.test.ts +0 -827
  91. package/telegram-plugin/tests/emission-authority-card-drain-gate.test.ts +236 -0
  92. package/telegram-plugin/tests/emission-authority-facade.test.ts +488 -0
  93. package/telegram-plugin/tests/emission-authority-open-gate.test.ts +179 -0
  94. package/telegram-plugin/tests/emission-authority-ping-gate.test.ts +395 -0
  95. package/telegram-plugin/tests/emission-determinism-wiring.test.ts +177 -0
  96. package/telegram-plugin/tests/feed-heartbeat-liveness-open.test.ts +146 -0
  97. package/telegram-plugin/tests/feed-open-gate.test.ts +259 -0
  98. package/telegram-plugin/tests/feed-survival.test.ts +526 -0
  99. package/telegram-plugin/tests/fleet-fallback-resume.test.ts +197 -0
  100. package/telegram-plugin/tests/gateway-clean-shutdown-marker.test.ts +117 -0
  101. package/telegram-plugin/tests/gateway-no-reply-single-emit.test.ts +4 -11
  102. package/telegram-plugin/tests/history.test.ts +60 -0
  103. package/telegram-plugin/tests/model-unavailable.test.ts +118 -0
  104. package/telegram-plugin/tests/narrative-dedup.test.ts +118 -0
  105. package/telegram-plugin/tests/orphaned-reply-rearm.test.ts +285 -0
  106. package/telegram-plugin/tests/over-ping-final-answer-decoupling.test.ts +194 -0
  107. package/telegram-plugin/tests/over-ping-safety-net.test.ts +2 -2
  108. package/telegram-plugin/tests/per-topic-current-turn.test.ts +373 -0
  109. package/telegram-plugin/tests/permission-card-origin-kill-switch.test.ts +42 -0
  110. package/telegram-plugin/tests/permission-rule.test.ts +17 -0
  111. package/telegram-plugin/tests/permission-title.test.ts +206 -17
  112. package/telegram-plugin/tests/quota-watch.test.ts +252 -9
  113. package/telegram-plugin/tests/reply-terminal-reaction.test.ts +6 -1
  114. package/telegram-plugin/tests/repo-context-pretool.test.ts +62 -0
  115. package/telegram-plugin/tests/represent-guard.test.ts +162 -0
  116. package/telegram-plugin/tests/session-tail.test.ts +147 -3
  117. package/telegram-plugin/tests/silence-liveness-wiring.test.ts +18 -0
  118. package/telegram-plugin/tests/status-card-budget-parity.test.ts +72 -0
  119. package/telegram-plugin/tests/status-surface-log.test.ts +146 -0
  120. package/telegram-plugin/tests/subagent-watcher-clip-narrative.test.ts +58 -0
  121. package/telegram-plugin/tests/subagent-watcher-parent-turn-key.test.ts +102 -0
  122. package/telegram-plugin/tests/subagent-watcher-workflow-visibility.test.ts +225 -0
  123. package/telegram-plugin/tests/subagent-watcher.test.ts +147 -0
  124. package/telegram-plugin/tests/telegram-activity-visibility-integration.test.ts +597 -0
  125. package/telegram-plugin/tests/telegram-format.test.ts +101 -6
  126. package/telegram-plugin/tests/tool-activity-summary.test.ts +550 -15
  127. package/telegram-plugin/tests/tool-label-pretool.test.ts +73 -0
  128. package/telegram-plugin/tests/tool-label-sidecar.test.ts +44 -0
  129. package/telegram-plugin/tests/tool-labels.test.ts +67 -0
  130. package/telegram-plugin/tests/turn-liveness-floor.test.ts +196 -0
  131. package/telegram-plugin/tests/turn-liveness-invariant.test.ts +340 -0
  132. package/telegram-plugin/tests/welcome-text.test.ts +32 -3
  133. package/telegram-plugin/tests/worker-activity-feed.test.ts +470 -22
  134. package/telegram-plugin/tool-activity-summary.ts +375 -58
  135. package/telegram-plugin/turn-liveness-floor.ts +240 -0
  136. package/telegram-plugin/uat/assertions.ts +115 -0
  137. package/telegram-plugin/uat/driver.ts +68 -0
  138. package/telegram-plugin/uat/scenarios/bg-sub-agent-dispatch-dm.test.ts +119 -133
  139. package/telegram-plugin/uat/scenarios/jtbd-answer-pings.test.ts +94 -0
  140. package/telegram-plugin/uat/scenarios/jtbd-cross-turn-card-dm.test.ts +109 -0
  141. package/telegram-plugin/uat/scenarios/jtbd-foreground-feed-thinkgap-dm.test.ts +478 -0
  142. package/telegram-plugin/uat/scenarios/jtbd-foreground-feed-visibility-dm.test.ts +396 -0
  143. package/telegram-plugin/uat/scenarios/jtbd-liveness-feed-open-dm.test.ts +202 -0
  144. package/telegram-plugin/uat/scenarios/jtbd-reply-is-last-dm.test.ts +202 -0
  145. package/telegram-plugin/uat/scenarios/reactions-dm.test.ts +93 -87
  146. package/telegram-plugin/welcome-text.ts +13 -1
  147. package/telegram-plugin/worker-activity-feed.ts +157 -82
  148. package/telegram-plugin/draft-transport.ts +0 -122
  149. package/telegram-plugin/tests/draft-retirement-wiring.test.ts +0 -82
  150. package/telegram-plugin/tests/draft-transport.test.ts +0 -211
@@ -14,7 +14,7 @@ var __export = (target, all) => {
14
14
  };
15
15
  var __esm = (fn, res) => () => (fn && (res = fn(fn = 0)), res);
16
16
 
17
- // node_modules/.bun/zod@3.25.76/node_modules/zod/v3/helpers/util.js
17
+ // ../../switchroom/node_modules/.bun/zod@3.25.76/node_modules/zod/v3/helpers/util.js
18
18
  var util, objectUtil, ZodParsedType, getParsedType = (data) => {
19
19
  const t = typeof data;
20
20
  switch (t) {
@@ -145,7 +145,7 @@ var init_util = __esm(() => {
145
145
  ]);
146
146
  });
147
147
 
148
- // node_modules/.bun/zod@3.25.76/node_modules/zod/v3/ZodError.js
148
+ // ../../switchroom/node_modules/.bun/zod@3.25.76/node_modules/zod/v3/ZodError.js
149
149
  var ZodIssueCode, quotelessJson = (obj) => {
150
150
  const json = JSON.stringify(obj, null, 2);
151
151
  return json.replace(/"([^"]+)":/g, "$1:");
@@ -266,7 +266,7 @@ var init_ZodError = __esm(() => {
266
266
  };
267
267
  });
268
268
 
269
- // node_modules/.bun/zod@3.25.76/node_modules/zod/v3/locales/en.js
269
+ // ../../switchroom/node_modules/.bun/zod@3.25.76/node_modules/zod/v3/locales/en.js
270
270
  var errorMap = (issue, _ctx) => {
271
271
  let message;
272
272
  switch (issue.code) {
@@ -373,7 +373,7 @@ var init_en = __esm(() => {
373
373
  en_default = errorMap;
374
374
  });
375
375
 
376
- // node_modules/.bun/zod@3.25.76/node_modules/zod/v3/errors.js
376
+ // ../../switchroom/node_modules/.bun/zod@3.25.76/node_modules/zod/v3/errors.js
377
377
  function setErrorMap(map) {
378
378
  overrideErrorMap = map;
379
379
  }
@@ -386,7 +386,7 @@ var init_errors = __esm(() => {
386
386
  overrideErrorMap = en_default;
387
387
  });
388
388
 
389
- // node_modules/.bun/zod@3.25.76/node_modules/zod/v3/helpers/parseUtil.js
389
+ // ../../switchroom/node_modules/.bun/zod@3.25.76/node_modules/zod/v3/helpers/parseUtil.js
390
390
  function addIssueToContext(ctx, issueData) {
391
391
  const overrideMap = getErrorMap();
392
392
  const issue = makeIssue({
@@ -491,10 +491,10 @@ var init_parseUtil = __esm(() => {
491
491
  });
492
492
  });
493
493
 
494
- // node_modules/.bun/zod@3.25.76/node_modules/zod/v3/helpers/typeAliases.js
494
+ // ../../switchroom/node_modules/.bun/zod@3.25.76/node_modules/zod/v3/helpers/typeAliases.js
495
495
  var init_typeAliases = () => {};
496
496
 
497
- // node_modules/.bun/zod@3.25.76/node_modules/zod/v3/helpers/errorUtil.js
497
+ // ../../switchroom/node_modules/.bun/zod@3.25.76/node_modules/zod/v3/helpers/errorUtil.js
498
498
  var errorUtil;
499
499
  var init_errorUtil = __esm(() => {
500
500
  (function(errorUtil2) {
@@ -503,7 +503,7 @@ var init_errorUtil = __esm(() => {
503
503
  })(errorUtil || (errorUtil = {}));
504
504
  });
505
505
 
506
- // node_modules/.bun/zod@3.25.76/node_modules/zod/v3/types.js
506
+ // ../../switchroom/node_modules/.bun/zod@3.25.76/node_modules/zod/v3/types.js
507
507
  class ParseInputLazyPath {
508
508
  constructor(parent, value, path, key) {
509
509
  this._cachedPath = [];
@@ -3854,7 +3854,7 @@ var init_types = __esm(() => {
3854
3854
  NEVER = INVALID;
3855
3855
  });
3856
3856
 
3857
- // node_modules/.bun/zod@3.25.76/node_modules/zod/v3/external.js
3857
+ // ../../switchroom/node_modules/.bun/zod@3.25.76/node_modules/zod/v3/external.js
3858
3858
  var exports_external = {};
3859
3859
  __export(exports_external, {
3860
3860
  void: () => voidType,
@@ -3974,7 +3974,7 @@ var init_external = __esm(() => {
3974
3974
  init_ZodError();
3975
3975
  });
3976
3976
 
3977
- // node_modules/.bun/zod@3.25.76/node_modules/zod/index.js
3977
+ // ../../switchroom/node_modules/.bun/zod@3.25.76/node_modules/zod/index.js
3978
3978
  var init_zod = __esm(() => {
3979
3979
  init_external();
3980
3980
  init_external();
@@ -4114,7 +4114,8 @@ var init_protocol = __esm(() => {
4114
4114
  op: exports_external.literal("probe-quota"),
4115
4115
  id: exports_external.string().min(1),
4116
4116
  accounts: exports_external.array(exports_external.string().min(1)).min(1).max(32),
4117
- timeoutMs: exports_external.number().int().positive().max(60000).optional()
4117
+ timeoutMs: exports_external.number().int().positive().max(60000).optional(),
4118
+ forceLive: exports_external.boolean().optional()
4118
4119
  });
4119
4120
  ClaimNotificationRequestSchema = exports_external.object({
4120
4121
  v: exports_external.literal(PROTOCOL_VERSION),
@@ -4165,7 +4166,8 @@ var init_protocol = __esm(() => {
4165
4166
  fallback_order: exports_external.array(exports_external.string()),
4166
4167
  accounts: exports_external.array(AccountStateSchema),
4167
4168
  agents: exports_external.array(AgentStateSchema),
4168
- consumers: exports_external.array(ConsumerStateSchema)
4169
+ consumers: exports_external.array(ConsumerStateSchema),
4170
+ active_overage_serving: exports_external.boolean().optional()
4169
4171
  });
4170
4172
  SetActiveDataSchema = exports_external.object({
4171
4173
  active: exports_external.string(),
@@ -4344,13 +4346,14 @@ class AuthBrokerClient {
4344
4346
  });
4345
4347
  return data;
4346
4348
  }
4347
- async probeQuota(accounts, timeoutMs) {
4349
+ async probeQuota(accounts, timeoutMs, forceLive) {
4348
4350
  const data = await this.send({
4349
4351
  v: PROTOCOL_VERSION,
4350
4352
  id: randomUUID(),
4351
4353
  op: "probe-quota",
4352
4354
  accounts: [...accounts],
4353
- ...timeoutMs !== undefined ? { timeoutMs } : {}
4355
+ ...timeoutMs !== undefined ? { timeoutMs } : {},
4356
+ ...forceLive ? { forceLive: true } : {}
4354
4357
  });
4355
4358
  const parsed = data;
4356
4359
  for (const entry of parsed.results) {