switchroom 0.14.57 → 0.14.59

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.
@@ -11144,7 +11144,7 @@ var GoogleWorkspaceConfigSchema = exports_external.object({
11144
11144
  tier: GoogleWorkspaceTierSchema.optional().describe("RFC G Phase 1: which upstream MCP tier to expose. " + "core (default) = ~16 tools (Drive+Docs+Sheets+Calendar). " + "extended = ~40 tools (+Slides, Forms, Tasks, Chat). " + "complete = ~60+ tools (+Gmail; not recommended yet — see RFC G §5).")
11145
11145
  }).optional();
11146
11146
  var MicrosoftWorkspaceConfigSchema = exports_external.object({
11147
- microsoft_client_id: exports_external.string().min(1).describe("Microsoft OAuth application (client) ID from Entra portal " + "(literal string or vault reference e.g. " + "'vault:microsoft-oauth-client-id')."),
11147
+ microsoft_client_id: exports_external.string().min(1).optional().describe("Microsoft OAuth application (client) ID from Entra portal " + "(literal string or vault reference e.g. " + "'vault:microsoft-oauth-client-id'). OPTIONAL — omit it to use " + "switchroom's shipped default Microsoft app (zero-config). " + "Set it only to bring your own Entra app (BYO)."),
11148
11148
  microsoft_client_secret: exports_external.string().min(1).optional().describe("Microsoft OAuth client secret. Optional — public-client apps " + "(Mobile + Desktop platform with 'Allow public client flows' " + "enabled) work without a secret; confidential clients pass " + "one. Either literal or vault reference e.g. " + "'vault:microsoft-oauth-client-secret'."),
11149
11149
  authority: exports_external.string().url().optional().describe("Microsoft authority endpoint. Defaults to " + "'https://login.microsoftonline.com/common' which accepts both " + "personal MSA and work/school tenants. Override only for " + "single-tenant deployments."),
11150
11150
  org_mode: exports_external.boolean().optional().describe("Opt-in to Teams + SharePoint surfaces (RFC §6.4). When true, " + "the v1 scope set adds Sites.ReadWrite.All AND the launcher " + "spawns softeria with --org-mode. Defaults to false — personal " + "MSA + standard work surfaces only. Flipping for an existing " + "consented account requires re-running 'auth microsoft account " + "add --replace' to consent the additional scope.")
@@ -11144,7 +11144,7 @@ var GoogleWorkspaceConfigSchema = exports_external.object({
11144
11144
  tier: GoogleWorkspaceTierSchema.optional().describe("RFC G Phase 1: which upstream MCP tier to expose. " + "core (default) = ~16 tools (Drive+Docs+Sheets+Calendar). " + "extended = ~40 tools (+Slides, Forms, Tasks, Chat). " + "complete = ~60+ tools (+Gmail; not recommended yet — see RFC G §5).")
11145
11145
  }).optional();
11146
11146
  var MicrosoftWorkspaceConfigSchema = exports_external.object({
11147
- microsoft_client_id: exports_external.string().min(1).describe("Microsoft OAuth application (client) ID from Entra portal " + "(literal string or vault reference e.g. " + "'vault:microsoft-oauth-client-id')."),
11147
+ microsoft_client_id: exports_external.string().min(1).optional().describe("Microsoft OAuth application (client) ID from Entra portal " + "(literal string or vault reference e.g. " + "'vault:microsoft-oauth-client-id'). OPTIONAL — omit it to use " + "switchroom's shipped default Microsoft app (zero-config). " + "Set it only to bring your own Entra app (BYO)."),
11148
11148
  microsoft_client_secret: exports_external.string().min(1).optional().describe("Microsoft OAuth client secret. Optional — public-client apps " + "(Mobile + Desktop platform with 'Allow public client flows' " + "enabled) work without a secret; confidential clients pass " + "one. Either literal or vault reference e.g. " + "'vault:microsoft-oauth-client-secret'."),
11149
11149
  authority: exports_external.string().url().optional().describe("Microsoft authority endpoint. Defaults to " + "'https://login.microsoftonline.com/common' which accepts both " + "personal MSA and work/school tenants. Override only for " + "single-tenant deployments."),
11150
11150
  org_mode: exports_external.boolean().optional().describe("Opt-in to Teams + SharePoint surfaces (RFC §6.4). When true, " + "the v1 scope set adds Sites.ReadWrite.All AND the launcher " + "spawns softeria with --org-mode. Defaults to false — personal " + "MSA + standard work surfaces only. Flipping for an existing " + "consented account requires re-running 'auth microsoft account " + "add --replace' to consent the additional scope.")
@@ -12954,6 +12954,19 @@ function classifyAsyncError2(err) {
12954
12954
  return { ok: false, kind: "provider_error", detail: msg };
12955
12955
  }
12956
12956
 
12957
+ // src/auth/default-oauth-clients.ts
12958
+ var DEFAULT_MICROSOFT_CLIENT_ID = "9dff88fa-3126-457b-9d1d-37e58c219019";
12959
+ function resolveMicrosoftClientId(configClientId) {
12960
+ const env = process.env.SWITCHROOM_MICROSOFT_CLIENT_ID;
12961
+ if (env !== undefined && env.trim().length > 0) {
12962
+ return { clientId: env.trim(), source: "env" };
12963
+ }
12964
+ if (configClientId !== undefined && configClientId.length > 0) {
12965
+ return { clientId: configClientId, source: "config" };
12966
+ }
12967
+ return { clientId: DEFAULT_MICROSOFT_CLIENT_ID, source: "default" };
12968
+ }
12969
+
12957
12970
  // src/auth/broker/google-storage.ts
12958
12971
  import { existsSync as existsSync5, mkdirSync as mkdirSync2, readdirSync as readdirSync3, readFileSync as readFileSync4, rmSync as rmSync3, statSync as statSync3 } from "node:fs";
12959
12972
  import { dirname, join as join2, resolve as resolve5 } from "node:path";
@@ -13503,14 +13516,11 @@ class AuthBroker {
13503
13516
  fetcher: opts.fetcher
13504
13517
  }));
13505
13518
  }
13506
- const microsoftClientId = config.microsoft_workspace?.microsoft_client_id;
13507
- if (microsoftClientId !== undefined) {
13508
- this.providers.register(new MicrosoftProvider({
13509
- clientId: microsoftClientId,
13510
- clientSecret: config.microsoft_workspace?.microsoft_client_secret,
13511
- fetcher: opts.fetcher
13512
- }));
13513
- }
13519
+ this.providers.register(new MicrosoftProvider({
13520
+ clientId: resolveMicrosoftClientId(config.microsoft_workspace?.microsoft_client_id).clientId,
13521
+ clientSecret: config.microsoft_workspace?.microsoft_client_secret,
13522
+ fetcher: opts.fetcher
13523
+ }));
13514
13524
  this.assertConfigConsistent(config);
13515
13525
  }
13516
13526
  homeRoot() {
@@ -11892,7 +11892,7 @@ var GoogleWorkspaceConfigSchema = exports_external.object({
11892
11892
  tier: GoogleWorkspaceTierSchema.optional().describe("RFC G Phase 1: which upstream MCP tier to expose. " + "core (default) = ~16 tools (Drive+Docs+Sheets+Calendar). " + "extended = ~40 tools (+Slides, Forms, Tasks, Chat). " + "complete = ~60+ tools (+Gmail; not recommended yet \u2014 see RFC G \u00a75).")
11893
11893
  }).optional();
11894
11894
  var MicrosoftWorkspaceConfigSchema = exports_external.object({
11895
- microsoft_client_id: exports_external.string().min(1).describe("Microsoft OAuth application (client) ID from Entra portal " + "(literal string or vault reference e.g. " + "'vault:microsoft-oauth-client-id')."),
11895
+ microsoft_client_id: exports_external.string().min(1).optional().describe("Microsoft OAuth application (client) ID from Entra portal " + "(literal string or vault reference e.g. " + "'vault:microsoft-oauth-client-id'). OPTIONAL \u2014 omit it to use " + "switchroom's shipped default Microsoft app (zero-config). " + "Set it only to bring your own Entra app (BYO)."),
11896
11896
  microsoft_client_secret: exports_external.string().min(1).optional().describe("Microsoft OAuth client secret. Optional \u2014 public-client apps " + "(Mobile + Desktop platform with 'Allow public client flows' " + "enabled) work without a secret; confidential clients pass " + "one. Either literal or vault reference e.g. " + "'vault:microsoft-oauth-client-secret'."),
11897
11897
  authority: exports_external.string().url().optional().describe("Microsoft authority endpoint. Defaults to " + "'https://login.microsoftonline.com/common' which accepts both " + "personal MSA and work/school tenants. Override only for " + "single-tenant deployments."),
11898
11898
  org_mode: exports_external.boolean().optional().describe("Opt-in to Teams + SharePoint surfaces (RFC \u00a76.4). When true, " + "the v1 scope set adds Sites.ReadWrite.All AND the launcher " + "spawns softeria with --org-mode. Defaults to false \u2014 personal " + "MSA + standard work surfaces only. Flipping for an existing " + "consented account requires re-running 'auth microsoft account " + "add --replace' to consent the additional scope.")
@@ -13708,7 +13708,7 @@ var init_schema = __esm(() => {
13708
13708
  tier: GoogleWorkspaceTierSchema.optional().describe("RFC G Phase 1: which upstream MCP tier to expose. " + "core (default) = ~16 tools (Drive+Docs+Sheets+Calendar). " + "extended = ~40 tools (+Slides, Forms, Tasks, Chat). " + "complete = ~60+ tools (+Gmail; not recommended yet \u2014 see RFC G \u00a75).")
13709
13709
  }).optional();
13710
13710
  MicrosoftWorkspaceConfigSchema = exports_external.object({
13711
- microsoft_client_id: exports_external.string().min(1).describe("Microsoft OAuth application (client) ID from Entra portal " + "(literal string or vault reference e.g. " + "'vault:microsoft-oauth-client-id')."),
13711
+ microsoft_client_id: exports_external.string().min(1).optional().describe("Microsoft OAuth application (client) ID from Entra portal " + "(literal string or vault reference e.g. " + "'vault:microsoft-oauth-client-id'). OPTIONAL \u2014 omit it to use " + "switchroom's shipped default Microsoft app (zero-config). " + "Set it only to bring your own Entra app (BYO)."),
13712
13712
  microsoft_client_secret: exports_external.string().min(1).optional().describe("Microsoft OAuth client secret. Optional \u2014 public-client apps " + "(Mobile + Desktop platform with 'Allow public client flows' " + "enabled) work without a secret; confidential clients pass " + "one. Either literal or vault reference e.g. " + "'vault:microsoft-oauth-client-secret'."),
13713
13713
  authority: exports_external.string().url().optional().describe("Microsoft authority endpoint. Defaults to " + "'https://login.microsoftonline.com/common' which accepts both " + "personal MSA and work/school tenants. Override only for " + "single-tenant deployments."),
13714
13714
  org_mode: exports_external.boolean().optional().describe("Opt-in to Teams + SharePoint surfaces (RFC \u00a76.4). When true, " + "the v1 scope set adds Sites.ReadWrite.All AND the launcher " + "spawns softeria with --org-mode. Defaults to false \u2014 personal " + "MSA + standard work surfaces only. Flipping for an existing " + "consented account requires re-running 'auth microsoft account " + "add --replace' to consent the additional scope.")
@@ -30156,23 +30156,12 @@ function checkOAuthClient2(config, anyAgentEnabled) {
30156
30156
  if (!anyAgentEnabled)
30157
30157
  return [];
30158
30158
  const mw = config.microsoft_workspace;
30159
- if (!mw) {
30159
+ if (!mw || !clientValuePresent2(mw.microsoft_client_id)) {
30160
30160
  return [
30161
30161
  {
30162
30162
  name: "microsoft:oauth-client-configured",
30163
- status: "fail",
30164
- detail: "agents have microsoft_workspace.account set but the top-level microsoft_workspace: block is missing",
30165
- fix: "Add a microsoft_workspace block with microsoft_client_id (and optionally microsoft_client_secret) to switchroom.yaml. See `switchroom auth microsoft account add` error output for the full walkthrough."
30166
- }
30167
- ];
30168
- }
30169
- if (!clientValuePresent2(mw.microsoft_client_id)) {
30170
- return [
30171
- {
30172
- name: "microsoft:oauth-client-configured",
30173
- status: "fail",
30174
- detail: "microsoft_workspace block present but microsoft_client_id is empty",
30175
- fix: "Register an Entra app at https://entra.microsoft.com \u2192 App registrations \u2192 New. Copy the Application (client) ID and vault it: `switchroom vault set microsoft-oauth-client-id`."
30163
+ status: "ok",
30164
+ detail: "using switchroom's shipped default Microsoft OAuth app (no BYO app configured)"
30176
30165
  }
30177
30166
  ];
30178
30167
  }
@@ -49463,8 +49452,8 @@ var {
49463
49452
  } = import__.default;
49464
49453
 
49465
49454
  // src/build-info.ts
49466
- var VERSION = "0.14.57";
49467
- var COMMIT_SHA = "ddb0b353";
49455
+ var VERSION = "0.14.59";
49456
+ var COMMIT_SHA = "178c6d14";
49468
49457
 
49469
49458
  // src/cli/agent.ts
49470
49459
  init_source();
@@ -57729,6 +57718,21 @@ function pruneEmptyMap(doc, path) {
57729
57718
 
57730
57719
  // src/cli/auth-microsoft.ts
57731
57720
  init_helpers();
57721
+
57722
+ // src/auth/default-oauth-clients.ts
57723
+ var DEFAULT_MICROSOFT_CLIENT_ID = "9dff88fa-3126-457b-9d1d-37e58c219019";
57724
+ function resolveMicrosoftClientId(configClientId) {
57725
+ const env2 = process.env.SWITCHROOM_MICROSOFT_CLIENT_ID;
57726
+ if (env2 !== undefined && env2.trim().length > 0) {
57727
+ return { clientId: env2.trim(), source: "env" };
57728
+ }
57729
+ if (configClientId !== undefined && configClientId.length > 0) {
57730
+ return { clientId: configClientId, source: "config" };
57731
+ }
57732
+ return { clientId: DEFAULT_MICROSOFT_CLIENT_ID, source: "default" };
57733
+ }
57734
+
57735
+ // src/cli/auth-microsoft.ts
57732
57736
  function registerAuthMicrosoftSubcommands(program3, authParent) {
57733
57737
  const microsoft = authParent.command("microsoft").description("Manage Microsoft 365 accounts shared across agents (RFC #1873 \u2014 see docs/rfcs/microsoft-workspace.md)");
57734
57738
  registerEnable2(microsoft, program3);
@@ -57871,13 +57875,13 @@ function registerAccountAdd2(accountParent) {
57871
57875
  ]);
57872
57876
  const config = loadConfig2();
57873
57877
  const mw = config.microsoft_workspace;
57874
- if (!mw) {
57875
- throw new Error(microsoftClientSetupGuidance("switchroom.yaml has no `microsoft_workspace:` block, so there is no Microsoft OAuth app to connect accounts against."));
57876
- }
57877
- let clientIdRaw = process.env.SWITCHROOM_MICROSOFT_CLIENT_ID ?? mw.microsoft_client_id;
57878
- let clientSecretRaw = process.env.SWITCHROOM_MICROSOFT_CLIENT_SECRET ?? mw.microsoft_client_secret;
57879
- if (!clientIdRaw) {
57880
- throw new Error(microsoftClientSetupGuidance("The `microsoft_workspace:` block is present but `microsoft_client_id` is empty."));
57878
+ const resolvedClientId = resolveMicrosoftClientId(mw?.microsoft_client_id);
57879
+ let clientIdRaw = resolvedClientId.clientId;
57880
+ let clientSecretRaw = process.env.SWITCHROOM_MICROSOFT_CLIENT_SECRET ?? mw?.microsoft_client_secret;
57881
+ if (resolvedClientId.source === "default") {
57882
+ console.error(source_default.gray(` Using switchroom's shipped Microsoft OAuth app (zero-config).
57883
+ ` + " To use your own Entra app instead, set " + `microsoft_workspace.microsoft_client_id in switchroom.yaml
57884
+ ` + " (or the SWITCHROOM_MICROSOFT_CLIENT_ID env var)."));
57881
57885
  }
57882
57886
  const needsVault = isVaultReference2(clientIdRaw) || clientSecretRaw !== undefined && isVaultReference2(clientSecretRaw);
57883
57887
  if (needsVault) {
@@ -57928,7 +57932,7 @@ function registerAccountAdd2(accountParent) {
57928
57932
  clientSecretRaw = await resolveRef(clientSecretRaw, "microsoft_client_secret");
57929
57933
  }
57930
57934
  }
57931
- const orgMode = opts["orgMode"] ?? mw.org_mode ?? false;
57935
+ const orgMode = opts["orgMode"] ?? mw?.org_mode ?? false;
57932
57936
  const scopes = selectMicrosoftScopes(orgMode);
57933
57937
  const oauthCfg = {
57934
57938
  client_id: clientIdRaw,
@@ -58195,51 +58199,6 @@ async function readHiddenLine2(prompt) {
58195
58199
  process.stdin.on("data", onData);
58196
58200
  });
58197
58201
  }
58198
- function microsoftClientSetupGuidance(reason) {
58199
- return [
58200
- reason,
58201
- "",
58202
- "Switchroom ships no shared Microsoft OAuth app \u2014 register your own.",
58203
- "One-time per install:",
58204
- "",
58205
- " 1. Go to https://entra.microsoft.com \u2192 App registrations \u2192 New",
58206
- " registration",
58207
- " 2. Supported account types: 'Accounts in any organizational",
58208
- " directory AND personal Microsoft accounts' (multi-tenant + MSA)",
58209
- " 3. Redirect URI: platform 'Mobile and desktop applications',",
58210
- " value `http://localhost` (port-agnostic; Microsoft ignores port",
58211
- " for loopback URIs)",
58212
- " 4. Authentication \u2192 Advanced settings \u2192 'Allow public client",
58213
- " flows': Yes (enables device-code on personal MSA)",
58214
- " 5. Copy the Application (client) ID from the Overview page",
58215
- " 6. Optional: create a client secret in 'Certificates & secrets'",
58216
- " (skip if using public-client flow only)",
58217
- " 7. Vault the credentials:",
58218
- "",
58219
- " switchroom vault set microsoft-oauth-client-id",
58220
- " switchroom vault set microsoft-oauth-client-secret # optional",
58221
- "",
58222
- " 8. If your work tenant requires admin consent, your IT admin must",
58223
- " grant the requested Graph scopes (Files.ReadWrite.All etc.) at",
58224
- " first sign-in. Personal MSA accounts (outlook.com / hotmail.com)",
58225
- " don't need this step.",
58226
- " 9. Add to ~/.switchroom/switchroom.yaml (top level):",
58227
- "",
58228
- " microsoft_workspace:",
58229
- ' microsoft_client_id: "vault:microsoft-oauth-client-id"',
58230
- ' microsoft_client_secret: "vault:microsoft-oauth-client-secret" # omit if public-client',
58231
- " authority: https://login.microsoftonline.com/common",
58232
- " org_mode: false",
58233
- "",
58234
- "Env vars SWITCHROOM_MICROSOFT_CLIENT_ID / _SECRET override the block",
58235
- "for one-off debugging.",
58236
- "",
58237
- "Full walkthrough: docs/microsoft-workspace.md (PR 5 will land this).",
58238
- "Don't reuse an existing Entra app \u2014 see RFC \u00a74.1 (signInAudience",
58239
- "mismatch + token-version drift make app sharing brittle)."
58240
- ].join(`
58241
- `);
58242
- }
58243
58202
 
58244
58203
  // src/cli/auth.ts
58245
58204
  init_auth_active_yaml();
@@ -13879,7 +13879,7 @@ var GoogleWorkspaceConfigSchema = exports_external.object({
13879
13879
  tier: GoogleWorkspaceTierSchema.optional().describe("RFC G Phase 1: which upstream MCP tier to expose. " + "core (default) = ~16 tools (Drive+Docs+Sheets+Calendar). " + "extended = ~40 tools (+Slides, Forms, Tasks, Chat). " + "complete = ~60+ tools (+Gmail; not recommended yet — see RFC G §5).")
13880
13880
  }).optional();
13881
13881
  var MicrosoftWorkspaceConfigSchema = exports_external.object({
13882
- microsoft_client_id: exports_external.string().min(1).describe("Microsoft OAuth application (client) ID from Entra portal " + "(literal string or vault reference e.g. " + "'vault:microsoft-oauth-client-id')."),
13882
+ microsoft_client_id: exports_external.string().min(1).optional().describe("Microsoft OAuth application (client) ID from Entra portal " + "(literal string or vault reference e.g. " + "'vault:microsoft-oauth-client-id'). OPTIONAL — omit it to use " + "switchroom's shipped default Microsoft app (zero-config). " + "Set it only to bring your own Entra app (BYO)."),
13883
13883
  microsoft_client_secret: exports_external.string().min(1).optional().describe("Microsoft OAuth client secret. Optional — public-client apps " + "(Mobile + Desktop platform with 'Allow public client flows' " + "enabled) work without a secret; confidential clients pass " + "one. Either literal or vault reference e.g. " + "'vault:microsoft-oauth-client-secret'."),
13884
13884
  authority: exports_external.string().url().optional().describe("Microsoft authority endpoint. Defaults to " + "'https://login.microsoftonline.com/common' which accepts both " + "personal MSA and work/school tenants. Override only for " + "single-tenant deployments."),
13885
13885
  org_mode: exports_external.boolean().optional().describe("Opt-in to Teams + SharePoint surfaces (RFC §6.4). When true, " + "the v1 scope set adds Sites.ReadWrite.All AND the launcher " + "spawns softeria with --org-mode. Defaults to false — personal " + "MSA + standard work surfaces only. Flipping for an existing " + "consented account requires re-running 'auth microsoft account " + "add --replace' to consent the additional scope.")
@@ -11465,7 +11465,7 @@ var init_schema = __esm(() => {
11465
11465
  tier: GoogleWorkspaceTierSchema.optional().describe("RFC G Phase 1: which upstream MCP tier to expose. " + "core (default) = ~16 tools (Drive+Docs+Sheets+Calendar). " + "extended = ~40 tools (+Slides, Forms, Tasks, Chat). " + "complete = ~60+ tools (+Gmail; not recommended yet — see RFC G §5).")
11466
11466
  }).optional();
11467
11467
  MicrosoftWorkspaceConfigSchema = exports_external.object({
11468
- microsoft_client_id: exports_external.string().min(1).describe("Microsoft OAuth application (client) ID from Entra portal " + "(literal string or vault reference e.g. " + "'vault:microsoft-oauth-client-id')."),
11468
+ microsoft_client_id: exports_external.string().min(1).optional().describe("Microsoft OAuth application (client) ID from Entra portal " + "(literal string or vault reference e.g. " + "'vault:microsoft-oauth-client-id'). OPTIONAL — omit it to use " + "switchroom's shipped default Microsoft app (zero-config). " + "Set it only to bring your own Entra app (BYO)."),
11469
11469
  microsoft_client_secret: exports_external.string().min(1).optional().describe("Microsoft OAuth client secret. Optional — public-client apps " + "(Mobile + Desktop platform with 'Allow public client flows' " + "enabled) work without a secret; confidential clients pass " + "one. Either literal or vault reference e.g. " + "'vault:microsoft-oauth-client-secret'."),
11470
11470
  authority: exports_external.string().url().optional().describe("Microsoft authority endpoint. Defaults to " + "'https://login.microsoftonline.com/common' which accepts both " + "personal MSA and work/school tenants. Override only for " + "single-tenant deployments."),
11471
11471
  org_mode: exports_external.boolean().optional().describe("Opt-in to Teams + SharePoint surfaces (RFC §6.4). When true, " + "the v1 scope set adds Sites.ReadWrite.All AND the launcher " + "spawns softeria with --org-mode. Defaults to false — personal " + "MSA + standard work surfaces only. Flipping for an existing " + "consented account requires re-running 'auth microsoft account " + "add --replace' to consent the additional scope.")
@@ -11465,7 +11465,7 @@ var init_schema = __esm(() => {
11465
11465
  tier: GoogleWorkspaceTierSchema.optional().describe("RFC G Phase 1: which upstream MCP tier to expose. " + "core (default) = ~16 tools (Drive+Docs+Sheets+Calendar). " + "extended = ~40 tools (+Slides, Forms, Tasks, Chat). " + "complete = ~60+ tools (+Gmail; not recommended yet — see RFC G §5).")
11466
11466
  }).optional();
11467
11467
  MicrosoftWorkspaceConfigSchema = exports_external.object({
11468
- microsoft_client_id: exports_external.string().min(1).describe("Microsoft OAuth application (client) ID from Entra portal " + "(literal string or vault reference e.g. " + "'vault:microsoft-oauth-client-id')."),
11468
+ microsoft_client_id: exports_external.string().min(1).optional().describe("Microsoft OAuth application (client) ID from Entra portal " + "(literal string or vault reference e.g. " + "'vault:microsoft-oauth-client-id'). OPTIONAL — omit it to use " + "switchroom's shipped default Microsoft app (zero-config). " + "Set it only to bring your own Entra app (BYO)."),
11469
11469
  microsoft_client_secret: exports_external.string().min(1).optional().describe("Microsoft OAuth client secret. Optional — public-client apps " + "(Mobile + Desktop platform with 'Allow public client flows' " + "enabled) work without a secret; confidential clients pass " + "one. Either literal or vault reference e.g. " + "'vault:microsoft-oauth-client-secret'."),
11470
11470
  authority: exports_external.string().url().optional().describe("Microsoft authority endpoint. Defaults to " + "'https://login.microsoftonline.com/common' which accepts both " + "personal MSA and work/school tenants. Override only for " + "single-tenant deployments."),
11471
11471
  org_mode: exports_external.boolean().optional().describe("Opt-in to Teams + SharePoint surfaces (RFC §6.4). When true, " + "the v1 scope set adds Sites.ReadWrite.All AND the launcher " + "spawns softeria with --org-mode. Defaults to false — personal " + "MSA + standard work surfaces only. Flipping for an existing " + "consented account requires re-running 'auth microsoft account " + "add --replace' to consent the additional scope.")
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "switchroom",
3
- "version": "0.14.57",
3
+ "version": "0.14.59",
4
4
  "description": "Run Claude Code 24/7 on your Claude Pro/Max subscription over Telegram. Open-source alternative to OpenClaw and NanoClaw — no API keys.",
5
5
  "type": "module",
6
6
  "bin": {