switchroom 0.19.1 → 0.19.2

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 (34) hide show
  1. package/dist/agent-scheduler/index.js +29 -1
  2. package/dist/auth-broker/index.js +552 -48
  3. package/dist/cli/autoaccept-poll.js +29 -1
  4. package/dist/cli/drive-write-pretool.mjs +30 -2
  5. package/dist/cli/ms-365-write-pretool.mjs +30 -2
  6. package/dist/cli/switchroom.js +751 -36
  7. package/dist/host-control/main.js +3 -3
  8. package/dist/vault/approvals/kernel-server.js +2 -2
  9. package/dist/vault/broker/server.js +2 -2
  10. package/package.json +3 -2
  11. package/profiles/_base/start.sh.hbs +1 -0
  12. package/skills/switchroom-cli/SKILL.md +25 -0
  13. package/telegram-plugin/auth-snapshot-format.ts +39 -0
  14. package/telegram-plugin/dist/gateway/gateway.js +363 -25
  15. package/telegram-plugin/external-spend.ts +135 -0
  16. package/telegram-plugin/gateway/gateway.ts +83 -67
  17. package/telegram-plugin/gateway/model-command.ts +106 -0
  18. package/telegram-plugin/gateway/narrative-lane.ts +23 -9
  19. package/telegram-plugin/gateway/status-pin-store.ts +64 -4
  20. package/telegram-plugin/gateway/usage-mask.ts +29 -0
  21. package/telegram-plugin/hooks/subagent-tracker-pretool.mjs +19 -2
  22. package/telegram-plugin/quota-bar-format.ts +18 -0
  23. package/telegram-plugin/quota-check.ts +17 -2
  24. package/telegram-plugin/tests/activity-card-wiring.test.ts +47 -0
  25. package/telegram-plugin/tests/external-spend.test.ts +168 -0
  26. package/telegram-plugin/tests/gateway-session-model-relaunch.test.ts +57 -23
  27. package/telegram-plugin/tests/quota-bar-format.test.ts +43 -0
  28. package/telegram-plugin/tests/quota-check.test.ts +57 -0
  29. package/telegram-plugin/tests/status-pin-store.test.ts +198 -0
  30. package/telegram-plugin/tests/subagent-tracker-hooks.test.ts +50 -0
  31. package/telegram-plugin/tests/usage-footer-freshness.test.ts +141 -0
  32. package/telegram-plugin/tests/usage-mask.test.ts +35 -0
  33. package/telegram-plugin/tests/worker-feed-dispatch.test.ts +27 -0
  34. package/telegram-plugin/tests/worker-feed-pin-persistence.test.ts +131 -1
@@ -4843,6 +4843,12 @@ var ClaimNotificationRequestSchema = exports_external.object({
4843
4843
  key: exports_external.string().min(1).max(512),
4844
4844
  windowMs: exports_external.number().int().positive().max(86400000)
4845
4845
  });
4846
+ var GetExternalSpendRequestSchema = exports_external.object({
4847
+ v: exports_external.literal(PROTOCOL_VERSION),
4848
+ op: exports_external.literal("get-external-spend"),
4849
+ id: exports_external.string().min(1),
4850
+ forceLive: exports_external.boolean().optional()
4851
+ });
4846
4852
  var RequestSchema = exports_external.discriminatedUnion("op", [
4847
4853
  GetCredentialsRequestSchema,
4848
4854
  ListStateRequestSchema,
@@ -4856,7 +4862,8 @@ var RequestSchema = exports_external.discriminatedUnion("op", [
4856
4862
  ListGoogleAccountsRequestSchema,
4857
4863
  ListMicrosoftAccountsRequestSchema,
4858
4864
  ProbeQuotaRequestSchema,
4859
- ClaimNotificationRequestSchema
4865
+ ClaimNotificationRequestSchema,
4866
+ GetExternalSpendRequestSchema
4860
4867
  ]);
4861
4868
  var GetCredentialsDataSchema = exports_external.object({
4862
4869
  account: exports_external.string(),
@@ -4923,6 +4930,18 @@ var SetOverrideDataSchema = exports_external.object({
4923
4930
  var ClaimNotificationDataSchema = exports_external.object({
4924
4931
  granted: exports_external.boolean()
4925
4932
  });
4933
+ var GetExternalSpendDataSchema = exports_external.object({
4934
+ available: exports_external.boolean(),
4935
+ day24hUsd: exports_external.number().optional(),
4936
+ day7dUsd: exports_external.number().optional(),
4937
+ top: exports_external.array(exports_external.object({
4938
+ label: exports_external.string(),
4939
+ usd: exports_external.number()
4940
+ })).optional(),
4941
+ capturedAtMs: exports_external.number().int().nonnegative().optional(),
4942
+ served: exports_external.enum(["live", "cache"]).optional(),
4943
+ reason: exports_external.string().optional()
4944
+ });
4926
4945
  var GoogleAccountStateSchema = exports_external.object({
4927
4946
  account: exports_external.string(),
4928
4947
  expiresAt: exports_external.number(),
@@ -5120,6 +5139,15 @@ class AuthBrokerClient {
5120
5139
  }
5121
5140
  return parsed;
5122
5141
  }
5142
+ async getExternalSpend(forceLive) {
5143
+ const data = await this.send({
5144
+ v: PROTOCOL_VERSION,
5145
+ id: randomUUID2(),
5146
+ op: "get-external-spend",
5147
+ ...forceLive ? { forceLive: true } : {}
5148
+ });
5149
+ return data;
5150
+ }
5123
5151
  async setActive(account) {
5124
5152
  const data = await this.send({
5125
5153
  v: PROTOCOL_VERSION,
@@ -4000,7 +4000,7 @@ function decodeResponse(line) {
4000
4000
  }
4001
4001
  return ResponseSchema.parse(parsed);
4002
4002
  }
4003
- var MAX_FRAME_BYTES, PROTOCOL_VERSION = 1, ProviderNameSchema, GetCredentialsRequestSchema, ListStateRequestSchema, SetActiveRequestSchema, MarkExhaustedRequestSchema, MarkThrottledRequestSchema, RefreshAccountRequestSchema, AnthropicCredentialsSchema, GoogleCredentialsSchema, MicrosoftCredentialsSchema, ProviderCredentialsSchema, AddAccountRequestSchema, RmAccountRequestSchema, SetOverrideRequestSchema, ListGoogleAccountsRequestSchema, ListMicrosoftAccountsRequestSchema, ProbeQuotaRequestSchema, ClaimNotificationRequestSchema, RequestSchema, GetCredentialsDataSchema, AccountStateSchema, AgentStateSchema, ConsumerStateSchema, ListStateDataSchema, SetActiveDataSchema, MarkExhaustedDataSchema, MarkThrottledDataSchema, RefreshAccountDataSchema, AddAccountDataSchema, RmAccountDataSchema, SetOverrideDataSchema, ClaimNotificationDataSchema, GoogleAccountStateSchema, ListGoogleAccountsDataSchema, MicrosoftAccountStateSchema, ListMicrosoftAccountsDataSchema, ErrorBodySchema, SuccessResponseSchema, ErrorResponseSchema, ResponseSchema;
4003
+ var MAX_FRAME_BYTES, PROTOCOL_VERSION = 1, ProviderNameSchema, GetCredentialsRequestSchema, ListStateRequestSchema, SetActiveRequestSchema, MarkExhaustedRequestSchema, MarkThrottledRequestSchema, RefreshAccountRequestSchema, AnthropicCredentialsSchema, GoogleCredentialsSchema, MicrosoftCredentialsSchema, ProviderCredentialsSchema, AddAccountRequestSchema, RmAccountRequestSchema, SetOverrideRequestSchema, ListGoogleAccountsRequestSchema, ListMicrosoftAccountsRequestSchema, ProbeQuotaRequestSchema, ClaimNotificationRequestSchema, GetExternalSpendRequestSchema, RequestSchema, GetCredentialsDataSchema, AccountStateSchema, AgentStateSchema, ConsumerStateSchema, ListStateDataSchema, SetActiveDataSchema, MarkExhaustedDataSchema, MarkThrottledDataSchema, RefreshAccountDataSchema, AddAccountDataSchema, RmAccountDataSchema, SetOverrideDataSchema, ClaimNotificationDataSchema, GetExternalSpendDataSchema, GoogleAccountStateSchema, ListGoogleAccountsDataSchema, MicrosoftAccountStateSchema, ListMicrosoftAccountsDataSchema, ErrorBodySchema, SuccessResponseSchema, ErrorResponseSchema, ResponseSchema;
4004
4004
  var init_protocol = __esm(() => {
4005
4005
  init_zod();
4006
4006
  MAX_FRAME_BYTES = 64 * 1024;
@@ -4131,6 +4131,12 @@ var init_protocol = __esm(() => {
4131
4131
  key: exports_external.string().min(1).max(512),
4132
4132
  windowMs: exports_external.number().int().positive().max(86400000)
4133
4133
  });
4134
+ GetExternalSpendRequestSchema = exports_external.object({
4135
+ v: exports_external.literal(PROTOCOL_VERSION),
4136
+ op: exports_external.literal("get-external-spend"),
4137
+ id: exports_external.string().min(1),
4138
+ forceLive: exports_external.boolean().optional()
4139
+ });
4134
4140
  RequestSchema = exports_external.discriminatedUnion("op", [
4135
4141
  GetCredentialsRequestSchema,
4136
4142
  ListStateRequestSchema,
@@ -4144,7 +4150,8 @@ var init_protocol = __esm(() => {
4144
4150
  ListGoogleAccountsRequestSchema,
4145
4151
  ListMicrosoftAccountsRequestSchema,
4146
4152
  ProbeQuotaRequestSchema,
4147
- ClaimNotificationRequestSchema
4153
+ ClaimNotificationRequestSchema,
4154
+ GetExternalSpendRequestSchema
4148
4155
  ]);
4149
4156
  GetCredentialsDataSchema = exports_external.object({
4150
4157
  account: exports_external.string(),
@@ -4211,6 +4218,18 @@ var init_protocol = __esm(() => {
4211
4218
  ClaimNotificationDataSchema = exports_external.object({
4212
4219
  granted: exports_external.boolean()
4213
4220
  });
4221
+ GetExternalSpendDataSchema = exports_external.object({
4222
+ available: exports_external.boolean(),
4223
+ day24hUsd: exports_external.number().optional(),
4224
+ day7dUsd: exports_external.number().optional(),
4225
+ top: exports_external.array(exports_external.object({
4226
+ label: exports_external.string(),
4227
+ usd: exports_external.number()
4228
+ })).optional(),
4229
+ capturedAtMs: exports_external.number().int().nonnegative().optional(),
4230
+ served: exports_external.enum(["live", "cache"]).optional(),
4231
+ reason: exports_external.string().optional()
4232
+ });
4214
4233
  GoogleAccountStateSchema = exports_external.object({
4215
4234
  account: exports_external.string(),
4216
4235
  expiresAt: exports_external.number(),
@@ -4381,6 +4400,15 @@ class AuthBrokerClient {
4381
4400
  }
4382
4401
  return parsed;
4383
4402
  }
4403
+ async getExternalSpend(forceLive) {
4404
+ const data = await this.send({
4405
+ v: PROTOCOL_VERSION,
4406
+ id: randomUUID(),
4407
+ op: "get-external-spend",
4408
+ ...forceLive ? { forceLive: true } : {}
4409
+ });
4410
+ return data;
4411
+ }
4384
4412
  async setActive(account) {
4385
4413
  const data = await this.send({
4386
4414
  v: PROTOCOL_VERSION,
@@ -4002,7 +4002,7 @@ function decodeResponse(line) {
4002
4002
  }
4003
4003
  return ResponseSchema.parse(parsed);
4004
4004
  }
4005
- var MAX_FRAME_BYTES, PROTOCOL_VERSION = 1, ProviderNameSchema, GetCredentialsRequestSchema, ListStateRequestSchema, SetActiveRequestSchema, MarkExhaustedRequestSchema, MarkThrottledRequestSchema, RefreshAccountRequestSchema, AnthropicCredentialsSchema, GoogleCredentialsSchema, MicrosoftCredentialsSchema, ProviderCredentialsSchema, AddAccountRequestSchema, RmAccountRequestSchema, SetOverrideRequestSchema, ListGoogleAccountsRequestSchema, ListMicrosoftAccountsRequestSchema, ProbeQuotaRequestSchema, ClaimNotificationRequestSchema, RequestSchema, GetCredentialsDataSchema, AccountStateSchema, AgentStateSchema, ConsumerStateSchema, ListStateDataSchema, SetActiveDataSchema, MarkExhaustedDataSchema, MarkThrottledDataSchema, RefreshAccountDataSchema, AddAccountDataSchema, RmAccountDataSchema, SetOverrideDataSchema, ClaimNotificationDataSchema, GoogleAccountStateSchema, ListGoogleAccountsDataSchema, MicrosoftAccountStateSchema, ListMicrosoftAccountsDataSchema, ErrorBodySchema, SuccessResponseSchema, ErrorResponseSchema, ResponseSchema;
4005
+ var MAX_FRAME_BYTES, PROTOCOL_VERSION = 1, ProviderNameSchema, GetCredentialsRequestSchema, ListStateRequestSchema, SetActiveRequestSchema, MarkExhaustedRequestSchema, MarkThrottledRequestSchema, RefreshAccountRequestSchema, AnthropicCredentialsSchema, GoogleCredentialsSchema, MicrosoftCredentialsSchema, ProviderCredentialsSchema, AddAccountRequestSchema, RmAccountRequestSchema, SetOverrideRequestSchema, ListGoogleAccountsRequestSchema, ListMicrosoftAccountsRequestSchema, ProbeQuotaRequestSchema, ClaimNotificationRequestSchema, GetExternalSpendRequestSchema, RequestSchema, GetCredentialsDataSchema, AccountStateSchema, AgentStateSchema, ConsumerStateSchema, ListStateDataSchema, SetActiveDataSchema, MarkExhaustedDataSchema, MarkThrottledDataSchema, RefreshAccountDataSchema, AddAccountDataSchema, RmAccountDataSchema, SetOverrideDataSchema, ClaimNotificationDataSchema, GetExternalSpendDataSchema, GoogleAccountStateSchema, ListGoogleAccountsDataSchema, MicrosoftAccountStateSchema, ListMicrosoftAccountsDataSchema, ErrorBodySchema, SuccessResponseSchema, ErrorResponseSchema, ResponseSchema;
4006
4006
  var init_protocol = __esm(() => {
4007
4007
  init_zod();
4008
4008
  MAX_FRAME_BYTES = 64 * 1024;
@@ -4133,6 +4133,12 @@ var init_protocol = __esm(() => {
4133
4133
  key: exports_external.string().min(1).max(512),
4134
4134
  windowMs: exports_external.number().int().positive().max(86400000)
4135
4135
  });
4136
+ GetExternalSpendRequestSchema = exports_external.object({
4137
+ v: exports_external.literal(PROTOCOL_VERSION),
4138
+ op: exports_external.literal("get-external-spend"),
4139
+ id: exports_external.string().min(1),
4140
+ forceLive: exports_external.boolean().optional()
4141
+ });
4136
4142
  RequestSchema = exports_external.discriminatedUnion("op", [
4137
4143
  GetCredentialsRequestSchema,
4138
4144
  ListStateRequestSchema,
@@ -4146,7 +4152,8 @@ var init_protocol = __esm(() => {
4146
4152
  ListGoogleAccountsRequestSchema,
4147
4153
  ListMicrosoftAccountsRequestSchema,
4148
4154
  ProbeQuotaRequestSchema,
4149
- ClaimNotificationRequestSchema
4155
+ ClaimNotificationRequestSchema,
4156
+ GetExternalSpendRequestSchema
4150
4157
  ]);
4151
4158
  GetCredentialsDataSchema = exports_external.object({
4152
4159
  account: exports_external.string(),
@@ -4213,6 +4220,18 @@ var init_protocol = __esm(() => {
4213
4220
  ClaimNotificationDataSchema = exports_external.object({
4214
4221
  granted: exports_external.boolean()
4215
4222
  });
4223
+ GetExternalSpendDataSchema = exports_external.object({
4224
+ available: exports_external.boolean(),
4225
+ day24hUsd: exports_external.number().optional(),
4226
+ day7dUsd: exports_external.number().optional(),
4227
+ top: exports_external.array(exports_external.object({
4228
+ label: exports_external.string(),
4229
+ usd: exports_external.number()
4230
+ })).optional(),
4231
+ capturedAtMs: exports_external.number().int().nonnegative().optional(),
4232
+ served: exports_external.enum(["live", "cache"]).optional(),
4233
+ reason: exports_external.string().optional()
4234
+ });
4216
4235
  GoogleAccountStateSchema = exports_external.object({
4217
4236
  account: exports_external.string(),
4218
4237
  expiresAt: exports_external.number(),
@@ -4383,6 +4402,15 @@ class AuthBrokerClient {
4383
4402
  }
4384
4403
  return parsed;
4385
4404
  }
4405
+ async getExternalSpend(forceLive) {
4406
+ const data = await this.send({
4407
+ v: PROTOCOL_VERSION,
4408
+ id: randomUUID(),
4409
+ op: "get-external-spend",
4410
+ ...forceLive ? { forceLive: true } : {}
4411
+ });
4412
+ return data;
4413
+ }
4386
4414
  async setActive(account) {
4387
4415
  const data = await this.send({
4388
4416
  v: PROTOCOL_VERSION,