agent-messenger 2.38.0 → 2.38.1

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 (39) hide show
  1. package/.claude-plugin/plugin.json +1 -1
  2. package/dist/package.json +1 -1
  3. package/dist/src/platforms/slack/cli.d.ts.map +1 -1
  4. package/dist/src/platforms/slack/cli.js +5 -0
  5. package/dist/src/platforms/slack/cli.js.map +1 -1
  6. package/dist/src/platforms/slack/commands/auth.d.ts.map +1 -1
  7. package/dist/src/platforms/slack/commands/auth.js +9 -3
  8. package/dist/src/platforms/slack/commands/auth.js.map +1 -1
  9. package/dist/src/platforms/slack/credential-manager.d.ts +2 -0
  10. package/dist/src/platforms/slack/credential-manager.d.ts.map +1 -1
  11. package/dist/src/platforms/slack/credential-manager.js +17 -3
  12. package/dist/src/platforms/slack/credential-manager.js.map +1 -1
  13. package/docs/content/docs/cli/slack.mdx +8 -1
  14. package/package.json +1 -1
  15. package/skills/agent-channeltalk/SKILL.md +1 -1
  16. package/skills/agent-channeltalkbot/SKILL.md +1 -1
  17. package/skills/agent-discord/SKILL.md +1 -1
  18. package/skills/agent-discordbot/SKILL.md +1 -1
  19. package/skills/agent-imessage/SKILL.md +1 -1
  20. package/skills/agent-instagram/SKILL.md +1 -1
  21. package/skills/agent-kakaotalk/SKILL.md +1 -1
  22. package/skills/agent-line/SKILL.md +1 -1
  23. package/skills/agent-slack/SKILL.md +9 -2
  24. package/skills/agent-slack/references/authentication.md +12 -0
  25. package/skills/agent-slack/references/common-patterns.md +18 -0
  26. package/skills/agent-slackbot/SKILL.md +1 -1
  27. package/skills/agent-teams/SKILL.md +1 -1
  28. package/skills/agent-telegram/SKILL.md +1 -1
  29. package/skills/agent-telegrambot/SKILL.md +1 -1
  30. package/skills/agent-webex/SKILL.md +1 -1
  31. package/skills/agent-webexbot/SKILL.md +1 -1
  32. package/skills/agent-wechatbot/SKILL.md +1 -1
  33. package/skills/agent-whatsapp/SKILL.md +1 -1
  34. package/skills/agent-whatsappbot/SKILL.md +1 -1
  35. package/src/platforms/slack/cli.test.ts +111 -1
  36. package/src/platforms/slack/cli.ts +5 -0
  37. package/src/platforms/slack/commands/auth.ts +14 -3
  38. package/src/platforms/slack/credential-manager.ts +21 -3
  39. package/src/platforms/slack/credential-manager.workspace-select.test.ts +70 -0
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agent-messenger",
3
- "version": "2.38.0",
3
+ "version": "2.38.1",
4
4
  "description": "Messaging platform interaction skills for AI agents. Interact with Slack, Discord, Microsoft Teams, Webex, Telegram, Telegram Bot, WhatsApp, LINE, iMessage, Instagram, KakaoTalk, and Channel Talk - send messages, read channels, manage reactions, upload files, and more through simple CLI interfaces.",
5
5
  "author": {
6
6
  "name": "agent-messenger",
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agent-messenger",
3
- "version": "2.38.0",
3
+ "version": "2.38.1",
4
4
  "description": "Multi-platform messaging CLI for AI agents (Slack, Discord, Teams, Webex, Telegram, Telegram Bot, WhatsApp, LINE, iMessage, Instagram, KakaoTalk, Channel Talk)",
5
5
  "repository": {
6
6
  "type": "git",
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../../../src/platforms/slack/cli.ts"],"names":[],"mappings":";AAEA,OAAO,KAAK,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,WAAW,CAAA;AAoCvD,QAAA,MAAM,OAAO,aAAgB,CAAA;eAqCd,OAAO"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../../../src/platforms/slack/cli.ts"],"names":[],"mappings":";AAEA,OAAO,KAAK,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,WAAW,CAAA;AAqCvD,QAAA,MAAM,OAAO,aAAgB,CAAA;eAyCd,OAAO"}
@@ -2,6 +2,7 @@
2
2
  import { Command } from 'commander';
3
3
  import pkg from '../../../package.json' with { type: 'json' };
4
4
  import { activityCommand, authCommand, bookmarkCommand, channelCommand, draftsCommand, emojiCommand, fileCommand, messageCommand, pinCommand, reactionCommand, reminderCommand, savedCommand, sectionsCommand, snapshotCommand, unreadCommand, userCommand, usergroupCommand, whoamiCommand, workspaceCommand, } from './commands/index.js';
5
+ import { setSelectedWorkspaceId } from './credential-manager.js';
5
6
  import { ensureSlackAuth } from './ensure-auth.js';
6
7
  function isAuthCommand(command) {
7
8
  let cmd = command;
@@ -19,6 +20,10 @@ program
19
20
  .version(pkg.version)
20
21
  .option('--workspace <id>', 'Use specific workspace');
21
22
  program.hook('preAction', async (_thisCommand, actionCommand) => {
23
+ const workspaceId = program.opts().workspace;
24
+ if (workspaceId) {
25
+ setSelectedWorkspaceId(workspaceId);
26
+ }
22
27
  if (isAuthCommand(actionCommand))
23
28
  return;
24
29
  await ensureSlackAuth();
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../../../src/platforms/slack/cli.ts"],"names":[],"mappings":";AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAEnC,OAAO,GAAG,MAAM,uBAAuB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAA;AAC7D,OAAO,EACL,eAAe,EACf,WAAW,EACX,eAAe,EACf,cAAc,EACd,aAAa,EACb,YAAY,EACZ,WAAW,EACX,cAAc,EACd,UAAU,EACV,eAAe,EACf,eAAe,EACf,YAAY,EACZ,eAAe,EACf,eAAe,EACf,aAAa,EACb,WAAW,EACX,gBAAgB,EAChB,aAAa,EACb,gBAAgB,GACjB,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAE/C,SAAS,aAAa,CAAC,OAAoB;IACzC,IAAI,GAAG,GAAuB,OAAO,CAAA;IACrC,OAAO,GAAG,EAAE,CAAC;QACX,IAAI,GAAG,CAAC,IAAI,EAAE,KAAK,MAAM;YAAE,OAAO,IAAI,CAAA;QACtC,GAAG,GAAG,GAAG,CAAC,MAAM,CAAA;IAClB,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAA;AAE7B,OAAO;KACJ,IAAI,CAAC,aAAa,CAAC;KACnB,WAAW,CACV,6GAA6G,CAC9G;KACA,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;KACpB,MAAM,CAAC,kBAAkB,EAAE,wBAAwB,CAAC,CAAA;AAEvD,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,EAAE;IAC9D,IAAI,aAAa,CAAC,aAAa,CAAC;QAAE,OAAM;IACxC,MAAM,eAAe,EAAE,CAAA;AACzB,CAAC,CAAC,CAAA;AAEF,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAA;AAC/B,OAAO,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAA;AACpC,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,CAAA;AAClC,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,CAAA;AAClC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAA;AAC/B,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC,CAAA;AACnC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAA;AAC/B,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC,CAAA;AACnC,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC,CAAA;AACnC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAA;AACjC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAA;AAChC,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC,CAAA;AACnC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAA;AACjC,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,CAAA;AAC9B,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC,CAAA;AACnC,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC,CAAA;AACnC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAA;AAChC,OAAO,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAA;AACpC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAA;AAEjC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;AAE3B,eAAe,OAAO,CAAA"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../../../src/platforms/slack/cli.ts"],"names":[],"mappings":";AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAEnC,OAAO,GAAG,MAAM,uBAAuB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAA;AAC7D,OAAO,EACL,eAAe,EACf,WAAW,EACX,eAAe,EACf,cAAc,EACd,aAAa,EACb,YAAY,EACZ,WAAW,EACX,cAAc,EACd,UAAU,EACV,eAAe,EACf,eAAe,EACf,YAAY,EACZ,eAAe,EACf,eAAe,EACf,aAAa,EACb,WAAW,EACX,gBAAgB,EAChB,aAAa,EACb,gBAAgB,GACjB,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAA;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAE/C,SAAS,aAAa,CAAC,OAAoB;IACzC,IAAI,GAAG,GAAuB,OAAO,CAAA;IACrC,OAAO,GAAG,EAAE,CAAC;QACX,IAAI,GAAG,CAAC,IAAI,EAAE,KAAK,MAAM;YAAE,OAAO,IAAI,CAAA;QACtC,GAAG,GAAG,GAAG,CAAC,MAAM,CAAA;IAClB,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAA;AAE7B,OAAO;KACJ,IAAI,CAAC,aAAa,CAAC;KACnB,WAAW,CACV,6GAA6G,CAC9G;KACA,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;KACpB,MAAM,CAAC,kBAAkB,EAAE,wBAAwB,CAAC,CAAA;AAEvD,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,EAAE;IAC9D,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,EAA0B,CAAC,SAAS,CAAA;IACpE,IAAI,WAAW,EAAE,CAAC;QAChB,sBAAsB,CAAC,WAAW,CAAC,CAAA;IACrC,CAAC;IACD,IAAI,aAAa,CAAC,aAAa,CAAC;QAAE,OAAM;IACxC,MAAM,eAAe,EAAE,CAAA;AACzB,CAAC,CAAC,CAAA;AAEF,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAA;AAC/B,OAAO,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAA;AACpC,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,CAAA;AAClC,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,CAAA;AAClC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAA;AAC/B,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC,CAAA;AACnC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAA;AAC/B,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC,CAAA;AACnC,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC,CAAA;AACnC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAA;AACjC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAA;AAChC,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC,CAAA;AACnC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAA;AACjC,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,CAAA;AAC9B,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC,CAAA;AACnC,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC,CAAA;AACnC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAA;AAChC,OAAO,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAA;AACpC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAA;AAEjC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;AAE3B,eAAe,OAAO,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../../../src/platforms/slack/commands/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAanC,OAAO,EAAE,KAAK,kBAAkB,EAAkB,MAAM,oBAAoB,CAAA;AAE5E,wBAAgB,qBAAqB,CAAC,EAAE,EAAE,kBAAkB,EAAE,WAAW,CAAC,EAAE,OAAO,GAAG,MAAM,CAI3F;AAkTD,wBAAgB,yBAAyB,CAAC,cAAc,EAAE,MAAM,EAAE,GAAG,MAAM,CAQ1E;AAED,wBAAgB,2BAA2B,IAAI,MAAM,CAEpD;AAED,eAAO,MAAM,WAAW,SAoCrB,CAAA"}
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../../../src/platforms/slack/commands/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAanC,OAAO,EAAE,KAAK,kBAAkB,EAAkB,MAAM,oBAAoB,CAAA;AAE5E,wBAAgB,qBAAqB,CAAC,EAAE,EAAE,kBAAkB,EAAE,WAAW,CAAC,EAAE,OAAO,GAAG,MAAM,CAI3F;AA6TD,wBAAgB,yBAAyB,CAAC,cAAc,EAAE,MAAM,EAAE,GAAG,MAAM,CAQ1E;AAED,wBAAgB,2BAA2B,IAAI,MAAM,CAEpD;AAED,eAAO,MAAM,WAAW,SAoCrB,CAAA"}
@@ -4,7 +4,7 @@ import { handleError } from '../../../shared/utils/error-handler.js';
4
4
  import { formatOutput } from '../../../shared/utils/output.js';
5
5
  import { debug } from '../../../shared/utils/stderr.js';
6
6
  import { SlackClient, SlackError } from '../client.js';
7
- import { CredentialManager } from '../credential-manager.js';
7
+ import { CredentialManager, getSelectedWorkspaceId } from '../credential-manager.js';
8
8
  import { refreshCookie, refreshKnownWorkspaceDomains, tryWebTokenRefresh } from '../ensure-auth.js';
9
9
  import { loginWithQr } from '../qr-http-login.js';
10
10
  import { TokenExtractor } from '../token-extractor.js';
@@ -157,7 +157,7 @@ async function logoutAction(workspace, options) {
157
157
  try {
158
158
  const credManager = new CredentialManager();
159
159
  const config = await credManager.load();
160
- let targetWorkspace = workspace;
160
+ let targetWorkspace = workspace ?? getSelectedWorkspaceId() ?? undefined;
161
161
  if (!targetWorkspace) {
162
162
  if (!config.current_workspace) {
163
163
  console.log(formatOutput({ error: 'No current workspace set. Specify a workspace ID.' }, options.pretty));
@@ -184,7 +184,13 @@ async function statusAction(options) {
184
184
  const credManager = new CredentialManager();
185
185
  const ws = await credManager.getWorkspace();
186
186
  if (!ws) {
187
- console.log(formatOutput({ error: 'No current workspace set. Run "auth extract" first.' }, options.pretty));
187
+ const selectedWorkspace = getSelectedWorkspaceId();
188
+ console.log(formatOutput(selectedWorkspace
189
+ ? {
190
+ error: `Workspace not found: ${selectedWorkspace}`,
191
+ hint: 'Run "workspace list" to see available workspaces.',
192
+ }
193
+ : { error: 'No current workspace set. Run "auth extract" first.' }, options.pretty));
188
194
  process.exit(1);
189
195
  }
190
196
  let authInfo = null;
@@ -1 +1 @@
1
- {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../../../src/platforms/slack/commands/auth.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../../../src/platforms/slack/commands/auth.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,6 @@
1
1
  import type { Config, WorkspaceCredentials } from './types.js';
2
+ export declare function setSelectedWorkspaceId(id: string | null): void;
3
+ export declare function getSelectedWorkspaceId(): string | null;
2
4
  export declare class SlackCredentialManager {
3
5
  private configDir;
4
6
  private credentialsPath;
@@ -1 +1 @@
1
- {"version":3,"file":"credential-manager.d.ts","sourceRoot":"","sources":["../../../../src/platforms/slack/credential-manager.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,MAAM,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAA;AAE3D,qBAAa,sBAAsB;IACjC,OAAO,CAAC,SAAS,CAAQ;IACzB,OAAO,CAAC,eAAe,CAAQ;IAE/B,YAAY,SAAS,CAAC,EAAE,MAAM,EAG7B;IAEK,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,CAU5B;IAEK,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAKxC;IAEK,YAAY,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CA8BpE;IAEK,YAAY,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,CAI7D;IAEK,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAS/C;IAEK,mBAAmB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAInD;CACF;AAED,OAAO,EAAE,sBAAsB,IAAI,iBAAiB,EAAE,CAAA"}
1
+ {"version":3,"file":"credential-manager.d.ts","sourceRoot":"","sources":["../../../../src/platforms/slack/credential-manager.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,MAAM,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAA;AAQ3D,wBAAgB,sBAAsB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAE9D;AAED,wBAAgB,sBAAsB,IAAI,MAAM,GAAG,IAAI,CAEtD;AAED,qBAAa,sBAAsB;IACjC,OAAO,CAAC,SAAS,CAAQ;IACzB,OAAO,CAAC,eAAe,CAAQ;IAE/B,YAAY,SAAS,CAAC,EAAE,MAAM,EAG7B;IAEK,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,CAU5B;IAEK,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAKxC;IAEK,YAAY,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAkCpE;IAEK,YAAY,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,CAI7D;IAEK,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAS/C;IAEK,mBAAmB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAInD;CACF;AAED,OAAO,EAAE,sBAAsB,IAAI,iBAAiB,EAAE,CAAA"}
@@ -2,6 +2,17 @@ import { existsSync } from 'node:fs';
2
2
  import { chmod, mkdir, readFile, writeFile } from 'node:fs/promises';
3
3
  import { join } from 'node:path';
4
4
  import { getConfigDir } from '../../shared/utils/config-dir.js';
5
+ // Process-wide workspace selection set from the CLI `--workspace <id>` global flag (see
6
+ // the preAction hook in cli.ts). When present it makes commands target that workspace for
7
+ // this single CLI invocation WITHOUT mutating the persisted current_workspace, so the
8
+ // default (no-flag) path and any long-lived watcher keep resolving to current_workspace.
9
+ let selectedWorkspaceId = null;
10
+ export function setSelectedWorkspaceId(id) {
11
+ selectedWorkspaceId = id;
12
+ }
13
+ export function getSelectedWorkspaceId() {
14
+ return selectedWorkspaceId;
15
+ }
5
16
  export class SlackCredentialManager {
6
17
  configDir;
7
18
  credentialsPath;
@@ -25,6 +36,9 @@ export class SlackCredentialManager {
25
36
  await chmod(this.credentialsPath, 0o600);
26
37
  }
27
38
  async getWorkspace(id) {
39
+ // An explicit id wins; otherwise fall back to the process-wide `--workspace` selection.
40
+ // When neither is set, behaviour is unchanged (resolves to current_workspace below).
41
+ const resolvedId = id ?? selectedWorkspaceId ?? undefined;
28
42
  // Check env vars first (take precedence over file-based credentials)
29
43
  // Only use env credentials if no specific id requested, or id matches env workspace
30
44
  const envToken = process.env.E2E_SLACK_TOKEN;
@@ -32,7 +46,7 @@ export class SlackCredentialManager {
32
46
  const envWorkspaceId = process.env.E2E_SLACK_WORKSPACE_ID;
33
47
  const envWorkspaceName = process.env.E2E_SLACK_WORKSPACE_NAME;
34
48
  if (envToken && envCookie && envWorkspaceId && envWorkspaceName) {
35
- if (!id || id === envWorkspaceId) {
49
+ if (!resolvedId || resolvedId === envWorkspaceId) {
36
50
  return {
37
51
  token: envToken,
38
52
  cookie: envCookie,
@@ -42,8 +56,8 @@ export class SlackCredentialManager {
42
56
  }
43
57
  }
44
58
  const config = await this.load();
45
- if (id) {
46
- return config.workspaces[id] ?? null;
59
+ if (resolvedId) {
60
+ return config.workspaces[resolvedId] ?? null;
47
61
  }
48
62
  if (!config.current_workspace) {
49
63
  return null;
@@ -1 +1 @@
1
- {"version":3,"file":"credential-manager.js","sourceRoot":"","sources":["../../../../src/platforms/slack/credential-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"credential-manager.js","sourceRoot":"","sources":["../../../../src/platforms/slack/credential-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AACpC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AACpE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAEhC,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAA;AAG5D,wFAAwF;AACxF,0FAA0F;AAC1F,sFAAsF;AACtF,yFAAyF;AACzF,IAAI,mBAAmB,GAAkB,IAAI,CAAA;AAE7C,MAAM,UAAU,sBAAsB,CAAC,EAAiB;IACtD,mBAAmB,GAAG,EAAE,CAAA;AAC1B,CAAC;AAED,MAAM,UAAU,sBAAsB;IACpC,OAAO,mBAAmB,CAAA;AAC5B,CAAC;AAED,MAAM,OAAO,sBAAsB;IACzB,SAAS,CAAQ;IACjB,eAAe,CAAQ;IAE/B,YAAY,SAAkB;QAC5B,IAAI,CAAC,SAAS,GAAG,SAAS,IAAI,YAAY,EAAE,CAAA;QAC5C,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,wBAAwB,CAAC,CAAA;IACvE,CAAC;IAED,KAAK,CAAC,IAAI;QACR,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC;YACtC,OAAO;gBACL,iBAAiB,EAAE,IAAI;gBACvB,UAAU,EAAE,EAAE;aACf,CAAA;QACH,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,eAAe,EAAE,OAAO,CAAC,CAAA;QAC7D,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAW,CAAA;IACtC,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,MAAc;QACvB,MAAM,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;QAEhD,MAAM,SAAS,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;QACtE,MAAM,KAAK,CAAC,IAAI,CAAC,eAAe,EAAE,KAAK,CAAC,CAAA;IAC1C,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,EAAW;QAC5B,wFAAwF;QACxF,qFAAqF;QACrF,MAAM,UAAU,GAAG,EAAE,IAAI,mBAAmB,IAAI,SAAS,CAAA;QAEzD,qEAAqE;QACrE,oFAAoF;QACpF,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,CAAA;QAC5C,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAA;QAC9C,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAA;QACzD,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAA;QAE7D,IAAI,QAAQ,IAAI,SAAS,IAAI,cAAc,IAAI,gBAAgB,EAAE,CAAC;YAChE,IAAI,CAAC,UAAU,IAAI,UAAU,KAAK,cAAc,EAAE,CAAC;gBACjD,OAAO;oBACL,KAAK,EAAE,QAAQ;oBACf,MAAM,EAAE,SAAS;oBACjB,YAAY,EAAE,cAAc;oBAC5B,cAAc,EAAE,gBAAgB;iBACjC,CAAA;YACH,CAAC;QACH,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAA;QAEhC,IAAI,UAAU,EAAE,CAAC;YACf,OAAO,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,IAAI,CAAA;QAC9C,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC;YAC9B,OAAO,IAAI,CAAA;QACb,CAAC;QAED,OAAO,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,IAAI,CAAA;IAC5D,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,KAA2B;QAC5C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAA;QAChC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,KAAK,CAAA;QAC7C,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IACzB,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,EAAU;QAC9B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAA;QAChC,OAAO,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,CAAA;QAE5B,IAAI,MAAM,CAAC,iBAAiB,KAAK,EAAE,EAAE,CAAC;YACpC,MAAM,CAAC,iBAAiB,GAAG,IAAI,CAAA;QACjC,CAAC;QAED,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IACzB,CAAC;IAED,KAAK,CAAC,mBAAmB,CAAC,EAAU;QAClC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAA;QAChC,MAAM,CAAC,iBAAiB,GAAG,EAAE,CAAA;QAC7B,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IACzB,CAAC;CACF;AAED,OAAO,EAAE,sBAAsB,IAAI,iBAAiB,EAAE,CAAA"}
@@ -85,11 +85,18 @@ agent-slack workspace remove <workspace-id>
85
85
  # Check auth status
86
86
  agent-slack auth status
87
87
 
88
- # Logout from a workspace (defaults to current)
88
+ # Logout from a workspace (defaults to the --workspace selection, then current)
89
89
  agent-slack auth logout
90
90
  agent-slack auth logout <workspace-id>
91
+
92
+ # Run one command against another workspace without switching
93
+ agent-slack --workspace <workspace-id> channel list
94
+ agent-slack --workspace <workspace-id> auth status
95
+ agent-slack --workspace <workspace-id> auth logout
91
96
  ```
92
97
 
98
+ The global `--workspace <id>` flag goes before the command and applies to every command that uses a stored workspace, including `auth status` and `auth logout`. It targets that workspace for this one invocation only and does not change the current workspace. If the id is not stored, `auth status` fails with `Workspace not found: <id>`. `auth extract` and `auth qr` discover workspaces instead of targeting one, so the flag does not affect them; they set the current workspace only when none is set yet.
99
+
93
100
  ## Commands
94
101
 
95
102
  ### Whoami Command
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agent-messenger",
3
- "version": "2.38.0",
3
+ "version": "2.38.1",
4
4
  "description": "Multi-platform messaging CLI for AI agents (Slack, Discord, Teams, Webex, Telegram, Telegram Bot, WhatsApp, LINE, iMessage, Instagram, KakaoTalk, Channel Talk)",
5
5
  "repository": {
6
6
  "type": "git",
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: agent-channeltalk
3
3
  description: Interact with Channel Talk using extracted desktop app or browser credentials - read chats, send messages, search messages, manage groups
4
- version: 2.38.0
4
+ version: 2.38.1
5
5
  allowed-tools: Bash(agent-channeltalk:*)
6
6
  metadata:
7
7
  openclaw:
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: agent-channeltalkbot
3
3
  description: Interact with Channel Talk workspaces using API credentials - send messages, read chats, manage groups and bots
4
- version: 2.38.0
4
+ version: 2.38.1
5
5
  allowed-tools: Bash(agent-channeltalkbot:*)
6
6
  metadata:
7
7
  openclaw:
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: agent-discord
3
3
  description: Interact with Discord servers - send messages, read channels, manage reactions
4
- version: 2.38.0
4
+ version: 2.38.1
5
5
  allowed-tools: Bash(agent-discord:*)
6
6
  metadata:
7
7
  openclaw:
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: agent-discordbot
3
3
  description: Interact with Discord servers using bot tokens - send messages, read channels, manage reactions
4
- version: 2.38.0
4
+ version: 2.38.1
5
5
  allowed-tools: Bash(agent-discordbot:*)
6
6
  metadata:
7
7
  openclaw:
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: agent-imessage
3
3
  description: Interact with iMessage on a Mac via the imsg tool - send messages, read chats, watch for new messages
4
- version: 2.38.0
4
+ version: 2.38.1
5
5
  allowed-tools: Bash(agent-imessage:*)
6
6
  metadata:
7
7
  openclaw:
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: agent-instagram
3
3
  description: Interact with Instagram DMs - send messages, read conversations, manage accounts
4
- version: 2.38.0
4
+ version: 2.38.1
5
5
  allowed-tools: Bash(agent-instagram:*)
6
6
  metadata:
7
7
  openclaw:
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: agent-kakaotalk
3
3
  description: Interact with KakaoTalk - send messages, read chats, manage conversations
4
- version: 2.38.0
4
+ version: 2.38.1
5
5
  allowed-tools: Bash(agent-kakaotalk:*)
6
6
  metadata:
7
7
  openclaw:
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: agent-line
3
3
  description: Interact with LINE - send messages, read chats, manage conversations
4
- version: 2.38.0
4
+ version: 2.38.1
5
5
  allowed-tools: Bash(agent-line:*)
6
6
  metadata:
7
7
  openclaw:
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: agent-slack
3
3
  description: Interact with Slack workspaces - send messages, read channels, manage reactions
4
- version: 2.38.0
4
+ version: 2.38.1
5
5
  allowed-tools: Bash(agent-slack:*)
6
6
  metadata:
7
7
  openclaw:
@@ -74,8 +74,14 @@ agent-slack workspace remove <workspace-id>
74
74
 
75
75
  # Check auth status
76
76
  agent-slack auth status
77
+
78
+ # Run one command against another workspace without switching
79
+ agent-slack --workspace <workspace-id> channel list
80
+ agent-slack --workspace <workspace-id> auth status
77
81
  ```
78
82
 
83
+ The global `--workspace <id>` flag goes before the command and applies to every command that uses a stored workspace, including `auth status` and `auth logout`. It targets that workspace for this one invocation only and does not change the current workspace. If the id is not stored, `auth status` fails with `Workspace not found: <id>`. `auth extract` and `auth qr` discover workspaces instead of targeting one, so the flag does not affect them; they set the current workspace only when none is set yet.
84
+
79
85
  ## Memory
80
86
 
81
87
  The agent maintains a `~/.config/agent-messenger/MEMORY.md` file as persistent memory across sessions. This is agent-managed — the CLI does not read or write this file. Use the `Read` and `Write` tools to manage your memory file.
@@ -171,9 +177,10 @@ agent-slack auth qr --debug # show each redirect hop for troubleshooting
171
177
  # Check auth status
172
178
  agent-slack auth status
173
179
 
174
- # Logout from a workspace (defaults to current)
180
+ # Logout from a workspace (defaults to the --workspace selection, then current)
175
181
  agent-slack auth logout
176
182
  agent-slack auth logout <workspace-id>
183
+ agent-slack --workspace <workspace-id> auth logout
177
184
  ```
178
185
 
179
186
  ### Whoami Command
@@ -152,6 +152,18 @@ agent-slack workspace switch T789012
152
152
 
153
153
  All subsequent commands will use the selected workspace until you switch again.
154
154
 
155
+ ### Use a Workspace for One Command
156
+
157
+ Pass the global `--workspace <id>` flag before the command to target another workspace for a single invocation without switching:
158
+
159
+ ```bash
160
+ agent-slack --workspace T789012 channel list
161
+ agent-slack --workspace T789012 auth status
162
+ agent-slack --workspace T789012 auth logout
163
+ ```
164
+
165
+ The flag applies to every command that uses a stored workspace, including `auth status` and `auth logout`, and does not change `current_workspace`. `auth extract` and `auth qr` discover workspaces instead of targeting one, so the flag does not affect them; they set `current_workspace` only when none is set yet. `auth logout` removes the selected workspace when no positional id is given (a positional id still wins), and `auth status` fails with `Workspace not found: <id>` if the selected id is not stored.
166
+
155
167
  ### Current Workspace
156
168
 
157
169
  Check which workspace is active:
@@ -612,6 +612,24 @@ agent-slack reminder complete Rm001
612
612
  agent-slack reminder delete Rm002
613
613
  ```
614
614
 
615
+ ## Pattern: Work Across Workspaces
616
+
617
+ **Use case**: Read or act in a second workspace without changing the current one
618
+
619
+ ```bash
620
+ #!/bin/bash
621
+
622
+ # The global --workspace flag targets one workspace for a single command
623
+ agent-slack --workspace T789012 auth status
624
+ agent-slack --workspace T789012 channel list
625
+ agent-slack --workspace T789012 message send general "Cross-workspace update"
626
+
627
+ # The current workspace is unchanged afterwards
628
+ agent-slack workspace current
629
+ ```
630
+
631
+ **When to use**: Occasional commands in another workspace. Use `workspace switch` only when the default should change for every later command.
632
+
615
633
  ## See Also
616
634
 
617
635
  - [Authentication Guide](authentication.md) - Setting up credentials
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: agent-slackbot
3
3
  description: Interact with Slack workspaces using bot tokens - send messages, read channels, manage reactions
4
- version: 2.38.0
4
+ version: 2.38.1
5
5
  allowed-tools: Bash(agent-slackbot:*)
6
6
  metadata:
7
7
  openclaw:
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: agent-teams
3
3
  description: Interact with Microsoft Teams - send messages, read channels, manage reactions
4
- version: 2.38.0
4
+ version: 2.38.1
5
5
  allowed-tools: Bash(agent-teams:*)
6
6
  metadata:
7
7
  openclaw:
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: agent-telegram
3
3
  description: Interact with Telegram through TDLib - authenticate, inspect chats, and send messages
4
- version: 2.38.0
4
+ version: 2.38.1
5
5
  allowed-tools: Bash(agent-telegram:*)
6
6
  ---
7
7
 
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: agent-telegrambot
3
3
  description: Interact with Telegram using bot tokens - send messages, read chats, manage reactions
4
- version: 2.38.0
4
+ version: 2.38.1
5
5
  allowed-tools: Bash(agent-telegrambot:*)
6
6
  metadata:
7
7
  openclaw:
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: agent-webex
3
3
  description: Interact with Cisco Webex - send messages, read spaces, manage memberships
4
- version: 2.38.0
4
+ version: 2.38.1
5
5
  allowed-tools: Bash(agent-webex:*)
6
6
  metadata:
7
7
  openclaw:
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: agent-webexbot
3
3
  description: Interact with Cisco Webex using bot tokens - send messages, reply in threads, upload and download files, look up people, read spaces, manage memberships, stream real-time events
4
- version: 2.38.0
4
+ version: 2.38.1
5
5
  allowed-tools: Bash(agent-webexbot:*)
6
6
  metadata:
7
7
  openclaw:
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: agent-wechatbot
3
3
  description: Interact with WeChat Official Account using API credentials - send messages, manage templates, list followers
4
- version: 2.38.0
4
+ version: 2.38.1
5
5
  allowed-tools: Bash(agent-wechatbot:*)
6
6
  metadata:
7
7
  openclaw:
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: agent-whatsapp
3
3
  description: Interact with WhatsApp - send messages, read chats, manage conversations
4
- version: 2.38.0
4
+ version: 2.38.1
5
5
  allowed-tools: Bash(agent-whatsapp:*)
6
6
  metadata:
7
7
  openclaw:
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: agent-whatsappbot
3
3
  description: Interact with WhatsApp using Cloud API credentials - send messages, manage templates
4
- version: 2.38.0
4
+ version: 2.38.1
5
5
  allowed-tools: Bash(agent-whatsappbot:*)
6
6
  metadata:
7
7
  openclaw:
@@ -1,4 +1,7 @@
1
- import { describe, expect, it } from 'bun:test'
1
+ import { afterEach, beforeEach, describe, expect, it } from 'bun:test'
2
+ import { mkdtempSync, readFileSync, rmSync, writeFileSync } from 'node:fs'
3
+ import { tmpdir } from 'node:os'
4
+ import { join } from 'node:path'
2
5
 
3
6
  import { spawn } from 'bun'
4
7
 
@@ -94,4 +97,111 @@ describe('CLI Framework', () => {
94
97
  expect(output.trim()).toBe(pkg.version)
95
98
  })
96
99
  })
100
+
101
+ describe('global --workspace flag with two stored workspaces', () => {
102
+ let sandbox: string
103
+ let preloadPath: string
104
+
105
+ const credentialsPath = () => join(sandbox, 'slack-credentials.json')
106
+ const readConfig = () => JSON.parse(readFileSync(credentialsPath(), 'utf-8'))
107
+ const workspace = (id: string) => ({
108
+ workspace_id: id,
109
+ workspace_name: `Workspace ${id}`,
110
+ token: `xoxc-${id}`,
111
+ cookie: `xoxd-${id}`,
112
+ })
113
+
114
+ async function runCli(...args: string[]) {
115
+ const env: Record<string, string | undefined> = {
116
+ ...process.env,
117
+ AGENT_MESSENGER_CONFIG_DIR: sandbox,
118
+ HOME: sandbox,
119
+ }
120
+ for (const key of Object.keys(env)) {
121
+ if (key.startsWith('E2E_SLACK_')) delete env[key]
122
+ }
123
+ const proc = spawn(['bun', '--preload', preloadPath, './src/platforms/slack/cli.ts', ...args], {
124
+ cwd: process.cwd(),
125
+ env,
126
+ stdio: ['ignore', 'pipe', 'pipe'],
127
+ })
128
+ const [stdout, stderr, exitCode] = await Promise.all([
129
+ new Response(proc.stdout).text(),
130
+ new Response(proc.stderr).text(),
131
+ proc.exited,
132
+ ])
133
+ return { stdout, stderr, exitCode }
134
+ }
135
+
136
+ beforeEach(() => {
137
+ sandbox = mkdtempSync(join(tmpdir(), 'agent-slack-workspace-flag-'))
138
+ writeFileSync(
139
+ credentialsPath(),
140
+ JSON.stringify({ current_workspace: 'T1', workspaces: { T1: workspace('T1'), T2: workspace('T2') } }),
141
+ )
142
+ // Answer auth.test offline from the token, so the real CLI never reaches Slack.
143
+ preloadPath = join(sandbox, 'fake-slack-api.ts')
144
+ writeFileSync(
145
+ preloadPath,
146
+ `import { WebClient } from ${JSON.stringify(import.meta.resolve('@slack/web-api'))}
147
+ WebClient.prototype.apiCall = async function (method) {
148
+ if (method !== 'auth.test') throw new Error('unexpected Slack API call: ' + method)
149
+ const teamId = String(this.token).replace('xoxc-', '')
150
+ return { ok: true, team_id: teamId, team: 'Workspace ' + teamId, user_id: 'U1', user: 'tester' }
151
+ }
152
+ `,
153
+ )
154
+ })
155
+
156
+ afterEach(() => {
157
+ rmSync(sandbox, { recursive: true, force: true })
158
+ })
159
+
160
+ it('targets the selected workspace for an ordinary command', async () => {
161
+ const result = await runCli('--workspace', 'T2', 'workspace', 'current')
162
+
163
+ expect(result.exitCode).toBe(0)
164
+ expect(JSON.parse(result.stdout).workspace_id).toBe('T2')
165
+ expect(readConfig().current_workspace).toBe('T1')
166
+ })
167
+
168
+ it('auth status reports the selected workspace', async () => {
169
+ const result = await runCli('--workspace', 'T2', 'auth', 'status')
170
+
171
+ expect(result.exitCode).toBe(0)
172
+ expect(JSON.parse(result.stdout)).toMatchObject({ workspace_id: 'T2', valid: true })
173
+ expect(readConfig().current_workspace).toBe('T1')
174
+ })
175
+
176
+ it('auth logout removes the selected workspace and keeps the current one', async () => {
177
+ const result = await runCli('--workspace', 'T2', 'auth', 'logout')
178
+
179
+ expect(result.exitCode).toBe(0)
180
+ expect(JSON.parse(result.stdout)).toEqual({ removed: 'T2', success: true })
181
+ const config = readConfig()
182
+ expect(config.current_workspace).toBe('T1')
183
+ expect(config.workspaces).toEqual({ T1: workspace('T1') })
184
+ })
185
+
186
+ it('auth status fails for a selected workspace that is not stored', async () => {
187
+ const result = await runCli('--workspace', 'T3', 'auth', 'status')
188
+
189
+ expect(result.exitCode).toBe(1)
190
+ expect(JSON.parse(result.stdout).error).toContain('T3')
191
+ expect(readConfig().current_workspace).toBe('T1')
192
+ })
193
+
194
+ it('without the flag, auth status and logout still use the current workspace', async () => {
195
+ const status = await runCli('auth', 'status')
196
+ expect(status.exitCode).toBe(0)
197
+ expect(JSON.parse(status.stdout).workspace_id).toBe('T1')
198
+
199
+ const logout = await runCli('auth', 'logout')
200
+ expect(logout.exitCode).toBe(0)
201
+ expect(JSON.parse(logout.stdout)).toEqual({ removed: 'T1', success: true })
202
+ const config = readConfig()
203
+ expect(config.current_workspace).toBeNull()
204
+ expect(config.workspaces).toEqual({ T2: workspace('T2') })
205
+ })
206
+ })
97
207
  })
@@ -25,6 +25,7 @@ import {
25
25
  whoamiCommand,
26
26
  workspaceCommand,
27
27
  } from './commands/index'
28
+ import { setSelectedWorkspaceId } from './credential-manager'
28
29
  import { ensureSlackAuth } from './ensure-auth'
29
30
 
30
31
  function isAuthCommand(command: CommandType): boolean {
@@ -47,6 +48,10 @@ program
47
48
  .option('--workspace <id>', 'Use specific workspace')
48
49
 
49
50
  program.hook('preAction', async (_thisCommand, actionCommand) => {
51
+ const workspaceId = program.opts<{ workspace?: string }>().workspace
52
+ if (workspaceId) {
53
+ setSelectedWorkspaceId(workspaceId)
54
+ }
50
55
  if (isAuthCommand(actionCommand)) return
51
56
  await ensureSlackAuth()
52
57
  })
@@ -7,7 +7,7 @@ import { formatOutput } from '@/shared/utils/output'
7
7
  import { debug } from '@/shared/utils/stderr'
8
8
 
9
9
  import { SlackClient, SlackError } from '../client'
10
- import { CredentialManager } from '../credential-manager'
10
+ import { CredentialManager, getSelectedWorkspaceId } from '../credential-manager'
11
11
  import { refreshCookie, refreshKnownWorkspaceDomains, tryWebTokenRefresh } from '../ensure-auth'
12
12
  import type { RefreshResult } from '../ensure-auth'
13
13
  import { loginWithQr } from '../qr-http-login'
@@ -192,7 +192,7 @@ async function logoutAction(workspace: string | undefined, options: { pretty?: b
192
192
  const credManager = new CredentialManager()
193
193
  const config = await credManager.load()
194
194
 
195
- let targetWorkspace = workspace
195
+ let targetWorkspace = workspace ?? getSelectedWorkspaceId() ?? undefined
196
196
 
197
197
  if (!targetWorkspace) {
198
198
  if (!config.current_workspace) {
@@ -229,7 +229,18 @@ async function statusAction(options: { pretty?: boolean }): Promise<void> {
229
229
  const ws = await credManager.getWorkspace()
230
230
 
231
231
  if (!ws) {
232
- console.log(formatOutput({ error: 'No current workspace set. Run "auth extract" first.' }, options.pretty))
232
+ const selectedWorkspace = getSelectedWorkspaceId()
233
+ console.log(
234
+ formatOutput(
235
+ selectedWorkspace
236
+ ? {
237
+ error: `Workspace not found: ${selectedWorkspace}`,
238
+ hint: 'Run "workspace list" to see available workspaces.',
239
+ }
240
+ : { error: 'No current workspace set. Run "auth extract" first.' },
241
+ options.pretty,
242
+ ),
243
+ )
233
244
  process.exit(1)
234
245
  }
235
246
 
@@ -5,6 +5,20 @@ import { join } from 'node:path'
5
5
  import { getConfigDir } from '../../shared/utils/config-dir'
6
6
  import type { Config, WorkspaceCredentials } from './types'
7
7
 
8
+ // Process-wide workspace selection set from the CLI `--workspace <id>` global flag (see
9
+ // the preAction hook in cli.ts). When present it makes commands target that workspace for
10
+ // this single CLI invocation WITHOUT mutating the persisted current_workspace, so the
11
+ // default (no-flag) path and any long-lived watcher keep resolving to current_workspace.
12
+ let selectedWorkspaceId: string | null = null
13
+
14
+ export function setSelectedWorkspaceId(id: string | null): void {
15
+ selectedWorkspaceId = id
16
+ }
17
+
18
+ export function getSelectedWorkspaceId(): string | null {
19
+ return selectedWorkspaceId
20
+ }
21
+
8
22
  export class SlackCredentialManager {
9
23
  private configDir: string
10
24
  private credentialsPath: string
@@ -34,6 +48,10 @@ export class SlackCredentialManager {
34
48
  }
35
49
 
36
50
  async getWorkspace(id?: string): Promise<WorkspaceCredentials | null> {
51
+ // An explicit id wins; otherwise fall back to the process-wide `--workspace` selection.
52
+ // When neither is set, behaviour is unchanged (resolves to current_workspace below).
53
+ const resolvedId = id ?? selectedWorkspaceId ?? undefined
54
+
37
55
  // Check env vars first (take precedence over file-based credentials)
38
56
  // Only use env credentials if no specific id requested, or id matches env workspace
39
57
  const envToken = process.env.E2E_SLACK_TOKEN
@@ -42,7 +60,7 @@ export class SlackCredentialManager {
42
60
  const envWorkspaceName = process.env.E2E_SLACK_WORKSPACE_NAME
43
61
 
44
62
  if (envToken && envCookie && envWorkspaceId && envWorkspaceName) {
45
- if (!id || id === envWorkspaceId) {
63
+ if (!resolvedId || resolvedId === envWorkspaceId) {
46
64
  return {
47
65
  token: envToken,
48
66
  cookie: envCookie,
@@ -54,8 +72,8 @@ export class SlackCredentialManager {
54
72
 
55
73
  const config = await this.load()
56
74
 
57
- if (id) {
58
- return config.workspaces[id] ?? null
75
+ if (resolvedId) {
76
+ return config.workspaces[resolvedId] ?? null
59
77
  }
60
78
 
61
79
  if (!config.current_workspace) {
@@ -0,0 +1,70 @@
1
+ import { afterEach, beforeEach, describe, expect, it } from 'bun:test'
2
+ import { rmSync } from 'node:fs'
3
+ import { join } from 'node:path'
4
+
5
+ import { CredentialManager, setSelectedWorkspaceId } from '@/platforms/slack/credential-manager'
6
+ import type { WorkspaceCredentials } from '@/platforms/slack/types'
7
+
8
+ const testConfigDir = join(import.meta.dir, '.test-config-ws-select')
9
+
10
+ const current: WorkspaceCredentials = {
11
+ workspace_id: 'ws-current',
12
+ workspace_name: 'Current',
13
+ token: 'xoxc-current',
14
+ cookie: 'xoxd-current',
15
+ }
16
+ const other: WorkspaceCredentials = {
17
+ workspace_id: 'ws-other',
18
+ workspace_name: 'Other',
19
+ token: 'xoxc-other',
20
+ cookie: 'xoxd-other',
21
+ }
22
+
23
+ describe('CredentialManager global --workspace selection', () => {
24
+ let manager: CredentialManager
25
+
26
+ beforeEach(async () => {
27
+ rmSync(testConfigDir, { recursive: true, force: true })
28
+ manager = new CredentialManager(testConfigDir)
29
+ setSelectedWorkspaceId(null)
30
+ await manager.setWorkspace(current)
31
+ await manager.setWorkspace(other)
32
+ await manager.setCurrentWorkspace('ws-current')
33
+ })
34
+
35
+ afterEach(() => {
36
+ setSelectedWorkspaceId(null)
37
+ rmSync(testConfigDir, { recursive: true, force: true })
38
+ })
39
+
40
+ it('getWorkspace() returns the selected workspace over current when no id is passed', async () => {
41
+ setSelectedWorkspaceId('ws-other')
42
+
43
+ const retrieved = await manager.getWorkspace()
44
+
45
+ expect(retrieved).toEqual(other)
46
+ })
47
+
48
+ it('selecting a workspace does not mutate current_workspace', async () => {
49
+ setSelectedWorkspaceId('ws-other')
50
+
51
+ await manager.getWorkspace()
52
+
53
+ const config = await manager.load()
54
+ expect(config.current_workspace).toBe('ws-current')
55
+ })
56
+
57
+ it('falls back to current when nothing is selected (no regression)', async () => {
58
+ const retrieved = await manager.getWorkspace()
59
+
60
+ expect(retrieved).toEqual(current)
61
+ })
62
+
63
+ it('an explicit id argument takes precedence over the selection', async () => {
64
+ setSelectedWorkspaceId('ws-current')
65
+
66
+ const retrieved = await manager.getWorkspace('ws-other')
67
+
68
+ expect(retrieved).toEqual(other)
69
+ })
70
+ })