switchroom 0.19.2 → 0.19.3

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 (60) hide show
  1. package/dist/agent-scheduler/index.js +2 -0
  2. package/dist/auth-broker/index.js +13 -0
  3. package/dist/cli/autoaccept-poll.js +2 -0
  4. package/dist/cli/drive-write-pretool.mjs +2 -0
  5. package/dist/cli/ms-365-write-pretool.mjs +2 -0
  6. package/dist/cli/switchroom.js +404 -245
  7. package/dist/host-control/main.js +1 -1
  8. package/package.json +1 -1
  9. package/profiles/default/CLAUDE.md.hbs +8 -0
  10. package/skills/mental-model-curator/SKILL.md +68 -2
  11. package/telegram-plugin/auth-snapshot-format.ts +104 -12
  12. package/telegram-plugin/dist/bridge/bridge.js +8 -2
  13. package/telegram-plugin/dist/gateway/gateway.js +1194 -794
  14. package/telegram-plugin/dist/server.js +8 -2
  15. package/telegram-plugin/flushed-turn-supersede.ts +117 -13
  16. package/telegram-plugin/gateway/auth-add-flow.ts +215 -6
  17. package/telegram-plugin/gateway/auth-command.ts +138 -5
  18. package/telegram-plugin/gateway/gateway.ts +68 -101
  19. package/telegram-plugin/gateway/inbound-interceptors.ts +13 -3
  20. package/telegram-plugin/gateway/model-command.ts +203 -1
  21. package/telegram-plugin/gateway/outbound-send-path.ts +68 -15
  22. package/telegram-plugin/gateway/session-model-source.ts +90 -10
  23. package/telegram-plugin/gateway/stream-render.ts +22 -5
  24. package/telegram-plugin/quota-bar-format.ts +60 -12
  25. package/telegram-plugin/reply-owner-resolve.ts +76 -11
  26. package/telegram-plugin/session-tail.ts +27 -3
  27. package/telegram-plugin/tests/auth-add-flow.test.ts +367 -5
  28. package/telegram-plugin/tests/auth-snapshot-format.test.ts +41 -0
  29. package/telegram-plugin/tests/flushed-turn-supersede.test.ts +117 -0
  30. package/telegram-plugin/tests/gateway-session-model-relaunch.test.ts +185 -29
  31. package/telegram-plugin/tests/model-command.test.ts +220 -0
  32. package/telegram-plugin/tests/reply-owner-resolve.test.ts +257 -13
  33. package/telegram-plugin/tests/send-reply-golden.test.ts +154 -0
  34. package/telegram-plugin/tests/session-model-source.test.ts +142 -0
  35. package/telegram-plugin/tests/session-tail-first-attach.test.ts +115 -2
  36. package/vendor/hindsight-memory/CHANGELOG.md +102 -0
  37. package/vendor/hindsight-memory/README.md +2 -1
  38. package/vendor/hindsight-memory/hooks/hooks.json +12 -0
  39. package/vendor/hindsight-memory/scripts/directive_verify.py +100 -3
  40. package/vendor/hindsight-memory/scripts/lib/config.py +150 -1
  41. package/vendor/hindsight-memory/scripts/lib/content.py +55 -5
  42. package/vendor/hindsight-memory/scripts/lib/directives.py +152 -15
  43. package/vendor/hindsight-memory/scripts/lib/parallel_recall.py +142 -0
  44. package/vendor/hindsight-memory/scripts/lib/state.py +31 -0
  45. package/vendor/hindsight-memory/scripts/recall.py +789 -143
  46. package/vendor/hindsight-memory/scripts/reconcile_tail.py +22 -1
  47. package/vendor/hindsight-memory/scripts/retain.py +71 -2
  48. package/vendor/hindsight-memory/scripts/subagent_retain.py +501 -0
  49. package/vendor/hindsight-memory/scripts/tests/test_directive_verify.py +169 -0
  50. package/vendor/hindsight-memory/scripts/tests/test_directives.py +177 -0
  51. package/vendor/hindsight-memory/scripts/tests/test_lesson_tagging.py +200 -0
  52. package/vendor/hindsight-memory/scripts/tests/test_recall_context_turns_default.py +200 -0
  53. package/vendor/hindsight-memory/scripts/tests/test_recall_envelope_strip_telemetry.py +477 -0
  54. package/vendor/hindsight-memory/scripts/tests/test_recall_integration.py +51 -0
  55. package/vendor/hindsight-memory/scripts/tests/test_recall_parallel_deadline.py +409 -0
  56. package/vendor/hindsight-memory/scripts/tests/test_recall_tag_weights.py +96 -0
  57. package/vendor/hindsight-memory/scripts/tests/test_recall_transcript_fallback.py +413 -0
  58. package/vendor/hindsight-memory/scripts/tests/test_reconcile_durability.py +49 -0
  59. package/vendor/hindsight-memory/scripts/tests/test_subagent_retain.py +439 -0
  60. package/vendor/hindsight-memory/settings.json +3 -1
@@ -13945,6 +13945,8 @@ var AccountStateSchema = exports_external.object({
13945
13945
  label: exports_external.string(),
13946
13946
  expiresAt: exports_external.number().optional(),
13947
13947
  exhausted: exports_external.boolean(),
13948
+ in_service: exports_external.boolean().optional(),
13949
+ entitlement_blocked: exports_external.boolean().optional(),
13948
13950
  exhausted_until: exports_external.number().optional(),
13949
13951
  throttled_until: exports_external.number().optional(),
13950
13952
  threshold_violations: exports_external.number().int().nonnegative().optional(),
@@ -20401,6 +20401,8 @@ var AccountStateSchema = exports_external.object({
20401
20401
  label: exports_external.string(),
20402
20402
  expiresAt: exports_external.number().optional(),
20403
20403
  exhausted: exports_external.boolean(),
20404
+ in_service: exports_external.boolean().optional(),
20405
+ entitlement_blocked: exports_external.boolean().optional(),
20404
20406
  exhausted_until: exports_external.number().optional(),
20405
20407
  throttled_until: exports_external.number().optional(),
20406
20408
  threshold_violations: exports_external.number().int().nonnegative().optional(),
@@ -21441,6 +21443,7 @@ class AuthBroker {
21441
21443
  }
21442
21444
  async opListState(socket, id, identity) {
21443
21445
  const auth = this.config.auth ?? {};
21446
+ const inService = this.inServiceSet();
21444
21447
  const accounts = listAccounts(this.home).map((label) => {
21445
21448
  const creds = readAccountCredentials(label, this.home);
21446
21449
  const meta = readAccountMeta(label, this.home);
@@ -21451,6 +21454,8 @@ class AuthBroker {
21451
21454
  label,
21452
21455
  expiresAt: creds?.claudeAiOauth?.expiresAt,
21453
21456
  exhausted,
21457
+ in_service: inService.has(label),
21458
+ entitlement_blocked: false,
21454
21459
  exhausted_until: q?.exhausted_until,
21455
21460
  throttled_until: q?.throttled_until,
21456
21461
  threshold_violations: this.thresholdViolations[label] ?? 0,
@@ -21700,6 +21705,14 @@ class AuthBroker {
21700
21705
  set.add(acct);
21701
21706
  return set;
21702
21707
  }
21708
+ inServiceSet() {
21709
+ const set = this.premiumCanarySet();
21710
+ for (const c of this.config.auth?.consumers ?? []) {
21711
+ if (c.account)
21712
+ set.add(c.account);
21713
+ }
21714
+ return set;
21715
+ }
21703
21716
  pinnedAgentAccounts() {
21704
21717
  return new Set(Object.values(this.config.agents ?? {}).map((a) => a.auth?.override).filter((x) => typeof x === "string" && x.length > 0));
21705
21718
  }
@@ -4874,6 +4874,8 @@ var AccountStateSchema = exports_external.object({
4874
4874
  label: exports_external.string(),
4875
4875
  expiresAt: exports_external.number().optional(),
4876
4876
  exhausted: exports_external.boolean(),
4877
+ in_service: exports_external.boolean().optional(),
4878
+ entitlement_blocked: exports_external.boolean().optional(),
4877
4879
  exhausted_until: exports_external.number().optional(),
4878
4880
  throttled_until: exports_external.number().optional(),
4879
4881
  threshold_violations: exports_external.number().int().nonnegative().optional(),
@@ -4162,6 +4162,8 @@ var init_protocol = __esm(() => {
4162
4162
  label: exports_external.string(),
4163
4163
  expiresAt: exports_external.number().optional(),
4164
4164
  exhausted: exports_external.boolean(),
4165
+ in_service: exports_external.boolean().optional(),
4166
+ entitlement_blocked: exports_external.boolean().optional(),
4165
4167
  exhausted_until: exports_external.number().optional(),
4166
4168
  throttled_until: exports_external.number().optional(),
4167
4169
  threshold_violations: exports_external.number().int().nonnegative().optional(),
@@ -4164,6 +4164,8 @@ var init_protocol = __esm(() => {
4164
4164
  label: exports_external.string(),
4165
4165
  expiresAt: exports_external.number().optional(),
4166
4166
  exhausted: exports_external.boolean(),
4167
+ in_service: exports_external.boolean().optional(),
4168
+ entitlement_blocked: exports_external.boolean().optional(),
4167
4169
  exhausted_until: exports_external.number().optional(),
4168
4170
  throttled_until: exports_external.number().optional(),
4169
4171
  threshold_violations: exports_external.number().int().nonnegative().optional(),